Multitenencia SQLite elegante en Rails

2025-04-27

Este artículo describe la experiencia de construir una aplicación multiinquilino con Rails, donde cada inquilino tiene su propia base de datos SQLite aislada. El autor inicialmente utilizó la gestión tradicional de conexiones de bases de datos, lo que provocó errores de conexión bajo alta carga. Después de mucha exploración, el autor finalmente utilizó el método `connected_to` de Rails 6+ combinado con un middleware personalizado para lograr el cambio seguro y eficiente de bases de datos de inquilinos, resolviendo de manera inteligente los problemas de multithreading y gestión de grupos de conexiones, y compartiendo consejos para manejar los cuerpos de respuesta de streaming de Rack. Este artículo es valioso para la construcción de aplicaciones multiinquilino de alto rendimiento y escalables.

Leer más
Desarrollo Multiinquilino

Tailwind CSS 4 y la Trampa del FOMO: Una Advertencia para Desarrolladores

2025-04-07

Este artículo relata la frustrante experiencia del autor con Tailwind CSS 4, que depende de Bun.js y falló en su antiguo Mac Pro debido a la falta de instrucciones AVX2. Depurar este problema le llevó varios días, obligándolo a comprar un nuevo equipo y abandonar Tailwind CSS 4. El autor reflexiona sobre el 'miedo a perderse algo' (FOMO) en la industria tecnológica y los peligros de perseguir ciegamente nuevas tecnologías. La experiencia subraya la importancia de una cuidadosa selección de tecnologías, priorizando las necesidades personales y las realidades del proyecto, en lugar de dejarse llevar por las tendencias.

Leer más
Desarrollo

Algoritmo elegante para pila de deshacer de la IU: evitando errores de indexación

2025-03-26

Este artículo presenta una implementación inteligente de un algoritmo de pila de deshacer para la IU. En lugar del enfoque tradicional basado en índices, utiliza dos pilas (undoStack y redoStack) para administrar las operaciones de deshacer y rehacer, evitando errores de indexación y problemas de desplazamiento. El código es conciso y fácil de entender. El autor aborda el problema de paso por referencia en JavaScript usando structuredClone(), garantizando la idempotencia. Se proporciona un ejemplo de código completo.

Leer más

Supercarga SQLite con funciones Ruby

2025-01-27

Este artículo muestra cómo mejorar las capacidades de SQLite integrando funciones Ruby. El autor crea Funciones Definidas por el Usuario (UDFs) para llamar directamente al código Ruby dentro de las consultas SQL, habilitando funciones como la generación de UUIDs ordenados en el tiempo, la coincidencia de expresiones regulares y el cálculo de medidas estadísticas (por ejemplo, desviación estándar y percentiles). El artículo también explora el uso de la bandera SQLITE_DIRECTONLY para evitar problemas al acceder a las funciones personalizadas fuera del proceso de la aplicación. En general, esto proporciona una forma poderosa de aumentar la flexibilidad y la funcionalidad de SQLite, particularmente útil para la exploración y el análisis de datos.

Leer más
Desarrollo