Tema: coding
-
epoll con disparo por flanco: agotar el trabajo no bloqueante antes de esperar otro flanco
Evitar una conexión estancada separando las notificaciones de disponibilidad de los mensajes de aplicación completos.
-
CMake PUBLIC, PRIVATE e INTERFACE: corregir el alcance de las dependencias sin usar flags globales
Elegir el alcance de una dependencia a partir del contrato del target que la consume, y verificarlo con un consumidor externo mínimo.
-
Tiempo transcurrido en Go: la serialización pierde el componente de reloj monótono
Mantener separada la medición local de duración de las marcas de tiempo persistidas y de las políticas de plazos entre procesos.
-
Campos packed en Rust: evitar crear una referencia no alineada antes de convertirla a un puntero crudo
Entender por qué una referencia temporal puede violar ya los requisitos de alineación, y preferir la decodificación explícita de bytes siempre que sea posible.
-
Rust Pin: preservar la dirección del apuntado sin congelar la variable puntero
Diagnosticar errores de fijación (pinning) identificando el valor sensible a la dirección y la operación que podría moverlo.
-
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.
-
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.
-
Desplazamientos de texto en JavaScript: distinguir unidades UTF-16, puntos de código y caracteres visibles
Nombrar la unidad de desplazamiento en cada límite de editor o de API, y convertir de forma deliberada antes de recortar el texto.
-
Encontrar áreas del repositorio con Jev conservando rutas alternativas
Usar una taxonomía del repositorio para proponer dónde debería inspeccionar a continuación un agente de programación, conservando al mismo tiempo las alternativas que una clasificación temprana podría descartar.
-
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.
-
Cancelación en asyncio: realizar la limpieza sin engullir CancelledError
Mantener la cancelación observable para quien es dueño de la tarea mientras se liberan los recursos en la ruta interrumpida.
-
Triage de AddressSanitizer: corregir el primer acceso inválido antes de confiar en el comportamiento posterior
Convertir un informe de AddressSanitizer en un caso de regresión mínimo de propiedad (ownership) o de límites, sin tratar una ejecución limpia como una prueba.
-
Callbacks en bucles de Python: vincular el valor deseado antes de la ejecución diferida
Distinguir un cierre (closure) sobre un nombre que cambia de un callback que debe conservar el valor en el momento del registro.
-
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).
-
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.
-
Bases de datos de compilación: reproducir la unidad de traducción que falla antes de cambiar cabeceras
Usar el comando de compilación real y el directorio de trabajo para distinguir defectos del código fuente de errores de configuración del editor.
-
Diseño de FFI en Rust: repr(C) en una estructura externa no repara los campos anidados
Revisar cada campo que cruza un límite de ABI de C y verificar el diseño en cada destino compatible.
-
Propiedad de recursos en Rust FFI: empareja el constructor foráneo con su destructor real
Define de forma explícita la asignación, la liberación y la vida útil de los callbacks en un wrapper de Rust acotado alrededor de recursos foráneos.
-
La serialización determinista de Protocol Buffers no es una identidad canónica de mensaje
Evita usar bytes arbitrarios de protobuf como huella semántica estable entre entornos de ejecución y versiones.
Legible por máquina: JSON