Mostrando las entradas con la etiqueta XHR. Mostrar todas las entradas
Mostrando las entradas con la etiqueta XHR. Mostrar todas las entradas

domingo, 29 de mayo de 2022

Los 10 Mandamientos de la Performance en Desarrollo Web por Luis Duenas (Versión Posters)

 Poster en Castellano


Poster en Ingles



Los 10 Mandamientos de la Performance en Desarrollo Web por Luis Duenas

Comentario Inicial

Un problema frecuente en la programación es la falta de rendimiento o velocidad (Performance) en aplicaciones web y esto se debe a que existen principios que si no los sigues te esperan muchos problemas (aunque al programador no le afecta directamente sino mas bien a los usuarios).

Muchos creen conocer o programar bien pero desconocen estas reglas esenciales en el desarrollo web, por este motivo voy a publicar los 10 mandamientos de la performance en el desarrollo web que te ayudaran a mejorar tus aplicaciones.

Síntomas que indican que los programadores no conocen sobre Performance Web

A continuación te listo algunos síntomas que indican que los programadores no conocen sobre performance web:

1. Las paginas web demoran en cargar

2. Las consultas demoran en mostrarse, sobre todo si tienen cientos o miles de registros

3. La grabación de un registro con muchos campos demora

4. La grabación de varios registros demora

5. La subida de un archivo grande se demora mucho y sobre todo cuando tiene muchos Megabytes nunca se sube y se cae

6. Cuando hay poco ancho de banda no carga la data.

7. Si son muchas imágenes se muestran con lentitud, etc.

Los 10 Mandamientos del Compendio del Catecismo de la Iglesia Católica

Antes de iniciar con la lista, recordemos los 10 Mandamientos del Compendio del Catecismo de la Iglesia Católica:

1. Amarás a Dios sobre todas las cosas.

2. No tomarás el nombre de Dios en vano.

3. Santificarás las fiestas.

4. Honrarás a tu padre y a tu madre.

5. No matarás.

6. No cometerás actos impuros.

7. No robarás.

8. No darás falsos testimonios ni mentirás.

9. No consentirás pensamientos ni deseos impuros.

10. No codiciarás los bienes ajenos.

Los 10 Mandamientos de la Performance en Desarrollo Web

1. En desarrollo Web, elegirás la Performance sobre todas las demás características, tales como Seguridad, Reusabilidad, Mantenibilidad, Responsividad, etc.

2. No harás request en vano. Ni al Servidor Web ni a la Base de Datos, ni a cualquier recurso del Backend. Para esto debes agrupar llamadas al Servidor Web y agrupar lógica en solo un Procedimiento Almacenado en vez de varios.

3. Ahorraras al máximo el ancho de banda. Al hacer get (recibir) o post (enviar) debes reducir los datos seleccionando el mejor formato entre los cuales están: HTML, XML, JSON, CSV, Bytes. A veces es necesario comprimir y descomprimir si no demora.

4. Honrarás la simplicidad en vez de la complejidad y la generalidad en vez de la especificidad del desarrollo. Esto te permitirá reducir el código y te servirá para muchos casos de uso.

5. No matarás la Memoria usando decenas o cientos de variables de todo tipo y funciones en la pila usando excesivas capas de código. También, no matarás la CPU usando bucles excesivos ni recursividad sobre todo en el servidor.

6. No cometerás exceso en el uso de librerías y frameworks que harán mas pesado tu desarrollo. Es preferible crear solo la funcionalidad que necesites en vez de usar algo que viene con cientos de funciones que no las vas a usar y te consumirán mucha memoria.

7. No bloquearas los recursos del backend en llamadas concurrentes al servidor web, base de datos y sistema de archivos. Para esto debes hacer uso de programación asíncrona, paralela y trabajar en memoria en vez de disco.

8. No mentirás a tus usuarios diciendo que las aplicaciones web demoran porque no están locales y hay que viajar hasta el servidor web justificando la demora por falta de conocimiento de técnicas de performance.

9. No consentirás que ninguna tarea demore aunque el ancho de banda sea reducido, para lo cual debes hacer uso de trabajo por bloques sea al enviar o recibir. Puedes optimizar imágenes, crear paquetes de bytes, comprimir, etc.

10. No codiciarás ni envidiarás el código de terceros tales como Librerias y/o Frameworks aunque sea de grandes empresas. Lo mejor es que aprendas a crear tus propios recursos y el desarrollo será cada vez mas rápido. No te dejes influenciar por lo que la mayoría hace y trata de comprobar si es verdad lo que se dice.

Comentario Final

Los que no respeten dichos mandamientos serán considerados pecadores del desarrollo web y les espera el infierno de la lentitud de su aplicación, quejas de los usuarios y la consiguiente perdida para el negocio.

Al igual que en la religión donde la mayoría de personas no cumplen los mandamientos de la Iglesia Católica (siendo católicos), en el desarrollo web los programadores no cumplen ninguna de estas reglas y después se quejan de que sus sistemas están lentos.

Sino quieres que a ti o algún conocido le espere el Infierno de la web comparte esta publicación para que los programadores lo tengan en cuenta.

miércoles, 28 de febrero de 2018

Entrenamiento - Cierre de Inscripciones para el Seminario y Curso de los Sábados

Cierre de Inscripciones para el Seminario y Curso de los Sábados

Estimados alumnos y visitantes del Blog, quiero comunicarles que solo hasta hoy Miércoles 28 de Febrero se estará registrando para el Curso del Sábado en las Mañanas y para el Primer Seminario del Sábado en la Tarde.

La inversión para el Curso de los Sábados en las Mañanas es de 300 soles para nuevos participantes y 150 soles para alumnos que siempre participan. En cuanto al Seminario del Sábado en la Tarde la inversión es de 200 soles para nuevos participantes y 100 soles para alumnos regulares (que siempre asisten a cursos, seminarios y talleres).

La dirección del Curso se estará enviando a los registrados mañana temprano y la del Seminario será en la Asociación Kallpa - Pasaje Capri 140, Urb. Palomar Norte, La Victoria
(Cerca a Metro y Claro de la Av. Arriola).

Los interesados enviar un mail a Luis.duenash@gmail.com con los siguientes datos:
Asunto: [Primer Seminario o Curso] de Desarrollo Web ASP.NET MVC & JavaScript
Contenido del Mail:
- Nombre Completo
- Lugar de Trabajo o Estudio
- Alumno Regular de Talleres: Si / No

Nota: Alumno regular es que participa constantemente de los Cursos, Talleres y Seminarios, no los que han ido solo una vez o los que han ido varias pero no acaban.

Los esperamos este Sábado con mucho material en castellano sobre los temas a tratar.

martes, 20 de febrero de 2018

Entrenamiento - Primer Seminario de Desarrollo Web ASP.NET MVC & JavaScript

Primer Seminario de Desarrollo Web ASP.NET MVC & JavaScript

Para todos los alumnos que participaron en los Cursos y Talleres de Desarrollo Web con ASP.NET MVC & JavaScript les comunico el inicio de los Seminarios una vez al mes, donde se verán algunos temas que quedaron pendientes y se profundizarán otros.

Seminario 1: Programación Asíncrona
En el BackEnd con .NET
- Subprocesamiento: Threads, ThreadPool
- Modelo de Programación Asincrona (APM): Metodos Begin y End, CallBacks
- Programación Asincrona por Eventos (EAP): Metodos Async, Eventos Completed
- Programación Asincrona por Tareas (TAP): Metodos Async, Tasks, async..await
En el FrontEnd con JavaScript
- Modelos de Programación Asíncrona: CallBacks y Promises
- Clases Asincronas en JavaScript: XmlHttpRequest, FileReader, WebSocket, etc.
- Creando Funciones Asíncronas usando WebWorkers
- Creando Funciones Asíncronas usando async..await (ES6)

Información
Día: Sábado 3 de Marzo
Horario: 4:30 pm a 09:30 pm.
Registro y Pago: 4:00 pm a 4:30 pm.
Duración: 5 horas
Inversión:
- 100 Soles para Alumnos Regulares de Talleres
- 200 Soles para Público en General
Participantes: 15 Mínimo - 30 Máximo
Lugar: Asociación Kallpa - Pasaje Capri 140, Urb. Palomar Norte, La Victoria
(Cerca a Metro y Claro de la Av. Arriola)

Contacto
Los interesados enviar un mail a Luis.duenash@gmail.com con los siguientes datos:
Asunto: Primer Seminario de Desarrollo Web ASP.NET MVC & JavaScript
Contenido del Mail:
- Nombre Completo
- Lugar de Trabajo o Estudio
- Alumno Regular de Talleres: Si / No

martes, 17 de octubre de 2017

Entrenamiento - Curso de ASP.NET MVC & JavaScript Domingos

Curso de Desarrollo Web ASP.NET MVC & JavaScript Domingos

A los interesados les comunico la apertura de un nuevo grupo del Curso de ASP.NET MVC & JavaScript los días Domingos.

En el curso se verá mi nueva Arquitectura Desconectada Sin Capas orientada a Performance y sobre todo se hará muchas aplicaciones en Tiempo Real usando Web Sockets todo en forma nativa solo con C# en el servidor y JavaScript puro en el cliente.

Beneficios de mi Arquitectura Web Desconectada Sin Capas y con Actualización en Tiempo Real

1. Desarrollo en menos tiempo al no usar Capas.
2. En Producción es la mas veloz por no usar Frameworks ni Librerías y pocos archivos.
3. El mantenimiento es muy simple ya que solo basta cambiar el Store Procedure, no el código C# ni JavaScript que son genéricos.

Contenido del Curso

1. Entendiendo el Desarrollo Web en ASP .NET
1.1. Arquitectura de una Aplicación Web ASP.NET
1.2. Aplicaciones Web Forms y Aplicaciones MVC
1.3. El problema de la Performance en Sitios Web
1.4. Arquitectura de Alto Rendimiento de una Aplicación Web

2. Creando Aplicaciones Web Distribuidas
2.1. Creando Librerías de Entidades del Negocio
2.2. Creando Librerías de Acceso a Datos
2.3. Creando Librerías de Reglas del Negocio
2.4. Creando una Aplicación Web MVC

3. Listando Registros
3.1. Usando el control WebGrid con Listas de Objetos
3.2. Usando JQuery y JSON
3.3. Usando XHR y Strings

4. Trabajando Desconectado con JavaScript
4.1. Filtrando registros
4.2. Paginando registros
4.3. Ordenando registros
4.4. Exportando a Texto y Excel

5. Mantenimiento, Popups, Cabecera Detalle e Impresión
5.1. Mantenimiento de registros
5.2. Creando Popups usando Divs
5.3. Trabajando con Cabecera Detalle
5.4. Imprimiendo datos de la página

6. Presentación Personalizada y Reportes con JavaScript
6.1. Vista Tablas
6.2. Vista Jerárquica Horizontal
6.3. Vista Jerárquica Vertical
6.4. Vista Tabla Cruzada

7. Gráficos con HTML5 y JavaScript
7.1. Creando Gráficos de Datos con Canvas
7.2. Creando Gráficos de Datos con SVG
7.3. Creando Gráficos Interactivos

8. Trabajando con Servicios (WCF y Web API)
8.1. Creando y Consumiendo un Servicio WCF alojado en IIS
8.2. Creando y Consumiendo un Servicio WCF alojado en su propio Servidor
8.3. Creando un Servicio Web API y Consumiendo desde .NET
8.4. Creando un Servicio Web API y Consumiendo desde JavaScript

9. Programación En Tiempo Real en ASP.NET
9.1. Creando un Servidor WebSocket usando Fleck
9.2. Actualizando en Tiempo Real una App Web usando WebSockets
9.3. Creando un Servidor WebSocket propio alojado en IIS
9.4. Actualizando en Tiempo Real cualquier Aplicación usando Sockets

10. Manejando Gran Cantidad de Datos desde la App Web
10.1. Subir Archivos Gigantes desde la App Web al Sistema de Archivos
10.2.  Bajar Archivos Gigantes desde el Sistema de Archivos al Cliente
10.3. Grabar Miles de Registros desde la App Web al Servidor de Datos
10.4. Mostrar Miles de Registros desde el Servidor de Datos al Cliente

Observaciones sobre el Contenido

- No Uso Frameworks ni Librerías de Terceros Ni en el Servidor Ni en el Cliente
- 10 % del código está en el servidor en C#
- 90% del código está en el cliente en JavaScript (APIs nativas multi navegador)
- Todo los ejemplos son reales del día a día del programador.
- En todos los ejemplos el código esta basado en alto rendimiento (performance)
- A partir de la mitad del curso se resuelven los problemas mas comunes que presenta el Desarrollo Web debido al ancho de banda.

Horario

- Domingos de 9:00 am a 2:00 pm

Fecha de Inicio

- Domingo 5 de Noviembre

Duración del Curso

Total: 120 horas
Tiempo: 6 meses
Frecuencia: 5 horas semanales (20 horas mensuales)

Inversión

- Mensual: 300 nuevos soles
- Total 6 meses: 1800 nuevos soles

Forma de Pago

- En efectivo, al inicio de cada mes (300 soles)

Contacto

Los interesados enviar un mail a Luis.duenash@gmail.com con los siguientes datos:

Asunto: Curso ASP.NET MVC & JavaScript Domingos
Contenido del Mail:
- Nombre Completo
- Lugar de Trabajo o Estudio
- Ha sido Ex-Alumno (especificar PECI .NET, Web Developer, Talleres, Seminarios)

Registro

Solo se considerará a los 25 primeros que envíen su correo ya que la capacidad del lugar es limitada.

Lugar del Curso

Será en la Zona Norte de Lima, se le enviará la dirección exacta a todos los registrados una semana antes de iniciar el curso.

martes, 25 de julio de 2017

Entrenamiento - Curso de Desarrollo Web ASP.NET MVC & JavaScript

Curso de Desarrollo Web ASP.NET MVC & JavaScript Sábados

A los interesados en llevar mas que un simple curso de .NET que quieran aprender como programar eficientemente y en poco tiempo, les comunico la apertura de un nuevo grupo para los Sábados.

En el curso se verá mi nueva Arquitectura Desconectada Sin Capas orientada a Performance y sobre todo se hará muchas aplicaciones en Tiempo Real usando Web Sockets todo en forma nativa solo con C# en el servidor y JavaScript puro en el cliente.

Beneficios de mi Arquitectura Web Desconectada Sin Capas y con Actualización en Tiempo Real

1. Desarrollo en menos tiempo al no usar Capas.
2. En Producción es la mas veloz por no usar Frameworks ni Librerías y pocos archivos.
3. El mantenimiento es muy simple ya que solo basta cambiar el Store Procedure, no el código C# ni JavaScript que son genéricos.

Contenido del Curso

1. Entendiendo el Desarrollo Web en ASP .NET
1.1. Arquitectura de una Aplicación Web ASP.NET
1.2. Aplicaciones Web Forms y Aplicaciones MVC
1.3. El problema de la Performance en Sitios Web
1.4. Arquitectura de Alto Rendimiento de una Aplicación Web

2. Creando Aplicaciones Web Distribuidas
2.1. Creando Librerías de Entidades del Negocio
2.2. Creando Librerías de Acceso a Datos
2.3. Creando Librerías de Reglas del Negocio
2.4. Creando una Aplicación Web MVC

3. Listando Registros
3.1. Usando el control WebGrid con Listas de Objetos
3.2. Usando JQuery y JSON
3.3. Usando XHR y Strings

4. Trabajando Desconectado con JavaScript
4.1. Filtrando registros
4.2. Paginando registros
4.3. Ordenando registros
4.4. Exportando a Texto y Excel

5. Mantenimiento, Popups, Cabecera Detalle e Impresión
5.1. Mantenimiento de registros
5.2. Creando Popups usando Divs
5.3. Trabajando con Cabecera Detalle
5.4. Imprimiendo datos de la página

6. Presentación Personalizada y Reportes con JavaScript
6.1. Vista Tablas
6.2. Vista Jerárquica Horizontal
6.3. Vista Jerárquica Vertical
6.4. Vista Tabla Cruzada

7. Gráficos con HTML5 y JavaScript
7.1. Creando Gráficos de Datos con Canvas
7.2. Creando Gráficos de Datos con SVG
7.3. Creando Gráficos Interactivos

8. Trabajando con Servicios (WCF y Web API)
8.1. Creando y Consumiendo un Servicio WCF alojado en IIS
8.2. Creando y Consumiendo un Servicio WCF alojado en su propio Servidor
8.3. Creando un Servicio Web API y Consumiendo desde .NET
8.4. Creando un Servicio Web API y Consumiendo desde JavaScript

9. Programación En Tiempo Real en ASP.NET
9.1. Creando un Servidor WebSocket usando Fleck
9.2. Actualizando en Tiempo Real una App Web usando WebSockets
9.3. Creando un Servidor WebSocket propio alojado en IIS
9.4. Actualizando en Tiempo Real cualquier Aplicación usando Sockets

10. Manejando Gran Cantidad de Datos desde la App Web
10.1. Subir Archivos Gigantes desde la App Web al Sistema de Archivos
10.2.  Bajar Archivos Gigantes desde el Sistema de Archivos al Cliente
10.3. Grabar Miles de Registros desde la App Web al Servidor de Datos
10.4. Mostrar Miles de Registros desde el Servidor de Datos al Cliente

Observaciones sobre el Contenido

- No Uso Frameworks ni Librerías de Terceros Ni en el Servidor Ni en el Cliente
- 10 % del código está en el servidor en C#
- 90% del código está en el cliente en JavaScript (APIs nativas multi navegador)
- Todo los ejemplos son reales del día a día del programador.

Horario

- Sábados de 3:00 pm a 9:00 pm

Fecha de Inicio

- Sábado 5 de Agosto

Duración del Curso

Total: 120 horas
Tiempo: 5 meses
Frecuencia: 6 horas semanales (24 horas mensuales)

Inversión

- Mensual: 300 nuevos soles
- Total 5 meses: 1500 nuevos soles

Forma de Pago

- En efectivo, al inicio de cada mes (300 soles)

Contacto

Los interesados enviar un mail a Luis.duenash@gmail.com con los siguientes datos:

Asunto: Curso ASP.NET MVC & JavaScript
Contenido del Mail:
- Nombre Completo
- Lugar de Trabajo o Estudio
- Ha sido Ex-Alumno (especificar PECI .NET, Web Developer, Talleres, Seminarios)

Registro

Solo se considerará a los 25 primeros que envíen su correo ya que la capacidad del lugar es limitada.

Comentario Final

Había comunicado a mis alumnos la intención de ya no seguir dictando pero mientras esté aquí en Perú hay que seguir luchando contra la mediocridad (los estándares) y demostrar a todos los que lo apoyan sin saber, que hay otros caminos mejores, es por eso que sigo tratando de cambiar la forma de pensar de los programadores.

Todos los que han llevado el Curso con mi última Arquitectura creo que pueden dar fe de los resultados extraordinarios y el impacto en sus Aplicaciones y eso debe conocerlo no solo un grupo sino la mayor cantidad de personas.

Para finalizar quiero agradecer a los que siempre han estado participando en mis últimos cursos y talleres, creo que tienen los conocimientos necesarios para resolver los problemas que se presentan en el día a día del desarrollo de software y se que me ayudarán a cambiar nuestro país.

martes, 16 de mayo de 2017

Entrenamiento - Curso de Desarrollo Web ASP.NET MVC & JavaScript

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

A los interesados que no llegaron a matricularse el primer mes del Curso de los Domingos, les comunico que todavía hay unas cuantas vacantes.

En este último curso avanzaremos mas con el tema de Web Sockets y el Tiempo Real. Aquí les dejo los datos:

Horario

- Domingos de 9:00 am a 2:00 pm

Fecha de Inicio

- Domingo 21 de Abril

Duración del Curso

Total: 80 horas
Tiempo: 4 meses
Frecuencia: 5 horas semanales (20 horas mensuales)

Inversión

- Mensual: 300 nuevos soles
- Total 4 meses: 1200 nuevos soles

Forma de Pago

- En efectivo, al inicio de cada mes (300 soles)
- En 4 meses son un Total de 1200 soles.

Contacto

Los interesados enviar un mail a Luis.duenash@gmail.com con los siguientes datos:

Asunto: Curso ASP.NET MVC & JavaScript Domingos
Contenido del Mail:
- Nombre Completo
- Lugar de Trabajo o Estudio
- Ha sido Ex-Alumno (especificar PECI .NET, Web Developer, Talleres, Seminarios)

A los registrados se les enviará la dirección exacta del lugar donde se realizará el curso (Zona Norte de Lima).

lunes, 27 de marzo de 2017

Entrenamiento - Curso de Desarrollo Web ASP.NET MVC & JavaScript

Curso de Desarrollo Web ASP.NET MVC & JavaScript Domingos

Horario

- Domingos de 9:00 am a 2:00 pm

Fecha de Inicio

- Domingo 9 de Abril

Duración del Curso

Total: 80 horas
Tiempo: 4 meses
Frecuencia: 5 horas semanales (20 horas mensuales)

Inversión

- Mensual: 300 nuevos soles
- Total 4 meses: 1200 nuevos soles

Forma de Pago

- En efectivo, al inicio de cada mes (300 soles)
- En 4 meses son un Total de 1200 soles.

Contacto

Los interesados enviar un mail a Luis.duenash@gmail.com con los siguientes datos:

Asunto: Curso ASP.NET MVC & JavaScript Domingos
Contenido del Mail:
- Nombre Completo
- Lugar de Trabajo o Estudio
- Ha sido Ex-Alumno (especificar PECI .NET, Web Developer, Talleres, Seminarios)

Registro

Solo se considerará a los 25 primeros que envíen su correo ya que la capacidad del lugar es limitada.

sábado, 28 de enero de 2017

Entrenamiento - Curso de Desarrollo Web ASP.NET MVC & JavaScript

Curso de Desarrollo Web ASP.NET MVC & JavaScript

A las personas interesadas en llevar el Curso de ASP.NET MVC & JavaScript, les comunico que debido a la insistencia de varios alumnos me he animado a iniciar un nuevo curso que solo estaba disponible a empresas y ahora estará disponible para cualquier interesado como curso libre.

Este curso es presencial (Lima - Perú) y contiene las verdaderas buenas prácticas de Performance, los temas de Actualización en Tiempo Real (más a fondo) y Manejo de Gran Cantidad de Datos.

Contenido del Curso

1. Entendiendo el Desarrollo Web en ASP .NET
1.1. Arquitectura de una Aplicación Web ASP.NET
1.2. Aplicaciones Web Forms y Aplicaciones MVC
1.3. El problema de la Performance en Sitios Web
1.4. Arquitectura de Alto Rendimiento de una Aplicación Web

2. Creando Aplicaciones Web Distribuidas
2.1. Creando Librerías de Entidades del Negocio
2.2. Creando Librerías de Acceso a Datos
2.3. Creando Librerías de Reglas del Negocio
2.4. Creando una Aplicación Web MVC

3. Listando Registros
3.1. Usando el control WebGrid con Listas de Objetos
3.2. Usando JQuery y JSON
3.3. Usando XHR y Strings

4. Trabajando Desconectado con JavaScript
4.1. Filtrando registros
4.2. Paginando registros
4.3. Ordenando registros
4.4. Exportando a Texto y Excel

5. Mantenimiento, Popups, Cabecera Detalle e Impresión
5.1. Mantenimiento de registros
5.2. Creando Popups usando Divs
5.3. Trabajando con Cabecera Detalle
5.4. Imprimiendo datos de la página

6. Presentación Personalizada y Reportes con JavaScript
6.1. Vista Tablas
6.2. Vista Jerárquica Horizontal
6.3. Vista Jerárquica Vertical
6.4. Vista Tabla Cruzada

7. Gráficos con HTML5 y JavaScript
7.1. Creando Gráficos de Datos con Canvas
7.2. Creando Gráficos de Datos con SVG
7.3. Creando Gráficos Interactivos

8. Trabajando con Servicios (WCF y Web API)
8.1. Creando y Consumiendo un Servicio WCF alojado en IIS
8.2. Creando y Consumiendo un Servicio WCF alojado en su propio Servidor
8.3. Creando un Servicio Web API y Consumiendo desde .NET
8.4. Creando un Servicio Web API y Consumiendo desde JavaScript

9. Programación En Tiempo Real en ASP.NET
9.1. Creando un Servidor WebSocket usando Fleck
9.2. Actualizando en Tiempo Real una App Web usando WebSockets
9.3. Creando un Servidor WebSocket propio alojado en IIS
9.4. Actualizando en Tiempo Real cualquier Aplicación usando Sockets

10. Manejando Gran Cantidad de Datos desde la App Web
10.1. Subir Archivos Gigantes desde la App Web al Sistema de Archivos
10.2.  Bajar Archivos Gigantes desde el Sistema de Archivos al Cliente
10.3. Grabar Miles de Registros desde la App Web al Servidor de Datos
10.4. Mostrar Miles de Registros desde el Servidor de Datos al Cliente

Observaciones sobre el Contenido

- No Uso Frameworks ni Librerías de Terceros Ni en el Servidor Ni en el Cliente
- 10 % del código está en el servidor en C#
- 90% del código está en el cliente en JavaScript (APIs nativas multi navegador)
- Todo los ejemplos son reales del día a día del programador.

Horario

- Sábados de 3:00 pm a 8:00 pm

Fecha de Inicio

- Sábado 4 de Febrero

Duración del Curso

Total: 60 horas
Tiempo: 3 meses
Frecuencia: 5 horas semanales (20 horas mensuales)

Inversión

- Mensual: 300 nuevos soles
- Total 3 meses: 900 nuevos soles

Forma de Pago

- En efectivo, al inicio de cada mes (300 soles)
- En 3 meses son un Total de 900 soles.

Contacto

Los interesados enviar un mail a Luis.duenash@gmail.com con los siguientes datos:

Asunto: Curso ASP.NET MVC & JavaScript
Contenido del Mail:
- Nombre Completo
- Lugar de Trabajo o Estudio
- Ha sido Ex-Alumno (especificar PECI .NET, Web Developer, Talleres, Seminarios)

Registro

Solo se considerará a los 25 primeros que envíen su correo ya que la capacidad del lugar es limitada.

Comentario Final

Los que todavía no se han capacitado conmigo en este último año, no pierdan la oportunidad porque mis técnicas han evolucionado exponencialmente y trato de ver ejemplos que siempre han querido hacer y nunca han podido, es decir, los problemas más frecuentes cuando la red esta lenta, hay gran cantidad de datos que trabajar, pocos recursos en el servidor, etc.

Es una buena oportunidad para que mis alumnos antiguos se actualicen (recuerden que ya no existe ISILTECH) y también para que los que nunca han asistido a un curso vean que no todo es "Hello-World" sino que podemos hacer grandes cosas con poco código y sin usar ningún Framework ni librerías adicionales.

martes, 11 de octubre de 2016

Entrenamiento - Capacitación a Empresas en Desarrollo Web ASP.NET MVC & JavaScript

Capacitación a Empresas en Desarrollo Web ASP.NET MVC & JavaScript

A las Empresas interesadas en seguir una buena capacitación en ASP.NET MVC & JavaScript, les comunico que están disponibles nuevos horarios y con adiciones al contenido, los cuales incluyen además de las verdaderas buenas prácticas de Performance, los temas de Actualización en Tiempo Real (más a fondo) y Manejo de Gran Cantidad de Datos.

Horarios

1. Miércoles y Viernes de 6:00 pm a 9:00 pm (puede ser una hora antes o después)
2. Sábados de 2:00 pm a 8:00 pm.
3. Domingos de 8:00 am a 2:00 pm.

Fechas Propuestas de Inicio

1. Miércoles 26 de Octubre
2. Sábado 29 de Octubre
3. Domingo 30 de Octubre

Contenido del Curso

1. Entendiendo el Desarrollo Web en ASP .NET
1.1. Arquitectura de una Aplicación Web ASP.NET
1.2. Aplicaciones Web Forms y Aplicaciones MVC
1.3. El problema de la Performance en Sitios Web
1.4. Arquitectura de Alto Rendimiento de una Aplicación Web
2. Creando Aplicaciones Web Distribuidas
2.1. Creando Librerías de Entidades del Negocio
2.2. Creando Librerías de Acceso a Datos
2.3. Creando Librerías de Reglas del Negocio
2.4. Creando una Aplicación Web MVC
3. Listando Registros
3.1. Usando el control WebGrid con Listas de Objetos
3.2. Usando JQuery y JSON
3.3. Usando XHR y Strings
4. Trabajando Desconectado con JavaScript
4.1. Filtrando registros
4.2. Paginando registros
4.3. Ordenando registros
4.4. Exportando a Texto y Excel
5. Mantenimiento, Popups, Cabecera Detalle e Impresión
5.1. Mantenimiento de registros
5.2. Creando Popups usando Divs
5.3. Trabajando con Cabecera Detalle
5.4. Imprimiendo datos de la página
6. Presentación Personalizada y Reportes con JavaScript
6.1. Vista Tablas
6.2. Vista Jerárquica Horizontal
6.3. Vista Jerárquica Vertical
6.4. Vista Tabla Cruzada
7. Gráficos con HTML5 y JavaScript
7.1. Creando Gráficos de Datos con Canvas
7.2. Creando Gráficos de Datos con SVG
7.3. Creando Gráficos Interactivos
8. Trabajando con Servicios (WCF y Web API)
8.1. Creando y Consumiendo un Servicio WCF alojado en IIS
8.2. Creando y Consumiendo un Servicio WCF alojado en su propio Servidor
8.3. Creando un Servicio Web API y Consumiendo desde .NET
8.4. Creando un Servicio Web API y Consumiendo desde JavaScript
9. Programación En Tiempo Real en ASP.NET
9.1. Creando un Servidor WebSocket usando Fleck
9.2. Actualizando en Tiempo Real una App Web usando WebSockets
9.3. Creando un Servidor WebSocket propio alojado en IIS
9.4. Actualizando en Tiempo Real cualquier Aplicación usando Sockets
10. Manejando Gran Cantidad de Datos desde la App Web
10.1. Subir Archivos Gigantes desde la App Web al Sistema de Archivos
10.2. Bajar Archivos Gigantes desde el Sistema de Archivos al Cliente
10.3. Grabar Miles de Registros desde la App Web al Servidor de Datos
10.4. Mostrar Miles de Registros desde el Servidor de Datos al Cliente

Observaciones sobre el Contenido

- No Uso Frameworks ni Librerías de Terceros Ni en el Servidor Ni en el Cliente
- 10 % del código está en el servidor en C#
- 90% del código está en el cliente en JavaScript (APIs nativas multi navegador)
- Todo los ejemplos son reales del día a día del programador.

Duración del Curso

Total: 48 horas
Tiempo: 2 meses
Frecuencia: 6 horas semanales

Inversión

- Hasta 5 personas el costo es de 100 soles x hora, es decir, un total de 4800 soles.

- Más de 5 personas el costo es de 20 soles x hora x participante.
Ejemplo: Si son 10 personas el costo será de 200 soles x hora y el total será de 9600 soles.

Nota: Estos costos son solo para Empresas ubicadas en Lima - Perú. Si hay Empresas interesadas en Provincias o fuera del país podemos coordinar sobre la inversión.

Forma de Pago

- La mitad se paga al inicio de la capacitación.

- La otra parte se paga a la mitad de la capacitación.

Contacto

Los interesados enviar un mail a Luis.duenash@gmail.com con los siguientes datos:

Asunto: Capacitación ASP.NET MVC & JavaScript

Contenido:
- Empresa: xxx
- Rubro: xxx
- Número de Participantes: xx
- Horario de Interés: Miércoles y Viernes / Sábados / Domingos
- Contacto: xxx
- Teléfono: xxx
- Dirección: xxx

Para los interesados que envíen un mail se coordinará una visita para hacer una demostración de los temas y ejemplos del curso y para resolver cualquier duda de su personal técnico.

Comentario Final

Los que todavía no se han capacitado conmigo en este último año, no pierdan la oportunidad porque mis técnicas han evolucionado exponencialmente y trato de ver ejemplos que siempre han querido hacer y nunca han podido, es decir, los problemas más frecuentes cuando la red esta lenta, hay gran cantidad de datos que trabajar, pocos recursos en el servidor, etc.

Para darse cuenta de la evolución y las técnicas originales que utilizo pueden ver mi Canal de YouTube donde subo solo algunos videos de las Empresas que autorizan subir el Curso y de algunos ejemplos de mi último Taller:

Canal de YouTube de Luis Dueñas

La mayoría de cursos son iguales, todos te enseñan la mismas cosas que nunca han dado resultado, el problema principal es que las paginas son demasiado lentas y la solución esta en la forma cómo se programa, todos se "facilitan la vida en el desarrollo" usando Frameworks y Librerías pero se "Ponen la soga al cuello" ya que impactan sobre el rendimiento de la aplicación, sino pregúntenle a sus usuarios.

miércoles, 10 de agosto de 2016

Entrenamiento - Ultima Semana de Charla Gratuita a Empresas

Ultima Semana de Charla Gratuita a Empresas

Solo hasta este Viernes 12 de Agosto estaré recibiendo correos para coordinar la charla gratuita de muestra a Empresas para Capacitación en ASP.NET MVC & JavaScript.

La charla dura 1.5 horas y tiene la siguiente agenda:

Título: "Desarrollo de Software Ligero y Desconectado"
1. Acerca del Instructor
  1.1. Estudios
  1.2. Experiencia Laboral
  1.3. Aportes
2. Desarrollo de Software
  2.1. Etapas del Desarrollo de Software
  2.2. Tipos de Aplicaciones
  2.3. Frameworks de Programación
3. Necesidad de una Nueva Arquitectura
  3.1. Problemas diarios en Sistemas
  3.2. Causas de los Problemas
  3.3. Solución de los Problemas
4. Introducción al Desarrollo Web
  4.1. Componentes de un Sitio Web
  4.2. El Problema de la Performance de las Páginas
  4.3. Principales Reglas de Performance
  4.4. Arquitecturas de Desarrollo Web
5. Desarrollo Web en ASP.NET
  5.1. Programando en el Servidor con C# (.NET)
  5.2. Programando en el Cliente con las APIs de JavaScript
6. Utilitarios, Aplicaciones y Demos
  6.1. Utilitarios de Lduenas
  6.2. Aplicaciones Web en Producción
  6.3. Demos de Clases y Capacitaciones
7. Preguntas y Respuestas

Los interesados envíar un mail a Luis.duenash@gmail.com con los siguientes datos:
- Nombre de la Empresa
- Rubro
- Persona de Contacto
- Teléfono e Email del Contacto
- Fecha y Hora de la Exposición con su equipo de desarrolladores
- Dirección del lugar de la Exposición

Si están convencidos de los resultados de la metodología, la arquitectura y las técnicas se programa la capacitación, sino no hay ningún compromiso.

Las capacitaciones son 6 horas semanales y solo me queda un horario disponible: Lunes y Miércoles a partir de las 5:00 pm.

Gracias a todos por el interés.

martes, 2 de agosto de 2016

Videos - Carrito de Compras en ASP.NET MVC & JavaScript

Videos del Carrito de Compras en ASP.NET MVC & JavaScript

Quiero compartir con los que No asistieron a mi último taller y con los visitantes del Blog de otros países los videos de una aplicación completa en ASP.NET MVC & JavaScript que tiene un 20% de código en el servidor (C#) y un 80% de código en el cliente (JavaScript).

Partes de la Aplicación

La aplicación es un Carrito de Compras que trabaja con la BD Northwind a la cual se le aumento la tabla de Usuarios asociados a cada Cliente (para el Login y ordenar el Pedido).
Esta consta de 4 vistas o páginas:

- Login: Esta página permite el ingreso de un usuario y su clave, mas un código de Captcha.

- Categorias: Página que lista las Categorías de Productos.

- Productos: Página que lista los Productos de una cierta Categoría y permite agregar una cantidad al Carrito y también ir a ver.

- Pedidos: Página que permite mostrar los pedidos y cambiar su cantidad o eliminar un producto del pedido. También permite grabar el pedido al cliente.

Características Técnicas

Este Carrito de Compras tiene las siguientes características:

- Los controladores están protegidos por un Filtro de Autenticación usando una Sesión para el Cliente, es decir no se puede ir a ningún controlador o vista sino te autenticas (Login).

- Todas las llamadas al servidor son asíncronas con XHR (No jQuery, No Angular, etc)

- Todos los datos enviados al cliente se serializan a CSV (No XML ni JSON que son mas grandes por tener metadata).

- El Login usa un Captcha y cifrado en el cliente con WebCryptoAPI (No Librerías Externas JS)

- Todas las imágenes vienen en un solo viaje (No Sprite sino Serializado en Conjunto).

- Los datos del pedido se almacenan en el cliente con SessionStorage (No Session en el servidor).

- La grabación de la cabecera detalle es muy rápida ya que se pasa una cadena desde el cliente hasta el servidor web y de datos consumiendo una sola conexión y ejecutando un solo comando.

Videos del Carrito de Compras

Carrito de Compras Parte 1



Carrito de Compras Parte 2


Carrito de Compras Parte 3


Carrito de Compras Parte 4


Comentario Final

Este Carrito de Compras es totalmente distinto al que ven en la mayoría de sitios web que enseñan ASP.NET, ya que tiene muy poco código y trabaja casi desconectado donde toda la funcionalidad se construye con JavaScript y es 100% asíncrono con XHR.

No es un Carrito de Compras tradicional, es un "Formula 1" pura Performance usando JavaScript nativo que se ejecuta en cualquier Browser moderno.

Lástima que solo unos pocos pudieron apreciar esta interesante demostración de un nuevo tipo de aplicaciones. Para los que están en Lima y se atreven a pedir el código fuente, la respuesta es "hubieras participado en el taller" y para los del exterior pronto veremos la forma de que estos cursos se hagan virtuales (primero vería si tienen demanda, para lo cual están sus comentarios).

domingo, 31 de julio de 2016

Entrenamiento - Capacitación a Empresas en Desarrollo Web ASP.NET MVC & JavaScript

Capacitación a Empresas en Desarrollo Web ASP.NET MVC & JavaScript

Hoy finalice mi último curso libre, porque ya no pienso dictar excepto a Empresas, pero me preguntaba porque si mi arquitectura de desarrollo web ligera y desconectada es tan buena no hay mucha demanda en el mercado y creo que la respuesta es que la mayoría de desarrolladores al no tener un punto de comparación no pueden ver las diferencias enormes en el tiempo de desarrollo de las aplicaciones ni el tiempo en ejecución de la aplicación.

Es por eso que he decidido dar una muestra gratis (sin costo) para hacer una visita a cualquier empresa que esté interesada en cambiar su esquema de trabajo actual consistente en tener muchos programadores que usan muchos Frameworks por todos lados (en el servidor y en cliente) y siempre se demoran en los proyectos y el resultado final (velocidad, seguridad, etc) deja mucho que desear y solo queda con conformarse ya que "ya se realizó la inversión" y a nadie le gusta perder y eligen que el monstruo concebido siga en producción.

La mecánica es bien simple, solo me envían un mail a Luis.duenash@gmail.com con los siguientes datos:
- Nombre de la Empresa
- Rubro
- Persona de Contacto
- Teléfono e Email del Contacto
- Fecha y Hora de la Exposición de 30 a 60 minutos con su equipo de desarrolladores
- Dirección del lugar de la Exposición

Si están convencidos de los resultados de la metodología, la arquitectura y las técnicas se programa la capacitación, sino no hay ningún compromiso.

En términos monetarios para un Gerente o Jefe, si se les capacita a los programadores para hacer el trabajo más eficiente y eficaz con pocos recursos en el menor tiempo, estas ganando mucho dinero y el costo (inversión) es mínimo comparado con lo que se van a ahorrar.

Uno de los valores agregados que doy a las empresas que me eligen para capacitarlos es que consigo (sin ningún costo) a desarrolladores que conocen mi metodología y que resultan ser los mejores en cada lugar donde se ubiquen.

Entrenamiento - Fin del Taller de ASP.NET MVC & JavaScript

Fin del Taller de ASP.NET MVC & JavaScript

Este post es para agradecer a los participantes de mi último taller de ASP.NET MVC & JavaScript de los Domingos. Como no hay certificados, la mejor constancia que han culminado el entrenamiento en técnicas desconectadas usando JavaScript nativo es publicar sus nombres para que las Empresas conozcan al grupo de personas que está preparada con una visión diferente del desarrollo.

Gracias a todos ustedes por compartir momentos educativos cada fin de semana. La lista de participantes por orden alfabético es la siguiente:

01 Aranda Rosales, Jaime Jesús
02 Beteta, Antonio
03 Cabrera Otoya, Jimmy
04 Chávez Córdova, Billy Herbert
05 Ciudad, Brayan
06 Condor Castillo, Edgar
07 Gaspar Chumpitaz, Oscar Michael
08 Huamaní García, Eduardo Felipe
09 Llontop Caballero, Jhony Frank
10 Marquez Redhead, Jorge Manuel
11 Miraya Anamaría, Edgar
12 Moreno Gomez, Juan Carlos
13 Palacios, Mario
14 Paredes Urbano, Gary W.
15 Palomino Oliva, Alan Francesco
16 Rengifo Ocrospoma, Joseph
17 Reyes Espinoza, Ray
18 Reyes, Alex
19 Rivera Molina, Pool
20 Saavedra Mejia, Miguel
21 Schwarz Moreno, Edward
22 Silva, Madeleyne
23 Tasayco Trigozo, José
24 Tito Fernandez, Erick
25 Vallejo Aguilar, Fernando
26 Vera Morocho, Edinson
27 Zambrano Pérez, Rolando José

Suerte a todos ustedes y éxito para salir a conquistar el mercado que están muy bien preparados, quizás en un nivel que todavía tomará tiempo que otros exploren.

miércoles, 13 de julio de 2016

Artículo - JavaScript Developer

JavaScript Developer

1. Introducción

JavaScript es un Lenguaje de Programación interpretado desarrollado por Brendan Eich en 1995 cuando trabajaba en Netscape. JavaScript es orientado a objetos, basado en prototipos, débilmente tipado y dinámico. La especificación de este lenguaje se denomina ECMAScript y es elaborada por ECMA International.

Actualmente es uno de los Lenguajes de Programación mas usados en el mundo, ya que sirve para crear aplicaciones web, tanto de lado del cliente (desde sus inicios) y también de lado del servidor (en la actualidad).

En los 20 años de vida que tiene JavaScript, en los 10 primeros años solo se usaba para validaciones y manejo de controles, pero a partir de la incorporación de AJAX (2005), la creación de librerías como jQuery (2006), la creación de JavaScript en el servidor con NodeJS (2009), la aparición de las nuevas APIs sobre todo de HTML5 y la nueva especificación del lenguaje ECMAScript6 (2012), ha originado que JavaScript tenga un crecimiento exponencial.

Muchos desarrolladores escribían la mayor parte del código en el servidor, ya que los Frameworks de ese lado tenían una gran cantidad de APIs o Librerías que permitían realizar cualquier tipo de tareas, desde acceso a datos hasta gráficos, operaciones con datos, manejo de archivos, etc. Es por eso que se usaba mucho código en PHP, Java o .NET, ysolo un mínimo de código en JavaScript para validar, manejar el DOM y mejorar el formato o estilo.

Actualmente, todo lo que podíamos hacer en el servidor, lo podemos hacer en el cliente con JavaScript, desde hacer llamadas asíncronas con XHR o AJAX hasta manipular los datos, crear gráficos (en 2D y en 3D), cifrar datos, enviar y recibir notificaciones en tiempo real, etc. Esto se puede hacer nativamente usando las APIs de JavaScript o usando una Librería o Framework que encapsule dicho trabajo.

Nota: Antes yo escribía 80% de código en el servidor y 20% en el cliente, pero desde hace unos años escribo 20% de código en el servidor y 80% en el cliente usando JavaScript puro. Estos porcentajes concuerdan con "El Problema de la Performance" que se da 80% en el cliente y 20% en el servidor.

Muchos programadores creen conocer JavaScript, pero en realidad no conocen ni el 10% de lo que tiene. El propósito de este artículo es contribuir a aumentar ese conocimiento, mostrando la Historia, las APIs, las Librerías, los Frameworks, las Herramientas y las fuentes donde pueden aprender más sobre este lenguaje, para cambiar su forma de programar y usar "La Web como Plataforma de Desarrollo" a través del Navegador (Browser) usando como lenguaje "JavaScript".

2. Cronología de JavaScript (20 años)

- 1995: En Mayo Brendan Eich crea Mocha en 10 días
- 1995: En Setiembre se crea LiveScript
- 1995: En Diciembre cambia de nombre a JavaScript
- 1996: Microsoft crea JScript
- 1996: DHTML
- 1997: ECMA-262 Ed1 (ES1)
- 1998: DOM Level 1
- 1999: ES3 (Base JavaScript actual)
- 1999: Microsoft crea XmlHttpRequest (Pre-AJAX)
- 2000: DOM Level 2
- 2001: Douglas Crockford crea JSON
- 2004: DOM Level 3
- 2005: AJAX
- 2008: ECMAScript 4 (ES4)
- 2009: ECMAScript 5 (ES5). JSON, Object.create
- 2012: ECMAScript 6 (ES6). Modulos, Proxys
- 2012: Navigation Timing
- 2012: HTML5 Web Messaging
- 2012: Web Workers
- 2012: WebSocket
- 2013: Web Storage
- 2013: Touch Events
- 2013: Geolocation API
- 2013: Performance Timeline
- 2013: Web Notifications
- 2013: File API
- 2013: Messaging API
- 2013: Web Telephony API
- 2013: MediaStream Image Capture
- 2013: WebRTC 1.0
- 2013: Web Audio API
- 2014: Progress Events
- 2014: Indexed Database
- 2014: Server Sent Events (SSE)
- 2014: Web Cryptography API
- 2014: Web NFC API
- 2014: XMLHttpRequest Level 1
- 2014: Push API
- 2014: Streams API
- 2014: Screen Orientation API
- 2014: Service Workers
- 2014: TCP and UDP Socket API
- 2014: URL
- 2014: Clipboard API and Events
- 2015: ECMA-262 (6th Edition). ECMAScript 2015 Language Specification

3. APIs de JavaScript

- Document Object Model (DOM)
  -) HTML: Document, Element, Event, HTML..., Node, NodeList, ParentNode, etc.
  -) XML: XMLDocument.
  -) SVG: Scalable Vector Graphics

- Gráficos
  -) Canvas: CanvasGradient, CanvasRenderingContext2D, HTMLCanvasElement, ImageData.
  -) SVG: SVGAnimate, SVGAnimated, SVGColor, SVGElement, SGVFont, SVGPath, SVGText.
  -) WebGL: WebGLBuffer, WebGLObject, WebGLRenderbuffer, WebGLRenderingContext, etc.

- Almacenamiento
  -) File API: Blob, File, FileList, FileReader, FileReaderSync, URL.
  -) IndexedDB: IDBCursor, IDBDataBase, IDBFactory, IDBIndex, IDBObjectStore, etc.
  -) Web Storage: Storage, StorageEvent, WindowLocalStorage, WindowSessionStorage.

- Conectividad
  -) Web Sockets: BroadcastChannel, CloseEvent, EventSource, PortCollection, WebSocket.
  -) Messaging: MessageChannel, MessageEvent, MessagePort.
  -) WebRTC: RTCPeerConnection, RTCIceServer, RTCIceCandidate, RTCDataChannel, etc.

- Acceso:
  -) Drag And Drop (D&D): DataTransfer, DataTransferItem, DataTransferItemList, DragEvent.
  -) FullScreen: Document (fullscreenElement, fullscreenEnabled), Element (requestFullscreen).

- Estilos
  -) CSS Object Model: CSS, CSSRule, CSSStyleSheet, MediaList, StyleSheet, etc.
  -) Selectors: Document (querySelector, querySelectorAll), DocumentFragment, Element.

- Multimedia
  -) Animation Timing: Window (cancelAnimationFrame, requestAnimationFrame).
  -) Media: AudioTrack, HTMLMediaElement, HTMLTrackElement, MediaController, VideoTrack.
  -) Pointer Lock: Document (exitPointerLock), Element (requestPointerLock), MouseEvent.
  -) Web Audio: AnalyserNode, AudioBuffer, AudioListener, AudioParam, DelayNode, GainNode.

- Performance
  -) Browser: History, ImageBitmap, Location, MimeType, Navigator, WindowBase64 (atob, btoa),
     WindowTimers (clearInterval, clearTimeout, setInterval, setTimeout), etc.
  -) Typed Arrays: ArrayBuffer, ArrayBufferView, DataView, Float..Array, Int..Array, Uint..Array.
  -) Web Workers: AbstractWorker, SharedWorker, Worker, WorkerLocation, WorkerNavigator, etc.

- Componentes Web
  -) Shadow DOM: CSSHostRule, CSSRule, Element (createShadowRoot), ShadowRoot, etc.
  -) Custom Elements: Element (customElements.define)
  -) HTML Imports: HTMLLinkElement (rel=import), Document (write, close).

- ECMAScript
  -) Tipos de Datos Primitivos: Boolean, Null, Undefined, Number, String, Symbol (ES6).
  -) Tipos Objetos: Array, Date, Error, Function, Global, JSON, Math, Object, RegExp.
  -) Colección de Claves (Objetos): Maps, Sets, WeakMaps, WeakSets.

- Seguridad Web (WebCryptography)
  -) Clases: Crypto, Algorithm, KeyAlgorithm, CryptoKey, SubtleCrypto, etc.
  -) Operaciones: encrypt, decrypt, sign, verify, deriveBits, wrapKey, unwrapKey,
     generateKey, importKey, exportKey, getLength.
  -) Algoritmos: RSASSA-PKCS1-v1_5, RSA-PSS, RSA-OAEP, ECDSA, ECDH, AES-CBC,
     HMAC, DH, SHA-1, SHA-256, SHA-384, SHA-512, CONCAT, HKDF-CTR, PBKDF2, etc.

- Comunicación Asíncrona con el Servidor:
  -) Cliente al Servidor: XmlHttpRequest (XHR)
  -) Servidor al Cliente: Server-Send Events (SSE)
  -) Bidireccional: Web Sockets

4. Cronología de Librerías y Frameworks de JavaScript (11 años)

- 2004: Dojo Toolkit (Alex Russell)
- 2005: Prototype JavaScript Framework (Sam Stephenson)
- 2005: Script.aculo.us (Thomas Fuchs)
- 2006: Yahoo UI Library (YUI)
- 2006: Google Web Toolkit (GWT)
- 2006: jQuery (John Resig)
- 2006: MooTools (Valerio Proietti)
- 2007: ExtJS (Jack Slocum)
- 2007: WaveMaker (Scott Miles)
- 2007: jQuery UI (Scott González, Adam Sontag, etc)
- 2008: Processing.js (John Resig)
- 2008: QUnit (John Resig)
- 2009: CofeeScript (Jeremy Ashkenas)
- 2009: Glow (BBC)
- 2009: Raphaël (Dmitry Baranovskiy)
- 2009: NodeJS (Ryan Dahl)
- 2010: BackboneJS (Jeremy Ashkenas)
- 2010: KnockoutJS (Steve Sanderson)
- 2010: AngularJS (Misko Hevery)
- 2010: Three.js (Ricardo Cabello)
- 2010: jQuery Mobile (jQuery Foundation)
- 2010: Jasmine (Pivotal Labs)
- 2011: Dart (Lars Bak, Kasper Lund)
- 2011: Ember.js (Yehuda Katz, Tom Dale)
- 2011: Modernizr (Paul Irish)
- 2011: D3.js (Bostock, Heer, Ogievetsky)
- 2011: Kendo UI (Telerik)
- 2011: Unit.js (Nicolas Tallefourtane)
- 2012: TypeScript (Anders Hejlsberg)
- 2012: Bootstrap (Mark Otto, Jacob Thornton)
- 2012: Enyo.js (Palm, HP)
- 2012: Meteor (Meteor Development Group)
- 2012: ExpressJS (TJ Holowaychuk)
- 2013: Polymer (Google)
- 2013: X-Tag (Mozilla)
- 2013: Webix (XB Software)
- 2013: React (Jordan Walke)
- 2013: Sails.js (Mike McNeil)
- 2013: Snap.svg (Adobe)
- 2014: Underscore.js (Jeremy Ashkenas)
- 2014: Socket.io (Guillermo Rauch)
- 2015: Reac Native (Tom Ochinno, Christopher Chedeau)
- 2015: Aurelia.io (Rob Eisenberg)

5. Herramientas de JavaScript

5.1. Herramientas de Calidad del Código (JavaScript Code Quality Tools)

1. JSLint
- Es la más antigua y fué creada por Douglas Crockford en el 2002

2. JSHint
- Team: Rick Waldron, Caitlin Potter, Mike Sherov, Mike Pennisi, y Luke Page

3. JSCS (JavaScript Code Style checker)
- Team: Marat Dulin, Oleg Gaidarenko, Mike Sherov, Joel Kemp, Alexej Yaroshevich, Henry Zhu

4. ESLint (Pluggable JavaScript Linter)
- Originalmente creada por Nicholas C. Zakas en el 2013
- Actualmente mantenida por jQuery Foundation
- Usuarios: Algolia, Disqus, 2GIS
- Requerimientos: Node.js or io.js
- Sistemas Operativos: Windows, Mac, Linux

5.2. Herramientas de Pruebas Unitarias (JavaScript Unit Testing Tools)

1. QUnit (JavaScript Unit Testing framework)
- Originalmente creada por Jhon Resign en el 2006 como parte de jQuery
- En el 2008 fue extraida de jQuery para ser independiente en el 2009
- Usos: jQuery, jQuery UI, jQuery Mobile

2. Unit.js (Unit testing framework for JavaScript)
- Creado por el Francés Nicolas Talle (Nicolab) en el 2014
- Requerimientos: Node.js y el Browser

3. Jasmine (Behavior-Driven JavaScript)
- Creada por Pivotal Labs en el 2010

4. Mocha (the fun, simple, flexible JavaScript test framework)
- Creada en el 2011 por la organización Mocha
- Requerimientos: Node.js y el Browser
- Usos: should.js, express.js, chai, better-assert, unexpected
- Usuarios: Sauce Labs, Yahoo
- Contribuidores: Christopher Hiller, Daniel St. Jules, ScottFreeCode, David Da Silva

6. Entrenamiento en JavaScript

6.1. Libros











6.2. Cursos Oficiales Microsoft Virtual Academy (MVA)











6.3. Tutoriales























6.4. Conferencias













6.5. Reuniones (Meetups)







6.6. En Vivo (Hangouts)



7. Comentario Final

En este artículo me propuse dar la mayor cantidad de información sobre JavaScript, ya que en muchos lugares todavía no se toma conciencia de la necesidad de trabajar lo mas desconectado posible y solo actualizar en tiempo real los datos cuando ocurran cambios, para lo cual es necesario conocer mas JavaScript.

Particularmente, en los últimos 3 años mi orientación de desarrollador, cambio radicalmente, hacia el lado del cliente usando JavaScript y priorizando la performance usando una arquitectura con pocos archivos y poco contenido lo cual tiene ventajas en velocidad incomparables.

Si bien es cierto, en la mayor parte del mundo se esta de acuerdo en que JavaScript es el número 1 por encima de Java, PHP, Phyton, Ruby, C#, C++, etc; donde no estoy de acuerdo es en el uso indiscriminado de Frameworks sobre todo de lado del cliente que "debilitan el rendimiento".

Los programadores tienen que entender que el Navegador (Browser) es un Framework con cientos de clases y métodos (APIs), las cuales detallamos en el tema 3 de este artículo: "APIs de JavaScript" y que no es necesario usar ninguna Librería ni Framework para hacer cualquier cosa (al final tanto las Librerías como los Frameworks usan dichas APIs).

Hay que invertir mas tiempo aprendiendo lo que nunca pasará de moda (lo nativo) y dejar de lado la moda (las Librerías y Frameworks, que salen por decenas en un año y en poco quedan obsoletas). De mi parte llevo enseñando mas de 3 años las APIs de JavaScript en cada curso, taller o capacitación que hago.

Lamentablemente, en muchas partes todavía se piensa que se debe hacer todo de lado del servidor y los que piensan lo contrario (hacerlo de lado del cliente) lo hacen usando Librerías o Frameworks, por tanto, mi arquitectura y mis técnicas de programación de lado del cliente con JavaScript son solo requeridas por un grupo reducido de seguidores, lo cual me apena mucho y me anima a dar un paso al costado, ya que el mercado laboral y el de entrenamiento es reducido (todos quieren lo estándar, nadie quiere cambiar 180 grados).

Si los programadores siguieran las técnicas usadas en mis capacitaciones, cursos o talleres verían la diferencia brutal de velocidad entre una pagina web clásica o moderna (MVC, SPA, etc.) con lo que nosotros hacemos en forma nativa con pocos archivos: un HTML, un CSS, un JavaScript y un Sprite.

Si les gusto no se olviden de dar Like y el que desea lo puede compartir en cualquier medio: Sitio Web, Google+, FaceBook, Twitter, solo mantener el nombre del creador. Los que están llevando el Taller de los Domingos no falten ya que es el último mes de mi último curso (aprovechen lo poco que queda).

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.

jueves, 10 de marzo de 2016

Entrenamiento - Taller ASP.NET MVC & JavaScript Domingos

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

Por el presente post quiero agradecer a todos los asistentes al Taller de los Domingos, esperando que se haya cubierto sus expectativas y a la vez informarles que iniciamos el último mes este Domingo 13 de Marzo.

Los temas a tratar serán los siguientes:
- Gráficos interactivos con SVG
- Programación Distribuida con Servicios WCF (alojados en IIS y en su propio Host)
- Programación Distribuida con Servicios Web API: HttpClient (C#) y XHR (JavaScript)
- Programación en Tiempo Real con WebSockets
- Programación en Tiempo Real con WebRTC, etc.

Como siempre los Demos serán originales y 100% aplicables a su trabajo.

Los que no pudieron asistir, les dejo el Lnk de mi canal de YouTube que tiene videos de cursos de ASP.NET MVC & JavaScript:

Canal de Luis Dueñas

Si les gusta los videos, nada les cuesta un Like.

Nos vemos este Domingo.

lunes, 22 de febrero de 2016

El Libro del Día: SPA Design and Architecture

El Libro del Día: 2016-02-22

Titulo: SPA Design and Architecture
Autor: Emmit A. Scott, Jr.
Editorial: Manning
Nro Paginas: 314

Capítulos:
Part 1: The Basics
1. What is a Single Page Application?
2. The role of MV* Frameworks
3. Modular JavaScript
Part 2: Core Concepts
4. Navigating the single page
5. View composition and layout
6. Inter-module interaction
7. Communicating with the server
8. Unit testing
9. Client side task automation
Appendix A: Employee directory example walk through
Appendix B: Review of the XMLHttpRequest API
Appendix C: Chapter 7 server side setup and summary
Appendix D: Installing Node.js and Gulp.js

Descarga:
SPA_Design_and_Architecture

jueves, 28 de enero de 2016

Videos Curso ASP.NET MVC & JavaScript Desysweb (Parte 1)

Videos del Curso ASP.NET MVC & JavaScript Desysweb (Parte 1)

Comparto la primera parte de otro curso de ASP.NET MVC & JavaScript realizado en la Empresa Desysweb donde todo se trabaja en forma desconectada usando en el Servidor mi Serializador de Cadenas y JavaScript en el Cliente, sobre todo Matrices.

1. Curso MVC & JavaScript Desysweb - Demo 01

En este video se muestra como trabajar con Listas de 2 formas:
- Consulta Síncrona usando el control MVC WebGrid que envia HTML
- Consulta Asíncrona usando XHR y enviando String que son usados para crear una Tabla por JavaScript en el Cliente.

Esta segunda forma es mas eficiente ya que solo se envía los datos (cadenas separadas por un caracter) y  en el cliente se construye el HTML usando JavaScript.


2. Curso MVC & JavaScript Desysweb - Demo 02

En este video se muestra como crear una Consulta Asíncrona usando XmlHttpRequest (XHR) enviando Cadenas (String) mediante un serializador personalizado y creando una tabla HTML en JavaScript.

Para el ejemplo se trabaja con una lista de Productos: Código, Nombre, Id del Proveedor, Nombre del Proveedor, Id de la Categoría, Nombre de la Categoría, Precio Unitario y Stock.


3. Curso MVC & JavaScript Desysweb - Demo 03

En este video se muestra como crear un filtro desconectado mediante un ComboBox y usando solo Cadenas en JavaScript.

Para el ejemplo se muestra en un ComboBox las Categorías y al seleccionar una se muestran los Productos por Categoría, pero todo es en el lado del cliente usando JavaScript.


4. Curso MVC & JavaScript Desysweb - Demo 04

En este video se enseña como crear un filtro desconectado mediante las cabeceras de la tabla usando controles de texto para filtrar cada campo, el filtro se hace solo usando Cadenas.

El ejemplo es con la tabla productos y se puede filtrar por código, nombre, proveedor, categoría, precio y stock mediante JavaScript.


5. Curso MVC & JavaScript Desysweb - Demo 05

En este video se enseña como crear un filtro desconectado mediante las cabeceras de la tabla usando controles de textos y combos para filtrar cada campo.

El ejemplo es con la tabla productos y se puede filtrar por código, nombre, proveedor, categoría, precio y stock mediante JavaScript.


6. Curso MVC & JavaScript Desysweb - Demo 06

En este video se muestra como trabajar con matrices y ocultar columnas en la presentación, para lo cual se listan los datos de los productos sin incluir el código del proveedor ni el código de la categoría.

Al seleccionar un producto se muestra un popup con su detalle donde si se muestran todos los datos, incluyendo los ocultos, el cual se realiza usando una búsqueda en la matriz.

Cabe resaltar que en este ejemplo no se usan dos páginas sino dos divs, uno para la lista y el otro para el detalle, lo que hace más rápido la visualización de los datos.


7. Curso MVC & JavaScript Desysweb - Demo 07

En este video se muestra como ordenar columnas en forma ascendente y descendente usando matrices en JavaScript.

Para el ejemplo se crean enlaces en la cabecera de la tabla, los cuales permiten ordenar sobre cada campo de la tabla productos, el primer clic ordena en forma ascendente y el segundo ordena en forma descendente mostrándose el símbolo respectivo.


8. Curso MVC & JavaScript Desysweb - Demo 08

En este video se muestra como paginar registros usando matrices en el cliente usando JavaScript. La paginación consta de enlaces (links) con los números de páginas y a los extremos los botones de avance por bloques, en el caso de que sean demasiadas páginas.

En este ejemplo se usan enlaces (a hrefs) para la paginación los cuales se encuentran sobre una lista de viñetas que se visualizan como botones gracias a la hija de estilos.


9. Curso MVC & JavaScript Desysweb - Demo 09

En este video se muestra como hacer las 3 operaciones en forma conjunta, es decir, paginar registros, ordenar columnas y filtrar registros en el cliente (desconectado) usando matrices en JavaScript.

El ejemplo es con la lista de productos y los datos están paginados y por bloques, también las columnas se pueden ordenar en forma ascendente y descendente y finalmente se puede filtrar por cada campo escribiendo sobre los textos de las cabeceras en cada columna de la tabla.