posledním přihlášení, datum -- tedy šablony. Prorazil šablonovací jazyk PHP nad SSI a CGI, v jednoduchosti a graduální učící křivce je síla. Statická část se bouří, argumentuje rychlostí a mladostí “nových” a chce psát moduly v C, případně řešit vše pomocí vkládání přes SSI (server-side includes). Kdo umí vyslovit “CMS” nebo “SEO” bez zakoktání a nainstalovat Wordpress, bere velké peníze.
grafové, dokumentové databáze, 3rd party APIs (více v dalších slidech) JavaScriptaři vymýšlí node.js. Djangisti argumentují neefektivitou, postačující rychlostí a novostí bez knihoven. Kdo umí vyslovit “UX” bez zakoktání a nakreslit čtvereček, bere velké peníze.
by se dal utratit líp, ale co se dá dělat. Byť se tak místy snaží tvářit, pořád to samozřejmě není full-fledged platforma, které jsou rozumné jenom dvě (JVM a .NET CLI).
do systému (po chuncích po buffer flushích), tak se zpracovávají. Člověk díky tomu designuje systémy na tohle zpracování tak nějak defaultně, což je většínou v kontrastu s přístupem jinde. S pamětí to dělá dobré věci.
a rovnítek (editory pomáhají), kód se velmi dobře čte. Vzhledem k tomu, že pokud to výkonnost dovoluje, je čitelnost snad nejdůležitější atributu kódu...
ho v realtime do browseru. Super flexibilní v unix ekosystému...zdarma prakticky na čtyři řádky. Plný funkční kód s HTML bordelem je na https://gist.github.com/3756594
aplikaci se projeví tak, že člověk zapomene zavolat finální callback/render do browseru, tj. žádný traceback, nic. Debugging toho je občas mírně frustrující.
{ var log; return log = 'abc'; }; Pakliže funkce ve vyšším scope neexistuje, správně se vytvoří s var, tj. jenom pro podřízený scope --- výborně, opravuje to jednu z poměrně frustrujících věcí v JS (člověk omylem plevelí globální scope).
log = require('./log'); newFunction = function() { return log = 'abc'; }; ...nicméně pokud už tam stejná proměnna existuje (samozřejmě nezávisle na tom, jakého typu), je místo toho přepsána. To znamená, že funkce nejsou zcela zapouzdřené -- jsou ovlivňovány kontextem ze svého nadřazeného scope. IMO nedobrá volba.
je mladá a kreativní a dynamická a změn zpětné kompatibility se nebojí, s čímž je potřeba počítat. Node samotné už nicméně dosti stabilní je na změny API dává pozor, ekosystém k tomu ještě musí dojít.
za vás nikdo moc neřeší: standardní pattern je výjimky nevyhazovat, ale vracet v callbacích jako první parametr. Stát se to ovšem z vašeho kódu může a je potřeba na to dávat pozor. (Třeba node-raven se to snaží řešit přes raven.patchGlobal, ale funguje to tak nějak všelijak.)
deliver scalable solutions aren’t up at night feverishly rewriting their systems in Node. They’re doing what they’ve always done: measuring, testing, benchmarking, thinking hard, keeping up with the academic literature that pertains to their problems. That’s what scaling in the large necessitates. -- Alex Payne Škálování Když řikám škálování tak myslim cestu ke Škálování, nikoli stránky velikostí čínského eshopu jako seznam nebo centrum.
vzorce. Díky tomu se v čase mění i vhodná řešení. V node.js je člověk zamčen, nemá možnost volby -- All Hail To Mighty Evenloop. Tohle časem člověka může bolet...na druhou stranu, v momentě, kdy řeší takové problémy, tak to znamená, že je na tom dobře.
Proxy Realtime / server push Tam, kde se dájí sdílet data mezi serverem a klientem (tj. javascript-heavy appky nebo při sdílení klíčové komponenty, jako třeba DSL/parseru).
Node is JavaScript. • Node is callbacks & Streams. • Node is not pretending it is blocking when it is not. • Node is not going to include that module. • Node is for building. • Node is a community. • Node is faster. • Node is fun. -‐-‐ Mikeal Rogers Převzato z http://www.mikealrogers.com/posts/the-way-of-node.html , thx & kudos!
problém více nesedí vhodnější technologie, jestli jen neohýbate ty co znáte, protože jste po kotníky zakopání v nějaké komfortní zóně. No a kdyby vám to ve vaší firmě nechteli dovolit...