Weblog about my projects

  • Bloog.cz 2.0 – odhalení designu

    Už delší dobu chystám novou verzi blogportálu a teď se konečně schyluje k jejímu ostrému nasazení. Momentálně vychytávám poslední bugy, čili aktualizaci webu můžete očekávat přibližně za týden. Již nyní si ale můžete prohlédnout nový webdesign.

    Základní princip návrhu architektury procesoru říká: “Jednoduchosti \(\Leftrightarrow\) pravidelnost”. Návrh procesoru sice zdánlivě nemá nic společného s webdesignem, faktem ale zůstává, že se mi líbí jednoduché elegantní tvary. Zatímco design první verze působil nesourodě a zmateně, nový návrh je přehledný a pravidelný. Bezpochyby lépe vypadá horní část stránky, do které se mi povedlo zakomponovat Matesovo logo.

    Však posuďte sami:

    Blogportál Bloog.cz verze 1.0alfa
    Verze 1.0alfa (2006)
    Verze 2.0
    Verze 2.0 (2010)
  • Covery alb

    Potrpím si na detaily, proto je pro mě velice důležité mít ke všem písničkám příslušné covery alb. Tyto covery rád vidím jako náhledy složek při procházení ve správci souborů. Napsal jsem si tedy sadu skriptů 😉

    Ve Windows se náhled složky uchovává v souboru folder.jpg. Na Freedesktopu pak podle specifikace Desktop Entry musí ve složce existovat soubor .directory, ve kterém je definováno, který PNG obrázek použít jako náhled dané složky. Zvolil jsem si, že na Freedesktopu mám náhled vždy uložen ve skrytém souboru .folder.png.

    Práci jsem rozdělil do tří skriptů:

    1. Zjištění URL coveru podle jména umělce a názvu alba. Tento skript (getcover.rb) se připojuje k Last.fm API, které se stará o zbytek :-). Původně se jedná o dílo Dana Sosedoffa.
    2. Přejmenování obrázku na folder.jpg pro Windows Media Player, vytvoření obrázku .folder.png a souboru .directory pro Freedesktop. Skript (mkfolderimg.sh) lze využít také např. pro generování náhledů k fotoalbům.
    3. Skript, který projde všechny alba, pro každé album umístí cover podle specifikací Freedesktopu nebo WMP a případně ho stáhne z internetu (mkmusiccovers.sh). Implementace nejdřív vyhledá všechny hudební soubory a sestaví seznam alb, jakožto kandidátů na vytvoření coveru. Poté prochází jednotlivá alba a pokouší se sestavit náhledy. Pokud ve složce alba není žádný obrázek, stáhne cover z URL získané pomocí 1. skriptu.

    Všechno pěkně zabalené si stáhněte zde: musiccovers.20100913.tar.gz.

  • Upozornění na nové maily

    Používám Gmail již dlouhou dobu a štve mě, že neexistuje vhodný minimalistický program pro kontrolování příchozích emailů v KDE. Zkusil jsem KCheckGmail, ale nepodařilo se mi ho zprovoznit. Aplikace běží v systemtray, takže zabírá místo v paměti a pixely na ploše.

    Napsal jsem si tedy skript, který kontroluje příchozí emaily a zobrazuje malé okénko v případě nové nepřečtené zprávy. Použil jsem Ruby, protože v něm trochu umím, v kombinaci s Qt, mou oblíbenou grafickou knihovnou. Skript spouští démon Cron pravidelně každých 5 minut.

    Prohlédněte si zdrojový kód: checkgmail.rb.

  • Zvýšení produktivity vývoje webů

    Při vývoji webů jsem vždy pracoval na adrese http://localhost/projekt. Naštvalo mě ale, že když web používá mod_rewrite, nemusí kvůli podadresáři fungovat přepisování URL správně. Začal jsem tedy vždycky linkovat projekt na adresu http://localhost. Když se k tomuto přidá fakt, že často potřebuji importovat databáze, neustále všechno zálohovat a exportovat, musím napsat spoustu příkazů, aniž cokoliv naprogramuji. Důležitý je také fakt, že nesmím nic zkazit. Rozhodl jsem se tedy, že rozšířím svůj starý skript rmbackups na export tar archivu webu a napíšu si sadu skriptů pro práci s weby. Vzor mám ve skriptech pro práci se zdrojovými soubory v KDE.

    Myslím, že se mi skripty docela povedly. Základní nastavení se provádí v hlavičce souboru. Práce s příkazy je jednoduchá:

    # před začátkem práce pustím
    wds projekt
    # případně pokud chci importovat databázi např. z ostrého serveru
    wds projekt -db import.sql
    # potom, když chci zazálohovat aktuální stav projektu, pustím
    wdtag název_zálohy
    # po ukončení práce na projektu program jednoduše
    # exportuji buď do tar.bz2 archivu
    wde tar
    # nebo když budu soubory uploadovat, chci
    # aby se mi zdrojové soubory nakopírovaly do nějaké dočasné složky
    wde files
    

    Použití je na vlastní nebezpečí. Skript obsahuje několik rm -rf, takže neodborný zásah může vést ke ztrátě Vašich dokumentů.

    Stáhnout

  • Nápady na vývoj Konqueroru

    Objevil jsem chybu v modulu kdewebkit, která způsobila pád konqueroru z flashplayeru. Bug to byl velice hnusný, protože nevracel žádný použitelný crashreport. Po víkendu bughuntingu jsem zjistil, že chybu způsobuje AdblocK, který zablokuje reklamu vkládanou youtubem do videí.

    Bug byl odhalen, ale než se tak stalo, nastavil jsem si vcelku pěkné prostředí pro vývoj KDE a zkompiloval SVN verzi jeho knihoven. Tak si říkám, že bych mohl taky něco naprogramovat.

    Mám následující nápady:

    • Fulltextové hledání v konqueror shortcuts history
      • když napíšu “seznam”, chci aby mi to našlo, že jsem hledal “g seznam” (nebo to může být jak v opeře -nenajde to g seznam, ale v historii prohlížení to najde googlesearch seznam)
      • když napíšu “g máš”, chci, aby mi to našlo “g ahoj jak se máš”
      • když napíšu “g seznam”, chci, aby mi to našlo, že jsem hledal “j seznam”
    • FastDial pro konqueror? To bude asi složité.
  • Ještě k Tele3

    Ukázalo se, že pánové z tele3 .cz nejsou ohledně databází tak oškliví, jak jsem popisoval v příšpěvku Trable s hostingem. Osobně mě kontaktovali a nabídli freehosting databáze. Za to jim děkuji.

  • Pacman da Pampuch

    Pacmana ovládáte šipkami. Cílem je získat co nejvyšší skóre, čehož lze dosáhnout jezením žlutých puntíků. Když sníte všechno jídlo, postupujete do dalšího levelu. Po mapě vás honí duchové, na které si musíte dávat pozor, protože máte jen 3 životy. Když Pacman sní modrý puntík, získá na 10 vteřin schopnost zabít příšery.

    Pokyny pro Windows

    1. Stáhněte zip soubor (22.8MB)
    2. Rozbalte
    3. Pusťte pacman.exe

    Pokyny pro Unix

    1. Stáhněte zdrojový kód (2.5MB)
    2. Zkompilujte, nainstalujte a spusťte pomocí příkazů:
    $ qmake
    $ make
    $ sudo make install
    $ bin/pacman
  • Vývoj Pacmana – beta fáze

    Uplynul přes měsíc a v něm jsem s Pacmanem pohnul do velice použitelné verze. Mimo oprav mnoha a mnoha bugů jsem si pohrál s intrem `Pacman da Pampuch`, připravil nápovědu, vyrobil levely a omaloval zdi. Snažím se o co nejvíce user-friendly rozhraní.

    Do finální verze už chybí jen dodělat zvuky a vyřešit pár dalších drobných problémů.

    První level Pacmana se spuštěnou nápovědou na pozadí
    První level Pacmana se spuštěnou nápovědou na pozadí
  • Trable s hostingem

    Posledních pár dnů byl web mimo provoz kvůli problémům s freehostingovou společností AgilityHoster, u které jsem dosud hostoval. AgilityHoster mě naštval, protože po aktualizaci na novější verzi WordPressu mi neustále házel chybu `500: script failure` a nešlo se jí zbavit.

    Hledal jsem tedy nový freehosting a našel jsem tele3.cz. Souběžně s tím jsem se hrabal v doméně bloog.cz, a tak se stalo, že jsem omylem převedl doménu zee.cz pod hosting banan.cz. Když už tam byla, prodloužil jsem ji o rok a následně převedl pod tele3.cz. Všechno se zdálo být v pořádku, až jsem si najednou uvědomil, že tele3 nemá zadarmo MySQL. Dokonce ani SQLite na tele3 není dostupné. Sakra!

    Situaci jsem vyřešil velice jednoduše. Zařídil jsem si účet a databázi na freemysql.net. Nakonec mám rychlý, i když ořezaný webhosting s moooc pomalou databází. Oproti předchozímu hostingu by měla být delší doba přístupu ke stránce, ale po získání HTML už by se stránka měla načíst rychle.

    Při příležitosti funkčního hostingu jsem napsal malý widget na zobrazování TODO listu. Seznam je uložen v textovém souboru, který lze upravovat přes FTP. TODO list můžu elegantně editovat z konzole a změny se ihned zobrazí zde na webu.

  • Vývoj Pacmana – Den 5

    Sice už je po oficiálním termínu odevzdání, díky malému triku ale můžu na programu pracovat o něco déle. Cvičícímu jsem totiž poslal na soubory s programem pouze odkaz, takže pokud bude můj projekt kontrolovat později, uvidí aktuální verzi a ne tu, co jsem měl hotovou do termínu. I kdyby trik nevyšel, stejně budu mít možnost ukázat lepší verzi při osobním předvedení. Chci dotáhnout svého Pacmana do maximálně použitelného a hratelného stavu.

    Od předchozí verze jsem pracoval na AI a na příšerách obecně. AI teď skutečně funguje: příšery hráče chytnou, když nic nedělá. Po snědení žrací  kuličky se změní barva monster a utíkají pryč od Pacmana. Po zabití se příšera vrací směrem k základně. Bohužel je v návratu k základně bug, protože příšery nevlezou dovnitř, ale jenom okolo ní projdou. Chybu spojuji s problémem s detekcí křižovatek, příšery na některých totiž nereagují.

    Screenshot, kde mě honí příšery