Až Vám zčerná obrazovka, přejděte na Linux!

Proč používat Linux

pátek 24. října 2008

Koncept Anti Tatra 903 aneb Co Je Tatrovka

Tak jsem ve včera dozvěděl o konceptu Tatry 903, jež má být designérskou hříčkou od Michala Jelínka, která byla udělána pro AutoDesign&Styling. V první chvíli jsem hltal očima všechny informace i obrázek, který byl pořízen od pravé zadní části vozu. Tento obrázek vypadá nádherně.

Pak ale přišlo rozčarování. Předek vozu je naprosto "příšerný"! Ano, auto je to nádherné, toto není tatra, to je naprosto příšerný bastl Tatry s kdovíčím. Michal Jelínek píše o inspiraci Tatrou 603, ale tuto inspiraci vidím jen zezadu, a to jenom částečně. 903 prostě není Tatrovka. Přeci jen když to srovnám s MTX V8 od náhle zesnulého Václava Krále, nemohu se ubránit dojmu, že onen Metalex je dalko tatrováčtější.

A tak jsem se rozhodl uspořádat "anketu" o to, které prvky designu či konstrukce jsou pro Tatrovky typické, které říkají: "Tak toto je Tatra!". Své názory pište do komentářů.

Copy&Paste fórek

Právě jsme na Javí konferenci řešili použitelnost JSTL SQL (lépe řečeno do jaké míry je prasárna vůbec jeho existence), když se v jednom příspěvku objevil odkaz na báječný obrázek na toto téma.

PS: Ale na druhou stranu i tento obrázek IMHO vznikl pomocí Copy&Paste :-D

úterý 14. října 2008

Šablona blogu

Delší dobu se po chvilkách (celkem pár člověkodní) snažím vydolovat z bloggeru vzhled, se kterým bych byl spokojený. No, jak bych to... asi jsem zbytečně náročný. každopádně si nic nedělejte z toho, že se tu bude visage měnit za pochodu.

úterý 7. října 2008

Gůglovský kancl

Možná si budete myslet, že chci psát o Google Office. Ee. Omylem jsem našel fotky z pobočky firmy Google. Takže až budete hledat nápady na zařízení vlastního pracoviště, určitě se podívejte sem.

Před browsdáním se pomodlete!

Už jste slyšeli o Motlitbě před spuštěním prohlížeče? Pokud ne, tak vězte, že na Slovensku už jednu mají. Oficiální. Katolickou.

pátek 26. září 2008

Smějeme se s Niklausem Wirthem

Dneska jsem reagoval na článek od Dagiho a chtěl jsem se ujistit na Wikipedii, jak se píše Niklaus Wirth. Když jsem si tak pročítal wikistať o něm, našel jsem jeho naprosto nádhernou citaci:
"Whereas Europeans generally pronounce my name the right way ('Nick-louse Veert'), Americans invariably mangle it into 'Nickel's Worth.' This is to say that Europeans call me by name, but Americans call me by value."

Při té příležitosti jsem si vzpomněl na jednu příhodu z doby, kdy Niklaus přijel na fi.muni.cz. Na večeři mu byl vykládán ftip (to, že se to v žádném případě nemůže zakládat na pravdě, je irelevantní):
Víte, kdo vymyslel název pro firmu Microsoft? Billova manželka na jejich svatební cestě na Honolulu.

Niklaus ho nepochopil. Když mu ho vysvětlili, prý zrudl až za ušima.
Z toho je vidět, že je to srandista, ale jemu vlastní inteligentní humor (něco jako Cimrmanův chemický: "H2SO8") je něco jiného než ten hospodský, byť z oblasti IT.

pátek 12. září 2008

Jeden programátorský...

Bavíja sa dva programátoři a jeden říká druhému:
"Dneskaj musím z práce skoréj, mamka má narozeniny."
Druhý: "Kolik má?"
První: "64"
Druhý: "Ja tož kulatiny ..."

A ještě přidám jeden matematický od Radoše z blogu.

úterý 2. září 2008

Talent dětí je třeba rozvíjet už od tří let

Právě jsem si přečetl článek hany Brixi shrnující a krásně popisující můj názor na výchovu dětí a rozvoj jejich talentu. Velmi podnětná je i diskuse, oboje určitě stojí za přečtení.
Mám-li to celé v krátkosti shrnout, tak budoucí úspěšnost jedince záleží kromě píle a talentu ovlivňují následující faktory:
1) Možnost rozvíjet svůj talent od útlého dětství, ideálně už od tří let.
2) Inteligence matky - a pozor, nikoli její dosažené vzdělání, ale její přirozená inteligence.
3) Cílená snaha rodičů podporovat talent dítěte. To ale znamená být schopen talent rozpoznat už u malochů.
4) Qalitní odborné vedení v kolektivní předškolní výchově, které nebude jenom o jejich hlídání, ale o dostatku podnětů a tvořivé činnosti. Nejlépe ve skupinách, ona týmová práce často násobí snahy jedince, což platí i u dětí, stejně jako možnost se s vrstevníky porovnávat a snaha vyniknout (leč ne za každou cenu).

Takže obecný rozvoj dítěte je třeba nenásilně podněcovat od mimina, talent podchytit ve třech letech, a od té doby na něm budou pracovat aktivní rodiče ve shodě s qalitním odborným vedením předškolních ústavů (o škole se ani nebavme).

A jelikož inteligence rodičů je výhodou, je třeba tuto informaci nacpat do hlavy puberťákům, protože qalitní studium podporuje rozvoj inteligence a tak sami můžou mít v budoucnu úspěšnější děti.

Na konec zbývá už jen dodat název jedné knihy od pastora Roberta Fulguma:
Všechno, co opravdu potřebuju znát, jsem se naučil v mateřské školce

pátek 29. srpna 2008

Oracle XE a openSuSE 11.0

Včera jsem dostal novou hračku - IBMku x3550 se dvěma QuadCore XEONy. Nainstaloval jsem tam 64bitové openSuSE 11.0 a pak jsem se vrhl do instalace Oracle. Momentláně vyvíjím na Oracle 10g Express Edition, takže šup na oracle.com, stáhnout RPMko s Oracle XE a šup tam s ním!

Ale ouha. Nebyla to žádná procházka růžovým sadem.

První zádrhel byl v tom, že Oracle nenabízí 64bitovou verzi. Nu což, řekl jsem si, 32bit by snad měl chodit. Prošla instalace i konfigurace pomocí /etc/init.d/oracle-xe configure (dal jsem jej na port 6060, na 8080 chci mít JBoss), databáze šla nahodit, ale na URL http://127.0.0.1:6060/apex jsem z linkse dostaval connection refused. Takže co s tím?

1) Firewall - rcSuseFirewall stop - nezabralo
2) IPadresa - links http://127.0.0.2:6060/apex ani links http://192.168.11.240:6060/apex
3) links - export DISPLAY=bilbo:0; firefox - nezabralo, firefox hazel totez

Takže přišel na řadu Google.
A)opensuse oracle express connection refused
4) našel jsem, že by to mělo být právě tím 32bitem na 64bitu. Tedy yast, Software-Software Manager, tam vybrat 32bitový pattern a Apply. Následně
/etc/init.d/oracle-xe restart; links http://127.0.0.1:6060/apex a opět totéž
5) Co kdyby to bylo portem? Všichni používají 8080... takže /etc/init.d/oracle-xe configure - smůla, already configured...
6) další link obsahoval, že sqplplus / as sysdba jim fungovalo. Testnu to a nemohl najít ORACLE_SID.
7) vzpomínám, jak se konfigurovalo prostředí - aha, oraenv - Error: dbhome cannot be find...
8) přenastavuju cestu, znova spouštím a nic, opět nenalezen. Dívám se, kde by mohl být a zjišťuju, že nikde :-(
9) po několika pokusech jsem přece našel, co jsem hledal: oracle_env.sh nemá žádný výstup, což mne zmátlo, ale less oracle_env.sh odhaluje pravou podstatu jeho fungování. Samozřejmě jsem v prvé chvíli zapomněl spustit to tečkově, takže export proměnných šel do háje, ale přece...
10)Opět sqplplus / as sysdba a tentokrát řve, že nemůže najít libaio.so.1
11)ldd sqplplus nehlásí nic chybějícího, takže to bude asi někde jinde. Zkouším se podívat do /lib a /usr/lib a ORACLE_HOME/lib a taky jsem ji nenašel.
12)rpmfind libaio našel jenom balíky pro Fedoru. Paráda.
B) opět Google: oracle libaio vrací hned na prvním místě oracle libaio. Jsou tam zdrojáky, takže je tahám.
C) během tahání zkouším oracle opensuse. Hned na prvním místě je Oracle on OpenSuse. Čtu to už potřetí, přestože tam o XE nikde ani zmínky, ale stálo to za to. Na konci, téměř neviditelně, je řádek:
Alternatively if you don't want problems in the installation of oracle 10g or 11g on openSUSE 11.0 (64bit) you can use this script doris1.1d.sh. This script will automate the setup by downloading from Yast dependencies, sorting out all the 32bit and 64bit libraries and linking where required. The purpose of this script is not to install Oracle but just to get the system ready for installation. Own risks policy applies. (root@localhost# sh doris1.1d.sh suse11 10g)

Myslel jsem, že mně vomejou.
13) Stáhnout skript a pak už jen:
root@localhost# sh doris1.1d.sh suse11 10g

rpm -e oracle-xe-univ; rpm -i oracle-xe-univ-10.2.0.1-1.0.i386.rpm

/etc/init.d/oracle-xe configure

links http://127.0.0.1:6060/apex a ejhle, už po mně chce heslo a lze se tma přihlásit!

Jaké z toho plyne poučení? Pochválen buď každý, kdo své znalosti promění do perfektně fungujícího skriptu...

neděle 17. srpna 2008

oRESTované dotazy

Nedávno do emailové konference na java.cz přišel dotaz, jak co nejlépe do RESTu nacpat různé filtry.

Zdravim konfereneciu

Zacinam s REST a zakladne principy som snad pochopil (CRUD ->
POST,GET,PUT,DELETE). Ale neviem presne ako realizovat filtrovanie
zaznamov.

Napriklad:
mam zoznam uzivatelov ktory maju polozky: age, firstName, lastName,
atd. Ak chcem nacitat vsetky zaznamy tak dam GET request na adr.
'http://adresa.server/users' vrati mi zoznam vsetkych uzivatelov. Ale ak
by som chcel filtrovat zaznamy podla kriterii napr:
firstName='James' AND lastName!='Bond' OR age>40
Akym sposobom sa dotazovat k tymto zaznamom ? Napadaju ma nasedovne
sposoby:

1) cely dotaz dat do URL:

http://adresa/users/search/v1,s1,c1,o1: ... :vn,sn,cn,o1/orderby/xyz/...

n=1..m
vn - variable, napr: 'firstName'
sn - string, napr: 'James'
cn - condition, napr. 'eg' = equals, 'gt' = greater than, ...
on - operator, napr. 'a' = AND, 'o' = OR

V tomto pripade by sa cely dotaz zapisal do URL a po zavolani GET
request by sa vratil vyfiltrovany obsah. Tento sposob mi pripada asi
najviac RESTful, ale ta url by bola asi dost dlha v niektorych
pripadoch.

2) dotaz zakodovat do XML






V tomto pripade by sa muselo XML asi poslat cez request POST alebo PUT a
nasledne spracovat, ale metody POST, PUT sluzia na ine ucely a asi to
nie je 'validne' REST riesenie.

3) nejak inak :) rad sa necham poucit ...

RM


Jsem moc rád za tento dotaz - zdá se, že s RESTem konečně začíná koketovat
více a více lidí.

Jeho problém je hned v několika omylech, které pramení z chýru kolem RESTu:
a) REST != CRUD . REST je o definici malého množství operací nad všemi
zdroji daného systému. Jako příklad uvedu HTTP operace HEAD a OPTIONS.
b) REST != HTTP . HTTP je pouze jedním z RESTových protokolů, který se typicky
používá jako transportní protokol pro jiný RESTový protokol.
c) URI nereprezentuje přesnou datovou podobu zdroje pro READ operace.
URI reprezentuje zdroj jako takový, je to tedy jeho identifikace. Každá operace může být parametrizována. Podstatne je, aby opakované READ operace na stejný zdroj vracely btť různé, ale sémanticky shodné reprezentace zdroje. Jako příklad opět uvedu onu HTTP operaci HEAD, ktera vrací pouze "metadata" zdroje.

Co z toho plyne, tedy jaké řešení navrhnout?

Pro každý typ zdroje zavést jako zdroj kolekci vsech zdroju daneho typu, na teto kolekci zavést operaci QUERY či FILTER, která bude mít logicky dva parametry:
1) URL kolekce
2) vlastní query

Pak už záleží čistě na libovůli autorově, jaký transportní protokol použije (no dobře, bude to HTTP, že? :-D ) a jak se naimplementuje (tak jo, jak se na HTTP udělá binding onoho protokolu). Pro HTTP lze použít jak query string GETové operace (ta je mimochodem také dvouparametrová, URL a QUERY_STRING, přičemž druhý parametr je nepovinný) nebo POST a query posílat v datech.

pátek 15. srpna 2008

Už mne ti Phisháci fakt iritují

Tak jsem si pravě objevil ve FireFoxu zafišované CSSko. Chvilku jsem Gůglil a našel jsem jasné vysvětlení - někdo se snaží pomocí Googlovských reklam nečistě vydělávat, když na háček nechytí vás, ale váš prohlížeč.

Doufám, že bude brzo čapnut. Víte, takový přístup k síti se mi z duše protiví.

Takže si projistotu dejte
grep -rl a0b4df006e02184c60dbf503e71c87ad /

(nebo obecněji hledat řetězec
expression(eval(unescape(

Tak možná zjistíte, že buď Vám v systému nechal tesař díru, nebo jste poskytli svůj browser jako nástroj k vylepšení něčí peněženky.

V druhém případě je dobré dát vědět adminovi serveru, odkud vám ten humus přišel.

čtvrtek 14. srpna 2008

Kouzelné slůvko

"Tati, potřeboval bych nový pevný disk do počítače. Koupíš mi ho?"
"A kouzelné slovíčko?"
"Sákryš, dneska už je všechny zaheslované..."

pátek 1. srpna 2008

WebServisování, díl první - pojem WebServisa ( Web Service )

Dneska jsem Gůglil něco o JBossu a WebServisách a narazil jsem na terminologický problém - pod pojmem Raw Service si různí lidé představují různé věci. A protože jsem si sám nebyl jist, rozhodl jsem si všechno zase oživit, nastudovat a taky o tom něco napsat. Navíc vzhledem k několika diskusím, které jsem tu na téma WebServis rozvířil a v nichž se ukázalo vzájemné nepochopení základního pojmosloví, začnu s tím vším celým tak nějak z gruntu.

Úplně na začátku musím uvést, že ač jsem příznivcem překladů termínů do češtiny, tak anglický termín Web Service překladám jako (TWikiňácky) WebServisa. Vím, že mnozí češtinofilové preferují webová služba, ale mám k tomu překladu hned několik výhrad.

Ponejprv je třeba si říci, že ani samotné slovo Web se nepřekládá, pavučina se zkrátka neujala. Proto u tohoto termínu neexistuje precedent (který se mimochodem také nepřekládá :-) ). Dále pak nepřekládáme pojem Web Server.

Přestože by se dalo říci, že Webová Služba zní pěkně hezky česky a proč to nepoužít, mám jeden velký protipříklad. Mnoho lidí používá termín Webová Služba pro označení portálu nebo funkce portálu. Například https://kontrola.isvav.cvut.cz/ , http://www.zive.cz/default.aspx?server=1&article=141698, http://www.magic-shop.cz/webove-sluzby-atcomputers-s-v-zencart. Takže aby nedošlo ke zmatení nepřítele, budu i nadále používat terminus technicus WebServisa. Může se vám to nelíbit, můžete s tím nesouhlasit... ale to je tak asi všechno, co s tím můžete dělat.

A co to vlastně ta WebServisa je? Už toto je poměrně těžká otázka. Ještě před čtyřmi lety platilo, že v každé firmě, která se nějak podílela na onom WS-H (WebService Hype :-D ), měli svou vlastní definici. Přestože všichni tak nějak intuitivně chápali wocogo, každý si tento termín definoval tak, jak se mu hodilo, a tím se také vymezoval proti ostatním. "Ty že máš WebServisy? Ale kdeže! To MY máme WebServisy..." V roce 2003 (nejsem si rokem přesně jist) vyšel Sun s prohlášením, že ON dělá WebServisy už SEDM let! No nic. Uvedu pár příkladů definice:
* A service is an abstract resource that represents a capability of performing tasks that represents a coherent functionality from the point of view of provider entities and requester entities. To be used, a service must be realized by a concrete provider agent. (W3C ws-arch)
* A service is a mechanism to enable access to one or more capabilities, where the access is provided using a prescribed interface and is exercised consistent with constraints and policies as specified by the service description. (Oasis standard SOA-RM)
* WebService - Loosely coupled software components delivered over Internet standard technologies. (Systinet Server for Java glossary)
* Webová služba je podle definice W3C řešení, jak spolu aplikace mohou komunikovat a vyměňovat si informace přes Internet. (tak hovoří česká Wikipedie)

Néjlepe celou rozepři vystihuje asi Google.

"Kupodivu" ony terminologické pře přestaly přesně v okamžiku, kdy se buzzword WebServisa stal "out" a "in" bylo mluvit jen a jen o SOA.

Já tedy zkusím tak nějak shrnout onu definici ne do věty, ale bodů:
1) WebServisa je kus kódu, který zprostředkovává nějakou funkcionalitu, z pohledu z horního patra sémantiky atomickou.
2) WebServisa má přijímat data v (jednoduše) strojově zpracovatelném stavu a ve stejně jednoduše strojově zpracovatelném stavu produkovat.
3) WebServisa je dostupná svému "zákazníkovi" obdobným způsobem jako webové stránky, může tedy běžet jak na stejném počítači, tak na druhém konci světa.
4) Každá WebServisa má nějaký její jednojednoznačný identifikátor (URI), který je možno použít k jejímu dosažení.
5) Komunikační protokol mezi klientem a WebServisou je otevřený, kýmkoli použitelný, nepodléhá patentům (no, tak tady sice můžeme narazit, ale podle vyjádření IBM a Microsoftu nebudou svá vlastnická práva na SOAP nikdy zpoplatňovat), není závislý na implementaci WebServisy či klienta (je tedy zaručeno, že lze implementovat na všech různých platformách libovolným jazykem). Je tedy možné jednu WebServisu bez obtíží nahradit jinou od jiného dodavatele.
6) Totéž platí pro transportní protokol.

A co se ještě přidává jako "ještě by mělo platit, abychom to jako WebServisu uznali všichni":
1) Data jsou strukturovaná a textová, ideálně XML. Veškerá binární data jsou zakódována do textové podoby (nejčastěji algoritmem Base64).
2) WebServisa má dobře zdokumentované rozhraní.
3) Jako URI se používá URL.

A co je de facto standardem:
1) Transportním protokolem je HTTP a používá se HTTP-SOAP binding, protože na jiný není standard. HTTP je sice aplikační protokol, ale pro potřeby WebServis byl ohnutý tak, aby sloužil jako transportní vrstva.
2) Data jsou zabalena v SOAPové obálce.
3) Klient a WebServisa si spolu povídají jazykem, kterému rozumí Microsoft DotNet framework. Když MS přejde na modré trpaslíky, mýdlo bude zahozeno. Tolik k nezávislosti na jedné firmě.
4) Na popis rozhraní se používá WSDL.
5) Každé volání je synchronní request-response. K WebServisám se tak převážně přistupuje jako ke vzdáleným objektům, tedy takové vylepšené XML-RPC.

Neříkám, že je to přesně ono, ale plus mínus ano.

čtvrtek 31. července 2008

oRESTovaná externalizace dat aneb když to másh nahoře

Další díl z cyklu oRESTování začnu možná trošku zmateně a vyhlásím soutěž o druhou nejlepší RESTovou aplikaci, přičemž je nám všem jasné, že webové prohlížeče (webové stránky jako takové) jsou tou první.

Tak co, už jste na to přišli?

Nechám Vás ještě chvíli se trápit...

Tak dobře. Nebudu Vás dlouho napínat, jsou to Feed Readery.

Mezi námi bloggery není jediný, který by nevěděl, co to je a jen velmi málo, kteří nepoužívají žádný. No ale pro jistotu pro ty, kteří nevědí, o co se jedná, malá naučná vsuvka.

Před dávnými a dávnými lety vznikl ve vývojovém centru firmy Netscape protokol Rich Site Summary (RSS, košatý popis stránky), který umožňoval v kostce popsat obsah stránky. Nejdůležitější částí byl vlastní popis, používaný pro jejich portál (snad vůbec první skutečný portál) my.netscape.com. Jako podružné se tehdy jevily popisy částí stránky.

Postupně se ale se zaváděním publikačních systémů (a hlavně blogů) karta obrátila. Protokol byl přejmenován na Really Simple Syndication (skutečně jednoduchý výcuc, opět RSS, to je ale náhodička, co?) a jeho hlavní náplní se stalo informovat čtenáře stránek o novinkách. Realizace je vskutku jednoduchá - RSS stránky (říká se mu feed) obsahuje ke každému článku jeho identifikátor (typicky část URL článku), odkaz na článek a datum a čas publikace. Potom aplikace, která RSS umí číst (říká se jí čtečka RSS neboli Feed Reader), si poznamená všechny položky seznamu, nabídne jejich seznam uživateli a zvýrazní ty, které nově přibyly a nebo si je ještě nepřečetl. Feed Reader se tedy chová obdobně jako poštovní klient, až na to, že místo do poštovní schránky chodi na URL s RSS Feedem. Po novu se prosazuje ATOM, rozšíření RSS, které kromě vylepšené syntaxe feedů zavádí Atom Publishing Protocol umožňující nejen číst, ale i vytvářet a měnit RSS (Atom) Feedy.

O tom, že systém RSS feedů je RESTová aplikace, snad není pochyb. Distribuce RSS jako u webu (RSS má své URL), přesně definované rozhraní (dokonce i struktura dat), operace jedna jediná - GET, a to buď na RSS feed, stránku nebo její část, bezestavovost komunikace, kešovatelnost, ...

Co má ale společné seznam nových článků na blogu a externalizace (vyvezení ven) dat, Holmesi? To je přeci zřejmé, můj drahý Watsone.

Na blog a jeho články se lze také dívat (a bývá to tak implementováno) jako na relační tabulku, kde jeden řádek databáze odpovídá jednomu článku. Potom vlastně jednotlivé položky RSS feedu nejsou nic jiného než řádky této tabulky nějak převedené na klasické RESTózní zdroje (jeden článek, jedno URL, na němž GET vrací obsah tohoto článku) a ty pak nějak přetransformované do struktury RSS. Odtud je již jen krůček k zobecnění, kdy JAKOUKOLI tabulku, dokonce jakýkoli výsledek SQL dotazu jsme schopni převést do podoby RSS feedu.

A bác ho. Když jsme schopni jakákoli data převést do RSS, můžeme je pak KOMUKOLI na světě v této podobě předat (a navíc mu stačí poslat jenom URLčko a on už vždy bude mít RESTově-aktuální data!) a on si je bude schopen prohlédnou ve svém Feed Readeru.

Navíc můžeme jít ještě dál a říct, že díky pevně dané struktuře RSS lze tato data strojově zpracovat obdobným způsobem, jako by nám je vrátila WebServisa.

Díky transportnímu protokolu HTTP máme ještě k dispozici HTTP-Basic autentizaci a všudypřítomné HTTPS, takže máme bezpečnost dat téměř zadarmo. No není to krása?

Ale svět jde ještě dál. Vznikl nový Buzzword MASHUP. Mashup je stránka či celá webová aplikace vzniknuvší jako syntéza dvou i více webových stránek (aplikací). Typickým příkladem budiž Internetový obchod, který jenom přeprodává zboží jiných Internetových obchodů.

Mashup pak samozřejmě musí nějak získat data od "podřízených" aplikací a rozumět jim. Existují mešupovače (óch, jak je ta na naše řeč bohatá a krásná, že jo, dědo Kovando!), které dokáží vytáhnout data přímo ze stránek, ale nejlépe se pracuje se strojově zpracovatelnými daty, které pro mé potřeby (nebo obecně) někdo zveřejnil, neboli externalizoval. No a nejlépe, pokud tato data mají nějaký rozumný rozšířený formát, kterému rozumí každý. Třeba RSS. A když mashupem je zase RSS, máme tu nádhernou distribuovanou RESTovou aplikaci, ve které máme jediný formát zveřejněných dat - RSS, kde každý si jej může a umí stáhnout, přetransformovat do jiného RSS a to zase zveřejnit...

Na závěr zbývá už jenom jedna otázka. Kolik procent sebere ATOM SOAPu? IMHO není důvod na B2B používat SOAP. Také většina infrastrukturních WebServis jsou stejně jenom donory, dekorátory či akceptory dat, což lze krásně a jednoduše řešit právě ATOMem. A pokud doprostřed celého toho intranetového světa umístíte ATOM repositoř (náhrada za WebDAV), dosáhnete úžasné flexibility.

Sherlock Holmes a poslanec Wolf

Našel jsem nádherný článek Holmes a Watson vyšetřují vydírání o naší demokracii a poslanci Wolfovi. To si prostě musíte přečíst. Nejlepší je Watsonův závěr:
Proč chtějí, u všech všudy, stavět Američané v takové zemi radar?

středa 30. července 2008

Mám vůbec koho volit?

Poslední dobou mám čím dál větší problém s tím, koho budu ve volbách volit.

Jakožto bývalý Orchouší Brontík mám hodně blízko k ekologii a tedy zeleným a jejich program mne z velké části oslovuje. Ale jakožto zarytý fyzik a atomista prosazuji stavbu dalších jaderných elektráren na úkor spalování dřeva a obilí. Komunální odpad budiž, ale pěstovat něco jenom na spálení v elektrárně mi přijde přitažené za vlasy. Proto je nemohu volit. A to ani nemluvím o Bů aféře, kdy z nás chtěl pan předseda udělal totální kretény. Kdyby chlapsky řekl, že to psal jí, a že byl večer naštvaný a proto to napsal jak napsal a že se jí omlouvá, v žebříčku popularity by musel hned vyskočit nahoru. Leč...

Jakožto zapřísáhlý antiteista (fanatický ateista) nemohu dát hlas lidovcům už z principu. Navíc jejich "pragmatická" politika "být tam furt" a "my se vždycky domluvíme" je krajně podezřelá. a to nemluvím o čunkiádě.

V principu jsem levicového přesvědčení. Preferuji jistotu před rizikem. Nechci se pořád někam hnát, chci žít. Stresy, které jsme zažili tento rok ohledně mého a manželčina zaměstnání fakt nemám zapotřebí. A to jsou na tom lidé DALEKO hůř. Jenomže demagogie komunistů není můj šálek kávy (snad s výjimkou europoslance Ransdorfa, který to fakt má v hlavě v pořádku). Fandil jsem ČSSD, ale už od dob "odchodu" pana Machovce to tam vypadá tak nějak na levačku. Má oblíbená trojice Špidla, Gross, Buzková totálně zklamala (neschopný politik, všehoschopný politik a neschopná ministryně), pod vedením pánů Paroubka a Ratha se z ČSSD stává stranou strachu. Poslední volitelná tak zbývá strana Zelených, leč viz výše.

Protože jsem chtěl udělat něco pro obec, přijal jsem nabídku kandidovat jako nezávislý za ODS. Velmi se mi líbil pragmatismus některých ministrů, kteří konečně začali dělat rozumné věci a řekl jsem si tedy, že časy Klausiády v této zemi snad skončily. Bohužel ne. Topolánek nevyužil jedinečnou šanci zavrhnout Klause a páně prezidentovo demagogické vystupování mne dohání k šílenství. A to už od doby, kdy nás ekology sledovala BIS... Navíc způsoby, jakými postupují pan ministr Julínek či paní Vesecká, jsou více než zavrženíhodné. A to ani nemluvím o dalších geniálních plánech vlády. Vzpomeňme věk odchodu do důchodu, kterého se nedožiju, smlouvu s církqemi, přístup vlády k neustále sílící koruně, odklady přijetí Eura či jiné antievropské přístupy... Také nesdílím přesvědčení, že neviditelná ruka trhu vyřeší vše.

Kdybychom tak mohli, stejně jak odo senátu, volit lidi. A to lidi formátu pana profesora Zlatušky. Jenomže těch stejně bohužel v republice tolik nemáme.

Takže kdybyste věděli o pragmatické politické straně nevěřící slepě trhu, s výrazným, ale pragmatickým zeleným programem, která nebude zavrhovat jadernou energii, docílí, že sviňárny (co jiného udělala paní Vesecká?) a malé domů (zaměstnávání manželek a známých je naprosto normální, každý byste to taky udělali, i já, ale veřejně krást, jak se to děje v případě Julínkovy reformy (jak jinak vysvětlit, že se jde na ruku zdravotním pojišťovnám a jiným poskytovatelům zdravotnických služeb?)) se prostě v politice nedělají, která bude podporovat důkladnou až federativní integraci EU, která bude podporovat mladé, vzdělanost a tuzemské firmy, bude se umět vypořádat s nelegálním čímkoli, dokáže přimět tuto společnost, že fakt normální je nekrást a nejezdit jak prase, drasticky omezí kuřáky a byrokracii nahradí informační společností, dejte mi vědět.

Jak oRESTovat Javí aplikaci

Dneska ráno jsem našel naprosto zajímavý článek, první ze série o RESTu, který objasňuje REST na příkladu jeho převedení do světa Javy.

První díl vzali autoři z trošku jiného konce - začali od Bindingu neboli vazby mezi klientem a serverem. Vazbu v RESTu definují jako asociaci logického jména na něco "fyzického", třeba kusu kódu, kus paměti či metodu.

Dávají do kontrastu vazbu mezi jménem třídy v Javě (a klasický ClassLoading) proti volné asociaci mezi URLčkem a "stránkou" Webu. Zasmál jsem se nad přirovnáním, že změna implementace třídy (v jejich příkladě java.util.Date) znamená (bez šíleného overheadu s vlastní implementací ClassLoaderu) restart celého JVM, což v případě Webu je věc naprosto komická. No schválně si představte restart celého Webu. Ten synchronizační komunikační protokol bych chtěl vidět... tedy nechtěl...

Takže si řekli, že:
1. Browser se zeptá Domain Name Service (DNS) na "tapikuv.blogspot.com" (v jejich případě www.theserverside.com, ale co bychom si to neupravili, že :-D) a zpět získá IP adresu.
2. Browser vytvoří TCP/IP spojení na onu IP adresu na portu 80.
3. Spojení použije na odeslání HTTP GET requestu na zdroj "/" na tapikuv.blogspot.com.
4. Server dostane HTTP request, něco s ním udělá a vrátí nějakou reprezentaci zdroje "/".
5. Browser ji dostane, něco s ní provede a zobrazí to uživateli.
6. nakonec browser shodí TCP/IP spsojení a "un-binds" (poměrně hodně podstatné slovo, viz níže) od endpointu.

Takže si kluci zavedli vlastní URI schéma "resource" (např. resource:/customers) a navrhli pár tříd:
1. Context (něco mezi JNDI kontextem a proxy)
2. Request (obdoba HTTP requestu)
3. Representaion (obecná třída, ve své podstatě obdoba java.lang.Object)

Celý proces pak probíhá tak, že na kontextu vytvoří request na konkrétní URI, přidají k němu co potřebují, nechají jej provést a zpět dostanou Representation.

Na první pohled nic nového pod sluncem, máme EJB sdílející s klientem jenom mezixicht (miluji toto slovo, které jsem před víc než 20 lety našel ve VTMku), JNDI Context.lookup(), zavolání metody EJBčka a návrat nějaké hodnoty.

Fígl je v tom, že v tomto systému je jenom jeden mezixicht, sdílí jej tedy VŠECHNA EJBčka. To umožňuje dramaticky omezit různá omezení. Klient se tak de jure nestará o evoluci takovýchto EJBček. Stačí mu jenom znát správné URIčko a umět se vypořádat s instancemi Representation.

Sranda je v tom, že výhody tohoto systému nepochopil téměř žádný diskutující. Odvolávky na zahození typovosti v Javě,když ji přece sami autoři používají, že do Javy to vůbec nepatří, že je to přece k ničemu, když ti server vrátí něco, co ty dopředu nevíš, že vrátí, či na to, že to všechno řeší přece CORBA, DCOM a SOAP, jsou velice srandovní. Šlo přece o vysvětlení na příkladu architektonického stylu. Težko přece budeme dělat RESTovou servisu na operátor ++, že...

Na druhou stranu se autoři zapomněli zmínit o jedné podstatné věci, a tou je právě onen "un-bind". Tato operace totiž není v RESTu definována, kde je nahrazena operací "rebind". Chápu, že ona jemná nuance nemusí být pro mnohé čitelná. Hlavní rozdíl je v tom, že ona vazba mezi logickým jménem a "fyzickou" reprezentací má obvykle trvání přesahující jeden request. Teprve když si klient usmyslí, že je načase aktualizovat odkaz, udělá onen "rebind". Kromě kešování bindingu tu navíc máme ještě kešování reprezentací, kdy zase klient rozhoduje, zda je na čase se podívat po aktuální verzi.

No a samozřejmě mám trochu potíž s onou třídou Context. Podle mne je mnohem lepší ji rozdělit na Registry, Repository a Proxy. Registry mi řekne "fyzičtější" odkaz (zde dělám rebind), Repository mi vrátí Proxy (které si kešuji) a na Proxy pak volám requesty. Přijde mi to logičtější a více RESTózní.

neděle 20. července 2008

Sezóna hub začíná

Tak jsme byli s rodinkou letos poprvé na hřibech. Vyrazili jsme jenom kousek nad barák, ale přinesli jsme dom plný košík. Tady jsou fotky nejlepších úlovků.


Ten nůž je můj velký zálesácký, podnos je velký servírovací, větší než ten nemocniční.

pátek 4. července 2008

Nový a výstižnější název pro Bulvár

Máme doma na návštěvě Elaphe se svými dvěma dětmi. Hned první noc po příjezdu ale nastal šavlový tanec, neboli Míša pořádně ohodil půlku pokoje, něco skončilo i na čerstvě vylíčené zdi. Ale je to školkáček a navíc asi něco špatného snědl, to se zkrátka stává i v lepších rodinách.
Když jsem to do telefonu popisoval svojí sestřičce, použil jsem pěkný novotvar BlujWare (čti blujvér). A odtud je jenom kousíček k Blujváru (či Blulváru, komu se co lepší líbí). Myslím, že tyto dva novotvary daný termín velmi přesně vystihují. Google Blujvár nezná vůbec, na Blulvár našel dva odkazy na celém Netu. Ale schválně se podívejte, co na blulvár a Blujvár zobrazí Google! To je naprosto přesně vystihující.

PS: Jsem polichocen, že můj blog čtou lidé z marketingu Blesku, Aha! a TV Nova. Ony tyto tři blujváry totiž zorazovaly svou reklamu právě na tyto dvě klíčové slova. A nyní (2008-10-07) už tam nejsou! Mohu si tedy udělat čárku za příspěvek ke kultivaci našeho národa :-)

středa 2. července 2008

Ořez textu v MANIFEST.MF

Dnes jsem při hledání příčin jednoho ClassNotFoundException narazil na zajímavou informaci. Jeden každý řádek manifestu nesmí být delší než 72 bajtů (nikoli znaků). Pokud vyvstane nutnost napsat na řádek delší text, je potřeba onen text rozdělit na více řádku po maximálně oněch 72 bajtech, přičemž každý pokračující řádek pak musí začínat právě jednou mezerou.
Pak se nedí co divit, že při dlouhé Class-path vygeneruje IDEA manifest, který třeba obsahuje začátek názvu jaru na konci jednoho a zbytek na začátku druhého.

čtvrtek 26. června 2008

Jak jsem fotil bouři

Dneska v noci byla nádherná bouřka. Mlátilo to do kopců ostošest. Když jsem tu nádheru popisoval svojí chrnící manželce, otevřela jedno ospalé oko a pronesla: "Tak si to vyfoť a nech mě spát." Báječný nápad!

Na vánoce jsem si nechal nadělit digitální zrcadlovku Nikon D40. Chvíli trvalo, než jsem ji při světle blesků našel. To v9te, byla skoro půlnoc a střešní okna zas tak moc svěla nedávají. Vyklonil jsem se z okna a zmáčkl spoušť. Otevřel se blesk a Nikonka začala pobleskávat a doostřovat a doostřovat... Vypněte si blesk a automat, volové! (parafráze na u nás doma již klasickou větu vojáka "Nabijte si, volove" z divadelního představení S Pydlou v zádech, v kteréžto roli na prnech divadla Semafor exceloval Pepa Dvořák). Takže znovu. Otevřít střešní okno, zmáčknout spoušť... a nic. V hledáčku navíc nebylo nic vidět. Prohlížím si foťák ze všech stran, když se najednou ozvala závěrka a na displayi foťáku se objevil chaos. Aha! Takže při nulovém osvětlení si Nikonka nastavila závěrku na 5vteřin nebo kolik. Chvíli jsem zkoušel udržet foťák v ruce, ale nešlo to. Tak jsem jako provizorní stativ použil okenní rám. Fotky sice pořád "nic moc", ale tato se myslím povedla:

No řekněte, není to jak záře nad Mordorem?


Posted by Picasa

středa 25. června 2008

Xenofobie obrácená naruby

Přednedávnem jsem psal něco málo o Xenofobii a Imigrantech v Evropské Unii. Tento článek měl k legraci daleko. Tak teď to trošku dorovnám.

Dnes jsem na Radiožurnálu slyšel velice zajímavou zprávu: V Paříži skupina černochů a arabů zbila židovského mladíka qůli jeho náboženskému přesvědčení a tak Izraelský premiér vyzval francouzské židy k emigraci do Izraele! No řeknu Vám, za břicho jsem se popadal. Ještě štěstí, že jsem zrovna po jedné delší rovince ve Zlíně, takže můj výbuch smíchu přežil náš Scenic bez úhony.

úterý 24. června 2008

Jak jsem si zastávkoval

Tak jsem se dnes připojil ke generální stávce proti reformám. Můj šéf mne zrovna vezl autem z jednání z Brna do Uherského Hradiště. Když jsme o půl druhé přijeli, zašel jsem si na oběd. Do práce jsem se vrátil až po druhé hodině :-)

Ale teď vážně. To, že Českou Republiku čeká bolestné období změn, je jasné. To, že nemůžete rozdat víc, než co máte, je také jasné. A že na dluh věčně rozdávat nelze, je také jasné. Má to ale jeden podstatný háček. Změny nelze dělat a) nesmyslně a b) "na silu".

Pár příkladů:
a) proč se platí 30Kč Cikrtného za každou položku na receptu? Každý si pak nechá předepsat rovnou tři balení, co kdyby, a máme větší spotřebu léků než dřív. Úplně by stačilo 10Kč za každé balení. Ušetřilo by se víc.
b) chtít po miminu krmenému mateřským mlékem 60Kč za pobyt v nemocnici, který se měl přece promítnout do zlepšené stravy...
c) udělat ze zdravotnických zařízení akciovky znamená, že takové zařízení zde bude jakožto podnikatelský subjekt s primárním cílem generovat zisk. Viz můj předchozí příspěvek o zdravotnictví.
d) řízená léčba je pitomost a už to v USA prokázali. Tak proč se to tak líbí Julínkovi?
e) minimálně 40% profesí nelze v 65 letech vykonávat. Kde budou ti brzodůchodci dělat? Jenom nám lidem z IT je to jedno, životnost programátora je prý pět let, takže nás rozdíl mezi 60 a 65 lety vůbec trápit nemusí.
f) že životní úroveň při reformách klesne, je přece jasné. Jen nechápu, že nikdo nemá sílu to říct otevřeně.
g) také nechápu, proč se celá reforma točí pouze kolem totální privatizace a zdražení všeho možného (popřípadě zavedení plateb navíc či snížení dotací). Těch světlých výjimek jako proplácení části nadstandardu do výše úhrad za standardní péči je po čertech málo. Snížení plateb pro nás (LOL), vysokopříjmovou skupinu, mne sice hřeje, ale ten rozdíl je v mém případě tak malý, že nestojí ani za řeč. Jó gdybych kasíroval melouny...

Bohužel nevidím světlo na konci tunelu. Mha předemnou, mha za mnou.

PS: Ono dost o reformě vypovídá i jedno prohlášení pana ministra Nečase. Na serveru Novinky.cz jsem našel:
Podle ministra práce a sociálních věcí Petra Nečase (ODS) není možné možné, že by stávkovalo skutečně 900 tisíc lidí. Odhadl počet stávkujících na na polovinu uváděného počtu, tedy asi na 300 tisíc, uvedl pro ČT.

Tomu se říká matematika, co?

pátek 20. června 2008

Proč je Ant generátorem špaget

Dagi napsal zajímavý článek o jeho zkušenostech z programováni v Antovi. Ano, XML nebylo nikdy určeno k programování a je jedno, že se hojně používá. A to není jenom Ant, dokonce je i XSH. I ono krásné deklarativní XSLT je zprocedurovatelné a pak se v tom prase vyznej :-(

Co se ale týká mravence, tak tam je historie naprosto jasná. Na Apachi hledali nástroj obdobné síly jako GNU Make, úspěšně používaný v jejich primárním projektu - k buildování web serveru Apache. Hlavním kriteriem takového nástroje ale byla implementace v Javě. A takový nebyl, tak se rozhodli si jej udělat sami. I řekli si, že nástroj nebude umět nic šíleného a tak že k formátu mohou přistupovat jako k deklarativní konfiguraci a proto zvolili XML formát. Jenomže síla Make není jenom v jeho deklarativnosti, ale hlavně v síle unixového shellu. A proto se začal Ant a jeho build.xml rozlézat do příšerných obludností. Přibyly podmínky, cykly a další šílené konstrukty, atributové deklarace jsou nahrazovány flexibilnějšími XML strukturami,... A tak se z prosté jednoduché konfigurace stal další Turingův stroj a jako takový začal být používán. A protože je ve velkých projektech neustálá potřeba rozvíjet možnosti buildovacího systému, build.xml bobtná a bobtná... už jsem viděl i megabytový.

středa 18. června 2008

Metodika návrhu SOA aneb kdy začít s WSDL a kdy s kódem

Přečetl jsem si Vytvářet nejdříve WSDL nebo Java rozhraní od Petra Jůzy a rozhodl jsem se, že také připojím pár svých zkušeností.

Na otázku, zda začít nejdřív s WSDL nebo nejdřív implementovat a potom generovat WSDL neexistuje jednoznačná odpověď. A navíc je třeba podle Cimrmana vzít v potaz i roli kohouta, ale nepředbíhejme :-)

Bavme se tedy v prvé řadě o WebServise, u které tato otázka má smysl, tedy o RPC.

Nedá se říct, že by varianty měly své pro a proti. Prostě jsou každá na něco jiného.

Hodláte-li napsat WebServisu na zelené louce, máte na začátku dva výchozí předpoklady: a)bude to WebServisa někomu zveřejněná a která b)bude něco dělat. Pravděpodobně začnete s nějakou analýzou problému. Z analýzy vypadne struktura dat, která by měla kolovat tam a zase zpátky. Struktura se lépe popíše XML schematem než pomocí tříd. Nad ukázkovým XMLčkem se pak lépe přemýšlí jiným lidem, je to názornější. Proto je tedy v takovém případě nejlepší začít s XML schematem, přidat operace a máte WSDL. Z něj pak generovat kód.

Máte-li už napsaný kus kódu a chcete lokální volání roztrhnout SOAPem, není jednodušší cesty než označit nějakou fasádu jako WebServisu a nechat k ní vygenerovat WSDL. Nejčastější a nejhezčí je ale vypublikovat ji pomocí Endpoint.publish().

Já ale tvrdím, že tato otázka je ve své podstatě nesmyslná. Kde je jádro pudla, nebo lépe řečeno kohouta? V pohledu na věc.

Ať už jde o Integrační, B2B, Intranetový Infrastrukturní či Separační scénář, vždy je na počátku všeho zadání. Jak už nás učili na základní škole, zadání problému se klasicky popisuje trojicí množina vstupních hodnot, množina výstupních hodnot a přechodová funkce, popřípadě jejich množina. A to se dá říct jak o nově vznikající aplikaci či WebServise, také o fasádě nad legacy systémem. Ač se to nezdá, totéž platí i při roztrhávání, protože se může ukázat, že bude daleko čistější vygenerovat novou fasádu. V případě složitějšího problému komunikace mezi více participanty pak také víte (nebo aspoň tušíte), co si ti dva tam budou posílat. Každý z participantů má přece svoji roli a k roli patří zase vstupní i výstupní data a popis, co má dělat.

Proto je nejjednodušším postupem rozdělit si vstupy a výstupy na samostatné celky (= zprávy), ty ozobákovat, pojmenovat si jednotlivé funkce (=operace) a spárovat zprávy k operacím. Výsledkem je pak kostra WSDL. Pro lenochy je pak možné vygenerovat kód z oné kostry, vypublikovat WebServisu čistě jako třídu bez WSDL a do kostry doplnit zbývající části WSDL, které za nás vygeneroval publisher.

Tento přístup má hned několik kladů:
* tvůrce se musí nejdříve zamyslet nad strukturou dat, což nebývá tak úplně zvykem
* to zabrání nutnosti neustále měnit rozhraní (a tím i WSDL) při změně datového modelu
* tvůrce uvažuje v intencích dokumentů a operací nad nimi, což mu umožní přehoupnout se přes onen RPC XORBA zlozvyk
* WSDL je čitelné a "hezké" a interoperabilní (pokud je navrženo jako document-wrapped (.NET nic jiného neumí))
* celý návrh systému je pak mnohem lépe udržovatelný, modularizovatelný, rozšiřitelný, znovupoužitelný, lépe odladitelný

na závěr se s vámi podělím o jednu velice podstatnou metodickou pomůcku. Z jednoho neúspěšného projektu Systinetu jsem si odnesl následující systém návrhu SOA aplikací:
1)Vyjmenuj si všechny role participantů, kteří se na aplikaci (procesu) podílejí.
2)Namaluj si síťový graf procesu podle jednotlivých rolí.
3)Rozděl proces na ucelené podprocesy.
4)Vytvoř XML dle struktury procesů, a to tak, že root elementem bude název procesu a v něm na stejné úrovni jako elementy názvy podprocesů. Při vzájemném zanoření podprocesů zanoř element podřízeného podprocesu do elementu nadřazeného.
5)Ke každému participantovi se pokus navrhnout kostru struktury dat (XML, stačí root element a jednu úroveň elementů v něm), které mohou od nich ostatní požadovat.
6)Tato XMLčka sluč do jednoho dokumentu, a to tak, že je podle pořadí v síťovém grafu poskládáš pod sebe do elementu procesu či podprocesu, ve kterém se role vyskytuje.
7)Ke každé roli označ data, která potřebuje pro svoji práci.
8)Z těchto dat poskládej ke každé roli zprávu, kterou bude participant akceptovat na svém vstupu.
9)Data, která participant produkuje, označ jako odchozí zprávu.
10)Dopodrobna rozpracuj XML schema jednotlivých zpráv

Každá role pak odpovídá jedné operaci WebServisy. Pokud hraje jeden participant více rolí, má jeho WSDL více operací. Každý proces i podproces má ještě dvě fáze, které je také nutno zmínit: iniciační (musí vyletět první zpráva) a ukončovací (poslední zpráva musí někam doputovat).

A co se týká implementace celého systému, máme minimálně principiálně čtyři možnosti.

První a nejlepší možností by bylo použít principy z onoho neúspěšného (když vymyslíte něco, co předběhne dobu o deset let, a stane se to díky tomu nezproduktovatelné, naštve to) produktu. V dubnu 2010 mi vyprší klauzule o mlčenlivosti, tak si počkejte na podrobnosti :-) Nemohu Vás bohužel ani odkázat na nějaký veřejný zdroj, protože bylo všechno staženo včetně blogspotů :-(

Další možností je pouštět data do messagingového systému, kde budou zprávy z jedné instance procesu korelovány. Ale to jsme u TIBCO Randezvous a to Vám fakt nemohu doporučit ;-) .

Třetí možností je dát do každé zprávy tranzitivní obal všech zpráv požadovaných mými následovníky. Tento Message Decorator pattern se používá v ESB, má jak své výhody, tak nevýhody. Některé věci v něm nejde bez Cimrmanova úkroku stranou dělat vůbec.

Čtvrtá možnost je ta nejčastější. Každý proces či subproces je implementován jednou fasádní WebServisou. Pro jednoduché věci je BPEL, složitější logiku je lépe kódovat. Iniciační fázi odpovídá příjem zprávy a finalizační pak odeslání výstupní zprávy. Pro jednoduchost je možno implementovat několik rolí v procesu přímo ve fasádě, ale je dobré si tam minimálně nechat čisté rozhraní pro případné oddělení.

PS: Kdyby to pomohlo alespoň jednomu z vás, nepsal jsem to zbytečně. A vyjmenovat výhody takovéto metodologie návrhu nechám na Vás jako domácí cvičení do komentářů

úterý 17. června 2008

Tak hurá na Technorati

Našel jsem celkem pěkný webík pro registraci Blogů - Technorati. No a protože chtěji při registraci, abych tu uvedl Technorati Profile, nezbývá, než tak učinit :-)

Bude MVC model nahrazen architekturou RIA + SOA?

Uvidíme :-)
Každopádně jsem si dnes přečetl článek od Nolana Wrighta a řekl si - zase další BFW (Buzz Flame War :-) ). Ale přeci jenom mi to nedalo a trošku jsem se nad tím zamyslel. Nemá samozřejmě smysl papouškovat názory od CEO firmy produkující Appcelerate, platformu pro "tvorbu RIA+SOA aplikací" už jenom proto, že s ním nemohu úplně souhlasit.

V čem se vlastně tak liší tyto dvě architektury?
ModelViewController je architektura, která dělí celou aplikaci na tři (ale spíš čtyři) vrstvy:
* View neboli prezentační vrstvu
* Model neboli reprezentaci dat (a tou čtvrtou pod Modelem je pak databáze)
* Controller nebo business logika

Co se týká vývoje Webových Aplikací, o které jde především, se prezentační logika sestává s generování HTML kódu (ve světě Javy JSP) (no dobře, máme ještě nějaké JavaScripty, ale ty slouží čistě jako podpůrný prostředek pro zobrazení, nic víc), Model je Objektová vrstva nad relační databází (ve světě Javy třeba EntityBeans či Hibernate POJOs) a Controller je pak něco mezi (typicky Session Beany + různé controller frameworky, jako třeba Struts, Tapestry či HyperQbs :-) )

Stav je držen primárně na straně Modelu, protože na klientovi toho moc držet nemůžete a Controller by měl být bezestavový.

RIA+SOA je oproti tomu dvouúrovňová architektura. Na straně klienta máme aplikační logiku napsanou v JavaScriptu, na straně serveru pak Webové Služby. Stav se primárně drží na straně klienta a WebServisy slouží pouze primárně jako Donory a Akceptory dat (a tady se s Nolanam vcelku lišíme, protože on přenáší business logiku na stranu WebServis, což potírá samu podstatu RIA - RIA není jenom o pěkném Ajaxovaném xichtu, ale také o tom, že klient obstarává velkou část aplikační logiky).

Stav je tady držen na dvou místech. Primárně je držen na straně klienta a teprve až výsledky aplikace se promítnou na server přes rozhraní Webových služeb, které pak slouží jako poskytovatelé oněch výsledků dalším aplikacím.

Taková RIA+SOA architektura pak přímo vybízí k použití Loosely-Coupled Coarse-Grained WebServis a či dokonce RESTu.

pondělí 16. června 2008

Všichni smutní, já sa řehúzňám

Tak sem sa včera díval na tu fotbalovú tragédiu. Jak nám dali teho druhého banána, tož sem to vypnul. Išel sem spat. Za chvílu mi to nedalo. Zapínám Primu a tam reklama. Přepnu na ČéTé dva plesknu tam teletext a čumím jak puk: Prohráli sme 3:2! Tož sem za začal řehúzňat. A směju sa ešče včíl. A ešče dlúho budu. Co s tým také iného, gdyž tam máme takú bandu šumařú a komediantú? Ale najvjecéj sa musí smít moja robka. Bo sem jí včéra svatosvatě slúbil, že na sport v téj bedně nebudu už nikdá zízat.

čtvrtek 12. června 2008

Kultura alá Kratochvíl

Včera jsem na Z1 sledoval Interview B.T. s Petrem Kratochvílem, majitelem divadla Ta Fantastika. To, že Bára Tachecí si s ním notovala, mi přišlo sice nepatřičné, ale qůli tomu bych neblogoval.

Celou dobu mi přišlo, že pan Kratochvíl mluví celkem rozumně, že mnohé jeho argumenty jsou korektní a naprosto v pořádku. Ale na konci tomu dal takovou ťafku, až to bolelo.

* Nejdříve řekl, že 98 divadel je na Prahu moc, že by jich polovinu zavřel. No, zajímavá úvaha na majitele jednoho z nich, které je životně závislé na plném stavu svých představení. Žeby chtěl zavřít ta Fantastiku? :-D
* Prohlásil, že dotovat kulturu je bolševický přežitek, že je potřeba zrušit dotace a že se celý systém kultury v socialistické Evropě rozpadá.
* A na konec dodal, že bychom se měli soustředit na tem systém kultury, který funguje. A to je ten ve Spojených Státech! No, já nevím, jak kdo, ale já osobně si nemyslím, že USA je ten správný příklad. Kulturu vymývačů mozků bych tady vážně nechtěl. Ano, funguje v Americe i "klasická" kultura, ale je třeba si uvědomit, že zajít si do divadla, neřku-li na operu, to je tak pro snoby. Američané svoji nekulturnost schovávají za jejich patriotismus, takže jediná díla masově uznávaná pochází z novodobé historie.

pátek 6. června 2008

Harry Potter a relikvie smrti

Tak jsem právě dočetl poslední díl Potrovic Haríka. A úplně na rovinu, jsme hodně zklamán.
Kromě poslední části boje, tedy tu od okamžiku, kdy Neville ufiknul Naginimu kebuli po rozhovor s Brumbálovým portrétem v pracovně (a snad ještě Snapův příběh) se tak kniha téměř nedala číst. Pár příkladů:
Neustálé schovávání Harryho, Hermiony a Rona je ubíjející.
Dva po sobě jdoucí útoky na Harryho stejnou hůlkou mají NAPROSTO odlišný průběh.
Zapojení Kentaurů s luky a skřítků s nožíky mi připomnělo bitvu pěti armád. I ti Orli nakonec přiletěli.
Bradavice neodolaly nájezdu Smrtijedů (Voldemort se schoval a čekal na Harryho).
PAVOUCI na popud Smrtijedů UNESLI HAGRIDA, když Tom Raddle použil na Aragoga "Arania Exhuma!!
Harry používal Imperio! a Cruciatus! jako o život!

Uznávám ale, že vyřešení souboje s Voldemortem či přerod Krátury (obzvlášť jeho "Můj Pán mi přikázal, abych se vrátil") byly moc pěkné myšlenky. A návrat Percyho byl naprosto jedinečný zážitek. Smál jsem se pak celý večer...

Když to ale jako celek srovnám s verzí od Melindaleo ... Tam Melindaleo alespoň pěkně vymyslela, proč Harry jakožto viteál nezemřel. Bitva o Bradavice, schovávání Malfoyů, bitva na svatbě, připojení Jinny k Harrymu, Ronovi a Hermioně (tři mušketýři taky byli přece čtyři!), Umbridgová jako ministryně kouzel, rozprava Harryho s Brumbálem a ostatními mrtvými (zbožňuju tu pasáž, jak mrtvý Sirius odbíhá za Harrym od děvčat u baru), Snape se ukázal jako čiročirý Smrtijed, lepší dědictví po Brumbálovi, ...
Její verze má jenom dvě slabiny - jednak to psala příliš romantická duše zahleděná do Jinny (a proto to "muckání" Harryho s Jinny na pláži) a potom to slepé poslouchání Bystrozorů nařízení Umbridgové, že se mají snažit se Smrtijedy domluvit...

úterý 3. června 2008

Ať žije frameworkování - 2. díl

Dneska jsem si přečetl zajímavý článeček na Sys-Conu, který dokazuje, proč je funkcionální programování lepší než stávající trendy OOP v Javě.

Tím by ani nebyl onen článek tak zajímavý, obzvláště proto, že není logicky korektní a v důkazu excelentnosti JVM jazyka Scala používá mimo jiné metodu, u které sám píše, že je "more difficult to understand":
class CharReader (r: Reader) extends Reader {
override def repeatForEach (f: String => Unit) = {
r.repeatForEach ((s: String) =>
s.toList.foreach ((c: Char) =>
f (c.toString)));
}
}


Mnohem podstatnější je ale následující ukázka kódu:
public static void main(String[] args) {

BeanFactory factory =
new XmlBeanFactory(new FileSystemResource(“applicationContext.xml”));
Reader arrayReader = (Reader) factory.getBean (“arrayReader”);
Reader charReader = (Reader) factory.getBean (“charReader”);

String s = arrayReader.read();
while (s != null) {
System.out.println (s);
System.out.println (charReader.read());
s = arrayReader.read();
}
}

Nikdo nemůže říct, co tento kód udělá, protože veškerá jeho logika je dána ve Springové konfiguraci. Readery mohou být propojeny či mohou být nezávislé, nikdo neví, co vlastně čtou atd. atp. . Sice se to lehce píše, ale odladit to... a případně po někom převzít či se k tomu po roce vrátit...

Proto frameworky raději nepoužívám a pokud ano, pak s velikým odporem. Leda by to byty ty základní, utilitózní, jako je třeba log4J či SaX/DOM. A pokud už nějaký použiju, musí být naprosto jednoduchý a přímočarý, bez jakýchkoli automagismů, jako třeba FreeMarker či servlet container.

Báječná RZ na silnici druhé třídy

Včera jsem jel potřeboval dostat z Uherského Hradiště do Kroměříže. Jdu na mapy.cz a našel jsem si trasu. Všechno po "žluté" silnici první a druhé třídy, takže by to mělo být v pohodě. To jsem ale netušil co mne čeká na silnici 428 mezi Modrou a Zdounkama. Chvíli jsem přemýšlel, jestli fakt jedu dobře, protože jak jsem projel Modrou, dostal jsem se na silnici tak úzkou, že potkat se tam s autem znamenalo téměř zastavit a oba na krajnici. Na těch 16 kilometrech jsem potkal 4. Když jsem po dvou kilometrech odhadl, že fakt jedu správně, rozhodl jsem se, že si to užiju. Takže za čtyří a pedál na podlahu. Jet v tom úseku víc než 90 (a kór když jsem tam jel poprvé) se v klasickém autě rovná sebevraždě, ale i tak můj Scénic letěl. Doslova. Na výmolech si auto vesele poskakovalo a na třech horizontech se mi kola malinko odlepila od země. Dlouhé rovinky přerušené několika horizonty, ostré na sebe navazující vracečky, do véršku a z véršku. Nádherná krajina, přejezd hřebene téměř pořád lesem. Skoro se divím, proč takovou cestu ještě nezahrnuli jako RZ do Barum Rallye.

Kdo rád jezdí rychle, vřele doporučuji. Ale dejte si pozor, abyste mohli v případě potřeby na fleku zastavit. Protijedoucí auta v rychlosti neminete, protože vás strhne krajnice.

PS: Až tama pojedete a směrem na Zdounky, tak až uvidíte modrou branku v plotě, dupněte na brzdy. Žádná značka upozorňující na strašně nepříjemnou levou točku těsně za horizontem. Jenom díky tomu, že jsem tušil, co tam bude (z branky byl vidět jenom vršek a kdybych seděl v nižším autě než je Scénic, asi bych ji neviděl vůbec), jsem to vybral.

středa 28. května 2008

Zdravotnictví - jak z pekla ven

Našel jsem nádherný článek Hany Brixi, stručné shrnutí zkušeností se zdravotnictvím ze států OECD o tom, co po ekonomické stránce funguje a co ne. Přehledné, úderné, sqělé. Stojí za přečtení.
Jenom bych to celé doplnil jednou drobnou notickou. Jsou celkem tři možnosti, jak zlepšit finanční stav ve zdravotnictví:
1) Omezit léčbu hrazenou z pojištění. A je vcelku jedno, jestli kvalitní prevencí a včasným odhalováním nemocí, spoluúčastí pacienta, zamítnutím proplacení úkonů nebo klidně i zabíjením lidí nad 65 let.
2) Snížit podíl zisku z peněz z pojištění. A je jedno, jestli se to promítne pojišťovnám, výrobců, distributorům, lékárnám či lékařům, nebo klidně i betonové lobby. Pojem přiměřený zisk se mi moc líbí.
3)Zvednout množství peněz. Ale ať se tam pošle navíc kolik chce, vždy bude někdo, kdo si to schramstne pro sebe. Tudíž to vlastně řešení není.

Mám-li to shrnout, tak buď toho budou pojišťovny méně proplácet, někomu utáhneme kohouty nebo si všichni plošně sáhneme víc do kapsy. Jiná cesta není. A protože se nikomu nechce do cesty druhé, a protože ta třetí cesta vlastně cesta není, hledá se způsob, jak prosadit bod číslo jedna. Střílet důchodce sice nikdo nebude, ale ani rozumný způsob zavádění omezení výkonů není, jak se zdá, na pořadu dne.

Uloupené Kosovo

Přečtěte si: toto, toto a podívejte se sem.

Závěr si udělejte sami, já si ho udělal.

Zdravotnictví - noční můra

Přiznám se, že jsem si o reformě zdravotnictví myslel své, ale řekl jsem si, že nějak bylo a nějak bude. Ale po přečtení tohoto článku se mi zježily vlasy hrůzou na hlavě. Chápu, že Britské Listy už dávno nejsou tím, čím bývaly před jedenácti lety, kdy jsem jako přílohu Neviditelného Psa pravidelně čítával, a že článek obsahuje spoustu účelových žvástů, ale vzájemné propojení oněch lidí a firem s Ministerstvem zdravotnictví by měla posoudit moc soudní, protože tady se jedná o střet zájmů jak kráva.

Velice pikantní je pak na stejném serveru obsáhlé vyjádření vedoucího tiskového odboru České Lékařské Komory pana Michala Sojky. Je také dobré si k celému tématu prostudovat web České Lékařské Komory.

Posouzení nechám na Vás. Ale já asi půjdu stávkovat.

Aprílové vydání TheServerSide, ale 28.května

Když jsem dnes dostal mailem sčot TheServerSide, trošku jsem si ho procházel. Po přečtení tohoto článku jsem došel k názoru, že se musí jednat o aprílový žert. Joseph Ottinger, editor TheServerSide na plný úvazek, píše, že bez schopnosti rozpoznávat sémantiku kódu půjde Java do kytek. A na čem to dokazuje? Uvádí příklad rozhovoru:
P:To, co bych chtěl, je x.contains(y)

G:Jasně, je jedna metoda v Collection API, která, myslím, dělá to, co bys chtěl.

P:Ale moje kolekce se nejmenuje x!

Představa autora je taková, že někdo si stáhne z webu kus kódu (v tomto případě příklad na použití contains(), cut&paste-ne ho do svého a Java sama nějak automagicky pozná, co vlastně měl na mysli!
Proto jsem použil akronymy G jako Guru a P jako Pitomec.
V diskusi ke článku je jeden příspěvek, který naprosto přesně vystihuje situaci:
Jasně, Java půjde do kytek, protože mi každé ráno sama od sebe neuvaří kafe...


A na závěr to nejhorší. Tento článek má odkaz v mailu, který mi přišel! Na hlavní stránce! Pokud takto má vypadat qalita článku tohoto serveru, tak buď si z lidí vystřelili, nebo je tu úpadek jak prase.

PS: Chtěl jsem odpovědět na příspěvek. Použil jsem své platné přihlašovací údaje. Dostal jsem Invalid username/password. Nechal jsem si poslat email přes Forgotten your password?, došly mi stejné údaje, jako jsem zadával. Zadal jsem je znovu přes C&P a bác ho - pořád invalid username/password.

čtvrtek 22. května 2008

Epochy počítačového světa

Sridhar Vembu napsal nádherný článek IBM, Microsoft & Google Eras of Computing, ve kterém rozebírá, proč Microsoft není nové IBM a proč Google není nový Microsoft.
Rozděluje epochy počítačového světa na:
  1. Dobu IBM
  2. Dobu Microsoftu
  3. Dobu Googlu

Já osobně bych přidal ještě dobu předpotopní, ale ta není zas až tak podstatná pro onen rozbor.

První epoše jednoznačně dominuje IBM a jeho infrastruktura Mainframů. Uzavřená, proprietární architektura, kde nebylo příliš prostoru pro dodávky třetích stran. IBM poskytovala hardware včetně periferií, software, implementátory, podporu. Ostatní firmy více méně živořily na periferii počítačového světa dodávajíc pouze levnější náhražky, které se často potácely nad propastí patentové ochrany IBM.
V té době platila základní poučka:
  1. Zákazník koupí řešení je od IBM, protože je nejlepší.
  2. Pokud ne, platí pravidlo číslo jedna.

Jenomže IBM udělala osudovou chybu. A ta se jmenuje IBM PC.

IBM zkonstruovala na tu dobu naprosto převratný počítač a PeCka se staly od té doby dominantním systémem a nahradily jejich mainframy. Ale co je špatného na převratném počítači?
  • Neměli vlastní operační systém. Místo vývoje vlastního si nechali nabulíkovat MS-DOS, který v době obchodu navíc ani neexistoval. A nejen že ho IBM nekoupila, ona se dokonce zavázala jej prodávat spolu s každým PíSíčkem za desítky dolarů kus. Tím vytvořila monopol na OS pro IBM PC.
  • IBM PC se stal prvním hardwarově otevřeným systémem. To je sice výhodné pro celý svět, ale ne pro IBM. Vše bylo dobře zdokumentováno s jedinou výjimkou: BIOSem. Tento šváb byl černou skříňkou, která měla zaručit IBM monopol na dodávku PC. Jenomže přišli kluci z Compaqu a na základě specifikace, jak se BIOS chová, si udělali vlastního švába. IBM neuspěla u soudů s žalobou na porušení autorských práv a konkurence na poli dodávek kompletních počítačů byla na světě. Jenomže všechny IBM PC kompatibilní počítače byly postaveny na součástkách třetích stran, z nichž nejdůležitějším je bezesporu procesor. V té době nebyly klony, takže trh počítačů se drobil, ale všechny měly v sobě procesory od Intelu. Další monopolista bohatl, ale IBM mělo čím dál menší podíl.

Tímto dalo IBM vzniknout dvěma monopolům, Intelu a Microsoftu. A tak se dostáváme do další doby, éry Microsoftu.

V době masového rozšíření počítačů nebylo v silách Microsoftu ovládnout veškerý trh se software, jejich hlavní příjem plynul pouze z MS-DOSu a později systému Microsoft Windows. Vznikl tak nový termín: nezávislý poskytovatel programů (ISV, Independent Software Vendor). Byly založeny desítky tisíc softwarových společností, které chrlily různé druhy programů pro systémy MS-DOS a MS Windows. Přímé konkurenční programy (jako OS/2 či Dr-DOS) se nerozšířily, a to buď díky jejich nekompatibilitě se systémem nebo díky testům Windows, zda běží právě nad MS-DOSem.

Vše probíhalo podle plánu, Microsoft se postupně vrhal na další a další odvětví a díky své síle a schopnému marketingu i zde získával monopol. Ale i on udělal chybu.
Microsoft se nesoustředil na svět počítačových sítí. Veškerou síťařinu řešili třetí strany, z nichž dominantní roli hrál Novell. Tyto dvě firmy se báječně doplňovaly a všechno fungovalo, jak má. Jenomže se objevil fenomén Internetu.

Microsoft Internet plně ignoroval. V době, kdy svět byl už propojen pomocí TCP/IP, se soustředil na Novell NetWare a přišel s Windows 3.11 for Workgroups s vlastním síťovým protokolem pro lokální sítě. Jenomže už tu byl Web, mohutně se rozšiřovalo používání emailů a news, byl tu Netscape, byly tu Java Applety.

Microsoft přišel s novým operačním systémem Windows 95 a v jeho rámci s Internet Explorerem. Tak se kromě boje operačních systémů (proti OS/2 Warp) rozhořela bitva na poli prohlížečů. Obě Microsoft vyhrál. Ale jenom zdánlivě. Microsoft totiž bojoval, jak je jeho zvykem, ne zrovna v rukavičkách. A tím si proti sobě poštval téměř celý svět.

Ale to byl jenom začátek. Pak přišly další osudové chyby. V té době se totiž začínají prosazovat dva nové fenomény:
  • poskytování služeb na Internetu
  • svobodný software

Co se týká poskytování služeb, Microsoft nasadil vlastní MSN. Jenomže si šíleně naběhl a tento projekt šel do ústraní. Tak koupil jednu z nejznámějších webových aplikací, HotMail. Jenomže díky tomu, že svět nevnímal Microsoft nijak pozitivně, popularita HotMailu klesla. Díky oné (ne)popularitě nakonec ztroskotal i nákup Yahoo! I vyhledávač od Microsoftu není přes své qality příliš populární.

Jinou kapitolou je Svobodný Software. Díky operačnímu systému Linux, webovému ekosystému Apache-Perl, ale hlavně díky masivnímu šíření Internetu se stává fenoménem celosvětového významu. Místo jeho adopce v něm vidí Microsoft velkého konkurenta a bojuje proti němu, a to opět hodně nevybíravým způsobem. A zdá se, že vyhrává. Projekt Mozilla, nástupce Netscape Communicatoru, postupuje vpřed pouze pomalu. Linux není jako pracovní stanice použitelný, pouze na straně serveru si Microsoft nevede zrovna dobře. Linux získává čím dál větší procento trhu, navíc se tu objevuje další konkurent, Java, a to hlavně díky Apache JServ. Microsoft se tedy soustřeďuje na boj na této frontě. Jeho hlavní zbraní má být .NET framework s jeho C# a SOAPem. Nezískává sice monopol, ale poměrně velké procento trhu.

Mezitím ale začíná projekt Google. Místo boji s komunitou kolem svobodného software z ní vyrůstá. A komunita se ukáže být pro šíření povědomí o Googlu naprosto nepostradatelnou a "Google It!" se stává velmi častou odpovědí na jakoukoli otázku. Na oplátku on podporuje komunitu a jdou si pěkně ruku v ruce k lepším zítřkům. A tak Apache už není jenom webserver, máme tu FireFox a OpenOffice, Linux (za kterým stojí takové firmy jako IBM či Novell) i OpenSolaris (Sun), NetBeans a Eclipse, Wesnoth i TORCS, Perl i PHP či Ruby, MySQL i PostgreSQL.

Po etablování Googlu jako jedničky na poli vyhledávačů se pouští do dalších projektů, z nichž i mnohé kupuje. A i on je prosazuje díky své síle. Vzpomeňme Google Groups či GMail. Dalším úžasným marketingovým tahem je projekt AdSense, který se stává fenoménem. Mohu mít na stránce reklamu a mít za ni zaplaceno, aniž bych musel pracně shánět inzerenty. Paráda. No a tento blog je na Bloggeru :-)

Každá éra je tedy symbolizována jedním De Facto monopolem.
IBM vládla, protože dodávala nejlepší a komplexní řešení.
Microsoft vládl, protože byl první a uměl z minima software (často s qalitou nevalné úrovně) silou marketingu (a praktik, které často skončily u soudu) vydolovat maximum.
Google vládne, protože jej podporuje komunita.

Musím se přiznat, že by mne zajímalo, kdy doba gůglovská skončí a co bude po ní.

čtvrtek 15. května 2008

Geniální slovní obrat

Právě jsem se s jednou známou bavil o nákladech na kadeřníka. Když došlo na konkrétní částky, řekla:

Vždycky se do té přes pětistovky vejdu.

Krásná tautologie.

Jak jsem se zasmál při dotazu na hotline

Myslím, že fšichni znáte onen otřepaný fór o jednom středisku podpory. Ale pro neznalé:
Pilot malého letadla se ztratí v mlze. Jak tak letí, vynoří se mu po pravici výšková budova. I začne létat kolem ní a zavolá: "Haló. prosím, kde to jsem?" Odpověď zní: "V letadle." Našež se pilot zaraduje, namíří si to na jihojihozápad a šťastně přistane na svém mateřském letišti. Jak je to možné? Jenom v RedMondu mohl na svůj dotaz dostat pravdivou, leč naprosto nicneříkající odpověď.


Ale teď mám lepší fór.

Před deseti dny jsem řešil problém, jak dostat dvě aplikace, které jsme si koupili, do jednoho TomCatu. Bohužel jedna z nich (ZyXEL Vantage) používá ohákovaný TomCat, takže do něj nejde nadeployit aplikace s jiným jménem než ROOT a vrts (fakt, nekecám) a tak jsem na hotline k druhé aplikaci (Passport od ComInfa) odeslal dotaz, co je potřeba zařídit proto, aby fungovala aplikace na jiném portu (triviální přechroustnutí na jiný port nezabralo). Do dnešního dne jsem nedostal odpověď.
Tak jsem se rozhodl, že jim napíšu znova (třeba jim to skončilo mezi spamama, kdo ví). Omezil jsem se na co nejméně obecných slov, použil pár IT Termínusů Technikusů, abych se fakt ujistil, že to spam-filter neodchytí. A odeslal.
V mžiku jsem měl zpátky odpověď. A její útržky se zaiksovanými osobními údaji si musíte přečíst, to se jinak nedá:
Dobrý den,
děkuji Vám za Váš email.Momentálně jsem mimo kancelář a nebudu tak moci zpracovat Váš e-mail. Učiním tak co nejdříve to bude možné, nejdříve však 20.5.2008. V případě neodkladné záležitosti kontaktujte prosím mého zástupce xxxxxxxx na tel. čísle +420 6xx xxx xxx. Vždy je Vám také k dispozici Hotline na emailu hotline@cominfo.cz či na stejném telefonním čísle.


Pokud si o tom taky já myslíte své...

úterý 13. května 2008

Něco o Xenofobii a imigrantech

Po přečtení tohoto článku na Novinkách a zabrouzdání na onu policií sledovanou sajtnu jsem se jednak příšerně nasmál (podívejte se na http://www.chceteho.cz, urcite se pobavite taky ;-) ) rozhodl napsat něco o svém postoji ke Xenofobii a imigrantství.

Hned na úvod musím pro případ, že by mne chtěl někdo hanobit pro urážku národa a rasy, uvést, že sám osobně jsem tolerantní antirasistický ateista se sklonem k valašské národní hrdosti, patriotismu, antinacionalizmu a antiextremismu (hlavně tomu nechutnému pravému). Mějte toto prosím na paměti.

Ale zpátky k problému. Bohužel musím konstatovat, že s hlavní nosnou myšlenkou onoho policií sledovaný Webu musím souhlasit. Obrovskou vlnu přistěhovalectví, která právě probíhá, která díky globálnímu oteplování bude ještě sílit a která zasáhla hlavně Evropu, lze bez problémů srovnat s počátky kolonizací Severní Ameriky. Není to přehnané, je to skutečnost. Celá americká kolonizace závisela na jedné dívce, které se zželelo oněch pár slabých, nemohoucích lidiček, kteří utekli ze své vlasti (a je už teď jedno před čím). Za sto let je oni slaboučcí začali vyvražďovat.

Tehdy totiž udělali indiáni (a stejně tak původní obyvatelé Austrálie, ach jak je ta historie nepoučitelná) jednu osudovou chybu. Nechali je žít svým vlastním životem. Kolonisté nechtěli splynout s indiány. Nechtěli se naučit jejich způsob života. Přivezli se s sebou svůj. Své náboženství, své zvyky, své zlozvyky. Prostě celou svou kulturu, před kterou mnozí z nich prchali. A jak všichni víme, když dojde ke střetu dvou kultur, jedna musí zákonitě získat dominantní postavení. Ale protože oni osadníci se nehodlali podrobit, začali si stavět mocná opevnění, aby si svou kulturu ochránili. Založili si svá ghetta.

Každé ghetto jednou začne být těsné, a jim celkem brzo, a tak se začali rozpínat. Stavěli další a další ghetta, začali je spojovat, začali rozšiřovat území ghetty ovládaná. Každé rozšiřování je VŽDY na úkor někoho. V Severní Americe, ale i v Jižní i v Austrálii to bylo na úkor původních obyvatel. Pokaždé, když si původní obyvatelé uvědomili, že už jim moc ustupují, začali se bránit. Vojensky. Ale bylo už pozdě. Logika je totiž naprosto neúprosná. Nebudu se přece rozpínat, když na to nemám. Když nejsem přesvědčen, že mi to projde a že na tom vydělám.

No a vezměmež si paralelu se současnou vlnou imigrantů. Přichází k nám a přináší si s sebou svoji kulturu. Je jejich, v jejich očích je lepší než naše, jinak by se přizpůsobili té naší. Zakládají si ghetta. A protože jich přichází čím dál víc, ghetta se rozšiřují. A sílí. My to tu nijak závratně nepociťujeme. Buďme rádi. Jinde v Evropě, kde jsou komunity mnohem silnější, začínají mít strach. Vzpomeňme například na nepokoje ve Francii.
S tímto komunitním systémem je hodně spojeno i rekrutovaní mladých islámských radikálů (rozumějme členů hnutí typu Al-Kaida). Kdyby přejali kulturu země, do které přišli, nebouchlo by v Londýně metro.

Ale zásadní otázka je ale jiná: proč k nám proudí takové davy a jak se k nim zachovat? Já osobně vidím principiálně tyto důvody imigrace:
* útěk před válkou
* političtí uprchlíci
* náboženští uprchlíci
* ekonomičtí uprchlíci

Co se týká útěku před válkou, tak tady je to nejhorší. Tady je potřeba si uvědomit, jaký podíl na oné válce má ta která kultura. Tady se nedá paušalizovat. Každopádně země, která mi nabídla pomoc v okamžiku, kdy mi šlo o holý život, si zaslouží moji plnou podporu, obětavost, pokoru a snahu o začlenění se do jejího života, nikoli o nějaké podrývání života v této zemi. A tito lidé se většinou vracejí, protože v danou chvíli odejde velká část jednoho národa. A utekli jenom proto, že u nich doma někdo dočasně řádil.

Političtí či náboženští uprchlíci jsou si v tomto velice podobní. Pokud někam odejdu z takovýchto důvodů, tak přeci proto, že kultura, ze které pocházím, není můj šálek čaje a že hledám něco jiného. Proto se v cílové natrvalo usazují. Jenomže tito lidé si chtějí ponechat pojítko mezi svými rodnými, přeci jenom to jsou ti, od kterých očekávají pomoc. A jejich hlavní společné pouto je jejich kultura. takže to, od čeho utíkali, naopak dotáhnou na nové místo.

Ekonomické uprchlíky, kteří se nepřizpůsobí kultuře hostitelské země, bych byl hlava nehlava. Proč tak asi je jejich domovina ekonomicky tak špatná? Hodně to má na svědomí právě kultura oné země. Tak ať ji sem netahají.

Evropa tak stojí před obrovským mezníkem. Humanismus, který není nikde na světě tak patrný jako v západní Evropě, nám v době hladomoru, nacionalistických a náboženských válek brání se uzavřít před trpícími z celého světa. Na druhou stranu ale nikdo z "původních Evropanů" nechce přijít o svůj způsob života. Alespoň já určitě nehodlám konvertovat na Islám.

Máme tady historické zkušenosti z Ameriky a Austrálie. Máme tu stávající potíže s legálními, ale hlavně ilegálními imigranty. Máme tu prognózu dalšího exodu Islámského obyvatelstva. Měli bychom se zamyslet, jak ochránit svoji kulturu, svůj způsob života dřív, než už nebude co zachraňovat. Nehodlám se dožít doby, kdy budou pravda slova jednoho synka marockých přistěhovalců do Francie:

Učitelka mu dala pětku za neznalost v hodině matematiky. A on jí řekl: "Však si dovoluj, za pár roků budete vy bílí v menšině a my vás vyženeme jako prašivé psy"

Když to shrnu - nemám nic proti lidem, kteří k nám přijdou z jakéhokoli počestného důvodu, pokud se ale budou chovat podle pravidel hostitelské země. Navíc se musí chovat minimálně tak dobře jako průměrní obyvatelé, protože nikdo nestojí o přivandrovalce, kteří jsou na obtíž.

Na závěr jenom malé připovzdechnutí:

Jak říká klasik: Život je neustálá změna a beze změny není života.

Ale přijít o všechno díky stěhování národů, to mi příjde až příliš kruté.

středa 7. května 2008

Výstižné vysvětlovací praktiky

Přes TSS a jeho OSGi for beginners jsem se dostal k http://improbable.com/ig/. Musím uznat, že obě myšlenky, a to jak imaginární Nobelovy Ceny, tak nutnosti vysvětlit svůj objev během 24 vteřin s možností dodat sedmislovné shrnutí, je naprosto báječné. Asi se to budu muset naučit dělat.

úterý 6. května 2008

Jak Microsoft ukazoval instalaci Perlu a PHP

Jak tady píše Wouter na svém blogu, sám velký Microsoft vystavil na jeho Get The Facts dvě videa názorně ukazující, jak je jednodušší instalovat Perl a PHP na Wokna než na Linux. To prostě musíte vidět.

Qůli objektivitě shrnu srovnání dvou instalačních procesů:
  • Ubuntu: Pomocí apt-get se stáhlo z netu to, co jste chtěli, včetně balíčků nutných qůli závislosti. Instalák mod_php udělal vše, instalák mod_perl nerestartoval apache, to bylo třeba udělat ručně. Do správných adresářů nakopíroval perlový a phpkový skript. PHPko fungovalo hned napoprvé, perlový skript bylo třeba chmodnout a+x.

  • Windows: jak PHP, tak ActivePerl měl už staženo. To je celkem hustý podfuk, tady by Ubuntu vyšlo DALEKO lépe. Spustil dva instaláky, vyčarodějoval si správnou konfiguraci (oboje jako CGI). Perl musel na IIS povolit. Do správných adresářů nakopíroval perlový a phpkový skript.

Na základě těchto dvou screencastů dokázal, že na Woknech je to lepší.

Nechápu jejich srovnání. Nevím, co chtěli dokázat. Použité Ubuntu vychází daleko lépe. Abych Woutera parafrázoval, Microsoft ukázal, jak během pěti minut nainstalovat pomalou a méně použitelnou konfiguraci Perlu a PHP (oboje přes CGI, takže například PHP nebude umět HTTP session či perzistentní spojení na DB) pod IIS a oproti tomu postavil návod, jak během ČTYŘ minut zvládnout instalací rychlého a plnohodnotného Apache s Perlem a PHP (mod_perl a mod_php) na Ubuntu.
Směju se až se za břícho popadám.

YAbadabaHOO!

Celkem se zájmem sleduji boj Microsoftu o Yahoo!. A to hned ze dvou důvodů.
  • mám velmi vyhraněný vztah k oné výše zmiňované firmě, což je patrné jak z kategorie Linux mého blogu, tak třeba z mého členství v CZLUGu. Linux používám od jeho prvopočátků a každé používání Billovy pomsty je pro mne utrpením.

  • mám celkem vřelý vztah ke společnosti Google.
Google je historicky třetí vyhledávací službou webu, kterou jsem kdy používal.
V dobách mého studia, tedy dřevních dobách pavučiny, byl jediný solidní vyhledávač Altavista(řečená Astalavista). Po panelové diskusi na Invexu léta páně 1996, kdy zástupce firmy Digital (později Compaq, později HP) prohlásil, že firma Digital zvažuje zpoplatnění vyhledávače a zavedla banerové reklamy, protože chce, aby se jim projekt vyplatil, jsem si uvědomil, že nemá smysl podporovat ani tohoto monopolistu a díval jsem se jinam.
Přešel jsem na vyhledávání přes Seznam (žeby proto, že je Linuxu daleko více nakloněn než jiné konkurenční portály, které třeba přímo deklarují svoji spolupráci s Microsoftem?). Tomuto portálu jsem věren již 13 rok.
Ale v roce 2000 mi můj indický kolega ukázal Google. Okamžitě jsem se přeorientoval. Od té doby nevyhledávám, ale Gůgluji či ptám se bratra Gůgla. V té době měl mít Google pod sebou farmu tisíců RedHatů, což byl další důvod :-)

A tak jsem se zhrozil, když jsem zaslechl, že Microsoft chce koupit Yahoo!. Už jsem viděl, jak nepřítel číslo jedna, monopolista, ještě posílí svůj monopol o oblast Internetu a stane se nejen všudypřítomným, ale i všeobjímajícím.

Proto jsme byl velmi mile přeqapen, když jsem si přečetl, že Steve Ballmer (vzpomínáte na jeho úžasnou šou, kdy asi dvě minuty chodil po pódiu a skandoval:" Developers, developers, developers, developers,...."?) zatroubil na ústup. Sice je to prý podle analytiků jenom úhybný manévr, protože Microsoft VELMI o Yahoo! stojí (a prý i o Seznam, i když to Ivo Lukačovič vehementně popírá a já doufám, že má pravdu), ale i tak jsem měl velikou radost. Yabadabadoo!

Doufám, že ke sňatku nedojde a Yahoo! se bude ubírat spíše směrem k avizované spolupráci s Googlem.

středa 30. dubna 2008

Jak na JBossí WebServisy v IDEA

Po několika dnech Googlování a pokusů a omylů se mi konečně podařilo rozchodit první WebServisí komunikaci klient-servisa na zákeřné kombinaci: Windows XP, Sun J2SE 1.6.0_5, JBoss 4.2.2GA, IntelliJ IDEA 7.0.3

Co je třeba udělat:

  1. nainstalovat ony zmíněné produkty :-)
  2. nepoužívat implicitní JAVA_HOME/jre/lib/endorsed adresář, protože se buď nepodaří zkompilovat vygenerované stuby nebo začne řvát JBoss
  3. stáhnout si a nainstalovat jbossws patch:

    1. rozbalit (ideálně hned vedle jboss-4.2.2GA, ať to máte pohromadě)
    2. přejmenovat JBOSSWS_HOME/ant.properties.template na JBOSSWS_HOME/ant.properties
    3. v JBOSSWS_HOME/ant.properties nastavit propertu jboss422.home na JBOSS_HOME (např ../jboss-4.2.2GA)
    4. v JBOSSWS_HOME/build/build-deploy.xml odstranit závislost targetu deploy-jboss422 na undeploy-jboss422 (jinak na Vás zařve, že nemůže smazat soubory v JBOSS_HOME)
    5. pokud není ant v cestě, tak je třeba nastavit
      set "ANT_HOME=JBOSSWS_HOME\tools\ant"
      set "PATH=%ANT_HOME%\bin;%PATH%"

    6. v JBOSSWS_HOME spustit ant deploy-jboss422 - tím se do JBOSS_HOME/lib/endorsed nahrají patřičné jary JAXBčka


  4. napsat si servisu (Web a WebService (JAXB2.1, nikoli Axis))
  5. nadeployit servisu do JBossu
  6. založit projekt pro klienta (WebService client, JAXB2.1, nikoli Axis)
  7. vygenerovat stuby z WSDLka WebServisy
  8. upravit example.HelloWorldClient tak, aby zavolal onu servisu
  9. vytvořit Run Configuration pro klienta (typ Application)
  10. do VM Parameters dát "-Djava.endorsed.dirs=C:\Documents and Settings\tapik\.IntelliJIdea70 \system\webservices\jaxws-ri-2.1\"
  11. spustit a doufat, že funguje

Pokud funguje, je vymalováno.

pondělí 28. dubna 2008

Naše první keška

Zapojili jsme s rodinkou do celosvětové braně-orientační hry Geocaching a toto je náš první úlovek. Keška v Přílepském zámku.
 
Posted by Picasa

pátek 25. dubna 2008

IDEA WebService plugin a JDK 1.6

Po šesti letech zkušeností s WASPem (alias Systinet Server for Java) jsem se vrhl do implementace WebServisy, kterou lze nadeployit do JBossu bez nutnosti jakékoli další knihovny. Tak jsem zvolil JavaWS.
Ninstaloval jsem si IDEA WebService Plugin, juknu se letmo na tutorial, zkusim si spustit example webservisu a bac ho:
The exception com.sun.xml.ws.model.RuntimeModelerException: runtime modeler error: Wrapper class example.jaxws.SayHelloWorldFrom is not found. Have you run APT to generate them?
Tak to jsem teda čuměl jak puk. Řeknu si No nic, ask Google. Googlil jsem hodinu, prošel jsem si dokumentaci k JavaWS, JBoss WS, Idea Webservice Plugin. Jediné, co jsem našel, že všem fungovalo, bylo nastavit java.endorsed.dirs na adresář s javaws dodávaný k IntelliJ IDEA. Furt nic. Zkoušel jsem už různé obskurní řešení typu @WebServiceProvider, ale furt nic. Nakonec jsem našel toto naprosto triviální řešení.
By default generuje JavaWS ve formátu WRAPPED, ale já po něm požadoval chování BARE. Stačí tedy nastavit:
@SOAPBinding(parameterStyle=ParameterStyle.BARE) a je po ptákách.

čtvrtek 24. dubna 2008

SMTP-AUTH Postfixem na OpenSuSE

Nějakou dobu jsem se odhodlával k rozchození kryptovaného SMTP-AUTH na mém (lépe řečeno našem společném s Maťkou a Michalem) serveru. Při představě rekompilace a rekonfigurace postfixu, který tam bez potíží běží už pár let a je to poměrně důležité místo, navíc bez možnosti ho otestovat jinde v ostrém provozu, mě celkem šimralo v okolí žaludku.
Chystal jsem se postupovat podle HOWTO od Patricka Ben Koettera. Všechno jsem si nachystal, když tu mne osvítil já nevím kdo a napadlo mě ještě chvilku Googlit. A vygooglil jsem pravou perlu: OpenSuSE 10.2 Perfect Setup od falka.
Tato stránka krok za krokem přesně popisuje co dělat, když chcete rozchodit OpenSuSE 10.2 box jako ISP/hosting server. Sqělé počteníčko! Dík, falko!

středa 23. dubna 2008

Krátké oRESTování

O RESTu se všude vedou dalekosáhlé debaty. Například zde se Vlasta Vávrů snaží přijít oné věci na kloub.
Nejsem sice kdovíjaký REST-guru, ale svoje si k tomu řeknu:
* REST je o zdrojích (resourcech). Každý zdroj má svou jednoznačnou identifikaci - URI. Po dobu jeho životnosti pod tímto URI vždy a za každých okolností najdete tento zdroj (jestli je to URLčko nebo URN do repozitáře je buřt). Každý zdroj JE STAVOVÝ. Minimální sada stavů je jsem - budu - byl jsem. Představíme-li si jako zdroj seznam členů CZLUGu, je jasné, že se bude v čase měnit. Ale pokaždé dostanete logicky totéž, aktuální seznam členů. No, aktuální, RESTózní architektura umožňuje plnohodnotné interceptory, kde například může stát cache, která vrátí seznam klidně včerejší. I o tom REST je. Data nemusí být vždy aktuální.
* důležitou vlastností RESTózních aplikací je omezená množina operací, které lze s daným zdrojem provádět. Proto je HTTP RESTózní, má čtyři hlavní operace GET, POST, PUT a DELETE.
* komunikace MUSÍ BÝT BEZESTAVOVÁ, tedy komunikace nesmí zahrnovat stav klienta. To ale neznamená, že sezení jako takové je v RESTu nesmysl. Pouze jeho řešení pomocí sušenek je nepřípustné. Mám-li sezení zakomponováno do URL, jsme v pohodě. Samo sezení se stává zdrojem. Dostávám se tak do situace, kdy logická operace přidej produkt s URI:XY do košíku patřící sezení s URI:SSS (třeba HTTP POST SSS produkt=XY) bude mít za následek vždy to totéž a o to právě v RESTu jde. Dalším problémem pro bezestavovost komunikace jsou <INPUT TYPE="HIDDEN">. Tyto jsou v HTML zavedeny právě pro udržení stavovosti komunikace, čili typická antiRESTóznost.
Doufám,že si někdy najdu čas a všechno, co o RESTu vím, sem napráskám.

Fotomapy alá seznam.cz

Na Ilblogu jsem zaznamenal spuštění nové služby - foto.mapy.cz. Nemá smysl komentovat funkcionalitu, to se musí vidět. paráda.
Už si žhavím foťák...

pondělí 21. dubna 2008

Tak to ještě se mnou není tak hrozné

O víkendu za mnou přišel bratranec s prosbou, jestli bych mu nepomohl s řešením domácího úkolu z geometrie pro jeho dceru, studentku druhého ročníku ekonomky. Danou úlohu neměli v učebnici, neprobírali ji a jejich kantor prohlásil, že to mají udělat selskou úvahou. No zkrátka nedali to.
Zadání je vcelku triviální. Zkonstruujte trojúhelník, pro který platí: |AB|=4cm, v(c)=3cm, úhel ACB=60 stupňů.
Uznávám, že je to trivka. Ale sám jsem byl přeqapen, že jsem to vypotil bez dlouhého přemýšlení a bez nutnosti použít literaturu, i přes propast 16let od maturity, kdy jsem naposled rýsoval.
Ti z vás, kterým se nechce nad řešením přemýšlet, najdou postup řešení v komentářích.

pátek 18. dubna 2008

Nepoužívejte CORBU, smrdí, aneb rychlost řešení chyb v Sun JDK

Tušil jsem, že rychlost řešení nebude přílš vysoká vzhledem k množství chyb, ale co je moc, to je někdy opravdu příliš.
V Barcu máme docházkový systém, který je řešený appletem komunikující se systémem přes CORBU. V JDK 1.4.2 fungoval naprosto spolehlivě. Při přechodu na 1.5 mu přestala chodit CORBA. Lidé z ComInfa dodali workaround - soubor java.policy obsahující:

// CORBA error workaround
grant codeBase "http://192.168.11.9/watt/jar/*" {
permission java.lang.RuntimePermission "modifyThread";
permission java.lang.RuntimePermission "modifyThreadGroup";
};

Přišlo mi to strašně divné, protože nutnost povolovat práci s Thready považuji za prasárnu. Tak jsem začal pátrat, co za svinstvo tam můžou vlastně dělat. Odpově byla přeqapující - jsou v tom nevinně!

Chybu má totiž na svědomí com.sun.corba.se.impl.transport.SelectorImpl, který na začátku metody run() udělá naprosto samozřejmou věc - nastaví si jméno. Potíž je v tom, že v Appletu je takováto operace by default zakázána! Aby ji bylo možno provést, je třeba si spustit v Privileged módu. Stačí tedy ono volání zabalit do doPrivileged() a máme vystaráno. Jednoduché, fix na deset minut, který navíc může být potencionálně na více místech, takže za hoďku za dvě může být pořešeno celé JDK.
Jenomže to bychom museli být někde jinde. Buga číslo 6203567 byla reportována v 03-DEC-2004 a podle všeho ještě pořád není fixnutá! A to je u reportu jednoduchý kód na její reprodukci včetně patche. Navíc bylo od Sunu před třemi lety získáno prohlášení, že to bude v tehdy příští verzi opraveno. Nevím, ale fixnutí by zabralo méně času než vydání onoho prohlášení :-)
Schválně si na vašem JREčku vyzkoušejte, jestli vám projde! Já dostal:

tapik@bilbo:~> java -version
java version "1.6.0_05"
Java(TM) SE Runtime Environment (build 1.6.0_05-b13)
Java HotSpot(TM) Server VM (build 10.0-b19, mixed mode)
tapik@bilbo:~> appletviewer CorbaTest.html
Exception in thread "Thread-2" java.security.AccessControlException: access denied (java.lang.RuntimePermission modifyThread)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
at java.security.AccessController.checkPermission(AccessController.java:546)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at sun.applet.AppletSecurity.checkAccess(AppletSecurity.java:214)
at java.lang.Thread.checkAccess(Thread.java:1263)
at java.lang.Thread.setName(Thread.java:1050)
at com.sun.corba.se.impl.transport.SelectorImpl.run(SelectorImpl.java:239)

čtvrtek 17. dubna 2008

Ať žije frameworkování

Jakožto člověk, který začínal s trošku obsáhlejším programováním na Didaktiku Gama a v assembleru se mi zvedá žaludek nad dnešním přeframeworkovaném programování. To by nebylo nic divného a ani bych vás tím neotravoval, proti gustu žádný dišputát. Nebýt včerejšího dotazu na konference@java.cz .
Jeden človíček se ptal, jak číst a zapisovat data do XML, když jich má obrovskou tabulku v DB o hodně sloupcích a ještě více řádcích. Hovořil dokonce o desítkách GB dat.
Pokud jde o čtení, tam je to jasné. Je to XML a on nemůže předpokládat nějakou pevnou textovou strukturu a musí tedy využít XML parser. Co mne ale zarazilo, byl dotaz na zápis.
Osobně nepočítám s tím, že by měl všechna data v paměti a chtěl s nimi nějak zásadně při zápisu manipulovat než je prostě odněkud načíst řádek po řádku, provést nějakou substituci na onom řádku a pak jej uložit jako strukturovaný XML element. V čem vidím problém je to, že chlapce ANI NENAPADLO řešit to otevřením OutputStreamu a cpát tam data v textové podobě! Vždyť přece XML je v prvé řadě textový soubor formátovaný tak, aby byl člověkem jednoduše čitelný!

Hodina angličtiny od Elánov

Dneska jsem poslouchal $SUBJ a nevěřil jsem vlastním uším. Dvakrát jsem si vracel onu pasáž. A pak jsem se rozchechtal...
Většina písně je složená z výkladu anglických slov a frází. Tady je první sloka:
Yes je áno a no je nie,
a one je jedna a two je dve,
a hovoriť je speak a dobre je well,
a you've got what you wanted značí, máš, čo si chcel.
a know je vedieť a how je ako,
a watch the Czechs, je pozor na Slovákov,
a go je ísť a out je von,
bože Lendl ten má prachov, chcem byť ako on!

Pro ty málo vnímavé jsem onu pasáž zvýraznil :-)

středa 16. dubna 2008

Java prý prohrává boj o Web

Po delší době jsem zase brouzdal The ServerSide a musel jsem se opravdu zasmát. Přečetl jsem si "Java is losing the battle for the modern web"..., reakci Josepha Ottingera na Java is losing the battle for the modern Web. Can the JVM save the vendors? od Andiho Gutmana. Lidi, číst si některé blog2blog flameware, to je vám fakt někdy švanda. První něco ne zrovna inteligentního vymyslí pro podporu svého tvrzení, druhý to navíc špatně pochopí a polemizuje s tím. No nic.
Přesto je dobré si ona dvě zamyšlení přečíst. Andi se snaží přijít na to, proč je LAMP tak úspěšný a prosazuje se oproti Java EE řešení.
Zaujala mne myšlenka o větší RESTovosti LAMP řešení oproti klasice v Javě, která je podle něj navržena více na Enterprise aplikace a Webový Xicht je tam přidán tak nějak jako navíc. S tou historickou skutečností má dozajisté pravdu. EJB, gró J2EE, vznikaly nezávisle a odděleně od JSDK. JServ jsme používali a EJBoss byl ve stavu nepoužitelném.
Co se týká RESTovosti, tak tady je to dáno geneticky. Spustit CGIčko bylo velice rychlé, obzvláště když byl skript nakešován. Navíc CGI nemohlo být stavové a tak se všechna data předávala v INPUT HIDDEN tazích. Oproti tomu spouštět JVM pro každý request by znamenalo si vyrvat vlasy. Je celkem pochopitelné, že chtěl-li Sun dostat Javu i na serverovou stranu, musel JVM pověsit na ServerSocket. Ono to mělo zase spoustu výhod. Najednou přibyla stavovost a všichni tvůrci Webových aplikací (no, moc nás tehdy nebylo) jásali, protože si mohli data držet v HttpSession. A ano, zde se ztratil REST.
Časem ale došlo k velkému sblížení. PHP dostalo session (ó, jaká to výhoda oproti Perlu, máme podporu session přímo v systému!), J2EE patterny tvrdí něco o bezstavovosti a držení si stavu v DB, což je momentálně jediný způsob, jak si ho drží Perl či Python.
Takže o větší RESTovosti LAMPu to není. Aplikace je tak RESTová, jak se napíše.
Další zajímavý poznatek je o multiprocess versus multithread. Dozajista pád skriptu nemusí nutně znamenat pád celého systému. Ale řekněme si to jinak - od dob mod_php či mod_perl je schopen vzít s sebou skript celý apache. Deadlocky nechrozí jenom zdánlivě - maximální počet spojení na MySQL se při tuhnutí skriptu velice brzo vyčerpá, to mi věřte.
Já si myslím, že hlavní rozdíl je v nasazení. V rámci komunity se vyvíjí především na LAMP ve stylu komunita sobě, komerčnímu světu zase vládne spíše J2EE, protože platící zákazník požaduje záruku stability a pro většinu z nich není ani PHP ani MySQL dostatečnou zárukou. Proto je možno z Webu stáhnout LAMP OpenSource aplikace a vrznout je na svůj LAMP server, kdežto málokdy stáhnete OpenSource .ear .