Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Tai ką dabar darysime su node.js?...

Tai ką dabar darysime su node.js?...

Kodėl JS? Kodėl nodejs? Kam tinka nodejs? Kam netinka ir kodėl ne-nodejs?

760ee07e2a7c2a05ac35a981276c6a29?s=128

Dominykas Blyžė

January 09, 2013
Tweet

Transcript

  1. Tai ką dabar darysime su node.js?... Autorius ( ), 2013-01-09

    Dominykas Blyžė @dymonaz
  2. Bet kuri programa, kuri gali būti parašyta su JS, bus

    parašyta su JS. Atwood'o taisyklė / Atwood's law http://www.codinghorror.com/blog/2007/07/the-principle-of-least-power.html
  3. Kodėl JS? Mažiausiai investicijų reikalaujanti kalba Pasiekiama kiekvienam Vykdoma visuose

    kompiuteriuose, visose OS ...išskyrus serverius (nes serveriuose yra PHP?)
  4. Kodėl JS? “ everybody hates Perl, and not everybody hates

    JavaScript. ” https://twitter.com/horse_js/status/288352517744644096
  5. Kodėl JS, nepaisant jos šlykštumo? Nes nėra kitos išeities. WAT:

    https://www.destroyallsoftware.com/talks/wat
  6. If life gives you Javascript developers, do node.js @oisin https://twitter.com/stevebiscuit/status/218422616367702016

  7. Kas buvo prieš node.js? Server-side Non-browser JS istorija: ASP /

    Active Scripting (~1995?) Rhino (~1997) Adobe Air (~2007) Jaxer (~2008)
  8. node.js (2009) http://www.google.com/trends/explore#q=ruby%20on%20rails,%20node.js

  9. Kodėl node.js auga sprogstamu greičiu? Geras marketingas? Tinkamu laiku, tinkamoje

    vietoje?
  10. Kodėl node.js: greitis V8 Neblokuojanti įvestis/išvestis

  11. Kodėl node.js: API konvencijos Paskutinis argumentas - callback'as Pirmas argumentas

    - klaida f s . r e a d F i l e ( f n , [ e n c o d i n g ] , [ c a l l b a c k ] ) f s . r e a d F i l e ( f n , f u n c t i o n ( e r r , d a t a ) { / * . . * / } ) ;
  12. Kodėl node.js: npm 20k+ modulių Išspręsta versijų problema Modulis A

    @ v1 Modulis B @ v1 Modulis A @ v2 Modulis C @ v3 Modulis B @ v2 Modulis A @ v666
  13. Kodėl node.js: greitas perkrovimas * * #ProTip: nekraukit aplikacijos per

    s s h f s
  14. Kam tinka node.js? "Node's goal is to provide an easy

    way to build scalable network programs" http://nodejs.org/about/
  15. Serveriai ...net jei atrodo baisu "pačiam" rašyti savo HTTP serverį

    Nebūtina viską atlikinėti to pačio request'o metu
  16. None
  17. Privalomoji meh skaidrė 1. Statinis web'as 2. Dinaminis web'as 3.

    AJAX 4. Real-time web'as, HTML5
  18. Real-time komunikacija Web sockets, streaming Video, audio, WebRTC, žaidimai, P2P

    Server sent events
  19. SPA JSON API * nekurkit single page applikacijų, nebent esat

    tikri, kad reikia būtent SPA
  20. Progressive enhancement? Conditional-tier rendering http://functionsource.com/post/conditional-tier-rendering-twitter-achieves-level-5-5-of-the- render-game

  21. Desktop aplikacijos? http://appjs.org/

  22. Skraidantys robotai!!1Ąą! Foto: (c) Remy Sharp http://www.flickr.com/photos/remysharp/8215998053/ http://nodecopter.com/

  23. Node.js trūkumai

  24. Kai reikia daug CPU, geriau nenaudoti Kol vyksta skaičiavimai, event

    loop sustoja. p r o c e s s . n e x t T i c k ( ) Workers Memoization Streams
  25. Neišdojami CPU core'ai

  26. Neišdojami CPU core'ai Leisti kelis procesus ir balansuoti apkrovas cluster:

    http://nodejs.org/api/cluster.html
  27. API vis dar nestabilus v1 gal ir ne už kalnų,

    bet pvz. iš v0.8 į v0.10 pasikeitė Stream'ų implementacija ir šiek tiek API
  28. Reikia dažnai upgreidint

  29. npm: 20k modulių Naudoti Tikrinti github nodezoo.com

  30. Trūksta nusistovėjusių geriausių praktikų Aktyvi bendruomenė twitteryje visada pasiruošus padėti.

  31. Mokymosi kreivė Nepaisant to kaip gerai moki JS, geriausios node.js

    aplikacijų praktikos dar nesusiformavusios. KISS Maži moduliai Architektūra, leidžianti keisti implementacijas TDD
  32. Callback hell Asinchroniškai mąstyti yra sunku. Promises: Q, when.js Async.js

    v a r f s = r e q u i r e ( " f s " ) , Q = r e q u i r e ( " q " ) ; Q . n i n v o k e ( f s , " r e a d F i l e " , f i l e N a m e ) . t h e n ( f u n c t i o n ( c o n t e n t s ) { / * . . * / } ) . f a i l ( f u n c t i o n ( e r r o r ) { / * . . * / } ) . d o n e ( ) ;
  33. Ar node.js jau tinka produkcijai? eBay ( ) LinkedIn (

    ) Microsoft ( ) Yahoo! ( , ) ql.io mobilios aplikacijos API Azure YUI Mojito Trello Walmart
  34. Tai ką dabar darysime su node.js?

  35. Ačiū Skaidrės: , http://dominykas.net/12 @dymonaz +Dominykas Blyžė