Un vistazo al futuro  NODE.js               Semana de la Ingenieria 2012Universidad Tecnológica Nacional - Facultad Region...
Todo sobre @jmma                   Juan Maria Martinez Arce                   Partner en INSIGNIA                         ...
Empecemos por el principio...         De todas las tecnologías que andan         dando vuelta por Internet...             ...
Buenas preguntas, merecen respuestas simples                         Es un tema de gustos                         No podrí...
Hasta aquí no me dijiste nada...                                   Falta que                                   me digas   ...
Nos pongamos técnicos...Qué es   NODE.js?
Fue construido sobre Javascript Runtime de Google (V8). Utiliza un modelo I/O sin bloqueos guiado por eventos. Pensado par...
Es NODE.js la nueva bala de plata?                                Estoy seguro                                que aquí    ...
NODE.js y suLado   OSCURO
Y, sí... Tenía que tener algo malo...                            El problema de ser joven                            Como ...
Este es el ejemplo más simple que se puede lograr en NODE.js. Un server que a cada petición responde: "Hello World".Pensad...
Para dimensionar mejor el concepto: Necesitamos definir la clase PetPara que simplemente nos salude, diciéndonos sunombre....
Basta de pálidas!                    Node.js es                    una masa,                    les mostremos             ...
Playtime!caso   Práctico
Qué queremos hacer...                        Im Here!                        Una app para dejar tu huella en esta charla. ...
Antes de empezar...                      Qué tenemos disponible                      Veamos qué tecnologías nos pueden dar...
BootstrapingInstalemos los paquetes básicos que nos hacen falta - Node.js.http://nodejs.org/La manera más simple de instal...
Modelo UserNecesitamos una clase para abstraer elalmacenamiento de la información quemanejará nuestra app. CoffeeScript no...
Vistas requeridasNecesitamos un formulario para postear los datosdel usuario y un listado de checkins para sermostrado en ...
Routing                    Nuestra app necesita manejar                    3 URLs. Una para mostrar el                    ...
Testing                 El desarrollo guiado por tests                 es una práctica a la que                 deberíamos...
El DashboardEl core feature de nuestra app consiste en contarcon un dashboard que se actualice a medida quelos usuarios va...
La hora de la verdad...                          Qué debería pasar..?                          Si es que Murphy no hace de...
Live DemoA jugar con   ImHere
Y llegamos al final.                       Qué hacemos ahora?                       Les tiro un par de ideas...           ...
Y bueh... nos tenemos que ir.          Gracias por venir y              participar.El código de la demo app se puede desca...
Upcoming SlideShare
Loading in...5
×

Code Blast 2012 - Node.js

1,123

Published on

Node.js

Code Blast 2012 en el marco de charlas de por la Semana de la Ingeniería de la Universidad Tecnológica Nacional, Facultad Regional Tucumán.

Juan Maria Martinez Arce compartió un poco de sus investigaciones en el uso de node.js para la creación de aplicaciones de red de alta concurrencia.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,123
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
26
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Code Blast 2012 - Node.js

  1. 1. Un vistazo al futuro NODE.js Semana de la Ingenieria 2012Universidad Tecnológica Nacional - Facultad Regional Tucumán
  2. 2. Todo sobre @jmma Juan Maria Martinez Arce Partner en INSIGNIA     Software Developer con experiencia en: C/C++, Delphi, Genexus, PHP, Ruby, CSS, y Javascript.   Especializado en el desarrollo de aplicaciones de alto tráfico construidas con Ruby on Rails.   Indefinida y perdidamente enamorado de Ruby y todo su glamour.   Cazador furtivo de tecnologías con las que se pueda jugar un rato.
  3. 3. Empecemos por el principio... De todas las tecnologías que andan dando vuelta por Internet...   Por qué NODE.js!?
  4. 4. Buenas preguntas, merecen respuestas simples Es un tema de gustos No podría ser de otra manera     +1 Javascript tanto server-side como client-side.   +1 Construido sobre V8 (Google).   +1 Es muy rápido.   +1 Tiempo real / Alta concurrencia.   +1 Se puede lograr mucho con poco.  
  5. 5. Hasta aquí no me dijiste nada... Falta que me digas que NODE.js es relativo.
  6. 6. Nos pongamos técnicos...Qué es NODE.js?
  7. 7. Fue construido sobre Javascript Runtime de Google (V8). Utiliza un modelo I/O sin bloqueos guiado por eventos. Pensado para aplicaciones de consumo intensivo de datos en tiempo real. Eficiente consumo de memoria bajo sistemas de alta carga. Gran manejo de concurrencia y balanceo de carga. Un mix de características que vende. 
  8. 8. Es NODE.js la nueva bala de plata? Estoy seguro que aquí algo anda mal...
  9. 9. NODE.js y suLado OSCURO
  10. 10. Y, sí... Tenía que tener algo malo... El problema de ser joven Como en toda tecnología novedosa...     :( Muy poca documentación.   :( Comunidad relativamente pequeña.   :( Ambiente de producción poco amistoso.   :( Hay que programar en Javascript.   :( Hay que programar en Javascript.
  11. 11. Este es el ejemplo más simple que se puede lograr en NODE.js. Un server que a cada petición responde: "Hello World".Pensado para aplicaciones de consumo intensivo de datos en tiempo real. Javascript es un lenguaje extremadamente potente.Fue elegido en la implementación de NODE.js porque su comportamiento en el browseres exactamente el comportamiento que NODE.js busca implementar. El gran pero: Javascript no es un lenguaje simple ni mucho menos natural.Require mucho tiempo de aprendizaje y paciencia (sobre todo con los errores).
  12. 12. Para dimensionar mejor el concepto: Necesitamos definir la clase PetPara que simplemente nos salude, diciéndonos sunombre. Todo ese código, al ejecutarlo, produce esto:      Nuevamente, Javascript no es un lenguajesimple ni mucho menos natural.Require mucho tiempo de aprendizaje ypaciencia (sobre todo con los errores).
  13. 13. Basta de pálidas! Node.js es una masa, les mostremos por qué!
  14. 14. Playtime!caso Práctico
  15. 15. Qué queremos hacer... Im Here! Una app para dejar tu huella en esta charla.   Objetivos:   - Un usuario debería poder hacer check-in dejando su nombre y un mensaje.   - La app debería proveer un dashboard desde donde se listen todos los checkins.   - Actualizar el dashboard en tiempo real a medida que los usuarios hagan checkin.   - Testear el código de la App.
  16. 16. Antes de empezar... Qué tenemos disponible Veamos qué tecnologías nos pueden dar una mano   - CoffeeScript. Para no sufrir con Javascript. - Jade. Para simplificar las vistas en HTML. - Redis.io. Para almacenar nuestros checkins. - Express.js. Framework para aplicaciones web. - Socket.io. Para la actualización en real-time. - Foundation. Para que la app quede presentable. - Mocha. Para testear nuestro código. - Node.js. Para hacer funcionar todo lo anterior. - npm.js. Para instalar todo lo anterior. - Mucha Fé. Para que todo funcione correctamente. - Cruzar los dedos. Para que la demo funcione.
  17. 17. BootstrapingInstalemos los paquetes básicos que nos hacen falta - Node.js.http://nodejs.org/La manera más simple de instalar Node.js es descargarel instalador desde la página. El mismo instalará node.js y npm. - Express.js.http://expressjs.com/Se instala de manera muy sencilla con:npm install -g express - Redishttp://redis.io/La instalación varía mucho entre cada OS. En estoscasos, es muy bueno preguntarle a google.
  18. 18. Modelo UserNecesitamos una clase para abstraer elalmacenamiento de la información quemanejará nuestra app. CoffeeScript nos permite escribir códigoJavascript a través de una sintaxis muysimilar a la de Ruby.Mas info: http://coffeescript.org/ Redis. Nos provee de una DB simple (clave,valor) para almacenar la información delmodelo y recuperarla.Mas info: http://redis.io/documentation - Entendiendo el Voodoo.Este modelo necesita generar un key en elque se almacenarán todos los usuarios,identificados por un ID basado en su nombre. 
  19. 19. Vistas requeridasNecesitamos un formulario para postear los datosdel usuario y un listado de checkins para sermostrado en el dashboard. Jade es un template engine que nos permiteescribir código HTML a través de un markup muysimple y muy elegante.Mas info: http://jade-lang.com/ Algo muy positivo. La sintaxis de Jade yCoffeeScript son muy similares, esto ayuda muchoal momento de cambiar de contexto entre uncódigo y el otro.
  20. 20. Routing Nuestra app necesita manejar 3 URLs. Una para mostrar el formulario, otra para postear estos datos y crear el checkin y una tercera para presentar el dashboard.    Express permite implementar pequeños routers demanera muy sencilla para manejar las URLs quenecesitamos. Los conceptos más complicado de asimilar son:> En Javascript no hay scope mas que el scope dela función.> Cada función que se ejecute de maneraasincrónica debe proporcionar un callback.
  21. 21. Testing El desarrollo guiado por tests es una práctica a la que deberíamos ajustarnos siempre. Ahorra mucho esfuerzo al momento de realizar bugfixing o pruebas de integración.    Mocha provee un framework para escribirtests que verifiquen código producido enJavascript. Es muy versátil y extremadamenteveloz.Mas info: http://visionmedia.github.com/mocha/ Lo más complicado: hacerse camino a travésde los errores iniciales (que son pocodescriptivos)
  22. 22. El DashboardEl core feature de nuestra app consiste en contarcon un dashboard que se actualice a medida quelos usuarios vayan haciendo check in, en tiemporeal en todos los clientes conectados. Socket.io provee un mecanismo para implementarenlaces en tiempo real entre un server y susclientes corriendo entre distintos dispositivos.Mas info: http://socket.io/#how-to-use Lo que hay que entender: la implementación deSocket.io en una app requiere de soporte tantoserver-side como client-side. En el server, es necesario indicar qué evento sedebe propagar entre los clientes conectados. En el cliente, se debe resolver qué hacer una vezque dicho evento ha sido transmitido. 
  23. 23. La hora de la verdad... Qué debería pasar..? Si es que Murphy no hace de las suyas.   Hacer checkin. Debería poder el formulario, poner mis datos, hacer submit y mis datos deberían ser listados en el dashboard.   Actualización en Tiempo Real del Dashboard. Por cada checkin que se realice, el dashboard deberá actualizarse automáticamente en cada dispositivo conectado.   A ver qué resultó de todo esto.       Atención: esto podría fallar.
  24. 24. Live DemoA jugar con ImHere
  25. 25. Y llegamos al final. Qué hacemos ahora? Les tiro un par de ideas...   Consultar dudas. Y sí... Por ahí hablo rápido y digo incoherencias. Mejor quitarse la duda ahora.   Agendan mis datos por cualquier cosa. @jmma juan@insignia4u.com www.insignia4u.com http://github.com/jmax   Nos vamos. No si antes agradecer a la UTN- FRT por el espacio y el esfuerzo para que esta charla salga así de bien.  
  26. 26. Y bueh... nos tenemos que ir. Gracias por venir y participar.El código de la demo app se puede descargar en: https://github.com/jmax/imhereEsta presentación estará disponible muy pronto en: http://www.insignia4u-blog.com/Ningún ser viviente fue lastimado durante la preparación de esta presentación.Cualquier similitud con hechos de la vida real es mera coincidencia.
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×