Artículos

  • Generales 0

    Kafka en Go con confluent-kafka-go: producer, consumer, grupos de consumo y offsets

    Aprende a usar Apache Kafka en Go con confluent-kafka-go: cómo crear un producer, manejar el canal de eventos para confirmaciones de entrega, configurar consumers con grupos de consumo y gestionar offsets con commit manual para garantizar que no pierdes mensajes.

  • Javascript 0

    Seguridad JavaScript: XSS, Content Security Policy, sanitización y DOMPurify

    Aprende a proteger tu código JavaScript del lado del cliente contra XSS (reflected, stored y DOM-based), cómo usar DOMPurify para sanitizar HTML de usuario, Content Security Policy con nonces, Trusted Types en Chrome y por qué innerHTML mal usado es una puerta de entrada para atacantes.

  • Generales 0

    Const generics en Rust: parámetros de tipo que son valores constantes

    Los const generics, estables desde Rust 1.51, permiten usar valores constantes como parámetros genéricos. Aprende a crear structs con tamaño fijo, implementar traits para arrays de cualquier longitud y cuáles son los tipos válidos como const params.

  • Generales 0

    URLSession con async/await en Swift: descargas, uploads, WebSocket y streaming

    Aprende a usar URLSession con async/await en Swift: peticiones con data(from:), streaming con AsyncBytes, descargas a fichero, subidas, WebSocket con webSocketTask y sesiones ephemeral. Con el antipatrón más habitual y cómo cancelar tareas correctamente.

  • Python 0

    subprocess en Python: run, Popen, communicate, pipes y ejecución de comandos del sistema

    Aprende a usar el módulo subprocess de Python para ejecutar comandos del sistema: subprocess.run() con capture_output, check y timeout; subprocess.Popen con communicate() y poll(); shlex.split() y los peligros de shell=True con datos del usuario.

  • Javascript 0

    Leer errores de TypeScript: entender mensajes complejos, pretty-ts-errors y técnicas de depuración

    Cómo leer y entender los errores complejos de TypeScript: estrategia de lectura de abajo a arriba, @ts-expect-error para aislar, reveal_type, AssertEqual, la extensión pretty-ts-errors, el tipo Simplify para expandir tipos opacos y cómo resolver errores de tipos circulares.

  • Generales 0

    cgo en Go: llamar a código C desde Go, importar librerías C y cuándo evitarlo

    cgo permite llamar funciones C desde Go usando import C con un preámbulo de comentario. Aprende a convertir strings con C.CString, pasar structs, enlazar librerías con LDFLAGS y exportar funciones Go a C. Incluye el overhead real de cgo y cuándo evitarlo.

  • Javascript 0

    Patrones de diseño en JavaScript: Factory, Strategy, Observer y Command con ES6+

    Aprende a usar Factory, Strategy, Observer y Command con JavaScript moderno: centraliza la creación de objetos, pasa algoritmos como argumentos, construye sistemas de eventos con suscriptores y encapsula operaciones con soporte para deshacer. Ejemplos reales con ES6+.

  • Generales 0

    Type-State Pattern en Rust: codificar estados válidos en el sistema de tipos

    El type-state pattern en Rust usa parámetros de tipo genéricos y zero-sized types para que el compilador impida llamar a métodos en un estado incorrecto. Los errores son en compilación, no en runtime. Cuatro ejemplos con conexiones, builders, ficheros y peticiones HTTP.

  • Otros lenguajes 0

    FoxPro sigue vivo décadas después: el software empresarial que Microsoft dejó atrás

    Visual FoxPro lleva más de una década sin soporte oficial de Microsoft, pero miles de empresas siguen usando aplicaciones de facturación, inventario y gestión construidas sobre esta plataforma. Repasamos su historia, desde la rivalidad con dBASE hasta la compra por Microsoft en 1992 y el moti...