Caridy patino - node-js

Preview:

DESCRIPTION

 

Citation preview

Caridy Patiño

Search Direct TeamYUI EvangelistYUI Contributor

caridy@yahoo-inc.com@caridy

StartTechConf 2011

Conquering the Server Side with Node.JS

Saturday, November 5, 2011

Saturday, November 5, 2011

La industria esta cambiando muy rápido

Saturday, November 5, 2011

Chrome + V8

Saturday, November 5, 2011

Internet de alta velocidad

Saturday, November 5, 2011

Coulds / Nubes

Saturday, November 5, 2011

WebApps & Apps

Saturday, November 5, 2011

Almazenamiento Másivo

Saturday, November 5, 2011

La web en tiempo real

Saturday, November 5, 2011

Y esto se traduce en...

Saturday, November 5, 2011

Peaks / Picos

Saturday, November 5, 2011

Concurrencia

Saturday, November 5, 2011

Concurrencia

Saturday, November 5, 2011

Saturday, November 5, 2011

Microsoft VBScript compilation error ‘800a03e9′Out of memory/LM/W3SVC/600510919/Root/dStore/http://global.asa, line 0

Sold Out

Saturday, November 5, 2011

Desempeño

Saturday, November 5, 2011

Soluciones...

Saturday, November 5, 2011

Más servidores

Saturday, November 5, 2011

Más servidores

$$$$$

Saturday, November 5, 2011

Nubes Elásticas

Saturday, November 5, 2011

Wow Amazon EC2 Is Expensive For Start Ups

“With EC2, I would pay 30 days * 24 hours * $0.1 * 1.19 (tax) = $85. And that does not take into account backup space (S3),

traffic and true persistent storage (EBS) yet.”

Saturday, November 5, 2011

Delegar procesos hacia el cliente

Saturday, November 5, 2011

Saturday, November 5, 2011

Node.JS

Saturday, November 5, 2011

Server Side JavaScript(SSJS)

Saturday, November 5, 2011

RhinoWakanda Akshell

RingoJSNarwhalJS

Saturday, November 5, 2011

Nuestros sistemas operativos y lenguajes derivan de los sistemas diseñados para teletipos.

Saturday, November 5, 2011

Las plataformas modernas de software siguen imitando estas interfaces antiguas.

Saturday, November 5, 2011

“Blocking system call” is a call into the kernel which waits for some I/O to complete before before returning. Blocking syscalls

introduce unbounded latency into the current thread.

Saturday, November 5, 2011

Los procesos son buenos para mantener unidades aisladas. Sin embargo, son demasiado pesados como

para dedicarle una conexión completa.

Saturday, November 5, 2011

Uno de los objetivos principales de Node es hacer accesible la programación sin bloqueo para aquellos

usuario que no son expertos.Saturday, November 5, 2011

Node ha tenido éxito en poner servidor de alto desempeño al alcance de los programadores utilizando una API sin bloqueos

Saturday, November 5, 2011

Un solo stack por cada proceso

Saturday, November 5, 2011

Node.JS solo tiene 2.5 años de edad.

La version 0.6 es la 3ra iteración estable.

Saturday, November 5, 2011

Saturday, November 5, 2011

HTTP benchmark con 100 clientes concurrentes en OSX 10.6

- v0.2.6 5330 req/sec- v0.4.12 5552 req/sec- v0.5.10 5803 req/se

Saturday, November 5, 2011

Por qué Javascript?

Saturday, November 5, 2011

Javascript es el lenguaje del navegador

Saturday, November 5, 2011

Javascript es un lenguaje dinámico

Saturday, November 5, 2011

Closures y programación asincrónicapor naturaleza

Saturday, November 5, 2011

Comunidad creciente, activa y diversa

Saturday, November 5, 2011

http://github.com/languages

Saturday, November 5, 2011

No existe otro lenguaje que pueda destronar a javascript en un

future cercano

Saturday, November 5, 2011

Node Event Loop

Saturday, November 5, 2011

var result = db.query("select * from T");// use result

Saturday, November 5, 2011

var result = db.query("select * from T");// use result

Qué esta haciendo el software mientras se ejecuta la query?

Saturday, November 5, 2011

db.query("select * from T", function (result) { // use result});

Saturday, November 5, 2011

db.query("select * from T", function (result) { // use result});

Este código le permite al programa retornar al event loop

inmediatamente

Saturday, November 5, 2011

Node maneja todas los IO de la misma manera

Saturday, November 5, 2011

Saturday, November 5, 2011

Menos memoria necesita ser usada, y un mayor rendimiento debido al menor número de cambios de

contexto.

Saturday, November 5, 2011

El uso de los closures para capturar el estado entre diferentes eventos

Saturday, November 5, 2011

function adicionar(callback) { http.get(url1, function(respuesta1) { var parte1 = respuesta1.data; http.get(url2, function(respuesta2) { var parte2 = respuesta2.data; callback(parte1 + parte2); }); });}

Saturday, November 5, 2011

Node Stack

Saturday, November 5, 2011

Como usar Node

Saturday, November 5, 2011

Download, configure, compile, andmake install it:

http://nodejs.org/

Saturday, November 5, 2011

Windows Build (Node v0.6.0):

http://nodejs.org/dist/v0.6.0/node.exe

Saturday, November 5, 2011

NPM

http://npm.org/

Saturday, November 5, 2011

curl http://npmjs.org/install.sh | sh

Saturday, November 5, 2011

$ npm help

$ npm install <pkgName>$ npm uninstall <pkgName>$ npm publish$ npm list$ npm update

NPM 101

http://howtonode.org/introduction-to-npm

Saturday, November 5, 2011

$  npm  listapp@0.1.0  /Users/caridy/node/app├─┬  connect@1.7.1  

│  ├──  mime@1.2.4  

│  └──  qs@0.3.1  

├─┬  express@2.4.7  

│  ├──  mime@1.2.4  

│  ├──  mkdirp@0.0.7  

│  └──  qs@0.3.1  

├──  micro<me@0.1.3-­‐1  

├──  mime@1.2.4  

├─┬  yui3@0.7.4

│  ├──  htmlparser@1.7.3  

│  ├──  yui3-­‐core@3.4.0  

│  └──  yuitest@0.6.9  

└──  yui3-­‐core@3.4.0

Saturday, November 5, 2011

Express

http://expressjs.com/

Saturday, November 5, 2011

$ cd my/node/app/$ npm install express

Saturday, November 5, 2011

var app = require('express').createServer();

app.get('/usuario/:id', function(req, res){ res.send('Bienvenido ' + req.params.id);});

app.listen(3000);

Requiriendo Express NPM Module

Saturday, November 5, 2011

$ node app.js

Saturday, November 5, 2011

http://localhost:3000/usuario/caridy

Saturday, November 5, 2011

$ npm install -g express$ cd my/node/app/$ express ./$ npm install -d$ node app.js

Express Boilerplate

Saturday, November 5, 2011

YUI

Saturday, November 5, 2011

Saturday, November 5, 2011

$ npm install yui3

Saturday, November 5, 2011

var YUI = require("yui3").YUI;

YUI().use('json', 'io', function(Y) {

Y.io('http://yuilibrary.com/gallery/api/user/caridy', { on: { success: function(id, o) { Y.log(Y.JSON.parse(o.responseText), 'info', 'demo'); } } });

});

Requiriendo YUI NPM Module

Saturday, November 5, 2011

var YUI = require("yui3").YUI;

YUI().use('yql', function(Y) {

var query = ' select * from geo.states where place="Chile" and lang="es-CL" ';

Y.YQL(query, function(result) { // =result= now contains the result of the YQL Query // use the YQL Developer console to learn // what data is coming back in this object // and how that data is structured. Y.log(result, 'info', 'demo'); });

});

http://developer.yahoo.com/yql/console/#h=select%20*%20from%20geo.states%20where%20place%3D%22Chile%22%20and%20lang%3D%22es-CL%22

Requiriendo YUI NPM Module

Saturday, November 5, 2011

{ "query": { "count": 15, "created": "2011-10-31T15:38:44Z", "results": { "place": [ { "lang": "es-CL", "uri": "http://where.yahooapis.com/v1/place/2345028", "woeid": "2345028", "placeTypeName": { "code": "8", "content": "Región" }, "name": "Maule" }, { "lang": "es-CL", "uri": "http://where.yahooapis.com/v1/place/2345025", "woeid": "2345025", "placeTypeName": { "code": "8", "content": "Región" }, "name": "Libertador General Bernardo O'Higgins" }, { "lang": "es-CL", "uri": "http://where.yahooapis.com/v1/place/2345029", "woeid": "2345029", "placeTypeName": { "code": "8", "content": "Región" }, "name": "Santiago" } ] } }}

Saturday, November 5, 2011

Comprehensive unit testing solution for any JS codeYUI Test

YETI YUI Easy Testing Interface: run browser JS unit tests from console

YUI Library

YUI Gallery

Who contributes?Everyone, with committer review.

Who contributes?Everyone, with little review.

Saturday, November 5, 2011

Yahoo! Cocktails

Saturday, November 5, 2011

Saturday, November 5, 2011

Cocktails: Mojito

Saturday, November 5, 2011

Mojito es un Web Application Framework

Saturday, November 5, 2011

Mojits MVC

View

Controller

Model

Saturday, November 5, 2011

Tres tipos de scripts:

- foo.server.js- foo.common.js- foo.client.js

Saturday, November 5, 2011

Multiples Runtimes

Javascript on the browser

Javascript on the server

Native Bridges

iOS Android

Saturday, November 5, 2011

$ mojito help

$ mojito create app ./myApp$ mojito create mojit Foo$ mojito test$ mojito compile$ mojito start

Mojito Command 101

Saturday, November 5, 2011

Mojito Application Folder

./myApp- application.json- assets- autoload- index.js- mojits - Foo - Bar- package.json- server.js

Saturday, November 5, 2011

Open Source a inicios del 2012

Saturday, November 5, 2011

Cocktails: Manhattan

Saturday, November 5, 2011

Yahoo! Manhattan es un ambiente de hosting para aplicaciones basadas en Mojito que utiliza la nube de

Yahoo! para correr esas aplicaciones.

Saturday, November 5, 2011

Server Side: Technology Stack

Security Filters

Node.JS

Monitoring

Manhattan

Tracking

V8

Express Mustache Connect

Mojito

Mojito App

YUI Cocktails A

bstractions

Saturday, November 5, 2011

Yahoo! Manhattan extiende Node.JS para proveer fault-isolation & fault-tolerance, escalabilidad, disponibilidad,

seguridad y desempeño.

Saturday, November 5, 2011

Saturday, November 5, 2011

Manhattan provides a simple interface for developers to deploy, un-deploy and manage their Mojito-based

applications, leveraging the scale and performance of Yahoo!’s technology infrastructure.

Saturday, November 5, 2011

Desempeño

Saturday, November 5, 2011

Saturday, November 5, 2011

Saturday, November 5, 2011

node.js 0.4 + express + yui + mustache

Saturday, November 5, 2011

Apache + PHP

Node + Express + YUI + Mustache

Saturday, November 5, 2011

Saturday, November 5, 2011

Apache + PHP no crece

Saturday, November 5, 2011

Saturday, November 5, 2011

Thank youcaridy@yahoo-inc.com@caridy

Saturday, November 5, 2011

Links

• nodejs.org

• npm.org

• expressjs.com

• yuilibrary.com/projects/nodejs-yui3/

Saturday, November 5, 2011

http://www.slideshare.net/rhyolight/mojito-sl-2011

Más sobre Yahoo! Mojito:

Saturday, November 5, 2011