【HN中文日报】科技圈大事件:码农转行、开源神器、猫咪公务员... 爆点都在这儿了!

意外富翁 · 6个月前 · News · 30 · 0

今天 Hacker News 社区聊了啥? NO.20250704

今天份的科技圈八卦速递来啦!想知道为啥有大佬放弃高薪科技工作,跑去研究慢性疼痛?OCaml 写的 Game Boy 模拟器又是啥黑科技?还有唐宁街首席捕鼠官拉里猫的传奇故事!当然,还有技术干货:下一代开源 WAF、超强 Haskell Lens 库、大规模地理空间数据可视化工具... 别犹豫了,猛戳全文,带你一网打尽!

Hacker News 中文精选


离开科技行业,投身慢性疼痛研究

这篇文章讲述了作者离开科技行业,转而关注和研究慢性疼痛的原因和目标。作者希望通过分享自己的经验和知识,帮助更多慢性疼痛患者找到缓解和康复的方法。

作者在2020年开始经历各种不明原因的疼痛,这严重影响了他的生活和工作。他无法锻炼、运动、演奏音乐,甚至影响了工作表现和人际关系。在痛苦的同时,他也对慢性疼痛产生了浓厚的兴趣,并开始深入研究。作者发现,很多人都患有慢性疼痛,但却难以找到有效的治疗方法。因此,他决定离开Canva的工作,卖掉房子,全身心投入到慢性疼痛的研究和帮助中。

作者计划通过Substack博客,揭秘慢性疼痛的本质,并与患者和医生建立联系。博客内容将包括:慢性疼痛的定义、病因、以及可行的康复策略。作者强调,博客内容基于现代疼痛科学,并分享了许多成功案例。他鼓励那些尝试过各种方法但没有效果的患者,尝试从身心结合的角度来理解和治疗慢性疼痛。同时,他也欢迎对身心健康感兴趣的人关注博客,了解身心是如何相互作用的。

作者也坦诚自己并非医生,博客内容仅供参考,不能替代医疗建议。他希望通过自己的努力,帮助更多人摆脱慢性疼痛的困扰,重获健康和幸福。

评论区有用户分享了自己因为IT工作压力巨大而导致身体出现各种问题的经历,最终选择离开IT行业,经过多年才逐渐恢复健康。这与文章作者的经历有相似之处,都表明工作压力和精神状态对身体健康有重要影响。


使用 OCaml 编写 Game Boy 模拟器

本文介绍了作者使用 OCaml 语言编写 Game Boy 模拟器 CAMLBOY 的过程,分享了项目结构、关键技术和性能优化经验。该模拟器可以在浏览器中运行,并达到了可玩的帧率。

文章详细阐述了作者在实践中运用 OCaml 高级特性的方法,例如 functors、GADTs 和 first-class modules。文章还介绍了 Game Boy 的基本架构,以及如何在 OCaml 中实现 CPU、定时器和 GPU 等组件的同步。重点讲解了主循环的实现,即如何通过 "catch up method" 使定时器和 GPU 追赶 CPU 的执行周期,从而实现硬件模块间的同步。此外,文章还展示了如何使用 OCaml 的模块系统来定义和共享接口,例如 Addressable_intf.S 接口,用于处理 8 位数据的读写操作,并通过 include 关键字将其包含在 RAM、GPU 和定时器等模块中。文章还提到了使用 js_of_ocaml 将 OCaml 代码编译为 JavaScript,使其能够在浏览器中运行。

由于没有评论内容,这里就不对评论观点进行分析了。


唐宁街10号的首席捕鼠官:拉里猫的故事

这篇文章介绍了英国唐宁街10号的“首席捕鼠官”拉里猫,它自2011年起就在这里任职,经历了多位首相。拉里并非首相的私有财产,而是由唐宁街的工作人员照顾。

拉里猫大约出生于2007年1月,原本是只流浪猫,后来被巴特西猫狗之家收养。2011年,唐宁街的工作人员收养了它,最初是想给当时的首相卡梅伦的孩子们当宠物。据唐宁街的消息来源称,拉里是“捕鼠能手”,具有“高度的追逐和狩猎本能”。虽然最初被认为缺乏捕猎本能,甚至被称为“懒惰的拉里”,但它最终还是在2011年4月完成了第一次捕杀。唐宁街的网站描述了拉里的职责包括“迎接客人、检查安全防御以及测试古董家具的午睡质量”。拉里的伙食费由工作人员自愿捐款支付,不给政府增加负担。卡梅伦在2016年卸任前解释说,拉里是公务员,不是他的私有财产,因此会留在唐宁街。拉里一直坚守岗位,经历了梅、约翰逊、特拉斯、苏纳克和斯塔默政府。

拉里猫的存在也并非一帆风顺,曾有传言说它是走失的猫,原主人想把它要回去,但后来被证实是恶作剧。尽管如此,拉里猫仍然是唐宁街一道独特的风景线,它的故事也为严肃的政治氛围增添了一丝轻松和趣味。


离开科技行业:职业发展新方向

本文探讨了技术从业者如何利用现有技能,转型到更具意义、更稳定的职业道路,特别关注公共机构、技术合作社和非政府组织 (NGO) 等领域。

文章指出,许多技术人员可能因为行业价值观、工作内容或对社会的影响等原因,想要离开科技行业。作者假设读者是技术工作者,希望继续利用技术技能,并寻找更稳定、更可持续、更有意义或对世界有更积极影响的工作。文章介绍了几个可能的职业方向:

  • 公共机构: 公共部门通常工作环境更轻松,处理的问题也更有意义,其软件开发实践和工具与企业环境相似,是相对平稳的转型选择。但需要注意的是,一些公共机构可能受到埃森哲、毕马威或德勤等咨询公司的影响,导致技术水平下降。
  • 技术合作社: 在合作社中,工人是所有者,可以共同决定工作方式、项目选择、收入分配等,拥有更大的自由和责任。技术合作社通常提供咨询服务,但开发自有产品可能需要融资。欧洲的 Smart 是一个不错的合作社启动平台。
  • 技术 NGO: 许多非营利组织、协会、NGO、私人研究团体等都需要技术人员来处理数据、提供数字服务、开发内部工具或开源技术。这些组织关注环保、民权、劳工权益、技术公司问责、人权侵犯、教育、医疗、调查新闻等领域。作者分享了自己在 AI Forensics 和 Reversing.Works 的工作经历,展示了技术技能在 NGO 中的应用。

总而言之,文章旨在为想要离开科技行业的技术人员提供一些职业方向的参考,帮助他们找到更适合自己的道路。

由于没有评论内容,故略去评论分析部分。


BunkerWeb:新一代开源云原生 WAF

BunkerWeb 是一款基于 Nginx 的下一代开源 Web 应用防火墙 (WAF),旨在提供“默认安全”的 Web 服务。它易于集成到各种环境,并提供强大的自定义功能,包括一个友好的 Web UI 和插件系统。

BunkerWeb 的核心功能包括 HTTPS 支持和 Let's Encrypt 自动化,先进的 Web 安全措施 (如 HTTP 安全标头、数据泄露防护和 TLS 加固),以及集成的 ModSecurity WAF 与 OWASP 核心规则集。它还可以基于 HTTP 状态码自动禁止异常行为,并限制客户端的连接和请求,同时通过多种验证方式 (如 cookies、JavaScript 测试和验证码) 阻止机器人。此外,BunkerWeb 还能利用外部黑名单和 DNSBL 阻止已知的恶意 IP。

BunkerWeb 提供了一个可选的 Web UI 来管理实例和配置,并且还提供了 BunkerWeb Cloud,这是一个完全托管的 SaaS 产品。用户还可以选择开源版本或 PRO 版本,PRO 版本提供增强的安全性、丰富的用户体验和技术监控。用户可以通过在 BunkerWeb 面板上使用 freetrial 促销代码来获得 BunkerWeb PRO 的免费试用。从开源版本升级到 PRO 版本非常简单,只需在 Web UI 或特定设置中粘贴 PRO 许可证密钥即可。


Haskell Lens 库:Lenses, Folds 和 Traversals

Haskell 的 Lens 库提供了一套强大的工具,用于处理 getters, folds, isomorphisms, traversals, setters 和 lenses 及其索引变体。它旨在简化数据访问和操作,并提供一种通用的方式来组合这些操作。

Lens 库的核心概念是 lenses, folds 和 traversals。Lenses 允许你聚焦于数据结构的特定部分,并以类型安全的方式读取或修改它。Folds 允许你以只读方式遍历数据结构的多个部分。Traversals 允许你以类型安全的方式遍历和修改数据结构的多个部分。该库还包括用于自动生成 lenses 和 isomorphisms 的工具,以及大量预定义的 lenses,用于处理 Haskell 平台中常用的类型。

该库的设计目标是“Batteries Included”,它提供了许多有用的 lenses,可直接用于常见的 Haskell 类型。通过使用 Control.Lens 中的组合器,开发者可以构建高度通用的工具箱,从而轻松处理各种数据访问和操作任务。即使不依赖该库,开发者也可以为自己的类型定义 lenses 和 traversals。该库还提供了更高级的功能,例如 getters, setters, indexed folds 和 isomorphisms。

总而言之,Lens 库旨在提供一种简洁、类型安全且可组合的方式来处理 Haskell 中的数据结构,从而提高代码的可读性和可维护性。


Kepler.gl:大规模 WebGL 地理空间数据可视化工具

Kepler.gl 是一个强大的开源地理空间分析工具,专为大规模数据集设计,它能帮助地图爱好者、数据科学家和开发者轻松创建美观且数据驱动的地图,并从中获得更深层次的见解。该工具利用 WebGL 技术,能够快速高效地渲染大型数据集,用户可以通过拖放文件轻松地将数据添加到地图中,并进行自由形式的过滤和地理聚合。

Kepler.gl 提供了多种地图类型,包括弧线、线条、六边形、点、热图、GeoJSON 和建筑物等,满足不同的可视化需求。它还支持时间回放和刷选功能,帮助用户探索数据中的关联性。作为一个基于 React 和 Redux 构建的工具,Kepler.gl 可以嵌入到用户自己的地图应用中,方便开发者进行定制和扩展。

Foursquare Studio 是基于 Kepler.gl 框架构建的,它是一个免费且强大的地理空间分析和可视化工具,定期发布新功能和更新。它提供诸如流图层、3D tiles、分析模块、图表、行政边界、托管地图、车队可视化、Hextile 分析和瓦片图层等功能,进一步扩展了 Kepler.gl 的能力。用户还可以通过 Kepler.gl 提供的示例地图,例如加州地震、纽约市出租车行程和旧金山海拔等高线,来了解该工具的实际应用。Kepler.gl 还有一个插件生态系统,支持 Jupyter、Tableau 和 Visual Studio Code 等常见数据分析工具。


使用 CGI 每天处理 2 亿次请求

这篇文章探讨了在现代硬件上使用 CGI(Common Gateway Interface)的性能表现,以及它在处理大量请求方面的潜力。作者通过基准测试发现,即使在相对普通的硬件上,CGI 也能实现每秒处理 2400 多个请求,或者每天处理 2 亿多次请求。

文章首先回顾了 CGI 在 21 世纪初作为动态网站主要实现方式的地位,并解释了 CGI 的基本工作原理:Web 服务器接收到 CGI 脚本的请求后,会设置环境变量,然后 fork 一个新进程来执行 CGI 程序,并将请求体通过 stdin 传递给程序,最后将程序的 stdout 作为 HTTP 响应返回。CGI 程序处理完请求后退出,操作系统会自动释放其资源,这提高了程序的可靠性。文章还提到了当时服务器硬件的限制,以及由此导致的“死亡之拥”现象。

随后,文章对比了现代服务器的强大性能,特别是多核 CPU 的普及,这使得 CGI 程序能够充分利用多核优势。为了验证 CGI 在现代硬件上的性能,作者编写了一个简单的 guestbook 程序,并使用 Apache 和 Go 语言的 net/http 服务器进行了基准测试。测试结果表明,CGI 在现代服务器上的性能非常出色,即使在普通的硬件上也能达到很高的请求处理速度。作者认为,虽然 CGI 可能不是最佳选择,但它仍然是一种可行的方案。

文章还分享了 guestbook 程序的代码和 Dockerfile,方便读者参考和使用。总而言之,这篇文章挑战了人们对 CGI 的传统认知,证明了它在现代硬件上仍然具有一定的价值。


Gaspype:Python 中的快速热力学计算库

Gaspype 是一个 Python 库,专为快速进行热力学计算而设计,尤其适用于处理数百种气体及其混合物的平衡反应。它采用纯 Python 实现,并利用 NumPy 向量化来提高性能,非常适合软件开发者和科技爱好者。

Gaspype 的关键特性包括:高性能的 NumPy 向量化、不可变类型和全面的类型提示以确保可靠性、直观的 Pythonic API 方便快速原型设计和复杂的多维模型构建,以及对 Jupyter Notebook 和教育用途的良好支持。此外,它还为未来的 GPU 支持(如 JAX 和 PyTorch)做好了准备,并自带一个全面的基于 NASA9 的物种数据库。

该库的核心是 fluidelements 两个类。fluid 类描述了分子物种及其各自摩尔量的混合物,可以计算混合物的热力学、质量平衡和理想气体性质。elements 类则用于基于原子的平衡计算。Gaspype 支持使用 NumPy 数组作为参数,可以创建多维 fluid 对象,并且可以将 fluid 对象转换为 Pandas DataFrame。equilibrium 函数可以计算混合物的热力学平衡。

Gaspype 易于安装,可以通过 pip 或 conda 进行安装。文档提供了详细的入门指南和示例,展示了如何使用 fluidelements 类进行各种热力学计算。该库还提供了开发者指南,鼓励大家贡献代码,并通过 GitHub 提交 issue 或 pull request。

总的来说,Gaspype 是一款功能强大且易于使用的 Python 热力学计算库,适用于各种科学和工程应用。它凭借其高性能、灵活性和易用性,为研究人员和工程师提供了一个高效的工具,用于模拟和分析气体混合物的热力学行为。


Jina AI 发布全新 URL 短链服务:r.jina.ai 和 s.jina.ai

Jina AI 推出了两款全新的 URL 短链服务,旨在简化链接分享和搜索体验。r.jina.ai 允许用户为任何 URL 创建短链,方便分享和传播。而 s.jina.ai 则可以将用户的搜索查询转化为短链,方便用户分享搜索结果或稍后重新访问。

r.jina.ai 的使用方式非常简单,只需要将 https://r.jina.ai/YOUR_URL 中的 YOUR_URL 替换为目标网址即可生成短链。例如,想要分享 Jina AI 的官网,可以使用 https://r.jina.ai/https://jina.ai

s.jina.ai 的使用方法类似,将 https://s.jina.ai/YOUR_SEARCH_QUERY 中的 YOUR_SEARCH_QUERY 替换为搜索关键词即可。例如,搜索 "Jina AI" 可以使用 https://s.jina.ai/Jina AI

这两项服务都旨在提高效率和用户体验,让链接分享和搜索变得更加便捷。用户可以通过 Jina AI 的官方网站 https://jina.ai/reader 了解更多信息。

由于目前没有评论内容,这里就不做评论分析了。


大型语言模型在文本游戏中的表现如何?

本文探讨了大型语言模型(LLMs)如ChatGPT和GPT-4在玩文本游戏方面的能力,并分析了当前的技术水平和未解决的问题。研究表明,尽管ChatGPT在文本游戏中表现出一定的竞争力,但其智能水平仍然较低。

文章指出,ChatGPT在理解游戏环境和通过对话与游戏世界互动方面展现出显著能力。然而,它在构建世界模型、利用已有知识以及推断游戏步骤目标方面存在不足。具体来说,ChatGPT无法通过玩游戏或阅读游戏手册来构建游戏世界模型,未能充分利用其已有的世界知识,并且难以在游戏进行过程中推断出每个步骤的目标。

这项研究揭示了人工智能、机器学习和自然语言处理交叉领域的新研究方向。实验结果表明,LLMs在文本游戏中的应用仍有很大的提升空间,尤其是在提高其理解、推理和规划能力方面。未来的研究可以集中在如何使LLMs更好地构建和利用世界模型,从而在复杂的文本游戏中取得更好的表现。

此外,文章还强调了LLMs在处理不确定性和长期规划方面的挑战。文本游戏通常需要玩家在信息不完全的情况下做出决策,并制定长期的游戏策略。LLMs在这方面的能力仍有待提高。

总之,该研究为LLMs在文本游戏中的应用提供了一个全面的评估,并指出了未来研究的关键方向。通过解决LLMs在理解、推理和规划方面的不足,可以进一步提高其在文本游戏以及其他需要复杂交互和推理的任务中的表现。


Intel N100 vs. Raspberry Pi:哪个更划算?

Jeff Geerling 对比了 Intel N100/N150 Mini PC 和 Raspberry Pi 5,探讨了在不同使用场景下哪个更具性价比。文章指出,N100 Mini PC 在原始性能上通常优于 Pi 5,但在功耗效率方面 Pi 5 表现更好。作者通过基准测试,详细对比了两者在不同负载下的性能和功耗表现,并强调了具体型号、散热和内存配置对 N100 性能的影响。同时,文章还讨论了二手 Tiny PC 的价格优势,但强调二手与全新设备的比较需要谨慎。

文章进一步指出,Pi 5 在体积、功耗效率(尤其是在空闲状态下)以及对 PoE 供电的支持方面具有优势,更适合对体积和功耗有要求的场景。而 Intel 系统在软件兼容性方面更胜一筹,尤其是在需要运行 Windows 的情况下。作者还提到,配件和完整配置的价格会影响最终的性价比,需要根据具体需求进行权衡。总的来说,选择哪个平台取决于具体的使用场景和需求,没有绝对的胜者。

评论区里,用户 @whywhywhywhy 认为,对于轻量级服务器、Plex/Jellyfin 等自托管项目,N100 的性价比更高,开箱即用体验也更好,尤其是在不需要 GPIO 接口的情况下。他分享了自己使用 N100 作为 Jellyfin 服务器的经验,认为其性能和价格都优于类似的 Pi 设置。用户 @poulpy123 则从 NAS 的角度出发,对比了 RPI 5 和 N100 在功耗方面的差异。他指出,虽然 RPI 5 在空闲和满载功耗上都略有优势,但考虑到硬盘的功耗,这种优势并不明显。此外,他还提到了在 AliExpress 上可以找到价格实惠的 N100 Mini PC,进一步提升了其性价比。


使用 Rust 重写 Tmux:tmux-rs 项目介绍

本文介绍了作者 Collin Richards 将 Tmux 从 C 语言移植到 Rust 语言的 tmux-rs 项目。作者分享了移植过程中的经验,包括最初尝试使用 C2Rust 工具,以及后来手动将 C 代码翻译成 Rust 代码的过程。

作者最初尝试使用 C2Rust 自动将 C 代码转换为 Rust 代码,但发现生成的代码难以维护且体积庞大。尽管 C2Rust 生成的代码能够运行,但可读性极差,充斥着大量的类型转换和难以理解的常量。例如,COLOUR_FLAG_256 被直接翻译为 0x1000000,导致代码可读性大幅下降。因此,作者放弃了使用 C2Rust 的方法,决定手动将 C 代码翻译成 Rust 代码。

手动翻译虽然耗时,但能更好地理解代码的意图,并编写出更简洁、更易于维护的 Rust 代码。作者还提到了 Tmux 的构建过程,涉及 Makefile.am、autogen.sh、configure.sh 和 Makefile 等步骤,最终通过 cargo 构建出 libtmux_rs.a 静态库。

文章还提及了一些在移植过程中遇到的有趣 Bug 和 C 语言的编程模式在 Rust 中的应用,例如原始指针、Goto 语句的使用,以及内联宏和 Yacc 语法分析器的处理。作者还分享了在开发过程中使用 Vim 和 AI 工具的经验。

总而言之,tmux-rs 项目是一个将现有 C 项目移植到 Rust 的实践案例,展示了 Rust 在系统编程方面的潜力。

由于没有评论内容,这里省略评论分析环节。


风力针织工厂:可持续时尚与城市风能的结合

Merel Karhof 的“风力针织工厂”是一个将风能转化为可穿戴艺术的创新项目。这个装置直接安装在建筑物外墙上,利用风力驱动针织机,将城市风能转化为独特的针织围巾。

这个风力驱动的针织机就像一个小型的风力发电厂,它的叶片捕捉风力,并将其转化为机械运动来驱动针织过程。当风力强劲时,机器的编织速度加快,反之则减慢,最终编织出一条长长的围巾,沿着建筑物的外墙垂下。这条围巾随后会被引入室内,让人们可以亲眼目睹它的诞生过程。最终,这些围巾会被“收获”,并贴上标签,记录下它们被创造的时间和日期,让每一条围巾都成为独一无二的“风的纪念品”。

“风力针织工厂”巧妙地将公共和私人空间连接起来,展示了一个完整的生产过程,并让人们意识到城市风能的潜力。它不仅仅是一个产品,更是一种概念的表达,一种对可持续发展和创新设计的探索。这个项目突出了利用可再生能源进行生产的可能性,并引发了人们对城市环境中能源利用方式的思考。它将环保理念融入了时尚设计之中,创造了一种独特的、具有社会意义的产品。


Linux Kernel 集成 Rust:DRM Panic QR 码生成器

这个项目介绍了一个使用 Rust 编写的 DRM Panic QR 码生成器,它已被合并到 Linux 内核 v6.12-rc1 版本中。该工具旨在解决内核崩溃时屏幕上显示的 panic 信息难以复制和粘贴的问题,通过生成 QR 码,用户可以使用手机等设备扫描并轻松提取 panic 信息,方便 bug 报告和调试。

文章解释了选择 Rust 的原因,强调了在 panic handler 中内存安全的重要性。作者认为,对于这个特定的用例,Rust 代码比 C 代码更清晰、更易读,即使作者在 C 语言方面更有经验。QR 码生成器是独立的,只使用提供的内存缓冲区,不需要复杂的绑定,因此很容易合并到内核中。

除了内核集成,作者还分享了一些周边项目,例如一个用于解码 QR 码中的 panic 数据的 Web 前端(https://github.com/kdj0c/panic_report)以及一个可以在内核外独立运行的 Rust 应用(https://gitlab.com/kdj0c/qr_panic)。这些工具可以帮助开发者更好地理解和调试内核 panic。

评论区里,有用户指出 DRM 在这里指的是 Direct Rendering Manager,与数字版权管理无关。有人分享了自己在 Arch Linux 上遇到并使用该功能的经历,认为它非常有用。

也有人质疑在内核的关键部分引入 Rust 的动机,认为作者关于选择 Rust 的理由有些牵强。他们担心这会让 Rust 成为强制性的依赖。

还有用户提出了实际问题,例如在系统崩溃时如何解码 QR 码,以及传统的 BSOD 信息是否更容易复制。这个观点引发了关于用户在系统崩溃时如何获取和利用 QR 码信息的讨论,以及 QR 码信息与传统崩溃信息的优劣对比。


利用 GitHub Copilot Agent Mode 和 MCP 提升开发效率

本文主要介绍了如何通过结合 GitHub Copilot Agent Mode 和 Model Context Protocol (MCP) 来优化开发流程,提高效率。文章详细讲解了如何自定义 Copilot,以及如何利用 MCP 工具进行更强大的辅助开发。

文章首先介绍了自定义 Copilot 的方法,通过自定义指令、提示和聊天模式,可以创建针对不同开发阶段的专业 AI 助手。作者分享了自己 VS Code 的设置,包括启用实验性功能、调整 Agent 运行参数等,并详细解释了各项设置的作用,例如 github.copilot.chat.codeGeneration.instructions 用于设置个人化的自定义指令,chat.agent.maxRequests 允许 Agent 运行更长时间无需授权,chat.tools.autoApprove 自动批准 Agent 的运行命令和工具请求。

接下来,文章深入探讨了 MCP 工具的应用,MCP 允许 Agent 访问外部工具和数据源,极大地扩展了 Copilot 的能力。作者列举了一些常用的 MCP 服务器,包括用于动态问题解决的 Sequential Thinking、提供网络搜索功能的 SearXNG、用于浏览器自动化和网页抓取的 Playwright、用于版本库管理的 GitHub、用于获取当前时间的 Time 以及用于网页内容获取的 Fetch。作者还分享了如何利用这些工具进行高效的开发工作流,例如在编码前使用 research 聊天模式,通过网络搜索和顺序思考工具进行深入研究。

总而言之,文章强调了通过定制 Copilot 和利用 MCP 工具,开发者可以构建更智能、更高效的开发环境,从而显著提升开发效率和代码质量。

由于没有评论内容,因此省略评论分析部分。


phkmalloc:FreeBSD 内存分配器的故事

本文讲述了 phkmalloc 的诞生故事,作者回顾了在 FreeBSD 系统上开发高性能内存分配器 phkmalloc 的动机、问题以及解决方案。

在 90 年代中期,由于内存价格高昂,内存使用效率成为关键问题。作者发现当时 FreeBSD 沿用的 Chris Kingsley 的 malloc 实现存在性能瓶颈,尤其是在程序结束释放内存时,会导致频繁的磁盘活动,即所谓的“死亡拨浪鼓”现象。通过分析发现,问题在于 free() 函数需要遍历空闲链表来找到合适的位置插入,而链表信息存储在空闲内存块中,导致内核需要将未使用的内存页调入内存才能释放,效率低下。

为了解决这个问题,作者最初的方案是在每个空闲块前添加一个小结构体,记录块的信息,从而避免直接访问空闲内存。但最终,作者决定完全重写 malloc 实现,设计了一种新的架构,将元数据与内存块分离,并使用二进制“伙伴”系统来管理子页面大小的内存分配。这种设计不仅提高了性能,还能够检测一些常见的内存错误。

最初,作者希望在检测到错误时直接调用 abort() 终止程序,但很快发现这会导致系统崩溃。因此,作者修改了逻辑,改为输出警告信息,并在运行时通过环境变量或符号链接 /etc/malloc.conf 来配置 malloc 的行为,例如在检测到错误时终止程序、用垃圾数据或零填充内存等。

虽然这种通过符号链接配置 malloc 的方式被一些人认为是“hack”,但它在当时提供了一种简单有效的配置方案,无需修改程序代码或读取配置文件。

(由于原文没有评论,所以跳过评论分析部分)


Kevin Kelly 的 “Flounder Mode”:一种另类的成功模式

本文介绍了 Kevin Kelly 的职业生涯和工作方式,他以 “好莱坞模式” 进行创作,涉猎广泛,不追求成为独角兽公司的创始人,而是通过一系列创意项目来实现个人价值。文章探讨了这种 “Flounder Mode” (比目鱼模式) 的工作方式,以及作者本人在硅谷工作多年后,对这种模式的反思和重新审视。

文章首先介绍了 Kevin Kelly 的丰富经历,包括参与《全球概览》、创办 WELL 和《连线》杂志、撰写书籍、担任电影顾问等。他涉猎的领域非常广泛,从艺术到人工智能,都有深入的研究和见解。文章还提到了 Naval Ravikant 等人对 Kevin Kelly 的高度评价,认为他是一位具有远见卓识的思想家。

作者随后分享了自己的职业经历,他曾在 Google 和 Stripe 等公司工作,但始终没有选择传统的晋升道路,而是更倾向于参与有趣的项目和活动。他一度对这种 “酷女孩” 的工作方式感到自豪,但后来开始反思,认为自己可能错过了更大的机会和影响力。他观察到,那些追求头衔、金钱和团队建设的同事,似乎在解决更大、更有趣的问题,并取得了更大的成就。

文章最后引出了对 “Flounder Mode” 的思考:这种模式是否真的适合所有人?在追求个人兴趣和自由的同时,是否应该考虑如何产生更大的社会价值和影响力?作者通过对 Kevin Kelly 的采访和自身经历的反思,试图为读者提供一种另类的职业发展思路。


使用 Rust 和 WASM 进行表单验证

本文主要介绍了如何使用 Rust 和 WebAssembly (WASM) 构建一个简单的表单验证应用,展示了 Rust 在前后端同构方面的潜力。文章详细讲解了如何搭建项目结构、配置 WASM 环境、编写 Rust 代码以及集成到 Web 服务器中。

文章首先强调了 Rust 和 WASM 对于后端工程师的吸引力,特别是不熟悉 React 和 SPA 等前端技术的开发者。 传统的 WASM 开发流程依赖 Webpack 和 Node 工具,但现在流程已经简化。文章搭建了一个包含 Rust Web 服务器和 WASM 组件的项目,WASM 组件负责表单验证。作者分享了使用 Rust/WASM 的原因,包括探索 WASM 的发展以及前后端代码共享的优势,特别是在数据序列化/反序列化方面。文章选择表单验证作为示例,因为它涵盖了将 DOM 事件连接到 Rust 函数并对事件做出反应的关键方面。文章使用的技术栈包括 wasm-bindgen 0.2、wasm-pack 0.13、web-sys 0.3 和 rocket 0.5。 项目结构分为 server 和 wasm 两个 crate。文章详细介绍了如何配置 wasm crate,包括添加 wasm32-unknown-unknown 目标和配置 Cargo.toml 文件。 服务器端使用 Rocket 框架,处理用户登录,验证密码,并渲染 HTML 模板。文章还展示了如何使用 Rocket 搭建 Web 服务器,处理登录请求,并提供静态文件服务。

(目前没有评论)


LooksMapping:用AI评估餐厅顾客颜值

LooksMapping是一个利用AI模型评估Google Maps餐厅评论者颜值,并以此来评价餐厅顾客吸引力的项目。该项目通过抓取数百万条评论,将评论者头像输入AI模型,模型会给出一个“颜值评分”,并在地图上用红蓝颜色区分餐厅顾客的“火辣”程度。

这个项目的核心在于探讨人们如何通过顾客来评判一个场所,并用一种略带讽刺的方式,将这种主观判断数字化。作者承认模型存在偏见和缺陷,但同时也指出,人们一直以来都在进行类似的“颜值”评估,这个网站只是将这种行为量化,反映了社会集体的一种肤浅的价值观。网站还列出了“Top 5 hot”和“Top 5 not”的餐厅,直接展示了AI评估的结果。

评论区对LooksMapping的看法褒贬不一。有人认为这是一个有趣且具有技术含量的项目,尽管其前提有些“不合时宜”。也有人认为这很“恶心”,质疑其目的和意义。一些评论者指出,该项目体现了AI在执行人类可以完成但觉得枯燥或无利可图的任务方面的潜力。 还有人分享了纽约时报对该项目的报道,引发了关于其社会影响的讨论。 此外,有评论指出了女性和男性选择餐厅的差异,暗示了吸引力偏好。


K-Scale Labs 发布开源人形机器人

K-Scale Labs (YC W24) 发布了开源人形机器人项目,旨在推动人形机器人的发展和应用。该项目提供免费的硬件和软件升级,目标是实现完全自主的机器人,并希望通过开源模式吸引更多开发者参与,共同解决人形机器人领域的挑战。

文章提到,目前人形机器人的主要问题是缺乏实际用途,为了解决这个问题,K-Scale Labs 采取了一种策略:先销售机器人,然后通过不断升级硬件和软件,最终实现完全自主。这种方式可以提前获得资金,用于支持开发工作。该公司还分享了两个使用案例,并提供了项目主页链接。

评论区对 K-Scale Labs 的开源人形机器人项目提出了各种观点和疑问。

  • 技术角度: 有人询问了 ROS 相关项目的发展情况,以及为什么选择双足而非四足机器人。还有人关注机器人足部的设计,例如是否应该加入跖趾关节,以及如何模拟人类足底的柔软度和神经末梢。
  • 应用场景: 有人询问了人形机器人有哪些实际应用场景,以及如何将其定位为投资而非玩具。
  • 商业模式: 有人质疑该项目的市场定位,认为目前主要面向富有的科技爱好者,未来市场存在不确定性。他们还好奇 K-Scale Labs 如何说服风险投资机构,克服“为解决方案寻找问题”的难题。
  • 伦理和社会影响: 有人担心人形机器人被用于军事目的,或者成为人类伴侣,引发伦理问题。
  • 市场需求: 有人认为,目前市场上对人形机器人的需求主要集中在外观女性化、易于清洁的性玩偶方面。
  • 全自动驾驶类比: 有人将 K-Scale Labs 的模式与特斯拉销售承诺 FSD 的汽车相比较,质疑其承诺的兑现能力。
  • 开源策略: 有人认为,有能力开发自主机器人的机构或个人,可能不会购买该机器人,然后将代码开源。

总的来说,评论区对 K-Scale Labs 的项目既有赞赏,也有担忧和质疑,涵盖了技术、应用、商业模式、伦理等多个方面,体现了对人形机器人发展前景的复杂看法。


Netflix 如何利用 AV1 编解码器实现大规模电影胶片颗粒合成

Netflix 技术博客发布了一篇文章,介绍了他们如何利用 AV1 编解码器的电影胶片颗粒合成(FGS)技术,提升流媒体视频的视觉体验,并优化数据效率。文章深入探讨了 FGS 的原理、优势以及如何在 Netflix 平台上大规模应用。

文章指出,电影胶片颗粒在影片中扮演着重要的角色,它能增强影片的深度和真实感。然而,由于其随机性,胶片颗粒难以压缩。传统的压缩算法常常需要在保留颗粒和降低文件大小之间做出妥协。AV1 的 FGS 技术通过对胶片颗粒进行建模,在编码前去除视频中的颗粒,然后将颗粒的模式和强度信息与压缩后的视频数据一同传输。在播放时,再将胶片颗粒重新合成到视频中。这种方法既能保留胶片颗粒的艺术完整性,又能提高压缩效率。

FGS 的核心在于两个关键组件:胶片颗粒模式和胶片颗粒强度。胶片颗粒模式使用自回归(AR)模型来复制胶片颗粒的模式,通过调整 AR 系数来控制颗粒的粗细。胶片颗粒强度则使用缩放函数来控制颗粒在不同光照条件下的外观,根据视频的亮度和颜色精确调整颗粒的强度。通过结合这两个组件,FGS 能够在保证视觉质量的同时,显著降低码率。

文章还展示了实际案例,例如在 Netflix 影片《They Cloned Tyrone》中,使用 FGS 技术后,码率降低了约 66%,同时保留了胶片颗粒的完整性。此外,合成的噪声还能有效地掩盖压缩伪影,从而提升视觉体验。文章最后提到,目前 Netflix 缺乏专门针对胶片颗粒合成的质量模型,他们正在积极探索新的质量评估方法。



评论 0 条

暂无评论,来种下第一颗种子。