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
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.
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.
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.
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.
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ů:
common – společné funkce
používané jednotlivými moduly, zejména funkce v souborech
func-login.php pro registraci a
přihlášení a func-store.php pro
načítání a ukládání dokumentů
oduserver – instalace
NuSOAP serveru, soubor index.php obsahuje definici metod
student – OprDU Student,
webové rozhraní pro studenty
teacher – OprDU Teacher,
webové rozhraní pro učitele (umožňuje registraci)
kořenový adresář obsahuje nastavení serveru a jednoduchý index
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.
Webové služby slouží ke komunikaci ODUserveru a ODUklienta. WSDL je součástí zdrojových kódů, je automaticky generované serverem.
items – získat seznam dokumentů
(uid + hlavičky)
set – změnit status dokumentu
head – získat hlavičku dokumentu
get – získat dokument
put – uložit dokument
putnew – uložit nový dokument
ping – ověřit funkci serveru a
přihlašovací údaje
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
ODUklient je aplikace pro učitele, která komunikuje s ODUserverem a umožňuje opravovat dokumenty.
přístup k internetu (aplikace neumožňuje práci offline)
Microsoft .NET Framework verze 3.5 a vyšší (instalátor je přiložen)
počítač umožňující instalaci a běh .NET Frameworku 3.5, tj.
OS Windows XP nebo novější
procesor alespoň 400 MHz (doporučeno 1 GHz)
RAM alespoň 96 MB, doporučeno 256 MB
HDD s volným místem alespoň 500 MB
monitor alespoň 800 × 600 px
(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č.
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.
V menu Start zvolte položku „Odinstalovat aplikaci ODUklient“ nebo „Uninstall ODUklient“ a řiďte se pokyny na obrazovce.
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.
PHP verze alespoň 4
MySQL databáze
1 MB diskového prostoru
pro bezpečnost přenášených dat je doporučená podpora HTTPS
Na svém MySQL serveru vyberte nebo vytvořte databázi pro ODUserver.
Pomocí svého administračního rozhraní spusťte posloupnost SQL
příkazů ze souboru oprdu.sql.
Ověřte, že v databázi byly vytvořeny tabulky odudocument,
oduloginstudent, odustudent
a oduteacher.
Smažte soubor oprdu.sql.
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ží.
Nastavte údaje pro připojení k MySQL databázi.
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.
Pokud Váš server nepodporuje HTTPS, nastavte hodnotu na 0.
Doporučení: Pokud Váš server umožňuje použití HTTPS, ponechte
nastavení na 1.
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í)
Volitelně: upravte ostatní PHP soubory podle svých potřeb a preferencí.
Nahrajte všechny soubory na server.
Zkontrolujte funkci všech částí serveru.
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/.
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.
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í.
odevzdaný – můžete si dokument vyžádat pro opravu
opravuje se – dokument, který je již vyžádaný pro opravu, je možné jej opravovat
opravený – dokument, jehož oprava je hotová a čeká na vyzvednutí studentem
opravený a vyzvednutý – student si již vyzvedl opravený dokument
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.
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.
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ě.
Změnit: chybný text, který má být nahrazen správným textem
Smazat: chybný text,
který má být úplně vypuštěn
Vložit: text, který chybí a má být vložen
Změnit pořadí slov: opravit slovosled ([2]slovosled [3]udávají [1]správný [4]čísla)
Komentář: a případný[komentář]
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.
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.
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.
Váš správce ODUserveru Vám poskytne adresu, na které se můžete přihlásit do aplikace OprDU Student.
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.
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.
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ů:
chybný text, který má být nahrazen správným textem
chybný text,
který má být úplně vypuštěn
text, který chybí a má být vložen
slova, která jsou ve špatném pořadí ([2]slovosled [3]udávají [1]správný [4]čísla)
a případný[komentář]