2025 08 26 HackerNews

2025-08-26 Hacker News Top Stories #

  1. OKLCH是一种新型颜色模型,旨在实现感知均匀性,适用于创建均匀的颜色调色板,并在现代浏览器中得到支持。
  2. 一位程序员在日志中讨论了对Alex Schroeder观点的认同,并探讨了网络机器人"Thinkbot"的活动及其可能的关联。
  3. 设计优秀的API需要在熟悉度和灵活性之间找到平衡,避免破坏用户空间,版本控制是负责任的变更方式。
  4. Ghrc.io被认为是一个恶意网站,通过拼写错误窃取GitHub凭证,用户应采取措施保护账户安全。
  5. Sam Wilkinson对Logitech的MX Ergo鼠标进行了多项DIY改造,包括更换端口和使用更轻量的软件。
  6. FCC移除了超过1200家未遵守自动拨号电话保护规定的语音服务提供商,以打击非法垃圾电话。
  7. 美国政府持有英特尔股份引发争议,可能影响行业竞争力和创新动力,CHIPS法案的战略也可能受影响。
  8. OAuth是一种授权框架,允许第三方应用代表用户访问数据,核心流程包括用户授权和令牌交换。

What are OKLCH colors? #

https://jakub.kr/components/oklch-colors

OKLCH 是一种新型的颜色模型,旨在实现感知上的均匀性,使得颜色的调整和感知更加符合人类的直观感受,便于操作和使用。它与其他颜色模型如 RGB、HSL、LCH 等不同,这些模型定义了如何描述颜色,而 OKLCH 基于 OKLab 颜色空间,由亮度、色度和色调三个值组成。

OKLCH 模型的优势在于能够创建感知上均匀的颜色调色板,并且易于操作。例如,在设计药丸按钮时,使用 OKLCH 可以保持不同按钮颜色的一致性,而使用 sRGB 或 HSL 则难以做到。此外,OKLCH 在调整亮度时不会产生色调或饱和度的偏移,这在其他颜色模型中是常见的问题。

在渐变色方面,OKLCH 的表现与 sRGB 不同,它遵循亮度、色度和色调的变化,而不是基于红绿蓝值的计算,这可能导致渐变色中出现一些未定义的颜色。为了避免这种情况,许多工具使用 OKLAB 进行渐变色的插值,以获得更一致的结果。

OKLCH 能够定义超出实际屏幕显示能力的颜色,这意味着它可以指定一些在任何实际色域(如 sRGB 或 Display-P3)中都不存在的颜色值。在实际应用中,这些颜色会被裁剪或映射到色域内最接近的可表示颜色。

现代浏览器普遍支持 OKLCH 颜色,但为了兼容旧版浏览器,可以使用 CSS 的 @supports 指令添加回退方案,以便在不支持 OKLCH 的情况下回退到 sRGB 颜色。

作者还提供了一个名为 oklch.fyi 的工具,用于生成 OKLCH 颜色调色板,并将现有 CSS 变量转换为 OKLCH 格式。


HN 热度 734 points | 评论 170 comments | 作者:tontonius | 18 hours ago #

https://news.ycombinator.com/item?id=45010876

  • OKLCH 是一种极坐标空间,用于色彩插值时可能产生极端情况,导致渐变色超出人类可感知范围。
  • 色彩空间在处理色彩范围边缘时存在问题,微小的值变化可能导致色彩超出范围。
  • 存在多种算法可以将色彩拉回范围内,但会牺牲感知均匀性。
  • 在追求更好的渐变效果时,如果关心感知均匀性,可能应该选择在 Oklab 中进行插值。
  • 浏览器在 sRGB 中的颜色插值并非错误,而是色彩空间的特性,应先将 sRGB 转换为线性 RGB 进行插值。
  • sRGB 的编码是非线性的,直接线性插值会导致不良结果,应先应用传递函数,再进行线性插值。
  • OKLCH 是 CIELAB 的改进版,解决了 CIELAB 在创建过程中的程序性缺陷。
  • 在设计元素中使用渐变时,应选择自己定义的中点颜色,避免在两个不相似的颜色之间使用渐变。
  • 对于两端颜色差异较大的渐变,手动指定中间颜色可以获得更好的效果。
  • 任何定义了超出人类感知范围的颜色空间都可能存在渐变问题。

Ban me at the IP level if you don’t like me #

https://boston.conman.org/2025/08/21.1

这篇文章是一位程序员的网络日志,他虽然不喜欢波士顿,也没有住在波士顿,却将自己的网络日志命名为“波士顿日记”。文章发表于 2025 年 8 月 21 日,作者表达了对 Alex Schroeder 的 Butlerian Jihad 越来越认同的观点,并探讨了网络活动。文章中提到,本月访问量最高的网络机器人(webbot)自称为“Thinkbot”,可能与某家 AI 公司有关,但作者无法确定。这个机器人的标识信息非常简单,没有提供 URL,也不查看 robots.txt 文件,只是简单地表示如果不喜欢它,可以直接在 IP 层面上封锁它。


HN 热度 531 points | 评论 395 comments | 作者:classichasclass | 20 hours ago #

https://news.ycombinator.com/item?id=45010183

  • 编写代码以遵守网络爬虫的约定,但发现有些网站在 robots.txt 文件中使用反爬虫技术。
  • 将 robots.txt 下载超时视为 Disallow /,以避免继续爬取网站。
  • 通过隐藏门铃的方式来阻止爬虫。
  • 如果对方行为不当,应默默断开 TCP 连接,不通知对方。
  • 通过 TCP_REPAIR 技术可以默默断开 TCP 连接。
  • 认为慢速下载 robots.txt 并非故意为之,而是网站对爬虫的管理不善。
  • 认为对遵守规则的爬虫施加惩罚是反效果的。
  • 通过限制 robots.txt 的访问可以快速应对爬虫问题。
  • 网站主人可能不在乎爬虫的区别,只关心如何应对不良行为。
  • 有些人可能会访问 robots.txt 来检查网站结构或测试网站是否在线。
  • 认为验证码并不能准确判断人类和机器人。
  • 通过 robots.txt 进行测试,因为它是一个静态文件,不受客户端代码干扰。
  • 慢速下载 robots.txt 可能与 Wordle 游戏有关。
  • 慢 loris 攻击是一种多年前就存在的攻击方式。
  • 网站受到爬虫影响的共同点可能是目录列表。
  • 认为爬虫问题被夸大,除非真的对网站造成影响。
  • 认为应对爬虫问题的最好方式是拥有快速且工程良好的网络产品。
  • 有些网站 60% 的请求来自已知的爬虫,这严重影响了网站性能。

Show HN: Base, an SQLite database editor for macOS #

https://menial.co.uk/base/

Base 是一款专为 macOS 设计的轻量级、功能强大且舒适的 SQLite 数据库编辑器,适合所有人使用。它提供了详细的模式检查器,可以轻松管理数据库结构,一目了然地查看表模式、列类型、约束和关系,无需深入 SQL 代码。Base 的直观表格编辑器允许用户轻松创建和修改表,无需编写复杂的 CREATE 或 ALTER 语句,通过简洁的界面添加和组织列以及定义约束,使数据库设计变得简单易懂。

Base 还提供了一个简单的数据浏览器,用户可以轻松浏览、过滤和编辑表内容。数据以表格格式展示,可以直接编辑单元格,并使用强大的过滤工具精确查找所需数据。此外,Base 还包含 SQL 编辑器和查询工具,支持智能自动补全和语法高亮,方便用户编写和执行 SQL 查询,存储常用查询作为可重用的片段,并即时查看查询结果。

Base 支持从 CSV 和 SQL 转储文件导入数据,并可以将结果导出为 SQL、分隔文本、JSON 和 Excel 格式,方便用户快速迁移数据或与同事共享结果。用户可以免费下载 Base 的试用版本,但功能有限,需要一次性购买以解锁完整版本。Base 3 需要 macOS 15 Sequoia 或更新版本。如果需要帮助,可以查看 Base 的文档或发送电子邮件咨询。


HN 热度 483 points | 评论 134 comments | 作者:__bb | 10 hours ago #

https://news.ycombinator.com/item?id=45014131

  • Base 应用已经存在约 15 年,并且随着时间的推移不断改进。
  • Base 应用提供了一个舒适的 SQLite 本地图形界面,且不会变成一个庞大的 IDE 风格应用。
  • Base 支持完整的表格修改,这在手动使用 SQLite 时相当复杂。
  • Base 提供了比其他编辑器更详细的列约束显示。
  • Base 的更新增加了对附加数据库的支持,这在 macOS 沙箱环境中有些棘手。
  • 开发者乐于听取反馈并回答任何问题。
  • 有人提到 Base 的名字可能不利于搜索,因为“Base”是一个通用术语。
  • 有人提到 Base 的发展在几年前变得非常安静。
  • 有人表示 Base 是一个“手工制作”的软件模型,由一个小团队或一个人深入投入,专注于做好一件事。
  • 有人好奇 Base 的收入分布,包括直接销售、Mac App Store 和 Set App。
  • 有人询问为什么 Base 不支持旧版本的 macOS。
  • 有人提到 SQLite 原生不支持 UUID,但许多人将其作为二进制 blob 存储。
  • 有人提到其他数据库管理系统和语言存储和排序 UUID 的方式不同,因此直接处理二进制 blob 可能存在风险。
  • 有人提到 OmniGraffle 可以像 Windows 上的 Microsoft Visio 一样用于数据库结构图。
  • 有人提到 Database Designer 是一个免费的 Android 应用,适用于简单项目。
  • 有人提到他们尝试了 Base 并认为它看起来很好,同时提到了 TablePlus 应用的一些 SQLite 特定功能。
  • 有人提到 Base 自动启用外键应该是一个选项,并且提到了对自动加载扩展的支持。
  • 有人表示他们自 2011 年以来一直是 Base 的快乐用户,并且很高兴能够支付升级费用。
  • 有人询问是否需要一个使用 SQLite 的本地版本的 Airtable,可以同步文件和数据。

Everything I know about good API design #

https://www.seangoedecke.com/good-api-design/

本文讨论了如何设计优秀的 API。作者认为,好的 API 应该是平淡无奇的,因为它们是开发者用来实现其他目标的工具,而不是他们关注的重点。API 设计需要在熟悉度和灵活性之间找到平衡,因为一旦发布,API 的任何改变都可能破坏用户的软件。因此,API 设计者需要谨慎设计,尽量避免未来的变更。

文章强调了“不破坏用户空间”的原则,即 API 维护者有责任避免损害下游消费者的利益。任何改变都应避免,除非技术上的收益足够高,这时可以通过版本控制来负责任地进行 API 变更。版本控制意味着同时提供旧版和新版 API,让现有用户继续使用旧版,而新用户可以选择使用新版。这样可以减少对用户的干扰,但作者认为版本控制是一种必要的恶,因为它给用户和维护者带来了额外的复杂性。

最后,文章指出 API 的成功完全取决于产品本身。如果产品有价值,即使 API 设计不佳,用户也会使用它。因此,API 的质量只是一个边际特性,只有在消费者在两个基本等价的产品之间做选择时才显得重要。作者提醒,拥有 API 的存在与 API 的质量是两个不同的问题。


HN 热度 398 points | 评论 144 comments | 作者:ahamez | 1 day ago #

https://news.ycombinator.com/item?id=45006801

  • 不破坏用户空间的提醒是好的,但人们从不提及另一半声明:我们可以且将不预警地破坏内核 API。
  • GNU libc 经常破坏用户空间,因此无论内核维护者如何努力,Linux 用户空间都会受到影响。
  • GNU libc 向后兼容性很好,如果不想在广泛版本上运行,可以链接到尽可能旧版本的 libc。
  • 静态链接的可执行文件非常稳定。
  • 静态链接 GNU 的 libc.a 而不发布源代码可能违反 LGPL,这可能会破坏许多公司在 Linux 上运行专有软件。
  • musl libc 有更宽松的许可证,但听说性能比 GNU libc 差。
  • 有人希望 LLVM libc 能够实现,使整个工具链从编译器驱动到 C/C++ 标准库都变成 Clang/LLVM。
  • GNU libc 静态链接非常困难,大多数人使用 musl,尽管有些人使用 uclibc。
  • 可以分发特定版本的 libc.so 与应用程序一起。
  • GNU libc 的二进制兼容性自 2.2 版本以来一直很好,非常接近 Linux 的“我们不破坏用户空间”的承诺。
  • 你可以安装和使用最新的 glibc 和 libgcc 在运行时,但构建时要小心,以免为构建的每个东西添加额外依赖。
  • 从 2006 年左右的静态链接二进制文件现在根本不起作用了,因为文件系统发生了变化,它们的 libc 版本无法像动态链接版本那样修复。

Ghrc.io appears to be malicious #

https://bmitch.net/blog/2025-08-22-ghrc-appears-malicious/

ghrc.io 看起来是一个恶意网站,它通过一个简单的拼写错误,即把 ghcr.io 误写为 ghrc.io,来窃取 GitHub 凭证。ghcr.io 是 GitHub 的一个容器镜像和 OCI 制品的 OCI 兼容注册表,非常受开源项目的欢迎。然而,ghrc.io 只是一个默认的 Nginx 安装,通常访问会显示 Nginx 的欢迎页面或返回 404 错误。

问题的关键在于,当访问 ghrc.io 的 OCI API 时,它的行为不再像一个默认的 Nginx 安装。访问 ghrc.io 的 /v2/ 路径时,会收到一个 401 状态码,提示需要认证,并且有一个 www-authenticate 头部,要求客户端(如 Docker、containerd、podman 和 Kubernetes 使用的各种 CRI)将用户凭证发送到 https://ghrc.io/token API。这种配置在默认的 Nginx 安装中没有合法理由,而且服务器的其他部分也表明它不是一个容器注册表。

这种攻击是一种凭证窃取的“错别字混淆攻击”。只有在你为 ghrc.io 注册表存储了凭证时,凭证才会被窃取,因为客户端不会将不同主机的凭证发送到 ghcr.io。可能导致凭证泄露的场景包括:运行 docker login ghrc.io、使用 GitHub Action 并设置 registry 为 ghrc.io、创建 Kubernetes 密钥并尝试从该错误的主机拉取镜像。

如果你曾经不小心登录到错误的服务器,你应该更改密码,撤销你使用的任何个人访问令牌,并检查你的 GitHub 账户中是否有任何潜在的恶意活动。攻击者可能会利用这些凭证向你的 ghcr.io 存储库推送恶意镜像,或者他们可能直接访问你的 GitHub 账户,这取决于使用了哪些登录凭证。


HN 热度 396 points | 评论 70 comments | 作者:todsacerdoti | 1 day ago #

https://news.ycombinator.com/item?id=45008740

  • GitHub 容器注册表不支持细粒度令牌,使用经典令牌使问题更加危险
  • 有人建议创建 GitHub 应用或 CLI 来生成临时令牌以缓解问题
  • 有人呼吁有人购买所有 typo 域名并交给微软,微软应该重命名注册表以避免此类问题
  • 微软可能没有为 GitHub 的每个域名支付 MarkMonitor 监控费用
  • ghcr.io 域名已由 MarkMonitor 注册
  • 有人建议不要使用 ghcr.io,而是运行自己的 Docker 注册表
  • 有人提出通过进行恶意黑客活动引起微软重视以解决问题,但建议将盗取的资金捐给慈善机构
  • 有人质疑微软为何需要为一项服务注册 1420 个域名
  • 有人提出 GitHub Inc.可能是官方的微软 GitHub 服务
  • 有人指出这种域名错误很难被发现,即使是多次尝试和重启机器的用户也可能犯错
  • 有人发现许多项目中存在这种错误,对此表示惊讶
  • 有人提出 LLM 可能无法识别这种错误,类似于草莓问题
  • 有人反驳说 LLM 能够区分 cr 和 rc 这样的不同令牌

Building the mouse Logitech won’t make #

https://samwilkinson.io/posts/2025-08-24-mx-ergo-mods

Sam Wilkinson 最喜欢的鼠标是 Logitech 的 MX Ergo 轨迹球鼠标,自 2017 年推出以来他一直在使用。这款鼠标拥有多个按钮和舒适的人体工程学倾斜设计,但存在三个主要问题:使用 micro-USB 端口充电、按键声音较大且有点击感、软件过于臃肿。在等待 Logitech 更新型号 8 年后,Sam 决定自己动手解决这些问题。

尽管 Logitech 在 2024 年底发布了更新的 MX Ergo S 型号,具有更安静的按键、USB-C 充电口和价格上涨 20 美元,Sam 还是决定继续他的改造项目,以减少电子废物。

改造项目包括:

  1. 将充电端口从 micro-USB 改为 USB-C。Sam 找到了一个指南,通过替换鼠标内部的小 PCB 上的端口来实现。他从 PCBWay 订购了 10 个 PCB,并使用热风焊接站自行焊接新端口。
  2. 更换静音开关。Sam 使用了 Logitech MX Master 3S 鼠标的静音开关作为参考,选择了 Huano Silent 开关,几乎完全无声,按压时有柔软但令人满意的触感。
  3. 软件升级。Sam 放弃了 Logitech 的 Logi Options+ 软件,转而使用更轻量级的 SteerMouse,它能够满足他的需求并且运行稳定。

总结来说,Sam 对这个项目的结果非常满意。他特别推荐更换 Huano Silent 开关,而其他开关的更换可能有些过度。USB-C 端口的更换虽然不是必需的,但作为一个有趣的项目和学习表面贴装焊接的好机会。转向 SteerMouse 虽然简单,但提供了更好的体验。Sam 认为,调整我们日常使用的物品以符合个人喜好是一件有趣的事情,这个项目给了他很多新的想法去尝试。


HN 热度 341 points | 评论 248 comments | 作者:sammycdubs | 9 hours ago #

https://news.ycombinator.com/item?id=45014993

  • DIY 过程中,人们往往为了省钱而花费更多,购买昂贵的工具。
  • 通过 DIY 获得的经验和技能是宝贵的,即使成本更高。
  • 有时候,自己动手做项目的成本和直接购买的成本差不多。
  • DIY 过程中,人们会积累很多只使用过几次的工具和设备。
  • 通过 DIY,人们可以更好地理解劳动分工的原理。
  • DIY 时,人们往往会购买一些昂贵的工具,而忽视了更简单的解决方案。
  • 使用热风枪进行 SMT 焊接是一个有效的 DIY 方法。
  • 热风重工站对于需要更换零件或修复重流问题非常重要。
  • 使用普通电烙铁焊接 SMD 元件比通孔元件更容易。
  • DIY 时,人们往往会购买一些昂贵的工具,而忽视了更简单的解决方案。
  • DIY 过程中,人们会积累很多只使用过几次的工具和设备。
  • 考虑将不常用的工具捐赠给当地的工具图书馆或创客空间。
  • 担心捐赠的工具会被不熟练的用户损坏或维护不当。
  • 通过 DIY,人们可以更好地理解劳动分工的原理。

FCC bars providers for non-compliance with robocall protections #

https://docs.fcc.gov/public/attachments/DOC-414073A1.txt

2025 年 8 月 25 日,美国联邦通信委员会(FCC)采取最新行动,保护美国民众免受非法自动拨号电话(robocalls)的侵扰。FCC 执法局从自动拨号电话缓解数据库中移除了超过 1200 家不遵守规定的语音服务提供商,实际上切断了它们与美国电话网络的连接。这些提供商违反了 FCC 规定,未能维持准确的自动拨号电话缓解数据库认证,从而逃避了保护消费者免受非法自动拨号电话的义务。

此前,这些公司在本月早些时候收到了 FCC 的最终警告,当时执法局从数据库中移除了首批 185 家提供商。FCC 主席布伦丹·卡尔(Brendan Carr)发表声明称,自动拨号电话是美国家庭普遍的烦恼和威胁,FCC 正在竭尽全力反击这些恶意和非法的电话。未能履行职责阻止这些电话的提供商在我们的网络中没有立足之地,FCC 正在采取行动,并将继续这样做。

FCC 的自动拨号电话缓解数据库是该机构确保提供商积极打击自动拨号电话并实施 STIR/SHAKEN 来电者 ID 认证的关键工具。提供商必须证明他们已在所有基于 IP 的网络部分实施了 STIR/SHAKEN。所有提供商还必须提交自动拨号电话缓解计划。未能履行这些义务可能导致从数据库中移除并阻止提供商的流量。被移除的提供商只有在获得 FCC 执法和有线竞争局的明确批准后,才能重新提交数据库。

2024 年 12 月,委员会命令 2411 家提供商纠正其不足的文件或提供不应从自动拨号电话缓解数据库中移除的理由。今天的行动从数据库中移除了超过 1200 家这些提供商。8 月 6 日,执法局从数据库中移除了一个初步的 185 家提供商,所有这些提供商至少在一个追溯中作为起源、网关或无响应的提供商出现。

在 FCC 先前移除 185 家公司之后,一个由 51 名州检察长组成的两党小组发起了“自动拨号电话围剿行动”,向 37 家语音提供商发送警告信,要求他们采取行动阻止非法自动拨号电话通过他们的网络传输。这些信件被发送给了检察长们注意到的未遵守 FCC 规则要求的追溯支持、自动拨号电话缓解数据库认证和自动拨号电话缓解计划的提供商,其中包括 FCC 已从数据库中移除的七家提供商。


HN 热度 313 points | 评论 210 comments | 作者:impish9208 | 8 hours ago #

https://news.ycombinator.com/item?id=45015354

  • 当前电话号码泄露严重,任何人都可以不断打电话给用户,这种模式已经过时
  • 许多用户将手机设置为“勿扰”模式,只允许联系人列表中的号码来电
  • 有用户因为每天接到 90 个垃圾电话而不再接听电话,改变了接听习惯
  • 有人建议改变铃声以应对垃圾电话问题
  • 有人询问如何为 iPhone 设置反垃圾电话措施
  • 有用户每月只接到 1-2 个垃圾电话,怀疑与年龄有关,垃圾电话更倾向于针对老年人
  • 电话号码使用时间越长,接到的垃圾电话越多
  • 有人 25 年未换电话号码,每周大约接到 1 个垃圾电话
  • 有 86 岁老人经常接到自称“孙子”的骗子电话
  • 有人建议来电者支付一定押金,如果被标记为垃圾电话则押金不予退还
  • 有人提议在电信层面实施来电押金制度,以减少垃圾电话
  • 有人抱怨无法屏蔽或自动发送到语音信箱的垃圾电话,需要手动处理
  • 即将推出的 iOS 26 将有新的来电筛选功能,可以让用户选择接听、发送到语音信箱或忽略
  • 有人担心 iOS 的新筛选功能会导致来电者挂断而不留言
  • 有人提到“发送未保存号码到语音信箱”的选项,以及将未知号码的来电和语音信箱与主列表分开的功能
  • 有人担心 iOS 的新功能会无意中确认用户号码给垃圾电话发送者
  • 有人使用 Google Fi 的来电筛选功能,并提到 FCC 阻止列表最近有所改善
  • 有人询问 donotcall.gov 数据库最近做了哪些改变

Uncle Sam shouldn’t own Intel stock #

https://www.wsj.com/opinion/uncle-sam-shouldnt-own-intel-stock-ccd6986d

美国政府与英特尔公司宣布,将英特尔的芯片法案(Chips Act)补助金转换为公司股权。文章作者 Mike Schmidt 和 Todd Fisher 曾负责商务部的芯片计划,并与英特尔及其客户有数百小时的接触,他们认为这种做法是错误的。2022 年的两党芯片和科学法案旨在扭转数十年对国内半导体制造业的投资不足。美国几乎完全依赖台湾的先进芯片,这些芯片为人工智能、通信和国家安全系统提供动力。这种依赖带来了不可接受的风险。芯片法案的补助金、贷款和税收抵免旨在缩小与亚洲半导体制造业的成本差距,并促进在美国的投资。


HN 热度 307 points | 评论 317 comments | 作者:aspenmayer | 1 day ago #

https://news.ycombinator.com/item?id=45008056

  • 美国政府不应该拥有英特尔股票,因为政府干预关键行业以避免系统性崩溃是必要的
  • 政府干预导致一些行业持续依赖政府支持,影响全球竞争力
  • CHIPS 法案旨在吸引台积电和三星在美国生产芯片,但美国持有英特尔股份使得这一战略变得不清晰
  • 如果英特尔依赖“国家安全”继续生产落后芯片,可能会降低创新
  • 福特汽车在 2009 年没有接受政府救助
  • TSMC 和三星可能不需要在美国本土化生产,因为美国没有其他选择,且美国难以与他们竞争
  • TSMC 在美国亚利桑那州建厂可以在台湾受到封锁和攻击时继续为美国制造芯片
  • 鉴于乌克兰的待遇,台湾可能不会相信美国能在紧急情况下出口芯片
  • 如果特朗普或其他类似人物执政,可能会要求芯片留在美国以保护国家免受中国侵略
  • 欧盟正在迅速重新武装,可能比美国更值得信赖,尤其是在乌克兰冲突中表现出的原则和稳定性
  • 欧盟、日本和韩国可能有足够的动机让中国在没有美国参与的情况下三思
  • 乌克兰战争表明,对于大国来说,赢得战争比表面上的强硬态度要困难得多

An illustrated guide to OAuth #

https://www.ducktyped.org/p/an-illustrated-guide-to-oauth

OAuth 是一种授权框架,最初于 2007 年由 Twitter 创建,用于允许第三方应用代表用户发布推文。OAuth 的核心是访问令牌,类似于针对特定用户的 API 密钥,允许应用代表用户执行操作或访问数据。

OAuth 流程复杂,因为它可以以多种方式使用。本文以 YNAB(一款财务应用)为例,解释了如何通过 OAuth 将 YNAB 连接到 Chase 银行账户,而无需提供 Chase 密码。流程如下:

  1. 用户在 YNAB 选择连接 Chase。
  2. YNAB 将用户重定向到 Chase 登录。
  3. 用户在 Chase 登录并授权 YNAB 访问特定账户。
  4. 用户被重定向回 YNAB,此时 YNAB 已连接到 Chase。

在这一过程中,YNAB 最终获得了访问令牌,可以访问用户在 Chase 的数据。安全起见,访问令牌不会通过 URL 传输,而是通过授权码交换获得。OAuth 流程包括用户同意流程和授权码流程,涉及资源所有者、OAuth 客户端、授权服务器和资源服务器等术语。

要使用 OAuth,首先需要注册新应用,提供应用名称和重定向 URI,并获得客户端 ID 和客户端密钥。注册完成后,应用就可以启动 OAuth 流程,将用户重定向到授权服务器的 OAuth 端点,并在用户授权后通过授权码交换获得访问令牌。


HN 热度 293 points | 评论 56 comments | 作者:egonschiele | 12 hours ago #

https://news.ycombinator.com/item?id=45013131

  • OAuth 实现起来比看起来要复杂,很多资料只是浅尝辄止,缺乏实际编码的有用信息。
  • Aaron Parecki 的书《OAuth 2 Simplified》对于深入理解 OAuth 2.1 非常有帮助。
  • 在实现 OAuth 时,推荐使用 Auth Code 配合 PKCE,避免使用已废弃的特性如 resource owner password 和 implicit。
  • 对于 token response type 和 id_token 放在 redirect uri 的 fragment 中的做法存在争议,苹果只支持 “code” 类型,虽然安全但需要额外的后端通道和请求。
  • 刷新令牌理论上不应过期,但许多网站实际上会设置过期时间,需要定期刷新以保持刷新令牌的有效性。
  • 直接阅读 RFCs 和 OIDC 规范对于理解 OAuth 很有帮助。
  • 查看现有的 OAuth 实现,如 Duende IdentityServer,对于实施认证服务器很有帮助。
  • Keycloak 是一个强大的身份认证服务器,可以帮助理解如何使用 Spring Boot 通过 Azure Entra ID 进行认证。
  • 有一个老的 django 实现 djoauth2,虽然可能需要根据 Django 的变化进行调整,但可以作为参考。
  • OAuth 集成到现有实现中比从头开始实现更困难。
  • 这篇帖子中的插图指南对于理解 OAuth 很有帮助。

Standard Thermal: Energy Storage 500x Cheaper Than Batteries #

https://austinvernon.site/blog/standardthermal.html

Standard Thermal 是一家致力于使太阳能光伏能源全天候可用的初创公司,其目标是以与美国天然气竞争的价格提供能源。该公司的技术通过在最经济的储能材料——大量土壤中储存热量来实现这一目标。太阳能光伏阵列提供电能,比电网连接的太阳能农场更简单、更便宜。嵌入土壤堆中的电加热元件将电能转换为热能,管道穿过土壤堆,流体流经管道带走热量以供应客户。不包括太阳能光伏在内,其资本成本与天然气储存相当,每千瓦时热能成本低于 0.10 美元,比电池便宜 1000 倍。

Standard Thermal 的目标客户包括拥有超过 300 千瓦的超大型阵列和现场热能需求的太阳能开发商,以及通常每年使用超过 50,000 加仑丙烷的孤立能源用户。只要土地可用,该储能系统可以提供数百兆瓦的热能需求。技术需要一定规模才能成本效益,因此有最低要求。

公司的中期目标是重新启动燃煤电厂,以在季节性低谷期间供应电力。重新启动意味着储存的热量按需为涡轮机产生蒸汽,而不是燃烧煤炭。自去年秋天以来,公司一直在俄克拉荷马州的 100 千瓦测试场连续原型设计,并接近其模块化商业形态。它将在接下来的几个月内建造和测试,然后准备好在客户现场复制和粘贴。

Orca Sciences 孵化了 Standard Thermal,公司计划在 2026 年初分拆并完成筹资。

太阳能光伏直流输出在许多地方已成为比化石燃料更便宜的能源。但太阳能光伏的超低成本能源只有在正确的形式和需要时可用时才有意义。成本的转变使得现在是开发在化石燃料是最便宜的能源时无关紧要的技术的正确时机。

电池将处理大部分的日常电力储存和稳定。但要使太阳能光伏发挥其全部潜力,还需要几种其他技术。其中之一是一个非常便宜、合理高效的储能系统,可以储存几个月的能量以平滑太阳能产量的季节性差异(通常由燃料提供)。作者认为热能储存是实现这一目标的方法。

Standard Thermal 系统的核心是太阳能光伏提供的能源。它已经是世界许多地区最便宜的能源。其热能储存足够便宜且可扩展,允许全年无休的供应,而无需过度建设太阳能阵列。

典型的场地是工厂、发电厂或城镇,其边缘有一个大型土堆。土堆可能对小型工厂来说是房子大小,对大型发电厂来说可能是多个足球场大小。土堆周围是高密度、低轮廓的太阳能阵列。

来自太阳能阵列的电力流向土堆中的加热元件,积累热量。储存温度为 600°C 或更高。土堆的外层质量加上有利的体积-面积比,隔热并最小化热损失。嵌入土堆的管道携带流体,将热量传递给用户。

热能和电能都昂贵且难以移动。热能储存必须靠近客户,太阳能阵列必须靠近储存以实现真正的成本降低。设计也是模块化的。可以复制和粘贴单个太阳能光伏块,推土机可以推动更多的土壤。这种可重复性降低了开发成本和风险。

人类能源需求的很大一部分是热能,无论是用于工厂还是加热建筑物。热能储存非常有效地向这些用户提供热能。将热能转换回电能存在效率损失;往返效率为 40%-45%,但有时稳定的电力供应是值得的。

通过太阳能光伏板收集阳光并将其储存在广泛可用的材料中,可以在全球几乎所有地方实现低成本能源。

Standard Thermal 希望服务的市场包括孤立能源用户、高纬度太阳能开发商和重新启动热电厂。这些市场的需求可以通过太阳能光伏阵列和廉价热能储存来满足,与当今的廉价能源成本相当。


HN 热度 221 points | 评论 218 comments | 作者:pfdietz | 12 hours ago #

https://news.ycombinator.com/item?id=45012942

  • 长期地下热储存具有巨大的潜力,可以解决供暖和制冷问题。
  • 地下土壤的热损失非常慢,冬天过后地下 10 英尺处的温度接近年平均温度。
  • 地热供暖和制冷已经存在,但在某些地区安装成本较高。
  • 地下热储存不是新概念,自 20 世纪 90 年代以来已商业化,1930 年代以来已有实验。
  • 地下热储存可以利用冬天的冷能为夏天制冷,但需要考虑多种复杂因素。
  • 地下热储存的密度问题,空调器的制冷量与所需储存的冷能之间存在差异。
  • 北方地区已经成功实施了地下热储存项目,但因成本问题而逐渐被淘汰。
  • 区域供暖/制冷可以提高能效,不需要太多空间或土地。
  • 太阳能热储存因太阳能板价格低廉和热泵合理而复兴,太阳能转化为电能再转化为热能储存。
  • 地下 10 英尺的深度不足以实际使用,芬兰需要 200-300 英尺深的孔来连接地热泵。
  • 地源热泵有两种方法:深孔或大面积场地,后者不需要太深但需要更大的面积。
  • 地下一定深度的温度曲线比地表延迟 6 个月,冬季最暖和,夏季最冷。
  • 地下更深的地方温度全年相对恒定。

Hacker News 精彩评论及翻译 #

Google to require developer verification to instal… #

https://news.ycombinator.com/item?id=45019130

Google will begin to verify the identities of developers distributing their apps on Android devices, not just those who distribute via the Play Store

This is absolutely unacceptable. That’s like you having to submit your personal details to Microsoft in order to just run a program on Windows. Absolutely nuts and it will not go as they think it will.

gethly

谷歌将开始验证在安卓设备上分发其应用的开发者身份,而不仅仅是那些通过Play Store分发的开发者。这绝对是不可接受的。这就好比你必须向微软提交个人详细信息,只是为了在Windows上运行一个程序。简直疯了,而且事情不会像他们想的那样发展。


We put a coding agent in a while loop #

https://news.ycombinator.com/item?id=45005596

There will be a a new kind of job for software engineers, sort of like a cross between working with legacy code and toxic site cleanup.

Like back in the day being brought in to “just fix” a amalgam of FoxPro-, Excel-, and Access-based ERP that “mostly works” and only “occasionally corrupts all our data” that ambitious sales people put together over last 5 years.

But worse - because “ambitious sales people” will no longer be constrained by sandboxes of Excel or Access - they will ship multi-cloud edge-deployed kubernetes micro-services wired with Kafka, and it will be harder to find someone to talk to understand what they were trying to do at the time.

VincentEvans

软件工程师将会有一种新的工作,有点像是处理遗留代码和有毒站点清理工作的结合体。

就像过去那样,被请来“只是修复”一个由雄心勃勃的销售人员在过去五年里用 FoxPro、Excel 和 Access 拼凑而成的 ERP 系统,这个系统“基本上能用”,只是“偶尔会搞乱所有数据”。

但情况会更糟——因为“雄心勃勃的销售人员”将不再受限于 Excel 或 Access 的沙盒环境,他们会部署出多云、边缘部署、通过 Kafka 连接的 Kubernetes 微服务,届时要找人聊聊并理解他们当时想干什么,会变得更加困难。


Making games in Go: 3 months without LLMs vs. 3 da… #

https://news.ycombinator.com/item?id=45006027

What I like about this post is that it highlights something a lot of devs gloss over: the coding part of game development was never really the bottleneck. A solo developer can crank out mechanics pretty quickly, with or without AI. The real grind is in all the invisible layers on top; balancing the loop, tuning difficulty, creating assets that don’t look uncanny, and building enough polish to hold someone’s attention for more than 5 minutes.

That’s why we’re not suddenly drowning in brilliant Steam releases post-LLMs. The tech has lowered one wall, but the taller walls remain. It’s like the rise of Unity in the 2010s: the engine democratized making games, but we didn’t see a proportional explosion of good game, just more attempts. LLMs are doing the same thing for code, and image models are starting to do it for art, but neither can tell you if your game is actually fun.

The interesting question to me is: what happens when AI can not only implement but also playtest – running thousands of iterations of your loop, surfacing which mechanics keep simulated players engaged? That’s when we start moving beyond “AI as productivity hack” into “AI as collaborator in design.” We’re not there yet, but this article feels like an early data point along that trajectory.

starchild3001

我喜欢这篇帖子的地方在于,它指出了许多开发者容易忽略的一点:游戏开发中的编程部分从来都不是真正的瓶颈。一个独立开发者,无论是否使用AI,都可以相当快地开发出游戏机制。真正的难点在于那些看不见的上层内容:平衡游戏循环、调整难度、创造不会显得怪异的美术资产,以及打造足够的打磨度,以吸引玩家超过5分钟的注意力。

这就是为什么在大型语言模型(LLMs)出现后,我们并没有突然被海量的优秀Steam游戏所淹没。这项技术只是降低了一道门槛,但更高的壁垒依然存在。这就好比2010年代Unity引擎的崛起:该引擎让游戏开发变得大众化,但我们并没有看到与之成比例的优质游戏爆炸式增长,只是有更多的尝试。大型语言模型对代码做着同样的事情,图像模型也开始在美术方面做同样的事,但它们都无法告诉你你的游戏是否真的有趣。

对我来说,一个有趣的问题是:当AI不仅能实现功能,还能进行测试——运行你的游戏循环数千次,并揭示哪些机制能让模拟的玩家保持参与度——时,会发生什么?那时我们就会开始从“AI作为生产力工具”转向“AI作为设计合作者”。我们还没到那一步,但这篇文章感觉像是朝着那个方向迈出的早期一步。


Building the mouse Logitech won’t make #

https://news.ycombinator.com/item?id=45015355

“Balking at the $50+ charge for turnkey assembly, I opted to take the financially responsible route and pay $200+ for a hot-air rework station to solder it myself.”

Yeah, I feel this :)

stn8188

嫌50多美元的交钥匙组装收费太贵,我选择了一条自以为精明的财务路线——自己花200多美元买了一台热风返修台,亲手焊接。