lsof Desmitificado: Revelando los Archivos Abiertos de un Proceso

2025-06-06

Este fragmento de código utiliza el comando `lsof -p $(echo $$)` para listar todos los archivos abiertos del proceso zsh actual. La salida muestra detalles como el ID del proceso, el usuario, el tipo de descriptor de archivo, el dispositivo, el tamaño y la ruta, proporcionando una imagen clara de las interacciones del proceso con el sistema de archivos. Esto es inestimable para comprender el comportamiento del proceso y depurar fugas de manejadores de archivos.

Leer más

Autenticación basada en cookies en Axum: De extractores a middleware

2025-06-05

Este artículo explora dos enfoques para implementar la autenticación de usuario basada en cookies en el framework Rust Axum. Inicialmente, el autor demuestra el uso de un extractor personalizado, `CookieJwt`, para recuperar tokens JWT de las solicitudes, representando condicionalmente un botón 'Perfil' o 'Login' según la validez del JWT. Sin embargo, este enfoque resulta menos limpio y escalable para escenarios de autenticación complejos. El artículo luego refactoriza la solución utilizando middleware Axum, proporcionando un enfoque más limpio, reutilizable y flexible para manejar la lógica de autenticación. Este middleware valida eficientemente los JWT, gestiona los tokens de actualización y maneja varios tipos de solicitudes, resultando en un sistema de autenticación de usuario más robusto y adaptable. El autor detalla la implementación del middleware, destacando sus ventajas sobre el enfoque basado en extractores.

Leer más
Desarrollo

Por qué deberías abandonar los constructores de consultas y abrazar SQL puro

2025-01-25

Este artículo aboga por escribir consultas de bases de datos directamente en SQL en lugar de depender de constructores de consultas. A través de varios ejemplos, el autor demuestra cómo las características de SQL (como `IS NULL`, `COALESCE`, `ARRAY_REMOVE`, `STRING_TO_ARRAY`) manejan elegantemente parámetros opcionales, matrices, paginación y actualizaciones por lotes, reduciendo la compleja lógica de Rust. Este enfoque simplifica el código, mejora la legibilidad y la capacidad de prueba, y permite pruebas y depuración de bases de datos más fáciles. El autor argumenta que el SQL puro suele ser más limpio y eficiente que los patrones de constructor complejos.

Leer más