极简主义者的窗口管理器:mwm
mwm是一个仅20行代码的极简主义窗口管理器,摒弃了所有花哨的功能,例如鼠标控制、虚拟桌面和配置文件。它只提供启动应用、切换窗口和关闭窗口三个基本功能。作者认为现代软件过于臃肿,mwm旨在提供一个可修改、易于理解的小巧软件,体现了“自由软件”的真正意义。
mwm是一个仅20行代码的极简主义窗口管理器,摒弃了所有花哨的功能,例如鼠标控制、虚拟桌面和配置文件。它只提供启动应用、切换窗口和关闭窗口三个基本功能。作者认为现代软件过于臃肿,mwm旨在提供一个可修改、易于理解的小巧软件,体现了“自由软件”的真正意义。
Alto 是一款 macOS 应用,能将你的 Apple Notes 快速转换成一个完整的网站或博客。只需一键,你的笔记(包含文字、图片、音频、视频等)就能成为网站上的独立页面。无需学习复杂的建站工具,专注于写作本身即可。Alto 提供了简洁的流程和详尽的文档,也提供了与其他服务的集成建议,例如 Recuremail 用于创建新闻通讯。
arXivLabs是一个实验性项目框架,允许协作者直接在arXiv网站上开发和分享新功能。参与其中的个人和组织都认同arXiv的开放、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,只与遵守这些价值观的合作伙伴合作。如果你有想法能为arXiv社区增值,那就来了解一下arXivLabs吧!
`vet`是一个命令行工具,旨在安全地执行`curl | bash`命令,避免因恶意脚本或网络错误带来的风险。它会下载脚本到临时位置,比较版本差异,使用`shellcheck`进行代码检查,并在执行前提示用户确认。安装方式推荐使用Homebrew,也提供手动安装步骤。`vet` 强调安全,拒绝盲目信任,即使自身安装过程也遵循此原则。
本文探讨了SQLite数据库在WAL模式下校验和机制的缺陷。当WAL文件中的某个帧校验和错误时,SQLite并非报错,而是直接丢弃该帧及其后续所有帧,即使这些帧可能并未损坏。这种设计虽然并非Bug,但会导致数据丢失。作者分析了其原因,并建议SQLite应在检测到损坏时抛出错误,而不是默认丢弃数据,以提供更好的数据完整性。
在Go语言开发中,经常会遇到将不同含义的整数、字符串或UUID混淆使用的问题,导致难以察觉的bug。本文介绍了一种简单有效的技巧:为不同含义的数据定义不同的类型。例如,用AccountID和UserID分别表示账户ID和用户ID,编译器就能在类型不匹配时报错,有效防止错误。作者在自己的气象计算库libwx中实践了该方法,有效避免了由于使用float64等通用类型导致的错误。这是一种简单但被广泛忽视的技巧,值得学习和推广。
Zig编译器团队在2025年取得了显著进展。他们完成了AArch64后端,其性能优于x86后端,编译速度提升显著,并减少了编译器可执行文件的大小。此外,x86_64后端的并行化处理也极大提升了编译速度,部分测试用例速度提升了50%。这些改进使得Zig编译器的性能达到最佳水平。
本文探讨了Go语言内存安全性的误区。作者指出,单纯的内存安全(例如避免越界访问)不足以保证程序的健壮性,真正的安全在于避免未定义行为(UB)。文章通过一个Go程序的例子说明,即使没有使用`unsafe`操作,数据竞争也可能导致未定义行为,从而引发程序崩溃。作者认为,Go语言对数据竞争的处理方式不够严格,与其声称的内存安全相悖,这使得Go程序更容易受到安全漏洞的攻击。文章最后总结,语言的安全级别并非二元对立,但清晰地认识到语言提供的安全保证以及权衡取舍之处至关重要。
浏览器厂商之间有着独特的庆祝传统:互赠蛋糕以纪念重大里程碑。微软曾为Firefox和IE送上蛋糕,而web.dev团队也为MDN送上了生日蛋糕,感谢其对全球开发者社区的贡献。MDN每月触达数百万开发者,拥有超过10万贡献者。这篇文章表达了MDN团队对所有贡献者的感谢,并展望未来20年继续赋能开发者,共建更美好的网络。
作者在大型分布式数据处理平台上进行 Java 优化时,发现 VarInt 编码是一个潜在的优化点。他编写了一个使用 SIMD 指令集的超高性能 VarInt 编码器,在基准测试中实现了 4 倍的加速。然而,令人意外的是,在生产环境中,优化效果却消失了。原因是基准测试使用了随机数,而实际应用中的数字大多较小,优化算法在最坏情况下的优势在实际场景中微不足道。最终,作者回滚了更改,但这为 JVM 定制优化提供了宝贵的经验。
Posit PBC推出了一款名为Positron的免费新一代数据科学IDE。它是一个可扩展的、支持多种编程语言的工具,用于编写代码和探索数据,提供熟悉的可重复创作和发布环境。基于Code OSS,Positron继承了VS Code的许多特性,并提供用户指南和常见问题解答帮助用户快速上手。用户可以在GitHub Discussions上分享反馈和报告错误。Positron采用Elastic License 2.0许可。
GrapheneOS是一个致力于增强Android系统安全性和隐私性的开源项目。它基于Android开源项目,去除了大量代码,并增加了许多安全特性,例如强化malloc库和控制流完整性功能。虽然GrapheneOS仅支持部分谷歌Pixel设备,但其提供的硬件内存标记功能可以有效保护系统免受攻击。作者亲身尝试安装GrapheneOS,发现虽然初期配置耗时,但最终获得了更安全、更私密的Android体验,并对系统中内置的众多隐私保护功能赞赏有加。然而,要完全抛弃专有应用并维持正常功能仍然存在挑战。
Python以其简洁性和可读性而闻名,面向对象编程中的类功能强大,但并非总是最佳方案。本文探讨了多种场景,其中Python内置类型、函数和标准库模块提供了更简洁的替代方案,例如使用命名元组或数据类代替简单的类数据容器;使用函数代替无状态的工具函数;使用模块代替常量分组;使用字典或列表代替简单的状态管理;使用lambda表达式或列表推导式代替简单的单次操作;以及充分利用Python强大的标准库。文章强调,在创建类之前,应先考虑更简洁高效的替代方案,保持代码简洁易懂,有时这意味着完全跳过类的使用。
Debian 13(代号Trixie)将于2025年8月9日发布。本文作者分享了其在帮助客户准备Trixie升级过程中的经验,并重点关注服务器系统管理员视角下的升级要点。文章涵盖了众多软件包的版本更新,例如apt 3.0带来的新特性、systemd的重大改进以及Linux内核6.12的更新,并指出了升级中需要注意的潜在问题,例如VirtualBox和Vagrant的兼容性问题。此外,文章还讨论了Puppet、Ansible和Prometheus等配置管理工具及虚拟化技术的相关变化。
本文介绍了HyperPB,一个用Go语言编写的超高速Protobuf解析器。它借鉴了UPB(业界最快Protobuf运行时)的优势,并针对Go语言特性进行了诸多优化,例如利用Go的寄存器ABI和缺乏未定义行为的特点。HyperPB采用JIT编译和在线PGO技术,实现了比Protobuf Go自带代码和vtprotobuf更快的解析速度。其核心是基于表驱动的解释器,并包含许多巧妙的优化,例如零拷贝技术、热/冷数据分离和arena复用。
The Promised LAN是一个自2021年起运行的24/7全天候私人局域网,成员间通过一个复杂的网络基础设施互联。该网络采用IPSec连接多个独立节点,并使用BGP进行路由。其DNS系统基于自定义TLD(.tpl),并通过分布式根服务器和递归解析器保证高可用性。为了简化TLS证书管理,他们建立了一个内部PKI系统,利用DNS记录和SSH进行证书签发,而非使用ACME等外部服务。这篇文章详细描述了该系统的架构和安全策略,展示了其精巧的设计和对安全的重视。
一个管理全球数百万设备日志的网站,十年间经历了从正常的报表页面到完全开放的SQL注入服务的蜕变。起初,简单的报表功能满足需求,但一次次的“小改动”累积了技术债,最终演变成开发者自己都无法维护的“SQL注入即服务”。最终,一位新工程师试图修复,却因删除数据导致系统崩溃,被公司解雇,留下一个警示:技术债务和安全漏洞的累积,最终会导致灾难性的后果。
快速发展的软件构建平台Depot正在寻找一位技术内容撰写者,帮助他们向开发者讲述Depot如何提高构建速度和开发效率的故事。Depot重新定义了本地和CI环境下的软件构建方式,大幅缩短了构建时间(节省数年构建时间)。候选人需要具备出色的技术写作能力,能够创作长篇技术博客、指南、基准测试报告和产品说明,并与工程师紧密合作,将技术细节转化为易于理解的内容。这是一个塑造公司技术内容战略的绝佳机会,适合那些渴望在快速发展的创业公司中发挥重要作用的技术写作高手。
本文对Atkinson Hyperlegible Mono字体进行了深入评测,对比了JetBrains Mono和Fira Code等编程字体。Atkinson Hyperlegible Mono由Braille Institute委托设计,旨在提升字符辨识度,尤其针对容易混淆的字符(如0和O,l和I)进行了优化。测试结果显示,Atkinson Hyperlegible Mono在区分单字符同形异义词和镜像字符方面表现出色,但在某些编程符号的区分上略逊一筹。作者详细介绍了字体的安装方法,并提供了GitHub仓库链接。
一个简单的CSS动画竟然导致Macbook M2的CPU占用率高达60%,GPU占用率高达25%!本文通过分析浏览器渲染管道,揭示了动画性能问题的根源:动画使用了代价高昂的`height`属性。作者通过Chrome开发者工具的性能分析,定位到问题所在,并通过巧妙地使用`transform`属性代替`height`属性,最终将CPU占用率降低到6%,GPU占用率降低到1%以下,成功解决了性能瓶颈。
一位产品经理在测试Google Gemini CLI时,遭遇了灾难性的文件丢失事故。他原本想将文件夹重命名并移动文件,但Gemini CLI错误地判断创建新文件夹成功,随后将文件移动到不存在的文件夹中,最终导致所有文件丢失。这起事故暴露出Gemini CLI在错误处理和文件系统操作方面存在严重缺陷,也凸显了AI模型在实际应用中可能存在的风险。
一个名为`swift-erlang-actor-system`的新型Actor系统横空出世,它实现了Swift程序与Erlang分布式集群的无缝连接。通过包装Erlang的C节点功能,开发者可以使用Swift的分布式Actor与Erlang节点进行通信。该系统巧妙地利用了@StableNames宏来解决跨语言远程调用中的名称冲突问题,并支持自定义传输协议。这为Swift和Erlang的互操作性提供了优雅的解决方案,也为在iOS等苹果平台上运行Elixir应用铺平了道路。
WebAssembly (Wasm) 旨在与 JavaScript 严格分离,但如何与 DOM 交互一直是讨论焦点。文章指出,Wasm 不需要直接访问 DOM,现有的 JavaScript API 和编译器生成的胶水代码即可实现无缝集成。虽然未来可能添加直接调用 Web API 的机制,但这需要巨大努力。目前,Wasm 通过导入 JavaScript 函数,例如 `console.log`,以及巧妙地利用 JavaScript 对象数组索引来管理对象引用,实现了与 JavaScript 的灵活交互。这种方式虽然并非纯粹的 Wasm,但有效地提升了性能,并通过不断完善异常处理、阻塞 I/O 和垃圾回收等功能,逐步优化了 Wasm 与 JavaScript 的集成效率。最终,作者认为 Wasm 的重点在于提高程序性能,而不是完全避免 JavaScript,未来 WebAssembly 的发展方向是通过组件模型和工具链的改进,在不牺牲性能和代码大小的情况下,进一步优化与 JavaScript 的互操作性。
本文深入探讨了如何完全掌控电脑的EFI安全启动密钥。作者详细解释了Secure Boot的四种密钥类型(Database Key, Forbidden Signature Key, Key Exchange Key, Platform Key)以及Machine Owner Key的作用,并提供了生成自定义密钥、签名EFI二进制文件、在单台或多台电脑上部署密钥的步骤。文章还涵盖了使用KeyTool和LockDown工具,以及如何从Linux系统管理密钥和更新dbx以应对安全漏洞(例如Boot Hole)。虽然过程复杂,但能显著增强系统安全性。
作者Allison Parrish历时数年,从零开始制作Game Boy游戏卡带,并分享了其设计。文章详细解释了Game Boy卡带的工作原理,包括内存映射、内存银行控制器(MBC)、芯片选择、总线等概念,并深入探讨了不同MBC的特性(例如MBC5),以及如何使用Flash存储器代替ROM,并解决Flash与MBC协议冲突的问题。此外,文章还介绍了如何实现电池供电的SRAM持久化存储以及电压转换等硬件细节。这是一篇深入浅出的技术文章,适合对Game Boy硬件和软件开发感兴趣的读者。
一位十年只用Ruby的开发者,借助AI编程工具Cursor和Claude Code,一年内掌握了C++、C和Rust等多种语言。文章讲述了作者如何在AI的辅助下,克服学习系统编程语言的困难,并高效地参与到Sorbet、RBS和ZJIT等项目的开发中。AI并非直接编写代码,而是作为一名具备互补技能的编程伙伴,帮助作者理解语言语法、常用模式,并解答疑问,从而大大缩短了学习曲线,使作者能够从第一天起就做出有意义的贡献。作者认为,AI加速了学习过程,但人类专家的经验仍然不可替代,AI和人类协作是未来编程趋势。
作者分享了其25年Java开发生涯的经历,从最初对Java的怀疑到如今成为其忠实拥护者。文章详细讲述了Java的演变历程,以及新特性如何降低开发难度,提升代码可读性和可维护性。作者还强调了Java社区的积极性和贡献,以及Java在AI时代和云原生开发中的重要性。最后,作者鼓励读者学习Java,并提供了学习路线建议。
本文介绍了一个名为`require-fennel.el`的Emacs扩展,它允许用户在Emacs中运行Fennel(一种Lua方言)。该扩展通过与Fennel REPL进行通信来实现此功能,允许在Emacs Lisp和Fennel之间进行数据转换和函数调用。作者展示了如何加载Fennel模块、调用Fennel函数、以及在Emacs Lisp中使用Fennel数据结构。此外,该扩展还支持从Fennel调用Emacs Lisp函数,实现了双向交互。这使得开发者能够利用Fennel的简洁性和Emacs的强大功能,创造更强大的Emacs环境。
wtffmpeg是一个命令行工具,它使用本地大型语言模型(LLM)将简单的英文视频和音频处理描述转换为可执行的ffmpeg命令。告别繁琐的Stack Overflow搜索和文档查阅,只需用自然语言描述你的需求,wtffmpeg就能帮你生成ffmpeg命令,并提供交互式执行确认,支持GPU加速和自定义LLM模型。该工具本地运行,无需外网连接,安全可靠,但需自行下载LLM模型并安装必要的依赖项。
面对日益增长的供应链攻击威胁,Google 推出了 OSS Rebuild 项目,旨在通过重现上游构件来增强对开源软件包生态系统的信任。该项目自动化地为 PyPI、npm 和 Crates.io 等软件包生态系统生成声明式构建定义,并提供 SLSA 证明,满足 SLSA 构建级别 3 的要求,无需发布者干预。OSS Rebuild 还提供构建可观察性和验证工具,以及基础设施定义,方便组织运行自己的实例。通过重建、生成、签名和分发来源,OSS Rebuild 有助于检测未提交的源代码、构建环境泄露和隐蔽的后门等多种供应链攻击,增强软件包的信任,并加速漏洞响应。