## Postgres 事件与磁盘读取深度分析
最近发生了一起 Postgres 事件——Heroku 超时和 IOPS 达到上限——促使我们深入研究 Postgres 与磁盘的交互方式。目标不仅仅是快速修复,而是理解 `SELECT` 查询与实际数据存储之间的各个层次。
Postgres 利用三层缓存:**共享缓冲区**(Postgres 自身的内存缓存)、**操作系统页面缓存**(内核级别的缓存)以及最终的 **磁盘**(例如 AWS EBS)。每一层都有成本,增加 Postgres 的共享缓冲区可能会 *降低* 操作系统级别的缓存,从而可能损害整体性能。
核心问题源于查询过滤一个大型表(46.7GB 堆 + 28.1GB 索引),且频繁更新(每分钟 4000 次)。`account_id` 上的基本 B 树索引导致 Postgres 从磁盘读取数千行数据,但在应用 JSONB 过滤器后丢弃这些数据。这导致 IOPS 很高,因为由于 Postgres 的 MVCC(多版本并发控制)在每次更新时创建新的元组,导致行分散在整个表中。
可能的修复方案是在 JSONB 列上创建一个 GIN 索引,以便在索引 *内部* 进行过滤,避免不必要的磁盘读取。然而,关键收获是对 Postgres 内存管理以及索引选择如何显著影响 I/O 效率的更好理解——这在低级硬件访问受限的托管环境中尤其重要。
## Lichess 扩展了残局知识,新增8子棋盘库
Lichess 借助与 Marc Bourzutschky 的合作,显著扩展了其残局棋盘库的覆盖范围,现在包括大量8子局面——特别是那些带有“反对兵”的局面(op1)。这些局面是指同一纵列上的兵互相阻碍升变,需要吃子才能继续。
这个 63 TiB 的棋盘库可供下载,通过 API 供开发者使用,并且可以直接在 Lichess 的分析棋盘和移动应用程序中使用。这建立在现有的 7 子覆盖之上,尤其重要,因为大约一半在实战中出现的 8 子残局属于 op1 类别。
该棋盘库使用“转换深度”(DTC)来衡量获胜距离,重点是将局面转化为更简单的获胜局面。生成这些棋盘库涉及一个复杂的回溯分析过程,利用了之前在 7 子棋盘库上的工作。
该项目通过一种低科技解决方案——物理硬盘——克服了数据共享挑战!一个专门的前端 ([https://op1-tables.info/](https://op1-tables.info/)) 也在开发中,以展示更多统计数据。未来的扩展可能包括 7 子 DTC 以及带有多个反对兵对的棋盘库。
## 城市零售业的脆弱未来
城市因充满活力的零售业——商店、咖啡馆和餐馆——而繁荣,带动房地产价值上涨并塑造社区特色。然而,这种“消费城市”模式正日益受到在线购物、客流量减少和成本上升的威胁,导致大范围的店铺关闭。一个关键问题是“价值流失”:零售商创造了整个社区共享的价值(房价上涨、社区吸引力),但未能完全从中获益。
目前的体系未能充分支持这些重要的企业。解决方案在于能够更好地捕捉和重新分配零售业创造的价值的模式。历史上,统一所有权——例如购物中心或规划社区——允许内部交叉补贴。创新的方法包括地方税、房主/商业协会以及特殊目的债券,以资助社区改善。
随着传统零售业的挣扎,一种转向“公共空间”的趋势可能会出现——提供社区和体验,而不仅仅是商业。然而,这些需要支持才能蓬勃发展。最终,促使零售业能够更多地获取其创造的价值,对于保持我们城市充满活力和吸引力、防止店面空置以及确保对基本城市设施的持续投资至关重要。
## 被人工智能指控冒犯
这篇博文详细描述了作者在为同事的报告撰写一个简单的引言段落后,被指控使用人工智能的沮丧之情。尽管作者提供了有益的建设性反馈——建议一个总结性的开头——同事却赞扬了写作,*并且*质疑其是否出自人类之手,询问是否“经过了人工智能处理”。
作者对这种暗示他们的写作技能不真实深感冒犯,尤其作为一名专业写作者。他们以一种俏皮的讽刺回复,重申了自己的作者身份,并表达了对人工智能生成内容的反感。
这篇博文最终反映了人们对人类技能和创造力日益贬值的焦虑,在一个越来越依赖人工智能的世界里,质疑这种趋势将走向何方。
## Syntux:React & Next.js 的生成式 UI
Syntux 是一个用于使用 React 和 Next.js 构建动态、生成式 Web UI 的库。它利用大型语言模型 (LLM) 设计根据您的数据定制的 UI,这些数据由 **React 界面模式 (RIS)** 表示——一种 JSON-DSL,用于定义 UI 结构,而无需生成实际代码。这确保了安全性、可重用性和可缓存性。
**主要特性:**
* **生成式 UI:** 基于数据 (`value`) 和描述性 `hint` 创建 UI。
* **自定义组件:** 与您现有的 React 组件无缝集成。
* **缓存:** 允许通过简单的基于字符串的模式缓存系统重用生成的 UI。
* **LLM 支持:** 通过 Vercel AI SDK 与各种 LLM 提供商(如 Anthropic 的 Claude)合作。
* **服务器动作:** 允许将服务器端功能附加到 UI 事件。
* **成本优化:** 设计用于最大限度地减少与 LLM 的 token 使用量。
要使用,只需在 `<GeneratedUI>` 组件中提供数据 `value`、LLM `model` 和描述所需 UI 的 `hint`。Syntux 是开源的(MIT 许可证),并提供用于组件定义和模式生成的工具。