Monday, 19 September 2005
Body zájmu (POI) pro TomTom
Jestliže používáte pro navigaci skvělý program TomTom ve verzi 5.0 a nestačí vám chudá databáze dodávaných bodů zájmu v ČR, tak doporučuji vaší pozornosti skvělou stránku s dalšími českými POI. Databáze vytvářejí ve volných chvílích nadšenci, k nimž se můžete připojit. Už dnes si můžete stáhnout opravdu zajímavé POI. Namátkou vybírám:
- Stanoviště stacionárních a mobilních radarů. TomTom vás navíc dokáže na blížící se radar upozornit vybraným zvukovým signálem
- Města na Moravě. Řeší nedokonalost mapy v TomTomovi, která nedovoluje v aktuální verzi vybrat město na severní Moravě přímo jako cílovou destinaci.
- Hrady, zámky a tvrze v Čechách
- Benzínové pumpy
- Oblíbené restaurace
- Seznam fast foodů (KFC, McDonalds)
- ...
Výborný počin, díky Rossini a Libore_M.
Monday, 19 September 2005 19:20:13 (Central Europe Standard Time, UTC+01:00)
Navigace
Jsem z Kréty zpět
Dovolená na Krétě je u konce, tady je jen pár dojmů.
Jestliže od dětství milujete jakoukoli zmínku o antických (minojských) památkách, budete z Kréty nadšeni stejne jako já. Byť občas budete v Knossu siru Evansovi spílat, že to s tou inovativní rekonstrukcí pomocí betonu přeci jen trochu přehnal ;)
Lidé na Krétě jsou milí, dá se s nimi dobře mluvit anglicky a vzhledem k záplavě turistů z České republiky se někteří progresivní obchodnící ve všudypřítomných turistických krámcích v krétských "Zlatých uličkách" snaží konverzovat česky. Asi jsem je ale zklamal - při jejich extatických výkřicích "Poborsky" a podobně jsem zůstával zcela chladný a netečný a v duchu jsem si jen útrpně opakoval, že svět, ve kterém jsou za symbol země považována nějaká individua čutající do míče (to alespoň předpokládám, možná že se ten člověk ohání hokejkou, takže se mu tímto omlouvám), je v pokročilém stádiu degenerace a že se s tím nedá nic dělat. Párkrát jsem se sice snažil naznačit, že naše země sice světu nikdy žádného Platona ani Aristotela, ale že jsme lidstvu přispěli snad něčím víc než dobře vsítěnou brankou... Marnost nad marnost.
Pořád lepší, než když za pár let budou kulturní elitu reprezentovat nesvéprávná lobotomizovaná zvířátka z terárií Vyvolených a podobných (kvazi) reality-show s omezenějšími vyjadřovacími schopnostmi než mají sportovci, což je skoro k nevíře, kteří vždy najdou své podivné jakoby ultraliberální ďáblovy advokáty, co vzývají žel neexistujícího sociologického ducha bezduché striptérské zábavy, zato na svém blogu jsou dokonalými cenzory a strážci svého privatissima a dobré pověsti s pikantní příchutí anonymních padlých kůzlátek;) Postmoderno, jak já tě miluji
Dovolená s Kamilkou byla opravdu náročná. Sice začalo chodit před necelými 3 měsící, ale to jí nebránilo v tom, že na Krétě v kočárku vůbec být nechtěla, všude pobíhala zásadně sama se supícími rodiči v zádech, co se jí snažili nerušit a jen taktně její občas mírně vratkou chůzi na nerovném povrchu jistit, a intenzivně se seznamovala se všemi dětmi, psy, kočkami a domorodci. Hrdostí jsem se ale dmul, když den po mém hlídání a otcovské péči začala odříkávat písmena abecedy (a, b, c, d) ve správném pořadí. Na patnáctiměsíční dítě jde myslím o docela slušný výkon, takže se trochu rozptýlily mé chmurné obavy z jejího radostného pobíhání, že nám doma roste další sportovec. Přišel jsem na to, že naše Kamilka bude ztělesněním ideálu Kalokagathia. :)
Výhodou dovolené s malým dítětem je to, že většina lidí kolem vás se vám snaží různě pomoci, nevýhodou, že že rodiny s dalšími malými dětmi vás považují podle nějakého podivného archetypálního vzorce za další osudovým losem spřízněnou duši, se kterou poklábosí o všech slastech a strastech mateřství, což se mi docela příčí, a ani moje žena nejevila na dovolené pražádnou touhu dozvědět se nějaké další skvělé a zaručené tipy na výchovu dětí od samozvaných expertů. Mno, přežili jsme dobré i zlé.
BTW: Po návratu mě pobavil komentář Pavla Brunclíka. S blogem skončit nehodlám, je to jedna z mála aktivit, které mě poslední rok baví, takže zatím nevidím žádný důvod, proč jej ukončit. Poslední rok pro mě ale nebyl z různých důvodů nijak zvlášť dobrý a možná se to projevilo i v celkovém naladění blogu. Připadá mi, že v poslední době většinu svého času dělám věci, které jsou pro mě rutinní, nezajímavé, bezperspektivní, a z toho plyne asi i má nechuť ke všemu ostatnímu, což se dá možná poznat i na náladě spotů. Ledaccos mě nebavi a spousta věcí štve. Dostávám sice slušný "chléb vezdejší", ale plnohodnotně realizován a využit se už dlouho necítím. A na přemýšlení o tom, co změnit, abych se neustále necítil jako spráskaný pes, je dovolená ideální čas. :)
Sunday, 18 September 2005 23:39:34 (Central Europe Standard Time, UTC+01:00)
Ostatní
Tuesday, 06 September 2005
Blog si vybírá společně se mnou dovolenou
I když absence jakékoli aktualizace na blogu minulý týden by nasvědčovala tomu, že si dovolené již užívám, nebylo tomu tak a k psaní spotů jsem se nedostal, protože jsem finišoval neodkladné (tedy alespoň podle zákazníků) projekty v práci.
Takže do 22.9. se zde pravděpodobně žádný zápisek neobjeví, protože mě i manželku Yuhůovy (snad se Yuhůů takhle skloňuje, tady můj jazykový cit opravdu selhává) skvělé stránky o Krétě zlákaly k její návštěvě. Jedinou neznámou pro nás je, jak bude vypadat taková dovolená s patnáctiměsíčním extrémně aktivním dítětem.
O nic ale nepřijdete, po návratu budu hned pokračovat v seriálu o frameworku pro business objekty a také se podělím o některé poznatky ze zkoumání .Net Frameworku 2.0 (webové služby, .Net Remoting, vývoj pro PDA). A brzy poskytnu i další podrobné informace o chystaných a již dříve oznámených stránkách specializovaných na původní články o analýze, designu a vývoji aplikací.
Tuesday, 06 September 2005 15:56:06 (Central Europe Standard Time, UTC+01:00)
Ostatní
Thursday, 25 August 2005
Programátorská hádanka
Dokážete napsat jeden řádek kódu, kterým přířadíte statickému členu BField řetězec "Milujeme porušování zapouzdření"? ;)
sealed class A
{
private sealed class B
{
private static string BField;
}
}
Thursday, 25 August 2005 15:49:16 (Central Europe Standard Time, UTC+01:00)
Sunday, 21 August 2005
Bázová třída pro business objekty - návrhový vzor Layer Supertype
Na konci spotu, v němž byla vytvořena třída DataCacheHelper, jsem slíbil, že ukážu, jak si vynutit použití objektu DataCacheHelper všemi třídami v business vrstvě. K tomu nám poslouží vzor Layer SuperType, jehož definice se dá parafrázovat takto: zaveďme společného předka pro všechny třídy jedné vrstvy aplikace, v němž zapoudříme společný kód a sdílené chování.
Nyní si popíšeme rozhraní a implementaci vzorového předka pro business objekty. Zobrazit kód. (C#)
Abstraktní třída BusinessObjectBase obsahuje dva konstruktory. Bezparameterický konstruktor je potomky vyvoláván při zakládání nové instance bez obrazu v databázi ("bez platného - perzistentního id). V tomto konstruktoru nastavíme, že objekt není změněn vůči datům v databázi (m_isDirty = false), přidělíme mu dočasné id uložené v konstantě NO_ID a voláním privátních metod setNew a setLoaded označíme objekt jako "nový - bez obrazu v databázi" a současně "není třeba nahrávat data z databáze". U každého nového objektu se také předpokládá, že jde o aktivní objekt - tedy o objekt, který nemá příznak smazán (Discarded) ani neaktivní (InActive) - viz enumerace ObjectState na konci výpisu.
Druhý konstruktor, který přijímá argument id, používají odvozené objekty, jestliže již byly dříve uloženy do databáze. Opět nastavíme příznak, že objekt není změněn vůči datům v databázi (m_isDirty), dále nastavíme proměnnou m_isLoaded na false, což je příznak, který signalizuje, že data objektu ještě nebyl nahrána z databáze, a uložíme si id objektu.
Veřejná vlastnost IsDirty vrátí true, jestliže byl objekt změněn vůči datům v databázi, vlastnost IsNew vrátí true, jestliže se jedná o nový objekt bez perzistence - čeká na "Insert".
Vlastnost IsDeleted má hodnotu true, když již byla data objektu v databázi smazána příkazem Delete (objekt jen "dožívá" v business vrstvě) nebo když u objektů, jejichž data se například kvůli zachování referenční integrity fyzicky nemažou, byl do databáze zapsán stav Discarded.
Vlastnost Id vrací unikátní identifikátor objektu, jestliže byl objekt uložen do databáze, jinak vrací konstantu NO_VALUE.
Vlastnost ObjectState vrací stav objektu s využitím hodnot enumerace ObjectState (aktivní objekt, dočasně neaktivní objekt, smazaný objekt).
Metoda Load je pro nás zajímavá hlavně tím, že si vynutíme použití třídy DataCacheHelper. Jedná se metodu se šablonou (vzor Template method), která nejprve zkontroluje, jestli jde o objekt, který již byl nahrán a/nebo který byl již smazán - pokud je jedna z těchto podmínek pravdivá, metoda Load ihned ukončí svoji činnost. Když jsou všechny předběžné podmínky pro vyvolání metody Load splněny, metoda se pokusí vyzvednout dříve uložený řádek s daty pro svou instanci z třídy DataCacheHelper. Jestliže řádek existuje, pak je vyvolána varianta metody DoInternaLoad přijímající odkaz na řádek, jinak je vyvolána metoda DoInternalLoad, která musí řádek z databáze teprve získat. Metody DoInternalLoad jsou chráněné a virtuální a za jejich implementaci odpovídají odvozené třídy - třída BusinessObjectBase dbá na dodržení základní kostry algoritmu, ale implementaci jednotlivých kroků aloritmu ponechává (musí ponechat) na podtřídách, což je hlavní idea vzoru Template Method. Po úspěšném nahrání objektu je volána metoda setLoaded, která označí objekt jako nahraný (IsLoaded bude nyní vracet true).
Poznámka: V metodě Load se zatím předpokládá, že data objektu potřebujeme nahrát pouze jednou a metoda tedy neumožňuje aktualizaci dat objektu z databáze po prvním nahrání. Jak aktualizaci dat z databáze odvozeným třídám umožníme, si ukážeme v dalším pokračování.
Metoda Save neumožní uložení objektu, jestliže jde o nenahraný objekt ("není co ukládat, data nemohla být změněna"), jestliže jde o vymazaný objekt, nebo pokud objekt nebyl změněn a současně nejde o nový objekt. Metoda tedy již na úrovni předka ošetří, že nebudou zbytečně ukládány objekty, jejichž data byla nahrána, ale uživatel je nijak nezměnil. Metoda pouze volá chráněnou virtuální metodu DoInternalSave a jak asi ti chytřejší z vás tuší, jedná se o další příklad vzoru Template Method. Voláním privátní metody setClear po úspěšném uložení objektu nastavíme na false příznak "změněn" (IsDirty) a "nový objekt" (IsNew). Jestliže byl ukládán objekt, u nějž bylo vyžádáno smazání (ObjectState=ObjectState.Discarded), je nastaven příznak IsDeleted voláním chráněné metody SetDeleted na true.
Metoda Discard slouží ke zrušení objektu, přesněji řečeno k převedení objektu do stavu ObjectState.Discarded - pokud je objekt v tomto stavu a dojde k uložení objektu, metoda DoInternalSave buď záznam v databázi fyzicky vymaže (DELETE) nebo do databáze uloží stav ObjectState.Discarded (UPDATE). Metoda Discard pouze zkontroluje, zda nepracujeme nad smazaným objektem (IsDeleted=true), u nějž opakované rušení nemá smysl, a jestliže tomu tak není, nastaví objektu stav ObjectState.Discarded a označí objekt voláním metody SetDirty jako změněný.
Chráněnou statickou metodu SaveCollection používají odvozené třídy pro ukládání objektů ve svých kolekcích. (vztah agregace nebo kompozice). Výhodou je, že v odvozených třídách nemusí být stále stejný a otravný cyklus foreach, který se liší jen typem iterovaného objektu.
Metody DoInternalLoad a DoInternalSave jsme již zmiňovaly - jsou to "sloty" používané odvozenými třídami k zavedení vlastní aplikační logiky do schématu vysokoúrovňového scénáře. Bázovou implementaci metody DoInternalLoad přijímající řádek s daty objektu mohou zavolat odvozené třídy, jestliže chtějí nahrát stav objektu (ObjectState) bez zbytečné duplikace kódu - obnovení a ukládání hodnot vlastních specifických vlastností je samozřejmě plně v režii odvozených tříd. Metoda DoInternalLoad bez argumentů ani metoda DoInternalSave nejsou abstraktní, i když by abstraktní být mohly - v business vrstvě ale občas máme třídy, u nichž nemusíme (nechceme) psát perzistenci a proto mají metody v bázové třídě prázdné tělo, abychom nebyli nuceni zcela zbytečně ve více odvozených třídách poskytovat symbolické "prázdné implementace".
Metodu Init mohou odvozené třídy použít pro vlastní inicializační kód (vytváření kolekcí a přihlašování jejich událostí atd.) - příklad uvidíte v pokračování spotu.
Metoda SetDirty nastavuje příznak "změněn oproti datům v databázi" - příznak nemá význam pro objekty pro objekty bez perzistence a pro smazané objekty.
Metoda CheckEquals porovná předané objekty - jestliže se objekty nerovnají, je objekt označen jako změněný. Jak asi tušíte, metodu volají odvozené třídy v set sekci svých vlastností (CheckEquals(oldValue, newValue)) a jsou tak zbaveni nutnosti reagovat na výsledek porovnání a ukládat si vždy každá sama za sebe příznak "jsem změněn". Když uživatel zmáčkne tlačítko uložit na formuláři a my data z formuláře přeneseme do objektu, metoda CheckEquals zajistí, že objekt bude označen jako změněný jen tehdy, pokud uživatel opravdu nějaké změny na formuláři provedl (třeba vybral jinou hodnotu v listboxu). Výhody jsou zřejmé, kód na formuláři je stále týž - pouze "tupě" přenáší data ze vstupních prvků formuláře do vlastností business objektu a ten si již potutelně a sám na úrovni předka ošetří, zda nově předané hodnoty vyžadují uložení, nebo ne, což může nastat, když uživatel z pouhého rozmaru klikne na tlačítko uložit a přitom si detail objektu celou dobu jen prohlíží.
Metoda TriggerLoad iniciuje nahrání objektu, jestliže objekt ještě nebyl nahrán, nejde o nový objekt a také nesmí jít o smazaný objekt. Metodu volají odvozené třídy při přístupu k jakékoli vlastnosti nebo metodě objektu (vzory Lazy Load, Ghost).
Význam dalších chráněných a privátních metod byl již myslím dostatečně osvětlen v předchozím textu při výkladu veřejného rozhrani, takže se nebudu opakovat.
Rozhraní IPersistable vyjadřuje minimální nárok, který musejí splňovat všechny objekty ukládající a obnovující svá data z/do perzistentního úložiště - výhodnou výchozí a závaznou osnovu realizace rozhraní poskytuje třída BusinessObjectBase.
Z enumarace ObjectState pro vyjádření základních stavů objektu prozatím nepoužívame stav InActive - význam ostatních stavů by již vám měl být po přečtení spotu dostatečně zřejmý.
Příště si ukážeme vzorovou implementaci třídy, která dědí z BusinessObjectBase.
Sunday, 21 August 2005 21:29:28 (Central Europe Standard Time, UTC+01:00)
.NET Framework | Návrhové vzory
Thursday, 18 August 2005
Výpadky blogu
Včera mi Vilém Málek nareportoval zákeřnou chybu v DasBlogu, která některým z vás mohla způsobit problémy při psaní komentářů a posléze i zcela znemožnit přístup na blog.
Nejdříve jsem zkusil nasadit novou verzi DasBlogu, ale tím jsem paradoxně problém jen zhoršil - v release dokumentu byla popsána asi je polovina kroků potřebných pro úspěšný upgrade, takže jsem vše ladil za pochodu a nakonec jsem musel najít chyby v stávající verzi a zkompilovat svoji vlastní verzi. Snad funkční, ale zdaleka ne dokonalou. :( Asi si nějaký blogovací engine opravdu vytvořím sám.
Podle mého testování je teď už vše v pořádku, pokud ale na nějaký problém narazíte, prosím napište mi přímo na mail reneATrenestein.net.
Viléme, ještě jednou díky!
BTW: DotNetHosting, na kterém momentálně běží moje doména, mohu zatím jen chválit. Reakce administrátora jsou okamžité, takže včera výpadek trval naštěstí jen velmi krátkou dobu. Stejně rychlé reakce na ohlášený problém, jak jsem si už stačil vyzkoušet, má DotNetHosting dokonce i o víkendu.
Thursday, 18 August 2005 09:59:55 (Central Europe Standard Time, UTC+01:00)
Ostatní
Tuesday, 16 August 2005
Řešení literární hádanky z 13.8
Nikdo z vás se nepokusil o odpověď, možná proto, že jsem nenabídl šampaňský jako u přechozí hádanky. Takže vás nebudu dál napínat, autorkou je Marina Cvetajevová, o níž a o sobě napsal kníže básníků R.M.Rilke v elegii pro Marinu tyto neskromné verše:
Vlnám jsme, Marino, mořem, hloubce jsme
Marino nebem!
Zemi jsme zemí a tisíckrát jarem, jsme skřivan,
Marino,
jenž píseň vyvřelou dál vrhá v neprůzračnost.
Tuesday, 16 August 2005 22:15:50 (Central Europe Standard Time, UTC+01:00)
Literární a jiné humanitní úlety
Interval - Návrh aplikací v jazyce UML - Diagram tříd I
"Po delší prodlevě vychází další článek o návrhu aplikací s využitím jazyka UML. Místo zbytečných omluv za dlouhou a neplánovanou odmlku snad čtenáře potěší informace, že se napříště budu věnovat i konstrukcím jazyka UML nově přidaným ve verzi 2.0. Tématem tohoto článku je vysvětlení elementárních pojmů, jejichž znalost je nezbytná při návrhu diagramu tříd. " Pokračování na Interval.cz.
Tuesday, 16 August 2005 07:39:59 (Central Europe Standard Time, UTC+01:00)
UML
Monday, 15 August 2005
Lehkovážné povzdychnutí nad ovládáním spotřební elektroniky
Stáří se může projevovat inkontinencí, což okolí díky nějakým super hygienickým vložkám, co vám dají křídla, ani nezpozoruje, ale hlavně, jak jsem dlohodobým výzkumem ve svém okolí na reprezentativním vzorku zjistil, sníženou nebo nulovou schopností ovládat běžnou spotřební elektroniku, což je diagnóza, se kterou si ani spammeři nevědí rady a na můj dotaz jich pár poslalo obratem jen nabidku na tradiční moderní všelék "Buy cialis, viagra, You will be able to penetrate deeper ". Fakt díky za osvětu, ale občas i senioři nechtějí být jen hlubinnými průzkumníky dávno propátraných a opuštěných šachet a potřebují krev napumpovat jinam. Potřeboval bych pro ně spíš syntetizovat nějaký derivát s erektivní složkou pro mozkovou kůru a s dlouhodobým účinkem. S vašimi protekčními kontakty na farmaceuticko-alchymistické koncerny to určitě bude hračka.
Dneska jsem si několikrát kontroloval vlhkost svého spodního prádla, jakožto další symptom mého předčasného stáří, protože jsem zjistil, že mám potíže s ovládáním spotřební elektroniky i já. Jen nevím, jestli je chyba na mé straně. Představuji si to nějak takhle. Senior Marketing Specialist v jedné nejmenované firmě na spotřební elektroniku, říkejme ji třeba Jessica, která se na své místo vypropracovala tvrdou prací per vaginam, se rozhodla, že konečně všem ukáže, jak její ložnicová kreativita častým pobytem na zásadních poradách sublimovala do nového koncepčního přístupu k modelovému spotřebiteli dlouhodobě probíraném pod kódovým a neredukovatelným popisem "idiot, co se bojí přemíry našich tlačítek na dálkových ovladačích a vytěžuje naše nadějné zárodečné Venuše v prodejnách spotřební elektroniky zbytečnými dotazy ("hele, jaky tlacitko mi nahraje estrádu na Nově a jaký horor na Primě, tuhle jsem se splet, chtel jsm vidět nějakou novou další originální píseň Vondráčkový o jejím novym věčně panenskym extempore na Copa Cabaně, ale místo toho mi video nahrálo nějaký horor s příšernejma vyžilejma monstrama, co vypadala jen o málo líp než moje stará, když si dá obrannej trojitej vojenskej maskovací make-up, takže jsem se dost bál, a asi až kurva po hodině mi došlo, že to Vondráčková bejt nemůže, protože pořád nevidim žádný silikonový prsa, na což jsem expert, páč už jsem prozkoumal dost natürlich přírodních dívek Blesku, a že ani ten neartikulovanej řev nevystihuje úplně přesně intonaci a frázování naší slavice, mám sluch a vkus přeci ne. Ale ještě předtím, než mi došlo, že nekoukám na estrádu, jsem se nejdřiv lek, že mojí slavici honí v nějaký nový ostřejší reality show, jako jsou ti Vyvolení a nějakej jejich velkej Bratr, ten hodně vostrej namyšlenej intelektuální hajzl Rejžek, co si pořád asi myslí, že naše všemi milovaná umělkyně je novou geneticky vylepšenou a sadističtější inkarnací otce Grebeníčka, nebo možná taky že je jenom žijícím kmotrem Mafie s vražedným pseudonymem Helena, to si asi nejni ještě v tyhle věci uplně jistej."). Dotazy kvůli své složitosti musejí být eskalovány od našich vyškolených asistenek obchodu přímo na First level support, a pak do hi-tech development centra, které se celé dny snaží řešit problém, jak může prostý člověk postmoderní éry bezchybně odlišit při volbě nahrávaného programu žádaná a skutečná normalizační monstra od monster neskutešných a falešných. Proto Jessica navrhla pro začátek experimentálně vylepšit ovládání spotřebičů a to tak, že se zredukuje počet tlačítek a většina z nich se bude chovat jinak, když je podržíme 1s, unikátně jinak, když je podržíme 2s a úplně jinak, když se jich jen tak drobounce a jemňoučce heboučce dotkneme. Jessica sice chtěla, aby tlačítka úplně jinak reagovala na slintání nad silikonovými implantáty, ale to již vývojový team nedokázal spolehlivě realizovat. Nikdo sice nepochopil, v čem je nové ovládání lepší, ale Jessica všechny uzemnila argumentem, že vymyslela včera v noci, navíc v nové a myšlenkami osvícené poloze z Kamasútry a při oduševnělém orálním spojení s VicePrezidentem, zcela originální cool slogan doprovodné kampaně podpořené nabídkou výhodné půjčky od renomované finanční společnosti Provident Financial a zabírající stoprocentně na prosťáčky. "Méně tlačítek je vždy jen s námi za stejné prachy více tlačítek"! Její kolegové slogan doprovodili frenetickým potleskem a nadšeným hýkáním, což je, jak vědí jen zasvěcenci, někteří výše postavení členové zednářské lóže a celý investigativní tým připravující Občanské Judo, nejvyšší akustická forma korporátního souhlasu při strategickém rozhodování. A challenge je challenge, co se dá dělat, z něj má jeden ze svých posledních orgasmů i stařičký předseda představenstva.
Konec vsuvky a podívejme se na výsledek extravaginální tvůrčí práce Jessiky. Dneska jsem nevěřil, když jsem si četl manuál k autoradiu Clarion. Spousta tlačítek se opravdu chová jinak, když je podržíte 1s, jinak, když je jen zmáčknete a občas pro spuštění nějaké méně použivané funkce musíte ťapat na tlačítko 2s. Kdo si tohle zapamatuje, je velmistr pro školení inovací ve spotřební elektronice a vydělá v nové době solidní peníze nezbytnými konzultacemi v domácnostech.
Kromě rádia mám špatnou zkušenost i s neergonomickým ovladačem k DVD přehrávačí Sencor nebo k videu Sony. Přijde mi jako kdyby výrobce tlačítka rozmístil podle toho, jak je náhodně vylosovalo jeho imageové oddělení z balíku všech funkcí, který dodalo technické oddělení.
Poučení na dobrou noc: Prokletím našeho věku je, že inovace musí být, i když třeba vagina Jessicy, jakožto seriový výrobek, se bez jakékoli evoluce už docela dlouhou dobu obešla.
Sunday, 14 August 2005 23:30:33 (Central Europe Standard Time, UTC+01:00)
Ostatní
Saturday, 13 August 2005
Literární hádanky - poznáte autorku veršů?
Tak zase jedna exkurze k literárním láskám. Prozradím jen, že autorka veršů je žena - cizinka s pohnutým osudem, žijící nějakou dobu v Čechách. To, že když si vzpomenu na tyto verše, je podle mé ženy spolehlivě barevný lakmusový indikátor počínající opilosti, vám asi nepomůže, alespoň ale znáte důvod, proč jsem vybral právě je. Do všech koutů rozlezlý stesk, touha po ztraceném a přitom nikdy nehledaném, jen tušené ozvěny Kazatelovy marnosti, uhrančivé zaříkání života, hravá rozmarnost ... že se člověku ani nechce z tohoto rozpoložení střízlivět.;)
Pořád se někdo ztrácí: byl tu zatím -
dál je svět bez něho
Jednoho dne se i já takhle ztratím
z povrchu zemského
Co rve se, ve víru se točí,
zapadne v nepaměť.
I něžný hlas, i mé zelené očí,
i vlasy mé jak měď.
A svět potrvá dál, s vezdejším chlebem
a ve své jistotě.
Jako bych nikdy, pod nižádným nebem
nebyla v životě.
Já, rozmarná jak dítě - hned se hněvá,
hned radost má, i strach,
já, milující čas, kdy v krbu z dřeva
se stává žhavý prach,
violoncello, keře jako hříva,
a zvony nad hlavou...
Já, která patřím, skutečná a živá,
na zemi laskavou.
Od vás všech (proč, když v ničem neznám míru,
si mám klást otázku,
kdo cizí je, kdo můj) chci vaši víru.
A prosím o lásku.
Za moji pravdu ano-ne; ať říct vám
ji smím. Dny, nocemi
mě za to milujte, že smutná bývám
a dvacet let je mi.
za činy jak voda bez břehů -,
bláznivý ptačí vzlet,
za pravdu, za hru, za bezuzdnou něhu
a příliš hrdý vzhled.
za to, že urážky (s čím chcete přijďte)
pohřbívám do země ...
Poslyšte! - I za to, že umřu, viďte,
už milujete mě.
Friday, 12 August 2005 23:40:09 (Central Europe Standard Time, UTC+01:00)
Literární a jiné humanitní úlety