Michael Stapelberg

RSS: https://michael.stapelberg.ch/feed.xml
Michael Stapelberg 的博客,i3 窗口管理器作者、Debian 开发者,关于计算机、编程与 Linux。

用 Go SIMD 重写 TurboPFor,性能追平 C 库并消除 Debian Code Search 的 cgo 依赖

Debian Code Search 作者用 Go 1.26 的 SIMD 支持重写了 TurboPFor 整数压缩库,消除了项目最后一个 cgo 依赖,性能追平甚至超过原 C 实现。 先通过减少内存分配和位宽泛型特化把原生 Go 解码器做到 C 的 76%,再用 AVX512 SIMD 和 positional popcount 额外获得 2 倍加速。 编译设 GOAMD64=v4,用 benchstat 做基准,perf 监控 CPU 计数器。
评论点赞收藏24 天前

追踪Zsh历史数据丢失Bug

Michael Stapelberg发现Zsh shell历史文件会随机丢失大量记录,通过inotify、fatrace、bpftrace等工具追踪,最终定位到Zsh在重写历史文件时读取行数异常的问题。 Zsh 5.9.2(2026年7月发布)已修复此bug。
评论点赞收藏45 天前

追踪 Zsh 历史命令丢失的 Bug

Zsh 5.9.2 修复了一个导致历史命令随机丢失的 bug。 作者多年发现 ~/.zsh_history 中的命令无故消失,通过 inotify、fatrace、bpftrace 等工具追踪,最终修改 Zsh 源码触发崩溃并分析 core dump,定位到 readhistfile 函数读取历史文件时提前停止的问题。 文章还附了附录测试 AI 能否找到这个 bug。
评论点赞收藏52 天前

在 NixOS 上使用 microvm.nix 配置 Coding Agent 虚拟机

<p>我逐渐认识到,代码智能体是在各种场景下处理计算机程序代码的有力工具,例如用于理解软件架构、排查故障或构建概念验证。然而,根据具体用例,逐一审核智能体拟执行的每一条命令往往会很快变得繁琐且耗时。<br><br>为了能够在无需逐条审查的情况下安全地运行代码智能体,我需要一种虚拟机(VM)方案:在该方案中,智能体无法访问我的个人文件,而且即便出现意外也无伤大雅。</p>
评论点赞收藏241 天前

我终于在2026年开始使用Wayland了吗?

Wayland is the successor to the X server (X11, Xorg) to implement the graphics stack on Linux. The Wayland project was actually started in 2008, a year before I created the i3 tiling window manager fo...
评论点赞收藏269 天前

用 Immich 自托管我的照片

For every cloud service I use, I want to have a local copy of my data for backup purposes and independence. Unfortunately, the gphotos-sync tool stopped working in March 2025 when Google restricted th...
评论点赞收藏305 天前

我对 MacBook Pro M4 的印象

I have been using a MacBook Pro M4 as my portable computer for the last half a year and wanted to share a few short impressions. As always, I am not a professional laptop reviewer, so in this article ...
评论点赞收藏334 天前

NixCon 2025 旅行报告 🐝

I liked the NixOS meetup earlier this year, and at the end of the meetup they told everyone about NixCon 2025, which would be happening in Switzerland this year, at the very same location, the Univers...
评论点赞收藏374 天前

rsync:系列概述(2022)

Michael Stapelberg 介绍了关于 rsync 的一系列博客文章,涵盖使用场景、环境设置、工作原理以及他自己的实现。他建议每位计算机用户将 rsync 添加到他们的工具箱中。 文章展示了 rsync 在 DokuWiki 传输、软件部署和备份等实际场景中的应用,并提供了对监控和警报集成、操作系统兼容性的见解。此外,还深入探讨了 rsync 的工作原理,并预告了即将发布的自定义 rsync 实现。
评论点赞收藏388 天前

NixOS 中使用 sops-nix 进行秘密管理

Passwords and secrets like cryptographic key files are everywhere in computing. When configuring a Linux system, sooner or later you will need to put a password somewhere — for example, when I migrate...
评论点赞收藏402 天前

使用 Nix 进行开发:四个快速示例

I wanted to use GoCV for one of my projects (to find and extract paper documents from within a larger scan), without permanently having OpenCV on my system. This seemed like a good example use-case to...
评论点赞收藏430 天前

我喜欢如何声明式安装 NixOS

For one of my network storage PC builds, I was looking for an alternative to Flatcar Container Linux and tried out NixOS again (after an almost 10 year break). There are many ways to install NixOS, an...
评论点赞收藏486 天前

赞美用于自动配置X11显示器的grobi

I have recently started using the grobi program by Alexander Neumann again and was delighted to discover that it makes using my fiddly (but wonderful) Dell 32-inch 8K monitor (UP3218K) monitor much mo...
评论点赞收藏508 天前

kinT:使用开源 KiCad 和 Teensy 灵活性的 Kinesis 键盘控制器更新

Michael Stapelberg 发布了 kinT,这是一个开源的 Kinesis 人体工学键盘控制器升级项目。kinT 兼容新旧型号的 Kinesis Advantage 键盘,采用 KiCad 设计工具,无需昂贵的订阅费用。 该设计允许用户灵活选择不同型号的 Teensy 微控制器,并且通过清晰的丝印和电路图简化了组装过程。此外,kinT 还改进了 PCB 尺寸、连接器位置,降低了成本,并提供了详细的组装指南和固件安装说明。 该项目旨在为 DIY 爱好者提供一个易于入手且功能强大的解决方案。
评论点赞收藏529 天前

英特尔9 285K华硕Z890:不稳定!

Update (2025-05-15): Turns out the CPU was faulty! See My 2025 high-end Linux PC for a new article on this build, now with a working CPU. Update (2025-09-07): The replacement CPU also died and I have ...
评论点赞收藏560 天前

调试挂起的Go程序:三个实用技巧

本文由Go开发者Michael Stapelberg撰写,针对Go程序挂起问题提供了三种实用调试方法:1) 使用Ctrl+\发送SIGQUIT信号即时打印堆栈跟踪;2) 用delve调试器附加进程深入分析goroutine状态;3) 通过GOTRACEBACK=crash生成核心转储供离线分析。 作者以rsync同步RPKI数据的真实故障为例,逐步演示如何从网络阻塞定位到代码中误处理uid/gid列表的bug,包含完整复现步骤和调试命令,对Go开发者极具实操价值。
评论点赞收藏579 天前

现在给你的阳台装一块太阳能板吧

本文详细介绍了如何在阳台上安装插电式太阳能板的实用指南,包括选择合适的太阳能板型号、处理房东和邻居的审批流程、优化安装角度以提高发电量,以及测量实际发电量的方法。 作者分享了自己从购买到安装的全过程,强调了对绿色能源的实际贡献而非单纯的经济回报,并提供了具体的购买建议和注意事项。文章内容详实,信息密度高,对有意安装太阳能板的读者具有极高的参考价值。
评论点赞收藏656 天前

使用Go和PostgreSQL进行测试:临时数据库

本文介绍如何在Go测试中使用临时PostgreSQL实例,解决开发环境配置问题,避免“在我的机器上能运行”的问题,并显著减少测试运行时间。 文章详细说明了如何通过postgrestest包在单包测试和多包测试中管理数据库,以及如何优化共享一个PostgreSQL实例以减少资源消耗和启动时间。 此外,还探讨了进一步优化的可能性,如隐藏PostgreSQL启动开销和去重模式创建成本。
评论点赞收藏680 天前

登录芦苇

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