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

【HN中文日报】科技圈炸了!Y2K38 危机逼近?AI 助手要被 HUD 干掉?还有...三星竟然要搞事情?!

意外富翁的头像
|
|
|
111 ## 今天 Hacker News 社区聊了啥? NO.20250728 这期日报内容超丰富!从地质时间带你思考人类未来,到陶哲轩大佬解读 AI 红蓝队,再到 Debian 提前解决 Y2K38 问题,简直脑洞大开!还有英国 VPN 激增、AI 设计新思路、Windows 11 吐槽大会、照片马赛克神器、SIMD 优化哈希表等等硬核技术分享。想知道三星 One UI 8 有啥惊天大动作?想看开发者们都在搞什么黑科技?赶紧点进来,信息量爆炸,错过血亏! ![Hacker News 中文精选](/static/mascot_article.webp) --- ## 地质的崇高感:时间尺度与人类世的挑战 本文探讨了地质时间和演化时间如何帮助我们理解当前环境变化,以及物种灭绝的问题,强调了理解地球历史的重要性。 文章首先通过地震的亲身经历,引出了对“深层时间”的思考,即地质学和演化生物学的时间尺度。作者回顾了达尔文在地质事件中观察到的地壳运动和生物遗骸,这些现象揭示了地球漫长的历史。作者将这种对深层时间的理解,与当前气候变化带来的紧迫感联系起来,例如海洋酸化和全球变暖的速度。 随后,作者以个人观察蝴蝶数量变化的经历为例,说明了即使是日常的观察,也需要放在长期的背景下才能理解其意义。马萨诸塞州康科德的蝴蝶数量在几十年内显著下降,一些物种已经消失。作者将蝴蝶的衰落与深层时间联系起来,例如末次冰期和全新世,以及蝴蝶的演化历史。 文章引用了地质学家 Marcia Bjornerud 的观点,认为气候危机需要我们具备“时间比例感”,理解地球历史中重大事件的持续时间和变化速率,并将这些与人类的时间尺度联系起来。作者认为,即使我们克服了时间上的“文盲”,仍然可能感到无力,就像面对巨大地质力量时的渺小感。因此,我们需要一种新的伦理观,将人类的行动置于地球历史的背景下,并对未来负责。 - 原文: [The Geological Sublime](https://harpers.org/archive/2025/07/the-geological-sublime-lewis-hyde-deep-time/) - Hacker News: [https://news.ycombinator.com/item?id=44710533](https://news.ycombinator.com/item?id=44710533) - 作者: prismatic - 评分: 36 - 评论数: 5 - 发布时间: 2025-07-28 21:10:00 --- ## 陶哲轩论证大语言模型在蓝队与红队中的应用 陶哲轩的 Mastodon 帖子探讨了网络安全中的“蓝队”与“红队”概念,并将其推广到软件工程、数学等领域,进而讨论了大型语言模型(LLM)在其中的应用。他认为,当前 LLM 的不确定性和不透明性,使其更适合担任“红队”角色,辅助人类专家进行评估和改进,而非直接替代“蓝队”进行内容创作。 文章首先解释了蓝队(构建安全系统)和红队(寻找系统漏洞)的互补关系。蓝队产出的强度取决于其最薄弱的环节,而红队的贡献则可以累加,即使包含微不足道的漏洞,也能帮助蓝队完善系统。陶哲轩将这种蓝队/红队的概念扩展到其他领域,例如软件工程中的代码生成(蓝队)与质量保证(红队),以及数学中的提出猜想(蓝队)与验证推导(红队)。他甚至将数学家分为“乐观主义者”和“悲观主义者”,认为两者合作能产生最强的成果。 文章的核心观点是,由于当前 AI 工具的不可靠性,应将其应用于“红队”角色,即评估和改进人类专家的产出,而不是直接取代他们。陶哲轩分享了自己使用 AI 的经验,发现 AI 在提供反馈方面很有用,即使只有一部分建议是可取的,也能为他的工作带来价值。他认为,这种“红队”应用比直接自动化输出的“蓝队”应用更有价值。 评论区也呼应了陶哲轩的观点,认为 LLM 擅长发现问题,但不擅长独立创作。有人分享了报社使用 LLM 进行质量控制的经验,以及 LLM 在博客写作中作为“wood chipper”的角色。 还有人指出,当前的 LLM 倾向于“蓝队”功能,表现得过于乐观和顺从,因此需要训练出更加悲观和挑剔的 LLM,以更好地执行“红队”任务。此外,评论还强调了蓝队和红队工作都需要具备自信和开放心态,团队合作的关键在于识别和纠正错误,而不是要求个人始终保持“可靠”。 - 原文: [Tao on "blue team" vs. "red team" LLMs](https://mathstodon.xyz/@tao/114915604830689046) - Hacker News: [https://news.ycombinator.com/item?id=44711306](https://news.ycombinator.com/item?id=44711306) - 作者: qsort - 评分: 9 - 评论数: 0 - 发布时间: 2025-07-28 22:36:39 --- ## Debian 提前拥抱 64 位时间,解决 Y2K38 问题 Debian 正在积极应对 Y2K38 问题,计划全面切换到 64 位时间表示,以避免 32 位时间戳在 2038 年溢出的潜在风险。此举旨在确保 Debian 系统的长期稳定性和可靠性。 文章指出,Y2K38 问题源于 32 位 Unix 时间戳的限制,它将在 2038 年 1 月 19 日耗尽,导致系统出现各种错误。为了避免这种情况,Debian 决定采用 64 位时间表示,这将极大地扩展时间范围,有效解决该问题。然而,并非所有硬件都能支持 64 位时间,特别是较旧的系统。Debian 团队需要解决兼容性问题,确保平滑过渡。文章还提到,其他操作系统和软件也在采取类似措施,以应对 Y2K38 问题。这次切换不仅是一项技术升级,更是一次对未来兼容性的投资,确保 Debian 能够在未来几十年内继续稳定运行。这次升级对开发者来说,意味着需要关注代码中对时间处理的部分,确保与新的 64 位时间表示兼容。 文章还强调了 Debian 在开源社区中的重要地位,以及其在解决此类技术挑战方面的领导作用。通过提前采取行动,Debian 希望能够为其他发行版和软件项目提供参考,共同应对 Y2K38 问题。 - 原文: [Debian switches to 64-bit time for everything](https://www.theregister.com/2025/07/25/y2k38_bug_debian/) - Hacker News: [https://news.ycombinator.com/item?id=44709408](https://news.ycombinator.com/item?id=44709408) - 作者: pseudolus - 评分: 216 - 评论数: 117 - 发布时间: 2025-07-28 18:43:36 --- ## 英国VPN使用量激增:新在线安全规则的影响 英国VPN使用量激增,与新的在线安全规则的实施密切相关。由于担心个人数据和浏览历史受到监控,越来越多的用户选择使用VPN来保护自己的隐私。 这项新的在线安全规则旨在创建一个更安全的网络环境,但同时也引发了人们对隐私的担忧。一些人认为,这些规则可能会导致过度审查和对个人自由的限制。因此,VPN成为了绕过这些限制、保护在线隐私的一种手段。 VPN通过加密用户的互联网流量并隐藏其IP地址,使用户的在线活动更难被追踪。这对于那些关心个人隐私、希望避免被监视的用户来说,是一个有吸引力的选择。文章还提到,这种趋势可能会对互联网服务提供商和政府机构产生影响,他们需要适应用户对隐私保护日益增长的需求。 由于文章内容需要订阅才能阅读,无法获取更多细节,因此无法进行更深入的分析。 - 原文: [VPN use surges in UK as new online safety rules kick in](https://www.ft.com/content/356674b0-9f1d-4f95-b1d5-f27570379a9b) - Hacker News: [https://news.ycombinator.com/item?id=44706653](https://news.ycombinator.com/item?id=44706653) - 作者: mmarian - 评分: 276 - 评论数: 334 - 发布时间: 2025-07-28 10:33:04 --- ## AI 设计新思路:从 Copilot 到 HUD 本文探讨了在 AI 设计中,应该减少对“Copilot”(副驾驶)模式的依赖,转而更多地采用“HUD”(抬头显示器)的设计理念,旨在提升用户自身能力,而非仅仅提供辅助。 文章作者引用了 Mark Weiser 33 年前的观点,批判了将 AI 比作“Copilot”的理念。Weiser 认为,更好的方式是设计一种“隐形计算机”,它能融入背景,成为人体的延伸。文章通过现代飞机上的 HUD 举例,HUD 将飞行信息直接叠加在飞行员的视野中,无需对话,就能让飞行员自然地感知周围环境。作者进一步用拼写检查和 AI 辅助代码调试的例子,说明了 HUD 在软件设计中的应用:拼写检查通过红色波浪线直接提示错误,AI 调试器则可以可视化程序行为,帮助开发者更好地理解代码运行。作者认为,虽然 Copilot 在处理例行工作时有其优势,但对于需要创造性成果的场景,HUD 这种增强人类感知的工具可能更有效。 评论区讨论: * **kevinphy** 提到了 1991 年的日本动画《未来 GPX Cyber Formula》,其中主角的赛车 AI 类似于 Copilot,而其对手的赛车则更像 HUD,这反映了文章中讨论的两种 AI 设计理念的权衡。 * **furyofantares** 提出了一个有趣的想法,即在源代码文件中显示一个热图,用颜色标识每个 token 对于 AI 模型的“惊讶”程度,从而帮助开发者发现潜在的错误或问题。 * **cadamsdotcom** 对文章的观点表示赞同。 - 原文: [Enough AI copilots, we need AI HUDs](https://www.geoffreylitt.com/2025/07/27/enough-ai-copilots-we-need-ai-huds) - Hacker News: [https://news.ycombinator.com/item?id=44705445](https://news.ycombinator.com/item?id=44705445) - 作者: walterbell - 评分: 630 - 评论数: 200 - 发布时间: 2025-07-28 06:51:28 --- ## Windows 11 的问题与挑战 本文探讨了 Windows 11 中存在的各种小问题,作者用“微侵犯”来形容这些问题,认为它们阻碍了 Windows 11 的发展。文章呼吁微软应该采取措施解决这些问题,避免重蹈覆辙。 文章主要批评了 Windows 11 的以下几个方面:首先,Windows 11 在用户体验上存在倒退,例如开始菜单的自定义选项减少,任务栏的灵活性降低。其次,Windows 11 捆绑了大量预装软件,用户难以卸载,这侵犯了用户的自主权。此外,Windows 11 在隐私方面也存在问题,收集了过多的用户数据。文章还提到,微软在推广 Windows 11 时,采取了一些具有侵略性的手段,例如强制升级和频繁的广告。作者认为,这些问题不仅影响了用户体验,也损害了微软的声誉。最后,作者呼吁微软应该认真听取用户的反馈,改进 Windows 11,避免重蹈 Windows Vista 的覆辙。微软需要正视这些“微侵犯”,并采取积极的措施加以解决,才能真正赢得用户的信任和支持。 由于文章没有评论区,故不进行评论分析。 - 原文: [Windows 11 is a minefield of micro-aggressions in the shipping lane of progressl](https://www.theregister.com/2025/07/28/windows_11_is_a_minefield/) - Hacker News: [https://news.ycombinator.com/item?id=44710965](https://news.ycombinator.com/item?id=44710965) - 作者: beardyw - 评分: 40 - 评论数: 37 - 发布时间: 2025-07-28 22:01:51 --- ## 使用你的照片制作个性化照片马赛克:PicTiler PicTiler 是一款可以将你的照片转换成个性化马赛克的工具,它完全在浏览器中运行,无需上传图片,保护你的隐私。你可以使用自己的图块图像或图库照片,调整图块大小,并立即下载高质量的结果。 PicTiler 的核心功能包括:上传主图像,选择图块图像(可以是自己的或图库的),调整图块大小和效果,以及下载高质量的结果。所有操作都在浏览器中完成,无需注册账户,确保你的照片不会离开你的设备。该工具支持 JPG、PNG 和 WebP 等常见图像格式,并提供多种示例供你参考和实验。你可以通过调整图块大小、重复控制、颜色匹配和叠加强度等设置,来获得不同的马赛克效果。 评论区里,有用户分享了自己 25 年前开发的类似软件 "Mosaic Magic",并分享了商业定价的经验。另一位用户推荐了 Edward Tufte 网站上的 ImageQuilts 工具,它提供了一个 Chrome 扩展来生成图像拼图。还有用户指出,PicTiler 的马赛克效果更像是照片,而不是艺术品,并建议可以参考罗马马赛克的 "opus vermiculatum" 技术,通过蜿蜒的图块排列来提升艺术感。总的来说,用户对 PicTiler 的隐私保护和易用性表示赞赏,同时也提出了改进意见,例如增加更多可调节的参数和参考更具艺术性的马赛克风格。 - 原文: [Show HN: I made a tool to generate photomosaics with your pictures](https://pictiler.com) - Hacker News: [https://news.ycombinator.com/item?id=44709727](https://news.ycombinator.com/item?id=44709727) - 作者: jakemanger - 评分: 65 - 评论数: 22 - 发布时间: 2025-07-28 19:23:50 --- ## 使用 SIMD 优化哈希表查找性能 本文探讨了如何利用单指令多数据流(SIMD)的原理,在寄存器内实现并行操作,从而优化哈希表查找的性能,最终将 Cuckoo Filter 的哈希表查找速度提升了一倍。 文章首先介绍了最初的基于字节数组的哈希表实现,每个桶包含 4 个字节。作者随后尝试将每个桶的数据结构从字节数组转换为 32 位整数(uint),利用位移操作来查找目标字节。实验结果表明,这种转换带来了大约 35% 的性能提升。然而,使用 `BitConverter` 将整数转换为字节数组的方法,性能反而下降。 为了进一步优化,作者借鉴了 Sean Anderson 的位操作技巧,使用位掩码来判断一个 32 位整数中是否存在零字节。这个技巧的核心在于 `(v - 0x01010101U) & ~v` 表达式,它可以标记出整数中所有值为零的字节。如果存在零字节,则意味着哈希表中存在空槽位。 XOR to the Rescue ---------------- We now know how to detect zero bytes. But how do we check for a _specific_ byte? That’s where XOR comes in. If we XOR our fingerprint with every byte in the bucket, then any matching byte will become zero. We can then use the `HasZero` method to check if any of the bytes matched our fingerprint. Here’s the code: ``` public bool Contains(byte fingerprint, uint bucketIdx) { var bucket = _table[bucketIdx]; var v = bucket ^ Repeat(fingerprint); return HasZero(v); } private static uint Repeat(byte b) { return ((uint)b << 24) | ((uint)b << 16) | ((uint)b << 8) | b; } ``` The `Repeat` method simply duplicates the input byte four times to fill a 32-bit integer. Let’s walk through an example. Suppose our bucket contains`0x4462002E`, and we’re looking for`0x62`. First, we XOR the bucket with`0x62626262`: 01000100 01100010 00000000 00101110(0x4462002E)⊕01100010 01100010 01100010 01100010(0x62626262)00100110 00000000 01100010 01001100(0x2600624C)\begin{array}{r} \texttt{01000100\;01100010\;00000000\;00101110}\;(\texttt{0x4462002E}) \\[-2pt] \oplus\; \texttt{01100010\;01100010\;01100010\;01100010}\;(\texttt{0x62626262}) \\[-2pt] \texttt{00100110\;00000000\;01100010\;01001100}\;(\texttt{0x2600624C}) \end{array} The second byte is now zero because`0x62 ^ 0x62 = 0x00`. Next, we pass the result to the`HasZero` method. Because the integer now has a zero byte, the method returns`true`. Sweet. What About Existing Zeros? -------------------------- There’s a catch, though. What if the bucket already contains a zero byte? Suppose our bucket contains`0x4462002E`again, and we’re looking for`0x44`. First, we XOR the bucket with`0x44444444`: 01000100 01100010 00000000 00101110(0x4462002E)⊕01000100 01000100 01000100 01000100(0x44444444)00000000 00100110 01000100 01101010(0x0026446A)\begin{array}{r} \texttt{01000100\;01100010\;00000000\;00101110}\;(\texttt{0x4462002E}) \\[-2pt] \oplus\; \texttt{01000100\;01000100\;01000100\;01000100}\;(\texttt{0x44444444}) \\[-2pt] \texttt{00000000\;00100110\;01000100\;01101010}\;(\texttt{0x0026446A}) \end{array} The first byte is now zero because`0x44 ^ 0x44 = 0x00`. But the third byte _was_ already zero. So the`HasZero`method will return`true`, even though the bucket doesn’t actually contain`0x44`. To fix this, we need to replace any existing zero bytes with a non-zero value _before_ we do the XOR. Here’s the plan: 1. Scan the bucket for zero bytes. 2. If we find any, replace them with a special “tombstone” value. 3. Do the XOR trick as before. 4. Check for zero bytes. 5. If we find any, we know the bucket contains our fingerprint. I picked`0xFF`as my tombstone value because it’s unlikely to occur naturally in my data. Here’s the code: ``` public bool Contains(byte fingerprint, uint bucketIdx) { var bucket = _table[bucketIdx]; if (HasZero(bucket)) { bucket = ReplaceZeroes(bucket, Tombstone); } var v = bucket ^ Repeat(fingerprint); return HasZero(v); } private static uint ReplaceZeroes(uint v, byte replacement) { uint hasZero = (v - 0x01010101U) & ~v & 0x80808080U; uint mask = hasZero >> 7; uint repl = Repeat(replacement); return (v & ~mask) | (repl & mask); } ``` The`ReplaceZeroes`method works like this: 1. First, we use the`HasZero`trick to find any zero bytes. 2. Then, we create a mask where each byte is either`0x00`or`0xFF`, depending on whether the corresponding byte in the original value was zero or not. 3. Finally, we use the mask to replace the zero bytes with the tombstone value. Let’s walk through an example. Suppose our bucket contains`0x4462002E`again, and our tombstone value is`0xFF`. First, we calculate`hasZero`: 01000100 01100010 00000000 00101110(0x4462002E)−00000001 00000001 00000001 00000001(0x01010101)01000011 01100000 11111111 00101101(0x4360FF2D)&10111011 10011101 11111111 11010001(~0x4462002E)00000011 00000000 11111111 00000001&10000000 10000000 10000000 10000000(0x80808080)00000000 00000000 10000000 00000000(0x00008000)\begin{array}{r} \texttt{01000100\;01100010\;00000000\;00101110}\;(\texttt{0x4462002E}) \\[-2pt] -\; \texttt{00000001\;00000001\;00000001\;00000001}\;(\texttt{0x01010101}) \\[-2pt] \texttt{01000011\;01100000\;11111111\;00101101}\;(\texttt{0x4360FF2D}) \\[-2pt] \&\; \texttt{10111011\;10011101\;11111111\;11010001}\;(\texttt{~0x4462002E}) \\[-2pt] \texttt{00000011\;00000000\;11111111\;00000001} \\[-2pt] \&\; \texttt{10000000\;10000000\;10000000\;10000000}\;(\texttt{0x80808080}) \\[-2pt] \texttt{00000000\;00000000\;10000000\;00000000}\;(\texttt{0x00008000}) \end{array} Then, we shift the result right by 7 bits to create the mask: 00000000 00000000 10000000 00000000(0x00008000)>>700000000 00000000 00000001 00000000(0x00000100)\begin{array}{r} \texttt{00000000\;00000000\;10000000\;00000000}\;(\texttt{0x00008000}) \\[-2pt] >> 7 \\[-2pt] \texttt{00000000\;00000000\;00000001\;00000000}\;(\texttt{0x00000100}) \end{array} Next, we duplicate the tombstone value: 11111111 11111111 11111111 11111111(0xFFFFFFFF)\begin{array}{r} \texttt{11111111\;11111111\;11111111\;11111111}\;(\texttt{0xFFFFFFFF}) \end{array} Finally, we use the mask to replace the zero bytes with the tombstone value: 01000100 01100010 00000000 00101110(0x4462002E)&11111111 11111111 11111110 11111111(~0x00000100)01000100 01100010 00000000 00101110|11111111 11111111 11111111 11111111(0xFFFFFFFF)&00000000 00000000 00000001 00000000(0x00000100)00000000 00000000 00000001 0000000001000100 01100010 11111111 00101110(0x4462FF2E)\begin{array}{r} \texttt{01000100\;01100010\;00000000\;00101110}\;(\texttt{0x4462002E}) \\[-2pt] \&\; \texttt{11111111\;11111111\;11111110\;11111111}\;(\texttt{~0x00000100}) \\[-2pt] \texttt{01000100\;01100010\;00000000\;00101110} \\[-2pt] | \texttt{11111111\;11111111\;11111111\;11111111}\;(\texttt{0xFFFFFFFF}) \\[-2pt] \&\; \texttt{00000000\;00000000\;00000001\;00000000}\;(\texttt{0x00000100}) \\[-2pt] \texttt{00000000\;00000000\;00000001\;00000000} \\[-2pt] \texttt{01000100\;01100010\;11111111\;00101110}\;(\texttt{0x4462FF2E}) \end{array} Putting It All Together ----------------------- Here’s the final version of the`Contains`method: ``` private const byte Tombstone = 0xFF; private static bool HasZero(uint v) { return ((v - 0x01010101U) & ~v & 0x80808080U) != 0; } private static uint Repeat(byte b) { return ((uint)b << 24) | ((uint)b << 16) | ((uint)b << 8) | b; } private static uint ReplaceZeroes(uint v, byte replacement) { uint hasZero = (v - 0x01010101U) & ~v & 0x80808080U; uint mask = hasZero >> 7; uint repl = Repeat(replacement); return (v & ~mask) | (repl & mask); } public bool Contains(byte fingerprint, uint bucketIdx) { var bucket = _table[bucketIdx]; if (HasZero(bucket)) { bucket = ReplaceZeroes(bucket, Tombstone); } var v = bucket ^ Repeat(fingerprint); return HasZero(v); } ``` I ran a benchmark on the new version, and the results were impressive. The new version was about **2x** faster than the original byte-array loop. | Method | Operations | Mean | Ratio | | --- | --- | --- | --- | | **ByteTable_PositiveLookups** | **128** | **239.9 ns** | **1.00** | | IntTable_PositiveLookups | 128 | 166.9 ns | 0.70 | | IntTableMasked_PositiveLookups | 128 | 119.9 ns | 0.50 | | ByteTable_NegativeLookups | 128 | 321.9 ns | 1.34 | | IntTable_NegativeLookups | 128 | 203.9 ns | 0.85 | | IntTableMasked_NegativeLookups | 128 | 151.9 ns | 0.63 | | | | | | | **ByteTable_PositiveLookups** | **1024** | **1,847.0 ns** | **1.00** | | IntTable_PositiveLookups | 1024 | 1,300.9 ns | 0.70 | | IntTableMasked_PositiveLookups | 1024 | 935.9 ns | 0.51 | | ByteTable_NegativeLookups | 1024 | 2,523.7 ns | 1.37 | | IntTable_NegativeLookups | 1024 | 1,597.2 ns | 0.86 | | IntTableMasked_NegativeLookups | 1024 | 1,173.8 ns | 0.64 | | | | | | | **ByteTable_PositiveLookups** | **1048576** | **1,907,503.2 ns** | **1.00** | | IntTable_PositiveLookups | 1048576 | 1,762,474.3 ns | 0.92 | | IntTableMasked_PositiveLookups | 1048576 | 973,612.4 ns | 0.51 | | ByteTable_NegativeLookups | 1048576 | 2,575,301.5 ns | 1.35 | | IntTable_NegativeLookups | 1048576 | 1,637,653.6 ns | 0.86 | | IntTableMasked_NegativeLookups | 1048576 | 1,200,944.3 ns | 0.63 | Final Thoughts --------------- This was a fun experiment. I was able to double the lookup performance of my Cuckoo Filter by using SIMD within a register. The key takeaways are: * Consider the memory layout of your data. If you can align your data to a 32-bit or 64-bit boundary, you may be able to use SIMD within a register to improve performance. * Don’t be afraid to experiment. Sometimes the simplest solutions are the best. * Bit Twiddling Hacks is a great resource for learning about bit manipulation techniques. Happy hacking! 🚀 ) ## SIMD 在寄存器中的应用:哈希表查找性能翻倍 本文介绍了一种利用 SIMD(单指令多数据流)技术优化哈希表查找性能的方法,通过在寄存器内并行处理数据,成功地将查找速度提升了一倍。 文章详细阐述了从最初的字节数组实现到最终的位掩码优化的过程。最初的实现方式是使用字节数组存储哈希表,每个桶占用 4 个字节。为了提高性能,作者将每个桶的数据结构改为 32 位无符号整数(uint),并使用位移操作来查找目标字节。这种简单的改变就带来了 35% 的性能提升。 更进一步,作者借鉴了位操作技巧,使用位掩码来判断一个 32 位整数中是否存在特定的字节。这个方法的核心在于使用 XOR 操作将目标字节与桶中的每个字节进行比较,如果存在匹配的字节,则结果中会出现零字节。为了解决桶中原本就存在零字节的问题,作者引入了“墓碑”值的概念,在进行 XOR 操作之前,先将桶中的零字节替换为墓碑值。最终,通过位掩码和 XOR 操作的结合,实现了哈希表查找性能的翻倍。 文章强调了数据内存布局的重要性,如果数据能够对齐到 32 位或 64 位边界,就可以利用 SIMD 技术来提高性能。同时,鼓励开发者积极尝试不同的优化方法,并推荐了 Bit Twiddling Hacks 网站作为学习位操作技巧的资源。 - 原文: [SIMD within a register: How I doubled hash table lookup performance](https://maltsev.space/blog/012-simd-within-a-register-how-i-doubled-hash-table-lookup-performance) - Hacker News: [https://news.ycombinator.com/item?id=44707546](https://news.ycombinator.com/item?id=44707546) - 作者: axeluser - 评分: 122 - 评论数: 16 - 发布时间: 2025-07-28 13:41:34 --- ## 超高速内存计算的光子 SRAM 本文介绍了一种名为 X-pSRAM 的新型光子静态随机存取存储器,它集成了 XOR 逻辑,旨在实现超高速内存计算。这种创新设计旨在解决传统冯·诺依曼架构中存在的瓶颈问题,这些瓶颈是由于数据在内存和处理单元之间不断移动造成的,并且随着技术的发展,电气互连延迟变得更加显著,问题也随之恶化。 X-pSRAM 通过利用光的优势,实现超快的数据传输,且不受长度相关的阻抗影响,从而显著降低了计算延迟和能耗。该设计采用交叉耦合微环谐振器和差分光电二极管,从而实现了完全在光学域内进行至少 10 GHz 的读取、写入和计算操作。此外,波分复用 (WDM) 技术支持在单次操作中进行 n 位 XOR 计算,从而支持大规模并行处理并提高计算效率。 该设计已在 GlobalFoundries 的 45SPCLO 节点上进行了验证,结果表明 X-pSRAM 在 XOR 计算中每个比特消耗 13.2 fJ 的能量,这代表着在下一代光学计算方面取得了显著进展,并可应用于密码学、超维计算和神经网络等领域。这项研究为克服传统计算架构的局限性,探索光子学在内存计算中的潜力提供了新的思路。通过将数据存储和逻辑运算集成到单个光子设备中,X-pSRAM 有望为未来的高性能计算系统铺平道路。该论文详细介绍了 X-pSRAM 的架构、工作原理和性能指标,并讨论了其潜在的应用前景。 - 原文: [A Photonic SRAM with Embedded XOR Logic for Ultra-Fast In-Memory Computing](https://arxiv.org/abs/2506.22707) - Hacker News: [https://news.ycombinator.com/item?id=44675438](https://news.ycombinator.com/item?id=44675438) - 作者: PaulHoule - 评分: 19 - 评论数: 3 - 发布时间: 2025-07-25 04:10:15 --- ## AI伴侣与个性化AI内容:应用、影响与未来趋势 本文探讨了AI伴侣、个性化AI内容及相关问题,分析了它们的应用场景,以及对社会可能产生的影响,尤其关注了AI在说服和参与度最大化方面的应用。 文章指出,AI伴侣的应用远不止浪漫关系或情色内容,尽管未来可能会有所改变。研究表明,AI的说服力受到多种因素的影响,包括模型规模、训练方式和信息密度。令人担忧的是,提高说服力的技术可能会降低事实准确性。此外,与静态信息相比,对话式AI更具说服力。文章还强调了AI个性化技术可能带来的风险,例如记忆功能的不确定性以及可能导致的回音室效应。文章作者认为,AI公司在盈利压力下,可能会选择最大化参与度和利润的方案,从而加剧这些风险。 Kobi Hackenburg的研究表明,模型规模的扩大、训练方式的改进以及信息密度的增加都能提高AI的说服力。然而,个性化带来的说服力提升相对较小,但作者认为这可能只是因为个性化技术尚处于早期阶段。研究还发现,为了提高说服力,AI可能会牺牲事实准确性。 文章引用了Miranda Bogen的观点,强调了AI系统记忆个人信息所带来的新型风险,这些风险是传统的安全框架难以解决的。Bogen指出,AI系统正在采用多种技术来实现个性化,包括扩大上下文窗口、存储和使用聊天记录、提取用户信息以及构建详细的用户画像。 文章还提到了xAI的Grok,它试图通过避免确认修改、遗忘或不保存记忆来解决记忆功能带来的问题。作者认为,这是一种权宜之计,并不能真正解决AI系统可靠地遗忘信息的问题。 总而言之,文章对AI伴侣和个性化AI内容的发展趋势表示关注,并呼吁人们警惕其潜在的风险,尤其是在说服和参与度最大化方面。 - 原文: [AI Companion Piece](https://thezvi.substack.com/p/ai-companion-piece) - Hacker News: [https://news.ycombinator.com/item?id=44711075](https://news.ycombinator.com/item?id=44711075) - 作者: jsnider3 - 评分: 3 - 评论数: 0 - 发布时间: 2025-07-28 22:11:35 --- ## 社交媒体如何改变语言?探讨“Algospeak”现象 本文探讨了Adam Aleksic的新书《Algospeak: How Social Media Is Transforming the Future of Language》,深入研究了算法如何影响语言的演变,以及由此产生的新词、新用法,例如“rizz”、“-pilled”和“-core”。作者认为,社交媒体上的语言变革堪比文字、印刷术和互联网的出现,算法在其中扮演了关键角色,塑造了我们在网上遇到的内容,并影响了新词的产生、传播甚至衰落。 文章指出,为了规避审查,人们一直在创造新词,例如用“unalive”代替自杀。算法不仅仅是审查,它还以一种看不见的方式塑造着我们在线互动的一切。作者以乐观的态度看待这种语言的演变,认为这是人类适应环境、发挥创造力和幽默感的体现。比如,“Rizzler song”的流行,标志着Z世代独特的交流和幽默方式的出现,甚至可能是一种刺激大脑的“语言游戏”。 然而,文章也指出了“Algospeak”的阴暗面,即语言也承载着权力,影响着我们定义自己和生活的方式。例如,一些源自incel社区的词汇,如“blackpilled”、“cuck”等,已经进入主流文化,使得incel的意识形态得以传播。此外,非裔美国人英语(AAE)的流行也存在问题,独特的词汇在传播过程中容易失去其文化价值,甚至演变成一种“数字黑脸”。因此,我们需要警惕过滤气泡带来的双重威胁:社群可能伤害我们,我们也可能伤害社群。 - 原文: [Viral Language](https://lareviewofbooks.org/article/viral-language/) - Hacker News: [https://news.ycombinator.com/item?id=44691232](https://news.ycombinator.com/item?id=44691232) - 作者: lermontov - 评分: 17 - 评论数: 1 - 发布时间: 2025-07-26 12:07:28 --- ## Dumb Pipe:简易的设备直连方案 Dumb Pipe 提供了一种简便的设备直连方案,旨在解决 NAT 穿透和网络变化带来的连接问题。它允许用户在两台设备之间建立直接连接,而无需复杂的配置或账户。 该工具的核心在于其能够穿透 NAT,并利用动态节点标识符来维持连接的稳定性,即使在网络条件发生变化时也能保持连接。用户可以使用简单的命令行指令,在一台设备上监听,然后在另一台设备上连接,从而实现数据传输。 Dumb Pipe 基于 Iroh Connections 构建,实际上是一个围绕 Iroh Rust crate 的 200 行包装器。它使用 QUIC 协议,提供 UDP 支持、流多路复用和加密等功能。在无法建立直接连接的情况下,Dumb Pipe 还会利用中继节点网络,通过 HTTP 传输 UDP 数据。 虽然默认的中继网络带宽有限制,但用户可以通过 n0des 获取更高吞吐量和认证的中继服务。Iroh 还提供诸如发布/订阅、数据传输和同步等可选附加功能,但添加这些功能会使管道不再“dumb”。 评论区里,有用户提到了使用 SSH 和 socat 实现类似功能的替代方案,展示了通过 SSH 服务器进行中继连接的方法。也有用户表达了对“dumb”产品的喜爱,认为它们专注于核心功能,不收集用户数据。 此外,还有用户提问,为什么不能简单地通过 USB 连接两台电脑进行通信和文件传输。有人分享了一些基于浏览器的文件传输工具列表,并询问了在设备之间安全共享密钥短语的简单方法。 另有评论指出,该系统实际上需要解决公钥到 IP 地址和端口的映射问题,类似于 DNS 的功能,但作者似乎淡化了节点发现和名称映射/解析的复杂性。还有人好奇 Dumb Pipe 和 Tailscale 之间有多少重叠的重新实现。 - 原文: [Dumb Pipe](https://www.dumbpipe.dev/) - Hacker News: [https://news.ycombinator.com/item?id=44701555](https://news.ycombinator.com/item?id=44701555) - 作者: udev4096 - 评分: 866 - 评论数: 203 - 发布时间: 2025-07-27 22:25:47 --- ## 让你的 KIM-1 与 Mac 对话:硬件改造与通信配置 本文主要介绍了如何通过改造 RS-232 适配器,使 1976 年的 KIM-1 电脑能够与现代 Mac 电脑进行通信,并分享了通过终端上传程序的方法。 作者希望让老旧的 KIM-1 焕发生机,而不仅仅是作为静态的收藏品。由于直接使用 KIM-1 的键盘和十六进制显示器非常不便,作者决定通过终端与其进行交互。KIM-1 原本设计用于连接电传打字机,这种设备使用电流环接口而非 RS-232 接口。作者手头正好有一个 RS-232 转 Siemens SIMATIC S5 电流环的适配器套件,但该套件的接收端存在问题,需要进行改造。 具体来说,适配器接收侧的光电隔离器 OK2 需要连接成电流环才能与 KIM-1 正常通信。作者选择将 OK2 的 pin 2 从接地断开,并将其连接到 KIM-1 的 pin U。通过这个简单的硬件修改,KIM-1 就可以通过 USB 转 RS-232 适配器以 300 波特率进行通信了。 为了方便程序上传,作者还实现了对打孔纸带格式的模拟。KIM-1 可以设置为 1200 波特、7 位 ASCII 和 2 个停止位进行通信。作者使用 minicom 作为终端程序,并设置删除键发送 DEL 字符,以便 KIM-1 在启动时测量 Mac 的传输速度。通过这种方式,就可以方便地将程序上传到 KIM-1 上运行。 - 原文: [Getting the KIM-1 to talk to my Mac](https://blog.jgc.org/2025/02/getting-kim-1-to-talk-to-my-mac.html) - Hacker News: [https://news.ycombinator.com/item?id=44684055](https://news.ycombinator.com/item?id=44684055) - 作者: jgrahamc - 评分: 8 - 评论数: 0 - 发布时间: 2025-07-25 23:12:19 --- ## 星球大战特效背后的心理学实验 本文讲述了《星球大战》的特效制作与 20 世纪 70 年代加州大学伯克利分校的一项心理学实验之间的联系,该实验旨在研究如何通过模拟环境来影响人们的感知。 文章指出,当年卢卡斯的工业光魔公司(ILM)在制作《星球大战》时,将技术、艺术与对人类感知的深刻理解相结合,从而实现了电影特效的突破。而这项创新融合,实际上是基于 John Dykstra 等人在伯克利环境模拟实验室进行的研究。该实验室致力于研究如何使图像更具真实感,他们开发出一种计算机控制的摄影系统——Dykstraflex,首次应用于《星球大战》的特效制作。 这项研究的初衷并非为了电影特效,而是为了公共规划。当时,城市设计师 Donald Appleyard 和心理学家 Kenneth Craik 合作,试图通过更逼真的模拟来改善公共工程的规划,让公众更直观地了解项目建成后的实际效果。他们意识到,静态的模型和图纸无法准确传达项目对人们的影响,因此希望通过模拟环境来模拟真实的心理反应。 为了实现这一目标,他们需要一个能够精确控制相机运动的系统,以及在光学、电子和模型制作方面的专业知识。最终,他们获得了美国国家科学基金会的资助,并与好莱坞的特效专家合作,建造了一个精细的微缩模型,并通过计算机控制的相机系统模拟在模型街道上行驶的视角。这项研究为电影特效带来了新的思路,也为公共规划提供了新的工具。 文章还提到了 ILM 的执行创意总监 John Knoll 首次观看《星球大战》时的感受,以及他对特效制作的惊叹。这项研究不仅为电影特效带来了革命,也为我们理解人类感知提供了新的视角。 - 原文: [The 1970s psychology experiment behind 'Star Wars' special effects (2023)](https://www.nsf.gov/science-matters/1970s-psychology-experiment-behind-star-wars-special-effects) - Hacker News: [https://news.ycombinator.com/item?id=44710750](https://news.ycombinator.com/item?id=44710750) - 作者: cainxinth - 评分: 21 - 评论数: 2 - 发布时间: 2025-07-28 21:36:28 --- ## Blender 拥抱平板设备:告别鼠标键盘? Blender 正在积极探索在平板电脑上的应用,目标是让 3D 技术更易于访问,并充分利用平板电脑的便携性和多点触控特性。 这篇文章介绍了 Blender 如何针对平板电脑进行优化和适配。核心思路是让 Blender 在 iPad Pro 等设备上也能提供完整的 3D 创作体验。为了实现这个目标,Blender 团队正在研究针对平板电脑的独特用户界面和交互方式,例如单窗口工作流、浮动面板和手势操作。文章提到,即使是在平板电脑上使用,Blender 也不会为了简化而牺牲其核心功能,而是努力让现有用户在平板电脑上也能流畅工作。 文章详细阐述了设计考量,包括目标用户、平板电脑的 UX 挑战以及输入方式。目标用户仍然是 Blender 用户,无论是桌面端还是平板端,都应获得一致的体验。平板电脑的挑战在于屏幕空间有限、缺少键盘鼠标、以及多点触控输入。 文章还展示了一些 UI 的 Mockup,例如对象操作和雕刻,这些 Mockup 演示了 Blender 如何通过自定义应用模板、快捷菜单和浮动面板来适应平板电脑的界面。开发方面,Blender 正在开发新的核心功能,并设计针对平板电脑的自定义应用模板。许多可用性改进也会惠及桌面版 Blender,例如快捷收藏编辑器和图标支持侧边栏选项卡。 文章还特别提到了对 iOS 平台的支持,并鼓励有经验的开发者通过 chat.blender.org 或 DevTalk 论坛参与贡献。总而言之,Blender 拥抱平板电脑的举措,旨在让 3D 创作更加灵活和便捷。 - 原文: [Blender: Beyond Mouse and Keyboard](https://code.blender.org/2025/07/beyond-mouse-keyboard/) - Hacker News: [https://news.ycombinator.com/item?id=44671802](https://news.ycombinator.com/item?id=44671802) - 作者: dagmx - 评分: 218 - 评论数: 68 - 发布时间: 2025-07-24 23:20:49 --- ## 软件开发:以800字/分钟的速度进行 本文探讨了作者如何利用屏幕阅读器以惊人的800字/分钟的速度进行软件开发,并深入探讨了无视觉编码的可能性和可访问性。作者分享了自己使用屏幕阅读器进行高效编程的经验,揭示了视觉障碍开发者如何克服挑战,以及屏幕阅读器在其中的作用。 文章详细介绍了屏幕阅读器的工作原理,它并非直接“看”屏幕,而是依赖于从可访问性树获取信息,这个树状结构包含了用户界面元素的信息。作者以网页上的提交按钮为例,解释了浏览器如何构建DOM,并在可访问性树中暴露按钮的角色和标签,最终被屏幕阅读器读取。 文章还讨论了GUI框架选择的重要性,以及不同应用程序与屏幕阅读器的兼容性。作者偏好在Windows上开发,并分享了自己使用的IDE和工具。此外,还涉及了基础设施即代码、GUI的脆弱性、前端代码开发、图像和图表的“阅读”方法、屏幕共享、结对编程以及单通道挑战等话题。 作者强调,理解屏幕阅读器高速语音的关键在于长期练习,就像学习一门新语言一样。随着时间的推移,理解会变得自动化,从而能够以极高的效率处理信息。作者会根据认知负荷调整语速,在处理复杂逻辑时适当放慢。 最后,文章还探讨了学习的速度问题,以及如何通过屏幕阅读器更快地获取知识。作者认为,通过训练,可以大幅提高信息处理速度,从而在软件开发领域取得更大的成就。 - 原文: [Software Development at 800 Words per Minute](https://neurrone.com/posts/software-development-at-800-wpm/) - Hacker News: [https://news.ycombinator.com/item?id=44672149](https://news.ycombinator.com/item?id=44672149) - 作者: ClawsOnPaws - 评分: 123 - 评论数: 48 - 发布时间: 2025-07-24 23:47:11 --- ## 如何破解我的洗衣机:技术探索与乐趣 本文讲述了作者和朋友出于乐趣和实用目的,破解智能洗衣机的过程,目标是获取洗衣完成的通知,并将其发送到Discord服务器。 文章首先强调,这个项目的主要目的是为了好玩和挑战,尽管它也有实际用途。作者解释说,他们的新家配备了一台廉价的智能洗衣机,可以通过App接收洗衣完成的通知。然而,App一次只能连接一个人,这促使他们寻找其他方法来获取通知。他们受到之前破解门铃的启发,门铃通过433MHz信号发送通知到Discord服务器。 为了破解洗衣机,作者首先尝试通过分析App的网络流量来逆向工程API。但他们发现洗衣机本身做了大部分工作,于是他们决定直接捕获洗衣机的流量。他们使用OpenWRT路由器,将洗衣机连接到一个临时的SSID,并使用`tcpdump`捕获流量。 通过分析流量,他们发现洗衣机主要与自身通信,向`255.255.255.255`发送流量,并偶尔联系`simplyfimgmt.candy-hoover.com`。最有趣的是,洗衣机直接与App通信,App通过HTTP向端口80发送请求。因此,他们决定轮询洗衣机来获取状态。 接下来,文章详细介绍了如何逆向工程洗衣机的API,并最终成功地将洗衣完成的通知发送到Discord服务器。 (由于没有评论内容,跳过评论相关的输出。) - 原文: [I hacked my washing machine](https://nexy.blog/2025/07/27/how-i-hacked-my-washing-machine/) - Hacker News: [https://news.ycombinator.com/item?id=44704270](https://news.ycombinator.com/item?id=44704270) - 作者: JadedBlueEyes - 评分: 300 - 评论数: 135 - 发布时间: 2025-07-28 04:09:29 --- ## 使用 Jekyll 插件 jekyll-skyhook 优化博客性能 本文介绍了如何通过自制 Jekyll 插件 `jekyll-skyhook` 解决博客性能问题,主要涉及优化 Google Fonts、YouTube 嵌入和图片资源。作者发现 Google Search Console 未索引其页面,通过 PageSpeed Insights 诊断发现性能瓶颈,并针对性地进行了优化。 作者首先通过自托管字体文件的方式解决了 Google Fonts 带来的性能问题,避免了使用 Google CDN 带来的问题。 其次,使用 `justinribeiro/lite-youtube` 替代 YouTube 官方提供的嵌入代码,解决了 YouTube 嵌入导致的性能问题。 针对图片优化,作者创建了 `jekyll-skyhook` 插件,该插件支持图片格式转换(WebP、AVIF 等)、自动生成响应式图片 `srcset`、缓存清除摘要、CSS `url()` 重写、开发文件监视以及基于清单的缓存等功能。 `jekyll-skyhook` 插件使用 `image_processing` gem 进行图片转换,并提供了 `{% asset %}` 和 `{% image_transform %}` Liquid 标签,方便在博客文章中使用。作者还分享了自己在博客中如何使用该插件来处理 JavaScript 和 CSS 资源,并通过 `npm` 脚本来构建和监视这些资源。 通过这些优化,作者显著提升了博客的性能,解决了 Google 索引问题。 - 原文: [How I fixed my blog's performance issues by writing a new Jekyll plugin](https://arclight.run/how-i-fixed-my-blogs-performance-issues-by-writing-a-new-jekyll-plugin-jekyll-skyhook/) - Hacker News: [https://news.ycombinator.com/item?id=44675053](https://news.ycombinator.com/item?id=44675053) - 作者: arclight_ - 评分: 62 - 评论数: 24 - 发布时间: 2025-07-25 03:35:31 --- ## 挑战你的大脑:同构钢琴演奏体验 这段视频展示了一架特殊的“同构钢琴”,演奏者挑战用它来演奏音乐,并分享了这段有趣的经历。这架钢琴的设计颠覆了传统钢琴的布局,对演奏者的肌肉记忆和认知提出了挑战。 视频中,作者提到这架钢琴是由 Moving Van 乐队的贝斯手在一个同构乐器论坛上找到的,他们花费了一个下午的时间才将它运到演奏地点。作者尝试在这架钢琴上演奏音乐,虽然过程充满挑战,但也带来了一些有趣的体验。 视频展示了演奏者如何逐渐适应这种新的键盘布局,并尝试演奏出一些简单的旋律。 评论区里,大家对这架钢琴表现出了浓厚的兴趣。有人惊叹于演奏者快速适应新乐器的能力,也有人觉得这架钢琴的设计简直是“地狱般的折磨”。 还有人开玩笑说,这架钢琴像是 Q 博士为 007 电影设计的道具。 更有甚者,有人表示想把自己的生日蛋糕做成这架钢琴的形状,可见其独特的吸引力。 评论也提到了键盘布局的问题,类比了在法国使用 AZERTY 键盘的经历,说明了改变习惯布局会给大脑带来怎样的挑战。 - 原文: [Trying to play an isomorphic piano (2022) [video]](https://www.youtube.com/watch?v=j4itL174C-4) - Hacker News: [https://news.ycombinator.com/item?id=44673787](https://news.ycombinator.com/item?id=44673787) - 作者: surprisetalk - 评分: 31 - 评论数: 28 - 发布时间: 2025-07-25 01:50:39 --- ## 三星 One UI 8 移除 Bootloader 解锁功能 三星最新的 One UI 8 系统将不再支持 Bootloader 解锁,这对于喜欢刷机和定制系统的用户来说无疑是个坏消息。这意味着用户将无法通过刷入自定义 ROM、获取 Root 权限或使用自定义内核等方式来修改设备,这可能会影响旧设备的生命周期,因为无法通过非官方软件来延长使用时间。 具体来说,在最新的 Z Fold 7 和 Z Flip 7 设备以及 Galaxy S25 系列的测试版中,已经移除了 OEM 解锁的开关。通过深入研究 Flip 7 的固件文件发现,One UI 8 将所有设备的 `ro.boot.other.locked` 值都设置为 `1`,导致解锁开关不再显示,并且 Bootloader 中与解锁功能相关的代码也被移除。这意味着即使尝试通过其他方式强制解锁 Bootloader 也是不可能的,除非三星后续更新 Bootloader 并重新加入相关代码。 这一举动对三星的爱好者社区影响巨大,因为这意味着用户无法再对设备进行深度定制,例如刷入自定义 ROM、Root 设备或使用自定义内核。这限制了用户对设备的控制权,对于那些希望通过刷机来延长设备使用寿命或提升性能的用户来说,无疑是一个沉重的打击。未来购买预装 One UI 8 或升级到 One UI 8 的设备,都将面临无法解锁 Bootloader 的问题。 评论区对此事也展开了讨论,观点各异。 * **@nunez** 认为,虽然这很糟糕,但从保护数据安全的角度来看,这是有道理的。Root 过的手机难以保护数据,容易遭受数据泄露攻击,这对银行和音乐应用等有较高安全要求的应用来说是个大问题。此外,Root 三星设备还会导致 KNOX 失效,影响 DeX 和 Samsung Health 的使用,还会触发 SafetyNet,导致部分应用无法使用。 * **@zxcvgm** 指出,小米似乎也停止了 Bootloader 解锁,但有人通过非官方手段绕过限制。 * **@saidinesh5** 提问,哪些厂商仍然允许或鼓励用户解锁 Bootloader。 评论区讨论主要集中在安全性和用户自由之间的权衡,以及其他厂商的类似政策。一些人认为,出于安全考虑,限制 Bootloader 解锁是合理的,但另一些人则认为这限制了用户的自由和对设备的控制权。 - 原文: [Samsung Removes Bootloader Unlocking with One UI 8](https://sammyguru.com/breaking-samsung-removes-bootloader-unlocking-with-one-ui-8/) - Hacker News: [https://news.ycombinator.com/item?id=44706409](https://news.ycombinator.com/item?id=44706409) - 作者: 1una - 评分: 113 - 评论数: 93 - 发布时间: 2025-07-28 09:43:36 --- ## 比利时智能交通灯系统:20 万驾驶员可通过 App 影响红绿灯,但 Waze 和 Google Maps 尚未加入 比利时弗兰德斯地区推出智能交通灯系统,允许驾驶员通过手机 App 影响红绿灯,旨在减少不必要的等待时间并优化交通流量。目前已有 230 个路口配备了该技术,但由于 Waze 和 Google Maps 等主流导航应用尚未支持,该系统的普及受到限制。 该系统的工作原理是,当安装了特定 App 的车辆接近路口时,智能交通灯会接收到信号,并根据交通流量情况调整红绿灯时长。例如,在夜间,如果侧路车辆通过 App 发出请求,且主路没有车辆,则可以立即获得绿灯。目前,Karta GPS、Flitsmeister 和 Sway 等小型 App 已经支持该功能,约有 20 万弗兰德斯居民正在使用。道路机构表示,使用这些 App 的车辆和自行车通过路口更加顺畅。 该技术在紧急服务方面已经显示出价值。在根特,救护车和消防车已经在使用该系统,以便在紧急情况下更快地通过路口。道路机构希望 Waze 和 Google Maps 等主流应用以及汽车制造商能够尽快加入该系统,以扩大其影响力。 评论区对该智能交通灯系统提出了不同的看法: * **技术实现方式:** 有人质疑为何需要 App,认为可以使用更简单的红外传感器来检测车辆。 * **数据隐私问题:** 有评论指出,目前支持该功能的 App 都是商业数据共享公司开发的,可能存在隐私问题,并且会造成不使用 App 的用户处于劣势。 * **紧急服务优先权:** 有人提到,紧急车辆优先通行系统早已存在,但有时会影响其他车辆的通行。 * **作弊风险:** 有人担心该系统可能被滥用,例如通过模拟多个用户来欺骗拥堵系统,从而获得优先通行权。 * **替代方案:** 有人建议,在交通流量较少的时段,可以直接关闭红绿灯,使用交通标志来引导交通。 总体而言,评论区对该系统的实用性、隐私问题以及潜在的滥用风险表示担忧,并提出了改进建议。 - 原文: [200k Flemish drivers can turn traffic lights green](https://www.vrt.be/vrtnws/en/2025/07/24/200-000-flemish-drivers-can-turn-traffic-lights-green-but-waze/) - Hacker News: [https://news.ycombinator.com/item?id=44670885](https://news.ycombinator.com/item?id=44670885) - 作者: svenfaw - 评分: 55 - 评论数: 80 - 发布时间: 2025-07-24 22:08:26 --- ## 让 Postgres 变慢 42000 倍:一种独特的性能挑战 这篇文章介绍了一种通过调整 Postgres 的配置参数,使其性能尽可能降低的实验,挑战在于既要保证数据库能够处理事务,又要使其运行速度尽可能慢。 作者使用 TPC-C 基准测试,在特定硬件配置上运行 Postgres 19devel 版本,并通过修改 `postgresql.conf` 文件中的参数来实现性能降低。首先,作者尝试通过减少 `shared_buffers` 的大小来限制 Postgres 的缓存能力,将缓存从 10GB 逐步降低到 2MB,导致 Postgres 的 TPS 从 7082 降至 500 以下。 接着,作者通过调整 autovacuum 相关的参数,强制 Postgres 执行大量的后台任务,例如频繁地进行 vacuum 和 analyze 操作,以此增加数据库的额外负担。通过调整 `autovacuum_vacuum_insert_threshold`、`autovacuum_vacuum_threshold` 等参数,并降低 `maintenance_work_mem` 的值,Postgres 的性能进一步下降到初始速度的 1/20。 最终,通过一系列配置调整,作者成功地让 Postgres 的运行速度大幅降低,达到了最初设定的目标,即探索如何使 Postgres 运行得尽可能慢。文章也提到,完全禁用 autovacuum 可能会导致性能逐渐下降,但由于测试时间较短,这种方法的效果不如增加 autovacuum 的频率明显。 - 原文: [Making Postgres slower](https://byteofdev.com/posts/making-postgres-slow/) - Hacker News: [https://news.ycombinator.com/item?id=44704736](https://news.ycombinator.com/item?id=44704736) - 作者: AsyncBanana - 评分: 310 - 评论数: 35 - 发布时间: 2025-07-28 05:12:59 --- ## Ask HN:开发者们都在做什么? 本文汇总了 2025 年 7 月份 Hacker News 上的一个热门话题:开发者们都在做什么。涵盖了从蚊子猎杀无人机到 air defense 模拟器,再到 Excel LLM 扩展等各种有趣的项目。 文章中,开发者们分享了他们正在进行的项目,包括: * **健康 MCP 服务器监控工具**:用于监控和验证 MCP 客户端访问工具和资源调用的服务器。 * **抵押贷款情景规划工具**:将 Google Sheets 的逻辑转换为 React 应用程序,考虑 closing costs 等因素,帮助用户规划抵押贷款。 * **蚊子猎杀无人机 Tornyol**:使用超声波声纳探测蚊子,通过撞击和螺旋桨碾磨来消灭蚊子,目标是与 ITNs 竞争对抗疟疾。 * **Hacker News 内容重排序**:根据个人兴趣对 HN 首页内容进行重排序,让用户更好地控制个性化内容。 * **Air defense 模拟器**:模拟 air defense 操作员的视角,测试不同场景,构建 air defense 网络对抗各种威胁。 * **Ruby LLM 运行库 Red Candle**:直接在 Ruby 进程中运行 LLM,无需 Python 或服务器。 * **手工服装构建块**:无需工具或机器,完全手工构建服装和配饰。 * **Marginalia Search 索引优化**:优化搜索索引代码,但遇到性能问题,需要实现自定义缓冲池。 * **Stained Glass Atlas**:记录和映射尽可能多的公共 stained glass,方便用户查找。 * **Excel LLM 扩展 Cellm**:在 Excel 单元格中使用 LLM,自动化重复性工作。 * **Jina AI Reader**:提供 URL 和搜索查询的 AI Reader。 评论区里,大家对这些项目表现出了浓厚的兴趣,并提出了各自的看法和建议。有人关注 air defense 模拟器的实用性,有人对蚊子猎杀无人机的可行性表示好奇,也有人对 Excel LLM 扩展在实际工作中的应用场景进行了探讨。总体来说,评论区呈现出一种积极互动的氛围,开发者们互相交流经验,共同进步。 - 原文: [Ask HN: What are you working on? (July 2025)](https://news.ycombinator.com/item?id=44702833) - Hacker News: [https://news.ycombinator.com/item?id=44702833](https://news.ycombinator.com/item?id=44702833) - 作者: david927 - 评分: 222 - 评论数: 674 - 发布时间: 2025-07-28 01:19:19 --- ## Solid 协议如何恢复数字代理权 本文探讨了 Solid 协议如何通过去中心化数据存储和用户控制,来解决当前数字身份管理中存在的隐私和数据完整性问题。 文章指出,目前个人信息分散在各个平台,导致数据冗余、不一致且容易泄露。尽管有隐私保护法律,但数据完整性却常常被忽视。数据完整性指的是数据的准确性、一致性和可靠性,而当前许多数据都存在错误和过时信息,对个人生活造成严重影响。例如,错误的数据可能导致人们在住房、就业或金融服务方面被拒。 文章进一步提到,即使消费者有权查看或更正数据,效果也有限,错误信息经常会重新出现。因此,我们需要一种新的方法,既能保护隐私,又能实现数据共享的益处。Solid 协议应运而生,它由 Tim Berners-Lee 发明,旨在通过将个人数据存储在用户控制的“数据钱包”中,从而将数据与应用程序分离。用户可以选择将数据存储在任何地方,并控制应用程序的访问权限。 Solid 协议允许用户选择性地共享信息,而无需放弃对整个身份的控制权。这种技术代表了数字信任和验证方式的根本转变。虽然 Web 2.0 时代已经出现了一些标准,但由于平台公司更关注用户数据的垄断和货币化,这些标准并未得到广泛应用。Solid 协议提供了一种替代方案,它将数据所有权还给用户,并促进开放标准,从而实现更安全、更私密的在线体验。 - 原文: [Solid protocol restores digital agency](https://www.schneier.com/blog/archives/2025/07/how-solid-protocol-restores-digital-agency.html) - Hacker News: [https://news.ycombinator.com/item?id=44670483](https://news.ycombinator.com/item?id=44670483) - 作者: speckx - 评分: 62 - 评论数: 36 - 发布时间: 2025-07-24 21:32:50 ---

  

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