Semestrální práce
Týmy
- Semestrální práce bude zpracována v týmech po třech studentech.
- Ve speciálních případech je možný i tým s jiným počtem studentů, ale pouze s
výslovným souhlasem cvičícího.
- Mezní termín pro nahlášení týmů je do 12.10.2009.
- Všichni studenti, kteří nebudou po tomto termínu bez řádné omluvy členy
nějakého týmu, ztrácí nárok na zápočet.
- Nahlašování týmů probíhá mailem na adresu cvičícího.
- Mail musí obsahovat jména, studijní čísla a mailové adresy všech členů týmu,
jednu kontaktní mailovou adresu na celý tým a dále pak vybrané zadání semestrální
práce.
Možná zadání
Upozornění, doporučení a časté chyby při
realizaci i odevzdávání
- vzor pro shell a všechny příkazy je bash
- časté chyby
- >, <, | vyžadují kolem sebe mezeru
- chybí studijní čísla v dokumentaci
- sort neumí číst ze std. vstupu
- cd ., cd ..
- ps musí vypisovat všechny procesy (nejen akt. uživatele - pro testování)
- ukončení čtení ze std. vstupu Ctrl+D
- shutdown - externí program, volá službu správce
- skripty pro překlad
- spuštění shellu z shellu
- při nečinosti nevytěžovat CPU - žádné aktivní čekání
- sort by neměl vypisovat nic navíc - to samé ls
- přepínání procesů - ps, jobs, fg, bg
- znak pro rouru |, přesměrování <>, nepřesměrovávat chybový výstup
- Ctrl+D - zavření aktuálního vstupu (přímo v shellu ukončuje shell)
- nemá smysl zabezpečovat přihlašování do shellu jménem a heslem, zejména pokud se
oboje v rámci zabezpečení neodevzdá a práci tak nelze ohodnotit!
- deadline odevzdání končí půlnocí - tj. 0:0 a dále je po termínu; čas
odevzdání je čas, kdy e-mail přijme server students.kiv.zcu.cz
- pokud semestrální práce nefunguje, tým má možnost jejího předvedení, včetně
kompilace - rozhoduje čas přijetí semestrální práce, která se bude testovat a
hodnotit
- semestrální práci odevzdává za celý tým pouze jeden člen
Správce virtuálních strojů
- Preferované hromadné téma semestrální práce.
- Cílem této práce je navrhnout a implementovat model správce virtuálních strojů.
- Jedná se pouze o model a ideu, nikoli o stoprocentní řešení.
- Podrobnosti budou probrány na cvičení.
- Pokud nebude správce v programovacím jazyce Java, je nutné osobní předvedení na
katedře (od kompilace až po testy).
- V rámci testování budou smazány VŠECHNY .class soubory => odevzdání musí
obsahovat dva dávkové soubory: jeden pro kompilaci a druhý pro spuštění
- Semestrální práce se bude testovat pod WXP se Sun Java 1.5.0 nebo novější
Povinné příkazy shellu
- cat - vypíše soubor
- cd - změní pracovní adresář shellu
- echo - vypíše zprávu
- exit - ukončí shell
- kill - ukončí proces
- ls - vypíše obsah pracovního adresáře; ls - vypisuje aktuální adresář; ls
rel_cesta; ls abs_cesta
- man - vypíše stručnou nápovědu a všechny implementované příkazy
- ps - vypíše všechny procesy ve správci (výpis kompletně všech procesů - kvůli
ladění)
- pwd - vypíše pracovní adresář shellu
- shell - spustí shell (lze spouštět rekurzivě)
- shutdown - ukončí správce virtuálních strojů; ne pouhé volání Sytem.exit, ale
volání služby správce, který nejprve ukončí včechny procesy, ... a až na konec
zavolá System.exit (pouze pokud je potřeba)
- sort - seřadí řádky ze vstupu a vypíše je na výstup
- Uchovávejte historii příkazů
Každý z uvedených příkazů musí obsahovat jednodnotnou možnost získání
nápovědy o funkci, možných parametrech atd.
DALŠÍ ROZŠÍŘENÍ (ohodnocené dalšími body)
- jednouživatelský, víceúlohový systém
- prompt musí ukazovat celou cestu k aktuálnímu adresáři (lepší testování)
- Napište si terminálové okno.
- Navrhněte gramatiku pro shell.
- Navrhněte a implementujte syntaktický analyzátor.
- Navrhněte strukturu správce virtuálních strojů.
- Udělejte propojení na souborový systém, napište váš cat a ukažte jeho
funkčnost.
- Doplňte model o vykonávání příkazů shellu v hierarchii virtuálních strojů -
init, login, shell, program xyz, ...
- Přidejte přesměrování a roury.
- Napište další programy pro příkazy shellu, logout, shell, date, ...
- Model můžete rozšířit o send a receive mezi uživateli, vykonávání v pozadí,
příkazy bg a fg.
- K historii příkazů uchovávejte i adresáře, ve kterých byly použity
- Dokončete detaily.
- Testujte.
Ukázka demonstruje jak se v Javě programují
některé věci a shell z pohledu UI, NE z pohledu jak má být semestrální práce
naprogramována.
Konvence v Javě
- identifikátory a komentáře se píší anglicky
- názvy package pouze malými písmeny
- class soubory se generují do jiného adresáře (ne k zdrojákům)
- místo třídy kolekce se používá rozhraní
Shell pro Unix/Linux
- Podle hloubky vašich dosavadních znalostí zkuste malé programy pro základní
systémová volání (byla na přednášce).
- Navrhněte svou gramatiku pro shell (povinné cvičení).
- Navrhněte syntaktický analyzátor.
- Implementujte alespoň část syntaktického analyzátoru (minimum rozpoznání
příkazu).
- Použijte váš syntaktický analyzátor a napište shell, který vykoná příkaz.
- Implementujte dokončování klávesou Tab (funkčnost viz bash).
- Přidejte přesměrování vstupu a výstupu a kolonu (kostra byla na přednášce).
- Napište vlastní verzi programů pro vybrané příkazy shellu.
- Přidejte vykonání programu na pozadí.
- Přidejte příkazy fg a bg pro přepínání mezi vykonáváním v popředí a na
pozadí.
- Uchovávejte historii příkazů, případně i s adresáři, ve kterých byly použity
- Dokončete detaily.
- Testujte.
Podle vlastní iniciativi můžete doplnit více podrobností. Testovacím prostředím
pro shell bude stroj eryx.zcu.cz. Všechny jiné, než zdrojové soubory budou před
testováním smazány. V rámci odevzdání je TŘEBA vytvořit buď:
- dva dávkové soubory: jeden pro kompilaci a druhý pro spuštění.
- pokud je výsledkem jeden jediný spustitelný souboru, pak stačí makefile -
kompilace bude provedena spuštěním make
Volné téma
V případě zájmu o vlastní zadání kontaktujte cvičícího. Nutná podmínka
vlastního zadání je předvedení funčnosti v prostorách KIVu.
Forma odevzdání
Platí pouze pro první dvě zadání. Ostatní zadání budou řešena individuálně
po dohodě s cvičícím.
Skript pro překlad
Vyberte si jednu z následujících možností.
- compile.bat - Správce virtuálních strojů
- compile.sh - Shell pro UNIX/Linux
- makefile - Shell pro UNIX/Linux
Program javac bude obsažen v systémové proměnné path. O ANT se ví, ale ze
specifických důvodů není jednou z možností.
Skript pro spuštění
Vyberte si jednu z následujících možností.
- run.bat - Správce virtuálních strojů
- run.sh - Shell pro UNIX/Linux
- shell - Shell pro UNIX/Linux
Program java bude obsažen v systémové proměnné path.
Dokumentace
- Možné formáty jsou pdf (preferovaný), ps, doc nebo rtf.
- Titulní strana - univerzita, fakulta, katedra, předmět, název práce, mail na tým,
řešitelé (jméno, příjmení, studijní čísla, ne maily).
- Velmi stručný popis zadání - stačí několik řádků textu. Neopisujte zadání z
webu, je to zbytečné.
- Uživatelský manuál
- Do jedné maximálně dvou stran textu.
- Pište pouze podstatné věci. Že
ls
vypisuje obsah adresáře, je známo
ze zadání.
- Několik příkladů jak to všechno použít (příkazy, roury, přesměrování, ...).
- Pokud je potřeba jméno a heslo, uveďte je zde. V ideálním případě žádné
potřeba nebude, protože je to zbytečné.
- Podrobněji popište pouze nestandardní věci (opět funkce
ls
je
známá).
- Programátorský manuál
- Od jedné do několika stran textu. Není důležitá kvantita, ale abyste popsali
všechno co je potřeba popsat.
- Nepopisujte jednotlivé třídy nebo soubory, ale spíš logické celky, a jak to celé
spolupracuje.
- Jeden obrázek vám ušetří hodně nudného textu.
- Popište vaši navrženou gramatiku.
- Podrobněji popisujte pouze nestandardní věci nebo vaše originální řešení.
- Závěr
- Od jedné do dvou stran textu.
- Nejdůležitější část dokumentace.
- Popište co jste nesplnili ze zadání a proč.
- Popište všechna rozšíření oproti zadání, abyste za to mohli případně dostat
body navíc. Co nebude popsáno, jakoby nebylo.
- Čím přispěli jednotliví členové týmu (kdo dělal jakou část aplikace).
- Silné a slabé stránky vaší realizace. Co by šlo ve vašem programu ještě
vylepšit.
- Zhodnocení co vám semestrální práce dala a čím přispěla ve vašem vzdělání.
Pokud ničím, tak to napište a nevymýšlejte si pohádky.
- Váš názor na zadání. Návrhy co a jak zlepšit. Zde můžete tvrdě, ale slušně
kritizovat. Vítané jsou hlavně návrhy jak něco zlepšit.
- Není důležitá kvantita ale kvalita. Dobrá dokumentace i s titulní stranou může
mít "jenom" 5 stran textu.
- Nedávejte jako přílohu výpis zdrojáků, automaticky generované popisy a
dokumentace.
Adresářová struktura
- src - zdrojové soubory
- doc - dokumentace
- build - adresář pro překlad. Tento adresář bude vytvářet pouze kompilovací
skript. Překlad do adresáře src je považován za hrubou chybu.
- skript_pro_preklad - kompilovací skript.
- readme.txt - pokud chcete zdůraznit něco opravdu důležitého (nepovinné).
Odevzdání