martes, 6 de diciembre de 2022

Programa Anual 2023 de Desarrollo Multiplataforma y Multilenguaje

Contenido del Programa por Mes:

Parte 1: Desarrollo Web con ASP.NET

1. Desarrollo Web con ASP.NET MVC

2. Desarrollo Web con APIs de JavaScript

3. Servicios Web en .NET

4. WebSockets en .NET

Parte 2: Desarrollo Mobile Nativo

5. Desarrollo Mobile en Android

6. Desarrollo Mobile en iOS

Parte 3: Desarrollo en Python

7. Python, Pandas, NumPy y Matplotlib

8. Desarrollo Windows en Python con PyQT

9. Desarrollo de Aplicaciones Web en Python con Django

10. Servicios Web en Python con Django

Parte 4: Integración de Aplicaciones .NET, Android, iOS, Python

11. Integración de Aplicaciones en Tiempo Real con Servicios Web & Web Sockets Parte 1

12. Integración de Aplicaciones en Tiempo Real con Servicios Web & Web Sockets Parte 2


Datos del Programa

Duración: 12 meses

Modalidad: Virtual Online

Costo Mensual: 300 soles (USD 80 para extranjeros)

Horario: Martes y Jueves de 7:00 pm a 11:00 pm

Inicio: Martes 10 de Enero del 2023


Registro en el Programa

Los interesados deberán enviar un mail a Luis.duenash@gmail.com:

Asunto: Programa Anual 2023

Nombre Completo: XXXXXXXXXXXXX

Documento de Identidad: XXXXXX

Lugar de Procedencia: Ciudad/Pais

Ha llevado Cursos antes con Lduenas: Si/No

Si es nuevo como se entero: Blog/LinkedIn/Facebook/UnAlumno

martes, 31 de mayo de 2022

Programa Virtual Online de Desarrollo de Aplicaciones en Python

Contenido del Programa

Modulo 1 - Aplicaciones Comerciales con Python

Mes 1 - Aplicaciones Windows con PyQT

Mes 2 - Aplicaciones Web con Django

Mes 3 - Servicios Web & Web Sockets

Modulo 2 - Aplicaciones Científicas con Python

Mes 4 - Procesamiento de Datos con Pandas, NumPy, Matplotlib

Mes 5 - Machine Learning con SckitLearn, TensorFlow, PyTorch

Mes 6 - Deep Learning con Keras, TensorFlow, PyTorch


Datos del Programa

Duración: 6 meses

Costo Mensual: 250 soles (USD 70)

Horario: Martes y Jueves de 7:00 pm a 11:00 pm

Inicio: Martes 5 de Julio del 2022


Registro en el Programa

Los interesados deberán enviar un mail a Luis.duenash@gmail.com:

Asunto: Curso de Python

Nombre Completo: XXXXXXXXXXXXX

Documento de Identidad: XXXXXX

Lugar de Procedencia: Ciudad/Pais

Ha llevado Cursos antes con Lduenas: Si/No

Si es nuevo como se entero: Blog/LinkedIn/Facebook/UnAlumno


Poster



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.

martes, 7 de diciembre de 2021

Entrenamiento - Programación de Cursos del 2022

Programación de Cursos del 2022

Para los interesados en llevar Cursos el próximo año, les dejo la Programación Anual 2022.

Curso: App Móviles con Android

Horario: Martes y Jueves de 7 a 11 pm

Meses: Enero - Febrero (2 meses)

Costo: 250 soles mensual (USD 70 para No Peruanos)

1. Actividades, Intentos y Navegación

2. Interfaz de usuario

3. Animaciones, Imágenes y Gráficos

4. Audio y Video

5. Tareas Asíncrona

6. Datos y Archivos

7. Ubicación de Usuario

8. Cámara


Curso: Integración de Aplicaciones en Tiempo Real con Servicios Web, Web Sockets y Clientes WinForms, Web MVC y Android

Horario: Martes y Jueves de 7 a 11 pm

Meses: Marzo - Abril (2 meses)

Costo: 250 soles mensual (USD 70 para No Peruanos)

Aplicaciones o Casos de Uso

1. Chat o Mensajes

2. Manejo de Documentos

3. Registro de Incidentes

4. Registro de Asistencias

5. Reservas de Mesas en Restaurantes

6. Streaming Video en Tiempo Real


Programa Anual Virtual de Desarrollo en Python (PAVDP)

Duración: 12 meses

Módulos: 3

Modulo 1: Desarrollo de Aplicaciones Comerciales en Python

Horario: Sábados de 4 a 11 pm

Meses: Enero - Abril (4 meses)

Costo: 250 soles mensual (USD 70 para No Peruanos)

1. Lenguaje Python & Librerías Estándar

2. Aplicaciones Windows con PyQT: PyOdbc, Pandas, PIL

3. Aplicaciones Web con Django

4. Servicios Web con Django

5. Web Sockets con Python


Modulo 2: Desarrollo de Aplicaciones de Procesamiento de Datos

Horario: Sábados de 4 a 11 pm

Meses: Mayo - Agosto (4 meses)

Costo: 250 soles mensual (USD 70 para No Peruanos)

1. Lenguaje Python & Librerías Estándar

2. Trabajo con Vectores: NumPy

3. Procesamiento de Datos: Pandas

4. Visualización de Datos: Matplotlib


Modulo 3: Desarrollo de Aplicaciones de Machine Learning con Python

Horario: Sábados de 4 a 11 pm

Meses: Setiembre - Diciembre (4 meses)

Costo: 250 soles mensual (USD 70 para No Peruanos)

1. Machine Learning con Python: Scikit-Learn, Tensorflow, Pytorch

2. Deep Learning con Python: Keras, Tensorflow, Pytorch

3. Computer Vision con Python: OpenCV, Tensorflow, Pytorch

4. Natural Language Processing: NLTK, Tensorflow, Pytorch


Los interesados deberán enviar un mail a Luis.duenash@gmail.com indicando lo siguiente:

Asunto: Curso de XXXXX (Android y/o Python)

Nombre Completo: XXXXXXXXXXXXX

Documento de Identidad: XXXXXX

Lugar de Procedencia: Ciudad / Pais

Ha llevado Cursos antes con Lduenas: Si / No


Nota: Los que lleven ambos cursos pagaran 400 soles (USD 120 para No Peruanos) en vez de 500 soles.

martes, 17 de agosto de 2021

Entrenamiento - Curso Virtual Online de Python

Curso Virtual Online de Python

Para todos los interesados les comunico que el Sábado 4 de Setiembre iniciamos el Cuarto Curso de Python que se desarrollara de manera virtual online. Este curso tiene un nivel Intermedio-Avanzado y esta enfocado en Desarrollar Aplicaciones Comerciales usando Python.

*****************************************************************************

Parte 1: Contenido del Curso

*****************************************************************************

Mes 1: Programando con Python usando Librerías Estándar y PyQT

1. Introducción a Python

1.1. Instalar Python

1.2. El Lenguaje Python

1.3. Librerías Estándar

1.4. Librerías No Estándar

2. Uso de Librerías Estándar

2.1. Manejo de Archivos con os y shutil

2.2. Web Scrapping con urllib.request y json

2.3. Acceso a Datos con PyOdbc y Pandas

2.4. Compresión de datos y archivos usando zlib y zipfile

2.5. Cifrado de datos con base64, hmac, hashlib y secrets

3. Introducción a PyQT

3.1. Instalar PyQt5 y PyQt5Designer

3.2. Clasificación de QTWidgets

3.3. Crear el diseño de la aplicación

3.4. Programar la aplicación Windows en PyQT

4. Trabajando con Diálogos en PyQT

4.1. Ventana de Dialogo con QDialog

4.2. Cuadro de Mensaje con QMessageBox

4.3. Dialogo de Archivos y Directorios con QFileDialog

Mes 2: Desarrollo de Aplicaciones Windows en Python con PyQT

1. Usando Controles Basados en Items (Item Widgets)

1.1. Mostrar una Columna con QListWidget

1.2. Mostrar varias Columnas con QTableWidget

1.3. Ver Jerarquía de Varias Columnas con QTreeWidget

2. Usando Controles Basados en Modelos (Model Widgets)

2.1. Mostrar una Columna con QListView y QStringListModel

2.2. Mostrar Varios QListView con QColumnView y QDirModel

2.3. Mostrar Vista Jerarquica con QTreeView y QFileSystemModel

2.4. Mostrar Varias Columnas con QTableView, QStandardItemModel y QAbstractTableModel

2.5. Combos Independientes y Dependientes con QComboBox

3. Personalizando el Control QTableView

3.1. Formatear Columnas

3.2. Mostrar Imágenes en Columnas

3.3. Ordenar usando QSortFilterProxyModel

3.4. Filtrar usando QSortFilterProxyModel

4. Mantenimiento de Datos con Pandas usando QTableView 

4.1. Exportar a CSV, Excel, HTML, JSON con Pandas y a PDF (nativo)

4.2. Importar de CSV, Excel, HTML, JSON con Pandas

4.3. Mantenimiento de una Tabla

5. Reportes y Gráficos de Datos en PyQT

5.1. Reporte de Productos usando QPainter y QtPrintSupport

5.2. Grafico de Barras con PIL

5.3. Grafico de Columnas con QPainter

5.4. Grafico de Pie con matplotlib plt y FigureCanvas

6. Cabecera Detalles y Sistema Completo

6.1. Crear una Orden (Cabecera Detalle), Imprimir, Enviar Mail

6.2. Consultar una Orden (Cabecera Detalle), Imprimir, Enviar Mail

6.3. Sistema con Login, MDI y Formularios Dinámicos

7. Programación Asíncrona en PyQT con QThread

7.1. Ejecutando Bucles Asíncronos con Threads y Progreso

7.2. Consulta Asíncrona de una BD con Threads

7.3. Consulta Asíncrona de un Servicio Web con Threads

7.4. Envío de Correos Asíncrono con Threads y Progreso

7.5. Consultar Gran Cantidad de Datos y Exportación Asíncrona con Threads y Progreso

Mes 3: Desarrollo de Aplicaciones Web en Python con Django

1. Introducción a Django

1.1. Instalar Django

1.2. Crear un Sitio Web

1.3. Crear una Aplicación Web

1.4. Iniciar el Servidor Django

2. Creando Aplicaciones de Consultas

2.1. Devolver una Simple Respuesta de Texto

2.2. Devolver una Simple Pagina HTML

2.3. Consultar una Tabla y Exportar a Excel, Pdf y Word

2.4. Consultar Varias Tablas usando Tabs

3. Creando una Librería de JavaScript con Controles Básicos

3.1. Control Grilla con Checks

3.2. Filtro Conectado usando Combo con Grilla

3.3. Filtro Desconectado usando Combo con Grilla

3.4. Control TextList

4. Creando una Librería de JavaScript con Controles Avanzados

4.1. TreeView Jerárquico con Checks

4.2. Tablas Jerárquicas de 2 Niveles

4.3. Grid Jerárquico de 2 Niveles

4.4. Grilla con Columnas de Links para Descarga de Archivos

5. Creando Aplicaciones Web Completas

5.1. Mantenimiento de una Tabla con Imagen en Popups (SPA)

5.2. Sistema con Login, TreeView, iFrame con Código Genérico

5.3. Carrito de Compras con Login, Imágenes y Seguridad

5.4. Trabajar con miles de registros: Consultar y Grabar

Mes 4: Integración de Aplicaciones en Python con Servicios Web y WebSockets

1. Creando y usando Servicios Web en Django

1.1. Servicio de Consulta de Datos

1.2. Servicio de Mantenimiento de Datos (CRUD)

1.3. Servicio de Manejo de Archivos por Bloques

2. Creando y usando WebSockets en Django

2.1. Creando un Servidor WebSocket en Python con websock.WebSocketServer

2.2. Creando un Cliente WebSocket en PyQT con QtWebSockets

2.3. Creando un Cliente Web en JavaScript con WebSocket

2.4. Creando un Cliente Windows en .NET con WebSocketClient

3. Creando Aplicaciones Completas con Clientes Python, .NET y Android

3.1. Manejo de Documentos en Tiempo Real

3.2. Registro de Asistencia de Empleados en Tiempo Real

3.3. Registro de Incidentes en Tiempo Real con Mapas

Mes 5: Computer Vision en Python con OpenCV, dlib y face_recognition

1. Introducción a Computer Vision (CV)

1.1. Revisión e Historia de CV

1.2. Principales Librerías en CV

1.3. Libros y Universidades en CV

1.4. Científicos y Laboratorios en CV

1.5. Conferencias y Competiciones en CV

2. Introducción a OpenCV

2.1. Historia de OpenCV

2.2. Características Generales de OpenCV

2.3. Clasificación de Módulos en OpenCV

2.4. Instalación de OpenCV: opencv-python y opencv-contrib-python

3. Trabajando con Características de la GUI

3.1. Leer, Mostrar, Crear una Imagen con OpenCV

3.2. Leer y Mostrar un Video de Disco

3.3. Leer y Mostrar un Video en PyQT con OpenCV

3.4. Capturar Video de WebCam en Tiempo Real

3.5. Manipular Imagen del Video de WebCam y Grabar

3.6. Dibujar Textos y Figuras

4. Procesamiento de Imágenes con OpenCV

4.1. Transformación Afín: Trasladar la imagen

4.2. Transformación Afín: Rotando una imagen

4.3. Suavizado de Imágenes: Filtros de Paso Bajo

4.4. Transformaciones morfológicas

4.5. Detección de Bordes

5. Detección de Rostros usando Haarcascade

5.1. Detectar Rostros en un Imagen

5.2. Detectar Rostros en un Video en Tiempo Real

5.3. Detectar Rostros y Ojos en un Video en Tiempo Real

6. Reconocimiento de Objetos usando Haarcascade

6.1. Reconocimiento de Objetos en una Imagen con YOLO

6.2. Reconocimiento de Objetos en un Video en Tiempo Real con YOLO

7. Detección de Marcas Faciales con OpenCV

7.1. Detección de Marcas Faciales en una Imagen

7.2. Detección de Marcas Faciales en un Directorio de Imágenes

7.3. Detección de Marcas Faciales en un Video en Tiempo Real

8. Detección de Marcas Faciales usando Dlib

8.1. Detección de Marcas Faciales en una Imagen con Dlib

8.2. Detección de Marcas Faciales en un Video en Tiempo Real con Dlib

9. Reconocimiento de Rostros usando face_recognition

9.1. Comparar 2 rostros para ver sin son la misma persona

9.2. Buscar un rostro en un directorio de fotos

9.3. Reconocer un rostro en un Video en Tiempo Real


*****************************************************************************

Parte 2: Datos del Curso

*****************************************************************************

1. Horario y Fecha de Inicio

- Horario: Sábados de 4:00 pm a 11:00 pm (Hora Perú)

- Fecha de Inicio: Sábado 04 de Setiembre del 2021

2. Duración del Curso

- Duración: 112 horas

- Tiempo: 5 meses

- Frecuencia: 7 horas semanales (28 horas mensuales)

3. Inversión y Forma de Pago

- Mensual: 200 nuevos soles para Peruanos y USD 60 para extranjeros

- Total 5 meses: 1000 nuevos soles o USD 300

- Forma de Pago: En efectivo, al inicio de cada mes (200 soles o USD 60)

- La cuenta del Banco en Perú se enviará a los seleccionados

- Para los alumnos de otros países será por Western Union

4. Registro

- Los interesados deberán enviar un mail a: Luis.duenash@gmail.com con los sgtes datos:

Titulo del mail:

- Cuarto Curso Virtual Online de Python

Contenido del mail:

- Nombre Completo: Apellido Paterno, Apellido Materno y Nombres

- Documento de Identidad: DNI, Cédula, etc.

- Lugar de Procedencia: Ciudad y País

- Ha llevado Cursos antes conmigo: (No / Si), si es Si en donde

- Nivel de Experiencia en Desarrollo: Básico / Intermedio / Avanzado

- Conoce Python: Si/No

- Comentario: Breve resumen de porque quiere llevar el curso.

5. Advertencia

- Solo deberán enviar correo los que estén bien informados de como son mis cursos, mi metodología y arquitectura.

- No se aceptan personas susceptibles o sensibles a fuertes comentarios

- No hay ningún tipo de certificación o diploma de participación (por el momento)

- Habrá un filtro de ingreso y se enviará el mail con el número de cuenta a pagar solo a los seleccionados.