středa 2. listopadu 2011

Mýty o introvertech

Zdroj: http://www.carlkingdom.com/10-myths-about-introverts
Překlad: na základě výstupu s google translatoru jsem jen lehce začistil (překladatel ze mě nikdy nebude)  

Mýtus č. 1 - introverti neradi mluví.
To není pravda. Introverti prostě nemluví, pokud nemají co říct. Nenávidí tlachání. Nechte introverta mluvit o něčem, co je zajímá, a nezavřou pusu celé dny.  

Mýtus č. 2 - introverti jsou plaší
Stydlivost nemá nic společného s tím, že někdo je introvert. Introverti se nemusí bát lidí. To, co potřebují, je důvod pro spolupráci. Nedruží se s lidmi jen proto, aby se družili. Pokud chcete mluvit s introvertem, prostě začněte mluvit. Buďte slušní.  

Mýtus č. 3 - introverti jsou hrubí.
Introverti často nevidí důvod pro chození kolem horké kaše a pro zbytečné zdvořilosti. Chtějí, aby každý byl přímý a upřímný. Bohužel, tento přístup není pro většinu lidí akceptovatelný, takže introverti cítí velký tlak, aby se vyrovnali s něčím, co je pro ně vyčerpávající.  

Mýtus č. 4 - introverti nemají rádi lidi.
Naopak, introverti si nesmírně váží těch několika přítel, které mají. Své blízké přátele mohou spočítat na jedné ruce. Pokud máte štěstí na introvert je váš kamarád, máte pravděpodobně věrného spojence na celý život. Jakmile si získáte jejich respekt jako opravdoví lidé, jste jejich.

Mýtus č. 5 - introverti se neradi pohybují na veřejnosti.
Nesmysl. Introverti prostě chodí ven jen na nezbytně nutnou dobu. Také se rádi vyhnou komplikacím, které jsou s pohybem na veřejnosti spojené. Potřebná data a zkušenosti, která potřebují, získají rychle a zbytečně se na veřejnosti nezdržují. Co nejrychleji se chtějí doistat domů, aby získané zpracovali a aby se dobili. Ve skutečnosti, je právě dobíjení pro introverty charakteristické a zásadní.  

Mýtus č. 6 - introverti vždy chtějí být sami.
Introverti jsou naprosto spokojeni s vlastními myšlenkami. Hodně přemýslejí. Sní s otevřenýma očima. Jsou rádi, když mají o čem přemýšlet, řešit hádanky. Ale mohou zůstat neuvěřitelně osamělí, pokud nemají s kým sdílet své objevy. Touží po opravdovém a upřímném spojení s jednou osobou najednou.  

Mýtus č. 7 - introverti jsou divní.
Introverti jsou často individualisty. Nejdou s davem. Raději jsou oceňování za nové způsoby, jak žít. Myslí sami za sebe a tak mají často problém s normami. Nedělají většinu rozhodnutí na základě toho, co je populární a módní.

Mýtus č. 8 - introverti jsou podivíni.
Introverti jsou lidé, kteří se v první řadě dívají dovnitř, věnovat zvláštní pozornostsvým vlastním myšlenkám a emocím. To neznamená, že nejsou schopni věnovat pozornost tomu, co se děje kolem nich, jen jejich vnitřní svět je pro ně mnohem více podnětný a obohacující.

Mýtus č. 9 - introverti nevědí, jak se uvolnit a bavit se.
Introverti typicky relaxují doma nebo v přírodě, a ne na frekventovaných veřejných místech. Introverti nevyhledávají vzrušení a adrenalin. Na příliš rušném místě, kde se hodně mluví a je hluk, uzavřou se. Jejich mozky jsou příliš citlivé na neurotransmitter zvaný dopamin. Introverti a extroverti mají odlišné dominantní nervové spoje. Stačí se podívat se nahoru.  

Mýtus 10 - introvert se může "napravit" a stát se extrovertem.
Svět bez introvertů by svět s spousty vědců, hudebníků, umělců, básníků, filmařů, lékařů, matematiků, spisovatelů a filozofů. Jak již bylo řečeno, stále existuje mnoho technik, extrovert se může naučit interakci s introverty. (Ano, obrátil tento vztah, abych ukázal, jak zkreslené je vnímání naší společnosti.) Introvert se nemůže "napravit", a zaslouží si úctu k jejich přirozenému temperamentu a příspěvku pro lidskou rasu. Ve skutečnosti jedna studie (Silverman, 1986) ukázala, že procento introverze se zvyšuje s IQ.

Pro introverty může být velmi destruktivní snaha zapřít sami sebe, aby zapadli do našeho světa, kde dominují extroverti. Stejně jako u jiných menšin, taková snaha může skončit nenávistí vůči sobě samému vycházející z rozdílnosti. Pokud si myslíte, že jste introvert, doporučuji vám prozkoumat toto téma a hledat další introverty pro porovnání. Není na introvertech, aby podléhali tlaku, aby se pokusili stát "normální". Extroverti by nás měli uznat a respektovat a také musíme respektovat sami sebe.

neděle 28. srpna 2011

... exporting windows protected private key

Yes, it is possible to export use private keys and machine private keys. Thanks to mimikatz tool it is easy.http://www.blogger.com/img/blank.gifhttp://www.bloghttp://www.blogger.com/img/blank.gifger.com/img/blank.gif
Just download mimikatz utility from http://www.gentilkiwi.com/outils-s44-t-mimikatz.htm (ZIP direct link).

After downloading extract content of the ZIP file. Run mimikatz utility and in the command prompt enter:

dumpkey /force /medium

All user and machine private keys will be exported in pfx file (password:mimikatz).

Enjoy!

... windows internals tools

A set of utilities I find useful to inspect Windows internals: http://www.nirsoft.net/

úterý 2. srpna 2011

... linux monitoring with nmon

When using my Linux desktop things sometimes turn bad. Disk spins, CPU maxed everything's so slow.
WTF is happening to my system?
A lot of utilities will give me an overview: top, htop, iotop etc.

nmon to rule them all, nmon to find them,
nmon to bring them all and in the darkness bind them

Nmon is a Swiss knife when you want to know what's happening under the hood of your PreCious ...

Nmon is also able to collect data for later processing.

středa 27. července 2011

... e-kniha ...poprvé legálně

... je to tak. Po mnoha knihách přečtených z piratských kopií jsem právě objednal první e-knihu. Abych z toho měl úplně dobrý pocit, představoval bych si cenu ještě o pár korun nižší, než je 160Kč. Kolem stovky třeba baťovských 99Kč by se mi líbilo.

Jelikož nakupuji na palmknihy.cz poprvé, ještě musím počkat, než mi přijde aktivační kód poštou. Ano tou papírovou. Prozatím mi jde stáhnout první třetina knihy.

Jsem zvědav, jestli za peníze bude lepší formátování, které je v případě pirátských eknih žalostné.

čtvrtek 21. července 2011

... ranní šálek zloby

Albert, akce, kola za půl darma. Asiat s plným košíkem "koly v akci". Pokladní s nelíčenou radostí posílá potenciálního platícího zákazníka do háje. Kolu si prý může koupit nejvýše po 12 kusech: "12 kusů na osobu, musíte to vyložit, tady to máte napsané na letáku" říká tónem, který nezastírá zášť. Zmatený muž s košíkem plným pet-lahví couvá prodírá se frontou zpět mezi regály. Mezi pokladními se rozvine debata na téma 'no co oni si myslí, nakoupí to tu za desetikorunu a pak to bude támhle za zatáčkou prodávat za pade, hrůza'. Soulad názoru napříč pokladnami a štamgasti ve frontě zachmuřeně pokyvují. Vlna podpory okolostojících a spolupracujících dodá pokladní sílu: "A stravenky taky neberem, jenom hotovost" křičí do vzdalujících se mužových zad s úšklebkem a nadšená svým totálním vítězstvím za mužem vyplázne jazyk. Debatu s kolegyněmi končí větou:"No ty vo'e maj to přece v tom letáku napsaný, ne?"

... přešla mě chuť na snídani částečně z toho jedu, co vyvrhla pokladní ze svých útrob a částečně proto, že jsem sice nepokyvoval, nemručel souhlasně, ale neřekl jsem ani slovo. ... srabe, zní mi v hlavě, když mi automat míchá kávu.

...exot

Chodím po Praze v pláštěnce. Já a lidé, co používají hůl. Kolemjdouci se otáčejí jen za mnou a me je sucho.

úterý 12. července 2011

...install Fedore 15 on Dell D630 - wifi

All installed in basic distro except the firmware. Firmware can be installed using following link:
http://flakrat.blogspot.com/2010/05/how-to-enable-broadcom-bcm4312-wifi-in.html

pondělí 11. července 2011

.. čtyři dohody

... v podání Jaroslava Duška úžasné

čtvrtek 7. července 2011

... Jeseníky a nevyzpytatelné počasí

Totéž místo (přečerpávací elektrárna Dlouhé Stráně horní nádrž) při dvou návštěvách:


pátek 1. července 2011

... realityshow

... konec pohody domácí kanceláře

Domácí kancelář je trend. Homeoffice ... Jsem trendy a v domácí kanceláři občas pracuji. Do včerejška byla klidnějším místem, než náš firemní openspace. Dneska to skončilo. Začaly totiž prázdniny. Děti okupují domácí zábavní centrum, občas se ozývá dunění hudby, občas dunění výbuchů v nějaké střílečce a když se nic neozývá, znervozním a mám nutkání se podívat, jakou že lumpárnu zase vymýšlejí. Příjemně překvapili. Žádná lupmárna. Zmizeli ven...

... dopolední pracovnědenní klid se ale do bytu vrátí zase až v září.

pátek 17. června 2011

... městská policie pomáhá

Bloudím po Střešovicích a jedna uzavírka za druhou mě mezi vilkami vedou téměř jistě úplně špatným směrem. Těch uzavírek z důvodu jakýchsi stavebních prací je asi víc, než se dá na prstech spočítat. Nakonec nalézám uličku, která vede "mým směrem". Jelikož jsem už v časové tísní, vjíždím do uličky i přesto, že vjezd zdobí značka "Průjezd zakázán".

Pomalu projíždím uličkou když v dálce zahlédnu zářící vesty policistů. Vím, že páchám přestupek. Přestupek z donucení. Zastavuji uprostřed ulice a parkuji. Vypnu motor a obejdu auto. Pak jedu dál a policista na konci ulice se na mě vrhá jako sup na mršinu.

Nepřekvapuje mě to a tak mám tentokrát odpověď nachystanou (nečekané situace). Chyba lávky. Dle předchozích mnoha setkání s policií jsem již připraven na standardní postup. Stahuji okénko a očekávám základní policajtskou frázi: "Dobrý den, pane řidiči, předložte ... atd.".
Policista se nakloní do okénka a tónem obvykle používaným ve vztahu dospělý/káraně dítě pronese: "A vy tady děláte co!?"

Takovou neomalenost a aroganci jsem nečekal a veškerá moje příprava je v háji. Bez dalšího jen procedím, že jsem byl támhle na návštěvě. To pro změnu vyvede z konceptu policistu (1:1). Stojí, kouká a až k mým uším doléhá rachocení myšlenkového soukolí, které se ztěžka vyrovnává s nečekanou situací. Jevil jsem se policistovi jako snadná kořist a najednou mu unikám mezi prsty. Složitý výpočet v policistově hlavě doběhl zdárně ke konci a vyhodnotil mě jako ztracený případ slovy: "Tak já vám to tedy budu pro dnešek věřit!".

Odjíždím a v zrcátku sleduji kolegy řidiče, kteří opravdu byli překvapeni a svůj dnešní boj prohráli. Mě v hlavě vězí všechny možné odpovědi a nakonec vítězí následující:
Policista: A vy tu děláte co!?
Já: Dobrý den, pane policisto, co pro vás mohu udělat?

Přemýšlím, zda morální hledisko převáží ručičku váhy spíše na stranu mou "únik oběti buzerace" nebo na stranu policie "únik vytáčejícího se grázla". Sám se samozřejmě stojím na své straně (kdo už také jiný). Průjezd celou čtvrtí je komplikovaný. Mnoho zavřených ulic a pro neznalého bludiště. Jaké měla policie možnosti situaci řešit? Dočasně změnit dopravní značení a po dobu uzavírek umožnit průjezd jednou z mála nerozkopaných ulic, vylepšit dopravní značení pro usnadnění průjezdu.

Místo toho pokutování na konci jedné z mála průjezdných ulic.

... kurz adekvatního jednání v nečekaných situacích

Mám problém. Když se vyskytne nečekaná situace, neumím reagovat. Mám teď na mysli především nečekané převážne verbální interakce s lidmi. Situace: n2kdo někde na mě nečekaně vybafne. Mě napadá miliarda trefných, vtipných, účinných a vubec cool odpovědí, jak daného člověka odpálkovat, pobavit, potěšit, naštvat. Problém je v tom, že ty odpovědi mě napadají v průběhu následujícího dne či dvou. V okamžiku, kdy je potřebuji, mám hlavu úplně vymetenou a většinou řeknu úplnou blbost a "lepším" případě se zakoktám.

Celá věc mi značně komplikuje mou životní roli prudiče a šťoury.

Ovšem o to víc šťourám se zpožděním.

... a kde všude nám letos maturovali

Lokality, kde se prováděla maturitní zkouška - dohledový systém maturitních digitalizačních pracovišť

neděle 12. června 2011

Spring Tool Suite 2.7.0M1 depencies problem in Grails project

After transfering my project from one computer to the other I have started with fresh STS installation. When I have tried to open my Grails project every grails command failed due to some strange class not found exception. I reviewed the project and found Grails Dependencies uninitialized. Even if I tried to Refresh Dependencies using Grails tools this command failed the same way as every previous.
After some more investigation I focused on my user profile Grails cache. When I compared the old project and the newly created one grails cache the directories were different.
I deleted the old project grails cache in my profile ($HOME/.grails/project-name) and invoked Refresh dependencies again. Finally it worked.

I hope this can help some of you. Happy grailing.

úterý 1. února 2011

... děkujeme odcházíme

Dnes odpočet na stránkách lékařské odborářské kampaně ukazuje 27 dnů do odchodu nemocničních lékařů z důvodu jejich platového nedocenění. Musím říci, že s lékaři do jisté míry sympatizuji. Forma protestu a zejména jeho načasování už se mi tolik nelíbí. Že v systému péče je cosi shnilé mi ukázala následující paradoxní situace.

Shell, Jižní spojka. Rádio hlásí, že ministr zdravotnictví právě přislíbil, že v systému veřejného zdravotního pojištění najde 2 miliardy korun na vylepšení platové situace lékařů. Vystupuji z auta a tankuji. Vedle mě zastaví krásné bílé BMW X6. Auto bratru za půldruhého milionu. Za oknem mělo cedulku: "LÉKAŘ". To jsou paradoxy.



Tak si říkám, jestli po zachrastění prasátkem zdravotnického systému bude BMW spíš smutnější, ale někteří mladí lékaři budou mít o klidnější spaní s hypoteční smlouvou pod polštářem, nebo jestli BMW zaplesá a mladé lékaře bude hypoteční smlouva tlačit ve spánku stejně jako dosud.

... tramvajový thriller

Po příjemném posezení s bývalými kolegy jsem se vracel domů noční tramvají. Příběh, který se mi v tramvaji odehrával před očima či lépe řečeno ušima, stojí za zaznamenání. V tramvaji samotné příjemně hřálo topení. Venku mrzlo, až praštělo. Na sedadle přes uličku seděl mladík. Sympatický avšak ve stavu, který měl do střízlivosti daleko. U ucha telefon a probíhala konverzace, z níž jsem mohl zaznamenat pouze jednu stranu:
"... a kde teda si káámo?"
"... jak nevíš? Tak najdi nějakou zastávku."
"... to je jedno, že to tam neznáš, já to taky neznám. Káámo, ja jsem se probudil na konečný a tramvaják mě vyhodil na mráz. Sídliště Řepy, káámo, konec světa."
"... no a na jaký jsi teda zastávce? ... co že? jaká dálnice?"
"... prostě najdi ňákou zastávku a řekni mi, kde seš a já pro tebe dojedu, kámo"
"... káámo ... slyšíš mě? kááámo !?"

Sbírá telefon, který mu upadl na zem a snaží se vytočit číslo, ale trvá mu to.

"... kámo .. si tam?"
"... no to teda je mráz kure*skej, snad 20 stupňů. Si dej ruce do kapes, kámo."
"... a zvládněš to? no to mi neřikej, že by te mohla rozložit jedna pražská zima, káámo, dej siruce do kapes, káámo"
"... kámo ? si oukej káámo?"
"... káámo ... tak najdi ňákou zastávku a přečti mi, kde seš."
"... no a nemáš na telefonu gepesku? ... nemáš si kupovat takový šmejdy, káámo"
"... jo? a jaká je to teda zastávka?"
"... no mě už neni zima, já sem v tramvaji, ale venku mrzne, kaamo, asi dvacet"
"... hej .. kámo ... slyšíš mě? ... slyšíš mě?
nějakou dobu mlčí, snaží se vytočit číslo .... dlouho se mu nedaří se dovolat
"... hej kámo si oukej? ...kámo "
"... já jsem v tramvaji, dojedu na Lazarskou, tam přesednu a pojedu na hlavák a pak vlakem domu, káámo"
"... no a v jakým čísle jedeš? ... "
vstává a rozhlíží se po vývěskách rozhlíží se a pak s ptá
".. prosimvas, co je tohle za tramvaj?"
"... já taky jedu 58 tak to jedeš dobře káámo"
uklidněn končí hovor a usedá a v zápětí usíná a tramvaj dojíždí na Lazarskou
mladík spokojeně spí ...
tramvaj dlouho stojí a čeká na rozjezd
mladík se probere .. a znovu bere telefon
"... no jo to už jsi na Andělu. Tak seď v tramvaji a dojeď na Lazarskou a pak už domu trefíš."
"... jo já jsem taky rád, že sem zase v civilizaci, sídliště řepy, taková prdel světa káámo a tramvaják mě tam vykop na konečný"
najednou se zarazí z rozhlédne
"prosimvás, co je tohle za zastávku"
dozvídá se, že Lazarská, vystřelí z tramvaje a jde hledat přestup
...
...
"... káámo to je kosa co?"
pronáší zase do telefonu, když najde svůj přestup a znovu se vrací do naší tramvaje a usedá
"... co rodina? na rodinu se vyprdni... co by mohli mít za řeči? prostě jsme slavili Vendovo mimino ..."
"... káámo .. a jsem na Václaváku, prádička, za chvilku sedím ve vlaku a za 20 minut jsem doma"

Tak snad našel ten správný vlak a jeho kamarád trefil domů Podle zpráv minulou noc nikdo v Praze nezmrzl. Zato Vendovo mimino bude zdravý jak řípa.

středa 26. ledna 2011

Můj osobní předčítač Android

Kolona. Auta se šnečím tempem posunují kupředu. Já sedím v jednom z nich. Možná si říkáte, že trpím. Očekáváte, že hladina adrenalinu stoupá kvůli stresu. Ještě nedávno byste měli pravdu. Čas je v dnešním světě příliš cenná komodita a nechat ho zbůhdarma utíkat mezi prsty jen kvůli nutnosti dopravit se z místa na místo a nepříjemné náhodě, kdy banální dopravní nehoda zastavila dopravní tepnu.
Vedle mě na sedadle leží kouzelná krabička. Mluvící kouzelná krabička. Příjemný ženský hlas mi předčítá zajímavou knihu. Čte bezvadně, srozumitelně, česky. Nemluví však skutečná žena. Hlas je syntetizovaný v krabičce a předčítá elektronickou knihu do krabičky nahranou. Tou krabičkou je telefon HTC Hero vybavený systémem Android (v mém případě froydvillain 1.7.2 tedy Android 2.2 Froyo). Základní službou OS Android je hlasová syntéza. Bohužel v základní verzi neumí česky (ukázka na konci článku). 
UPDATE 18.4.2017: Na Google Play je možné stánout aplikaci Google Text To Speech, která v aktuální verzi poprvé obsahuje podporu TTS v češtině zdarma.


Update  4.1.2017: SVOX se v posledních měsících ukazuje jako nespolehlivý zdroj, jazyky jdou i nadále kupovat, ale není možné stahnout jazyková data. Proto po nákupu okamžiťe zkontrolujte funkčnost a případně využijte možnost vrácení peněz. V tuto chvíli je ekvivalentním řešením nákup Hlas Vocalizer, kde je navíc možnost volby ze dvou hlasů.

Díky firmě SVOX a jejím mobilním řešením pro syntézu řeči je však možné Androida naučit česky mluvit během pár chvil. Pomocí Play obchodu do telefonu nainstalujte TTS engine (SVOX Classic TTS). V nastavení tohoto poskytovatele syntézy řeči aktivujte. Dále budete potřebovat český slovník pro syntézu hlasu, který si musíte koupit jako placenou aplikaci za necelé 3 dolary (a to se vyplatí, věřte mi).
Na SVOX mě navedl článek popisující instalaci tohoto TTS řešení.
UPDATE 9.1.2012:Alternativou SVOX může být řečový syntezátor Acapella
UPDATE 18.4.2017: Další placenou alternativou je Vocalizer 

Nyní už umí Android česky.

Aby mohl předčítat knihy, je ještě potřeba najít čtečku eknih s podporou hlasového výstupu. Ačkoli je čteček pro Androida mnoho, našel jsem pouze jedinou, http://www.blogger.com/img/blank.gifhttp://www.blogger.com/img/blank.gifhttp://www.blogger.com/img/blank.gifkterá umí předčítat tak, aby čtení bylo použitelné. Opět jde o program, který je třeba si koupit. Je jím Moon+ Reader Pro, přičemž právě Pro je důležité, protože v základní verzi čtečka neumí použít TTS. Tentokrát je cena necelých 5 dolarů (opět musím dodat "a to se vyplatí"). Za cenu necelých 8 dolarů (cca 160Kč) dostanete velmi kvalitní a funkční software.

UPDATE 28.3.2012: Nyní již několik dnů používám k předčítání CoolReader, který je zdarma a funguje skoro stejně dobře, jako výše zmiňovaný placený MoonReader.  Takže stačí zakoupit SVOX jazyk, CoolReader lze získat zdarma.

UPDATE 9.3.2014: A další kandidát na bezva čtečku s hlasovým výstupem. FBReader s FBReader TTS+ pluginem. To + na konci je důležité - výrobce Hyperionics a vše gratis.

Ne všechno je úplně dokonalé, existuje pár mušek. SVOX někdy dělá mezi větami příliš dlouhé pomlky. Při vypnutém displeji občas přestane číst (telefon usne?), ale to je možná způsobeno nastavením čtečky. Po ťuknutí na tlačítko rozsvěcející displej čtení pokračuje.

Po instalaci tohoto programového vybavení již můžete do telefonu nahrát svou první eknihu. Čtečka rozumí formátu epub. K jeho výrobě vám zajisté pomůže SW pro správu vaší eknihovny Calibre.

Bohužel dnes není prakticky možné zakoupit eknihu v češtině oficiálně. Když to jde (www.rajknih.cz) nutí vás prodejce využívat propritárních čteček vynucujících DRM a s Androidem jste nahraní o syntéze řeči ani nemluvě.

UPDATE 22.8.2014: Již  třetím rokem jsem spokojeným zákazníkem palmknihy.cz a někdy kosmas.cz
UPDATE 4.1.2017: Alza také není k zahození, mají většinu ebook nabídky.
No a pokud nestačí eknihy, ale občas je třeba nechat si přečíst webovou stránku, DOC, DOCX, PDF nebo kus textu z klipboardu telefonu, pak sáhnu po  Voice Aloud Read, který dokáže přečíst kde co. Stačí odpovídající text nasdílet do aplikace.

Přeji mnoho pěkných "čtenářských" zážitků.


středa 19. ledna 2011

čtvrtek 13. ledna 2011

javascript closures in ECMA script standard

When using something I have a strong need to understand things as deep as possible. I was struggling advanced javascript code using closures heavily. Almost every explanation I found was "example based". As I really need to know the internals to understand the problem I decided to dive into ECMA script specification to find parts related to closures. At first I searched ECMA-262 second edition published back in the last century (1998). Well ... It is really a history. Nothing related to or similar to closures could be found in this document. The I have tried the fifth edition published in 2009. BINGO!

No explanation of closures will follow in this post. I think the description in the spec is crystal clear and should be read by everyone who wants to understand what's going on when a nested function is used.

The shortcut for those who are curious is here: look for Clause 10.2 in the ECMAScript specification document (http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf). Its name is "Lexical enviroments". This clause describes how the javascript engine implements "the magic". Clause 13.2 is otyher usefull part describing function object instantiation.

pátek 24. prosince 2010

Encode movie for IPBOX 420S

The satellite receiver IPBOX 420S is capable to play uploaded MPEG2 files. I was trying to find correct encoder settings for a long time. Finally it is here:

#!/bin/sh
in_vidname=$1
in_subname=${in_vidname%\.*}.srt
out_name=${in_vidname%\.*}.mpeg
echo IN : $in_vidname
echo SUB: $in_subname
echo OUT: $out_name
mencoder \
-sub $in_subname -subcp utf-8 -oac mp3lame \
-subfont-autoscale 1 -nooverlapsub -subpos 70 \
-ovc lavc -of mpeg -mpegopts format=mpeg2:interleaving2 \
-vf scale=720:306,expand=720:576 \
-lavcopts threads=2:vcodec=mpeg2video:vbitrate=2200 \
-ofps 25 \
-o $out_name $in_vidname


Notes:
-oac copy - only usable for some audio (my case - mp3 was fine)
-vf scale=720:304 - find your own depending on movie size - keep aspect if possible

sobota 4. září 2010

Windows 7 sudo alternative

When there is a need to allow unprivileged user to perform certain privileged operation sudo or s-bit are possibilities on UNIX like systems. There is nothing similar on Windows.

Windows 7 (may be even Visto or XP) have EVENT bound scheduled tasks.
The task is scheduled to run under privileged account and is triggered by certain event in event log. The event can be generated by unprivileged account.

How to do it:
As privileged account:

eventcreate /T INFORMATION /L APPLICATION /SO RUN_PRIVILEGED_ACTION
/ID 1 /D "Initial event for source has to be created by privileged account"
schtasks /Create /F /RU SYSTEM /TN PrivilegedTaskRunner /TR c:\windows\system32\privileged-action.cmd
/SC ONEVENT /EC APPLICATION /MO *[System[Provider[@Name='RUN_PRIVILEGED_ACTION']]]


As unprivileged user

eventcreate /T INFORMATION /L APPLICATION
/SO RUN_PRIVILEGED_ACTION /ID 1 /D "running privileged task"

pátek 27. srpna 2010

Batch extract music from video files

Following batch script (windows cmd) extracts audio from any mplayer supported audio or video file and saves the audio in mp3 into output dir. Handy in conjunction with Flash Video Downloader Firefox add-on.


set mplayer=c:\mplayer
set target=c:\music-to-convert\mp3
set source=c:\music-to-convert\flv


cd %source%
for /f %%i in ('dir /b *') do (
echo %%i
set input=%%i
set output=%target%\%%i.mp3
%mplayer%\mencoder -ovc copy -oac mp3lame -lameopts cbr:br=128 -of rawaudio -o "%target%\%%i.mp3" "%%i"
)

pondělí 17. května 2010

Video encoding for Nokia 5310

I needed to encode some video clip to be played on a Nokia 5310 cell phone. After some short research and tuning I have used mencoder. Mencoder is a part of the mplayer package. Mencoder is able to use target profiles for encoding. I have created following profile to create file for Nokia 5310.

[nokia]
profile-desc="MPEG4/AAC"
vf=scale=176:-3,harddup
ovc=lavc=yes
oac=lavc=yes
lavcopts=aglobal=1:vglobal=1:vcodec=mpeg4:vbitrate=65:acodec=libfaac
af=lavcresample=44100
ofps=15
of=lavf=yes
lavfopts=format=mp4

Unfortunately I was not able to run the encoding on Linux (Fedora 12) due to limited support for licensed codecs. Running the task on Windows did the magic. After creating the configuration following commandline did the work:
mencoder source.mp4 -profile nokia -o result.mp4
Video clip playable on Nokia phone was created.

For Windows port of mplayer searches the config in following location:
%MPLAYER_INSTALATION_DIR%\mplayer\mencoder.conf

úterý 16. března 2010

... stanu se automechanikem

... protože jsem se právě dozvěděl, že oprava téměř nepojízdného auta spočívala v přehrání software řídicí jednotky. Když umím přefleshovat domací router, umím přefleshovat i Skodovku.
... a zřejmě mi nahráli novou verzi software, protože mi auto začalo radit, kdy řadit.

pondělí 8. března 2010

... ochrana proti kopírování ad absurdum

... děti dostaly novou PC hru. Proběhla instalace a ... hra nefungovala. Dožadovala se originálního CD i přesto, že bylo v mechanice. Kluci se rozčilovali a několikrát to u mě reklamovali. Zasedl jsem tedy k PC připraven na boj s větrnými mlýny. Nejdřív jsem si nechal ukázat, že se opravdu hra chová prapodivně a nepozná, že má v mechanice originální CD. Odstranění virtuální mechaniky Daemon Tools nepomohlo. Zkusil jsem tedy hru odinstalovat a znovu nainstalovat a ejhle. Na instalační obrazovce se krom tlačítka pro spuštění instalace nachází rovněž tlačítko na "instalaci patche" pro práci s dodávaným CD. Naši hoši jsou totiž typická ukázka klikálků, jako i oni sami říkají. Zásadně nečtou, co je na obrazovce napsáno a klikají zřejmě dle pocitu.

Když jsem spustil instalaci patche, nevěřil jsem svým očím. Asi to tak není, ale patch se instaloval úplně stejně, jako crack, který se dá stáhnout z netu. A to prosím z originálního CD.

.. opět, dnes již podruhé ... legrační. Legálně koupená hra obsahuje patch, kterým je modifikována/odstraněna ochrana proti kopírování.

... nemohoucí word

.. legrační věc. Soubor ve formátu novějšího MS Wordu docx se nedaří otevřít ve MS Wordu starším, jehož nativním formátem je doc. Před mizérií vysvětlování původci dokumentu, že po něm vyžaduji jiný formát, mě zachránil OpenOffice. Jinak také konkurent MS Word. .... zvláštní

čtvrtek 21. ledna 2010

... jak se zrodil "enviromentalistický" Avatar

Film Avatar způosbil poprask. Lidé vyjeveně sledují prostředí Pandory a život na téhle fiktivní planetě, soužití domorodců s přírodou vyvrácený násilným příchodem lidské rasy. To vše dodané v úhledném 3D balíčku jako by bylo na dosah ruky. Mnozí po shlédnutí filmu upadají do depresí při pomyšlení na to, že harmonický svět Pandory je pouze virtuální a nedosažitelný.

Nejen těmto lidem by asi stálo zato připomenout, kde se vlastně lákavě harmonická Pandora zrodila. Celý křehký techniky prostý svět vznikl na zhruba 1000m2 napěchovaných nejmodernější vodou chlazenou počítačovou technologií (40 000 procesorů, 104TB RAM). Zvláštní.

úterý 19. ledna 2010

... energie

Nejde proud. Bez varování se ozvalo CVAK ... a pokoj potemněl. Vzhledem k tomu, že baterka v notebooku nevydrží věru mnoho, vypnul jsem svůj pracovní nástroj. Vyšší moc mi brání v práci. Přemýšlím, co dělat. Beru do ruky knížku, na kterou si nejsem "pod proudem" schopen udělat čas. Asi je to chyba. Určitě je to chyba.

Proud krade. Krade čas, kontakt s ostatními. Vlastně se o to všechno připravuji sám.
Jaké (by) byly večery bez proudu, bez televizí, bez počítačů. Jsem už ta generace, které večery naplnila televize. Další generaci ji naplní směs elektronických bavítek.
Já ještě umím sáhnout po knize. Budou to umět i naše děti? Určitě by mohly, pokud je to naučím. Jenže to jsem asi zanedbal. Vlastním příkladem, vlastní pohodlností jsem je uvrhl do závislosti na proudu. Proudu elektrickém, proudu TV zábavy, proudu internetových dat.

Ale chtěl jsem si zaznamenat něco úplně jiného. Po nějakém čase bez energie jsem si vzpomněl, že mám v konvičce čaj. Vzal jsem ji do ruky, abych nalil voňavý čaj do hrnečku. Byla příjemně teplá. A já si uvědomil, že dříve, o hodně dříve, bych musel nasbírat dřevo, rozdělat oheň, ohřát vodu ... Dnes nedočkavě přešlapuji u rychlovarné konvice, která je někdy na můj vkus pomalá. Vlastně ... pořád si tu píšu o tom samém ...

Možná je čas stát se záškodníkem. Možná by jednou týdně takové CVAK nevadilo. Možná to zkusím. Musím koupit sirky a svíčky ... Ani jednoho se mi ve slepé víře v civilizaci doma nedostává.

PS: Je to problém čistě můj, E. si umí udělat CVAK .... půjdu k ní na školení ;-)

pátek 15. ledna 2010

iReport 3.7.0 - add conditional style mini tutorial

It took me some time to discover how to add a conditional style to a report. As I was not able to find any tutorial covering this topic here it is.

Add a style to the report (Windows->Style Library) Right click to Add a new style. Style properties can be modified in the property window. Right click on the style in Style Library to Add style to report. Once added the style is displayed in the Report Inspector window. And there we are. Right clicking the style in the Style Inspector window an option to add a condition to the style is possible. Once added an expression can be edited. Each condition can have its own set of attributes.

pondělí 4. ledna 2010

... backing up on Amazon S3

During Christmas I successfully migrated my backup procedure to use Amazon AWS. Influenced by Linux/Unix backup solution duplicity I was looking for similar solution for Windows. There is a Windows clone called Duplicati. Duplicati is implemented using C#/.NET runtime. Duplicati is a very fresh product (v1.0) but very promissing. With minor drawbacks Duplicati works as expected. I'm looking forward to future improved releases. And of course it's opensource (I have sources on my disk). A breif summary follows:

  • wide range of back-ends supported (S3 is my choice)

  • incremental delta based backup - no merged view of backups

  • minor problems when connecting to S3 - default setup has to be used - custom settings fail



Using S3 for backups seems to me as a good solution. Initial backup (almost 7GB after packing) takes a lot of time to complete. In fact - the completion required several runs. Incremental backup is pretty fast.

Now I have my files encrypted and stored on Amazon AWS and it costs $0.17*7GB = $1.19 per month.

středa 30. prosince 2009

Install Fedora 12 on Dell Latitude D630 - wifi

Update: see update for Fedora 15

After short struggling wifi is now working well. I have used ndiswrapper and Dell driver (use service tag to find it). For me it was ftp://ftp.us.dell.com/network/R242906.exe. Open the downloaded file using file-roller (archive manager) and extract bcmwl4.inf and bcmwl5.sys.
After installing ndiswrapper packages following commands installed the card:

ndiswrapper -i bcmwl5.inf
ndiswrapper -m
ndiswrapper -l


The last command shall say something similar to:
bcmwl5 : driver installed
device (14E4:4328) present (alternate driver: ssb)


Now add line ndiswrapper to /etc/modules and a line
blacklist ssb
into /etc/modprobe.d/blacklist.conf.

Try modprobe ndiswrapper now and see whether NetworkManager will detect wifi networks in the range .

pondělí 28. prosince 2009

running Bluez 4.x without GUI

Recently I have tried to run bluetooth on my Fedora12 installation. It seems bluetooth works fine only if GUI is used. BlueZ (Linux bluetooth stack implementation) heavily relies on DBUS. Unfortunately there is no support for pairing devices (PIN entry) when no GUI is available. Every post on the internet regarding non GUI bluetooth setup is just useless as it references pre 4.x bluez setup. Bluez seems to have changed a lot in 4.x versions. There is almost no documentation.

The recommended way was to use the default passkey-agent. But it seems not to work anymore.

Finaly I was able to pair may device using sample agent found in bluez sources test/simple-agent which is configurable. I have modified the source slightly to pair using constant PIN. When started the code bellow will respond with constant PIN to every pairing request. The constant PIN is 1243.

Usage: store the following code into a file. Change attributes of the file to be runnable (chmod a+x filename). Then run the script. Then you will be able to pair devices using the default PIN 1243.

#!/usr/bin/python

import gobject

import sys
import dbus
import dbus.service
import dbus.mainloop.glib

class Rejected(dbus.DBusException):
_dbus_error_name = "org.bluez.Error.Rejected"

class Agent(dbus.service.Object):
exit_on_release = True

def set_exit_on_release(self, exit_on_release):
self.exit_on_release = exit_on_release

@dbus.service.method("org.bluez.Agent",
in_signature="", out_signature="")
def Release(self):
print "Release"
if self.exit_on_release:
mainloop.quit()

@dbus.service.method("org.bluez.Agent",
in_signature="os", out_signature="")
def Authorize(self, device, uuid):
print "Authorize"
return

@dbus.service.method("org.bluez.Agent",
in_signature="o", out_signature="s")
def RequestPinCode(self, device):
print "RequestPinCode"
return "1243"

@dbus.service.method("org.bluez.Agent",
in_signature="o", out_signature="u")
def RequestPasskey(self, device):
print "RequestPasskey"
return dbus.UInt32("1243")

@dbus.service.method("org.bluez.Agent",
in_signature="ou", out_signature="")
def DisplayPasskey(self, device, passkey):
print "DisplayPasskey"
return

@dbus.service.method("org.bluez.Agent",
in_signature="ou", out_signature="")
def RequestConfirmation(self, device, passkey):
print "RequestConfirmation"
return

@dbus.service.method("org.bluez.Agent",
in_signature="s", out_signature="")
def ConfirmModeChange(self, mode):
print "ConfirmModeChange (%s)" % (mode)

@dbus.service.method("org.bluez.Agent",
in_signature="", out_signature="")
def Cancel(self):
print "Cancel"

def create_device_reply(device):
print "New device (%s)" % (device)
mainloop.quit()

def create_device_error(error):
print "Creating device failed: %s" % (error)
mainloop.quit()

if __name__ == '__main__':
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
print "Step 1"

bus = dbus.SystemBus()
print "System bus acquired"

manager = dbus.Interface(bus.get_object("org.bluez", "/"),
"org.bluez.Manager")
print "manager acquired"

path = manager.DefaultAdapter()
print "Manager path acquired"

adapter = dbus.Interface(bus.get_object("org.bluez", path),
"org.bluez.Adapter")
print "adapter acquired"

path = "/my/agent"
agent = Agent(bus, path)
print "Agent object created"

mainloop = gobject.MainLoop()
print "Main loop created"

adapter.RegisterAgent(path, "NoInputNoOutput")
print "Agent registered"

print "Starting loop"
mainloop.run()

#adapter.UnregisterAgent(path)
#print "Agent unregistered"

pondělí 21. prosince 2009

... boot from USB with non USB BIOS

Willing to boot an old computer with no BIOS support for USB boot and the only media you have is a flash thumb drive. If it happens and you face such problem take a look at PLoP.

You can install the boot loader in many different ways. My case: Windows were installed on the target PC. I installed bootloader using plpgenbtldr-0.7.zip according to its readme. Rebooted .... and ... computer is booting using USB flash.

středa 16. prosince 2009

Problém s ASUS 500g Premium

Dlouhou dobu využívám ASUS 500g Premium. Včera přestal fungovat. Seděl si u okna a z ničeho nic přestal reagovat. Zdálo se, že se z něj stala nepotřebná cihlička (brick). Všechny kontrolky všech síťových portů svítily, WAN a POWER kontrolka byly zhasnuté, krabička nereagovala. Mrtvo.

Začal jsem zkoušet, dokonce jsem se uchýlil k "PIN 9" triku, kterým se má zařízení zresetovat do továrního nastavení. Nic nepomohlo. Hledal jsem a hledal až jsem našel informaci o problémech se zdrojem, které se měly projevovat stejně jako ty mé.

A problém byl vyřešen. Mezi mnoha zdroji, které se mi doma potulují jsem objevil jeden, který vyhovoval jak elektricky (5V/2.5A), tak konektorem a huráááá.

Moje oblíbená krabička se rozeběhla. Následkem předchozích pokusů sice zcela vymazaná, ale zato teď běží se zbrusu novou verzi systému OpenWRT Kamikaze 8.09.2, která mimo jiné zřejmě vyřešila problematickou kvalitu signálu adoptované Atheros WiFi karty.

středa 2. prosince 2009

... italské minuty

Po příletu došlo k zásadnímu odhalení. Bylo mi vyjeveno, proč se prasečí chřipka jmenuje prasečí. Na Milánském letišti při čekání na zavazadlo se ukázalo, ze v ochranu před touto zákeřnou o to více však neškodnou nemocí lidé berou respirátory, které jim dávají vzhled čuněte s rypákem.

V zápětí, lehce rozčilen přeháněním hrozby chřipkou, mě italský taxi řidič vyškolil v oboru úcty k životu a zdraví, když mi názorně ukázal, jak značky omezující rychlost přeměnit ve zbytečné dekorace, jak nakouknout do kufru auta vpředu jedoucího a na závěr mistrovské dílo v několika reprízách s názvem: "Plná čára není zeď. A to ani tehdy, kdy za zatáčku fakt není vidět".

Dnes večer itálie vytála žolíka v podobě večeře ještě bohatší, než lze vyjádřit slovem opulentní:

  • pršut se zeleninou

  • brokolicový závin

  • "sekaná" s dušenou kapustou

  • zelenina smažená v těstíčku

  • polenta se sýrovou pěnou

  • taštičky s dýňovou náplní

  • rizoto

  • panenka pečená v listovém těstě

  • zákusky 3 druhů (čokoládový řez, banánový řez, kávové cosi)

  • espresso

  • a k tomu všemu dobré vínko



Uffff .. jdu trávit

úterý 17. listopadu 2009

... trable s licenčním ujednáním

Poklidnou hladinu světa IT tu a tam zčeří informace o bezpečnostní díře v tom kterém prgrámku, tu a tam šplouchne vlnka rozbrojů mezi zastánci různých platforem a v poslední době čím dál častějí hladinu povážlivě rozkymácí události spojené s duševním vlastnictvím, patentováním a kradením myšlenek a obecných postupů a v neposlední řadě i SW pirátství.
Jedna taková vlnka došplouchla až na mě skrze firemní správce více či méně úspěšně spouštějící kontroly SW čistoty na mém notebooku. Nepřipraveného mě zastihl dotaz kolegy, zda nevím, jestli na firemním notebooku může mít ovladače k domácí tiskárně a skeneru v jednom.

Odpověď jsem neznal, ale obecně zaujat touto oblastí jsem nahlédl do licenčního ujednání HP kteréžto firmy výrobek (PSC 1510) vlastním. Licenční ujednání v češtině, aby člověk pohledal. Pohledá li, neuspěje. S vděkem vzpomínaje na třídního učitele z gymnázia, angličtináře, jsem pročetl licenční ujednání. A ... světe div se! Zjistil jsem, že jsem SW pirát. Licenční ujednání k ovladačům pro toto zařízení (a všecha obdobná) obsahuje tuto větu:
HP grants you a license to Use one copy of the HP Software. V překladu: HP uděluje licenci k použití jedné kopie software HP. Mám dva počítače. Na obou mám instalovaný ovladač k mé tiskárně. Jsem pirát.

Na zákaznické lince HP mi bylo řečeno (po konzultaci s kolegou "co tomu rozumí"), že si klidně mohu SW instalovat na více počítačů, pokud ho nebudu prodávat.

Jak se zdá, ne vždy platí, že "Co je psáno, to je dáno". Tak takhle to právní povědomí nevybudujeme, soudr.... pánové. Sám autor SW vám radí, abyste se jeho licenčním ujednáním neřídili. Jak máme vědět, že jindy to ale opravdu myslí vážně. A nebo hůře. Co když jen říká: "Nech to být" a jednoho dne přijde a ukáže prstem. Těžko říci, co je horší...

... ale nejhorší jsou stejně trpaslíci, co všude vlezou

středa 11. listopadu 2009

... sleepless night full of programming and debugging

I didn't sleep last night. There is a nasty bug in the Java XML parser. Under certain circumstances (inherited default namespace with together with attributes present) the parser presents a rich imagination. In this case an element namespace properties are wrong. No namespace URI is assigned to the element and the null namespace is attached.
As a result when serialized extra namespace definition appears xmlns="" and as a result the element is not bound to any namespace. A colleague of mine performed an excellent analysis of the problem.

Here is a result of the sleepless night (traverseDom method walk the tree recursively calling processNode on each node:

traverseDom(doc.getDocumentElement(),
new NodeProcessor() {
public void processNode(Node n) {
//TODO watch this in case the java xml parser will get better in future versions
//TODO watch this for general purpose XML signature processing where such elements may be legal
//fix parser error - we can afford this as no element is unqualified
// in case there is a unqualified element with some attributes with default null namespace
// it is concidered as an error produced by buggy parser
if (n.getNodeType()==n.ELEMENT_NODE &&
n.getAttributes().getLength()!=0 &&
n.isDefaultNamespace(null) &&
n.getNamespaceURI()==null){
String prfx=n.lookupPrefix(n.getParentNode().getNamespaceURI())
n.getOwnerDocument().renameNode(n,
n.getParentNode().getNamespaceURI(), prfx+":"+n.getLocalName());
}
}
}, true);

pátek 30. října 2009

... zamrzlý statista

... určitě znáte scény z filmů a pohádek, kdy se zastaví čas. Svět je z ničeho nic plný zamrzlých statistů a jen pár vyvolených se mezi řadami nehybných postav prohání stojícímu času navzdory. V této sezóně poprvé na bruslích jsem tohle zažil v reálném životě. Mezi poklidně více či méně stabilně se klouzajícími bruslaři se jak vítr mezi stromy prohání pár bohem nadaných létajících kluků a holek. Oni poráží čas a snad i fyzikální zákony a létají křídel nemaje. No a hádejte, do které skupiny jsem patřil já ;-)

sobota 3. října 2009

Klábosilův noční přesun 2009

Poprvé jsem se téhle příjemné akce zúčastnil v roce 1993, jak prozradila startovní listina všech historických účastníků (cca 2000 osob) od prvního ročníku do letošního 16. Mezi těmito ročníky mám absenci.

Letos tedy po 16 letech další účast s rodinou. V půl deváté večer už pod rouškou tmy jsme byli naloženi do autobusu a dle pokynu si zavázali šátky na oči. Pak už se jelo levá zatáčka, pravá zatáčka, přejezd. Pátrání v paměti, kam že by nás to mohli vézt a pak už výsadek. Na křižovatce v lese jsme nasbírali indicie a podle nalezeného itineráře jsme se dali na pochod. Bylo 21:25.

Nebe se postupně vyjasňovalo a na volných prostranstvích zalitých světlem měsíce téměř v úplňku jsme si připadali málem jako na polední procházce. Baterek nebylo potřeba i stíny měsíc dokázal vykreslit.

Párkrát přišla ke slovu buzola a pochod napříč lesem podle azimutu, častěji se nám podařilo najít vyšlapanou nebo vyjetou cestičku, silnici nebo koleje. Postupně jsme si každý našel také svou vlastní louži, kam se nám noha zabořila až po kotník.

Před čtvrtou hodinou ranní nám patřily všechny kontroly a už před námi na stole voněl cílový gulášek. Před pátou už v posteli jsme litovali účastníky pochodu, kteří se ještě potulovali po trase.

Naše patnáctikilometrová trasa:

čtvrtek 1. října 2009

... naletěl jsem - nečekané pokračování

Nedávno jsem si tu poplakal, jak jsem v jedné nejmenované ČSOB rušil účet a naletěl jsem. Ta legrace mě stála 240Kč, které jsem vyhodil za zrušení účtu na pobočce. Bez varování a upozornění od osobní bankéřky. Za zrušení přes internet banking dáte 8x méně.

Již jsem si své závěry udělal a smířil jsem se s tím, že jsem hlupák. Když tu včera zazvonil telefon a já uslyšel hlas ze záhrobí. Osobní bankéřka. A že prý mi končí výpovědní lhůta za týden a že mi tedy bude zrušen účet... a..... Už jsem byl připraven jí slušně poděkovat za případné nabídky dalších služeb.

Jenže ona řekla něco, co mě přivedlo do varu: "Na vašem účtu je bohužel záporný zůstatek, takže se nedá zrušit."

Následoval zhruba takovýto hovor:

Já:"Já vím naprosto přesně, proč je na mém účtě záporný zůstatek. Překvapivě jste mi naúčtovali 6xzrušení souhlasu s inkasem po 40 korunách. Rušil jsem účet osobně na pobočce a přijde mi silně neetické, že jste mě neupozornila, že jedním podpisem, který já jsem považoval za formalitu, přijdu o více jak 200 korun. V každém obchodě musí mít cedulku s cenou i u obyčejného rohlíku, jen v bance ne."

OB (osobní bankéřka): "Nepovažovala jsem za nutné vás s tím seznamovat. Někteří klienti tohle neřeší."

Já: "Mě tedy více jak 200 korun nepřijde jako zanedbatelná částka, kterou bych nechtěl řešit. Moje chyba byla, že jsem neznal sazebník, nebo spíše, že jsem si neověřil jeho detaily, ale čekal bych, že tuto zásadní informci dostanu od vás. Vaše postupy se mi nelíbi a znovu opakuji, že mi přijdou silně neetické."

OB:"Tohle já vyřešit nemohu. Budu to muset předat paní ředitelce."

Já: "Předejte to prosím paní ředitelce. Rád si s ní o tom promluvím. A kolik vlastně dělá dluh?"

OB: "Jedenáct korun. A nějaké poplatky k tomu"

Já: "Předejte to prosím paní ředitelce."

No a to je zhruba celé. Bohužel jsem neměl tolik duchapřítomnosti, abych bance řekl, že když jim nepřipadalo podstatné mi sdělit, že mě oholí o 240 korun, mě zas je celkem jedno, že mám u nich dluh ve výši korun jedenácti. S nějakými těmi dodatkovými poplatečky, samozřejmě. A taky uročíček zanedbatelný kontokorentní by se jistě našel.

... pokračování příště ... buď po hovoru s paní ředitelkou, nebo až dorazí upomínka/exekuce? kdo ví....

středa 30. září 2009

Translate LANGID to human readable string from

I needed to display language settings of a Windows system. No utility was available in the wild. Here I present and offer a simple utility which displays language string acquired by GetSystemDefaultLangID() and GetUserDefaultLangID(). Source included for any use.

Well no easy way how to attach file. Just a source for now:
/*
This code is public domain. No restriction to use for any purpose.
*/
#include "stdafx.h"
#include "displaylang.h"
#include

typedef struct _langinfo {
int id;
char *desc;
char *code;
char *scriptTag;
char *ansiCP;
} LangInfo;

LangInfo table[]={
{0x0436,"Afrikaans (South Africa)","af-ZA","Latn","1252"},
{0x041c,"Albanian (Albania)","sq-AL","Latn","1252"},
{0x0484,"Windows Vista and later: Alsatian (France)","gsw-FR"," "," "},
{0x045e,"Windows Vista and later: Amharic (Ethiopia)","am-ET"," ","Unicode only"},
{0x1401,"Arabic (Algeria)","ar-DZ","Arab","1256"},
{0x3c01,"Arabic (Bahrain)","ar-BH","Arab","1256"},
{0x0c01,"Arabic (Egypt)","ar-EG","Arab","1256"},
{0x0801,"Arabic (Iraq)","ar-IQ","Arab","1256"},
{0x2c01,"Arabic (Jordan)","ar-JO","Arab","1256"},
{0x3401,"Arabic (Kuwait)","ar-KW","Arab","1256"},
{0x3001,"Arabic (Lebanon)","ar-LB","Arab","1256"},
{0x1001,"Arabic (Libya)","ar-LY","Arab","1256"},
{0x1801,"Arabic (Morocco)","ar-MA","Arab","1256"},
{0x2001,"Arabic (Oman)","ar-OM","Arab","1256"},
{0x4001,"Arabic (Qatar)","ar-QA","Arab","1256"},
{0x0401,"Arabic (Saudi Arabia)","ar-SA","Arab","1256"},
{0x2801,"Arabic (Syria)","ar-SY","Arab","1256"},
{0x1c01,"Arabic (Tunisia)","ar-TN","Arab","1256"},
{0x3801,"Arabic (U.A.E.)","ar-AE","Arab","1256"},
{0x2401,"Arabic (Yemen)","ar-YE","Arab","1256"},
{0x042b,"Windows 2000 and later: Armenian (Armenia)","hy-AM","Armn","Unicode only"},
{0x044d,"Windows Vista and later: Assamese (India)","as-IN"," ","Unicode only"},
{0x082c,"Azeri (Azerbaijan, Cyrillic)","az-Cyrl-AZ","Cyrl","1251"},
{0x042c,"Azeri (Azerbaijan, Latin)","az-Latn-AZ","Latn","1254"},
{0x046d,"Windows Vista and later: Bashkir (Russia)","ba-RU"," "," "},
{0x042d,"Basque (Basque)","eu-ES","Latn","1252"},
{0x0423,"Belarusian (Belarus)","be-BY","Cyrl","1251"},
{0x0445,"Windows XP SP2 and later: Bengali (India)","bn-IN","Beng","Unicode only"},
{0x201a,"Windows XP SP2 and later (downloadable); Windows Vista and later: Bosnian (Bosnia and Herzegovina, Cyrillic)","bs-Cyrl-BA","Cyrl","1251"},
{0x141a,"Windows XP SP2 and later: Bosnian (Bosnia and Herzegovina, Latin)","bs-Latn-BA","Latn","1250"},
{0x047e,"Breton (France)","br-FR","Latn","1252"},
{0x0402,"Bulgarian (Bulgaria)","bg-BG","Cyrl","1251"},
{0x0455,"Not supported: Burmese"," "," "," "},
{0x0403,"Catalan (Catalan)","ca-ES","Latn","1252"},
{0x0c04,"Chinese (Hong Kong SAR, PRC)","zh-HK","Hant","950"},
{0x1404,"Windows 98/Me, Windows XP and later: Chinese (Macao SAR)","zh-MO","Hant","950"},
{0x0804,"Chinese (PRC)","zh-CN","Hans","936"},
{0x1004,"Chinese (Singapore)","zh-SG","Hans","936"},
{0x0404,"Chinese (Taiwan)","zh-TW","Hant","950"},
{0x101a,"Windows XP SP2 and later: Croatian (Bosnia and Herzegovina, Latin)","hr-BA","Latn","1250"},
{0x041a,"Croatian (Croatia)","hr-HR","Latn","1250"},
{0x0405,"Czech (Czech Republic)","cs-CZ","Latn","1250"},
{0x0406,"Danish (Denmark)","da-DK","Latn","1252"},
{0x048c,"Windows XP and later: Dari (Afghanistan)","gbz-AF","Arab","1256"},
{0x0465,"Windows XP and later: Divehi (Maldives)","dv-MV","Thaa","Unicode only"},
{0x0813,"Dutch (Belgium)","nl-BE","Latn","1252"},
{0x0413,"Dutch (Netherlands)","nl-NL","Latn","1252"},
{0x0c09,"English (Australia)","en-AU","Latn","1252"},
{0x2809,"English (Belize)","en-BZ","Latn","1252"},
{0x1009,"English (Canada)","en-CA","Latn","1252"},
{0x2409,"English (Caribbean)","en-029","Latn","1252"},
{0x4009,"Windows Vista and later: English (India)","en-IN","Latn","1252"},
{0x1809,"English (Ireland)","en-IE","Latn","1252"},
{0x2009,"English (Jamaica)","en-JM","Latn","1252"},
{0x4409,"Windows Vista and later: English (Malaysia)","en-MY","Latn","1252"},
{0x1409,"English (New Zealand)","en-NZ","Latn","1252"},
{0x3409,"Windows 98/Me, Windows 2000 and later: English (Philippines)","en-PH","Latn","1252"},
{0x4809,"Windows Vista and later: English (Singapore)","en-SG","Latn","1252"},
{0x1c09,"English (South Africa)","en-ZA","Latn","1252"},
{0x2c09,"English (Trinidad and Tobago)","en-TT","Latn","1252"},
{0x0809,"English (United Kingdom)","en-GB","Latn","1252"},
{0x0409,"English (United States)","en-US","Latn","1252"},
{0x3009,"Windows 98/Me, Windows 2000 and later: English (Zimbabwe)","en-ZW","Latn","1252"},
{0x0425,"Estonian (Estonia)","et-EE","Latn","1257"},
{0x0438,"Faroese (Faroe Islands)","fo-FO","Latn","1252"},
{0x0464,"Windows XP SP2 and later (downloadable); Windows Vista and later: Filipino (Philippines)","fil-PH","Latn","1252"},
{0x040b,"Finnish (Finland)","fi-FI","Latn","1252"},
{0x080c,"French (Belgium)","fr-BE","Latn","1252"},
{0x0c0c,"French (Canada)","fr-CA","Latn","1252"},
{0x040c,"French (France)","fr-FR","Latn","1252"},
{0x140c,"French (Luxembourg)","fr-LU","Latn","1252"},
{0x180c,"French (Monaco)","fr-MC","Latn","1252"},
{0x100c,"French (Switzerland)","fr-CH","Latn","1252"},
{0x0462,"Windows XP SP2 and later (downloadable); Windows Vista and later: Frisian (Netherlands)","fy-NL","Latn","1252"},
{0x0456,"Windows XP and later: Galician (Spain)","gl-ES","Latn","1252"},
{0x0437,"Windows 2000 and later: Georgian (Georgia)","ka-GE","Geor","Unicode only"},
{0x0c07,"German (Austria)","de-AT","Latn","1252"},
{0x0407,"German (Germany)","de-DE","Latn","1252"},
{0x1407,"German (Liechtenstein)","de-LI","Latn","1252"},
{0x1007,"German (Luxembourg)","de-LU","Latn","1252"},
{0x0807,"German (Switzerland)","de-CH","Latn","1252"},
{0x0408,"Greek (Greece)","el-GR","Grek","1253"},
{0x046f,"Windows Vista and later: Greenlandic (Greenland)","kl-GL","Latn","1252"},
{0x0447,"Windows XP and later: Gujarati (India)","gu-IN","Gujr","Unicode only"},
{0x0468,"Windows Vista and later: Hausa (Nigeria, Latin)","ha-Latn-NG","Latn","1252"},
{0x040d,"Hebrew (Israel)","he-IL","Hebr","1255"},
{0x0439,"Windows 2000 and later: Hindi (India)","hi-IN","Deva","Unicode only"},
{0x040e,"Hungarian (Hungary)","hu-HU","Latn","1250"},
{0x040f,"Icelandic (Iceland)","is-IS","Latn","1252"},
{0x0470,"Igbo (Nigeria)","ig-NG"," "," "},
{0x0421,"Indonesian (Indonesia)","id-ID","Latn","1252"},
{0x085d,"Windows XP and later: Inuktitut (Canada, Latin)","iu-Latn-CA","Latn","1252"},
{0x045d,"Windows XP SP2 and later (downloadable); Windows Vista and later: Inuktitut (Canada, Syllabics)","iu-Cans-CA","Cans","Unicode only"},
{0x083c,"Windows XP SP2 and later (downloadable); Windows Vista and later: Irish (Ireland)","ga-IE","Latn","1252"},
{0x0410,"Italian (Italy)","it-IT","Latn","1252"},
{0x0810,"Italian (Switzerland)","it-CH","Latn","1252"},
{0x0411,"Japanese (Japan)","ja-JP","Hani;Hira;Kana","932"},
{0x044b,"Windows XP and later: Kannada (India)","kn-IN","Knda","Unicode only"},
{0x043f,"Windows 2000 and later: Kazakh (Kazakhstan)","kk-KZ","Cyrl","1251"},
{0x0453,"Windows Vista and later: Khmer (Cambodia)","kh-KH","Khmr","Unicode only"},
{0x0486,"Windows Vista and later: K'iche (Guatemala)","qut-GT","Latn","1252"},
{0x0487,"Windows Vista and later: Kinyarwanda (Rwanda)","rw-RW","Latn","1252"},
{0x0457,"Windows 2000 and later: Konkani (India)","kok-IN","Deva","Unicode only"},
{0x0812,"Windows 95, Windows NT 4.0 only: Korean (Johab)"," "," "," "},
{0x0412,"Korean (Korea)","ko-KR","Hang;Hani","949"},
{0x0440,"Windows XP and later: Kyrgyz (Kyrgyzstan)","ky-KG","Cyrl","1251"},
{0x0454,"Windows Vista and later: Lao (Lao PDR)","lo-LA","Laoo","Unicode only"},
{0x0426,"Latvian (Latvia)","lv-LV","Latn","1257"},
{0x0427,"Lithuanian (Lithuania)","lt-LT","Latn","1257"},
{0x082e,"Windows Vista and later: Lower Sorbian (Germany)","dsb-DE","Latn","1252"},
{0x046e,"Windows XP SP2 and later (downloadable); Windows Vista and later: Luxembourgish (Luxembourg)","lb-LU","Latn","1252"},
{0x042f,"Windows 2000 and later: Macedonian (Macedonia, FYROM)","mk-MK","Cyrl","1251"},
{0x083e,"Windows 2000 and later: Malay (Brunei Darussalam)","ms-BN","Latn","1252"},
{0x043e,"Windows 2000 and later: Malay (Malaysia)","ms-MY","Latn","1252"},
{0x044c,"Windows XP SP2 and later: Malayalam (India)","ml-IN","Mlym","Unicode only"},
{0x043a,"Windows XP SP2 and later: Maltese (Malta)","mt-MT","Latn","1252"},
{0x0481,"Windows XP SP2 and later: Maori (New Zealand)","mi-NZ","Latn","1252"},
{0x047a,"Windows XP SP2 and later (downloadable); Windows Vista and later: Mapudungun (Chile)","arn-CL","Latn","1252"},
{0x044e,"Windows 2000 and later: Marathi (India)","mr-IN","Deva","Unicode only"},
{0x047c,"Windows XP SP2 and later (downloadable); Windows Vista and later: Mohawk (Canada)","moh-CA","Latn","1252"},
{0x0450,"Windows XP and later: Mongolian (Mongolia)","mn-Cyrl-MN","Cyrl","1251"},
{0x0850,"Windows Vista and later: Mongolian (PRC)","mn-Mong-CN","Mong","Unicode only"},
{0x0461,"Windows XP SP2 and later (downloadable); Windows Vista and later: Nepali (Nepal)","ne-NP","Deva","Unicode only"},
{0x0414,"Norwegian (Bokmål, Norway)","nb-NO","Latn","1252"},
{0x0814,"Norwegian (Nynorsk, Norway)","nn-NO","Latn","1252"},
{0x0482,"Occitan (France)","oc-FR","Latn","1252"},
{0x0448,"Oriya (India)","or-IN","Orya","Unicode only"},
{0x0463,"Windows XP SP2 and later (downloadable); Windows Vista and later: Pashto (Afghanistan)","ps-AF"," "," "},
{0x0429,"Persian (Iran)","fa-IR","Arab","1256"},
{0x0415,"Polish (Poland)","pl-PL","Latn","1250"},
{0x0416,"Portuguese (Brazil)","pt-BR","Latn","1252"},
{0x0816,"Portuguese (Portugal)","pt-PT","Latn","1252"},
{0x0446,"Windows XP and later: Punjabi (India)","pa-IN","Guru","Unicode only"},
{0x046b,"Windows XP SP2 and later: Quechua (Bolivia)","quz-BO","Latn","1252"},
{0x086b,"Windows XP SP2 and later: Quechua (Ecuador)","quz-EC","Latn","1252"},
{0x0c6b,"Windows XP SP2 and later: Quechua (Peru)","quz-PE","Latn","1252"},
{0x0418,"Romanian (Romania)","ro-RO","Latn","1250"},
{0x0417,"Windows XP SP2 and later (downloadable); Windows Vista and later: Romansh (Switzerland)","rm-CH","Latn","1252"},
{0x0419,"Russian (Russia)","ru-RU","Cyrl","1251"},
{0x243b,"Windows XP SP2 and later: Sami (Inari, Finland)","smn-FI","Latn","1252"},
{0x103b,"Windows XP SP2 and later: Sami (Lule, Norway)","smj-NO","Latn","1252"},
{0x143b,"Windows XP SP2 and later: Sami (Lule, Sweden)","smj-SE","Latn","1252"},
{0x0c3b,"Windows XP SP2 and later: Sami (Northern, Finland)","se-FI","Latn","1252"},
{0x043b,"Windows XP SP2 and later: Sami (Northern, Norway)","se-NO","Latn","1252"},
{0x083b,"Windows XP SP2 and later: Sami (Northern, Sweden)","se-SE","Latn","1252"},
{0x203b,"Windows XP SP2 and later: Sami (Skolt, Finland)","sms-FI","Latn","1252"},
{0x183b,"Windows XP SP2 and later: Sami (Southern, Norway)","sma-NO","Latn","1252"},
{0x1c3b,"Windows XP SP2 and later: Sami (Southern, Sweden)","sma-SE","Latn","1252"},
{0x044f,"Windows 2000 and later: Sanskrit (India)","sa-IN","Deva","Unicode only"},
{0x1c1a,"Windows XP SP2 and later: Serbian (Bosnia and Herzegovina, Cyrillic)","sr-Cyrl-BA","Cyrl","1251"},
{0x181a,"Windows XP SP2 and later: Serbian (Bosnia and Herzegovina, Latin)","sr-Latn-BA","Latn","1250"},
{0x0c1a,"Serbian (Serbia, Cyrillic)","sr-Cyrl-CS","Cyrl","1251"},
{0x081a,"Serbian (Serbia, Latin)","sr-Latn-CS","Latn","1250"},
{0x046c,"Windows XP SP2 and later: Sesotho sa Leboa/Northern Sotho (South Africa)","ns-ZA","Latn","1252"},
{0x0432,"Windows XP SP2 and later: Setswana/Tswana (South Africa)","tn-ZA","Latn","1252"},
{0x045b,"Windows Vista and later: Sinhala (Sri Lanka)","si-LK","Sinh","Unicode only"},
{0x041b,"Slovak (Slovakia)","sk-SK","Latn","1250"},
{0x0424,"Slovenian (Slovenia)","sl-SI","Latn","1250"},
{0x2c0a,"Spanish (Argentina)","es-AR","Latn","1252"},
{0x400a,"Spanish (Bolivia)","es-BO","Latn","1252"},
{0x340a,"Spanish (Chile)","es-CL","Latn","1252"},
{0x240a,"Spanish (Colombia)","es-CO","Latn","1252"},
{0x140a,"Spanish (Costa Rica)","es-CR","Latn","1252"},
{0x1c0a,"Spanish (Dominican Republic)","es-DO","Latn","1252"},
{0x300a,"Spanish (Ecuador)","es-EC","Latn","1252"},
{0x440a,"Spanish (El Salvador)","es-SV","Latn","1252"},
{0x100a,"Spanish (Guatemala)","es-GT","Latn","1252"},
{0x480a,"Spanish (Honduras)","es-HN","Latn","1252"},
{0x080a,"Spanish (Mexico)","es-MX","Latn","1252"},
{0x4c0a,"Spanish (Nicaragua)","es-NI","Latn","1252"},
{0x180a,"Spanish (Panama)","es-PA","Latn","1252"},
{0x3c0a,"Spanish (Paraguay)","es-PY","Latn","1252"},
{0x280a,"Spanish (Peru)","es-PE","Latn","1252"},
{0x500a,"Spanish (Puerto Rico)","es-PR","Latn","1252"},
{0x0c0a,"Spanish (Spain)","es-ES","Latn","1252"},
{0x040a,"Spanish (Spain, Traditional Sort)","es-ES_tradnl","Latn","1252"},
{0x540a,"Windows Vista and later: Spanish (United States)","es-US"," "," "},
{0x380a,"Spanish (Uruguay)","es-UY","Latn","1252"},
{0x200a,"Spanish (Venezuela)","es-VE","Latn","1252"},
{0x0430,"Not supported: Sutu"," "," "," "},
{0x0441,"Windows 2000 and later: Swahili (Kenya)","sw-KE","Latn","1252"},
{0x081d,"Swedish (Finland)","sv-FI","Latn","1252"},
{0x041d,"Swedish (Sweden)","sv-SE","Latn","1252"},
{0x045a,"Windows XP and later: Syriac (Syria)","syr-SY","Syrc","Unicode only"},
{0x0428,"Windows Vista and later: Tajik (Tajikistan)","tg-Cyrl-TJ","Cyrl","1251"},
{0x085f,"Windows Vista and later: Tamazight (Algeria, Latin)","tmz-Latn-DZ","Latn","1252"},
{0x0449,"Windows 2000 and later: Tamil (India)","ta-IN","Taml","Unicode only"},
{0x0444,"Windows XP and later: Tatar (Russia)","tt-RU","Cyrl","1251"},
{0x044a,"Windows XP and later: Telugu (India)","te-IN","Telu","Unicode only"},
{0x041e,"Thai (Thailand)","th-TH","Thai","874"},
{0x0851,"Windows Vista and later: Tibetan (Bhutan)","bo-BT","Tibt","Unicode only"},
{0x0451,"Windows Vista and later: Tibetan (PRC)","bo-CN","Tibt","Unicode only"},
{0x041f,"Turkish (Turkey)","tr-TR","Latn","1254"},
{0x0442,"Windows Vista and later: Turkmen (Turkmenistan)","tk-TM","Cyrl","1251"},
{0x0480,"Windows Vista and later: Uighur (PRC)","ug-CN","Arab","1256"},
{0x0422,"Ukrainian (Ukraine)","uk-UA","Cyrl","1251"},
{0x042e,"Windows Vista and later: Upper Sorbian (Germany)","wen-DE","Latn","1252"},
{0x0820,"Urdu (India)","tr-IN"," "," "},
{0x0420,"Windows 98/Me, Windows 2000 and later: Urdu (Pakistan)","ur-PK","Arab","1256"},
{0x0843,"Windows 2000 and later: Uzbek (Uzbekistan, Cyrillic)","uz-Cyrl-UZ","Cyrl","1251"},
{0x0443,"Windows 2000 and later: Uzbek (Uzbekistan, Latin)","uz-Latn-UZ","Latn","1254"},
{0x042a,"Windows 98/Me, Windows NT 4.0 and later: Vietnamese (Vietnam)","vi-VN","Latn","1258"},
{0x0452,"Windows XP SP2 and later: Welsh (United Kingdom)","cy-GB","Latn","1252"},
{0x0488,"Windows Vista and later: Wolof (Senegal)","wo-SN","Latn","1252"},
{0x0434,"Windows XP SP2 and later: Xhosa/isiXhosa (South Africa)","xh-ZA","Latn","1252"},
{0x0485,"Windows Vista and later: Yakut (Russia)","sah-RU","Cyrl","1251"},
{0x0478,"Windows Vista and later: Yi (PRC)","ii-CN","Yiii","Unicode only"},
{0x046a,"Windows Vista and later: Yoruba (Nigeria)","yo-NG"," "," "},
{0x0435,"Windows XP SP2 and later: Zulu/isiZulu (South Africa)","zu-ZA","Latn","1252"},
{-1,NULL,NULL,NULL,NULL}};


LangInfo findLangInfo(int id){
int i=0;
for(i=0; table[i].id!=-1 && table[i].id!=id; i++);
return table[i];
}

int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);

LangInfo system=findLangInfo(GetSystemDefaultLangID());
LangInfo user=findLangInfo(GetUserDefaultLangID());

MessageBoxA(NULL,system.desc,"System default language", MB_OK);
MessageBoxA(NULL,user.desc,"User default language",MB_OK);
}

úterý 22. září 2009

... drobky ze CIA


Při cestách internetem jsem narazil na jednu zajímavou příručku. S trochou nadsázky lze ji lze nazvat "Co všechno jste chtěli vědět o sabotážích, ale báli jste se zeptat".
Pochází z dob druhé světové války a byla vydána v USA organizací, jež je předchůdcem CIA. Pro angličtiny znalé tedy trocha zajímavého čtení.

http://www.gutenberg.org/files/26184/page-images/26184-images.pdf

čtvrtek 17. září 2009

... kde jsou ti šťastnější frontoví bojovníci ?

Prohrávám. Na všech frontách. Lépe řečeno ve všech frontách. Vždycky, když si můžu vybrat, do které fronty se zařadím, vyberu si špatně. V samoobsluze, u benzínové pumpy prostě kdekoli. Pokaždé právě "ta moje" fronta je tou nejpomaleji se sunoucí.

A tak se ptám: Kde jsou ti lidé, kteří si vybírají dobře? Podle jakého pravidla se řídí? Proč já zůstanu vždycky v té špatné frontě?

... ale děkuji za optání, jinak vedu celkem spokojený život

pátek 11. září 2009

.. Apache XML Security v 1.4.3 and Java 6

It is not easy to get this combination up and running. Java 6 contains XML Signature implementation (JCP105). The implementaion is based on XML Signature Syntax and Processing v1.0. This version does not contain strong SHA-2 message digest function family. This family is supported in v1.1 of the spec. The v.1.1 is a draft at this time. If you want to use strong digest algorithm you have to override default XML Sig implementation by installing Apache XML Security package. The packages have to be installed into endorsed directory of your JRE. There sill remains several drawbacsk. Here they are:

  1. SHA-2 digest family is supported in a standard way but the constants are hidden inside internal class hierarchy

  2. commons-logging fails to initialize due to modified behavior of JRE6 which uses. The chain of commands:this.getClass().getClassLoader() surprisingly returns null as the class from endorsed dir is loaded by bootstrap classloader.



Problem 1) can be slolved by using either strings copied directly from the spec. or by using e.g. org.apache.xml.security.signature.XMLSignature.ALGO_ID_MAC_HMAC_SHA256 constant.

Problem 2) is solved by replacing commons-logging included in XMLSig distribution by newest one (1.1.1) from commons-logging homepage.

úterý 8. září 2009

naletěl jsem ...

Zmožen poplatky jsem se rozhodl odejít od své bývalé banky. Nalákán nulovými poplatky u konkurence jsem naposledy navštívil svého ČSOB osobního bankéře (bankéřku) za jediným účelem: zrušení účtu. Zrušení účtu pořídíte už nějaký ten pátek zdarma. Jenže ... ano kaju se ... a uznávám, že jsem hlupák.

Během procesu rušení podepisujete několik dokumentů: výpověď smlouvy o vedení účtu, zrušení karty, odprodej zbývajících akcií u podílového fondu a zrušení všech souhlasů s inkasem. Tak nějak jsem předpokládal, že zánikem účtu zaniknou i svolení k inkasu a tak jsem podepsal. O pár týdnů později mi přišel poslední pozdrav z ČSOB.

Výpis, kde jsem našel 5 řádků. Za každý souhlas k inkasu resp. jeho zrušení jsem zaplatil 40Kč. Naprosto v souladu se sazebníkem. Naprosto bez informace od osobní bankéřky. Jen pro úplnost. Zrušení souhlasu s inkasem pomocí internetbankingu stojí 6Kč.

Služby klientům, osobní bankéř. Vše pro firmu. Jakkoli klienta "oholit". Ostatně někdo, kdo ruší účet, si nezaslouží nic jiné. Z celé téhle epizody si odnáším dvě poučky:

  • nikdy nikomu nevěř ... smutné

  • jsem hlupák ... hmmm

neděle 6. září 2009

... vaříme uzené

... zakoupené úhledně zabalené vakuované v igelitu. Na obalu pak štítek. Cituji:
vepřová kýta 64%, pitná voda, bramborový škrob, jedlá sůl, směs koření a zeleniny, extrakty koření, stabilizátory E250, E451, zahušťovadlo E407, E407a, E412, dextróza, zvýrazňovač chuti E621, E631, E635, antioxidant E316, sojová bílkovina, lecitin, barvivo E120. Obsah soli max. 3%

Vaříme pořád ještě uzené? Musím se příště lépe podívat na název obchodu. Možná tam nebylo napsáno Masna, ale Drogerie.

pondělí 20. července 2009

... k datovým schránkám

... říká se, že se nesluší kopat do někoho, kdo leží na zemi. Datové schránky jsou v této poloze, tedy ležící a nefunkční, až příliš často. Přesto si neodpustím pár ryze nepřátelských poznámek. Na úvod však jednu pozitivně laděnou. Nerad chodím na úřady a na dobře implementované mechanizmy e-governmentu se vyloženě těším. Implementace datových schránek má k dokonalosti daleko. A nejen to, má daleko i k prosté neprudivé použitelnosti.

A moje osobní zkušenost?

Případ č.1 - Pokus o získání web service rozhraní k datové schránce. Žádost zaslána, odezva vešekrá žádná.

Případ č.2 - Záslána žádost o datovou schránku fyzické osoby (čistě ze zvědavosti). Žádost odeslána, přijato potvrzení o přijetí a ... NIC. Zákonné lhůty jsou zřejmě úředníkům pro smích.

Případ č.3 - Služba datový trezor je k dispozici. Týká se systému pro bezpapírovou dálkovou komunikaci. A hádejte, co musíte udělat pro její aktivaci. No ano, musíte vzít občanku a dojít na poštu. KOCOURKOV.

... jsem zvědav, co bude dál

pátek 10. července 2009

... některé věci nepochopím

Mohl by mi někdo vysvětlit, proč v Praze kropí kropicí vůz ulice, když den před tím se přehnala bouřka s deštěm dostatečně vydatným?

úterý 16. června 2009

... how truecrypt handles broken hard disk

Once upon a time there was a hard drive. It served for not so long time and then decided to say good by. Because the drive was polite it denied system partition reading at first. It was a signal to save my data. Windows were no more alive ending in endless rebooting loop. Brave knight Sir Linux of Knoppix came, saw an conquered. There was a truecrypt volume on the dying disk drive. I tried to copy the whole volume file but there was a reading error after 3GB of 10Gb were read. As the truecrypt is implemented for Linux too I installed truecrypt to my old Knoppix Live CD mounted the broken volume and rescued all the interesting data. Just for a case I backed up truecrypt volume headers but I was lucky because the header in the volume was not corrupted.

The Truecrypt is possibly not the best of breed but it is close.

What a relief ....

pondělí 8. června 2009

... nahlížení do katastru

Aktualizace: moje aplikace je ukončena, nahradila ji lepší, dotaženější. Taková, jakou jsem časem chtěl mít tu svou. Darwin vítězí, silní přežívají, slabí hynou. http://katastr2.cz.

Vzhledem k tomu, že náš zeměměřičský úřad poněkud zaspal dobu a komfort nahlížení do katastru nemovitostí je ... řekněme diskutabilní, vytvořil jsem malou jednoduchou aplikaci, pomocí které je nahlédnutí do katastru o něco pohodlnější.http://www.blogger.com/img/blank.gif

Pro zobrazení informací z katastru stačí pomocí internetové mapy (google, mapy.cz) najít místo, které vás zajímá (pozemek, dům apod.) a jediným kliknutím na toto místo si vyvolat výpis informací, které jsou o nemovitostech v dané lokalitě k dispozici.

A kudy tam? www.nahlizeni-do-katastru.cz

pátek 22. května 2009

... získání GPS souřadnic místa v ČR

Stále častěji se mi stává, že po někom chci poslat souřadnice určitého místa ať už za účelem nahlédnutí do mapy nebo za účelem zadání souřadnic do navigace jako prevence proti bloudění. Následuje návod, jak souřadnice získat:


  1. jděte na mapy.cz


  2. znáte adresu

    1. zadejte do vyhledávacího políčka adresu ve tvaru město, ulice číslo (Praha, Jindřišská 16) a nechte vyhledat


    2. nalezená adresa ze zobrazí na mapě v bublině, kde ve spodní části najdete odkaz GPS, který rozkliknete a u dolního okraje bubliny se objeví souřadnice např. Loc: 50°5'1.622"N, 14°25'42.132"E


    3. souřadnice naberte do schránky (Ctrl-C) a odešlete mailem, zadejte do ICQ nebo kam libo (Ctrl-V)





  3. místo nemá adresu, nebo ji neznáte



    1. můžete se přiblížit k místu zadáním blízké adresy (viz předchozí postup pro adresu)


    2. najděte na mapě konkrétní místo (při místní znalosti může hodně pomoci fotomapa


    3. zapněte zobrazování GPS


    4. klikněte na místo v mapě, jehož souřadnice chcete nabrat


    5. souřadnice naberte do schránky z levého horního rohu mapy





A to je asi tak vše. Jiné mapové servery poskytují podobnou službu (Google Maps, AMapy a další). pro tyto servery však výše uvedený popis neplatí.

čtvrtek 21. května 2009

... hovno pluje

Shodou okolností jsem narazil na výborný článek. Každý by si ho měl přečíst i když jeho název je lehce fekální. Ostatně on celý ten článek je takový. Má na to právo, když popisuje putování lidských výkalů od producenta až po vypuštění odpadní vody zpět do přírody na výstupu pražské čističky odpadních vod. Tak tedy ještě jednou "Hovno pluje"

pondělí 11. května 2009

... turn off the LED and signal is much better

After upgrading to OpenWRT Kamikadze 8.09RC2 on my Asus 500g Premium (v1) I have changed WiFi MiniPCI card. I have removed the original broadcom and placed Atheros card in. Everything works well (kernel 2.6) but ...

... the wifi signal was much worse than in previous setup (7.09, broadcom). After some googling I have found an answer. Strange but working.

To get better (not excelent) signal, following command has to be used:
sysctl -w dev.wifi0.softled=0


There is some problem i the madwifi driver which brings much better signal, when the LED is turned off.

neděle 26. dubna 2009

... závan historie až z roku 1934

Učebnice pátrací taktiky, napsal Rudolf Košťák, major četnictva.
Schváleno výnosem Ministerstva vnitra ze dne 1. prosince 1934
čís. 69.475-1934-13 jako učební pomůcka pro četnictvo.








středa 22. dubna 2009

... EU presidency in Joint Research Centre in Ispra

As the presidency is moving from one country to the other the respective country symbol is placed to the center of the first crossroad that a visitor can see after entering JRC. You can compare the Freench and Czech presidency symbols :-).

úterý 21. dubna 2009

... from behind of firewall ...

It is a hard life behind the firewall/nat. To make life easier I use several methods. All of them depends on my Asus 500g Premium with OpenWrt Kamikaze 8.09.

SSH dropbear server is running on the Asus router accepting connection on public IP on port 22.

OpenVPN server is running on the router on port 443.

Behind really restrictive firewall I use OpenVPN using the proxy to connect the computer to the router VPN.

To redirect traffic from certain applications I use putty dynamic tunneling feature in cooperation with freecap proxyfier.

How to setup:
  • connect to the VPN using OpenVPN - passing through firewall should work because 443 port is used.
  • run putty with dynamic tunneling turned on (putty -D 3333 router.fqdn.com)
  • putty created socks proxy listening on localhost port 3333
  • launch freecap and set default proxy to localhost:3333
  • add an application that needs to be tunneled into the freecap
  • start the application through freecap - from this point the application will use the socks proxy created by ssh dynamic tunnel even if the application is not aware of SOCKS
And voila ... every application works magicaly from behind the firewall.

.... crying because you do not have a machine with public IP available? Don't you cry and use some free virtual server hosting ;-).

čtvrtek 2. dubna 2009

... phun je psina

Narazil jsem na zajímavou hračku. Zkuste:
http://www.phunland.com/wiki/Home

čtvrtek 26. března 2009

... vmware server 2 vim.fault.InvalidState

I was just playing around with VMWare Server 2. It is a great product for home made virtual server farm. I spent several hours "repairing" my installation. I could not create a virtual machine, I could not change existing virtual machine parameters. Everything ended in:
vim.fault.InvalidState

Even after reinstalation the same error again.

The problem was: I entered maintenace mode and have forgoten. This action is possible only when using VMWare Infrastructure Client and is not available from web console.

That is why I am screaming: Stupid, stupid, stupid, I am stupid. My mistake. Several hours vasted. :-)

středa 18. března 2009

... obchod s osobními údaji?

Jako klient nejmenovaného penzijního fondu jsem se rozhodl dívat se na stav svého konta pro penzi na internetu. Za tímto účelem jsem oslovil svůj fond, který mi v reakci zaslal k podpisu smlouvu O poskytování služeb internet penzijního připojištění.

Ve smlouvě mě zarazil rozsah požadovaného souhlasu se zpracováním osobních údajů. Kromě toho, že část ustanovení souhlasu byla nadbytečná vzhledem k zákonným povinnostem fondu souvisejícím se zpracováním státních příspěvků, se mezi souhlasné odstavce dostal tento:

b) Souhlasím s poskytováním informací o svém penzijním připojištění u XXXX mateřské společnosti a všem členům skupiny XXXX (propojené osoby - §66a Obchodního zákoníku); stejně tak i třetím osobám, výhradně smluvním partnerům XXXX, a to za účelem zajištění služeb XXXX ve prospěch účastníků.

c)Beru na vědomí, že souhlas je XXXX vyžadován v souladu s §38 odst.2 zák. č. 42/1994 Sb., o penzijním připojištění se státním příspěvkem (dále jen ZPP) zejm. z důvodu zkvalitnění poskytovaných služeb, snížení nákladů, nabídky nových služeb a za účelem komplexní nabídky produktů a služeb členy skupiny XXXX v rozsahu jejich bankovní licence či podnikatelského oprávnění.


Rozumím snahám o křížový prodej, dokonce jsem ochoten připustit, že mohou přinášet výhody klientům. Nesouhlasím však s takto paušálním rozšířením souhlasu s poskytováním osobních údajů v podstatě komukoli (tak i třetím osobám). Přičemž není možnost tento článek ze smlouvy vyřadit.

V tuto chvíli zahajuji komunikaci se zástupci nejmenovaného penzijního fondu a jsem zvědav na výsledek.

PS: ... přece jen jsem si při zakládání tohoto zápisníku dal alias prudič a je třeba ho naplňovat činy

úterý 17. března 2009

... konečně česky i na internetu

Kdysi, už je to dávno, jsem se pídil po pravidlech českého pravopisu na internetu. Žádná jsem nenašel a z ústavu pro jazyk český mi odpověděli, že pravidla nejsou a nebudou publikována na internetu z důvodu práv autorských.

Nyní konečně pravidla na internetu najdeme. Sice jsou kamuflovaná pod názvem Internetová jazyková příručka, ale jsou to pravidla pravopisu.

Díky za ně.

neděle 15. března 2009

... encode video for Sonyericsson K550i

It's as simple as this:

ffmpeg -i in.avi -vcodec h263 -acodec libfaac -ab 96k -s qcif -qscale 3 -f 3gp out.3gp

neděle 8. března 2009

... the right tool for the right job

I needed to embed a logo image and a short static text into video. I needed to do it as a batch job. It took some time to find the right tool. Finally I have one.

Avisynth is the right tool. One drawback - windows only. But this will change in near future.

A short avisynth script does the job. Avisynth composes the video stream (raw)frame after frame acting as a frame server. The result can be fed into several encoders e.g. VirtualDub (great for debugging the script), mencoder (good for encoding final video into any format you may want).

Sample script - script.avs
video=DirectShowSource("input-video.avi")
logo=ImageReader("logo.png")
logoMask=ImageReader("logo.png",pixel_type="RGB32").ShowAlpha(pixel_type="RGB32")
Overlay(video,logo,x=20, y=20, mask=logoMask).Subtitle("text text text", 640,480, align=3)


Encoding - H.264 in MP4 container encoded using constant quality (variable bitrate)
mencoder -ovc x264 -nosound -x264encopts \
qp=24:keyint=25 -of lavf -lavfopts format=mp4 -o out.mp4 script.avs

pátek 27. února 2009

... throw exception from ActiveX to Javascript

Developing a simple ActiveX I was not able to find clear information how to propagate exception from C++ code to Javascript. I'm using ATL and there are no exceptions when using ATL code.

The solutin is to implement ISupportErrorInfo and act accordingly when it's the only method is called (apropriate code is generated by Visual Studio). Then when an error is to be reported after a method of ActiveX control returns, use functions CreateErrorInfo/SetErrorInfo to fill the error information data and use E_FAIL return code of the method.

Now an exception is thrown in Javascript in the form of Error object with message property, which maps to what was set by ICreateErrorInfo.SetDescription.

That's all for today.

Example:
void setException(BSTR msg){
ICreateErrorInfo * cErrInf;
CreateErrorInfo(&cErrInf);
if (cErrInf==NULL) return;
cErrInf->SetDescription(msg);
cErrInf->SetGUID(component_IID);
IErrorInfo *err;
cErrInf->QueryInterface(&err);
SetErrorInfo(0,err);
}



...
setException(L"error mesaage");
return E_FAIL;
}

pátek 20. února 2009

středa 11. února 2009

... sentence of the month

Even the tchnical writer is able to write sentences that are not boring:

Chapter 8 revisits the definition and declaration criteria to a depth that will cause decompression sickness when you surface.

[credits]

neděle 1. února 2009

... když whisku, tak dobrou


Měl jsem příležitost ochutnat skotské sladové whisky "single malt" - nemíchané z jednoho sladu kvašené a pálené, v dubových sudech vyzrávající minimálně deset let. Chuti to byly různé od pohlazení až po drsnou kouřem z rašeliny vonící drsné.

Doporučuji.