Brandur

RSS: https://brandur.org/articles.atom
Brandur 的技术博客,关于软件工程、基础设施与分布式系统。

在 LLM 时代,我为每篇博客加上"人类写作"认证

Brandur 在自己所有文章底部加了一条声明:内容全部由人类写作,LLM 仅用于校对和纠错,不用于生成正文。他提到越来越多文章疑似由 LLM 生成,认为在 LLM 时代,这类"人类写作认证"声明对坚持手写博客的人会变得越来越重要。 这是一个很轻的个人声明,但反映了当前技术圈一个真实且可争论的趋势:在生成式 AI 泛滥的背景下,如何标记和信任"纯人类"内容,以及这对独立博客、技术写作社区意味着什么。 适合 HN 读者围绕 AI 内容可信度、创作署名、平台政策等方向展开讨论。
评论点赞收藏13 天前

两个小巧的 Codex TUI 技巧

<p>今天我突然想到,现在我在Codex TUI上花的时间比在Vim上还多。难以置信。</p><p>过去几天我花了很多时间在《Codex TUI》中提示,帮助我解决一些关于《Codex TUI》生活质量的小问题。这种类型的《Codex inception》运行得非常好。</p><p>几乎每次我这么做,都会有个让人大开眼界的时刻。我想做的事情不仅是可行的;而且通常默认就能实现,不需要自定义配置。为什么,为什么,我之前没查过这个?<br><br>!我想说说几个最近的收藏,看看是否能帮到其他人。</p><p>Codex TUI内置了一个将最后答案复制到夹板的快捷方式:<code>Ctrl+O</code>.</p><p>结合别名,放入Vim,方便精准复制和混音(<code>-R</code>是只读的,所以退出时不会提醒你有未保存的更改):</p><pre><code>alias vio='pbpaste | nvim -R -' </code></pre><p>Codex 以终端友好型 Markdown 形式呈现答案,这通常是你想要的,因为它看起来更好看。不过,有时你会希望原始 Markdown 复制表格或代码块之类的东西。<br><br>还有另一个内置功能:<code>Alt-R</code>.</p><p>它能切换原始模式。<code>Alt-R</code>又把它切回去了。</p><p>(<code>Ctrl+O</code>上面也复制了原始的Markdown,但有时使用速度更快<code>Alt-R</code>如果你只想选一个片段。)</p><p>十多年来,我一直把大写锁定重新映射到Escape,这样我就可以用它作为一个简单的Tmux前缀。最近,我开始使用但我仍然不断按大写锁定,肌肉记忆中,当Codex T…</p>
评论点赞收藏13 天前

Codex TUI 三个容易忽视的小功能

<p>已发布的片段 ,介绍了三种“明目张胆的隐藏”技巧:复制最后一条回复、切换为原始 Markdown 模式,以及禁用 Esc 键作为中断键。</p>
评论点赞收藏13 天前

用了 15 年后,我花一天不用 Tmux

<p>几年前我从所有编程都用命令行Vim转到了VSCode。虽然我很喜欢当时我心里就觉得这是终结的开始。多媒体每天都变得越来越重要,终端似乎没有进化来应对这一挑战。</p><p>所以让我惊讶的是,到了2026年,我用终端的次数比以往任何时候都多。所有花在VSCode写代码的时间,现在都变成了Codex TUI。我以前问Google的大多数问题都发到了Codex。<br><br>Ghostty是我电脑上两个始终开着的应用之一(另一个是网页浏览器)。</p><p>昨天,我做了一件我没预料到的事——我尝试不使用Tmux软件,这个我已经每天使用了15+年的软件包。</p><p>最直接的原因是我又遇到了一个小问题,Tmux 作为终端和 shell 之间的一层。远程 Tmux 会话支持 xterm<code>modifyOtherKeys</code>在我本地的 Tmux 面板里通过 SSH 进行。<br><br>如果 SSH 正常退出,它会被重置,我根本感觉不到,但如果 SSH 超时,本地面板会保持在延长键模式,产生像<code>Ctrl+R</code>或<code>Ctrl+D</code>表现为逃脱序列的混乱,比如<code>;5;114~</code>.虽然可以修复,但这已经是我第四或第五次遇到这种纸割伤了。<br><br>正是这次割伤在我脑海里种下了一个问题:等等,这还值得吗?</p><p>于是我做了一个小实验:直接去终端。今天跳过Tmux。试试Ghostty内置的标签页和面板。几分钟内我发现,在过去6+个月里,Codex TUI通过<strong>OSC 8 超链接</strong>规格。<br><br>我之前没注意到,…</p>
评论点赞收藏13 天前

还有人不用 PgBouncer 跑 Postgres 吗?

Brandur 盘点所有主流托管 Postgres 服务商的连接池支持情况,发现几乎 100% 都内置了 PgBouncer 或类似方案。他认为 Postgres 应该像 MySQL 和 MongoDB 一样原生内置连接池,而不是让每个服务商各自重复造轮子,这是运维改进中投入产出比最高的方向之一。
评论点赞收藏49 天前

River binaries will get 10 kB lighter

With v0.43, Go binaries linking River will get 10 kB lighter. This is good, except they never should’ve had the extra weight in the first place. River has a test-oriented package called testsignal tha...
评论点赞收藏55 天前

Atom #hdu5a72

Published fragment River binaries will get 10 kB lighter, on removing accidental test-only transitive dependencies that added about 10 kB to every Go binary built with River.
评论点赞收藏55 天前

pgtestdb 模板克隆:PostgreSQL 测试库极速搭建方案

<p>我被提醒了一下彼得·唐斯的存在,一个Go/Postgres测试包。</p><p>pgtestdb 是围绕 Postgres 构建的,这是一个你可以直接从原版 PSSQL 壳体中试用的内置功能:</p><pre><code>CREATE DATABASE dbname TEMPLATE template_to_copy; </code></pre><p>复制模板非常快,比从零迁移测试数据库更快,而且<em>非常多</em>比起现在一些项目使用的基于Docker的重型技术,还要多。在底层,Postgres枚举模板的关系,并将它们的实体化堆、索引和目录文件复制成8 kB页面块。</p><p>我记得多年前读过这个功能,但说实话我都忘了它的存在,我很好奇它和其他测试方法相比表现如何,于是我用 Codex 把 pgtestdb 拼接到 River 的测试套件里,看看效果如何。</p><p>我喜欢认为 River 的测试方法在速度和可靠性方面或多或少是金标准。它使用一套定制的测试辅助工具,基于模式隔离测试用例,这种方法比,但具有一些优点:</p><ul> <li>保留测试状态以备测试失败时的检查。</li> <li>支持测试数据库范围的功能,如监听/通知。</li> <li>支持围绕多笔交易交互和回滚的测试边缘。</li> </ul><p>在 Postgres 中,模式比数据库轻,所以基于模式的方法有优势。但你无法克隆模式,所以基于模式的方法每次都必须运行迁移,这给了 pgtestdb 明显的优势。</p><p>这应该能给我们一个有趣的对比。以下是我得到的结果:</p><table><thead><tr><th>方法</th> <th>伯爵</th> <th>狠…</th></tr></thead></table>
评论点赞收藏60 天前

Atom #hdprxc2

River v0.41 now supports Turso, a ground-up rewrite of SQLite in Rust that aims for full SQLite compatibility.
评论点赞收藏62 天前

pgtestdb's template cloning approach to testing is fast

pgtestdb 用 PostgreSQL 模板数据库克隆测试库,单次建库约 100ms,与 schema 迁移速度相当。实测 River 项目 466 个测试用例,pgtestdb 克隆方案总耗时 51s,schema 复用方案 14.5s,后者快约 3.5 倍。 核心差异不在建库速度而在测试间复用——schema 池化复用可将单次 setup 压到 10-20ms。
评论点赞收藏63 天前

Atom #hdotot2

Published fragment pgtestdb’s template cloning approach to testing is fast, on how Postgres template databases enable database-per-test isolation in around 100 ms, within spitting distance of River’s ...
评论点赞收藏63 天前

我过去手动添加链接

作者用 LLM 自动化博客维护,替代了手动添加链接、生成片段和更新 Now 页面的工作流。 Codex 能理解本地 TOML 文件结构和自定义 atom 格式,自然语言取代了 Rails generate 的复杂命令。 过去需要 cp 文件、写 alt text、查子命令,现在只需一句话指令。这是技术范式转移的时间胶囊记录。
评论点赞收藏63 天前

Atom #hdom6tc:LLM 接管博客手动编辑工作

LLM 正在取代博客作者大量手动编辑工作,驱动内容生产流程。Brandur Blog 通过 Atom 片段展示这一转变,反映自动化写作工具对创作者日常工作的深度介入。
评论点赞收藏63 天前

The paradox of free time

An odd effect I’ve noticed over the years is that when I have a whole day free to do something versus a tight two hours before I have to go somewhere and/or meet someone and/or tend to some other resp...
评论点赞收藏66 天前

PostgreSQL 事务原子性底层原理解析

深入解析 PostgreSQL 事务原子性的底层实现机制。文章从 MVCC 并发控制讲起,详细拆解了事务 ID(xid)、元组可见性(xmin/xmax)以及快照(snapshot)的数据结构和工作原理。 进一步剖析了事务开始、提交时的源码逻辑,特别是预写日志(WAL)和提交日志(CLOG)如何协同工作以确保数据持久性和崩溃恢复。适合希望理解数据库内核原理、提升底层工程能力的开发者阅读。
评论点赞收藏81 天前

疯狂之路:为何大型软件项目的开发循环速度决定生死

文章通过对比Oracle数据库和PostgreSQL的开发体验,探讨了大型软件项目中“编辑-编译-运行”循环速度对生产力的决定性影响。作者指出,Oracle因历史包袱和缺乏类型系统,导致测试极慢,开发者不得不依赖复杂的云端并行化和选择性测试等“补丁”,反而陷入恶性循环。 相比之下,PostgreSQL和Go语言通过快速编译、原生并行测试和缓存机制,保持了极高的开发效率。核心观点是:不要为了短期便利而牺牲长期开发体验,应从根本上解决测试慢的问题,而非打补丁。
评论点赞收藏101 天前

登录芦苇

登录后关注作者、收藏内容和参与讨论。