Osobní projekty

Web aplikace pro správu seznamu úkolů (2009)

Aplikace umožňuje zadávat, mazat a označovat úkoly jako hotové. Navíc můžete úkoly řadit do kategorií a přiřazovat jim datum. Seznam úkolů lze filtrovat podle několika kritérií. V textu úkolů lze používat syntaxi Texy!. Nejdůležitější vlastnost je jako obvykle masivní využití DHTML animací. :-)

Instalace je naprosto triviální, stačí zkopírovat soubory na web server a vytvořit zapisovatelný adresář db/. Není třeba žádné nastavování. Aplikace je vícejazyčná a podporuje češtinu a angličtinu.

Implementace aplikace je kompletně v JavaScriptu. Se serverem aplikace komunikuje pomocí JSON-RPC 1.1. Serverová část aplikace je velmi jednoduchá a vešla se do 100 řádků PHP kódu. JavaScriptová část je napsaná objektově s využitím MVC vzoru.

Neplánuji další vývoj této aplikace. Cílem bylo napsat příklad „real-world“ aplikace postavené na MVC vzoru pro jeden z mých budoucích návodů na psaní JS aplikací.

Web megous.com (2008–2009)

Nemusí se to na první pohled zdát, ale pod kapotou megous.com se schovává spousta kódu, který implementuje zajímavé vlastnosti. Ty klíčové jsou:

  • Pro psaní textu se používá formát Texy!
  • Možnost použití libovolného počtu šablon na jednom webu (filozofie v akci, kuchařka)
  • Obsah statických stránek je v jednom souboru se speciálně navrženým formátem
  • Automatická kontrola provázanosti stránek a validity odkazů (interních i externích)
  • Novinky, čtenářský deník a kuchařka se spravují pomocí admin rozhraní
  • Datový model webu je postaven na GENiE ORM
  • Rozsáhlé možnosti vyhledávání v obsahu webu
  • Inteligentní kešování statických i dynamických stránek
  • On page SEO: ruční nastavení title i meta description pro každou stránku zvlášť, pěkné url, podpora sitemap.xml, podpora google webmaster tools, analytics, nastavení aliasů stránek, atd.

Objektově relační mapování pro PHP – GENiE (2006–2007)

GENiE je generátor kódu. Na svém vstupu přijímá člověkem napsaný textový popis nějakého problému, například datový model. Jeho výstupem je počítačem zpracovatelný kód, dokumentace, snadno zpracovatelný XML popis vstupu, atp. Hlavní současnou aplikací GENiE, které hojně využívám, je generování ORM kódu.

JavaSkriptový widget pro nahrávání souborů na server (2008)

Chtěl jsem si usnadnit nahrávání obrázků do kuchařky a jejich vkládání do textu a uplib je výsledek. Je to další z mých KISS mini-projektů. Knihovna uplib funguje v majoritních prohlížečích a je velmi snadno integrovatelná a rozšiřitelná. Uplib je uvolněna do public domain.

Repozitář balíčků pro Arch Linux (2007–2009)

Spravuji několik balíčků pro Arch Linux.

Balík Popis
judy Judy arrays C library
libxr XML-RPC knihovna
mingw32-* C/C++ cross-toolchain pro windows, gtk+, glib, atd.
php-gtk PHP-GTK z CVS
vala Vala kompilátor

Odkazy ke stažení balíčků a sestavovacích skriptů:

Můj repozitář si můžete přidat do konfigurace vložením následujícíh řádků do pacman.conf:

[megi]
Server = http://arch.megous.com

Rychlá knihovna pro parsování datového formátu iCalendar (RFC 2445(200­8)

Libtc je experimentální open-source knihovna pro velmi rychlé zpracování iCalendar dat. Není vydaná pod žádnou licencí, a je tedy v public domain. Název libtc znamená tiny calendar library.

Nejdůležitější vlastnosti knihovny jsou:

  • Jednoduchost, rychlost a přehlednost kódu díky použití re2c pro implementaci parseru.
  • Žádné alokace paměti na haldě během parsování.
  • Možnost transformace iCalendar řetězců, bez nutnosti mít dočasnou reprezentaci celého iCalendar objektu v stromové datové struktuře.
  • Ve srovnání s libical je rychlost zpracování iCalendar objektů doslova brutální.

Slackware Linux Package Manager (2005–2006)

Alternativní manažer balíčků pro Slackware Linux napsaný v C je výsledkem optimaliza­cí, kterými jsem se bavil před několika lety. Na domovské stránce projektu se dají stáhnout zdrojáky, binárka a dokumentace.

Hlavní vlastnosti spkg jsou:

  • 2–10× rychlejší než originální pkgtools.
  • Rollback, čili bezpečné přerušení operace.
  • Implementace v podobě knihovny a možnost použití z GUI aplikace.

megix – sestavovací systém a loader pro živé distro (2004–2007)

Megix je 5 let starý sestavovací systém pro živé distribuce. Původně byl založený na zisofs, později na squashfs. Cílem bylo udělat systém, pomocí kterého by šlo z libovolné distribuce Linuxu, vytvořit bootovatelné CD. Základem je minimalistický loader, který má za úkol připravit virtuální souborový systém takovým způsobem, aby bylo možné nastartovat distribuci z komprimo­vaných obrazů.

Hlavním důvodem pro vývoj megixu bylo, že jsem potřeboval distribuci Linuxu, která by se dala používat v učebnách na škole, a která by nastartovala do 1 minuty z CD, a ve které bych mohl mít sadu balíčků které potřebuji. Nic podobného tenkrát nebylo. Knoppix startoval 5 minut.

  • Demo CD (0.2) pro systém Fred CZ.NICu je postavené na megixu.
  • Zonio používá USB verzi megixu pro instalace Zbloku.

Digitální měřicí systém (2001–2002)

Maturitní výrobek a moje magnum opus na střední škole. Na tuhle hračku jsem velmi pyšný. Co je DMS nejlépe popíše samotné PDF a prezentace.

DMS je počítačem řízený měřicí systém připojený přes vlastní ISA kartu k boxu s měřicími kartami a napájecím zdrojem. Navrhl jsem k němu dvě karty. První implementuje plynule nastavitelnou časovou základnu a druhá implementuje A/D převodník pomocí mikropočítače.

Bastlení (1999–2003)

Bastlení elektroniky byl, a v menší míře stále je, můj oblíbený koníček. Moc rád navrhuji a stavím vlastní obvody. Někdy s cílem udělat užitečnou věc, jindy jen tak pro dobrý pocit z tvorby. Něco z tvorby:

  • LED digitální hodiny z TTLek
  • LED digitální herní kostka
  • Stabilizované napájecí zdroje (digitální 0–12V, pevný ±12V s toroidem, pro logiku 5V, atd.)
  • Nějaké zesilovače
  • Digitální osciloskop do LPT
  • Mraky zapojení s 555, časovače, pískače, zabezpečova­císvětelné závory, atd. (s 555 jsem si svého času opravdu vyhrál)
  • LED matiocový „osciloskop“ složený z různých modulů 
  • Různá zapojení s mikrokon­troléry a znakovými a grafickými displeji, paměťmi RWM, A/D převodníky, RTC chipy
  • Měřič vzdálenosti pomocí ultrazvuku s zobrazením na grafickém displeji fontem Arial
  • FM rádio s koncovým zesilovačem
  • Programátor mikrokontro­lérů PIC i se softwarem pro Linux
  • Funkční (trojůhelník, obdélník, sinus) generátor signálu s nastavitel­nou frekvencí
  • Číslicově (z PC) nastavitelný generátor hodin
  • Číslicově (z PC) nastavitelný zdroj napětí
  • Zabezpečovací zařízení s mikrokon­trolérem
  • atd.

Nějaké designy a fotky naleznete v mém fotoalbu.

Ovladač a nástroje pro grafické displeje (KS0108) (2003)

AGLL je v jazyce C napsaná knihovna pro ovládání grafického displeje z mikrokon­troléru. Podporuje kompilátory fy HT-SOFT. Součástí knihovny je simulátor displeje a program pro převod TrueType fontů do rastrového formátu pro použití v omezeném paměťovém prostoru mikrokontro­léru.

ASIX PICCOLO nástroje pro Linux (2004–2008)

Nástroje pro programování PIC pomocí programátoru PICCOLO pod Linuxem.

Zajímavé vlastnosti:

  • Nejjednodušší možné uživatelské rozhraní.
  • Odpovídá UNIXové filozofii: jeden nástroj pro jeden účel, žádné kuchyňské dřezy (např. hex editor v rámci programátoru, jak je celkem běžná praxe).
  • Podpora běžných PIC16F a PIC18F mirokontro­lérů.
  • Automatická detekce připojené součástky (pro všechny podporované ty­py).
  • Rychlé programování (používají se nejrychlejší podporované programovací režimy a precizní časování pomocí jaderného ovladače).
  • Podporované součástky: 16F83, 16F84, 16F84A, 16F87×, 16F87, 16F88, 18Fxx2.

Školní projekty z ČVUT FEL (2002–2007)

Myslím že pokud zrovna nestudujete ČVUT FEL, tak vás to zajímat nebude.