2025-12-22

13 篇热帖

Logging sucks

好的,以下是对提供的文本内容的摘要,中文呈现,不超过800字,并采用Markdown格式:

关于日志记录现状的深刻反思与改进方案

本文深入剖析了当前日志记录的弊端,并提出了“宽事件”(Wide Events)/“规范日志行”(Canonical Log Lines)的解决方案。文章认为,传统的日志记录方式已经无法满足现代复杂分布式系统的需求,并指出字符串搜索在调试问题时效率低下。

核心问题:缺乏上下文

作者认为,日志记录的根本问题在于缺乏上下文信息。传统的日志记录方式通常将日志视为简单的事件记录,而忽略了请求生命周期中的所有相关信息。当用户报告问题时,开发者需要搜索多个服务中的日志,才能拼凑出完整的事件链,这既耗时又容易出错。

OpenTelemetry的局限性

文章明确指出,OpenTelemetry 只是一个数据采集和传输的协议和SDK,它本身并不能解决日志记录的核心问题。它并不能自动决定需要记录哪些信息,也无法添加业务上下文。

解决方案:宽事件

作者提出了宽事件的解决方案,即为每个请求在每个服务节点上发出一个包含所有相关上下文信息的单一日志事件。宽事件应包含时间戳、请求ID、追踪ID、服务信息、方法、路径、状态码、持续时间、用户信息、购物车信息、支付信息、错误信息以及功能标志等丰富的数据。

宽事件的优势

宽事件的优势在于:

  • 简化调试: 通过宽事件,开发者可以在一个日志事件中找到所有需要的信息,无需在多个服务中搜索。
  • 支持数据分析: 宽事件可以用于构建仪表盘和进行数据分析,帮助开发者更好地了解系统性能和用户行为。

采样策略

为了控制成本,文章建议采用尾部采样(Tail Sampling)策略。尾部采样是指在决定是否记录一个事件时,优先保留错误、慢请求、VIP用户以及特定功能标志相关的请求。

关键概念与误解

文章澄清了一些常见的误解:

  • 结构化日志与宽事件并非等同。
  • OpenTelemetry并不能自动解决日志记录问题。
  • 日志记录与指标监控并非相互排斥,而是可以相互补充。

总结

文章强调了从“记录代码正在做什么”转变为“记录发生了什么”的思维转变。通过实施宽事件,开发者可以显著提高调试效率,并利用日志数据进行深入分析,从而构建更可靠、高性能的应用程序。

The Going Dark initiative or ProtectEU is a Chat Control 3.0 attempt

Mullvad VPN 关于欧盟“Going Dark”倡议的总结 (Summary of Mullvad VPN's statement on the EU "Going Dark" initiative)

以下是对 Mullvad VPN 在 Mastodon 上发布的帖子的总结:

欧盟委员会在“Chat Control 2.0”的尝试中失败,未能获取端到端加密数据的访问权限。预计在2026年夏季,他们将再次发起新的尝试,名为“Going Dark”(或现在被欧盟委员会称为“ProtectEU”)。

此次“Going Dark”倡议旨在“以合法方式允许执法部门访问加密数据”,本质上是“Chat Control 3.0”的又一次尝试。 值得注意的是,这次一些欧盟成员国希望将 VPN 服务纳入监管范围。

关键点:

  • 失败的尝试: 欧盟委员会在“Chat Control 2.0”中未能获取加密数据访问权限。
  • 新的倡议: “Going Dark”(或“ProtectEU”)将作为新的尝试推出。
  • 目标: 允许执法部门合法访问加密数据。
  • 范围扩大: 这次的尝试可能包括对 VPN 服务的监管。

I can't upgrade to Windows 11, now leave me alone

总结:微软强制升级 Windows 11 通知及用户反思

本文描述了作者在使用 Windows 10 时遇到的问题:微软强制推送升级到 Windows 11 的通知,且无法有效关闭。以下是主要内容:

1. Windows 10 生命周期结束,强制升级通知:

  • Windows 10 的支持已经结束,微软开始向用户推送升级到 Windows 11 的通知。
  • 作者的笔记本电脑由于硬件限制(缺少 TPM 2.0 安全芯片)无法升级到 Windows 11,但依然频繁收到升级提醒。

2. 无法有效关闭升级通知:

  • 作者尝试关闭通知,但发现只有两个选项:“稍后提醒”和“了解更多”。
  • “稍后提醒”实际上是同意微软持续推送相同消息。
  • “了解更多”会将用户引导至微软商店,显示购买新笔记本电脑的广告,并可能收集用户数据。

3. 微软的设计理念及用户感受:

  • 作者认为微软的设计是“主动敌对用户”,而非简单的“屎壳螂化”(enshittification)。
  • 微软提供的选项实际上只有“购买新电脑”和“同意”。
  • 作者认为这是微软故意移除拒绝升级选项的设计。

4. 作者的诉求及反击:

  • 作者希望微软尊重其硬件限制,停止推送升级通知。
  • 作者表达了对 Windows 11 广告和强制要求使用 Microsoft 账户的不满。
  • 作者提出了一种反制方案:如果微软要求用户创建账户,则用户应要求微软将所有网络访问数据发送到用户自己的服务器,否则构成违约。

5. 相关技术信息:

  • TPM 2.0 是一个安全芯片,是 Windows 11 的硬件要求之一。
  • 负责显示升级通知的应用程序被称为 Reusable UX Interaction ManagerCampaign Manager

总而言之,文章表达了对微软强制升级策略的不满,并提出了用户反抗的设想,强调了用户对自身设备和数据的控制权。

Show HN: Books mentioned on Hacker News in 2025

Okay, I'm ready. Please provide the content you want me to summarize. I will wait for you to paste it and then proceed with generating a concise, accurate summary in markdown format and Chinese language, adhering to your guidelines. Just paste the text here.

Show HN: WalletWallet – create Apple passes from anything

免费在线条形码转Apple Wallet 通行证工具总结

该工具是一个免费的在线实用程序,旨在将实体条形码转换为适用于 Apple Wallet® 的数字通行证。 其核心功能是将纸质会员卡或忠诚度卡的条形码数据转化为可在 iPhone 或 Apple Watch 上使用的数字卡片。

主要特点和步骤:

  1. 条形码数据输入: 用户需要输入会员卡或忠诚度卡的条形码数据
  2. 外观和标题配置: 用户可以配置通行证的外观和标题,自定义卡片展示样式。
  3. 下载与导入: 完成配置后,用户可以下载生成的通行证文件,并在 Apple Wallet 中打开添加该文件,即可使用。

总结:

该工具提供了一个简单易用的方法,无需安装任何软件,即可将实体条形码转化为数字通行证,方便用户在 Apple 设备上管理和使用会员卡或忠诚度卡。 整个过程完全在浏览器中完成,且免费

A guide to local coding models

本文总结:本地 AI 编码模型可行性分析

这篇文章最初提出了一个假设:升级硬件以运行本地 AI 编码模型,可以节省与订阅 AI 编码工具(如 Claude Code)相比的费用。作者购买了一台配备 128GB RAM 的 MacBook Pro 进行实验,但最终得出结论:这个假设并不成立

核心观点:

  • 本地模型能力不俗: 即使是较小的本地模型 (例如 7B 参数模型) 也能胜任大约 90% 的软件开发任务,性能仅落后于顶级云端模型一代。
  • 工具的重要性: 良好的工具对于本地模型的有效使用至关重要。工具的兼容性和性能对整体体验有很大影响。
  • 硬件限制: 在使用本地模型时,需要考虑硬件限制,例如 RAM 限制。运行其他开发工具 (如 Docker) 会进一步消耗 RAM,导致模型需要缩小规模,性能降低。
  • Google 免费工具的影响: Google 提供的免费 AI 工具 (如 Gemini CLI、Jules、Antigravity) 降低了购买昂贵硬件的必要性。
  • 实际应用场景: 本地模型更适合作为补充模型,在特定情况下节省订阅费用,但不太适合对性能要求极高的生产环境。
  • 企业应用建议: 不建议企业用本地模型完全替代提供给员工的云端工具,如 Claude Code。

关键细节:

  • 内存需求: 30B 参数的模型需要约 60GB RAM,80B 参数的模型需要更多。需要考虑模型参数和上下文窗口的内存占用。
  • 优化方法: 可以通过量化(降低参数精度)来降低内存占用,但可能影响性能。
  • 模型选择: 建议选择适合聊天交互的 instruct 模型,并根据任务选择合适的模型(例如,代码补全模型)。
  • 工具选择: MLX (Mac 专用) 和 Ollama 是常用的本地模型服务工具。
  • 上下文管理: 优化上下文窗口内容对提升本地模型效率至关重要。

最终结论:

虽然本地 AI 编码模型在成本、可靠性和隐私方面具有优势,但考虑到硬件成本、工具的复杂性和免费云端工具的出现,目前升级硬件以完全替代订阅 AI 编码工具的方案不推荐。本地模型更适合作为补充工具,在特定情况下节省订阅费用。

You’re not burnt out, you’re existentially starving

总结:寻找人生意义,摆脱存在虚无感 (Summary: Finding Meaning in Life and Overcoming Existential Vacuum)

这篇文章探讨了现代人普遍存在的“存在虚无感”(existential vacuum),即在物质生活富足的情况下,仍然感到空虚、疲惫和缺乏目标。作者结合维克多·弗兰克尔(Viktor Frankl)的《人类的意义探索》(Man’s Search for Meaning) 和尼采(Friedrich Nietzsche)的思想,提出了寻找人生“为什么”(Why)的重要性,并强调努力本身就是价值所在。

核心观点:

  • 存在虚无感是信号: 这种感觉并非需要消除的困扰,而是指向我们对人生意义的需求的信号。
  • 寻找最高目的: 将注意力集中在个人最高的目的和理想上,如同孩童时对未来的憧憬,并积极行动去实现它。
  • 超越舒适,追求丰盈: 现代社会过度追求舒适,导致我们混淆了舒适与满足感。我们需要将重点从减少痛苦转向追求更深层次的意义。
  • 承担责任: 对于那些已经获得物质富足的人来说,有两个责任:将这种富足分享给更多人,并寻找更有意义的事情去做。
  • 点燃内在的梦想: 克服自我怀疑,重新找回童年时的梦想,并将其转化为行动。
  • 拥抱政治和行动: 作者以自身经历为例,强调了积极参与政治,特别是培养和支持有抱负的政治人才的重要性。这不仅能带来个人成长,也能推动社会进步。
  • 灵活的道路: 虽然作者选择政治作为其最高目标,但他鼓励读者选择最适合自己的路径,无论是创业、非营利组织、科学、艺术,还是其他领域,关键是找到能激发自身热情并带来长期意义的事业。
  • 持续行动,而非逃避: 不要沉溺于“反工作”文化,而是将生活围绕着有意义的工作来构建。即使是每周一小时的志愿服务,也能带来积极的改变。

作者的行动:

作者通过写作、项目(如“世界最大的问题”和“积极政治”)、以及领导“MCFN”组织,积极践行其理念。他致力于帮助有抱负的乐观主义者进入政治领域,并推动积极政治变革。

总结:

这篇文章鼓励读者反思自身的生活,勇敢地追寻自己的最高目标,并积极行动,为世界带来积极的影响。它强调了在物质富足的时代,寻找人生意义的重要性,以及行动本身所蕴含的价值。

Disney Imagineering Debuts Next-Generation Robotic Character, Olaf

华特迪士尼推出全新奥拉夫机器人,开启角色创新新时代

今天,在巴黎迪士尼乐园,华特迪士尼想象工程总裁兼首席创意官布鲁斯·沃恩和巴黎迪士尼乐园总裁纳塔莎·拉法尔斯基共同宣布推出一款代表迪士尼动画工作室热门电影《冰雪奇缘》中备受欢迎的雪人奥拉夫的下一代机器人角色。

核心创新:从屏幕到现实

这款奥拉夫机器人旨在完美还原电影中奥拉夫的形象和动作,包括他活泼、好奇和独特的个性。机器人采用了闪耀的虹彩纤维,模拟了新鲜雪的闪光效果,使其成为迪士尼最逼真、最具表现力的角色之一。为了确保动作的真实性,团队与《冰雪奇缘》的原版动画师紧密合作,力求捕捉创作者的意图,而非仅仅复制动画。

技术驱动:人工智能助力

迪士尼一直致力于技术创新,并将故事置于首位。为了打造这款奥拉夫机器人,团队利用人工智能的强化学习分支,突破了硬件的限制,实现了艺术家的创意意图。强化学习技术帮助奥拉夫在短时间内掌握人类数年才能掌握的行走和优雅动作。

独特设计与功能

奥拉夫的“雪”具有独特的运动方式,并且可以完全活动他的嘴巴、眼睛,以及可拆卸的胡萝卜鼻子和手臂。最重要的是,奥拉夫能够说话并进行互动,为游客带来独一无二的体验。

未来展望

这款奥拉夫机器人,与之前的BDX机器人(《星球大战》自由漫游机器人)和自平衡的H.E.R.B.I.E.(《神奇四侠》中的角色)相比,代表了迪士尼角色创新能力的不断提升。 迪士尼正在加速创作新角色并将其引入全球各地的乐园,目标是创造更具情感、更具表现力和更具惊喜的体验。

奥拉夫的亮相地点:

  • 冰雪奇缘世界(World of Frozen)的Arendelle Bay Show: 该沉浸式世界即将亮相巴黎迪士尼乐园的迪士尼冒险世界。
  • 香港迪士尼乐园度假区冰雪奇缘世界的限时特别亮相。

更多关于奥拉夫以及华特迪士尼想象工程研发突破的信息,可以在最新的《我们称之为想象工程》节目中观看。


Summary in Chinese (Simplified):

迪士尼乐园近日推出了全新的奥拉夫机器人,标志着迪士尼角色创新的新阶段。该机器人通过人工智能和强化学习技术,完美还原了电影《冰雪奇缘》中奥拉夫的形象和动作,能够进行互动和对话。该项目代表了迪士尼在角色创新领域不断突破,未来将有更多具情感和表现力的角色出现在世界各地的迪士尼乐园中。奥拉夫机器人将首先亮相巴黎迪士尼乐园的“冰雪奇缘世界”以及香港迪士尼乐园的限时活动。

Rue: Higher level than Rust, lower level than Go

Rue 语言概要 (Rue Language Summary)

Rue 是一种新兴编程语言,旨在在 Rust 和 Go 之间找到平衡点,提供更高的抽象级别,同时保持较低级别的控制。以下是 Rue 的主要特点:

核心设计理念:

  • 内存安全: Rue 致力于内存安全,但避免了垃圾回收器(garbage collector)和手动内存管理。目前该特性仍在开发中。
  • 简洁的语法: Rue 的语法设计简洁易懂,借鉴了多种编程语言的优点,使得熟悉其他语言的开发者容易上手。
  • 快速编译: Rue 能够直接编译成原生代码,从而实现快速的执行速度。

代码示例 (Hello, Rue):

提供的代码示例展示了一个简单的斐波那契数列计算程序,它演示了 Rue 的基本语法结构:

  • fn 关键字: 用于定义函数。
  • 类型注解: 在参数和返回值后面使用 : i32 来指定类型(这里是 32 位整数)。
  • 递归函数: fib(n) 函数使用递归方式计算斐波那契数列的第 n 项。
  • main() 函数: 程序的入口点,返回一个 i32 类型的值。
  • let 关键字: 用于声明变量。
  • @dbg() 宏: 用于调试输出,打印变量的值。
  • while 循环: 用于重复执行一段代码。
  • i = i + 1;: 递增变量 i

总结:

Rue 是一种新的、有潜力的编程语言,它力求在内存安全、简洁性、编译速度和易用性之间取得平衡。 代码示例表明其语法结构清晰,易于理解。虽然内存安全特性仍在开发中,但 Rue 的设计理念和快速编译能力使其在未来的编程领域具有一定的竞争力。

Get an AI code review in 10 seconds

摘要:利用.diff后缀简化 GitHub PR 代码审查流程

本文介绍了一种简单高效的利用大型语言模型 (LLM) 辅助 GitHub Pull Request (PR) 代码审查的技巧,无需依赖 Copilot Enterprise、浏览器扩展或其他专业工具。

核心方法:

  1. 在 GitHub PR URL 的末尾添加 .diff 后缀。 例如,将 https://github.com/RahulPrabha/oldmanrahul.com/pull/11 修改为 https://github.com/RahulPrabha/oldmanrahul.com/pull/11.diff
  2. 复制 .diff 文件的原始代码片段(diff)。
  3. 将复制的代码片段粘贴到 LLM (如 Claude, ChatGPT 等) 中。 建议添加简短指令,例如“请审查”。

优势:

  • 快速初步审查: 可以在正式的人工代码审查之前,快速获取 LLM 的初步反馈。
  • 发现问题: 帮助发现明显的代码问题和遗漏的边缘情况。
  • 提高代码质量: 通过 LLM 的建议,可以提交更干净的代码,减少人工审查的工作量。
  • 缩短开发周期: 简化审查流程,加快开发迭代速度。
  • 提升协作效率: 是一种对团队成员的礼貌行为,减少不必要的打扰。

重要提示:

  • 该方法并非完全取代人工代码审查,而是作为人工审查的补充。 仍然需要人工审查员进行更深入的检查和评估。
If You Don't Design Your Career, Someone Else Will

职业生涯回顾与规划:七步指南

本文分享了作者在职业生涯中实践并认为极有价值的七步回顾与规划方法,旨在帮助读者避免陷入“忙于生活,无暇思考”的陷阱,更好地掌控自己的职业发展。

核心观点: 如果不主动设计自己的职业生涯,别人就会替你设计。

七步方法如下:

  1. 回顾过去12个月 (Step 1): 逐月回顾过去一年的工作,列出参与的主要项目、职责和成就。无需过于复杂,重点在于记录时间分配。
  2. 分析“新闻” (Step 2): 仔细审视回顾列表,像记者一样思考:这些事情的真正意义是什么?存在哪些趋势?这些趋势将如何发展?
  3. 畅想“如果可以做任何事” (Step 3): 不受任何限制地进行头脑风暴,写下所有想在职业生涯中做的事情。
  4. 深入思考Step 3 (Step 4): 很多人往往在职业规划一开始就放弃了最理想的选择,因为觉得不现实或无法赚钱。要认真思考这些想法,不要轻易排除,或许存在可行的职业道路。
  5. 设定未来12个月的六个目标 (Step 5): 列出职业生涯中希望在未来一年内完成的六个最重要的目标,并按优先级排序。
  6. 筛选目标 (Step 6): 回归工作状态后,只保留优先级最高的那个目标,作为本年度的“职业北极星”。
  7. 制定本月行动计划 (Step 7): 列出未来3-4周内可以快速实现的小目标。
  8. 明确拒绝事项 (Step 8): 列出那些看似“不错”但会阻碍你实现“伟大”职业目标的活动或任务,然后考虑删除、推迟或委托他人处理。

作者经历: 作者曾通过此方法成功地改变了自己的人生轨迹,放弃了法律学,移居美国,并成为一名教师和作家。

总结: 作者认为,花费短短两个小时进行职业生涯回顾和规划,就能在未来的一年甚至更长时间内显著提升生活质量。

Autoland saves King Air, everyone reported safe

科罗拉多州一架King Air 200飞机成功使用Autoland系统紧急降落事件总结

以下是对事件的总结,基于提供的文本:

事件概要:

2024年12月20日,一架Beechcraft Super King Air 200飞机在科罗拉多州Rocky Mountain Metropolitan Airport (KBJC) 成功降落,此前该飞机在飞行过程中失去了与空中交通管制部门的通讯,并启动了机载紧急自动着陆系统(Autoland)。飞机上搭载了两人,目前没有报告人员受伤。

调查与回应:

  • 美国联邦航空管理局 (FAA): 正在对该事件进行调查,但目前未透露调查的具体细节。
  • 国家运输安全委员会 (NTSB): 正在收集信息,以确定是否需要进行调查。
  • Garmin: 确认了该事件是其Autoland系统的首次实际应用(而非测试或演示)。Garmin表示Autoland系统运行成功。
  • Buffalo River Outfitters: 该飞机由Buffalo River Outfitters运营,从Aspen起飞前往Rocky Mountain Metropolitan Airport。运营商未对事件发表评论。

事件细节:

  • 飞机尾号为N479BR。
  • 事件发生时间大约在当地时间下午2点左右。
  • 飞机在紧急情况下发出了7700求救信号。
  • LiveATC的录音记录显示,一个机械女声宣布了飞行员的身体不适,并表示将降落在30号跑道。
  • Rocky Mountain Metropolitan Airport的管制员配合Autoland系统的降落,并最终关闭机场以确保安全。
  • 飞机随后于周日早上从Rocky Mountain Metropolitan Airport起飞,前往俄克拉荷马城,那里是FAA的主要认证技术中心。

Autoland系统:

  • Autoland系统是一种紧急自动着陆系统,能够在飞行员无法控制飞机的情况下安全降落。
  • Larry Anglisano 录制了Beechcraft King Air的Autoland系统演示视频,可以参考:https://avbrief.com/king-air-emergency-autoland-demo/
  • 关于该事件是否真的存在紧急情况,社交媒体上存在一些质疑,但Garmin未对此作出回应。

总结:

总的来说,该事件展现了Autoland系统在紧急情况下的有效性。尽管FAA和NTSB正在进行调查,但目前的信息表明,该系统成功地将飞机安全降落,避免了潜在的事故。事件的具体原因和飞行员的身体状况仍然未知。

Build Android apps using Rust and Iced

使用 Iced 构建 Android 应用示例总结

本文档描述了如何使用 Rust 和 Iced 框架构建 Android 应用的示例。该项目基于现有示例和技术,旨在将 Iced 集成到 Android 环境中。

示例结构:

该项目包含两个示例活动:

  • NativeActivity: 基于原生活动。
  • GameActivity: 基于游戏活动。

这些示例借鉴了以下项目:

预览:

示例应用展示了 Iced 集成效果,截图显示了应用在 Android 设备上的呈现效果。 可以运行 iced 框架中的大多数示例,只需省略场景渲染部分,并将根容器的背景设置为所需颜色即可。

功能演示:

  • 时钟 (Watch): 展示了在 Android 上运行 Iced 应用的实时时钟功能。
  • 文本输入 (Text Input): 文本输入功能部分可用,但存在一些未解决的问题:
    • 软键盘显示/隐藏时窗口无法调整大小。
    • 如何更改软键盘的输入语言。
    • 不完全支持 IME (输入法编辑器)。
    • 复制/粘贴和软键盘显示/隐藏功能通过调用 Java 实现。

构建与运行:

构建和运行该项目需要参考 android-activity 仓库中的详细说明。 构建过程通常包括以下步骤:

  1. 设置环境变量:
    • ANDROID_NDK_HOME: NDK 安装路径。
    • ANDROID_HOME: SDK 安装路径。
  2. 安装目标平台:rustup target add x86_64-linux-android
  3. 安装 cargo-ndk:cargo install cargo-ndk
  4. 构建:cargo ndk -t x86_64 -o app/src/main/jniLibs/ build

开发环境:

  • Arch Linux 6.9.6
  • jdk-openjdk 22
  • 目标 API 35

工作原理:

android-activity 允许使用 Rust 构建 Android 应用。winitwgpu 等关键库也支持 Android 构建。虽然 iced 框架本身不直接支持 Android,但可以通过集成到现有的图形渲染管道中来实现,正如 integration 示例所示。 通过这种方式,可以将基于 winit + wgpu 的现有示例转换为使用 Iced 框架进行渲染。