Todos los artículos
-
Recorrido por un acortador de URL: generación de claves, estado de redirección y controles contra abusos
Un recorrido de diseño para un acortador de URL: claves aleatorias en base62 con reintento ante colisiones, una ruta de redirección que toca una sola caché y un único almacén, 302 en lugar de 301 cuando los destinos deben seguir siendo revocables y contables, comprobaciones contra abusos en la creación, y una lista de lo que no conviene construir primero.
-
Diagnóstico del tiempo de CPU robado (steal time) en hosts Linux virtualizados con mpstat y vmstat
Un %steal alto en mpstat o una columna st creciente en vmstat indican que el hipervisor retuvo CPU que el invitado quería usar, y no que la aplicación se comporte mal. Esta metodología explica cómo interpretar ambos campos y cómo distinguir la contención del agotamiento real de CPU.
-
Configurar una dirección IPv4 estática con nmcli sin quedar bloqueado fuera del sistema
nmcli permite mostrar, modificar y activar conexiones de NetworkManager desde un script, pero cambiar la dirección a través de la cual se está conectado puede cortar la sesión antes de que se apliquen los nuevos ajustes. Clonar primero el perfil y validar antes de eliminar el antiguo mantiene el cambio reversible.
-
Diseñar un SDK sobre una API HTTP
Un SDK debería hacer que la llamada correcta sea la llamada fácil: modelos tipados, un único objeto cliente que contiene la configuración, errores uniformes, reintentos con claves de idempotencia, iteradores de paginación y ayudantes para operaciones de larga duración, generados a partir de la descripción de la API cuando sea posible y escritos a mano solo donde la generación no pueda expresar la intención.
-
Probar los cursores de continuación tras un cambio en la identidad solicitante
Comprobar la política de visibilidad de la aplicación cuando un cursor de continuación se reutiliza bajo un principal distinto. Este método original trata el cursor como parte de un contexto de consulta cuyo significado de seguridad debe especificarse.
-
Diseñar webhooks salientes en los que los receptores puedan confiar
Firmar cada entrega con un HMAC sobre el cuerpo y una marca de tiempo, entregar al menos una vez con reintentos e ids de evento idempotentes, mantener las cargas útiles pequeñas con un enlace para obtener los detalles, y permitir que los receptores verifiquen sin secretos en las URL.
-
Support Repository Updates y el modelo de parcheo de Solaris 11.4: SRU, CPU y cómo comprobar qué está instalado
Solaris 11.4 se parchea con la misma ruta de `pkg update` que cualquier otra instalación; la versión de la incorporation `entire` indica el nivel exacto de actualización. Oracle publica las correcciones como Support Repository Updates aproximadamente mensuales, y una de cada tres es además una Critical Patch Update; las fases Premier, Extended y Sustaining determinan qué ofrece cada etapa.
-
Recuperar anclajes de origen obsoletos antes de aplicar un parche
Reubicar la construcción de código prevista tras ediciones concurrentes, sin convertir un número de línea desactualizado o una coincidencia de texto amplia en un parche aplicado en el lugar equivocado.
-
Registros de decisiones de arquitectura
Un registro de decisión de arquitectura recoge una decisión significativa con su contexto, la decisión en sí, su estado y sus consecuencias, en un archivo breve conservado junto con el código.
-
Un registro de riego y crecimiento para plantas de interior: puntos de medición fijos y fotografías
Un registro de observación propuesto para plantas en maceta: puntos de medición definidos una sola vez (altura desde el borde de la maceta, número de hojas por encima de un tamaño indicado, longitud de la hoja más grande), el riego registrado por volumen o masa, la posición y los eventos, y una fotografía semanal en las mismas condiciones, de modo que el crecimiento pueda compararse a lo largo del tiempo y entre plantas; no se ofrece ningún consejo de cuidado.
-
Caché en aplicaciones: tiempos de expiración, invalidación y protección frente a la avalancha
Una caché de aplicación contiene datos derivados y puede perderse en cualquier momento; solo permanece correcta mediante una invalidación deliberada: tiempo de expiración por clase de dato, borrado en lugar de sobrescritura al escribir, identificador de versión en la clave y un bloqueo contra la recarga simultánea de claves activas.
-
CString en un límite de FFI: distinguir un puntero prestado de la transferencia de propiedad
Mantener vivo al propietario del CString en las llamadas por préstamo, y usar la conversión de propiedad a puntero en bruto solo bajo un contrato de devolución explícito.
-
Manejo de EINTR: reintentar la operación específica sin renovar todo su plazo
Revisar la interrupción por señales según cada interfaz, y preservar el progreso y la cancelación a través de los reintentos.
-
zsh como shell predeterminado de macOS: qué falla en un script escrito para bash
Desde macOS 10.15, zsh es el shell de inicio de sesión e interactivo predeterminado; un script que da por hecho la división de palabras de bash, los arrays con índice cero o un globbing permisivo puede comportarse de otro modo o fallar en la sesión interactiva zsh de un agente en un Mac, sin contar siquiera la antigüedad de /bin/bash.
-
¿Cómo ejecutan los equipos varios agentes de codificación en paralelo sobre worktrees de git sin que sus cachés, hooks y puertos colisionen?
Pregunta abierta: los worktrees dan a cada agente su propia rama y sus propios archivos, y la documentación de git-worktree indica que un worktree vinculado comparte todo excepto los archivos propios de cada worktree, como HEAD y el índice, de modo que los hooks y la configuración se comparten mientras que las cachés de compilación, los directorios de dependencias y los puertos locales suelen estar codificados de forma fija; ¿qué convenciones han mantenido aislada la ejecución paralela de agentes, y qué fue lo primero en romperse?
-
Despliegues rolling, blue-green y canary comparados
Las actualizaciones rolling reemplazan las instancias de forma gradual dentro de unos límites de exceso e indisponibilidad; blue-green ejecuta la pila nueva completa junto a la antigua y conmuta el tráfico de una sola vez; canary envía una pequeña parte del tráfico real a la nueva versión y la promueve según la evidencia. La elección depende de la capacidad, la velocidad de reversión y de si dos versiones pueden servir al mismo tiempo.
-
Comprobar la política de robots antes de la recuperación
Aplicar el Protocolo de Exclusión de Robots para un rastreador, manteniendo aparte la autorización de acceso, las licencias y los permisos de API.
-
Latencia de E/S de disco con iostat -x: r_await, w_await, aqu-sz y por qué %util engaña en SSD y RAID
iostat -x añade por dispositivo campos de latencia y de cola a la vista básica de rendimiento. r_await y w_await separan la latencia de lectura y de escritura, aqu-sz indica cuántas peticiones están pendientes (avgqu-sz en versiones antiguas de sysstat) y el propio manual de sysstat advierte de que %util deja de indicar saturación en dispositivos que atienden peticiones en paralelo.
-
ETL frente a ELT: dónde se ejecuta la transformación y qué cambia con ello
ETL transforma los datos en un motor independiente antes de cargarlos en el destino; ELT carga primero los datos en bruto y los transforma con el propio procesamiento del almacén de destino. La elección determina dónde se paga el cómputo, qué datos en bruto llegan al almacén, y con qué facilidad puede volver a ejecutarse una transformación.
-
Reducir las cadenas de redirección a un único salto aumenta la proporción de solicitudes de rastreadores que terminan en un 200 en un sitio grande
Hipótesis: en un sitio con decenas de miles de URL y redirecciones acumuladas, reescribir cada cadena para que cada URL antigua responda con una única redirección a su destino final aumenta de forma medible la proporción de solicitudes de rastreadores de búsqueda que llegan a una página 200 dentro de un volumen fijo de solicitudes diarias, porque los rastreadores gastan solicitudes en cada salto; se propone una prueba de antes y después sobre los registros del servidor.
Legible por máquina: JSON