Como adelanté en el post Node.Js en UDA Developers Challenge 2012 participé del los seminarios dictados para el UdADev 2012 de la Universidad de Azuay, en Cuenca, Ecuador. Fue un excelente viaje, me recibieron muy bien, disfruté mucho el viaje, tienen un buen clima, un hermoso parque nacional a minutos de la ciudad, actividades de todo tipo… y podría seguir escribiendo, pero ya lo haré en algún post de mi blog no técnico. Agradezco a todos los que hicieron esto posible!
Ahora, quiero pasar en limpio lo que mostré. Mi tema era Node.Js, Express y Socket.IO, orientado todo para el concurso que están organizando sobre aplicaciones en tiempo real para dispositivos móviles (vean el tema y expositores completos en la página del evento).
Mi presentación la puede ver (y bajar) de: http://t.co/UUoFooL2
Usamos durante todo el día varios varios ejemplos de: https://github.com/ajlopez/NodeSamples
Al comienzo, vimos de esos ejemplos, los de https://github.com/ajlopez/NodeSamples/tree/master/Simple, como hello.js, helloasync.js, http.js.
Pasamos a ver un ejemplo de módulo, hecho en el momento. Y usamos el npm para buscar un paquete, ejecutando:
npm search serial
porque me habían preguntado en el primer intervalo sobre módulos que manejen puertos seriales. De ahí, instalamos uno usando
npm install <nombre>
Mostré como ejemplo de paquete publicado, como proyecto GitHub a lo que estuve programando de autómatas celulares:
https://github.com/ajlopez/Cellular
donde ejecutamos los ejemplos https://github.com/ajlopez/Cellular/tree/master/samples/linear pasando un número de regla como parámetro. Pueden probar:
node linear 110
Exploramos algo del módulo http. Ejecutamos el ejemplo https://github.com/ajlopez/NodeSamples/tree/master/HttpRequest ejecutando ahí:
node app.js http://www.google.com
bajando el contenido de la página. Escribimos un pequeño servidor, para ver qué temas hay que resolver para tener un sitio más completo (como routing de los pedidos externos). Ahí mostre Geddy:
http://geddyjs.org/
y nos fuimos a almorzar.
A la vuelta, nos dedicamos a Express:
http://expressjs.com/
Vimos de instalarlo globalmente con
npm install –g express
y armamos una aplicación desde la línea de comando con
express --sessions --css stylus MyApp
cd MyApp
npm install
node app
Lo pueden ver el resultado en: https://github.com/ajlopez/NodeSamples/tree/master/Express/MyApp
Instalamos y lanzamos mongodb bajándolo desde http://www.mongodb.org/downloads (el día anterior ya Carlos Barroeta @carlosdbm había dictado el seminario/taller de NoSQL).
Levantamos y probamos el ejemplo https://github.com/ajlopez/NodeSamples/tree/master/Express/Blog basado (actualizado a Express 3) del:
http://howtonode.org/express-mongodb
Hacia el final del “track” Express, vimos de bajar y levantar:
https://github.com/ccoenraets/nodecellar
http://coenraets.org/blog/2012/10/nodecellar-sample-application-with-backbone-js-twitter-bootstrap-node-js-express-and-mongodb/
En el “track” final, sobre Socket.IO, vimos ejemplos de:
https://github.com/ajlopez/NodeSamples/tree/master/SocketIO
Como ejemplo en el browser, en el browser y servidor, o en el browser, servidor y varios nodos distribuidos, vimos los ejemplos de:
https://github.com/ajlopez/SimpleGA
Ver algo de explicación en SimpleGA (1) Algoritmos Genéticos en Javascript/Node.js
Luego, hacia el final, vimos de nuevo nodecellar, y lo activamos para tener en tiempo real un análisis de
http://coenraets.org/blog/2012/10/real-time-web-analytics-with-node-js-and-socket-io/
(ver de descomentar un texto que está en el index.html de ese ejemplo). No llegamos a verlo, pero les recomendaría también de ese autor:
http://coenraets.org/blog/2012/10/creating-a-rest-api-using-node-js-express-and-mongodb/
Si quieren ejecutar los ejemplos de NodeSamples, vean de hacer
npm install
cuando en el directorio hay un archivo package.json. O de instalar con
npm install <nombremódulo>
el módulo que requiera el ejemplo.
Para preparar la presentación consulté varios de mis enlaces de Node.js, Express y Socket.IO:
http://delicious.com/ajlopez/nodejs
http://delicious.com/ajlopez/nodejs+tutorial
http://delicious.com/ajlopez/express
http://delicious.com/ajlopez/express+tutorial
http://delicious.com/ajlopez/socketio
http://delicious.com/ajlopez/socketio+tutorial
Por ejemplo, entre tantos para ver, pueden visitar:
Node.js and Socket.io part 1 Building a HTML5 game part 6
Más sobre desarrollo Node.js y juegos:
http://delicious.com/ajlopez/nodejs+gamedevelopment
Sobre Node.js y móvil:
http://delicious.com/ajlopez/nodejs+mobile
Por ejemplo, en el seminario/taller mencioné:
Stream a webcam using Javascript, NodeJS, Android, Opera Mobile, Web Sockets and HTML5
Ahora agregaría:
Build a Phone-controlled Robot Using Node.js, RN-XV WiFly, Arduino and Twilio
También consulté estas presentaciones:
http://www.slideshare.net/iloire/building-web-apps-with-nodejs-socketio-knockoutjs-and-zombiejs-codemotion-2012
http://www.slideshare.net/openforce/nodejs-fast-event-based-web-application-development
http://www.slideshare.net/vikasing/introduction-to-nodejs-11730771
https://speakerdeck.com/danzajdband/introduccion-a-express-meetup-node-dot-js-argentina
http://www.youtube.com/watch?v=pQN5U0EQoUo&feature=youtu.be
http://magnetik.github.com/node-webid-report/
http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/
http://www.slideshare.net/3rdEden/going-real-time-with-socketio
http://www.slideshare.net/Jxck/real-time-app-with-nodejs
http://www.slideshare.net/dbloete/expressjs
https://speakerdeck.com/spopp/nodejs-npm-express-quick-start
Para lista de correo de consultas, en español, recomendaría:
https://groups.google.com/group/nodejs-es?pli=1
Una explicación detallada de Express:
http://youtu.be/Uw46_Mub6t8 por @dzajband
Una charla sobre Socket.IO del propio autor @rauchg:
http://jshangouts.org/2012/08/18/Socket-IO-Engine-IO-Guillermo-Rauch.html
Hay mucho para investigar de Node.js, y todo es divertido! ;-)
Actualización: otro tema para explorar para el concurso, Kinect desde Node.js https://github.com/pgte/node-kinect
Nos leemos!
Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez