|
Ide o jednoduchý perlový script fungujúci v konzole, ktorý sa prekladá pomocou online slovníka na stránke http://www.slovnik.cz. Z toho vyplýva, že pracuje iba s češtinou a že funguje iba v prípade, že je aktívne pripojenie na internet. Ide už o tretiu verziu scriptu, naposledy bolo pridané parsovanie príkazu a zadávanie slov pomocou modulu ReadLine.
Ku svojej práci vyžaduje textový browser lynx a perlové moduly Term::ReadLine a Getopt::Declare. Pre nápovedu spustite script s prepínačom -h.
|
Zadanie na predmet VPPJ (Verejno Prospešné Programovanie v Jave, alebo Vývoj Programov pre Platformu Java 2). Išlo viacmenej o prerobenie starého zadania na predmet Objektové programovanie, ktoré však nebolo s podporou OpenGL. Zaujímavosťou na tomto programe je, že na našej škole bolo v podstate odovzdané tri krát, z toho dva krát na ten istý predmet a zakaždým za plný počet bodov :). Ako som už spomínal, najskôr som ho odovzdával na predmete Objektové programovanie, rok na to ho odovzdával spolubývajúci na predmet VPPJ a napokon som ho odovzdával ja s prerobením na OpenGL. Nakoľko išlo len o prerobenie, nosná konštrukcie programu bola hotová, odpadlo teda nepríjemná definovanie všetkých properties a zmenilo sa v podstate iba samotné renderovanie komponentov.
Program obsahuje základné grafické komponenty, ktoré sú renderované pomocou OpenGL. Na prvý pohľad sa to môže zdať zbytočné, ale nejde o nič iné, ako o pokus decentralizovať výpočtový výkon počítača medzi CPU a GPU. Komponentov nie je veľa a mnohé by sa ešte dali dopísať, čo nieje vďaka dobre navrhnutej hierarchii tried žiaden problém. Inšpiroval som sa objektovým modelom, ktorý používa Delphi pre svoje grafické komponenty a aplikoval som ho do Javy. Zaujímavosťou je definovanie callback funkcií, alebo metód ak chcete. Nakoľko ide o javu, nedá sa s funkciou/metódou pracovať rovnako ako v C/C++, preto som to spravil cez malý workaround a to tak, že som definoval triedu, ktorá danú funkciu/metódu obsahovala a tú triedu som len dedil a metódu prepisoval, čím som vytváral niečo ako vlastné callback funkcie. Pričom ako parameter som mohol predávať celý objekt.
Pre záujemcov prikladám dokumentáciu, v ktorej je aplikácia opísaná podrobnejšie. Okrem toho som nahral aj zdrojové kódy programu, spustiteľnú verziu pod GNU/Linux aj Windows. Ide o balík komponentov a triviálny demonštračný program. Verzia pre GNU/Linux a Windows je rozdielna kvôli natívnym funkciám, ktoré sú volané buď z *.so alebo *.dll. Program spúšťam z jar súboru a vo Windowse trochu blbne (to je ta multiplatformovosť javy), na prezentáciu som ho natvrdo prepísal, ide o zaujímavú chybu, ktorá mi nemala logiku, možno by sa odstránila použitím aktuálneho JOGL.
glComponents.zip (1.2 MB)
glComponents-bin.zip (2 MB)
glComponents-bin-win.zip (1.9 MB)
glComponents.pdf (488 KB)
|
Zadanie na projekt WAN Technológie. Predmet plný prekvapení, kde nám bolo na prvej prednáške oznámené, že je priamo nadväzuje na predmet Počítačové systémy a siete II, ktorý väčšina z nás Informatikou nemala. Nuž smola, ale šlo sa ďalej s tým, že budeme musieť trochu zabrať.
K programu je priložená dokumentácie, tak ju tu nebudem prepisovať, ale v podstate išlo o dvojportový smerovač s implementovanými filtrami a protokolom na dynamickú výmenu routovacích tabuliek. Pripojili sa 4 počítače, dva robili router a dva klientov. Program obsahuje jednu chybu a ta je v tom, že packet, ktorý je smerovaný priamo jemu nezahadzuje, ale vyšle ARP request, čo spôsobí, že počítače s windowsom vypíšu chybu a je možné, že táto verzia sa ešte snaží preposielať broadcast. Sú to ale ľahko opraviteľné drobnosti, na opravenie ktorých som však nemal dôvod.
Apropo, ARP trieda by mala byť nezávislá na tomto projekte, čiže je ju možné využiť kdekoľvek. Kompilácie je opäť jednoduché make, binárnu verziu som skompiloval staticky.
router.zip (32 KB)
router-bin.zip (446 KB)
router.pdf (68 KB)
|
Semestrálna práca na predmet Human and Computer Interaction. Bolo to špeciálne zadanie, ktoré mi prinieslo zaručené D už počas semestra, bolo to moc fajn, lebo ja som spravil jedno zadanie a ostatný robili tri a mal som ešte viac bodov ako oni.
Zadanie bolo jednoduché, v priestore sú umiestnené objekty, nad ktoré a nakreslí 2D ono a objekty sa najkratšou cestou vytlačia von z okna. Na prvý pohľad to vyzerá jednoducho. Aj by bolo, keby sa kreslilo len jedno okno a vypadol by teda problém s prienikom okien, alebo by sa okná zakresľovali iba ortogonálne, ľahšie by sa počítalo. Tak ale nebolo to nič, čo by sa s troškou matematiky nedalo vyriešiť (teraz si už ale fakt nepamätám, ak som to napokon riešil, ale určite to nebolo trasovanie zjednoteného objektu pixel za pixlom :) )
Ovládanie programu je robené výlučne myšou, až na vynulovanie obrazovky čo sa robí medzerníkom a vypnutie esc. Objekty sa do priestoru vkladajú ľavým tlačítkom myši. Pokiaľ je tlačítko zatlačené, môžete kolieskom meniť hĺbku, no nakoľko je koliesko dosť nepraktické, tak môžete počas držania ľavého tlačítka zatlačiť aj práve a za ich súčastného držanie hýbať myšou hore dole, čím sa bude taktiež meniť hĺbka. Stlačím pravého tlačítka začnete kresliť okno, klasicky chytím a ťahám, keď tlačítko pustíte, automaticky sa prepnete do rotovacieho módu a pohybom myši meníte natočenie okna. Výsledok potvrdíte ľavým tlačítkom. Po tomto procese sa spustí algoritmus prieniku okien, o výsledku ktorého informuje bliknutie hrán výsledného polynómu na červeno. V tom istom okamihu sa začnú objekty presúvať na okraj tou najkratšou cestou. Po vytlačení objektu mimo výsledný polynóm, opäť zablikajú jeho hrany. Vložené objekty si zachovávajú aj istú rotáciu podľa pohybu myši v čase jeho pustenia, citlivosť som však nastavil veľmi nízku hodnotu, aby to nevyzeralo šialene. Preto je badateľná iba slabá rotácie o niektorých objektov (stále je to nespravodlivé voči guli, u ktorej to rotovanie nieje skoro vôbec poznať :) )
Nakoľko je program napísaný v jazyku Lua, tak som priložil aj priamo interpreter tohoto jazyka, vďaka čomu by mal byť kód spustiteľný ako pod GNU/Linuxom tak aj windwsom. Rozdiel medzi linuxovou a windowsovou binárkou je iba v priložených knižniciach (gl, glut, memarray). Windows má na spúštanie napísaný bat súbor, pričom v linuxe sa dá program priamo spustiť cez priložený interpreter.
EDIT: Tak som prisiel na to, ako som to robil, okno som rozdelil na 4 vektory a riesil ich pretinanie, no a polohu objektu voci vektoru uz nebol problem urcit. (Teda taky je momentalny predpoklad)
objekty.zip (127 KB)
objekty-bin.zip (127 KB)
objekty-bin-win.zip (241 KB)
|
Zadanie na predmet Modelovanie a simulácia. Ide o vizualizáciu podivného lorezovho atraktora. Riešenie a implementacia bolo celkom jednoduchá, pár minút. Atraktor možno rotovať kurzorovými šípkami a klávesom HOME sa prepína normálna a fázové zobrazenie. Zdrojové kódy by mali ísť skompilovať aj vo Visual Studiu, ale neručím za to. Kompilované to bolo tuším ešte v škole a momentálne nemám Visuall Studio po ruke.
lorenz.zip (119 KB)
lorenz-bin.zip (5 KB)
lorenz-bin-win.zip (94 KB)