SlideShare una empresa de Scribd logo
1 de 32
Del infierno al cielo
Raúl Requero
@rrequeroMADRID · NOV 27-28 · 2015
MADRID · NOV 27-28 · 2015
¿Quien soy?
Raúl Requero García
Fullstack developer
@rrequero
MADRID · NOV 27-28 · 2015
Recursos
https://github.com/rrequero/resources-
delInfiernoAlCielo
MADRID · NOV 27-28 · 2015
var fs = require('fs');
fs.readFile('file1.txt', 'utf8', function(err, data1) {
if (err) { return console.log(err); }
fs.readFile('file2.txt', 'utf8', function(err, data2) {
if (err) { return console.log(err);}
fs.readFile('file3.txt', 'utf8', function(err, data3) {
if (err) { return console.log(err); }
fs.writeFile("completeFile.txt", data1+data2+data3, function(err) {
if (err) { return console.log(err); }
console.log("File saved!");
});
});
});
});
MADRID · NOV 27-28 · 2015
var fs = require('fs');
fs.readFile('file1.txt', 'utf8', function(err, data1) {
if (err) { return console.log(err); }
fs.readFile('file2.txt', 'utf8', function(err, data2) {
if (err) { return console.log(err);}
fs.readFile('file3.txt', 'utf8', function(err, data3) {
if (err) { return console.log(err); }
fs.writeFile("completeFile.txt", data1+data2+data3, function(err) {
if (err) { return console.log(err); }
console.log("File saved!");
});
});
});
});
MADRID · NOV 27-28 · 2015
Posibles soluciones
Promises
var promise = readFile('file1.txt', 'utf8');
promise.then(function(content){
console.log(content);
});
promise.catch(function(error){
console.error(error);
});
MADRID · NOV 27-28 · 2015
Generadores
http://www.ecma-international.org/ecma-262/6.0/
MADRID · NOV 27-28 · 2015
¿Que son?
Los generadores son funciones que permiten tener múltiples puntos de entrada para la
suspensión y reanudación de la ejecución.
Los generadores son subtipos de Iterator que incluyen el métodos next.
Este comportamiento es posible utilizando funciones especiales que devuelven un objeto
Generador. ( function * (...) ). Dentro de la función se usan las palabras claves yield y yield*
para devolver u obtener un valor y throw para lanzar un error.
Una función Generador al ejecutarse comienza en estado suspendido y no comienza su
ejecución hasta que se ejecuta por primera vez el método next del objeto Generador devuelto
al ejecutar la función
MADRID · NOV 27-28 · 2015
¿Para que no usarlos?
El rendimiento empeora
MADRID · NOV 27-28 · 2015
¿Para que usarlos?
Lazy evaluation (Evaluación perezosa)
Secuencias infinitas
Flujo de control asincrono
MADRID · NOV 27-28 · 2015
Secuencias infinitas
MADRID · NOV 27-28 · 2015
Flujo de control asíncrono
MADRID · NOV 27-28 · 2015
Librerías disponibles
● Co: https://www.npmjs.com/package/co
● Thunks: https://www.npmjs.com/package/thunks
MADRID · NOV 27-28 · 2015
var thunks = require('thunks')();
var fs = require('fs');
var co = require('co');
var readFile = thunks.thunkify(fs.readFile);
var writeFile = thunks.thunkify(fs.writeFile);
co(function* (){
try{
var data1 = yield readFile('file1.txt', 'utf8');
var data2 = yield readFile('file2.txt', 'utf8');
var data3 = yield readFile('file3.txt', 'utf8');
yield writeFile('completeFileSequential.txt', data1+data2+data3);
console.log(‘File saved!’);
}catch(e){
console.log(e);
}
});
MADRID · NOV 27-28 · 2015
MADRID · NOV 27-28 · 2015
¿Que es?
Web framework
Creado por el equipo que creo ExpressJS
Usa generadores (Basado en la librería co)
Mejor manejo de los errores
Core muy simple, no incorpora middlewares
MADRID · NOV 27-28 · 2015
Diferencias entre Koa y Express
Funcionalidad Koa Express
Middleware Kernel X X
Routing X
Templating X
Sending Files X
JSONP X
MADRID · NOV 27-28 · 2015
Diferencias entre Koa y Express
Funcionalidad Koa Express
Middleware Kernel X X
Routing (koa-router) X
Templating (koa-render) X
Sending Files (koa-send) X
JSONP (koa-jsonp) X
MADRID · NOV 27-28 · 2015
Primer app con Koa
var koa = require('koa');
var app = koa();
app.use(function *(){
this.body = 'Hello World';
});
app.listen(3000);
MADRID · NOV 27-28 · 2015
Cascading
Mismo sistema de middlewares que otros frameworks.
Podemos lograr ‘true middleware’
MADRID · NOV 27-28 · 2015
Error handling
Por defecto todos los errores se imprimen en stderr
Si NODE_ENV=test los errores no salen por stderr.
app.on('error', function(err, ctx){
log.error('server error', err, ctx);
});
MADRID · NOV 27-28 · 2015
Context
Encapsula los objetos request y response
Se crea una por cada request
Incluye métodos de ayuda
Se accede a él a traves de this
MADRID · NOV 27-28 · 2015
Context API
ctx.req: Objeto request
ctx.res: Objeto response
ctx.state: Espacio de nombres recomendado para
pasar información entre los middlewares
ctx.app: Referencia a la instancia de la aplicación
MADRID · NOV 27-28 · 2015
Context API
Cookies:
Koa usa la librería: https://github.com/jed/cookies
∘ ctx.cookies.get(name, [options]): Obtener una cookie por nombre
∘ ctx.cookies.set(name, value, [options]): Crear una cookie
MADRID · NOV 27-28 · 2015
Context API
Throw:
Koa usa la librería: (http-errors)
https://github.com/jshttp/http-errors
∘ ctx.throw([msg], [errorCode],[properties])
Ej: this.throw(403, ‘Not authorized’)
MADRID · NOV 27-28 · 2015
Context API
Assert:
Koa usa la librería: (http-assert)
https://github.com/jshttp/http-assert
∘ ctx.assert(value, [msg], [errorCode], [properties])
Ej: this.assert(this.user, ‘Not authorized’, 403)
MADRID · NOV 27-28 · 2015
Context API
Alias:
Existen alias para los atributos más utilizados
Request:
- header
- headers
- method
- url
- ip
- etc...
Response:
- body
- status
- message
- type
- length
- etc...
MADRID · NOV 27-28 · 2015
Middlewares
Koa-router: https://github.com/alexmingoia/koa-router
Koa-body-parser:https://github.com/koajs/bodyparser
Koa-render: https://github.com/queckezz/koa-views
MADRID · NOV 27-28 · 2015
Middlewares
koa-mount: https://github.com/koajs/mount
koa-session: https://github.com/koajs/session
koa-static:https://github.com/koajs/static
koa-logger:https://github.com/koajs/logger (dev)
MADRID · NOV 27-28 · 2015
Ejemplo api
MADRID · NOV 27-28 · 2015
MADRID · NOV 27-28 · 2015

Más contenido relacionado

Destacado

Frederickdiapositiva
FrederickdiapositivaFrederickdiapositiva
FrederickdiapositivaFrederick02
 
WALC15 day 2 - Introduccion a contiki y sensores
WALC15 day 2 - Introduccion a contiki y sensoresWALC15 day 2 - Introduccion a contiki y sensores
WALC15 day 2 - Introduccion a contiki y sensoresalignan
 
ÉQUIPEMENT DU CHEF D’ORCHESTRE
ÉQUIPEMENT DU CHEF D’ORCHESTREÉQUIPEMENT DU CHEF D’ORCHESTRE
ÉQUIPEMENT DU CHEF D’ORCHESTREWengerCorporation
 
Entrevista sobre la cría de vacas
Entrevista sobre la cría de vacasEntrevista sobre la cría de vacas
Entrevista sobre la cría de vacassonsoleslaferia
 
SALON MIF EXPO 2014 - REVUE DE PRESSE ECRITE & DEPECHE
SALON MIF EXPO 2014 - REVUE DE PRESSE ECRITE & DEPECHESALON MIF EXPO 2014 - REVUE DE PRESSE ECRITE & DEPECHE
SALON MIF EXPO 2014 - REVUE DE PRESSE ECRITE & DEPECHEFrédérique libaud
 
Problemas Frecuentes del Desarrollo Apego y Ansiedad_
Problemas Frecuentes del Desarrollo Apego y Ansiedad_Problemas Frecuentes del Desarrollo Apego y Ansiedad_
Problemas Frecuentes del Desarrollo Apego y Ansiedad_MonitaJefte2011
 
Búsquedas avanzadas en google
Búsquedas  avanzadas en googleBúsquedas  avanzadas en google
Búsquedas avanzadas en googlea1f0ns0
 
Auraia bilan en ligne 2013
Auraia bilan en ligne 2013Auraia bilan en ligne 2013
Auraia bilan en ligne 2013AIRDDS_BRETAGNE
 
Table tennis lesson plans
Table tennis lesson plansTable tennis lesson plans
Table tennis lesson plansrichard896
 
Metodologías para el desarrollo de sistemas
Metodologías para el desarrollo de sistemasMetodologías para el desarrollo de sistemas
Metodologías para el desarrollo de sistemasmireya2022
 
Química en los alimentos
Química en los alimentosQuímica en los alimentos
Química en los alimentosKa97ren26
 
Label hydricite EU vs USA
Label hydricite  EU vs USALabel hydricite  EU vs USA
Label hydricite EU vs USAClaude GINDREY
 
Rapport annuel sur l'islamophobie en Belgique
Rapport annuel sur l'islamophobie en BelgiqueRapport annuel sur l'islamophobie en Belgique
Rapport annuel sur l'islamophobie en BelgiqueMuslims Rights Belgium
 

Destacado (20)

Docker4developers Codemotion2016
Docker4developers Codemotion2016Docker4developers Codemotion2016
Docker4developers Codemotion2016
 
Frederickdiapositiva
FrederickdiapositivaFrederickdiapositiva
Frederickdiapositiva
 
Coag esf 2011
Coag esf 2011Coag esf 2011
Coag esf 2011
 
WALC15 day 2 - Introduccion a contiki y sensores
WALC15 day 2 - Introduccion a contiki y sensoresWALC15 day 2 - Introduccion a contiki y sensores
WALC15 day 2 - Introduccion a contiki y sensores
 
ÉQUIPEMENT DU CHEF D’ORCHESTRE
ÉQUIPEMENT DU CHEF D’ORCHESTREÉQUIPEMENT DU CHEF D’ORCHESTRE
ÉQUIPEMENT DU CHEF D’ORCHESTRE
 
Entrevista sobre la cría de vacas
Entrevista sobre la cría de vacasEntrevista sobre la cría de vacas
Entrevista sobre la cría de vacas
 
Premium Insight Novembre 2012 fr
Premium Insight Novembre 2012 frPremium Insight Novembre 2012 fr
Premium Insight Novembre 2012 fr
 
SALON MIF EXPO 2014 - REVUE DE PRESSE ECRITE & DEPECHE
SALON MIF EXPO 2014 - REVUE DE PRESSE ECRITE & DEPECHESALON MIF EXPO 2014 - REVUE DE PRESSE ECRITE & DEPECHE
SALON MIF EXPO 2014 - REVUE DE PRESSE ECRITE & DEPECHE
 
Problemas Frecuentes del Desarrollo Apego y Ansiedad_
Problemas Frecuentes del Desarrollo Apego y Ansiedad_Problemas Frecuentes del Desarrollo Apego y Ansiedad_
Problemas Frecuentes del Desarrollo Apego y Ansiedad_
 
Búsquedas avanzadas en google
Búsquedas  avanzadas en googleBúsquedas  avanzadas en google
Búsquedas avanzadas en google
 
Auraia bilan en ligne 2013
Auraia bilan en ligne 2013Auraia bilan en ligne 2013
Auraia bilan en ligne 2013
 
Table tennis lesson plans
Table tennis lesson plansTable tennis lesson plans
Table tennis lesson plans
 
Metodologías para el desarrollo de sistemas
Metodologías para el desarrollo de sistemasMetodologías para el desarrollo de sistemas
Metodologías para el desarrollo de sistemas
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
Química en los alimentos
Química en los alimentosQuímica en los alimentos
Química en los alimentos
 
Label hydricite EU vs USA
Label hydricite  EU vs USALabel hydricite  EU vs USA
Label hydricite EU vs USA
 
Presentación1111
Presentación1111Presentación1111
Presentación1111
 
Herramientas tics
Herramientas ticsHerramientas tics
Herramientas tics
 
Rapport annuel sur l'islamophobie en Belgique
Rapport annuel sur l'islamophobie en BelgiqueRapport annuel sur l'islamophobie en Belgique
Rapport annuel sur l'islamophobie en Belgique
 
hola
holahola
hola
 

Similar a Del infierno al cielo

Codemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterCodemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterAdolfo Sanz De Diego
 
Aplicaciones escalables en la nube: mentiras y verdades
Aplicaciones escalables en la nube: mentiras y verdadesAplicaciones escalables en la nube: mentiras y verdades
Aplicaciones escalables en la nube: mentiras y verdadesEnrique Catala Bañuls
 
Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Eduard Tomàs
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAVíctor Bolinches
 
Node al limite con Nest
Node al limite con NestNode al limite con Nest
Node al limite con NestArturo Silvelo
 
OCP 4.10 y Observabilidad.pdf
OCP 4.10 y Observabilidad.pdfOCP 4.10 y Observabilidad.pdf
OCP 4.10 y Observabilidad.pdfRamón Gordillo
 
Detrás del Backend [phpDay 2015]
Detrás del Backend [phpDay 2015]Detrás del Backend [phpDay 2015]
Detrás del Backend [phpDay 2015]Felix Carmona
 
Node al limite con NestJS
Node al limite con NestJSNode al limite con NestJS
Node al limite con NestJSArturo Silvelo
 
Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Gabriela Bosetti
 
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APICloudAppi
 
Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJSBEEVA_es
 
Cursores , procedimientos almacenados en oracle y sql server
Cursores , procedimientos almacenados en oracle y sql serverCursores , procedimientos almacenados en oracle y sql server
Cursores , procedimientos almacenados en oracle y sql serverHome
 
Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015
Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015
Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015José Manuel García García
 

Similar a Del infierno al cielo (20)

Viernes Tecnicos DTrace
Viernes Tecnicos DTraceViernes Tecnicos DTrace
Viernes Tecnicos DTrace
 
Codemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterCodemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipster
 
Aplicaciones escalables en la nube: mentiras y verdades
Aplicaciones escalables en la nube: mentiras y verdadesAplicaciones escalables en la nube: mentiras y verdades
Aplicaciones escalables en la nube: mentiras y verdades
 
10 cosas de rails que deberías saber
10 cosas de rails que deberías saber10 cosas de rails que deberías saber
10 cosas de rails que deberías saber
 
Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++
 
Empezando con Angular 2
Empezando con Angular 2Empezando con Angular 2
Empezando con Angular 2
 
19 javascript servidor
19 javascript servidor19 javascript servidor
19 javascript servidor
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
 
Node al limite con Nest
Node al limite con NestNode al limite con Nest
Node al limite con Nest
 
Codemotion 2015 - Unit Testing
Codemotion 2015 - Unit TestingCodemotion 2015 - Unit Testing
Codemotion 2015 - Unit Testing
 
OCP 4.10 y Observabilidad.pdf
OCP 4.10 y Observabilidad.pdfOCP 4.10 y Observabilidad.pdf
OCP 4.10 y Observabilidad.pdf
 
Detrás del Backend [phpDay 2015]
Detrás del Backend [phpDay 2015]Detrás del Backend [phpDay 2015]
Detrás del Backend [phpDay 2015]
 
Primeros pasos con aurelia
Primeros pasos con aureliaPrimeros pasos con aurelia
Primeros pasos con aurelia
 
Node al limite con NestJS
Node al limite con NestJSNode al limite con NestJS
Node al limite con NestJS
 
Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6
 
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera API
 
Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJS
 
Cursores , procedimientos almacenados en oracle y sql server
Cursores , procedimientos almacenados en oracle y sql serverCursores , procedimientos almacenados en oracle y sql server
Cursores , procedimientos almacenados en oracle y sql server
 
Microservicios con Quarkus
Microservicios con QuarkusMicroservicios con Quarkus
Microservicios con Quarkus
 
Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015
Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015
Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015
 

Último

How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...axelv9257
 
QUINTA SEXTA GENERACION de COMPUTADORAS
QUINTA  SEXTA GENERACION de COMPUTADORASQUINTA  SEXTA GENERACION de COMPUTADORAS
QUINTA SEXTA GENERACION de COMPUTADORASMarc Liust
 
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptxAVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptxdulcemonterroza
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfaxelv9257
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
Editorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfEditorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfYanitza28
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxgustavovasquezv56
 
10°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-810°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-8antoniopalmieriluna
 
Función del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacionFunción del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacionEmanuelMuoz11
 
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendidaLuis Francisco Reyes Aceves
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfYanitza28
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 

Último (18)

How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...
 
QUINTA SEXTA GENERACION de COMPUTADORAS
QUINTA  SEXTA GENERACION de COMPUTADORASQUINTA  SEXTA GENERACION de COMPUTADORAS
QUINTA SEXTA GENERACION de COMPUTADORAS
 
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptxAVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Editorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfEditorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdf
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
 
10°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-810°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-8
 
Función del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacionFunción del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacion
 
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 

Del infierno al cielo

  • 1. Del infierno al cielo Raúl Requero @rrequeroMADRID · NOV 27-28 · 2015
  • 2. MADRID · NOV 27-28 · 2015 ¿Quien soy? Raúl Requero García Fullstack developer @rrequero
  • 3. MADRID · NOV 27-28 · 2015 Recursos https://github.com/rrequero/resources- delInfiernoAlCielo
  • 4. MADRID · NOV 27-28 · 2015 var fs = require('fs'); fs.readFile('file1.txt', 'utf8', function(err, data1) { if (err) { return console.log(err); } fs.readFile('file2.txt', 'utf8', function(err, data2) { if (err) { return console.log(err);} fs.readFile('file3.txt', 'utf8', function(err, data3) { if (err) { return console.log(err); } fs.writeFile("completeFile.txt", data1+data2+data3, function(err) { if (err) { return console.log(err); } console.log("File saved!"); }); }); }); });
  • 5. MADRID · NOV 27-28 · 2015 var fs = require('fs'); fs.readFile('file1.txt', 'utf8', function(err, data1) { if (err) { return console.log(err); } fs.readFile('file2.txt', 'utf8', function(err, data2) { if (err) { return console.log(err);} fs.readFile('file3.txt', 'utf8', function(err, data3) { if (err) { return console.log(err); } fs.writeFile("completeFile.txt", data1+data2+data3, function(err) { if (err) { return console.log(err); } console.log("File saved!"); }); }); }); });
  • 6. MADRID · NOV 27-28 · 2015 Posibles soluciones Promises var promise = readFile('file1.txt', 'utf8'); promise.then(function(content){ console.log(content); }); promise.catch(function(error){ console.error(error); });
  • 7. MADRID · NOV 27-28 · 2015 Generadores http://www.ecma-international.org/ecma-262/6.0/
  • 8. MADRID · NOV 27-28 · 2015 ¿Que son? Los generadores son funciones que permiten tener múltiples puntos de entrada para la suspensión y reanudación de la ejecución. Los generadores son subtipos de Iterator que incluyen el métodos next. Este comportamiento es posible utilizando funciones especiales que devuelven un objeto Generador. ( function * (...) ). Dentro de la función se usan las palabras claves yield y yield* para devolver u obtener un valor y throw para lanzar un error. Una función Generador al ejecutarse comienza en estado suspendido y no comienza su ejecución hasta que se ejecuta por primera vez el método next del objeto Generador devuelto al ejecutar la función
  • 9. MADRID · NOV 27-28 · 2015 ¿Para que no usarlos? El rendimiento empeora
  • 10. MADRID · NOV 27-28 · 2015 ¿Para que usarlos? Lazy evaluation (Evaluación perezosa) Secuencias infinitas Flujo de control asincrono
  • 11. MADRID · NOV 27-28 · 2015 Secuencias infinitas
  • 12. MADRID · NOV 27-28 · 2015 Flujo de control asíncrono
  • 13. MADRID · NOV 27-28 · 2015 Librerías disponibles ● Co: https://www.npmjs.com/package/co ● Thunks: https://www.npmjs.com/package/thunks
  • 14. MADRID · NOV 27-28 · 2015 var thunks = require('thunks')(); var fs = require('fs'); var co = require('co'); var readFile = thunks.thunkify(fs.readFile); var writeFile = thunks.thunkify(fs.writeFile); co(function* (){ try{ var data1 = yield readFile('file1.txt', 'utf8'); var data2 = yield readFile('file2.txt', 'utf8'); var data3 = yield readFile('file3.txt', 'utf8'); yield writeFile('completeFileSequential.txt', data1+data2+data3); console.log(‘File saved!’); }catch(e){ console.log(e); } });
  • 15. MADRID · NOV 27-28 · 2015
  • 16. MADRID · NOV 27-28 · 2015 ¿Que es? Web framework Creado por el equipo que creo ExpressJS Usa generadores (Basado en la librería co) Mejor manejo de los errores Core muy simple, no incorpora middlewares
  • 17. MADRID · NOV 27-28 · 2015 Diferencias entre Koa y Express Funcionalidad Koa Express Middleware Kernel X X Routing X Templating X Sending Files X JSONP X
  • 18. MADRID · NOV 27-28 · 2015 Diferencias entre Koa y Express Funcionalidad Koa Express Middleware Kernel X X Routing (koa-router) X Templating (koa-render) X Sending Files (koa-send) X JSONP (koa-jsonp) X
  • 19. MADRID · NOV 27-28 · 2015 Primer app con Koa var koa = require('koa'); var app = koa(); app.use(function *(){ this.body = 'Hello World'; }); app.listen(3000);
  • 20. MADRID · NOV 27-28 · 2015 Cascading Mismo sistema de middlewares que otros frameworks. Podemos lograr ‘true middleware’
  • 21. MADRID · NOV 27-28 · 2015 Error handling Por defecto todos los errores se imprimen en stderr Si NODE_ENV=test los errores no salen por stderr. app.on('error', function(err, ctx){ log.error('server error', err, ctx); });
  • 22. MADRID · NOV 27-28 · 2015 Context Encapsula los objetos request y response Se crea una por cada request Incluye métodos de ayuda Se accede a él a traves de this
  • 23. MADRID · NOV 27-28 · 2015 Context API ctx.req: Objeto request ctx.res: Objeto response ctx.state: Espacio de nombres recomendado para pasar información entre los middlewares ctx.app: Referencia a la instancia de la aplicación
  • 24. MADRID · NOV 27-28 · 2015 Context API Cookies: Koa usa la librería: https://github.com/jed/cookies ∘ ctx.cookies.get(name, [options]): Obtener una cookie por nombre ∘ ctx.cookies.set(name, value, [options]): Crear una cookie
  • 25. MADRID · NOV 27-28 · 2015 Context API Throw: Koa usa la librería: (http-errors) https://github.com/jshttp/http-errors ∘ ctx.throw([msg], [errorCode],[properties]) Ej: this.throw(403, ‘Not authorized’)
  • 26. MADRID · NOV 27-28 · 2015 Context API Assert: Koa usa la librería: (http-assert) https://github.com/jshttp/http-assert ∘ ctx.assert(value, [msg], [errorCode], [properties]) Ej: this.assert(this.user, ‘Not authorized’, 403)
  • 27. MADRID · NOV 27-28 · 2015 Context API Alias: Existen alias para los atributos más utilizados Request: - header - headers - method - url - ip - etc... Response: - body - status - message - type - length - etc...
  • 28. MADRID · NOV 27-28 · 2015 Middlewares Koa-router: https://github.com/alexmingoia/koa-router Koa-body-parser:https://github.com/koajs/bodyparser Koa-render: https://github.com/queckezz/koa-views
  • 29. MADRID · NOV 27-28 · 2015 Middlewares koa-mount: https://github.com/koajs/mount koa-session: https://github.com/koajs/session koa-static:https://github.com/koajs/static koa-logger:https://github.com/koajs/logger (dev)
  • 30. MADRID · NOV 27-28 · 2015 Ejemplo api
  • 31. MADRID · NOV 27-28 · 2015
  • 32. MADRID · NOV 27-28 · 2015

Notas del editor

  1. No resuelven el problema del todo. Siguen existiendo callback en nuestro código. Poner ? encima para decir que no es del todo solución????
  2. No resuelven el problema del todo. Siguen existiendo callback en nuestro codigo.
  3. yield* se utiliza para llamar a otra funcion generador y que se siga llamando a next normal sin necesiada de ver el valor. function* g1() { yield 2; yield 3; yield 4; } function* g2() { yield 1; yield* g1(); yield 5; } var iterator = g2(); console.log(iterator.next()); // { value: 1, done: false } console.log(iterator.next()); // { value: 2, done: false } console.log(iterator.next()); // { value: 3, done: false } console.log(iterator.next()); // { value: 4, done: false } console.log(iterator.next()); // { value: 5, done: false } console.log(iterator.next()); // { value: undefined, done: true }
  4. ops/segundo
  5. Enseñar ejemplo de infinite con fibonacci
  6. Ejecutar fichero asyncControlFlow/io.js
  7. Ejecutar fichero asyncControlFlow/io.js
  8. CoJS: Soporta promesas, generadores, thunks, etc. Las promesas no es necesario wrapearlas
  9. Poner ejemplo de true middeware. El flujo baja y despues vuelve a subir Mostrar ejemplo de cascading
  10. Poner ejemplo de true middeware. El flujo baja y despues vuelve a subir Mostrar ejemplo de cascading
  11. Poner ejemplo de true middeware. El flujo baja y despues vuelve a subir Mostrar ejemplo de cascading
  12. Poner ejemplo de true middeware. El flujo baja y despues vuelve a subir Mostrar ejemplo de cascading
  13. Poner ejemplo de true middeware. El flujo baja y despues vuelve a subir Mostrar ejemplo de cascading
  14. Poner ejemplo de true middeware. El flujo baja y despues vuelve a subir Mostrar ejemplo de cascading
  15. Poner ejemplo de true middeware. El flujo baja y despues vuelve a subir Mostrar ejemplo de cascading
  16. Poner ejemplo de true middeware. El flujo baja y despues vuelve a subir Mostrar ejemplo de cascading
  17. Poner ejemplo de true middeware. El flujo baja y despues vuelve a subir Mostrar ejemplo de cascading
  18. koa-session. Session by cookie koa-static: Static file serving middleware. koa-logger: Logar las peticiones