每日HackerNews RSS

## 重新思考环形缓冲区 作者发现了一种常见的、令人惊讶的低效实践,即在实现单元素环形缓冲区时,由于缓冲区状态的管理方式而浪费了容量。传统上,环形缓冲区使用一个数组和两个索引(读/写)以及掩码来保持在边界内,不可避免地会损失一个槽位来区分空和满状态。 另一种方法使用单个索引和一个长度字段,从而最大化容量,但会在并发读写场景中产生竞争问题。作者提出了一种更优的解决方案:使用两个未掩码的索引,它们会简单地溢出,依靠无符号整数的自然环绕来管理缓冲区的循环特性。 这种方法找回了丢失的槽位,简化了代码,并避免了对额外状态变量的需求。然而,它要求容量是 2 的幂,并且依赖于语言支持无符号整数溢出。尽管具有优势,但这种优雅的解决方案似乎并不常见,这导致作者质疑为什么更复杂、效率较低的方法仍然盛行——可能由于传统或不愿将整数溢出视为一种特性。

这个Hacker News讨论围绕高效的环形缓冲区实现。原始文章详细介绍了使用原子加载/存储操作和内存屏障创建并发、非阻塞、单读者/单写者原子环形缓冲区的方法。 一个关键的争论点是是否使用2的幂的缓冲区大小。虽然传统上由于更简单的除法运算而受到青睐,但评论者认为可以使用条件检查代替模运算来实现非2的幂的大小。建议使用64位计数器来避免溢出问题,一些人认为鉴于极长的溢出周期,定期重启进程是可以接受的。 讨论还涉及不同方法之间的权衡:为了简单起见浪费一个元素,或者以牺牲复杂性为代价来优化空间。 几位评论员强调了考虑硬件级缓存行为和无锁编程的细微之处的重要性,并指出硬件级的“锁”与软件互斥锁不同。 几位用户提到了在嵌入式系统和PortAudio和LMAX Disruptor等高性能库中的实际应用。

为什么?我发现拖放体验很容易变成一场噩梦,尤其是在移动设备上。同时尝试点击、按住、拖动和滚动,既笨拙又缓慢且容易出错。我一直想用一种更简单的两步方法:先选择一个项目,然后放置它。所以我实现了这个基本版本来展示我的想法。它是如何工作的?当选择一个项目时,原始列表的副本会创建在上面。这个副本是交互式的,并且会根据滚动位置进行更新。最后,用户可以确认或取消更改。这是一个库吗?不完全是。这仅仅是一个概念验证,为了传达我的想法。但是,你可以查看源代码以获取灵感。

## Picknplace.js:一种拖放替代方案 Picknplace.js 是一个新的 JavaScript 库,为传统的拖放功能提供了一种替代方案,尤其旨在改善在移动设备上的体验,在移动设备上拖放操作可能比较繁琐。用户不是拖动,而是“拾取”一个元素,然后滚动定位后再“放置”它。 开发者设计这种两步方法是为了解决同时点击、按住和滚动的问题。虽然可能比拖放慢,但它旨在为那些难以承受拖动物理需求的用户提供更易用的体验。 初步反馈强调了一些潜在的改进,例如为“拾取”状态提供更清晰的视觉提示(边框、蒙版),改善按钮可见性,防止滚动超出列表边界,以及更直观的放置方法。许多用户建议“放置”按钮应跟随拾取的项目,或者点击所需位置应直接放置该项目。尽管存在一些可用性问题,但该项目因其原创性和对新的 UX 模式的探索而受到赞扬。 代码可在 GitHub 上找到 ([https://jgthms.com/picknplace.js/](https://jgthms.com/picknplace.js/))。

## Delty:医疗保健领域的人工智能 – 摘要 Delty 正在开发用于医疗保健的人工智能操作系统,专注于语音和计算机辅助,以简化临床工作流程并减轻医护人员的行政负担。Delty 由前谷歌工程领导人创立,旨在通过可靠、感知上下文的人工智能提高效率和医护人员体验。 他们正在寻找经验丰富的机器学习工程师来构建和负责端到端的生产机器学习系统——从数据管道和模型训练到部署和监控。该职位要求 3 年以上结构化数据机器学习经验、强大的后端工程技能,以及专注于构建可扩展、可维护的解决方案。 Delty 提供一个高影响力的环境,有机会向经验丰富的工程师学习,为产品方向做出重大贡献,并迅速加速职业发展。他们优先考虑所有权、快速迭代以及解决具有挑战性的问题,为医疗保健行业提供强大、企业级的人工智能解决方案。

黑客新闻新 | 过去 | 评论 | 提问 | 展示 | 招聘 | 提交登录Delty (YC X25) 正在招聘机器学习工程师 (ycombinator.com)1天前 | 隐藏 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请YC | 联系 搜索:

## go-boot: 一个TamaGo UEFI 唯一内核 go-boot 是一个适用于AMD64平台的TamaGo唯一内核,提供UEFI Shell和操作系统加载器。它允许直接与UEFI API交互,并支持启动各种操作系统,包括EFI应用程序、Linux内核(通过UAPI引导加载条目配置)以及通过其UEFI引导管理器启动Windows。未来的开发计划包括引导透明度支持。 该系统提供一个命令行界面,包含文件管理、系统信息、网络(可选SNP/go-net支持)和内存访问等实用工具。它可以通过环境变量进行配置,例如`IMAGE_BASE`、`DEFAULT_LINUX_ENTRY`和`CONSOLE`。 go-boot可以使用TamaGo编译器构建,并通过UEFI Shell、systemd-boot等引导管理器或`efibootmgr`部署。它也可以在QEMU中进行测试,并通过GDB提供调试选项。该项目提供硬件兼容性列表(HCL),其中包含各种平台的推荐`IMAGE_BASE`值。

## Go-boot:一个基于Go的UEFI启动管理器 一个名为“Go-boot” (github.com/usbarmory) 的新项目正受到关注,它使用Go语言编写了一个裸机UEFI启动管理器。 传统上,像这样的底层系统代码一直由C语言以及最近的Rust语言所掌控,因为人们对Go语言的内存管理存在担忧。 该项目旨在证明Go语言在这种情况下*是*有能力的,从而挑战了它不适合裸机编程的观点。 项目的创建者以USB Armory和TamaGo项目而闻名,他们特别选择了Go语言来证明这一点。 除了证明Go语言的可行性外,Go-boot还提供了一个潜在的改进的UEFI shell体验——现有选项通常已经过时。 它还为有兴趣了解UEFI启动过程复杂性的Go开发者提供了一个宝贵的学习资源。 基本上,它是一个概念验证,旨在突破Go语言在系统级编程方面的能力边界。

## 平行代理:克服AI编码中的方差 代理编码存在固有的方差——LLM的随机性意味着相同的提示可能产生不同的结果。仅仅改进提示工程(上下文工程)可以降低*平均*质量,但不能保证找到*最佳*解决方案。本文提出**并行收敛**:同时运行多个代理实例,以探索更广泛的解决方案空间。 核心思想是将代理运行视为样本,分散风险并利用“集体智慧”。从干净的上下文开始的并行代理可以逃避单个代理可能陷入的次优局部最小值。当多个代理独立地提出相同的方法时,即为收敛——这验证了一个强大的解决方案。 此工作流程用于两个阶段:生成多个问题解决方案,以及收集关于问题的各种信息(使用专门的代理进行git历史记录、文档、网络研究等)。Claude Code的编排模式促进了这一点,综合代理输出并偏向于更简单、经过验证的解决方案。 虽然需要消耗大量token,但并行收敛提供了基于多个独立来源的高置信度结果。它对于复杂的调试或规划最有价值,对于简单的任务则价值较低。最终,上下文工程塑造了良好解决方案的*可能性*,而并行收敛*找到*了最佳解决方案。

黑客新闻 新的 | 过去的 | 评论 | 提问 | 展示 | 工作 | 提交 登录 一个代理不足以 (benr.build) 18 分,由 bisonbear 1 天前发布 | 隐藏 | 过去的 | 收藏 | 2 条评论 yawnxyz 1 天前 [–] 如果尝试让多个代理产生一致的结果,是不是最好让他们最终构建一个可重复的工作流程?回复 bisonbear 1 天前 | 父级 [–] 好问题 - 然而我认为这些不一定是互斥的。 我拥有可重复的工作流程,可以利用多个代理的优势。可重复的工作流程为单个代理带来一致的结果。使用多个代理可以让你充分探索问题空间。 一个和谐使用这些概念的例子是创建一个自定义斜杠命令,该命令会生成具有自定义提示的子代理,从而使它们进行更多探索。命令 + 代理提示使流程可重复 + 可改进。 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请 YC | 联系 搜索:

拉凡艺术 艺术再构想 前往画廊 “艺术不是你所见,而是你让别人所见。”

## Ravaan.art:AI 动画绘画引发争议 Ravaan.art 是一个新项目,使用 AI 动画化经典绘画,最近在 Hacker News 上讨论。 反应不一。 许多人觉得动画化的风景令人叹为观止,但也有人批评动画人像的“怪异”和“毫无生气”,指出人物形象具有普遍的相似性。 一些用户认为该项目贬低了原始艺术作品,将有意义的作品变成了单纯的视觉奇观,并惋惜其时机——认为在生成式 AI 艺术兴起之前会更有影响力。 另一些人则为这项工作辩护,认为观众可以自由地独立解读,无需考虑作者意图。 一个普遍的愿望是进行微妙的动画处理——例如在著名绘画中进行细微的动作——以创造一种新颖、引人入胜的效果。 该项目还被拿来与《哈利·波特》中的移动画像和《星球大战》角色里文进行比较。

一种常见的UI模式为帖子显示相对时间戳,例如“4小时前”,通常会通过链接或工具提示增强,以显示精确日期。虽然HTML `<time>` 元素*似乎*是语义化日期表示的理想选择——允许浏览器和屏幕阅读器解释和显示完整时间戳——但其实际影响却出乎意料地有限。 尽管在很大一部分网页上被使用,大多数浏览器除了渲染它之外,都会忽略 `<time>` 元素。屏幕阅读器 NVDA 和 Narrator *会*读取时间戳,但可能并非按预期方式读取。搜索引擎似乎优先考虑 Schema.org 标记(datePublished/dateModified)而不是 `<time>`,用于搜索结果中的日期摘要。 本质上,`<time>` 仍然是语义化 HTML 未实现的承诺,最初设想用于日历集成和本地化等功能,但目前利用率不高。尽管如此,许多开发者仍然继续使用它,仅仅是因为它代表了可访问性和语义化代码的良好意图。

## Hacker News 讨论:`<time>` 元素与相对时间戳 一场 Hacker News 讨论围绕 HTML `<time>` 元素以及相对时间戳(例如“X 天前”)的可用性展开。许多评论者认为 `<time>` 元素*应该*做得更多,可能利用 GitHub 的 `<relative-time>` 等元素进行渐进增强。 核心争论在于相对时间戳与绝对时间戳的偏好。虽然相对时间对近期事件很方便(“5 分钟前”),但许多人认为对于较旧的内容,由于不一致的四舍五入(“7 个月前”与 23 个月),它们令人沮丧。一些用户提倡在一段时间后“衰减”为绝对日期。 有人提出了 UX 问题,尤其是在移动设备上,工具提示(通常用于显示完整时间戳)的可访问性较差。其他人强调了网站之间日期格式不一致的问题,以及对标准化、机器可读日期格式的需求。有人建议浏览器插件可以增强 `<time>` 的功能。最终,讨论表明,人们强烈偏好清晰、一致且易于访问的日期信息,无论是相对时间戳还是绝对时间戳。

## JustHTML:利用人工智能辅助构建HTML5解析器 JustHTML是一个全新的、无依赖的Python HTML5解析器,在严格的html5lib测试套件上实现了100%的通过率,并包含CSS选择器查询API。该项目展示了编码代理的强大功能,使用VS Code和Github Copilot构建,并强调了解析现实世界中经常存在错误的HTML的挑战。 开发过程涉及迭代改进,从一个基本的解析器开始,并逐步提高测试覆盖率。一个关键的障碍是实现复杂的“收养机构算法”来处理格式错误的HTML——即使是原始Firefox HTML5解析器作者也认为这项任务具有挑战性。最初的性能较慢,导致了Rust分词器的重写(收益有限),最终将来自快速Rust解析器html5ever的逻辑移植回Python。 尽管最终速度比html5lib慢,但广泛的性能分析、受测试覆盖率指导的代码删除以及模糊测试显著提高了性能。作者强调代理*编写*了代码,而他们专注于高级设计、错误纠正和引导流程。该项目强调了在人工智能辅助开发中,明确的目标、代码审查以及允许代理从失败中学习的价值。

## 辣椒卡宴:下一代数据加速,助力规模化 Spice Cayenne 是 Spice.ai 推出的最新数据加速器,旨在处理低延迟的多太字节数据湖工作负载。Cayenne 旨在克服 DuckDB 和 SQLite 等现有加速器在规模化时的局限性,它结合了高性能的 **Vortex 列式格式**(来自 Linux 基金会)和精简的 **嵌入式元数据引擎**。 这种分离优化了存储和元数据管理,从而实现 **更快的查询和显著降低的内存使用量**。Spice 通过在本地计算引擎中实现数据集来加速数据,减少网络 I/O 并实现亚秒级查询时间,而无需额外的基础设施。 Cayenne 通过利用 Vortex 高效的随机访问和与 Apache Arrow 的零拷贝兼容性,解决了大数据集中的关键挑战——并发瓶颈、高内存消耗和复杂的索引管理。基准测试表明,Cayenne 的查询速度比 DuckDB **快 1.4 倍**,同时使用的内存 **减少了近 3 倍**。 目前处于 Beta 阶段,Spice Cayenne 通过在 Spicepod.yml 中配置 `engine: cayenne` 来配置,并承诺进一步改进,例如索引支持和额外的元数据后端。它旨在成为太字节和拍字节级分析和人工智能工作负载的领先加速器。

Spice Cayenne 是 Spice.ai 构建的一种新型 SQL 加速工具,利用高性能的 Vortex 列式数据格式。Spice.ai 是一个开源数据和 AI 引擎,专为大规模数据处理而设计,Barracuda Networks 和 Twilio 等公司已经在采用。 Cayenne 利用“数据加速器”将来自各种来源的数据转化为嵌入式数据库。这个新版本受 Ducklake 启发,使用 Vortex,它在随机访问、扫描和写入方面比 Apache Parquet 快得多,并且在内存使用方面优于 DuckDB。 虽然 DuckDB 加速器通常最大容量约为 1TB,但 Spice Cayenne 旨在实现 PB 级部署。开发者正在寻求对这个初始版本的反馈,并强调 Spice 的独特功能,包括原生数据加速、联合查询、混合搜索和 LLM 推理。 更多信息请参见 Spice.ai 博客和 GitHub 仓库。

## TRELLIS.2:高保真图像到3D生成 TRELLIS.2 是一种新的40亿参数大型3D生成模型,能够以惊人的速度和效率从2D图像创建高分辨率、完全纹理化的3D资产。它利用了一种新颖的“无场”稀疏体素结构,称为O-Voxel,能够生成复杂的拓扑结构——包括开放表面和内部结构——并完全支持PBR材质(颜色、粗糙度、金属度、不透明度)。 该模型在NVIDIA H100 GPU上大约60秒内即可实现高达1536³的分辨率。其主要优势在于纹理网格和O-Voxel之间的快速转换(<10秒CPU到O-Voxel,<100毫秒CUDA到网格)。 TRELLIS.2 建立在专门的软件包之上,例如O-Voxel、FlexGEMM和CuMesh,以实现优化的性能。代码可在GitHub上获取(仅限Linux,需要具有≥24GB内存和CUDA Toolkit 12.4的NVIDIA GPU)。预训练模型可通过Hugging Face访问。网络演示和PBR纹理生成即将推出。该项目采用MIT License发布,部分依赖项具有单独的许可条款。

微软发布了TRELLIS.2,一种先进的开源大型3D生成模型(40亿参数),并计划公开发布配套代码和数据集。 在影响深远的TRELLIS 1的基础上,新版本采用了新颖的O-Voxel数据结构,能够高效地将体素数据转换为网格,类似于一次性PNG到SVG的转换。 用户指出,与之前的模型相比,该模型在质量和PBR材质及纹理生成方面都有所改进。 虽然直接使用需要24GB显卡,但像vlm.run这样的替代方案允许从图像生成资源,而无需强大的硬件。 一些评论员观察到,演示结果不如展示的示例令人印象深刻,这表明输出可能经过了精选。 该项目被誉为开源3D生成领域的重要一步,但也有人预计未来将朝着Sparc3D等模型的质量方向进一步发展。 演示可在Hugging Face上找到 ([https://huggingface.co/spaces/microsoft/TRELLIS.2](https://huggingface.co/spaces/microsoft/TRELLIS.2))。

更多

联系我们 contact @ memedata.com