2024-05-31 Hacker News Top Stories #
- Matt Bessey 在文章中表达了对 GraphQL 技术的失望,指出其在安全性、性能和可维护性方面的问题。
- Lux 推出了一款名为 Kino 的电影制作应用程序,具有一键应用预设色彩分级效果等功能,并在推出期间提供半价优惠。
- Paul Graham 在 Twitter 上澄清了关于 YC 解雇 Sam Altman 的谣言,实际上是 Sam 为了全职致力于 OpenAI 而离开。
- 一个新式样的 UI 与 ChatGPT 交互的网站,允许用户通过点击回答中的特定名词来展开进一步解答。
- 文章揭示了演员通过深入理解台词的含义和将其与已知信息联系起来的方式来记忆台词,而不是死记硬背。
- 文章介绍了如何在笔记本电脑上对维基百科进行索引,使用 Cohere 的多语言 v3 模型创建基于语义的索引。
- 科罗拉多州州长签署法案,赋予消费者修复自己设备的权利,包括数据中心和企业设备。
- FrankenPHP 是一个现代化的 PHP 应用服务器,由 Ryan Weaver 开发,使用 Go 语言编写。
- Google Testing Blog 的博文讨论了 DRY 原则的优点,并强调了在应用时需要谨慎考虑。
- 物理学家理查德·费曼在 1946 年写给已故妻子阿琳的情书,表达了对妻子的深深爱意和思念。
After 6 years, I’m over GraphQL #
https://bessey.dev/blog/2024/05/24/why-im-over-graphql/
在这篇名为"Why, after 6 years, I’m over GraphQL"的博文中,作者 Matt Bessey 分享了他对 GraphQL 的看法。他提到自 2018 年开始使用 GraphQL 以来,对这项技术曾充满热情,但随着时间的推移和在更注重安全性、性能和可维护性等非功能需求方面的部署经验,他的观点发生了变化。
作者列举了几个他认为 GraphQL 存在问题的方面:
- 攻击面增加:GraphQL 向不受信任的客户端公开查询语言,增加了应用程序的攻击面,需要考虑各种攻击类型,并对其进行缓解。
- 限流:GraphQL 请求的复杂性不同,难以估计查询的复杂性,可能导致服务器性能问题。作者提到了一些限流的方法,但实施起来比较困难。
- 性能:GraphQL 在数据获取和 N+1 问题上存在挑战,需要谨慎处理数据获取逻辑,避免性能问题。
- 耦合:在成熟的 GraphQL 代码库中,业务逻辑被迫融入传输层,导致测试变得困难,调试也变得更加复杂。
- 复杂性:为了解决安全性和性能问题,需要引入大量复杂性,相比之下,REST 的解决方案通常更简单。
最后,作者提到了一些他对 GraphQL 的不满,包括 GraphQL 不鼓励破坏性更改并且在处理这些更改时提供的工具有限,以及对 HTTP 响应代码的依赖等。作者建议在某些情况下,可能更适合使用 OpenAPI 3.0+ 兼容的 JSON REST API。
总的来说,作者认为 GraphQL 在某些方面存在挑战,尤其是在安全性、性能和复杂性方面,因此他认为现在可能有更简单和更有效的替代方案。
HN 评论 534 comments | 作者:mattbessey | 14 hours ago #
https://news.ycombinator.com/item?id=40521518
- 有评论认为 GraphQL 是技术解决方案,但可能并不适合所有情况,特别是对于简单的 CRUD 应用;
- 有人提到 GraphQL 可能导致组织结构问题,前端和后端团队之间的分隔可能会导致复杂性增加;
- 一些人认为在特定情况下,GraphQL 可能会带来更高的灵活性,但也会带来一些权衡和挑战;
- 也有人指出 GraphQL 可能会增加系统负担,特别是在处理复杂嵌套查询时可能会导致性能问题;
- 有评论提到使用 GraphQL 可能需要更多的协调和沟通,以确保前后端团队之间的配合;
- 一些人认为 REST API 在处理嵌套资源时可能会遇到困难,而 GraphQL 则更擅长管理这些资源。
Kino: Pro Video Camera #
https://www.lux.camera/introducing-kino-pro-video-camera/
在 Lux 官网上介绍了一款名为 Kino 的强大电影制作应用程序。Kino 旨在满足初学者和专家的需求。文章中提到了 Kino 的一些主要功能:
- Instant Grade:Kino 的主要功能之一,允许用户通过一键应用预设的色彩分级效果,使视频看起来更具电影感。
- AutoMotion:Kino 自动选择最佳曝光设置,以实现电影般的运动模糊效果,无需使用 AI 或计算摄影技术。
- 界面设计:Kino 重新设计了相机应用的界面,旨在满足视频新手和专业导演的需求,提供了易于使用的曝光设置、音频表计和可用磁盘空间等功能。
- 高级选项:Kino 默认设置为尽可能自然,但用户可以根据自己的需要进行重新配置,支持自定义预设、分辨率等设置。
- 定价:Kino 作为一款付费应用,定价为 19.99 美元,但在推出期间有 50% 的折扣,售价为 9.99 美元。
- 未来展望:Kino 发布版本为 1.0,未来还计划增加手动白平衡等功能,以满足用户需求。
总体而言,Kino 是一款功能强大的电影制作应用程序,旨在简化视频制作流程,提供专业级的色彩分级和运动模糊效果,适用于各种用户,从新手到专家。
HN 评论 345 comments | 作者:louis-paul | 1 day ago #
https://news.ycombinator.com/item?id=40514282
- 一些用户欣赏这个应用程序只需要一次性付费,认为这在当今的软件世界中已经是胜利了。
- 有人提到之前 Halide 就是这样,后来转向了订阅模式。
- 有人认为只有新功能需要订阅。
- 有人对一次性购买选项表示感谢,认为这在当今的软件世界中已经是胜利了。
- 有人对某些应用程序采用订阅模式感到不满,认为人们太贪婪了。
I got tired of hearing that YC fired Sam, so here’s what actually happened #
https://twitter.com/paulg/status/1796107666265108940
这条推特是由 Paul Graham 发布的,内容是他对于有关 YC 解雇 Sam 的传闻感到厌倦,所以他分享了实际发生的事情。
人们一直在声称 YC 解雇了 Sam Altman。这不是真的。以下是真正发生的事情。多年来,他同时经营着 YC 和 OpenAI,但当 OpenAI 宣布它将拥有一个盈利性子公司,并且 Sam 将成为 CEO 时,我们(特别是指 Jessica)告诉他,如果他打算全职致力于 OpenAI,我们应该找另一个人来经营 YC,他同意了。如果他说过他打算找另一个人来担任 OpenAI 的 CEO,以便他可以 100% 专注于 YC,我们也会对此感到满意。我们不想让他离开,只是希望他选择其中一个。
HN 评论 510 comments | 作者:hakanderyal | 13 hours ago #
https://news.ycombinator.com/item?id=40521657
- 评论中提到,有人认为在非营利组织和全职工作之间选择并不罕见,可能需要放弃其中之一,这种情况下,可能会尝试同时兼顾一段时间;
- 有人认为通常情况下,组织的董事会成员并非那些心怀不轨的反派,通常是那些即将烧毁自己的白痴;
- 大多数情况下,问题出在那个白痴身上。唯一不是这样的情况是那些真正懂得如何从任命中获益的人;
- 人们都想成为米歇尔·贝克尔;
- 有人指出,贝克尔曾是 Mozilla 基金会的首席执行官;
- 有人提到,贝克尔是 Mozilla 基金会的主席,同时也是 Mozilla 公司的首席执行官;
- 有人补充说,贝克尔作为 Mozilla 基金会首席执行官的薪酬是由董事会设定的;
- 有人指出,贝克尔是董事会主席;
- 有人从链接中引用了关于贝克尔的信息,包括她在 Mozilla 担任主席已有二十年之久;
- 有人指出,男性和女性应该平等对待,不应该有区别;
- 有人回应称,如果你真的相信这一点,那你应该写“男性和男性是平等的”;
- 有人回应称,存在不可调和的生物学差异,但在社会政治上这是无关紧要的;
- 有人提出了一个问题,询问为什么在描述中包含“即将烧尽”;
- 有人回应称,通常情况下,那些无法说不的人最终会在多个工作之间分散精力,导致疲惫。
Show HN: ChatGPT UI for rabbit holes #
对于网站 https://delve.a9.io/,它设计了一种新式样的 UI 来与 ChatGPT 交互,具体来说,就是 ChatGPT 回答的内容中,如果出现了特定名词,可以通过点击的方式在右侧展开这个新的名词的进一步解答,而非滚动当前的对话窗口。同时,每个新的主题都可以继续展开新的对话。
HN 评论 116 comments | 作者:maxkrieger | 10 hours ago #
https://news.ycombinator.com/item?id=40522844
- 评论者认为 ChatGPT UI 提供了更好的用户体验,特别是在处理大型语言模型时。
- 有人建议让用户能够选择任意文本并像链接一样使用。
- 评论者认为这个界面比普通的“噱头”更重要,提到了对用户体验的改进。
- 有人比较了 ChatGPT UI 与 Wikipedia 中的链接浏览方式。
- 评论者建议在界面上添加树状结构以支持多个分支同时查看。
- 有人提到了对 ChatGPT UI 的设计和颜色使用的建议。
- 评论者认为这个界面类似于与维基百科中的链接进行对话。
- 有人提到了对链接颜色和样式的历史回顾。
- 评论者建议在界面上添加可视化地图以显示已探索的主题。
- 有人提到了对 ChatGPT UI 的快速响应和清晰界面的赞赏。
How actors remember their lines #
https://thereader.mitpress.mit.edu/how-actors-remember-their-lines/
这篇文章讨论了演员们如何记忆台词,揭示了记忆的重要真相。演员们并不是通过死记硬背来学习台词,而是通过深入理解台词的含义和将其与已知信息联系起来的方式来记忆。他们会研究剧本,努力理解角色,并看台词如何与角色相关联。
心理学家 Helga 和 Tony Noice 调查发现,演员们在学习台词时会寻找剧本中的含义,而不是死记硬背。他们会想象每个场景中的角色,采用角色的视角,将新材料与角色的背景联系起来,并尝试匹配角色的情绪。演员们会仔细分析剧本台词,以理解角色的动机。
这种深入理解剧本的方式使得他们在表演时能够自然地回忆台词,而不是从死记硬背中背诵。文章还提到了一位七旬演员通过深入理解而记忆了米尔顿史诗诗歌《失乐园》的所有 10,565 行台词。深入理解是一种适用于每个人的记忆策略,它涉及将注意力集中在事物或事件的基本含义上,从而增强日常记忆。深入理解通过将你正在学习的东西与已知事物联系起来来增强理解。
这种深入处理提供了更多有意义的关联,而不是浅层处理。深入、详细的处理通过产生比浅层处理更多的语义关联来增强记忆。深入理解和有意义的关联有助于我们记忆,而详细的处理方式会产生更多的语义关联。
HN 评论 153 comments | 作者:pepys | 17 hours ago #
https://news.ycombinator.com/item?id=40520334
- 演员在表演中不是假装,而是真实地行为,重点是专注对方演员。
- 演员在电影和电视中必须以不自然的方式分散注意力,有时候甚至在没有其他演员在场的情况下表演。
- 演员在电影和电视中经常需要对着网球或镜头旁的物体表演,这对他们的注意力分散是一种挑战。
- 演员在表演中可以从内心情感出发,也可以只是表现情感而不经过内心过程。
- 演员如 Ian McKellen 从内心情感出发,而其他演员可能只是表现情感而不经过内心过程。
- 演员在戏剧艺术中必须真实表现情感,而不是制造感情。
- 演员需要通过严格训练才能在表演中保持情感真实。
- AI 的行为不可信赖,因为它可能随时改变观点,影响大众意见。
- 演员需要将台词记忆与其他演员在场结合,以更好地表现。
- 演员在表演中需要从内心情感出发,而不是简单地背诵台词。
- 演员在表演中需要真实地表现自己,并与周围环境保持一致。
- 演员在表演中需要理解和欣赏角色,而不仅仅是背诵台词。
- 演员在表演中需要将台词与情感联系起来,以自然地表现角色。
Vector indexing all of Wikipedia on a laptop #
https://foojay.io/today/indexing-all-of-wikipedia-on-a-laptop/
这篇文章介绍了如何在笔记本电脑上对维基百科进行索引。文章指出,Cohere 在 11 月份发布了一个包含整个维基百科的数据集,使用他们的多语言 v3 模型将其分块并嵌入向量中。自此,个人首次可以实际创建基于语义、向量的维基百科索引。
文章详细解释了构建过程中的困难,以及如何使用 JVector 库支持 DataStax Astra 向量搜索来索引大于内存的数据集。要求包括 Linux 或 MacOS 系统、约 180GB 的空间用于数据集、以及足够的 RAM 来运行 JVM 进行索引构建。构建和搜索索引的步骤包括设置项目、下载数据集、构建索引、运行搜索等。
文章还解释了 JVector 如何处理向量索引和 Chronicle Map 如何处理文章数据。最后,文章总结了如何利用 JVector 和 Chronicle Map 在笔记本电脑上高效索引整个维基百科。
HN 评论 137 comments | 作者:tjake | 1 day ago #
https://news.ycombinator.com/item?id=40514266
- JVector 通过压缩向量来构建索引,与 DiskANN 的方法不同,JVector 逐步压缩用于构建索引的向量。
- DiskANN 也支持 PQ 在构建时,但会影响图形质量。
- JVector 在构建索引时使用压缩方法,几乎没有准确性损失。
- Embeddings 并非魔法,需要考虑相似性定义,Cohere 的服务可能过早依赖专有 embeddings。
- 向量搜索是否与 BM25 算法竞争,ColBERT 提供了两者的最佳结合。
- Linux swap 问题,有人建议降低 swappiness。
- 数据集免费获取,但生成 embeddings 可能需要成本。
- JVector 可作为服务使用,DataStax Astra 提供友好 API。
- 有人提到使用 pgvector 在 Postgres 中进行余弦相似性索引。
- 有人讨论了 Linux swap 的优化和关闭。
- 作者自称 DataStax CTO Emeritus,主要从事编码工作。
- DataStax 网站显示 Jonathan Ellis 是 DataStax 联合创始人和 CTO。
Gov. Polis Signs Bill Mandating That Consumers Have Options to Fix Electronics #
这篇文章报道了科罗拉多州州长贾里德·波利斯(Jared Polis)在丹佛公共图书馆的 Corky Gonzales 分馆签署了《消费者修复数字电子设备的权利法案》。该法案赋予消费者修复自己设备的权利,包括手机、游戏系统、电脑和电视等设备。
根据这项法案,当设备损坏时,如手机、洗碗机、洗衣机或笔记本电脑,科罗拉多州居民将获得修复设备所需的信息,或选择自己的修复服务提供商。波利斯指出,这项法案扩大了去年通过的农业设备修复权法案的范围,他相信这项修复权法案也会取得成功。议员杰夫·布里奇斯表示,这项法案是全国最强有力的修复法案,苹果和谷歌称其有效。
该法案的支持者们认为,这将为消费者、小型企业和经济带来好处。这项法案还允许人们在自己的时间内修复自己的设备。议员史蒂文·伍德罗表示,消费者应该有权修复自己的设备,这有助于减少污染和浪费。法案规定,制造商的软件工具对消费者免费,但可能会收取所需的物理工具费用。
这项法案的支持者们认为,修复权法案对于赋予消费者权力和确保公平市场至关重要。
HN 评论 99 comments | 作者:rmason | 1 day ago #
https://news.ycombinator.com/item?id=40516499
- 该法案要求消费者有修复电子设备的选择,涵盖了数据中心和企业设备,但排除了游戏主机、医疗设备和机动车辆等;
- 有人猜测苹果可能会保留“零部件配对”作为防盗措施,但可能会放宽对“非一方”零部件的限制;
- 有人认为应该有法律规定,任何有合理磨损预期的产品必须是用户可更换的;
- 有人提到电视的修复,指出电视的维修并不困难,可以通过更换 LED 灯条等方式进行修复;
- 有人讨论了苹果的零部件维修问题,以及市场自我调节的局限性。
FrankenPHP: Modern PHP App Server #
https://frankenphp.dev/ 是一个现代化的 PHP 应用服务器,由 PHP 生态系统的长期贡献者 Ryan Weaver 开发。该服务器使用 Go 语言编写,旨在提供现代化的 PHP 应用程序运行环境。以下是该服务器的一些关键特点和功能:
- 使用官方 PHP 执行器嵌入在先进的 Web 服务器 Caddy 中。
- 原生支持 HTTP/1.1、HTTP/2 和 HTTP/3。
- 自动生成和更新 HTTPS 证书(Let’s Encrypt 或 ZeroSSL)。
- 构建独立、自包含且无依赖的 PHP Web 应用程序和命令行工具的二进制文件。
- 原生支持流行的 PHP 扩展,包括 OPcache 和 XDebug。
- 支持 Worker 模式,可使 PHP 应用程序比以往更快。
- 简单易用,无需 PSR-7,性能优越,支持 Symfony、API Platform、Laravel 等框架。
- 部署简便,无需外部服务,运行在一个二进制文件中。
- 支持 Early Hints、实时事件传输、多种压缩格式、结构化日志、Prometheus 指标和追踪、HTTP/2 和 HTTP/3 等现代功能。
- 由 API Platform 和 Symfony 核心团队成员 Kévin Dunglas 设计,Laury Sorriaux 设计,Les-Tilleuls.coop 赞助。
FrankenPHP 旨在为 PHP 开发者提供一个高效、现代化的运行环境,使他们能够更轻松地构建和部署 PHP 应用程序。
HN 评论 183 comments | 作者:aquova | 20 hours ago #
https://news.ycombinator.com/item?id=40519722
- PHP 开发者对 FrankenPHP 的设计和价值表示兴趣,认为其适合快速启动小型项目。
- 有人认为将 PHP 嵌入 Go 服务器中是一种新颖的做法,但也有人对在生产环境中使用此类工具表示担忧。
- 讨论中提到 Go 和 PHP 各自的优势,Go 适合构建 API,而 PHP 在添加动态元素到静态 HTML 站点方面表现出色。
- PHP 和 Go 在不同用例下的优劣势被讨论,Go 适合构建 API,而 PHP 在构建整个页面时更具优势。
- 有人提到 Go 推动了静态构建、单一二进制文件的概念,但其他语言也支持类似功能。
- 讨论中涉及到使用 Go、PHP、Nginx 等工具的配置和优缺点,以及对不同技术栈的看法和经验分享。
Don’t DRY Your Code Prematurely #
https://testing.googleblog.com/2024/05/dont-dry-your-code-prematurely.html
这篇博文来自 Google Testing Blog 的“不要过早地使你的代码 DRY”系列。作者 Dan Maksimovich 提到了“不要重复自己”或 DRY 的优点,强调了在应用 DRY 原则时需要谨慎考虑代码是否真正冗余,或者功能是否需要随时间独立演变。过于严格地应用 DRY 原则会导致过早的抽象化,使未来的更改变得比必要复杂。文章提倡在设计抽象化时不要过早地耦合可能会在长期内独立演变的行为。
作者通过代码示例展示了过早应用 DRY 原则可能带来的问题。他提到了一个关于截止日期设置的例子,指出了在不同实体类型(如任务和支付)之间可能存在不同逻辑的情况。虽然两种代码风格中的错误检查看起来相同,但实际上它们代表了不同的概念,可能会有不同的逻辑要求。作者建议在犹豫时保持行为的分离,直到足够的共同模式出现,证明了耦合的必要性。
总的来说,文章强调了在早期开发阶段容忍一些重复,并等待抽象化的时机。未来的需求往往是不可预测的,因此需要考虑“你不会需要它”或 YAGNI 原则。最后,作者建议在足够的共同模式出现之前,保持行为的分离可能比解决过早抽象化的复杂性更简单。
HN 评论 253 comments | 作者:thunderbong | 7 hours ago #
https://news.ycombinator.com/item?id=40525064
- 有评论指出,DRY(不要重复自己)并非只是关于代码重复,而是关于知识/意图的重复,代码只是知识的一种表达方式。
- 有人提到,盲目追求 DRY 是中级到高级工程师最常犯的错误之一。
- 有人分享了在 C++ 和 Python 中遇到的类似经历,指出过度追求 DRY 可能导致代码难以理解和维护。
- 有评论指出,DRY 代码最终可能变成难以维护的噩梦,每个微小的新功能都可能需要花费数小时来实现。
- 有人提到,WET(写两遍)代码看起来简单,每次更改都需要在多个地方添加,但每次更改都是微不足道的,时间可预测。最难的是抵制去除重复性的诱惑。
I love my wife. My wife is dead (1946) #
https://lettersofnote.com/2012/02/15/i-love-my-wife-my-wife-is-dead/
这封信是由著名物理学家理查德·费曼(Richard Feynman)于 1946 年 10 月写给他已故妻子阿琳(Arline)的一封感人的情书。阿琳在 1945 年 6 月因患肺结核去世,享年 25 岁。费曼在信中表达了对妻子的深深爱意,描述了他对阿琳的思念和爱意。
他提到了他们曾一起学习制作衣服、学习中文和购买电影放映机等计划,以及对妻子的无比爱意。费曼在信中表达了对妻子的爱将永存,并坦言自己无法爱上其他人,因为阿琳在他心中无可替代。这封信直到费曼于 1988 年去世后才被打开。
HN 评论 100 comments | 作者:tu7001 | 13 hours ago #
https://news.ycombinator.com/item?id=40521963
- 失去配偶的痛苦和处理死亡从未容易,建立友谊网络需要时间,但可以填补生活中的空缺。
- Feynman 之后变得性行为放纵,以麻痹失去妻子的痛苦,但有人选择避免这种诱惑。
- 重新结婚可能是为了寻找新的爱,有人认为寻找爱是一种天性。
- 家人的支持和理解对于处理失去的痛苦至关重要。
- 对于失去亲人的痛苦,时间可以带来疗愈,感受是合理的。
- 保留私人信件和日记的隐私权利值得尊重,尤其是作者明确不希望其被公开的情况下。
- 死亡是一种模式,通过网络镜头,可以将其视为更大演变系统的数据压缩或噪声减少策略。
- 通过书写和与逝去的亲人交流,可以使关系继续增长,他们也在成长。
- 每次离别或缺席都是对某人的机会,以新的方式考虑他们。
- 在生活中的每次离别都是对某人的机会,以新的方式考虑他们,这对于塑造他们的形象很重要。
- 与逝去的亲人沟通可以帮助我们重新认识他们,使他们在我们的生活中更有活力。
- 考虑到逝去的亲人,可以帮助我们在日常互动和决策中更好地反映他们的考虑。