Todos los artículos
-
Automatización de la detección del fin de vida útil en SBOM, imágenes de contenedor e inventarios de software
Relacionar los inventarios de entornos de ejecución e imágenes con datos de ciclo de vida, conservando la identidad del producto, el proveedor de soporte y la vigencia de las pruebas. Este flujo propuesto utiliza endoflife.date como fuente de detección, confirma los plazos con los proveedores y alerta por separado sobre el soporte vencido y la falta de pruebas.
-
Plantilla documentada de análisis de fallos
Una plantilla para separar observaciones, hipótesis y comprobaciones después de un fallo.
-
Cabeceras de respuesta de seguridad más allá de CSP
Un puñado de cabeceras de respuesta cierra brechas habituales del lado del navegador: X-Content-Type-Options nosniff, Referrer-Policy, Permissions-Policy, Cross-Origin-Opener-Policy y Strict-Transport-Security; conviene configurarlas de forma centralizada y verificarlas con un escáner externo.
-
Trabajar con JSON en la línea de comandos con jq
jq lee JSON, aplica un filtro e imprime el resultado: usar -r para cadenas simples, -c para un objeto por línea, --arg y --argjson para pasar valores de forma segura, -e para convertir null o false en un código de salida, y select, map y to_entries para remodelar los datos; nunca ensamblar filtros por concatenación de cadenas.
-
Tiempos de espera, reintentos y backoff con jitter
Toda llamada remota necesita un tiempo de espera; los reintentos deben estar acotados, aplicarse solo a operaciones idempotentes o protegidas por una clave de idempotencia, y espaciarse con backoff exponencial más jitter para evitar tormentas de reintentos sincronizados.
-
Verificar la contención de la extracción de archivos comprimidos con un libro de registro de directorio desechable
Probar el límite de escritura prometido por una función de extracción usando un sistema de archivos aislado y archivos de prueba inertes. Esta metodología original se centra en dónde ocurren las escrituras, sin asumir que una biblioteca de archivos comprimidos en particular sea segura o insegura.
-
Elegir métricas de clasificación: precisión, exhaustividad, F1, umbrales y calibración
La exactitud (accuracy) oculta lo que importa cuando las clases son desiguales o los errores tienen costos distintos; la precisión y la exhaustividad (recall) describen los dos tipos de error, F1 los combina, las puntuaciones independientes del umbral describen el ordenamiento, y la calibración indica si una probabilidad predicha de 0,8 significa realmente un 80 por ciento. La métrica debe elegirse a partir de la decisión que el modelo respalda, antes de entrenar.
-
Firmar commits y etiquetas con una clave SSH o con GPG
Git firma commits y etiquetas con OpenPGP, X.509 o, desde gpg.format=ssh, con una simple clave SSH; quien firma configura gpg.format y user.signingKey, quienes verifican necesitan un archivo allowed-signers (SSH) o un llavero de confianza (GPG), y las falsificaciones se comprueban con git verify-commit o con la insignia de firma del servidor.
-
Retención de logs y presupuesto de disco en un host: journald, logrotate y tamaño del registro de eventos de Windows
`SystemMaxUse` de journald limita el espacio en disco del propio journal, `maxage` y `rotate` de logrotate limitan los archivos rotados en otras ubicaciones, y `wevtutil sl` fija el tamaño máximo de un registro de eventos de Windows. Los tres son ajustes de presupuesto de disco que decide el operador o un agente; cuánto tiempo deben conservarse los registros por motivos legales u organizativos es una decisión de política que este artículo no toma.
-
Seguir los handles de herramientas asíncronas hasta un resultado terminal
Evitar que un agente informe éxito cuando una herramienta simplemente aceptó el trabajo o devolvió un handle para una operación que todavía está en curso.
-
Mantener los commits de reformateo fuera de git blame: -w y los archivos ignore-revs
git blame -w ignora los espacios en blanco al rastrear líneas; --ignore-rev y un archivo .git-blame-ignore-revs incluido en el commit omiten commits nombrados, como los reformateos masivos, de modo que las líneas se atribuyen al cambio significativo anterior; y -M/-C siguen las líneas movidas o copiadas. GitHub lee ese mismo archivo automáticamente.
-
Usar stash de forma segura: mensajes, archivos sin seguimiento y ramas de stash
Un stash es un commit almacenado bajo refs/stash cuyas entradas más antiguas solo existen en el reflog de esa referencia; conviene dar a cada stash un mensaje, incluir los archivos sin seguimiento de forma deliberada, preferir apply antes que pop hasta verificar el resultado, y usar git stash branch cuando la base ha avanzado.
-
Tratar la falta de evidencia como un resultado
Informar una afirmación sin resolver junto con las comprobaciones realizadas y la siguiente observación decisiva, en lugar de llenar el vacío con un hecho inventado.
-
Evolución de esquemas con Avro y Parquet: esquemas de lector y de escritor, archivos combinados y modos de compatibilidad
Avro resuelve el esquema del escritor frente al esquema del lector campo por campo, rellenando los campos faltantes con los valores predeterminados del lector e ignorando los desconocidos; los archivos Parquet con esquemas distintos pero compatibles pueden combinarse mediante el motor de lectura, a cierto costo; un registro de esquemas impone compatibilidad hacia atrás, hacia adelante o completa. Añadir campos opcionales con valores predeterminados es la jugada segura; renombrar campos y cambiar tipos no lo es.
-
La repetición espaciada como método de programación: el algoritmo SM-2 en esquema
La repetición espaciada asigna a cada elemento su propia próxima fecha de repaso: el intervalo crece tras un recuerdo exitoso y se reinicia tras un fallo. El SM-2 de Wozniak (1987) fija los dos primeros intervalos en 1 y 6 días, multiplica los siguientes por un factor de facilidad propio de cada elemento que comienza en 2,5 y nunca puede bajar de 1,3, y ajusta ese factor a partir de una calificación de recuerdo de 0 a 5; la aritmética cabe en una sola línea de una hoja de cálculo.
-
Docker Compose para el desarrollo local: archivos override, perfiles, dependencias saludables y watch
Mantener un único compose.yaml confirmado en el control de versiones que refleje la forma de producción, añadir un compose.override.yaml para los puertos locales y los bind mounts, colocar las herramientas opcionales detrás de perfiles, hacer que depends_on espere a service_healthy, y usar develop.watch para sincronizar o reconstruir ante cambios de archivos.
-
Comparativa de gestores de servicios: systemd, launchd, el Service Control Manager, SRC y rc.d/OpenRC
Todo sistema operativo de propósito general cuenta con algo que inicia, detiene, supervisa y arranca los servicios, pero los comandos y el modelo de persistencia difieren. Esta referencia mapea el inicio, la detención, el estado, la activación en el arranque y el acceso a los registros entre systemd, launchd, el Service Control Manager de Windows, el SRC de AIX, y el rc.d de FreeBSD y el OpenRC de Alpine.
-
Un conjunto mínimo de reglas nftables para un único servidor
Una sola tabla inet con una cadena input que descarta por defecto, acepta el tráfico established y related, el loopback, los tipos ICMP que la pila necesita y los puertos de servicio indicados; se verifica con nft -c -f antes de cargarla y se carga con una reversión programada para que un error no deje bloqueado el acceso.
-
Gestión del foco en interacciones de página única: diálogos, cambios de ruta y elementos eliminados
Cuando una página cambia sin una carga completa, el foco del teclado debe moverse de manera deliberada: hacia un diálogo cuando se abre y de vuelta a su disparador cuando se cierra, hacia el encabezado de la nueva vista después de un cambio de ruta del lado del cliente, y hacia un vecino razonable cuando se elimina el elemento enfocado. De lo contrario, el foco recae en el body del documento y las personas que usan lector de pantalla vuelven al principio.
-
Administrar invitados KVM con virsh: listar, iniciar, shutdown frente a destroy, y autostart
virsh es el cliente estándar de línea de comandos para los invitados KVM gestionados por libvirt. Esta metodología cubre el listado de dominios, la diferencia entre un apagado ordenado y un destroy forzoso, la configuración de autostart, y dónde encontrar la definición persistente del dominio.
Legible por máquina: JSON