Skúška 13. 5. 2010

Seznámení se základními principy operačního systému UNIX, převážně z uživatelského hlediska. Absolvent kurzu by měl být schopen napsat netriviální program v shellu.
Návštěvník

Skúška 13. 5. 2010

Příspěvek od Návštěvník »

Zdravim,

napise niekto zadanie, ktore bolo na skuske?

Dakujem
babca
Matfyz(ák|ačka) level I
Příspěvky: 9
Registrován: 9. 2. 2010 14:33
Typ studia: Informatika Bc.

Re: Skúška 13. 5. 2010

Příspěvek od babca »

Taky se priklanim k otazce :), jenom pro informaci, a jak to probihalo? Chtel bych pristi tyden, tak abych vedel na co se pripravit :)
dekuji :)
Uživatelský avatar
DocX
Matfyz(ák|ačka) level I
Příspěvky: 6
Registrován: 1. 2. 2010 18:52
Typ studia: Informatika Bc.
Bydliště: A611

Re: Skúška 13. 5. 2010

Příspěvek od DocX »

Ahoj,

bylo nás na této zkoušce jen 4, prošli 2..

Příklad se jmenoval nějak na h a končil "log", to není podstatné.. O co šlo:
Představte si, že programujete apř. nějakou serverovou aplikaci nebo podobně, která zaznamenává logy o své činosti. Ve zdrojích tedy používáte nějakou globální funkci "log", která přebírá stringový parametr se zprávou. Zpráva je ve tvaru "XXXX-NNN-S Text", kde XXXX-NNN je nějaké číslo a S je "severity". Navíc, protože nechcete nechat uživatele ve štychu, píšete si dokumentaci k těmto zprávám, ve které je nějaký podrobnější popis. Tato dokumentaci máte v souborech pojmenovaných podle XXXX-NNN, ve kterém je vždy seznam severit, zkraceny text, který se tiskne do logu a nějaký další popis.
Úkolem bylo vytvořit skript, který prohledá zdrojové soubory (v C), najde v nich logované zprávy (tj to číslo a text) a zkontroluje zda pro tyto zprávy existuje odpovídající dokumentační soubor a případně v něm konkrétní severita, zda odpovídá logovaný text a zda se v jednom zdrojáku nevyskytuje stejné číslo zprávy vícekrát s různým textem. Výsledek (report) měl zapsat do daného adresáře do souborů pojmenovaného podle prefixů XXXX.

Formát souborů XXXX-NNN:

Kód: Vybrat vše

ids:<tab>XXXX-NNN-S1 XXXX-NNN-S2 ...
text:<tab>Logovaci text, ktery musi odpovidat ve volani log()
desc:<tab>....
Formát reportu (soubor XXXX):

Kód: Vybrat vše

XXXX-NNN-S<tab>STAV<tab>soubor_zdrojáku
....
kde STAV mohlo být
OK .. volání logu se shoduje s dokumentaci,
MISS .. dokumentaci chybý (není vůbec nebo není v seznamu severit),
EXTRA .. existuje dokumentace, ale dana hlaska neni nikde pouzita (na to pozor, není tedy třeba jen vypisovat to co ve zdrojich najdete, ale i co tam nenajdete),
DUPL .. ve zdrojaku je vice stejnych cisel s jinymi texty a
ERR .. nejaka jina chyba (mezi DUPL a ERR neni tak silna hranice, dulezite je aby se vedelo ze je neco spatne a kde)

"Formát" zdrojáků:
protože se používají makra a podobné fíčury, bylo potřeba zdrojáky prohnat nejprve preprocessorem (cc -E tušim). Tudíž nebylo potřeba se zabývat komenty, ale volání logu mohlo vypadat v nejhorším případě takto:

Kód: Vybrat vše

    log  (   "...\\..." "...\".." (nový řádek)
" ......" , dalsi parametry ... );
Kde první parametr je podle C spojení všech stringů dohromady
Mohli jsme se spolehnout na to, že volání logu začíná na vlastním řádku.

Skript měl umět následující syntaxy:

Kód: Vybrat vše

hlog XXX[X] [soubor|adresar [...]]
kde
XXX[X] je prefix logu, které se měli hledat. Tedy bud vsechny zacinajici XXX nebo presne XXXX (potom vytvořil pro každý XXXX svůj report soubor)
soubor .. cesta k souboru ktery prohledat
adresar .. cesta k adresari, ve kterem prohledat vsechny *.c soubory
bez zadani cesty pouzit jako aktualni adresar

Snad je to tak nejak vsechno ;)
Odpovědět

Zpět na „SWI095 Úvod do UNIXu“