Univerzita Karlova v Praze, Matematicko-fyzikální fakulta


Rudolf Rosa, studijní program Informatika – Programování


Vedoucí práce: Mgr. Tomáš Knap

OprDU – software pro opravu domácích úkolů

Ročníkový projekt - Dokumentace



Obsah

1. Programátorská dokumentace 3

1. Dokumenty 3

2. ODUklient 3

Struktura 3

Korektura dokumentu 4

3. ODUserver 4

4. Web Services 5

Podporované operace 5

Vygenerovaná dokumentace 5

2. Instalační příručka 7

1. ODUklient 7

Systémové požadavky 7

Postup instalace 7

Odinstalace ODUklient 7

2. ODUserver 7

Serverové požadavky 8

Postup instalace 8

3. Uživatelská příručka 9

1. ODUklient 9

Přihlášení / Registrace 9

Seznam dokumentů 9

Zobrazení dokumentu 9

Oprava dokumentu 9

Vytvoření nového dokumentu 10

Export dokumentu 10

2. OprDU Student 10

Registrace / Přihlášení 10

Vytváření dokumentů 11

Vyzvednutí opravy 11



1. Programátorská dokumentace

1. Dokumenty

S dokumenty se pracuje ve formát ODU, což je jednoduchý XML formát, podobný HTML. Každý dokument má hlavičku a tělo.

Hlavička obsahuje informace o dokumentu. Je vytvořena automaticky při vytvoření dokumentu. Většina položek je neměnitelných – s výjimkou položek status a maxid.

Status je trojciferné číslo, na jehož základě se určují oprávnění učitele a studenta k dokumentu. První cifra určuje stav dokumentu, ostatní cifry poskytují zjemňující informace – aktuálně má každý status svou základní verzi (např. 300 – dokument je opravován) a pak verzi o 50 vyšší, která znamená, že dokument nebyl vytvořen studentem (v aplikaci OprDU Student), ale učitelem (v aplikaci ODUklient). Stavy dokumentu mohou být: 0 – chyba, 1 – rozpracovaný, 2 – odevzdaný, 3 – opravuje se, 4 – opravený, 5 – vyzvednutý.

Tělo obsahuje formátovací tagy (br pro řádkový zlom, h1, h2, h3 pro nadpisy úrovně 1 – 3) a korektorské tagy (chg - změnit, ins - vložit, del - smazat, wo – pořadí slov, c – komentář). V této verzi projektu není možné zanořování tagů, v další verzi bude možné zanořovat některé tagy.

Všechny tagy v těle dokumentu musí mít atribut id (kladný integer), přičemž id musí být v rámci dokumentu unikátní. Toto id slouží pro rychlou orientaci v dokumentu – programy pomocí nich mohou rychle určit polohu v dokumentu. Id jsou generována jako rostoucí posloupnost od 1, která nemusí být souvislá. Nejvyšší id existující v dokumentu je ukládáno do hlavičky do položky maxid. Do dokumentu nesmí být přidán tag s id menším nebo rovným maxid a při každém přidání elementu musí být maxid aktualizováno.

2. ODUklient

Klientská aplikace pro učitele je vytvořena v jazyce C# pro .NET Framework 3.5 v Microsoft Visual Studiu 2010 – součástí zdrojových kódu je solution soubor oduklient.sln (pro jeho otevření je nutné použít MS VS 2010). Verze 3.5 byla zvolena zejména pro dobrou podporu Web Services.

Struktura

Program se skládá z několika formů. Vstupním formem je FormLogin, hlavním formem je FormList, který umožňuje přístup k jednotlivým dokumentům. Nejdůležitějším formem je FormEdit, ve kterém se provádí korektura dokumentů. Zdrojový kód příslušející jednotlivým formům je typicky přímo v hlavním souboru formu (např. FormLogin.cs), kód pro FormEdit je rozdělený do několika souborů. Sdílený kód využívaný v celé aplikaci (tedy nikoli pouze v jednom formu) je uložen v souboru Program.cs, třída rtfParser (viz níže) pak ve stejnojmenném souboru.

Pro XSLT transformaci jsou součástí projektu příslušné xslt soubory, aktuálně je takový soubor právě jeden (odu2rtf.xslt).

Aplikace je vyvíjena jako multijazyčná, a to standardním způsobem, který nabízí Visual Studio. Součástí projektu jsou automaticky generované lokalizační soubory *.resx, příslušející vždy konkrétnímu formu – obsahují texty tlačítek, menu apod. Ručně lokalizované stringy, např. texty v dialog boxech, jsou uloženy v souboru T.resx, resp. T.jazyk.resx, a jsou dostupné v celé aplikaci. V současné verzi je program lokalizován do češtiny a angličtiny, přičemž za neutrální výchozí jazyk byla zvolena angličtina.

Korektura dokumentu

Programátorsky nejsložitější částí je samotná práce s dokumentem, tj. vyznačování oprav a jejich editace. Ostatní funkce jsou implementačně relativně jednoduché (včetně webových služeb – díky dobré podpoře .NETu).

Každý FormEdit obsahuje datovou položku bodyxml, která vždy obsahuje aktuální zdrojový kód ODU těla dokumentu. Pro práci s dokumentem uživatel používá standardní readonly RichTextBox, ve kterém se zobrazuje bodyxml transformované do tagovaného RTF: do zdrojového kódu RTF jsou vkládány pro uživatele neviditelné značky – odu tagy, které obsahují metainformace o opravách – jejich typ (chg, ins...) a id. Takže například smazání slova „ahoj“ (oprava del) s id 8 se transformuje takto (s vynecháním formátovacích RTF značek):

ODU: <del id=“8“>ahoj</del>

RTF: ##odu@@+del 8##oduend@@ ahoj ##odu@@-del 8##oduend@@

Dále je používáno několik dalších značek: ##oduS@@ a ##oduE@@ pro začátek a konec vlastního těla dokumentu a ##oduSelection@@ pro vybraný úsek textu.

Pokud uživatel vyvolá funkci pro vložení nebo editaci opravy, vytvoří se tři instance třídy rtfParser – pro zdrojový kód RTF před vybraným úsekem, za vybraným úsekem a pro vybraný úsek – tyto úseky jsou získány metodou rtfSelection(). rtfParser prochází kód, hledá v něm odu tagy a nakonec vystaví množství položek s informacemi o struktuře dokumentu, ze kterých jsou pak vyčteny důležité údaje – uvnitř kterého tagu se nacházíme, které tagy se nacházejí uvnitř výběru, který byl poslední uzavřený tag, apod.

Poté je vytvořena jedna nebo několik instancí třídy Correction (resp. CorrectionWo), která obsahuje veškeré informace o opravě a xml a rtf kód celého dokumentu před a za opravou. Je-li vytvářena nová oprava, je jí okamžitě přiděleno id a aktualizováno maxid, je-li editována existující oprava, je pomocí metody findCorrectionInBodyxml() na základě jejího id vyhledána její xml reprezentace v bodyxml. Je dynamicky vytvořen editační panel, pomocí nějž uživatel mění některé položky opravy. V případě potvrzení jsou pak využity dvě vlastnosti této třídy – xml a rtf. Ty generují kód dokumentu s vyznačenou opravou. Kód před i za opravou je pouze zkopírován, generování proto probíhá dostatečně rychle. Objekt je poté zrušen.

3. ODUserver

Server je napsán v jazyce PHP4, pro ukládání dat používá MySQL databázi, pro WebServices používá opensource knihovnu NuSOAP. PHP a MySQL byly zvoleny proto, že znalost programování v PHP je dobře rozšířená, jsou dostupné zdarma a jejich podpora u webhostingových služeb je obecně dobrá. Knihovna NuSOAP je používána místo vestavěné knihovny proto, že se snadněji používá, její podpora je širší a sama generuje WSDL.

Zdrojové kódy jsou rozděleny do složek podle modulů:

Předpokládá se, že konkrétní instalaci ODUserveru si správce serveru upraví podle svých potřeb – základní instalace například neřeší oprávnění k registraci, jako učitel i student se může registrovat kdokoliv.

4. Web Services

Webové služby slouží ke komunikaci ODUserveru a ODUklienta. WSDL je součástí zdrojových kódů, je automaticky generované serverem.

Podporované operace

Vygenerovaná dokumentace

Součástí odpovědi je typicky položka result, která obsahuje buď text „ok“ nebo chybové hlášení.


message getRequest

parts

logintype xsd:string

passwordtype xsd:string

uidtype xsd:string


message getResponse

parts

resulttype xsd:string

headtype xsd:string

bodytype xsd:string


message headRequest

parts

logintype xsd:string

passwordtype xsd:string

uidtype xsd:string


message headResponse

parts

resulttype xsd:string

headtype xsd:string


message itemsRequest

parts

logintype xsd:string

passwordtype xsd:string

statusFromtype xsd:int

statusTotype xsd:int


message itemsResponse

parts

resulttype xsd:string

itemstype xsd:string


message pingRequest

parts

logintype xsd:string

passwordtype xsd:string


message pingResponse

parts

servertype xsd:string

usertype xsd:string


message putnewRequest

parts

logintype xsd:string

passwordtype xsd:string

headtype xsd:string

bodytype xsd:string


message putnewResponse

parts

resulttype xsd:string

uidtype xsd:string


message putRequest

parts

logintype xsd:string

passwordtype xsd:string

uidtype xsd:string

bodytype xsd:string

maxidtype xsd:int


message putResponse

parts

resulttype xsd:string


message setRequest

parts

logintype xsd:string

passwordtype xsd:string

uidtype xsd:string

newstatustype xsd:int



message setResponse

parts

resulttype xsd:string

statustype xsd:int


WSDL documentation generated by XMLSpy WSDL Editor http://www.altova.com/xmlspy

2. Instalační příručka

1. ODUklient

ODUklient je aplikace pro učitele, která komunikuje s ODUserverem a umožňuje opravovat dokumenty.

Systémové požadavky

Postup instalace

1. Instalace Microsoft .NET Framework 3.5

(Pokud víte, že již máte .NET Framework verze 3.5 nebo vyšší nainstalován, tento krok přeskočte.)

Spusťte dotnetfx35setup.exe a řiďte se pokyny na obrazovce. .NET Framework bude nainstalován na Váš počítač.

2. Instalace ODUklient

Spusťte oduklient-setup.exe a řiďte se pokyny na obrazovce. ODUklient bude nainstalován na Váš počítač. Program lze po nainstalování spustit pomocí zástupce v menu Start, případně pomocí zástupce na ploše, pokud byla tuto možnost zvolena při instalaci.

Odinstalace ODUklient

V menu Start zvolte položku „Odinstalovat aplikaci ODUklient“ nebo „Uninstall ODUklient“ a řiďte se pokyny na obrazovce.

2. ODUserver

ODUserver spravuje ODU dokumenty, zajišťuje autentifikaci a registraci uživatelů, poskytuje služby aplikacím ODUklient pomocí webových služeb a umožňuje přístup studentům do webové aplikace OprDU Student.

ODUserver je napsaný v PHP a je opensource, vše si můžete upravit dle vlastních potřeb a preferencí – viz programátorská dokumentace a komentáře ve zdrojových kódech.

Serverové požadavky

Postup instalace

1. Databáze

  1. Na svém MySQL serveru vyberte nebo vytvořte databázi pro ODUserver.

  2. Pomocí svého administračního rozhraní spusťte posloupnost SQL příkazů ze souboru oprdu.sql.

  3. Ověřte, že v databázi byly vytvořeny tabulky odudocument, oduloginstudent, odustudent a oduteacher.

  4. Smažte soubor oprdu.sql.

2. Nastavení

  1. V textovém editoru otevřete soubor settings.php. Nastavení jsou popisována v pořadí, ve kterém jsou uvedena v souboru, avšak na jejich pořadí nezáleží.

  2. Nastavte údaje pro připojení k MySQL databázi.

  3. Doporučení: Zvolte si číslo serveru (serverId) – mělo by být celosvětově unikátní a mít 9 číslic, bude součástí uid dokumentů vytvořených tímto serverem.

  4. Pokud Váš server nepodporuje HTTPS, nastavte hodnotu na 0. Doporučení: Pokud Váš server umožňuje použití HTTPS, ponechte nastavení na 1.

  5. Volitelně: nastavte si vlastní názvy stavů dokumentů, změňte dobu vypršení přihlášení (týká se OprDU Student), dočasně postavte server mimo provoz (jakýkoli text kromě výchozího 'ok' je chápán jako chybové hlášení)

  6. Volitelně: upravte ostatní PHP soubory podle svých potřeb a preferencí.

3. Upload

  1. Nahrajte všechny soubory na server.

  2. Zkontrolujte funkci všech částí serveru.

  3. Sdělte uživatelům příslušné adresy; uživatelé aplikace ODUklient budou potřebovat znát přesnou adresu ODUserveru, neboť je vyžadována pro přihlášení. Výchozí adresa při instalaci na www.example.com je https://www.example.com/oduserver/.



3. Uživatelská příručka

1. ODUklient

Přihlášení / Registrace

Po spuštění Vás aplikace vyzve k zadání přihlašovacích údajů. Pro přihlášení k ODUserveru se na něj musíte nejprve zaregistrovat – příslušné informace Vám podá správce Vašeho ODUserveru. Přihlašovacím jménem k účtu je e-mailová adresa.

Seznam dokumentů

Po úspěšném přihlášení se načte hlavní okno programu, které obsahuje seznam dostupných dokumentů. Jsou to dokumenty, kteří vytvořili studenti a Vás vybrali jako učitele, který má dokument opravit (popřípadě dokumenty vytvořené Vámi, viz níže). S dokumenty lze provádět různé akce podle toho, v jakém stavu se nacházejí.

Stavy dokumentu

Stav dokumentu můžete (máte-li příslušné oprávnění) změnit volbami v seznamu dokumentů. Stav je vždy možné měnit pouze směrem k logicky následujícímu stavu, nelze se vracet.

Zobrazení dokumentu

Každý dokument v seznamu si můžete zobrazit; pokud již byl opravován, uvidíte v něm i vyznačené opravy. Na dolní liště okna s dokumentem najdete menu pro export dokumentu.

Oprava dokumentu

V okně pro opravu dokumentu se Vám zobrazí zvolený dokument. Můžete v něm vyznačovat opravy, již vyznačené opravy můžete měnit nebo rušit. Opravy se okamžitě zobrazují v dokumentu způsobem naznačeným níže. Oprava se vždy týká úseku textu, který označíte v editačním okně.

Typy opravy

U opravy je typicky možné vyplnit správnou variantu, pokud je jich více, pak je možné vypsat i další možné opravy, a je možné přidat komentář. Všechny položky jsou nepovinné. Již vyznačenou opravu je možné změnit nebo i zrušit.

Výjimkou je oprava pořadí slov, kterou v současné verzi programu nelze po jejím potvrzení změnit ani odebrat.

V současné verzi programu také není možné zanořovat opravy do sebe, v další verzi již to možné bude.

Vytvoření nového dokumentu

Pokud Vám například student zašle dokument e-mailem, můžete jej vložit do systému OprDU pomocí volby „Vytvořit nový dokument“. Povinně musíte vyplnit tučně vyznačená pole – název dokumentu a jeho obsah. Je doporučené vyplnit i e-mail a případně jméno autora; pokud je již student s tímto e-mailem registrován v aplikaci OprDU Student, dokument k němu bude automaticky přiřazen.

Maximální velikost dokumentu je omezena různými úzkými hrdly na cestě a může být v konkrétních případech různá. Orientační maximální velikost je cca 30 000 znaků (30 kB, 15 normostran). Pokud tuto maximální velikost překročíte, může docházet k různým anomáliím – každopádně nejspíš bude obsah dokumentu poškozen.

Ve výchozím nastavení se dokument po uložení automaticky vyžádá a otevře pro opravu.

Export dokumentu

Pokud chcete dokument vytisknout nebo poslat studentovi e-mailem, musíte jej vyexportovat do souboru. Tento soubor pak již otevřete programy dostupnými na Vašem počítači a vytisknete nebo odešlete jako přílohu e-mailu.

Volba pro export dokumentu je dostupná při opravování dokumentu v menu „Dokument – Export“ a při prohlížení dokumentu v menu ve stavovém řádku. Dokument je možné exportovat do formátu RTF (popřípadě ODU – takový dokument ale zatím nelze nijak rozumně zobrazit). Tento formát je podporován všemi běžnějšími operačními systémy, lze jej otevřít například kancelářskými programy (MS Office Word, OpenOffice Writer) nebo na Windows programem WordPad.

Pokud chcete poslat e-mail autorovi dokumentu, ať už s opraveným dokumentem nebo z jiného důvodu, můžete v seznamu dokumentů použít volbu „Poslat e-mail autorovi dokumentu“. Pokud máte na svém počítači nainstalovaného e-mailového klienta (např. Outlook, Thunderbird...), otevře se v něm okno s vytvářením zprávy, které bude mít předvyplněnou adresu příjemce a předmět zprávy.

2. OprDU Student

Váš správce ODUserveru Vám poskytne adresu, na které se můžete přihlásit do aplikace OprDU Student.

Registrace / Přihlášení

Pro používání aplikace se musíte nejprve zaregistrovat. Přihlašovacím jménem k účtu je e-mailová adresa, heslo si volí uživatel sám. Dále je vhodné vyplnit jméno, které se bude u Vašich dokumentů zobrazovat společně s e-mailovou adresou.

Pro přihlášení je nutná zapnutá podpora cookies v prohlížeči.

Vytváření dokumentů

Pro vytvoření nového dokumentu zadejte jeho název, volitelně komentář, a vyberte, kterému učiteli budete chtít dokument odevzdat. Poté na další stránce vložte nebo vepište text dokumentu (v současné verzi aplikace není podporováno žádné formátování); pokud vepisujete dokument přímo na stránce, průběžně jej ukládejte. Na dokumentu můžete pracovat průběžně, zůstane na serveru uložen. Ve chvíli, kdy je hotov, ho odevzdejte kliknutím na „Odevzdat“. Tím je dokument odeslán učiteli k opravení.

Maximální velikost dokumentu je omezena různými úzkými hrdly na cestě a může být v konkrétních případech různá. Orientační maximální velikost je cca 30 000 znaků (30 kB, 15 normostran). Pokud tuto maximální velikost překročíte, může docházet k různým anomáliím – každopádně nejspíš bude obsah dokumentu poškozen.

Vyzvednutí opravy

V seznamu dokumentů se u každého dokumentu zobrazuje jeho stav. Jakmile je dokument opraven, jeho stav se změní na „opravený“ a můžete si jej v aplikaci vyzvednout (kliknutím na „Zobrazit“). Uvidíte opravený dokument s vyznačenými opravami. Opravy jsou několika druhů: