[zk] 2.6.

Stefan

[zk] 2.6.

Příspěvek od Stefan »

Dnesni ulohou bylo vypsat strom MIME e-mailu. Popsal nam strukturu, podle vyskytu ruznych retezcu se ma poznat zda jde o koren podstromu nebo list.
MIME mail se pozna podle MIME-Version blablabla v prvni hlavicce. Hlavicka je oddelena od tela prazdnym radkem a od dalsi hlavicky retezcem
--NejakaNahodnaZmetZnakuDefinovanaVHlavicce
a ty dve pomlcky jsou-li i za tim retezcem, jde o konec multipart casti (skok o uroven zpet).
Meli jsme vypsat strukturu timto zpusobem (priklad):

1 multipart/mixed
1.1 text/plain
1.2 attachment/jpeg obrazek.jpg
2 text/html
3 multipart/...
3.1 typ/subtyp JmenoSouboruPokudJeDefinovanoVHlavicce

tj. vypsat o jaky typ jde a obsahuje-li i soubor, napsat jeho nazev.
Druhou casti ulohy bylo vyzvat uzivatele k zadani podstromu, ktere chce nejak zpracovat (ulozit obsah), ve tvaru: 1.2-4,3,8 (vyjmenovany strom bez podstromu samozrejme zahrnuje cely podstrom, 1.2-4 znamena 1.2,1.3,1.4)
Co se s tim telem melo delat: u multipart nic (nema telo, telo multipart casti jsou hlavicky a tela podstromu),
u ostatnich podle nastaveni encoding v hlavicce: Base64 pusti 64decode soubor
Quoted-Printable pusti qpdecode soubor (pozn. takovy program si Forst vymyslel a neexistuje, ledaze byste ho do te pisemky naprogramovali), u jineho kodovani se na to kasle a telo se ulozi do souboru, ktery ma definovany ve sve hlavicce (tzn. pokud definovany neni, nic se neuklada).
Navod: behem prvniho pruchodu si zapisovat telo do souboru stejneho nazvu jako je uroven, rozparsovat uzivateluv vstup a nakonec poustet skript na prochazeni, ktery zavola spravne dekodery se spravnym nazvem souboru. Prochazeci skript vola sam sebe rekurzivne a jako parametr si predava aktualni uroven a taky zda ma zapisovat tela nebo rozbalovat pozadovane soubory.

Zadani pomerne slozite, vypracovani dlouhe, ale zato z tech, co to nevzdali po pisemce, vyhodil jen jednoho a napsal asi tri jednicky a ctyri dvojky. Mimochodem pry jsme byli prvni, na kom zkousel novou ulohu.
Jen dva si pozval na ustni (do te doby dal asi 2 jednicky a 3 dvojky), vysledek ustnich: jedna dvojka a jedna jednicka. Kdo prisel: 11 lidi, jeden problem se zapoctem (musel odejit, bez ztraty terminu), 2 to vzdali pri odevzdavani, takze na ustni nas slo 8, 7 uspelo s vyse uvedenymi vysledky.
Uživatelský avatar
MyS
Donátor
Donátor
Příspěvky: 178
Registrován: 22. 9. 2004 00:13
Typ studia: Informatika Bc.
Bydliště: The city of Dobříš
Kontaktovat uživatele:

Příspěvek od MyS »

Tak tak:-). Diky tomu, ze to bylo experimentalni zadani (ac jsem to tedy necekal, na terminu nas bylo 10, tedy "malo") + Forst mel dobrou naladu, a tedy vyhodil primo jen 1 clka (tedy zadani "uspelo"), tak se pristi rok studenti muzou tesit na lehce obtiznejsi variantu:-).
Jinak jeste jen upresnim par technickych detailu, pro ty, co by si to treba chteli zkusit:-):
- email je vlastne tvoren z bloku, ktere maji stromovou strukturu: kazdy blok ma vzdy hlavicku a telo (od sebe oddeleno prazdnou radkou).
- hlavicka uzlu-nelistu obsahuje:
Content-Type: multipart/neco; boundary="humuuus" (mozna varianta i bez uvozovek, pripadne dokonce boundary na novem radku)
- v hlavicce listu je:
Content-Type: neco_ne_multipart/neco
Content-Disposition: neco; filename="jmeno" (opet vsechny varianty)
Content-Transfer-Encoding=base64 NEBO quoted-printable NEBO neco_jinyho

struktura mailu tedy vypada takto:

Kód: Vybrat vše

.....
Content-Type: multipart/mixed; boundary="1234" 
....

neco
--1234
....
Content-Type: image/jpeg
Content-Disposition: neco
   filename=image
Content-Transfer-Encoding=base64
....

jfhsdjkfhsdjkfhdfd
dfsdfsdfsdfjkdfhkj
sdfsdfsdfsdfhdsjk
--1234
.....
Content-Type: multipart/mixed; boundary="abcd" 
....

--abcd
 neco:-)
--abcd
 neco jinyho:-)
--abcd--
--1234
 a zas neco:-)
--1234--
Mno, a jeste dva tipy, obecne o unixu:-).
a) promenne maji kapacitu v radech kB, tj. prosedet si do promenny obsah tela listu (muze to byt treba 10MB bmp) neni dobry napad. Vsechno tohle se musi udrzovat v pomocnych souborech
b) rekurze je zde skvela, ale pozor: funkce v bashi nemaji lokalni promenny, ale vsechny promenny jsou globalni!! tj. pokud funkce vola sama sebe rekurzi a pouziva nejake promenne mimo $1...$n, tak prepisuje promenny funkce o uroven nize (proste neexistuje zasobnik,mno).
Vcelku funkcni a dobre reseni spociva v tom, ze misto funkce si udelam extra skript (v podstate naprosta vetsina kodu zustane zachovana) a pak misto funkce volam sh pomocny.sh parametry; vse potrebne se predava parametry. Takhle ma kazdy subshell hezky sve promenne.

...jo a jeste jeden (mozna spatny:-)) postrech...spis se vyplati napsat program jako celek a dobre nakodit nosne casti. Detaily a mini-problemky bud forst vezme jako "2improve,ale vi, vo co go", nebo se to da ukecat u ustni (kde jsem tedy nebyl:-))
We don't need no education!
Angel

priklad

Příspěvek od Angel »

Patrim ke stastlivcum, co meli za dve...

K uloze si myslim to, ze presne takovydle ulohy by mel davat porad, nebylo to az nejak moc dlouho, stacilo si to jen poradne promyslet, jak to udelat a nemuseli ste se tam vetsinou patlat az moc s nejakejma pitomejma malickostma...

Btw. taky bylo dobry, ze sme asi hodinu probirali dotazy k uloze, cos byl takovy pekny cas na promysleni cele ulohy.
Uloha me byla jasna hned odzacatku, myslim ze vsem, ale prece jenom se kazdej ptal uplne snad na kazdickej milimetricek toho zadani, urcite to doporucuji aji ostatnim skupinam, da se tak vydelat az hodina casu pro vas, kdyz kazdej ze skupiny da aspon tak tri dotazy :-)
Uživatelský avatar
MyS
Donátor
Donátor
Příspěvky: 178
Registrován: 22. 9. 2004 00:13
Typ studia: Informatika Bc.
Bydliště: The city of Dobříš
Kontaktovat uživatele:

Příspěvek od MyS »

Ja tez dve... mno, dobry bylo, ze se uloha nestepila na deset pripadu...ale to hodnoceni - ze nevytykal kazdy drobek bylo spis kvuli tomu, ze to daval poprve a slo mu o to, jak se s tim algoritmicky popereme. Hmm, me ta struktura zpocatku teda jasna moc nebyla, ale ta tak ctvrthodinka ke konci byla celkem uz premejsleci:-)
We don't need no education!
Odpovědět

Zpět na „2004“