Este documento presenta una introducción a Node.js, un framework de JavaScript para el desarrollo de aplicaciones web en tiempo real. Explica conceptos clave como el modelo de programación basado en eventos asíncronos, el uso de módulos y librerías como Express para crear servidores web y aplicaciones, y el acceso a bases de datos como MySQL a través de módulos. También menciona algunas herramientas y técnicas avanzadas como el uso de clusters para aprovechar múltiples procesadores.
Charla para la #PEUMConf2018.
Introducción a docker, cómo hemos evolucionado los entornos de desarrollo, desde la instalación de soluciones manualmente, uso de servidores, vagrant...
Realización de una demo práctica usando docker-compose para montar un entorno de desarrollo de algo tipo Php, Wordpress, Node...
Introducción a herramientas de Roots (José Debuchy, WCBA 2017)wpargentina
Charla introductoria a las herramientas que provee la suite Roots.
1. Sage: starter theme con un workflow avanzado, utilizando SASS, node y gulp, entre otras herramientas.
2. Bedrock: organización más profesional de archivos de WordPress, utilización de composer para dependencias y mayor seguridad.
3. Trellis: utilización de Vagrant para crear máquinas virtuales similares a otros entornos y Ansible para configurar servidores avanzados y hacer un deploy controlado. Esta charla apunta a que el oyente conozca una forma diferente y más profesional de llevar adelante sus proyectos en WordPress, utilizando control de versiones y herramientas de desarrollo moderno.
Con Docker podemos envolver una aplicación dentro de un contenedor con un sistema de ficheros completo y con todo lo que necesita para funcionar, de esta forma la aplicación siempre se ejecutará igual independientemente del entorno en el que se encuentre.
En esta charla empezaremos con una introducción a Docker para después pasar a explicar con ejemplos cómo podemos crear contenedores que repliquen el software existente en producción, de esta forma el entorno de desarrollo de todo nuestro equipo será siempre consistente con el entorno de producción.
Charla para la #PEUMConf2018.
Introducción a docker, cómo hemos evolucionado los entornos de desarrollo, desde la instalación de soluciones manualmente, uso de servidores, vagrant...
Realización de una demo práctica usando docker-compose para montar un entorno de desarrollo de algo tipo Php, Wordpress, Node...
Introducción a herramientas de Roots (José Debuchy, WCBA 2017)wpargentina
Charla introductoria a las herramientas que provee la suite Roots.
1. Sage: starter theme con un workflow avanzado, utilizando SASS, node y gulp, entre otras herramientas.
2. Bedrock: organización más profesional de archivos de WordPress, utilización de composer para dependencias y mayor seguridad.
3. Trellis: utilización de Vagrant para crear máquinas virtuales similares a otros entornos y Ansible para configurar servidores avanzados y hacer un deploy controlado. Esta charla apunta a que el oyente conozca una forma diferente y más profesional de llevar adelante sus proyectos en WordPress, utilizando control de versiones y herramientas de desarrollo moderno.
Con Docker podemos envolver una aplicación dentro de un contenedor con un sistema de ficheros completo y con todo lo que necesita para funcionar, de esta forma la aplicación siempre se ejecutará igual independientemente del entorno en el que se encuentre.
En esta charla empezaremos con una introducción a Docker para después pasar a explicar con ejemplos cómo podemos crear contenedores que repliquen el software existente en producción, de esta forma el entorno de desarrollo de todo nuestro equipo será siempre consistente con el entorno de producción.
Libri virtual que te va a enseñar como es el flujo del dinero y como estar en la sinergia correcta para dejar de corretear el dinero, y aprender a como hacer que el dinero trabaje para tí
24 HOP edición Español - Durabilidad diferida de transacciones y mejoras en g...SpanishPASSVC
En esta sesión veremos dos novedades que ofrece SQL Server 2014 para gestionar la concurrencia de las cargas transaccionales de los sistemas OLTP de forma muy transparente. La durabilidad diferida de transacciones permite "aligerar" el acceso al archivo de transacciones penalizando ligeramente la "transaccionalidad completa" de la operacion: Veremos pros y contras de esta operación. Las mejoras en gestión de bloqueos permitirán que operaciones de mantenimiento no se vean bloqueadas (o bloqueen) las operaciones del día a día del sistema transaccional.
Ignacio Biencinto, Frontend developer, nos comparte en esta la primer charla de dos, los principios que componen el Frontend Development, repasando en ella 6 aspectos clave para tener un frontend bien diseñado, optimizado y mantenible. Navegando por nuestro JS, CSS, UX y revisando nuestro Performance, Cross Browsing y Testing.
Página oficial del SolidQ Summit: http://summit.solidq.com/madrid/2013/
Con la llegada de SQL Server 2012, aparecen muchas mejoras a nivel de lenguaje T-SQL. En esta sesión, daremos un repaso de todas las novedades a nivel desarrollo que nos aporta la nueva expresividad T-SQL.
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.
PHP es un lenguaje de scripting orientado al desarrollo de aplicaciones web. En una primera parte se explica los principios del lenguaje, algunas herramientas y un esbozo de una aplicación web escrita en PHP. En una segunda parte se presenta Symfony, un framework PHP que reúne las mejores prácticas de desarrollo de aplicaciones web.
Desarrollo web en Nodejs con Pillars por Chelo Quilónbetabeers
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.
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
Pecha Kucha talk (20 slides, each slide presented for exactly 20 seconds) given while at CakeFest 2011, in Manchester. This talk only makes sense if you were there, or saw the video, and was prepared just 10 minutes before presenting.
Inteligencia Artificial y Ciberseguridad.pdfEmilio Casbas
Recopilación de los puntos más interesantes de diversas presentaciones, desde los visionarios conceptos de Alan Turing, pasando por la paradoja de Hans Moravec y la descripcion de Singularidad de Max Tegmark, hasta los innovadores avances de ChatGPT, y de cómo la IA está transformando la seguridad digital y protegiendo nuestras vidas.
Es un diagrama para La asistencia técnica o apoyo técnico es brindada por las compañías para que sus clientes puedan hacer uso de sus productos o servicios de la manera en que fueron puestos a la venta.
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Telefónica
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0xWord escrito por Ibón Reinoso ( https://mypublicinbox.com/IBhone ) con Prólogo de Chema Alonso ( https://mypublicinbox.com/ChemaAlonso ). Puedes comprarlo aquí: https://0xword.com/es/libros/233-big-data-tecnologias-para-arquitecturas-data-centric.html
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
En este proyecto de investigación nos adentraremos en el fascinante mundo de la intersección entre el arte y los medios de comunicación en el campo de la informática.
La rápida evolución de la tecnología ha llevado a una fusión cada vez más estrecha entre el arte y los medios digitales, generando nuevas formas de expresión y comunicación.
Continuando con el desarrollo de nuestro proyecto haremos uso del método inductivo porque organizamos nuestra investigación a la particular a lo general. El diseño metodológico del trabajo es no experimental y transversal ya que no existe manipulación deliberada de las variables ni de la situación, si no que se observa los fundamental y como se dan en su contestó natural para después analizarlos.
El diseño es transversal porque los datos se recolectan en un solo momento y su propósito es describir variables y analizar su interrelación, solo se desea saber la incidencia y el valor de uno o más variables, el diseño será descriptivo porque se requiere establecer relación entre dos o más de estás.
Mediante una encuesta recopilamos la información de este proyecto los alumnos tengan conocimiento de la evolución del arte y los medios de comunicación en la información y su importancia para la institución.
38. Entendiendo el event loop eventos Abrir archivo Sigo trabajando... FIN En espera Procesar loop Kernel I/O KERNEL Listo Callback
39.
40. No hay ejecución paralela... para VOS var http = require ( 'http' ); http. createServer ( function (req, res) { console. log ( 'New request' ); // Block for five seconds var now = new Date (). getTime (); while ( new Date (). getTime () < now + 5000 ) ; // Response res. writeHead ( 200 , { 'Content-type' : 'text/plain' }); res. end ( 'Hello world!' ); }). listen ( 1337 ); console. log ( 'Server running at http://localhost:1337' );
41. ¡¿ UN THREAD ?! ¿Y qué hago con este monstruo de 48 núcleos?
42.
43. ¡Tengo más de 1 procesador! var http = require ( 'http' ), cluster = require ( 'cluster' ); if (cluster.isMaster) { cluster. startMaster ({ workers: 4 }); process. on ( 'SIGCHLD' , function () { cluster. spawnWorker (); }); } else { http. createServer ( function (req, res) { res. writeHead ( 200 , { 'Content-type' : 'text/plain' }); res. end ( 'Hello world!' ); }). listen ( 1337 ); }
44.
45. Ok, Javascript no es tan malo... Pero en PHP tengo un montón de documentación
46. Bueno, acepto la comunidad ... Pero no tengo todas las librerías que tengo en Java
47.
48.
49. Módulos, módulos, módulos var m = require ( './module' ); m. sum ( 1 , 3 , function (err, res) { if (err) { return console. log ( 'ERROR: ' + err); } console. log ( 'RESULT IS: ' + res); }); exports.sum = function (a, b, callback) { if ( isNaN (a) || isNaN (b)) { return callback ( new Error ( 'Invalid parameter' )); } callback ( null , a+b); };
55. express var express = require ( 'express' ); var app = express. createServer (); app. get ( '/' , function (req, res) { res. send ( 'Hello world!' ); }); app. listen ( 3000 ); console. log ( 'Server listening in http://localhost:3000' ); app. configure ( function () { app. use (express. bodyParser ()); }); app. configure ( 'dev' , function () { app. use (express. logger ()); }); $ NODE_ENV=dev node app.js
56.
57. Middleware en rutas function getUser (req, res, next) { if (!req.params.id) { return next (); } else if (!users[req.params.id]) { return next ( new Error ( 'Invalid user' )); } req.user = users[req.params.id]; next (); } app. get ( '/users/:id?' , getUser, function (req, res, next) { if (!req.user) { return next (); } res. send (req.user); });
** QUE HACE: Esperando. Entra conexión, consultás la DB, y esperas resultados. Escribís un archivo, y esperás q se escriba. Encodeás un video, y esperás q termine. ** CACHING: Memcached ** WORKERS: Gearman, o ActiveMQ / RabbitMQ ** FASTER DB: NoSQL (MongoDB, CouchDB)
No podés simplemente abrir nuevos procesos o threads para cada conexión NGINX basado en eventos, uso de memoria muy bajo APACHE lanza un thread por request (o proceso dependiendo de la conf) THREADS están mucho tiempo bloqueados por operaciones I/O EVENTOS son mejores cuando se emplea mucho tiempo esperando recursos
** V8: Sin soporte DOM
** PROPS: Propiedades de objetos se cambian en runtime en JS: diccionarios de propiedades Variables de instancia tienen offsets fijos por compilador. V8 crea clases ocultas, una para cada propiedad agregada y las transiciones de clases representan cambios en las propiedades del obj (solo 1ra vez) ** CODIGO MAQUINA: en primera ejecucion de JS, se compila a maquina, NO a codigo intermedio ** GARBAGE: cuando se corre GC, se bloquea. Cada ciclo GC procesa parte del heap. En V8 3.7 (node 0.6) hay un nuevo GC q permite heaps de tamaño ilimitado
** Tornado (Python). Tambien Event Machine (Ruby)
** LIBEIO: similar a LIBEV, por Marc Lehmann. Puede ser usado con cualq lib de eventos, o en modo POLLING. Se basa unicamente en POSIX threads. Usa threads internamente, es usado por Node.JS para acceso de file/network, integrato en node via LIBEV ** LIBEV: tamb por Marc Lehmann. Notificacion asincrona de cambios en file descriptor a traves de ev_io() ** LIBUV: Separa lo propio del OS de V8 ** ReadFile(): mucho codigo JS, arriba de fs.open(), q es un wrapper sobre C++ Open(), q usa libeio
Node sobre Windows es tan rapido como Linux Soporte desde Windows Server 2003 a Windows 7
** BUFFER: Fuera del heap V8. Conversion a JS a través de encoding (binary, utf8, ascii, etc.) ** C-ARES: gethostbyname(), consultas DNS ** CHILD_PROCESSES: fork() esta en tierra JS, uso particular de spawn(), con mensajeo IPC ** CRYPTO: crear hashes, ciphers con diferentes algoritmos, firmar con private keys, verificar firmas ** HTTP_PARSER: NO allocation, NO buffer ** TIMER: setTimeout() una sola vez, setInterval() repetidas
* Todo pasa en un solo thread * Cola de eventos vacia * Al abrir archivo, se agrega tarea al event loop * Cuando hay tiempo libre, se procesa el event loop * El I/O se realiza usando herramientas del kernel que NO bloquean: epoll(), select(), kqueue() * El event loop sigue esperando * Kernel notifica al event loop q la tarea ta realizada * Event loop ejecuta callback * Cuando el event loop está vacío, el programa termina
** SOLO THREAD: todo lo que bloquea el thread ppal imposibilita procesar nuevas requests ** Para VOS: si tu código usa I/O de node, ese I/O NO bloquea ** Llamadas I/O es el punto en el que Node.js procesa otras requests. Entonces Node.js espera que las requests se procesen rápido. Tareas intensivas de CPU debieran ser en otro proceso
Como Node.JS corre en un solo proceso, esta atado a un solo CPU ** Usando al SO: el kernel hace load balancing de las conexiones a traves de los CPUs ** CLUSTER: usa muchos workers (en diferentes CPUs). Alternativa para Node < 0.6
** RUBY: Usá CoffeeScript
** Los paquetes pueden instalarse local o globalmente
** COMMONJS: defines JS APIs for any purpose, such as server side JS. Amongst the things it defines, are modules ** The EXPORTS object is created by the module system. If you want your module to be a class, assign the export object to MODULE.EXPORTS
** ROUTING: Including support for HTTP methods ** MIDDLEWARE: for manipulating all requests, or for specific routes ** VIEW RENDERING: with different template engines, and including partials (sort of like CakePHP elements) ** SESSION SUPPORT: part of Connect, can be configured even with Redis ** ENVIRONMENTS: Can specify different middleware for each environment, and change settings
** MIDDLEWARES: order is important. ** BodyParser() allows the parsing of forms (including JSON posted data as part of body) ** Other middlewares include: cookieParser(), session()
** JADE is one of the view engines available: $ npm install jade
With route middleware, it's easy to add authentication
* GENERIC_POOL: definis name, max (conexiones), create(), y destroy(). Luego adquiris con acquire(), y liberas con release() * ASYNC: SERIES (): corre en orden y stop on error, llama callback() cuando terminado. PARALLEL() no para si hay error. WATERFALL() es como series(), p cada resultado se pasa com arg al siguiente * NODEUNIT: usa modulo assert de node * SOCKET.IO: transportes WebSocket, Flash, AJAX long polling, AJAX multipart streaming, JSONP polling. IE 5.5+, Safari 3+, Chrome 4+, Firefox 3+, Opera 10.61+. Mobile (iPhone, iPad, Android, WebOs) * UNDERSCORE: Array, funciones, Object