Rails 应用中 SQLite 多租户的优雅解决方案

2025-04-27

本文讲述了一个使用 Rails 构建多租户应用的经验,每个租户拥有独立的 SQLite 数据库。作者起初使用传统的数据库连接管理方式,导致应用在高负载下出现连接错误。经过一番探索,作者最终采用 Rails 6+ 的 `connected_to` 方法结合自定义中间件,实现了安全高效的租户数据库切换,巧妙解决了多线程和连接池管理的难题,并分享了处理 Rack 流式响应体的技巧。这篇文章对于构建高性能、可扩展的多租户应用具有重要的参考价值。

阅读更多
开发

Tailwind CSS 4 和 FOMO:一个程序员的教训

2025-04-07

作者在使用 Tailwind CSS 4 的过程中遭遇了巨大的挫折:由于其依赖 Bun.js,导致其在旧款 Mac Pro 上因缺少 AVX2 指令集而无法运行。这让他耗费了数天时间进行调试,最终不得不购买新电脑并放弃 Tailwind CSS 4。这篇文章探讨了科技界“害怕错过”(FOMO)的现象,以及盲目追逐新技术可能带来的负面影响。作者反思了自身选择新技术的冲动,并呼吁开发者要谨慎选择技术,优先考虑自身需求和项目实际情况,避免被技术潮流裹挟。

阅读更多
开发

精巧的UI撤销栈算法:避免索引错误的优雅方案

2025-03-26

本文介绍了一种巧妙的UI撤销栈算法实现,它摒弃了传统基于索引的实现方式,巧妙地利用两个栈(undoStack和redoStack)来管理撤销和重做操作。这种方法避免了索引越界和偏移错误等常见问题,代码简洁易懂,同时利用structuredClone()解决了JS传值引用的问题,确保了操作的幂等性。作者在文章中详细阐述了设计思路和实现细节,并提供了完整的代码示例。

阅读更多
开发 撤销重做

用 Ruby 函数增强 SQLite 的威力

2025-01-27

本文介绍了如何使用 Ruby 函数增强 SQLite 数据库的功能。作者通过创建用户自定义函数(UDF),实现了在 SQL 查询中直接调用 Ruby 代码的功能,例如生成时间有序 UUID、进行正则表达式匹配以及计算统计指标(例如标准差和百分位数)。文章还探讨了 SQLITE_DIRECTONLY 标志的使用,以避免在数据库外部访问自定义函数时出现问题。总而言之,这篇文章为提升 SQLite 数据库的灵活性和功能性提供了一种有效的方法,尤其适用于数据探索和分析场景。

阅读更多
开发 UDF