Hacker News 每日播报,今天我们聊聊 Canvas 渲染 HTML 的新提案、赫尔辛基的交通奇迹、C 语言的混淆艺术、远程工作的沟通新思路,以及从 C++26 反射到 DIY 迷你 NAS 的各种硬核技术分享。
HTML-in-Canvas:让 Canvas 渲染 HTML 不再是梦
WICG(Web 孵化器社区小组)提出了一项名为 HTML-in-Canvas 的新提案,旨在解决一个长期困扰 Web 开发者的难题:在 Canvas 中高效地渲染复杂的 HTML 内容。
提案核心
传统上,在 Canvas 中实现富文本布局、图表标签或游戏 UI 是一项艰巨的任务,因为 Canvas 原生的文本 API 功能非常有限。开发者往往需要依赖第三方库或手写渲染引擎。此提案通过引入一套新 API 来改变这一现状:
layoutsubtree 属性:允许 的子元素拥有正常的 HTML 布局能力,可以使用 CSS 进行布局,但不会在 Canvas 外部渲染。drawElement():将一个 HTML 元素及其子树直接绘制到 2D Canvas 上,省去了手动计算位置和样式的麻烦。texElement2D():在 WebGL 上下文中,将 HTML 内容作为纹理应用到 3D 对象上,极大地简化了 3D UI 的开发。setHitTestRegions():定义 Canvas 内的交互区域,将鼠标和触摸事件自动重定向到对应的 HTML 元素上,使其变得可交互。机遇与挑战
这项提案无疑为游戏开发、数据可视化和创意工具领域带来了巨大的便利。开发者们对能够原生支持复杂 UI 渲染感到兴奋,认为这将大幅提升开发效率。
然而,这也引发了一些思考和担忧。一些开发者担心这会模糊 DOM 和 Canvas 的界限,可能导致开发者滥用 Canvas,从而牺牲了网站的可访问性、SEO 和浏览器原生优化。性能开销也是一个关注点,频繁地将复杂 HTML 渲染到 Canvas 可能会带来性能问题,尤其是在移动设备上。此外,如何有效地调试这些被绘制到 Canvas 内部的“隐藏”DOM 结构,也是一个需要解决的问题。
总而言之,HTML-in-Canvas 是一个非常有前景的提案,它填补了 Web 开发的一个重要空白,但其最终的成功还需要在性能、可访问性和最佳实践方面不断完善。
赫尔辛基实现全年交通零死亡的里程碑
芬兰首都赫尔辛基达成了一项非凡的成就:在过去一整年里,实现了交通零死亡。这并非偶然,而是城市规划、技术应用和公民意识共同作用的结果。
成功的秘诀
长期规划与基础设施改造:城市实施了针对性的交通安全策略,特别关注保护行人、儿童和骑行者。降低车速限制:这是最重要的因素之一。超过一半的街道限速为 30 公里/小时,远低于五十年前的 50 公里/小时。以人为本的城市设计:街道布局、交叉路口和人行横道都经过重新设计,优先考虑安全性,并将机动车与行人和骑行者有效分离。改进交通执法:自动化测速执法和有针对性的巡逻更加普遍。卓越的公共交通:高效的公交系统显著减少了私家车的使用,从源头上降低了事故风险。这一成就与欧盟的“零愿景”(Vision Zero)倡议不谋而合,该倡议旨在到 2050 年消除所有交通死亡事故。
经验与启示
赫尔辛基的案例引发了广泛的讨论。许多人认为,这证明了数据驱动的城市规划和“零愿景”理念的有效性,通过科学分析和持续改进,可以系统性地提升城市安全。
技术在其中扮演的角色也备受关注,例如自动化测速和智能交通管理系统。大家也在探讨,赫尔辛基的经验是否能被其他人口更密集、更依赖汽车的城市所复制。虽然具体措施可能需要调整,但其“以人为本”的设计理念和对安全的坚定承诺被认为是普适的。
此外,公民行为和意识的提升同样功不可没。这提醒我们,构建安全的交通环境,需要技术、规划和人文因素的紧密结合。
第28届国际混淆C代码大赛结果揭晓
在沉寂四年之后,备受瞩目的国际混淆 C 代码大赛(IOCCC)携带着创纪录的 23 位获奖者强势回归。这项独特的编程竞赛旨在表彰那些能够编写出功能正常但代码极其难以理解的 C 语言程序,它既是编程技巧的较量,也是对 C 语言边界的艺术探索。
里程碑式的革新
本届大赛恰逢创办 40 周年,并进行了一场名为“大分叉合并”的浩大工程,彻底重建了官网和工具链。这使得评审过程效率大增,获奖作品的源代码在宣布后不到两小时内就得以发布,这在以往是不可想象的。
令人拍案叫绝的作品
本届大赛涌现出许多充满奇思妙想的作品,充分展示了 C 语言的无限可能:
2024/cable1:号称“世界上最小的 LLM 推理引擎”,能够运行基于 LLaMA 2 的 70 亿参数模型。用混淆 C 代码跑 LLM,简直是天方夜谭。2024/carlini:在电路级别模拟了 1971 年的 Intel 4004 芯片,通过计算每个门电路的输出来还原整个芯片的运行,展现了对底层硬件的极致还原。2024/endoh1:利用 C 预处理器来生成图像,生成一张 512x512 的图像可能需要调用预处理器超过 26 万次,耗时近 24 小时。2024/macke:实现了一个虚拟机,让你可以在其中安全地尝试 rm -rf / 或“fork bomb”等危险操作,甚至还包含了一个完整的 C64 模拟器。这些作品不仅是技术上的奇迹,更是对编程艺术的致敬。它们用代码讲述了故事,激发了我们对 C 语言深层魅力的探索。
远程工作新思路:建立个人“漫谈”频道
对于小型远程团队而言,如何既保持深度专注,又维持团队成员之间的人际连接?一篇文章提出了一个简单而有效的建议:为每位成员建立一个专属的“漫谈”(ramblings)频道。
“漫谈”如何运作?
这个想法的核心是在团队的聊天应用(如 Slack)中,为每个人创建一个个人频道。
个人专属:只有频道所有者可以发布顶级消息,其他人可以在消息下方的线程中回复。默认静音:频道默认静音,没有强制阅读的压力,减少干扰。内容自由:可以分享任何内容,从项目相关的灵感、对用户反馈的思考,到旅行照片或个人爱好。这种方式就像是远程团队的“数字饮水机”,它在不打断他人工作流的前提下,为自发性的交流和灵感碰撞创造了空间。作者所在的 Obsidian 团队实践两年多,发现许多优秀的想法和解决方案都源于这些看似随意的“漫谈”。
社区的多元观点
这个建议引发了热烈的讨论。支持者认为,这能有效弥补远程工作缺乏自发性交流的弊端,增强团队的“环境社交凝聚力”,打破孤立感。
然而,也有人提出了担忧。一个主要顾虑是“信息过载”,即使频道静音,也可能在无形中增加认知负担,让人产生“错过重要信息”的焦虑(FOMO)。此外,这种模式可能更适用于高度自律和文化开放的小型团队,对于规模更大或文化较保守的团队,可能难以奏效。
大家也提出了一些替代方案,如定期的“非正式咖啡时间”视频通话或使用 Donut 等工具随机配对聊天。无论采用何种方法,关键在于团队文化是否鼓励开放、信任和非正式的交流。
C++26 反射新特性:在编译时生成 UML 类图
C++26 即将迎来一个激动人心的新特性:反射(Reflections)。一篇技术博客深入探讨了这一功能,并展示了一个绝佳的应用案例——在编译阶段自动生成代码库的 PlantUML 类图。
反射的魔力
C++26 引入了几个关键的反射工具,让元编程变得前所未有的直观和强大:
反射操作符 ^^ 和 [: :]:^^ (lift) 操作符可以将一个类型或变量“提升”到元空间,生成一个包含其元信息的 std::meta::info 对象。编译时字符串 std::define_static_string:这个功能允许 consteval 函数返回一个在编译时确定的字符串,解决了编译时不能进行堆分配的限制,这对于生成 UML 图这类文本输出至关重要。访问控制 std::meta::access_context:允许反射在尊重或绕过 public/private 等访问规则的情况下,获取类的成员信息。文章通过一个递归函数 make_class_graph_impl,展示了如何遍历类的成员,获取它们的类型信息,并最终在编译时拼接成一个完整的 PlantUML 字符串。这种“元编程即编程”的直观性,让过去需要复杂工具链才能完成的代码分析任务,现在可以用纯 C++ 代码实现。
虽然目前我们无法深入探讨社区对这一新特性的具体看法,但从文章本身来看,C++26 的反射功能无疑为 C++ 开发者打开了新的大门。它预示着 C++ 元编程将变得更加易用和实用,其影响力甚至可能堪比 C++11。
谷歌开源 LangExtract:从文本中提取结构化数据的利器
谷歌最近开源了一个名为 LangExtract 的 Python 库,旨在利用大型语言模型(LLMs)从非结构化文本中高效、准确地提取结构化信息。
核心亮点
LangExtract 不仅仅是简单调用 LLM,更注重结果的可靠性和可验证性:
精确的来源溯源:这是其最突出的特点。每一次提取都能映射回原始文本中的确切位置,并通过视觉高亮进行验证,大大增强了结果的可信度。可靠的结构化输出:通过少量示例(few-shot examples)和“受控生成”技术,强制 LLM 输出符合预定义模式(schema)的数据。长文档优化:采用文本分块、并行处理和多轮提取策略,解决了在长文档中“大海捞针”的难题。交互式可视化:可以即时生成一个独立的 HTML 文件,直观地审查数千个提取出的实体及其上下文。灵活的 LLM 支持:支持 Gemini、Ollama 和 OpenAI 等多种模型。社区洞察
对于 LangExtract,开发者社区普遍对其开源表示欢迎,尤其对其“来源溯源”和“交互式可视化”功能给予了高度评价,认为这在需要高准确性的场景(如医疗、法律)中极具价值。
成本与性能:在生产环境中使用云端 LLM 的 API 成本仍然是关注焦点。与现有框架的比较:大家很自然地会将其与 LangChain、Instructor 等库进行比较,探讨其独特优势和生态整合的可能性。幻觉问题:尽管有来源追溯,但 LLM 固有的幻觉风险依然存在。如何确保提取的准确性,尤其是在利用 LLM 的“世界知识”进行推断时,是一个重要议题。“非官方产品”的未来:谷歌开源项目常有的此声明,让一些开发者对其长期维护和在生产环境中采纳的风险有所考量。总的来说,LangExtract 提供了一个强大且用户友好的工具,为 LLM 驱动的结构化数据提取带来了新的解决方案。
美光发布三款276层SSD:专为速度、容量与稳定性而生
存储巨头美光(Micron)最近发布了三款采用其最新 276 层 3D NAND 技术的固态硬盘(SSD),旨在满足数据中心对速度、容量和稳定性的苛刻要求。
三款重磅新品
9650 系列:面向极致速度的 PCIe Gen 6 SSD,顺序读取带宽高达 28 GB/s,专为加速 AI 训练和推理等工作负载而设计。部分型号甚至提供了液冷选项。6600 ION 系列:主打超大容量的 QLC SSD,提供了高达 122.88 TB 的选项,未来甚至计划推出 245 TB 版本,非常适合冷数据存储和归档场景。7600 系列:专注于提供一致低延迟表现的 PCIe Gen 5 SSD,在 AI、数据库、内容分发等多种工作负载中,能提供可预测的稳定性能。技术与市场讨论
PCIe Gen 6 的未来:虽然速度令人兴奋,但支持 Gen 6 的 CPU 和主板生态系统尚未成熟,这可能会限制其短期内的普及。QLC 与 TLC 的权衡:QLC 带来的超大容量备受欢迎,但其耐用性(TBW)和在写入密集型负载下的性能衰减也引发了担忧。对于关键任务,TLC 依然是更稳妥的选择。AI 对存储的需求:大家普遍认为,除了原始速度,低延迟、高 IOPS 和一致性等特性对于提升 AI 模型训练效率和推理速度至关重要。液冷选项的出现也预示着未来高性能计算对存储散热的更高要求。总的来说,美光的这三款新 SSD 展示了存储技术在速度、容量和稳定性方面的持续进步,将为数据中心,特别是日益增长的 AI 工作负载,提供更强大的底层支持。
现代科技与古老难题:费马大定理证明的形式化之路
一个由伦敦帝国理工学院主导的开源项目,正在进行一项宏伟的工程:将安德鲁·怀尔斯对费马大定理的复杂证明,完全形式化并输入到 Lean 定理证明器中。
形式化验证的意义
费马大定理的证明长达数百页,极其复杂。形式化验证的目标就是将这个人类智慧的结晶,转化为一个可由机器验证的、无懈可击的数学证明。
绝对的确定性:通过 Lean 这种交互式定理证明器,每一步逻辑推理都必须明确无误,可以排除任何潜在的人为错误或模糊之处。构建知识库:这个项目不仅是在验证一个定理,更是在为 Lean 社区贡献一个庞大的、经过验证的数学知识库。开源协作:项目吸引了全球的数学家和计算机科学家参与,体现了跨学科合作的巨大潜力。数学与代码的交汇
这个项目引发了关于数学、计算机科学和未来的深刻讨论。
实用性辩论:一些人认为,形式化验证是数学的未来,能确保证明的绝对正确性,并为可信赖的数学软件奠定基础。另一些人则质疑,对于一个已被接受的证明,投入如此巨大的人力物力是否值得。技术深度:开发者们对 Lean 的设计哲学、元编程能力及其与 Coq 等其他证明器的异同表现出浓厚兴趣。对未来的影响:大家普遍认为,这类工具可能改变未来的数学教育,甚至辅助数学家探索新的猜想,实现半自动化的证明发现。无论是支持还是质疑,大多数人都对参与这个项目的科学家们表示了由衷的敬意。它模糊了数学和计算机科学的界限,预示着一个更加严谨、更加自动化的科学探索未来。
一台真正的 PowerBook:在 PA-RISC 笔记本上运行 Mac 系统
一篇引人入胜的文章带我们进行了一次复古计算的穿越之旅,探索了一个充满“如果”的平行宇宙:在一台罕见的、搭载惠普 PA-RISC 处理器的 RDI PrecisionBook 笔记本上,成功运行了苹果官方的 Macintosh Application Environment (MAE)。
硬件与软件的奇迹
硬件:RDI PrecisionBook:这款 1997 年上市的“移动工作站”售价高达 12,000 美元。它搭载的 PA-7300LC 处理器在基准测试中击败了当时苹果最快的 PowerBook,并拥有更强的扩展性。但高性能也带来了高功耗和高噪音的代价。软件:Macintosh Application Environment (MAE):这是苹果官方推出的 68K Mac 模拟器,旨在将其生态系统移植到其他 Unix 平台。它作为一个 X11 应用运行在 HP-UX 上,能模拟完整的 System 7.5.3 桌面环境,并巧妙地处理了 Mac 特有的资源分叉和文件系统,甚至允许从 Mac Finder 中直接启动 Unix 应用。复古计算的魅力
这篇文章无疑会激发科技爱好者们对以下几个方面的热烈讨论:
架构选择的历史回顾:PA-RISC 与 PowerPC 的性能对比,以及苹果在 90 年代中期在战略上的挣扎,都提供了丰富的思考素材。如果历史走向了 PA-RISC,今天的计算世界会是怎样?模拟器与兼容层的技术深度:MAE 作为官方模拟器,其内部机制展现了当时软件工程的精妙,对现代的虚拟机和容器技术也有一定的启示意义。小众硬件的生存空间:RDI PrecisionBook 和 MAE 这样的产品,都反映了在技术快速发展的年代,市场是如何细分并催生出各种独特解决方案的。这不仅是一次对老旧硬件的成功复活,更是一次对 90 年代计算历史的深度回顾,充满了技术细节和引人深思的“如果”命题。
DIY 你的迷你 NAS:打造个人专属的五盘位存储服务器
一篇详细的 DIY 指南,分享了如何受 Minisforum N5 启发,通过 3D 打印和现成组件,打造一个功能强大且成本效益高的五盘位 NAS(网络附加存储)。
项目核心
面对 Minisforum N5 高昂的价格,作者决定利用手头的迷你 PC,自己动手打造一个拥有类似魅力但成本更低的 NAS。
设计目标:适应小型 3D 打印机,保留 Minisforum N5 的设计美学,低功耗且易于构建。构建过程:使用 PETG 和 TPU 材料打印外壳和部件,并给出了从安装背板到固定主板的详细步骤。电源方案:采用双电源输入(19V 供给 PC,12V 供给硬盘),并通过杠杆式接线器实现“无焊接”连接,大大降低了构建难度。成本效益:除了已有的迷你 PC,所有额外组件的总价约为 215 美元,远低于市面上的商用 NAS。社区的创造力
这个项目点燃了许多开发者的 DIY 热情,社区的反馈充满了赞赏和创造性的想法。
电源管理的痛点:有用户提出希望能有更集成的电源解决方案,实现整个系统的同步启停,这反映了 DIY 爱好者对更智能电源管理的渴望。定制与扩展:一些用户计划基于这个设计进行改造,以适应不同的硬盘盒、增加光驱位,甚至使用 ARM 架构的单板计算机作为核心。互助与解决问题:当遇到零件采购困难时,社区成员会积极分享经验和解决方案,体现了 DIY 社区的互助精神。这个项目不仅提供了一个实用的指南,更重要的是,它鼓励大家利用现有资源,以更经济、更灵活的方式构建自己的理想设备,这正是 Hacker News 社区所推崇的创新和实践精神。
相关链接:
- HTML-in-Canvas
- Helsinki records zero traffic deaths for full year
- Twenty Eighth International Obfuscated C Code Contest
- If you're remote, ramble
- C++26 Reflections adventures and compile-time UML
- LangExtract: Python library for extracting structured data from language models
- Micron rolls out 276-layer SSD trio for speed, scale, and stability
- Ongoing Lean formalisation of the proof of Fermat's Last Theorem
- A Real PowerBook: The Macintosh Application Environment on a Pa-RISC Laptop
- Build Your Own Minisforum N5 Inspired Mini NAS