Letošní WebExpo se skutečně vydařilo. Rozhodně se v něm nevyskytovaly žádné fatální problémy, jejichž jsem byl svědkem minulý rok. WebExpo má oproti jiným konferencím (konkrétně můžu porovnávat se zahraničními Java konferencemi) zvláštní atmosféru. Kromě toho, že se tam můžete setkat s velkým množstvím českých „elit“, je v něm i řada drobností, které potěší a pobaví. Letos mě například dostaly unikátní teasery promítané před každým blokem přednášek s fotkami a krátkým popisem přednášejících osobností se skvělou 8bitovou muzikou na pozadí. Skvělá je také myšlenka moderátorů, kteří uvádějí jednotlivé prezentace a dodávají každé místnosti osobitý nádech. Stánky v prezentační aule jsou na WebExpu ojedinělé – čajovnou počínaje přes letecký simulátor až ke stánku, kde jste se mohli nechat udělat masáž od profíka.
Jak jsem již říkal, nejzásadnější problémy loňského ročníku se podařilo vyřešit – registrace tentokrát probíhaly zcela plynule a hodinová fronta minulého ročníku se letos naštěstí nekonala. Stejně tak programy již byly přiloženy mezi prospekty v dárkové tašce. Trochu výtku bych měl k mobilní verzi webu, která by měla být pro konferenci tohoto druhu standardem (tj. přímou součástí hlavního webu s automatickým redirectem podle koncového zařízení). Letos byla mobilní verze pravděpodobně na jiném serveru a propojení asi nebylo ideální, protože například mně se s existujícím účtem vůbec nepodařilo přihlásit. Navíc jsem ani nikde na stránkách www.webexpo.cz nenašel žádný odkaz na mobilní verzi, takže jsem se o ní dozvěděl až náhodou z Twitteru.
Keynote byla leto vcelku snesitelná, dokonce v ní padlo i pár zajímavých informací od garantů akce za VŠE. Jediná část, která se trochu nepovedla, byl čtený výstup Václava Stoupy, který se mezi ostatními řečníky, kteří dali proslov „z patra“, trochu vyjímal.
Mou první přednáškou byla Architektura škálovatelných aplikací od Michala Táborského, která slibovala sdílení zkušeností ze škálování internetového obchodu Mall.cz, ve kterém je Michal právě hlavním architektem. Nic světoborného nakonec v přednášce nezaznělo, nicméně se jednalo o velmi kondenzovaný souhrn best practices:
- modularizujte svůj systém – budete tak mít volnější ruku při předělávání jednotlivých částí (napoprvé to stejně nikdy netrefíte správně)
- základem je monitoring a měření všeho co je možné monitorovat – jen tak víme, kde jsou úzká místa, která je nutné posilovat
- automatizujte infrastrukturu – tj. deployment proces, instalaci nového prostředí
- výkon serveru je typicky limitován IO operacemi, dřív než se začnete poohlížet po shardingu nebo NoSQL řešení, vyměňte plotnové HDD za SDD
- vše dávejte do VCS a to včetně deployment skriptů a konfiguračních souborů
- všechno, co jde servírovat jako statický soubor, poskytujte rychlým webcache serverem (nginx, varnish, squid)
- cachujte efektivně – kromě cache s časovanou expirací se zamyslete nad efektivním procesem invalidace správné části cache při změně údajů
- co jde provádějte asynchronně
V další přednášce Novinky z konference Build David Grudl sdílel své postřehy z návštěvy této konference v Anaheimu (US). Vše se točilo samozřejmě okolo prototypu nových Windows 8. Základní informace jsou sice už přes týden k dispozici na řadě webů, ale jedna věc je si o tom někde přečíst a jiná je to vidět naživo. To nejzásadnější pro webové vývojáře je to, že s novými Windows se jim otevírá celá nová platforma, pro kterou mohou programovat se stávajícími znalostmi. Jestli jsem to pochopil správně, budou mít k dispozici celou řadu API, které jsou aktuálně dostupné jen .NET programátorům. Znalosti HTML, CSS a JavaScriptu bude možné více než dobře utilizovat i pro čistě desktopový vývoj, což je pro všechny z nás skvělá zpráva. Otázka je, jak hodně bude bude programování prošpikované M$ specifiky, ale i tak, nám to otvírá dveře do úplně nového vesmíru. Zajímavý je i přístup M$ k OS pro tablety – základem bude samozřejmě METRO, ale z něj bude možné se přepnout do rozhraní současné plochy Windows a bude možné tablet používat jako plnohodnotnou PC stanici s klávesnicí a myší třeba přes bluetooth.
Přednášky o Cassandra a MongoDB se zabývaly specifiky obou NoSQL databází a z obou bylo cítit zdravé vystřízlivění z NoSQL hype. Oba řečníci potvrdili to, co se už nějaký ten měsíc odehrává na celé řadě IT blogů. NoSQL řešení nasazujte až ve chvíli, kdy vám nestačí vaše relační databáze. S nasazením a programováním pro NoSQL se nadřete rozhodně víc, než při použití osvědčené relační databáze. Relační databáze mají ve vývoji 30-letý náskok, který se nedá jen tak vygumovat a proto si na skutečně vyzkoušené a optimalizované NoSQL řešení s dostatkem toolingu ještě chvíli počkáme. Ve chvíli, kdy narážíte na limity HW a potřebujete horizontálně škálovat, je načase zvážit použití NoSQL řešení. Znamená to ale, že z některých vlastností ACID budete muset ustoupit (viz. CAP theorem).
Zavítal jsem také na přednášku Jiřího Knesla Test driven development v coffee scriptu, která mne, musím přiznat, trošku zklamala, protože se pohybovala na velmi základní úrovni. Mám za to, že automatizované testování je v dnešní době tak elementární záležitost, že není třeba jeho prospěšnost na konferencích tohoto typu dále opakovat. Automatizované testování, si myslím, ignorují snad už jen ti nepoučitelní a většina profesionálů jej snad už v této době praktikuje (rozdíly jsou už pak jen v kvalitě). Na úrovni Coffeescriptu se prošla jen základní syntaxe, nicméně zazněly zajímavé odkazy na testovací frameworky pro Javascript. Přednáška byla nicméně velmi srozumitelná a řečnické dovednosti Jirky rozhodně nechci snižovat, spíš jen téma mohlo jít více do hloubky (pravda je, že za 30 minut, které na to byly k dispozici, se toho také moc probrat nedá).
Daniel Steigerwald se na WebExpu představil s přednáškou Za hranicemi jQuery, ve které v rychlosti rozdělil současný ekosystém JavaScriptích knihoven na 3 úrovně:
- jednoduché helper knihovny obalující (usnadňující práci s DOM) – jQuery
- vyspělé frameworky s podporou modularizace, dokumentace, kompilace, rámcem pro UI komponenty atp. – Google Closure YUI, Dojo
- komplexní řešení včetně IOC, MVC, šablonovacího systému atp. – AngularJS
S tím, že podle něj, budoucnost spočívá ve frameworcích třetí úrovně (kam teoreticky může spadnout i Googlí Dart, o kterém pár informací uniklo). Celá přednáška se týkala jeho představy o tom, jak se má vyvíjet v JavaScriptu profesionálně. Záměry přednášky jsou velmi bohulibé, ale myslím si, že valná většina současných web devoloperů nemá ambice v JavaScriptu implementovat takové množství kódu, aby tyto rady využila. Pokud je ovšem signifikantní část aplikace implementovaná v JavaScriptu je třeba na vývoj aplikovat podobná pravidla, která standardně využíváme při vývoji server-side aplikací. Tedy – automatické testování, namespacy, IOC, oddělení MVC, dokumentaci, statickou analýzu kódu, refactoring atd. Zdá se mi, že to co již léta známe v Javě se nyní ve velkém dostává do JavaScriptového ekosystému s tím, jak se zvyšuje počet složitých aplikací v něm vyvíjených (např. s nástupem NodeJS).
Mou poslední přednáškou dne byla Serversideness v podání Douglase Crockforda, ikony našeho oboru – autora JSON nebo JSLint. V přednášce Douglas Crockford vyzdvihoval vlastnosti NodeJS ve smyslu ortodoxní asynchronicity a dokonalém využití možností funkcionálního programování, které vede k vysokému výkonu a vyloučení problémů s konkurenčním zpracováním (tj. vlákny). Zde se trochu opřel i do Javy, o které tvrdí, že jako jazyk si nedokázala jasně zvolit, zda má jít o jazyk systémový (tj. podobně jako je Cčko), ve kterém se přímé práci s vlákny nelze vyhnout, nebo o jazyk pro psaní aplikací, kde je naopak práce s vlákny nežádoucí a vede k celé řadě problémů, se kterými se skutečně běžně v našem prostředí potýkáme. Přednáška byla zaměřená spíše teoreticky, ale byla velmi poutavě podaná a hlavně (podle reakcí, které jsem měl příležitost zaznamenat) měla zásadní dopad na celou řadu vývojářů, kteří měli dojem, že o programování v JavaScriptu něco ví. Dopad v tom smyslu, že tato přednáška jim otevřela oči – že dosud nevěděli o tom, že neví (viz. staré perské přísloví). Tohle poznání je zcela zásadní v tom, že je to posune do stadia, ve kterém se nacházím teď já sám – tj. že vím, že nevím a tudíž se chci dál vzdělávat, abych věděl, že vím
To bude pro dnešek vše – o sobotním dni se v tomto článku nedočtete, protože na něm jsem již nebyl. Nicméně pokud vás zajímá zajímá kompletnější výcuc letošního WebExpa, nenechte si ujít agregační dokument na GoogleDocs, ve kterém jsou odkazy na celou řadu zajímavých materiálů a zápisků z jednotlivých přednášek.



Pěkné shrnutí.
S tím WinRT se to má tak, že je to „náhrada“ WinAPI (je to na stejné úrovni, tj. nad kernelem) a výhodou je to, že tohle nové API je dostupné z nativního kódu, .NETu i JavaScriptu.
Metro aplikace využívají jen WinRT a protože je WinRT nové a hezké, bude běhat i na ARMech – více než 10 let staré WinAPI se pro ARMy reimplementovat nebude. Z toho vyplývá, že na ARMových tabletech budou běhat jen Metro aplikace, tj. nebude tam klasický mód. Aspoň tak jsem to pochopil já…
Zajímavý pohled na Crockfordovu přednášku. JavaScript myslím docela ovládám a bavil jsem se o tom jen se stejně „postiženýma“ lidma, a všichni jsme se shodli na tom, že to byla přednáška o ničem
Honzo, jak to bylo s tim mobilnim programem, ta chyba mne zajima (m.webexpo.cz jsme delali my, bezi na AppEngine a behem dne se mi zdalo ze to skaluje hezky). Nebo to bylo tim ze jsme spatne vykomunikovali ktery login/heslo pouzivat? (ten primy redirect z velkeho webu mne taky trosku mrzi ze chybel)
No web fungoval o tom žádná. Bylo to tím, že to neznalo můj účet, přestože mail i heslo bylo v pořádku. Nechtěl jsem to řešit, protože použitelný byl naštěstí i plný web v mobilu. Tj. IMHO problem někde v přebírání účtů.
Pěkný překlep – „best bractices“ … jinak zajímavé shrnutí. Měj se … Ivo(sh)
Covece, me docela prekvapujes (6 piv jako omluva za primocare tykani), ale toto summary me prijde takove zvlastni. Skoro to na me pusobi, jakoze jeden z titanu java sceny, ktery me svou erudici vzdy obohatil, podlehl zvlastnim, a ted nevim jak to presne vyjadrit, svodum/mamenim/lzim/trendum buhviceho a buhvinaco. WinRT krasne rozebral Rene v Dagi/Filemon podcastu a tak nezbyva nez zakroutit hlavou. Javascript ? Hmm. Nic zazracneho a vitez je ten kdo se mu vyhne. NoSQL jasne i bez prednasek… No cele je to takova zvlastni sbirka informaci… konec hlaseni v ceskem jazyce…
Díky Ivo(sh)i … tohle mi uteklo.
@NkD … trošku mi dalo práci dekódovat první větu tvého komentáře, ale jestli jsem to pochopil správně, tak odpovídám: mě tykání vůbec nevadí – naopak.
Taky se mi teda nedaří domyslet si význam i druhé věty (je 6 ráno
) – koho máš pod pojmem „titán Java scény“, který se nechal zmámit?
CZ Podcast (53) s René Steinem mám teprve rozposlouchaný a dostal jsem se zatím k závěru o použitím UML na projektu, ve kterém se se všemi vyjímečně dobře shoduji. Zatím tam myslím o WinRT ještě nic nepadlo, ale těším se na zbytek.
Ad ten Javascript – ještě před nějakou dobou bych s tebou 100% souhlasil, ale teď si myslím, že časy se mění. Už teď je jasné, že z Javascriptu (nebo jeho obdoby – Dart / JS.NEXT) se stává (stane se) plnohodnotný jazyk (tj. jazyk pro psaní kompletního stacku a ne jen jako jazyk pro doplnění funkcionality někde). Teď asi jen pár vývojářů v Čechách může říct, že vyvíjí fulltime v Javascriptu, ale toto číslo se za rok dva výrazně změní. S tím souvisí i ten zmiňovaný rozvoj toolingu a vývojových technik (viz. zmiňované / doporučované návrhové vzory MVC a DI v přednášce Daniela Steigerwalda).
Honzo, jeste k mobilnimu webu – hacek bude asi v tom, ze se mel pouzivat login z badge (stejny jako na wifi). S timhle rozhodnutim jsme neumeli hnout, bylo to jedine prihlasovaci API ktere jsme dostali. Ale je pravda ze to melo byt mnohem lip vykomunikovane (my jsme to na mobilni web pridali hned kdyz jsme zjistili, ze to nikde neni vytiskle, ale uz bylo pozde :-/).
V tom případě musím jen říct: Ahááááá
Tohle mě v tu chvíli nenapadlo a v tom shonu a soustředění se na přednášky jsem neměl moc času nad tím špekulovat. Škoda – přišel jsem o zážitek z vašeho mobilního webu, který musel být určitě super (stejně tak, jako všechny vaše appky).
Věřte mi, že bych šel mnohem radši do hloubky. Ale faktem je, že 90 procent programátorů (v Javě, .NETu, PHP, Javascriptu, Pythonu, prostě čemkoliv, s čím jsem se zatím ve firmách setkal) testy nepíše (a když už píše, 90 procent zdrojáků ve firmě pokrytých testy není).
Je skvělé, že jste už dnes dál a píšete testy na pokročilejší úrovni a přednáška vám přišla základní. Osobně si ale myslím, že ještě tak 4 roky budu muset na konferencích opakovat dokola:
- piště testy
- sledujte chyby
- refaktorujte
Já pevně doufám, že těch procent je výrazně více. Vím, že realita není úplně růžová (viz. třeba http://javicka.blogspot.com/2011/09/zkusenosti-ze-zavadeni-testovani.html), ale jak říkám, komu není rady, tomu není pomoci. O testování a jeho prospěšnosti se tu mluví už víc jak 6 let a to je dost dlouhá doba, aby to těm schopnějším už dávno došlo. Dokonce sleduji, že testování už se začíná standardně učit i na vysokých školách jako součást praktických cvičení, což je důkaz toho, že standardy se přeci jenom už trochu zdvihly.
Doufám … nejsem konzultant a tak čerpám jen ze svých zkušeností a zpráv mých známých