每日HackerNews RSS

如果您是授权合作伙伴、《世界报》订阅者,或希望获得访问此内容的授权,请联系:licensing[@]groupelemonde.fr,并附上包含您的IP地址和请求ID (RID) 的此错误页面的副本。 英文版:您的流量已被识别为自动化(机器人活动)。如果您是授权合作伙伴、《世界报》订阅者,或希望请求访问此内容的权限,请联系:licensing[@]groupelemonde.fr,并附上显示您的IP地址和请求ID (RID) 的此错误页面的副本。 IP:47.245.80.60 RID:a12c3984f47d46b29d12000000000001

## 美国停止海上风电项目,向道达尔能源支付10亿美元 美国政府正在向道达尔能源支付近10亿美元以停止两个海上风电项目的发展。这一决定引发了网络上的强烈不满,与政府支持化石燃料的立场有关,特别是前总统特朗普因苏格兰高尔夫度假村的纠纷而对风力涡轮机产生的个人恩怨。 评论员们对美国作为能源投资伙伴的可信度表示担忧,并强调了对脆弱化石燃料供应链的潜在依赖,特别是对少数几个燃气涡轮机制造商的依赖。许多人批评这一决定目光短浅,指出了环境成本以及可再生能源可能比化石燃料更具可行性的潜力。 讨论还涉及更广泛的地缘政治问题,一些人担心美国全球影响力下降,并转向依赖中国等国家。虽然一些人对美国的未来表示极度悲观,但另一些人强调持续的政治参与和投票以促成变革的重要性。

## 正则表达式引擎中长期存在的缺陷 数十年以来,正则表达式引擎一直错误地宣传了查找*所有*匹配项的线性时间复杂度。虽然单次匹配的性能可以是线性的,但迭代所有匹配项会引入隐藏的二次方时间复杂度(O(m*n²)),这个问题早在 1970 年代就被发现。这是因为当引擎在搜索多个重叠匹配项时,可能会陷入重复扫描输入的困境——例如,将 `.*a|b` 模式应用于一串 ‘b’ 字符。 这个问题影响了几乎所有引擎(RE2、Go、Rust 的 regex crate、.NET),并且即使在那些旨在避免回溯的引擎中仍然存在。一种解决方案是限制搜索范围——在第一次匹配后停止可以恢复线性时间,但会改变预期的行为。 作者的项目 RE# 旨在解决这个问题。它采用两遍扫描方法:反向扫描以标记潜在的匹配起点,然后进行正向扫描以确定每个点的最长匹配项。一种“加固”模式即使在面对恶意输入时也能保证线性时间,但会降低简单模式的性能。RE# 的性能与现有引擎相媲美或超越现有引擎,尤其是在复杂模式上,利用了跳跃加速和高效 DFA 构建等技术。 虽然 RE# 目前不支持捕获组和惰性量词,但它提供了布尔运算符和独特的流处理方法,使其成为真正高效可靠的正则表达式匹配的重要一步。

## Hacker News 讨论:正则表达式性能与复杂度 一场 Hacker News 讨论围绕正则表达式(regex)匹配的性能,特别是寻找*所有*匹配项时可能出现的二次时间复杂度问题。原始帖子 (iev.ee) 强调了这个问题并探讨了解决方案。 用户讨论了各种方法,包括基于 NFA 的引擎,如 `@bablr/regex`,它们避免了复杂度膨胀,但可能耗尽内存。另一些人指出,仅验证*没有*匹配项时,通常可以达到线性时间性能。一个关键点是回溯的影响以及通过类似数据库查询规划或编译器重写的技术进行优化的潜力。 对话还涉及正则表达式功能与性能之间的权衡,建议限制功能可以保证更好的时间复杂度。为不受信任的输入,建议使用时间和/或内存限制来沙箱化正则表达式执行。最后,一些用户指出线性时间引擎(如 Hyperscan)的潜力,以及考虑最左最长匹配语义的重要性。作者确认帖子是人工撰写,并借助 LLM 润色措辞。

启用 JavaScript 和 Cookie 以继续。

## 自动研究总结 这次Hacker News讨论围绕ykumards的“自动研究”实验——使用LLM代理(Claude Code)自主改进机器学习模型。核心思想是循环改进代码、运行训练、评估结果和记录进展。 虽然该代理成功识别并修复了一个bug并优化了超参数,但评论员们争论其新颖性和成本效益。 许多人指出现有的AutoML框架,如Optuna和贝叶斯优化技术,可以实现类似的结果。 然而,潜力在于代理能够持续运行实验,即使无人值守,并可能探索超越简单超参数调整的架构变化。 关键要点包括:强大的评估指标的重要性、实验的高成本(尤其是在云基础设施上)以及LLM代理在真正*创新*研究与优化方面的当前局限性。 许多人认为自动化繁琐的任务(如bug修复和超参数搜索)具有价值,从而解放人类研究人员进行更高层次的思考。 讨论还强调了将这种方法应用于其他软件项目的潜力。

## Digs:一个简单的Discogs唱片库浏览器 对官方Discogs应用程序在移动设备上浏览的局限性感到沮丧,一位开发者创建了**Digs**,一个为黑胶唱片收藏家设计的精简移动应用程序。Digs专注于快速且*离线*访问您现有的Discogs唱片库,组织方式与您在文件夹中的结构完全一致。 该应用程序会将您的Discogs库同步到您的手机,允许您按文件夹浏览、搜索,甚至有一个“随机选择器”来重新发现唱片。它优先考虑速度和简洁性,省略了诸如愿望单管理和市场访问等功能。 Digs使用React Native、TypeScript和SQLite构建,利用巧妙的“令牌桶”速率限制器来规避Discogs的API限制。一个关键的设计原则是“本地优先”架构,确保所有数据都直接从手机数据库读取,以实现即时访问。开发者利用Claude Code进行快速代码生成,但强调产品决策和完善花费了最多的时间。 Digs目前在App Store上免费提供,没有广告或跟踪。

对不起。

## 理想的衰落:对现代计算的批判性审视 本文认为备受赞誉的“Unix哲学”——强调简洁、单一用途工具和可组合性——在很大程度上已经消亡,而现代计算则是一个复杂且常常设计糟糕的“垃圾堆”。作者认为,这种哲学的模糊性(存在多种解释)使其能够方便地适应,最终侵蚀了其核心原则。 虽然欣赏精简工具和shell脚本的*理念*,但作者指出现实世界的例子——例如令人惊讶的复杂的`cat`命令和多功能的`curl`——违背了该哲学的原则。这种趋势超出了Unix世界;Windows和GUI软件优先考虑集成、功能丰富的体验,而不是简约的、链式工具,常常牺牲效率来换取用户友好性。 核心问题不在于技术,而在于社会。开发者过度概括,寻求“一刀切”的解决方案,而这些解决方案不可避免地无法满足多样化的需求。此外,开源最初的反叛精神已被稀释,变得越来越公司化和顺从。作者提倡批判性思维,拥抱多样性,并优先考虑可修改性,敦促读者定义自己的原则,而不是盲目地追随趋势或意识形态。最终,认识到计算的内在复杂性是构建更好系统的关键。

对不起。

## Baochip-1x 的 BIO:一种基于 RISC-V 的 I/O 协处理器 BIO 是一种为 Baochip-1x 设计的 I/O 协处理器,Baochip-1x 是一款 22 纳米开源 SoC。作为树莓派 PIO 的替代方案,BIO 旨在将 I/O 任务从主 CPU 卸载,实现实时应用至关重要的确定性时序。 最初的探索涉及复制 PIO 的架构,但 FPGA 实现显示其资源消耗出乎意料地大——甚至超过了 CPU 核心的面积并影响了时序。这促使转向基于 RISC-V 的设计,利用四个紧凑的 RV32E 核心,并配备专门的寄存器队列用于核心间通信和 I/O 控制。 BIO 利用“快照到量子”机制实现精确的时序,并通过 BDMA 扩展支持 DMA。开发者可以使用汇编语言或利用基于 Zig 的新型 C 工具链来编程 BIO,从而实现更复杂的功能。与 PIO 相比,BIO 以牺牲峰值速度来换取面积效率,但它提供了一个更灵活且可能更具可扩展性的解决方案,可以舒适地适应 FPGA 约束,并在 ASIC 实现中实现更高的时钟速率。 代码和文档等资源可在 GitHub 上获取,Baochip-1x 可通过 Crowd Supply 购买。

Bunnie (bunniestudios.com) 推出 Bao I/O 协处理器 (BIO),这是一款专为 I/O 任务设计的微型处理器,引发了 Hacker News 的讨论。BIO 被定位为树莓派 Pico 的 PIO 的替代品,采用 RISC 架构并支持 C 编译。 讨论的关键点集中在 BIO 和 PIO 之间的性能比较上。虽然 PIO 由于其 CISC 设计和直接硬件控制在对时序要求严格的任务中表现出色,但 BIO 旨在通过 C 语言实现清晰度,并利用“量子延迟”进行同步。用户们争论效率问题,一些人指出 PIO 能够快速在核心之间传输数据。 Bunnie 澄清 BIO 的性能目标是 25MHz(宽松),但可以通过超频和优化实现更高的速度。BIO 的开源特性允许使用 Verilog 进行仿真以分析时钟周期。讨论还涉及潜在的应用,如 USB 仿真、CAN 总线接口,甚至复古游戏,同时也承认了在带宽密集型任务(如 DVI 输出)方面的局限性。最终,BIO 和 PIO 被呈现为不同的工具,具有独特的权衡,适用于不同的应用。

该网站正在使用安全服务来保护自身免受在线攻击。您刚才的操作触发了安全解决方案。 提交特定词语或短语、SQL命令或格式错误的数据等行为可能会触发此阻止。

## Trivy 遭受攻击:GitHub Actions 被攻破 Trivy,一款流行的漏洞扫描器,已多次被攻破,攻击者利用 GitHub Actions 工作流中的弱点。一名威胁行为者通过泄露的凭据获得了访问权限,并能够发布恶意 Docker 镜像,影响依赖 Trivy 进行安全检查的用户。这是该行为者发动的*第三次*成功的攻击,凸显了凭据管理和安全实践方面持续存在的问题。 核心问题在于能够在 GitHub Actions 中覆盖标签,允许攻击者用恶意版本替换合法的版本。虽然 GitHub 提供了不可变发布的特性,但默认情况下并未强制执行。讨论的重点在于安全(固定版本)与及时更新安全补丁之间的权衡,以及 GitHub Actions 中对更好的包管理原语的需求,例如官方 lockfile。 该事件强调了依赖第三方工具的风险以及采取健全安全措施的重要性,包括沙箱化、限制凭据访问和主动监控。许多评论员指出 GitHub Actions 以及更广泛的安全行业中存在系统性问题,复杂工具往往会引入新的漏洞。

这篇文章探讨了作者创建新的系统编程语言编译器的动机,源于对C语言的挫败感。核心论点在于区分“表达式”(用于计算)和“语句”(用于副作用),认为C语言经常模糊这两者之间的界限,从而阻碍了可读性和安全性。 具体而言,作者批评了C语言的赋值以及前/后增/减表达式。这些将计算和副作用结合在一起,可能导致未定义行为(例如在`++x * powi(x, 2)`中),并使代码更难理解。来自经典C代码的例子(如`itoa()`和`memcpy()`)表明,虽然这些特性有时很简洁,但可能会掩盖意图。 作者承认简洁的C代码具有一种风格上的优雅,但最终认为将计算和副作用分离带来的清晰度超过了简洁性。他们建议将增/减操作限制为语句,消除潜在的危害,同时保持便利性。文章强调,C语言的灵活性虽然强大,但可能会引入微妙的错误和认知负担,从而证明了追求一种更精心设计的语言的合理性。

对不起。

该项目探索了“threadprocs”——一种在Linux (aarch64/x86_64) 上融合进程和线程模型的新方法。Threadprocs 行为类似于拥有自己运行时(libc 等)的独立程序,但它们在共享地址空间内运行,从而能够通过直接指针操作实现零拷贝数据共享。 该系统使用一个服务器来托管共享空间,并使用一个启动器来启动其中的程序。应用程序通过“带外”方式(例如,通过复制/粘贴或套接字)共享指针,然后直接访问这些地址上的数据。一个服务器全局的暂存空间,通过扩展的 auxv 条目访问,可以促进服务发现和 IPC。 主要限制包括无法可靠地使用 `brk()`/`sbrk()`,调试工具如 `ptrace()`,以及需要位置无关代码。至关重要的是,内存必须在*同一个* threadproc 内分配和释放,防止跨 threadproc 的释放。尽管具有挑战性,该项目展示了一种替代传统 pthreads 的潜在方案,提供了一种独特的共享内存和进程间通信方法。一个框架 `tproc-actors` 建立在这个概念之上,并具有自定义内存管理方案。

对不起。

请启用 JavaScript 并禁用任何广告拦截器。

对不起。

更多

联系我们 contact @ memedata.com