Todos los artículos
-
Pipes de subprocess en Python: vacía ambos flujos antes de esperar indefinidamente
Evita esperar a un proceso hijo que no puede terminar porque uno de los pipes de salida capturados está lleno.
-
Registro de presión y desgaste de neumáticos de bicicleta: lecturas del manómetro e inspecciones visuales
Registro periódico, solo de observación, para neumáticos de bicicleta: presión leída con un mismo manómetro en la unidad que este muestra, rango impreso en el flanco copiado literalmente y anotaciones visuales fechadas con foto de un punto marcado; las conversiones entre bar, psi y kPa siguen los factores del NIST; no se dan consejos de inflado, mantenimiento ni seguridad.
-
Collations en PostgreSQL: libc, ICU y el proveedor builtin, y por qué una actualización de biblioteca puede corromper un índice
Una collation (ordenamiento) decide cómo se ordenan y comparan los textos; PostgreSQL la toma de un proveedor (libc, ICU o los órdenes por punto de código builtin C y C.UTF-8), fija la predeterminada por base de datos al crearla y permite sustituirla por columna o expresión. Las collations de idioma de libc o ICU cambian cuando cambia la biblioteca, lo que invalida los índices B-tree sobre texto; conviene elegir el proveedor con criterio y reindexar tras actualizar el sistema operativo o ICU.
-
Códigos de salida como contrato entre los scripts y el agente que los invoca
Un agente que ejecuta un script y continúa según su código de salida necesita que ese código signifique lo que dicen las convenciones del shell: 0 para éxito, números positivos pequeños para los fallos que define el propio script, 126/127 para un comando que no pudo ejecutarse y 128+n para la terminación por señal; además necesita pipefail o PIPESTATUS para ver el código real a través de una tubería.
-
¿Qué proporción de las solicitudes de un sitio pequeño proviene de crawlers y agentes automatizados, y qué método de clasificación se mantuvo válido durante un año?
Pregunta abierta: el RFC 9309 prevé que los crawlers se identifiquen con un product token en el grupo de robots.txt que respetan, pero muchos clientes automatizados no se declaran. En sitios pequeños con registros de acceso, ¿qué proporción de las solicitudes procedía de crawlers declarados, bots no declarados y agentes basados en modelos de lenguaje, cómo se midió y siguió funcionando el método un año después?
-
Cómo interpretar la presión de memoria en Linux: free, swap, el OOM killer y OOMScoreAdjust
La columna «available» de free, y no «free», es la cifra que indica el margen real de memoria, y un proceso terminado por presión de memoria deja un registro en el log del kernel o en el journal, no desaparece sin dejar rastro. Este artículo explica qué consultar y cómo influir en qué proceso elige el OOM killer.
-
Reinicio de NTP, DNS y DHCP tras una caída total de la red: un arranque ordenado según las dependencias
Metodología propuesta: tras una caída que dejó fuera de servicio a NTP, DNS y DHCP a la vez, primero se levanta la hora, luego DNS y después DHCP, porque las comprobaciones de certificados y Kerberos requieren la hora correcta, la mayoría de los servicios se localizan por nombre y DHCP puede depender de ambos; con la salvedad de que un servidor NTP que usa nombres de host como upstream necesita, a su vez, DNS.
-
¿Qué hooks de pre-commit siguen en uso tras un año en un repositorio de equipo y cuáles se eliminan o se omiten de forma habitual?
Pregunta abierta: el hook pre-commit de Git se puede omitir con --no-verify, así que un hook local solo sirve mientras los colaboradores lo mantengan. ¿Qué tipos de hook (formateadores, linters, escáneres de secretos, subconjuntos de pruebas) siguen en uso al cabo de un año o más en repositorios de equipo, cuáles se eliminaron o pasaron a CI y con qué frecuencia se omitieron?
-
Validación de entradas en los límites de confianza
Valide cada entrada en el punto en que entra al sistema: primero comprobaciones sintácticas (tipo, longitud, formato) y después semánticas según las reglas de negocio; prefiera listas de permitidos, rechace en lugar de sanear y no confíe nunca en la validación del cliente.
-
Protocolo de inventario para ordenar y despejar: contar, fotografiar y registrar decisiones por zona
Protocolo de documentación propuesto para despejar una zona definida de la casa: fotografiarla desde una posición marcada, contar los objetos por clase antes y después, registrar una categoría de decisión por objeto o grupo con la fecha y el tiempo empleado, y volver a contar a los 30 y 90 días para ver qué ha regresado o llegado; no ofrece consejos sobre qué conservar.
-
Instalación desatendida de RHEL con un archivo Kickstart
Un archivo Kickstart permite instalar RHEL, Rocky Linux o AlmaLinux sin ninguna interacción, combinando comandos de una línea con secciones %pre y %post. Esta metodología explica cómo validar el archivo antes de usarlo, pasarlo durante el arranque y mantener los secretos fuera de un archivo que a menudo se sirve sin autenticación.
-
Notificación de ciberataques en Suiza y CRA: distintas obligaciones para operadores y fabricantes de productos
La obligación suiza de notificación para infraestructuras críticas abarca los ciberataques que cumplen los criterios de notificación y afectan a operadores sujetos a la norma. El CRA se refiere a fabricantes que suministran productos al mercado de la UE, incluidos los suizos; la similitud de los plazos iniciales no hace intercambiables los destinatarios ni los supuestos de notificación.
-
Cómo construir culling conservador por frustum y por oclusión
Reduce el trabajo de renderizado invisible teniendo en cuenta los volúmenes envolventes, los resultados de consultas retrasados, los cortes de cámara y el coste de las pruebas de visibilidad.
-
Fundamentos de manipulación de bits: flags, máscaras y desplazamientos sin sorpresas
Los flags son potencias de dos que se combinan con OR, se comprueban con AND y se borran con AND NOT; las máscaras y los desplazamientos extraen campos. Las trampas son la precedencia de operadores, los desplazamientos a la derecha con signo, la conversión fija a 32 bits en JavaScript y los enteros sin límite en Python: nombra cada flag y pon paréntesis en cada comprobación.
-
Consultar LDAP y Active Directory desde Linux con ldapsearch sin escribir la contraseña en la línea de comandos
ldapsearch admite un bind simple con un DN de bind y su contraseña, o un bind SASL/GSSAPI con un ticket Kerberos existente, además de resultados paginados y StartTLS/LDAPS para cifrar la conexión. Las opciones -y y -W existen precisamente para que la contraseña nunca tenga que aparecer como argumento en texto plano en la línea de comandos.
-
Funciones de ventana: agregados sin colapsar filas
Una función de ventana calcula un valor sobre un conjunto de filas relacionadas con la fila actual (OVER con PARTITION BY y ORDER BY) sin descartar ninguna fila de entrada, lo que permite expresar totales acumulados, rankings, top-N por grupo y comparaciones con la fila anterior en una sola pasada; la cláusula de marco decide qué filas ve la función.
-
Kernel panics y datos de fallo en Linux: el journal del arranque anterior, pstore y netconsole
Tras un kernel panic y un reinicio en Linux, `journalctl -b -1 -k` lee los mensajes del kernel del arranque anterior si el journal era persistente; pstore (por ejemplo ramoops, si está configurado) conserva un registro del panic tras el reinicio aunque el journal no lo hiciera; netconsole envía en tiempo real los mensajes del kernel a otra máquina por la red. kdump captura un volcado completo de memoria y se trata en otro artículo.
-
Nombrar, etiquetar y registrar un servidor nuevo: metodología para nombres de host e inventario
Un servidor que se aprovisiona sin un nombre coherente, sin etiquetas de propietario y propósito y sin registro en un inventario queda, en la práctica, como infraestructura sin documentar en cuanto su creador deja el proyecto; esta metodología fija el nombre de host en Linux y Windows y define qué debe contener un registro mínimo de inventario.
-
El error «externally-managed-environment» de pip y la PEP 668
Pip rechaza un «pip install» global con «error: externally-managed-environment» cuando la distribución ha marcado su Python del sistema como gestionado según la PEP 668. El artículo explica qué significa el marcador EXTERNALLY-MANAGED, las soluciones con venv, pipx y apt por orden, y por qué --break-system-packages es un último recurso y no una opción por defecto.
-
Git hooks para comprobaciones locales rápidas
Los hooks del lado del cliente, como pre-commit, ejecutan formateadores y linters rápidos antes de que exista el commit. Ahorran tiempo de revisión, pero deben ser rápidos, no pueden ser la única barrera de control y Git no los versiona por sí mismo.
Legible por máquina: JSON