Na tomto míst¥ bude ociální zadání va²í práce •
Toto zadání je podepsané d¥kanem a vedoucím katedry,
•
musíte si ho vyzvednout na studiijním odd¥lení Katedry po£íta£· na Karlov¥ nám¥stí,
•
v jedné odevzdané práci bude originál tohoto zadání (originál z·stává po obhajob¥ na kated°e),
•
ve druhé bude na stejném míst¥ neov¥°ená kopie tohoto dokumentu (tato se vám vrátí po obhajob¥).
i
ii
eské vysoké u£ení technické v Praze Fakulta elektrotechnická Katedra po£íta£·
Bakalá°ská práce
Simulátor virtuální po£íta£ové sít¥ Linux
Tomá² Pit°inec
Vedoucí práce:
Ing. Pavel Kubalík, Ph.D.
Studijní program: Softwarové technologie a management, Bakalá°ský
Obor: Softwarové inºenýrství
15. kv¥tna 2010
iv
v
Pod¥kování Zde m·ºete napsat své pod¥kování, pokud chcete a máte komu d¥kovat.
vi
vii
Prohlá²ení Prohla²uji, ºe jsem práci vypracoval samostatn¥ a pouºil jsem pouze podklady uvedené v p°iloºeném seznamu. Nemám závaºný d·vod proti uºití tohoto ²kolního díla ve smyslu 60 Zákona £. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o zm¥n¥ n¥kterých zákon· (autorský zákon).
V erveném Kostelci dne 25. 5. 2010
.............................................................
viii
Abstract Translation of Czech abstract into English.
Abstrakt Abstrakt práce by m¥l velmi stru£n¥ vystihovat její podstatu. Tedy £ím se práce zabývá a co je jejím výsledkem/p°ínosem. O£ekávají se cca 1 2 odstavce, maximáln¥ p·l stránky.
ix
x
Obsah 1 Úvod
1
1.1
Cíle práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
Rozd¥lení práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.3
Struktura práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2 Existující °e²ení
3
3 Analysa a návrh aplikace 3.1
3.2
3.3
3.4
Poºadavky na aplikaci
5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
3.1.1
Funk£ní poºadavky . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
3.1.2
Nefunk£ní poºadavky . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
Analysa poºadavk· . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
3.2.1
P°ipojení pomocí telnetu
6
3.2.2
Podobnost simulátoru se skute£ným linuxem
. . . . . . . . . . . . . . . . . . . . . . . . .
Programovací jazyk a uºivatelské rozhraní
. . . . . . . . . . . . . .
6
. . . . . . . . . . . . . . . . . . . .
7
3.3.1
Programovací jazyk . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.3.2
Uºivatelské rozhraní
Struktura aplikace 3.4.1
3.4.2
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
Virtuální sí´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.4.1.1
Sí´ové prvky
7
3.4.1.2
Infrastruktura sít¥ . . . . . . . . . . . . . . . . . . . . . . . .
8
3.4.1.3
Posílání paket· . . . . . . . . . . . . . . . . . . . . . . . . . .
8
Komunika£ní vrstva
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3.5
Spolupráce na aplikaci
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3.6
Postup implementace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
4 Popis problému, specikace cíle
11
5 Analýza a návrh °e²ení
13
6 Realizace
15
7 Testování
17
8 Záv¥r
19 xi
xii
OBSAH
A Testování zapln¥ní stránky a odsazení odstavc·
23
B Pokyny a návody k formátování textu práce
27
B.1
Vkládání obrázk· . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.2
Kreslení obrázk·
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
B.3
Tabulky
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
B.4
Odkazy v textu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
B.4.1
Odkazy na literaturu . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
B.4.2
Odkazy na obrázky, tabulky a kapitoly . . . . . . . . . . . . . . . . . .
31
B.5
Rovnice, centrovaná, £íslovaná matematika . . . . . . . . . . . . . . . . . . . .
31
B.6
Kódy programu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
B.7
Dal²í poznámky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
B.7.1
32
eské uvozovky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
C Seznam pouºitých zkratek
33
D UML diagramy
35
E Instala£ní a uºivatelská p°íru£ka
37
F Obsah p°iloºeného CD
39
Seznam obrázk· B.1
Popiska obrázku
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
F.1
Seznam p°iloºeného CD p°íklad
. . . . . . . . . . . . . . . . . . . . . . . .
xiii
28 39
xiv
SEZNAM OBRÁZK
Seznam tabulek B.1
Ukázka tabulky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
xv
28
xvi
SEZNAM TABULEK
Kapitola 1
Úvod Jednou z laboratorních úloh p°edm¥tu Po£íta£ové sít¥ (Y36PSI) na FELu je postavení sít¥ mezi n¥kolika linuxovými a ciscovými po£íta£i. Studenti, kte°í tento úkol plní, nemají £asto s takovou £inností ºádnou osobní zku²enost, a tak b¥hem úlohy °e²í r·zné banální problémy, kterým by se mohli vyhnout, kdyby m¥li moºnost zkusit si nastavit podobou sí´ jiº p°ed samotnou laboratorní úlohou. Mohl by se jim hodit simulátor, který by jednodu²e spustili na svém po£íta£i a na kterém by si mohli nastavování sí´ových parametr· na linuxu a ciscu zkusit. Práv¥ návrhem a implementací takového sí´ového simulátoru po£íta£· s OS Linux se zabývá tato bakalá°ská práce.
1.1
Cíle práce
Cílem práce je v programovacím jazyce Java SE navrhnout a implementovat aplikaci, která umoºní vytvo°ení virtuální po£íta£ové sít¥, pro pot°eby p°edm¥tu Y36PSI. Z pohledu uºivatele by aplikace m¥la vypadat stejn¥ jako reálná sí´. Uºivatel spustí aplikaci v konsoli a pak se pomocí telnetu p°ipojí k jejím jednotlivým virtuálním po£íta£·m, podobn¥ jako protokolem ssh k po£íta£·m s OS Linux. Aplikace bude podporovat p°íkazy pot°ebné ke konguraci sí´ových rozhraní (ifcong, ip address), sm¥rování (route, ip route) a p°ekladu adres (iptables -t nat). Pro ov¥°ení správnosti kongurace sít¥ budou implementovány p°íkazy ping a traceroute. Nastavenou konguraci sít¥ bude moºné uloºit do souboru a zase ji ze souboru na£íst. Uºivatel bude mít moºnost vytvá°et libovolné sít¥ s libovolným po£tem po£íta£· typu linux nebo cisco tak, ºe infrastrukturu sít¥ napí²e do kongura£ního souboru a pak ji z n¥ho na£te.
1.2
Rozd¥lení práce
Protoºe kompletní sí´ový simulátor pro po£íta£e s Cisco IOS i OS Linux by p°esahoval rozsah jedné bakalá°ské práce, byla práce na aplikaci rozd¥lena na t°i £ásti:
•
Jádro aplikace Jedná se p°edev²ím o datové struktury virtuálního po£íta£e, komunikaci s uºivatelem
1
2
KAPITOLA 1.
ÚVOD
po síti a na£ítání a ukladání soubor·. Na této £ásti jsem spolupracoval se Stanislavem ehákem.
•
Linuxová £ást V této £ásti je pot°eba napsat parsery linuxových p°íkaz· a zjistit, jak se chovají po£íta£e s linuxem v sí´ové komunikaci a toto chování implementovat.
•
Ciscová £ást Touto £ástí se tato práce nezabývá, zabývá se jí bakalá°ská práce Simulátor virtuální po£íta£ové sít¥ Cisco Stanislava eháka.
1.3
Struktura práce
Tady bude popis struktry týhle práce, jako toho textu.
Kapitola 2
Existující °e²ení Tady bude re²er²e, aº ji ud¥lám.
3
4
KAPITOLA 2.
EXISTUJÍCÍ EENÍ
Kapitola 3
Analysa a návrh aplikace V této kapitole se zabývá analysou a návrhem aplikace jako celku. Shrnuji a analysuji poºadavky, diskutuji zvolený jazyk a uºivatelské rozhraní, popisuji architekturu aplikace, spolupráci s kolegou, který d¥lal druhou £ást aplikace, a postup implementace.
3.1
Poºadavky na aplikaci
Nejprve shrnu v²echny poºadavky na mojí aplikaci.
3.1.1
Funk£ní poºadavky
1. Vytvo°ení po£íta£ové sít¥ zaloºené na po£íta£ích OS Linux.
2. Aplikace umoº¬uje konguraci rozhraní pomocí p°íkaz· ifcong a ip addr.
3. Aplikace obsahuje funk£ní sm¥rování a umoº¬uje jeho nastavování pomocí p°íkaz· route a ip route.
4. Aplikace implementuje p°eklad adres
5. Aplikace podporuje ukládání a na£ítání do/ze souboru.
6. Pro ov¥°ení správnosti jsou implementovány p°íkazy ping a traceroute.
7. K jednotlivým po£íta£·m aplikace je moºné se p°ipojit pomocí telnetu.
8. Pomocí telnetu bude moºno se p°ipojit zárove¬ k více virtuálním po£íta£·m.
9. Pomocí telnetu bude moºno p°ipojit se k jednomu po£íta£i vícekrát najednou.
5
6
KAPITOLA 3.
3.1.2
ANALYSA A NÁVRH APLIKACE
Nefunk£ní poºadavky
1. Aplikace bude multiplatformní - alespo¬ pro opera£ní systémy Windows a Linux 2. Aplikace musí být spustitelná na b¥ºném
1 studentském po£íta£i.
3. Aplikace by m¥la být co nejv¥rn¥j²í kopií reálného po£íta£e s Linuxem.
3.2 3.2.1
Analysa poºadavk· P°ipojení pomocí telnetu
Jedním z funk£ních poºadavk· mé aplikace je moºnost p°ipojit se k jednotlivým virtuálním po£íta£·m pomocí protokolu telnet. Tento poºadavek vypadá jednodu²e, pokud pod pojmem Telnet chápeme jednoduchý protokol na p°enos textových dat. Takový protokol ov²em neumoº¬uje dopl¬ování p°íkaz· a jejich historii, coº je pro práci s po£íta£em, by´ virtuálním,
2
obrovské omezení. Oproti tomu, implementovat telnet protokol, jako NVT , kde se posílá a potvrzuje kaºdý napsaný znak, by p°ekra£ovalo rozsah této bakalá°ské práce. Proto jsem se rozhodl implementovat jen první moºnost a na stran¥ klienta °e²it dopl¬ování p°íkaz· a jejich historii pomocí programu rlwrap, který funguje pod linuxem nebo p°es cygwin i pod windows. Spou²t¥ní programu p°es cygwin ve windows je sice velkou nevýhodou, ale nem¥l jsem jinou moºnost. I tak ov²em základní poºadavek, ºe s aplikací bude moºno komunikovat pomocí telnetu, z·stává zachován, uºivatel ov²em p°ijde o komfort, který mu nabízí moºnost dopl¬ování, editace a historie p°íkaz·.
3.2.2
Podobnost simulátoru se skute£ným linuxem
Aby byl simulátor vyuºitelný pro výukové ú£ely, musí být dostate£n¥ podobný skute£nému linuxu, aby uºivatel mohl v¥°it, ºe to, co funguje v simulátoru, bude fungovat i na skute£ném linuxu a naopak. K tomu je ale pot°eba implementovat jen ty p°íkazy, kterými se nastavují sí´ové parametry, a jen v takovém rozsahu, jaký je pro tyto výukové ú£ely pot°eba. Implementoval jsem tedy p°íkazy ifcong, route, ping a traceroute, z p°íkazu ip jsem implementoval jeho podp°íkazy addr a route. Pro pot°eby nastavení p°ekladu adres jsem implementoval malou £ást p°íkazu iptables. Aby uºivatel mohl nastavovat n¥které hodnoty soubor· v adresá°i /proc, implementoval jsem ve velmi omezené mí°e i p°íkazy cat a echo, ov²em jen pro tyto soubory. Pro ukon£ení spojení je implementován p°íkaz exit. Pro pot°eby simulátoru ale nebylo pot°eba implementovat kompletní p°íkazy ifcong nebo ip, ale jen tu jejich £ást, kterou se nastavují parametry rozhraní, jako IP, maska a dal²í. O ostatních parametrech pak vet²inou simulátor vypí²e, ºe ve skute£nosti sice existují, ale simulátorem zatím nejsou podporované. 1
Slovem b¥ºné se myslí v podstat¥ jakýkoliv po£íta£, na kterém je moºné nainstalovat prost°edí Javy -
Java Runtime Environment 2
NVT Network Virtual Terminal, £esky: Sí´ový virtuální terminál; poskytuje standardní rozhraní p°íka-
zové °ádky
3.3.
7
PROGRAMOVACÍ JAZYK A UIVATELSKÉ ROZHRANÍ
3.3
Programovací jazyk a uºivatelské rozhraní
3.3.1
Programovací jazyk
Aplikaci jsem se rozhodl programovat v programovacím jazyku Java z n¥kolika d·vod·. Java je programovací jazyk, který nabízí velký programátorský komfort, stabilitu a zárove¬ moºnost vytvo°ené aplikace pouºívat pod r·znými opera£ními systémy, coº je dal²í z nefunk£ních poºadavk·. Tento jazyk navíc disponuje hotovými knihovnami pro práci se sítí v balí£ku java.net. Dal²ím d·vodem je také to, ºe s programováním aplikací v Jav¥ mám zatím asi nejv¥t²í zku²enosti.
3.3.2
Uºivatelské rozhraní
Jak plyne ze zadání, uºivatel se p°ihla²uje k jednotlivým virtuálním po£íta£·m pomocí programu telnet, nemusím tedy vytvá°et ºádného speciálního klienta. S aplikací samotnou nebude uºivatel nijak pracovat, jenom ji spustí se správným kongura£ním souborem a p°ípadn¥ £íslem výchozího portu, dále jiº bude nastavovat pouze jednotlivé virtuální po£íta£e pomocí telnetu. Pro takovou aplikaci je nejlep²ím uºivatelským rozhraním p°íkazová °ádka, vytvá°ení grackého uºivatelského rozhraní by nem¥lo smysl.
3.4
Struktura aplikace
Aplikace se skládá ze dvou vrstev. Komunika£ní vrstva zaji²´uje sí´ovou komunikaci s klientem, tedy odesílání a p°ijímání textových dat. Z velké £ásti byla p°evzata z jiné práce, kterou jsme kdysi d¥lali jako domácí úkol na p°edm¥t Y36PSI. Aplika£ní vrstva je tvo°ena samotnou virtuální sítí. Av²ak tyto vrstvy od sebe nejsou striktn¥ odd¥leny. Nejprve si rozebereme druhou vrstvu.
3.4.1
Virtuální sí´
Virtuální po£íta£ová sí´ poskytuje mojí aplikaci p°edev²ím tyto funkcionality:
•
Moºnost kongurace jednotlivých sí´ových prvk·.
•
Posílání paket· mezi sí´ovými prvky.
Skute£ná po£íta£ová sí´ se skládá ze sí´ových prvk· r·zných druh·. Stejn¥ tak i virtuální sí´ se bude skládat ze sí´ových prvk·, které jsou intern¥ reprezentovány objekty.
3.4.1.1 Sí´ové prvky V laborato°ích p°edm¥tu Y36PSI studenti nastavují pouze PC nebo sm¥rova£e na 3. (sí´ové)
3
4
vrstv¥ ISO/OSI modelu . Sí´ové prvky pracující na 2. vrstv¥ ISO/OSI modelu , switche a bridge se v laborato°ích v·bec neuvaºují. Proto i ve své práci uvaºuji jediný druh sí´ových prvk· - po£íta£e s OS Linux. 3
3. vrstva ISO modelu, tzv. sí´ová vrstva, zaji²´uje spojení mezi jakýmikoliv 2 uzly sít¥.
4
2. vrstva ISO/OSI modelu, tzv. spojová nebo linková vrstva, zaji²´uje spojení mezi dv¥ma sousedními
systémy.
8
KAPITOLA 3.
Virtuální po£íta£
ANALYSA A NÁVRH APLIKACE
Jedinými sí´ovými prvky mojí aplikace jsou po£íta£e s opera£ním sys-
témem Linux, které fungují jako sm¥rova£e na sí´ové vrstv¥ ISO/OSI modelu. Sí´ovou komunikaci skute£ného po£íta£e zaji²´uje modul v jád°e opera£ního systému. Po£íta£ má n¥kolik sí´ových rozhraní, které se skládají z fysické £ásti, kterou je sí´ový adaptér, a z £ásti softarové, kterou je jeho kongurace. Ke kaºdému sí´ovému adaptéru, tzn. ke kaºdému rozhraní, m·ºe být p°ipojen maximáln¥ jeden sí´ový kabel. Virtuální po£íta£ i sí´ové rozhraní mají svou vlastní t°ídu.
Routovací a natovací tabulka
Jádro opera£ního systému sm¥ruje pakety podle tzv.
routovací tabulky, coº je datová struktura, která obsahuje cílové adresy a akce, které se mají vykonat s paketem poslaným na danou cílovou adresu. Tuto datovou strukturu musí obsahovat i moje virtuální sí´, proto jsem pro ni ud¥lal vlastní t°ídu. Její analýzou a implementací se budu zabývat v implementa£ní £ásti. Aby virtuální po£íta£e mohly p°ekládat adresy p°es n¥ procházejících paket·, pot°ebují, stejn¥ jako skute£né po£íta£e, dal²í datovou strukturu, natovací tabulku. Touto datovou strukturou se ale tato práce nezabývá, vytvo°il ji m·j kolega Stanislav ehák.
P°íkazy
Uºivatel musí mít moºnost virtuální po£íta£ nakongurovat, kv·li tomu p°ece
aplikaci programuji. Ke konguraci mu mají slouºit standartní p°íkazy, které by pouºil p°i konguraci skute£ného po£íta£e. K virtuálnímu po£íta£i se uºivatel p°ipojuje telnetem, o toto p°ipojení se stará komunika£ní vrstva. Na vrstv¥ virtuální sít¥ ale probíha parsování a vykonávání t¥chto p°íkaz·. O tom budu psát v dal²í kapitole.
3.4.1.2 Infrastruktura sít¥ Jak bylo napsáno d°íve, jediným sí´ovým prvkem mojí aplikace je po£íta£ s OS Linux. Ke kaºdému rozhraní, m·ºe být p°ipojen maximáln¥ jeden sí´ový kabel, který, protoºe neuvaºuji switche, je zapojen do jiného rozhraní n¥jakého po£íta£e, nebo není zapojen nikam. Infrastruktura sít¥ je proto jednozna£n¥ ur£ena dvojicemi sí´ových rozhraní, která jsou propojena sí´ovým kabelem. Tuto infrastrukturu sít¥ je v kongura£ním souboru dobré odd¥lit od ostatní kongurace, aby ji mohl uºivatel lehce p°e£íst a pochopit, pop°. zm¥nit. Sí´ové rozhraní je jednozna£n¥ identikováno jménem po£íta£e a jménem rozhaní.
3.4.1.3 Posílání paket· Virtuální sí´ musí um¥t posílat virtuální pakety, aby uºivatel pomocí p°íkaz· ping nebo traceroute zjistil, jestli virtuální sí´ správn¥ nakonguroval. Po virtuální síti, representované objekty, se samoz°ejm¥ posílají virtuální pakety, representované objekty t°ídy Paket. Virtuálni paket ponese pot°ebné informace stejn¥ jako skute£ný paket, akorát t¥ch informací pro pot°eby mojí aplikace není tolik. Posílání paket· v mé virtuální síti není prakticky rozd¥leno do OSI-ISO vrstev, IP paket se nebude balit do rámc· linkové vrstvy. Virtuální pakety si mezi sebou budou posílat, p°ijímat a p°eposílat virtuální po£íta£e pomocí speciálních metod k tomu ur£ených. Je nutné,aby p°i stejné konguraci skute£né a virtuální po£íta£ové sít¥
3.5.
SPOLUPRÁCE NA APLIKACI
9
tato sí´ i stejn¥ fungovala. To jest, aby ve virtuální po£íta£ové síti do cíle do²ly práv¥ ty pakety, které p°i stejné konguraci dojdou na síti skute£né. Více se anylýzou a implementací posílání paket· budu zabývat v samostatné kapitole.
3.4.2
Komunika£ní vrstva
Komunika£ní vrstva na²í aplikace zaji²´uje spojení aplikace s klientem. Z tohoto pohledu je aplikace klasickým sí´ovým serverem, který poslouchá na n¥kolika portech, p°ijímá spojení a zpracovává je. Uºivatel po síti konguruje jednotlivé virtuální po£íta£e, proto kaºdý virtuální po£íta£ musí poslouchat na jednom portu. O tuto komunikaci se nestará p°ímo virtuální po£íta£, má k tomu speciální t°ídu, i tak ale t°ída virtuálního po£íta£e zasahuje do obou vrstev programu. Aby aplikace mohla poslouchat na více portech najednou, je nutné vytvo°it více vláken, kaºdý virtuální po£íta£ tedy pob¥ºí v samostatném vláknu. Jak plyne z posledního funk£ního poºadavku, musí jeden virtuální po£íta£ um¥t zpracovat i více spojení najednou, jako i na reálný linuxový po£íta£ je moºné se p°ipojit k n¥kolika jeho terminál·m pomocí protokolu ssh nebo telnet. Proto je nutné, aby vlákno, které poslouchá na portu, pro p°íchozí spojení vytvo°ilo jiné vlákno, které spojení obslouºí, a samo dále poslouchalo na ur£eném portu.
3.5
Spolupráce na aplikaci
Na aplikaci jsem spolupracoval se svým kolegou Stanislavem ehákem, který implementuje její druhou £ást - simulátor Cisca. Spolupráce v²ak p°esahuje jen tuto oblast a zasahuje také do spole£ného jádra aplikace. V této práci chci popisovat p°edev²ím moji £ást výsledného simulátoru, rád bych v²ak upozornil, ºe kdyº zde popisuji implementaci n¥jaké £ásti programu, neznamená, ºe jsem ji celou implementoval sám. U kaºdé t°ídy v kódu je napsáno, kdo je jejím autorem. Pokud jsme na t°íd¥ pracovali oba, je autorství uvedeno u jejích metod. Architektura aplikace je zaloºena na oboustranné dohod¥. Komunika£ní vrstvu jsme z velké £ásti p°ejali z domácího úkolu na p°edm¥t Y36PSI, server Karel, který jsme programovali na podzim roku 2008. Pro pot°eby na²í aplikace jsme potom tuto vrstvu spole£n¥ upravili. J¥ t¥ºké, p°ipsat autorství této vrstvy jednomu nebo druhému z nás, ale vzhledem k tomu, ºe se jedná a sice nutnou, ale málo rozsáhlou £ást aplikace, to dle mého názoru není nutné. Sí´ové rozhraní je stejné pro oba po£íta£e, jeho t°ídu jsme d¥lali spole£n¥. Oba typy po£íta£· mají mnoho spole£ného, ale v n¥£em se li²í. Proto jsme vytvo°ili t°ídu abstraktní po£íta£, jejíº autorem jsem já, a od ní jsme pak d¥dili kaºdý svoji vlastní t°ídu pro virtuální po£íta£. Já jsem autorem v²eho, co souvisí s posíláním paket· a routovací tabulky, kterou v²ak kolega nemohl p°ímo vyuºít. Natovací tabulku programoval kolega, stejn¥ tak i ve²keré ukládání do souboru a na£ítání z n¥j, a t°ídu Main. D·leºitou t°ídu IpAdresa jsme programovali spole£n¥, autorství je uvedeno u jejích jednotlivých metod, stejn¥ tak i abstraktní p°íkaz a abstraktní parser p°íkaz·, kde jsou vy£len¥ny spole£né metody pro parsování a vykonávání p°íkaz·.
10
KAPITOLA 3.
3.6
ANALYSA A NÁVRH APLIKACE
Postup implementace
Samotnou implementaci jsem zahájili komunika£ní vrstvou, následn¥ jsme naprogramovali základní datové struktury, jako t°ídy pro virtuální po£íta£, sí´ové rozhraní, IP adresu ap. Pokra£oval jsem implementací linuxových p°íkaz·. Nejd°íve jsem zpracoval p°íkaz ifcong, abych mohl nastavovat virtuální sí´ová rozhraní. Po n¥m jsem zpracoval p°íkaz route a zárove¬ s ním také routovací tabulku. Po t¥chto dvou základních p°íkazech jsem pracoval na posílání paket· mezi po£íta£i. Kdyº jsem to m¥l hotové, implementoval jsem ostatní p°íkazy jako ping, traceroute, ip, iptables, echo a cat. V implementa£ní £ásti této práce se nepopisuji jednotlivé £ásti programu ve stejném po°adí, jako jsem je implementoval. - OSNOVA KAPITOLY - o co tady jde Poºadavky - vyjmenovat Analysa poºadavk· telnet a rlwrap podobnost se skute£ností - co implementovat Jazyk a uºivatelské rozhraní - celkem jasný Struktura aplikace (£as: minulej) - 2 sloºky: virtuální sí´ a komunikace s uºivatelem virtuální sí´: - je rozumné ji stav¥t stejn¥ jako sí´ skute£nou - sí´ové prvky -> objekty sí´ové prvky- d¥lám jen 3. vrstvu - IP virtuální po£íta£ - linux: skute£né + jejich virtualisace, routovací, natovací tabulka, p°íkazy infrastruktura: skute£ná + virtualisace posílání paket· komunikace - byla p°evzata ze starýho projektu - vlákna Spolupráce na aplikaci - d¥lal jsem ji se Standou - co popisuji - vyjmenování £ástí a kdo na tom pracoval Postup implementace (£as minulej) - jednodu²e popsat, jak jsem postupoval v £ase - struktura práce neodpovídá p·vodnímu postupu
Kapitola 4
Popis problému, specikace cíle •
Popis °e²eného problému, vymezení cíl· DP/BP a poºadavk· na implementovaný systém.
•
Popis struktury DP/BP ve vztahu k vyty£eným cíl·m.
•
Re²er²ní zpracování existujících implementací, pokud jsou známy.
11
12
KAPITOLA 4.
POPIS PROBLÉMU, SPECIFIKACE CÍLE
Kapitola 5
Analýza a návrh °e²ení Analýza a návrh implementace (v£etn¥ diskuse r·zných alternativ a volby implementa£ního prost°edí).
13
14
KAPITOLA 5.
ANALÝZA A NÁVRH EENÍ
Kapitola 6
Realizace Popis implementace/realizace se zam¥°ením na nestandardní £ásti °e²ení.
15
16
KAPITOLA 6.
REALIZACE
Kapitola 7
Testování •
Zp·sob, pr·b¥h a výsledky testování.
•
Srovnání s existujícími °e²eními, pokud jsou známy.
17
18
KAPITOLA 7.
TESTOVÁNÍ
Kapitola 8
Záv¥r •
Zhodnocení spln¥ní cíl· DP/BP a vlastního p°ínosu práce (p°i formulaci je t°eba vzít v potaz zadání práce).
•
Diskuse dal²ího moºného pokra£ování práce.
19
20
KAPITOLA 8.
ZÁV
R
Literatura Short communication papers Framework
[1] HAINDL, M. KMENT, . SLAVíK, P. Virtual Information Systems. In
WSCG'2000
, s. 2227. University of West Bohemia, Pilsen, 2000.
[2] P°isp¥vatelé Wikipedie.
[online]. 2009. [cit. 10. 9. 2009]. Dostupné z:
//cs.wikipedia.org/wiki/Framework>. [3] P°isp¥vatelé Wikipedie.
Object-relational mapping
[online]. 2009. [cit. 6. 12. 2009]. Dos-
tupné z:
.
Cognitive Systems
[4] SLAVíK, P. Grammars and Rewriting Systems as Models for Graphical User Interfaces. . 1997, 4, 3/4, s. 381399.
CSTEX Users Group http://www.cstug.cz/, stav z 2. 3. 2009.
[5] web:cstug. CSTUG
hlavní stránka.
[6] web:infodp. K336 Info pokyny pro psaní diplomových prací.
https://info336.felk.cvut.cz/clanek.php?id=400,
stav ze 4. 5. 2009.
[7] web:infogs. Knihovna Gracké skupiny.
http://www.cgg.cvut.cz/Bib/library/,
stav z 30. 8. 2001.
AT Xem. [8] web:ipe. Gracký vektorový editor pro práce vhodný pro práci L E
http://tclab.kaist.ac.kr/ipe/,
stav z 4. 5. 2009.
AT X online manuál. [9] web:latexdocweb. L E
http://www.cstug.cz/latex/lm/frames.html,
stav ze 4. 5. 2009.
AT X. [10] web:latexwiki. Wiki Books L E
http://en.wikibooks.org/wiki/LaTeX/,
[11] áRA, J. BENE², B. FELKEL, P. s.r.o, Brno, 1st edition, 1998. In Czech.
stav z 3. 4. 2009.
Moderní po£íta£ová graka
21
.
Computer Press
22
LITERATURA
Dodatek A
Testování zapln¥ní stránky a odsazení odstavc· Tato p°íloha nebude sou£ástí va²í práce. Slouºí pouze jako p°íklad formátování textu.
Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili?
23
24
DODATEK A.
TESTOVÁNÍ ZAPLN
NÍ STRÁNKY A ODSAZENÍ ODSTAVC
Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která
25
se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká
26
DODATEK A.
TESTOVÁNÍ ZAPLN
NÍ STRÁNKY A ODSAZENÍ ODSTAVC
p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili? Ur£it¥ existuje n¥jaká p¥kná latinská v¥ta, která se k tomuhle testování pouºívá, ale co mají d¥lat ti, kte°í se nikdy latinsky neu£ili?
Dodatek B
Pokyny a návody k formátování textu práce Tato p°íloha samoz°ejm¥ nebude sou£ástí va²í práce. Slouºí pouze jako p°íklad formátování textu.
AT X. Existuje velké mnoºství voln¥ p°ístupné Pouºívat se dají v²echny p°íkazy systému L E dokumentace, tutoriál·, p°íru£ek a dal²ích materiál· v elektronické podob¥. Výchozím bodem, krom¥ Googlu, m·ºe být stránka CSTUG (Czech Tech Users Group) [5]. Tam najdete odkazy na dal²í materiály. Vet²inou dosta£ující a p°ehledn¥ organizovanou elektronikou dokumentaci najdete nap°íklad na [9] nebo [10].
AT X, které výrazn¥ usnadní psaní textu Existují i r·zné nadstavby nad systémy TEX a L E zejména za£áte£ník·m. Velmi roz²í°ený v Linuxovém prost°edí je systém Kile.
B.1
Vkládání obrázk·
Obrázky se umís´ují do plovoucího prost°edí (\caption) a
figure. Kaºdý obrázek by m¥l obsahovat název
náv¥²tí (\label). Pouºití p°íkazu pro vloºení obrázku
\includegraphics je podmín¥no \usepackage{graphicx}.
aktivací (na£tením) balíku graphicx p°íkazem
Budete-li zdrojový text zpracovávat pomocí programu p°íponou
*.pdf1 ,
pouºijete-li k formátování
latex,
pdflatex,
o£ekávají se obrázky s
o£ekávají se obrázky s p°íponou
*.eps.2
P°íklad vloºení obrázku:
\begin{figure}[h] \begin{center} \includegraphics[width=5cm]{figures/LogoCVUT} \caption{Popiska obrazku} \label{fig:logo} 1
pdatex umí také formáty PNG a JPG.
2
Vzájemnou konverzi mezi snad v²emi typy obrazku v£etn¥ zm¥n vekostí a dal²ích vymoºeností vám m·ºe
zajistit balík ImageMagic (http://www.imagemagick.org/script/index.php). Je dostupný pod Linuxem, Mac OS i MS Windows. D·leºité jsou zejména p°íkazy convert a identify.
27
28
DODATEK B.
POKYNY A NÁVODY K FORMÁTOVÁNÍ TEXTU PRÁCE
Obrázek B.1: Popiska obrázku
DTD construction | + ∗, ? R(a,b)
in1|A|B a:sum A B in1|A|B b:sum A B do_reg:A -> reg A the same like | and + with emtpy_el:empty make_R:A->B->R
elimination
case([_:A]a)([_:B]a)ab:A case([_:A]b)([_:B]b)ba:B undo_reg:reg A -> A the same like | and + with emtpy_el:empty a: R -> A b: R -> B
Tabulka B.1: Ukázka tabulky
\end{center} \end{figure} B.2
Kreslení obrázk·
Z°ejm¥ kaºdý z vás má n¥jaký oblíbený nástroj pro tvorbu obrázk·. Jde jen o to, abyste dokázali obrázek uloºit v poºadovaném formátu nebo jej do n¥j konvertovat (viz p°edchozí kapitola). Je z°ejm¥ vhodné kreslit obrázky vektorov¥. Celkem oblíbený, na ovládání celkem jednoduchý a p°itom dostate£n¥ mocný je nap°íklad program Inkscape. Zde stojí za to upozornit na kreslící programe Ipe [8], který dokáºe do obrázku vkládat komentá°e p°ímo v latexovském formátu (vzroce, stejné fonty atd.). Podobné v¥ci umí na Linuxové platform¥ nástroj Xg. Za pozornost je²t¥ stojí schopnost editoru Ipe importovat obrázek (jpg nebo bitmap) a krelit do n¥j latexovské popisky a komentá°e. Výsledek pak umí exportovat p°ímo do pdf.
B.3
Tabulky
Existuje více zp·sob·, jak sázet tabulky. Nap°íklad je moºno pouºít prost°edí je velmi podobné prost°edí
figure.
Zdrojový text tabulky B.1 vypadá takto:
table,
které
B.4.
29
ODKAZY V TEXTU
\begin{table} \begin{center} \begin{tabular}{|c|l|l|} \hline \textbf{DTD} & \textbf{construction} & \textbf{elimination} \\ \hline $\mid$ & \verb+in1|A|B a:sum A B+ & \verb+case([_:A]a)([_:B]a)ab:A+\\ &\verb+in1|A|B b:sum A B+ & \verb+case([_:A]b)([_:B]b)ba:B+\\ \hline $+$&\verb+do_reg:A -> reg A+&\verb+undo_reg:reg A -> A+\\ \hline $*,?$& the same like $\mid$ and $+$ & the same like $\mid$ and $+$\\ & with \verb+emtpy_el:empty+ & with \verb+emtpy_el:empty+\\ \hline R(a,b) & \verb+make_R:A->B->R+ & \verb+a: R -> A+\\ & & \verb+b: R -> B+\\ \hline \end{tabular} \end{center} \caption{Ukázka tabulky} \label{tab:tab1} \end{table} \begin{table} B.4 B.4.1
Odkazy v textu Odkazy na literaturu
Jsou realizovány p°íkazem
\cite{odkaz}.
Seznam literatury je dobré zapsat do samostatného souboru a ten pak zpracovat programem bibtex (viz soubor
reference.bib). Zdrojový soubor pro bibtex vypadá nap°íklad
takto:
@Article{Chen01, author = "Yong-Sheng Chen and Yi-Ping Hung and Chiou-Shann Fuh", title = "Fast Block Matching Algorithm Based on the Winner-Update Strategy", journal = "IEEE Transactions On Image Processing", pages = "1212--1222", volume = 10, number = 8, year = 2001, } @Misc{latexdocweb,
30
DODATEK B.
author title note year
} ...
= = = =
POKYNY A NÁVODY K FORMÁTOVÁNÍ TEXTU PRÁCE
"", "{\LaTeX} --- online manuál", "\verb|http://www.cstug.cz/latex/lm/frames.html|", "",
Pozor: Sazba názv· odkaz· je dána BibTEX stylem
(\bibliographystyle{abbrv}). BibTEX tedy obvykle vysází velké pouze po£áte£ní písmeno z názvu zdroje, ostatní písmena z·stanou malá bez ohledu na to, jak je napí²ete. P°esn¥ji °e£eno, styl m·ºe zvolit pro kaºdý typ publikace jiné konverze. Pro £asopisecké £lánky t°eba vý²e uvedené, jiné pro monograe (u nich £asto bývá naopak velikost písmen zachována). Pokud chcete BibTEXu napov¥d¥t, která písmena nechat bez konverzí (viz
"{\LaTeX} --- online manuál"
title =
v p°edchozím p°íkladu), je nutné p°íslu²né písmeno (zde
celé makro) uzav°ít do sloºených závorek. Pro p°ehlednost je proto vhodné celé parametry uzavírat do uvozovek (author
= "..."),
nikoliv do sloºených závorek.
Odkazy na literaturu ve zdrojovém textu se pak zapisují:
Podívejte se na \cite{Chen01}, dal²í detaily najdete na \cite{latexdocweb} *.tex a *.bib zajistíte p°íkazem \bibliography{} v souboru *.tex. thesis.tex obsahuje p°íkaz \bibliography{reference}. Vazbu mezi soubory
V na²em p°ípad¥ tedy zdrojový dokument
Zpracování zdrojového textu s odkazy se provede postupným voláním program·
pdflatex <soubor> (p°ípadn¥ latex <soubor>), bibtex <soubor> pdflatex <soubor>.3
a op¥t
Níºe uvedený p°íklad je p°evzat z d°íve existujících pokyn· student·m, kte°í d¥lají svou
4 Zde se praví:
diplomovou nebo bakalá°skou práci v Gracké skupin¥.
... j) Seznam literatury a dal²ích pouºitých pramen·, odkazy na WWW stránky, ... Pozor na to, ºe na ve²keré uvedené prameny se musíte v textu práce odkazovat -- [1]. Pramen, na který neodkazujete, vypadá, ºe jste ho vlastn¥ nepot°ebovali a je uveden jen do po£tu. P°íklad citace knihy [1], £lánku v £asopise [2], stati ve sborníku [3] a html odkazu [4]: [1] J. ára, B. Bene²;, and P. Felkel. Moderní po£íta£ová grafika. Computer Press s.r.o, Brno, 1 edition, 1998. (in Czech). 3
První volání
pdflatex
*.aux, který je vstupem pro program bibtex, pak je pdflatex (latex), který tentokrát zpracuje soubory s p°íponami .aux a .tex.
vytvo°í soubor s koncovkou
pot°eba znovu zavolat program
Informaci o p°ípadných nevy°e²ených odkazech (cross-reference) vidíte p°ímo p°i zpracovávání zdrojového souboru p°íkazem
pdflatex.
Program
pdflatex (latex)
lze volat vícekrát, pokud stále vidíte nevy°e²ené
závislosti. 4
N¥kolikrát jsem byl upozorn¥n, ºe web s t¥mito pokyny byl zru²en, proto jej zde p°ímo necituji. Nicmén¥
p°íklad sám o sob¥ dokumentuje obecn¥ p°ijímaný konsensus ohledn¥ citací v bakalá°ských a diplomových pracích na KP.
B.5.
31
ROVNICE, CENTROVANÁ, ÍSLOVANÁ MATEMATIKA
[2] P. Slavík. Grammars and Rewriting Systems as Models for Graphical User Interfaces. Cognitive Systems, 4(4--3):381--399, 1997. [3] M. Haindl, . Kment, and P. Slavík. Virtual Information Systems. In WSCG'2000 -- Short communication papers, pages 22--27, Pilsen, 2000. University of West Bohemia. [4] Knihovna grafické skupiny katedry po£íta£·: http://www.cgg.cvut.cz/Bib/library/ . . . abychom vý²e citované odkazy skute£n¥ na²li v (automaticky generovaném) seznamu literatury tohoto textu, musíme je nyní alespo¬ jednou citovat: Kniha [11], £lánek v £asopisu [4], p°ísp¥vek na konferenci [1], www odkaz [7]. Je²t¥ p°idáme dal²í ukázku citací online zdroj· podle £eské normy. Odkaz na wiki o
reference.bib. V seznamu literatury by reference.bib je zcela nový typ publikace. Detaily
frameworcich [2] a ORM [3]. Pouºití viz soubor nyní m¥ly být ºivé odkazy na zdroje. V
dohledal a dodal Petr Dlouhý v dubnu 2010. Podrobnosti najdete ve zdrojovém souboru tohoto textu v komentá°i u p°íkazu
B.4.2
•
\thebibliography.
Odkazy na obrázky, tabulky a kapitoly
Ozna£ení místa v textu, na které chcete pozd¥ji £tená°e práce odkázat, se provede p°íkazem
\label{navesti}.
Lze pouºít v prost°edích
figure
a
table,
ale téº za
názvem kapitoly nebo podkapitoly.
•
Na náv¥²tí se odkáºeme p°íkazem
B.5
\ref{navesti}
nebo
\pageref{navesti}.
Rovnice, centrovaná, £íslovaná matematika
Jednoduchý matematický výraz zapsaný p°ímo do textu se vysází pomocí prost°edí resp. zkrácený zápis pomocí uzav°ení textu rovnice mezi znaky Kód
$ S = \pi * r^2 $
bude vysázen takto:
$.
math,
S = π ∗ r2 .
Pokud chcete ne£íslované rovnice, ale umíst¥né centrovan¥ na samostatné °ádky, pak lze pouºít prost°edí znaky
$$.
Zdrojový
displaymath, resp. zkrácený zápis pomocí uzav°ení textu kód: |$$ S = \pi * r^2 $$| bude pak vysázen takto: S = π ∗ r2
Chcete-li mít rovnice £íslované, je t°eba pouºít prost°edí
\begin{equation} S = \pi * r^2 \end{equation} \begin{equation} V = \pi * r^3 \end{equation}
eqation.
Kód:
rovnice mezi
32
DODATEK B.
POKYNY A NÁVODY K FORMÁTOVÁNÍ TEXTU PRÁCE
je potom vysázen takto:
B.6
S = π ∗ r2
(B.1)
V = π ∗ r3
(B.2)
Kódy programu
Chceme-li vysázet nap°íklad £ást zdrojového kódu programu (bez formátování), hodí se prost°edí
verbatim:
(* nickname2 *) Lego> Refine in1 (do_reg (nickname1 h)); Refine by in1 (do_reg (nickname1 h)) ?4 : pcdata ?5 : pcdata (* surname2 *) Lego> Refine surname1 h; Refine by surname1 h ?5 : pcdata (* email2 *) Lego> Refine undo_reg (email1 h); Refine by undo_reg (email1 h) *** QED *** B.7 B.7.1
Dal²í poznámky eské uvozovky
V souboru
k336_thesis_macros.tex
uzav°ený do £eských uvozovek.
je p°íkaz
\uv{}
pro sázení £eských uvozovek. Text
Dodatek C
Seznam pouºitých zkratek 2D
Two-Dimensional
ABN
Abstract Boolean Networks
ASIC
Application-Specic Integrated Circuit
. . .
33
34
DODATEK C.
SEZNAM POUITÝCH ZKRATEK
Dodatek D
UML diagramy Tato p°íloha není povinná a z°ejm¥ se neob jeví v kaºdé práci. Máte-li ale v¥t²í mnoºství podobných diagram· popisujících systém, není nutné v²echny umís´ovat do hlavního textu, zvlá²t¥ pokud by to sniºovalo jeho £itelnost.
35
36
DODATEK D.
UML DIAGRAMY
Dodatek E
Instala£ní a uºivatelská p°íru£ka Tato p°íloha velmi ºádoucí zejména u softwarových implementa£ních prací.
37
38
DODATEK E.
INSTALANÍ A UIVATELSKÁ PÍRUKA
Dodatek F
Obsah p°iloºeného CD Tato p°íloha je povinná pro kaºdou práci. Kaºdá práce musí totiº obsahovat p°iloºené CD. Viz dále. M·ºe vypadat nap°íklad takto. Vá² seznam samoz°ejm¥ bude odpovídat typu va²í práce. (viz [6]):
Obrázek F.1: Seznam p°iloºeného CD p°íklad
Na GNU/Linuxu si strukturu p°iloºeného CD m·ºete snadno vyrobit p°íkazem:
$ tree . >tree.txt Ve vzniklém souboru pak sta£í pouze doplnit komentá°e.
39
40
DODATEK F.
Z
OBSAH PILOENÉHO CD
README.TXT (p°ípadne index.html apod.) musí být rovn¥º z°ejmé, jak programy
instalovat, spou²t¥t a jaké poºadavky mají tyto programy na hardware. Adresá°
text musí obsahovat soubor s vlastním textem práce v PDF nebo PS formátu,
který bude pozd¥ji pouºit pro prezentaci diplomové práce na WWW.