Stránka je momentálne v testovacej prevádzke a postupne sa dopĺňa.

Projekty


Programy, scripty a čo ja viem aké drobnosti ktoré som robil, či už v rámci edukácie alebo iných pohnútok. Väčšina ak nie všetko bude úplne nepoužiteľná, len som si chcel spraviť krátky prehľad svojej práce.

1

2 Dalej Koniec

Softvérový smerovač

C/C++ + TCP/IP + PCAP 19.03.2007

Spustenie a vypísanie nápovedy

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.



Zdrojové kódy:  [] router.zip (32 KB)
Spustiteľné súbory GNU/Linux:  [] router-bin.zip (446 KB)
Dokumentácia:  [] router.pdf (68 KB)



Lorenzov podivný atraktor

C/C++ + OpenGL + GLUT 28.11.2006

Fázové zobrazenie atraktora

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.



Zdrojové kódy:  [] lorenz.zip (119 KB)
Spustiteľné súbory GNU/Linux:  [] lorenz-bin.zip (5 KB)
Spustiteľné súbory MS Windows:  [] lorenz-bin-win.zip (94 KB)



Analyzátor

C/C++ + GTK++ + TCP/IP + PCAP 23.03.2006

Obrazovka tesne po spustení

Polsemestrálny projekt na predmet Počítačové systémy a siete. Úlohou bolo naprogramovať jednoduchý sieťový analyzátor, niečo na spôsob Wireshark (niekdajší Ethereal). Také jednoduché na tom však bolo jedine bodové ohodnotenie (maximálne 16 bodov aj zo všetkými bonusmi, ak si dobre spomínam). Rozdiel oproti Wiresharku bol v tom, že packety sa spracovávali offline. Inak povedané, načítal sa dump súbor, práve z Wiresharku. Programátorsky tam v podstate nebol rozdiel, nakoľko by sa len použila iná funkcia na otvorenie spojenia. Program mal za úlohu vypísať a preparsovať packety. Každý packet mal byť rozpísaný aj s názvom protokolu a pri významnejších protokoloch aj podrobnejšie rozobratý. Okrem toho to malo obsahovať filter na mac adresy, ako zdrojové, tak aj cieľové a ako čerešnička na torte bol výpis TCP/IP spojení (na ktorý sa väčšina ľudí vykašlala, lebo im to nestálo za tú námahu). Mali sa nájsť všetky začínajúce TCP/IP spojenia (identifikovanie Three-way handshaking) a následne sa mal vypísať ich priebeh až po ich ukončenie, ak sa tam nachádzalo. V tom období som práve skončil v jednej práci a inú som ešte nemal, tak som mal čas na toto. Dá sa povedať, že viac ako sieťarina ma zdržiavalo GTK++ s ktorým som sa ešte stále len oboznamoval. Ja som okrem klasických funkcií dorobil filter na jednotlivé pacekty. Filter je dosť rozsiahli, ale nie mojou zásluhou, ja som len využil to, čo mi ponúkal pcap. Filter má teda jeho syntax a tá je dosť rozsiahla a dajú sa nastavovať aj pokročilejšie filter (možnosti filtrovania, ktoré poskytuje Wireshark sú robené práve skrze tento filter).

Na sieťovú komunikáciu som použil knižnicu libpcap, ktorá nám bola odporúčaná. Rozhranie GTK++ som si zvolil preto, lebo je multiplatformové a odovzdávať sme to museli na Windowse (vo Visual Studiu som to naozaj nemienil programovať). Prikladám zdrojové kódy pod GNU/Linux (kompilácia make) aj pod Windows s projektom vo Visual Studiu. Windows verzia nemusí byť úplne aktuálna, len som ju niekde náhodou vyhrabal. Okrem zdrojákov prikladám aj binárne súbory pre GNU/Linux, knižnica pcap je zakompilovaná staticky a GTK++ ostalo dynamicky a binárne súbory pre Windows, balík je väčší pretože obsahuje pcap aj celé GTK++. Ďalšie podrobnosti o projekte nájdete v priloženej dokumentácii.



Zdrojové kódy:  [] analyzator.zip (6.7 MB)
Spustiteľné súbory GNU/Linux:  [] analyzator-bin.zip (503 KB)
Spustiteľné súbory MS Windows:  [] analyzator-win-bin.zip (4.2 MB)



glSDL

C/C++ + OpenGL + GLUT + SDL 05.01.2006

Ukážka demonštračného programu

Ak poznáte knižnicu SDL tak sa určite zhodneme na jednom. Knižnica sama o sebe toho veľa neobsahuje (ešte, že je modulárna), ale hlavne ,že aj to čo obsahuje ponúka dosť nepraktickom balení. Je to pure C, čo by sa dalo odpustiť a keď už nič, dá sa využiť wrapper, čo mi ale príde trochu zastaralé, je práca s ňou. Pred volaním funkcií aby si človek zakaždým zisťoval všetko sám. Od vlastností grafického adaptéra, cez formáty obrázkov až po nepríjemnú prácu zo zvukom. Nenapadlo Vás, že by to možno šlo aj inak ? Mňa áno a preto som sa cez jedny vianoce do toho pustil. Práce na tom veľa nebolo, vo väčšine len nepríjemné formality s nastavovaním a čítaním jednotlivých stavových premenných. Horšia už bola práca zo zvukom, kde som sa celkom potrápil, ale s výsledkom som napokon spokojný.

Tak o čo teda ide ? Napísal som knižnicu postavenú nad SDL s vytvorením OpenGL okna. Ako som už vyššie písal, nieje to nič nové, len niečo, čo dokáže zjednodušiť prácu a namiesto volania piatich funkcii a ďalších piatich podmienok, stačí zavolať jednu funkciu.

Čo to dokáže
Inicializuje SDL, nastaví video (stačí zadať výšku, šírku a farebnú hĺbku o akceleráciu, OpenGL a ošetrenie výnimiek sa postará knižnica sama). Zastrešuje klasické callback funkcie, pričom ponúka možnosť rýchleho nastavenia escape key pre ukončenie hlavnej slučky, automatické centrovanie kurzora na stred, počítanie FPS, nastavenie vzorkovania stlačenej klávesy (v ako intervale pri držaní klávesy sa má spracovať špeciálna callback funkcia).

Knižnica má v sebe implementovaný veľmi jednoduchý engine pre pohyb v 3D priestore, rozhodne a to nepokúša tváriť ako hráčsky engine, ide skôr o použitie v prípade, že sa treba v 3D priestore pohybovať, ale nieje dôvod na to, aby sa implementoval špeciálny engine. Podporuje klasický pohyb s jednoduchou simuláciou krokov a taktiež lietanie, resp. voľný pohyb po priestore. Prepočty na základe stlačených kláves robí samo, pred vykresľovaním stačí zavolať nastavenie transpozičnej a rotačnej matice jednoduchou funkciou. Pre zapnutie podpory je nutné aby bolo inicializované OpenGL a aby bolo definované makro OPENGL,

Zvuk sa spracováva podknižnicou SDLSoundSystem. Implementuje jednoduché inicializovanie zariadenia bez zbytočných otázok, čo môže nastaví sama, čo nie prednastaví na štandardné hodnoty, tak aby to fungovalo. Podporuje načítavanie mp3 (a možno aj ogg) súborov a ich následné prehrávanie. Načítavanie prebieha vo vlastnom threade, aby neblokovalo priebeh programu, pričom je možné sledovať stav načítavania a tak priebeh podržať. Hlavná knižnica obsahuje miernu nadstavbu nad túto knižnicu (zapne sa definovaním makra SOUND, mám ale pocit, že je tam bug a bez definovania makra SOUND kompilácia padne, nebude to ale nič vážne). Táto nadstavba povoľuje načítanie poľa súborov, kde sa zadá pole ciest k súboru a počet prvkov v poli. Funkcia vráti pole objektov, ktoré je možné následne prehrávať.

Ďalšou podpornou knižnicou je knižnica SDLTexture. Umožňuje načítavanie obrázkov zo súborov rôznych formátov, jednoduché transformačné akcie až po aplikovanie rôznych filtrov. Z výsledného obrázku dokáže vytvoriť textúru s podporou MipMap či komprimovaných textúr (ak to podporuje hardvér).

Knižnica neprináša nič nové, akurát spríjemňuje prácu s tým, čo už existuje. Pri knižnici sa nachádza aj krátky ukážkový program, ktorý síce nevyužíva všetky možnosti, je to ale jednoduchá ukážka použitia. Kompiluje sa pomocou príkazu make vyžaduje knižnicu SDL a je moduly SDL-image, SDL-gfx pre SDLTexture, moduly SDL-sound, SDL-thread a SDL-mixer pre SDLSoundSystem.



Zdrojové kódy:  [] glSDL.zip (182 KB)
Spustiteľné súbory GNU/Linux:  [] glSDL-bin.zip (164 KB)



Jednosmerky

C/C++ + OpenGL + GLUT 20.12.2005

Správna sieť jednosmeriek

Zadanie ne predmet Dátové štruktúru a algoritmy. Zo všetkých klasických zadaní na orientovaná grafy je toto zadanie to najklasickejšie. V meste sú body, ktoré sú pospájané ulicami. Z nejakého dôvodu sa rozhodli prerobiť niektoré ulice na jednosmerky a treba zistiť, či sa to s jednosmerkami neprehnalo a teda, či stále existuje cesta z každého bodu do každého. Jednoduchá práca na jednu noc aj s grafikou. Obrázok šípky mi nakreslil spolubývajúci, za čo som mu nesmierne vďačný.

Hneď po spustení program spracuje vstupný súbor, vykreslí graf aj s hranami a vypíše či sú jednosmerky v poriadku, alebo nie. Do vykresleného grafu je možná aj interakcia. Myšou je možné vybrať dva vrcholy a ak medzi nimi existuje cesta, program ju znázorní červenou. Potom je možné vybrať zase ďalšie dva vrcholy.

Program vyžaduje parameter z príkazového riadku, ktorým je názov súboru s informáciami o grafe ... ehm ... sieti jednosmeriek. V súbore je prvé číslo počet vrcholov, potom vrchol definovaný poradovým číslom, názvom a pozíciou pre vykreslenie. Za zoznamom vrcholov nasleduje číslo, ktoré udáva počet hrán a za ním práve toľko riadkov s informáciou o hrane (z ktorého vrcholu na ktorý vedie hrana).

Zdrojové kódy sú ako pre linux (priložený Makefile), tak aj pre windows (projekt s Visual Studia).



Zdrojové kódy:  [] jednosmerky.zip (1.6 MB)
Spustiteľné súbory GNU/Linux:  [] jednosmerky-bin.zip (23 KB)
Spustiteľné súbory MS Windows:  [] jednosmerky-win-bin.zip (123 KB)




1

2 Dalej Koniec

Copyright © 2008 Milan Ilavský | All Rights Reserved | Design by P&B Creations | Modified by Milan Ilavský | Powered by CMSee