每日HackerNews RSS

## 空指针“问题”重审 托尼·霍尔,空引用概念的发明者,曾称其为他“价值十亿美元的错误”,因为它会导致错误和漏洞。然而,这种批评往往被夸大。空指针解引用实际上比其他内存安全问题*更容易*捕获,并且在C和Odin等语言中相对不常见。 核心问题并非空指针本身,而是关注单个元素而非整体程序架构的心态。试图“解决”空指针的问题——例如强制指针检查或强制初始化——会带来显著的权衡。例如,在所有地方强制初始化会降低性能并导致不良设计。 作者认为,更好的方法是转向“分组元素”的心态,专注于管理更大、更连贯的内存块,而不是单个分配。这自然可以缓解许多内存安全问题,包括使用已释放内存的错误。 语言设计,例如Odin,应该考虑到这些心态。Odin有意允许隐式零初始化,以鼓励更全面的架构方法,即使这意味着接受空指针错误的可能——这些错误通常很容易调试——作为一种值得的妥协。最终,关注架构原则比追求针对每种潜在错误的编译时保证更有效。

一个黑客新闻的讨论围绕着计算机科学中一个潜在的“数十亿美元的错误”——空指针的概念。一位名为“Kinrany”的评论者认为,避免空指针要么需要程序员不断检查指针(令人厌烦),要么需要*强制*显式初始化所有值。 他们认为后者,虽然看似无害,却是一个巨大的负担。另一位用户“rzwitserloot”反驳说,这最终归结于工具——编译器检查确保在使用内存之前已初始化——实际上支持了Kinrany关于需要系统强制执行初始化规则的观点。核心争论在于程序员便利性和防止由未初始化指针引起的错误之间的权衡。

## FreeBSD 家庭服务器:WireGuard VPN 设置 本文详细介绍了在 FreeBSD 14.3 服务器上设置 WireGuard VPN 的过程,该服务器用作 NAS,用于连接家庭和办公室网络。目标是启用对 NAS 的安全访问,并最终直接在服务器的 ZFS 存储池上托管博客文件/备份。 WireGuard 因其较小的代码库、内核级操作、内置加密和点对点架构而被选为 OpenVPN 的替代方案。设置涉及安装 `wireguard-tools`、配置内核模块以及为服务器(FreeBSD 主机)和客户端(家庭笔记本电脑)创建密钥对。 关键步骤包括启用 IP 转发、配置数据包过滤器 (PF) 防火墙以允许 VPN 流量和网络之间的访问,以及在办公室路由器上设置端口转发。最终配置允许在两台笔记本电脑和 FreeBSD 服务器之间进行 SSH 和 ping 访问,即使办公室笔记本电脑未连接 VPN 也是如此。作者强调路由表和防火墙规则的重要性,以实现网络之间的通信,最终实现功能齐全且安全的连接。

黑客新闻 新 | 过去 | 评论 | 提问 | 展示 | 招聘 | 提交 登录 FreeBSD 家庭 NAS,第三部分:WireGuard VPN、路由和 Linux 对等方 (co.ua) 18 分,by todsacerdoti 1 小时前 | 隐藏 | 过去 | 收藏 | 讨论 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请 YC | 联系方式 搜索:

在线购物正面临由生成式人工智能助长的新一轮欺诈。商家,尤其是在中国,报告称退款请求激增,并附带人工智能生成的损坏商品图像。这些图像通常包含不现实的细节——像纸一样撕裂的陶瓷、无意义的字符,或生物学上不可能的场景(例如九条腿的螃蟹),从而暴露出这些骗局。 问题主要集中在食品、美容产品和易碎品等类别,因为低成本商品的退货通常会被放弃。虽然最初在RedNote和抖音等平台上出现,但该问题现在已蔓延全球,反欺诈公司Forter报告称,自今年年初以来,人工智能篡改的退款图像增加了15%以上。 这些骗局的成功依赖于退款审核员通常缺乏时间或专业知识来仔细分析每张图像,从而制造了人工智能可以利用的漏洞。中国曾有一起案件导致买家被捕,原因是揭露了一起特别恶劣的与螃蟹相关的欺诈行为。

黑客新闻 新 | 过去 | 评论 | 提问 | 展示 | 招聘 | 提交 登录 使用AI生成图像来获得退款 (wired.com) 7点 由 MattSayar 2小时前 | 隐藏 | 过去 | 收藏 | 讨论 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请YC | 联系 搜索:

``` JavaScript 引擎动物园 amd64: i9-10900K 3.7-5.3GHz - Linux arm64: Mac M4 4.5GHz - Linux VM 显示变体 仅 JITless 仅 v8-v7 基准测试 引擎 分数 二进制文件 代码行数 语言 JIT 年数 目标 ES1-5 ES6 ES2016+ 星标 贡献者 组织 许可证 描述 ```

一个新的网站 zoo.js.org 比较了各种 JavaScript 引擎的性能,例如 V8、JavaScriptCore(用于 Safari)和 SpiderMonkey(用于 Firefox)。Hacker News 上的初步反应强调了一些有趣的观察:JavaScriptCore 一致地优于 V8,而 SpiderMonkey 表现落后。 用户对 Firefox 的性能表示失望,指出其基准测试得分(JetStream2)与 Chromium 相比存在显著差异。一个特别令人印象深刻的项目 Brimstone 也被讨论——它是一个与 ES6 高度兼容的引擎,其代码库非常小(74k 行代码),而 V8 则有 1.3M 行。 讨论指出,硬件限制、历史发展和工程选择的复杂相互作用塑造了 JavaScript 引擎的性能。

## 评论:既解释“为什么”,也解释“是什么”? 普遍的观点是代码注释应该解释*为什么*这样做,而不是*做什么*。然而,作者认为在某些情况下,“是什么”的注释也是有用的。仅仅陈述代码并不总是自解释的,尤其是在变量名简洁或代码逻辑不明显时——强迫读者来回跳转以理解基本功能会造成令人沮丧的上下文切换和潜在错误。 虽然“为什么”通常属于提交信息或测试用例,但将关键上下文埋藏在那里同样可能存在问题,需要费力地搜索历史记录。 作者以鲍勃·马丁的《Extract Till You Drop》中的一个例子来说明,为了清晰性而进行的重构实际上*增加了*认知负荷,因为需要频繁跳转到不同的方法。他们认为,在某些情况下,代码本身中简洁的“是什么”注释可能比过度抽象、高度重构的代码*更*易于理解,从而最大限度地减少这些破坏性上下文切换。 最终,这个论点不是为了提倡*糟糕*的代码,而是为了认识到有时恰当的“是什么”注释可以提高理解力并防止误解。

一个Hacker News的讨论围绕代码中注释的价值,起因于一篇文章质疑注释是否应该解释代码*做什么*。许多评论者同意,过度分解的代码,让人联想到“Uncle Bob”风格编程(极度细粒化的方法),会阻碍可读性和可维护性。用户报告说,他们感到沮丧,因为需要不断地在定义之间跳转,而不是理解整体流程。 一些人认为“做什么”的注释*是*有价值的,尤其是在复杂的算法或使用简洁的链式操作(如R中的dplyr)时,其目的并不明显。另一些人则提倡在代码*内部*进行清晰的文档记录,例如,一段块注释解释函数目的和使用示例。 共识倾向于优先考虑可读性,即使这意味着牺牲对某些重构原则的严格遵守。最终,注释应该增强理解,尤其是在使用了可能随着时间被遗忘的“巧妙技巧”时。

## 第三方内容:隐藏的网站风险 第三方内容对网站性能和可靠性有显著影响,常常造成单点故障(SPOF)。虽然大型提供商的重大中断会引起关注,但即使是知名度较低的第三方出现减速或故障,也可能破坏用户体验——甚至对于*未*直接使用该提供商的网站。 这些SPOF发生在一个网站依赖外部服务提供关键的、渲染阻塞资源时。如果该服务失败,页面加载就会停滞。尽管这个问题已知超过15年,但数据显示**67.7%的网站至少请求一个渲染阻塞的第三方**,近60%使用与主要内容不同的CDN。常见原因包括Google Fonts、广告网络和分析工具。 测试这些漏洞至关重要。方法包括使用WebPageTest等工具模拟故障,通过hosts文件修改DNS设置,或利用Chrome DevTools的请求限制功能。Speedcurve和Catchpoint等监控工具也可以跟踪第三方性能并提醒异常情况。 最终,最大限度地减少对第三方内容的依赖——特别是对于渲染阻塞资源——并主动测试SPOF,对于维护网站稳定性和积极的用户体验至关重要。自托管静态资源是关键的预防措施。

黑客新闻 新 | 过去 | 评论 | 提问 | 展示 | 招聘 | 提交 登录 第三方和单点故障 (perfplanet.com) 6 分,作者 zdw 2 小时前 | 隐藏 | 过去 | 收藏 | 1 条评论 sanreau 16 分钟前 [–] PartyTown[1] 是另一个可以帮助解决此问题的库。[1]: https://partytown.qwik.dev 回复 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请 YC | 联系 搜索:

ludocomito / boltzgen解剖学 喜欢 19 清爽

Hacker News 新闻 | 过去 | 评论 | 提问 | 展示 | 招聘 | 提交 登录 BoltzGen解剖 (huggingface.co) 30 分,danielfalbo 发表于 14 小时前 | 隐藏 | 过去 | 收藏 | 1 条评论 ludocomito 发表于 12 小时前 [–] 感谢分享我的文章,很高兴能深入了解这个流程的内部机制!回复 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请YC | 联系 搜索:

20世纪70年代初出现了第一批商业成功的电子游戏,如《Pong》和《Computer Space》,但其真正起源要更早。美国物理学家威廉·希金博瑟姆被广泛认为是创造了第一款*娱乐*电脑游戏《双人网球》,时间是1958年。 该游戏由布鲁克海文国家实验室开发,是一个简单的网球模拟,显示在示波器上,使用最初设计用于计算弹道轨迹的模拟计算机。希金博瑟姆创造它是为了活跃科学展览并展示科学研究的相关性。 在技术员鲍勃·德沃拉克的帮助下,仅用三周时间建成,《双人网球》在展览中很受欢迎,但在20世纪70年代之前逐渐被人遗忘。虽然更早的电脑游戏确实存在,但它们通常是研究工具,并非为了纯粹的娱乐而设计。希金博瑟姆曾参与曼哈顿计划,后来倡导核不扩散,具有讽刺意味的是,他可能最令人难忘的是开创了价值1890亿美元的电子游戏产业,而他却在无意中帮助其启动。

黑客新闻 新的 | 过去的 | 评论 | 提问 | 展示 | 工作 | 提交 登录 第一款电子游戏比《乓》早得多 (iflscience.com) 6 分,geox 1小时前 | 隐藏 | 过去的 | 收藏 | 1 条评论 frozenseven 1小时前 [–] 相关纪录片 Ahoy:https://www.youtube.com/watch?v=uHQ4WCU1WQc 回复 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请 YC | 联系 搜索:

## Wayland 迁移:2026 年仍未完全实现 作者近二十年来一直尝试从 X 服务器 (X11) 迁移到其预期继任者 Wayland,但始终遇到障碍。尽管 Wayland 已经成熟很多——GNOME 和 KDE 提供了支持,Asahi Linux 等发行版将其作为优先事项——但完全可用性仍然难以捉摸,尤其是在使用要求较高的硬件时。 主要挑战在于 NVIDIA 显卡的支持。虽然 NVIDIA 在 2021 年增加了基本的 Wayland 兼容性,但问题仍然存在。具体来说,作者的 8K 显示器需要通过 DisplayPort 的 TILE 支持,而 wlroots(Sway 偏好的 i3 替代方案的合成器基础)历史上缺乏这种支持。虽然存在补丁,但会引入输出问题,需要借助 Claude Code AI 助手识别出的复杂解决方法。 除了驱动问题外,应用程序兼容性(Chrome 中的缩放故障,Emacs 中的输入延迟)、桌面行为(Chrome 窗口恢复)以及屏幕共享等功能仍然存在问题。虽然已经取得了一些进展——Sway 越来越兼容 i3,`dunst` 和 `rofi` 等工具运行良好——但整体体验尚未达到稳定且性能良好的 X11 设置的水平。 作者得出结论,虽然可用的 Wayland 体验*几乎*触手可及,但目前调试和解决剩余问题所需的时间投入过于巨大。他们将继续使用 X11/i3,直到这些问题得到解决,优先考虑无缝的工作流程而不是早期采用。

一个黑客新闻的讨论质疑在2026年完全过渡到Wayland的可行性。一个关键问题是Wayland的架构:它是一个*协议*,而不是像Xorg那样的统一实现。这导致了碎片化的开发,桌面环境(Gnome、KDE、wlroots)基本上都在“重复造轮子”,并各自解决图形驱动问题。 虽然wlroots试图提供一个通用基础,但主要桌面环境采用的可能性不大。一位评论员认为Wayland目前没有比Xorg更好的优势,并计划继续使用Xorg,强调一些用户缺乏令人信服的优势。这场讨论强调了实现稳定且通用兼容的Wayland体验的持续挑战。

## PGP:一种加密遗物 数十年以来,密码学专家们已经认识到PGP(漂亮的隐私)存在显著缺陷,尽管它仍然被经常错误地推荐使用。PGP设计于20世纪90年代,在现代密码学实践出现之前,过于复杂,充斥着向后兼容性问题,并且可用性差。 其基于数据包的结构、多种编码选项以及众多功能(签名、加密、压缩)导致其采用了一种“瑞士军刀”的方法——功能很多,但没有一项特别出色。现代密码学倾向于专用工具,不同于PGP的一体化设计。 至关重要的是,PGP依赖于过时的密码学基础和易受攻击的实现,例如GnuPG。它缺乏前向保密性,泄露元数据,并且其“信任网络”密钥分发机制无效。 **专家建议使用以下替代方案,而不是PGP:** Signal用于消息传递,Magic Wormhole用于文件传输,Tarsnap用于备份,Signify/Minisign用于软件包签名,libsodium用于应用程序数据加密。较新的工具,如“age”,也为文件加密提供了有希望的解决方案。 最终,PGP复杂性和安全漏洞的遗留问题使其成为满足现代安全需求的糟糕选择。选择专门的、维护良好的工具是一种更有效的方法。

## PGP 问题:摘要 这次 Hacker News 的讨论围绕着一篇 2019 年的博客文章,质疑 PGP(漂亮的密码学隐私)在安全通信中的持续相关性。作者承认 PGP 作为密码学的“瑞士军刀”功能强大,但认为其复杂性是一个主要缺点。 许多评论者同意 PGP 笨重难用,但难以找到可行的替代方案。有人建议使用 age + minisig 作为文件加密和签名的更简单的替代品,但由于 Git 和 GitHub 等常用工具缺乏支持,推广受到阻碍。 另一些人则建议在某些用例中使用 Signal 或类似的端到端加密消息传递工具。 一个关键的争论点是 PGP 的信任网络是否有效。有些人认为它只是“安全秀”,而另一些人则强调了改进密钥分发的持续努力。人们对 Tarsnap 和 Magicwormhole 等推荐的年龄提出了担忧。最近由 CCC(混沌计算机俱乐部)发现的漏洞重新引发了争论,一些人指出 minisign 和 age 也受到了影响,但程度小于 GPG。 最终,讨论强调了 PGP 的丰富功能与更专注、更现代工具的可用性/安全性优势之间的权衡。

更多

联系我们 contact @ memedata.com