zkouška 10.6.

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.
Uživatelský avatar
Hans
Matfyz(ák|ačka) level I
Příspěvky: 24
Registrován: 20. 12. 2007 20:07
Typ studia: Informatika Bc.
Bydliště: Jižák
Kontaktovat uživatele:

zkouška 10.6.

Příspěvek od Hans »

Tak dneska Forst přišel s tím, že máme tu čest vyzkoušet nový příklad. Vycházel z příjladu, který jednou tak nějak popisoval na přednášce a nadhodil, že by to bylo dobré ke zkoušce. Já osobně bych to nazval Forstův DVD rekordér, ale Forst to pojmenoval Kissmi (prej podle značky rekordéru) :-) Jde o to, že Forst má DVD rekordér, kterej umí komunikovat po síti (to jako fakt to nekecám). Na ten rekordér se dá připojit přes ftp a kopírovat si nahrané pořady, ale to není důležité. Jde hlavně o to, že ten rekordér se umí přes http připojit na server a synchronizovat s ním pořady, které má nahrát. Úkolem bylo napsat skript Kissmi, který s parametrem record umožňuje plánování pořadů a uložení do databáze na serveru. Databáze sme si mohli reprezontovat jak kdo chtěl, ale všichni zvolili jeden soubor, co řádka to záznam. Každý záznam musel obsahovat datum, časOd, časDo, kanál, název, stav naplánování, nějaké ID (každý si mohl vymyslet vlastní způsob, jak každému záznamu přiřadit unikátní ID). Já jsem si navíc pamatoval i časOd a časDo v minutách od začátku dne (kvůli porovnávání a aby se to nemuselo pořád přepočítávat).

S parametrem server zajistil skript synchronizaci s přehrávačem. K dispozici jsme měli program kissmi tvprog [datum] [kanál], který vypsal tvprogram pro daný kanál na daný den. Výstup vypadal takhle:

18:00 ulice
19:00 zprávy

Navíc obsahovali první pořad z následujícího dne (abychom věděli, kdy končí poslední pořad předcházejícího dne). Kissmi tvprog se používal v jedné variantě plánování pořadů.

Record
4 použití recordu
1. bez paramterů vypíše seznam naplánovaných pořadů
2. parametry: datum časOd časDo kanál název - naplánuje daný pořad (rozuměj přidá záznam do databáze - zároveň se kontroluje platnost - pořad se nesmí překrývat s žádným už uloženým - rekordé dokáže nahrávat jen jeden pořad najednou)
3. [+min] pattern - pro program v následujících 7 dnech (tady se používá ono kissmi tvprog) vyhledá všechny pořady, které mají v názvu pattern a zeptá se pro každý jestli ho chceme naplánovat. Volitelný parametr +min znamená, kolik minut navíc se má přidat k časDo (jde o to, že jistá stanice ráda přetahuje kvůli reklamám)
4. -x datum časOd najde záznam a smaže ho (nelze smazat z databáze hned - na rekordéru už může být uloženo, že se bude nahrávat, ale musí se pouze nastavit příznak, že se bude mazat - smaže se při příští synchronizaci s rekordérem)

Server
nemá žádné parametry, pouze na standardní vstup dostane informaci z DVD přehrávače (to jak tu informaci dostaneme nás nemusí zajímat, to zajistí systém, který sám zavolá kissmi server a pošle mu na vstup požadavek z rekordéru. Rekordér se synchronizuje se serverem každých 15 min. - to není důležité)
Prvně pošle rekordér požadavek na synchronizaci. Mi máme poslat zpět takovýto výstup:
ID,UTCOd,UTCDo,nazev,kanal,ID
(možná to bylo jinak přeházené) - tohle je pro každý záznam, který je uložený v databázi, ale ne v rekordéru (to si pamatujeme v databázi v poli stav)
ID
- smaže na rekordéru záznam s ID
Pak si to rekordér nějak pochroustá a pochvíli znova zavolá kissmi server, ale tentokrát mu vrací odpověď, jak to dopadlo, když je vše OK, tak si můžeme v databázi označit stavy všech záznamů na OK, že byly úspěšně provedeny. Když nastali nějaké chyby, tak rekordér posílá seznam ID, u kterých došlo k chybě a číslo chyby. Tady nevím, co se mělo dělat s těma chybama, jestli zkusit znova odeslat nebo já nevím.

Asi se to z toho těžko chápe, ale Forst to vysvětlil dokonale, ale výsledky už tak dokonalé nebyly. Na konec říkal, že v databázi jsme si měli pamatovat úplně všecko, co jsme kdy používali, aby se to nemuselo pořád přepočítávat. Taky povídal, že on to řešil v awk, ale mi jsme skoro všichni použili shell. Pak vytýkal nějaké chyby jako třeba načítání ze souboru a zároveň načítání ze vstupu (interakce s uživatelem - slide +-87). Ostatní už jsem zapomněl. Bylo nás 19, z toho byly 3*1,3*2,4*3 (+-jeden u každého), zbytek neudělal. Nikdo nebyl na ústním.


edit: fuj to sem se rozepsal :-)
Marex
Matfyz(ák|ačka) level I
Příspěvky: 5
Registrován: 7. 6. 2008 13:59
Typ studia: Informatika Bc.
Kontaktovat uživatele:

Zkouska 10.6.

Příspěvek od Marex »

Meli jsme tu cest otestovat nove zadani - KISSMI aneb Forstovo Domaci DVD
Bylo to zadani na praci s databazi - meli jsme Forstovi nacasovat DVD aby mu nahravalo ruzne programy.
Databaze obsahovala aspon "datum" "cas-od" "cas-do" "kanal" "nazev" "jednoznacne ID" a pak libovolne co jsme chteli.
Forst ma doma levne DVD ktere komunikuje se serverem (ktery mu ofejkoval, takze komunikuje misto toho s Forstem)

Zadani melo dve casti:
1) Kissmi server:
# kecy
startoval ho inetd vzdy pri prichozich datech na portu 80
vzdy se protahly prichozi data skriptem a skript neco udelal
data byly na stdinu, posilaly se na stdout (tohle obhospodaruje inetd)
# zadani
Na vstupu dostanete data tri typu:
a) GET /tv/program.php
b) GET /tv/error.php?ProgramID=ID:error,ID:error (tech ID:error je hodne, oddelene carkama)
c) GET /tv/bundle.php

Zpracovani:
a) odpoved ve formatu
-pridani programu do DVD
ID,od(v UTC),do(v UTC),kanal,nazev,ID

-smazani programu z DVD
ID


takze v db si udrzujem neco jako pending delete a ready to send.

b) do databaze oznacime ty ID, ktere jsou za rovnitkem nejakou znackou - treba E - at pak vime, ze se je nepodarilo zpracovat

c) vse OK, oznacime v databazi, co bylo vsechno odeslane na DVD

# kecy - to byla ta lehci cast ;-)

2) Kissmi database_creator
# kecy
tak tohle vytvari prave tu databazi ze ktere pak doluje Kissmi server ty data
# zadani
4 moznosti vstupu:
a) bez parametru
vyblit komplet celou databazi (samozrejme s nejakym formatovanim)
b) nazev datum cas-od cas-do program
prihodit tohle do databaze (tj. oznacit ready to send pro DVD)
c) [+min] pattern
tak tady je k dispozici externi tool "kissmi tvprog [program] [datum]", ktery kdyz zavolame tak nam vyhodi na stdout TV program na dany den ve formatu:
HH:MM[mezera]nazev
ukol je dostat z programu na nasledujicich 7 dni pro vsechny kanaly vsechny programy co matchuji pattern a pro kazdy se zeptat uzivatele, jestli ho pridat do databaze.
d) -x datum cas
smazat z databaze zaznam

To DVD si cas od casu checkuje tu databazi aby vedelo, co ma nahravat.

Tak to je snad vse, kdyz tak doplnim. Bylo to lehke, hint - prace s "date".
Byly tri jednicky (mimo jine ja :D) a dal uz nic nevim :(
Marex
Matfyz(ák|ačka) level I
Příspěvky: 5
Registrován: 7. 6. 2008 13:59
Typ studia: Informatika Bc.
Kontaktovat uživatele:

Re: zkouška 10.6.

Příspěvek od Marex »

no tak vedle je druha verze :D
Uživatelský avatar
Hans
Matfyz(ák|ačka) level I
Příspěvky: 24
Registrován: 20. 12. 2007 20:07
Typ studia: Informatika Bc.
Bydliště: Jižák
Kontaktovat uživatele:

Re: zkouška 10.6.

Příspěvek od Hans »

hehe no tak je to krapet dlouhy, tak sme se minuly. ja sem to smolil taky tak 20 minut
Uživatelský avatar
hippies
Admin(ka) level I
Příspěvky: 990
Registrován: 29. 9. 2004 12:46
Typ studia: Informatika Mgr.
Bydliště: Mladá Boleslav
Kontaktovat uživatele:

Re: zkouška 10.6.

Příspěvek od hippies »

Merged..
Chjo, dovede te si představit svět, kde by byla každá harmonická diferenciální forma (jistého typu) nesingulární projektivní algebraické variety racionální kombinací kohomologických tříd algebraických cyklů..
Odpovědět

Zpět na „SWI095 Úvod do UNIXu“