2024-08-09

27 篇热帖

1. Jake Seliger has died (marginalrevolution.com)

Jake Seliger 去世,作者与他保持了十多年的邮件和博客交流,双方都对加速药物研发(包括FDA放松管制)有共同兴趣。作者认为Jake是一位出色的作家和人,其文章深思熟虑,真诚不做作。

Jake的妻子Bess Stillman是一名急诊医生,目前怀孕七个月。文章提到了Bess的两个作品:一篇关于在美国让患者参加临床试验有多困难的访谈,以及她在Moth Radio Hour讲述如何告知家属亲人去世的感人故事《How to Say It》,这也呼应了本文标题。Bess还写了一篇《How to Let Go》,记录与Jake最后相处的日子。

Jake在文中分享了自己对生命与死亡的思考,如:“我知道自己死后会怎样,但那些留下的人怎么办?”以及“在生命尽头,我们如何评估自己的人生?什么算数,什么重要?”他原本计划将自己的文章整理成回忆录,但该项目未能由他完成。Bess表示将完成此书并尽力出版,认为通过将孩子和书籍带到世上,能为她未来的生活提供急需的目标。

尽管癌症缩短了Jake的生命,他仍感到自己很幸运,因为找到了灵魂伴侣,并得到了众多肿瘤医生和亲友的帮助。他呼吁大家支持Bess和即将出生的女儿Athena,最直接的方式是通过GoFundMe捐款,剩余资金将用于Athena。Jake希望女儿能在亲友的关爱下拥有明亮的未来。

2. LibreCUDA – Launch CUDA code on Nvidia GPUs without the proprietary runtime (github.com)

LibreCUDA 项目概述

项目目标
LibreCUDA 是一个旨在替代 CUDA 驱动程序 API 的开源项目,允许在 NVIDIA GPU 上运行 CUDA 代码,无需依赖 NVIDIA 专有的 CUDA 运行时。它通过直接与硬件通信(使用 ioctls 和 NVIDIA 开放 GPU 内核模块中的 rmapi)以及 NVIDIA 的 MMIO 命令队列结构 QMD 来实现这一目标。

核心功能

  • GPU 内存管理:分配与释放 GPU 内存,并将其映射为 CPU 可访问。
  • CUDA 内核处理:上传 CUDA ELF 二进制文件并启动内核执行。
  • 内存传输:支持主机到设备(DMA)、设备到设备(计算)和设备到主机(DMA)的异步内存拷贝。
  • 内核启动:支持在单一流上异步启动内核,并可设置动态共享内存。
  • 上下文与流管理:提供创建、管理和销毁上下文与流的功能。

技术原理

LibreCUDA 通过 直接与 GPU 硬件交互(绕过 NVIDIA 闭源运行时),使用命令队列结构上传并执行编译好的 CUDA 程序(ELF 格式),从而实现对 CUDA 代码的启动与控制。

使用示例

项目提供了一个示例代码,演示了基本使用流程:

  1. 初始化设备与上下文:检测 GPU 设备数量并创建上下文。
  2. 加载 CUDA 模块:从 .cubin 文件加载编译后的 CUDA 内核。
  3. 内存分配与数据传递:在主机和设备间分配内存并准备数据。
  4. 内核启动与执行:设置参数、创建流,启动内核并等待执行完成。
  5. 结果验证:输出执行前后的数据以确认功能正常。
  6. 资源释放:清理内存、流、模块和上下文。

集成与使用

推荐通过 CMake 将 LibreCUDA 作为子目录集成到项目中,并链接其 driverapi 库。用户需要克隆仓库并按照文档进行配置。

项目状态

  • 早期阶段:目前仅实现了基本的 CUDA 功能,尚未准备好用于生产环境
  • 开源许可:采用 MIT 许可证,欢迎社区贡献代码、提交问题和拉取请求。

关键优势

  • 去除专有依赖:使 CUDA 代码可在不安装 NVIDIA 闭源运行时的环境中运行。
  • 硬件级控制:通过直接硬件交互提供更低层次的访问能力。
  • 轻量级与灵活性:专注于核心功能,避免不必要的运行时开销。

注意:此项目仍处于开发初期,功能可能不完整或存在稳定性问题,适合研究、测试或特定环境下的实验性使用。

4. Isometric Projection in Game Development (pikuma.com)

等距投影与3D投影基础

在游戏开发中,将3D对象显示在2D屏幕上需要选择投影方式。正交投影忽略深度(Z轴),直接将3D点投影到2D平面;透视投影模拟人眼视觉,通过“透视除法”(坐标除以Z值)实现近大远小。真正的等距投影是正交投影的一种特殊配置,其X、Y、Z轴之间的夹角严格等于120度。

伪等距投影与2:1像素比例

早期的复古等距游戏通常不是真正的3D,而是使用预渲染的2D精灵图来模拟3D效果。此外,大多数被称为“等距”的游戏实际上使用的是二测投影(Dimetric),其轴夹角约为116.57度和126.87度。这种配置产生了完美的2:1像素比例(如100x50的瓦片),不仅简化了三角计算和美术绘制,还能让旧CPU通过简单的位移指令(乘除2)大幅提升渲染和计算效率。现代“等距”游戏(如《英雄联盟》)则多为真正的3D多边形游戏,仅通过调整正交相机的位置来呈现等距视角。

等距瓦片网格的编程实现

文章使用JavaScript和P5.js库演示了等距地图的编写,其核心结构和关键功能如下:

  • 坐标转换:使用网格单元(Grid-cell)而非像素来定位。将网格坐标 $(x, y)$ 转换为屏幕像素坐标的核心数学公式为:
    • $x_{screen} = x_{start} + (x - y) \times (TILE_WIDTH / 2)$
    • $y_{screen} = y_{start} + (x + y) \times (TILE_HEIGHT / 2)$
  • 渲染顺序:使用二维数组存储地图数据,通过嵌套循环从后往前遍历并渲染瓦片。这应用了画家算法(Painter's algorithm),确保前方的物体正确覆盖后方的物体。
  • Z轴高度处理:通过计算瓦片图像实际高度与预设最大高度的差值(z_offset),在 $y_{screen}$ 上进行垂直偏移,从而实现不同高度瓦片的正确立体显示。

线性变换与开发历史

等距坐标转换在数学上可视为线性变换(矩阵乘法)。通过计算变换矩阵的逆矩阵,可以实现从屏幕空间(如鼠标点击位置)到网格空间的反向转换。但在注重性能的复古编程中,简单的算术加减乘除往往比矩阵运算更实用。 文章最后回顾了等距游戏的历史,特别提到开发者Chris Sawyer使用x86汇编语言编写了《过山车大亨》(RollerCoaster Tycoon),通过极致的底层代码优化,在当时的硬件条件下实现了惊人的性能表现。

5. Ask HN: Resources about math behind A/B testing
6. Robert Elder's Guide to GNU Coreutils (blog.robertelder.org)

Robert Elder 的 GNU Coreutils 指南概要

作者 Robert Elder 在约 18 个月内,为 GNU Coreutils 软件包中的 108 个命令各制作了一个短视频和一篇配套博客文章。这些内容主要基于 Coreutils v8.3 版本,部分包含 v9.0 的命令。其目的是为每个命令提供快速入门介绍和至少一个实用示例,旨在作为快速参考,而非详尽的百科全书式文档。

GNU Coreutils 是什么? GNU Coreutils 是几乎所有 GNU/Linux 系统中的基础工具集,包含了执行文件创建、权限管理等基本系统任务所需的“核心实用程序”。其中许多命令遵循 POSIX(可移植操作系统接口)规范,这意味着相关知识也适用于 macOS 等其他系统。Coreutils 中也包含一些非 POSIX 命令,如用于质因数分解的 factor 和用于创建排列索引的 ptx。许多命令因其极高的向后兼容性和历史意义而被保留,其历史可追溯至60多年前。

Coreutils 的历史 许多命令可追溯至 Unix 的第一个版本(如 cat, ls, cp 等)。一些命令拥有更早的渊源,例如 linkunlink 命令在 1964 年的 Multics 设计文档中就有记载。GNU Coreutils 项目本身的首个提交记录可追溯至 1992 年 10 月 31 日,它是由更早的独立软件包(如 fileutils、shellutils、textutils)合并而成,首个主要版本 coreutils-5.0 发布于 2003 年 4 月。

内容特点与作者说明

  • 目的:作者进行此项目主要是为了测试 YouTube 短视频格式,虽然带来了新订阅者,但耗时且几乎不产生收益。这也帮助他深化了自身对 Linux 核心实用程序的理解。
  • 非 AI 生成:作者明确指出所有内容均为人工创作。他曾测试使用 ChatGPT 为视频撰写脚本,但对结果(尤其是对不常见命令如 ptx 的处理)非常不满意,认为其质量低劣且包含错误信息。
  • 核心与内建命令:文章指出,一些核心命令(如 printf)可能同时也是 Shell 的内建命令,两者的行为可能存在差异,需注意区分。
8. OTranscribe: A free and open tool for transcribing audio interviews (otranscribe.com)

OTranscribe 工具摘要

OTranscribe 是一个免费且开源的工具,专为转录音频采访设计。它旨在简化转录过程,提供实用的功能以提高效率。

主要特点

  • 免费与开放:用户可以免费使用该工具,其开放性可能允许社区贡献或自定义。
  • 核心功能:支持转录音频采访,帮助用户将音频内容转换为文本。

用户提示与快捷键

工具提供了快捷键来增强用户体验:

  • 文本格式化
    • Ctrl+I:添加斜体格式。
    • Ctrl+B:添加加粗格式。
  • 音频控制
    • ESC:播放或暂停音频。
    • Ctrl+J:插入当前时间戳,便于标记转录位置。

这些快捷键简化了转录过程中的格式化和音频操作,使用户能更专注于内容转换。

9. USPS Text Scammers Duped His Wife, So He Hacked Their Operation (www.wired.com)

USPS 短信诈骗事件摘要

事件背景

今年初,大量短信以美国邮政服务(USPS)需要更多包裹投递信息(包括信用卡号)为由进行诈骗,诱导受害者访问虚假网站输入个人信息。安全研究员格兰特·史密斯(Grant Smith)的妻子无意中输入了信用卡详情,促使史密斯开始追踪诈骗团伙。

调查过程与发现

史密斯通过拦截短信中的可疑域名和网站流量,利用路径遍历漏洞和SQL注入漏洞从服务器获取文件及数据库数据。他发现诈骗工具包由一个中文Telegram账户销售,关联到被称为“Smishing Triad”的诈骗集团。史密斯逆向工程了加密的诈骗工具包,解密数据并自动化抓取信息,许多网站管理员密码仍为默认设置(如“admin”和“123456”),便于他快速收集数据。

诈骗规模

  • 诈骗者使用1,133个域名,收集了438,669个唯一的信用卡信息。
  • 超过50,000个电子邮件地址被记录,包括数百个大学地址和20个军事或政府域名。
  • 受害者遍布美国,加利福尼亚州最多(约141,000个条目),总信息量超过120万条。
  • 诈骗网站每天收集数千条个人信息,包括姓名、地址、支付卡详情、电话、出生日期和银行信息。

诈骗集团背景

“Smishing Triad”是之前被网络安全公司Resecurity识别的中文诈骗集团,活跃于多个国家。史密斯发现其工具包曾存在安全漏洞,但已修复并加密数据。

影响与后续行动

史密斯将收集的受害者数据提供给USPS调查员和美国银行,帮助保护受影响信用卡。诈骗者曾尝试使用偷来的信用卡(如通过Uber消费),但史密斯的妻子及时取消了卡。史密斯在在线平台(如Reddit)发布了诈骗URL,以提高公众意识。他将在Defcon安全会议上展示研究成果,强调了诈骗问题的严重性及其全球潜在规模。

10. Apple is America's semiconductor problem (www.semiconductor-digest.com)

苹果公司:美国半导体困境的核心

美国联邦政府于2022年通过《芯片与科学法案》,旨在推动半导体制造业回流美国。此举源于新冠疫情期间暴露的供应链脆弱性——美国芯片制造份额从1990年的37%骤降至2020年的12%,导致汽车等行业因缺芯而严重减产。

作为全球最大的半导体买家,苹果公司表面上似乎在支持回流进程,例如宣布与博通合作在美国采购5G芯片,并计划从台积电亚利桑那州新工厂采购部分处理器。然而,文章认为这恰恰掩盖了问题的本质。

苹果的市场支配力与供应链转移

  • 苹果在2022年采购了价值670亿美元的半导体,占全球市场的11%,在智能手机和电脑芯片领域份额更高。
  • 凭借占据全球智能手机销量一半、利润85%的主导地位,苹果利用其作为超级买方的垄断力量压榨供应商,导致供应链向海外转移,特别是集中于中国。
  • 苹果的供应商名单包含数百家外国企业,美国本土供应商寥寥无几。疫情前后,苹果持续快速增加中国供应商,加剧了供应链风险。

对美国半导体产业的负面影响

  • 苹果曾计划采用中国长江存储的芯片,仅因其价格比美光等美国产品低约20%,尽管技术相对落后。这实质是利用外国补贴打击美国最后的内存芯片制造商。
  • 苹果通过排他性协议锁定先进产能,例如包下台积电未来一年全部最先进芯片的产出,使竞争对手无法获得同类技术。
  • 苹果通过收购和知识产权策略控制芯片设计,并存在被指控窃取初创公司核心技术的行为。

需要采取的进一步行动

  • 美国司法部反垄断部门正就多项策略调查苹果,国际贸易委员会也因技术盗窃禁止了部分苹果产品进口。
  • 文章认为,为确保《芯片法案》成功,需采取更强力措施:应立法禁止苹果等巨头签订排他性供应协议;可对仅使用外国芯片的进口iPhone征收关税。
  • 核心结论是,不解决苹果对全球电子供应链的巨大控制力,美国半导体制造业的回流目标将难以实现。
11. Recent Performance Improvements in Function Calls in CPython (blog.codingconfessions.com)

CPython函数调用性能改进概述

本文探讨了CPython近年来在函数调用性能方面的改进,通过三个微基准测试分析了内置函数调用、Python函数调用和代码内联的性能变化。

背景与基准测试设计

作者针对Twitter上关于Python min函数性能的讨论,设计了三个基准测试:

  1. 循环中简单计算:手动实现min逻辑,不调用任何函数。
  2. 循环中调用内置函数:使用min()内置函数。
  3. 循环中调用Python函数:将min逻辑封装为Python函数并调用。

测试对比了从Python 3.10到3.14.0a0的性能数据,发现所有测试的性能均有显著提升。

关键优化措施

1. 循环计算性能提升

  • 超指令:编译器将连续的字节码指令(如两个LOAD_FAST)融合为单条超指令(LOAD_FAST_LOAD_FAST)。这减少了指令解码和执行的次数,提高了CPU指令缓存效率,并利用了指令级并行性。
  • 指令特化:将通用的二元运算(如BINARY_OP)和比较操作(COMPARE_OP)特化为针对特定类型(如整数)的指令(如BINARY_ADD_INT)。这避免了运行时动态分发的开销(多次指针解引用和函数指针查找)。

2. 内置函数调用性能提升

  • 全局变量加载特化:将通用的LOAD_GLOBAL指令特化为LOAD_GLOBAL_BUILTIN,通过缓存内置函数在字典中的索引,避免了字典查找开销。
  • 调用约定优化minmax等内置函数从旧的tp_call调用约定切换为vectorcallvectorcall通过向量传递参数,避免了创建中间元组和字典对象,显著减少了内存分配和对象创建开销,性能提升超过150%。

3. Python函数调用性能提升

  • 内联解释器调用:在Python 3.11之前,Python到Python的函数调用会递归进入解释器主函数,导致额外的C栈帧创建、寄存器保存和缓存局部性下降。3.11版本通过消除这种递归,直接在当前解释器循环中执行被调用函数的字节码,大幅降低了调用开销。
  • CALL指令特化:对通用的CALL指令进行特化,根据可调用对象的类型(如函数、方法)采用更高效的调用方式,避免了每次调用时的类型检查开销。

总结

CPython近期的性能改进主要得益于以下技术:

  • 超指令融合:减少字节码指令数量。
  • 指令特化:针对常见操作和类型避免动态分发。
  • 内置函数调用优化:使用高效的向量调用约定。
  • 解释器调用内联:消除递归调用开销。

这些优化共同作用,使得函数调用、内置函数使用和代码内联的性能在最新版本中得到大幅提升,但实际应用中仍需通过性能分析定位瓶颈。

13. Launch HN: Stack Auth (YC S24) – An Open-Source Auth0/Clerk Alternative (github.com)

Stack Auth (YC S24) 是一个开源的用户基础设施平台,旨在成为 Auth0 和 Clerk 的替代品。它提供了一套完整的用户管理解决方案,包括认证、团队管理、支付、邮件、分析等功能模块。

核心特点

  • 快速开始:通过一条命令提示即可在项目中集成。
  • 模块化架构:平台以应用目录的形式提供,用户可根据需求启用相应模块。
  • 开源与自主可控:项目开源,支持数据导出和自托管。
  • 统一用户模型:所有模块构建在同一用户模型之上,确保一致性。

主要功能模块

  1. 认证:支持通行密钥、OAuth 和 CLI 认证,提供组件化集成方式,方法可通过仪表盘切换。
  2. 团队管理:支持工作区、邮件邀请和基于角色的访问控制,工作区选择器会记住状态,邀请可自动注册新用户。
  3. RBAC:支持可嵌套的角色和统一的权限检查机制,可在服务端和客户端使用,并通过仪表盘定义。
  4. API 密钥:具备泄露密钥自动吊销、支持用户和团队、仅显示一次完整密钥等安全特性。
  5. 支付:支持订阅、一次性收费和基于信用的用量计费,可对个人或团队进行计费。
  6. 邮件:统一的 API 处理事务性和营销邮件,提供 AI 编辑器编辑模板、主题定制以及打开/点击追踪。
  7. 分析:无需额外数据栈,提供实时活跃用户数和会话重放,支持自然语言或 SQL 构建仪表盘。
  8. Webhooks:实时响应用户事件,提供签名防篡改的 Webhooks,自动处理重试和退避。
  9. 数据保险库:安全存储用户提供的敏感信息(如令牌),服务器端专用设计,平台不保留明文。
  10. 上线检查清单:上线前进行域名设置、回调锁定、密钥轮换等必要检查,并提供进度跟踪。

参与与安全

  • 项目欢迎贡献,贡献前可查阅 CONTRIBUTING.md 并在 Discord 社区交流。
  • 发现安全问题可通过指定邮箱报告。
14. Base 3 Computing Beats Binary (www.quantamagazine.org)

三进制计算的效率与潜力

三进制(ternary)计算是一种使用数字0、1、2表示数值的进制系统。与二进制(base 2)相比,三进制在数据表示上更具效率:两个二进制位(bit)可表示4个数,而两个三进制位(trit)可表示9个数。例如,表示数字100,000在十进制中需要6位,在二进制中需要17位,而在三进制中仅需11位。

效率优势

三进制的核心优势在于其“基数经济”(radix economy)——通过乘积(基数 × 位数)衡量存储效率。对于大数,三进制的基数经济值最低(如100,000在三进制中为3×11=33,低于二进制的2×17=34)。若不限于整数,最高效的基数实际是自然常数e。

在计算逻辑上,三进制也更高效。二进制逻辑仅能回答“是/否”,因此比较两个数x和y的大小可能需要两次查询;而三进制逻辑可一次给出“小于、等于或大于”的结果。

历史发展

尽管效率显著,三进制计算长期未被广泛应用:

  • 1840年,英国发明家Thomas Fowler设计了三进制计算机器。
  • 1958年,苏联工程师开发了基于三进制逻辑的计算机Setun,并生产了数十台。
  • 但全球主流仍沿用基于开关电路的二进制系统,因其实现更简单。

现状与应用前景

近年来,三进制重新引起关注,尤其在网络安全领域:

  • 工程师提出在二进制硬件上构建三进制逻辑系统的方法。
  • 美国亚利桑那北部大学应用物理学家Bertrand Cambou在军方支持下,正在开发基于三进制的网络安全系统。
  • 2018-2019年的研究提出用三进制系统替代现有公钥基础设施,能降低错误率,更好处理不稳定信息。

三进制计算的复兴正契合其数学本质——作为最经济的整数进制,它在特定领域(如网络安全)可能发挥独特价值。

15. Hacking a Virtual Power Plant (rya.nc)

Hacking a Virtual Power Plant

文章讲述了作者安装GivEnergy太阳能电池系统后,通过分析其本地API的认证机制,发现并利用了严重的安全漏洞,最终推动加密库安全改进的经历。

漏洞发现与利用过程

作者在生成API令牌时,发现其使用的是JSON Web Token(JWT)。经分析,该JWT采用RS256算法签名,但签名长度仅为64字节(512位)。这极不安全,因为512位RSA密钥早已可在数小时内被破解。

作者尝试了将算法改为“none”的攻击,未果。随后,他利用已知的JWT签名数据,通过数学方法(计算两个签名消息差值的最大公约数)成功恢复了RSA模数n。接着,他使用通用数域筛法(GNFS)在云端花费约70美元和数小时计算资源,成功分解了512位模数,获得私钥。

安全危害评估

作者使用恢复的私钥伪造JWT令牌,成功访问了自身账户。进一步测试发现,账户ID是连续的,通过查看演示账户并尝试ID为1的账户,他获取了管理员权限,且未受到任何权限检查。这意味着攻击者可访问任意用户的能源系统数据,并可能控制连接在GivEnergy网络上的数万个电池储能设备。

厂商响应与修复

作者于7月8日深夜通过邮件向GivEnergy安全负责人报告了漏洞。公司次日早上即回复,表示高度重视。当晚,其CTO告知修复已部署。修复方案是将密钥长度升级至4096位,且作者最初生成的合法旧令牌仍然有效。作者对厂商快速、专业的响应表示高度赞赏。

漏洞根源与行业影响

作者指出,问题的根本原因不在于开发者使用了512位RSA(他们并非密码学家),而在于他们所依赖的加密库默认支持甚至允许生成此类不安全密钥。这就像提供了一把没有安全栓的枪。

为此,作者积极倡导加密库应转向“面向任务”的设计,避免非专家用户做出危险的安全决策。他的行动已取得进展:

  • Python的cryptography库已在近期版本中移除了对512位RSA的支持。
  • 作者已向OpenSSL提交了移除相关支持的拉取请求。
  • Go语言的crypto库中类似更改也正在讨论中。

文章最后强调,这些变更虽需要时间才能普及,但最终将从根本上杜绝此类错误的发生。该事件已被Ars Technica等科技媒体报道。

16. Forest Service orders Arrowhead bottled water to shut down California pipeline (www.latimes.com)

文章摘要

美国森林服务局已命令销售箭头山泉瓶装水的公司BlueTriton Brands关闭其在圣贝纳迪诺山脉国家森林中用于从泉水收集和运输水的管道及其他基础设施,并移除所有设备。

核心事件

  • 决定内容:森林服务局于7月致信BlueTriton Brands,拒绝其新许可申请,要求其“停止运营”,并提交拆除管道及设备的计划。该决定为最终决定,不可上诉。
  • 行动指令:公司在7天内必须通过切断或阻塞管道来停止使用其管道系统,并在3个月内提交基础设施移除计划。

争议背景

  • 长期运营:BlueTriton及其前身近一个世纪以来一直持有特别用途许可证,在该区域运营。
  • 环保争议:环保人士和活动家认为,公司的取水行为严重减少了溪流流量,对生态环境造成显著损害,并持续抗议超过十年。
  • 法律与监管进程
    • 2015年媒体曝光后,争议升级。森林服务局于2018年授予新许可。
    • 2021年,BlueTriton收购了雀巢的北美瓶装水业务。
    • 2023年,加州水资源控制委员会认定该公司在无有效水权的情况下非法取水,并下令停止,但公司就此提起诉讼。
    • 此次森林服务局的决定,与本地环保组织“拯救我们的森林协会”提起的诉讼有关,该诉讼指控机构在过期许可下允许其非法运营。

主要争议点

  • 环境影响:公司声称取水未对草莓溪峡谷环境产生负面影响。但州监管机构和环保人士认为取水非法且有害。
  • 用水去向:森林服务局在信中指出,公司被要求提供合规信息但始终未回复。此外,报告显示每月被引走的水量中,94%至98%被输送至已关闭的旧酒店物业,用于“未公开的目的”,且公司已数月未进行瓶装水生产,但取水量却大幅增加,去向成谜。
  • 部落用水:BlueTriton辩称,圣曼努埃尔部落(该部落于2016年购买了旧酒店物业)依赖管道中的部分水用于消防等需求,并称该决定对部落产生负面影响。部落拒绝置评。公司目前获得了30天的临时中止执行,仅用于满足部落需求。

现状与展望

  • 公司反应:BlueTriton已就此决定提起法律诉讼,认为其“武断且反复无常”,并表示将探索法律和监管选项。
  • 水资源数据:2023年,约1.04亿加仑的水通过公司管道。
  • 生态恢复期望:环保活动人士将此决定视为重大胜利,并希望溪流能够恢复流动,生态系统得以修复。他们观察到,取水点下游的溪流西部支流现已几乎干涸。
17. How we migrated onto K8s in less than 12 months (www.figma.com)

Figma 如何在12个月内完成至Kubernetes的迁移

迁移背景与动机 在2023年初,Figma的核心服务已容器化并运行于AWS ECS上。随着业务增长和需求复杂化,ECS的局限性显现,包括对有状态应用(如运行etcd)支持不足、缺乏原生Helm图表支持,以及无法充分利用CNCF生态系统(如自动扩缩工具Keda、服务网格Envoy/Istio)。此外,ECS的维护成本高,存在供应商锁定风险,且难以吸引具备K8s经验的工程师。为寻求长期发展,团队评估后决定迁移至AWS EKS。

迁移范围界定 团队采取了谨慎的范围界定策略,核心原则是仅更换底层编排系统(从ECS到EKS),而保持服务定义、部署方式和用户接口不变,以最小化二次效应。但同时纳入了三项关键改进:

  1. 开发者体验:用统一的Bazel配置文件和自动化YAML生成取代了繁琐的Terraform部署流程,实现单步部署。
  2. 可靠性:直接构建三集群架构,服务同时在三个独立的EKS集群中运行,将潜在故障影响范围缩减至三分之一。
  3. 成本效率:从一开始就集成Karpenter实现节点自动扩缩,替代了为应对部署峰值而过度预置资源的高成本模式。 复杂但非紧急的工作(如重构日志管道、实现Pod级自动扩缩)被明确排除在迁移范围外,作为后续项目快速跟进。

安全迁移执行策略 为确保迁移平稳,团队遵循了一系列工程实践:

  • 投入负载测试:通过模拟大规模服务,提前发现并调整核心平台组件(如Kyverno)的配置。
  • 采用增量发布:利用加权DNS实现从ECS到EKS的流量细粒度切换和快速回滚。
  • 早期在真实环境验证:在完成完整暂存环境前,便迁移了一个服务,以尽早暴露问题。
  • 抽象复杂性:避免让用户直接接触K8s原始YAML,通过内部工具提供统一、安全的服务定义方式。
  • 紧密合作与人员配备:与服务团队紧密协作,并组建具备深度调试能力的团队应对迁移中的未知挑战。

迁移过程与结果 整个迁移在2023年Q1完成规划,Q2开始测试,Q3进入生产化阶段,Q4至2024年1月逐步完成流量切换。最终成功迁移了包括核心单体应用、多文件编辑复杂服务和实时更新服务在内的多项高优先级服务,且未对用户造成显著影响。迁移后获得了预期收益:节约成本、提升可靠性、改善开发体验。迁移过程中,三集群架构在一次操作员误操作导致CoreDNS中断的事件中,有效限制了故障爆炸半径。

迁移后优化与未来规划 迁移后,团队根据反馈迅速优化了访问工具,使其能自动推断集群和用户角色,提升了易用性。当前及未来的工作包括:

  • 继续迁移剩余服务。
  • 简化日志管道,引入Vector。
  • 通过Keda支持Pod级水平自动扩缩。
  • 将最昂贵的服务迁移至Graviton处理器以节约成本。
  • 探索服务网格以改善网络可靠性和可观测性。
  • 利用AWS Controllers for Kubernetes(ACKs)进一步统一资源管理。
  • 统一开发环境与生产环境的运行方式。
18. National Park Service Will Cite AWD Drivers for Driving on 4WD-Only Trails (jalopnik.com)

国家公园管理局将对驶入四驱专用小径的全驱车辆驾驶员进行处罚

核心事件: 一名斯巴鲁Crosstrek车主在科罗拉多河观景路(Canyonlands国家公园内的四驱车辆专用道路)行驶后,收到了国家公园管理局的警告信。信中指出其车辆是全时四驱(AWD)而非四轮驱动(4WD),并警告未来违规可能导致高达5000美元的罚款、最长六个月的监禁、抵押品没收及其他处罚

技术区别:

  • 四驱系统(4WD) 通常配备一个或多个锁定差速器,能强制为每个车轮均匀分配动力,大幅提升越野牵引力,适合低速、低附着力的困难地形。
  • 全驱系统(AWD) 更适合提升在湿滑路面或轻度越野的稳定性,但多数缺乏真正的锁定差速器(部分仅有基于制动的限滑功能)。在极端越野环境中,无牵引力的车轮可能空转,导致车辆受困,而配备锁定差速器的4WD车辆则能轻松脱困。

重要性: 尽管部分AWD车辆可能成功驶过某些专用道路,但国家公园设立车辆限制是出于安全考虑,并具备执法权。越野能力不仅取决于驱动形式,还涉及经验与技能,但硬件差异是根本因素。

品牌参考:

  • 仅生产AWD(无4WD)的品牌:斯巴鲁、特斯拉、本田、现代、起亚。
  • 同时生产AWD与4WD车辆的品牌:丰田、福特、雪佛兰、吉普等。

建议: 计划前往国家公园的游客应提前确认车辆驱动类型,避免使用AWD车辆驶入标注“仅限4WD”的道路,以免受罚并确保安全。

19. Security and privacy risks of public JavaScript CDNs (httptoolkit.com)

公共JavaScript CDN的安全与隐私风险

公共CDN(如cdnjs、Google Hosted Libraries)曾被视为最佳实践,因其能通过共享缓存提升加载速度、优化性能并降低成本。然而,现代网络环境下,其优势几乎消失,反而带来严重安全、隐私和稳定性问题。

优势已失效

  • 共享缓存失效:现代浏览器(Chrome 2020年、Firefox 2021年、Safari 2013年起)默认启用缓存分区,跨域不再共享缓存,CDN的核心性能优势不复存在。
  • HTTP/2的普及:支持单连接多路复用,消除了多域名并行下载的收益;头部压缩降低了大Cookie的传输开销。
  • 性能瓶颈:公共CDN通常不捆绑资源,导致压缩效率低且无法进行树摇优化,影响加载性能。

主要风险

安全威胁

  • CDNs是高价值攻击目标,漏洞可能允许攻击者注入恶意代码,影响大量网站(如cdnjs曾潜在影响12.7%的网站)。
  • 历史上已有攻击者通过第三方脚本注入挖矿代码,大范围影响公共网站。

隐私泄露

  • 加载第三方资源时,浏览器会通过Referer头泄露用户访问的站点信息,可能被用于用户追踪或行为分析,尤其对于Google等具有追踪利益的CDN提供商。

可靠性问题

  • 公共CDN无服务级别协议(SLA)保障,故障时无法快速恢复。
  • 作为单点故障,其不可用会导致网站瘫痪;长期依赖可能面临服务终止风险。

性能限制

  • 未捆绑资源导致压缩效率低;无法进行树摇优化,传输不必要的代码。

替代方案

  1. 自托管依赖项:将库文件存放在自己的服务器上,确保完全控制。
  2. 使用缓存反向代理:在应用前部署缓存服务(如Cloudflare、Fastly),提供CDN性能优势的同时保持可控性。
    • 优势:易迁移、支持故障转移、成本可控(如案例中每周处理32.4百万请求仅需0.03美元/天)。
  3. 增强前端弹性:通过异步加载、服务端渲染等方式,确保资源加载失败时网站仍能正常运行。

子资源完整性(SRI)的局限

SRI可通过哈希验证防止代码篡改,但:

  • 验证失败会导致资源加载中断;
  • 需频繁更新哈希值;
  • 无法解决隐私和可靠性问题。

未来展望

IPFS(星际文件系统)可能成为更优解决方案:

  • 内容寻址、全球分布式存储;
  • 无单点故障风险;
  • 协议级内容完整性保障。

结论

尽管公共CDN在原型设计等场景仍有用,但生产环境应尽可能避免使用。自托管依赖结合缓存反向代理,能以更低成本实现更安全、可控且高性能的网络应用。

21. Show HN: Nous – Open-Source Agent Framework with Autonomous, SWE Agents, WebUI (github.com)

TypedAI:TypeScript优先的开源AI代理框架

核心定位

TypedAI是一个功能齐全的TypeScript优先AI平台,专为开发者设计,用于构建和运行自主AI代理、基于LLM的工作流及聊天机器人。

核心功能

  • 高级自主代理:具备软件开发、代码审查等专业代理能力
  • 广泛的LLM支持:兼容OpenAI、Anthropic、Gemini、Groq等10+主流服务
  • 多代理推理:基于论文实现的多代理协作与扩展推理
  • 工具集成:支持文件系统、Jira、Slack、Git等各类工具调用
  • 界面与部署:提供CLI和Web UI,支持本地或云部署(含多用户/SSO)

自主代理特性

  • 采用谷歌Self-Discover等论文的推理规划思路
  • 支持记忆管理、函数调用历史和迭代规划
  • 代码沙盒执行与自动生成LLM函数模式
  • 人类在环控制:预算管理、错误处理与主动询问

软件工程代理能力

  1. 代码编辑代理:自动检测项目配置、编译测试、文件选择、代码实现与修复循环
  2. 软件工程师代理:从工单到PR的全流程自动化(仓库定位、分支创建、代码编辑、合并请求)
  3. 代码审查代理:可配置审查指南,在GitLab/GitHub行级评论并提供修改建议

部署选项

  • 本地仓库运行或Docker容器化部署
  • CLI命令行工具与Web图形界面
  • 支持Firestore/Cloud Run的弹性伸缩部署
  • 企业级多用户SSO(Google Cloud IAP)

与LangChain对比优势

  • 不依赖LangChain,使用TypeScript实现同等功能
  • 提供强类型安全,支持重构与断点调试
  • 示例代码更简洁:使用runAgentWorkflow函数实现链式LLM调用
  • 支持通过装饰器自动生成LLM函数模式,避免重复定义

技术架构亮点

  • OpenTelemetry可观测性集成
  • 通过Python脚本/包调用Python AI生态
  • 任务文件选择代理实现代码库感知
  • 分层任务分解与编译错误在线分析能力

该项目开放贡献,欢迎通过Issue、PR或讨论参与开发。

23. Is running a more efficient way to travel than walking? (www.joehxblog.com)

总结:跑步与步行的移动效率比较

文章基于代谢当量(MET)和运动速度,分析了跑步和步行在单位距离上的能量消耗,以判断哪种移动方式更高效。核心结论是:慢速步行是最高效的移动方式;若选择跑步,每英里7分钟左右的速度效率最高。

核心分析方法

  • MET值:用于量化活动能量消耗,单位是“千卡/公斤/小时”。
  • 效率计算:将MET值除以速度(转换为公里/小时),得到“千卡/公斤/公里”,即每移动一公里每公斤体重消耗的能量。

关键数据与发现

  1. 步行效率:速度越快,每公里消耗的能量越高。

    • 最高效:慢速步行(2.5英里/小时,约4公里/小时),消耗约0.75千卡/公斤/公里。
    • 最不高效:快步走(5英里/小时,约8公里/小时),消耗约1.06千卡/公斤/公里。
  2. 跑步效率:效率随速度变化呈非线性变化。

    • 效率最高点:速度约9英里/小时(14.5公里/小时,即每英里6.6分钟),消耗约0.90千卡/公斤/公里。
    • 速度低于或高于此点,效率均下降(如14英里/小时时消耗回升至1.02千卡/公斤/公里)。

结论

  • 总体而言,步行比跑步更高效,尤其是慢速步行时单位距离能耗最低。
  • 跑步的最佳效率速度约为每英里7分钟(对应文中14.5公里/小时左右),但即使在此速度下,其能耗仍高于慢速步行。
  • 文章指出,个体因素(如训练水平)可能影响效率,但上述结论适用于一般情况。
24. Confusion Attacks: Exploiting Hidden Semantic Ambiguity in Apache HTTP Server (blog.orange.tw)
25. Molecule restores cognition, memory in Alzheimer's disease model mice (www.uclahealth.org)

研究概述

UCLA Health的研究人员发现并合成了一种名为DDL-920的化合物,在阿尔茨海默病模型小鼠中成功恢复了其认知功能和记忆。该分子通过增强大脑的gamma振荡(一种与认知和工作记忆相关的高频电信号节律)来“重启”大脑记忆回路,其作用机制与现有药物(如lecanemab)不同,后者主要通过清除脑内有害斑块来减缓认知衰退,但无法直接恢复已受损的记忆功能。

关键机制

  • 靶向目标:DDL-920作用于快速放电的parvalbumin中间神经元,这些神经元对生成gamma振荡至关重要。
  • 作用方式:该化合物通过拮抗神经元上响应GABA的受体(通常起抑制作用),使神经元能够维持更强的gamma振荡,从而促进记忆回路的功能恢复。

实验设计与结果

  • 动物模型:使用基因修饰表现出阿尔茨海默病症状的小鼠,与健康小鼠进行对照。
  • 测试方法:采用Barnes迷宫(一种圆形平台,依赖视觉线索测量学习和记忆能力)评估小鼠记住逃生洞位置的能力。
  • 治疗方案:阿尔茨海默病模型小鼠每日口服DDL-920两次,持续两周。
  • 结果:治疗后,阿尔茨海默病模型小鼠在迷宫中的记忆表现恢复到与健康小鼠相近的水平,且未观察到行为异常或明显副作用。

与其他治疗的区别

  • 现有药物(如aducanumab):通过清除脑内β-淀粉样蛋白斑块来减缓认知下降,但无法修复已受损的神经回路和认知功能。
  • DDL-920:不依赖斑块清除,而是通过调节神经活动节律直接增强gamma振荡,从而潜在地恢复记忆和认知。

未来展望

  • 研究团队强调,虽然在小鼠中效果显著,但需进一步研究以确定其在人类中的安全性和有效性
  • 若证实有效,该分子机制可能扩展应用于其他与gamma振荡减弱相关的疾病,如抑郁症、精神分裂症和自闭症谱系障碍

研究来源

  • 文章发表于《美国国家科学院院刊》(PNAS),标题为《A therapeutic small molecule enhances γ-oscillations and improves cognition/memory in Alzheimer’s disease model mice》。
27. Show HN: I built Mailhub – A scalable API for sending emails with ease not tears (www.mailhub.sh)