Platforma průmyslové spolupráce
CZ.1.07/2.4.00/17.0041
Název
Podpůrný nástroj pro výuku značkovacích jazyků
Popis a využití
• nástroj pro studenty pro zadávání úkolů k práci
• výuka: značkovací jazyky
Jazyk textu
• český
Autor (autoři)
• Jiří Krejčí
Oficiální stránka projektu:
• http://lasaris.fi.muni.cz/pps
Dostupnost výukových materiálů a nástrojů online:
• http://lasaris.fi.muni.cz/pps/study-materials-and-tools
vi
Obsah
1. Úvod .............................................................................................. 1
2. Metodika ....................................................................................... 3
3. Požadavky .................................................................................... 5
4. Použité n{stroje............................................................................ 6
4.1. Apache Wicket ..................................................................... 6
4.1.1. Uk{zka použití Wicketu ................................................ 7
4.2. Hibernate............................................................................... 8
4.3. OpenShift .............................................................................. 8
4.4. Git a GitHub ......................................................................... 9
5. Aplikace ...................................................................................... 10
5.1. Z{kladní str{nka ................................................................ 10
5.1.1. HeaderPanel .................................................................. 11
5.1.2. MenuPanel ..................................................................... 11
5.1.3. TeacherPanel.................................................................. 11
5.1.4. StudentPanel.................................................................. 12
5.1.5. SignPanel........................................................................ 12
5.1.6. FooterPanel .................................................................... 13
5.2. Autorizace a autentizace................................................... 13
5.2.1. Autorizace aplikací ....................................................... 13
5.2.2. Autorizace učitelem...................................................... 14
5.2.3. Autentizace .................................................................... 14
5.3. Role a opr{vnění ................................................................ 15
5.3.1. Role student................................................................... 15
5.3.2. Role učitel....................................................................... 15
5.4. Lekce a cvičení.................................................................... 16
5.4.1. Ověření dokumentu podle DTD................................. 17
5.4.2. XSLT transformace........................................................ 18
5.4.3. XSD Schéma................................................................... 18
5.4.4. xQuery výrazy............................................................... 19
5.4.5. xPath výrazy.................................................................. 20
5.5. Protokol o absolvov{ní cvičení........................................ 20
5.6. Zvýraznění syntaxe XML ................................................. 22
5.7. WYSIWYG editor............................................................... 23
vii
6. N{vrh použití aplikace ve výuce............................................. 24
7. Z{věr............................................................................................ 27
8. Literatura..................................................................................... 28
9. Přílohy ......................................................................................... 30
1
1. Úvod
V současné době je kladen velký důraz na snadnou výměnu
informací mezi programy. XML1 je jednou z technologií, kter{ tento
požadavek splňuje. Značkovací jazyky, jak se zmíněné XML označuje,
d{vají textu takovou podobu, aby jej bylo možné automatizovaně
zpracov{vat. Z pohledu z{kladní interpretace můžeme značkovací
jazyky rozdělit na procedur{lní a deklarativní. Procedur{lní značky
definují pro prvek konkrétní akci, zatímco deklarativní značky definují
prvek jako logickou č{st značkovaného textu *1].
Předmět Moderní značkovací jazyky a jejich aplikace vyučovaný
na Fakultě informatiky Masarykovy univerzity seznamuje studenty se
z{kladními standardy, principy pr{ce a technologiemi moderních
značkovacích jazyků na b{zi XML a jejich aplikací *2].
V současné době nemají studenti možnost automatizovaně
procvičovat probíran{ témata v rozsahu zmíněného předmětu. Existují
on-line n{stroje na procvičení jednotlivých témat, ale nejsou vytvořeny
přímo pro podporu výuky. Studenti nemají k dispozici jednotný
n{stroj, kterým by mohli procvičovat všechny probírané okruhy.
Cílem této bakal{řské pr{ce je navrhnout a implementovat
webovou aplikaci, kter{ podpoří výuku značkovacích jazyků v r{mci
předmětu PB138 Moderní značkovací jazyky a jejich aplikace a umožnit
tak studentům přístup k databance cvičení vytvořených přímo pro ně.
Mezi hlavní probíranou l{tku předmětu patří validace DTD2, XSL3
transformace, pr{ce s XSD4 schématy, xQuery a xPathy výrazy.
Vyvíjen{ aplikace by měla umožnit procvičov{ní všech těchto témat.
Webovou aplikaci bude nutné implementovat tak, aby
procvičov{ní probíraných oblastí bylo snadné, intuitivní, přívětivé,
automatizované a bylo ji možné použít při výuce formou on-line
cvičení. V pr{ci budou identifikov{ny uživatelské role, tak aby aplikace
umožňovala pracovat jako přihl{šený uživatel. Vyvíjený n{stroj budou
1 eXtended Markup Language
2 Document Type Definition
3 eXtensible Stylesheet Language
4 XML Schema Definition
2
využívat nejen studenti, ale také vyučující, dalším cílem pr{ce je
umožnit vyučujícím snadno vytv{řet nov{ cvičení a ty zpřístupňovat
studentům, kteří by měli mít možnost vytvořen{ cvičení prohlížet
a plnit.
Bakal{řsk{ pr{ce je strukturov{na do sedmi kapitol. První
kapitola se zabýv{ volbou metodiky n{vrhu a implementace. Je v ní
pops{no použití SCRUM jako metodiky vývoje aplikace. Druh{
kapitola popisuje nejdůležitější požadavky na aplikaci, které byly
identifikov{ny a podrobněji se zabýv{ těmi nejdůležitějšími. Třetí
kapitola - Použité n{stroje seznamuje s n{stroji, který byly využity při
vývoji aplikace. Jde zejména o webové aplikační rozhraní Apache
Wicket v kombinaci s frameworkem5 Hibernate pro objektově relační
mapov{ní. D{le pak služba OpenShift a GitHub díky kterým bylo
možné aplikaci nasadit na server a zpřístupnit ji na internetu. Čtvrt{
kapitola podrobně popisuje samotnou aplikaci, její souč{sti
a fungov{ní. V p{té kapitole je navrženo možné použití aplikace ve
výuce. Popisuje, jak zad{vat nov{ cvičení, zpřístupňovat jejich vzorov{
řešení, hodnotit řešení vytvořen{ studenty, vysvětluje jak umožnit
studentům přístup do aplikace a prohlížet protokoly o absolvov{ní
cvičení. Z{věrečn{ šest{ kapitola zhodnocuje konečnou implementaci
a navrhuje možnosti dalšího vývoje.
5 Softwarov{ struktura, sloužící k podpoře programov{ní a vývoji aplikace *3]
3
2. Metodika
Při implementaci aplikace byla využit agilní metodika SCRUM.
Jedn{ se o metodiku řízení vývoje aplikace, kter{ zahrnuje několik níže
popsaných kroků. Cílem metodiky je stanovení požadavků na aplikaci,
p{nov{ní, kontrola a evaluace procesu implementace. Předpokl{d{ se
pr{ce v týmu s pravidelnými evaluačními schůzkami.
Prvním krokem SCRUM metodiky je definov{ní požadavků na
produkt tzv. user stories. Každý takový požadavek musí odpovídat na
ot{zky: Kdo? Co? a Proč? požaduje. Soubor všech požadavků se
označuje jako Seznam požadavků (Product Backlog) *4+. Ve druhém
korku metodiky doch{zí k identifikaci důležitých požadavků
a eliminaci těch nadbytečných, vznik{ tzv. Release Backlog. Třetím
a z{roveň posledním krokem SCRUM metodiky před implementací je
uspoř{d{ní a seskupení požadavků do skupin tak jak budou v průběhu
času implementov{ny. Tyto skupiny požadavků se označují jako iterace
nebo sprint. N{sledující kroky metodiky z{visí na délce jednotlivých
sprintů [5].
Předn{šející a cvičící předmětu PB138 Moderní značkovací
jazyky a jejich aplikace byly pož{d{ni o seps{ní požadavků na aplikaci
tak aby na ně bylo možné aplikovat SCRUM metodiku. Výsledkem je
seznam všech ž{daných požadavků na aplikaci.
Dalším krokem podle metodiky je výběr důležitých požadavků,
který probíhal formou diskuse na společné schůzce s předn{šejícími
a cvičícími.
Všechny stanovené požadavky byly rozděleny do skupin tak jak
budou zpracov{v{ny. N{sledn{ implementace probíhala bez z{sahů
cvičících a předn{šejících a byla rozděleno do n{sledujících čtyř iterací
do kterým byly přiřazeny požadavky podle jejich důležitosti:
1. Spuštění všech potřebných n{strojů a technologií jako
Apache Wicket, Hibernate, GitHub, Openshift, atd…
(viz kapitola Použité n{stroje) a vytvoření první funkční
str{nky.
2. Vytvoření pěti lekcí a cvičení týkající se validace DTD, XSL
transformace, xPath výrazy, XSD schéma a xQuery výrazy.
4
3. Použití validačních n{strojů Xerces, možnost přid{v{ní
nových cvičení učitelem a zpětnou vazbu pro studenty při
prov{dění XSL transformací.
4. Umožnit učiteli přid{vat značky, filtrovat studenty,
zobrazovat vzorové řešení cvičení a omezit registraci
studentů pouze na určité období.
Každ{ iterace byla konzultov{na s vedoucím pr{ce a průběžně
zveřejňov{na prostřednictvím sužby OpenShift. Po čtvrté iteraci byla
aplikace a její funkcionality představeny předn{šejícím a cvičícím
předmětu PB138 Moderní značkovací jazyky a jejich aplikace.
Na z{kladě tohoto představení vzniklo několik nových požadavků,
který byla n{sledně doimplementov{ny.
5
3. Požadavky
Tato kapitola se zabýv{ požadavky kladenými na aplikaci. Jejich
kompletní seznam je uveden v příloze této pr{ce. Hlavním
požadavkem bylo automatizované procvičov{ní témat uvedených
v sylabu předmětu PB138 Moderní značkovací jazyky a jejich aplikace.
Identifikované požadavky se dají rozdělit do dvou skupin. První
skupinu tvoří požadavky kladené na automatizované procvičov{ní
příkladů. Do druhé skupiny patří požadavky, které umožňují pr{ci
s aplikací nebo ji usnadňují. Patří sem zejména autorizace a autentizace
uživatelů, obsluha pr{ce s cvičeními a vytv{ření protokolů
o absolvov{ní cvičení.
Do první skupiny požadavků patří možnost řešení úkolů typu
„Je zad{no XML a ot{zka je „Dopište DTD“ (Doplnění st{vajícího
č{stečného řešení)“. Tento typ cvičení se zaměřuje na problematiku
vytv{ření DTD, jako deklarace typu dokumentu *6+. Cvičení je složeno
ze zadaného XML dokumentu, ke kterému m{ student za úkol vytvořit
validní DTD, případně doplnit č{stečné zadané DTD. Absolvov{ním
tohoto typu cvičení student prokazuje znalost z oblasti tvorby DTD
dokumentů. Dalším typem cvičení jsou XSLT transformace, tedy
transformace XML dokumentů na XML výstup *7+. Ve cvičení student
musí projevit schopnost vytvořit transformaci, kter{ ze zadaného XML
dokumentu vytvoří podle určených specifikací nový dokument na
výstup. Třetím typem cvičení jsou XML schémata. Student m{ za úkol
vytvořit k zadanému XML dokumentu schéma, které jej popisuje.
K jednomu XML dokumentu je možné vytvořit několik různých
schémat, proto je vhodné řešení č{stečně zadat, tak aby student pouze
doplnil č{st řešení. Čtvrtým a p{tým typem cvičení jsou výrazy xPath a
xQuery. Student m{ ve cvičení za úkol vytvořit takový výraz, který
bude splňovat požadavky uvedené v zad{ní příkladu.
Do druhé skupiny požadavků patří ty, které jsou potřebné
k obsluze aplikace. Patří sem umožnění registrace a přihlašov{ní
uživatelů, rozdělení opr{vnění uživatelů na studenty a učitele. D{le
pak označení uživatelů specifickou značkou, možnost jejich filtrov{ní,
prohlížení protokolů o absolvov{ní cvičení a jejich komentov{ní.
6
4. Použité n{stroje
Při vývoji a implementaci aplikace bylo použito několik n{strojů
K těm nejdůležitějším patří aplikační rozhraní Apache Wicket, které
pracuje nad bez stavovým protokolem HTTP, framework Hinernate,
který umožňuje prov{dět objektové relační mapov{ní a datab{zové
dotazy s použitím SQL *8].
Pro nasazení aplikace byla použita cloudov{ služba Open Shift
a systém pro spr{vu verzi Git.
4.1. Apache Wicket
Apache wicket je jedním z nejzn{mějších webových aplikačních
rozhraní, které zjednodušuje vývoj webové aplikace *9].
Wicket dovoluje vyvíjet webovou aplikaci objektově
orientovaným programov{ním v jazyce. Snaží se řešit problémy bez
stavového HTTP protokolu a stavového serverově orientovaného
programov{ní. Nabízí programový model, který skrýv{ skutečnost, že
program{tor pracuje nad bez stavovým protokolem. Vytv{řet aplikace
pomocí Wicketu z velké č{sti vypad{ jako programov{ní v jazyce
Java [10].
Obecně v programov{ní m{ objekt nějaký stav a vlastnosti.
Wicket obsluhuje stavy objektů, tak aby bylo možné se soustředit
zejména na řešení problému aplikace namísto psaní zdlouhavých
kódů [11].
Wcket striktně odděluje prezentační a aplikační vrstvu. Jde tedy
o programov{ní čistě v Javě nebo čistě v HTML. Nesnaží se poskytnout
rozhraní, které by snížilo nebo dokonce eliminovalo samotné
programov{ní, naopak se snaží umožnit programov{ní v Javě v co
nejširší šk{le. Tím umožňuje také použití oblíbeného vývojového
prostředí a Javy se všemi jeho přednostmi a výhodami.
Aplikační vrstva představuje pouze kód v Javě. Prezentační
vrstva je tvořena statickými HTML šablonami, které nedovolují
program{torovi směšov{ní těchto dvou vrstev. HTML šablony jsou
čistě statickým kódem doplněným o speci{lní Wicketové značky a
identifik{tory *9+. Striktní oddělení aplikační a prezentační vrstvy by
mělo vést k zlepšení čitelnosti kódu, týmové spolupr{ci, využití
7
n{strojů vývojového prostředí jako refaktorov{ní (refactoring),
navigace v kódu, zvýraznění syntaxe, automatické doplnění
kódu, apod.
4.1.1. Uk{zka použití Wicketu
V uk{zce je představena jednoduch{ str{nka zobrazující text
„Ahoj světe!“. Každ{ str{nka se ve Wicketu skl{d{ ze dvou souborů.
První s HTML kódem a druhý s Java třídou. Oba soubory musejí být ve
stejném balíku, mají stejný n{zev, ale rozdílnou koncovku:
cz/muni/fi/wicket/PrvniStranka.html
cz/muni/fi/wicket/PrvniStranka.java
Uk{zka kódu č. 1 Obsah příkladového balíku.
Soubor PrvniStranka.java obsahuje velmi jednoduchý kód. Pro
zobrazení textu použijeme komponentu Label, kter{ m{ v konstruktoru
identifik{tor a text, který se m{ zobrazit. Identifik{tor slouží
k propojení prezentační a aplikační vrstvy.
package cz.muni.fi.wicket;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
public class PrvniStranka extends WebPage {
public PrvniStranka () {
add(new Label("message",
" Ahoj světe!"));
}
}
Uk{zka kódu č. 2 Aplikační č{st str{nky zobrazující komponentu Label.
Soubor PrvniStranka.html obsahuje HTML značky. Značka
je identifik{torem spojena s komponentou Label. Obsah značky bude
nahrazen textem z komponenty.
8
[zobrazovaný text...]
Uk{zka kódu č. 3 Prezentační č{st str{nky zobrazující komponentu Label.
Výsledný kód vytvořený pomocí Wicketu bude vypadat
n{sledovně:
Ahoj světe!
Uk{zka kódu č. 4 Výsledký vygenerovaný HTML kód.
4.2. Hibernate
Hibernate je framework pro jazyk Java, který nabízí objektově
relační mapov{ní. Umožňuje nahlížet na relační datab{ze jako na
objektově orientovaný model. Hibernate mapuje objekty v Javě na
entity v relační datab{zi. Patří k oblíbeným frameworkům v Javě *11].
Jeho použití v aplikaci šetří čas při vytv{ření objektů z výsledků
datab{zových dotazů a přen{šení vztahů mezi objekty do relačního
modelu.
Hibernate je licencov{n pod GNU licencí a je uživatelům
k dispozici zdarma.
4.3. OpenShift
OpenShift patří mezí cloudovou službu. Dalšími zn{mými
službami jsou Google App Engine od Googlu, AWS od Amazonu, MS
Azure od Microsoftu [12]. OpenShift je platformou6 pro cloudový
6 Pracovní prostředí z hardwarové i softwarové str{nky
9
hosting poskytovaný společností Rad Hat a patří do kategorie služeb
PaaS (Platform as a Service), platforma jako služba. Podporuje celou
šk{lu serverových technologií jako JavaScript, Ruby, Python, PHP, Perl,
Java, datab{ze MySQL, PostgreSQL, MonogoDB a několik r{mců.
Z technologií Javy nabízí aplikační server Tomcat ve verzi 6 a 7, JBoss
aplkační server ve verzi 7, JBoss aplikační platformu verze 6 *13]. Pro
aplikaci byl zvolen pro svoji jednoduchost, cenovou dostupnost a při
dodržení omezené prostorové kapacity užív{ní nem{ omezení.
Pro potřebu pr{ce je OpenShift vhodné místo kam lze aplikaci
nahr{t a d{le bezplatně provozovat. Uživateli umožňuje pod jedním
účtem nahr{t a provozovat až 3 aplikace současně.
Aplikace využív{ JBoss Application Server 7, MySQL 5.1 a pro
spr{vu datab{ze phpMyAdmin 4.0. Aplikaci lze nahr{t na OpenShift za
pomoci systému pro spr{vu verzí Git.
4.4. Git a GitHub
Git je jedním ze systém pro spr{vu verzí, který umožňuje
uchov{vat historie provedených změn ve zdrojovém kódu
aplikace [14+. Repozit{ř v gitu je možné získat vložením již existujícího
projektu, nebo klonov{ním jiného projektu. Klonov{ní repozit{ře je
využív{nou službou OpenShift.
GitHub patří mezi nejzn{mější servery pro hosting projektů
verzovaných v Gitu. GitHub nabízí jak placené repozit{ře, tak
repozit{ře neplacené pro volně rozšiřitelné aplikace.
10
5. Aplikace
Aplikace je rozdělena do šesti balíků, které obsahují jednotlivé
programové třídy. V prvním balíku jsou obsaženy třídy reprezentující
str{nky s jednotlivými cvičeními a třídy obsluhující cvičení a protokoly
o absolvov{ní cvičení. Lekce a jejich spr{va je umístěna v druhém
balíku. Třetí balík se star{ o komunikaci s datab{zí a objektově relační
mapov{ní. Validační procesy spouštěné při vyhodnocov{ní cvičení jsou
umístěny spolu s obsluhou chyb ve čtvrtém balíku. Registrace
uživatelů, protokoly o absolvov{ní cvičení a značky jsou umístěny
v balíku pro obsluhu uživatelů. Poslední balík obsahuje z{kladní
str{nku, panely pro učitele a studenty, panel pro přihl{šení a menu
panel.
5.1. Z{kladní str{nka
Aplikace umožňuje autorizaci a autentizaci uživatelů, proto musí
rozšiřovat třídu AuthenticatedWebApplication, kter{ podporuje
autentizaci založenou na rolích a rozšiřuje třídu WebApplication,
kter{ je podtřídou Application asociovanou s instancí
WicketServletu pro obsluhu str{nek přes HTTP protokol.
Vlastní aplikace je tvořena třídou HomePage rozšiřující
abstraktní třídu BasePage. Třída BasePage je rozšířením třídy Page
z balíku org.apache.wicket.markup.html.
Nejen hlavní str{nka – HomePage, ale také všechny ostatní
str{nky aplikace rozšiřují třídu BasePage.
Třídě BasePage jsou v konstruktoru přiřazeny n{sledující
komponenty:
HeaderPanel – hlavička str{nky
MenuPanel – z{kladní menu
TeacherPanel – menu pro uživatele s rolí učitel
StudentPanel – menu pro uživatele s rolí student
SignPanel – panel pro přihlašov{ní a odhlašov{ní uživatelů
FooterPanel – patička str{nky
11
5.1.1. HeaderPanel
HeaderPanel je rozšířením komponenty Panel a reprezentuje
hlavičku str{nky, obsahující pouze její titulek, který funguje jako
navigační prvek a odkazuje n{vštěvníky na titulní str{nku aplikace.
5.1.2. MenuPanel
MenuPanel je obs{hlejším rozšířením komponenty Panel, které
obsahuje z{kladní menu celé aplikace. Menu je rozděleno do dvou
kategorií:
menu
lekce
Kategorie menu obsahuje odkaz na str{nku se stručným popisem
aplikace. Kategorie lekce odkazuje již na konkrétní lekce a jejich cvičení.
MenuPanel je přístupný jak přihl{šeným, tak nepřihl{šeným
uživatelům a umožňuje tak sezn{mit se s problematickou značkovacích
jazyků každému kdo m{ k aplikaci přístup.
5.1.3. TeacherPanel
TeacherPanel je komponenta, kter{ je určena výhradně pro
uživatele s opr{vněním učitel. Učitel ze své role m{ možnost přid{vat
nov{ cvičení, registrační období, nahlížet do seznamu studentů
a protokolů o splnění cvičení. Panel slouží jako rozcestník s odkazy na
str{nky určené učiteli.
Obr. č. 1 Uk{zka komponenty TeacherPanel.
Komponenta je uživateli poskytnuta v z{vislosti na jeho
opr{vněním. Uživatelům s opr{vněním učitel je komponenta
12
zobrazena, ostatní uživatelé se o její existenci nedozví. Viditelnost
komponenty je zajištěna překrytím metody boolean isVisible(),
kter{ získ{ relaci přihl{šeného uživatele a ověří, zda se jedn{ o učitele.
5.1.4. StudentPanel
Komponenta StudentPanel je svojí funkcí podobn{ komponentě
TeacherPanel, ale je určena pro uživatele s rolí student. Obsahuje odkaz
vedoucí k vlastním protokolům o splnění cvičení.
Stejně jako u komponenty TeacherPanel je uživateli poskytnuta
v z{vislosti na jeho opr{vněním. Překrytím metody boolean
isVisible(), je zajištěna viditelnost komponenty pouze pro uživatele
s opr{vněním student.
5.1.5. SignPanel
SignPanel je komponenta, kter{ souží k přihlašov{ní
a odhlašov{ní uživatelů. Je rozdělena na dvě č{sti. Nepřihl{šenému
uživateli nabízí přihlašovací formul{ř, případně vytvoření nové
registrace. Přihl{šený uživatel vidí své z{kladní informace a odkaz pro
odhl{šení.
Viditelnost jednotlivých č{stí je opět zajištěna překrytím metody
boolean isVisible(), kter{ ověří stav přihl{šení uživatele
metodou boolean isSignedIn(). Metoda vrací true pro
přihl{šeného uživatele, false v opačném případě.
Obr. č. 2 Uk{zka SignPanelu před přihl{šením (vlevo) a po přihl{šení (vpravo)
13
5.1.6. FooterPanel
FooterPanel je jednoduché rozšíření třídy Panel, které
reprezentuje patičku str{nky.
5.2. Autorizace a autentizace
Autorizace uživatelů, jako proces získ{ní souhlasu s provedením
nějaké operace *15+, probíh{ v aplikaci na dvou úrovních:
1. autorizace aplikací a
2. autorizace učitelem.
Autentizace probíh{ pomocí standardního přihlašovacího
formul{ře.
5.2.1. Autorizace aplikací
Podpora autorizace na straně aplikace je ve Wicketu řešena
konceptem autorizační strategie pomocí rozhraní Iauthorization
Strategy (v balíku org.apache.wicket.authorization). Toto rozhraní
definuje dvě metody, které ověřují zda je uživatel opr{vněn vytv{řet
instance dané komponenty a zda je opr{vněn na dané instanci
komponenty prov{dět operace *16].
Standardní implementace autorizačního rozhraní dovoluje
každému uživateli vytv{řet instance z každé komponenty a prov{dět
na ni všechny dostupné operace. Autorizační strategie může být
změněna v průběhu inicializace aplikace.
V aplikaci je použita autorizace na z{kladě rolí a k ní příslušn{
strategie RoleAuthorizationStrategy z balíku org.apache.wicket.
authroles.authorization.strategies.role. Při inicializaci aplikace je
vytvořena nov{ instance autorizační strategie s vlastní třídou pro
získ{ní role z relace (třída UserRolesAuthorizer).
Rolově orientovan{ strategie se opír{ o dvě vestavěné anotace.
Těmi jsou AuthorizeInstantiation a AuthorizeAction.
Anotace AuthorizeInstantiation specifikuje, kter{ role smí
vytv{řet instance, zatímco anotace AuthorizeAction specifikuje
kter{ role smí používat danou metodu komponenty *16].
14
Pro autorizaci uživatelů se v aplikace použív{ anotace
AuthorizeInstantiation. Pro autorizaci uživatelů s rolí učitel jde o
anotaci @AuthorizeInstantiation("TEACHER").
5.2.2. Autorizace učitelem
Přístup do některých č{stí aplikace je podmíněn přihl{šením.
Každý uživatel, který chce získat přístup do aplikace se musí nejprve
registrovat. Při registraci musí projevit znalost registračního hesla, které
je vytv{řeno učitelem a m{ omezenou platnost. Poskytnutím hesla
učitel opravňuje uživatele k registraci do aplikace.
5.2.3. Autentizace
Autentizace jako proces ověření proklamované identity uživatele
je v aplikaci implementov{n pomocí přihlašovacího formul{ře, kde
uživatel zad{v{ své uživatelské jméno a heslo.
Pro jednoduchou autentizaci uživatelů pomocí formul{ře nabízí
Wicket komponentu SignInPanel z balíku org.apache.wicket.
authroles.authentication.panel. Komponenta je složena z přihlašovacího
formul{ře a informačního panelu pro chybovou nebo informační
zpr{vu – FeedbackPanel.
FeedbackPanel podporuje filtry pro zpr{vy, aby bylo možné
separovat zpr{vy pouze z určitého formul{ře. K tomu lze použít
ContainerFeedbackMessageFilter.
Již zmiňovan{ komponenta SignInPanel není
implementov{na tak, aby bylo možné zadat filtr. Proto bylo nutné
implementovat vlastní přihlašovací panel z důvodu kolize více
FeedbackPanelů dalších formul{řů. Aplikace na jedné str{nce zobrazuje
více různých formul{řů, které mají vlastní FeedbackPanel.
Samotn{ autentizace probíh{ metodou boolean
authenticate(String username, String password) třídy
SignInSession, kter{ obsluhuje přihlašovací relaci. Aplikace použív{
vlastní třídu - SignInSession, kter{ se star{ o relaci přihl{šení a
přepisuje metody Roles getRoles(), void signOut() a boolean
authenticate(…).
15
V aplikaci není možné najít přímé vol{ní metody authenticate.
Ta je vol{na Wicketem při vytv{ření nové relace přihl{šení.
5.3. Role a opr{vnění
V aplikaci jsou použity dvě úrovně opr{vnění: student a učitel.
Role uživatelů jsou stejnojmenné podle úrovně opr{vnění. Způsob
získ{ní opr{vnění a jeho kontrola jsou pops{ny v kapitole 5.2
Autorizace a autentizace. V této kapitole je pops{no, jaké může uživatel
vykon{vat akce s příslušnou rolí.
Nez{visle na roli je dovoleno všem uživatelům:
prohlížet všechny typy lekcí a jejich obsah,
prohlížet jednotliv{ cvičení (ne je absolvovat),
zaregistrovat se do aplikace.
5.3.1. Role student
Uživatel, kterému je přiřazena role student může prov{dět tyto
akce:
přihl{sit a odhl{sit se z aplikace,
absolvovat všechny typy cvičení,
nahlížet do svých protokolů o absolvov{ní svých cvičení a
nahlížet do koment{řů, které do protokolu o cvičení zadal
učitel.
5.3.2. Role učitel
Role učitel m{ dovoleno prov{dět více akcí. V roli učitele může
uživatel prov{dět všechny n{sledující akce:
přihl{sit a odhl{sit se z aplikace,
absolvovat všechny typy cvičení,
nahlížet do všech protokolů o absolvov{ní cvičení všech
uživatelů,
přidat a měnit koment{ře do protokolu o absolvov{ní cvičení,
přidat nové cvičení a zobrazit nebo skrýt jeho vzorové řešení,
nahlížet do existujících registračních období a
přidat nové registrační období.
16
5.4. Lekce a cvičení
Hlavním z{měrem aplikace je umožnit uživatelům procvičovat
problematiku předmětu PB138 Moderní značkovací jazyky a jejich
aplikace v rozsahu jeho sylabu. Z{kladní jednotkou je lekce, do které je
možné přidat nebo upravovat text a sdružovat cvičení daného tématu.
Uk{zkov{ lekce je zobrazena na Obr. č. 3.
Obr. č. 3 Uk{zka lekce se vzorovým textem, dvěmi přidanými cvičeními a odkazy pro
přid{ní nového cvičení a úpravu textu lekce.
Cvičení dovoluje automatizovaně procvičovat danou
problematiku. Aplikace umí automatizovaně procvičovat:
ověření dokumentu podle DTD,
XSLT transformace,
XSD schéma,
xQuery výrazy a
xPath výrazy.
Každé cvičení je složeno ze zad{ní, č{stečného řešení a
vzorového řešení. Proto bylo možné navrhnout společnou třídu
17
Exercise z balíku cz.muni.fi.exercise, kter{ obsahuje všechny
společné prvky. Cvičení jsou zaměřena na různou problematiku a není
možné je vyhodnocovat stejně, proto bylo zapotřebí implementovat
vlastní vyhodnocovací mechanizmy jednotlivých cvičení.
U vyhodnocovacích mechanizmů se podařilo identifikovat společné
prvky a ty č{stečně implementovat ve třídě AProcessor. Jde
o abstraktní třídu, kter{ obsahuje několik abstraktních metod, které
jednotlivé procesory implementují.
Obsah cvičení je rozdělen na veřejnou a neveřejnou č{st.
Do veřejné č{sti, kterou vidí všichni uživatelé patří zad{ní cvičení
a jeho vzorové řešení (pokud je učitel povolil zobrazit). Po přihl{šení do
aplikace je uživateli přístupný navíc formul{ř, který vyhodnotí jeho
řešení cvičení a každé řešení je uloženo v podobě protokolu
o absolvov{ní cvičení. Nepřihl{šený uživatel m{ možnost si cvičení
prohlédnout, ale nemůže vyhodnotit své řešení, z důvodu aby mohl
učitel nebo student nahlížet do všech řešení.
5.4.1. Ověření dokumentu podle DTD
Z{měrem cvičení na ověření dokumentu podle DTD je umožnit
studentům procvičovat vytv{ření DTD k zadanému XML. Cvičení m{
zadané XML ke kterému studenti mají za úkol vytvořit vlastní DTD
nebo doplnit č{stečně zadané řešení.
K ověření dokumentu XML podle DTD bylo vyžadov{no použití
validačního n{stroje Xerces. Pro Javu existuje knihovna s implementací
funkcionalit Xercesu. Do aplikace byla přid{na jako z{vislost
(dependency). Knihovna je použita ve verzi 2.11.0 z balíku
org.apache.xerces.
V průběhu validace je zadané XML v podobě textového řetězce
převedeno instancí třídy TransformerFactory na StreamResult.
Transform{toru je také nastaven DOCTYPE_SYSTEM v podobě DTD,
které student vytvořil. XML dokument s nastaveným DTD v podobě
StreamResult je analyzov{n instancí třídy DOMParser, z knihovny
Xerces a metodou parse(InputSource is) je ověřena validita DTD
dokumentu, který student vytvořil. Při analýze a zpracov{ní DTD
18
dokumentu mohou vzniknout tři druhy chyb, které jsou obslouženy
a vr{ceny v podobě zpr{vy pro uživatele.
V případě, že při analýze nevznikla ž{dn{ chyba je DTD
vyhodnoceno jako spr{vné.
Pro obsluhu chybových hl{šení byla implementov{na třída
ErrorHandler rozšiřující standardní DefaultHandler z balíku
org.xml.sax.helpers. Programov{ny byly metody pro obsluhu varov{ní
(warnings), chyb (errors) a z{važných chyb (fatal errors). Ani v případě
z{važné chyby nedojde k p{du aplikace, ale student dostane hl{šení o
z{važnosti.
5.4.2. XSLT transformace
Cvičení na XSLT transformace umožňuje studentům vytv{řet
vlastní nebo doplňovat č{stečn{ řešení XSLT transformací. Zad{ní se
skl{d{ z XML dokumentu a slovního popisu toho, co m{ transformace
provést. Po vyhodnocení cvičení m{ student přístup k výstupnímu
XML dokumentu. Vidí tedy jak dopadla transformace, kterou navrhl.
Transformace je provedena pomocí instance třídy
TransformerFactory z balíku javax.xml.transform, který
představuje rozhraní transformační procesy. Použit{ metoda
transform(Source s, Result r) převede zdroj s na výsledek r.
Transform{toru je nastaven vlastní ErrorListener implementující
rozhraní ErrorListener ze stejného balíku.
Transform{toru je možné nastavit specifické vlastnosti, jako
například odsazov{ní elementů pro lepší orientaci v XML dokumentu,
čehož je při transformaci využito.
Během transformace mohou vzniknout chyby. Třída
ErrorListener zajišťuje sdělení chyby uživateli, tak aby mohl
transformaci opravit. Mohou vzniknout tři typy chyb: varov{ní
(warning), chyba (error) nebo z{važn{ chyba (fatal error). O každé
z chyb je uřivatel informov{n v podobě zpr{vy.
5.4.3. XSD Schéma
Ve cvičeních zaměřených na XSD schéma m{ student za úkol
napsat XSD schéma k zadanému XML.
19
K vyhodnocení uživatelem vytvořeného XSD schématu je
použita instance třídy SchemaFactory z balíku javax.xml.validation.
Při vytv{ření instance třídy SchemaFactory je nutné zadat jmenný
prostr popisující schéma. Vybr{n byl jmenný prostor uveřejněný na
webu mezin{rodního konsorcia World Wide Web Consortium (W3C).
Jmenný prostor je dostupný online na adrese:
http://www.w3.org/2001/XMLSchema.
Z textové podoby XSD Schématu byla vytvořena instance třídy
Schema. Z této instance byl metodou newValidator() vytvořen
valid{tor, který vyhodnotí spr{vnost XSD schématu. Pro obsluhu
chybových hl{šení byla implementov{na třída ErrorHandler, kter{ je
použita také k obsluze chyb při validaci proti DTD.
5.4.4. xQuery výrazy
XQuery výrazy je možné procvičovat v dalším typu cvičení.
Student m{ zadané XML a jeho úkolem je vytvořit xQuery výraz, který
bude odpovídat zad{ní.
Ke zpracov{ní a vyhodnocení vytvořeného xQuery výrazu byla
použit knihovna Saxon ve verzi 7.8 a přev{žně třídy z balíku
net.sf.saxon.query.
Prvním krokem k vyhodnocení xQuery výrazu je vytvoření
konfiguračního objektu net.sf.saxon.Configuration, který
uchov{v{ nastavení systému. Objektu není potřeba dodatečně
nastavovat ž{dné vlastnosti, z{kladní nastavení je dostačující. Dalším
krokem je zpracov{ní vstupního XML třídou StaticQueryContext,
kter{ zkompiluje XML a vytvoří z něj výraz XqueryExpression.
Z xQuery výrazu bylo nutné vytvořit instanci třídy DocumentInfo
a nastavit ji jako kontextový uzel třídy DynamicQueryContext.
Spuštění xQuery výrazu nad XML se prov{dí metodou
run(DynamicQueryContext dqc, Result result,
Properties p). Případné chyby při vykon{v{ní metody jsou vr{ceny
prostřednictvím obsluhy chyb – třídou ErrorListener.
20
5.4.5. xPath výrazy
Poslední typ cvičení studentům umožňuje procvičovat vytv{ření
xPath výrazů. Student m{ za úkol napsat takový xPath výraz, aby
odpovídal zad{ní úlohy. Souč{stí zad{ní je také XML, které se vztahuje
k xPath výrazu. Student vidí XML před i po zpracov{ní. Nedost{v{
pouze zpr{vu o tom, zda je xPath výraz spr{vně nebo ne, ale m{
možnost vidět jak XML dopadlo po aplikaci jeho výrazu.
Zpracov{ní xPath výrazu se děje za pomoci rozhraní XPath
balíku javax.xml.xpath a instance třídy TransformerFactory
a transform{toru Transformer, který metodou transform(Source
s, Result r) převede zdroj s na výsledek r. Chyby vzniklé při
transformaci jsou vr{ceny prostřednictvím třídy ErrorListener.
Zdrojem transformace je objekt typu DOMSource. Vstupní XML
v textové podobě je převedeno na objekt typu DOMSource z knihovny
Xerces.
Samotné zpracov{ní xPath výrazu probíh{ nad instancí třídy
XpathFactory z balíku javax.xml.xpath. Metoda evauate(String
expression, InputSource source, Qname returnType)
vyhodnotí xPath výraz expression vzhledem ke zdroji source
a vr{tí výsledek jako specifický typ returnType.
5.5. Protokol o absolvov{ní cvičení
Protokol o absolvov{ní cvičení je navržen tak, aby umožnil
prohlížet řešení absolvovaných cvičení a dovoluje učiteli d{t zpětnou
vazbu studentovi prostřednictvím koment{ře k výsledku.
Entita UserExerciseProtocol uchov{v{ informace
o výsledku, uživateli který cvičení absolvoval, cvičení, které bylo
absolvov{no, čas absolvov{ní a koment{ř učitele. Z důvodu různých
typů cvičení je výsledek uložen pouze v textové podobě. Obr. č. 4
ilustruje podobu protokolu prohlíženou učitelem.
Učitel může komentovat výsledek studenta prostřednictvím
komponenty AjaxEditableLabel, kter{ umožňuj upravit obsah
koment{ře přímo na str{nce s protokolem bez nutnosti znovunačtení
str{nky. Koment{ř je dovoleno vkl{dat pouze uživatelům s opr{vněním
učitel. Ostatní uživatelé mají pr{vo do koment{ře pouze nahlížet.
21
Obr. č. 4 Uk{zka protokolu o absolvov{ní cvičení prohlížen{ učitelem.
22
5.6. Zvýraznění syntaxe XML
Souč{stí každého cvičení je vždy zadané XML a vzorové řešení
v podobě XML. Aby bylo XML lépe čitelnější, je v aplikaci využito
zvýraznění syntaxe, které barevně odděluje logické č{sti, např. n{zev
atributu a jeho hodnotu nebo n{zev značky a n{zev atributu.
Jak ilustruje Obr. č. 5, syntaxe není zvýrazněna pouze barevně,
ale také prostorově. Doch{zí k odsazov{ní vnořených značek, tak aby
vznikal na první pohled strukturovaný XML dokument.
Pro zvýraznění syntaxe XML doumentů je v aplikaci je využito
externí JavaScriptové knihovny jQuery a její rozšíření jQuery Syntax
Highlighter ve verzi 1.1. Rozšíření umožňuje program{torovi
jednoduše zvýraznit syntaxi XML dokumentů. Pr{ce se zvýrazněným
dokumentem je pak pro uživatele přívětivější a může pomoci k lepší
orientaci v dokumentu.
Jak knihovna jQuery tak její rozšíření jsou licencov{ny pod
licencí MIT.
Knihovna i rozšíření byly vybr{ny z důvodu jejich snadné
aplikace a volně rozšiřitelné licenci.
Obr. č. 5 Uk{zka zvýraznění syntaxe.
23
5.7. WYSIWYG editor
Aplikace dovoluje učiteli editovat text lekce a přid{vat nov{
cvičení. Aby bylo možné jednoduše form{tovat přid{vaný text přímo
v prohlížeči, je v aplikaci použit WYSIWYG editor NicEdit ve verzi 0.9,
který je licencov{n pod licencí MIT.
Editor byl vybr{n z důvodu snadné implementace, možnosti
zvolit, jaké form{tovací prvky budou uživateli poskytnuty a které
budou zak{z{ny. Ze z{kladní nabídky form{tov{ní, které editor nabízí
je v aplikaci odebr{no pouze tlačítko pro vkl{d{ní obr{zků. Editor
uživateli nabízí možnost zarovn{ní textu, změnu velikosti textu, změnu
fontu písma, odsazení, vytvoření číslovaných nebo odr{žkových
seznamů, apod. Obr. č. 6 demonstruje použití editoru nad vzorový
textem.
Strukturovaný a form{tovaný text lekce vytvořený pomocí
WYSIWYG editoru NicEdit je pro studenty lepé čitelný, umožňuje
snazší orientaci a dovoluje také odkazovat na externí zdroje.
Obr. č. 6 Uk{zka použití editoru na úpravu textu lekce se vzorovým textem.
24
6. N{vrh použití aplikace ve výuce
Aplikace je navržena tak, aby se mohla používat jako podpora
výuky předmětu PB138 Moderní značkovací jazyky a jejich aplikace. Při
skutečném využití získají vyučující předmětu soubor cvičení
k jednotlivým tématům, které mohou jednoduše rozšiřovat nebo
doplňovat. Studenti tím mají možnost procvičit danou problematiku
větším množstvím cvičení různé obtížnosti a také získat zpětnou vazbu
od cvičícího.
Po spuštění aplikace musí cvičící nejprve vytvořit teoretický
obsah lekce a přidat k němu cvičení. Bez těchto dvou z{kladních kroků
je zbytečné udělovat přístup do aplikace studentům.
Teoretický obsah lekce může upravovat pouze uživatel
s opr{vněním učitel na str{nce s danou lekcí kliknutí na tlačítko
„Upravit text lekce“. WYSIWYG editor umožňuje text lekce
strukturovat a form{tovat tak aby byl co nejpřehlednější. Souč{stí
každé lekce je soubor číslovaných cvičení uvedený pod textem lekce.
Uživatel s opr{vněním učitel může také přid{vat nov{ cvičení. Každé
cvičení se skl{d{ z typu, textového zad{ní a XML, které tvoří nedílnou
souč{st zad{ní. D{le je možné zadat č{stečné řešení cvičení. Důležitou
souč{stí cvičení je oček{vaný XML výstup. Nejde o vzorové řešení, ale
o výstupní XML po transformaci nebo aplikaci dotazu. Cvičení také
obsahuje vzorové řešení, jak v textové tak v XML podobě, které lze
zobrazit nebo skrýt. Na všechny XML bude aplikov{no zvýraznění
syntaxe pro lepší přehlednost. Uložením cvičení vznikne nov{ položka
v seznamu cvičení dané lekce a je možné je ihned absolvovat.
N{stroje vyhodnocující řešení cvičení jsou běžně využívané ve
výuce. Jejich použití není z{vislé pouze na aplikaci a student je tak
může aplikovat s{m např. prostřednictvím příkazové ř{dky.
Přístup uživatelů je podmíněn registrací. Registrace je povolena
pouze v registračním období a je podmíněna heslem. Registrační
období m{ pr{vo přidat pouze uživatel s opr{vněním učitel.
Takový uživatel musí zadat registrační období (odkaz
„Registrační období“ v menu) pro povolení registrace. Při zad{v{ní
nového období je zapotřebí stanovit kdy začín{, kdy končí a zvolit
25
vhodné registrační heslo. Registrační heslo slouží k označení uživatelů
zaregistrovaných v daném období a slouží také jako filtr v seznamu
uživatelů. Vhodným heslem je např. 05jaro2013 pro studenty p{té
semin{rní skupiny v semestru jaro 2013.
Při zad{v{ní nového období je důležité, aby cvičící zadal
opr{vnění „Student“. Po zad{ní registračního období může sdělit
studenům adresu, na které se zaregistrují. Pokud chce uživatel umožnit
registraci učiteli, je potřeba zadat opr{vnění „Učitel“ a období
registrace co nejvíce zkr{tit, aby nemohlo dojít k neopr{vněné
registraci.
Studenti se vyplněním registračních údajů zaregistrují a získ{vají
okamžitý přístup ke všem lekcím a jejich cvičení. Zad{ní cvičení je
možné prohlížet i jako nepřihl{šený uživatel, absolvov{ní cvičení je ale
přihl{šením podmíněné. Cvičení jsou dostupn{ v každé lekci pod jejím
teoretickým obsahem.
Po zad{ní vlastního řešení a jeho vyhodnocením kliknutím na
tlačítko „Vyhodnotit“ vidí uživatel okamžitě svůj výsledek. Počet
vyhodnocení každého cvičení není omezen. Při každém vyhodnocení
doch{zí k uložení protokolu o absolvov{ní cvičení, který obsahuje
informace o tom, jaké cvičení který uživatel absolvoval a jaké bylo jeho
řešení. Protokol lze zpětně prohlížet (odkaz „Protokoly o cvičení“ při
opr{vnění Student, „Seznam uživatelů“ při opr{vnění Učitel.
Protokoly jsou zde řazeny podle typu lekce do které patří.
Jakmile studenti absolvují cvičení, může si cvičící dohledat protokol
o absolvov{ní cvičení v Seznamu uživatelů a přidat svůj koment{ř
k řešení. K zad{v{ní koment{ře je využito AJAX komponenty, cvičící jej
tedy zad{v{ přímo do protokolu. Dvojklikem na položku koment{ř
(v případě neexistujícího koment{ře se zobrazuje text „…“) se zobrazí
editační textové pole pro zad{ní obsahu.
Odkaz „Seznam uživatelů“ učiteli d{v{ přehled o všech
zaregistrovaných uživatelích a umožňuje mu tento seznam filtrovat
podle značky a opr{vnění, pokud chce zobrazit pouze danou skupinou
uživatelů. U každého uživatele je možné prohlížet jeho protokoly
a absolvov{ní cvičení. Zeleně zbarvené odkazy na protokoly s n{pisem
„OK“ značí, že zadané řešení vyhovuj zad{ní, oproti tomu červené
26
zbarvené odkazy s n{pisem „NOK“ značí nevyhovující nebo ž{dné
řešení cvičení. Každý protokol může učitel prohlížet a komentovat.
27
7. Z{věr
Cílem této pr{ce bylo navrhnout a implementovat aplikaci, kter{
umožní automatizovaně procvičovat problematiku značkovacích
jazyků v rozsahu předmětu PB138 Moderní značkovací jazyky a jejich
aplikace.
Na z{kladě zvolené SCRUM metodiky byly stanoveny
požadavky, které se podařilo všechny implementovat. Vznikl tak
n{stroj, který umožňuje vytv{řet a rozšiřovat databanku cvičení
k podpoře výuky témat jako je validace DTD dokumentů, XML
transformací, XSD schémat, xQuery a xPath výrazů.
Aplikace podporuje dvě úrovně opr{vnění. Uživatelé
s opr{vněním student mají možnost pouze plnit cvičení, zatímco
uživatelé s opr{vněním učitel mohou nov{ cvičení přid{vat,
komentovat protokoly a absolvov{ní cvičení nebo povolovat registraci
uživatelům novým. Volba úrovní opr{vnění je tak vhodn{ k použití ve
výuce.
Aplikace byla nasazena na službu OpenShift a je volně
přístupn{.
28
8. Literatura
[1] VOCHOZKA JOSEF. Značkovací jazyky a XML [online].
2000 [cit. 2013-11-29+. Dostupné z: .
[2] PB138 Moderní značkovací jazyky a jejich aplikace [online].
2012 [cit. 2013-11-25+. Dostupné z: .
[3] Wicket: A simplified framework for building and testing
dynamic Web pages. IBM developerWorks [online]. 2008 [cit. 2013-08-12].
Dostupné z: .
[4] SCHWABER KEN. Agile Software Development with SCRUM. Pearson
2008, 158 s. ISBN 978-0-1320-7489-6.
[5] SUTHERLAND JEFF, SCHWABER KEN. The Scrum Guid TM [online].
2013 [cit. 2013-08-20+ Dostupné z: .
*6+ PITNER TOM[Š. Z{kladní standardy a rozhraní rodiny XML [online].
2. 3. 2010. [cit. 2013-09-05+. Dostupné z: .
*7+ PITNER TOM[Š. Transformace XML dat [online]. 22. 3. 2010.
[cit. 2013-09-05+. Dostupné z: .
[8] Hibernate ORM [online]. [cit. 2013-10-12+. Dostupné z:
.
29
[9] VAYNBERG IGOR. Apache Wicket Cookbook. 1. vyd{ní. Packt
Publishing, 2011, 312 s. ISBN 978-1-849511-60-5.
[10] MARTIJN DASHORST, EELCO HILLENIUS. Wicket in Action.
Greenwich: Mannig Publications Co., 2009, 392 s. ISBN 1-932394-98-2.
[11] BAUER CHRISTIAN, KING GAVIN. Hibernate in Action.
Greenwich: Mannig Publications Co., 2005, 430 s. ISBN 1932394-15-X.
*12+ Nov{ cloudov{ platforma OpenShift. Živě.cz [online]. 2011
[cit. 213-10-11+. Dostupné z: .
[13] Java Application Hosting. OpenShift [online]. 2013 [cit. 2013-10-23].
Dostupné z: .
[14] CHACON SCOTT. Pro Git. Praha: CZ.NIC, z. s. p. o., 2009, 263 s.
ISBN: 978-80-904248-1-4.
*15+ MATY[Š V[CLAV, KRHOVJ[K JAN. Autorizace elektronických
transakcí a autentizace dat i uživatelů. 1. vyd. Brno: Masarykova
univerzita, 2008. 128 s. 1. ISBN 978-80-210-4556-9.
[16] 20 Security with Wicket - Reference Documentation. Apache Wicket
[online]. 2012 [cit. 2013-12-05+. Dostupné z: < https://wicket.apache.org/
guide/guide/chapter19.html#chapter19_2>.
30
9. Přílohy
Autor Požadavky
Mgr. Filip Nguyen
Student může komentovat jednotlivé lekce, aby
učitel měl zpětnou vazbu o tom, co přidal, že je
chyba ve cvičení, apod.
Mgr. Filip Nguyen
Student může měnit obsah lekce. Aby nebylo
možné "ničit" obsah, tak jakýkoliv obsah který se
do systému dostane nebude nikdy smaz{n.
Mgr. Filip Nguyen
Měla by být možnost jednoduše přidat studenty
určitého ročníku. Registrace na heslo, tj. učitel
přijde do učebny, v systému zad{ hodinové heslo
na registraci. Systém nyní akceptuje registrace po
dobu jedné hodiny na z{kladě tohoto hesla.
Mgr. Filip Nguyen
Student m{ možnost odpovídat na ot{zky systému
a/b/c/d
Mgr. Filip Nguyen
Student může řešit úkol typu: je zad{no XML a
ot{zka je "Dopište DTD" (Doplnění st{vajícího
č{stečného řešení)
Mgr. Filip Nguyen
Student m{ možnost zpětné vazby při řešení
cvičení XSLT transformací. (Tj. vidí XML před i po
transformaci)
Mgr. Filip Nguyen
Když student validuje pomocí DTD ve cvičení, tak
výstup validace bude ve form{tu, který
zprostředkov{v{ XMLLint. Tzn. že technologicky
se na pozadí spouští XMLLint.
Mgr. Filip Nguyen Učitel může přid{vat další cvičení.
Mgr. Filip Nguyen
Učitel může zobrazit statistiku nejčastěji
vyhodnocovaných řešení a nejvíce
problematických cvičení.
31
Mgr. Filip Nguyen
V lekci je více str{nek. Aby učitel při výkladu
mohl studentům říct, že budeme pracovat s další
str{nkou.
Jiří Krejčí
Učitel může zobrazit nebo skrýt vzorové řešení
příkladu.
Jiří Krejčí
Mezi uživatelem a systémem probíh{ automatick{
mailov{ komunikace (při registraci, změně hesla).
Jiří Krejčí Učitel může přid{vat další lekce.
Jiří Krejčí Učitel může vytv{řet testové ot{zky a/b/c/d.
Jiří Krejčí
Uživatel si může přid{vat vlastní značky (tagy),
aby si vytvořil supiny, např. tag '2011', 'skupina01'.
Jiří Krejčí
Učitel může přiřazovat značku (tag) studentovi,
aby byl schopen filtrovat studenty.
Jiří Krejčí
Student může řešit úkol typu: je zad{no XML
a ot{zka je "Napište XPath výraz, který vybere
elementy s atributem 'id'."
Jiří Krejčí
Student může řešit úkol typu: je zad{no XML
a ot{zka je "Dopište XML schéma" (Doplnění
st{vajícího č{stečného řešení)
Jiří Krejčí
Student může řešit úkol typu: je zad{no XML
a ot{zka je "Dopište XSL transformaci, aby
výsledný XML splňoval tyto podmínky:..."
(Doplnění st{vajícího č{stečného řešení)
Jiří Krejčí
Student může řešit úkol typu: je zad{no XML
a ot{zka je "Napište XQuery výraz, který vybere
elementy XY."
Mgr. Marek Gr{c
Cvičení v lekci jsou uspoř{d{ny neline{rně, aby
pokročilí studenti mohli rychle přejít na složitější
úlohy a slabší studenti si mohli lehčí příklady více
osvojit.
Mgr. Marek Gr{c Učitel může ke cvičení přidat předpokl{daný čas
32
potřebný k zvl{dnutí úlohy, aby studenty
motivoval úlohu dokončit v nějakém čase.
doc. RNDr. Tom{š
Pitner, Ph.D.
Student může řešit úkoly typu: vytvořte
dokumentaci v DocBook. Dokumentace bude
vložena jako volný text a učitel ji bude mít
možnost prohlížet.
doc. RNDr. Tom{š
Pitner, Ph.D.
Student může řešit úkoly typu: vytvořte
dokument v HTML5 vložte protokol z online
valid{toru. Protokol bude vložen jako volný text
a učitel bude mít možnost jej prohlížet.
doc. RNDr. Tom{š
Pitner, Ph.D.
Student může programově spouštět xPath
a xQuery doplněním programové spuštění xPath,
XQuery, apod. doplňov{ní 1 metody.
Mgr. Luděk
B{rtek, Ph.D.
Když student validuje pomocí DTD ve cvičení, tak
výstup validace bude ve form{tu, který
zprostředkov{v{ validační n{stroj Xerces.
Tab. 1 Seznam požadavků a jejich autoři.
Student může řešit úkol typu: je zad{no XML a ot{zka je "Dopište DTD"
(Doplnění st{vajícího č{stečného řešení).
Student může řešit úkol typu: je zad{no XML a ot{zka je "Dopište XSL
transformaci, aby výsledný XML splňoval tyto podmínky: ..." (Doplnění
st{vajícího č{stečného řešení.)
Student může řešit úkol typu: je zad{no XML a ot{zka je "Nepiště
XPath výraz, který vybere elementy s atributem 'id'."
Student může řešit úkol typu: je zad{no XML a ot{zka je "Dopište XML
schéma" (Doplnění st{vajícího č{stečného řešení)
Student může řešit úkol typu: je zad{no XML a ot{zka je "Nepiště
XQuery výraz, který vybere elementy XY."
Student m{ možnost zpětné vazby při řešení cvičení XSLT transformací.
(Tj. vidí XML před i po transformaci)
Učitel může přid{vat další cvičení.
Učitel může zobrazit nebo skrýt vzorové řešení příkladu.
33
Učitel může přiřazovat značku (tag) studentovi, aby byl schopen
filtrovat studenty.
Když student validuje pomocí DTD ve cvičení, tak výstup validace
bude ve form{tu, který zprostředkov{v{ validační n{stroj Xerces.
Měla by být možnost jednoduše přidat studenty určitého ročníku.
Registrace na heslo, tj. učitel přijde do učebny, v systému zad{
hodinové heslo na registraci. Systém nyní akceptuje registrace po dobu
jedné hodiny na z{kladě tohoto hesla.
Tab. 2 Seznam vybraných požadavků k implementaci.
CD č. 1 CD se zdrojovými kódy.