viernes, 1 de julio de 2016

Articulo - Full Stack Developer

Full Stack Developer

1. Introducción

En los últimos años, en los requerimientos de desarrolladores para las grandes empresas, sobre todo en Estados Unidos, piden perfiles como "Back-End Developer", "Front-End Developer" y "Full Stack Developer". La mayoría conocemos los 2 primeros pero este último no mucho, sobre todo en detalle.

El "Full Stack Developer", traducido al castellano sería algo como: "Programador de Soluciones Completas", en este artículo conoceremos un poco más de que se trata.

El termino "Full Stack Developer" empezó a ser usado en el Departamento de Ingenieria de Facebook en el 2010 para referirse a un profesional que conoce todo el proceso de desarrollo de software moderno, cuyo perfil va mas allá que un Ingeniero Senior o un Arquitecto de Software, los cuales son especialistas, en cambio, el Full Stack es mas completo.

2. Artículos

2.1. What is a Full Stack developer (Laurence Gellert)

Uno de los primeros artículos en la web sobre el tema fué: "What is a Full Stack developer?" escrito por Laurence Gellert en Agosto del 2012 en su Blog (http://www.laurencegellert.com/2012/08/what-is-a-full-stack-developer/) donde especifica los conocimientos que debe tener un Full Stack Developer:

1. Servidores, Redes y Hosting
2. Modelado de Datos
3. Lógica de Negocios
4. Capa de APIs, Capa de Acciones, MVC
5. Interface de Usuario (UI)
6. Experiencia de Usuario (UX)
7. Entiende lo que el cliente y el negocio necesitan (requerimientos)
8. Otros: Pruebas Unitarias, Documentación, Distribución, Seguridad

2.2. Being a Full Stack Developer (George Fekete)

Otro artículo llamado: "Being a Full Stack Developer" fue escrito por George Fekete en Setiembre del 2014 en el sitio web de SitePoint (https://www.sitepoint.com/full-stack-developer/) donde podemos resumir lo siguiente:

1. Full Stack en el 2000
- LAMP (Linux – Apache – MySQL – Perl/PHP)
2. Administracion de Sistemas
- Linux: Shell Scripting
- Computación en la Nube: Amazon, Rackspace, etc.
- Procesamiento de Fondo: Gearman, Redis
- Búsqueda: Elasticsearch, Sphinx, Solr
- Caching: Varnish, Memcached, APC / OpCache
- Monitoreo: Nagios
3. Herramientas de Desarrollo Web
- Control de Versiones: Git, Mercurial, SVN
- Virtualización: VirtualBox, Vagrant, Docker
4. Back-end
- Servidores Web: Apache, Nginx
- Lenguajes de Programación: PHP, NodeJS, Ruby
- Bases de Datos: MySQL, MongoDB, Cassandra, Redis, SQL/JSON
5. Front-end
- HTML & HTML5: Semantica Web
- CSS & CSS3: LESS, SASS, Media Queries
- JavaScript: jQuery, AngularJS, Knockout, etc.
- Compatibilidad entre Navegadores
- Diseño Web Adaptativo
- AJAX, JSON, XML, WebSocket
6. Diseño
- UI, UX
7. Móviles
- Apps Nativas: iOS y Android
- Hibridas: PhoneGap, Appcelerator

2.3. Front-end Vs Back-end Vs Full-stack Web Developers (Michael Wales)

Aunque hay más artículos sobre el tema, voy a mencionar un último: "Front-end Vs Back-end Vs Full-stack Web Developers" escrito por Michael Wales en Diciembre del 2014 en el Blog de Udacity (http://blog.udacity.com/2014/12/front-end-vs-back-end-vs-full-stack-web-developers.html) donde podemos resumir lo siguiente:

1. Front-End Developer
- Lenguajes: HTML, CSS, JavaScript
- Frameworks: Bootstrap, Foundation, Backbone, AngularJS, EmberJS
- Librerias: jQuery, LESS
- Técnicas: AJAX
2. Back-End Developer
- Lenguajes: PHP, Ruby, Python, Java, .NET
- Bases de Datos: MySQL, Oracle, SQL Server
- Frameworks PHP: Zend, Symfony, CakePHP
- Control de Versiones: SVN, CVS, GIT
- Sistemas Operativos: Linux, Windows
3. Full Stack Developer
- Conocimiento de Back-End y Front-End
- Lenguajes: HTML5, CSS3, JavaScript
- Machine Learning, Amazon
- MongoDB, Scala
- Sistemas Operativos: Android, iOS, Windows, Linux

3. Conocimientos de un Full Stack Developer

Un Full Stack Developer debe conocer todos los componentes de una solución de software, por ejemplo si se trata de una aplicación web, los elementos a conocer serían:

3.1. Servidor (Back-End)
- Sistemas Operativos
  -) Linux, Windows, Unix, etc.
- Servidores Web
  -) Apache, NginX, Microsoft IIS, Oracle WebLogic, IBM WebSphere, etc.
- Bases de Datos
  -) Relacionales (RDBMS): MySQL, PostgreSQL, SQL Server, Oracle, etc.
  -) NoSQL: Cassandra, Redis, MongoDB, CouchDB, RavenDB, ObjectDB, GemStone, etc.
  -) RealTime (RTDBS): RethinkDB, FireBaseDB, MemSQL, etc.
- Lenguajes de Programación
  -) PHP, Perl, Python, Ruby, Java, JavaScript (NodeJS), C#, etc.
- Frameworks de Programación
  -) PHP: Zend, Symfony, CakePHP, Lavarel, CodeIgniter, etc.
  -) Perl: Catalyst, Dancer, Mason, Maypole, Mojolicious, etc.
  -) Python: Django, Flask, Tornado, Pylons, Pyramic, Zope 2, etc.
  -) Ruby: Camping, Padrino, Ruby on Rails, Sinatra, PureMVC, etc.
  -) Java: Struts, Grails, ADF, Spring, Play, Dropwizard, Spark, etc.
  -) .NET: Enterprise Libraries, ADO.NET Entity Framework, LINQ, etc.
  -) ASP.NET: Dynamic Data, BFC, CSLA, MonoRail, OpenRasta, etc.

3.2. Cliente (Front-End)
- Lenguajes de Programación
  -) HTML5 (HTLM), CSS3 (CSS), JavaScript
- APIs de JavaScript
  -) Gráficos: Canvas, SVG, WebGL
  -) Almacenamiento: File API, File System API, IndexedDB, Web Storage
  -) Conectividad: Web Sockets, Messaging, WebRTC
  -) Acceso: Drag And Drop (D&D), FullScreen
  -) Estilos: CSS Object Model, Selectors
  -) Multimedia: Animation Timing, Media, Pointer Lock, Web Audio
  -) Performance: Browser, Shadow DOM, Typed Arrays, Web Workers
  -) Seguridad: WebCryptography
  -) Comunicación Asíncrona con el Servidor: Unidireccional (XHR) y Bidireccional (Web Sockets)
- Preprocesadores CSS
  -) Less, Sass, Stylus, Myth, etc.
- Frameworks Clientes
  -) HTML5: HTML5 Boilerplate, HTML5 KickStart, Kendo UI, Montage, 52Framework, etc.
  -) CSS3: Bootstrap, Material Design, Foundation, Skeleton, Schema, Less, Compass, etc.
  -) JavaScript: Angular, Knockout, Backbone, Ember, Express, Meteor, Sails, React, etc.
- Librerías JavaScript (simplifica las APIs)
  -) Iniciales: Dojo, jQuery, MooTols, Prototype, YUI, UnderScore, etc.
  -) Visualización de Datos: D3.js, Chart.js, Highcharts.js, Flot.js, jqPlot.js, etc.
  -) SVG: Raphael.js, Snap.svg, Svg.js, Fabric.js, Bonsai.js, Polymaps.js, etc.
  -) WebGL (3D): Three.js, BabylonJS, SceneJS, OSG.js, PlayCanvas, etc.
  -) Seguridad: Google CryptoJS, Stanford Javascript Crypto Library (SJCL.js), jscrypto, etc.
  -) Comunicación Asíncrona con el Servidor: Unidireccional (AJAX) y Bidireccional (Sockets.io)

3.3. Comunicación Cliente y Servidor
- Protocolos
  -) Internet: TCP/IP, HTTP, HTTP2, FTP
  -) Servicios: RPC, SOAP, REST (HTTP)
  -) Señales: STUN, TURN, ICE, NAT
  -) Correo electrónico: IMAP, POP3, SMTP
  -) Mensajería: AMQP, MQTT, STOMP
- Formatos de Datos
  -) Binario: ArrayBuffer, BLOB, etc.
  -) Texto: HTML, XML, JSON, BSON, CSV, etc.

3.4. Computación en la Nube (Cloud Computing)
- Tipos de Servicios
  -) Software como Servicio (SaaS)
  -) Plataforma como Servicio (PaaS)
  -) Infraestructura como Servicio (IaaS)
- Tipos de Nubes
  -) Nubes Públicas
  -) Nubes Privadas
  -) Nubes Hibridas
- Plataformas Populares
  -) Amazon Web Services (AWS)
  -) Microsoft Azure
  -) Google Cloud Platform
- Aplicaciones Populares
  -) Box (Box Inc), Dropbox (Dropbox)
  -) Drive (Google), iCloud (Apple)
  -) OneDrive (Microsoft), SalesForce.com (SalesForce Inc)

3.5. Rendimiento de un Sitio Web (Performance Web Site)
- Características mas Importantes de un Sitio Web
  -) Rendimiento (Ancho de banda)
  -) Tiempo de Respuesta (latencia)
  -) Escalabilidad
  -) Disponibilidad
  -) Seguridad
-) Métricas para medir la Performance de una página
  -) Tiempo de carga (Load Time)
  -) Tiempo del primer byte recibido (First Byte)
  -) Índice de velocidad (Speed Index)
  -) Elementos del Modelo de Objetos del Documento (DOM Elements)
- Principales Reglas de Performance
  -) Hacer la menor cantidad de solicitudes (pocos archivos)
  -) Enviar la menor cantidad de datos posible (reducir tamaño)
  -) Hacer llamadas asíncronas (XHR, AJAX)
  -) Trabajar en forma desconectada (JavaScript, HTML)
- Herramientas para Pruebas de Performance Web (Performance Tools)
  -) YSlow: URL: http://yslow.org/
  -) PageSpeed Insights: https://developers.google.com/speed/pagespeed/insights/
  -) WebPageTest: http://www.webpagetest.org/
- Herramientas para reducir el tamaño de las imagenes (Images Tools)
  -) Sprites: CSS Sprite Generator, Sprite Creator, Instant Sprite, SpritePad, etc.
  -) JPG: jpeg Optimizer, jpeg Reducer, Compress JPEG, etc.
  -) PNG: pngOptimizer, Tiny png, PunyPNG, etc.
  -) JPG, PNG, GIF: Trimage, image Optim, image Optimizer, Kraken.io, CompressNow, etc.

3.6. Seguridad de Sitios Web
- Principales Riesgos de Seguridad según OWASP Top 10
  -) Riesgo 1: Inyección
  -) Riesgo 2: Pérdida de Autenticación y Gestión de Sesiones
  -) Riesgo 3: Secuencia de Comandos en Sitios Cruzados (XSS)
  -) Riesgo 4: Referencia directa insegura a objetos
  -) Riesgo 5: Configuración de seguridad incorrecta
  -) Riesgo 6: Exposición de datos sensibles
  -) Riesgo 7: Inexistente control de acceso a nivel de funcionalidades
  -) Riesgo 8: Falsificación de Peticiones en Sitios Cruzados (CSRF)
  -) Riesgo 9: Uso de componentes con vulnerabilidades conocidas
  -) Riesgo 10: Redirecciones y reenvíos no válidos
- Herramientas para Probar Seguridad (Security Testing Tools)
  -) OWASP: Zed Attack Proxy (ZAP), WebScarab (Framework), Mantra (Framework), etc.
  -) Otros: SPIKE, Burp Proxy, FireBug, Odysseus Proxy, WATOBO, etc.
  -) DOM XSS: DOMinator Pro
  -) AJAX: OWASP Sprajax Project
  -) SQL Injection: OWASP SQLiX, SqlNinja, SQLInjector, etc.
  -) SSL: O-Saft, sslyze, TestSSLServer, SSLScan, SSLLabs, etc.
  -) Fuerza Bruta Claves: THC Hydra, Brutus, Medusa, Ncat, etc.
  -) Sobrecarga de Memoria: OllyDbg, Spike, BFB, Metasploit, etc.

3.7. Aplicaciones Móviles (Mobile)
- Sistemas Operativos
  -) Nativos: Android, iOS, Windows Mobile
  -) Web: WebOS, FireFoxOS, Tizen, etc.
- Lenguajes de Programación
  -) Nativos: Java, Objetive-C (Swift), C#/XAML
  -) Web: HTML5, CSS3, JavaScript
- Frameworks Hibridos
  -) Apache Cordova (Ex Phonegap), React Native, Ionic, Meteor, Xamarin, Titanium, Famo.us,
  -) Sencha Touch, Kendo UI, Onsen UI, JQuery Mobile, Mobile Angular UI, Trigger.io, etc.

3.8. Otros Conocimientos
- Diseño
  -) Degradación agraciada (Degrade Gracefully)
  -) Mejora Progresiva (Progressive Enhancement)
  -) Diseño Web Adaptativo (Responsive Web Design)
  -) Interface de Usuario (UI)
  -) Experiencia de Usuario (UX)
- Herramientas de Control y Distribución
  -) Control de Versiones: GIT, Mercurial, SVN
  -) Virtualization: VirtualBox, Vagrant, Docker
- Motores de Búsqueda (Search Engines)
  -) Search Engine Optimization (SEO)
  -) Search Engine Marketing (SEM)
- Tecnologías
  -) Realidad Virtual (VR, WebVR)
  -) Internet de las Cosas (IoT)
  -) Machine Learning (ML)
  -) Cognitive Services (CS)
  -) Business Inteligence (BI)
  -) Big Data, Analytics, etc.

4. Programas para un Conjunto de Soluciones (Software Stack)

Existen "paquetes" de programas que usan comunmente los Full Stack Developers a los cuales se les conoce como "Software Stack", entre los mas conocidos tenemos:

4.1. LAMP
- Sistema Operativo: Linux
- Servidor Web: Apache
- Base de Datos: MySQL o MariaDB
- Lenguajes de Programación: PHP, Perl y/o Python

4.2. LYME y LYCE
- Sistema Operativo: Linux
- Servidor Web: Yaws (Erlang)
- Base de Datos: Mnesia (LYME) o CouchDB (LYCE)
- Lenguaje de Programación: Erlang

4.3. GLASS
- Servidor de Aplicaciones y Base de Datos: GemStone
- Sistema Operativo: Linux
- Servidor Web: Apache
- Framework Web: Seaside
- Lenguaje de Programación: Smalltalk

4.4. LEAP
- Sistema Operativo: Linux
- Servicio Almacenamiento en la Nube: Eucalyptus (alternativa a EC2 o Amazon Elastic Compute Cloud)
- Framework en la Nube: AppScale (alternativa a Google App Engine)
- Lenguaje de Programación: Python

4.5. LNOJ
- Sistema Operativo: Linux
- Servidor Web: NginX
- Base de Datos: OracleDB
- Lenguaje de Programación: Java

4.6. WISN
- Sistema Operativo: Windows
- Servidor Web: IIS
- Base de Datos: SQL Server
- Lenguajes de Programación: .NET (C#, VB.NET, F#, etc)

4.7. RAPB
- Lenguaje de Programación: Ruby on Rails
- AngularJS
- Base de Datos: PostgreSQL
- Bootstrap

4.8. MEAN (Full Stack JavaScript)
- Base de Datos: MongoDB
- Framework Web para Node.js: ExpressJS
- Framework Aplicaciones Web: AngularJS
- Lenguaje de Programación: NodeJS

Existen muchas mas combinaciones de programas que un Full Stack Developer puede usar para resolver un problema, pero hemos descrito las mas usadas.

5. Comentario Final

Aunque el artículo es un poco extenso era necesario detallar todo lo referente a este tipo muy importante de desarrollador que como vemos debe ser una persona con muchos años de experiencia, ya que conocer bien el Back-End aunque sea de un tipo por ejemplo LAMP (Linux, Apache, MySQL, PHP) o WISN (Windows, IIS, SQL Server, .NET) requiere de mucho tiempo. También es lo mismo si nos inclinamos por un Full Stack JavaScript como MEAN (MongoDB, ExpressJS, AngularJS, NodeJS).

Un Full Stack Developer podría reemplazar a muchos desarrolladores especialistas de varios campos: Front-End, Back-End, Mobiles, etc. Aunque lo recomendable que dicho reemplazo sea para proyectos pequeños, pero para proyectos grandes mas bien este debe trabajar de la mano con un grupo de especialistas.

Finalmente, creo que siempre se necesitarán de especialistas, pero ahora mas que nunca necesitamos "expertos en todo" es decir "Full Stack Developers" que ayuden a solucionar problemas de una forma integral incluyendo no solo temas de Programación (Sistemas Operativos, Lenguajes, Base de Datos, Frameworks), sino Diseño (Design), Rendimiento (Performance), Seguridad (Security), etc.

Espero que les guste el artículo, que después de tiempo vuelvo a escribir y que mejor, regresar con algo que resume muchas cosas: perfiles, programas, tecnologías, etc.

jueves, 30 de junio de 2016

El Libro del Día: JavaScript with Promises

El Libro del Día: 2016-06-30

Titulo: JavaScript with Promises
Autor: Daniel Parker
Editorial: O'Reilly
Nro Paginas: 94

Capítulos:
1. Asynchronous JavaScript
2. Introducing Promises
3. Working with Standard Promises
4. Using Libraries and Frameworks
5. Error Handling
6. Combining ECMAScript 6 Features with Promises

Descarga:
JavaScript_with_Promises

miércoles, 29 de junio de 2016

El Libro del Día: Functional JavaScript

El Libro del Día: 2016-06-29

Titulo: Functional JavaScript
Autor: Michael Fogus
Editorial: O'Reilly
Nro Paginas: 260

Capítulos:
1. Introducing Functional JavaScript
2. First Class Functions and Applicative Programming
3. Variable Scope and Closures
4. Higher Order Functions
5. Function Building Functions
6. Recursion
7. Purity, Immutability, and Policies for Change
8. Flow Based Programming
9. Programming Without Class
A. Functional JavaScript in the Wild
B. Annotated Bibliography

Descarga:
Functional_JavaScript

viernes, 24 de junio de 2016

El Libro del Día: ECMAScript 2015 Language Specification

El Libro del Día: 2016-06-24

Titulo: ECMAScript 2015 Language Specification
Autor: ECMA International
Nro Paginas: 566

Capítulos:
1. Scope
2. Conformance
3. Normative references
4. Overview
5. Notational Conventions
6. ECMAScript Data Types and Values
7. Abstract Operations
8. Executable Code and Execution Contexts
9. Ordinary and Exotic Objects Behaviours
10. ECMAScript Language: Source Code
11. ECMAScript Language: Lexical Grammar
12. ECMAScript Language: Expressions
13. ECMAScript Language: Statements and Declarations
14. ECMAScript Language: Functions and Classes
15. ECMAScript Language: Scripts and Modules
16. Error Handling and Language Extensions
17. ECMAScript Standard Built-in Objects
18. The Global Object
19. Fundamental Objects
20. Numbers and Dates
21. Text Processing
22. Indexed Collections
23. Keyed Collection
24. Structured Data
25. Control Abstraction Objects
26. Reflection
Annex A (informative) Grammar Summary
Annex B (normative) Additional ECMAScript Features for Web Browsers
Annex C (informative) The Strict Mode of ECMAScript
Annex D (informative) Corrections and Clarifications in ECMAScript 2015 with Possible Compatibility Impact
Annex E (informative) Additions and Changes That Introduce Incompatibilities with Prior Editions
Bibliography

Descarga:
ECMAScript_2015_Language_Specification

viernes, 27 de mayo de 2016

Entrenamiento - Segundo Mes del Taller de ASP.NET MVC & JavaScript Domingos

Segundo Mes del Taller de ASP.NET MVC & JavaScript Domingos

Este Domingo 29 de Mayo iniciamos el segundo mes del Taller de ASP.NET MVC & JavaScript en forma desconectada y orientada a Performance. Los interesados en participar el Taller dura 4 meses (quedan 3 meses) y es la última oportunidad de incorporarse ya que el siguiente mes no se podrá.

Los temas avanzados en el primer mes fueron sobre Serializadores y Asíncrono:

1. Introducción al Desarrollo Web
2. Arquitectura de un Sitio Web (Cliente Web: HTML, CSS, JS y Servidor Web)
3. El problema y la solución para la Performance de Sitios Web (WPO)
4. Llamadas Síncronas y Asíncronas al Servidor usando XmlHttpRequest (XHR)
5. Usando en el servidor el Serializador XML y mostrando datos específicos en el cliente con JavaScript
6. Usando en el servidor el Serializador JSON y mostrando datos específicos en el cliente con JavaScript
7. Creando en el servidor un Serializador XML y mostrando datos genéricos en el cliente con JavaScript
8. Creando en el servidor un Serializador personalizado JSON y mostrando datos genéricos en el cliente con JavaScript
9. Creando en el servidor un Serializador personalizado CSV y mostrando datos genéricos en el cliente con JavaScript

Los temas a tratar en el segundo mes serán "Operaciones Desconectadas con Datos en JavaScript" y "Mantenimiento de Datos":

1. Filtro de datos (simple y múltiple)
2. Paginación de datos (simple y por bloques)
3. Ordenación de datos (simple y múltiple)
4. Mover Columnas
5. Agrupar Columnas (simple y múltiple)
6. Vistas Jerárquicas (Horizontal y Vertical)
7. Vistas de Tablas Cruzadas
8. Mantenimiento de una Simple Tabla
9. Exportar datos a TXT, CSV, Excel y PDFs
10. Importar datos desde TXT, CSV y Excel con Preview
11. Trabajando con Cabeceras Detalles en forma óptima

El tercer y cuarto mes se tratarán los siguientes temas:

1. Gráficos con HTML5 y JavaScript
1.1. Creando Gráficos de Datos con Canvas
2.2. Creando Gráficos de Datos con SVG
3.3. Creando Gráficos Interactivos

2. Trabajando con Servicios (WCF y Web API)
2.1. Creando y Consumiendo un Servicio WCF alojado en IIS
2.2. Creando y Consumiendo un Servicio WCF alojado en su propio Servidor
2.3. Creando un Servicio Web API y Consumiendo desde .NET
2.4. Creando un Servicio Web API y Consumiendo desde JavaScript

3. Programación Distribuida en ASP.NET
3.1. Trabajando con WebSockets
3.2. Actualizando en Tiempo Real con WebSockets
3.3. Trabajando con Server Sent Events
3.4. Actualizando en Tiempo Real con SSE

4. Consideraciones Finales de Sitios Web
4.1. Configurar la Aplicación Web para Producción
4.2. Recomendaciones Finales sobre Performance
4.3. Recomendaciones Finales sobre Seguridad

Hay que resaltar que la novedad del último mes es que voy a enseñar a crear su propio Servidor Web Sockets y Librería Cliente Web Socket (para que sea usado No solo en Web sino en Windows en cualquier aplicación).

Los interesados solo tienen hoy y mañana para enviar un mail a Luis.duenash@gmail.com indicando que quieren incorporarse al taller con los siguientes datos:
- Nombre Completo
- Si es Ex Alumno de hace menos de 3 años (paga 200 soles, sino 300 soles)
Después de registrarlos le estaré enviando la dirección exacta.

Los que visitan el Blog y son de Lima o provincias cercanas a Lima, aprovechen que no habrá otra oportunidad, ya que solo dicto en Perú hasta este año, por lo cual es el último Taller que podría extenderse (depende del interés de los participantes, 3 meses mas para tocar el tema de Aplicaciones Móviles).

miércoles, 18 de mayo de 2016

Videos - El Reto o Desafío JavaScript

Videos - El Reto o Desafío JavaScript

Estimados visitantes del Blog, hace un buen tiempo que no escribo un post. Esta vez lo hago para informarles que he creado una Lista de Reproducción en mi Canal de YouTube llamado "Reto JavaScript" que consiste en crear código solo con JavaScript sin usar ningún Framework ni librería cliente, solo JavaScript puro (no jQuery, Angujar, Ember, etc).

Con esto quiero lograr 2 cosas:

1. Demostrar que todo lo que ven que hacen las librerías mas populares se puede conseguir con poco código y mejor (sobre todo si esta totalmente desconectado).

2. Fomentar la creatividad, la investigación, el talento y el esfuerzo de los desarrolladores para que estén preparados para crear cualquier tipo de requerimiento sin depender de terceros.

El tiempo propuesto para realizar cada reto es de una semana y la solución, es decir el código JavaScript será publicado en este medio.

RetoJS 00 - Presentación e Introducción al RetoJS

En este primer video hago una presentación personal de mi experiencia y los objetivos de querer fomentar la creatividad de los desarrolladores a través del Reto JavaScript, el cual consiste en el plazo de una semana crear una aplicación con un solo archivo JavaScript que realice la funcionalidad solicitada.

La idea es que se olviden poco a poco de los Frameworks y Librerías de JavaScript que son negativos para la Performance sobre todo si se abusa de ellos y que sean reemplazados por la lógica y la creatividad de tal forma que les permita programar en forma nativa cualquier cosa.


RetoJS 01 - Mover Columnas en una Tabla de Datos 

En este video se muestra el primer Reto JavaScript que consiste en realizar una aplicación que permita mover el orden de las columnas de una tabla en el lado del cliente, solo con JavaScript.

En el ejemplo se muestra la tabla de productos con 6 columnas, las cuales se pueden arrastrar en cualquier dirección, ya sea de izquierda a derecha o de derecha a izquierda, cambiando el orden de la presentación.


RetoJS 02 - Agrupar Celdas en una Tabla de Datos

En este video se muestra el segundo Reto JavaScript que consiste en realizar una aplicación que permita agrupar las celdas por una o varias columnas de una tabla en el lado del cliente, solo con JavaScript.

En el ejemplo se muestra la tabla de productos con 6 columnas, las cuales se pueden arrastrar a la parte superior que indica la agrupación, para lo cual primero se ordena y luego se combina las celdas. También hay un botón que permite eliminar la agrupación y regresar a la vista normal (no agrupada).


RetoJS 03 - Mover Columnas y Agrupar Celdas en una Tabla

En este video se muestra el tercer Reto JavaScript que consiste en realizar una aplicación que permita mover el orden de las columnas y agrupar celdas de una tabla en el lado del cliente, solo con JavaScript.

En el ejemplo se muestra la tabla de productos con 6 columnas, las cuales se pueden arrastrar en cualquier dirección, ya sea de izquierda a derecha o de derecha a izquierda, cambiando el orden de la presentación.

Además, debe poderse arrastrar las cabeceras a la parte superior que indica agrupación, para lo cual primero se ordena y luego se combina las celdas. También hay un botón que permite eliminar la agrupación y regresar a la vista normal (no agrupada).


Comentario Final

Estas tareas propuestas son comunes en el trabajo con datos en las aplicaciones web, es por eso, que en este último taller vamos a incluir todos los retos propuestos y lo haremos desde cero.

Que se diviertan, y demuestren todo su potencial.

miércoles, 4 de mayo de 2016

Entrenamiento - Nuevas Vacantes Segundo Taller de ASP.NET MVC & JavaScript

Nuevas Vacantes para el Segundo Taller de ASP.NET MVC & JavaScript

A todos los interesados en seguir el Taller que iniciamos este Domingo, les comunico que debido a que varias personas que se registraron y no llegaron a asistir, hay varias vacantes para poder seguir el entrenamiento que va a ser extremo.

Este Domingo (Día de la Madre) si habrá clases y los temas en homenaje a la madres de todos los desarrolladores serán:

1. Creación de Serializadores (desde DataTables y Listas de Objetos)
- Serializador XML
- Serializador JSON
- Serializador CSV

2. Llamadas Asíncronas al Servidor con XmlHttpRequest (XHR2)
- Textos
- Blob
- ArrayBuffer

Además presentaremos los Utilitarios de la Semana (como les prometí ese día):
- Convertidor MP3 (basado en Lame)
- Lector de Tablas de Páginas Web (incluyendo si están con Login o Seguridad de Formularios)

Finalmente, les copiaré mas de 100 Libros de .NET, HTML, JavaScript, CSS, etc.

Los interesados, ya saben que el costo para ex-alumnos que hubieran llevado conmigo un curso no hace mas de 5 años es de 200 soles, para los demás es de 300 soles. Solo tienen que enviar un mail a Luis.duenash@gmail.com para registrarlos y enviarles la dirección exacta que esta cerca a ISIL de Salaverry.