čtvrtek 18. listopadu 2010

Akicon 2010

Tak jako každý rok, tak i letos v Listopadu se konal Akicon. A tak jako loni jsem byl jedním z vrchních organizátorů. A stejně jako minulý rok jsem si celý víkend s Akiconem náramně užil. Ale pojďme popořadě. 

Týden před Aki
Přípravy na Aki začaly už někdy na jaře, ale teprve týden před akcí začal pořádný kolotoč. Jak si asi každý organizační tým po skončení nějakého conu říká, že příští rok už budou mít všechno připravené předem, tak se to jako na potvoru nikdy nestihne. Akicon tímhle samo sebou trpí také, a tak jsme ještě v pondělí neměli titulky na třetinu promítání... Ale naštěstí se všechny podařilo dotáhnout v čas do použitelného konce a promítat se mohlo.

Pátek
V pátek jsem ještě dodělával časování k titulkům Aerogradu. Popravdě nechápu, jak někdo mohl ty původní vydat - fixní délka titulku 2 vteřiny se sice vyrobí hezky, ale pokud se na takovou práci chcete podívat, tak přijdete o komfort. Nakonec jsem je dodělal v 11 hodin, dal si oběd a vydal se na Florenc vyzvednout Hintzua a jeho harém.
Během cesty k autobusovému nádraží jsem se utvrdil v ražení myšlenky, že na Florenc se autem prostě nejezdí. Všude samé kolony, popojíždění, naprosto nelogické přikázané směry a další omezení, které člověka dokáží vytočit k nepříčetnosti. Ale nakonec jsem dojel... jenom s půlhodinovým zpožděním oproti plánu. 
Pak následoval druhý oběd, tentokrát v Palladiu v nějaké z místních občerstvoven (její jméno si fakt nepamatuju). Jídlo bylo dobré, debata s Hintzuem také. A pak se pokračovalo dál...
Slíbil jsem BO, že jim dovezu nějaké mangy do jejich stánku. Popravdě čekal jsem nějakou větší krabici plnou mangy, která se do auta někam vejde. Nevím proč, ale ve výsledku jsem měl v autě alespoň čtvrt tuny mangy v kupě malých balíčků. Ale co, ještě bylo kam je dát. Pak jsem pokračoval směr Zahrada... A jako na potvoru opět všude uzavírky, dopravní omezení, kolony a čekání. Dorazil jsem o hodinu později, než jsem si myslel a o tak dvě hodiny později oproti plánu... 
Další výprava byla směr domov pro hromadu techniky, kterou bylo potřeba na  místo dovézt. Přijde mi, že letos jí bylo nějak přehnaně moc, ale i tak jsme všechno bez rozdílu využili. Cestou jsem ještě nabral Greka a jeho kumpanii a vydal se zpět. 
Pak následovalo zkoušení divadla, příprava techniky, stěhování stolů, židlí a dalších věcí a nakonec generálka Sedmi malých otaku. Generálka ukázala, že je potřeba optimalizovat přípravnou fázi (připravovat techniku půl hodiny prostě nejde, zvlášť když publikum očekává zábavu) a že to asi nebude takový fail, jak se očekávalo. 
Po zkoušce SMO už jen domů a spát... 

Sobota
V sobotu jsem ráno překontroloval všechny materiály určené k promítání a vydal se do Zahrady. Tam se ještě jednou zrychleně ověřilo SMO a vpustila se divá zvěř návštěvníci. Oproti očekávání jich dorazilo méně, než loni. Docela nás to všechny překvapilo (obzvlášť poté, co nám týden chodily dotazy, jestli ještě nejsou volné registrace). 
Z programu jsem zastihl jen kousky, ale alespoň stručně shrnu to, co jsem viděl:
Novinky v Anime byl dobrý nápad, poslední rok byl co se týče titulů i docela zajimavý, ale bylo vidět, že oba přednášející neměli dost času se secvičit a dát dohromady ucelenou prezentaci, které naprosto zásadně chyběly ukázky z alespoň některých videí (a že by se jich na youtube dalo najít hromada)
Střety s realitou nijak zvlášť nepřekvapily - Hintzu je kvalitní přednášející, perfekcionista a odvedl při přípravě pořádný kus práce. To, že mu jeho dálkový ovladač přestane fungovat jsem popravdě taky čekal (není nad pořádné řešení zahrnující klubko drátu a mechanicky odolná tlačítka). 
Nejtýranější monument se taktéž povedl. Obzvlášť velký ohlas byl na ukázku specifického prznění Tokijské věže z DMCčka. Mám pocit, že to v mnoha nezasažených zanechalo hluboké stopy. 
Sedm malých otaku se nakonec v celku zdařilo, až na výpravné selhání systému na začátku třetího kola (budu se muset podívat na záznam kolik času mi vlastně zabrala oprava ^^). Přijde mi docela škoda, že zájem o soutěž byl malý. Přecijen se lidé mohli něco nového dozvědět a mnohdy se i pobavit, i když za zábavou mnohdy  stála čistá náhoda.

Jinak jsem z programu v podstatě nic neviděl (a to ani trochu). Neustále bylo co dělat. 

Neděle
Noc proběhla relativně v poklidu (hlavně ta část, kterou jsem prospal). Ráno jsem se pak dozvěděl, že v polovině nočního programu byly naprosto otřesné fonty. Nikomu to ale podle všeho nevadilo, tak jsem je opravil alespoň pro reprízy přes den.
Ráno jsem si opět užil službu v režii velkého sálu a viděl tak přednášku Lusi a Vavči. 
Netradiční hrdinky byly výborné. I na výběru bych se s Lusi dokázal shodnout.
Novinky Asijské kinematografie v nasazené kvalitě pokračovaly až do konce Akiconu. Z téhle přednášky jsem si odnesl několik tipů na filmy, které určitě budu chtít vidět.

Musím říct, že se mi letošní ročník líbil. V podstatě jedinou vadou na kráse bylo páteční popojíždění autem, ale jinak v podstatě všechno fungovalo přesně tak, jak má (až jsem se několikrát divil).
Vlastně už teď můžu říct, že Akicon 2011 bude. Kde a kdy se ještě neví, ale rozhodnuto bude určitě ještě do konce roku...

pondělí 14. června 2010

Letní semestr na FELu

Studium pro mne bylo hlavním zdrojem zábavy po celý poslední měsíc. Prostě nastal konec semestru a potřeba řešit zápočty a zkoušky. Musím zkonstatovat, že tenhle semestr byl na závěr nějak moc hektický. Hromada prezentací všeho možného, nutné odevzdání zápisů z měření a občas nepříjemní cvičící byli strašlivými žrouty času. Zkouškové se naštěstí neslo v klidnějším duchu a tak jsem vše dostal do stavu Absolvováno. Některé předměty stojí za zmínku, tak se o nich trochu rozepíšu.

Jako volitelný předmět jsem si zvolil předmět se zajímavým názvem Signálové procesory v praxi. Učí ho Katedra kybernetiky a měření. Předmět je úplně nový (přípravky na kterých se ta praxe konala se do školy dostaly týden před začátkem semestru) a tak první běh trpěl některými dětskými nemocemi - především někdo inteligentní vymyslel, že je dobré tenhle předmět dát proti přednáškám z jiných předmětů, což vedlo k razantnímu úbytku přihlášených studentů (nakonec nás bylo pokud vím pět). Další drobný problém byly přípravy přednášek - přednášející byl opravdu o kapitolu před námi, nebo na stejné kapitole jako my. Tolik k problémům. Náplň předmětu byla v podstatě postavena na praktické realizaci algoritmů zpracování signálu na reálném signálovém procesoru Blackfin. Konečně jsem se tak na univerzitě dostal k nějaké praktické realizaci, která mi u většiny ostatních předmětů prostě chybí. Pokud máte chuť se tématem výkoných procesorů zabývat, zkuste si tenhle předmět zapsat, určitě neprohloupíte.

Oborové předměty se nesly v přátelském duchu, který je pro katedru Mikroelektroniky příznačný. Hodně mne překvapil pan Voves, který učí teorii kolem jevů v nanostrukturách a realizace těchto struktur. Jeho výklad byl naprosto vynikajicí (obzvlášť s přihlédnutím k faktu, že se jedná o ne zrovna záživnou problematiku). Návrh integrovaných struktur byl zaměřen především na problematiku návrhu OZ (taktéž plus - konečně nám někdo ukázal k čemu jsou nám naše znalosti dobré), ale i dalších elementárních bloků, které se v integorvaných obvodech používají. Mikrosystémy pro mne nebyly v podstatě ničím novým, neboť s mnoha principy a aplikacemi jsem se už setkal v dřívějších letech. Jejich cvičení přineslo jednu podstatnou změnu - konečně nám někdo ukázal jak pracovat s vědeckými články (a hlavně kde je získat).

Povinné Antény byly trochu problematické - přednášejícímu nebylo co vyčíst, ale cvičení byl někdy horror. Ono když dostanete nějakých 70 000 hodnot, které máte zpracovat, tak to jednak zabere celkem dost času a navíc vytištěný protokol z měření vypadá spíš jako menší kniha (podle mne by se mělo školství začít držet hesla šetřete naše lesy).

Poslední předmět, který jsem měl v rozpisu jsou Mikroprocesory a mikropočítače. Tenhle předmět byl nádhernou ukázkou epického selhání v přípravě, přednáškách i cvičení.

Navštěvování přednášek jsem vzdal hned na té první. Prezentace vyznačující se 12 a více řádky souvislého textu, dva přednášející, kteří se hádají o tom, jestli to, co napsali na tabuli je správně, naprosto nevýrazný hlasový projev. To je garance téměř nulového přínosu pro posluchače. Obsah přednášek by se dal shrnout dvěma slovy - zmatečný a místy zcela zbytečný. Opravdu je nutné v předmětu zabývajícím se především programováním pro jednočipy řešit otázku adresace procesorů řady x86 (v reálu, protektu i PAE), vysokorychlostní rozhranní typu Firewire, nebo PCI Express? Podle mne nikoliv.

Cvičení byla rozdělena na dvě půlky - jedna pracovala s procesory rodiny AVR a druhá 8051. Podle toho, co jsem slyšel byly všechny cvičení vedeny značně zmateně (pominu fakt, že učit 8051 je v dnešní době nesmysl). Zkouška se pak nesla ve stylu hodně důkladného ověření znalostí studentů (a jejich trpělivosti, neboť vyzkoušet prvních 5 trvalo asi 4 hodiny).

Doufám, že garanti tohoto předmětu budou reflektovat výsledky studentské ankety. Očekával bych, že v ní bude velké množství připomínek podobných těm mým.

Animefest

V poslední době jsem neměl moc času sem psát - škola a další problémy každodenního života mi ubraly tolik energie, že se mi psát nechtělo. Tak si to teď vynahradím ^_^.
Druhý květnový víkend se konal Animefest. Letos jsem stejně jako několik posledních let pomáhal jako promítač. Letos jsem si pracovně užil celkem dost zábavy a tak jsem neměl čas skoro na žádný program (a to jsem doufal, že si Letní válku vychutnám na plátně). Zato jsem si pokecal s otaku z vzdálených částí naší republiky (čti Moravy a Slezska), což mi jako program nakonec stačilo.
Doprava na Animefest byla taky celkem zábavná. Držel jsem se hesla, že když naplním auto, tak cesta vyjde na stejnou cenu, jako 15ti členná skupinka cestující vlakem. A navíc člověk může odjet kdykoliv a ne jen, když si ČD usmyslí :). Cestou jsme měli celkem štěstí na informace. Cestou do Brna jsme objeli jednu potenciálně problematickou nehodu přes několik okolních vesnic a cestou zpátky jsme si před Prahou švihli v podstatě to samé (tentokrát byl problém s dopravním omezením). Jako navigátoři fungovali Wolfii a Manta, kterým za donavigování do cíle děkuji. 

neděle 2. května 2010

Hrátky s Debianem

Jako technik jednoho conu jsem každoročně postaven před problém, jak zajistit na X náhodných vypůjčených počítačích zajistit alespoň trochu jednotné softwarové prostředí. Když se tím člověk nezabývá, tak to dopadne blbě - třeba tak, že přijde přednášející s prezentací, kterou počítač neotevře. Já již několik let jako základ používám Linux. Jiné OS by mohly být zdrojem nějakého licenčního problému, což ve stavu, kdy za technickou stránku odpovídám, rozhodně nechci. Vzhledem k mé oblibě Debianu je jako základ použit právě on.

Před dvěma lety jsem připravil relativně jednoduchým hackem systém tak, že byl na USB disku společně s daty (nějaké to video, prezentace a hromada dalších pitomin) také image systému. Fungovalo to jednoduše - Debian má hodně univerzálně pojatý initrd, který se dá velice jednoduše přegenerovat. Jediná úprava oproti defaultnímu stavu tak byla úprava skriptu, který připojuje ROOT. Úprava vypadala asi takhle:

/scripts/local:

- mount ${roflag} -t ${FSTYPE} ${ROOTFLAGS} ${ROOT} ${rootmnt}

+ mkdir /sda
+ modprobe vfat
+ modprobe ext3
+ mount -t ${FSTYPE} ${ROOTFLAGS} ${ROOT} /sda
+ mount -t ext3 /sda/root.ext3 ${rootmnt} -o loop

Tohle byl relativně jednoduchý hack, který neřešil hromadu věcí. Především systém po pivot_rootu z initrd neviděl /sda a mám pocit, že ho pořádně neumountoval. To samé se dělo s loopbackem systému, takže měl systém tendenci se rozbíjet. Jinak to ale fungovalo celkem dobře. Hlavně byl debootstrap, úprava skriptu a nakopírování na disk otázka chvíle. Větší problémy nastávaly s přemlouváním grubu, aby se hodil na USB Storage (Obzvlášť když do toho všeho přišel grub2).

Letos jsem se ale rozhodl nedělat všechno na poslední chvíli a podíval jsem se tomu na zoubek trochu víc (měl jsem sice ještě další důvody, ale to nechme stranou). Jedna z věcí, co se mi nelíbila na předchozím řešení byl fakt, že obraz rootu byl relativně velký (root.ext3 měl velikost asi 1.6 GB a občas byl docela problém se do toho prostoru vůbec vejít (ono když potřebujete openoffice.org, tak vám místo velice rychle mizí před očima). Vzhledem ke koncepci systému (nainstalované aplikace zůstávají stejné a jediné, co se trochu mění jsou nastavení, případně nějaké ad-hoc instalované aplikace), jsem dospěl k názoru, že bude vhodnější použít styl známý z Live CD a podobných mini-distribucí - mít základní systém komprimovaný a přes něj mít overlay s nějakým malým ext3 obrazem.

Úvahu o tom, co chci dělat, jsem měl, tak jsem se pustil od práce. Pro začátek jsem debootstrapnul systém a začal řešit, jestli jsou všechny potřebné věci v běžném jádru. Bod 1, squashfs jako vhodný komprimovaný filesystém v aktuálním jádru je (sice nemá podporu pro lzma, ale jak jsem se později přesvědčil, ta s velikostí moc neudělá). Problém ovšem nastal s virtuálním systémem, který mi udělá overlay základu a datového bloku. Moje první představa byla podívat se po unionfs. Ten se využívá velice často a očekával jsem jeho přítomnost v jádru. Naštěstí jsem brzy přišel na alternativu. Debian má v základu podporu pro "Another Union FS" (AUFS), který je obdobou unionfs. Tím mi odpadla práce s rekompilací jádra (do čehož jsem se téměř pustil, než jsem AUFS našel).

Další věc byla úprava initrd, což bylo velice jednoduché - našel jsem správný  zdroj. Skript na téhle stránce mi přišel jako dobrý základ pro systém. Pak mne napadlo, že když je základní image menší jak pul giga, tak by možná bylo dobré jej natáhnout do paměti a nebýt závislý na externím disku (to se hodí třeba na pokladně, nebo na nějakém servisním počítače). Tak jsem skript upravil tak, aby se image nakopíroval do paměti a běželo se z ní.

Tohle řešení nádherně fungovalo. Jediná vada byla, že zkopírovat půl giga z Flashky do paměti chvíli trvá a chtělo by to progress bar. Tak jsem si progress bar napsal. Není dokonalý, ale svoji funkci plní dobře. Tady je jeho kód:

#!/bin/sh
# usage cp.sh from to
BLOCK=1048576
OUT="############################################################"
OUT1="                                                            "
LEN=`du -k $1 |cut -f 1`
CNT=`expr $LEN \* 1024 / $BLOCK `
echo Copying $1 to $2
#for i in `seq 0 $CNT`; do
i=0
while [[ "$i" -le $CNT ]]; do
        dd if=$1 of=$2 bs=$BLOCK count=1 skip=$i seek=$i >/dev/null 2>/dev/null
        WA=`expr $i \* 60 / $CNT`
        WB=`expr 60 - $WA`
        echo -en "\015 ["
        [[ "$WA" != "0" ]] && echo -en `echo "$OUT"|cut -c 1-$WA`
        [[ "$WB" != "0" ]] && echo -en "`echo "$OUT1"|cut -c 1-$WB`"
        echo -en "] $i/$CNT MB"
        i=`expr $i + 1`
done
echo

Kdyby měl někdo nějaký nápad, jak ho vylepšit, tak mi dejte vědět (tohle bych celkem rád dotáhl do konce).

Momentálně chci ještě několik věcí vyřešit, ale to už jsou naštěstí drobnosti. A možná, až bude systém otestován, tak ho i vystavím :).

pondělí 8. března 2010

Trocha historie - dxhttpd

Tak tohle byl můj první velký programátorský projekt - plán byl vytvořit malý webserver, který bude sloužit jako základ pro další projekty. Rozšířená funkcionalita měla být realizována pomocí přilinkovaných modulů. Nakonec se použití omezilo na maturitní práci, která byla jednou z motivací tohohle řešení.
Kód zde nechávám k dispozici jako ukázku toho jak webový server nepsat. V první řadě je pěkně blbý nápad využívat na síťovou komunikaci služeb fread a fwrite (unixové systémy mají krásné volání open, read a write, které nemají takovou režiji). Další věc, kterou je opravdu lepší nepoužívat je provoz ve více vláknech - syscally typu select a poll jsou v tomhle případě nádherně použitelné a mnohem efektivnější (tohle si mnohdy lidé neuvědomují ani u komerčních projektů, kde by se mohla ušetřit hromada problémů).
A nakonec samotný kód, doufám, že se budete bavit při jeho čtení (je to celkem sranda). Ve verzi 2 už to dokonce tolik nepadá. Verze 1 pak segfaultovala celkem běžně :)

Blog...

Tak už na mne taky došlo, mám svůj blog. Rád bych sem naházel nějaké své starší prográmky (především ty, které jsem nikde nepublikoval), případně komentoval dění kolem mne (jak se znám, tak to bude především kritika všeho a všech :) ).
Ale to všechno ukáže čas...