Desarrollo web en Nodejs con Pillars por Chelo Quilón. En esta charla veremos inicialmente conceptos de Node.js y JavaScript, para después introducir las características diferenciadoras del desarrollo web en Node.js y se expondrá la metodología para crear una aplicación web mediante el framework Pillars.js.
Clase de Groovy para Seminario de ingeniería en informática. Cátedra de Pablo Cosso. Clase a cargo de Nicolás Bello Camilletti.
Mas información y código fuente: http://www.assembla.com/spaces/clase-groovy/
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAVíctor Bolinches
02/03/2017
Charla Universidad Politécnica de Valencia - https://www.upv.es/
Asingnatura : Auditoria, Calidad y Gestion de Sistemas de Información (ACG)
Máster Universitario en Ingeniería Informática - https://www.upv.es/titulaciones/MUIINF/
Clase de Groovy para Seminario de ingeniería en informática. Cátedra de Pablo Cosso. Clase a cargo de Nicolás Bello Camilletti.
Mas información y código fuente: http://www.assembla.com/spaces/clase-groovy/
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAVíctor Bolinches
02/03/2017
Charla Universidad Politécnica de Valencia - https://www.upv.es/
Asingnatura : Auditoria, Calidad y Gestion de Sistemas de Información (ACG)
Máster Universitario en Ingeniería Informática - https://www.upv.es/titulaciones/MUIINF/
node-db: La excusa perfecta para hablar de C++ y Node.jsMariano Iglesias
Un ejemplo de amistad entre C++ y Node.jsEsta charla introduce a node-db, una libreria para Node.js que busca ofrecer un soporte unificado a multiples bases de datos relacionales (MySQL y Oracle entre ellas), como una excusa para entrar al tema de fondo: el desarrollo de plugins para Node. js utilizando C++ y el motor V8
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...Iván López Martín
Slides de mi charla de Greach 2013: "Todo lo que me hubiera gustado saber cuando empecé a desarrollar con Grails"
Video de la charla: http://greach.es/sessions-2013/ivan-lopez-martin-todo-lo-que-me-hubiera-gustado-saber-cuando-empece-a-desarrollar-con-grails
Charla sobre gestión de servidores con Puppet realizada en los cursos del GUL de la Universidad Carlos III de Madrid por Javier Turégano.
La charla se divide principalmente en 3 partes: describir el problema que encaramos cuando intentamos administrar el creciente número de servidores que requiere cualquier entidad que consuma servicios de IT, algunas de las posibles soluciones que podemos encontrar y qué características debe tener una solución a este problema y por último cómo Puppet puede ser esta solución y una pequeña introducción a cómo funciona.
Codemotion 2013 - Quiero tiempo real y lo quiero para ayerIván López Martín
Slides de mi charla de Codemotion "http://codemotion.es/talk/19-october/88". El código fuente de las demos está disponible es https://github.com/lmivan/codemotion-2013.
El vídeo de repetción de la charla en @madridgug está disponible en: http://www.youtube.com/watch?v=dkDub1QLqmM
En un mundo hiper-conectado el concepto Tiempo Real es cada vez más utilizado y las arquitecturas "message driven" son la manera de conseguirlo porque permiten crear aplicaciones modulares y escalables.
En esta charla veremos un tipo de arquitectura totalmente distinta a la estandar de Grails para aplicaciones web que nos permitirá servir contenido en tiempo real a muchos clientes de manera rápida y sencilla teniendo distintos módulos independientes que interactuarán entre sí.
Mini clase Intro Programación Python UTN Profesorado 2015Mariano Reingart
Introducción a la programación de computadoras con Python
Presentación del lenguaje de programación Python
Motivaciones y estudios relacionados
Descargas - Instalación
Estructuras básicas (condicionales, ciclos, funciones)
Demostración
Feedback
Bonus track (trabajo de los alumnos con raspberry pi, desarrollo web, niños)
node-db: La excusa perfecta para hablar de C++ y Node.jsMariano Iglesias
Un ejemplo de amistad entre C++ y Node.jsEsta charla introduce a node-db, una libreria para Node.js que busca ofrecer un soporte unificado a multiples bases de datos relacionales (MySQL y Oracle entre ellas), como una excusa para entrar al tema de fondo: el desarrollo de plugins para Node. js utilizando C++ y el motor V8
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...Iván López Martín
Slides de mi charla de Greach 2013: "Todo lo que me hubiera gustado saber cuando empecé a desarrollar con Grails"
Video de la charla: http://greach.es/sessions-2013/ivan-lopez-martin-todo-lo-que-me-hubiera-gustado-saber-cuando-empece-a-desarrollar-con-grails
Charla sobre gestión de servidores con Puppet realizada en los cursos del GUL de la Universidad Carlos III de Madrid por Javier Turégano.
La charla se divide principalmente en 3 partes: describir el problema que encaramos cuando intentamos administrar el creciente número de servidores que requiere cualquier entidad que consuma servicios de IT, algunas de las posibles soluciones que podemos encontrar y qué características debe tener una solución a este problema y por último cómo Puppet puede ser esta solución y una pequeña introducción a cómo funciona.
Codemotion 2013 - Quiero tiempo real y lo quiero para ayerIván López Martín
Slides de mi charla de Codemotion "http://codemotion.es/talk/19-october/88". El código fuente de las demos está disponible es https://github.com/lmivan/codemotion-2013.
El vídeo de repetción de la charla en @madridgug está disponible en: http://www.youtube.com/watch?v=dkDub1QLqmM
En un mundo hiper-conectado el concepto Tiempo Real es cada vez más utilizado y las arquitecturas "message driven" son la manera de conseguirlo porque permiten crear aplicaciones modulares y escalables.
En esta charla veremos un tipo de arquitectura totalmente distinta a la estandar de Grails para aplicaciones web que nos permitirá servir contenido en tiempo real a muchos clientes de manera rápida y sencilla teniendo distintos módulos independientes que interactuarán entre sí.
Mini clase Intro Programación Python UTN Profesorado 2015Mariano Reingart
Introducción a la programación de computadoras con Python
Presentación del lenguaje de programación Python
Motivaciones y estudios relacionados
Descargas - Instalación
Estructuras básicas (condicionales, ciclos, funciones)
Demostración
Feedback
Bonus track (trabajo de los alumnos con raspberry pi, desarrollo web, niños)
¿Cómo mantener tu javascript?: Buenas prácticasjaespinmora
Buenas práctias en el desarrollo de software con javascript. Código limpio, mantenible, escalable, tests,... Charla perteneciente al evento Betabeers Murcia del día 9 de Mayo de 2014
Se aprenderá a desarrollar una API siguiendo la metodología MADA que tiene como misión reducir la complejidad a la hora de desarrollar una API y que utiliza RAML como lenguaje de definición de APIs. A patir del RAML, se generará toda la documentación necesaria para exponer a los developers, se podrá construir un fake para probarlo en la consola de pruebas y se generará un esqueleto en node.js. El taller desarrollará un ejemplo utilizando objetos en memoria y otro ejemplo utilizando MongoDB como base de datos.
Similar a Desarrollo web en Nodejs con Pillars por Chelo Quilón (20)
IONIC, el framework para crear aplicaciones híbridas multiplataformabetabeers
En esta charla, Juan nos va a enseñar los conceptos básicos para crear una aplicación móvil multiplataforma usando el framework "IONIC". Aprenderemos cómo instalar las herramientas básicas para su uso, haremos una breve aproximación a los distintos plugins que nos ofrece "Cordova" y aprenderemos un poco de la arquitectura interna de IONIC (basado en un patrón MVC, el cuál usa AngularJS, Typescript y CSS (bajo SASS).
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)betabeers
La transformación digital ha traído nuevas opciones para desplegar aplicaciones y las exigencias de flexibilidad en el desarrollo de negocio son cada vez mayores. ¿Infraestructura propia? ¿Proveedores de servicios? ¿AWS? ¿Azure? En el próximo Betabeers Bilbao, Jaime Balañá, Director Técnico de NetApp, explicará cómo las empresas pueden aprovechar estas distintas opciones sea cual sea su dimensión de negocio y sin cambiar la forma de gestionar sus datos.
Blockchain: la revolución industrial de internet - Oscar Lagebetabeers
Oscar Lage nos hablará de Blockchain una tecnología revolucionaria que viene para quedarse y su capacidad para descentralizar la confianza. Esta cualidad que permite eliminar los intermediarios en muchos procesos y servicios empresariales, dando lugar a nuevos modelos de negocio basados en la desintermediación y la colaboración. La principal diferencia entre Blockchain e internet es que mientras que la red se limita al intercambio de información, la cadena de bloques permite intercambiar valor. Por ejemplo, con Blockchain podremos comprar o vender casas, cosas e ideas directamente entre nosotros sin necesidad de intermediarios, como Amazon, Visa o Wallapop.
Cloud Learning: la formación del siglo XXI - Mónica Mediavillabetabeers
La industria de la educación online y el e-Learning sigue avanzando y proponiendo nuevas maneras de aprender. Estamos en un momento de transición en el que los escenarios formativos locales presenciales se están transformando en escenarios formativos globales en la nube.
La línea recta hacia el éxito - Jon Torrado - Betabeers Bilbaobetabeers
Falso. La línea recta al éxito no existe, pero convivir con las curvas es parte del camino. Jon Torrado cuenta con una amplia trayectoria como emprendedor y nos contará su experiencia. Especialmente las claves de GamersWalk donde es Co-founder y CTO. Un proyecto disfrutar de los streamers y eventos de eSport, con los mejores premios.
Ponencia sobre emprendizaje en el Betabeers Bilbao sobre emprendizaje el 24/03/2017
6 errores a evitar si eres una startup móvil y quieres evolucionar tu appbetabeers
Has publicado una versión en el Apple Store con una feature espectacular. Tras un par de días en producción te das cuenta de que algo no va bien y que tienes malas reviews en el store. Mientras localizas el error vas perdiendo cada vez más usuarios... ¿te suena?
No tienes una arquitectura limpia definida en tu proyecto, por lo que te cuesta localizar este fallo, un fallo que podría haberse previsto usando Unit Test, o haberlo detectado a tiempo usando un sistema de crash reporting.
Tras unos años trabajando para startups móviles de diferentes partes del mundo como freelance, Roberto Garrido nos habla de su stack tecnológico preferido para intentar atajar este tipo de problemas.
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)betabeers
Integración y entrega continua: principios y prácticas englobados desde de estos conceptos y por supuesto, beneficios que estas prácticas pueden ofrecer para nuestro producto o negocio.
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)betabeers
Hablaremos de las cualidades que debe tener un Project Manager internacional, así como de los retos a los que se enfrenta a la hora de ejercer su liderazgo, con escasa autoridad y debiendo actuar como mediador de conflictos en distintos contextos culturales. También repasaremos los estándares y buenas prácticas en gestión de proyectos más valoradas a nivel internacional, y conoceremos la metodología de trabajo y herramientas adoptadas por Gfi-GaiaTradeFactory para gestionar sus proyectos europeos.
Presentación en Betabeers Madrid - Marzo 2016
IBM Bluemix posee un extenso catálogo de servicios para ayudar a los desarrolladores en su trabajo. Dentro de estos servicios se encuentra Watson, que contiene una serie de servicios cognitivos para enriquecer el funcionamiento de las aplicaciones: análisis de sentimientos de textos, convertir voz a texto y viceversa o extraer información de fotografías, etc.
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.betabeers
Pesado, lento, antiguo, complicado y complejo son los calificativos que suelen venir a la mente cuando pensamos en aplicaciones web con Java. Y en verdad es así si utilizamos frameworks tradicionales (JSF, Struts, Spring, etc.), enfocados a desarrollar grandes aplicaciones empresariales o corporativas. Pero si necesitamos hacer una aplicación web pequeñas y simples, ¿no hay ningún framework que nos ayude sin toda la complejidad de los tradicionales? Pues sí que lo hay y se llama Spark Java.
Buenas prácticas para la optimización webbetabeers
Buenas prácticas en el frontend, y acciones en el servidor, para hacer que tu web vuele. Impartida por @lmmartin en el XI Betabeers Badajoz (16/07/2015).
Introducción al Big Data - Xabier Tranche - VIII Betabeers Bilbao 27/02/2015betabeers
¿Qué es el Big Data? ¿Qué diferencia hay entre una base de datos relacional y una documental? El almacenamiento masivo de datos es una tendencia en los proyectos tecnológicos. Gracias a bases de datos como MongoDB ahora es posible. Xabier Tranche cuenta con una amplia en proyectos digitales y en marketing, siendo el promotor de Start-ups como Muaacka. Pondrá a nuestra disposición toda su experiencia en esta ponencia
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015betabeers
PAYTPV tiene como función reducir los pasos en los procesos de compra y mejorar la experiencia de los clientes a la hora de pagar en cualquier página Web, Móvil, Tablet o SmarTV. Las soluciones de PAYTPV permiten a las empresas poder operar a través del TPV que estas ya tengan contratado con su entidad Bancaria, permitiendo que sus clientes puedan pagar directamente en su página Web, Móvil o Tablet. Los clientes no tendrán que salirse de una experiencia de compra integrada y el cobro y respuesta positiva o negativa se les ofrece en la misma página.
Presentación Kbi Digital - VIII Betabeers Bilbao 27/02/2015betabeers
KBI Digital, incubadora avanzada de proyectos de emprendimiento digital, pretende ser un centro de referencia para la innovación y desarrollo de iniciativas en el ámbito digital, una referencia para la creación de start ups, de nuevas aplicaciones, para el desarrollo de empresas del sector TIC
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor OficialAMADO SALVADOR
Explora el catálogo completo de cajas fuertes BTV, disponible a través de Amado Salvador, distribuidor oficial de BTV. Este catálogo presenta una amplia variedad de cajas fuertes, cada una diseñada con la más alta calidad para ofrecer la máxima seguridad y satisfacer las diversas necesidades de protección de nuestros clientes.
En Amado Salvador, como distribuidor oficial de BTV, ofrecemos productos que destacan por su innovación, durabilidad y robustez. Las cajas fuertes BTV son reconocidas por su eficiencia en la protección contra robos, incendios y otros riesgos, lo que las convierte en una opción ideal tanto para uso doméstico como comercial.
Amado Salvador, distribuidor oficial BTV, asegura que cada producto cumpla con los más estrictos estándares de calidad y seguridad. Al adquirir una caja fuerte a través de Amado Salvador, distribuidor oficial BTV, los clientes pueden tener la tranquilidad de que están obteniendo una solución confiable y duradera para la protección de sus pertenencias.
Este catálogo incluye detalles técnicos, características y opciones de personalización de cada modelo de caja fuerte BTV. Desde cajas fuertes empotrables hasta modelos de alta seguridad, Amado Salvador, como distribuidor oficial de BTV, tiene la solución perfecta para cualquier necesidad de seguridad. No pierdas la oportunidad de conocer todos los beneficios y características de las cajas fuertes BTV y protege lo que más valoras con la calidad y seguridad que solo BTV y Amado Salvador, distribuidor oficial BTV, pueden ofrecerte.
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...AMADO SALVADOR
El catálogo general de electrodomésticos Teka presenta una amplia gama de productos de alta calidad y diseño innovador. Como distribuidor oficial Teka, Amado Salvador ofrece soluciones en electrodomésticos Teka que destacan por su tecnología avanzada y durabilidad. Este catálogo incluye una selección exhaustiva de productos Teka que cumplen con los más altos estándares del mercado, consolidando a Amado Salvador como el distribuidor oficial Teka.
Explora las diversas categorías de electrodomésticos Teka en este catálogo, cada una diseñada para satisfacer las necesidades de cualquier hogar. Amado Salvador, como distribuidor oficial Teka, garantiza que cada producto de Teka se distingue por su excelente calidad y diseño moderno.
Amado Salvador, distribuidor oficial Teka en Valencia. La calidad y el diseño de los electrodomésticos Teka se reflejan en cada página del catálogo, ofreciendo opciones que van desde hornos, placas de cocina, campanas extractoras hasta frigoríficos y lavavajillas. Este catálogo es una herramienta esencial para inspirarse y encontrar electrodomésticos de alta calidad que se adaptan a cualquier proyecto de diseño.
En Amado Salvador somos distribuidor oficial Teka en Valencia y ponemos atu disposición acceso directo a los mejores productos de Teka. Explora este catálogo y encuentra la inspiración y los electrodomésticos necesarios para equipar tu hogar con la garantía y calidad que solo un distribuidor oficial Teka puede ofrecer.
En este documento analizamos ciertos conceptos relacionados con la ficha 1 y 2. Y concluimos, dando el porque es importante desarrollar nuestras habilidades de pensamiento.
Sara Sofia Bedoya Montezuma.
9-1.
KAWARU CONSULTING presenta el projecte amb l'objectiu de permetre als ciutadans realitzar tràmits administratius de manera telemàtica, des de qualsevol lloc i dispositiu, amb seguretat jurídica. Aquesta plataforma redueix els desplaçaments físics i el temps invertit en tràmits, ja que es pot fer tot en línia. A més, proporciona evidències de la correcta realització dels tràmits, garantint-ne la validesa davant d'un jutge si cal. Inicialment concebuda per al Ministeri de Justícia, la plataforma s'ha expandit per adaptar-se a diverses organitzacions i països, oferint una solució flexible i fàcil de desplegar.
HPE presenta una competició destinada a estudiants, que busca fomentar habilitats tecnològiques i promoure la innovació en un entorn STEAM (Ciència, Tecnologia, Enginyeria, Arts i Matemàtiques). A través de diverses fases, els equips han de resoldre reptes mensuals basats en àrees com algorísmica, desenvolupament de programari, infraestructures tecnològiques, intel·ligència artificial i altres tecnologies. Els millors equips tenen l'oportunitat de desenvolupar un projecte més gran en una fase presencial final, on han de crear una solució concreta per a un conflicte real relacionat amb la sostenibilitat. Aquesta competició promou la inclusió, la sostenibilitat i l'accessibilitat tecnològica, alineant-se amb els Objectius de Desenvolupament Sostenible de l'ONU.
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaAMADO SALVADOR
Descubra el catálogo completo de buzones BTV, una marca líder en la fabricación de buzones y cajas fuertes para los sectores de ferretería, bricolaje y seguridad. Como distribuidor oficial de BTV, Amado Salvador se enorgullece de presentar esta amplia selección de productos diseñados para satisfacer las necesidades de seguridad y funcionalidad en cualquier entorno.
Descubra una variedad de buzones residenciales, comerciales y corporativos, cada uno construido con los más altos estándares de calidad y durabilidad. Desde modelos clásicos hasta diseños modernos, los buzones BTV ofrecen una combinación perfecta de estilo y resistencia, garantizando la protección de su correspondencia en todo momento.
Amado Salvador, se compromete a ofrecer productos de primera clase respaldados por un servicio excepcional al cliente. Como distribuidor oficial de BTV, entendemos la importancia de la seguridad y la tranquilidad para nuestros clientes. Por eso, trabajamos en colaboración con BTV para brindarle acceso a los mejores productos del mercado.
Explore el catálogo de buzones ahora y encuentre la solución perfecta para sus necesidades de correo y seguridad. Confíe en Amado Salvador y BTV para proporcionarle buzones de calidad excepcional que cumplan y superen sus expectativas.
2. Presentación
Javi y Chelo
Nos dedicamos al desarrollo de software desde hace 16
años.
Hemos desarrollado el framework Pillars.js, documentado
y liberado como software libre, con licencia MIT.
4. JavaScript
Brendan Eich
● 1995, Brendan Eich, crea un lenguaje llamado “Mocha”, cuando
pertenecía al grupo de desarrollo del navegador Netscape.
● Después pasó a llamarse “LiveScript”.
● Cuando Netscape es adquirida por Sun Microsystems
(propietaria del lenguaje Java), muy popular en aquellos años, es
renombrado a JavaScript debido a una estrategia de
marketing, aún cuando los lenguajes no están relacionados.
5. JavaScript - Evolución de herramientas
1995
Mocha
LiveScript
2006 2017
No estandarización en DOM y BOM entre
navegadores.
No había Herramientas de Desarrollador
integradas en el navegador.
1998
1998
2008
RWD
Discutidos y descritos por el World
Wide Web Consortium (W3C) en
julio de 2008 en su recomendación
"Mobile Web Best Practices" bajo
el subtítulo "One Web"
2014
2009
2010
2016
2015
2013
2011
2012
6. JavaScript
ECMA International, es la organización internacional que crea una amplia gama de
estándares mundiales TIC y CE (electrónica de consumo).
Algunos estándares ECMA son:
- ECMA-262. Especificación del lenguaje ECMAScript
- ECMA-334. Especificación de C#.
- ECMA-335. Especificación del CLI
- ECMA-372. Especificación de C++/CLI
En 1997, se crea un comité ECMA, llamado TC39 para estandarizar JavaScript.
A partir de entonces, los estándares de JavaScript se rigen como ECMAScript.
7. JavaScript - versiones
Versión ECMAScript Año
ES1 Junio 1997
ES2 Agosto 1998
ES3 Diciembre 1999
ES5 Diciembre 2009
ES 5.1 Junio 2011
ES6 / ES2015 / Harmony Junio 2015
ES7 / ES2016 2016
ES2017 En progreso
9. Qué es ES y qué no es ES
.getElementById(element) ● Objetos propios del lenguaje
como Object, Array, String,
Date...
● Declaración de variables
● Sentencias condicionales
● Iteradores, bucles
● Manejo de asincronía
● …..
Web API’s ECMAScript
Al escribir código JS disponemos de un gran
número de API’s.
Web API’s
https://developer.mozilla.org/en-US/docs/Web/
API
10. JavaScript - algunas características...
En JavaScript todo son objetos.
Hay una serie de objetos fundamentales como por ejemplo: Object, Function..
Objetos relacionados con números, fechas y cálculos matemáticos: Number, Math y Date.
Objetos para la manipulación de textos: String y RegExp
Colecciones indexadas: Array...
Colecciones con keys: Map, Set, WeakMap...
JavaScript está basado en prototipos.
12. JavaScript - ES6
Declaración de variables: let y const. Resuelve problemas de alcance.
function getValue(condition){
if (condition){
var value = “blue”;
//…
console.log(“if”, value);
}else{
// ¿Existe aquí la variable value?
console.log(“else”, value);
}
// ¿Y aquí?
console.log(“Fuera del if”, value);
}
getValue(true);
https://jsfiddle.net/lilxelo/tjmojw7k/
13. JavaScript - ES6
Declaración de variables: let y const. Resuelve problemas de alcance.
Funciones: inicialización de parámetros por defecto, resto de
parámetros(convive con arguments), spread operator, arrow functions…
Objetos: nuevos métodos .is(), .assign(),
inicialización de objetos literales, super…
Desestructuración de objetos, arrays
y parámetros,
ejemplo de desestructuración de objetos:
let node = {
type: "Identifier",
name: "foo"
};
let { type, name, value = true } = node;
console.log(type); // "Identifier"
console.log(name); // "foo"
console.log(value); // true
14. JavaScript - ES6
Nuevos tipos: Sets y Maps
Iteradores y Generadores: function *createIterator(){yield 1; ….},... for-of
para iterar sobre colecciones de objetos: arrays, maps y sets.
Mejora de Array: nuevos métodos .from(), .of(), .find(), .index() ...
Clases: nueva forma de declarar PROTOTIPOS. Las propiedades
complejas deben seguir siendo declaradas con Object.defineProperty().
Asincronía: promesas.
Módulos: modules e import/export.
Libro de ES6: https://leanpub.com/understandinges6/
15. JavaScript - ES7
Exponente: let result = 5 ** 2;
Array: Array.prototype.includes();
Cambiar el scope de una función a modo estricto.
16. JavaScript - ES8 - En progreso
La más relevante ahora:
Asincronía: Async Functions, async y await.
18. JavaScript - asincronía
Diferentes metodologías para la programación asíncrona:
https://www.todojs.com/programacion-asincrona-paso-de-continuadores-eventos-promesas-y-gen
eradores/
readFile("example.txt", function(err, contents) {
if (err) {
throw err;
}
writeFile("example.txt", function(err) {
if (err) {
throw err;
}
console.log("File was written!");
});
});
Patrón
Callback:
19. JavaScript - asincronía (callbacks hell)
method1(function(err, result) {
if (err) {
throw err;
}
method2(function(err, result) {
if (err) {
throw err;
}
method3(function(err, result) {
if (err) {
throw err;
}
method4(function(err, result) {
if (err) {
throw err;
}
method5(result);
});
});
});
});
A esta problemática le da solución ES6 con
las promesas, y ES8 lo está mejorando con
Async Function.
En Pillars, usamos la librería procedure.
https://github.com/pillarsjs/procedure
21. JavaScript - Repositorio de librerías
npm es el manejador de paquetes por
defecto para Node.js, un entorno de
ejecución para JavaScript.
>> npm install nombre_paquete //instala una librería
…
>> npm update //actualiza las dependencias de un proyecto
>> npm init //inicializa un proyecto
>> npm --version //2.7.4
24. Node.js
Por lo tanto, para trabajar en Node.js, hay que tener
claros dos conceptos, HTTP request y el HTTP
response.
El request es la petición al servidor, se compone entre
otros de:
- Método: GET, POST, PUT, etc.
- Path: la URL que se solicita
- Headers
- Body
- …..
Node.js
Petición
(request)
Respuesta
(response)
25. Node.js
GET php.net HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: es-ES,es;q=0.8,en;q=0.6
Cache-Control: max-age=0
Connection: keep-alive
Cookie: COUNTRY=NA%2C122.16.430.651; LAST_LANG=es; LAST_NEWS=3847110839
Host: php.net
If-Modified-Since: Mon, 09 Nov 2015 11:50:11 GMT
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/46.0.2490.80 Safari/537.36
Ejemplo de cabecera HTTP
26. Node.js con Pillars.js
Gangway (gw)
Contiene todos los datos de la petición parseados, ejemplo con User Agent:
User Agent tal y como nos viene en la petición:
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36
En pillars.js:
let userAgent = gw.ua;
/*
ua:{
mobile: false,
os: 'Windows NT 6.1; WOW64',
engine: 'Blink',
browser: 'Chrome'
}
*/
String
propiedad de gangway, con
el user agent en un objeto
27. Node.js con Pillars.js
Gangway (gw) - algunas propiedades:
var myRoute = new Route(gw=>{
let POST = gw.content.params;
let GET = gw.query;
let cookie = gw.cookie;
let id = gw.id; // id del objeto gangway para la petición.
let ip = gw.ip; // ip del cliente
let browserLang = gw.language; // Primer idioma del navegador del cliente
let cors = gw.cors; // Gestión de orígenes cruzados.
let method = gw.method; // Método de la petición GET y/o POST
let encoding = gw.encoding; // encoding que se utiliza para el envío al cliente.
gw.json(gw);
});
28. Node.js con Pillars.js
Gangway (gw)
Gangway contiene todos los datos de la petición parseados y métodos para la respuesta, como:
● gw.file(). Envía un archivo. Implementa byte-serving.
● gw.send(). Envía una respuesta, si es string se envía como text/html y si es un objeto lo envía
como objeto parseado tipo application/json.
● gw.html(). Envía una respuesta como text/html
● gw.render(). Este método permite enviar un template renderizado
● gw.json(). Envía una respuesta en formato application/json
● gw.text(). Envía una respuesta parseado como text/plain
32. Ya tenemos en mente dos nuevos conceptos:
● petición y respuesta - Unificados en el objeto
Gangway
● Controlador - que se crea instanciando a la clase
Route.
34. Node.js con Pillars.js Hola Mundo con Pillars.js:
// Inclusión de la librería
var project = require('pillars');
// Ejecutamos el servicio http buit-in
project.services.get('http').start();
// Añadimos el controlador al proyecto
project.routes.add(new Route({
method: ["GET","POST"],
path: '/'
},function(gw){
gw.html("Hola Mundo!!");
}));
Controlador
35. Node.js con Pillars.js
// Inclusión de la librería
var project = require('pillars');
// Ejecutamos el servicio http buit-in
project.services.get('http').start();
// Añadimos el controlador al proyecto
project.routes.add(new Route({
method: ["GET","POST"],
path: '/'
},function(gw){
gw.html("Hola Mundo!!");
}));
Hola Mundo con Pillars.js:
Controlador
38. Node.js con Pillars.js
var project = require('pillars');
project.config; // Configuración del proyecto
project.services; // Servicios del proyecto
project.routes; // Controladores del proyecto
project.middleware; // Middleware del proyecto
39. Node.js con Pillars.js
// Inclusión de la librería
var project = require('pillars');
// Variables de entorno del proyecto, por defecto….
project.config = {
cors: true,
debug: false,
logFile: false,
maxUploadSize: 5*1024*1024,
//maxCacheFileSize : 5*1024*1024,
//cacheMaxSamples : 100,
//cacheMaxSize : 250*1024*1024,
//cacheMaxItems : 5000,
fileMaxAge : 7*24*60*60,
renderReload: false,
favicon: pillars.resolve('./favicon.ico')
};
40. Node.js con Pillars.js
// Inclusión de la librería
var project = require('pillars');
// Controladores
project.routes.add(route);
project.routes.remove(idroute);
project.routes.get(idroute);
// Middleware
project.middleware.add(middleware);
project.middleware.remove(idmiddleware);
project.middleware.get(idmiddleware);
// Servicios
project.services.add(service);
project.services.remove(idservice);
project.services.get(idservices);
46. PillarsJS
Pillars.js ofrece un ecosistema de herramientas para el
desarrollo web backend en JavaScript
● Especialmente orientado a objetos.
● Server Object Model / Backend Object Model
● Caché automatizado
● Internacionalización
● Programación de tareas
● Templating
● Formateo de texto y fechas
● Sintaxis y nomenclatura homogénea en todo el entorno
● Curva de aprendizaje suave
● ...
49. PillarsJS
Ejemplo de aplicación en la que vamos a activar un directorio estático. En
éste vamos a volcar archivos .hbs y se ejecutarán directamente en la url dada.
1) Instalar node.js https://nodejs.org/es/
2) Archivo package.json
3) Archivo app.js
51. PillarsJS
Middleware: Son porciones de código que se ejecutan en toda la aplicación, o solo en ciertos
controladores de ruta con ciertas características. Por lo tanto, podremos crear middleware
que se aplique en toda la aplicación web, es decir, para cualquier solicitud, o que solo se ejecute
en ciertos controladores, dependiendo de la configuración de estos
Cadena de middleware
Petición
(request) Respuesta
(response)
Controlador