neděle 13. dubna 2014

Refaktoring, část I.: Proč já?!

Úvod

Četl jsem už spoustu článků i blogů o tom, co programátor má nebo nemá dělat, a jak užitečný a dokonce nutný je refaktoring. Nikde se ale moc nepíše o strategiích refaktoringu a dost lidí se ho pořád i tak trochu bojí. Tož jsem se rozhodl, že o tom něco napíšu sám, neb s tím mám dlouholeté zkušenosti.

V roce 2007 jsem přišel do firmy ICZ, jako "junior", který o Javě "už někde slyšel". Ne jako nějaký odborník, zkraje jsem byl zkrátka tolerován. Ne na dlouho ... po dvou měsících na jednom projektu ze mě udělali vedoucího projektu jiného, o dost většího, který dodnes (2014) přežil leccos, neustále narůstá a komplikuje se, ale paradoxně se i zlepšuje jeho stabilita i udržovatelnost - přitom na něm dělá pořád míň a míň lidí. Jak to?
Postupně začnu popisovat své zkušenosti - řekněme takovou formou "občasníku". Nebudu vám vtloukat do hlavy agilní metodiky, scrum, extrémní metodiky, zkrátka, nebudu vám říkat, co máte dělat. On totiž každý projekt potřebuje "svoje". To samozřejmě není nic proti těm metodikám, je dobré je znát, a vybírat si vhodné "zbraně k boji".
Jen pro zajímavost: "můj" projekt má po 11 letech vývoje zhruba 500 000 řádek kódu (kódu v Javě! čili ne javadoc, ne prázdné řádky a dokonce ani webové stránky - JSP).

Jsem nový v týmu

Tak to začalo. Návyky z minulé práce se tu nevedly. Nové návyky byly pro mě zvláštní, nové, chvílemi jsme se vzájemně odsuzovali, ale ve výsledku jsme stále táhli za jeden provaz.

Fáze 1: První zákaz

Když jsem uviděl víc jak 1000 řádkovou třídu, servlet, dokonce s jedinou metodou, chvíli jsem na to zoufale zíral, a pak začal refaktorovat. Když jsem se zmínil šéfovi, bylo mi řečeno, že nemám "spravovat co není rozbité" a "zákazník tohle neplatí".
Obvyklá rada zní - z takové firmy rychle utíkejte!
Mám takový "zlozvyk", vlastně dva:
1) Neutíkám z boje, nerad se vzdávám, radši zkusím, co se s tím dá udělat.
2) Nenechám si zakázat něco, o čem vím, že to dokážu dotáhnout do konce.

Fáze 2: Tolerance

Ukázalo se, že porušení zákazu nemá negativní důsledky. Pořád mi to nikdo nevěřil, někteří programátoři mě považovali za magora, kamikaze, a někteří to vzali jako výzvu. Výsledkem bylo mlčení na obou stranách, termíny se stíhaly, všechno víceméně fungovalo jako předtím, ok.
V tuhle chvíli se musím zastat možná i vašich projekťáků: postavte se do jejich role, pochopte, o co jim jde:
1) Více změn, větší pravděpodobnost chyb.
2) Změny v předaném hotovém kódu mohou způsobit změnu chování a ta se těžko vysvětluje zákazníkovi - ten NECHTĚL, abyste cokoliv z toho měnili.
3) Pokud se nestihne termín, vaší firmě hrozí penále a pokud navíc měníte něco, co nikdo nechtěl měnit, bude to bez slitování. Zákazníka refaktoring nezajímá, berte to na vědomí.

Musíte získat důvěru šéfa, ne hysterčit. Musíte být dost pečliví a dobří na to, aby se za vás mohl s čistým svědomím postavit.

Situace, kdy v týmu panuje nevraživost, když se se svými šéfy nechcete bavit o tom, co děláte, a vzájemně si lžete, je opravdu chvíle vhodná ke zvážení odchodu jinam. Ale pokud se to ani nepokusíte změnit, pravděpodobně jinde dopadnete stejně.
Většina programátorů jsou vysokoškoláci, odborníci, experti, dokonce se dá říct vědci. Pokud něco víte, musíte umět taky najít argumenty, důkazy, a mít trpělivost je ukázat a vysvětlit každému, komu bude třeba. Já vím, nejspíš jste ve vsyvětlování stejně špatní jako já - učte se to, jinou radu nemám ;)

Změna týmu (vítej v pekle!)

Fáze 3: Nedůvěřivá polopodpora

Po pár měsících mě přesunuli do jiného týmu na jiný projekt, kterému nikdo z programátorů nechtěl velet.
"Unit testy? Co to je? To si nikdo neobjednal!" - první reakce na otázku automatických testů. Refaktoring mi byl opět zakázán a opakovaně jsme si s projekťákem vysvětlovali, proč ano a proč ne - nicméně nikdy jsem s tím nepřestal. Testy jsme ale nepsali ještě dlouho.
Můj první úkol byla "opravička" (podle zadání droboučká) v aplikaci, která měla asi 5000 řádek ve 4 třídách (jedna měla přes 3000 řádek). To snad ani nebyla Java, to bylo peklo. Dostal jsem na to 12 člověkodní. Po dopoledni, stráveném "pícháním klackem" do zdrojáků, jsem pochopil, že netuším, co to dělá a jak.
Za nějakých 5 člověkodní jsem z těch 4 tříd udělal 42, aniž by se aplikace chovala jinak. Jen víc psala do logů. Později popíšu detailně, jak na to ;)
Za další den jsem našel hledanou chybu. A cestou našel asi 4 další, které stoprocentně uživatel musel vidět také!
Při ručním testování se zjistilo, že analytici našli další chyby, a že jsou i v provozní staré verzi. Po konzultaci se zákazníkem došlo i na opravy těchto chyb, načež po 7 člověkodnech jsem byl hotov (později vysvětlím, jak se to pozná ;)).

Fáze 4: Poplácání po zádech ... a ... a jéje

Ano, to byla malá výhra. A protože jste "fakt dobří":
1) Příště máte času polovičku, ne-li mnohem méně
2) Dostanete na starost ostatní programátory
3) Nekonečné konflikty se všemi, jen vedoucí sousedního týmu se vám směje
4) Přibývá stresu, ubývá chuť k práci
5) Není čas na změny

Tohle je začátek konce, kdy nakonec buď odejdete, nebo dospějete a postavíte se definitivně na vlastní nohy. Opět jsme u argumentace - té se nikdy nezbavíte!

Odhad pracnosti

S oblibou přirovnávám práci programátora k luštění křížovek - hodí se to jak pro vysvětlování věcí projekťákům, tak laikům.
Baví vás to? Tak si představte, že 8 hodin denně, 5 dní v týdnu, luštíte křížovky. Máte pocit, že vás to bude bavit? Ne, programátor vážně není "dělník, co jen pracuje hlavou"!
Takže, zkuste to takhle - šéfovi přineste libovolnou těžší křížovku, a za 5 minut se ho zeptejte, kdy jí už bude mít hotovou. A pak jemně konstatujte, že když on po vás chce odhad, je to podobné.
Pokud je navíc kód ve stavu, kdy se v něm nelze vyznat, je odhad prakticky nemožný. Nenaděláte nic, neexistuje řešení, jak dát byť řádově přesný odhad. Ano, měsíc je vhodná jednotka na jakoukoliv změnu v takovém kódu!

Programátoři

To znáte z amerických filmů, typicky vojenských, sportovních. Ne, nejsou to blbci, naopak! Někteří jsou chytří až moc - což je nejhorší varianta, pokud si je nezískáte na svou stranu. Oni se ve svém kódu přece vyznají a funguje! Nic je nedonutí změnit přístup, formátování, přestat psát Javu ve Vimu, používat na všechno statické metody s názvem a() a 20 parametry nebo hashmapou (vede se věčný boj, co z toho je horší).
Krom věčného vysvětlování a kontrolování cizí práce musíte stíhat i své vlastní programování. Ne, nemůžete přestat programovat - jednak by tým přišel o (aspoň jakýstakýs) vzor, jednak je to váš způsob získat si nějakou autoritu, ale hlavně se pořád ještě učíte nové věci - nemůžete radit a dohlížet na jiné, když sami nevíte, jak na to.
Ano, je to přesně jako v těch amerických filmech: hledejte silné stránky, buďte tolerantní, ale zároveň někdy musíte prostě někoho seřvat, nedá se nic dělat. Pravda je, že až tady mě naučili se "nasrat", do té doby jsem byl flegmatikem.

Konflikty

Z předchozího odstavce už je jasné, že buď najdete alespoň nějaké spojence, nebo odejdete. Nebo zatnete zuby a budete makat, dokud všechno nepřijde samo.
Jako vedoucí jsem byl tehdy řekl bych dost špatný. Jako programátor jsem dělal velké pokroky, ale nově nabyté zkušenosti a informace jsem neměl dost zažité na to, abych je někomu dokázal předávat.
Zpětně vím, že mám vážně moc dobré šéfy. I když se někdy hádáme, odsekávám, jednou jsem projekťáka dokonce nazval diletantem, načež on se neurazil, počkal, až "vyšumím", já se omluvil, a argumentoval a argumentoval, než jsme se nějak dobrali k tomu, že "doufá, že vím, co dělám".
Zkrátka, pokud víte, že jste něco přehnali, nebo dokonce byli na někoho nespravedliví, řešte to co nejdřív a velkoryse.

Stres

S tím mám problém dodnes. Je toho moc. Rady už znám taky, ale neumím se jimi důsledně řídit: vstávejte rituálně, pravidelně a stejně pravidelně choďte z práce. V práci nezapínejte Facebook ani jiné podobné blbiny, žerou neuvěřitelné množství času a oberou vás buď o výsledky, nebo o zbytek dne, kdy ty výsledky budete dohánět. Dodržujte pitný režim a jezte střídmě. Po práci se fyzicky hýbejte.
Tož jsem si to teď hezky sepsal, třeba se konečně polepším :-)
Chuť k práci mám, tu mi dává pohled zpátky na to, co všechno se už změnilo k lepšímu.

Změny

Z pohledu projekťáka, natož zákazníka, není na výslovně zákazníkem neobjednané změny čas nikdy.
Takže pracujete tak trochu v ilegalitě. Opět, jste experti, musíte vědět, co můžete změnit a co nemůžete změnit v dané iteraci. Prakticky jde o to, aby to neoddálilo termín - a pokud, aby to bylo obhajitelné. Což se lehko říká, ale těžko dělá.
Řekněme, že do toho budete dávat zhruba 30% času týmu. Pro projekťáka je to strašně moc a bude to chtít snížit. Nebo aspoň pro tuhle iteraci. Ne, neexistuje. Proč? Protože pokud to neuděláte TEĎ, termín bude možná (!) splněn, ale:
1) Větší riziko (řekněme rovnou, jistota) chyb, které tým bude řešit zdarma v rámci záruky
2) Oddálení údržby neznamená, že příště jí strávíte 60% další iterace, ale zůstane tam těch 30% a mezitím vám přibude produkce z minulé iterace.
3) Nezapomínejme na lidskou paměť - o dvě iterace dál už se učíte chápat svůj vlastní kód, čili stojí to další čas navíc.

Pokud změny uděláte, má to "nenápadné" bonusy:
1) Odhad pracnosti je řádově přesnější (z měsíců jdeme na dny)
2) Opravy jsou záležitostí hodin, dokonce minut
3) Od nějaké úrovně stavu kódu lze levně psát unit testy
4) Rozvoj aplikace má tah na branku, víte, co děláte a co ještě budete dělat, neobjevují se záhadné chyby.

Dnes

Fáze 5: Mám nejlepší tým v historii projektu

Ne, pořád jsme nevyhráli. Ale vedeme si dobře. Ta věta z podnadpisu mě napadla chvíli poté, co jsem se na jednoho "mého" programátora ukrutně naštval, seřval ho a za chvíli mi došlo, že neprávem. A že jsem poslední dobou dost nepříjemný. A že to není poprvé. Obratem jsem se mu omluvil a na další poradu přinesl láhev vína a nešetřil jsem.
Stresu je hodně, ale to není žádná omluva, takhle by se ten tým rychle rozložil. Vyhrazuji si právo být člověkem a občas se zachovat jako idiot, načež to ale neznamená, že bych tím nenáviděným idiotem hodlal zůstat.

Zpětně jsme udělali ohromný kus práce s tou půlmilionřádkovou saní. Ano, pořád půlmilionřádkovou, počet řádek narůstá velmi pomalu, protože pořád je tu těch 30% investice (někdy méně, někdy více). Mezitím se aplikace naučila komunikovat s asi 6 dalšími systémy, přešla z Javy 1.4 na JDK6 a má našlápnuto na JDK8, bylo napsáno asi 3000 testů od knihoven až po aplikace a testy GUI, přešlo se z Antu na Maven2 a později Maven3, kvalitu nám už několik let "známkuje" Sonar, máme automatický build systém a zasílání změn, atd.

V jednu dobu bylo na projektu neuvěřitelných 13 lidí. Dnes je nás 5 a děláme toho snad ještě více.
Náš projekťák má občas pořád tendenci někde "ušetřit", ale nechá si to vysvětlit a nepochybně svou práci dělá dobře.

Dostávám nabídky na dvojnásobek současné mzdy, ale není to jen tak - neodcházím z několika rovnocenných důvodů:
1) Mám rád evoluce, ne revoluce. Chci si užít pocit, kdy už budu vědět, že všechno klape. Myslím, že nejsem tak daleko od tohoto stavu.
2) Jiná práce, jiný tým, jiné podmínky, dost možná bych musel znovu někoho přesvědčovat, že používá technologie, ke kterým už se dnes nikdo nezná, že psát testy není ztráta času, že požadovat nějakou úroveň zdrojáků není perfekcionalismus, ale pud sebezáchovy.
3) Mám rád živé projekty, ne režim "přijít - napsat - spustit - odejít".
4) Mám tým, ve kterém se dokážeme domluvit, vyhovět si, a případně i zabojovat, aby projekt dopadl dobře (zákazník spokojený, projekťák spokojený, firma dostane zaplaceno a my možná odměny :-) ).

Samozřejmě to neznamená, že tu ta možnost odejít není. Ale momentálně jí nevyhledávám a nabídky odmítám.

Závěr úvodu (no hurá)

O refaktoringu se tu vlastně dneska mluvilo málo, zato dlouho. Asi jsem nenapsal ani nic, co by člověk nevěděl, ale šlo mi o to nabídnout pohled na tu "evoluci" od začátku do konce (budiž prozatímním neustále utíkajícím koncem označen dnešní den).
Pokud přijdete na projekt o této velikosti, nečekejte, že s ním pohnete jen tak. Je to práce na dlouho a vy se pořád musíte vejít do rozpočtů a těžce si vydobývat důvěru jiných. Ta vzniká tak, že uspějete krůček po krůčku v zakázkách, že vaše dílo funguje, když jiná mají problémy.
Je to hodně o hledání rovnováhy a schopnosti dotahovat věci do konce tak, abyste se k nim nemuseli vracet nečekaně a často a ... neradi.

Ano, zákazník srovnává hrušky s jablky, a vy to děláte taky, jen si to neuvědomujete. Dnešní naší společnosti chybí respekt, empatie, schopnost podívat se na něco očima někoho jiného - ale o tom jindy a jinde. Učte se to. Většina firem nabírá programátory a analytiky v jednom, takže - analyzujte ;)

Další díly asi budou kratší a jelikož to píšu bez přípravy a konceptu, uvidíme, co ze mě "vypadne".  Každopádně bych se chtěl zaměřit na nějaké strategie refaktoringu a zhodnocení toho, která kdy může být úspěšná.

Poslední dnešní věta:
Neexistuje nerefaktorovatelný kód!

neděle 2. března 2014

Ukrajina pod tlakem

Naše mindráky

Zdá se, že jsme národ plný komplexů. Snad polovina novinářů a osob "veřejných" se pokouší ukrajinskou situaci naroubovat na tu Mnichov, tu Srpen, tu Protektorát,a když jim naše těžké chvíle nestačí, vypomáhají si v zahraničí. Tu Kosovem, Osetií, různými akcemi Spojených států ...

Je to lenost pokusit se na události nahlížet bez těchhle mindráků a dohledávat si informace o současné situaci na Ukrajině, nebo to dělají schválně? K čemu tyhle falešné berličky potřebujete?!

Fakta ...?

Kdo vládne Ukrajině?

Ukrajina nemá a až do voleb nebude mít legitimní vládu ani prezidenta. Ta minulá o ní přišla během demonstrací, byla jednoznačně svržena. Nicméně vzbouřenci uzavřeli s Janukovyčem jakousi dohodu o volbách, byť tato byla částí vzbouřenců odmítnuta.
Ať už Janukovyče kdo uznává nebo neuznává prezidentem, nemůže plně řídit zemi, stejně tak jí ale nemůže řídit vláda ani jeho nástupce.
To se dá celkem snadno doložit - z různých oblastí se ozývají různá odmítnutí příkazů z Kieva. Je to chaos.

Krym

Krym patří k Ukrajině od 50. let 20. století, kdy jej Ukrajině v rámci Sovětského svazu přiřknul Chruščev. Předtím Krym nějakých 200 let patřil k Rusku, a ještě dříve tam byli Tataři, ... ale to je už jedno, otázka je, ke komu patří teď?
Většina obyvatel jsou Rusové, právně ale patří Ukrajině. Ukrajina je ale destabilizovaná a Krym Kyjevu nevěří - konec konců, nebylo mu ani umožněno volit, což je poměrně zásadní věc, naopak mu bylo pohroženo rozpuštěním parlamentu.
Rusko má pronajatý přístav, který je pro něj tak důležitý, že pokud by byl přístup k němu Rusku jakkoliv omezen, prostě to zařídí vojensky. Neznám zemi, která by to neudělala.
Myslím, že tato dohoda byla velice moudrá jak ze strany Ukrajiny, tak Ruska. Rusko má svůj přístav, Ukrajina má nadále Krym. Idylka - až dodnes.

Janukovyč

Jeho vláda, stejně jako vláda Tymošenkové, Ukrajinu nadále zadlužovala, přitom samotní prezidenti jí sami doslova tunelovali. Dostal se do pasti, když se snažil vyjednávat s EU i Ruskem o dalších půjčkách, jenže EU nabídla jen titěrný zlomek toho, co Rusko, navíc za nevýhodných podmínek. Naopak nabídka Ruska byla velkorysá, ale se zásadní podmínkou - celní unie. Tím by se EU definitivně zavřela vrátka, Rusku by nikdy nemohla díky clům konkurovat.
Že Janukovyč nakonec kývl Rusku je logické. A že se to občanům Ukrajiny nelíbilo, protože celou dobu se tvářil ohromně proevropsky, je logické také. Podrazil je a myslel si, že stačí, že on je přesvědčen, že je to pro jejich dobro.

Majdan

Majdan jsou normální lidé, kteří se vzbouřili vůči podrazu Janukovyče. Majdan jsou lidé, kterým vadí obrovská korupce, ale jsou ochotní jí tolerovat, pokud aspoň jimi zvolení lidé neobrací o 180°.
Součástí Majdanu byli i extrémisté - a je možné, že právě oni stříleli jak na policisty, tak na demonstranty, ve snaze situaci vyhrotit. To ale neznamená, že celé hnutí je extremistické.
Majdan není podporován celostátně a jednoznačně - tudíž ale odmítnutí jeho vlády východem země je nutno brát vážně. Existuje jediné řešení, celostátní volby, jenže květen je daleko.

Domněnky a názory

Extrémisté

"Ukrajina Ukrajincům!"
No počkat, ale téměř 20% obyvatel Ukrajiny jsou Rusové. Některé zdroje tvrdí, že ukrajinské extremisty sponzorují britské a americké tajné služby.
Hrozba ruského zásahu (myslím hrozba, nikoliv zásah!) na Ukrajině může mít pozitivní efekt - protože pokud měli dosud extrémisté snahu situaci vyhrotit, teď hrozí, že by dosáhli opaku než posílení své moci.
Na druhou stranu na Krymu by naopak vyhrocení situace dalo záminku Rusku.

Co asi chce Rusko

Na tom není nic složitého - Rusko během let půjčilo Ukrajině spousty peněz. To nikdy není zadarmo, krom splácení jsou tu vazby hospodářské, Ukrajina je zkrátka na Rusku závislá a obě země na tom vydělávají. Lidsky řečeno, Rusko má na Ukrajině svoje peníze, spousty peněz. HDP Ruska navíc zpomaluje, čili omezení obchodů s Ukrajinou mu rozhodně nepomáhá.
Převrat Rusku určitě radost neudělal - pro Rusko je výhodné situaci co nejrychleji zklidnit a ideálně si Ukrajinu zavázat dalšími půjčkami i smlouvami.
Co se týče Krymu, Rusku by případné odtržení Krymu od Ukrajiny a jeho dobrovolné připojení k Rusku (nebo i jen osamostatnění) vyřešilo jeden zásadní problém. Ano, ten přístav.

Co asi chce EU

Krize v EU neskončila, jen se zmírnila a brzy přijde další propad. EU potřebuje akutně odbytiště pro své výrobky, potřebuje zvětšit prostor, kam by mohla vyvážet. Zájmem EU je jakýmkoliv způsobem získat větší vliv na Ukrajině.
Ano, aby se to na Ukrajině pomlátilo, pokud možno bez intervence Ruska, je v našem zájmu. Ne, ani my nejsme ti dobří, kteří by mysleli na blaho Ukrajinců.
Zájmem EU je, aby se Ukrajina buď jako celek odklonila od Ruska k ní a to nejlépe aniž by jí to něco stálo, nebo alespoň kus Ukrajiny utrhla.
Ano, zájmem EU je roztržení Ukrajiny - cokoliv je pro EU (nikoliv pro Ukrajince!) lepší než když celá Ukrajina vstoupí do konkurenčního projektu s Ruskem.

Co asi chtějí USA

Moc USA ve světě slábne, poslední dobou jejich diplomatům čím dál více do práce kecají Číňané i Rusové, kterými, na rozdíl od Německa a Francie, nemůžou jen tak pohrdat a ignorovat je. Jakákoliv destabilizace konkurentů USA je z pohledu USA žádoucí.

Co chce Ukrajina

Jednoznačně nechce jakoukoliv vládu Ruska, nechce být Ruskem ovládána. Nechce se vzdát Krymu a nechce násilí.
Chce být svrchovanou republikou, která si dokáže vládnout sama, chce vycházet dobře s EU i Ruskem. Chce se zbavit korupční zátěže.
Ukrajina se obává Banderovců i separatistů a varuje před nimi.
Pokud chcete objektivní informace přímo z Ukrajiny, zapněte si 112.ua. Zjistíte třeba to, že západ Ukrajiny s Krymem komunikují velmi vstřícně skrz TV, čímž podle mého obchází jakoukoliv moc extrémistů, kteří se snaží jednotlivé části Ukrajiny poštvat proti sobě.
Tak jako Majdan byl zděšen obratem Janukovyčovým, je ale dnes východ zděšen změnami v Kyjevě, ke kterým nijak nemohl přispět a nesouhlasí s nimi.

Sféry vlivu

V minulém století se mluvilo o tzv. "sférách vlivu", tj. velmoci si svět jaksi rozdělily mezi sebe tak, aby se nevysilovaly svými vzájemnými spory a mohly s těmito zeměmi obchodovat, a samozřejmě je také ovlivňovat, ne-li ovládat.
Po pádu SSSR tu zbyla jediná taková velmoc, USA. Rusko se stáhlo a 20 let řešilo téměř jen své vlastní problémy, případně svých těsných sousedů.
Dnes ale Rusko přezbrojuje, a jeho diplomacie dokáže být opět nepříjemně důrazná. Mezi velmoci se nenápadně vetřela Čína, kterou už dnes není vhodné podceňovat a to včetně její vojenské výzbroje.

Hodní a zlí a Ukrajinci

Rusko, EU, USA, nikdo z nich není tím "hodným". Všichni sledují své vlastní zájmy, nic víc. Co bude s Ukrajinci vedení států nezajímá, zajímá je hospodaření jejich vlastních zemí. Ukrajina je pro ně obchodní příležitost.
Ukrajinci teď ale mají na výběr jen málo a čeká je spousta nepříjemností. Budou muset splácet dluhy Rusku, budou muset získat další půjčku a nejspíš zase od Ruska (nikdo jiný tak vysoké půjčky nenabídl), a budou muset přijít na způsob, jak se z toho půjčkového kolotoče dostat. Samozřejmě, bude se muset škrtat v rozpočtech, což se obyvatelům určitě moc líbit nebude, a bude se muset omezit tunelování rozpočtu. A bude nutné získat si investory (otázka je, kam ale pak bude vyvážet?).
Jenže - ani tak malá zemička, jako je ČR, nic z toho zatím nedokázala. Ale i tak Ukrajině držím palce.
Nic z toho navíc není aktuální, protože dnes je Ukrajina pod tlakem velmocí těžkého kalibru, které se jí snaží ovládnout sobě navzájem navzdory. Je cupována dravci. Rusko je z nich nejsilnější a nejdrzejší, ale ostatní nejsou o nic lepší.

Co bude dál?

Svět se dal zase do pohybu a osobně se mi to vůbec nelíbí. Velmoci zbrojí. Vyspělým zemím dochází dech, není proč vyrábět, všichni mají všechno. Úmyslně se zkracuje životnost výrobků, abychom udrželi zaměstnanost. Všichni potřebují nové trhy, kam by všechny ty krámy vyvezli. A samozřejmě potřebují části Země, kde leží materiál, k výrobě potřebný.
To je to, oč tu běží, slovo "svoboda" se pak používá jen jako "vábnička" - mimochodem, všimli jste si, že ty nejhorší režimy na světě mají v názvu slovo "demokratická", případně "lidová"?

Zdroje:
Online televize 112.ua (ukrajinsky)
Online televize ČT24 (česky)
Online televize BBC News (anglicky)
Online TV Al Jazeera (anglicky)
Online TV Russia Today (anglicky)
Web Sky News
... a další ...

pátek 31. ledna 2014

ČNB, ceny potravin, a úvaha o dnešních ekonomikách úplně jinak

Nejsem ekonom

Takže se smiřte s tím, že to, co píšu, nemusí odpovídat žádné ekonomické teorii, tomu, co nás i vás kde učili ve školách, může tomu chybět hlava i pata,  ale na druhou stranu, možná tím spíš třeba trefím hřebíček na hlavičku, se štěstím "vidláka, pozorujícího vědce, jak mění kolo u jeho Porsche".
Nepodceňujte vidláky - občas vidí to, co expertům nikam nezapadá, a tak to fatálně přehlíží.

Nejsem ale blbec

Aspoň si to troufám tvrdit. Na následujícím mediálním extempore mi něco nesedí, intuitivně, tož se pustím do bádání níže ...

"Výrobci potravin předpokládají zvyšování cen v důsledku intervencí České národní banky v rozmezí pěti až osmi procent.Oslabení koruny po intervencích centrální banky kritizují především výrobci, kteří značnou část surovin pro svou produkci dováží, například menší výrobci cukrovinek a někteří zpracovatelé masa
Růst nákladů vede potravinářské firmy ke snižování marží, řada z nich si však prý již nemůže další snižování dovolit. Někteří producenti se obávají, že budou muset omezit výrobu a snížit počet zaměstnanců. 
Například zpracovatelé masa uvádějí, že v důsledku intervencí omezili dovozy prasat ze zahraničí a zvýšili porážky zvířat z českých chovů. Zvýšená cena obilí se prý promítne do cen krmiv a následně zdraží potraviny živočišného původu, zejména maso a vejce."


  1. Cukrovinky možná, ale zvýšená cena obilí? Obilí snad nakupovali hlavně v čase sklizní, ne?Jestli se nepletu, cena obilí se projeví tak možná po další sklizni. Přes zimu kupuje obilí pro dobytek leda sebevrah ...
  2. K čemu je dovoz prasat ze zahraničí, když české prasečáky se likvidují? Touhle dobou je vepřové levné, kuřecí ale drahé. Pokud to opravdu udělá tohle, ČNB chválím!

Drůbežárny a prasečáky v historii ČR

V posledních 10 letech zkrachovali dva velcí výrobci, které jsem znal "z blízka", podle různých článků na internetu dokonce jeden zkrachoval opakovaně, druhý tuším přímo nekrachnul, jen zavřel skoro všechny své provozy.
Lom u Tachova - Adex a Respo vedle sebe
Vlevo je Respo, areál vpravo je Adex, jen abyste v Praze taky viděli, jak to vypadá v reálu mimo města. Ty lidi, co tam pracovali, dneska živíte, ale sami máme všichni podíl na tom, jak se hospodaří vůči zahraničí. To, že si koupím maso o 50% levněji pořád neznamená, že jsem ušetřil - protože jsem tím napomohl likvidaci domácí výroby, ty lidi dnes musí držet při životě stát.

Adex 

http://www.novinky.cz/kariera/209755-nejvetsi-cesky-zpracovatel-krut-potreti-zkrachoval.html
V Lomu u Tachova je obrovský areál, který měl i svého času podnikovou prodejnu - do které se vyplatilo dojet z Tachova a okolí pro čerstvé kuřecí nebo krůtí maso. Po mnoha investicích se složil, protože ČR začala pomáhat výrobcům německým a polským, na úkor svých vlastních. Respektive, svést to na stát je moc jednoduché, stát ale přece neurčuje, od koho si Tesco nakoupí maso ...

V Lomu jsem dlouho nebyl. V bývalém prasečáku jsem tuším v roce 1997 dělal jako brigádník jedné stavební firmy rozvody teplé vody a tuším plynu, areál je to obrovský a smrad tam byl ... strašný! :-D
Zničil jsem tam svoje první dvě sbíječky (Bosch a Narex), padly v boji s cihlou a betonem. Tamní zaměstnanci sice nebyli zrovna vysokoškoláci, ale na starání se o zvířata stačili. Teď jsou bez práce, protože ani na stání u mašiny se nehodí. Tak je platíme za nic z daní, protože práci pro ně nemáme.

Respo 

Tachov, Černošín, Lom u Tachova, Chodová Planá, atd. - všechno dnes opuštěné budovy. Než zkrachovaly, byly tam byly tam platy na úrovni minimální mzdy, ale byly.
Co dělá RESPO dneska nevím, v bývalé drůbežárně v Černošíně stojí solární elektrárna,
Zlaté stránky: Lom u Tachova
Zlaté stránky: Černošín - tohle je na opačném konci Černošína, ale podle mě tam žádná zvířata nejsou - nevím, jezdím jen kolem autem. Ale v okolí Černošína jsou obrovské lány, kde obvykle roste pšenice, ječmen, kukuřice ... taky mák a jednou bylo na Svojšín schované pole takových těch fialových malých kvítků, teď si nevzpomenu, co to je.

Česká kvalita a německá nekvalita

Ne, není to naopak, ale není to tak ani obecně. Vozí se sem šmelc z Německa, Polska, který je "doma" neprodejný nebo pochybný. A totéž my vozíme ven, ale řekněme, že to je jen moje domněnka, která nemusí být pravdivá. Prosím, přesvědčte mě, že si domácí výrobce v každé zemi dovolí doma prodávat šmejd a ven vozí to kvalitnější ... možná v Rusku, ale i tam už o tom trochu pochybuji.

Tady je další zamyšlení někoho "z oboru": http://agroodbytcr.sweb.cz/aktuality.htm

Máslo

  • Choceň, Valmez, Hlinsko i Olomouc mám v oblibě, na rozdíl od šmeliny PL+DE (koukejte na kódy, ne na prodávajícího - např. Halíř má momentálně tuším čtyři dodavatele - jedna německá a tři české mlékárny - kdykoliv se to ale může změnit). 
  • Laktos a Pragolaktos jsou ale třeba německá, podle mě nedobrá másla.

Kuřecí maso

Nevím jak v Praze, v Plzni bývají k dostání Klatovy a Vodňany. Vodňany už ale část masa taky tahají z Německa, takže opět je třeba koukat na kódy. Podle některých nápadů lobby se střídavě říká, že se bude muset uvádět kompletní původ, a střídavě, že se to prostě nedozvíme, s demagogickými argumenty typu "co když se kuře přestěhuje". 
Kupuji už jen ukrutně drahé chlazené maso, protože ... můžete hádat, proč je mražené za cenu sotva poloviční a proč je typicky z Polska.

Tak jak to je s výrobci?

Zkrátka, někteří producenti propustí, někteří naberou. Když hledáte práci, řešíte plat, čili celé se to dá do pohybu. Pokud vím, obecně se má za to, že ČR na tom ekonomicky není špatně, takže by to mohlo dopadnout dobře. O tom, co ČNB udělala, jsem četl mraky pro i proti, a nevím, co převáží. Fakt ale je, že stagnace tu žádné opravdové výrobě nepomáhala.

Úvahy o cenách obilí

http://www.asz.cz/cs/kratke-komentare/zamysleni-nad-cenami-obili.html
- a když se pak podíváte do komentářů, je to ještě trochu zamotanější.

Zajímavý postřeh: poslední dva tři roky se objevuje čím dál víc nových traktorů - a to není levná záležitost. Tak jak to vlastně s těmi zemědělci je? ;)

http://www.asz.cz/cs/aktualne-z-asz/za-poznanim-polskeho-zemedelstvi.html
- tohle je taky zajímavé - jak se šmelí s půdou v Polsku - nákup 2500 PLN, prodej 100000 PLN za hektar. Jen je třeba jí nechat ležet ladem a pak nechat změnit územní plán na stavební pozemek. Zrovna jako u nás ...
"družstvo se snaží prodávat v prosinci, když je nejvyšší cena. Letos se obávají obecně nízké ceny, a to i z důvodu zaplavení trhu produkcí z ČR."
Co se týče cen z pohledu chudšího nakupujícího v hypermarketu, o čemž jsme se tuhle vášnivě bavili na obědě s kolegy: není to jednoznačné, to tvrdím já. 

Kdo to vlastně řídí ... gůglíme!

Největší díl na ceně nemá zemědělec ani zpracovatel, ale hypermarket. Pokud se máslo zdražilo o víc jak 1/3, problém je jinde než v ČNB ... ale koukněme se na vlastníky ...
http://www.tatramleko.cz/o-spolecnosti.php - koukám, že Tatra patří Babišovi ... hehehe, tak to možná vysvětluje leccos :-/
IDnes - rozhovor Teplého z Madety - Jihočeská mlékárna je akciovka ... rejstřík firem ... 35 akcií po 1 milionu ... část vlastní Madeta a ta má základní kapitál půl miliardy Kč ... a vlastní ji Madeta Group a tu vlastní bůhvíkdo (prý banky, rozhodně Komerční banka) ... mají taky dobré vztahy se Zemanovým Janotou, co se člověk nedozví, mumlám si tu ...
Další rozhovor s Teplým - potřebujeme české obchody

Marže obchodníků

http://www.rozhlas.cz/zpravy/domaciekonomika/_zprava/1166346
"Například u tvarohů je to až 200 procent, u jogurtů se bavíme okolo 50-60 procentech. U sálamů od 45 procent nahoru.“
"Dochází tak k paradoxní situaci, kdy mají prvotní producenti stále nižší výnosy, a to i při stoupající ceně potravin. To je také společně s dovozem levného zboží ze zahraničí jednou z hlavních příčin propadu v potravinářské výrobě, ke kterému došlo v loňském roce. "

Mouka

Tak si to spočítejme. Pokud zemědělci prodávají tunu pšenice za 3000 Kč, je to 3 Kč za 1 kg. Čili z bochníku chleba jdou 3 Kč pro zemědělce. Další na řadě je třeba takový Odkolek (tam jsem byl na brigádě 1 den, skončil jsem s 40°C horečkou z únavy - ve třech lidech jsme naložili vagon 50kg pytly s moukou za 10 hodin, masakr, norma na nosnost člověka per 1 den překročena, už chápu, proč byla v prac. smlouvě - představte si vagón!) nebo jiný mlýn, řekněme možná další 3 Kč, spíš méně. Zbytek je možná pekárna a Tesco. U nás stojí kilovka 20-30 Kč.

Dobře, bavili jsme se o másle ...

Máslo

Ceny másla v půlce roku 2013
"Letos v srpnu dostávali chovatelé dojnic za litr mléka v průměru 8,50 koruny, o 18 procent více než ve stejném měsíci loni. "
 - čili ceny mléka s krokem ČNB nemají moc do činění ... jinak chov hovězího dobytka je u nás celkem drahá záležitost díky cenám za veterinu a všechna očkování a kontroly, pokud vím ...
"Na vině je vyšší DPH a podle zemědělců si také obchodníci zvyšují marže."
 - HA!

http://byznys.ihned.cz/c1-50286760-vyroba-masla-v-cesku-klesla-o-ctvrtinu (starší článek, 2011):
"Na český trh tak směřuje stále více másla z ciziny. Za loňský rok se ho k nám dovezlo 19 tisíc tun, což je zhruba stejně jako v roce 2009. Ale rozdíl je u másla v konzumním balení, toho se do Česka dovezlo téměř 12,5 tisíce tun, zatímco v roce 2009 jen 8,5 tisíce tun. Tam je evidentní nárůst. Opačný trend je patrný i u exportu másla z Česka. Klesli jsme ze čtrnácti tisíc na osm tisíc tun. V několika uplynulých letech se tak poměr mezi dovozem a vývozem másla obrátil.
Zatímco v roce 2007 šlo z Česka do ciziny 21,3 tisíce tun másla, v roce 2009 to bylo už jen 14 tisíc tun. A jestliže se v roce 2007 dovezlo 13,3 tisíce tun másla, v roce 2009 jsme importovali více než 20 tisíc tun másla."
- tohle evidentně pokračuje, několikrát se mi stalo, že české máslo bylo v hypermarketech zašité někde dozadu do regálu, pokud vůbec, zatímco německého je habakuk. Tohle nebude náhoda.

ČNB, EU, KSČ, ... a jiné organizace v pozadí

Suma sumárum, to je důvod, proč si myslím, že hádat se o tom kroku ČNB je naprosto okrajová záležitost, byť zajímavá. Problém je úplně jinde. 
Pár lidí si skupuje kompletní průmysl i zemědělství v celé EU i jinde ve světě. To je problém - ceny neurčuje stát, ale diktují si je vlastníci: Tesco, Agrofert, Ahold, Madeta Group, ČSOB, KB, Anwil, NWR, PPF, ... a jejich vlastníci a vlastníci vlastníků a vlastníci jejich "bílých koní" ...

Kdysi o všem rozhodovala KSČ, neprůhledně, despoticky, a do pozic lidí "na ráně pro civily" posadila hlupáky, průbojné arogantní zmetky, přes které se nikdo nedostal. Dneska to ale funguje úplně stejně, jen neexistuje žádná "superorganizace", není zapotřebí (pravda, o Bilderberg Group se dlouho mluvilo jako o konspirační teorii, než se objevily důkazy a dokonce historie, kdo se kdy účastnil).

Státní dluh? 

Asi takhle - je to hodnota relativní nebo absolutní? Co jsou peníze? Dlouhodobě se mi nezdál princip fungování státního dluhu, než mne kdosi před týdnem "trknul": ty peníze neexistují. Během posledních 15 let proběhla úplně jiná transformace - úplně se odtrhl svět financí od světa výroby, přidaných hodnot, obchodu za zboží i služby. Tím pádem žádný státní dluh prakticky neexistuje, nemá vliv. Může mít, když se do něj bude moc zasahovat, ale současný růst státního dluhu je jen taková početní kompenzace principu, kde dřív fungovala inflace - průkopníkem v tomhle jsou USA a zamyslete se sami, jestli vám přijde, že by USA měly se svým extrémním dluhem nějaký problém, že by se celá ekonomika hroutila - a to je dobrých 20 let.

Jestli jste si všimli, inflace téměř neexistuje, je jen diskutabilně podložená: vraťte se opět k tomu prvnímu článku - během dvou let došlo u obilí k obratům -50% + 200%. A ceny pro spotřebitele? +- 30%. Háček je v těch maržích - jsou tak velké, že vzájemně pokryjí jakoukoliv cenu vstupů s rezervou a firmy jako Tesco budou mít vždycky spolehlivě zajištěný zisk, lidi si zvykají na ceny a celý systém cen je celkem stabilní a robustní.

Životní náklady

Co je problém, je skladba životních nákladů lidí, kolik utratíme za nájem a energie a jídlo a základní ošacení, a co zbude. Díky téhle železné kouli se nemůžeme poměřovat s Německem, protože to nás jednoduše kupní sílou převálcuje. A tady je opět háček - nejsme o nic méně pracovití, nejsme horší ani vzděláním, ani schopnostmi. Jen máme jinak nastavený systém.
Babišův nápad zvednout minimální mzdu na 15000, jakkoliv plácnutý od boku, není úplný blábol. Německu dochází dech a my začínáme mít naopak kapacitu tenhle poměr sil napřed rozhodit a pak vyrovnat. To je otázka nějakých 10 let a využití jakékoliv nestability teď, by dopadlo katastrofálně - pokud bychom my s Poláky, Slováky, ... podrazili německému průmyslu nohy, doplatíme na to taky. Jsou to spojené nádoby, Němci nás potřebují jako odbytiště, jinak poznají, že mají problém, nemají práci a ta ekonomika už to neutáhne. Představte si, že by začaly mít problémy německé automobilky, pro které český průmysl vyrábí ... a rozjede se kaskáda, která poškodí i nás.
A to je důvod, proč se situace mění pozvolna a plíživě - ale kam? Budeme svorně otroky majitelů všeho (možná i nás samotných), Češi i Němci?

Ideologie

Sorry, tohle není o ideologii, žádný komunismus a kapitalismus do toho nepleťte - to jsou ideologie staré a obě sice něčím reálným podložené, ale dnes je třeba popsat současný stav a začít přemýšlet, kam se tohle bude vyvíjet dál ...
Pořád je to o moci, i o tom, že někdo "si žije", ale taky o moci tenhle falešný povrchní bordel udržet v chodu. Jinak řečeno o tom, že lidská společnost nijak jinak fungovat neumí - každý pokus o demokratizaci končí fiaskem - a komunismus, idea vlády dělníků, coby těch, kteří si přece zaslouží spravedlnost a mají velice dobrý smysl pro poctivost, byl jedno z největších fiasek v historii lidstva; pozor, dělníci mají smysl pro spravedlnost i poctivost. Ale dělník neumí organizovat  lidi, neumí uvažovat strategicky, vymýšlet scénáře, varianty, prognózy ... dělník je naivní, byť pořád nemusí kvůli tomu být blbec. Naštvaný dělník je ale všem nebezpečný, na což není k zahození občas myslet.

Tož to jsem strávil asi 3 hodiny rozjímáním o nesmrtelnosti chrousta. Irituje mě, když někdo bagatelizuje všechny ty souvislosti až závislosti, vybere si, co se mu hodí, ale přehlíží to nejzásadnější - že někdo to opravdu ovlivňovat může víc, než vláda.
V tuhle chvíli mě napadá jedna věc - pokud se ukáže, že Babiš prokazatelně zneužívá moc ministra financí, jak ho my, občané, dokážeme sesadit co nejrychleji? Kolik toho do té doby stihne? Nečasova vláda s odchodem taky zrovna dvakrát nespěchala ...

čtvrtek 30. ledna 2014

O státní správě a nepřátelském XML

Co je XML?

Budu to psát snad pochopitelně pro laiky, čili programátoři, nekamenujte mě za nepřesnosti, kterých se dopustím.

XML je soubor, který typicky používají stroje, nikoliv lidé. Nicméně je tak na půl cesty - původní myšlenka byla, že jej bude možné nějakým počítačovým zpracováním obarvit, lehce přeskládat, tak, aby se jeho obsah hezky a přehledně zobrazil i člověku. Leč ukázalo se, že je to nevýhodné výkonově, pracné pro programátory (a tudíž drahé a nespolehlivé), a tak se XML dnes používá prakticky jen pro komunikaci mezi programy, tj. mimo lidí.
To neznamená, že jde o něco zastaralého, má své výhody (i nevýhody), nicméně rozhodně tyto soubory nejsou vhodné k tomu, aby je upravoval člověk ručně.

Nevhodný formát státní správy

Česká správa sociálního zabezpečení prý (zdroj: můj tímto vyděšený kamarád) touhle dobou lidem rozesílá formuláře jako soubory XML, a ti panicky řeší, jak je proboha mají vyplnit. No bodejť! Vždyť když soubor v čemkoliv otevřou, zobrazí se jim písmenka, sice nějak podivně ohraničená, ale pořád se v tom dá něco najít!
Ale počkat!
"V prohlížeči to nejde editovat! Tak čím to mám otevřít?!"
Člověk si nakonec poradí. Otázka je, jak? Možná takový člověk otevře třeba PSPad, notepad nebo MS Word, a soubor prostě zedituje. A pak ho upravený pošle jako DOC sociálce. Nechtěl bych být tím, kdo to pak bude otevírat :D

Není tak zle

Jen člověk musí hledat - například najít si ten formulář jinde, nebo použít nějakého průvodce ....

Finančák

Ach jo, Ministerstvo financí si navíc neumí ani zařídit správné serverové certifikáty, před kterými laika nebude browser varovat, že se může jednat o podfuk. Takže, milí uživatelé, není to podfuk. Jen web MFČR spravuje mamlas.
https://adisepo.mfcr.cz/adistc/adis/idpr_epo/epo2/uvod/vstup_expert.faces

Sociálka

Potřebujete program Form Filler od Software602, ten stáhnete tady zdarma: 
A potom potřebujete ještě ty formuláře, které případně rozbalíte ze souboru zip, staženého odsud:
- mimochodem, je tam i návod, jak na to ;-)

A důkaz, že to funguje dokonce i v Linuxu (při instalaci do Kubuntu 13.10 sice hlásí chybějící ia32-libs, ale funguje i bez nich), Software602 mě mile překvapil!



čtvrtek 23. ledna 2014

Pattern: Práce se zdroji, které nakonec musíte uzavřít

Předpoklady

  • createEntityManager vytvoří entity manager nebo vyhodí výjimku, nikdy nevrátí null

Naivní verze

  EntityManager entityManager = null;
  try {
    entityManager = factory.createEntityManager();
    ...
  } finally {
    if (entityManager != null) {
      entityManager.close();
    }
  }
  • dvojí přiřazení 
  • možnost opakovaného přiřazení omylem
  • nepřehledný kód komplikuje čtení i úpravy
  • nejednoznačnost stavu proměnných
  • řádky a podmínky navíc

Dokonalá verze

  final EntityManager entityManager = factory.createEntityManager();
  try {
    ...
  } finally {
    entityManager.close();
  }
  • jediné přiřazení hodnoty
  • ve finally nikdy nebude entityManager null
  • nelze do proměnné přiřadit ani jinou hodnotu (ani omylem!)
  • pokud při create nastane chyba, k přiřazení nikdy nedojde a nedojde ani k uzavírání

Analýza

Není nic jednoduššího, než se poslouchat, klidně přemýšlejte nahlas:
  • "Potřebuji entity manager - je to zdroj, tudíž když ho už nepotřebuji, musím ho nakonec zavřít" (u dependency injection to platí taky, byť to udělá kontejner!)
  • "Pokud nastane chyba, nemůžu dělat nic, takže chybu propaguji ven".
Totéž samozřejmě platí pro soubory, JDBC konexe, JMS, atd ...

Co když ...

Co když potřebujete otevřít zdrojů víc najednou?

Nebuďte líní a udělejte si spec. třídu, wrapper, který buď otevře oba zdroje najednou, nebo při chybě již otevřený zavře. Bude se tudíž chovat zvnějšku atomicky, nikdy nebude ve stavu, kdy by mu jeden zdroj zůstával otevřený.
Přidáte mu také metodu close, která zavře oba zdroje opět atomicky. Nezapomeňte ale také na to, že při zavírání může také nastat výjimka - obvykle bych to řešil dokončením zavírání všech zdrojů a vyhozením runtime výjimky se seznamem chyb, který by měl ale vypovídat o tom, co se stalo. Druhá možnost je vyhodit runtime výjimku při první chybě - to si můžete dovolit, pokud víte, že výjimka při close je fatální a výjimečný problém, kdy má smysl nikoliv po sobě uklízet, ale všeho nechat a "splašit" někoho vně. Asi jako když utrhnete vodovodní baterii, nebudete pokračovat v mytí nádobí ...

Jak je to s kontejnerem a databázovými spojeními?

Jestliže používáte DI (např. anotace @PersistenceUnit nebo @Resource), měli byste dobře vědět, jak přesně se pak aplikace bude chovat.
Pokud používáte JTA, kontejner si pro entity manager vytvoří wrapper. Dokud nejste v transakci (což se řídí mj. anotacemi @TransactionAttribute, tím zda provádíte změny v databázi, konkrétní implementací kontejneru či JPA, a jejich nastavení), kontejner se může snažit zavírat JDBC spojení ihned, jakmile dokončí dotaz, nebo si jí naopak podrží během celého volání metody, a to aniž by se změnil persistence context.
Jakým způsobem přesně tudíž kontejner zdroje využívá, záleží opět na vás a vy si musíte rozmyslet, jaká varianta je pro vás optimální.

Další dotazy k věci? Sem s nimi!

pondělí 13. ledna 2014

Zbytečná panika (hoax): DŮLEŽITÉ VAROVÁNÍ OPRAVDU SI TO PŘEČTI NEBO MÁŠ PO PC A TVÍ ZNÁMÍ TAKY

Ahoj a dobrý den,

původně jsem toto psal jako e-mail, ale nakonec jsem si řekl, že bude lepší to napsat sem.

Jak to začalo ...

Dostal jsem e-mail s hysterickým nadpisem "Fwd Fwd .... Fwd DŮLEŽITÉ VAROVÁNÍ OPRAVDU SI TO PŘEČTI NEBO MÁŠ PO PC A TVÍ ZNÁMÍ TAKY" a přílohou doc-1-1.doc.
Ne poprvé a zjevně naposledy. Mí přátelé a rodina to myslí dobře a tak šíří paniku dál, jak je ve slušné společnosti zvykem :-)

Ano, je to nesmysl; snad z následujícího bude jasné, jak se věci mají ...

Nebezpečné přílohy

Příloha doc je obvykle Dokument aplikace MS Word, ale ... nemusí to být pravidlo, soubor můžete pojmenovat, jak Vás napadne, nicméně potom na něj taky aplikace, ve které mail čtete, bude jinak reagovat.
Spustitelný soubor (aplikaci) Vám obvykle nedovolí spustit (nejčastěji exe).

Bohužel ale i doc může obsahovat tzv. "makra", která můžou způsobit škodu.
Ale to už Vám napíše Word, jestli tam jsou nebo ne - makra většinou nepotřebujete, takže pokud Word varuje, že tam jsou, smrdí to (můžou ale být třeba v nějakém XLS formuláři, není to jednoznačně špatně).

Videa z Youtube a Vimeo jsou téměř jistě bezpečná. V příloze mailu video obvykle nemá co pohledávat a opravdu byste ho neměli spouštět (disk Vám ale nezničí - spíš Vám do počítače nenápadně nainstaluje něco, co nechcete; týká se to hlavně Windows) ...

Přílohy mailů jsou opravdu problém, cokoliv se Vám nezdá, neotvírejte - dejte pro jednou na instinkt :-)

Antivir

Jakoukoliv ochranu lze nějak obejít, nicméně antiviru stačí, když v příloze mailu zjistí pár set bajtů, které odpovídají něčemu v databázi virů, zjednodušeně řečeno. To je pro autory antivirů docela oříšek - analogicky jako když má policajt poznat zloděje - všímá si indícií.
Antiviry se průběžně aktualizují (cca 1x týdně), čili většinou nebývají moc pozadu za "lumpy" - přesto nikdy nejsou stoprocentní (ani policie není).

Přidávání kontaktů je bezpečné

Je nemožné, aby Vám přidání kontaktu do adresáře zavirovalo počítač, pokud ho přidáváte pořád způsobem, jakým jste zvyklí.
Pokud Vám někdo přímo do mailové zprávy podstrčí odkaz nebo tlačítko s nápisem "Přidat do kontaktů", je to ale už podfuk, neklikejte na to. Cokoliv je v mailu, míří téměř jistě někam ven. Měli byste vědět kam. Nicméně i když na to kliknete, nic špatného se ještě nestane - bude ale záležet na dalším kroku - pokud se nabídne neznámý soubor ke stažení z neznámého webu, odmítněte to.

Poškodit disk? Nemožné!

Zformátovat nebo poškodit disk z mailu NENÍ MOŽNÉ. Nevím o systému počínaje Windows XP, přes Linux, Solaris, AIX, OS X ... , který by něco takového dovolil. Museli byste se hodně snažit a hodně do systému hrabat, aby se něco takového podařilo - museli byste sami dobrovolně vypnout snad všechny ochrany, které systém i bez antiviru má.

Toto je úplná kravina, bez prominutí:
"Tento virus jednoduše zničí Nulový sektor harddisku, ve kterém jsou zachovány vitální informace jeho funkcí."

- na ten se Vám totiž nedostane ani operační systém s výjimkou chvíle, kdy systém instalujete nebo restartujete (ihned po přečtení OS přístup zakáže).

Varovný mail je sám špatný

Nejhorší na tom všem je nakonec sám varovný mail:
  • všichni teď známe emailové adresy všech a kdokoliv je může použít na rozesílání spamu
  • stejný seznam adres může mít kdokoliv, kdo se k tomuto mailu dostal po cestě.
  • stejný seznam adres může použít jakýkoliv vir z Vašeho počítače, o kterém ještě nevíte

Proč maily fungují takhle?

To si najděte na internetu, musel bych kreslit obrázek a nechce se mi. Zjednodušeně řečeno - než mail doputuje od odesílatelovy schránky k adresátově, používá se protokol SMTP.
Je stařičký a zabezpečení nijak neřeší. To částečně řeší až TLS/SSL (šifrování), ale nic z toho se nezabývá ověřováním adresáta ani odesílatele. Kdykoliv můžu poslat mail jako kdokoliv jiný - a to je kámen úrazu.
Na druhou stranu je to protokol jednoduchý a lehko použitelný - to je důvod, proč máte e-mail zadarmo, je pro provozovatele levný.
Funguje to snadno, jednoduše, rychle, spolehlivě. Kdo znáte Datové schránky, srovnejte si to - a to nevíte, co všechno se musí řešit zevnitř tohohle projektu, jen aby byl ... rychlý, spolehlivý, bezpečný.
Tak proto.

Smažme čerta ze zdi ... nebo ne?

Jje spousta cest, jak se dostat k informacím, mail je jeden z těch komplikovanějších a nestojí za tu práci. Snazší jsou odkazy z facebooku nebo odkudkoliv z internetu, reklamy, atd.
Víte, co "lajkujete"?
Jaký formulář vyplňujete?
Kde se registrujete?
Čtete obchodní podmínky? Častá větička: "souhlasím s poskytnutím údajů třetím osobám pro reklamní účely" - právě jste se upsali ďáblu, legálně! Naštěstí to můžete odvolat, leč nefunguje to dobře - obchodník mezitím Váš kontakt střelil dál, takže zatímco on Vám spam posílat přestane, další tisícovka v tom bude pokračovat.

Pár pravidel

Pravidlo 1: Na tlačítka z mailů se nekliká. Může totiž udělat cokoliv a jediný, kdo ho může zastavit, je operační systém (+ antivir).

Pravidlo 2: Na odkazy klikat můžete, ale zvažte, jestli víte, o co jde. Instinkt je dobrý rádce, když je to mail od neznámého a nevíte o tom, že byste si od něj jakkoliv říkali, "smrdí".

Pravidlo 3: Bezpečný odkaz obvykle má na začátku něco, co znáte. Třeba http://seznam.cz nebo http://www.youtube.com/watch?v=SUmCRrKYwBQ nebo název nějakého internetového obchodu.

Pravidlo 4: Když posíláte mail, neposílejte ho spoustě lidí najednou (pokud je nechcete všechny seznámit ;-) )

Pravidlo 5: V seznamu adresátů můžete (nemusíte) použít "skrytou kopii, bcc" - jeden pak neuvidí, komu všemu jste to ještě poslali. Pozor, potom ale ten nemůže ani všem odpovědět.

Úplně nejzákladnější pravidlo: Nikdo nedozví jen to, co nikam nenapíšete - ani doma na papírek; všechno se dříve nebo později může někde objevit. Není to nic nového, platí to snad celou dobu existence lidstva :-)

"Udržujte paniku a kurz!"

P.S.: Když dostanete mailem zprávu o "viru", nebo nějakou jinou poplašnou zprávu, podívejte se obratem sem:
http://hoax.cz , např. konkrétně sem: http://hoax.cz/hoax/icq---nepridavejte-uzivatele-/
- je to web, kde se zaznamenávají hromadně šířené poplašné zprávy, lidé je mají "rádi", a velmi často jim naletí. Nejste sami a nemusíte si připadat hloupě, TV Nova z nich dokonce leckdy sestaví zprávy!

P.P.S.: Můj mail můžete přeposlat klidně dál ;-)

P.P.P.S: Je snadné udělat i takovýhle podfuk - není to vir, je to prostě jen lidský podfuk, lumpárnička: http://seznam.cz - háček je jen v tom, že odkazy se zapisují "nadvakrát" - jednou zadáte, co chcete, aby se zobrazilo, a jednou, kam to vede. Původní úmysl lidí, kteří to vymysleli, bylo umožnit čitelnější zobrazení odkazu: Vyhledávač
Je možné, že některé programy na zobrazování e-mailů Vás budou v prvním případě varovat, že skutečný odkaz je jiný než zobrazený.

Zkrátka, není to sranda, ale co si budeme povídat - když někomu cizímu podáte ruku, taky většinou nevíte, jestli se z něj vyklube kamarád nebo hajzl.

David.

středa 25. prosince 2013

Webová aplikace - co byste měli znát vs. problém inteligentních programátorů

V podstatě všechny webové aplikace typu "evidence" jsou na jedno brdo. Přesto se pořád někdo pokouší něco vymyslet, nějakou svojí geniální cestičku, jak to udělat jinak (bráním se slovu lépe, protože lidi podezřívám, že je to spíš jejich vzpoura z rutiny).

Standardní zpracování jakéhokoliv požadavku by mělo být zhruba následující:
  1. Validace Javascriptem na formuláři; ten může volat speciální servlety, nebo naopak JS může být generovaný z Javy, či psaný duplicitně (alespoň minimalisticky), příp. lze použít JQuery či jinou knihovnu komponent ... možností je hodně, v krajním případě se dá tento stupeň vynechat a nechat ho na později, byť nezanedbatelně ulevuje zatížení serveru.
  2. Odeslání požadavku - nikdy ne nějakým "hackem" skládáním URL, ale vždy přes formulář! Ale to je jiné téma)
  3. Validace na serveru - úplná a přitom rychlá. Proč? Proč "duplikovat" integritní omezení databáze? Protože ...
    1. Integritní omezení databáze nepokrývají vše, ale jen nějaký minimální/přiměřenou část skutečných omezení. 
    2. Nevyplatí se aplikaci nechat dojít do nějaké fáze ukládání a pak dělat  rollback. Ten je vždycky velmi drahý. Transakce zaplňuje transakční log databáze, uzamyká záznamy a musí pak nutně spravovat fronty požadavků a hlídat, aby se nedostaly do kolize ... Vždy navíc skončíte při první chybě, pokud uživatel porušil pravidel víc, bude totéž opakovat několikrát: je otrávený, aplikáče i db přetížené, občas navíc přijde nějaká záhadná chyba, kterou uživatel už vůbec nechápe a programátor jí dlouho nedokáže nasimulovat.
      Uživatel opraví nahlášenou chybu, vzápětí dostane jinou, a tak než zpracuje jediný formulář, uteče hodina, databáze nezpracovala jeden nebo dva požadavky, ale desítky, a vy stojíte za úředním okýnkem a tečou vám oběma nervy.
      Nevyplatí se ale validovat extrémně náročné věci (co to je není tak jednoduché říct, leccos se dá optimalizovat; čili výjimečně se může stát, že něco skončí až na constraintech databáze. VÝJIMEČNĚ!)
  4. Transformace dat - uživatelské rozhraní téměř nikdy nekopíruje schéma databáze, nicméně obvykle jde už o relativně snadné namapování entit. (slovo snadné je tu klíčové).
  5. Hurá na databázi, ať relační nebo objektovou nebo třeba CSV.

Pokud si někdo "ušetřil" práci tak, že implementoval jen 2) a 5), sice napsal méně kódu, ale strávil s ním víc času a nasekal mraky chyb, které bude těžké opravovat, a aplikace nikdy nebude dost rychlá.

Slovo "snadné" je tučně, protože programátoři jsou obvykle inteligentní lidé a nenávidí jednoduchou práci "pod jejich úroveň", podceňují jí a velmi často jí udělají špatně nebo, aby se vyřádili, jí neskutečně zkomplikují.
K tomu si vypomůžou například tím, že vynechají validace. Ty pak "dolepují" všude možně, a postupně pak v kódu přibývá zpracování výjimek na různých místech, tak, jak jim uživatel nachází chyby.

To inteligentního programátora ponižuje a uráží, a tak vynalézá nebo nasazuje různé frameworky, obvykle neúspěšně, protože na něco tak složitého už je nikdy nepřilepí a nedotáhne to do konce.
Nakonec ho to už vůbec nebaví, a vydá se "prznit" na jiný projekt nebo do jiné firmy ...

Velmi důležité je vzpomenout si na základní myšlenky objektového programování - co všechno je objekt? Ano, všechno! Tak proč na všechno používáte String? Takový hloupoučký objekt na 50 řádek kódu vám ale může při validacích a kompletním zpracování ušetřit spoustu práce. Například takový VIN karoserie auta ... vážně stačí Integer nebo String? A co kdyby to byl samostatný objekt? Měl by statickou metodu parse, byl by nemodifikovatelný ... od chvíle, kdy se data z formuláře úspěšně naparsují do instance, víte, s čím máte tu čest ;)

KISS (Keep It Simple, Stupid) má jeden pro někoho nemilý důsledek - váš kód vypadá hloupě, naivně, jednoduše, brzy se pak vykládá, že píšete jen jednoduché věci, zatímco jiní se dřou na těch složitých. Nenajdete argument, nepřesvědčíte nikoho, že to není pravda. Na to, abyste to takového člověka nechali napsat po svém znova a bez přístupu k vašemu vzoru, vám žádný zaměstnavatel nedá čas. Byl by sám proti sobě ...

sobota 21. září 2013

Většinový systém? Nezbláznili jste se?

Zrovna jsem viděl diskuzi na ČT24. Jaksi jednostranně vybraní politologové na čt24 nám chtějí zavádět ne sice jednu jedinou stranu, ale bipolární nebo většinový systém.

Už chápu, proč je tolik lidí vysazených na Tomského. On je takový ... asi jako bolševik, nevzhlížející k SSSR, ale k božské Velké Británii. Nu dobrá, každý máme svou oblíbenou zemi. Nicméně při jeho argumentaci jsem ho už přestával brát vážně a došel jsem k myšlence, jestli to nepřehání s alkoholem.

Citát dne: "Demokracii si lidé pletou s jejím obsahem". Ano, jeho autorem je Tomský a zarazil i ostaní diskutéry.

Tahle sešlost, to byla nejzbytečnější diskuze, jakou jsem kdy viděl - nakonec se shodli, že to stejně nejde. Naštěstí.

Zdá se, že nejen politiky, ale také některé politology vyloženě děsí existence více názorových proudů.

středa 21. srpna 2013

Stárnoucí taktik Zeman a srpen 1968

Hlavně zdravíčko ...

Vždycky jsem si všímal lidí, jejich výrazu, pohybů, ale i způsobu mluvy.
Viděl jsem tuhle záběry našeho pana prezidenta, jdoucího po schodech. To mě přimělo uvěřit, že i u těch korunovačních klenotů nebyl tak "pod parou", jak se zdálo, ale bylo mu vážně špatně.
Myslím si, že jeho tělo je v celkem špatném stavu. Že cukrovka (kterou měla dlouhá léta i moje babička) jede na plné obrátky a blíží se konec. Možná za rok, dva, možná za deset let, ale první, co přestane sloužit, je mozek. Přijde zapomínání, překrucování minulosti, domýšlení si věcí, které se nestaly, nakonec nebude rozumět otázkám, neudrží téma ...

Dubček zrádcem? NE!

Zeman odsoudil tehdejší zástupce státu jako zrádce. Zapomněl na spoustu faktů, okolností, které tu byly.
Že Dubček a spol. byli v Moskvě, byli tam bez zpráv z domova, a nevěděli nic z toho, co víme teď. Nevěděli ani o tom, jaký podraz na ně udělali Biľak s Husákem a dalšími, jestli se dobře pamatuji to, co jsem dosud četl.

Víte, co se mohlo stát? 

  • Mohl tu vzniknout konflikt východního a západního bloku.
  • Mohla tu vzniknout občanská válka.
  • A mohla tu zůstat vojska coby dozor.
Kterou možnost byste zvolili? Podotýkám, jste v Moskvě, nemáte informace, snažíte se ubezpečit Sovětský svaz o tom, že se "netrhnete" a že jen chcete povolit řetězy a že ručíte za to, že to bude fungovat a naopak tím celý východní pakt jen získá.
Snažit se umluvit Moskvu s tím, že VY, maličká země ve středu Evropy, si budete diktovat, jak Váš stát bude fungovat - to podle mého není zbabělost a už vůbec ne zrada. Toto bylo na dlouhá léta první a poslední hrdé vystupování československých politiků, které bylo vzápětí drtivě převálcováno zradou kolegy, tanky a nakonec nezájmem občanů, kteří se smířili s normalizací.

Kdyby ...

Vždycky to mohlo dopadnout hůř. Nebýt Husákovců, kdo ví, možná by Dubčekovi dal Brežněv šanci. S tanky "za bukem", ale dal. Možná. Možná i bez Husákovské zrady by to dopadlo stejně. Já to nevím, nejsem historik a nemám toho tolik nastudováno.

Sčítání padlých

Sčítání padlých po válce, která nebyla. Například můj děda měl hodnost v armádě. Pro nesouhlas byl z armády vyhozen. Nakonec pracoval s elektronikou kdesi v kanceláři. V 80. letech s babičkou začali stavět dům a jakýsi komunista chtěl rozestavěný dům zkonfiskovat s odkazem na "nesouhlas". Od jiného komunisty ale prý dostal přes prsty a vše dobře dopadlo.
Zeman na tom byl v podstatě podobně - vyhozen ze strany, ale nakonec pracoval v "prognosťáku", což podle mého soudu nebyla špatná práce.
O skutečných padlých se moc nemluví. O sebevrazích ano. Do občanské války se nám holt nechtělo - ale divíte se? Pomohlo by to něčemu? Stěží ...

O hrdinství

A co hrdinové? Kdepak, Zeman nebyl žádný hrdina. Na náš národ bylo hrdinů vždycky málo. Ale pro to se nelze zlobit, na druhou stranu jsme nikdy nebyli až tak brutálně týrání. Vzpomeňte si na Honeckera nebo Maďarsko.
Můj nevlastní otec vyprávěl, že jako studenti večer nasadili Leninovi v Hradci na záda batoh; mířil na západ a ráno z toho byl docela poprask.

Jenže to pořád není hrdinství. To je provokace, anonymní. Hrdinství je říct kdykoliv a kdekoliv, co si myslím. Myslím, že to Dubček dělal, byť to nikdy nebyl konfliktní člověk - nebo možná právě proto si to dovolit mohl.
Zeman není typ hrdiny. Zeman je taktik, šachista, on ví, co říct, aby dosáhl svého, ale přitom nedal záminku k facce. Jenže - zapomíná a čím dál častěji chybuje.

O zrádcích

Kdo je u mě zrádce? Husák, Biľak. A - Zeman. A to pro opoziční smlouvu, kdy zradil své voliče a podepsal "pakt o neútočení", kdy se zřekl funkce opozice a tím i demokracie.
Protože demokracie funguje jedině tam, kde je silná opozice. A nefunguje tam, kde opozice nemá žádnou váhu, tj. tam, kde si šéfové stran diktují, jak bude celá strana nebo dokonce koalice stran bude hlasovat, kde není pluralita názorů nebo kde snad ani nejsou názory žádné (dříve KSČ, dnes ODS, ČSSD).
Ale dejme tomu, že to je vždy věc názoru a úhlu pohledu.

Jsem trochu utahaný, nechce se mi to po sobě číst, tak se příp. omlouvám za "slátaninost" :-)

úterý 16. července 2013

Politická a ústavní krize ČR, stav 16. 7. 2013

Tak uplácet se u nás smí, to jsem nevěděl. A jo, poslanci smí uplácet a smí být upláceni, my ne ... holt nemáme tu správnou imunitu.
Možná občanům nezbude, než třeba posílat desetikačku největším obhájcům korupce s komentářem "úplatek" ... pak nás všechny zavřou a bude to.

Stejně je ale něco špatně - od kdy je porušení Ústavy chráněno imunitou?! Jdu zase číst Ústavu - Zaorálek tvrdí, že imunita se vztahuje na projevy poslance. Přičemž NS míní, že projevem se myslí jakýkoliv projev chování, nikoliv obsah proslovu.
Tak jako tak by ale pak měl Ištván pravdu - projevy (ať už jakékoliv) mimo Sněmovnu by imunitou chráněny nebyly. :-)

Na místě Kalouska a spol. bych hodně brzdil ... i když ... ono jim vlastně nic nehrozí, horší preference už mít nebudou, a kdo je slyšet, má aspoň nějaké voliče ...

To je špíny ...

  • ČSSD se zviditelňuje - snadno, dokonce jí stačí pravda. Pořád je třeba pamatovat na to, že je to jen důsledek situace, ne že by snad ČSSD byla stranou poctivců.
  • KSČM - viz ČSSD, jen v této pozici má větší praxi za posledních cca 20 let.
  • ODS a TOP09 - demagogie, lži, kličkování, útoky na ostatní, všechny, kdo "nejdou s námi".
  • LIDEM a VV - boj o přežití, spojíme se na oko s kýmkoliv, pokud přežijeme.
  • Alternativy? Nikdo je k rozhovorům nezve, a toho si všimněte, to je velmi zásadní věc. Naši politikové a naše média nestojí o změnu větší, než je změna poměru stranických křesel.

A co vy?

pondělí 15. července 2013

Politická krize ČR, stav 15.7.2013

No, shrňme si to. Přímá volba se silným mandátem prezidenta se líbila "koalici" s předpokladem, že vyhraje Fischer nebo Schwarzenberg. Pak by měla ještě snazší změny v právním systému, než kdy měli s Klausem. Jenže Zeman jim udělal čáru přes rozpočet - a jako by to nestačilo, ještě "ta drobnost" s korupcí a zneužíváním ...

Teď najednou TOP09 prostřednictvím pana Polčáka uznale pokyvuje hlavou, když se komunisté kasají, že při změně Ústavy ohledně přímé volby "říkali a připomínkovali a nikdo je neposlouchal".
(Bože, proč zase "komanči" musí mít pravdu ...?!)

A komunisti takticky opět bodují - když se dva perou, třetí se směje - zatímco koalice a ČSSD "licitují" a ukazují prstem, oni čekají a tváří se ohromně seriózně a poctivě. Není divu, že je pak lidi pořád ještě volí ... po sametovce se říkávalo, že úspěch KSČ(M) ve volbách měří neúspěšnost demokratických stran. Tedy, tou dobou jim ještě kousek ubírala ještě SPR-RSČ.

Myslím, že problém není v Ústavě. Problém je v korupci a lpění na poslaneckých místech. To nemá nic společného s demokracií, to, co předvádí koalice, je pravý opak demokracie.
Samozřejmě, že pokud by poslanci Sněmovnu rozpustili a Zeman odkládal volby, občané by se připojili v odporu vůči prezidentovi - ten by tak ztratil veškerou popularitu a SPOZ by si ve volbách ani neškrtla. Ale o to právě vůbec koalici nejde. Jde o to, že ať budou volby odložené nebo předčasné, byla odstavena od moci a po volbách to bude ještě horší. Někteří poslaci se prostě se svými posty rozloučí.

Situaci sleduji už od začátku téhle krize; vlastně, počínaje volbou prezidenta. Pokud tu je něco podobné roku 1948, je to rétorika - ale nikoliv komunistů, nýbrž koaliční. Téměř každá druhá věta by se dala logicky vyvrátit, doložit důkazy. Lži, demagogie, výmluvy, ...
Žijeme ale v jiné době a situace je jiná. Nezjednodušujme si jí naivním přirovnáváním k době úplně jiné.

Ještě jeden dnešní bod:
1) Nečas potvrdil vztah s Nagyovou.
2) Soud projednává zveřejnění velmi vysokých odměn Nagyové.

V demokratické zemi s dobrou vládou by už toto samo o sobě znamenalo konec premiéra. U nás muselo následovat mnohem víc - a ani pak politikové nesklopí hlavu a nevyprovokují předčasné volby. Koalice promeškala vhodnou chvíli distancovat se od všech zkorumpovaných a nevěrných a postavit se k situaci čelem. Místo toho bojuje o každý "milimetr moci" a oddaluje fiasko - které se ale čím dál víc prohlubuje.
Jediné, co ho může zvrátit, je nevydařená vláda Rusnokova a příp. lež Zemanova o tom, že budou předčasné volby. Jenže zatím to na nic takového nevypadá.
Pokud hodlá koalice zablokovat vládě peníze, jak psaly některé dnešní noviny, opět sabotuje svůj vlastní výsledek.

A pak je tu jedna "konspirační" varianta - možná ODS chce předat moc levici, a tak dělá to, co jí co nejvíc pomůže, i kdyby byla levice sebehloupější.

neděle 2. června 2013

O povodních, vzdělání a mávání motýlích křídel


Tuhle jsme řešili v hospodě, co udělá např. zvýšení prům. roční teploty o 2°C nad Evropou. Nebo jinde. Kamarád mi nevěřil, že se z toho může stát neřešitelný problém.

No, máme povodně, z pohledu přírody "drobnost", "normálka" ... jak asi dopadne letošní úroda obilí je asi zbytečné se ptát. I když, možná ještě dobře, v červnu/enci by to asi bylo horší.

Že prý chemtrails. Možná. Ale měl bych méně konspirační variantu.

Co se asi děje s prouděním vzduchu, když Čína vydává do ovzduší mnohem více energie než dřív? A my nejsme pozadu ...
Před 50 lety se v našich městech složení vzduchu postupně stávalo neúnosným díky koncentrace prachu a plynů, často jedovatých. Teď je situace opět jiná a míň patrná - nikdo se nedusí - myslím, že problémem začíná být ohřívání vzduchu. Zákon zachování energie stále platí, takže cokoliv elektrárny, teplárny, fabriky, auta, domácí kotle atd. vyrobí, je vyzářeno z největší části do vzduchu, ať už přes vzduch přímo, vodu, nebo kovové součástky ...

Ekosystémům nerozumíme. Dodnes nevíme, co ohřátí mraků nad jednou oblastní způsobí o několik dnů nebo týdnů později v úplně jiné části světa. Někdy nic, někdy tornáda. Hrajou roli určitě teplota a tlak atmosféry v tom či onom místě, poloha Země vůči Slunci, současná dynamika proudů větru i oceánů, teplota povrchu Země v té či oné oblasti, zalesnění a zatravnění, prašnost, vlhkost vzduchu, chemické složení vzduchu, vlastnosti vrstev atmosféry... tohle je halda proměnných s ne úplně známými vazbami ...

My nevíme. Ale jako děti, dokud se pořádně neopaříme, nedáme si pokoj ...

Já tvrdím, že i nečekaně velká změna klimatu může přijít velice rychle. Kterým směrem ta změna může jít, netuším. Asi jako když máte silně špinavou svíčku v motoru, do poslední chvíle nevíte, jestli se po pár cyklech pročistí a spálí usazeniny, nebo se dalším příchozím palivem dorazí a už nikdy zapalovat nebude.

Dnešní vzdělání - ekologicky myslící lidé většinou nemají rádi matematiku. Matematici se pro změnu málokdy zajímají o přírodu. V principu stejný problém se vzděláním jako u ekonomů - ti taky matematice moc nedají.

Pořád si říkám, kdy nějaká osvícená škola vytvoří nějaký vysoce náročný a ceněný obor nebo obory, která by dokázaly špičkové matematiky ponořit do těchto i jiných problémů. Je tu obrovský prostor na objevy ... ;-)

pondělí 4. března 2013

Něco málo o SSL (HTTPS)

Jen malá poznámka ohledně dnešní zdlouhavé a otravné a frustrující zkušenosti s HTTPS, SoapUI a AS WebLogic. Prostě se dá říct, že nastávaly dvě možnosti:
  • handshake failed
  • HTTP 403, Permission Denied.

HTTPS a WS-Security

S čím jsem ale dosud neměl zkušenost, je WS-Security; ještě dopoledne jsem si myslel, že šifrování SOAP komunikace je prostě dílo HTTPS. Během dne jsem pomalu začínal chápat, že jsem vedle jak ta jedle.
Zatímco HTTPS (HTTP over TLS/SSL) šifruje veškerou komunikaci, WS-Security používá obyčejné HTTP (nebo i HTTPS) a šifruje se jen payload (tj. data v SOAP) - pro představu, uvidíte něco takového (namespaces jsem umazal a trochu to naformátoval):

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
  <S:Header>
    <wsse:Security>
      <xenc:ReferenceList>
        <xenc:DataReference URI="#ED-1"/>
      </xenc:ReferenceList>
    </wsse:Security>
  </S:Header>
  <S:Body>

    <xenc:EncryptedData Id="ED-1" Type="http://www.w3.org/2001/04/xmlenc#Content">
      <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
      <ds:KeyInfo>
        <wsse:SecurityTokenReference wsse11:TokenType="http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey">
          <wsse:Reference URI="#null"/>
        </wsse:SecurityTokenReference>
      </ds:KeyInfo>
      <xenc:CipherData>
        <xenc:CipherValue>[zašifrovaná data v Base64]</xenc:CipherValue>
      </xenc:CipherData>
    </xenc:EncryptedData>
  </S:Body>
</S:Envelope>

SoapUI

Návodem se zdržovat nebudu, najdete jich na internetu hromadu.
Nastavení SoapUI ani jeho dokumentace navíc vůbec nepočítá s lidskou naivitou, a tak velká část blogů a fór radí neúplné nesmysly na podobně neúplné otázky. Člověk pak ze zoufalství všude nastavuje keystore, všude nastavuje klíče, certifikáty, prostě klasický shotgun debugging, který ale k cíli nevede.
SoapUI mi tedy rozhodně s řešením nepomohlo, neb navíc vytrvale odmítalo vzít na vědomí nastavení -Djavax.net.debug=all a v logu nebylo stále nic než jen tříslovné chybové hlášení.
Jen aby bylo jasno - k nastavení HTTPS stačí jen otevřít globální nastavení SoapUI, tj. File - Preferences - SSL Settings, nastavit keystore a jeho heslo - hotovo. Nezapomeňte nastavení uložit, což má SoapUI taky celkem nepřirozeně jako další položku menu.
Všechna ostatní nastavení v projektu (Outgoing/Incoming keystore, Encryption, atd.) se týkají WS-Security a pokud vám jde jen o HTTPS, můžete je ignorovat.

OpenSSL

Po šesti hodinách střílení z brokovnice jste rádi, že jste se nezastřelili sami. Přišel čas zapnout mozek. Dobrá, zkusíme to přes OpenSSL, blbé SoapUI!
Vyexportujete si klíče i všechny certifikáty z JKS do PEM souborů. Spustíte OpenSSL a postupně mu nasázíte všechny argumenty - klíč, klientský certifikát, důvěryhodné certifikáty. Vypnete ověření hostname i serverového certifikátu, pro všechny případy. A - ono to funguje! Blbé SoapUI!!! No počkat, ale něco tu nehraje ...

Meanwhile ...

Moje panika nakazila i místní. Někteří také stříleli z brokovnic, někteří ale zavětřili, že tu opravdu něco nehraje. Všechno jsem dělal dobře (jeden znal i SoapUI, byť také úplně nerozuměl kouzlům WS-Security, ale věděl, že to mám všechno vyházet. Nepomohlo to, ale budiž.
Mezitím mi ale server začal odpovídat jinak, namísto věčného HTTP 403 - tentokrát na žádné HTTP nedošlo a přišlo rovnou "Handshake failed: Bad certificate."
Asi hodinu mi trvalo, než mi došlo, že server mluví o mém certifikátu, který mi místní autorita s pomocí Windows bezmyšlenkovitě podepsala a já si bláhově myslel, že když to funguje přes OpenSSL, musí být problém v nastavení SoapUI.

Pointa

Když moje největší posila (toho člověka jsem začal mít rád, neb mě citelně táhl správným směrem) už asi počtvrté přišla - a kdesi mezi jejími větami jsem zachytil slovo "Extension" ... svitlo mi. Jen jsem nevěděl, jak se vlastně Extensions k certifikátům přidávají ... to už teď taky vím: dokumentace keytool

Kdybyste náhodou zařizovali klíč a klientský certifikát pro SSL (HTTPS) a divili se, proč to pořád končí handshake failed, zatímco přes OpenSSL, kterému dáte privátní klíč (PEM), klientský certifikát (PEM) a ca-certs (další PEM), to chodí ... Váš klientský certifikát postrádá Extensions, čili schválená použití certifikátu, který pak tím pádem není možno použít pro šifrování ani autentizaci.
Extensions k certifikátu generujete s žádostí o podpis, příp. je tam může přihodit i podepisující, soudě podle dokumentace. Např. šifrování, dešifrování, podpis ... Každá Extension má své vlastní OID, ostatně viz parametr -ext v dokumentaci keytool a např. MSDN: Certificate Extensions

Závěrem budiž konstatováno, že SoapUI blbé není.

Zamyšlení

Shodou okolností řeším problém s HTTPS - stařičký CISCO loadbalancer mu totiž nerozumí, tudíž nemůže balancovat. Jen mě tak napadlo, že s použitím WS-Security se nějaké HTTPS vůbec nemusí řešit.
Jenže - u HTTPS je komplikací i samotné sledování komunikace, tj. řekl bych, že je co se týče bezpečnosti o řád jinde.
Na druhou stranu, každá proxy potřebuje požadavek rozšifrovat, než ho pošle dál. To by u HTTP a WS-Security nemusela.
A zase ... když bude proxy s loadbalancerem v cestě jediná, resp. do cesty se strčí Apache, který komunikaci na vstupu do uzavřené části zbaví šifrování,  nač řešit WS-Security. Tu bych řešil v případě nějaké ohromné infrastruktury, do které přistupuje kde kdo ...

Nebo se pletu?





pátek 1. března 2013

Když prohlížeče žerou paměť ...

Používám Kubuntu 12.10, momentálně jádro 3.5.0-26-generic #42-Ubuntu, paměti mám 8GB. Browsery jsou značně hladové, každý má své výhody i nevýhody ...

Hint: CTRL+ESC a pravé talčítko myši nad procesem a "Podrobné informace o paměti" umí zobrazit opravdu pěkný výpis, jak se věci mají.

Opera

Dvanáctka je prostě hladová. I když ... mám v ní otevřeno asi 50 záložek, tak se nemůžu divit. Včera mě už ale dožralo, že zabírá kolem 1,7GB.
Hint: po odinstalování AdBlock nárok klesnul k 1,1GB. Ok, při počtu záložek s tím můžu žít.

Chromium

Jeho 17 (proč tolik?) procesů žralo celkem nějakých 1,1GB. Přitom v něm běží 8 záložek, čili není divu, že se mi to vůbec nelíbilo.
Hint: do spouštěče jsem přihodil --memory-model=low a jsem na cca 500MB.

Firefox

Ten jediný se asi chová normálně ohledně paměti - i se všemi pluginy a asi  20 záložkami se drží těsně pod 600MB. Jen pro info - mezi pluginy jsou i AdBlockPlus, DownThemAll, FireFTP, FlashGot.

A proč který browser používám, to už je na jiné téma - každopádně teď mi konečně zbývá i nějaká paměť pro jiné procesy, včera to už bylo se swapem k vzteku ...

úterý 12. února 2013

Všechno vás sere?!

Tuhle mediální autority prohlašovaly, jak ten či onen jest strůjcem "blbé nálady", jak tihle a tamti za ní můžou a hlavně ti věční kritici, rejpalové! Tohle mne trochu pobuřuje, pokusím se shrnout proč.

Ta zlá hloupá proklatá EU!

Podle vás pořád za něco někdo může, ničí, kazí, ale co nejhůř, kazí vám tím náladu. Napadlo vás, že si jí kazíte sami? Všímáte si, jak sami uvažujete? Uvědomujete si, že všechny ty EU, USA, Rusko, zaměstnavatele, úředníky, popeláře, řemeslníky, řidiče, cyklisty, cikány a tak dále, považujete zbytečně za nepřítele, někoho, kdo vám určitě chce uškodit?
Zamyslete se nad sebou - udělal vám ten "nepřítel" opravdu něco? Pokud na něj zaútočíte fyzicky, bude to oprávněné? Většinou nejspíš budete nuceni odpovědět, že ne.
Potom to ale není nepřítel a nemáte se přece proč vztekat!

Zajímá vás, co se děje?

To je trochu o něčem jiném než na všechno nadávat. Čtete, hledejte podrobnější informace, rozlišujte seriózní a neseriózní zdroje, staňte se kritikem, nikoliv křiklounem z davu. I neseriózní zdroj může být dobrý k nadhození dalšího směru, kterým je vhodné se zabývat.
Ono je totiž opravdových kritiků dnes málo, novináři již dlouho neplní svou funkci - cíl je noviny prodat, ne příliš zaměstnávat čtenáře přemýšlením, to ho totiž unavuje a při tom všem stresu čtení vzdá.
Vy pak vybočíte z davu "čtenářů novin a diváků televizních zpráv", protože budete schopní daleko víc věcem daleko víc do hloubky i šíře porozumět, budete mít představu, jak do sebe zapadají - a - nikdy toho nebudete vědět dost, s tím je také zapotřebí počítat.
Někteří z vás budou navíc určitě dost výřeční na to, aby takový zájem probudili i ve svém okolí.
Doporučuji ještě jednu věc - rozlišujte diskuzi a hádku. Diskutovat je zdravé. Není nutné mít stejný názor, ale měli bychom se učit nacházet fungující řešení, včetně uvědomění si jejich nevýhod (a hledat jejich řešení).

Ti politici ...

A dost! Pokud chcete něco změnit, zajímejte se o věci. Až o nich budete něco vědět, mluvte o nich, vyjadřujte se k problémům, vydejte svoje vědomosti, pokuste se o změnu k lepšímu.
Naše společnost má velký problém - je tu spousta vysokoškoláků, umí spoustu věcí, ale čtou bulvární zprávičky a smějí se hloupým a nízkým vtipům. Dá se od takových lidí očekávat nějaká kvalita vědomostí? Jak se asi vyjadřují k aktuálním tématům? Bohužel, stejně - povrchně bez znalosti i zájmu o znalosti.

Psycho

Myslím si, že to jde ruku v ruce - na jednu stranu je společnost frustrována zprávičkami o "hloupých" úřednících, státech, šikanách obyvatel, zvířátek, atd., na druhou se společnost potřebuje z frustrace vybít. A tak se směje Darwinovým cenám, fotomontážím, hloupostem, které jsou hrubou záplatou na stejně hrubý strach z toho, co ještě přijde. Obojí je ale hrubost a i my jsme k sobě hrubí.
Myslím si, že bychom sami v sobě měli tenhle přístup změnit. Těšit se na věci budoucí, lidi kolem. Kritiku brát jako návrh na zlepšení, ne jako útok, provokující protiútok.
Znáte ještě ta slova? Spravedlivost, poctivost, přátelství, těšit se, mít rád, dobro, pravda a láska?
Já vím, že se u jejich čtení uculujete, v hlavě zní něco o naivitě, ale - pozor - to je právě chyba, v tom není ani kousek naivity! Přečtěte si ta slova ještě jednou, a zkuste si namluvit, že jsou to "blbosti", "kraviny" - možná zjistíte, že se vám tohle označení nějak vnitřně nelíbí a máte naopak chuť ta slova bránit. Pak je tedy braňte - sami pro sebe, pro dobro.

Příběh - konec aplikace

Neuvěřitelný příběh jedné aplikace, kde malý tým došel k tomu, že  nemá síly na další vývoj ani údržbu a že není vyhovující ani žádná jiná varianta.
Tým udělal poslední věc - vrátil peníze za poslední rok a nabídl pomoc s přechodem ke konkurenci. Drtivá většina zákazníků poděkovala, vyjádřila lítost, ale nezačala se vztekat. Pro mě je to dnes jev nevídaný a je to ukázka toho, že věci se dají vyřešit lépe a snáz v klidu a míru.
http://unicornfree.com/2013/why-we-shut-down-charm-on-the-eve-of-public-launch-at-48kyear-and-growing

sobota 26. ledna 2013

Lid si zvolil prezidenta, co dál?

Úvodem

V prvním kole jsem volil p. Dienstbiera. Faktické důvody byly následující:
  • hrubá shoda v názorech
  • schopnost a ochota říkat, co si myslí, a reagovat v diskuzi
  • dosavadní morálka
  • slabá podpora ČSSD (zesílila až pár týdnů před volbami, možná ze strachu před Zemanem); můj pocit dluhodobě je, že vedení by se Dienstbiera nejradši taky nějak zbavilo.
Samozřejmě i u něj mám pár otazníků a budu ho nadále sledovat. Například financování ČSSD - odkud ale pochází tyto peníze, čili kdo financuje ČSSD?

Ve druhém kole jsem nevolil. Rozhodl jsem se, že nehodlám volit "menší zlo", neboť je pořád zlem. Je mi jasné, že ve výsledku jsem tím nevolil pro nikoho ani proti nikomu a můj hlas se rozplynul v pouhé "nevím" - nicméně osobně to člověk vnímá přeci jen trochu jinak.

Suma ... 

Vypadá to, že ve volbách je rozhodnuto a prezidentem bude Miloš Zeman. Člověk, který má přehled, vzdělání, zkušenosti, ale taky je obklopen řadou přinejmenším podezřelých osobností, ze kterých člověk nemá nejlepší pocit a jeho vyjadřování je často poněkud přehnaně přímé a neomalené. Člověk, který spoluzavedl totalitní opoziční smlouvu,
Prohrál člověk, který má též obstojný přehled, má silné finanční zázemí, ale který prosazuje věci, které ještě před volbami vadily i velké části jeho podporovatelů, a který byl vydatně propagován stylem, který připomínal spíš reklamní kampaň.

Co mi vadilo

Argumenty autoritou

"Argument autoritou" se obecně považuje za jeden z argumentačních faulů. Faulující se tak odvolává na názor někoho jiného tak, jakoby názor toho jiného byl faktickou výhodou pro jeho vlastní názor.
Konkrétně před volbami šlo o všelijaká zdůrazňování podpory, že Fischer a Franz podporují Zemana, že Svěrák a Fischerův tým (ale Fischer ne) podporují Schwarzenberga ...
Tím u mě malinko zabodoval pan Franz, jenž se právě vůči tomuto ohradil - pro mě to značí, že uvažuje demokraticky a vyžaduje, aby jeho názor nebyl vystavován nad názory jiných.
Pro změnu pan Vetchý sice spam nejspíš osobně neposílal, ale jelikož se nijak neozval, nejspíš byl spam rozesílán s jeho souhlasem. PEN klub dokonce vypustil stanovisko bez respektu k různým názorům svých členů, stejně tak i další organizace.
Jedna věc je, když osoba řekne svůj názor. Druhá ale je, když tento názor někdo vezme a zdůrazňuje ho tak, jako kdyby jiné názory jiných lidí měly menší váhu. Je snad Schwarzenberg lepší tím, že ho někdo volí? Ne!

Reklama

Hromady klišé, často v rozporu s dřívějším chování politika. Proč žádný z bohatě sponzorovaných politiků "okázale" a "populisticky" nevěnoval peníze místo billboardů a reklam nějakému hospicu, nemocnici? Já vím, ono se to dnes nenosí. Jen tupé výkřiky hesel a frází ...
Schránku i můj telefon naštěstí nechali na pokoji ...

Fankluby

Proboha, lidi, chovejte se jako svéprávní! Ani Zeman ani Schwarzenberg nejsou lidi s čistým štítem, natož svědomím! Vy se ale chováte, jako kdyby právě jeden, a to ten váš vyvolený, byl spasitelem národa. Bučíte, opakujete, pokřikujete, ale nemyslíte.
Měli byste si předně uvědomit, že vy jste národ. A nespasí vás žádný prezident, musíte na tom zapracovat sami. Začněte se svou vlastní morálkou (ale to jste určitě nechtěli slyšet, že?).
Mimochodem, Schwarzenberg rozhodně není pankáč. Proberte se!

Co mi nevadilo

Slovní útoky a hádky kandidátů

I když z toho bylo hodně lidí rozladěných, zklamaných či přímo otrávených, myslím si, že to sem patřilo. Byť obzvlášť Zemanovy formulace byly někdy daleko za hranicí slušnosti, byly na místě - díky jeho "politické nekorektnosti" se Schwarzenberg musel nějak k těmto otázkám vyjádřit - nebo začít kličkovat a mlžit, což neudělal a situaci zvládl. Totéž fungovalo i naopak.
Myslím si, že pokud by tato témata nepřišla na přetřes, krom nižší volební účasti (hádky táhnou) by stejná témata byla součástí hádek "fanklubů" až do úplného zblbnutí a překroucení kde čeho.

Nějak bude ...

A nemohli by prezidentovat oba?

Tahle ironická švejkovina mě napadla asi před týdnem, když jsem si tak přemýšlel nad oběma kandidáty. Možná by to fungovalo, dokonce bych řekl, že jakkoliv se to nezdá, Zeman se Schwarzenbergem si nakonec dobře rozumí - všimněte si, jak na sebe reagují, žádná hysterie, žádné koktání, útěky. Krátké zamyšlení, přímá reakce a jedeme dál.
Navíc mám trochu pocit, že se i doplňují. Zeman kritickým myšlením a schopností "trefit hřebíček na hlavičku", Schwarzenberg schopností s ledovým klidem a nenuceným a neurážlivým přístupem vytyčit hranici, kam oponenta obratem pošle.

Demokracie a opozice

Moudrost říká, že demokracie funguje jen pokud je silná opozice. Pokud už není menšinová vláda, měla by být i tak vláda pod neustálou kritkou a kontrolou. Od první dohody s opozicí, kterou spáchali Klaus a Zeman v roce 1996, se nám demokracie zvrhla v něco nepřijatelného. Tehdy to ještě trochu fungovalo a nakonec Klausův kabinet zkrachoval - a handlování s křesly vystřídalo uzavření Opoziční smlouvy, kterou skončila veškerá konstruktivní kritika, vystřídána pouhým bojem o moc a křesla, pletichařením a intrikářstvím, sloužícími k bohapustému boji o kořist finanční pro strany, jejich sponzory a samozřejmě jednotlivce.
Když jsem si o této historii nedávno četl a opakoval si fakta, trochu se mi zastesklo i po těch Republikánech, tehdy zatracovaných a považovaných za napůl šílené. Pořád si vybavuji taky svobodné volby z první půle 90. let, spousty stran a názorů, ano, taky magorů, ...

No, takže do současnosti - pokud už máme vlády většinové a tudíž bezmocnou opozici parlamentní, potřebujeme to nějak dohnat. Tak uvidíme, jestli nám ten prezident Zeman bude k něčemu dobrý. Obzvlášť mám pochybnost, pokud příští vládu sestaví ČSSD (s KSČM? ODS? TOP09?) - jo kdyby to zkusila sama a ostatní by se snažili oponovat s vzájemným respektem jednotlivců ... no, pro dnešek konec pohádek o demokracii.
Nějak bylo, nějak bude. Korupce zůstane, daně budeme taky platit dál, ... a zítra je neděle.

sobota 19. ledna 2013

SGES2 a nové JAX-WS a JPA2

Pěkně to tu mají napsané, pěkně. A vždycky to má háček. No, našel jsem trochu jinou cestičku. Java si vždycky hledá takové properties soubory, ve kterých má napsanou default implemetaci nějakého API.
Ale asi bych měl začít od začátku - problém byl takový: Naučili jsme SGES2.1.1 novým kouskům tak, že jsme v adresáři lib udělali pár změn (AS, ne domény!):
  1. Souborům toplink-essentials-agent.jar, webservices-rt.jar, webservices-tools.jar, endorsed/activation.jar a endorsed/webservices-api.jar jsme přihodili příponu .Orig - to aby je aplikáč nenačítal, ale abychom měli nějakou stopu po tom, že jsme tu prováděli "psí kusy".
    Ještě malá poznámka - toplink-essentials.jar nepřejmenováváme, jelikož ho potřebuje interní ejb timer a nám konec konců nevadí, protože JPA providera si vybírá každá aplikace dle svého gusta v persistence.xml.
    cd ${appserv.home}
    mv ./lib/toplink-essentials-agent.jar ./lib/toplink-essentials-agent.jar.Orig
    mv ./lib/webservices-rt.jar ./lib/webservices-rt.jar.Orig
    mv ./lib/webservices-tools.jar ./lib/webservices-tools.jar.Orig
    mv ./lib/endorsed/activation.jar ./lib/endorsed/activation.jar.Orig
    mv ./lib/endorsed/webservices-api.jar ./lib/endorsed/webservices-api.jar.Orig
    
  2. Do adresáře lib nakopírujeme nové soubory. K dostání jsou obvykle na stránkách autorů nebo v různých maven repositories. Co přesně musíte stáhnout se může lišit podle toho, jak moc se vzdálíte od staré implementace, ale každopádně bude třeba pokrýt to, co plnily přejmenované knihovny. Náš seznam je následující - Javě je jedno, jak se soubory jmenují, podstatné je, že mají příponu .jar, tudíž jsme ponechali i čísla verzí:
    webservices-rt-2.2.jar
    webservices-tools-2.2.jar
    eclipselink-2.3.2.jar
    endorsed/javax.persistence-2.0.3.jar
    endorsed/webservices-api-2.2.jar
  3. To jsem napsal v podstatě totéž, co mají na odkazu v začátku. Jenže při prvním nasazení aplikace zjistíte, že pokud v persistence.xml vyplníte element <class>, aplikace vám neprojde validací!!!
    Háček je totiž v tom, že AS se řídí různými properties, poházenými po classpath v knihovnách v adresáři META-INF/services. Ty mu říkají "default" implementace API, které on sám použije; název souboru je v našem případě javax.persistence.spi.PersistenceProvider.properties
    Protože jsme ale nechali na classpath TopLink, má AS na výběr mezi TopLinkem a EclipseLinkem. Který zvolí, záleží na tom, který soubor najde dřív - čili nejspíš TopLink, protože při startu pravděpodobně bude nahazovat EjbTimer.
  4. Slova "pravděpodobně" a "nejspíš" se mi nelíbí, ale řešení je snadné - do aplikace si ten property soubor přidejte taky :-)
    A potom zapomeňte na pokusy dávat knihovny na classpath-prefix, což navrhují v onom odkazu - zkoušel jsem to, nefunguje to.

A ještě troška deziluze - zapomeňte na to, že vám SGES2 kdy bude dělat JEE6 server. Takovou certifikací neprošel a nikdy neprojde, prostě taková funkcionalita kontejneru v něm není. Nikdy nebude umět pracovat s anotacemi podle JEE6, prostě protože se musí pevně držet JEE5.
JEE5 Aplikace sice bude bezpečně fungovat na JEE6 serveru, ale to pořád neznamená, že vnitřně JEE6 server obsahuje JEE5 server. Toto nejsou Windows!
Důvody zpětné kompatibility jsou jen anotace a API - vaše JEE5 aplikace jimi deklaruje nějaké požadavky (na zdroje, transakce, atd.), ale vůbec tím neříká, jak je server má splnit (pokud ovšem nepoužívá "deprecated" atributy anotací nebo něco neloví přes InitialContext).
Zkrátka, pokud chcete JEE6, musíte přejít na nějaký certifikovaný  JEE6 aplikáč. Třeba Glassfish3, ať nechodíte daleko.

Tenhle návod vedl jen k tomu, abychom mohli použít např. Criteria API, nové JAX-WS a pár dalších novinek.

EDIT: Jeden příklad toho, co nebude fungovat - SGES používá tuto implementaci EntityManager wrapperu - ano, tušíte správně, metodu z JPA2 díky němu nevyvoláte, čili například nemůžete použít TypedQuery.

pondělí 17. prosince 2012

Implementace webové služby a anotace

Typicky máte WSDL, ponastavujete si jaxws-maven-plugin, binding, a vygenerujete si javovské interface (a taky klienta služby, ale toho si tu všímat nebudu). A co dál? Implementace rozhraní je už na vás. Co služba bude dělat, tím se tu taky nebudu zabývat. Co chvíli se ale zamotám do atributů anotace @WebService, nemůžu se trefit na @HandlerChain, nebo zapomenu říct, že chci automatickou  validaci požadavků i odpovědí. Jak na to?
Mé implementace služeb mají nakonec ve výsledku obvykle čtyři anotace, jsou kompatibilní s JEE5 i JEE6 a Glassfish je vypisuje v seznamu webových služeb vystavených na instanci - k tomu navíc aplikáč (alespoň SGES 2.1.1) potřebuje sun-ejb.xml, u Glassfish 3 si nejsem jist, jestli nějaké XML vůbec je zapotřebí.

Stateless

@Stateless(name = "Hell", mappedName = "ejb/Hell")
- name odpovídá ejb-name v sun-ejb.xml; slouží k propojení bean přes její název napříč komponentou. - mappedName je globální identifikátor bean přes JNDI. To je trochu kámen úrazu mezi JEE5 a JEE6, jelikož v JEE6 došlo na standradizaci JNDI názvů, ale u JEE5 to dělá každý aplikáč jinak.

SchemaValidation

@SchemaValidation
Tato anotace způsobí, že pokud klient pošle nevalidní SOAP dotaz, vrátí mu AS jen SoapFault s "client error". Ovšem je to dvojsečné a stejně tak pokud v implementaci služby vytvoříte odpověď, která neprojde validací, klient dostane opět SoapFault, ale se "server error" a HTTP kódem 500. To by se samozřejmě nikdy nemělo stát a je to zodpovědnost autora implementace služby.
Atributem lze také říct, že chceme použít jinou než default implementaci validace.
Poznámka pod čarou - na klienta anotace nemá vůbec žádný vliv.

HandlerChain

@HandlerChain(file="generated/HellPort_handler.xml")
jaxws-maven-plugin, resp. wsimport, umí vygenerovat i tento soubor - dělá jeden zvlášť pro službu i port, stačí dodat příslušné elementy do xjb souboru používaného pro custom binding. Navíc přidá i tuto anotaci k rozhraní i klientovi, jenže má to háček - cesta k souboru se generuje relativně k souboru třídy a proto jí musíte zopakovat (pokud tedy nejste ve stejném balíku, což by pro změnu mohlo dopadnout nepěkně).
Druhá možnost je všechny handlery přidávat programově, pokud ovšem považujete určitý handler za neoddělitelnou vlastnost služby, se kterou si navíc nechcete "plevelit" kód implementace služby, toto je vhodný způsob. 
U mých služeb takto konfiguruji handler pro zalogování SOAP požadavku i odpovědi; téměř téhož mohu docílit i nastavením JVM option, leč bez možnosti logování vypínat nebo směrovat za běhu aplikace. O tom zase jindy ;-)

WebService

@WebService(
  serviceName = "HellService",
  portName="HellPort",
  targetNamespace = "urn:cz:dmatej:services:Hell",
  endpointInterface = "cz.dmatej.ws.generated.HellPort",
  wsdlLocation = "META-INF/wsdl/Hell.wsdl"
)
Na tuhle anotaci se mrkneme podrobněji, ať už nikoho nebolí hlava :-)

name

- tenhle atribut chybí, protože v JEE5 se <port-component-name> v sun-ejb-xml váže na název implementující třídy. Pokud atribut přeci jen přidáte a vyplníte i shodné port-component-name, Glassfish3 s tím nemá problém a vystaví službu pod novým názvem. Problém ale přijde se SGES2, kde sice nasazení projde, ale do logu hlásí WARNING se stacktrace, že atribut name se vylučuje s atributem endpointInterface.
- otázkou pro mě je, jestli je to drobná chybička SGES, nebo požadovaná vlastnost JEE5 (?). Buď jak buď, zřejmě je lepší věci nekomplikovat a implementaci služby pojmenovat, jak se sluší.

serviceName

- musí odpovídat tagu <service name=... ve WSDL
- pokud neodpovídá, glassfish upozorní, že ve WSDL jsou jiné služby ale takováhle ne, a deploy selže.

portName

- musí odpovídat tagu <port name=... ve WSDL
- pokud neodpovídá, glassfish několikrát do logu zařve, že "... could not get binding from WSDL! service ...", a deploy selže.

targetNamespace

- implicitně se generuje z názvu balíku a třídy (a s http:// na začátku), ale musí odpovídat WSDL. 
- pokud wsdlLocation nenastavíte, nasazení bude nejspíš úspěšné, jenže žádný klient se se službou neodmluví - namespaces jsou směrodatné pro (un)marshalling SOAP zpráv.
- ve výsledku je tedy nejsnazší zkopírovat namespace z interface

endpointInterface

- jak říká javadoc, celý název implementovaného rozhraní
- finta je v tom, že samotná třída nemusí plně implementovat všechny metody rozhraní, k čemuž by nás Java jinak nutila. Nikdy jsem to ovšem nezkoušel ;)
- pokud chybí, Glassfish odmítne nasazení, protože nenajde mapování operací na metody.

wsdlLocation

- cesta k WSDL, přičemž za kořen se bere adresář classes (v jar). 
- pokud atribut chybí nebo soubor není nalezen, aplikáč vygeneruje svoje vlastní WSDL podle anotací.
- pozor ještě na jednu věc, WSDL musí být v podadresáři wsdl, jinak aplikáč odmítne nasazení aplikace