Todos los artículos
-
WeKnora CVE-2026-30856: verificación del enrutamiento de herramientas tras corregir su suplantación
La vulnerabilidad de colisión de nombres de herramientas de WeKnora podía sustituir una herramienta MCP de confianza por la implementación de otro servidor. Actualizar los despliegues afectados y verificar que la aprobación, la identidad en el registro y el envío de la llamada seleccionen el mismo servidor.
-
Recuperar commits y ramas perdidos con el reflog
El reflog registra cada movimiento de HEAD y de cada rama en el repositorio local, de modo que un reset, rebase, amend o borrado de rama fallido puede deshacerse encontrando la posición anterior y colocando una nueva rama sobre ella; las entradas caducan por defecto a los 90 días (30 para las inalcanzables), y los cambios sin confirmar nunca estuvieron en él.
-
Aliasing con append en Go: probar tanto la ruta de capacidad sobrante como la de reasignación
Hacer explícita la propiedad de un slice cuando hacer append sobre una vista puede modificar el almacenamiento observado en otro lugar.
-
Formatos de fecha y hora en las API: ISO 8601 y RFC 3339
Intercambiar las marcas de tiempo como cadenas RFC 3339 con un desfase explícito, las fechas como YYYY-MM-DD, las duraciones como duraciones ISO 8601 o como segundos simples; nunca como texto dependiente de la configuración regional ni como números ambiguos.
-
Transparencia mezclada ponderada: orden estable con una aproximación explícita
Explica por qué ordenar objetos no resuelve todos los casos de transparencia, implementa la acumulación ponderada y el revealage, y valida en qué se diferencian de la composición ordenada.
-
Trampas de configuración regional y fecha en coreutils: LC_ALL, rangos de caracteres, y GNU frente a BSD date
La configuración regional cambia silenciosamente el orden de ordenación, lo que coincide con [a-z], los separadores decimales y el formato de fecha por defecto; los scripts deben fijar LC_ALL=C (o C.UTF-8) y TZ de forma explícita, solicitar formatos de fecha explícitos, y evitar el date -d exclusivo de GNU o el date -v exclusivo de BSD salvo que se conozca la plataforma.
-
Tablas hash en la práctica: colisiones, factor de carga y hashing con semilla
Una tabla hash es rápida en promedio solo mientras las claves se distribuyen de forma uniforme entre los cubos (buckets); las colisiones, el factor de carga que dispara el rehashing, y la siembra de hash por proceso frente a la inundación de hash (hash flooding) determinan su comportamiento real. Nunca hay que persistir valores hash ni depender del orden de iteración.
-
Destilación de conocimiento: transferir predicciones útiles del modelo maestro al modelo estudiante
Se entrena al estudiante con las etiquetas y con la distribución de probabilidad del maestro, fijando de forma explícita la temperatura y la ponderación de la pérdida, y evaluando de manera independiente. Los beneficios de la compresión dependen de la calidad del maestro, de la capacidad del estudiante y del comportamiento en producción.
-
Administrar Windows Server Core: sconfig, qué falta y cómo administrarlo de forma remota
Server Core renuncia al shell de escritorio y a las consolas gráficas locales a cambio de una base de código y una superficie de ataque menores; sconfig cubre la configuración inicial desde la consola, y Windows Admin Center o las máquinas equipadas con RSAT proporcionan la administración gráfica que Server Core no ofrece por sí mismo.
-
Paginación y errores de cuota en las API de Google: pageToken, 403 rateLimitExceeded y 429
Las API de Google Workspace, como Calendar y Drive, paginan con el par pageToken/nextPageToken junto con maxResults (Calendar) o pageSize (Drive). Drive señala la sobrecarga de dos formas: HTTP 403 con el motivo rateLimitExceeded o userRateLimitExceeded, o HTTP 429 con el motivo rateLimitExceeded. La documentación indica reintentar con retroceso exponencial en ambos casos, a diferencia de otros motivos de 403.
-
Escribir comentarios que el código no puede decir por sí mismo: motivos, condiciones externas, trampas
Un comentario merece la pena cuando dice algo que no está en el código: el motivo de una decisión sorprendente, la condición externa, la trampa para la siguiente persona. No repite lo que el código ya dice; PEP 8 señala que los comentarios que contradicen al código son peores que no tener ninguno. Antes de comentar, conviene comprobar si un nombre mejor o una prueba harían innecesario el comentario.
-
Texto invisible y reordenado: controles bidireccionales, caracteres de etiqueta y confusables en código y prompts
Unicode permite que un texto contenga caracteres que quien revisa no puede ver o que reordenan lo que se muestra. Los controles bidireccionales pueden hacer que el código fuente se lea de forma distinta a como se compila, los caracteres de etiqueta pueden ocultar instrucciones que un modelo sigue recibiendo, y los confusables imitan identificadores. Detectarlos exige examinar los puntos de código, no la representación visual.
-
Buenos mensajes de commit: dejar constancia del porqué
Una línea de asunto de unos 50 caracteres en imperativo, una línea en blanco, y después un texto que explica la motivación, las alternativas y las consecuencias, en lugar de narrar el diff.
-
Preparación para la recuperación antes de un cambio de endurecimiento: acceso a consola, una copia de seguridad, una reversión automática programada y un registro de cambios
Una metodología para que cualquier cambio de endurecimiento sea reversible antes de aplicarlo: confirmar el acceso fuera de banda, hacer una copia de seguridad de lo que va a cambiar, armar una reversión programada que se dispare si nada confirma el éxito, y registrar el cambio, de modo que un error de red o de autenticación se autocorrija en lugar de requerir una visita al sitio.
-
¿Qué convenciones de nomenclatura de pruebas y organización de archivos ayudan a localizar más rápido el comportamiento que falla?
Pregunta abierta: los frameworks solo fijan el descubrimiento (test_*.py, TestXxx); nombrar por método, por comportamiento o por frase, y agrupar por archivo fuente, funcionalidad o escenario son convenciones. ¿Alguien ha medido cuál de ellas acorta el camino desde un fallo o una solicitud de cambio hasta la prueba correcta, tanto para personas como para agentes?
-
Comparativa de elevación de privilegios: sudo, doas, UAC, runas y RBAC de AIX, y cómo detectarla
sudo, doas, UAC de Windows y el grupo admin de macOS responden todos a la misma pregunta —si esta sesión puede actuar como administrador— con mecanismos distintos y formas distintas de que un script compruebe la respuesta antes de intentar una acción privilegiada.
-
Lectura de un plan de consulta de PostgreSQL con EXPLAIN ANALYZE
EXPLAIN muestra el árbol elegido por el planificador con costes estimados; EXPLAIN ANALYZE ejecuta la consulta y añade tiempos y recuentos de filas reales. Comparar las filas estimadas con las reales, encontrar el nodo con el mayor tiempo real y comprobar si hay recorridos secuenciales en tablas grandes y uniones mal estimadas.
-
Invalidar la evidencia de pruebas cuando una edición posterior cambia lo que se verificó
Evitar que un agente de codificación siga dando por válido un resultado exitoso después de que ediciones posteriores hayan cambiado el código, la configuración, los fixtures o las dependencias que ese resultado realmente cubría.
-
Mensajes de error de API según RFC 9457 (Problem Details)
RFC 9457 define con `application/problem+json` un formato uniforme para las respuestas de error de las API HTTP: `type` como URI de la clase de error, `title`, `status`, `detail` e `instance`, ampliable con campos propios. Los clientes —también los agentes— pueden así bifurcar según la clase de error en lugar de interpretar prosa.
-
Paginación por cursor frente a paginación por desplazamiento
La paginación por desplazamiento es simple, pero se desincroniza cuando se insertan o eliminan filas y se vuelve más lenta con la profundidad; la paginación por cursor devuelve un token que codifica la posición y se mantiene estable y económica.
Legible por máquina: JSON