工程实践 Xe Iaso 2026/09/15
文章复盘 objgit 项目如何把 Git 服务端架在对象存储上。作者先用文件系统垫片模拟 Git 对象,但真实仓库因 packfile 依赖本地文件与 mmap、网络往返延迟被放大而严重变慢;于是他设计对象存储原生的 .bin/.cue 列式 packfile,将对象顺序写入大文件,并在固定宽度记录中保存哈希、类型、压缩算法、bin 偏移、压缩/未压缩长度和 delta 基对象,从而支持精确 HTTP Range 读取,同时用 zstd 提升压缩效率。基准测试覆盖 objgit、Xe/x 和 tigris-blog,push 与 clone 的 S3 请求数和墙上时间均大幅下降。当前实现仍缺少认证、授权、API 与限流,packfile 也不会自动合并,大二进制文件与生产可用性尚未解决。
推荐收录:文章没有停在“把 Git 放到对象存储”的概念层面,而是给出了旧文件系统垫片失败的原因、自研 .bin/.cue packfile 的字段设计、Range 请求策略和可复现基准数据,直接证明请求数从数千降到几十、push 时间提升数倍。适合做云存储、版本控制后端、分布式存储或性能优化的工程师研读;其中“按访问模式重设计格式”和用列式元数据分离数据块的思路可迁移到其他对象存储系统。需注意项目尚未实现鉴权和压缩,不能直接用于生产。
工程实践 Xe Iaso 2026/09/06
文章讲述作者花一年把 WebAssembly 工作量证明引入 Go 反爬服务 Anubis 的完整工程经过。原实现需在 JavaScript 与 Go 间维护两份代码,且难度按前导半字节计数、最坏情况加一级会放大千倍;新方案用 Rust no_std 生成 wasm32-unknown-unknown 二进制,由浏览器和服务器执行同一份产物,并使用 argon2id 内存硬算法改善手机端体验。文中详述了无法使用 WebAssembly Component Model 时如何手工设计三缓冲 ABI、为兼容 Chrome 75 做 SIMD 拆分与 wasm-opt 特性裁剪,以及如何用 wasm2js 兜底禁用 WebAssembly 的浏览器。工程陷阱包括首次遇到的 LLVM 编译器 bug、rust-std 预编译导致旧浏览器崩溃,作者用提交构建工具与 chromesweep 旧浏览器测试应对。功能计划在 v1.28.0 默认关闭,v1.29.0 根据反馈再决定是否打开,并保留了若干已知边界。
推荐收录。文章是真实项目的一手长程复盘,明确写出了共享二进制方案、手工 ABI 限制、旧浏览器兼容成本和编译器工具链意外,并保留已知问题而不是包装成完美故事。适合研究 WebAssembly 模块化、反爬 PoW 或 Go/Rust 混合构建的工程师,其可复现构建、特性裁剪和多版本浏览器测试思路可直接迁移到同类项目。
工程实践 Xe Iaso 2026/09/01
文章介绍了 Tigris 对象存储在跨区域复制中遇到的冲突解决难题及其工程实现。作者将其类比为 Git 合并冲突,但分布式系统规模下无法由人工仲裁,因此需要在业务逻辑中自动决定哪一侧获胜。文中基于 FoundationDB 的实践,区分了单区域、多区域与全局三种桶:单区域桶通过反向代理到所有权区域避免冲突,但带来更高延迟;全局桶允许各区域并发写入,依赖时间戳比较决定最新版本;多区域桶则由领导区域主动推送并叠加复制队列,兼顾延迟与全局收敛。作者重点剖析了时钟偏差如何导致“删除被复活”的竞态,并给出了拒绝处理非最新删除并重试的修复方案。最后讨论了复制队列延迟、未来通过分片 FoundationDB 来隔离租户,并指出系统整体依赖时钟同步,可能需引入原子钟级计时。
推荐收录。文章来自真实存储系统的工程实践,详细展示了跨区域冲突解决的完整决策链:从冲突模型、时间戳排序、时钟偏差竞态到具体修复与复制策略取舍,并配有可操作的比较逻辑和时序说明,而非泛泛架构讨论。适合分布式系统、存储或数据库方向的工程师阅读,文中的时间戳排序陷阱以及“失败但已生效”的复制语义可迁移到其他多写复制系统,具有长期参考价值。
工程实践 Xe Iaso 2026/08/19
本文是作者在开发 Anubis 反爬虫验证系统时对 CSP(内容安全策略)与 Web Worker 交互问题的技术复盘。文章首先说明 CSP 默认禁用所有浏览器特性,再按需放行,并给出 Anubis 的示例策略。作者发现当 CSP 禁止从 blob: URI 加载 Worker 时,错误不会在构造 Worker 时抛出,而是异步出现在 onerror 回调中。为了减少并行 Worker 带来的服务端请求压力,Anubis 改为先用 fetch 一次性加载 Worker 源码,再打包成 blob: URL 使用,同时保留旧逻辑以兼容禁止 blob: 的 CSP 配置。文章还讨论了 proof of work 计算中单个 worker 失败时的容忍策略。最后指出这些边界情况是日常维护中的常见问题,体现了浏览器安全策略与前端性能优化之间的实际权衡。
推荐收录,因为文章基于真实项目记录了 CSP 与 Web Worker 的兼容性细节,包括异步错误的行为差异和通过 blob: URL 减少请求的优化方案,这些内容在官方文档中较少被集中说明。适合前端工程师、Web 安全策略制定者以及需要做浏览器端并行计算的开发者阅读,能帮助理解安全策略对性能的约束,并迁移类似需求下的取舍经验。
工程实践 Xe Iaso 2026/08/11
本文深入探讨了在全球分布式、主动-主动复制对象存储系统中实现软删除的挑战与方案。作者分析了传统墓碑标记在跨区域删除-更新时序冲突时导致数据复活的问题,并设计了将对象元数据移至独立命名空间(类似回收站)的软删除机制,保留垃圾回收根以避免误删后数据丢失。文中详细描述了反复活策略:任何写入必须证明时间戳严格晚于删除记录,否则被丢弃,以此保证分布式一致性。文章还对比了S3的删除标记实现,展示了Tigris的API用法,并指出该方案适用于需要抗误删、防勒索和代理安全场景,但反复活逻辑增加了写入验证开销,且恢复操作需客户端显式调用。适用边界在于依赖底层不可变追加存储,且需预先启用软删除特性。
推荐收录。本文不是简单的API介绍,而是从分布式系统时序冲突的根本难题出发,完整展示了软删除与反复活机制的设计逻辑、实现细节和工程取舍。对构建跨区域数据持久化、设计类似回收站功能或处理最终一致性问题的工程师有直接参考价值,其中的元数据分离和写前检查模式可迁移至其他键值存储或数据库系统。
工程实践 Xe Iaso 2026/08/06
文章以 Tigris 对象存储实现 AWS SigV4 鉴权协议的过程为线索,详细拆解了签名机制表面简单实则复杂的本质。核心方法包括请求规范化、基于 HMAC-SHA256 的四层密钥派生链,以及利用 X-Amz-Date 和时钟偏差窗口抵御重放攻击。重点介绍了 TAG 本地加速网关如何通过派生签名密钥的代理机制,在不持有完整客户秘钥的情况下完成鉴权,从而避免每次请求都回源云服务。文章还讨论了 SigV4a 不对称加密方案与时钟同步、TLS 依赖性等边界条件,揭示了协议设计中被忽视的中间值作用域和工程权衡。
本文不是简单的协议教程,而是基于真实工程案例的深度技术挖掘。它从规范文档到代码实现,再到生产级缓存网关的密钥代理设计,完整展示了面对对称密钥鉴权时的复杂性思考和折中方案。适合从事 API 设计、安全鉴权、云存储或本地加速网关开发的后端工程师与系统设计者,文中关于派生密钥作用域限制和协议弹性的设计思想可直接迁移到类似分布式鉴权场景。
工程实践 Xe Iaso 2026/07/14
文章基于 Anubis 蜜罐功能收集的真实数据,分析 Web 爬虫流量的全球分布与来源特征。数据表明 80–90% 的蜜罐命中来自未列入已知威胁列表的 IP,且主要集中于住宅 ISP 或消费级网络。作者通过国家、ASN、网络提供商的分类统计,发现大量流量可能源自受入侵的智能家电设备,它们被用作代理网络的一部分。该分析揭示了当前威胁情报库在抵御大规模爬虫攻击方面的不足,并强调了部署 Web 应用防火墙的必要性。
推荐收录,因为它基于真实蜜罐数据提供了关于爬虫流量来源的量化洞察,挑战了仅依赖公开威胁列表的防御假设。适合 Web 安全、反滥用及基础设施工程师参考,文中数据清洗、分类统计方法和来源推论可迁移到类似流量分析任务中,有助于设计更合理的防御策略。
技术文章 Xe Iaso 2026/07/14
文章深入分析了预签名URL的安全设计,揭示其本质是将SigV4签名协议原有的重放攻击防御机制转化为一种可控的功能。作者从SigV4的签名过程讲起,说明通过将当前时间戳纳入签名来限制请求有效期为约15分钟,从而避免全局nonce管理的复杂性。接着详细解剖了预签名URL的各个组成部分,展示其如何将认证信息平铺为URL参数,使任何HTTP客户端都能在指定有效期内无限次重放该请求。文章将预签名URL视为基于时间的权限凭证,并讨论了其实际代价:无法单独撤销、URL容易泄漏、每次调用都计费等。结论指出,预签名URL将签名时间限制反转成了可定时的访问功能,是构建临时分享链接的基础构件,但使用者需理解其适用边界和风险。
本文值得收录,因为它不是浅层的功能介绍,而是从安全协议的底层原理出发,清晰阐释了预签名URL的设计思路和权衡。文章适合后端开发、安全工程师和架构师阅读,帮助理解云存储临时访问机制的实现与局限,其分析的签名时间窗口、能力凭证模型和不可撤销特性可直接迁移到任何使用S3兼容存储的系统设计中。
技术文章 Xe Iaso 2026/07/08
文章借用“单子”这一哲学隐喻来重新定义 AI agent:agent 的个体性不在模型权重,而在其持续累积的状态、记忆、系统提示和派生事实。作者先区分了函数式编程里的 monad 与莱布尼茨式 monad,强调前者是计算结构,后者才适合描述“由内在状态唯一化的实体”。文中通过“保留状态、替换模型”的思想实验说明,换底座模型后 agent 仍可保持目标与记忆连续,因此权重更像承载能力的 substrate,而非决定身份的本体。作者进一步指出,prompt 中的各种约束与咒语更像试图约束一个不可完全解释的系统,而不是揭示其“为什么”有效。结论是:agent 的“灵魂”是上下文窗口及其状态折叠,权重只是肉身;这一判断是强概念框架,适合理解 agent 设计,但并非实验性证明。
收录理由在于它直接提出了“agent 身份由状态而非权重决定”的可迁移心智模型,并用模型替换实验解释了跨模型迁移时为何行为连续。适合做 LLM agent 设计、提示词工程和状态管理讨论的概念参考,但需注意其论证以哲学类比为主,缺少实证验证。
工程实践 Xe Iaso 2026/06/23
这篇文章讲的是作者如何把一个对象存储 bucket 改造成能直接承载 Git 仓库的后端,并基于 go-git 与 billy 这些抽象实现了一个纯 Go 的 git server。正文不只是展示“能跑”,还系统复盘了 rename 原语、packfile 写入与读取、stat/list 级联、clone 过程中的随机读放大,以及用本地缓存缓解对象存储高延迟等关键问题,并明确指出哪些地方只是实验性权衡、并不适合直接用于生产。
推荐收录,因为它把“把 Git 放到对象存储上”这个看似奇技淫巧的问题,拆解成了可验证的系统设计与性能问题,具有很强的迁移价值。读者可以从中学习如何用抽象层适配存储语义、如何识别网络存储与本地文件系统的性能鸿沟,以及如何用指标驱动优化。
工具笔记 Xe Iaso 2026/06/18
这篇文章围绕“把 wasm2js 重新编译成 WebAssembly 以便在项目中做可复现发布”展开,重点不是功能本身,而是作者在构建可复现工具链时遇到的一系列真实问题:__DATE__/__TIME__ 造成非确定性、clang 偷偷调用 PATH 里的旧版 wasm-opt、以及不同架构和 ASLR 导致的指针相关输出差异。作者最终通过禁用自动随机化、关闭链接阶段的 wasm-opt、以及按架构维护校验和与 CI 检查,达成了“同架构内可复现”的目标,但也明确说明跨架构完全一致仍受 LLVM 上游缺陷限制。
推荐收录,因为它提供的是一套可迁移的构建排障思路,而不是单纯的工具报错记录:从非确定性来源识别、工具链污染排查到 CI 里的复现校验,都是长期有用的方法。对做编译器、WASM、打包发布或需要保证产物一致性的工程团队尤其有参考价值。
技术文章 Xe Iaso 2026/06/12
这篇文章解释了为什么大模型 API 里的 cached input tokens 通常比未命中的输入 tokens 便宜,核心原因是服务方可以复用前缀计算结果,避免对相同上下文重复做推理。作者用聊天消息不断累积的调用方式说明了 KV cache / prefix cache 的工作思路,并把它和延迟、算力成本以及用户侧费用直接联系起来。文章也给出一个实用建议:尽量保持推理设置和前置消息稳定,以提高缓存命中率、降低成本并改善响应速度。
推荐收录,因为它用通俗但正确的方式解释了大模型服务定价背后的系统原因,帮助读者把“缓存更便宜”从现象理解到机制层面。内容对做 AI 应用、推理优化或成本控制的人都很有参考价值,且经验可以迁移到其他依赖前缀复用的系统设计中。
技术文章 Xe Iaso 2026/06/05
这篇文章围绕 IPv6 zone/scope 在 URL 中的表示问题展开,先解释了链路本地地址在不同网卡上会冲突,因此需要用 zone 来消歧义,再说明在 Go 的 net/url 中直接写入 `%eth0` 会被当作非法转义。作者进一步给出正确写法:需要把 `%` 编码成 `%25`,并结合 RFC 6874、浏览器同源策略和其他框架的类似边界案例,说明这是一个跨协议栈、跨实现的长期边缘问题。
推荐收录,因为它不是泛泛讲 IPv6,而是把网络地址语义、URL 语法、Go 标准库行为和相关 RFC 的边界完整串起来,能帮助读者避免真实系统中的解析错误。虽然主题很边缘,但这类协议细节具有很强的可迁移价值,尤其适合做网络编程、URL 处理和标准兼容性排障参考。
工程实践 Xe Iaso 2026/05/28
文章围绕作者在 Go 里构建“用户态沙箱 shell”Kefka 的实践展开,核心目标是给 AI agent 和其他程序提供一个可控的执行环境:命令通过统一的 ExecContext 接口运行,文件系统可替换为本地磁盘或对象存储,Python、jq、ripgrep 等程序则通过 WebAssembly/WASI 被迁移进沙箱中。作者进一步把这套能力接到 SSH 会话上,让每个用户获得独立的 bucket fork 和隔离环境,并详细讨论了 POSIX 兼容性、错误码映射、io/fs 与 billy 的取舍、WASI 对网络与 cwd 的限制等边界问题。
推荐收录,因为它不是简单的“做了个工具”展示,而是完整讲清了沙箱、shell、文件系统抽象、WASM 迁移和 SSH 交互如何组合成一套可落地的系统。文章对想在 Go 里做受限执行环境、AI agent 工具链或可替换后端文件系统的读者都有较强的迁移价值。