2024-10-23

40 篇热帖

2. USGS uses machine learning to show large lithium potential in Arkansas (www.usgs.gov)

该研究由美国地质调查局(USGS)与阿肯色州能源与环境部地质学家办公室合作开展,采用一种新的机器学习方法,首次量化了阿肯色州境内斯迈科弗地层盐水中的锂资源量。该地层是侏罗纪时期的古代海洋遗迹,形成了一套广泛、多孔且渗透性良好的石灰岩地质单元,横跨阿肯色、路易斯安那、德克萨斯等州,此前以石油和溴矿藏闻名。从石油和天然气作业中产生的盐水副产品中提取锂,可将原本视为废料的资源转化为宝贵商品。

USGS局长David Applegate指出,锂是能源转型的关键矿产,提高美国本土产量以替代进口,对就业、制造业和供应链韧性具有重要影响。该研究首次估算了阿肯色州西南部斯迈科弗地层锂的总量。研究主要作者、水文学家Katherine Knierim强调,估算结果表明该地区溶解的锂储量足以替代并超过当前美国锂进口量,但需注意这只是原位资源评估,尚未基于新型提取技术计算可回收量。

全球对锂(电池生产的关键矿物)的需求近年来大幅增长,随着交通电动化推进,这一趋势将持续。美国超过25%的锂依赖进口。USGS估计,阿肯色州南部石油和盐水废料流中携带至地表的锂已足够覆盖美国当前年消费量。斯迈科弗盐水中锂储量的保守估计为500万吨,相当于国际能源署对2030年全球电动汽车锂需求预测值的九倍以上。

USGS利用机器学习(一种人工智能)模型进行了预测。研究团队将阿肯色州样本(由USGS盐水研究实验室分析)与历史生产井水样数据库进行比对,结合地质数据,生成了可预测整个区域锂浓度分布的地图,即便在缺乏样本的地区也能进行估算。

Knierim博士表示,此次重要研究得益于USGS与阿肯色州地质学家办公室的紧密合作。USGS自1879年以来一直是美国地质、能源和矿产资源的权威科学信息来源,并根据《2020年能源法》负责监测美国的锂生产、需求和进口情况,以维护关键矿物清单。

该研究已发表于《科学进展》期刊。

3. The Forest Service Is Losing 2,400 Jobs–Including Most of Its Trail Workers (www.backpacker.com)

美国林务局宣布暂停2025年所有季节性招聘,将削减约2400个工作岗位,其中绝大多数为野外工作岗位。这是该机构近年来最大规模的单年裁员。该机构管理着约1.93亿英亩土地,其季节性员工负责关键的实地工作,如步道维护、生物监测、娱乐设施管理及紧急消防支援等。

此次裁员将严重影响步道维护工作,加剧该机构已存在十多年的维护积压问题。美国步道协会等合作伙伴警告,失去大部分实地步道工作人员将导致维护积压激增。例如,丹妮卡·穆尼-琼斯所带领的步道团队将从5人减至2人。她表示,许多员工长期以季节性岗位为职业,此次裁员对他们的职业生涯和社区归属感造成打击。

预算短缺是裁员的主要原因。尽管近年来资金有所增加,但2025年可能面临近10亿美元的预算缺口。2021年以来,林务局因提高最低工资、将部分季节性岗位转为永久职位以及大幅提高消防员奖金而增加了支出,但部分资金来源已耗尽。国会尚未最终确定预算,但众议院提案中的资金额度低于机构需求。

裁员时机尤其不利。2025年预计将面临繁重的步道修复工作,例如飓风海伦过后,阿巴拉契亚步道南段因树木倒塌、山体滑坡和桥梁冲毁而关闭,仅田纳西州就有超过2000棵树需要清理。这些修复工作高度依赖林务局工作人员。

林务局表示,正与合作伙伴探索创新方案以填补缺口,并希望未来获得更多资金后能增加招聘机会。但目前,这一决定已使员工和合作伙伴对机构的信任受到冲击,并迫使许多野外工作人员重新规划职业路径。

4. The global surveillance free-for-all in mobile ad data (krebsonsecurity.com)

移动广告数据中的全球监控乱象

核心问题

近期一起诉讼案件揭示,通过商业数据服务,普通人现在也能获得以往仅限于国家机构的数字追踪能力。这些服务大量收集移动应用和网站产生的“数字废气”,导致全球监控出现“自由放任”的局面。

关键案例:Atlas公司与Babel Street

  • Atlas Data Privacy Corp. 代表超过2万名新泽西州执法人员,起诉了151家数据经纪商,指控其违反《丹尼尔法》(一项保护执法官员隐私的新泽西州法律)。
  • Babel Street 的核心产品 LocateX 允许用户通过在地图上划定区域,查看经过该区域的移动设备历史记录,并可通过 移动广告ID 追踪特定用户。
  • Atlas的调查人员发现,Babel Street的销售暗示服务“仅限政府或政府承包商”,但实际上验证宽松,自称未来可能接政府项目即可获得试用。
  • 试用期间,调查人员成功追踪了多位执法人员的日常行踪,并能通过“夜间模式”确定其家庭住址。

监控能力的广泛影响

  1. 高风险目标追踪:能轻易获取清真寺、犹太教堂、法院停车场甚至堕胎诊所访客的移动设备数据。
  2. 个人安全威胁:新泽西州警察Maloney夫妇因执法事件遭网络曝光和死亡威胁,调查人员通过其妻子手机上仅有的梅西百货应用位置数据,就能重建其完整活动轨迹。
  3. 堕胎相关监控:反堕胎团体已使用位置数据定向投放广告。Atlas调查人员演示了如何通过地理围栏追踪跨越州界寻求堕胎的个人。
  4. 执法机构滥用:多个州警察部门正采购类似监控工具(如Tangles、Fog Reveal),有时无需搜查令。

数据来源与技术原理

  • 数据主要来源于移动广告生态系统:应用收集用户位置与广告ID,通过“实时竞价”网络共享,形成可供买卖的“竞价流”数据。
  • 移动广告ID 是设备唯一标识符,但已被广泛“富化”,关联姓名、地址、社交媒体资料等个人信息。
  • 数据可来自AccuWeather、Grindr等应用,或直接来自网站广告请求。

平台差异与行业回应

  • 苹果 于2021年推出“应用跟踪透明度”,要求应用明确征得同意才能追踪,大幅减少了可追踪的iPhone比例。
  • 谷歌 的安卓系统仍默认生成可追踪的广告ID,且谷歌运营全球最大的广告交易所。谷歌声称其广告ID不包含位置数据,且禁止用于非广告目的。
  • Babel Street数据主要来源于商业电话追踪公司 Venntel,该公司近期已遭美国联邦贸易委员会调查。

法律与政策层面

  • 数据经纪行业正挑战《丹尼尔法》的合宪性,认为其限制了言论自由。
  • 多个州正推进类似立法保护司法人员及政府官员隐私。
  • 国会议员批评国会未能监管数据经纪商,且谷歌未效仿苹果限制追踪能力。
  • 隐私专家指出,此类数据可被用于推断健康状况、宗教信仰等敏感信息,带来严重安全隐患。

用户保护建议

  • 安卓用户:可永久删除广告ID(设置 > 隐私 > 广告 > 删除广告ID),并严格管理应用的位置权限。
  • 苹果用户:关闭“允许应用请求跟踪”,并在“隐私与安全性”中关闭“苹果广告”下的“个性化广告”。
  • 即使个人设备已关闭追踪,仍可能因亲友设备被追踪而暴露行踪,因此建议帮助亲友设置隐私保护。
6. Show HN: Open-source Counter-Strike-like game (github.com)

开源反恐精英风格游戏

这是一款竞技性多人第一人称射击游戏,主题为两支足球球迷队伍对抗,目标是在比赛中赢得比对手更多的回合。

游戏玩法与规则

游戏分为进攻方防守方两个阵营。

  • 防守方的目标是保护己方的球迷圣所,防止其被进攻方使用涂鸦炸弹球亵渎。
  • 进攻方的目标是成功引爆炸弹或消灭所有防守队员。

回合胜负判定

  • 防守方获胜条件
    1. 在炸弹被安放(触地)前消灭所有进攻方玩家。
    2. 在炸弹爆炸前成功拆除它(引发涂鸦烟花)。
    3. 回合时间结束时,场上仍有至少一名防守队员存活且炸弹未被安放。
  • 进攻方获胜条件
    1. 在回合时间结束前消灭所有防守方玩家。
    2. 在回合时间结束前成功安放炸弹(触地),且阻止防守方将其拆除。

炸弹机制:如果进攻方在回合时间结束前安放了涂鸦炸弹,回合倒计时将重置为40秒。防守方将有30秒(若使用拆弹包则为35秒)的时间来拆除炸弹。

安装与构建

获取游戏

可以从最新版本中下载适合您操作系统平台的可执行文件。也可以通过以下方式从项目源代码本地构建:

客户端构建

  1. 进入 electron/ 目录。
  2. 运行 npm install 安装依赖。
  3. 运行 npm run dev 启动开发环境。

服务器端构建

  1. 运行 composer install -a --no-dev 安装依赖。
  2. 运行 php cli/server.php 2 启动服务器,它将等待2名玩家连接。

参与贡献

项目寻求社区帮助。如果您熟悉 HTML、CSS、JavaScript、PHP 语言或 3D建模、贴图、动画 技能,可以通过提交拉取请求(Pull Request)的方式加入项目,帮助我们更快地改进这款游戏。

7. What happens when you make a move in lichess.org? (www.davidreis.me)

Lichess.org 下棋操作的技术实现概述

当用户在 Lichess.org 下棋时,其背后的技术流程主要基于 WebSocket 实时通信分布式后端架构。以下是关键步骤和组件解析:

1. 客户端连接与通信

  • WebSocket 连接:客户端通过加密的 WebSocket(wss://)与服务器建立持久连接,实现低延迟的双向通信。
  • URL 参数
    • 游戏 ID(如 H5uHz0egyvIA):标识特定对局。
    • 版本号v):客户端已知的游戏版本,用于状态同步。
    • 会话标识sri):随机生成的字符串,用于会话跟踪。

2. 下棋时的数据流

  • 玩家走棋
    1. 客户端发送 move 消息,包含 UCI 格式的走法(如 d2d4)和确认计数器。
    2. 服务器回复 ack 消息确认收到走法。
    3. 服务器随后发送更新后的游戏状态(含 FEN 棋盘、SAN 格式走法、剩余时间等)。
  • 对手走棋
    • 客户端收到对手的 move 消息,包含所有合法走法(dests 参数),用于前端高亮显示可移动位置。

3. 后端架构

Lichess 的实时对局系统由两个主要 Scala 服务支撑:

  • lila:核心服务,处理游戏逻辑、状态管理和用户交互。
  • lila-ws:专用 WebSocket 网关,负责客户端连接,仅转发消息而不处理棋局逻辑。

两者通过 Redis Pub/Sub 通信:

  • 走法事件发布到 Redis 频道,由 lila 订阅处理。
  • 采用 至多一次投递 模式,可能丢消息但内存开销低。

4. 数据存储与同步

  • MongoDB:游戏状态最终持久化于此。为优化数据库负载,lila 不会立即保存每一步,而是批量处理(如游戏结束时批量写入)。
  • 状态同步
    • 客户端连接时提供已知版本号(v),lila-ws 使用 ConcurrentHashMap 缓存近期事件,确保玩家断线重连时能获取缺失的更新。

总结流程

  1. 客户端通过 WebSocket 连接至 lila-ws。
  2. 走棋动作触发消息交换:客户端发送走法 → 服务器确认 → 服务器推送新状态。
  3. 走法通过 Redis Pub/Sub 异步传递至核心服务 lila 处理。
  4. 游戏状态定期持久化到 MongoDB,并通过 WebSocket 实时同步给客户端。

该架构实现了高效的实时对弈体验,同时兼顾了性能与可扩展性。

8. The Tragedy of Google Books (2017) (www.theatlantic.com)

《谷歌图书的悲剧》(2017)内容摘要

本文回顾了谷歌图书(Google Books)项目的兴衰,讲述了其从宏伟愿景到最终失败的整个过程。

项目愿景与起源

谷歌最初的构想是扫描全世界每一本书,打造一个超越美国国会图书馆等所有顶级图书馆的“通用数字图书馆”。用户可在公共图书馆的终端机上免费访问数千万本已绝版的图书,实现全文搜索、高亮、注释和分享,使图书像网页一样易于访问。该项目起源于拉里·佩奇2002年的想法,他当时估算扫描一亿本书所需时间,并与密歇根大学等图书馆达成协议:谷歌出资扫描,以换取数字副本。至2011年,谷歌已扫描约2500万本书,耗资约4亿美元,涉及复杂的物流和技术工程(如自动校正书页弯曲的算法)。

法律冲突与和解尝试

谷歌在未获明确授权的情况下大规模扫描图书,被作者和出版商起诉侵犯版权。谷歌辩称,仅显示搜索片段(snippet)属于“合理使用”。双方意识到,问题的关键在于绝版书——其版权归属模糊,商业价值低但利用潜力大。作为集体诉讼,双方在2008年达成一项创新性和解协议:

  1. 核心内容:谷歌可展示和销售绝版书,但需将63%的收入交给一个新成立的“图书权利注册机构”(Book Rights Registry),由该机构向前来认领的版权方分配收入。
  2. 附加条款:谷歌需一次性支付1.25亿美元,并在全国公共图书馆设置终端,提供免费访问服务。
  3. 意义:此方案旨在一次性解决绝版书的权利清理问题,为作者和出版商创造新收入流,同时让海量书籍重见天日。

和解失败与各方反对

该和解协议在2011年被法官驳回,原因包括:

  1. 垄断担忧:竞争对手(如微软、亚马逊)和图书馆界(如哈佛大学图书馆馆长罗伯特·达恩顿)强烈反对,认为该协议将使谷歌垄断绝版书的数字市场,可能像学术期刊一样抬高价格,形成“与魔鬼的交易”。
  2. 反垄断调查:美国司法部反垄断部门介入,认为该协议实质上授予谷歌对绝版书的专有许可,竞争对手无法通过类似诉讼获得同等权利,构成反竞争。
  3. 法律机制争议:法官和司法部认为,该和解试图用集体诉讼机制建立一个前瞻性、超越原始诉讼范围(是否允许显示片段)的复杂商业安排,是“走得太远”。
  4. 集体成员反对:众多作者和学者(包括项目最初的支持者)出于各种原因反对,如认为书籍应免费而非被销售,或认为此类改革应由国会立法而非通过诉讼和解实现。

悲剧性结局与现状

和解失败后:

  1. 项目萎缩:谷歌虽然赢得了后续关于“合理使用”的诉讼(法院最终裁定显示片段合法),但几乎停止了大规模扫描。那2500万本书的扫描副本静静地存储在谷歌服务器上,仅有少数工程师能访问。
  2. 愿景落空:一个可能成为人类历史上最伟大公共图书馆的计划化为泡影。绝版书依旧尘封在物理图书馆中,数字访问问题毫无进展。
  3. 国会立法无望:反对者寄希望于国会立法解决绝版书和孤儿作品问题,但近十年来毫无实质进展。本文指出,通过谷歌诉讼和私营资本推动本是近乎唯一可行的改革路径,如今已丧失动力。
  4. 核心困境:美国版权法不断延长保护期(现行为作者死后70年),将绝大多数20世纪作品锁在版权壁垒之后,与最初“促进学习进步”的立法初衷背道而驰。

结论

谷歌图书项目的失败被作者视为一场“悲剧”。它本可通过技术创新和一项开创性的法律和解,解决孤儿作品问题并实现知识的民主化访问。然而,由于对垄断的恐惧、法律机制的局限性以及理想主义与现实商业逻辑的冲突,这一愿景最终未能实现,只留下了庞大的、无法访问的数字书库和未完成的承诺。

9. Probably pay attention to tokenizers (cybernetist.com)

这篇文章探讨了在构建AI应用,特别是检索增强生成(RAG)系统时,分词器(tokenizer)常被忽视但至关重要的作用。

作者通过帮助朋友解决一个电商数据RAG应用效果不佳的问题,引入主题。他指出许多开发者习惯于传统确定性编程,而未能适应LLM应用所依赖的统计模型思维,常陷入“垃圾进,垃圾出”的困境。

分词的核心概念:

  • 分词是将文本分解为更小单元(tokens)并映射到整数ID的过程。
  • 分词器有自己的词汇表,词汇表未涵盖的文本部分会导致问题。
  • 主要分词类型包括基于单词、字符和子词的分词器。主流LLM大多使用子词分词器,例如:
    • BPE:被OpenAI(tiktoken库)使用。
    • Wordpiece:被Cohere和某些模型(如all-MiniLM-L6-v2)使用。

分词器选择的实际影响: 文章通过代码示例对比了all-MiniLM-L6-v2(Wordpiece)和OpenAI的tiktoken(BPE)在处理以下情况时的表现:

  1. 表情符号(Emoji)all-MiniLM-L6-v2无法识别表情符号,将其标记为[UNK](未知),导致负面情绪信息丢失;而tiktoken能部分处理。
  2. 领域特定术语:对于如“Gucci Savoy Leathertrimmed…”的长商品名,两种分词器都会将其拆分成碎片,破坏了完整的语义。
  3. 拼写错误:对于用户输入的错别字(如“pckage”),两种分词器的处理都可能产生无意义或误导性的子词,影响后续理解。

分词与嵌入的关联: 分词后的token IDs用于从嵌入矩阵中获取向量表示(嵌入),这些嵌入才是输入LLM进行计算和生成的核心数据。因此,分词的质量直接决定了嵌入的质量

  • 作者用嵌入距离矩阵演示,被错误分词的句子(如包含[UNK]的表情符号句子)在语义上本应不同,但其嵌入却可能非常接近,造成语义混淆。
  • 拼写错误和输入文本中的多余空格也会扭曲嵌入,进而影响RAG的检索准确性。

其他挑战与建议:

  • 相对时间与日期格式:依赖“昨天”这类相对时间或格式不统一的日期,会给RAG带来巨大挑战。作者建议标准化日期格式,并让应用主动询问具体日期。
  • 货币符号等特殊数据:不同的表示方式(如£40 vs 40£)也可能引发上下文问题。

结论: 分词是RAG流水线中一个基础但关键的步骤。分词器处理不当会导致生成的嵌入无法准确捕捉文本语义,从而严重影响检索和生成质量。作者强调,在理想化地希望淘汰分词器之前,开发者必须重视它,并采取以下措施:

  • 清理和预处理输入文本(如去除多余空格)。
  • 标准化数据格式(如日期、货币)。
  • 理解并验证所用LLM的分词器特性。
  • 持续进行评估和可视化分析,以确保系统效果。
10. Never Missing the Train Again (lilymara.xyz)

本文介绍作者如何利用旧Kindle电子墨水屏,构建一个实时显示附近公交站点到站时间的家庭显示器。核心目的是创建一个比通用导航应用更简洁、专注于到站时间的实用工具。

项目灵感与初始方案 作者居住于旧金山,依赖公共交通。受Matt Healy用Kindle显示家居信息的启发,以及Ben Borgers用Nook制作电子相框的案例,决定利用闲置的Kindle实现公交信息显示。最初方案是破解Kindle,通过USBNet获得SSH访问权限,并设置定时任务来更新显示。

第一阶段:解决Kindle图片显示问题

  1. 图片格式挑战:直接传输的RGB PNG图片在Kindle上显示会拉伸变形。经过调试发现,Kindle的eips命令仅支持8位灰度PNG图片,且图片尺寸需与屏幕分辨率(1024x758)完全匹配。
  2. 自动化截图方案:采用Node.js服务器,使用Puppeteer自动截取BART(旧金山湾区快速公交)网站的实时到站页面,转换为合适的8位PNG格式,通过HTTP提供给Kindle定时抓取。该方案初期运行稳定。

第二阶段:扩展至MUNI公交及遇到瓶颈 为增加覆盖的公交线路(如MUNI轻轨、巴士),系统尝试同时打开多个浏览器标签页来抓取不同站点的数据。但这带来了两个严重问题:

  1. 资源消耗过高:在树莓派上运行多个Chrome标签页导致内存不足,服务不稳定。
  2. API请求受限:过于频繁的请求触发了MUNI网站的速率限制(HTTP 429错误)。 系统的可靠性显著下降,促使作者决定进行彻底重构。

第三阶段:使用Rust重构系统 新架构摒弃了浏览器引擎,采用以下关键技术栈:

  1. 数据获取:通过511.org提供的“Stop Monitoring” API直接获取所有相关公交线路的结构化JSON数据,避免了网页解析。
  2. 图像生成:使用Rust的Skia图形库(Chrome的底层渲染引擎)直接绘制8位灰度PNG图像,取代了Puppeteer截图,极大降低了资源消耗。
  3. HTTP服务:使用Axum框架构建一个轻量级HTTP服务器,动态生成并返回最新的公交信息PNG图片。 Kindle端的脚本只需定期从该服务器下载图片即可。

关键技术实现细节

  • 数据处理:解析511.org的API响应时,需移除其开头的UTF-8 BOM标记;仅提取线路、方向、目的地和预计到达时间等必要字段。
  • 图像渲染:创建与Kindle屏幕尺寸匹配的位图,设置旋转矩阵以实现横屏显示。使用Skia的API绘制文本、线条和圆角矩形,优化了排版布局(如为线路编号添加气泡背景、右对齐到站时间、添加列标题等)。
  • 服务部署:服务器会直接调用API获取最新数据,生成图像后返回给客户端。

总结与成果 最终,作者成功打造了一个可靠、低资源消耗的系统。旧Kindle壁挂后,能持续显示附近多个公交站点实时的未来几班到站时间(以分钟计),实现了“一目了然,不再错过公交车”的目标。项目完整代码已在GitHub开源。

11. Async Rust in Three Parts (jacko.io)

本文是关于 Rust 异步编程的系列介绍的第一部分,旨在通过与多线程对比,清晰地展示 async/await 的工作原理。

核心概念与对比 异步编程(async/await)是一种允许程序同时执行多项任务的特性。它是多线程的一种替代方案,尤其适用于需要处理大量并发连接的网站和网络服务(例如 C10K 问题),因为它比运行大量线程更高效。文章将通过“脱糖”async代码、逐步构建异步“运行时”的方式,揭示其内部机制。

线程示例及其局限 文章首先演示了使用线程并发执行耗时任务(如 foo 函数)。通过为每个任务生成线程,可以实现并行。然而,线程存在明显限制:

  • 资源消耗:每个线程都需要分配栈内存(默认为8MB),导致可创建的线程数量有上限(例如,在作者设备上约19000个)。
  • 性能开销:大量线程间的切换会带来性能开销。
  • 扩展性差:对于需要成千上万并发任务(特别是那些大部分时间在等待I/O的任务)的场景,线程(或线程池)不是理想的解决方案。

Async/await 示例及其优势 接着,文章使用 tokio 运行时展示了相同的 foo 任务如何用 async/await 实现。

  • 基本语法:使用 async fn 定义异步函数,调用时使用 .await
  • 并发执行:通过将多个 future 收集到 Vec 中,并使用 future::join_all 组合,可以实现并发执行,而非顺序等待。
  • 关键区别:与线程不同,future 在被 .await 之前不会执行任何工作。join_all 本身是瞬间完成的,只有当最终的 future 被 .await 时,所有任务才开始实际运行。
  • 极高可扩展性:async 方案可以轻松处理数十万甚至百万个并发任务,这是其受欢迎的主要原因。

重要误区(Common Mistakes) 文章最后指出了两个初学者容易犯的错误,这些误区有助于理解 async 的工作方式:

  1. 在异步函数中使用阻塞操作:例如使用 thread::sleep 而非 tokio::time::sleep。这会导致整个执行器(executor)被阻塞,所有其他任务都无法推进,退化成顺序执行。因为 thread::sleep 会阻塞整个操作系统线程,而该线程可能正是异步运行时用于执行多个任务的线程。
  2. 错误地顺序等待(awaiting)future:在循环中逐个 .await future,会导致它们按顺序执行,而非并发。这是因为 future 本身不包含后台执行逻辑,其进度完全依赖于 .await 的轮询。而 join_all 等组合器提供了一种同时轮询多个 future 的机制。

结论与后续 本文通过实例对比,初步展示了 async/await 在处理大量并发任务时的效率优势,并通过常见误区揭示了 future 的惰性执行特性。这为后续深入探索 future、任务(task)和 I/O 的实现细节(将分别在本系列的第二、三部分中介绍)奠定了基础。

12. I got dysentery so you don’t have to (eukaryotewritesblog.com)

本文记述了作者参与马里兰大学一项人类挑战试验的经历,其核心目的是测试针对志贺氏菌(一种导致细菌性痢疾的病原体)的基于噬菌体的实验性疗法

试验背景与动机

  • 疾病严重性:志贺菌病(由志贺氏菌引起)是通过粪口途径传播的急性肠道传染病,每年导致约7万人死亡,其中大部分是贫困地区的儿童。主要死因是腹泻引起的脱水,且细菌耐药性问题日益严峻。
  • 试验价值:由于该病在发达国家不常见,通过常规临床试验招募患者困难。人类挑战试验(主动使健康受试者感染)是测试快速起效、可治愈疾病(如志贺菌病)的替代疗法的高效方法。
  • 噬菌体疗法:试验产品是一种基于噬菌体的疗法。噬菌体是特异性感染并杀死细菌的病毒,具有靶向性强、副作用少、不易引发广泛耐药性(可通过更换噬菌体应对)等优势,被视为应对抗生素耐药危机的有前景的替代或补充方案。作者因对该领域感兴趣及获取报酬而参与。

试验过程与个人体验

  1. 准备与环境:试验在由办公室改造的病房进行,约16名受试者参与。作者领取病号服,生活相对自由,可社交、使用电脑、读书(如《无限的笑话》)。
  2. 感染:受试者先饮用缓冲液,再服用可能含有噬菌体(或安慰剂)的溶液,最后全部饮下包含约1300个志贺氏菌的盐溶液。
  3. 发病与治疗:约48小时后,作者出现严重症状,主要表现为剧烈的寒战和难以忍受的关节疼痛,而非预期的严重胃肠道反应。症状持续数小时后,医生判定其达到临床终点,给予对乙酰氨基酚和抗生素治疗。药物起效迅速,症状迅速缓解。恢复期间需精确补充流失的体液。
  4. 康复与出院:抗生素治疗后,通过反复粪便检测确认细菌清除,作者在入院9天后出院。作者推测自己可能被分到了对照组(未接受噬菌体),因约半数受试者未发病。

志贺菌病与噬菌体疗法的科学背景

  • 志贺菌感染机制:文章详细解释了志贺氏菌如何穿过肠道屏障并入侵细胞,其过程被生动比喻为“突破警方封锁线”。
  • 分类学趣闻:志贺氏菌在基因分类上其实属于大肠杆菌(E. coli),但因临床表现不同,为医学实用性保留了独立名称。
  • 疗法比较与前景:噬菌体疗法与抗生素各有优劣(见原文对比表)。尽管面临稳定性、给药方式和监管审批等挑战,但在抗生素耐药性全球蔓延的背景下,开发噬菌体疗法作为医疗工具的一部分具有重要价值。

总结 作者通过亲身经历,生动描述了人类挑战试验的流程、感染疾病的痛苦以及快速治疗的过程。文章的核心是强调志贺菌病对全球公共卫生的威胁,并介绍噬菌体疗法作为一种有潜力的应对策略的研究现状、科学原理和当前挑战。作者鼓励读者考虑参与临床试验,以支持医学研究。

13. Ask HN: Website with 6^16 subpages and 80k+ daily bots
14. 'Visual clutter' alters information flow in the brain (news.yale.edu)

研究背景与目的

耶鲁大学研究人员在《Neuron》期刊发表的新研究表明,视野中的“视觉杂乱”(visual clutter)及其精确位置会改变大脑中的信息流动方式。该研究旨在阐明感知的神经基础并深入理解视觉皮层。研究聚焦于“视觉拥挤”(visual crowding)现象,即当目标周围存在杂乱物(尤其是处于视野边缘)时,识别目标会变得困难,且干扰程度受杂乱物相对注视点位置的影响。

实验方法

研究团队以视觉系统与人类高度相似的猕猴为对象,训练其注视屏幕中心,同时在感受野内外呈现视觉刺激,并记录其初级视觉皮层(视觉信息处理的主要门户)的神经活动。

核心发现

  1. 视觉杂乱改变信息流动效率:杂乱物的具体位置不会改变初级视觉皮层神经元间信息传递的顺序,但会显著影响信息流动的效率。这类似于“电话树”传递信息:位置不改变传递顺序,但改变信息传递的质量。不同位置的杂乱物对初级视觉皮层特定层的信息驱动程度存在差异。
  2. 揭示视觉皮层的未知特性:除了信息在不同视觉区域(如初级到次级视觉皮层)之间按层级顺序传递外,研究还发现这些大区域内部存在独立的“子单元”(subunits)。这些子单元会进行自身的计算,并仅将部分(而非全部)信息传递给其他子单元。这一发现弥合了视觉研究不同领域间的理论脱节。

未来研究方向

研究人员计划进一步探索视觉杂乱如何影响大脑区域间的信息处理,以及“注意力”如何调节该系统。例如,在驾驶时注视前车但注意力集中在旁车的情境下,研究注意力如何补偿视觉分辨率的不足,从而改善对非注视区域的感知,并揭示注意力对大脑皮层信息流的具体影响机制。

15. Pygfx (docs.pygfx.org)

Pygfx:Python高性能可视化工具

Pygfx旨在为Python世界提供强大且可靠的可视化能力。它基于wgpu构建,相比传统的OpenGL方案,在性能和可靠性方面具有显著优势。其设计注重简洁性与通用性,采用模块化架构,使用户能够轻松组装图形场景,适用于从科学可视化到游戏渲染等多种应用场景。


核心特点

  • 基础技术:基于wgpu,提供高性能与跨平台图形支持。
  • 模块化设计:组件灵活组合,便于构建多样化图形应用。
  • 应用场景广泛:支持科学可视化、视频游戏渲染等领域。

文档与资源结构

文档内容组织如下:

指南(Guide)

  • 入门教程
  • PyGfx基础知识
  • 抗锯齿实现
  • 透明度处理
  • 性能优化

图库(Gallery)

  • 入门示例
  • 功能演示
  • 验证示例
  • 其他示例

参考(Reference)

核心模块包括:

  • pygfx.cameras(相机)
  • pygfx.controllers(控制器)
  • pygfx.geometries(几何体)
  • pygfx.helpers(辅助工具)
  • pygfx.materials(材质)
  • pygfx.objects(对象)
  • pygfx.renderers(渲染器)
  • pygfx.resources(资源)
  • pygfx.utils(实用工具)

高级内容(Advanced)

  • 后期处理效果
  • pygfx.renderers.wgpu渲染器详解
  • 自定义着色器编写
  • 使用Pygfx图库抓取工具

支持与资源

  • 提供专业支持服务。
  • 项目源码托管于GitHub
  • 文档包含索引、模块索引和搜索页面。
16. How JPEG XL compares to other image codecs (cloudinary.com)

JPEG XL 与其他图像编解码器的比较

JPEG XL 是由 JPEG 委员会标准化的下一代图像编解码器,融合了 Google PIK 和 Cloudinary FUIF 的优点。

核心特性与优势

  • 来源与设计理念:继承了 PIK 的高心理视觉建模、细节保留和快速解码能力,以及 FUIF 的响应式和通用性设计,并极度注重对传统格式(特别是 JPEG)的友好过渡
  • 专利与许可:参考实现采用 Apache 2.0 许可,免版税。相比之下,HEIC(基于 HEVC 和 HEIF 容器)存在复杂的专利问题,AVIF(基于 AV1)的专利状况相对较好,但也存在不确定性。
  • 无损转码:能可逆地、无损地将现有 JPEG 文件转码为 JPEG XL,避免了以往格式(如 JPEG 2000、WebP、HEIC、AVIF)转码时必然产生的代际损耗。
  • 关键功能
    • 响应式与渐进式解码:支持根据视口宽度自动适配图像版本,并支持渐进式加载(先显示低质量占位图)。基于视频编解码器的格式(WebP, HEIC, AVIF)通常不支持这两项对 Web 交付至关重要的功能。
    • 卓越的压缩质量:在从视觉近乎无损到数学无损的多种质量下表现优异,尤其擅长保留纹理和细节,避免色带问题。而基于视频编解码器的格式在低比特率下虽能产生“可用”图像,但常出现“塑料感”或“油画感”等不自然的失真。
  • 技术基础:采用新颖的、符合感知模型的 XYB 色彩空间,比传统(源自模拟电视的)YCbCr 精度更高,尤其在处理暗部和特定颜色(蓝、红)时表现更好,能有效减少色带。

通用性与性能

  • 广泛的适用性:支持照片、插画、CG、医学图像、CMYK 印刷图像、超大(千兆像素)图像、带透明通道或深度信息的图像等。作为功能全面的编解码器,完全取代了 JPEG、PNG、GIF、WebP 和 TIFF。
  • 强大的技术规格:支持极大的图像尺寸(约1.15 x 10^15 百万像素)、高色深(整数24位/浮点32位)和多达4100个通道。HEIC 和 AVIF 对大图像需分块处理,可能导致边界不连续。
  • 软件编解码效率高:在通用 CPU 上编码/解码速度快(编码约50 MP/s,解码约132 MP/s),无需专用硬件。而 HEVC 等视频编解码器的软件编解码计算成本高昂。

其他格式的优势与现状

  • HEIC 与 AVIF 的优势
    1. 超低比特率:在比特率极低时仍能产生可接受的图像,适合带宽/存储受限场景。
    2. 优秀的视频压缩:对于动态图像或视频,基于视频编解码器的格式压缩效率远高于 JPEG XL。
    3. 生态与可用性:HEIC 已在苹果生态广泛应用;AVIF 依托开放媒体联盟,在 Chrome/Firefox 等浏览器中发展良好,且已有硬件支持。而 JPEG XL 目前仍处于标准化尾声,尚未在浏览器中得到支持。

标准化进程

JPEG XL 标准由 ISO/IEC 下的 JPEG 委员会制定,分为四个部分。目前第一部分(码流)处于国际标准草案阶段,预计2021年初成为正式标准;其余部分预计2021年底完成。一旦规范冻结(FDIS阶段),即可实际应用,但全面获得软件支持仍需时间。

17. Adding row polymorphism to Damas-Hindley-Milner (bernsteinbear.com)

在Dam as-Hindley-Milner中添加行多态性

本文探讨了如何为Dam as-Hindley-Milner (HM) 类型系统添加行多态性(row polymorphism),以支持灵活的记录(records)类型。以下是核心内容的总结:

1. 背景与问题

  • HM类型系统:是Standard ML及ML语言族的基础类型系统。
  • 记录的动态性:在Scrapscript的运行时,记录可以包含任意数量和名称的字段。模式匹配支持...语法来忽略其他字段。
  • 挑战:需要在类型系统中为记录建模,以支持这种灵活性。

2. 核心概念:行(Rows)

  • 定义:行是字段名称到类型的映射,并包含一个剩余字段rest),可以是类型变量或空行(TyEmptyRow)。
    • 闭合行:{x=int, y=string}(剩余字段为空)。
    • 开放行:{x=int, ...'a}(剩余字段为类型变量'a)。
  • 数据结构
    class TyEmptyRow(MonoType): pass
    class TyRow(MonoType):
        fields: dict[str, MonoType]
        rest: TyVar | TyEmptyRow = TyEmptyRow()
    

3. 类型推断

  • 记录字面量:推断每个字段的类型,构建闭合行(剩余字段为空)。
  • 模式匹配:默认构建闭合行。若模式中包含...(扩展操作符),则创建开放行(使用新的类型变量作为rest)。若...有名称,则将剩余类型绑定到该名称。

4. 行的统一(Unification)

行的统一机制是实现多态性的关键,其过程与其他类型统一一致:

  • 空行:只能与空行统一。
  • 过程
    1. 将两个行扁平化为字段集合和剩余类型。
    2. 比较字段:对同名字段的类型进行统一。
    3. 处理缺失字段:
      • 若一方缺失字段,将缺失字段添加到另一方的剩余类型中,并确保共享相同的剩余类型。
      • 若双方互有缺失字段,则创建新的共享剩余类型变量,并将各自的缺失字段加入其中。
  • 目标:确保两个行最终具有相同的字段集合和相同的剩余类型。

5. 多态性的实现

  • let多态性:当函数被绑定到名称时,其类型中的未绑定类型变量会被泛化(forall)。
  • 行多态性:例如,函数| {x=x, ...} -> x的类型可泛化为forall 'a. {x:..., ...'a} -> ...。每次调用时,'a会被实例化为新的类型变量,从而允许函数处理具有不同剩余字段的记录。

6. 实现简化与结论

  • Scapscript不需要处理重复标签或字段掩码操作,因此实现相对简单。
  • 行多态性通过行的数据结构、类型推断和统一算法得以实现,使类型系统能够支持灵活的记录操作。

参考文献:文章列出了多篇关于可扩展记录、变体和结构子类型的研究论文。

18. Apple may stop producing Vision Pro by the end of 2024 (www.macrumors.com)

根据The Information报道,Apple已突然缩减Vision Pro头显的产量,并可能于2024年底完全停止生产当前版本。生产缩减始于初夏,表明Apple已拥有足够的库存设备,足以满足至明年的需求。

需求疲软是主要原因。报道指出,该设备因内容不足价格高昂而面临需求疲软。据称,供应商已生产了足够组装50万至600万台头显的组件。由于销售预测疲软,部分工厂早在5月份便已暂停生产,仓库中仍积压着数万个未交付的零件。

目前,作为Vision Pro组装商的中国公司立讯精密,其日产量已从峰值减半至约1,000台。Apple已告知立讯精密,可能需要在11月逐步停止生产。但由于生产线尚未拆除,若销量回升,Apple仍可恢复生产。

在研发方面,Apple已暂停第二代Vision Pro的开发至少一年,转而专注于开发一款低成本头显。据悉,Apple已要求供应商为未来这款低价产品在整个生命周期内准备生产400万台,这仅为Vision Pro目标产量的一半,暗示对更廉价设备的销售预期更低。

尽管第二代Vision Pro的研发似乎停滞,但有迹象表明Apple可能会发布一款增量更新版,在物理设计上改动有限(如芯片升级),以便利用供应链中大量的过剩组件。

文章末尾还提及了其他动态:Apple正研究如何更好地支持App Store中的AI代理应用,并计划在WWDC上突出其设备的端侧AI能力。另有报道称,将于9月推出的改进版Siri可能会依赖Google基于Nvidia Blackwell芯片的云服务。

19. Riot Games: Peeking into Valorant's Netcode (2020) (technology.riotgames.com)

《Valorant》网络代码技术解析 (2020) 摘要

本文由Riot Games的《Valorant》技术负责人撰写,详细介绍了该游戏在解决FPS品类常见问题(如窥视者优势命中注册不佳模拟分歧)方面的技术方案与设计哲学。

核心设计目标

游戏开发始终围绕玩家体验与竞争完整性,即比赛结果应仅由玩家的策略与操作决定,网络、硬件或服务器不应造成不公。为此,确立了以下关键目标:

  1. 游戏公平:通过服务器权威模型,限制客户端可信度,防止作弊。
  2. 移动平滑响应:客户端进行本地预测以保证操作低延迟,但需处理与服务器不一致时的校正问题。
  3. 枪战体验有价值:服务器需准确判定命中,并提供清晰的视觉反馈。
  4. 赋予防守方优势(Holder's Advantage):这是战术射击的核心,但与网络延迟带来的窥视者优势直接冲突。
  5. 支持广泛硬件配置:确保不同网络和设备的玩家都能获得良好体验,且一人的设备问题不影响其他玩家。

关键技术挑战与解决方案

1. 缓解窥视者优势

  • 问题:攻击方(窥视者)因网络延迟,能比防守方(持枪者)更早看到对方并开枪。
  • 量化分析:优势大小取决于网络延迟、缓冲时间和帧率。文中通过公式计算,在基准条件下(128 tick服务器、35ms延迟、60FPS),窥视者拥有约141ms的反应时间优势。
  • Riot的解决方案
    • 基础设施:投资建设Riot Direct网络骨干以优化路由;全球部署服务器,目标为70%玩家提供35ms以下延迟。
    • 高刷新率:提供128 tick服务器。
    • 客户端优化:确保在老旧硬件上也能达到60FPS,并为高刷新率显示器提供支持。
    • 最小化缓冲:服务器和客户端均采用极小的移动数据缓冲。
    • 效果:上述优化可将窥视者优势减少约28%(40ms)。更高帧率(如144FPS)可进一步将优势降至约71ms(减少49%)。测试表明,即使20-50ms的优势也能显著影响顶尖对局的胜负。
  • 设计补偿:通过地图设计(攻击方需从单一入口点窥视)、角色模型(肩膀先于头部出现)、移动时射击不准以及命中减速机制,将优势部分回调给防守方。

2. 最小化模拟分歧

  • 问题:客户端预测模拟与服务器权威模拟不一致,会导致角色“瞬移”或“橡皮筋”效果。
  • 解决方案
    • 固定时间步长:无论客户端帧率如何,移动和物理模拟均以固定的128次/秒进行,确保客户端与服务器模拟基准一致。
    • 移动队列与调度:客户端发送的输入被服务器按时间戳排入队列。服务器维持一个小型缓冲区以平滑网络抖动,同时尽可能延迟最小化。
    • 解决分歧:当服务器与客户端模拟结果不符时,服务器将提交其预测结果,并向受影响客户端发送校正。此校正仅对该客户端可见,不影响其他玩家的游戏体验。

3. 在服务器上解决战斗(命中注册)

  • 问题:由于网络延迟,玩家看到的是目标的历史位置,直接射击可能导致“瞄准却未命中”。
  • 解决方案:服务器在收到客户端的射击请求时,会根据客户端报告的射击时刻,回溯游戏世界状态到那个时间点,进行精确的命中判定。这实现了接近“所见即所得”的命中注册。同时,服务器会对回溯距离设限,防止高延迟玩家造成不合理的判定。

4. 处理客户端问题

  • 目标:在不影响其他玩家的前提下,帮助设备或网络较差的玩家改善体验。
  • 方案
    • 性能监控工具:内置工具与指示器,帮助玩家识别网络或性能问题。
    • 客户端缓冲设置:允许玩家在不同网络条件下,在移动平滑度低延迟之间自行权衡。

未来展望

团队将持续投入,通过进一步优化客户端/服务器性能、增加全球服务器数量来践行“35ms延迟覆盖大部分玩家”的承诺,并改进命中视觉反馈。致力于长期提升《Valorant》的竞技完整性。

21. How DRAM changed the world (www.micron.com)

DRAM如何改变世界

发明与早期突破

1966年,IBM研究员罗伯特·登纳德发明了动态随机存取存储器(DRAM),并于1968年获得专利。其核心创新是将存储单元简化为单个晶体管,通过电容存储电荷,彻底改变了之前庞大、高耗能的磁芯存储方式。1970年,首款商用DRAM芯片1103问世,迅速取代磁芯内存,成为半导体存储芯片的行业标准。

技术原理与影响

登纳德提出了登纳德缩放定律:随着晶体管尺寸缩小,性能提升的同时功耗保持稳定。这一理念与摩尔定律共同推动了半导体行业的飞速发展。DRAM技术使计算机能够在更小空间内存储更多信息,为个人电脑、服务器乃至整个数字时代奠定了基础。

产业演进与应用扩展

  • 1981年,美光推出首款64K DRAM,标志着其在该领域的崛起。
  • 技术持续迭代:从PC内存扩展到图形处理(GDDR)低功耗移动设备(LPDDR) 以及高性能计算(HBM)。
  • 2002年,美光演示首个1Gb DDR DRAM;2021年推出1α节点技术,显著提升密度与能效。

现代创新与未来方向

  • 1β节点(2022年)实现16Gb单芯容量,数据速率达8.5Gbps,能效提升15%,密度提升35%,支持8K视频处理等应用。
  • 1γ节点将采用极紫外光刻(EUV) 技术,计划于2025年量产,进一步推动制程微缩。
  • 应用场景已覆盖5G手机、汽车安全系统(符合ASIL D标准)、人工智能及物联网设备

总结

登纳德的DRAM发明不仅淘汰了旧存储技术,更催生了一个重塑人类工作、娱乐与通信方式的产业。从早期的1Kb芯片到如今的先进节点,DRAM的持续创新印证了登纳德的名言:“缩放终有极限,但创造力永无止境。”

22. Simone Giertz talks about invention (spectrum.ieee.org)

西蒙·格兹谈发明

成名与转型
西蒙·格兹在2010年代通过自封的“无用机器人女王”身份走红。她在YouTube上展示了系列自制机械装置,这些作品虽功能荒诞却运作完美,例如一种安装在床头、用橡胶手拍醒用户的闹钟。她凭借网络知名度创立了设计公司Yetch(公司名源自其瑞典语名字的发音),推出商业消费品。首款产品每日目标日历被纽约现代艺术博物馆商店等知名渠道收录。此后她持续开发商业产品,同时为网友创作一次性奇特发明。

创作动机与转型原因

  • 关于“无用机器人”:格兹认为失败的机器人很有趣,这也帮助她摆脱表演焦虑和完美主义束缚,因为“意图失败”的设定带来了创作自由。
  • 转向商业产品:她厌倦了为获取关注而持续创作,寻求职业生涯的持久性。产品开发虽充满挑战,但让她感到充实。
  • 失败的作用:在商业产品开发中,失败不可避免。她将迭代过程描述为“螺旋上升”——虽然看似重复绕圈,但每次失败都在推动进步。

给发明者的建议

  1. 为自己创作:优先满足个人兴趣,相信自己的审美也能吸引他人。
  2. 寻找合作者:孤独天才并不存在,应选择能激发灵感、轻松协作的伙伴。

(文章基于IEEE Spectrum 2024年11月刊《无用机器人女王》访谈整理)

23. How the Unchecked Power of Companies Is Destabilizing Governance (hai.stanford.edu)

摘要

本文标题为"How the Unchecked Power of Companies Is Destabilizing Governance",探讨公司权力不受约束对治理稳定性的潜在影响。内容关联图像来自斯坦福人类中心人工智能研究所(Stanford HAI)网站,表明文章可能与该机构的研究或发布相关。文中未提供详细论述,仅通过标题和元数据暗示主题焦点。

24. Fearless SSH: Short-lived certificates bring Zero Trust to infrastructure (blog.cloudflare.com)

Cloudflare 推出基础设施零信任访问:短生命周期SSH证书

核心概述

2024年5月,BastionZero加入Cloudflare。如今,BastionZero的技术已原生集成至Cloudflare的SASE平台——Cloudflare One中,推出了基础设施访问(Access for Infrastructure) 服务。该服务旨在为服务器、数据库、网络设备、Kubernetes集群等关键基础设施实施零信任控制。首次发布功能是短生命周期SSH访问,未来数月将支持RDP、Kubernetes和数据库等其他类型。

解决的痛点

当前组织在管理基础设施特权访问时面临两大挑战:

  1. 风险过高:长生命周期凭证和共享密钥易被泄露、权限过大,并可能引发横向移动攻击。
  2. 操作繁琐:手动轮换凭证、缺乏可见性,拖慢了事件响应和合规工作。 传统特权访问管理(PAM)方案或自建工具存在成本高、复杂或性能瓶颈等问题。Cloudflare旨在通过将零信任原则应用于基础设施来解决这些问题。

SSH访问的核心功能

针对SSH这一高特权访问方式,新功能提供:

  • 消除凭证风险:用Cloudflare管理的证书颁发机构(CA)颁发的短生命周期SSH证书取代传统的SSH密钥和密码。证书仅在颁发后3分钟内有效,用于用户到服务器的认证窗口,之后失效,极大降低了凭证长期暴露的风险。
  • 精细策略控制:管理员可在Cloudflare仪表板中制定策略,精确控制哪些用户可以以什么Linux用户身份(如root、ec2-user)访问哪些服务器。认证可结合SSO、多因素认证(MFA)、设备状态等。
  • 全面审计与监控:通过内置的SSH代理,系统可捕获SSH命令日志,用于合规审计和安全调查。日志会以客户上传的公钥加密存储,确保隐私。
  • 无感用户体验:终端用户可继续使用其原生SSH客户端,无需更改工作流程。系统通过Cloudflare Tunnel和WARP客户端进行透明代理。

技术实现原理

该服务通过SSH代理架构实现:

  1. 连接拦截:当用户通过WARP客户端发起对目标服务器的SSH连接时,Cloudflare会将连接定向到SSH代理。
  2. 策略执行:代理首先根据用户身份和策略决定是否允许连接。
  3. 双连接建立
    • 代理到服务器:代理作为客户端,使用由Cloudflare CA为特定Linux用户签发的短生命周期证书,向目标服务器认证。
    • 用户到代理:代理作为服务器,为用户提供一个稳定的“主机密钥”(通过客户固定密钥与服务器主机密钥派生),以保持SSH客户端的“首次信任”体验。对用户客户端认证设置为“none”,因为用户身份已通过WARP客户端验证。
  4. 密钥管理简化:部署只需两个密钥:安装在服务器上的SSH CA公钥,以及用于加密命令日志的客户公钥。无需管理任何其他个人用户凭证。

部署与优势

  • 无缝集成:基于现有Cloudflare One部署模型(WARP客户端 + Cloudflare Tunnel),启用便捷。
  • 零信任策略统一:可将基础设施访问策略整合到组织的SSE/SASE架构中,与其他Access应用(如Web应用)统一管理。
  • 降低风险与成本:消除了长期凭证管理的负担和泄露风险,同时减少了对复杂PAM解决方案的依赖。
  • 合规支持:满足SOC2、ISO27001等框架对特权访问监控的要求。

可用性

该功能目前向少于50人的团队免费提供,对现有的按用量付费及合同计划客户,通过Access或零信任订阅即可使用,无额外费用。

25. The Dawn of a New Era for Supernova 1987a (2017) (science.nasa.gov)

超新星1987A(SN 1987A)是30年来人类观测到的最明亮的超新星之一,位于大麦哲伦云内,为天文学家研究恒星演化末期阶段提供了绝佳机会。2017年,在其发现30周年之际,NASA联合多个国际机构发布了由哈勃空间望远镜、钱德拉X射线天文台和阿塔卡马大型毫米波/亚毫米波阵列(ALMA)等多波段观测数据合成的新图像、动画和三维模型。

主要发现与科学意义:

  • SN 1987A周围存在一个直径约一光年的明亮气体环,在爆炸前已存在至少两万年,由恒星晚年不同时期的星风相互作用形成。
  • 哈勃的长期观测显示,超新星冲击波持续撞击该气体环,使其亮度发生变化;中心碎片结构已扩展至约半光年,且有两团碎片正以每小时约2000万英里的速度相互远离。
  • 钱德拉的X射线数据表明,冲击波已穿过致密气体环,进入外部气体密度较低的区域,导致X射线亮度趋于稳定甚至局部减弱,标志着SN 1987A进入新演化阶段。
  • ALMA的观测揭示了超新星遗迹中正在形成大量新尘埃,这些尘埃由恒星爆炸产生的重元素构成,可能成为未来恒星和行星的原料,也为早期宇宙尘埃的来源提供了线索。
  • 科学家仍持续寻找爆炸后可能形成的中子星或黑洞证据,此前曾探测到中微子信号,但尚未在观测中确认致密天体的存在。

观测设备与合作:

  • 哈勃望远镜自1990年起持续监测,积累数百张图像;钱德拉自1999年投入使用后也进行长期观测;ALMA自2012年起提供高分辨率毫米/亚毫米波数据。
  • 多波段数据的结合使科学家能够更全面探索超新星遗迹的物理过程,并通过计算机模拟重建其三维结构。

宇宙意义: 超新星如SN 1987A通过搅动周围气体,可触发新恒星和行星的形成,并将碳、氮、氧、铁等生命必需元素扩散至星系中。对SN 1987A的持续研究有助于理解恒星死亡后元素的弥散过程及宇宙物质循环。

(总结基于NASA、ESA及相关研究团队发布的公开资料,涵盖关键观测结果、科学意义及合作背景。)

26. The Anvil Text Editor (anvil-editor.net)

The Anvil Text Editor 是一个图形化的多窗格平铺式编辑器,充分利用鼠标操作并与 Shell 紧密集成。它支持语法高亮、多个光标和选择、远程文件编辑,并包含一个强大的文本操作语言。

Anvil 的设计灵感来源于 Acme 编辑器,若用户熟悉 Acme,两者之间的主要差异可在后续使用中体会。

文章末尾对 GIO 开发者和社区表示感谢,他们使用 Go 语言创建了美观的图形界面库,这是该编辑器得以实现的基础。同时也感谢 Go 团队开发了实用、跨平台、高性能且简洁的语言,使编程过程更加愉悦。

27. Optimizers need a rethink (typesanitizer.com)

优化器需要重新思考

本文面向编译器、数据库开发或相关领域的从业者,以及曾深受优化器失败困扰的用户。基于作者在编译器开发、跟踪新优化技术以及调试Postgres慢查询的经验,总结了优化器(包括编译器优化器和数据库查询优化器)通常具有的四个共同特点,并指出了当前范式的问题和未来的改进方向。

优化器的四个共同特点

  1. 条件性关键:在特定上下文中,优化器的行为至关重要且不容有失。例如,在带垃圾回收的语言中,有时必须避免触发内存分配,这要求优化器能正确地进行“装箱/拆箱”操作。在低级语言如C++中,可能需要关注循环展开、无分支指令或特定SIMD指令集的使用。在使用引用计数和写时复制容器的语言中,生命周期收缩甚至可能导致算法复杂度的改变,而非仅仅是常数因子的差异。

  2. 控制有限:引导优化器的“旋钮”通常很有限,主要形式为编译器指令(pragmas)、内建函数(builtins)或特定语言特性。例如:Rust用于性能测试的black_box内建函数、Swift标准库中大量使用的@inline(__always)@inlinable注解、MySQL中作为魔法注释的优化器提示(无法应用时会静默忽略)。一些语言(如D的“no GC”函数、C#的ref参数)在语义检查层强制执行性能相关属性,但这并不能全面满足所有性能优化需求。

  3. 可测试性有限:用于检查优化器输出的工具(如查看汇编或中间表示IR)主要用于调试,不便于进行标准化测试。无法将优化后的输出反馈回工具,以验证新代码版本或新工具版本是否产生了大致相同的优化结果。一个有趣的反例是尾调用消除,许多编译器提供了显式检查支持(如Clang/GCC的musttail)。

  4. 可见性有限:优化器有时行为“自主”,令人困惑。例如,Postgres可能在索引选择上做出违反直觉的决定(偏好选择性低的索引而非主键索引),且生产环境与开发环境的行为可能不一致。编译器Bug跟踪器中也常出现优化未按预期触发的情况。

现状的问题

如果一个优化对系统功能至关重要,那么我们需要良好的机制来检查、理解、控制和验证它。对于需要长期维护的系统,程序员需要能够:

  • 对优化器的能力建立清晰的心理模型。
  • 轻松调试优化未触发的情况。
  • 在优化器无法自行解决问题时,能够引导它。
  • 当优化器无法遵循引导时,必须发出错误或警告。
  • 能够编写针对优化器预期行为的回归测试。

当前优化器的状态与这些需求之间存在矛盾。

未来的方向:优化器需要演进

为支持上述需求,优化器及其工具和文档需要在以下四个方面进行改进:

  1. 帮助用户建立扎实的心理模型

    • 优化器应有清晰文档,说明其执行的优化及可能的应用顺序。
    • 文档应包含经过机器验证(作为doctests)的优化生效正面示例。
    • 更重要的是,应包含优化未自动触发的负面示例,解释原因(最好基于用户误解),并提供引导优化器的建议。
  2. 改进调试优化缺失的工具

    • 借鉴LLVM的“优化备注”功能,该功能能跟踪优化是否执行或缺失。编译器(如Clang, Rustc)应暴露获取这些数据的方式。
    • 数据库优化器也可借鉴,在关系算子层面记录类似信息,并记录所有用于优化决策的运行时信息。
    • 将此类工具与编辑器扩展(如LSP)集成以方便使用。
    • 使用户能轻松分享优化缺失报告,可通过集成代码匿名化功能(重命名标识符、剥离注释、混淆字符串字面量)来简化报告流程。
  3. 使用强引导而非弱提示

    • 用户需要的是优化器不能忽略的“引导”,而非可静默忽略的“提示”。当优化器无法遵循引导时,应根据上下文发出错误或警告。
    • 这可能带来工具链升级时的依赖问题,但可以通过以下方式管理:审计依赖中是否使用了优化引导、在包清单中记录、允许忽略或降级依赖中的引导违规。
    • 优化未触发的Bug也是Bug,应重视其报告。在数据库上下文,可考虑支持比SQL更显式的查询语言作为额外工具。
  4. 建立优化器回归测试基础设施

    • 理想流程:遇到性能问题 -> 理解优化器 -> 调试定位到优化缺失 -> 报告并修复 -> 工程师添加最小化回归测试 -> 用户验证并升级工具链。
    • 对于基于编译时信息的优化,强引导本身可作为一种测试(违反则构建失败)。
    • 对于更专门的场景,需要能在测试代码中对优化后的代码(IR或汇编)进行断言。
    • 对于优化不完全基于编译时信息的情况(如解释器、JIT编译器),需要能编写针对不同输入类别、断言生成代码属性的测试(例如,断言在预期统计范围内查询计划总是使用特定索引)。

结尾

Proebsting定律表明编译器优化提升计算能力的速度非常缓慢。本文认为,在程序员生产力与优化的交叉领域存在机会——通过让优化器更易理解、可靠和可预测,并设计其与程序员协作而非仅在幕后工作,可以提升整体开发体验。

28. Hoard of coins from Norman Conquest is Britain's most valuable treasure find (www.cnn.com)

2024年,英国西南部丘谷地区出土的一批诺曼时期银币宝藏,被当地遗产信托机构以430万英镑(约560万美元)购得,成为英国有史以来最珍贵的考古发现。这批2584枚银便士由七名金属探测爱好者于五年前发现,探测者和土地所有者将平分收益。

宝藏年代约为公元1066-1068年,处于英国历史上的关键转折点——诺曼征服时期。其中最古老的硬币铸有忏悔者爱德华国王的肖像,他于1066年去世引发了王位争夺战。约半数硬币描绘了短暂在位的哈罗德二世,其余则描绘了最终在黑斯廷斯战役获胜的征服者威廉一世。

西南遗产信托的考古策展人指出,这批宝藏“封存了从萨克森统治到诺曼统治的历史转折点”。宝藏很可能在1067-1068年当地反抗威廉统治期间被埋藏保存。此次发现意义重大:其包含的哈罗德二世时期硬币数量是此前已知总数的两倍。

这批银币将于2023年11月26日起在伦敦大英博物馆公开展览,随后将返回英格兰西南部的博物馆。

29. Several Russian developers lose kernel maintainership status (lwn.net)

在6.12-rc4开发内核中,Greg Kroah-Hartman提交了一个补丁,移除了内核MAINTAINERS文件中的若干条目。该补丁仅发送至patches@lists.linux.dev邮件列表,并作为“char-misc驱动程序拉取请求”的一部分被合入,未特别说明。

移除的理由是“各种合规要求”。鉴于被涉及的开发者均看起来为俄罗斯籍,此“合规”的性质不言而喻。然而,没有公开发布要求移除这些条目的相关政策文件。

更新:Linus Torvalds已公开支持此行动,并表示该决定不会被撤销。

更新2:James Bottomley澄清了具体要求:

如果您的公司在美国财政部海外资产控制办公室(OFAC)的特别指定国民(SDN)名单上、受到OFAC制裁项目的约束,或由名单上的公司拥有/控制,那么我们与您协作的能力将受到限制,且您不能出现在MAINTAINERS文件中。

30. The PlanetScale vectors public beta (planetscale.com)

PlanetScale向量搜索功能进入公测阶段

PlanetScale宣布其向量搜索与存储功能正式开放公测。此功能允许用户在MySQL兼容的关系型数据库中直接存储和查询向量数据,无需部署独立的专用向量数据库。

核心技术特点

为满足高性能和大规模扩展的需求,PlanetScale的向量搜索基于微软研究院的两篇前沿论文实现:SPANN(空间分区近似最近邻)和SPFresh。该解决方案进行了深度定制,完全集成到MySQL的默认存储引擎InnoDB以及PlanetScale的分片层Vitess中。

这带来了以下关键优势:

  • 事务性支持:向量数据的插入、更新和删除操作能作为SQL事务的一部分被立即反映到索引中,并支持批量提交和回滚,确保ACID合规
  • 高效的大规模管理:索引由InnoDB完全托管并存储在磁盘上,与表中的向量数据实时同步,能够扩展至TB级别,且无需定期重建。
  • 强大的查询能力:支持在向量查询中使用完整的SQL语法,包括JOIN、WHERE子句和子查询,同时支持预过滤和后过滤

算法选择与创新

常见的向量搜索算法(如HNSW和DiskANN)存在局限性。HNSW查询性能好但需全量数据载入内存且不支持增量更新;DiskANN扩展性较好但查询性能相对较差,增量更新效率不高且难以映射到事务性SQL语义。

PlanetScale基于SPANN和SPFresh构建的方案克服了这些限制。SPANN采用图与树混合结构,专为处理超过内存大小、需使用SSD的索引而设计。SPFresh则在此基础上通过并发的后台维护操作,支持索引的持续更新,同时不损失召回率或查询性能。PlanetScale在此基础上增加了事务支持并深度集成至InnoDB。

功能启用方式

用户可在数据库设置的“Beta features”页面,找到“Vectors”并选择加入测试。该功能在分支级别启用,可在分支页面通过齿轮图标旁边的开关进行操作。

资源与反馈

PlanetScale提供了相关文档、视频以及ORM使用指南等资源。在公测期间,鼓励用户通过提交支持工单或在官方Discord的专属频道中提供反馈、提出问题。

31. Elderly dementia patients are unwittingly fueling political campaigns (www.cnn.com)

CNN的调查显示,美国政治筹款活动中存在大规模欺骗行为,导致数百名老年痴呆症或认知障碍患者在不知情的情况下捐出数百万美元积蓄,其中许多人因此耗尽毕生积蓄甚至负债。这些捐款主要流向了前总统唐纳德·特朗普及其他共和党候选人,用于支持其竞选活动。

问题核心:通过使用预勾选的定期捐款框、发送大量带有误导性信息的邮件和短信等手段,筹款活动诱使认知能力下降的老年人进行远超其本意的捐赠。捐款通常以5或10美元小额开始,但通过数千次交易累积,总额惊人。

具体案例

  • 一名来自德克萨斯州的80岁退休通讯工程师,一生节俭储蓄,却在痴呆症影响下在线捐款近50万美元,毕生积蓄几乎耗尽。
  • 一名82岁的独居老人,生活节俭,却在三年内向共和党捐款超过35万美元。
  • 一名81岁的亚利桑那州老人,因痴呆症误以为与特朗普个人保持联系,捐款约8万美元并陷入债务。
  • 一名80岁的台湾移民女性去世时银行账户仅剩250美元,此前她向特朗普及其他共和党候选人捐款逾18万美元。

数据概览

  • CNN分析了政府机构报告及竞选财务数据,发现欺诈性筹款使数百名老年人成为受害者。
  • 仅CNN联系到的50多位此类老年捐款人,在过去五年内的捐款总额就超过600万美元,其中大部分流向共和党。
  • 特朗普的竞选活动及相关委员会是最大受益者,从这些易受骗捐款人处获得了超过40万美元。

欺诈手段

  • 主要利用预勾选的定期捐款框,使捐款人在不知情下注册每周或每月自动扣款。捐款页面字体通常很小,认知障碍者极易忽略。
  • 筹款信息被设计成看似来自候选人个人的直接沟通,营造“专属俱乐部”的归属感和紧迫感,诱导持续捐款。
  • 捐款人信息被频繁交换出售,导致他们收到海量筹款请求,有时一天内被扣款超过100次。

监管缺失

  • 联邦选举委员会收到大量投诉,但常以金额小或严重性低为由不优先处理。该机构表示,无权禁止预勾选捐款框的做法,呼吁国会立法。
  • 联邦贸易委员会虽在报告中批评此类做法为“欺骗性手法”,但声称无权管辖政治广告。
  • 多个州检察长对WinRed和ActBlue进行了调查,但至今未采取公开行动。立法保护提案在国会未能推进。
  • 存在潜在利益冲突:收到相关投诉的检察长们,本身也使用这些平台进行筹款。

退款困难

  • 受害者家属试图取消捐款或追回款项时,过程往往复杂且成功率低。
  • WinRed和ActBlue虽声称提供退款指南,但实际操作中常设置障碍。WinRed仅愿为最近60天内的捐款退款,ActBlue称可提供灵活处理,但许多家庭反映联系困难。
  • 被误导的捐款人及其家属通常需直接联系数百个不同的竞选团队,而筹款平台提供的支持有限。

平台角色

  • WinRed(营利性,主要服务于共和党)和ActBlue(非营利性,主要服务于民主党)是主要的数字筹款平台,为数百个政治团体提供服务,并从中收取约4%的手续费。
  • 这些平台通过技术手段(如一键捐款、自动扣款)极大地提高了筹款效率,但也为滥用行为提供了便利。

综上所述,调查揭示了一个系统性漏洞:认知能力下降的老年人极易成为激进政治筹款策略的受害者,而现有的法律和监管框架未能提供充分保护,导致巨额个人积蓄流入政治竞选活动,给许多家庭带来财务与情感上的双重打击。

32. Launch HN: GPT Driver (YC S21) – End-to-end app testing in natural language
33. Users say T-Mobile must pay for killing "lifetime" price lock (arstechnica.com)

T-Mobile曾向购买特定手机套餐的用户承诺“终身价格锁定”,即只要用户还活着就不会涨价,但该公司今年却对这些套餐实施了每条线路2至5美元的涨价,导致超过2000名用户向美国联邦通信委员会(FCC)投诉。

用户投诉主要集中在“终身价格锁定”的承诺被违背上,许多投诉来自55岁以上的老年用户计划。用户指出T-Mobile的涨价行为相当于等待用户去世而无需兑现承诺,并称其为虚假广告和违约行为。部分用户拥有多条线路,涨价幅度较大,例如有10条线路的用户每月需多付50美元。

FCC发言人确认收到了超过2000件投诉,但未透露是否正式调查。同时,联邦贸易委员会(FTC)也收到了约60件相关投诉。T-Mobile以形式化的回信应对投诉,声称“Un-contract”承诺仅指若涨价且用户选择离开,公司会支付最后一个月的服务费,但这一条款在主要宣传中并未明确说明。用户普遍不接受此解释,指出T-Mobile的早期条款和广告明确承诺价格不会上涨。

用户感到被设备分期付款计划束缚,因为如果转网需要提前付清手机全款。此外,许多投诉将问题归咎于T-Mobile收购Sprint后市场竞争减少,导致公司敢于涨价。

法律层面,已有集体诉讼在法院提起,寻求退款和赔偿。T-Mobile要求法院将主原告强制仲裁并驳回其他原告的索赔。监管机构(如FCC和FTC)以及州检察长也可能采取行动,因T-Mobile过去曾因数据泄露、出售位置数据等问题被罚款或起诉。

部分用户已转网至其他运营商如Verizon,但大多数人仍留在T-Mobile。目前,T-Mobile尚未撤回涨价决定。

34. Don't use "click here" for link text (www.dont-click-here.com)

文章总结:避免使用“点击这里”作为链接文本

核心观点

链接文本应描述链接目标,避免使用“点击这里”、“这里”、“这个”等笼统词汇。

不应使用“点击这里”的理由

  • 降低效率:有意义的链接文本能让用户快速扫描并了解点击后的结果,否则需要阅读链接周围文本来理解。
  • 表述模糊:无法告知用户点击后会看到什么内容。
  • 分散注意力:使用“点击”一词会将读者注意力从内容本身转移到操作机制(如页面颜色、设备声音等)。
  • 干扰搜索引擎:搜索引擎依赖有意义的链接文本来理解网页内容,正确的链接有助于内容被更多读者发现。

对常见反对意见的回应

  • “用户不知道点击哪里?”:当今用户已具备网络操作常识。
  • “没有其他表达方式?”:可通过链接目标页面的标题或相关描述重写链接。
  • “链接不够醒目?”:可通过将链接置于句子末尾、冒号之后或单独一行来实现视觉强调。

真实案例对比

原链接文本 改进后的链接文本
点击这里查看订单详情 请查看您的订单详情
点击这里取消跳过订单 取消跳过订单
点击这里查看或调整自动付款设置 您可以随时查看或调整自动付款设置
查看“无标题”文档中的更改:点击这里 查看“无标题”文档中的更改

参考资料

文章引用了多个权威来源支持其观点:

  • W3C 网页管理建议
  • Smashing Magazine 文章《为什么链接不应使用“点击这里”》
  • Red Hat UX 设计师 Mark Caron 的观点
  • 伯克利大学网页无障碍指南
  • Jeff Atwood 的《超链接艺术》

作者信息

Jonathan Berger (berger.jon@gmail.com)

36. Live imaging of ovulation in action reveals three distinct phases in mice (phys.org)
37. One Square Minesweeper (onesquareminesweeper.com)

One Square Minesweeper

这是一个名为"One Square Minesweeper"的网页项目,属于一个无用的网页实验。项目标题直接表明其核心是扫雷游戏(Minesweeper),但从代码结构看,它被设计为一个简单的网页界面。内容中包含了HTML元素,如标题和游戏组件的标记,暗示这是一个基础的游戏实现。

主要目的是展示一个扫雷游戏的网页版本,但强调其“无用”性质,可能旨在作为娱乐、学习或测试用途。结构上,它包含游戏界面的基本框架,如标题标签和可能的游戏区域,但具体内容有限。关键功能基于经典扫雷游戏逻辑,可能涉及用户交互以避开地雷。由于项目被标记为“无用”,它可能更注重简单性或概念演示,而非复杂功能。

38. Show HN: I built a task manager that separates "do" and "due" dates (apps.apple.com)

该内容为应用商店的页面,主要展示各类应用与游戏的推荐列表。

主要结构和内容分类:

  1. 时下热门游戏:列举了《王者荣耀》、《和平精英》、《原神·空月之歌》、《蛋仔派对》等多款当前流行的手机游戏。
  2. 编辑精选与推荐:根据不同主题分类推荐应用与游戏,包括:
    • 独立游戏:如《波西亚时光》、《潜水员戴夫》。
    • 剧情与冒险类:如《流言侦探-整合版》、《少年的人间奇遇》。
    • 实用工具:如屏幕时间管理应用《OffScreen》、天气应用《和风天气》、二手平台《多抓鱼》。
    • 特定主题:如足球游戏《FC足球世界》、宇宙探索应用《太阳系》、卡牌游戏等。
  3. 限时活动与独家内容:提示应用内的最新活动和App Store独家访谈或内容。
  4. 其他分类:包括“逆境求生”类游戏、影音娱乐(如QQ音乐、腾讯视频)、效率工具(如Microsoft Teams、Microsoft To Do)等。

核心目的:该页面旨在通过分类、编辑推荐和活动展示,向用户全面介绍平台上的各类热门、优质及特色应用与游戏,以促进用户发现和下载。

39. The Maker of Ozempic Is Trying to Block Compounded Versions of Its Drug (www.wired.com)

丹麦制药商诺和诺德正试图阻止其明星减肥药司美格鲁肽(商品名Ozempic和Wegovy)的仿制版本大规模流通。该公司正在游说美国食品药品监督管理局,希望将司美格鲁肽加入该机构的“可证明配制困难”名单,从而阻止配制药房生产该药物的复制品。

诺和诺德的行动与理由 诺和诺德认为,由于司美格鲁肽配方固有的复杂性,安全配制该药极其困难,其对患者安全构成的风险远大于任何潜在益处。公司代表表示,此举旨在确保患者仅能获得FDA批准、安全有效的司美格鲁肽产品。FDA正在审查该请愿书。

行业背景与市场现状 自2022年起,包括司美格鲁肽在内的GLP-1类注射药物因需求巨大而持续短缺。根据美国法规,当药物被宣布短缺时,持牌药房可合法配制包含相同活性成分的“仿制”版本。远程医疗供应商利用此缺口,通过快速线上问诊以远低于品牌药的价格(例如,品牌药月费约1000美元,仿制药低至100美元)提供仿制司美格鲁肽,形成了庞大的市场。

安全与监管争议 与专利到期后上市的仿制药不同,仿制药在上市前无需获得FDA批准,这意味着其安全性和质量无法事先得到监管机构担保。FDA已收到多份与仿制司美格鲁肽产品可能相关的剂量错误导致的不良反应报告,包括住院病例。

配药行业的反对意见 配药行业代表强烈反对将司美格鲁肽列入DDC名单。行业组织“联盟药房配药联盟”首席执行官认为,此举更多是诺和诺德为保护收入流而采取的绝望之举,并非基于严肃的科学论证,并坚称司美格鲁肽并非难以安全配制。

广泛的法律与监管冲突 诺和诺德已向销售仿制品的远程医疗诊所、医疗水疗中心及配制药房等多家企业提起了50起联邦诉讼,指控其商标侵权和不正当竞争。近期,针对另一款GLP-1药物替尔泊肽的短缺状态也引发了类似冲突:FDA一度宣布其短缺已解决,导致仿制药生产被迫停止,药企礼来随后向相关企业发出大量停止侵权信。但配药行业对此提出质疑并提起诉讼,FDA已决定重新评估。目前司美格鲁肽仍在短缺名单上,但一旦其短缺状态被解除,预计类似的对抗将再次升级。

核心矛盾总结 这场冲突凸显了制药巨头维护专利药物市场与利用药物短缺缺口提供低价替代品的配药行业之间的根本矛盾。争议焦点在于药物配制的安全性、监管权限以及患者获取可负担治疗的途径。FDA的决定将对此产生深远影响。

40. TLA from First Principles (buttondown.com)

本文通过构建一个简化的银行转账系统示例,从第一性原理讲解了 TLA+ 背后的核心概念——时序逻辑动作

核心思路:用谓词逻辑描述系统行为

  1. 系统模型:假设只有 alicebob 两个账户,初始各 10 美元,仅支持 Alice 向 Bob 的原子化转账。
  2. 将时间离散化:将变量 alicebob 视为在自然数时间点 (Time = {0, 1, 2, ...}) 上取值的数组。一个“行为”即是这些数组的一个具体序列。
  3. 定义有效行为:编写谓词来约束任意相邻时间步的状态变化(“动作”)。
    • 例如,一个有效的转账动作 Transfer(t) 表示:存在一个转账额 value(在允许范围内),使得在时间 t 后,Alice 的账户减少 value,Bob 的账户增加等量 value
    • 一个有效的完整行为 Spec 包含初始状态(Init)和对所有时间步 t 的动作约束。
  4. 引入“无操作”步骤:为避免系统必须每时每刻都发生转移(最终导致卡死),引入了 ** stutter step **,即变量值保持不变的步骤。规范变为:每一步要么执行有效动作,要么执行 stutter step。

时序逻辑的抽象与 TLA+

直接量化时间(如 alice[t])较为笨拙且表达能力过强,不利于计算机自动检查。因此引入两个关键抽象:

  1. Prime 表示法:用 var 表示变量在当前时间 t 的值,用 var' 表示其在下一时间 t+1 的值。这使得动作的描述不再显式依赖时间索引。
  2. always 算子:用 []P(或写作 always P)表示性质 P所有时间步都成立。这替代了显式的 for all t in Time 量化。
    • 不变式(如 NoOverdrafts:账户非负)可直接描述为 always (alice >= 0 /\ bob >= 0)
    • 规范 可简洁地表达为 Init /\ always (Next \/ Stutter),其中 Next 是所有可能动作的合取。

TLA+ 语言实现

文章最后展示了上述银行示例在 TLA+ 规范语言中的完整写法,其语法是上述数学概念的 ASCII 翻译:

  • 使用 /\, \/ 表示逻辑与、或。
  • 使用 \E, \A 表示存在、全称量化。
  • [][Next]_varsalways (Next \/ Stutter) 的惯用写法,其中 Stutter 意为变量无变化。

总结来说,文章通过一个循序渐进的示例,阐明了 TLA 的核心思想:将系统行为视为随时间演变的状态序列,并通过时序逻辑算子(如 prime 和 always)来精确、可验证地描述系统允许的行为及其应满足的性质。 TLA+ 正是这种思想的实践工具。