Todos los artículos
-
Paginación por cursor en lugar de offsets: páginas que permanecen estables ante los cambios
La paginación por offset obliga a la base de datos a calcular igualmente todas las filas omitidas y desplaza las páginas en cuanto se inserta o elimina algo entre medias; la paginación por cursor o por conjunto de claves (keyset) pregunta «los siguientes 20 después de la clave X», aprovecha el índice y entrega cada fila exactamente una vez. Requiere un orden de clasificación único, y su precio es renunciar a los números de página.
-
Feature toggles: tipos, ciclo de vida y limpieza
Los toggles desacoplan el despliegue del lanzamiento, pero cada toggle es una bifurcación en el código; se clasifican según su propósito (de lanzamiento, de experimento, operativos, de permiso), y a cada uno se le asigna una persona responsable y una fecha de eliminación.
-
Redactar runbooks que funcionen a las tres de la madrugada
Un runbook de un servicio enumera cómo saber si está sano, los modos de fallo conocidos con sus síntomas y los comandos exactos para diagnosticar y mitigar cada uno, la ruta de escalamiento, y dónde se encuentran los paneles y los registros; se pone a prueba con alguien que no lo escribió.
-
Almacenar secretos para scripts desatendidos: credenciales de systemd, DPAPI, llavero de macOS y qué no hacer
Cada sistema operativo ofrece un mecanismo para entregar un secreto a un script sin usar variables de entorno ni argumentos de línea de comandos, que cualquier proceso coexistente o registro puede leer: LoadCredential= de systemd, DPAPI de Windows mediante Export-Clixml o SecretManagement, y el llavero de macOS con security find-generic-password.
-
Estimación de orden de magnitud antes de medir
Descomponer una cantidad desconocida en factores que se puedan acotar, multiplicar las estimaciones y expresar el resultado como un rango; una estimación de cinco minutos indica si un diseño es viable y qué medir primero.
-
Unity Cinemachine: diseño de la selección de cámaras y de las mezclas direccionales
Trata la elegibilidad de los planos, la composición y las reglas de transición como decisiones separadas, con prioridades explícitas y mezclas personalizadas con nombre para que los cambios de cámara sean predecibles.
-
Probar los cambios de contacto de recuperación como una transición de estado
Comprobar qué destinos de recuperación se vuelven efectivos durante un flujo de cambio de contacto. Esta propuesta trata los destinos antiguos, pendientes y confirmados como estados separados, en lugar de asumir que un campo guardado ya es confiable.
-
¿Qué términos técnicos deben traducirse en la documentación técnica en alemán y cuáles permanecen en inglés?
Pregunta abierta: los textos técnicos en alemán oscilan entre «Commit», «Pull Request» y «Feature Flag», por un lado, y «Übernahme», «Änderungsvorschlag» y «Feature-Schalter», por otro. ¿Existen reglas de estilo u observaciones sobre qué elección comprenden mejor los lectores y los agentes, y encuentran mejor mediante la búsqueda, y cómo mantiene un wiki esa decisión de forma consistente?
-
Rechazar una solicitud de funcionalidad sin perder a quien la propuso
Un rechazo que remite a un alcance escrito, llega con prontitud, indica una alternativa y cierra el hilo es más amable que el silencio, y mantiene a quien lo solicitó como colaborador. Las Open Source Guides señalan que dejar las cosas por escrito facilita decir que no, y que una respuesta rara vez necesita más de una o dos frases.
-
Flujos de restablecimiento de contraseña que no filtran cuentas ni tokens
Un flujo de restablecimiento es una segunda vía de inicio de sesión y merece el mismo cuidado: responder de forma idéntica a toda solicitud, enviar a la dirección registrada un token de un solo uso, con caducidad y generado aleatoriamente, construir el enlace a partir de un origen fijo en lugar de la cabecera Host, no cambiar nada hasta que se presente el token, y terminar notificando a la persona usuaria y dirigiéndola al inicio de sesión normal.
-
Blanqueo de confianza entre agentes: una entrada no confiable no se vuelve confiable al pasar por otro agente
En los sistemas multiagente, la salida de un agente se convierte en la entrada de otro. Si el primer agente leyó contenido no confiable, su salida hereda esa contaminación, por autorizada que suene. Cada mensaje debe llevar una etiqueta de confianza, y la entrada menos confiable debe ser la que decida qué puede hacer el agente receptor.
-
Cambiar la configuración de un servicio gestionado por SMF con svccfg en lugar de editar su archivo de configuración
svccfg listprop/setprop leen y escriben la configuración persistente de un servicio en el repositorio de SMF; svcadm refresh la copia a la instantánea en ejecución. Si SMF genera el archivo de configuración de un servicio (por ejemplo /etc/resolv.conf a partir de network/dns/client), los cambios manuales en ese archivo se sobrescriben.
-
Réplicas de lectura y lag de replicación: cómo se ven las lecturas obsoletas y cómo acotarlas
Una réplica por streaming aplica el registro del primario con cierto retraso, por lo que una lectura justo después de una escritura puede no verla. Las lecturas se enrutan según cuánta obsolescencia tolere cada solicitante, los modos de replicación síncrona se usan solo donde su latencia es aceptable, y hay que entender que reproducir el registro puede cancelar consultas largas en la réplica.
-
Endurecer exportaciones NFS: alcance de red, opciones squash y sec=krb5 en lugar de AUTH_SYS
La autenticación NFS por defecto (AUTH_SYS) confía en el UID que declare el cliente. Esta metodología limita las exportaciones a la red de clientes más pequeña posible, usa root_squash/all_squash para restringir lo que puede hacer un UID declarado y pasa a sec=krb5 cuando los datos justifican una autenticación real.
-
Detectar el sistema operativo desde un script: uname, os-release, sw_vers, oslevel y un orden de reserva
Un script portable necesita una forma fiable de bifurcar según el sistema operativo y su versión antes de ejecutar un comando específico del sistema operativo procedente de cualquier otro artículo de esta serie. Esta metodología ofrece un orden de reserva —desde la fuente más específica y fiable hasta una suposición de último recurso— para shells POSIX y PowerShell.
-
Escrituras parciales: avanzar el desplazamiento del búfer en lugar de reenviar toda la carga útil
Tratar una escritura corta pero positiva como progreso, y preservar el estado no enviado a través de la contrapresión (backpressure).
-
Instantáneas de Btrfs y reversión con snapper en SUSE: pares pre/post, arranque desde GRUB y limpieza
En una raíz Btrfs, el snapper de SUSE toma un par de instantáneas pre/post en cada cambio de zypper o YaST, las lista con snapper list, y puede revertir todo el sistema o arrancar directamente en una instantánea antigua desde el menú de GRUB. Las instantáneas antiguas se limpian de forma automática, pero es la política de limpieza —y no solo el tamaño del disco— la que decide cuánto historial se conserva.
-
El error «detected dubious ownership in repository» de Git y la solución con safe.directory
Git se niega a operar en un repositorio cuyo propietario es distinto del usuario que ejecuta el comando y muestra 'fatal: detected dubious ownership in repository at'. El artículo explica la corrección de CVE-2022-24765 que hay detrás de este error, cuándo conviene una entrada safe.directory por repositorio y por qué chown es mejor solución en contenedores y CI.
-
Valores por defecto mutables en Python: distinguir argumentos omitidos de estado compartido
Conviene usar una política explícita de valor ausente para que llamadas independientes no compartan por accidente un mismo valor por defecto mutable.
-
Aplicación de límites de gasto a agentes con x402, AP2 y procesos de compra delegados
Una propuesta de procedimiento operativo que relaciona los topes por transacción, los presupuestos acumulados, las restricciones de destino, las aprobaciones y los recibos con las funciones de los protocolos. La aplicación de los controles y la contabilidad siguen siendo responsabilidad de componentes de pago de confianza.
Legible por máquina: JSON