2025-04-02

39 篇热帖

1. Animals Made from 13 Circles (2016) (www.dorithegiant.com)

该内容是2016年5月28日发布于博客的文章评论区记录,主题为“由13个圆圈构成的动物”。文章本身未提供具体设计描述,但通过作者回复和读者评论,可以总结出以下核心信息:

1. 设计概览与反响

  • 设计作品为使用13个圆圈组合而成的动物图形,受到读者广泛好评,评论中多次出现“非常酷”、“绝妙”、“美丽”等赞美之词。
  • 设计被认为具有创意,其技术手法与推特(Twitter)和苹果(Apple)的logo设计有相似之处。

2. 创作工具与方法

  • 作者“Dori the Giant”在回复中说明,创作主要使用 Adobe Illustrator 软件,核心工具是 “椭圆工具”和“形状生成器”
  • 创作方法基本是自学者摸索,作者表示将撰写专门文章解释制作过程。

3. 市场反应与销售

  • 多位读者询问是否可以购买作品作为壁纸或印刷品。
  • 作者回复表示可以出售 印刷品,尺寸与价格例如:11英寸×14英寸的印刷品售价约为20美元,具体价格因尺寸而异。

4. 后续资源与分享

  • 作者后续提供了详细的 设计教程,发布于“Smashing Magazine”网站(链接已提供在2018年的回复中)。
  • 设计使用的彩色素材来源未具体说明,但作者暗示是自行设计。

5. 时间线

  • 文章发布于2016年,评论持续至2025年,表明该设计作品长期保持着吸引力。
2. Porting Tailscale to Plan 9 (tailscale.com)

将Tailscale移植到Plan 9的尝试始于2023年,最初因Go编译器对Plan 9支持退化(bitrot)而停滞。为赶上2025年4月1日愚人节发布,项目重启并面临关键技术挑战。

核心问题是SSE指令支持。Plan 9内核未在“note handler”(信号处理器)中保存/恢复SSE寄存器状态,导致Go编译器被迫在Plan 9目标上保守地禁用SSE,引发各种问题。为此,Russ Cox修改了Plan 9内核(包括386和amd64架构)以支持在note handler中保存浮点和SIMD状态,同时修复了Go编译器的相关特殊案例,使tailscaled能够稳定运行。

后续解决了IPC通信问题,改用本地TCP(Localhost TCP)。开发环境通过Russ创建的QEMU脚本得到优化,实现9P文件系统共享,大幅提升效率。

网络功能实现方面:

  1. TUN模式:Plan 9通过/net/ipifc/clone/net/ipifc/*/data文件轻松实现,无需ioctl,读写IP包无需额外帧封装。
  2. 路由表:通过/net/iproute文件操作,使用“tag tail”标记路由以便管理。注意Plan 9内部IPv6为主,IPv4为特殊映射。
  3. Tailscale SSH:正确实现需处理终端控制。Russ提供了“netshell”示例,将其集成后SSH功能可用。
  4. MagicDNS:Russ修改Plan 9以支持为特定DNS后缀指定备用服务器,并修复了DNS负缓存bug。

其他功能与修复:

  • 服务收集:通过遍历/proc/NNN/fd并解析QID来发现监听服务。
  • 单调时间:Go在Plan 9上曾使用墙钟时间作为单调时间,导致gVisor崩溃。Russ为Plan 9添加了单调时间支持并修复了Go。
  • 鼠标模拟:Russ修改Plan 9,允许用修饰键+单击模拟三按钮鼠标操作。
  • 随机崩溃:修复了导致无限goroutine的IPC bug。

Web运行:使用v86(基于WASM的x86模拟器)在浏览器中运行Plan 9。最初尝试基于WebSocket的Layer 2网络,后改用WISP协议以减少启动延迟。最终构建了包含Tailscale的16MB磁盘镜像。

成果与影响

  • Tailscale在Plan 9(9legacy版,GOARCH=386)上实际工作。
  • 大幅改进了Go语言对Plan 9的支持,移除了编译器中针对Plan 9的SSE等特殊处理,使Go编译器更简洁。
  • 提交了多项Go标准库修复(网络、操作系统、运行时等)。

未来方向:包括移植到9front、验证amd64支持、实现退出节点支持以及可能将Tailscale重新设计为Plan 9的/net服务器。

此项目主要出于乐趣、学习以及响应社区请求,并意外地改进了Go的核心工具链。感谢Russ Cox、Skip Tavakkolian、v86作者等众多贡献者。

3. US labour watchdog halts Apple cases after group’s lawyer picked for top job (www.ft.com)

美国劳工监督机构暂停了针对苹果公司的相关案件。此举是因为该机构的一位律师被选定担任高层职位。

5. Coolify: Open-source and self-hostable Heroku / Netlify / Vercel alternative (coolify.io)

Coolify 是一个开源且可自托管的 Heroku、Netlify、Vercel 和 Railway 的替代方案,旨在让用户轻松地将网站、数据库、网络应用程序以及 280 多种一键部署服务部署到自己的服务器上。它承诺永久免费开源。

核心特点

  • 广泛的兼容性:支持各种编程语言和框架,可部署静态网站、API、后端、数据库和各类应用程序。
  • 灵活的部署目标:支持将资源部署到任何可通过 SSH 连接的服务器,包括自有服务器、VPS、树莓派、EC2、DigitalOcean 等。
  • 多样化的部署模式:支持根据需求将资源部署到单台或多台服务器。
  • 丰富的服务支持:可部署任何兼容 Docker 的服务,并提供大量一键部署的预置服务。
  • Git 集成:支持与 GitHub、GitLab、Bitbucket、Gitea 等托管和自托管平台集成,实现推送即部署。
  • 自动化 SSL 证书:自动为自定义域名配置和续期 Let's Encrypt SSL 证书。
  • 无供应商锁定:所有配置和设置均保存在用户自己的服务器上,确保数据完全受控。
  • 自动数据库备份:支持将数据库自动备份至任何 S3 兼容存储,并支持一键恢复。
  • Webhooks 和强大 API:便于集成到 CI/CD 管道(如 GitHub Actions)中,并可通过 API 实现自动化管理。
  • 命令行工具与终端:提供 CLI 工具,可通过终端或 AI 助手管理基础设施;内置实时终端,可直接在浏览器内操作服务器。
  • 团队协作:支持项目共享和权限管理,可自动为每个 Pull Request 或新提交创建独立部署环境。
  • 运维自动化与监控:连接服务器后自动处理多项任务,并对部署、服务器状态、磁盘使用等进行监控和警报。
  • 多渠道通知:在发生事件时,可通过 Discord、Telegram、电子邮件等渠道发送通知。
6. Where does air pollution come from? (ourworldindata.org)

空气污染的来源总结

本文探讨了空气污染的主要来源、其对健康的影响以及减少污染的关键见解。

核心数据来源与研究基础

  • 本文主要依赖 社区排放数据系统(CEDS) 的数据。该数据集价值在于:
    • 提供从18世纪至今的长期全球和国家数据,并持续更新至2022年。
    • 方法透明、开放获取,并接受同行评审。
    • 数据基于燃料消耗、技术发展、污染控制等因素进行模型估算,而非直接测量,因此存在不确定性,特别是早期数据,但为分析长期趋势提供了合理一致的基础。
  • 文中污染源分类主要依据CEDS,涵盖农业、建筑、能源、工业、交通、废弃物等十一个主要类别。

空气污染的健康影响途径

污染物主要通过三种方式危害健康:

  1. 直接暴露:某些有毒气体(如二氧化硫)直接吸入,可加剧呼吸系统疾病。
  2. 形成颗粒物(PM):许多污染物转化为细小颗粒物(PM2.5),可深入肺部甚至血液,导致呼吸道和心血管问题(如癌症、中风、心脏病)。这是造成绝大多数空气污染相关死亡的主要原因。
  3. 形成臭氧(O₃):污染物(如氮氧化物、挥发性有机物、甲烷)在阳光下反应生成地面臭氧,可引起呼吸困难、哮喘,并增加慢性呼吸道疾病风险。
  • 根据全球疾病负担研究,2021年空气污染导致约800万人过早死亡(包括310万室内污染、470万室外颗粒物、50万室外臭氧污染)。

主要空气污染物及其来源

1. 二氧化硫(SO₂)

  • 主要来源
    • 能源生产(尤其是燃煤发电)是最大来源。
    • 工业(如金属冶炼)。
    • 交通(海运、航空、公路)。
  • 健康影响:主要通过形成颗粒物间接危害健康,估计每年导致数十万人死亡。
  • 趋势:全球排放量自1979年达峰后已减半,归功于欧洲、北美和中国等地区的污染控制技术(如烟气脱硫)和煤炭使用减少。

2. 氮氧化物(NOₓ)

  • 主要来源
    • 交通(主要是公路车辆尾气)是最大来源。
    • 能源生产(燃煤、燃气发电)。
    • 海运工业过程(如金属冶炼、水泥生产)。
    • 农业(土壤中的氮转化)。
  • 健康影响:通过所有三种途径危害健康(直接毒性、形成颗粒物和臭氧),估计每年导致超过百万人死亡。
  • 趋势:交通和能源领域的排放因化石燃料替代和催化转化器等技术的应用而显著下降,但农业排放进展缓慢。

3. 黑碳(BC,即煤烟)

  • 主要来源
    • 建筑(低收入和中等收入国家家庭使用固体燃料烹饪取暖)。
    • 交通(特别是柴油发动机)。
    • 能源生产(燃煤、生物质能)。
    • 废弃物露天焚烧
  • 健康影响:通过直接毒性和形成颗粒物危害健康,可能每年导致数百万人死亡。
  • 趋势:发达国家因弃用生物质和煤炭、采用清洁车辆,排放量大幅下降。

4. 甲烷(CH₄)

  • 主要来源
    • 农业(最大来源):反刍动物(如牛)肠道发酵和水稻种植。
    • 能源生产:石油和天然气系统的泄漏、煤矿开采。
    • 废弃物处理:垃圾填埋场有机物分解。
  • 健康影响:是形成地面臭氧的主要前体物,估计每年导致高达50万人过早死亡。
  • 趋势:全球排放仍在上升。解决方案包括改变饮食、减少能源系统泄漏、回收垃圾填埋气等。

5. 氨(NH₃)

  • 主要来源农业几乎占全部人类排放(来自化肥施用、动物粪便)。
  • 健康影响:与大气中其他气体反应形成颗粒物,可能每年导致数十万人死亡。
  • 趋势:全球排放因畜牧业和化肥使用增加而持续上升。

6. 非甲烷挥发性有机化合物(NMVOCs)

  • 主要来源
    • 化石燃料燃烧汽车尾气
    • 溶剂使用(油漆、清洁剂、化工厂)。
  • 健康影响:高浓度下有毒,并通过形成臭氧和颗粒物间接危害健康。

总结与解决方案

  • 来源多样性:空气污染来源广泛,涉及能源、工业、交通、农业等多个部门。
  • 解决方案的协同效应
    • 能源转型:转向清洁能源(可再生能源、核能)、电气化(交通、家庭供暖)可同时减少SO₂、NOₓ、黑碳、NMVOCs等多种污染物。
    • 农业变革:减少肉类消费、转向植物性饮食可降低甲烷和氨排放。
    • 技术与管理:污染控制技术(如脱硫、催化转化器)、泄漏检测、废弃物管理至关重要。
  • 成功的经验:许多国家通过上述措施已成功大幅降低空气污染水平,显著改善了公共健康。这证明了有效应对空气污染问题的可行性。
7. Shared DNA in Music (pudding.cool)

音乐中的共享DNA是一个项目,专注于探索音乐中的共享DNA概念。该项目涉及可视化数据的加载,表明其可能包含数据可视化组件,用于呈现分析结果。

8. RIP Val Kilmer: Real Genius .. the Film Nerd Culture Deserves (2015) (reactormag.com)

《天才反击》:极客文化应得的真实写照

《天才反击》常被拿来与《疯狂的动物》对比,后者作为80年代怀旧符号,近年被重新审视其内含的种族主义与厌女症问题——本质上是一部披着极客外衣的兄弟会复仇喜剧。而《天才反击》则提供了更深刻、更真实的极客文化描绘。

剧情与角色核心

影片虚构的“太平洋理工学院”中,天才少年米奇·泰勒与看似散漫的学长克里斯·奈特共同参与激光研发项目。他们不知情地为CIA开发太空激光武器,而贪婪的哈萨维教授则挪用项目资金。故事围绕这对“截然相反的搭档”展开:米奇严谨专注,克里斯看似玩世不恭,实则因目睹前辈拉兹洛的技术被滥用而转变。反派学生肯特则代表极客内部的竞争与嫉妒。

超越“极客 vs 书呆子”的刻板框架

电影摒弃了“极客与运动员对立”的陈词滥调,转而聚焦极客群体内部的动态——同侪间的自我证明、地位竞争与道德抉择。它展现高智商可能带来的孤立感,却不将所有聪明人塑造为社交障碍者,反而强调创造力与改变世界的能力才是极客的真正力量。复习考试的集体崩溃场景,成为学术压力最真实的缩影。

革新性的女性角色刻画

影片在女性角色处理上突破时代局限:

  • 乔丹·科克伦:作为米奇的恋人,她并非传统“女神”。其怪异举止、失眠症状、工具使用能力及自学创新的设定,可能隐含自闭症特质,但电影既不将其病理化,也不浪漫化。她是独立的创造者,爱情线仅是其人生的一部分,与《疯狂的动物》中作为“战利品”的女性形成鲜明对比。
  • 克里斯的女性互动:其直接的性邀约被女性自如拒绝或反击,影片不赋予其特权,强调女性作为个体的多样性。

教育观与道德抉择

电影反思学术专注与生活平衡的关系:克里斯警告米奇,过度埋头研究可能像前辈拉兹洛般忽视技术伦理。学生最终将哈萨维教授挪用资金建造的房屋用自研激光引爆爆米花,以幽默且公平的方式实现复仇——既揭露教授腐败,也象征极客以创造力夺回对自身成果的掌控。

现实共鸣与永恒价值

影片虽以80年代校园为背景,其核心主题却跨越时代:

  • 重视情感发展与智力发展的同等重要性
  • 强调质疑权威与保持对世界关注的必要性
  • 知识应用应以改善世界而非制造危险为前提

《天才反击》以其敏锐的对话、真实的人物弧光与对极客精神的尊重,成为一部超越怀旧喜剧的作品。它让我们看到,极客并非需要模仿他人才能成功的异类——他们拥有自己的游戏规则、幽默方式与改变世界的力量。

10. Dave Täht has died (libreqos.io)

Dave Täht逝世与遗产概要

主要生平与贡献

Dave Täht于2025年4月1日逝世。他是一位杰出的网络工程师,致力于解决互联网的“缓冲膨胀”问题。他与Jim Gettys共同推动相关技术改进,其贡献深刻改变了互联网体验。

核心技术成就

  • 关键算法开发:他主导或参与了FQ-CoDel、CAKE及LibreQoS等开源项目的开发。
  • 全球影响:这些算法现已内置在数百万设备中,显著改善了全球网络的实时通信质量(如视频通话),使以往网络条件不佳的地区也能实现稳定连接。

具体影响案例

  • 一位身处偏远农村的瘫痪女性,因他的技术得以使用远程医疗并与家人视频通话。
  • 他的技术帮助SpaceX的Starlink解决了延迟问题。
  • 他的工作启发了发展中国家(如菲律宾)的年轻创业者,使他们能够创建本地ISP,扩展社区网络接入。

个人理念与品格

  • 坚持开源:他贡献的代码始终免费开源。
  • 重原则轻利益:曾多次拒绝高薪合同,优先考虑其工作对全球的普遍影响力,而非个人名利。

行业反响与纪念

他的离世引发了广泛的哀悼与致敬,众多业界人士肯定了其贡献:

  • Vint Cerf:高度评价其技术贡献与投入精神。
  • John Carmack:感谢其工作对在线游戏网络延迟的改善。
  • Eric S. Raymond:指出其工作极大提升了Netflix等流媒体服务的体验。 多个技术社区、媒体(如LWN.net、The New Stack)及开源项目(如OpenWrt)均发布了纪念文章或致敬。

个人背景

他投身于对抗缓冲膨胀的初衷,部分源于早年在尼加拉瓜扩展互联网接入的经历。他的工作使其初衷得以实现,惠及全球。

11. The state of binary compatibility on Linux and how to address it (jangafx.com)

Linux 二进制兼容性现状及解决方案

本文探讨了在Linux上分发软件时面临的二进制兼容性核心问题,指出其根源在于以GLIBC为代表的系统库,特别是其单体化和过度耦合的设计。作者基于其公司JangaFX的实际开发经验,提出了当前可行的应对策略以及对未来根本性修复的设想。

核心问题

Linux二进制兼容性差的主要原因是系统库(尤其是GLIBC)的版本不匹配。GLIBC是一个单体库,集成了C标准库、POSIX API、动态链接器等众多功能。其版本升级往往牵连甚广,导致为特定GLIBC版本编译的程序在版本不同的系统上无法运行。

现有方案评估:容器化

以Flatpak、AppImage为代表的容器化方案通过打包整个运行环境来解决依赖问题。作者认为这是错误的方向,因为:

  • 隔离过度:应用程序与宿主系统隔离,导致无法直接访问系统设置、文件系统等。
  • 兼容性问题:对于需要直接使用系统驱动库(如GPU驱动)的应用,需要引入复杂的“透传”层,可能带来性能开销和兼容性问题。
  • 复杂性叠加:为了解决隔离带来的问题(如文件访问),需要引入XDG Desktop Portal、DBus等额外层,增加了整体复杂性。

JangaFX的现行解决方案

JangaFX采用一种混合策略来构建和分发其Linux软件:

  1. 静态链接非系统库:对于可以静态链接的第三方库,全部采用静态链接方式嵌入到可执行文件中。这可以消除运行时依赖问题。
  2. 松弛方法链接系统库:对于无法静态链接的系统库(特别是GLIBC),采用“松弛方法”——链接到足够古老(但仍是动态)的版本。因为旧版GLIBC的API更稳定,能兼容大多数用户的系统。
  3. 构建时使用旧环境:为了链接旧版系统库,他们在chroot环境中使用debootstrap创建一个基于Debian旧稳定版(如Jessie)的轻量级构建环境。在这个环境中编译一个现代的LLVM工具链,并用它来编译软件和所有依赖项。文章附有自动化此过程的Python脚本。

根本性修复设想:重构GLIBC

作者认为,要真正解决问题,必须从架构上重构GLIBC,将其拆分为更小、更专注的组件:

  • libsyscall:仅负责系统调用(静态库)。
  • libdl:独立的动态链接器。
  • libheap:全局共享的堆内存管理(仅动态库)。
  • libthread:线程管理和线程本地存储(TLS)(仅动态库)。
  • libc:核心C库,链接以上组件(可静态或动态)。

这种架构的优势在于允许不同版本的组件(尤其是libheaplibthread)共存,类似于Windows通过kernel32.dll实现的二进制兼容性。应用程序可以链接到旧版的libc,同时仍能使用新版的系统线程和堆管理。

主要挑战:C标准库中存在大量全局状态和资源(如文件列表、atexit注册函数、内存分配器、随机数种子等)。要让多个版本的libc共存,必须确保这些资源能够跨版本安全共享和访问。这需要对类型定义、函数接口(如通过虚函数表分发)和资源管理进行重新设计,是一项复杂的工程。

结论

当前,通过静态链接第三方库链接极旧版系统库的策略可以在一定程度上解决Linux软件分发问题。然而,这只是规避问题的权宜之计。要从根本上解决,需要社区重新评估和设计Linux用户空间的基础库,将二进制兼容性作为核心设计目标。在实现这一重构之前,Linux上的二进制兼容性问题将持续存在。

12. Sports supplement creatine makes no difference to muscle gains, trial finds (www.unsw.edu.au)

新南威尔士大学临床试验:按推荐剂量服用肌酸对肌肉增长无显著效果

研究背景与目的

一项由新南威尔士大学主导的临床试验表明,按推荐剂量(每日5克)服用肌酸补充剂,在配合阻力训练时,并不能促进肌肉更快增长。该研究旨在验证肌酸在严格控制条件下的实际增肌效果。

研究方法与设计

  • 参与者:54名年龄18-50岁、每周中等强度运动不足150分钟的健康成年人。
  • 分组:随机分为肌酸补充组与对照组。
  • 干预方案
    • 两组均进行为期12周、每周3次的监督阻力训练。
    • 肌酸组:在训练开始前一周开始每日服用5克肌酸(为推荐维持剂量的上限),此为“适应阶段”以稳定身体反应。
    • 对照组:不服用肌酸。
  • 测量方法:使用双能X射线吸收法多次测量身体成分,并通过饮食日志监控营养摄入。

主要研究发现

  1. 增肌效果无差异

    • 12周后,两组平均瘦体重均增加约2公斤,无显著差异。
    • 肌酸组并未因补充剂获得额外肌肉增长。
  2. 短期效应与水分滞留

    • 肌酸组在训练开始前的适应阶段即出现瘦体重增加(女性平均多0.5公斤),但存在较大个体差异。
    • 研究者推测此变化可能源于水分滞留,而非实际肌肉生长。
    • 一旦开始训练,肌酸组的增益速度与对照组趋同。
  3. 与既往研究的对比

    • 以往无“适应阶段”的研究显示,肌酸组比对照组多增加约1公斤肌肉。
    • 本研究若沿用此逻辑,肌酸组预期应增加3公斤肌肉,但实际结果仅2公斤,说明既往结果可能夸大了肌酸的效果

研究局限性及未来方向

  • 剂量可能不足:研究者指出,5克/日的剂量可能不足以在训练中产生增肌效益,建议未来测试10克/日的安全性与效果(已有研究显示该剂量对脑、骨健康有益)。
  • 研究设计待完善
    • 需延长研究时长以观察长期效应(如初学者力量增长放缓后肌酸是否显现作用)。
    • 未来应测量身体水分含量、追踪月经周期对水分滞留的影响,并监测肌酸吸收情况。
  • 方法学改进:建议后续研究采用“适应阶段”设计,以更好区分补充剂与运动的独立效应。

实际意义与建议

  • 对普通健身者:应更理性看待肌酸补充剂的增肌宣传,其效果可能被高估。
  • 对专业运动员:需注意肌酸可能导致的短期水分滞留影响体重,尤其是有体重等级要求的项目。
  • 对研究人员:本研究强调了严格实验设计的重要性,尤其需分离补充剂与运动的初期效应。

结论

该随机对照试验表明,在配合12周阻力训练时,按推荐剂量每日服用5克肌酸并不能带来额外的肌肉增长。既往研究可能因缺乏“适应阶段”设计而高估了其效果。肌酸在训练初期的影响可能主要源于水分滞留,而非肌肉合成。未来需进一步探索更高剂量及长期使用的有效性。

13. A steam locomotive from 1993 broke my yarn test (blog.cloudflare.com)

这篇文章详细描述了作者在运行yarn test时遇到的一个看似随机且难以调试的错误,最终发现根源是一个源于1993年的、名为sl的蒸汽机车动画程序。

问题概述: 作者在为其内部的 Backstage (React) 项目运行 yarn test 时,命令会卡住或最终失败,并抛出一个信息非常模糊的 [Error]。无论尝试何种 Jest 测试标志(如 --verbose, --debug, --runInBand 等),问题依旧存在。

关键发现与调试过程:

  1. 模式识别: 通过反复测试,作者发现一个规律:无论运行何种测试,程序总是在大约 27 秒后崩溃,表明存在某种超时或处理流程。
  2. 使用 Strace: 使用系统调用跟踪工具 strace 后,发现 Jest 的子进程中执行了大量名为 sl 的命令。
  3. 根本原因: 在作者的 Linux 系统中,sl 这个命令存在一个命名冲突:
    • Jest 需要的 sl 指的是 Sapling 版本控制系统的命令行工具,用于确定代码仓库的根目录。
    • 系统安装的 sl 是一个来自 1993 年的恶作剧程序,它会在终端播放一个蒸汽机车动画,通常用于惩罚误输入 ls 的用户。 Jest 错误地调用了恶作剧程序 sl,导致其内部逻辑被“火车”阻塞并最终因错误(如路径过长错误)而崩溃。

27秒的秘密: 经过进一步调查,作者发现:

  • Jest 会并行调用 sl(本应是 Sapling CLI)来获取多个子项目的根目录。
  • 每次调用蒸汽机车 sl,其动画在标准80列终端宽度下约需 6.7秒
  • 由于需要处理多个项目目录,这些调用会分4批(波次)进行,总耗时(4批 × 6.7秒/批)约 26.8秒,与观察到的27秒崩溃时间高度吻合。

解决方案与后续:

  1. 临时解决: 作者通过重命名系统中的 sl 程序解决了问题。
  2. 永久修复: Jest 团队确认了此问题(相关Issue),并提交了修复(PR #15053),将依赖的 Sapling CLI 命令从 sl 更改为无冲突的名称。

总结: 这是一个由简单的命令命名冲突导致的复杂故障。一个无害的恶作剧程序意外干扰了现代开发工具链的正常运作,展示了即使在依赖管理成熟的生态中,系统路径和命令命名的细微差异也可能引发意想不到的问题。整个调试过程凸显了系统级工具(如 strace)在解决疑难杂症中的价值。

15. Coffea stenophylla: A forgotten bean that could save coffee from extinction (www.smithsonianmag.com)

全球咖啡危机与濒危品种的救赎潜力 全球咖啡产业正面临严峻挑战。人类每天消费约20亿杯咖啡,但几乎全部依赖两个物种:风味复杂精致但娇嫩的阿拉比卡和抗病力强但风味粗糙的罗布斯塔。在气候变化导致的干旱、高温、降雨模式紊乱以及病害威胁下,两者均显脆弱。研究显示,到2050年,适合咖啡种植的区域可能缩减一半,且60%的野生咖啡物种濒临灭绝。行业急需寻找新的适应方案。

狭叶咖啡的重新发现 在这一背景下,一种长期被遗忘的咖啡物种——狭叶咖啡重新进入科学家视野。历史文献记载其风味“优越”,且可能耐受高温和干旱。英国皇家植物园邱园的咖啡研究主管阿龙·戴维斯自约15年前起对其产生兴趣。2018年,在“野外未见踪迹”超过60年后,戴维斯团队在塞拉利昂展开艰难搜寻。在分发传单无果后,他们深入森林,最终凭借该物种独特的枝条形态,找到了一株孤独的植株。经过数月努力,他们收集到足够的种子,并于2020年首次烘焙品尝。

独特的风味与潜力 品尝体验令人惊喜。狭叶咖啡呈现出高级阿拉比卡般的风味,带有桃子、茉莉花、巧克力和接骨木糖浆的甜香,品质上乘。这证明了其作为精品咖啡的潜力。然而,它也面临产量较低、许多特性(如抗病性、田间表现)尚不明确等挑战,因此短期内不太可能取代主流品种。科学家更视其为重要的基因资源

未来之路:杂交育种与保护 戴维斯等科学家认为,狭叶咖啡以及其他耐候性强的野生物种(如耐热的桑给巴尔咖啡、抗旱的刚果咖啡、抗虫的小粒咖啡)的真正价值在于为杂交育种提供优良基因。通过传统杂交,可以将它们的抗逆性与高产、优质风味等性状结合,培育出适应未来气候的更健壮品种。同时,保护生物多样性本身就是保护宝贵的“基因库”。

除了育种,文章也提及了产业减缓气候变化的措施,如选择遮荫种植的咖啡以减少化肥使用、避免使用碳足迹高的咖啡胶囊等。戴维斯的使命仍在继续,他正前往非洲寻找更多新物种,旨在为农民提供解决方案,帮助咖啡产业在全球变暖中存续下去。

16. DEDA – Tracking Dots Extraction, Decoding and Anonymisation Toolkit (github.com)

DEDA 工具包摘要

DEDA 是一个用于提取、解码和匿名化文档颜色跟踪点(黄点)的工具包。这些微小的系统性点阵几乎存在于所有商业彩色激光打印机中,编码了打印机和打印作业的相关信息,可用于设备溯源。

核心功能

  1. 提取与解码:能够从扫描的图像中读取并解码打印机的跟踪点数据(如序列号),用于数字取证分析。
  2. 匿名化:通过覆盖伪造的跟踪点图案,阻止基于原始打印数据的任意追踪。
  3. 工具集:提供一套命令行工具和一个图形用户界面(GUI)来完成相关操作。

主要使用方式

1. 读取与分析跟踪数据

  • deda_parse_print INPUTFILE: 从扫描图像中读取并解码跟踪数据(建议输入为300 dpi的无损压缩格式如PNG)。
  • deda_compare_prints INPUT1 INPUT2...: 比较多个扫描文档,找出可能来自不同打印机的文档。
  • deda_extract_yd INPUTFILE: 提取未识别的跟踪点图案,用于进一步分析。

2. 创建与应用匿名化

  • 为扫描文档匿名化:
    • deda_clean_document INPUTFILE OUTPUTFILE: 清除扫描图像中的跟踪数据。
  • 为打印文档匿名化:
    • 步骤一:打印测试页 deda_anonmask_create -w(不设页边距)。
    • 步骤二:扫描测试页,并通过 deda_anonmask_create -r SCANFILE 生成特定打印机的匿名化掩码 mask.json
    • 步骤三:使用 deda_anonmask_apply mask.json DOCUMENT.PDF 将掩码应用到PDF文档,生成匿名化的 masked.pdf 进行打印。

3. 创建自定义跟踪点

  • deda_create_dots PDFINPUT: 在PDF文档中添加自定义的跟踪点矩阵。

安装与配置

  • 前提:安装 Python 3。
  • 安装DEDA
    • 从 PyPI 安装:pip3 install --user deda
    • 从源代码安装:pip3 install --user .
  • 可选依赖:对于包含白色区域的图像匿名化(deda_anonmask_apply),需安装 wand 库(仅限Unix/GNU/Linux):pip3 install --user wand
  • 图形界面:安装后,通过命令 deda_gui 启动。

故障排除

  • deda_parse_print 命令未找到,可尝试将用户 bin 目录添加到 PATH 环境变量。
  • 确保扫描设置不会去除纸张结构或跟踪点。
  • 若打印机无跟踪点,可使用 deda_create_dots 创建或使用其他打印机生成掩码。
  • 安装 GUI 依赖(eel)时若遇到编译错误,可能需要安装开发工具包。
  • 若出现与 wand 和 ImageMagick 安全策略相关的错误,需修改 /etc/ImageMagick-*/policy.xml 策略文件以允许PDF操作。
20. The Importance of Fact-Checking (lithub.com)

The philosophy that animates Ira Glass’s This American Life can be summed up by a simple come on: “Let me tell you a story.” News, almost by definition, rarely conforms to what Aristotle deemed the…

22. An 'administrative error' sent a Maryland man to an El Salvador prison (apnews.com)
  • 事件核心:美国政府承认因“行政错误”,将一名持有合法保护身份的马里兰州男子基尔马尔·阿布雷戈·加西亚驱逐至萨尔瓦多臭名昭著的CECOT监狱。
  • 人物背景:阿布雷戈·加西亚29岁,萨尔瓦多籍,约2011年非法入境美国。2019年,移民法官驳回其庇护申请,但授予其免于遣返至萨尔瓦多的保护身份,此后他每年按时向ICE报到。
  • 争议指控:美国政府声称他与MS-13帮派有关联,依据是2019年一次逮捕中警察的“核实”和一名机密线人的信息(称其属于纽约长岛的分支)。其律师坚决否认,称政府从未提供任何实质性证据。
  • 逮捕与驱逐:2024年3月12日,阿布雷戈·加西亚在下班接自闭症儿子后于巴尔的摩被捕,随后于3月15日被遣送至萨尔瓦多监狱。其妻子通过照片和视频中的特征辨认出他。
  • 政府回应:ICE在法庭文件中承认驱逐是“疏忽”,并称是“善意”执行,因其有最终驱逐令且被认定为帮派成员。白宫及副总统万斯坚持其帮派成员身份。
  • 拒绝纠正:尽管承认错误,特朗普政府以“帮派关联”和对萨尔瓦多政府无控制权为由,反对将其接回美国,并声称法院对此案无管辖权。
  • 背景关联:此次驱逐发生在特朗普政府推行大规模驱逐之际,同月稍早曾援引《外敌法》将数百名委内瑞拉帮派成员遣送至萨尔瓦多监狱,但阿布雷戈·加西亚的案件依据的是普通移民法。
23. How Silica Gel Took Over the World (www.scopeofwork.net)

硅胶干燥剂如何“占领世界”

硅胶包几乎无处不在——新鞋鞋尖、海苔零食袋、吸入器包装、3D打印线材的真空密封袋里都能发现它们的踪影。这些印着“请勿食用”的小包,通过持续吸湿防潮,默默保障着包装食品的酥脆和物品的干燥。硅胶本质上是二氧化硅,与沙子、玻璃成分相同,但其独特之处在于布满微孔的结构。一粒硅胶珠的内部表面积可达800平方米,这使得它能吸附自重40%的水蒸气,其原理类似于毛细冷凝——水蒸气在狭窄孔隙中更易凝结为液态。

硅胶的应用需根据具体需求调整。薯片袋需防止海运中潮气渗入,博物馆展柜则依赖硅胶的“缓冲能力”来维持恒定湿度。其商业化始于20世纪初,约翰·霍普金斯大学的Walter Patrick通过混合“水玻璃”(可溶性硅酸盐)与酸,开发出高效制备硅胶的方法。1927年,戴维森化学公司(后被格雷斯公司收购)实现工业化生产,如今美国主要从海外进口硅胶制品。

硅胶包普及的真正推手是全球供应链。产品运输距离越远、经历的温压变化越多,包装内湿度控制就越关键。硅胶作为廉价可靠的吸湿方案,与集装箱运输、缠绕膜等共同支撑着现代全球贸易体系。简言之,硅胶包并未“占领世界”,而是全球化贸易需求塑造了其无处不在的现状

26. Ferron – A fast, memory-safe web server written in Rust (github.com)

A fast, memory-safe web server written in Rust. Contribute to ferronweb/ferron development by creating an account on GitHub.

27. How Google built its Gemini robotics models (blog.google)

Robots powered by Gemini Robotics models can learn complex actions like preparing salads and even folding an origami fox.

28. Nintendo unveils Switch 2 ahead of June 5 launch (arstechnica.com)
  • 硬件设计改进:Switch 2的Joy-Con尺寸更大,肩键加宽;主机支架更坚固且支持多角度调节;顶部新增第二个USB-C接口,便于充电和连接。
  • 第三方游戏阵容:宣布多款移植作品,包括《赛博朋克2077:终极版》《最终幻想7:重制版集成版》《艾尔登法环:褪色者版》《哈迪斯II》《街头霸王6》《霍格沃茨之遗》(新增鼠标控制)《如龙0:导演剪辑版》等。
  • 独占新作公布
    • FromSoftware公布Switch 2独占游戏《The Duskbloods》,2026年发售,风格类似《血源诅咒》,包含动作RPG元素与吸血鬼主题。
    • 新作《星之卡比:空中骑士》预告,为开放世界竞速游戏。
    • 《大金刚:嘉年华》新3D游戏,定于2025年7月17日发售,风格更可爱,场景可破坏。
  • 会员服务扩展
    • Nintendo Switch Online会员资格可继承至Switch 2。
    • 订阅扩展包的Switch 2用户可体验GameCube游戏库,首发包括《塞尔达传说:风之杖》《灵魂能力II》《F-Zero GX》等,未来将添加更多游戏,支持更高清画质。
    • 会员可购买复刻版无线GameCube手柄。
  • 购买优先权:2025年5月8日起发放优先购买邀请,符合条件的用户需在4月2日前订阅Switch Online满12个月、分享游戏数据且游戏时长超50小时,邀请有效期72小时。
29. Testing DVD-R and CD-R 25 years later: optical disks from Japan (goughlui.com)

As it turns out, “thrift shopping” in Japan via the internet can be both very enjoyable as well as very dangerous. In this series of posts, I’ve been examining various optical med…

30. A dramatic Einstein ring seen by Webb (phys.org)

One of the first verified predictions of general relativity is the gravitational deflection of starlight. The effect was first observed in 1919 during a total solar eclipse. Since stars appear as points of light, the effect is seen as an apparent shift in the position of stars near the eclipse. But the effect happens more generally.

32. Silicon Valley, Halt and Catch Fire, and How Microserfdom Ate the World (2015) (grantland.com)

道格拉斯·科普兰1995年的小说《微型服务》描绘了一群年轻程序员的精神追求与日常琐碎,他们通过软件开发过程中的活动来表达这些追求。这部小说早于众多同类科技题材文学与影视作品,如《硅谷》和《奔腾年代》,是最早对北美科技公司/创业文化进行虚构描写的作品之一。

小说从微软程序员丹尼尔的第一人称日记体展开,他在工作中面临生产焦虑、阶层固化与身心脱节的困境。故事中,丹尼尔与同事离开微软,前往硅谷创业,这个过程促使他们重新探索身体与意识的连接,通过按摩、改变外貌、发展人际关系等方式,在创造新软件“Oop!”的同时,也实现了个人成长。小说基于作者在微软和硅谷进行的嵌入式采访,最初发表于《连线》杂志。

科普兰笔下的盖茨形象——一个如幽灵般笼罩公司的道德力量——早已被文化中盖茨后来作为商业巨头和慈善家的形象所取代。小说出版于1995年,但其研究基于1993-1994年,恰好捕捉了消费互联网爆发前的时刻,因此它更像一个前互联网时代的预言性时间胶囊,而非对网络繁荣的直接记录。小说体现了90年代的乐观信念,即工作可以成为自我实现的途径,个人本质与职业身份能够统一。

后续作品如《社交网络》、《硅谷》和《奔腾年代》则反映了人们对科技行业及其承诺态度的变化,变得更加怀疑和批判。《社交网络》将科技巨头塑造为孤独而具有破坏性的形象;《硅谷》则以喜剧形式描绘了科技创业的残酷现实,创业者往往成为大公司博弈的棋子;《奔腾年代》则回溯到个人电脑革命初期,展现了理想主义与商业现实之间的冲突。

文章指出,我们与科技的关系已从90年代对程序员作为新范式创造者的信仰,转变为对其背后资本逻辑和个人动机的深刻不信任。如今,科技常与个人生活边界的侵蚀、工作的无休止渗透联系在一起,而非最初的解放与自我实现承诺。《微型服务》所代表的那个充满天真乐观、相信能从内部改造资本主义工作的时代梦想,已被现实所取代。

33. Scientists witness living plant cells generate cellulose and form cell walls (phys.org)

In a groundbreaking study on the synthesis of cellulose—a major constituent of all plant cell walls—a team of Rutgers University-New Brunswick researchers have captured images of the microscopic process of cell-wall building continuously over 24 hours with living plant cells, providing critical insights that may lead to the development of more robust plants for increased food and lower-cost biofuels production.

34. Show HN: Zig Topological Sort Library for Parallel Processing (github.com)

TopoSort - Zig并行处理拓扑排序库

TopoSort是一个高效的Zig库,用于对依赖图执行拓扑排序,采用创新的基于集合的方法。已迁移至Zig 0.15.1版本。

主要功能

  • 依赖图构建:从依赖数据构建依赖图
  • 拓扑排序:对图执行基于集合的拓扑排序
  • 图分区:将图分割成拓扑有序的子集
  • 并行支持:生成无依赖子集,支持并行处理
  • 顺序生成:生成节点的拓扑顺序
  • 循环检测:检测并报告循环依赖
  • 类型兼容:支持不同节点类型(整数、字符串等)

安装与集成

通过zig fetch命令添加依赖到项目中,更新build.zig文件以导入模块。支持从GitHub发布页面获取指定版本。

核心用法

  1. 初始化:使用TopoSort(T).init(allocator, config),其中T为节点数据类型
  2. 添加依赖:使用add()add_dep()add_deps()add_graph()方法
  3. 执行排序:调用sort()方法,返回SortResult
  4. 处理结果
    • 检查循环:result.has_cycle()result.get_cycle_set()
    • 获取拓扑有序集:result.get_sorted_sets() - 各子集内部节点无依赖关系,子集间拓扑有序
    • 获取节点列表:result.get_sorted_list()

配置选项

初始化时可设置:

  • verbose:打印内部调试信息
  • max_range:设置节点最大值范围,当节点为正整数时可大幅提升性能(3-4倍)

内存管理

节点值通过add()方法传递并存储。简单类型(如整数)按值复制;切片/指针类型(如[]const u8)由调用方管理内存。

命令行工具

提供toposort-cli命令行工具,支持从文件或命令行参数输入依赖图数据。数据格式类似Makefile规则。

性能基准测试

测试环境:ThinkPad T14 Gen 2,AMD Ryzen 7 PRO 5850U,单核运行。

关键性能观察:

  1. 复杂度:符合O(|N| + |E|)的时间复杂度,其中N为节点数,E为边数
  2. 节点扩展性:节点数以10倍增长时,排序时间按比例增加
  3. 链接影响
    • 链接数较少时(<2000),性能受节点数主导
    • 链接数增加后,时间随链接数线性增长
  4. max_range优化:启用后添加依赖操作速度提升3-4倍

具体性能数据:

  • 100万节点、1链接:添加25ms + 排序152ms
  • 100万节点、1000链接:添加+排序共109ms(每节点54ns)
  • 100万节点、50000链接:添加+排序共1309ms(每节点3669ns)

许可

MIT许可证

35. Cell Phone OPSEC for Border Crossings (www.schneier.com)

I have heard stories of more aggressive interrogation of electronic devices at US border crossings. I know a lot about securing computers, but very little about securing phones. Are there easy ways to delete data—files, photos, etc.—on phones so it can’t be recovered? Does resetting a phone to factory defaults erase data, or is it still recoverable? That is, does the reset erase the old encryption key, or just sever the password that access that key? When the phone is rebooted, are deleted files still available? We need answers for both iPhones and Android phones. And it’s not just the US; the world is going to become a more dangerous place to oppose state power...

36. Simulated Economy Tutorial (jasonfantl.com)

Concept Motivation Imagine an open world RPG where your actions affect the price of goods, the markets reacting to anything the player may do (burn down wheat fields, cost of food increases; kill the merchants, prices differentiate between cities; sell the many swords you’ve collected on your adventures, tank the sword market). What would it take to have such an adaptive simulated economy? You could take a very simple approach and define a rule like The cost of a good is inversely proportional to the amount of that good in the game. But this will inevitable fail to capture the…

37. Jumping Spiders (digital.tnconservationist.org)

“Spiders that jump? Will they jump towards me?” The answer is “not likely” since these spiders will jump away using a dragline of silk if you get too close. If …

38. Show HN: I vibecoded a 35k LoC recipe app (www.recipeninja.ai)

这是一个由开发者使用“Vibe Coding”方法完成的35k行代码的食谱应用“Recipe Ninja”的展示帖。该应用是一个AI驱动的烹饪助手,能够引导用户逐步完成食谱。开发者分享了这一项目,旨在展示“Vibe Coding”开发模式的成果,并引发社区对这种快速、直觉驱动的开发方式的兴趣和讨论。

39. How AI is creating a rift at McKinsey, Bain, and BCG (the-ken.com)

Instead of making consultants’ lives easier, generative AI has led to shorter deadlines and vanishing creativity