zhulink logo
自动夜间模式 日间模式 夜间模式
侧栏
0

【HN中文日报】劲爆日报:美国人权网站被砍?D 语言搞编译器?还有F1车手护照泄露?!

意外富翁的头像
|
|
|
## 今天 Hacker News 社区聊了啥? NO.20251023 这期日报信息量炸裂!美国竟然撤销了人权举报网站,背后原因引人深思。有大神用 D 语言硬核打造 ASN.1 编译器,简直是程序员的浪漫!PyTorch 新框架 Monarch 让你像写单机代码一样玩转分布式计算。更有安全大佬爆料F1网站漏洞,Max Verstappen 的护照信息差点被扒光!想了解 AI、编程、安全等领域最新鲜的资讯?速速点击阅读全文,瓜吃到饱! ![Hacker News 中文精选](/static/mascot_article.webp) --- ## 美国撤销人权举报网站,引发争议 美国国务院撤销了一个用于报告外国军队使用美国武器侵犯人权的在线门户网站,此举引发了人权活动家和国会助手的强烈谴责,他们认为此举违反了旨在防止美国援助被用于侵犯人权的《莱希法》。该门户网站名为“人权报告门户”(HRG),于 2022 年设立,旨在接收关于外国军队侵犯人权的举报。 该门户网站的删除意味着,相关人士将失去一个正式的渠道,向美国政府直接举报潜在的严重侵权行为。前参议员莱希的助手 Tim Rieser 表示,此举表明国务院“公然无视法律”,并进一步表明国务院内部的“整个人权架构”正在“变得基本上无效”。国务院坚称,他们仍在遵守法律,并通过其他渠道接收相关报告。 据报道,通过 HRG 提交的案件包括哥伦比亚安全部队在 2021 年反政府抗议活动中过度使用武力的指控,以及一些与以色列国防军(IDF)在被占领的西岸地区使用美国武器有关的案件。人权组织认为,HRG 的删除将严重削弱美国政府阻止侵权行为的能力。 评论区主要围绕美国政府撤销人权举报网站的动机和影响展开讨论。有人认为,此举表明美国政府对人权问题的漠视,并可能导致美国援助被用于侵犯人权的行为。也有人猜测,该网站可能收到了大量的垃圾信息,导致其效率低下。还有人认为,直接向媒体报告可能比向政府报告更有效,因为这样可以避免政府掩盖真相。总的来说,评论区对美国政府的这一举动表示担忧和批评,并呼吁加强对美国对外军事援助的监督,以确保其不被用于侵犯人权。 - 原文: [US axes website for reporting human rights abuses by US-armed foreign forces](https://www.bbc.com/news/articles/cqx30vnwd4do) - Hacker News: [https://news.ycombinator.com/item?id=45682169](https://news.ycombinator.com/item?id=45682169) - 作者: tartoran - 评分: 176 - 评论数: 45 - 发布时间: 2025-10-23 22:25:22 --- ## 使用 D 语言开发 ASN.1 编译器 本文作者分享了其使用 D 语言开发 ASN.1 编译器的经历,并深入探讨了 ASN.1 的复杂性以及 D 语言在代码生成方面的优势。作者原本是为了 Juptune 项目(一个玩具异步 I/O 框架)开发 TLS 功能,才开始接触 ASN.1 及其 DER 编码。 ASN.1 是一种数据规范语言,包含 ASN.1 符号(由 x.680, x.681, x.682 和 x.683 定义)和多种编码方式(BER, CER, DER, PER, XER, JER 等)。作者主要关注 ASN.1 符号和 DER 编码。ASN.1 符号用于定义结构化数据表示,然后使用工具为特定编码和编程语言生成编码器/解码器。 文章详细介绍了 ASN.1 符号的复杂性,包括历史弃用、约束系统和版本控制系统。作者也提到了 D 语言在代码生成方面的便利性,例如静态导入、模块本地查找、`typeof()`、以及灵活的逗号使用规则。D 语言的元编程能力也使得编译器可以保持简单。 此外,作者还分享了在实现过程中遇到的痛点,例如值序列语法、规范文档中信息的难查找、约束需要多次实现、以及对不可变 IR 节点的期望。作者认为 ASN.1 的复杂性是全方位的,并且很难记住所有需要的信息。文章最后总结了编写编译器是一项繁琐的工作,并分享了作者在项目中的经验和教训。 由于没有评论内容,因此略过评论分析。 - 原文: [I spent a year of my life making an ASN.1 compiler in D](https://bradley.chatha.dev/blog/dlang-propaganda/asn1-compiler-in-d/) - Hacker News: [https://news.ycombinator.com/item?id=45681200](https://news.ycombinator.com/item?id=45681200) - 作者: BradleyChatha - 评分: 106 - 评论数: 31 - 发布时间: 2025-10-23 20:47:41 --- ## PyTorch Monarch:化繁为简的分布式编程框架 PyTorch 推出了 Monarch,这是一个旨在简化分布式编程的框架,它让开发者能够像编写单机程序一样操作整个集群,极大地降低了分布式计算的复杂性。Monarch 通过单控制器的编程模型,将集群资源虚拟成本地资源,开发者可以使用熟悉的 Python 结构(类、函数、循环等)来表达复杂的分布式算法。 Monarch 的核心特性包括:将集群视为数组,通过 meshes 来组织 hosts、processes 和 actors,并提供简单的 API 来操作它们;渐进式的故障处理,允许开发者先编写无故障代码,再逐步添加细粒度的故障处理机制;分离控制平面和数据平面,实现 GPU 之间的高速数据传输;以及提供分布式 tensors,让开发者感觉像是在操作本地 tensors 一样。Monarch 的目标是屏蔽底层分布式计算的复杂性,让开发者专注于算法逻辑本身。 在编程模型上,Monarch 引入了 process mesh 和 actor mesh 的概念,将资源组织成多维数组,方便开发者高效地在大型系统上分发操作。同时,Monarch 还提供了 tensor engine 和 RDMA buffer API,分别用于分布式 tensors 的操作和进程间的高吞吐量数据传输。代码示例展示了如何使用 Monarch 创建 processes 和 actors,以及如何通过 slicing meshes 来实现广播通信和故障恢复。 Monarch 的架构分为 Python 前端和 Rust 后端。Python 前端负责提供易用的 API,方便开发者与现有代码和库(如 PyTorch)集成,而 Rust 后端则负责提供高性能、可扩展性和鲁棒性。底层是一个名为 `hyperactor` 的 Rust actor 框架,专注于高性能的消息传递和健壮的监管。总而言之,Monarch 旨在将单机 PyTorch 的简洁性带到整个集群,从而简化分布式机器学习的开发流程。 - 原文: [PyTorch Monarch](https://pytorch.org/blog/introducing-pytorch-monarch/) - Hacker News: [https://news.ycombinator.com/item?id=45680237](https://news.ycombinator.com/item?id=45680237) - 作者: jarbus - 评分: 158 - 评论数: 29 - 发布时间: 2025-10-23 18:15:12 --- ## 算法如何驱动价格上涨的博弈论 本文探讨了算法在定价中的应用,以及即使在没有明确合谋的情况下,简单的定价算法也可能导致价格上涨的现象。 文章指出,传统的反垄断法依赖于发现明确的合谋行为,但算法定价的复杂性使得这种方法不再适用。 2019年的一篇论文表明,算法可以通过试错学习,在没有明确编程指示的情况下,实现隐式合谋。研究人员在一个模拟市场中,让两个相同的学习算法相互竞争,算法通过不断调整价格来最大化利润。 最终,每个算法都学会了在对方降价时进行报复,从而导致价格居高不下。 这种现象表明,即使是简单的算法也可能导致市场价格的扭曲。文章作者Aaron Roth认为,算法定价的缺陷可能没有简单的解决方案。 - 原文: [The Game Theory of How Algorithms Can Drive Up Prices](https://www.quantamagazine.org/the-game-theory-of-how-algorithms-can-drive-up-prices-20251022/) - Hacker News: [https://news.ycombinator.com/item?id=45680695](https://news.ycombinator.com/item?id=45680695) - 作者: isaacfrond - 评分: 83 - 评论数: 43 - 发布时间: 2025-10-23 19:38:49 --- ## VST 3.8 SDK 开源:拥抱 MIT 许可,支持 MIDI 2.0 和 Wayland Steinberg 发布了 VST 3.8 SDK,最显著的变化是 VST3 采用 MIT 许可,正式开源。这次更新还带来了对 MIDI 2.0 的支持,引入了 `IMidiLearn2` 和 `IMidiMapping2` 接口,替换了之前的 `IMidiLearn` 和 `IMidiMapping`。此外,新版本还预览了 Linux 上的 Wayland 支持,由 PreSonus Software Ltd. 贡献,并已集成到 Studio One Pro 7.2 及更高版本中,提供了 `IWaylandHost` 和 `IWaylandFrame` 接口以及新的平台 UI 类型 `kPlatformTypeWaylandSurfaceID`。 VSTGUI 也更新到了 4.15.0 版本,引入了新的 Task Concurrency API,方便在后台线程上并发或顺序执行任务,并支持从任何线程在主线程上调度任务。VSTGUI 还增加了对自定义视图布局的支持,引入了 `IViewLayouter` 和 `CViewContainer::setViewLayouter`,以及类似于 CSS Grid 的网格视图布局器 `GridLayouter`。同时,新版本还增加了 UIDescription 的脚本支持,新的文本编辑器视图,以及允许滚动视图拥有顶部和左侧边缘视图的功能。 除了功能更新,VST 3.8 SDK 还修复了一些问题,例如修复了 `SMTG_AddSMTGLibrary.cmake` 在 macOS/Linux 上创建符号链接的问题,以及修复了 Visual Studio 编译器中 `SMTG_PlatformToolset.cmake` 的问题。示例插件也得到了更新,增加了对新的 `ControllerNumbers` 枚举以及 `IMidiLearn2` 和 `IMidiMapping2` 接口的支持。此外,VST3PluginTestHost 也修复了在 Windows 平台上启动时可能崩溃的问题。 总的来说,VST 3.8 SDK 的发布标志着 VST 技术向更加开放和现代化的方向发展,为开发者提供了更多的可能性和便利。 评论区主要围绕 VST3 开源的动机和影响展开了讨论。 有人认为这是 Yamaha(Steinberg 的母公司)做出的正确决定,并列举了 Yamaha 过去的一些善举。也有人认为,这是由于新兴的开源 CLAP 格式在各方面都优于 VST3,迫使 Steinberg 做出改变。还有人指出,尽管 VST3 开源值得称赞,但感觉是被 CLAP 的成功推动的。此外,还有评论表达了对行业摆脱专有格式的期待,以及对 Apple 和 Avid 简化插件开发的呼吁。 - 原文: [VST3 audio plugin format is now MIT](https://forums.steinberg.net/t/vst-3-8-0-sdk-released/1011988) - Hacker News: [https://news.ycombinator.com/item?id=45678549](https://news.ycombinator.com/item?id=45678549) - 作者: rock_artist - 评分: 466 - 评论数: 104 - 发布时间: 2025-10-23 13:48:02 --- ## Google 将 Immich 网站标记为危险站点 Immich 团队最近遇到了一个令人头疼的问题:他们的 `*.immich.cloud` 网站被 Google 标记为危险站点,导致用户访问时出现“红屏死机”警告。这个问题源于 Google 的 Safe Browsing 服务,该服务旨在检测网站是否存在恶意软件、不良软件或社会工程攻击。 起初,Immich 团队并不清楚这个机制是如何运作的,但很快他们就发现,一旦网站被标记为危险,几乎所有用户都无法正常访问,除非他们知道这是一个误报并手动点击“访问此安全站点”链接。更糟糕的是,一个被标记的子域名会影响整个域名。 为了解决这个问题,Immich 团队不得不使用 Google Search Console 申请复审。Google 提供的理由是网站包含有害内容,试图诱骗用户安装不良软件或泄露个人信息,并列出了受影响的 URL,这些 URL 指向 Immich 的预览环境。Immich 团队解释说,这些站点是他们自己部署的产品,并没有模仿任何其他网站。经过一两天的等待,Google 接受了复审请求,并解除了对域名的标记。 然而,问题并没有完全解决。Immich 团队发现,每当他们创建一个新的预览环境时,`immich.cloud` 域名就会再次被标记为危险站点。他们推测,Google 可能会抓取 GitHub,检测到新的 URL,然后将其标记为欺骗性网站,从而触发整个流程。为了尽量减少影响,Immich 团队计划将预览环境迁移到独立的域名 `immich.build`。 Immich 团队认为,Google Safe Browsing 服务在设计时没有充分考虑到开源或自托管软件。许多流行的开源项目都遇到过类似的问题。他们担心 Google 拥有随意标记任何域名并使其无法访问的权力,而除了不断向 Google 申请复审之外,似乎没有其他有效的解决办法。 评论区里,有用户表达了对 Google 这种行为的不满,认为 Google 拥有过大的权力,可以随意将一家公司从互联网上抹去,且缺乏正当程序和追索权。他们呼吁制定互联网权利法案,以保护个人和小型企业免受大型科技公司的随意打压。另有用户分享了自己类似的经历,表示网站被 Google 误判为危险站点,给客户带来了非常不好的印象,而且解决过程漫长且缺乏透明度。还有人建议,如果要在子域名上托管用户内容,最好将站点放在单独的域名上。 - 原文: [Google flags Immich sites as dangerous](https://immich.app/blog/google-flags-immich-as-dangerous) - Hacker News: [https://news.ycombinator.com/item?id=45675015](https://news.ycombinator.com/item?id=45675015) - 作者: janpio - 评分: 1165 - 评论数: 473 - 发布时间: 2025-10-23 04:53:49 --- ## 使用极简主义编程挑战 FizzBuzz 本文讲述了一位程序员面试时,用极简主义方法解决 FizzBuzz 问题的奇特经历,展示了如何从最基本的 Lambda 演算和组合子逻辑开始,逐步构建出解决 FizzBuzz 问题的代码。 文章的核心在于展示了使用极简主义编程,即“less than nothing”的方式,从最基础的元素出发构建复杂逻辑的可能性。作者通过定义 S 和 K 组合子,然后逐步推导出 I, B, C, W 等组合子,最终构建出布尔值、数字、算术运算、列表等数据结构和操作。文章还涉及了 Church numerals 和 Y 组合子的使用,以及如何通过 lazy evaluation 解决 JavaScript 中 Y 组合子的问题。作者甚至创建了一个名为 Skoobert 的 JavaScript 变体,以支持 lazy evaluation。整个过程充满了对编程语言底层原理的探索和对极简主义的追求。面试官 Dana 从最初的好奇到最后的无奈,也反映了这种编程方式在实际应用中的局限性。 虽然这种方式在实际工程中可能并不实用,但它提供了一种独特的视角来理解编程语言的本质和计算的本质。它挑战了我们对编程的固有认知,并鼓励我们思考如何用最少的工具实现最大的功能。 由于没有评论内容,这里跳过评论分析。 - 原文: [Programming with Less Than Nothing](https://joshmoody.org/blog/programming-with-less-than-nothing/) - Hacker News: [https://news.ycombinator.com/item?id=45678511](https://news.ycombinator.com/item?id=45678511) - 作者: signa11 - 评分: 243 - 评论数: 84 - 发布时间: 2025-10-23 13:42:31 --- ## 寻找遗失的PC Plus杂志扫描版(1991-1993) 本文主要讨论的是有人在网上寻找1991年至1993年间遗失的PC Plus杂志扫描版,希望能够找到这些早期电脑杂志的电子版本。文章中,提问者希望有人能够提供这些杂志的扫描件,以便回顾当年的电脑技术和文化。 有人提供了英国图书馆的链接,指出他们可能拥有这些杂志的实体版本,可以通过预约进行查阅。同时,也有人分享了互联网档案馆的链接,其中包含一些年份的扫描文件,但并不完整。此外,还有人建议可以在eBay等平台上购买旧的实体杂志。 还有一些评论提到了对PC Plus杂志的回忆,例如有人认为在Paul Stephens和Dave Pearman的时代,PC Plus是最好的电脑杂志。也有人回忆起曾经在PC Plus上看到关于Counter-Strike黑客的文章。 评论区主要提供了寻找资源的线索和对杂志的回忆。有人给出了查找实体杂志和扫描资源的建议,也有人分享了自己对该杂志的怀旧之情。这些评论从不同角度补充了主题,为寻找遗失的杂志扫描版提供了帮助。 - 原文: [Ask HN: Does anyone have scans of these missing PC Plus issues (1991–1993)?](https://news.ycombinator.com/item?id=45595807) - Hacker News: [https://news.ycombinator.com/item?id=45595807](https://news.ycombinator.com/item?id=45595807) - 作者: billpg - 评分: 59 - 评论数: 16 - 发布时间: 2025-10-16 01:25:17 --- ## C64 Blood Money移植幕后:游戏开发者自述 本文作者回顾了将Blood Money移植到C64平台的开发过程,分享了当年开发中的一些关键技术点和工具,包括多方向滚动、精灵复用、脚本、精灵压缩等。作者还提到了使用的开发工具PDS(Programmers Development System),以及在6502汇编中进行优化的一些技巧,例如零页内存的使用。 文章详细介绍了游戏开发的各个组成部分。作者首先回顾了当年使用的PDS开发系统,这是一个包含PC ISA卡和C64卡带的组合,提供了快速的编辑、汇编和调试功能。接着,作者深入代码层面,讲解了常量的定义、零页变量的分配以及精灵变量的分配。特别提到了碰撞检测,Blood Money没有使用基于字符的碰撞,而是使用了基于位图的碰撞,通过读取背景瓦片并与飞船的帧进行遮罩来实现。最后,作者还简单介绍了启动代码和中断处理,并预告了后续文章将深入探讨中断复用器。 评论区里,有用户分享了Blood Money在YouTube上的游戏视频,以及Amiga版本的演示。也有人提到PDS这类开发工具在当时主机游戏开发中很常见,通常需要更强大的主机来运行编译工具链和在线模拟器。还有评论提到David Jones曾发表过关于Amiga游戏开发的文章,对很多人产生了影响。另外,有用户求推荐在Linux下编写C64程序并用Vice模拟器运行的工具。还有玩家表达了对Blood Money这款游戏的喜爱,认为它氛围独特、制作精良。最后,有玩家提到Blood Money这类带有商店元素的射击游戏,让他们对通过优化游戏过程来获取金钱并尝试不同升级方案的游戏情有独钟。 - 原文: [C64 Blood Money](https://lemmings.info/c64-blood-money/) - Hacker News: [https://news.ycombinator.com/item?id=45679638](https://news.ycombinator.com/item?id=45679638) - 作者: mariuz - 评分: 90 - 评论数: 20 - 发布时间: 2025-10-23 16:41:21 --- ## Deta Surf:开源本地优先的AI笔记本 Deta Surf 是一款开源且本地优先的 AI 笔记本,旨在帮助用户整理文件、网页,并从中生成笔记。它强调数据的本地存储和开放的模型选择,为用户提供更强的控制权和隐私保护。 Deta Surf 的核心优势在于其本地优先的设计,所有数据都存储在本地,确保用户对数据的完全控制。同时,它支持用户选择不同的 AI 模型,包括本地模型,从而避免了对特定云服务的依赖。这款工具可以帮助用户高效地管理和组织各种信息,例如文件和网页,并利用 AI 技术自动生成笔记,提高信息处理效率。Deta Surf 适用于研究人员、学生、内容创作者以及任何需要高效组织和总结信息的人群。通过将信息收集、整理和生成笔记的过程整合到一个工具中,Deta Surf 简化了工作流程,提升了生产力。此外,开源的特性意味着用户可以根据自己的需求进行定制和扩展,使其更加灵活和适应不同的使用场景。 由于没有评论内容,这里就不做评论分析了。 - 原文: [Show HN: Deta Surf – An open source and local-first AI notebook](https://github.com/deta/surf) - Hacker News: [https://news.ycombinator.com/item?id=45680937](https://news.ycombinator.com/item?id=45680937) - 作者: mxek - 评分: 33 - 评论数: 15 - 发布时间: 2025-10-23 20:11:27 --- ## Nango 招聘后端工程师(远程) Nango 正在招聘 Staff 后端工程师,提供远程工作机会,致力于构建现代 B2B 软件的集成层。Nango 旨在简化、可靠化和原生化集成,解决企业采用更多软件和 AI 对数据需求日益增长时,无缝集成变得至关重要的问题。 Nango 的团队由经验丰富的开发者工具爱好者组成,他们热衷于以开放和谦逊的态度服务于开发者。公司推崇透明、社区和开发者友好性,并采用现代工具进行远程协作,注重结果而非工作时长。 Nango 面临着从开发者体验到高扩展性再到 API 碎片化等诸多技术挑战。团队成员来自 Uber、Netlify、Algolia 等公司,拥有丰富的开发者基础设施经验。目前,Nango 的收入和用户数量正在快速增长,现在加入正是好时机。 由于没有评论内容,这里跳过评论分析。 - 原文: [Nango (YC W23) is hiring Staff Back end Engs (remote)](https://www.nango.dev/careers) - Hacker News: [https://news.ycombinator.com/item?id=45680847](https://news.ycombinator.com/item?id=45680847) - 作者: bastienbeurier - 评分: 1 - 评论数: 0 - 发布时间: 2025-10-23 20:00:11 --- ## 常用 Shell 脚本分享:提升效率的利器 这篇文章分享了作者多年来维护 dotfiles 过程中积累的实用 shell 脚本,涵盖剪贴板、文件管理、网络和文本处理等多个方面,旨在提高日常开发和系统管理效率。 作者首先介绍了 `copy` 和 `pasta` 脚本,它们是系统剪贴板管理器的简单封装,方便在命令行中复制和粘贴内容。`pastas` 能够实时打印剪贴板内容,并监听剪贴板变化。`cpwd` 则用于快速复制当前目录路径到剪贴板。 在文件管理方面,`mkcd` 脚本可以一步创建目录并进入,`tempe` 用于创建和进入临时目录,方便进行沙箱实验,避免手动清理。`trash` 脚本提供安全的文件删除方式,将文件移动到回收站而不是直接删除。`mksh` 脚本则用于快速创建带有 Bash 前缀的可执行 shell 脚本。 对于网络操作,`serveit` 脚本可以在当前目录启动一个静态文件服务器,方便进行 Web 开发。`getsong` 和 `getpod` 脚本使用 `yt-dlp` 下载音视频内容,分别用于获取歌曲和播客。`getsubs` 脚本用于下载视频字幕,方便阅读或进行文本分析。`wifi on/off/toggle` 脚本用于控制系统 Wi-Fi。`url` 脚本则可以将 URL 解析成各个组成部分,方便提取信息,避免点击恶意链接。 在文本处理方面,`line` 脚本用于打印指定行,`scratch` 脚本用于打开一个临时的 Vim 缓冲区,方便进行快速文本编辑。`straightquote` 脚本将弯引号转换为直引号,避免代码错误。`markdownquote` 脚本在每行前面添加 `>`,方便在 Markdown 中引用文本。`length` 脚本返回字符串长度,`jsonformat` 脚本格式化 JSON 数据。这些脚本都旨在简化常见的文本处理任务。 - 原文: [Scripts I wrote that I use all the time](https://evanhahn.com/scripts-i-wrote-that-i-use-all-the-time/) - Hacker News: [https://news.ycombinator.com/item?id=45670052](https://news.ycombinator.com/item?id=45670052) - 作者: speckx - 评分: 1049 - 评论数: 311 - 发布时间: 2025-10-22 22:53:54 --- ## 理解无线电通信:从电容器到半波偶极天线 本文旨在用通俗易懂的方式介绍无线电通信的基本原理,避免使用过多的专业术语和复杂的数学公式,重点解释了天线的工作原理,以及接收器如何调谐到特定频率并过滤掉其他频率。 文章首先从一个简单的电容器开始,想象将其拉开,使其内部电场溢出到周围空间,形成电场。如果电场不变,则无法传输信息。但如果让电荷在极板之间来回移动,就会产生涟漪状的交替电场,以光速传播出去。辐射能量的大小取决于电荷移动的多少(强度)和每秒的转换次数(频率)。通过改变波的幅度,可以对信息进行编码。 然而,直接将拆解的电容器连接到电压信号源并不能有效工作,因为电容太小,需要很高的电压才能移动足够的电子。因此,文章引入了半波偶极天线,它由两个沿共同轴线的杆组成,每个杆的长度为四分之一波长。这种天线具有谐振特性,驱动信号的每个峰值到达杆的末端时,都会与前一个峰值的反射叠加,从而实现建设性干涉。 文章通过动画展示了半波偶极天线中的信号和反射模式,解释了电压干涉模式在远端是建设性的,但在馈电点附近是破坏性的,这使得天线能够高效且易于驱动。此外,文章还提到了其他长度的天线,以及如何使用电感器进行电气加长,以改善短天线的性能。最后,文章展示了半波天线周围实际电场的动画,突出了天线轴线上的两个盲区。 - 原文: [Radios, how do they work? (2024)](https://lcamtuf.substack.com/p/radios-how-do-they-work) - Hacker News: [https://news.ycombinator.com/item?id=45678603](https://news.ycombinator.com/item?id=45678603) - 作者: aqrashik - 评分: 140 - 评论数: 23 - 发布时间: 2025-10-23 13:56:23 --- ## 深入理解 Conflict-Free Replicated Data Types (CRDTs) 本文深入探讨了 Conflict-Free Replicated Data Types (CRDTs),这是一种专为分布式系统设计的数据结构,旨在无需协调的情况下实现数据的一致性。文章解释了 CRDTs 如何在不同节点上独立更新数据,并最终保证所有副本收敛到相同的状态。 文章首先解释了并发操作的真正含义,即两个操作之间没有因果关系,随后阐述了协调在分布式系统中的作用,即节点间通过通信和等待来达成一致。CRDTs 的核心优势在于其无需协调即可实现数据一致性,从而提高了系统的可用性。文章还提到了 Strong Eventual Consistency (SEC),这是 CRDTs 保证的一致性级别。 为了更具体地说明 CRDTs 的工作原理,文章介绍了 G-Counter (Grow-Only Counter) 这一经典 CRDT。G-Counter 通过维护一个向量计数器,每个节点对应一个槽位,并通过取元素级别的最大值来实现同步,确保最终所有节点收敛到相同的状态。文章还介绍了 PN-Counter (Positive-Negative Counter),它是通过组合两个 G-Counter 来实现同时跟踪 likes 和 dislikes 的功能。最后,文章强调了 CRDTs 的确定性和顺序无关性,保证了无论何时或如何同步,节点最终都会达到一致的状态。 - 原文: [Conflict-Free Replicated Data Types (CRDTs): Convergence Without Coordination](https://read.thecoder.cafe/p/crdt) - Hacker News: [https://news.ycombinator.com/item?id=45606224](https://news.ycombinator.com/item?id=45606224) - 作者: 0xKelsey - 评分: 7 - 评论数: 2 - 发布时间: 2025-10-16 23:00:06 --- ## 探讨忙碌海狸是否模拟了考拉兹数 本文探讨了忙碌海狸(Busy Beaver)是否会模拟考拉兹猜想中的数字,并比较了考拉兹带(Collatz's Tape)和图灵机在生成序列上的差异。文章通过修改考拉兹带,观察其在特定起始值下的磁带变化,并与BB(4)图灵机的行为进行对比,旨在研究两者之间是否存在关联。 文章首先介绍了考拉兹带的概念,它基于考拉兹函数,通过对磁带单元格状态的翻转和读写头的移动来模拟计算过程。具体来说,对于给定的起始数字 n,如果 n 是偶数,则将其除以 2,读写头向右移动;如果 n 是奇数,则计算 (3n+1)/2,读写头向左移动。同时,根据 n 除以 3 的余数来翻转当前单元格的状态。这个过程一直持续到 n=1 为止。作者展示了 n=371581 时考拉兹带的演变过程,并将其与BB(4)图灵机的磁带演变进行了比较。 文章指出,虽然两者存在显著差异,但已知许多忙碌海狸的冠军(以及候选者)表现出类似考拉兹猜想的行为。因此,作者提出了一个问题:忙碌海狸本身是否会模拟任何考拉兹数?文章还列出了一些特定的 n 值(例如 10^20+2, 10^20-1, 10^25, 10^25-1, 10^70),用于进一步的研究。 评论区中,LegionMammal978 指出,虽然一些冠军机器表现出类似考拉兹猜想的行为,但它们通常不是通过迭代一个具有随机比例因子的函数直到值达到零(如原始考拉兹迭代),而是通过迭代一个具有固定比例因子的函数直到达到某个模值。例如,BB(5)机器重复地将一个一元计数器乘以 5/3 并添加一个小的偏移量,直到该值变为 2 mod 3 并且机器停止。这种“一旦达到某个模值就停止”的条件也被用于终止迭代指数运算和更高级的运算。这个评论从另一个角度解释了忙碌海狸与考拉兹猜想之间的联系,强调了模运算在忙碌海狸程序中的作用。 - 原文: [Which Collatz numbers do Busy Beavers simulate (if any)?](https://gbragafibra.github.io/2025/10/16/collatz_ant11.html) - Hacker News: [https://news.ycombinator.com/item?id=45626129](https://news.ycombinator.com/item?id=45626129) - 作者: Fibra - 评分: 15 - 评论数: 1 - 发布时间: 2025-10-18 17:54:56 --- ## Gemini CLI 交互性升级:在云端玩转 Vim、Top 和 Git Rebase Google 发布了 Gemini CLI 的新版本,最大的亮点是增强了交互性,开发者可以直接在 Gemini CLI 内部运行像 Vim、Top 甚至交互式的 Git Rebase 等复杂命令,无需切换到本地终端。 这次升级的关键在于引入了 pseudo-terminal (PTY) 支持。这意味着开发者可以在云端环境中获得更接近本地终端的体验。 以前,如果需要在 Gemini CLI 中执行交互式 shell 命令,必须先退出 Gemini CLI,而且这些命令是在 Gemini CLI 的上下文之外运行的。 现在,所有操作都可以在 Gemini CLI 的上下文中完成,避免了上下文切换带来的不便,提高了开发效率。 具体来说,这意味着你可以在 Gemini CLI 中直接编辑文件,监控系统资源使用情况,或者进行交互式的 Git 代码库操作,而无需离开云端开发环境。 这对于习惯使用命令行工具的开发者来说,无疑是一个巨大的福音。 想象一下,你可以在云端服务器上使用熟悉的 Vim 编辑器,或者通过 Top 命令实时监控服务器的运行状态,这种体验是不是很棒? 总之,这次 Gemini CLI 的交互性升级,旨在让开发者在云端也能拥有如同本地终端般流畅、高效的开发体验。 - 原文: [Run interactive commands in Gemini CLI](https://developers.googleblog.com/en/say-hello-to-a-new-level-of-interactivity-in-gemini-cli/) - Hacker News: [https://news.ycombinator.com/item?id=45605823](https://news.ycombinator.com/item?id=45605823) - 作者: ridruejo - 评分: 179 - 评论数: 61 - 发布时间: 2025-10-16 22:31:13 --- ## Google 量子突破:Quantum Echoes 算法实现可验证的量子优势 Google 最新发布的 Quantum Echoes 算法,标志着量子计算在实际应用上迈出了重要一步。该算法在 Willow 量子芯片上演示了可验证的量子优势,为未来的科学发现和分析开辟了道路。 文章指出,Quantum Echoes 算法的核心在于它能够创建和测量量子系统的“回声”,这些回声包含了关于系统状态的丰富信息。通过巧妙地设计量子线路,研究人员能够提取这些信息,并利用它们来解决传统计算机难以处理的复杂问题。 Willow 芯片是 Google 开发的超导量子处理器,拥有高保真度和连通性,为 Quantum Echoes 算法的成功实现提供了硬件基础。实验结果表明,Willow 芯片在运行 Quantum Echoes 算法时,能够达到传统计算机无法比拟的性能。 这项研究的意义在于,它不仅验证了量子计算机的潜力,也为量子算法的设计和验证提供了一种新的思路。Quantum Echoes 算法有望在材料科学、药物发现、金融建模等领域发挥重要作用,推动相关领域的创新发展。Google 强调,这仅仅是量子计算旅程中的一小步,未来将继续投入资源,加速量子技术的研发和应用。 - 原文: [Willow quantum chip demonstrates verifiable quantum advantage on hardware](https://blog.google/technology/research/quantum-echoes-willow-verifiable-quantum-advantage/) - Hacker News: [https://news.ycombinator.com/item?id=45670443](https://news.ycombinator.com/item?id=45670443) - 作者: AbhishekParmar - 评分: 458 - 评论数: 234 - 发布时间: 2025-10-22 23:16:19 --- ## F1 网站漏洞:如何访问 Max Verstappen 的护照和个人信息 本文讲述了安全研究员如何通过 FIA(国际汽车联合会)的网站漏洞,访问包括 Max Verstappen 在内的 F1 车手的护照和个人身份信息 (PII)。研究人员通过参加与 F1 大奖赛相关的网络活动,发现了 FIA 驾驶员分类网站 (drivercategorisation.fia.com) 存在安全漏洞。 他们首先注册了一个账户,并注意到更新用户资料的 HTTP PUT 请求返回的 JSON 响应中包含一个 "roles" 参数。通过分析 JavaScript 代码,他们发现网站存在多种角色,包括管理员角色。于是,他们尝试通过修改 HTTP PUT 请求来更新自己的角色,成功获得了管理员权限。 获得管理员权限后,研究人员能够访问车手的个人资料,包括密码哈希、电子邮件地址、电话号码、护照、简历等敏感信息。他们还能够访问与车手分类相关的内部通信记录,包括对其表现的评价和委员会的决定。 研究人员在发现能够访问 Max Verstappen 的护照、简历、许可证、密码哈希和 PII 后,停止了测试。他们强调,他们没有访问任何护照或敏感信息,并且所有数据都已删除。该漏洞已于 2025 年 3 月 6 日报告给 FIA,网站随后下线,并在 2025 年 10 月 10 日得到了修复。 评论区里,有用户指出这不仅仅是一个漏洞,而是一系列安全失败,例如将敏感文件长期保存在服务器上。有人希望研究人员能因此获得终身免费门票。也有人认为 FIA 能够当天就下线网站,反应速度惊人。还有人建议 FIA 应该授予作者 F1 超级驾照,让他们有机会驾驶 F1 赛车。另有评论提到,在 2025 年,PII 更多的是一种法律责任,并询问是否有以匿名性为默认的应用架构设计。有人询问研究人员是否因此类探测行为受到过法律威胁,或者是否在没有漏洞赏金计划的情况下获得过奖励。最后,有人提问这是否属于后端没有对可写入字段进行白名单过滤的情况。 - 原文: [Accessing Max Verstappen's passport and PII through FIA bugs](https://ian.sh/fia) - Hacker News: [https://news.ycombinator.com/item?id=45673130](https://news.ycombinator.com/item?id=45673130) - 作者: galnagli - 评分: 538 - 评论数: 122 - 发布时间: 2025-10-23 02:21:54 --- ## Karpathy 探讨 DeepSeek-OCR 论文:像素是否比文本更适合作为 LLM 的输入? Andrej Karpathy 对 DeepSeek-OCR 论文发表了自己的看法,他认为该论文有趣的地方在于探讨了像素是否比文本更适合作为大型语言模型 (LLM) 的输入。他质疑文本 token 的效率,并提出了一种激进的观点:LLM 的所有输入都应该只使用图像。即使是纯文本输入,也应该先渲染成图像再输入。 Karpathy 认为,这种方法有几个优点:更高的信息压缩率,从而缩短上下文窗口并提高效率;更通用的信息流,可以处理粗体、彩色文本和任意图像;可以使用双向注意力机制,而不再局限于自回归注意力;最重要的是,可以彻底抛弃 tokenizer。他批评 tokenizer 既丑陋又独立,并非端到端的设计,而且会引入 Unicode 和字节编码的复杂性,以及安全风险。使用像素输入,可以将文本视为图像,利用计算机视觉的优势。OCR 只是视觉到文本任务的一种,而文本到文本的任务也可以转化为视觉到文本的任务。 评论区也引发了热烈的讨论,许多人对 "杀死 tokenizer" 的想法表示赞同,认为 tokenization 是一种 hack。有人指出,目前的 tokenization 方法在量化语言方面存在根本性的错误。也有人认为,虽然像素作为信息表示可能更强大,但需要有人提出替代 tokenizer 的方案。 另一种观点认为,使用原始像素或语音信号是另一种近似,重要的是研究人员正在对当前架构的设计假设进行压力测试。学习对齐多种模态的方法可能会揭示更好的潜在结构或训练机制,从而改进文本编码器。此外,对于那些不能整齐地分割成单词的脚本和语言,替代编码可能有助于模型更好地处理。还有人指出,在某些情况下,例如验证域名时,需要 Unicode 的精确性。 对于图像输入是否比文本更小、信息更密集的问题,也有人提出了疑问。总的来说,讨论集中在如何更有效地表示语言,以及如何改进 LLM 的输入方式。 - 原文: [Karpathy on DeepSeek-OCR paper: Are pixels better inputs to LLMs than text?](https://twitter.com/karpathy/status/1980397031542989305) - Hacker News: [https://news.ycombinator.com/item?id=45658928](https://news.ycombinator.com/item?id=45658928) - 作者: JnBrymn - 评分: 330 - 评论数: 125 - 发布时间: 2025-10-22 01:43:16 --- ## Stalwart 推出完整 JMAP 协议支持,引领协作技术新时代 Stalwart 宣布全面支持 JMAP 协议,包括日历、联系人、文件存储和共享,成为首个完整支持 JMAP 协作协议族的服务器。这一里程碑标志着开放、高效和优雅的群件进入了一个新时代。 文章指出,IETF 近年来重新定义了邮件、日历和联系人的同步和共享方式,推出了一系列 JMAP 协议扩展,旨在替代 CalDAV、CardDAV 和 WebDAV 等传统技术。这些新协议包括 JMAP for Calendars、JMAP for Contacts、JMAP for File Storage、JMAP Sharing、JSCalendar 和 JSContact。它们共同构成了一个统一且优雅的生态系统,克服了 WebDAV 技术的碎片化问题。 WebDAV 及其衍生技术虽然应用广泛,但基于 XML 的设计冗长、不一致且难以正确实现。信息分散在 HTTP 头部、XML 负载甚至嵌入的 iCalendar 数据中,导致客户端和服务器之间存在兼容性问题。iCalendar 和 vCard 也积累了大量的技术债务,包含许多很少使用、过时或实现不一致的属性和参数,使得格式笨重且容易出错。 JMAP 协议最初是作为 IMAP 和 SMTP 提交的更高效、更现代的替代品而开发的,其优势在于简洁、清晰和网络效率,并且构建于 JSON over HTTPS 之上。现在,随着 JMAP for Calendars、Contacts、Files 和 Sharing 的推出,相同的设计理念扩展到整个协作堆栈。这些协议提供了一个干净、统一且易于实现的 API,用于处理邮件、日历、联系人、文件和共享资源等所有个人和群组数据。JSCalendar 和 JSContact 则将 iCalendar 和 vCard 重新构想为基于 JSON 的优雅格式,消除了累积的冗余,统一了表示形式,并提供了清晰、明确且富有表现力的数据模型。 Stalwart 对 JMAP 的完整支持,意味着开发者和组织可以构建在单一、连贯、基于 JSON 的框架之上,用于处理邮件、联系人、日历和共享资源。这将简化实现,减少互操作性问题,并加速创新。由于 Stalwart 是第一个支持这些新协议的完整 JMAP 服务器,因此客户端支持仍在涌现。Mailtemi、Parula 和 OpenCloud 等项目正在积极开发 JMAP Calendars、Contacts 和 File Storage 的客户端实现。 Stalwart 团队感谢 NLNet 通过 NGI Zero 资助计划对这些功能开发的支持。经过四年的开发,Stalwart 现在已经完成了所有核心功能。团队目前正专注于最终确定数据库模式、提高性能,并解决 GitHub 上的增强请求。他们的目标是在未来几个月内发布稳定的 1.0.0 版本。 - 原文: [JMAP for Calendars, Contacts and Files Now in Stalwart](https://stalw.art/blog/jmap-collaboration/) - Hacker News: [https://news.ycombinator.com/item?id=45672336](https://news.ycombinator.com/item?id=45672336) - 作者: StalwartLabs - 评分: 357 - 评论数: 166 - 发布时间: 2025-10-23 01:26:06 --- ## Ovi:Character AI 的跨模态音视频生成模型 Ovi 是 Character AI 推出的一个令人兴奋的项目,它是一个能够同时生成视频和音频内容的跨模态模型。该模型支持文本或文本+图像作为输入,能够生成 5 秒钟的视频,帧率为 24 FPS,分辨率为 720x720,并且支持不同的宽高比(如 9:16, 16:9, 1:1 等)。更令人惊喜的是,Ovi 还支持更高的分辨率,例如 960x960,甚至可以尝试 720x1280 或 704x1344 这样的分辨率,以获得更出色的效果。 Ovi 的关键特性包括高质量的音频分支,这是通过从头开始设计和预训练一个 50 亿参数的音频分支来实现的,使用了 Character AI 内部高质量的音频数据集。该模型还提供了灵活的输入方式,既可以使用纯文本,也可以使用文本+图像的组合。 目前,用户可以在 wavespeed.ai 和 HuggingFace 上体验 Ovi 的在线演示。此外,ComfyUI 也提供了对 Ovi 的集成支持。 Ovi 团队还列出了一个详细的待办事项清单,包括发布研究论文和演示网站、发布 11B 模型的检查点、提供推理代码(支持文本或文本+图像输入、Gradio 应用代码、多 GPU 推理、fp8 权重和 qint8 量化等)、改进序列并行实现的效率、实现 FSDP 分片推理、提供视频创建示例提示和格式、使用更高分辨率的数据微调模型、使用 RL 进行性能改进、开发新功能(如更长的视频生成、参考语音条件)以及开发用于更快推理的蒸馏模型。 为了方便用户上手,Ovi 提供了示例提示,包括文本到音视频 (T2AV) 和图像到音视频 (I2AV)。在提示格式方面,Ovi 使用特殊的标签来控制语音和音频:`<S>Your speech content here<E>` 用于表示语音内容,`<AUDCAP>Audio description here<ENDAUDCAP>` 用于描述视频中的音频或音效。 安装方面,Ovi 提供了详细的步骤,包括克隆仓库、创建和激活虚拟环境、安装 PyTorch 和其他依赖项,以及安装 Flash Attention。 总而言之,Ovi 是一个功能强大且易于使用的跨模态音视频生成模型,它为开发者和科技爱好者提供了一个创造高质量音视频内容的强大工具。 - 原文: [Ovi: Twin backbone cross-modal fusion for audio-video generation](https://github.com/character-ai/Ovi) - Hacker News: [https://news.ycombinator.com/item?id=45674166](https://news.ycombinator.com/item?id=45674166) - 作者: montyanderson - 评分: 297 - 评论数: 108 - 发布时间: 2025-10-23 03:42:36 --- ## Microsoft 即将停止 Office Online Server 服务 微软计划停止 Office Online Server (OOS) 服务,鼓励用户迁移到 Microsoft 365。OOS 允许用户通过浏览器访问和编辑 Office 文档,主要面向那些不想完全依赖云服务的企业。 OOS 本质上是 Office Web Apps Server 的后续版本,为企业提供了在本地部署 Office Web 应用的能力。然而,随着 Microsoft 365 的日益普及和功能的增强,微软似乎认为继续维护 OOS 的意义不大。此举反映了微软推动用户转向云服务的策略,以及对本地部署解决方案支持的逐步减少。对于仍然依赖 OOS 的企业来说,需要开始规划迁移到 Microsoft 365,或者寻找其他的在线 Office 解决方案。停止 OOS 也意味着企业需要重新评估其文档协作和访问策略,确保业务的连续性。微软可能会提供一定的迁移工具和支持,帮助企业平稳过渡。最终,这一变化可能会加速企业对云服务的采用,并进一步巩固 Microsoft 365 在办公软件市场的地位。 - 原文: [Microsoft puts Office Online Server on the chopping block](https://www.theregister.com/2025/10/22/microsoft_office_online_server/) - Hacker News: [https://news.ycombinator.com/item?id=45682067](https://news.ycombinator.com/item?id=45682067) - 作者: Brajeshwar - 评分: 11 - 评论数: 2 - 发布时间: 2025-10-23 22:15:22 --- ## 为什么选择 SSA 编译器? 本文探讨了静态单赋值 (SSA) 形式在编译器设计中的重要性,解释了为什么它在优化代码方面如此受欢迎。SSA 通过将命令式代码转换为更易于分析和优化的形式,极大地简化了编译器优化过程。 文章首先介绍了 SSA 的基本概念,它是一种中间表示 (IR),主要用于编译器优化面向寄存器机器的命令式代码。与表面语言或汇编语言不同,SSA IR 更易于编译器识别优化机会。命令式代码的优化面临挑战,因为需要跟踪程序状态的突变。文章通过一个 C 语言示例,展示了如何通过将变量替换为表达式来简化代码,最终实现常量折叠和简化。这种方法将带有突变的函数转换为组合电路,使其更易于分析。 组合电路的关键优势在于它们是有向无环图 (DAG),这使得可以使用高效的图算法来分析程序。文章还通过另一个示例,说明了在复杂控制流存在时,简单替换变量的局限性。SSA 通过确保每个变量只被赋值一次来解决这个问题,从而保持了程序的电路特性。文章还提到,SSA 的核心思想是将程序转换为电路形式,以便利用图论工具进行分析和优化。 由于文章没有提供评论内容,因此无法进行评论观点的总结和分析。 - 原文: [Why SSA Compilers?](https://mcyoung.xyz/2025/10/21/ssa-1/) - Hacker News: [https://news.ycombinator.com/item?id=45674568](https://news.ycombinator.com/item?id=45674568) - 作者: transpute - 评分: 195 - 评论数: 73 - 发布时间: 2025-10-23 04:13:31 --- ## Element: setHTML() 方法简介 这篇文章介绍了 Web API 中的 `Element: setHTML()` 方法,它允许开发者更安全、更便捷地设置元素的内容。`setHTML()` 方法旨在替代 `innerHTML` 属性,提供内置的 XSS 防护机制,从而减少安全风险。 `setHTML()` 方法通过对传入的 HTML 字符串进行安全解析和清理来实现 XSS 防护。它使用 Trusted Types API 来确保只有可信的数据才能被插入到 DOM 中。该方法还支持配置选项,允许开发者自定义安全策略和处理错误。例如,可以指定如何处理不受支持的元素或属性,以及如何报告潜在的安全问题。`setHTML()` 方法能够提升 Web 应用的安全性,同时简化开发流程。它通过减少手动清理和验证 HTML 的需求,降低了引入漏洞的风险。此方法在现代浏览器中逐渐得到支持,并且可以通过 polyfill 在旧版本浏览器中使用。使用 `setHTML()` 可以更清晰地表达代码意图,并减少因不正确的 HTML 操作而导致的错误。它不仅可以提高代码的可读性和可维护性,还有助于构建更健壮和安全 Web 应用。 - 原文: [Element: setHTML() method](https://developer.mozilla.org/en-US/docs/Web/API/Element/setHTML) - Hacker News: [https://news.ycombinator.com/item?id=45666497](https://news.ycombinator.com/item?id=45666497) - 作者: todsacerdoti - 评分: 231 - 评论数: 123 - 发布时间: 2025-10-22 17:03:40 --- ## 在线畅玩抽象策略棋盘游戏 这个网站提供了一个在线平台,让你可以和朋友或电脑对战,玩各种抽象策略棋盘游戏,例如 Hex, Tumbleweed, Amazons 和 Connect 6。 网站作者希望推广更多有趣的抽象策略游戏,让它们像象棋和围棋一样受欢迎。 网站上提供的游戏都是纯粹的策略游戏,没有运气成分,非常考验玩家的逻辑思维和策略能力。每款游戏都有独特的规则和玩法,例如 Hex 是一种连接游戏,玩家需要在棋盘上连接自己的两端;Tumbleweed 是一种领地游戏,玩家需要控制棋盘上的区域;Amazons 是一种阻碍游戏,玩家需要通过放置亚马逊来限制对手的行动;Connect 6 是一种连线游戏,玩家需要将六个棋子连成一线。 这些游戏规则简单易懂,但策略深度却非常高,适合喜欢挑战智力的玩家。网站还提供了练习机器人,让玩家可以随时随地练习,提高自己的游戏水平。如果你对抽象策略游戏感兴趣,不妨去网站上试试,看看哪款游戏最适合你。网站作者也欢迎大家提供反馈意见,以便不断改进和增加新的游戏。 评论区里,有玩家推荐了 Hive 这款抽象策略游戏,认为它非常有趣且有深度。 还有玩家对 Hex 这款游戏的起源故事很感兴趣,惊讶于两位数学家在不同时间独立发明了同一款游戏。 另外,有玩家好奇抽象棋盘游戏的定义。 还有资深棋类玩家感叹,现在深度策略游戏越来越少,大家似乎更喜欢快节奏和带有随机性的游戏。 - 原文: [Play abstract strategy board games online with friends or against bots](https://abstractboardgames.com/) - Hacker News: [https://news.ycombinator.com/item?id=45609478](https://news.ycombinator.com/item?id=45609478) - 作者: abstractbg - 评分: 139 - 评论数: 63 - 发布时间: 2025-10-17 03:12:47 --- ## Clojure 宏的巧妙用法:调试利器 #p 的进阶之路 本文探讨了 Clojure 中用于调试的宏 `#p` 的巧妙实现,它类似于增强版的 `println`,可以打印变量的值和表达式,方便开发者调试。文章深入研究了如何让 `#p` 宏在线程宏(如 `->` 和 `->>`)中也能正常工作,并展示了使用 probe 技术实现的通用解决方案。 文章首先介绍了 `#p` 宏的基本用法和实现原理,即通过 reader tag 方式进行替换,打印表达式的值。接着,作者指出了 `#p` 在线程宏中直接使用会遇到的问题,因为 reader tag 的展开顺序会导致语法错误。为了解决这个问题,文章提出了一种方案,即创建一个新的宏 `p->`,专门用于线程宏。但作者并不满足于此,而是进一步探索,最终利用 probe 技术,实现了一个通用的 `#p` 宏,可以同时在普通代码和线程宏中使用。Probe 技术的关键在于创建一个匿名函数,通过检查 `::undef` 参数的位置来判断当前是否处于线程宏中,并根据情况进行不同的处理。最终,作者成功地扩展了 `#p` 宏的功能,使其更加强大和通用,并将其集成到了 Clojure+ 库中。 评论区对文章的观点褒贬不一。 一些开发者认为,虽然这个技巧很聪明,但可能过于复杂,不值得为一个简单的调试宏付出如此大的努力。他们认为,宏应该用于解决函数无法解决的问题,并且需要有足够的优势。 另一些开发者则对宏的使用持谨慎态度,认为在大多数情况下,函数比宏更合适。他们认为,即使宏能够实现一些函数无法实现的功能,也应该仔细权衡其带来的复杂性和维护成本。例如,有人指出 `core.async` 库虽然使用了宏来实现异步编程,但由于宏的限制,导致其 API 的使用体验并不理想。 还有一些评论从代码高尔夫的角度分析了 `#p` 宏的优势,认为在某些情况下,它可以减少代码的字符数。此外,也有评论对文章的暗黑模式表示赞赏。总的来说,评论区对宏的使用提出了不同的看法,强调了在选择宏时需要谨慎权衡其优缺点。 - 原文: [When You Get to Be Smart Writing a Macro](https://tonsky.me/blog/hashp/) - Hacker News: [https://news.ycombinator.com/item?id=45601856](https://news.ycombinator.com/item?id=45601856) - 作者: borjs - 评分: 51 - 评论数: 13 - 发布时间: 2025-10-16 13:51:02 --- ## 基于 WebSockets 的趣味莫尔斯电码聊天应用 这篇文章介绍了一个使用 WebSockets 构建的简单莫尔斯电码聊天应用。这个应用允许用户通过莫尔斯电码进行实时交流,每个用户都有不同的音调,帮助区分消息来源。虽然界面简洁,但它提供了一种独特的交流方式,唤起了人们对传统通信方式的兴趣。 该应用的核心是利用 WebSockets 实现低延迟的实时通信。用户可以通过“.”和“-”输入莫尔斯电码,应用会将这些代码转换成声音发送给其他用户。不同的用户拥有不同的音调,这在多人同时发送消息时尤为重要,可以帮助用户区分不同的信息来源。尽管目前的应用还比较基础,但它展示了 WebSockets 在构建实时应用方面的潜力。 评论区对这个应用提出了各种有趣的观点和建议。有人提到,当很多人同时使用时,界面会变得混乱,建议增加窄带滤波器来改善用户体验,使其更适合真正的无线电通信(QSO)。还有人建议加入自动解码器或显示莫尔斯电码字母表,方便不熟悉莫尔斯电码的用户使用。一位开发者分享了一个 iOS 上的莫尔斯电码学习应用,可以作为该应用的辅助工具。另外,有人开玩笑说,可以在这个应用上构建 TCP 协议栈,进一步扩展其功能。总体而言,评论区对这个应用的创意表示赞赏,并提出了许多有价值的改进建议。 - 原文: [Show HN: Silly Morse code chat app using WebSockets](https://noamtamir.github.io/morwse/) - Hacker News: [https://news.ycombinator.com/item?id=45627586](https://news.ycombinator.com/item?id=45627586) - 作者: noamikotamir - 评分: 59 - 评论数: 24 - 发布时间: 2025-10-18 22:18:03 --- ## 分布式片上忆阻器计算系统仿真环境 本文介绍了一种用于片上忆阻器计算系统的分布式仿真环境,旨在加速人工智能设备的开发和集成。该环境通过实时仿真,可在芯片实际生产前分析系统各个方面、测试微代码并部署应用程序。 该仿真环境名为IMCE (In-Memory Computing Emulator),由前端单元(IMCE-FE)、多个处理单元(IMCE-PUs)以及配置和数据分析服务器(IMCE-CDA)组成。为了支持深度神经网络(DNN)中任何节点的功能并仿真所有计算技术,IMCE-PU分为模拟(AnPU)和数字(DiPU)两种类型,每种都使用定制的硬件加速器。各个IMCE单元之间通过1或10 Gbps的链路进行通信,IMCE-PU组织成神经处理单元(NPU)集群,多个NPU集群互连形成大型仿真环境。每个PU可以支持多个DNN节点,因此该仿真器可以支持大型DNN。 IMCE-PU遵循计算和转发方法来实现DNN的推理引擎。一旦数据进入其输入缓冲区,处理立即开始,然后根据DNN的推理图将输出数据转发到下一个IMCE-PU。通过这种方法,实现了最大的流水线处理,从而提高了处理速度。IMCE-FE单元支持被仿真IC的电气接口,允许IMCE与IC的测试和验证平台一起使用。为此,需要为每个被仿真IC开发专用的IMCE-FE单元。IMCE-FE基于专用FPGA,并有助于通过高速(1或10 Gbps)链路与IMCE-CDA服务器和IMCE-PU进行通信。每个IMCE单元都使用专用的通信引擎(ComEng)与其他IMCE进行可靠的数据交换。当使用Gbps以太网时,ComEng单元使用TCP/IP协议进行数据传输。多个ComEng单元和互连的交换机仿真IC内部使用的数据流机制,用于在各个DNN节点之间进行数据交换,支持IC各个单元之间可靠、透明和非阻塞的数据传输。IMCE-CDA单元用于根据目标DNN的特性设置IMCE。IMCE-CDA利用定制的软件工具将AI模型映射到IMCE的内部架构。 - 原文: [A Distributed Emulation Environment for In-Memory Computing Systems](https://www.arxiv.org/pdf/2510.08257) - Hacker News: [https://news.ycombinator.com/item?id=45566088](https://news.ycombinator.com/item?id=45566088) - 作者: oldfuture - 评分: 17 - 评论数: 1 - 发布时间: 2025-10-13 16:27:15 ---

  

🫵 来啊,说点有用的废话!