- ¿Qué son los patrones de diseño y por qué importan en Node.js?
- Patrones comunes en programación
- Contexto específico de Node.js
- Explicación y casos de uso de Singleton
- El módulo Process, un singleton en el core de Node.js
- Factory, usado en la mayoria de ORMs en Node.js
- Implementación práctica de Factory Pattern en Node.js
- Explicación y uso del patrón Observer
- Implementación en Node.js con EventEmitter
- Casos de uso en el core
- Implementación práctica
- ¿Qué es el Middleware Pattern?
- Importancia de este patrón en frameworks web de Node.js
- Creación de middlewares personalizados
- Explicación y uso del patrón Decorator
- Uso de Decorator por frameworks de templates en Node.js
- Next.js un uso de inyección de dependencias
- Ejemplo práctico
- ¿Qué es un buffer y cómo funciona?
- Tipos de streams
- Streams vs. lectura/escritura tradicional
- Piping y composición de streams
- Uso de stream.pipeline()
- Async Iterables y su uso en streams
- Caso práctico: procesamiento de archivos grandes
- Event Loop en profundidad
- Procesos internos
- El rol de Liubv
- Timers y Microtasks
- Parallel vs Concurrent Execution
- Implementando procesamiento paralelo usando promesas y generators
- node inspect y DevTools Debugger
- Debugging con VSCode
- console.trace() y console.time()
- ¿Qué son los Diagnostic Channels?
- Usando diagnostic channels
- Casos de uso avanzados
- El costo de la observabilidad
- V8 metrics
- Herramientas: clinic.js, 0x y NSolid
- Estrategias de profiling
- Handlers globales process.on('uncaughtException') y process.on('unhandledRejection')
- Por qué logging puede ser un bottleneck?
- pino para logging eficiente
- Integración con sistemas de monitoreo
- Diagnóstico de bloqueos en el event loop
- setImmediate() y process.nextTick()
- Optimización de código sincrónico
- Identificación y prevención de memory leaks
- Heap Snapshots y memoryUsage()
- Debugging de un memory leak
- Diferencias y casos de uso
- Implementación práctica
- Caching (LRU Cache)
- Conociendo los límites de Node
- Cuándo escalar un proceso de Node?
- ¿Qué es un CLI?
- Node.js REPL
- process.argv y readline
- usando la consola con Node.js
- Definiendo comandos y opciones
- Flags y argumentos
- diseñando nuestro comando
- Uso de colorette para estilizar salidas en CLI
- Creación de prompts interactivos con inquirer
- Caso práctico: CLI que hace consultas y chatea con Gemini
- Configuración de package.json
- Uso local con npm link
- Publicación en NPM
- usandola con NPX