每日HackerNews RSS

英国《2023年在线安全法案》的一项拟议修正案旨在阻止16岁以下用户访问范围广泛的在线服务,远不止“社交媒体”。该修正案要求“受监管的用户到用户服务”——一个定义广泛的类别——实施“高度有效的年龄验证”措施,实际上禁止未成年用户使用。 这不仅会影响Signal等平台和家庭消息应用程序,还会影响共享列表、照片分享、带有聊天功能的在线游戏,甚至可能包括像维基百科这样的论坛。年龄验证的要求适用于*所有*用户,从而造成一种“请出示证件”的情况,个人可能需要验证身份才能访问常用的在线工具。 作者批评了该修正案的范围过大,源于现有《在线安全法案》中宽泛的定义。他们还质疑这项立法试图解决的明确问题,强调潜在的隐私影响以及年龄验证行业可能因此受益。

GitHub正面临来自新兴工具的日益增长的挑战,这些工具正在挑战其在工作流、CI,甚至核心git托管方面的统治地位。作者详细描述了个人从GitHub Actions转向Blacksmith的转变,体验到更快速、更廉价的构建——强调GitHub即使在计算发生在其他地方时,也通过对Actions控制平面收费而可能存在的“寻租”行为。与此同时,像Linear这样的工具正在以更优的用户体验颠覆GitHub的“Issues + PRs”工作流。 虽然商业团队可以负担采用这些替代方案,但开源项目却被锁定,缺乏迁移的资源。Zig最近的举动,理由是不稳定的CI和不受欢迎的AI集成,表明了日益增长的沮丧。 David Heinemeier Hansson (DHH) 和 Rails 提供了一个关键的机会。Rails从GitHub迁移到Codeberg/Forgejo等平台将会具有颠覆性,迫使替代工具成熟,并为其他开源项目效仿铺平道路。这并非关于当前的准备情况,而是关于*创造*准备情况,充当一个更开放和更具竞争力的开发者生态系统的催化剂。最终,作者认为开源需要一个冠军来加速这一转变,而DHH/Rails则处于独特的位置来领导。

```Hacker News新帖 | 过去 | 评论 | 提问 | 展示 | 招聘 | 提交登录[标记]camwest 1天前 | 隐藏 | 过去 | 收藏 LorenDB 1天前 [–] 闻起来像AI垃圾。allanmacgregor 1天前 | 父评论 [–] 根据结构和流畅度很容易判断,有一些老套的短语“发生了什么”。100% AI垃圾。 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请YC | 联系 搜索:```

## Stepped:在Rails中编排复杂工作流 Stepped 是一个Rails引擎,用于构建和管理复杂的多步骤工作流,将其组织成动作树。每个动作都会被持久化,通过Active Job执行,并可以触发进一步的动作,确保步骤间的依赖关系得到满足。Stepped 最初是为诸如应用程序部署(DNS配置、健康检查等)之类的任务而开发的,它允许您直接在Rails模型上定义动作。 主要特性包括**并发通道**(限制同时执行具有相同key的动作)、**重用**(通过校验和跳过冗余工作)以及对**外部动作**的支持(由外部事件完成)。动作具有诸如`pending`(待处理)、`performing`(执行中)、`succeeded`(成功)和`failed`(失败)等状态。 定义动作很简单:在模型上使用`stepped_action`,并使用DSL定义步骤、钩子和key。步骤可以使用`step.do`或`step.on`来排队执行进一步的动作。Stepped 还提供诸如前/后置钩子、超时、异常处理和全面的测试工具,以确保可靠的工作流执行。 **安装:** `bundle install`,`bin/rails stepped:install`,`bin/rails db:migrate`。Stepped 与 Active Record 和 Active Job 无缝集成,为在Rails应用程序中管理复杂后台进程提供了一个强大的解决方案。

## 分步操作:Rails 工作流编排 一个名为 **Stepped** 的新 Rails 引擎已发布,旨在管理复杂、分布式的流程——例如涉及 DNS 配置、重试和健康检查的部署等任务。Stepped 从 Envirobly 项目中提取而来,旨在简化处理网络系统中常见的“带外”任务。 讨论强调了与现有解决方案(如 **Chrono Forge** 和 **DSPy.rb**)的比较,后者是用于 LLM 代理工作流的 Ruby 框架。 许多评论者分享了他们构建类似系统的经验,并指出对持久执行模式的常见需求。 Stepped 在每个步骤之后将状态持久化到数据库中,以便进行崩溃恢复,利用校验和以及与 GoodJob 或 SolidQueue 等作业队列适配器的集成。 创建者澄清说,它被构建用来优雅地处理异常,将失败视为过程中的自然组成部分。 该项目解决了那些需要健壮的工作流但又不想使用像 Temporal 这样更大系统的复杂性的需求。

作者最初因2022年与ChatGPT的负面经历而否定人工智能编码工具,坚持认为“手工”编写的、充满bug的代码以及“硬碰硬”的原则更为重要。然而,撰写一篇论述人工智能不会*取代*程序员的文章却引发了意想不到的反弹——不是害怕失业,而是强烈否认人工智能的编码*能力*。 作者意识到这种抵触源于过时的认知。自2022年以来,人工智能编码工具已经大幅改进,像Claude Code这样的工具现在能够胜任代码库范围内的重构等复杂任务。虽然仍然不完美且需要审查,但它们远非“垃圾”。 作者认为,拒绝探索这些工具并不能保护专业知识,反而会阻碍进步。工程师中正在形成一道明显的鸿沟,一部分人拥抱人工智能辅助,另一部分人则不愿接受,前者交付速度更快,能够承担更大的项目。呼吁很简单:如果你最近没有尝试过*现代*人工智能编码工具,请以开放的心态去尝试——基于旧经验的观点已经不再适用。

## 软件工程中的人工智能:格局转变 最近在Hacker News上的一场讨论集中在工程师们不愿采用人工智能工具上,许多人认为那些抵制者正在落后,技能差距正在扩大。虽然人工智能正在迅速改进——能够进行复杂的重构,甚至诊断微妙的错误——但人们仍然担心它对基本编程技能的影响。 许多人担心过度依赖人工智能会导致问题解决能力下降,并产生依赖性,阻碍未来的开发。一些人建议人工智能应该*增强*技能,而不是取代它们。另一些人指出,这与之前的技术转变(例如使用库而不是编写排序算法)相似,并强调将人工智能作为工具使用的重要性,并批判性地评估其输出。 一个关键点是,当前的人工智能工具通常需要大量的“引导”,并且可能产生冗长、有缺陷的代码,从而增加技术债务。然而,其他人则报告了显著的生产力提高,尤其是在自动化繁琐的任务和快速理解不熟悉的的代码库方面。最终,这场辩论凸显了软件开发中抽象化程度提高的转变,其中交付产品,而不仅仅是编写代码,是首要目标。

## 耐用执行:摘要 作者(前Porter CTO)最初不理解其价值,现在则大力推崇耐用执行,认为它是处理复杂、有状态工作流的强大解决方案。传统任务队列处理后台处理,通常依赖消息代理来实现持久性。然而,当任务变得复杂——涉及许多步骤、潜在故障和外部依赖关系时——简单的队列就显得不足。 耐用执行通过持久化工作流的*中间状态*来解决这个问题,允许在故障后(如机器崩溃)从检查点恢复,而不会丢失进度。这是通过追加日志实现的,确保确定性的重试和子任务的精确一次处理。 虽然耐用执行提供了显著的优势——抵御意外故障、程序化工作流定义以及跳过冗余工作——但它并非万能的解决方案。它需要确定性工作流(避免在执行过程中改变逻辑),并会引入开销。它最适合于管理复杂状态和保证完成至关重要的场景,可以补充而不是取代传统的队列系统。作者的公司Hatchet提供了一个基于这些原理构建的耐用执行平台。

## 耐用执行:摘要 这次Hacker News讨论的核心是**耐用执行**——一种构建具有韧性的、长期运行的异步工作流的概念。虽然前景可观,但许多人难以理解其优势,以及它是否适合他们的工作负载。 一个关键要点是,耐用执行并不能消除对**幂等性**的需求;工作流仍然需要任务可重复执行,而不会产生意想不到的副作用。然而,它简化了复杂故障场景的管理,尤其是在分布式系统中,协调跨多个服务的回滚具有挑战性。 像**Temporal、Hatchet 和 DBOS** 这样的平台旨在提供一种构建这些工作流的结构化方法,提供诸如流式处理、动态调度和改进的日志记录等功能。其中一些,例如 DBOS,直接与现有数据库(Postgres)集成,以增强耐用性。 其核心价值在于提供一个一致的框架来处理故障并持久化高级逻辑(循环、try/catch)——允许工作流从中断的地方恢复。 围绕是否*强制*开发者使用耐用工作流,还是提供更灵活的抽象,存在争论。最终目标是使构建可靠的异步系统更容易,但需要仔细考虑幂等性和潜在的复杂性。

## 黑客新闻头条:一场颠覆性的旋风(2024年5月16-17日) 本周科技界充斥着引人注目的消息!**ACM开放其出版物访问权限**是一项重大转变,被誉为开放获取的胜利。人工智能主导了讨论,人们对**GPT-5.2可能影响编程工作**以及**中国在人工智能芯片方面取得的进展可能超越西方**感到担忧。对人工智能的担忧延伸到抓取问题,有用户声称使用……非常规方法成功地扰乱了抓取。 除了人工智能,头条新闻也聚焦隐私:**苹果因在iPhone上投放广告而面临批评**,**三星、LG和TCL因在德克萨斯州收集电视数据而面临法律挑战**,以及警告称**“你的电视正在监视你。”** 其他热门话题包括一个新的**Linux内核Rust实验**,**“历史LLM”**的兴起(这些LLM基于古老数据进行训练),以及通过**RDMA上的SMB Direct**可能实现的网络速度提升。 最后,出现了一系列“……的死亡”的宣告——**Bash、拖放界面,甚至你现有的编码技能是否足够**。

## 黑客新闻标题党实验总结 一位用户创建了一个模拟黑客新闻首页(dosaygo-studio.github.io),将每条标题都改写成夸张、耸人听闻的标题党风格。该项目引发了大量讨论,许多用户觉得有趣,并且是网络炒作标题的惊人准确的模仿。 评论从对幽默的赞赏和对YouTube和Twitter等平台类似策略的认识,到建议开发一个AI工具来*消除*标题党。一些人注意到它与The Register和Upworthy等网站相似。 该帖子还引发了关于HN上此类“实验”频率的争论,一些人认为它很快就会变得重复。一个相关的后续帖子也被链接,强调了这类提交的周期性。最终,该项目是对现代在线媒体中标题党盛行的有趣评论。

## CommerceTXT:赋能精准AI电商 CommerceTXT 是一项新标准,旨在为AI代理(如LLM)提供可靠的、可用于交易的电商数据。与侧重内容发现的llms.txt不同,CommerceTXT 直接向AI提供实时定价、库存和运输政策等关键信息。 主要特性包括指令,如 `@INVENTORY`(减少“缺货”幻觉)、`@SUBSCRIPTION`(用于定期支付)和 `@REVIEWS`(大幅减少评论数据的使用量,高达99.7%)。它专为准确性、法律合规性(映射到Schema.org)以及全球电商(支持多语言和货币)而设计。 CommerceTXT 具有显著优势:改善AI购物回复、减少错误、在AI电商领域获得先发优势,并通过最大限度地减少数据传输来降低AI的碳足迹。它优先采用只读模型作为v1.0版本,在引入交易能力之前,侧重于数据完整性和用户安全。 该协议是一个开放标准,由开放商家上下文工作组维护,旨在确保AI准确反映商家的产品和政策。

## CommerceTXT:AI购物的开放标准 CommerceTXT是一种新的开源协议(CC0公共领域),旨在简化AI代理访问在线商店产品信息的方式。它的创建者构建它是为了解决抓取HTML的不效率——这个过程会消耗大量的AI令牌,并且容易出错,例如错误报告价格或库存水平。 该协议利用“分形架构”,包含根文件、类别文件和产品文件,允许代理仅获取必要的数据,从而大大减少令牌使用量(380个令牌与HTML的8,500个相比)。它优先考虑确定性数据,并使用诸如`@INVENTORY`和`@REVIEWS`之类的指令来对抗AI“幻觉”。 一个关键的争论点在于文件放置:作者优先考虑简单性和可访问性,因此将文件放置在根目录中,尽管有人认为使用标准化的`/.well-known/`命名空间可以更好地维护网络卫生。作者强调非技术用户(如Shopify和Wix商家)的采用至关重要,并且愿意在未来版本中支持`/.well-known/`。治理是社区驱动的,作者发起开发,但旨在达成基于共识的决策。该协议还包括信任和验证机制,以防止数据操纵。

泛型允许编写在编译时适应不同类型函数,避免运行时类型检查。使用`when T is [type]`子句,单个函数体可以包含特定于类型的逻辑。例如,`some_function[T]`可以使浮点数加倍并递增整数。 更复杂的场景涉及多个类型参数,例如`list_contains[T, T2]`函数,它使用不同的比较方法搜索整数和字符串列表。安全的类型转换在`when`子句*内部*使用,确保类型正确性。 泛型也适用于返回值;`maybe_double[T]`返回类型为`T`的值,根据`T`执行浮点数或整数乘法。 重要的是,泛型函数可以调用其他泛型函数,类型会自动推断,从而实现分层抽象。该系统提供了一种表达性强、类型安全的代码,其中特化仍然是显式且可预测的,行为就像为每种类型量身定制一样。

## Axe 编程语言:泛型实现 一位开发者宣布其编程语言 Axe ([axe-docs.pages.dev](https://axe-docs.pages.dev)) 实现了泛型。核心讨论在于,该实现是否真正符合“泛型”的定义,还是更准确地说是类型特定的代码分支。 许多评论者认为,真正的泛型,例如 C++ 中的泛型,或者从概念上讲,应该允许一个函数在不进行显式类型检查的情况下,对不同类型进行统一操作——依靠编译时代码生成或鸭子类型。然而,Axe 的实现使用类型信息来选择不同的代码路径(本质上是 `instanceof` 切换),这引发了对违反“参数性”的担忧——即泛型函数应该无论使用何种特定类型,行为都应保持一致。 虽然有些人承认这不一定是*坏*事,但它偏离了泛型的预期行为,并引入了显式类型检查的代码气味。 另一些人指出潜在的好处,例如启用并行性,并讨论了该语言的潜在用例。 还有一点需要注意的是,它与 TI-84 语言和 Haxe 存在名称冲突。

这是一个为认真创业者打造的企业级SaaS样板项目,利用Next.js 16、React 19、Go 1.25和TypeScript构建了一个强大且类型安全的基础。它提供了一个完整的起点,包括身份验证(Stytch)、计费(Polar.sh)和AI集成(OpenAI & Mistral AI),并配备RAG管道。 主要特性包括多租户与数据隔离、细粒度的基于角色的访问控制以及全面的审计日志。UI使用Tailwind CSS和shadcn/ui构建,以实现快速、响应式开发。数据管理使用PostgreSQL与pgvector,并通过SQLC实现类型安全的SQL。 该样板项目设计用于使用Docker & Docker Compose进行轻松的本地开发,并提供Webhook UI和高级分析等功能。还提供咨询服务,用于托管配置、自定义功能开发和代码审计。它采用MIT许可。

## 开源 B2B SaaS 启动器:摘要 Mohammed (@moh_quz) 开源了他 B2B 产品 apflow.co 的全栈引擎,旨在解决 SaaS 启动器中常见的供应商锁定问题。该启动器具有 Go 后端和 Next.js 前端,两者均已 Docker 化,可灵活部署——甚至可以在 6 美元的 VPS 上部署——避免对 Vercel 或 Supabase 等平台的依赖。 Go 后端优先考虑小占用空间(约 50MB 内存)、并发性、类型安全(使用 SQLC)和可预测的性能。它采用“模块化单体”架构,提供清晰的关注点分离,而无需微服务复杂性,从而提高 AI 编码工具的有效性。 预构建的功能包括身份验证 (Stytch)、计费 (Polar.sh)、AI 管道 (OpenAI RAG 与 pgvector)、OCR (Mistral) 和文件存储 (Cloudflare R2)。这*不是*一个模板,而是实际运行 apflow.co 的代码。 作者欢迎反馈,特别是来自 Go 开发人员关于模块边界和 Docker 设置的反馈。该项目旨在提供一个生产就绪的基础,让开发者专注于核心产品逻辑,而不是样板基础设施。 [https://github.com/moasq/production-saas-starter](https://github.com/moasq/production-saas-starter)

## GotaTun:一种新的WireGuard实现 Mullvad VPN开发了GotaTun,一种基于Rust的WireGuard®协议实现,旨在提高性能和可靠性。GotaTun源自Cloudflare的BoringTun,并加入了DAITA和多跳等隐私功能,同时优先考虑安全的线程处理和零拷贝内存策略。 GotaTun创建的主要驱动力是之前WireGuard实现`wireguard-go`的高崩溃率。超过85%的Android应用程序崩溃源于`wireguard-go`,并且跨Rust/Go语言边界调试问题非常困难。 于2025年末向Android用户推出的初始版本非常成功,**消除了之前归因于`wireguard-go`的崩溃,并将用户感知的崩溃率从0.40%降低到0.01%**。用户还报告了速度和电池寿命的改善。 Mullvad计划在2026年用GotaTun取代所有平台(桌面、iOS)上的`wireguard-go`,同时进行第三方安全审计并持续进行性能增强。

更多

联系我们 contact @ memedata.com