每日HackerNews RSS

## openui-lang 解析器:从 WASM 回到 TypeScript 团队最初使用 Rust 构建了 openui-lang 解析器,并将其编译为 WASM 以提高速度,期望能从 Rust 的性能和 WASM 的接近原生浏览器执行中获益。然而,基准测试表明 Rust 本身的解析并非瓶颈。显著的开销源于 JavaScript 和 WASM 堆之间重复的数据复制——字符串输入、结果的 JSON 序列化/反序列化。 尝试使用 `serde-wasm-bindgen` 绕过 JSON(直接对象传递)*增加了*延迟,因为将 Rust 数据转换为 JavaScript 对象需要大量的细粒度转换。最终,将整个流程移植到 TypeScript 消除了这些边界成本,从而实现了**2.2-4.6 倍的单次调用性能提升**。 进一步的优化集中在流式架构上。最初简单的解析会随着每个数据块重新解析整个字符串(O(N²))。实施语句级增量缓存——重用已解析的语句——将其降低到 O(N),从而使总流式成本**降低 2.6-3.3 倍**。 这次经验表明,WASM 最适合计算密集型任务,且 JavaScript 互操作最少,或者移植现有的原生库。对于将结构化文本解析为 JavaScript 对象,边界开销通常超过了 Rust 或 WASM 带来的任何性能提升。算法改进,例如增量缓存,被证明影响更大。

## 黑客新闻讨论总结:Rust WASM 解析器重写 一篇最近的博客文章详细介绍了将 Rust WASM 解析器重写为 TypeScript,结果性能出人意料地更快。黑客新闻的讨论强调了除了语言选择之外的几个关键点。 最初,团队发现仅仅通过在移植过程中修复一个错误,就显著提高了速度——一个存在于原始 C++ 代码中的缓存键比较问题,难以用 Python 表达(因此在 TypeScript 中避免了)。除此之外,消除跨越 WASM/JavaScript 边界的序列化开销也提供了很大的提升。 许多评论者分享了类似的经验,即使在同一语言中重写代码,也暴露出性能问题并允许进行算法改进。其他人指出避免不必要的数据序列化以及利用共享内存缓冲区等技术的重要性。 讨论还涉及 WASM 互操作的开销、AI 生成内容可能影响博客文章质量的问题,以及关于 Rust 相对于其他语言在 Web 开发中优势的持续争论。最终,共识倾向于性能提升源于算法修复和减少开销,而不仅仅是语言切换本身。

## Fortransky:一个Fortran Bluesky/AT 协议客户端 Fortransky 是一个基于终端的 Bluesky 社交网络客户端,独特性在于它使用 Fortran 编写。它利用 Rust 静态库来解码 AT 协议的 relay-raw 流,通过 `iso_c_binding` 和 C libcurl 接口将 Fortran 与 Rust 连接起来。 该客户端提供诸如时间线获取、作者订阅源、搜索、个人资料查看、撰写帖子以及基本的帖子互动(点赞、转发、引用帖子)等功能。它支持两种流模式:Jetstream(WebSocket,JSON)和 relay-raw(二进制 CBOR,由 Rust 解码)。会话数据存储在 `~/.fortransky/session.json` 中,需要应用程序密码进行身份验证。 安装过程包括使用 `cargo` 构建 Rust 桥接,然后使用 CMake 将其与 Fortran 代码链接。relay-raw 流路径需要 Python 依赖项 (`cbor2`,`websockets`)。目前,它显示原始 DID,尚未将其解析为句柄。最近的更新 (v1.1) 集成了原生 Rust 解码器,以提高性能和稳定性。

## Fortransky:一个基于终端的Bluesky客户端,用Fortran编写 一位开发者(FormerLabFred)分享了他的项目“Fortransky”,这是一个仅限终端的Bluesky/AT协议客户端,使用Fortran编写——以及一个配套项目“Cobolsky”。该项目在Hacker News上引发了热烈讨论,许多人对这种非常规的语言选择表示赞赏。 开发者解释说,其动机是希望让老语言保持活力,强调Fortran的速度和历史重要性。其他人也纷纷表示,他们回忆起学习Fortran以及它的持久可移植性。 除了新颖性之外,评论员指出AT协议对开发者来说易于使用,一位用户分享了其他几个基于该协议的独特应用,包括直播和博客平台。开发者还提到即将举行的温哥华AT协议会议。该项目引起了怀旧开发者和对探索不太常见的编程语言的人们的共鸣。

亨利埃塔的Postgres生产集群因OOM killer事件崩溃,消耗了2TB内存,尽管`work_mem`设置仅为2MB。调查显示,问题并非简单的`work_mem`错误配置,而是Postgres内存管理中更深层次的行为。 Postgres的内存上下文系统优先一次性释放整个上下文以提高效率,而不是单个分配。一个复杂的查询,涉及用作连接表中PL/pgSQL函数,创建了一个巨大的`ExecutorState`上下文。该上下文积累了数十万个`work_mem`块——每个块最多2MB——在整个操作完成之前不会释放它们,但操作从未完成。 虽然无法为每个后端设置硬性内存上限,但解决方案包括确保使用`ANALYZE`和`CREATE STATISTICS`获得准确的统计信息,重写有问题查询,实施查询超时(`statement_timeout`),以及利用`pg_log_backend_memory_contexts`函数(Postgres 14+)进行详细的内存使用分析。最终,该事件强调了即使是强大的硬件也无法克服设计不良的查询。

## Postgres 的 `work_mem` – 设计缺陷? 一篇 Hacker News 的讨论强调了 PostgreSQL 中 `work_mem` 设置可能存在的设计问题。用户认为它是一个不精确的工具,将内存管理的负担转移到 DBA 上,而不是由数据库智能地处理资源分配。 目前,`work_mem` 决定了一个查询可以使用多少内存,超过这个限制就会溢出到磁盘。然而,系统不会监控*全局*资源使用情况并相应地划分查询。这可能导致查询尝试分配过多的内存(例如,在 2MiB 设置下分配 2TiB!),尽管默认值很小。 核心问题是 Postgres 缺乏整体内存管理策略。虽然文档对此限制是透明的,但提供的实用指导很少。一些人建议实施批处理和监督器来调度查询阶段,可能使用协程以获得更高效的控制流。 虽然存在诸如 `ulimit` 之类的外部限制,但它们不是可靠的解决方案。最终,讨论指出 Postgres 需要超越暴露内部“旋钮”,并实施更强大、自动化的内存管理,特别是考虑到它的成熟度。

## OpenCode:你的开源AI编程助手 - 摘要 OpenCode 是一款快速发展的(12.6万GitHub星标,500万+月活跃用户)开源AI编程助手,旨在提高开发者效率。它提供终端界面、桌面应用(macOS、Windows 和 Linux 的测试版)以及 IDE 扩展,帮助你在首选环境中直接编写代码。 主要功能包括自动加载语言服务器协议 (LSP)、多会话支持、可分享的会话链接,以及与 GitHub Copilot 和 ChatGPT Plus 等流行服务的兼容性。OpenCode 独特地支持*任何* LLM 提供商——包括本地模型——通过 Models.dev 等集成实现。 OpenCode 致力于保护隐私,不会存储你的代码或上下文数据。它还提供“Zen”,这是一系列针对编码优化的、经过基准测试的 AI 模型,确保性能一致。它免费使用,并由 800 多名贡献者组成的庞大社区积极开发。

## 迷因建筑:超越建筑认可 作者探讨了“迷因建筑”的概念——那些被大众认知和记住,但独立于建筑界认可的结构。识别这些建筑是困难的,因为将公众意见与影响因素分离几乎是不可能的。 像山下和正于1974年设计的日本“脸房子”、马丁·莫瑞尔于1931年设计的“大鸭子”、以及马蒂·苏罗宁于1970年设计的“未来屋”等例子,展示了这种现象。这些建筑达到了一种超越建筑讨论的熟悉度,存在于集体记忆中,而非历史记录中。它们不一定是“标志性的”或具有历史意义的,仅仅是*被熟知*的。 作者将这些建筑与黑川纪章的元龟Capsule Tower进行对比,后者受到建筑师的赞赏,但缺乏更广泛的公众喜爱。最终,迷因建筑的关键特征似乎是寿命——能够存活足够长的时间进入公众意识,并唤起一种难以言喻的喜爱之情。这种持久的品质,存在于建筑潮流之外,可能代表着一种更真实的公共建筑形式。

Hacker News新帖 | 过去 | 评论 | 提问 | 展示 | 工作 | 提交登录 模因建筑 (misfitsarchitecture.com) 37 分,speckx 发表于 1 天前 | 隐藏 | 过去 | 收藏 | 3 条评论 帮助 jonah 发表于 1 天前 | 下一个 [–] 我首先想到的建筑是加州威尼斯的比目鱼建筑。最初由弗兰克·盖里为 Chiat/Day 设计,它不属于谷歌园区。 https://en.wikipedia.org/wiki/Binoculars_Building回复 m_p 发表于 8 小时前 | 上一个 | 下一个 [–] https://ronnysalerno.com/queencitydiscovery/2022/10/the-worl...回复 zoklet-enjoyer 发表于 1 天前 | 上一个 [–] 我最喜欢的建筑是鲍勃的 Java Jive https://www.bobsjavajive.com/about回复 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请 YC | 联系 搜索:

## 定制软件“革命”——一种怀疑的观点 尽管围绕人工智能使每个人都能构建定制软件的炒作不断,但作者认为这场“革命”在很大程度上被夸大了。虽然定制软件*存在*——而且常常质量不高——但这并不是大多数人真正*想要*的。 这种兴奋主要来自那些*构建*软件的人,而不是那些需要解决方案的人。大多数用户只是容忍计算机,并渴望简化的结果,而不是系统维护或设计的负担。一家繁忙的会计师事务所希望消除纸质工作,而不是一个新的项目;一家物流公司希望优化路线,而不是一个定制系统来管理。 人工智能无疑会被*使用*,但期望广泛采用定制软件构建是不现实的。它吸引的是现有的“业余爱好者”,但给那些专注于核心业务的人增加了另一层责任。就像获得工具并不意味着每个人都是承包商一样,软件构建工具也不会让每个人都变成开发人员——大多数人只是希望问题得到解决,而不是过程。

## NumKong:苹果芯片混合精度内核 一个名为NumKong的新项目提供了2000个混合精度内核,旨在加速苹果芯片上的计算。开发者ashvardanian指出,README最初是由人工编写,但经过AI模型的辅助改进——接受小幅度的修改。 Hacker News用户的初步反馈表明,他们希望对项目的目的有更简洁、更少“炒作”的解释。讨论还引发了关于潜在应用的问题,有建议称NumKong可能对利用苹果的Silicon Metal Engine (SME)进行音频处理有益。目前,开发者不清楚是否存在使用SME的音频处理实现。

此演示针对桌面屏幕(1000像素以上)优化。 申请抢先体验 为新一代打造的现代工作邮件 | 定义

## 日本筷子礼仪速成指南 在日本用餐涉及特定的筷子礼仪,称为*kiraibashi*,以避免冒犯他人。许多行为被认为是不礼貌的,有些甚至是禁忌。 **主要失误要避免:** 永远不要直接用筷子将食物传递给他人——这模仿了葬礼仪式。此外,避免将筷子直插在米饭中,因为这类似于对逝者的供奉。 **其他常见错误包括:** 挥舞筷子,用筷子叉食物,摩擦一次性筷子(暗示质量差),以及将用过嘴的筷子放回共享菜肴中。不要用筷子移动盘子,搅拌汤,或寻找特定食物。 一般来说,避免任何涉及指向、刺戳或过度摆弄筷子的行为。 正确的礼仪侧重于尊重和细心的使用,不用时使用筷子架,并避免任何可能被视为浪费或不尊重食物的行为。

## 日本筷子礼仪:摘要 一则Hacker News讨论围绕着一份日语筷子禁忌词汇表展开,揭示了一套细微且有时令人惊讶的规则。有些规则非常严肃——源于丧葬习俗,例如避免将筷子直立插在米饭中(类似于香的供奉),或直接用筷子传递食物(模仿火葬中的骨头处理)。但许多规则并非严格执行,尤其是在非正式场合。 对话强调了地区差异(大阪比京都更放松)以及教育和阶级的影响。一些“规则”,例如摩擦一次性筷子以去除木刺,甚至存在争议,有人认为这是一种冒犯,暗示质量低劣,而另一些人则优先避免木刺。 最终,讨论表明,虽然知晓这些礼仪令人赞赏,但严格遵守每一条规则并非必要。许多日本人自己也不严格遵守所有习俗,而且礼仪也在不断发展。关键在于保持谨慎和尊重,但不要因害怕犯错而僵化。 许多评论员指出,常识性的考虑——例如不要用筷子指人或污染共享菜肴——通常与普遍的良好礼仪重叠。

启用 JavaScript 和 Cookie 以继续。

这个Hacker News讨论集中在糟糕的音量控制界面上。原始帖子链接到一篇2017年的文章,强调令人沮丧的设计,引发了一系列用户经验分享。许多评论者指出具体例子:Reddit视频播放器中隐藏的滑块,iOS设备上过于灵敏的音量(从0到1的跳跃是巨大的30%增量),以及苹果音量控制中令人沮丧的缺乏精细度。 一些用户抱怨设计师将新颖性置于可用性之上,质疑某些设计实现的原因。其他人分享了Quicktime 4的拨号界面以及TikTok视频中展示的荒谬音量控制(例如使用井字游戏)。一个反复出现的主题是对更简单、更精确的控制的渴望——比如物理旋钮——以及对自动隐藏滚动条或不必要的UI复杂性的沮丧。这场对话凸显了一个常见的用户痛点:看似简单的功能经常受到糟糕设计选择的困扰。

更多

联系我们 contact @ memedata.com