pondělí 22. září 2008

Den bez aut

Před nějakým rokem jsem byl na Den bez aut odchycen na parkovišti za Mahenovým divadlem a musel jsem se v televizi trapně vymlouvat, že autem jezdím jen když potřebuji.
Ani letos jsem nevyužil možnosti svézt se MHD zadarmo, ba naopak. Když jsem po nekrátké době sešlápnul plynový pedál a žlutý přízrak poslušně vyrazil kupředu, nešlo jinak než ulevit si slovy Mii Wallace: "Ku*va, to je žrádlo".
Tak přátelé, letos Den bez aut opět beze mě...

středa 3. září 2008

Google Chrome

Nový prohlížeč od Google přináší nový zážitek z prohlížení Internetu. Všem... teda kromě mě.

 
 

úterý 19. srpna 2008

Mamma Mia! (2008)

Velmi letní, velmi romantické, velmi Abba. I dont want to talk...

Hodnocení: *****
(* - naprostá hrůza, ** - ztráta času, *** - dobrej film, **** - šel bych znova, ***** - musím si pořídit)

23.1.2009: Čas ukázal, že čtyři hvězdičky jsou málo, opravuji na pět.

Batman

Batman (1989)

režie: Tim Burton
Batman / Bruce Wayne: Michael Keaton
Vicky Vale: Kim Basinger
Joker / Jack Napier: Jack Nicholson
Hodnocení: *****

Batman se vrací (1992)

režie: Tim Burton
Batman / Bruce Wayne: Michael Keaton
Catwoman / Selina Kyle: Michelle Pfeiffer
Tučňák / Oswald Cobblepot: Danny DeVito
Max Shreck: Christopher Walken
Hodnocení: *****


Batman navždy (1995)

režie: Joel Schumacher
Batman / Bruce Wayne: Val Kilmer
Robin / Dick Grayson: Chris O'Donnell
Dr. Chase Meridian: Nicole Kidman
Dvě tváře / Harvey Dent: Tommy Lee Jones
Hádankář / Dr. Edward Nygma: Jim Carrey
Hodnocení: ***

Batman a Robin (1997)

režie: Joel Schumacher
Batman / Bruce Wayne: George Clooney
Robin / Dick Grayson: Chris O'Donnell
Mr. Freeze / Dr. Victor Fries: Arnold Schwarzenegger
Poison Ivy / Dr. Pamela Isley: Uma Thurman
Batgirl / Barbara Wilson: Alicia Silverstone
Hodnocení: **

Batman začíná (2005)

režie: Christopher Nolan
Bruce Wayne / Batman: Christian Bale
Henri Ducard: Liam Neeson
Rachel Dawes: Katie Holmes
The Scarecrow / Dr. Jonathan Crane: Cillian Murphy
Hodnocení: ***

Temný rytíř (2008)

režie: Christopher Nolan
Bruce Wayne / Batman: Christian Bale
Rachel Dawes: Maggie Gyllenhaal
The Joker: Heath Ledger
Harvey Dent / Two-Face: Aaron Eckhart
Hodnocení: ****

(* - naprostá hrůza, ** - ztráta času, *** - dobrej film, **** - šel bych znova, ***** - musím si pořídit)

pátek 1. srpna 2008

Hancock (2008)

Většina superhrdinů jsou podle přiléhavých oblečků buzíci. Hancock je jiný. Chlastá, nadává a nemá rád lidi. A lidi nemají rádi jeho. Ale při jedné akci, u které jako obvykle zničí všechno okolo, zachrání ne příliš úspěšného PR specialistu a ten se rozhodne na oplátku vylepšit Hancockův mediální obraz.
Jako režisér se mi Peter Berg (Království) zamlouvá podstatně víc než doktor z Chicago Hope...

Hodnocení: ****,5
(* - naprostá hrůza, ** - ztráta času, *** - dobrej film, **** - šel bych znova, ***** - musím si pořídit)

čtvrtek 31. července 2008

Hibernate a One-to-One (ne)lazy loading

Vztahy jedna ku jedné nepoužívám příliš často (aspoň co se databázových aplikací týče), takže mě zarazila následující věc: ve výchozím nastavení totiž Hibernate po vytažení jedné entity selectem ihned dalším selectem natáhne i druhou entitu ze vztahu. To by nebylo tak zlé, horší je, že po jednom dotazu na 1000 entit provede ihned dalších 1000 dotazů na vázané entity.
K pochopení proč to tak je a jak z toho ven je potřeba udělat úkrok stranou a uvědomit si, jak funguje lazy loading (líné načítání) ve vztazích Many-to-One. V něm je entita, obsahující kolekci (set, list,...) dalších entit. Při načtení "hlavní" entity nejsou prvky kolekce ihned načteny, ale na místo kolekce vloží Hibernate svůj speciální proxy objekt, který umí podřízené entity načíst z databáze teprve až při prvním přístupu k prvkům. Důležité je, že kolekce jako taková nikdy není null -- pokud vztah na straně Many má nulový počet prvků, má kolekce velikost nula.
U vztahu One-to-One ale takové řešení není možné proto, že nejde nasimulovat hodnotu null: Hibernate nemůže vložit "svůj speciální proxy objekt" a při prvním přístupu ho načíst, protože pokud by entita v databází chyběla, není způsob, jak proxy vyměnit za null. A právě z tohoto důvodu se musí jít do databáze zjistit, jestli objekt je nebo není. (Tady bych poněkud čekal, že bude aspoň možné objekty načítat nastavením BatchSize po větších kusech než po jednom, ale to se mi nepodařilo rozchodit).
V případě, že máme opravdový vztah One-to-One (tj. obě strany jsou vždy přítomné), nejjednoduším řešením je přidat k anotaci parametr optional=false (případně v mapovacím souboru uvést constrained="true") a lazy loading bude fungovat tak, jak člověk čeká.
Some explanations on lazy loading

pondělí 21. července 2008

KML - formát pro geografická data

KML je formát souborů pro přenos geografických dat, používaný hlavně v programech Google Maps, Google Earth a Google Mobile. Zkratka KML znamená Keyhole Markup Language (Keyhole je název firmy původně vyrábějící dnešní program Google Earth) a jeho podporu najdeme dnes už ve většině geoprogramů.

KML se tedy dá s výhodou použít k přenosu dat mezi různými geosoftwary, a protože jsou to obyčejné XML soubory s nepříliš složitou strukturou, dají se i ručně upravovat. Tak se dá například vyřešit problém v Google My Maps spočívající v nemožnosti změnit pořadí bodů na mapě. Řešení (poněkud sekernickou metodou) je jednoduché: mapu z Google Maps stáhnout v KML formátu (zkopírovat odkaz "Zobrazit v Google Earth" a v adrese přepsat output=kml), pak upravit KML soubor a v Google Maps v editaci mapy dát Import, ze souboru, nahradit. (Mno, teď jsem byl upozorněn, že v My Maps jde měnit pořadí bodů přetahováním... Ale to určitě dřív nešlo!)

Zobrazení KML souboru na Google Maps je poměrně jednoduché: URL souboru vložíme do vyhledávacího políčka a Google Maps zobrazí obsah. Takto se dá udělat i odkaz ve formátu http://maps.google.com/?q=URL
Podrobnosti na Google Maps API blogu: KML on Google Maps. Tímto způsobem se dá zobrazit v Google Maps i např. export z Picasy.

KML soubor může být zobrazen i pomocí Google Maps API (tj. vložení mapy do vašich stránek), stačí soubor načíst do objektu GGeoXml a přidat ho do mapy jako overlay:
var gx = new GGeoXml("URL");
map.addOverlay(gx);
Pozor při vkládání KML souborů přímo ze serverů Googlu, když není v url zadaný parametr oe=UTF8, nefungují KML, ve kterých jsou neanglické znaky.
Podrobnosti má Google Maps API blog: KML and GeoRSS Support včetně ukázky. Ke GGeoXml se můžou hodit pomocné funkce.

gekmllib je javovská knihovna pro manipulaci (čtení, vytváření a manipulace s KML), která ač je teprve verzi 0.3, vypadá (až na pár drobností) poměrně použitelně. Dalšími knihovnami jsou kmlframework a XStreamKML.

Nevím jak vy, ale já dneškem končím s uchováváním svých geo dat v Excelech a CSV souborech... :)