工具发布·3 天前Simon Willison 发布 Datasette IP 速率限制插件 0.1a0Simon Willison 发布 datasette-ip-rate-limit 0.1a0 插件,用于保护 Datasette 实例免受恶意爬虫的过度请求。该插件支持按路径配置速率限制规则,可设置时间窗口、最大请求数和封禁时长,并支持白名单路径和自定义请求头(如 Fly-Client-IP)。生产配置已在 datasette.io 上线,对 /global-power-plants/ 等演示数据库路径限制为每 60 秒最多 60 次请求,超限封禁 20 秒。插件由 Codex(GPT-5.5 xhigh)辅助生成。›1 条相关源
数据库·3 天前rqlite 接管 SQLite WAL,实现分布式强一致复制rqlite 作者 Philip O'Toole 撰文详解该分布式数据库如何直接操控 SQLite 的预写日志(WAL)。传统方案通过 SQLite 的备份 API 或 VFS 层获取数据变更,但 rqlite 选择直接解析 SQLite WAL 的帧结构,提取已提交的事务记录,再通过 Raft 共识协议在集群中复制。核心挑战在于 WAL 格式的版本兼容性、帧校验与页边界对齐。该方案避免了 SQLite 备份 API 的全局锁开销,同时保留了 SQLite 原生的 ACID 事务语义。›1 条相关源
工具发布·4 天前Datasette 1.0a29 修复竞态条件导致的段错误Datasette 发布 1.0a29 版本。主要变更包括:新增 TokenRestrictions.abbreviated() 工具方法用于创建 "_r" 字典;修复空表时表头和列选项不可见的问题;修复 Mobile Safari 上列操作对话框的显示 bug。最关键的修复是一个因 Datasette.close() 与 Database.close() 之间的竞态条件导致的段错误(segfault)——测试结束时自动关闭连接的机制与线程中正在执行的查询冲突,作者借助 Codex CLI(GPT-5.5 xhigh)生成了最小 Dockerfile 来复现该 bug 并最终解决。›1 条相关源
数据库·6 天前用 7MB FST 替换 3GB SQLite 数据库,Andrew Quinn 的轮子哲学Andrew Quinn 在一篇技术笔记的脚注中分享了他的工程哲学:他成功用 7MB 的有限状态转换器(FST)二进制文件替换了一个 3GB 的 SQLite 数据库。他认为"重新发明轮子"并非坏事——在大多数领域,亲手造四五个轮子就能触及真正的前沿,比同等时间的被动学习效率更高。该案例展示了 FST 在数据压缩与检索场景下对传统关系型数据库的极端替代潜力。›1 条相关源
数据库·28 天前SQLite 临时文件前缀 etilqs_ 的由来SQLite 在创建临时文件时,文件名统一以 etilqs_ 为前缀。这个看似随机的字符串实际上是 "SQLite" 的字母逆序(etilqs = SQLite 反转)。该设计用于避免临时文件与其他进程的文件冲突,同时方便调试时识别 SQLite 创建的临时文件。临时文件通常用于排序、创建索引、大事务回滚日志等场景,默认存放在系统临时目录下。›1 条相关源