Ivan Srba                   Rubyslava, 17.5.2012Powerpoint Templates                                  Page 1
Prívlastky node.jsPowerpoint Templates                       Page 2
Prečo vzniklo node.js?• Lebo Ryan Dahl   „Windows is very important, just like php.“     Powerpoint Templates             ...
Prečo vzniklo node.js?• I/O operácie sú drahéL1-cache                                                   3 cyclesL2-cache  ...
Prečo vzniklo node.js?• Vlákna sú pamäťovo náročné     • Ďalšie problémy: deadlockhttp://blog.webfaction.com/a-little-holi...
O node.js• Serverová platforma  • Založená na Chrome JS runtime V8  • Jednovláknová  • Udalosťami riadená• Určená pre  • A...
Princíp node.jshttp://magnetik.github.com/node-webid-report/            Powerpoint Templates                              ...
Hello worldvar http = require(http);http.createServer(function (req, res) {  res.writeHead(200, {Content-Type:            ...
Modulárnosť• Node Package Management,  NPM • Celkovo až 9950 modulov • Webové frameworky, databázy, web   sockety • Parser...
Web frameworky• Express  • Jeden z najpoužívanejších    frameworkov inšpirovaný Sinatrou• Locomotive  • MVC framework inšp...
Databázy• Relačné databázy  • PostgreSQL, MySQL, MSSQL,    SQLite, Oracle• NoSQL databázy  • Mongo, Hive, Redis, CouchDB, ...
Web sockety• Socket.io  • Knižnica poskytujúca univerzálne    API pre vytváranie aplikácií    pracujúcich v reálnom čase  ...
Použitie node.js• PopCorm • Kolaboratívna platforma • Pre riešenie úloh (vzdelávanie) • Integruje sadu kolaboratívnych   n...
PopCorm• CRUD časť aplikácie v RoR• Kolaboratívne nástroje v node.js• Ako databáza bolo použité MySQL• Na produkcii sme po...
Prečo node.js?• Veľké množstvo dát  • Každá zmena = nová revízia• Potreba synchronizovať obsah v  reálnom čase  • Snaha o ...
Video ukážka• Textový editor    • Etherpad Lite• Kategorizátor• DiskusiaEtherpad Lite: http://etherpad.org/            Pow...
Diskusiavar   app = require(express).createServer()var   io = require(socket.io).listen(app);var   settings = require("./u...
Prijatie novej správyexports.handleNewMessage = function(...) {    var created_at = new Date().getTime();   socket.emit(ne...
Praktické skúsenosti• Štatistika  • Virtuálny stroj: 4 jadrá, 2GB RAM  • 50 paralelne pracujúcich    používateľov  • Vyťaž...
Praktické skúsenosti• Identifikované problémy  • Museli sme riešiť veľa „zvláštnych“    problémov najmä so socket.io  • Pr...
Pozitíva node.js• Javascript je veľmi vhodný pre  programovanie s callbackmi  (na rozdiel od Ruby)• Rovnaký programovací j...
Negatíva node.js• „Its Fucking JavaScript“    if (typeof my_var !== "undefined" &&        my_var !== null) {}• Problémy s ...
Záver• Kedy nepoužiť node.js  • Výpočtovo náročné aplikácie  • CRUD/HTML aplikácie• Kedy použiť node.js  • JSON API  • AJA...
Dôležité zdroje•   http://nodejs.org/    •   Oficiálna stránka node.js•   http://nodeguide.com/     • Rozsiahly tutoriál p...
Zaujímavé články•   http://www.ibm.com/developerworks/opensource/libra    ry/os-nodejs/    •   Úvod do node.js•   http://s...
Zaujímavé články•   http://teddziuba.com/2011/10/node-js-is-cancer.html    •   Trochu iný pohľad na node.js•   http://blog...
Upcoming SlideShare
Loading in …5
×

Node.js @ Rubyslava

1,462 views

Published on

Rubyslava - Programmers' Meetup in Bratislava, May 17, 2012

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,462
On SlideShare
0
From Embeds
0
Number of Embeds
79
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Node.js @ Rubyslava

  1. 1. Ivan Srba Rubyslava, 17.5.2012Powerpoint Templates Page 1
  2. 2. Prívlastky node.jsPowerpoint Templates Page 2
  3. 3. Prečo vzniklo node.js?• Lebo Ryan Dahl „Windows is very important, just like php.“ Powerpoint Templates Page 3
  4. 4. Prečo vzniklo node.js?• I/O operácie sú drahéL1-cache 3 cyclesL2-cache 14 cyclesRAM 250 cyclesDisk 41 000 000 cyclesNetwork 240 000 000 cycles • Riešenie: fork, threadshttp://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/ Powerpoint Templates Page 4
  5. 5. Prečo vzniklo node.js?• Vlákna sú pamäťovo náročné • Ďalšie problémy: deadlockhttp://blog.webfaction.com/a-little-holiday-present Powerpoint Templates Page 5
  6. 6. O node.js• Serverová platforma • Založená na Chrome JS runtime V8 • Jednovláknová • Udalosťami riadená• Určená pre • Aplikácie pracujúce s veľkým množstvom dát • Aplikácie pracujúce v reálnom čase Powerpoint Templates Page 6
  7. 7. Princíp node.jshttp://magnetik.github.com/node-webid-report/ Powerpoint Templates Page 7
  8. 8. Hello worldvar http = require(http);http.createServer(function (req, res) { res.writeHead(200, {Content-Type: text/plain}); res.end(Hello Worldn);}).listen(1337, 127.0.0.1);console.log(Server running at http://127.0.0.1:1337/); Powerpoint Templates Page 8
  9. 9. Modulárnosť• Node Package Management, NPM • Celkovo až 9950 modulov • Webové frameworky, databázy, web sockety • Parsery, TCP/IP, ladenie, I18N, ... Powerpoint Templates Page 9
  10. 10. Web frameworky• Express • Jeden z najpoužívanejších frameworkov inšpirovaný Sinatrou• Locomotive • MVC framework inšpirovaný RoR• RailwayJS • MVC framework podobný RoR Powerpoint Templates Page 10
  11. 11. Databázy• Relačné databázy • PostgreSQL, MySQL, MSSQL, SQLite, Oracle• NoSQL databázy • Mongo, Hive, Redis, CouchDB, Cassandra• ORM Powerpoint Templates Page 11
  12. 12. Web sockety• Socket.io • Knižnica poskytujúca univerzálne API pre vytváranie aplikácií pracujúcich v reálnom čase • Protokoly: WebSocket, AJAX long pooling, JSONP pooling... • Prehliadače: IE, Safari, Google, Firefox, Opera, ... Powerpoint Templates Page 12
  13. 13. Použitie node.js• PopCorm • Kolaboratívna platforma • Pre riešenie úloh (vzdelávanie) • Integruje sadu kolaboratívnych nástrojov • Textový editor, grafický editor, kategorizátor, diskusia PopCorm Powerpoint Templates Page 13
  14. 14. PopCorm• CRUD časť aplikácie v RoR• Kolaboratívne nástroje v node.js• Ako databáza bolo použité MySQL• Na produkcii sme použili webový server Nginx a Monit na testovanie dostupnosti node.js nástrojov + ich prípadný reštart Powerpoint Templates Page 14
  15. 15. Prečo node.js?• Veľké množstvo dát • Každá zmena = nová revízia• Potreba synchronizovať obsah v reálnom čase • Snaha o maximálnu efektívnosť práce skupín • AJAX nie je dostatočne rýchly/efektívny Powerpoint Templates Page 15
  16. 16. Video ukážka• Textový editor • Etherpad Lite• Kategorizátor• DiskusiaEtherpad Lite: http://etherpad.org/ Powerpoint Templates Page 16
  17. 17. Diskusiavar app = require(express).createServer()var io = require(socket.io).listen(app);var settings = require("./utils/Settings");var messageHandler = require("MessageHandler");app.listen(settings.port);io.sockets.on(connection, function (socket) { socket.on(start, function(...) { messageHandler.handleStart(...); }); socket.on(typing-message, function(...) { messageHandler.handleTypingMessage(...); }); socket.on(send-message, function(...) { messageHandler.handleNewMessage(...); }); ... Powerpoint Templates Page 17
  18. 18. Prijatie novej správyexports.handleNewMessage = function(...) { var created_at = new Date().getTime(); socket.emit(new-message, ...); socket.broadcast.to(socket.group_id). emit(new-message, ...); chatMessage.addNewChatMessage(..., logError); if (activity_id !== null) { userCharacteristicMatrixValue. increaseValue(..., logError); } ... Powerpoint Templates Page 18
  19. 19. Praktické skúsenosti• Štatistika • Virtuálny stroj: 4 jadrá, 2GB RAM • 50 paralelne pracujúcich používateľov • Vyťaženie CPU: MySQL 10%, Ruby 5%, node.js <1%• Zistenia • Nástroje v node.js bez problémov zvládali synchronizovať obsah • MySQL by bolo vhodné nahradiť za Redis Powerpoint Templates Page 19
  20. 20. Praktické skúsenosti• Identifikované problémy • Museli sme riešiť veľa „zvláštnych“ problémov najmä so socket.io • Pri produkčnom nasadení bol veľký problém s umiestnením node.js aplikácií za Nginx • Stlačenie tlačidla ESC zrušilo vo Firefoxe socketové spojenia so serverom • Niektoré problémy so socketmi sa prejavovali len pri kombinácii 2 a viac rôznych prehliadačov Powerpoint Templates Page 20
  21. 21. Pozitíva node.js• Javascript je veľmi vhodný pre programovanie s callbackmi (na rozdiel od Ruby)• Rovnaký programovací jazyk na klientovi aj na serveri• Všetko sa vykonáva asynchrónne (okrem vášho kódu)• Vysoká produktívnosť• Minimálna réžia (CPU, pamäť)• Modulárnosť Powerpoint Templates Page 21
  22. 22. Negatíva node.js• „Its Fucking JavaScript“ if (typeof my_var !== "undefined" && my_var !== null) {}• Problémy s produkčným nasadením• Celková nevyspelosť technológie• Priveľmi dynamický vývoj• Nedostatočné technológie pre testovanie Powerpoint Templates Page 22
  23. 23. Záver• Kedy nepoužiť node.js • Výpočtovo náročné aplikácie • CRUD/HTML aplikácie• Kedy použiť node.js • JSON API • AJAXom preplnené aplikácie • Streamovanie dát • Realtime aplikácie Powerpoint Templates Page 23
  24. 24. Dôležité zdroje• http://nodejs.org/ • Oficiálna stránka node.js• http://nodeguide.com/ • Rozsiahly tutoriál pre programovanie v node.js• http://nodetuts.com/ • Sada 30 video-tutoriálov• http://blog.mixu.net/2011/02/01/understanding-the- node-js-event-loop/ • Vysvetlenie procesu spracovanie udalostí• http://search.npmjs.org/• https://github.com/joyent/node/wiki/modules • Registre modulov Powerpoint Templates Page 24
  25. 25. Zaujímavé články• http://www.ibm.com/developerworks/opensource/libra ry/os-nodejs/ • Úvod do node.js• http://simonwillison.net/2009/nov/23/node/ • Úvod do node.js• http://radar.oreilly.com/2011/07/what-is-node.html • Rozsiahlejší úvod spolu s dobrými príkladmi• http://mashable.com/2011/03/10/node-js/ • Rozsiahlejší úvod spolu s dobrými príkladmi Powerpoint Templates Page 25
  26. 26. Zaujímavé články• http://teddziuba.com/2011/10/node-js-is-cancer.html • Trochu iný pohľad na node.js• http://blog.targeterapp.com/post/22984987832/why- we-moved-from-nodejs-to-ror • Prípadová štúdia, kedy autori prešli od node.js k RoR• http://www.unlimitednovelty.com/2012/03/why-critics- of-rails-have-it-all-wrong.html • RoR vs. node.js Powerpoint Templates Page 26

×