Artículos

  • Javascript 0

    Promises avanzadas en JavaScript: Promise.all, allSettled, race, any y patrones de composición

    Aprende a coordinar múltiples operaciones asíncronas con Promise.all, allSettled, race y any en JavaScript. Cuándo usar cada método, cómo implementar un timeout con Promise.race y cómo limitar la concurrencia para no saturar tu servidor.

  • Javascript 0

    Debounce y throttle en JavaScript: controlar la frecuencia de eventos

    Debounce y throttle son las dos técnicas para controlar la frecuencia de eventos en JavaScript. Debounce espera a que el usuario deje de actuar; throttle limita las ejecuciones a una cada N ms. Implementación desde cero con closures, requestAnimationFrame y el error más habitual al usarlos.

  • Ruby 0

    Kamal 2 en 2026: despliegue de Rails con Docker sin Heroku ni PaaS

    Kamal 2 es la herramienta de 37signals para desplegar Rails con Docker en servidores propios. Gestiona zero downtime, accessories como Redis y MySQL, y variables de entorno. Rails 8 lo incluye por defecto.

  • Javascript 0

    Scope en JavaScript: global, función, bloque y la temporal dead zone

    Aprende cómo funciona el scope en JavaScript: global, función y bloque. Entiende la scope chain, la temporal dead zone de let y const, cómo se usan los closures y el patrón IIFE, con ejemplos de código reales y el bug más clásico explicado paso a paso.

  • Javascript 0

    localStorage y sessionStorage en JavaScript: persistencia en el navegador

    localStorage guarda datos en el navegador de forma permanente entre sesiones; sessionStorage solo dura mientras la pestaña está abierta. Aprende setItem, getItem, cómo serializar objetos con JSON.stringify, cuándo preferir cookies y cómo evitar los errores típicos en SSR y modo incógnito.

  • Ruby 0

    Autenticación en Rails 8: el generator nativo que llega sin Devise

    Rails 8 incluye un generator de autenticación nativo que crea modelos User y Session, controladores y vistas sin Devise. Te explicamos qué genera, cómo funciona y cuándo sigue teniendo sentido usar Devise o Rodauth.

  • Javascript 0

    fetch API en JavaScript: peticiones HTTP modernas sin XMLHttpRequest

    Aprende a usar la fetch API de JavaScript para hacer peticiones HTTP con async/await. GET y POST, lectura de respuestas JSON, el error clásico con response.ok que pasa desapercibido, cancelación con AbortController y cuándo tiene sentido elegir axios sobre fetch.

  • Javascript 0

    setTimeout, setInterval y queueMicrotask en JavaScript: temporización y prioridad

    Aprende cómo funcionan setTimeout, setInterval y queueMicrotask en JavaScript. Descubre por qué setTimeout(fn, 0) no es inmediato, cómo evitar el drift de setInterval con setTimeout recursivo y cuándo usar queueMicrotask o requestAnimationFrame para animaciones.

  • Ruby 0

    ActiveRecord avanzado: el problema N+1, eager loading y queries eficientes

    El problema N+1 genera una query SQL por cada objeto en un bucle. ActiveRecord resuelve esto con includes, preload y eager_load. Te explicamos cuándo usar cada uno y cómo detectar hotspots con Bullet.

  • Javascript 0

    JSON.parse y JSON.stringify en JavaScript: opciones y casos extremos

    JSON.stringify acepta un replacer para filtrar o transformar propiedades y un tercer parámetro para indentar. JSON.parse acepta un reviver para transformar valores al parsear. Aprende a manejar fechas, tipos no serializables y referencias circulares con ejemplos prácticos.