30.7.08

Člověk, kuře, kráva a prase - budoucnost fauny u nás?

Dnes jsem se dočetl další zajímavou věc - šakal míří do Čech, myslivci jsou ve střehu. Podobně před pár dny vyšel článek o šíření dalších šelem do ČR. Vesměs jde o obavy z toho, že tato zvířata budou škodit a nedejbože ohrožovat člověka. Chápu, strach je strach.
Jenže podívejme se, jak současná příroda vypadá. Co vidíme venku za zvířata, myslím tím živočichy větší než 20 cm? Králíky, bažanty, občas nějaká ta srna... ve městech se to zredukovalo na potkany a holuby. Co se úmyslně chovaných zvířat týče, tak jsou to vesměs jen psi a kočky (opomiňme hrstku chovatelů jiné zvěře), pro jídlo prasata a krávy, někde kozy, ovce. Kam se poděla rozmanitost, která tu byla dříve běžná?
Člověk svým chováním vytlačuje ostatní živočišné druhy a jak čtu výše zmíněné články, tak ho to nikterak netrápí. Pak se akorát udělá jen mediální trpká tečka "to a to zvíře vyhynulo". Kam to za pár desítek nebo stovek let dospěje? Bude tu jen člověk a jeho chovná zvěř, ostatní druhy vymizí? Budou znát za 1000 let naši potomci zvířata větší jak půl metru jen z učebnic a obrázků?
Je mi jasné, že nikdo nechce, aby byl ohrožován nějakým medvědem nebo aby mu šakali a lišky pozabíjeli slepice. Je mi také jasné, že myslivci musí přemnožený počet regulovat. Jenže co je to ten přemnožený počet, jaké je to číslo? Bude se časem snižovat? Bude se tolerovat u některých zvířat výskyt byť jediného exempláře? V Beskydech se objevilo 5 medvědů a zvedl se povyk, že tam nemají co dělat. A jak se tam asi dostali, někdo je tam dovezl? Ne, dostali se tam přirozeně.
Myslím si prostě, že je to o toleranci, o uznání faktu, že člověk (se svými potřebami) není jediný tvor na planetě a pokud opravdu nechceme zredukovat faunu jen na chovnou ("užitečnou") zvěř, měli bychom se nad tímto zamyslet. Vzpomněl jsem si teď na nějaký dokument nebo zprávu z Afriky, kde se řešil také úbytek nějakých kočkovitých šelem (tygrů?)... jedna starší paní tam říkala něco ve smyslu: "Když jsem byla mladá, bylo úplně normální, že jsme pracovali na poli a tygři leželi opodál a dívali se na nás a nic nám nedělali, brali jsme to jako normální věc a nebáli jsme se jich."
No uvidíme za pár desítek let, kam se to vyvine... asi budeme dohánět stavy živočichů klonováním, abychom je potom nacpali do zoologických zahrad.

26.7.08

Eternal Lands

Kdysi dávno jsem tu psal o MMORPG hře Planeshift. Hra mě na začátku uchvátila, protože to byla moje první MMORPG hra, co jsem poznal, ale čím déle jsem ji hrál, tím víc mě přestávala bavit a v současnosti ji nehraju skoro vůbec. Před cca 2 týdny jsem však objevil jinou MMORPG - Eternal Lands. A musím říct, že mě příjemně potěšila. Pustím se tedy to takového srovnání s Planeshiftem, který znám (World of Warcraft neznám a dokud to nebude podobně free jako Eternal Lands nebo Planeshift a portované pro Linux, tak to ani hrát nebudu).
Eternal Lands (EL) je typická MMORPG zasazená do fantasy světa plného bájných bytostí. Není tu sice na výběr tolik ras, jako v Planeshiftu, ale to na zábavě vůbec neubírá. Oproti Planeshiftu je však hra dle mého daleko více propracovanější.
Grafika je přibližně stejná, v EL možná o něco lepší, členitější. Pohyb kamery je tu omezen na izometrický pohled, což nijak moc nevadí, postava se stejně pohybuje po neviditelných hexech, podobně jako třeba ve hře Fallout. Zajímavě působí i propracované detaily jako třeba stíny - stojíte-li delší dobu na jednom místě, můžete vidět, jak se stíny protahují a prodlužují podle toho, jak svítí slunce.
Uživatelské rozhraní je oproti Planeshiftu daleko lepší: v Planeshiftu se hodně věcí ovládalo zadáváním příkazů přímo z klávesnice (naštěstí to šlo navázat na klávesové zkratky), v EL je ovládání pohodlně myší, na klávesnici skoro nemusíte sahat. Celkově je uživatelká přívětivost lepší a intuitivnější, veškeré lektvary, kouzla, předměty se dají vyrobit skrze GUI, aniž byste museli nějak složitě zjišťovat od ostatních postav, jak se daná věc vůbec dělá, plusem je totiž integrovaná nápověda, kde jsou popsány všechny předměty či kouzla a jak jdou vyrobit.
Dalším plusem je mapa, do které lze psát i vlastní poznámky. Nemusíte bloudit po světě a hledat nějaký chrám nebo třeba uhelný důl (což byla v Planeshiftu věc nemožná, mapa tam neexistovala a ani v herním světě nebyl nijak vyznačen, takže bez vyptávání jste se o dole ani nedozvěděli). Obdobně lze i úkoly zadávané NPC plnit úplně snadno, rozhovor totiž probíhá podobně jako ve starších adventurách, tedy že je vám dána možnost výběru, na co se zeptáte (opět ovládání myší). Nemusíte tedy jako v Planeshiftu zadávat donekonečna obměny různých frází, až vám NPC konečně odpověděla.
Postavy se také daleko rychleji a viditelněji zdokonalují, v Planeshiftu trvalo hrozně dlouho, než jste se v nějaké vlastnosti povýšili na vyšší úroveň - sám si pamatuju, kolik hodin čistého času jsem strávil běháním pro železnou rudu, abych ji pak mohl přetavit do železných prutů a ve výsledku prd z toho. Díky výše zmiňované snadnosti zdokonalování se je hra mnohem zábavnější, nemusíte po webových stránkách zjišťovat, jak udělat to či ono a můžete klidně hned zezačátku účinně kouzlit nebo vyrábět lektvary.
Další vlastností, kterou jsem u Planeshiftu neviděl, byla interakce adminů serverů alias bohů se světem EL. Jednoho dne se světem nesly zvěsti, že ostrov čeká invaze. A ono jo - za pár minut se po světě začaly potulovat (mou postavou) neporazitelné kreatury a jediné bezpečné místo byl Isla Prima, kde se postavy z celého světa sešly a přečkávaly tam invazi. Zkusil jsem si vyrazit do světa, ale opravdu nebylo nikde bezpečno, útok rozzuřené pandy bych asi nepřežil :-), tak jsem se vydal zpět na Isla Prima. Nebo další příhoda: nějaká postava urazila boha (tedy správce), tak ten řekl, že kdo ji jako první zabije, dostane odměnu. Hráči začali lov na chudáka kacíře... :-) (na postavy se normálně útočit nedá, jen ve speciálních oblastech, ale toto byla prostě výjimka).
Prostě shrnuto a podtrženo, Eternal Lands mi ve všech ohledech přijde mnohem zábavnější a hratelnější než Planeshift. Pokud máte dostatek času a dokážete se obrnit proti závislačení, doporučuji zkusit. :-)

21.7.08

del.icio.us

Většina lidí jistě používá při surfování po internetu záložky (anglicky bookmarks), aby si nemusela pamatovat adresy všech zajímavých či často navštěvovaných stránek. Tyto záložky jsou uloženy v souborech prohlížeče.
Problém vyvstává, chcete-li přistupovat k záložkám i jinde, než z vašeho počítače. Jistě, existují pluginy do prohlížeče Firefox, které umožňují ukládat svoje záložky na net, ale ne vždy máte přístup k Firefoxu s tímto pluginem.
Existují stránky http://del.icio.us, které umožňují tzv. social bookmarking. Jinými slovy řečeno - ukládáte si zajímavé záložky přímo na svůj profil na del.icio.us a značíte je štítky - tagy. Princip je jednoduchý a nezdá se na tom na první pohled nic světoborného, ale opak je pravdou. Díky vašim vlastním štítkům je pak vyhledávání informací daleko snazší, než když použijete vyhledávač. Víte totiž, co na daných stránkách přibližně je a otagujete si je tak, jak vám to nejlépe vyhovuje. Samozřejmostí je přidání si vlastního komentáře k odkazu. Potřebujete pak vyhledat články, co se týkají nastavení webkamery pod Linuxem? Zadáte vyhledávat tagy "Linux", "webcam" a třeba ještě "flash" a ono vám to vrátí všechny záložky, které jste otagovali těmito názvy.
Slovo "sociální" u tohoto vynálezu spočívá v tom, že vaše záložky může prohlížet kdokoliv jiný (samozřejmě lze udělat některé záložky privátní). Uděláte okolo sebe skupinu lidí s podobnými zájmy a můžete procházet odkazy, které jim přijdou zajímavé. Můj profil lze nalézt na http://del.icio.us/m1c4a1.
del.icio.us samozřejmě nabízí plugin do prohlížečů, v mém případě Firefoxu, kterým snadno můžete přidávat linky na váš profil.

20.7.08

Malování domu

Dnešní víkend byl zasvěcen malování domu. Pravidelní čtenáři ví, že se nám povedlo (díky vadnému bojleru) vytopit a promáčet stěny po celém horním patře našeho domu. Zdi již proschly a ani nebylo moc poznat, že se tu nějaká katastrofa udála. Každopádně fleky tu byly stále a proto jsme se rozhodli, že vymalujem.
Malovaly se 3 místnosti - v pátek se dělal můj pokoj, v sobotu obývák a v neděli bráchův pokoj. Nejvíc času nezabralo samotné malování, ale stěhování nábytku a uklízení nehorázného bordelu, co přitom vznikl, vysávání, utírání prachu, čištění koberců, záclon, oken, vyhazování starých věcí a oblečení, utírání barvy - prostě takovej generální úklid. Trocha barvy mi ještě zbyla, tak jsem se rozhodl vymalovat i záchod a koupelnu.
Malování se zúčastnila téměř celá rodina, přece jen toho bylo hodně (a ještě to není komplet, brácha se rozhodl udělat si novou podlahu, takže není sklizeno).
Ale konečně je zas na pár let klid. Z původní žluté barvy mám nyní bílou, přece jen je to praktičtější (barva prosvítá a tak se musí při změně barvy dávat více vrstev, barva je navíc dražší), domeček je čistej, jak nebyl snad od dob, co byl postavenej.
Jo a na poslední fotce je idylka, kterou jsem trávil večer po úklidu - ke štěstí mi stačí zásuvka, židle, switch, pár kabelů a notebook. :-)

6.7.08

Obnova ODT souborů ze souborového systému EXT3

Konečně se nemožné stalo skutečností: před pár měsíci (přesněji 25. dubna v 19:27:32, unixovým časem 1209144452) se mi podařilo omylem smazat všechny soubory na disku. Data jsem se snažil obnovit různými nástroji, které jsou na netu k dispozici, bohužel ani s jedním jsem neuspěl; psal jsem o tom zde. Naděje jsem vkládal do programu ext3grep, který mi sice hodně pomohl a nějaké soubory obnovit dokázal, bohužel ne ty, co jsem potřeboval nejvíce, konkrétně šlo o několik ODT souborů (textových dokumentů OpenOffice). S autory ext3grepu jsem řešil způsob, jak data ven dostat a podařilo se! Postupně data dostávám z poškozené partišny ven, sice už to dělám několik hodin, ale jde to! Třeba se tento poznatek bude někomu také hodit.
Následující rady platí pro obnovu ODT souborů, ale určitě se dají předělat pro použití vyhledávání jiných typů souborů.

V prvé řadě je třeba znát bloky na diskovém oddílu, kde se ODT soubory nacházejí. K tomu posloužil právě program ext3grep, který mi padal při obnovování dat, ale bloky nalézt dokázal. ODT soubor je v podstatě hromádka zazipovaných XML souborů. Signatura ODT je tedy stejná jako u zip souboru, podle souboru /usr/share/misc/file/magic:
# ZIP archives (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu)
0 string PK\003\004
>4 byte 0x00 Zip archive data
>4 byte 0x09 Zip archive data, at least v0.9 to extract
>4 byte 0x0a Zip archive data, at least v1.0 to extract
>4 byte 0x0b Zip archive data, at least v1.1 to extract
>4 byte 0x14
>>30 ubelong !0x6d696d65 Zip archive data, at least v2.0 to extract
>0x161 string WINZIP Zip archive data, WinZIP self-extracting
Díval jsem se, jaké signatury vytváří ODT soubory a přišel jsem vskutku na posloupnost bytů 50 4b 03 04 14. Programem ext3grep jsem dal vyhledat všechny bloky, které na tuto posloupnost bytů začínají (připomínám, že je to celkem zdlouhavý proces, můj 107GB velký diskový oddíl to procházelo téměř 2 hodiny, počítač je tím navíc zcela zahlcený, že se nedá dělat téměř nic jiného):
ext3grep /dev/sda7 --unallocated --search-start `echo "0: 504b 0304 14" | xxd -r -`
Doporučuji tento výstup přesměrovat do nějakého souboru:
ext3grep /dev/sda7 --unallocated --search-start `echo "0: 504b 0304 14" | xxd -r -` |tee bloky_s_zacatky_odt_souboru.txt
Pozor, výsledné bloky nemusí nutně obsahovat ODT soubory! Jde o zip soubor, který má jako 5. byte hodnotu 0x14. Proto je vhodné prohlédnout všechny bloky a zkontrolovat, zda se na začátku (resp. od 50. bytu podle /usr/share/misc/file/magic) vyskytuje řetězec "vnd.oasis.opendocument.text". K tomu jsem si dopomohl následujícím skriptem (používám oddíl /dev/sda7 i dále v textu, změňte si jej dle potřeby):
#!/bin/sh
OUTPUT="odt_files.log"
rm -f $OUTPUT
while read offset;do
echo "Offset $offset"

echo "Offset $offset" >>$OUTPUT

hexdump -s `expr $offset \* 4096` -n 500 -C /dev/sda7 >>$OUTPUT

done
Skriptu je předat čísla bloků, které jste získali programem ext3grep (uvedeno výše), oddělené znakem nového řádku. Skript dělá to, že vypíše prvních 500 bytů od určitého bloku na disku, vše zapisuje do souboru. Hodnota 4096 je použita jako klasická velikost bloku na EXT3, pokud používáte jinou, ve skriptu ji změňte (viz tune2fs -l /dev/sda7 |grep "Block size"). Z tohoto souboru můžete snadno zjistit, které bloky obsahují skutečný ODT soubor - hledejte právě řetězec "vnd.oasis.opendocument.text".
Na obrázku (vygenerovaném programem hexedit, velmi užitečném nástroji, který se vám bude hodit, podobně jako výše použitý program hexdump) lze vidět v invertovaných částech začátek bloku, obsahujícího ODT soubor. Signatura 50 4b 03 04 14 značí zip soubor, byty řetězce "vnd.oasis.opendocument.text" zajišťují, že jde o ODT soubor.
Nyní tedy máme skutečné začátky bloků, kde se jistě vyskytuje nějaký ODT soubor. Přejděme k části, která je zdlouhavá, ale měla by přinést ovoce. Dodávám, že následující postup je odzkoušený pro kratší soubory o velikosti několika desítek kB - u větších souborů s největší pravděpodobností dojde k nějaké fragmentaci a data nebudou spojitě na disku. Tak bohužel. :-/ Budu předvádět na datech z obrázku výše.
  1. Spusťte hexedit /dev/sda7. Najděte si začátek bloku - číslo bloku * velikost bloku je vaše číslo. V mém případě 15974435 * 4096 = 65431285760 = 0xf3c023000 (hexadecimálně). Stiskněte Enter a zadejte hexadecimální hodnotu. Měli byste vidět začátek ODT souboru.
  2. Další krok je spíš věc štěstí a intuice. Scrollujte v hexeditu dolů, měli byste vidět nějaký ten binární odpad - není to moc čitelné, jde o komprimovaný soubor. Nicméně někde "dole" objevíte řetězec, který v ASCII části hexeditu vypadá zhruba takto: "META-INF/manifest.xmlPK..........(.........", podstatná je ta část META-INF/manifest.xmlPK.
  3. Posuňte se za řetězcem "nifest.xmlPK" na první tečku a posuňte se o 20 dalších znaků doprava. Dostanete se na adresu, která je konečnou adresou tohoto ODT souboru. V mém případě je to 0xf3c02b3ca, tedy 65431319498 decimálně.
  4. Rozdíl koncové a počáteční adresy vám dá velikost souboru: 65431319498 - 65431285760 = 33738 bytů.
  5. Vydělte tuto velikost velikostí bloku EXT3 (4096) a zaokrouhlete nahoru. Dostanete počet bloků, přes které soubor přesahuje.
    Zde se právě projevuje slabina tohoto řešení u větších souborů - soubory mohou být fragmentovány a může na ně být odkazováno přes nepřímé bloky.
    V mém případě 33738 / 4096 = 8,2 -> 9.
  6. Zkopírujte syrová data z disku z daných bloků do souboru, použijte jako počáteční blok číslo bloku z bodu 1.
    # dd if=/dev/sda7 bs=4096 of=block count=9 skip=15974435
    9+0 vstoupivších záznamů
    9+0 vystoupivších záznamů
    36 864 bajtů (37 kB) zkopírováno, 0,000116287 s, 317 MB/s
  7. Nyní je třeba ověřit, zda soubor block obsahuje celý odt soubor, otevřete jej v hexeditu, zascrollujte až dolů a musí obsahovat řetězec "META-INF/manifest.xmlPK..........(.........". Dojděte opět na konec ODT souboru (za PK a 20x šipka doprava) a zjistěte skutečnou adresu konce souboru - tato adresa zároveň určuje velikost souboru, opět jej překopírujte.V mém případě je velikost souboru 0x83ca = 33738 bytů, což správně odpovídá velikosti vypočtené v bodě 5.
    Kopírování je následující:
    #dd if=block bs=1 of=file.odt count=33738
    33738+0 vstoupivších záznamů
    33738+0 vystoupivších záznamů
    33 738 bajtů (34 kB) zkopírováno, 0,0752972 s, 448 kB/s
Soubor file.odt lze nyní otevřít v OpenOffice. Data jsou zachráněna!!
Občas se může stát, že dojde k nějaké fragmentaci a data tímto způsobem zachránit nelze. Občas si také OpenOffice postěžuje, že je soubor poškozen, dokument ale dokáže dobře obnovit. Osobně jsem měl s tímto postupem více než 90%-ní úspěšnost obnovy dat.
Snad to někomu pomůže... a rada na závěr: zálohovat, zálohovat, zálohovat! :-)

5.7.08

Jak jsem se stal nezaměstnaným

Ne, nebudu přepisovat známou povídku Šimka a Grossmanna. :-) Bohužel, situace se nevyvinula příznivě a v současné práci v AVG Technologies jsem dostal oznámení o zrušení pracovního poměru ve zkušební době. Důvodem bylo to, že pro firmu nebylo výhodné mě mít na plný úvazek, když jsem hodlal dál pokračovat ve studiu na FIT VUT. Ne, že bych z toho měl vyloženě radost, práce mě tam bavila a celkově mi to tam přišlo prima, ale musím uznat, že dělat 8-10 hodin denně, dojít domů a ještě stíhat něco ve škole (FIT VUT je celkem náročná na čas kvůli projektům), to by dalo asi hodně zabrat. No ale už tam mají za mě náhradu, taky Michala. :-)
No co už, stalo se... jako zkušenost to určitě byla a jsem rád, že jsem to zkusil. Možná vyjde nějaká ta diplomová práce, kterou bych pro ně mohl udělat a třeba se tam za rok dva vrátím. Uvidíme.

Takže je na čase hledat něco nového. Nejprve jsem měl obavy, že budu muset zase lítat v obleku v těch hicech po pohovorech, ozval se mi ale dlouholetý kámoš a spolužák Pavel, že bych mohl dělat s ním... podmínky mi tam přijdou fajn, sám Pavel tuto práci stíhá už nějaký ten rok při škole (stejné, kterou dělám i já), tak věřím, že tam to nějak zařídit půjde. Mělo by to být programování v Javě + Oracle BPELu; sice mám raději C++, ale tak proč to nezkusit, mohlo by to být zajímavé. Takže už studuji BPEL Cookbook, v Javě a Oracle už jsem kdysi něco málo dělal, tak snad se brzo ujmu.