2026-01-02

12 篇热帖

Linux is good now

Linux 用户数量激增:作者的 Windows 逃离之旅

这篇文章主要讲述了作者从 Windows 转向 Linux 操作系统,并分享了个人体验和观察。

主要观点:

  • Linux 用户数量增长: 在上个月的 Steam 硬件调查中,Linux 用户比例达到历史新高,达 3.2%,超过了 Mac 用户。作者预测该比例将继续增长。
  • Linux 变得更易用: 作者过去认为 Linux 难以使用,容易导致系统崩溃,但通过使用 Bazzite (一款针对游戏优化的 Linux 发行版) 发现 Linux 实际上非常容易上手,甚至比 Windows 更方便。
  • 开源软件的魅力: 作者认为 Linux 的核心优势在于其开源特性,用户可以自由定制和控制自己的电脑,摆脱被公司控制的束缚。作者对 Windows 中不断增加的无用 AI 功能和强制捆绑的 Office 订阅感到厌倦,希望拥有对电脑完全的控制权。
  • Bazzite 的优势: Bazzite 是一款专门为游戏设计的 Linux 发行版,简化了游戏运行流程,即使不用命令行也能轻松运行各种游戏。
  • 其他 Linux 发行版的稳定: 作者还提到, Debian 13 这样的主流 Linux 发行版也变得非常稳定和易用,可以轻松胜任媒体服务器等任务。
  • 现有挑战与未来展望: HDR 支持仍然存在问题,一些在线游戏的反作弊软件与 Linux 不兼容。但作者认为这些问题正在逐步解决,Valve 也在积极推动 Linux 在客厅娱乐领域的应用。
  • 作者建议: 作者鼓励读者在 2026 年尝试 Linux,至少可以安装在单独的启动盘上进行体验。

总结:

文章表达了作者对 Windows 的不满,并对 Linux 的易用性和开源特性表示赞赏。作者认为 Linux 正在变得越来越主流,并鼓励更多人尝试使用 Linux,体验自由和控制的乐趣。 虽然存在一些挑战,但 Linux 的未来充满希望。

I'm a developer for a major food delivery app

总结:关于一家外卖公司的内部运作揭露

以下是根据提供的内容,对外卖公司内部运作的总结:

核心问题: 这份内容是一位离职后端工程师的匿名爆料,揭示了该公司为了追求利润最大化,利用算法操纵司机和顾客,导致司机权益受损,顾客被误导的残酷现实。

主要揭露点:

  • “Priority Delivery”(优先配送)的虚假性: 用户支付额外费用($2.99)购买的“优先配送”服务,实际上只是改变订单JSON中的一个布尔值,但调度逻辑完全忽略它,对配送速度没有实际影响。公司通过延迟非优先订单来制造优先订单“更快”的错觉,从而增加利润。
  • “Desperation Score”(绝望评分): 公司开发了一个隐藏的“绝望评分”指标,根据司机接受订单的行为(例如快速接受低价订单)来评估其经济上的绝望程度。一旦司机被标记为“高绝望”,系统就会减少向其展示高价订单的机会,以降低成本。
  • “Benefit Fee”(福利费用)的欺骗性: 用户在账单上看到的“Regulatory Response Fee”或“Driver Benefits Fee”等费用,并非用于改善司机福利,而是直接汇入公司内部的“Policy Defense”(政策防御)成本中心,用于支付律师费,以对抗司机工会的活动。
  • 小费盗取(Tip Theft 2.0): 公司不再直接盗取小费,而是利用预测模型动态调整司机的基础工资。如果系统预测用户会给小费,就会降低基础工资,实质上用用户的慷慨来补贴公司的运营成本,而非奖励司机。
  • 对司机的剥削: 公司将司机视为“资源节点”,在内部会议中讨论如何最大化利用他们的劳动力,忽视了他们的生活和需求。

技术细节:

  • 后端工程: 爆料人是一位后端工程师,参与了相关算法的开发和部署。
  • A/B测试: 公司曾进行A/B测试,通过人为延迟非优先订单来制造优先订单“更快”的假象。
  • JSON数据结构: “Priority Delivery”服务通过改变订单JSON中的一个布尔值来实现(表面上的)。
  • 预测模型: 公司使用预测模型来评估用户的慷慨程度,并据此调整司机的基础工资。
  • 内部成本中心: 公司设立了“Policy Defense”成本中心,用于支付律师费。

总结: 爆料人认为该公司通过一系列算法和策略,利用顾客的信任和司机的处境,追求不道德的利润增长,并对司机造成了严重的剥削。 这份爆料揭示了外卖行业背后不为人知的黑暗面。

Why users cannot create Issues directly

Ghostty 项目 Issue 跟踪和讨论机制总结 (Summary of Ghostty's Issue Tracking and Discussion Mechanism)

以下是对 Ghostty 项目 issue 跟踪和讨论机制的总结:

核心原则: Ghostty 项目使用 issue 跟踪器进行讨论或功能请求。取而代之的是,项目使用 GitHub Discussions 用于讨论。当讨论达到一个明确、可执行的阶段时,它会被转移到 issue 跟踪器。

原因:

  • 经验总结: 维护开源项目多年后,项目团队发现 80-90% 的用户认为的“bug”实际上是误解、环境问题或用户自身的配置错误。
  • 区分问题类型: 剩下的部分中,大部分是功能请求(未实现的功能),而非真正的 bug(功能故障)。
  • 功能请求的复杂性: 绝大多数功能请求缺乏详细的规范,需要维护者提供进一步的指导才能进行开发。

流程:

  1. 讨论先行: 用户在 GitHub Discussions 中提出问题、讨论功能请求等。
  2. 明确可执行项: 通过讨论,努力明确问题或功能请求,使其具备可执行性。
  3. Issue 转移: 当讨论清晰地识别出一个 Ghostty 自身的问题,并且可以被确认或复现时,维护者会将该讨论转换为 Issue。
  4. 用户无需额外工作: 发现有效问题的用户无需额外工作,维护者会负责将讨论转换为 Issue。

补充说明:

  • 更多详细信息请参考项目的 CONTRIBUTING.md 文件。
  • 该机制旨在方便维护者和贡献者更容易地找到可以处理的 issue,因为每个 issue 都已明确定义,可以直接开始工作。

总而言之,Ghostty 采用 Discussion 作为讨论和功能请求的平台,Issue 跟踪器则用于记录已经明确、可执行的问题,以提高项目维护效率。

Cameras and Lenses (2020)

相机和镜头:从原理到实践 (Cameras and Lenses: From Principles to Practice)

2020年12月7日

图片一直是人类经验中重要的一部分。从最早的洞穴壁画到素描和绘画,再到现代摄影,我们已经掌握了记录我们所见事物的方法。

本文旨在解释相机的工作原理,以及调整一些可调参数如何产生不同的效果。

记录光线

在数字时代之前,照片是通过银 halides 晶体覆盖的胶片拍摄的。这些化合物对光敏感,受光后会形成金属银颗粒,可以通过进一步的化学过程进行显影。

现代相机使用图像传感器,由光电探测器网格组成。光电探测器将光子转换为可测量的电流——更多的光子撞击探测器,信号越高。

颜色记录: 光电探测器本身只测量总强度,因此最初会产生黑白图像。为了记录颜色信息,需要将入射光子分成不同的组。通过在探测器顶部放置微小的滤色片,可以分别接受红、绿或蓝光。这种滤色片排列,如贝叶过滤器(Bayer filter),利用绿色光与感知亮度的相关性,使用两个绿色的滤镜,一个红色的滤镜和一个蓝色的滤镜。

重构颜色: 捕获 RGB 值后,需要进行重采样(demosaicing)以重建完整的颜色信息。

快门速度: 收集光子的时间称为快门速度或曝光时间。时间越长,图像越亮;时间过长则图像曝光过度。

从黑暗到图像:针孔相机

在没有外壳的情况下,传感器暴露在整个环境中,每个像素都暴露于整个环境的光线下。 为了获得可辨别的图像,需要限制影响给定像素的方向。

针孔相机: 将传感器放入带一个小孔的盒子中,就形成了针孔相机。 小孔限制了光线的方向,使图像倒置。通过调整孔的大小和距离,可以改变视野。

光线传播: 小孔越大,光线传播越广,图像越模糊。 小孔越小,光线传播越窄,图像越清晰,但接收的光子数量也越少。

视场和光圈: 孔的位置决定了视野,孔径大小影响图像的亮度。孔径越小,图像越暗,但景深越大。

余弦定律: 由于像素到孔的距离和角度不同,导致图像边缘出现变暗现象,即自然暗角(natural vignetting)。

光学元件:镜头

玻璃的折射: 光线通过玻璃时会发生折射,角度会发生改变,这是因为光在玻璃中的传播速度比在空气中慢。

波动性: 光的波动性导致了光的色散现象,不同波长的光会聚焦在不同的位置,产生色差(chromatic aberration)。

透镜: 通过改变玻璃表面的角度,可以使光线汇聚在一点上,形成清晰的图像。

像差: 现实中,透镜存在各种像差,例如球差、彗差、散焦等,会影响图像质量。

光圈和景深: 光圈大小影响图像的亮度、景深和散景效果。

总结

本文主要介绍了相机的工作原理,从光线记录到图像形成,以及各种光学现象和挑战。通过了解这些原理,可以更好地理解摄影技术,并创作出更优秀的作品。

A website to destroy all websites

互联网的灵魂争夺战:如何构建我们想要的互联网 (互联网的灵魂争夺战:如何构建我们想要的互联网)

这篇文章探讨了互联网的现状以及如何重塑它,使其更符合人类的意愿和需求。文章主要观点如下:

一、互联网的困境 (互联网的困境)

如今,互联网带来的体验往往令人沮丧。曾经充满无限可能、鼓励自我探索和社区建设的广阔数字领域,现在却沦为“注意力农场”,充斥着令人心智麻木的内容,消耗着用户的时间和精力。用户不再利用互联网来提升自我,而是沉溺于无意义的浏览和信息碎片化。曾经丰富多彩的教育博客、论坛和维基百科逐渐消失,取而代之的是广告轰炸和简短、粗糙的视频内容。社交网络也从充满活力、手工艺般的社区演变为以获取关注为目的的平台,将用户变成了内容生产者,失去了原本的亲密感和社区归属感。

二、汽车工业的教训 (汽车工业的教训)

文章借鉴了汽车工业的发展历程,指出技术发展通常经历两个阶段:首先是技术的引入和普及,带来积极影响;随后是技术的工业化和大规模应用,导致社会为了适应技术而改变,反而带来负面影响。就像汽车最初是个人自由和便捷的工具,但随着工业化进程,社会开始为汽车的基础设施建设和维护而付出代价,并形成了对汽车的依赖性。

三、伊利希的“共识工具” (伊利希的“共识工具”)

文章引用了技术哲学家伊利希的“共识工具”概念,指出技术工具最初是为了增强人类的自主性和创造力而设计的,但随着工业化和垄断,它们逐渐控制和奴役社会。他提出了“激进垄断”的概念,即技术工具变得如此普及,以至于人们必须成为其用户才能融入社会。

四、我们想要的互联网 (我们想要的互联网)

文章呼吁重新定义互联网的使用方式,强调“个人网站”的重要性。个人网站具有自主性、可控性、可定制性,能够真正实现用户对数字内容的拥有和表达。文章建议:

  • 从小处着手: 鼓励用户从简单的HTML开始,自由尝试,记录成长。
  • 降低发布门槛: 避免过度依赖复杂工具和框架,专注于内容创作。
  • 不必过于追求设计: 除非对设计充满热情,否则可以先专注于内容本身。
  • 利用IndieWeb协议: 采用IndieWeb等协议,实现内容在不同平台之间的互联互通。
  • 分享你的作品: 鼓励用户在personalsit.es等社区分享自己的个人网站。

五、总结 (总结)

文章认为,重塑互联网的关键在于回归个人网站,利用自主、开放和可定制的工具,构建一个真正服务于人类的数字世界。最终,文章呼吁用户摆脱对大型平台的依赖,重新掌控自己的数字身份和创造力,为构建一个更美好的互联网贡献力量。

总而言之,文章表达了对当前互联网现状的担忧,并倡导一种更人性化、更自主的互联网发展模式,鼓励用户积极参与到互联网的重塑过程中。

Happy Public Domain Day 2026

2026 年公共版权作品:一场知识盛宴!

每年的一月一日,公共版权日到来之际,书籍、图像、电影和音乐作品纷纷脱离版权的束缚,进入公共领域,为我们带来一场知识和文化的盛宴!今年,我们欢迎华莱士·斯蒂文斯、托马斯·曼、汉娜·阿伦特和阿尔伯特·爱因斯坦等人的作品进入公共领域。在美国,威廉·福克纳的《当我死了以后》、兰斯顿·休斯的《笑声中》、阿加莎·克里斯蒂的《牧师的谋杀案》以及罗伯特·穆西尔的《没有品质的人》和赫尔曼·黑塞的《纳西索斯与戈尔德蒙德》等经典作品也进入公共领域。

由于世界各国版权法律的差异,不存在单一的公共版权体系。主要有三种版权期限体系,适用于历史作品:

  • 人寿加 70 年:适用于英国、欧盟大部分国家和南美洲等国家,今年迎来 1955 年去世的人士作品进入公共领域。
  • 人寿加 50 年:适用于非洲和亚洲的大部分国家,今年迎来 1975 年去世的人士作品进入公共领域。
  • 自出版之日起 95 年:适用于美国,今年迎来 1930 年出版的电影和书籍(包括其中收录的艺术作品)进入公共领域。

此前,公共版权评论网站发布了倒计时日历,逐日揭示了今年公共版权作品的亮点。现在,我们将其整理成一份更易于阅读的清单,供大家尽情浏览。

美国公共版权作品

威廉·福克纳——《当我死了以后》

《当我死了以后》是美国作家威廉·福克纳的南方哥特小说,被誉为 20 世纪最佳小说之一。书名源于威廉·马里斯对荷马《奥德赛》的翻译,两者在主题上存在相似之处。小说讲述了艾迪·班德伦去世及其贫困的家庭为了完成她遗愿,将她安葬在密西西比州杰斐逊小镇的旅程,以及他们旅途中表现出的崇高或自私的动机。小说运用意识流写作技巧,章节长短不一,由 15 个不同角色在 59 个章节中叙述。

福克纳表示,他在六周内连续工作六周,每天从午夜到凌晨 4 点写小说,并且没有修改任何内容。白天,他在密西西比大学发电厂铲煤或指导其他工人,剩余的四个小时则在没有横线的牛皮纸上书写他的手稿。《当我死了以后》代表了南方文艺复兴的先驱,反思了日常生活中的存在、存在等形而上学问题,并帮助巩固了福克纳作为意识流写作的先驱者的声誉,与詹姆斯·乔伊斯和弗吉尼亚·伍尔夫齐名。

阿瑟·兰斯洛特·兰索姆——《天鹅绒与亚马逊》

《天鹅绒与亚马逊》是英国作家阿瑟·兰斯洛特·兰索姆的儿童冒险小说,是《天鹅绒与亚马逊》系列的开篇之作。故事发生在 1929 年夏天,英格兰湖区,讲述了两个家庭的孩子们的户外冒险和游戏,包括航行、露营、钓鱼、探索和海盗活动。沃克家的约翰、苏珊、蒂蒂和罗杰在湖边农场度假,他们划着借来的小船“天鹅绒”,遇到了布莱克特家的南希和佩吉,她们的小船名为“亚马逊”。孩子们决定联手对抗布莱克特叔叔吉姆·特纳(他们称他为“船长弗林特”),开启了一段冒险之旅。

南安·谢泼德——《风中小屋》

《风中小屋》是苏格兰现代主义作家南安·谢泼德的第二部小说,讲述了发生在小乡村社区中人们之间的互动。它属于伟大的苏格兰小说传统,特别是关于女性社区—— mothers, daughters, spinsters and widows——的复杂而有趣的网络。它也是对真相的本质、人类渴望的力量以及存在的神秘的深刻思考。

兰斯顿·休斯——《笑声中》

《笑声中》是兰斯顿·休斯的第一部小说,他是美国作家、

Finland detains ship and its crew after critical undersea cable damaged

芬兰扣押船只,调查海底电缆损毁事件

芬兰当局周三宣布扣押了一艘名为Fitburg的货船及其14名船员,原因是这艘船被怀疑对连接芬兰和爱沙尼亚的关键海底电信电缆造成了损害。

事件概要:

  • 船只信息: Fitburg 注册于圣文森特和格林纳丁斯,由俄罗斯圣彼得堡出发,原定前往以色列海法。
  • 损害地点: 损害发生在爱沙尼亚领海内,但船只在芬兰领海内被发现,船锚链已降入水中。
  • 船员国籍: 船员来自俄罗斯、格鲁吉亚、哈萨克斯坦和阿塞拜疆。
  • 调查指控: 芬兰警方正在调查涉嫌重罪故意损坏、试图重罪故意损坏以及干扰电信等罪名。
  • 扣押方式: 芬兰警方特警队和海岸警卫队从直升机上实施了对船只的扣押。

电缆损害及影响:

  • 受损电缆: 受损电缆连接芬兰首都赫尔辛基和爱沙尼亚首都塔林。
  • 故障检测: 芬兰电信运营商 Elisa 检测到电缆出现故障。
  • 备用方案: 爱沙尼亚表示,通过其他海底和陆地电缆,其连接仍然得到充分备份,确保所有服务的连续性。
  • 第二根电缆受损: 隶属于瑞典公司Arelion 的第二根电缆也受到了损害。

背景及疑虑:

  • 事件频率增加: 自2023年以来,波罗的海海底电缆被切断或损坏的事件日益增多。
  • 潜在原因: 北欧、波罗的海国家和欧盟的一些官员指责俄罗斯,认为这些事件可能是克里姆林宫混合战的一部分。
  • 俄罗斯的回应: 俄罗斯否认参与,但过去造成海底基础设施损害的船只曾被发现与俄罗斯存在联系。
  • 类似事件: 去年,一艘注册于库克群岛的船只 (Eagle-S) 拖拽其船锚在海底拖行超过50英里,导致波罗的海电力电缆和多根数据电缆受损。芬兰后来指控了该船的船员,但赫尔辛基法院后来裁定芬兰对该事件没有管辖权。

后续行动:

  • 芬兰总统: 芬兰总统亚历山大·斯图布表示,政府密切关注局势,并表示芬兰已做好应对各种安全挑战的准备。
  • 芬兰总理: 芬兰总理佩特里·奥尔波与爱沙尼亚总理克里斯滕·米哈尔进行了通话,两国正在就此问题进行合作。
  • 北约行动: 鉴于此类事件的增加,北约今年早些时候启动了一个项目,旨在加强对关键海底基础设施的保护。

总之,芬兰扣押了Fitburg货船,正在调查其对芬兰-爱沙尼亚海底电缆的损害,这引发了对潜在破坏和俄罗斯可能参与的担忧,并突显了保护关键海底基础设施的重要性。

Can Bundler be as fast as uv?

Bundler 性能提升:借鉴 uv 的经验 (Bundler Performance Improvement: Learning from uv)

本文探讨了如何提升 Bundler 的性能,使其达到与 uv 相似的速度。作者受到 RailsWorld 上的一位开发者提问的启发,开始研究 Bundler 性能瓶颈,并发表了相关演讲。文章主要基于 Andrew Nesbitt 的文章 "How uv got so fast",并结合 RubyGems 的实际情况进行分析。

核心观点:

  • Bundler 确实有潜力达到与 uv 相当的性能,关键在于消除现有的瓶颈,而非简单地将其重写为 Rust 语言。
  • 即使重写为 Rust,其性能提升也可能源于设计决策而非语言本身。
  • 借鉴 uv 的优化策略,如并行下载、全局缓存、硬链接以及更高效的版本解析,有望显著提升 Bundler 的速度。

关键点:

  1. 避免 eval Python 包的依赖解析曾需要执行代码,但 RubyGems 通过 GemSpec YAML 文件和 RubyGems.org API 避免了这一问题。
  2. 借鉴 uv 的设计: uv 忽略 Python 版本上限,只检查下限,减少了解析过程中的回溯。Bundler 也可以借鉴这一策略,优化 Ruby 版本检查。
  3. 优化下载和安装: Bundler 当前将下载和安装紧密耦合,导致并行下载受限。作者建议解耦这两步,允许并行下载纯 Ruby gem,并采用硬链接技术优化安装过程。
  4. 全局缓存和硬链接: 建议统一 Bundler 和 RubyGems 的全局缓存,并采用硬链接技术,避免重复安装 gem。
  5. 版本解析: Bundler 目前使用不同的解析器 (PubGrub vs. molinillo),作者建议统一使用 PubGrub,并采用类似 uv 的版本编码方案,提升解析效率。
  6. Rust 的作用: Rust 语言的优势在于其性能和自由度,但并非 Bundler 性能提升的必要条件。通过优化 Ruby 代码,同样可以实现显著的性能提升。
  7. 并行下载的实现: 作者通过搭建一个慢速 Gem 服务器,对比了串行和并行安装 gem 的性能差异,证明了并行下载的有效性。

总结:

文章认为,Bundler 性能提升的关键在于借鉴 uv 的设计理念,消除现有瓶颈,而非简单地重写为 Rust 语言。通过优化下载、安装、缓存和版本解析等环节,Bundler 可以达到与 uv 相当的性能水平,从而提升 Ruby 项目的构建速度。作者计划在后续文章中深入探讨 Bundler 和 RubyGems 的性能瓶颈,并提供更具体的优化方案。

A confession from a mainstream food delivery app engineer

揭露:算法操控与司机剥削的内幕 (Jiē lù: Suànfǎ Cāokòng yǔ Shījī Bōxié de Nèimù - Exposing: Algorithmic Manipulation and Driver Exploitation)

这是一篇匿名爆料,由一名已离职的后端工程师撰写,揭示了某公司(可能是外卖或类似服务)的算法操控和对司机的不公正待遇。以下是核心内容的总结:

1. 虚假的“优先配送” (Xūjiǎ de “Yōuxiān Pèisòng” - False "Priority Delivery")

  • 用户支付的额外费用(例如$2.99的“优先配送”)仅仅是在订单JSON中更改一个布尔值,实际的调度逻辑会忽略这个标记。
  • 为了让“优先配送”显得更快,公司曾进行A/B测试,故意延迟非优先订单5-10分钟,以此制造心理上的差异感。

2. “绝望分数” (Juéwàng Fēnshù - "Desperation Score")

  • 公司使用一个隐藏的“绝望分数”指标来评估司机对金钱的迫切程度,依据其接受订单的行为。
  • 如果司机频繁接受低价订单,会被标记为“高绝望”。
  • 一旦被标记,系统会减少向该司机展示高价订单的机会,以降低成本。 算法认为,如果司机足够绝望,愿意接受低价订单,就无需支付更高的费用。
  • 这种做法将高频司机压榨至极限,而将高报酬和奖励留给“休闲”司机,以实现游戏化效果。

3. “法规响应费”/“司机福利费” ( “Fǎlǜ Xiǎngyìng Fèi” / “Shījī Fúlì Fèi” - "Regulatory Response Fee" / "Driver Benefits Fee")

  • 用户账单上出现的$1.50的费用,被宣传为用于支持司机福利或应对法规变化。
  • 实际上,这笔费用被直接汇入公司内部的“政策防御”成本中心,用于支付律师费,以对抗司机工会。 用户付费实际上是资助公司阻止司机权益的提升。

4. 小费操控 (Xiǎofēi Cāokòng - Tip Manipulation)

  • 公司使用预测模型动态调整订单的基础工资。
  • 如果算法预测用户是“高小费”用户,司机的基础工资会显著降低。
  • 如果用户没有小费,基础工资会提高,但整体结果是小费并没有真正奖励司机,而是补贴了公司,用户实际上在支付司机的工资。

总而言之, 这篇爆料揭示了该公司利用算法操纵用户和司机,以追求利润最大化的手段。 通过虚假宣传、延迟服务、隐藏指标和操控价格,该公司在榨取用户资金的同时,也严重剥削了司机,使其陷入困境。 工程师离职并公开此事,表达了对这种不道德行为的强烈不满。

Dell's version of the DGX Spark fixes pain points

戴尔 GB10 迷你工作站评测:面向 Nvidia 开发者的利器?

本文评测了戴尔发来的两台 GB10 迷你工作站中的一台 (另一台用于集群测试,将在后续进行更深入的测试)。文章着重介绍了基础系统,并探讨了其定位和适用人群。

核心观点:

  • 定位: GB10 并非旨在与 Mac mini 竞争,亦非用于大型 LLM 的性价比之选,而是专为 Nvidia 生态系统中的开发者设计,用于部署成本高达五十万美元的 Nvidia 服务器上的代码。
  • 改进: 相较于 DGX Spark,GB10 解决了其一些痛点,包括增加了电源指示灯、提升了电源功率(280W)以及优化了散热设计 (前到后风道),降低了噪音并减少了 GPU 降频现象。
  • 关键特性: 内置 200Gbps QSFP 端口是 GB10 的重要卖点,可以实现高达 200Gbps 的 Infiniband/RDMA 速度,或超过 100Gbps 的以太网速度。这些端口的成本通常需要 1500 美元才能额外添加。

硬件与性能:

  • CPU: GB10 采用 Mediatek 联合设计的大.小 (big.LITTLE) Arm 架构 CPU,包含 10 个 Cortex-X925 核心和 10 个 Cortex-A725 核心,与 Blackwell GPU 和 128GB LPDDR5X 内存共享。CPU 性能表现不错。
  • 功耗: 系统空载功耗较高,约为 30 瓦,高于 Apple M3 Ultra 或 AMD Ryzen AI Max+ 395。CPU 功耗最高可达 140 瓦。
  • 基准测试:
    • Geekbench 6 性能与 AMD Ryzen AI Max+ 395 相当。
    • High Performance Linpack (FP64) 性能约为 675 Gflops,效率较高。
    • 网络测试中,通过 200Gbps 端口的 TCP 性能约为 106Gbps,实际速度受限于 PCIe Gen 5 x4 链路带宽。
    • Llama.cpp 小模型推理速度接近 Apple M3 Ultra,大型模型推理速度略逊于 AMD Strix Halo。
  • 操作系统: 采用 Nvidia 的 DGX OS,基于 Ubuntu 24.04,但仅提供两年更新支持,长期支持存在不确定性。

其他:

  • 游戏性能: 虽然性能尚可,但 GB10 并非游戏机器,专门用于游戏可能不是最佳选择。
  • 通用 Arm 工作站: GB10 拥有优秀的 Arm CPU 和大量的内存,可以作为通用 Arm Linux 工作站使用。
  • 未来展望: 作者计划在明年分享集群测试结果,包括 AI 模型训练和网络性能对比。

总结:

戴尔 GB10 是一款面向 Nvidia 开发者的利器,尤其适合需要高性能网络和 Arm CPU 的场景。虽然价格较高,但内置的 200Gbps QSFP 端口和强大的 Arm CPU 为其提供了独特的价值。 对于普通用户而言,GB10 并非最佳选择,但对于特定需求的用户来说,它可能是一个不错的选择。

Marmot – A distributed SQLite server with MySQL wire compatible interface

Marmot v2:分布式 SQLite 复制系统

Marmot v2 是一个无领导者、分布式的 SQLite 复制系统,基于 Gossip 协议,支持分布式事务和最终一致性。

主要特性:

  • 无领导者架构: 无单点故障,任何节点都可以接受写入。
  • MySQL 协议兼容: 可以使用任何 MySQL 客户端(DBeaver、MySQL Workbench、mysql CLI)连接。
  • WordPress 兼容: 支持完整的 MySQL 函数,可以运行分布式 WordPress。
  • 分布式事务: 使用 Percolator 风格的写入意图,并具有冲突检测功能。
  • 多数据库支持: 可以在集群中创建和管理多个数据库。
  • DDL 复制: 自动幂等和集群范围内的锁机制,实现分布式模式更改。
  • 生产就绪 SQL 解析器: 基于 rqlite/sql AST 解析器,实现 MySQL → SQLite 转换。
  • CDC 驱动的复制: 基于行级别变更数据捕获,确保一致的复制。

为什么选择 Marmot?

Marmot 旨在解决传统 MySQL 主/备复制的复杂性问题。 MySQL 主/备复制需要精细的配置、冲突避免和监控,故障转移需要手动干预,并且容易出现脑裂情况。 这些复杂性不适用于边缘部署。

Marmot 的优势:

  • 零运维开销: 通过最终一致性和反熵机制自动从脑裂中恢复。
  • 无领导者选举: 任何节点都可以接受写入,无需故障转移协调。
  • 直接 SQLite 访问: 客户端可以直接读取本地 SQLite 文件,以获得最大性能。
  • 可调一致性: 可以根据延迟和持久性需求选择 ONE/QUORUM/ALL。

理想用例:

Marmot 适用于 读密集型边缘场景,例如:

  • 分布式 WordPress: 多区域 WordPress,数据库复制。
  • Lambda/边缘侧车: 轻量级区域性 SQLite 副本,本地读取。
  • 边缘向量数据库: 分布式嵌入,本地查询。
  • 区域配置服务器: 快速本地配置读取,复制写入。
  • 产品目录: 地理分布式目录数据,最终同步。

替代方案考虑:

  • 需要强序列化: 考虑 CockroachDB、Spanner。
  • 单区域高吞吐量: 考虑 PostgreSQL、MySQL。
  • 大数据集(>100GB): 考虑分片解决方案。

快速开始:

  • ./marmot-v2 启动单节点集群。
  • mysql -h localhost -P 3306 -u root 使用 MySQL 客户端连接。

WordPress 支持:

Marmot 可以运行 分布式 WordPress,数据库在节点之间自动复制。 每个 WordPress 实例连接到其本地 Marmot 节点,所有数据库更改都会自动复制。

MySQL 兼容性(WordPress):

Marmot 实现 WordPress 需要的 MySQL 函数,包括日期/时间、字符串、数学/哈希、DML 等。 支持 ON DUPLICATE KEY UPDATE (转换为 SQLite ON CONFLICT)。

生产注意事项(WordPress):

  • 媒体上传: 使用 S3/NFS 进行共享媒体存储(文件不复制)。
  • 会话: 使用 Redis 或数据库会话,实现无粘性会话负载均衡。
  • 缓存: 每个节点可以使用本地对象缓存(Redis/Memcached)。

架构:

Marmot v2 的架构与其它 SQLite 复制解决方案不同:

  • 与 rqlite/dqlite/LiteFS 相比: Marmot 允许在 任何节点 上写入,而它们需要主节点。 Marmot 使用 Gossip 协议(无领导者),而它们使用 Raft。 Marmot 使用 MySQL 协议,而它们需要代理层或页面级别拦截。
  • 工作原理: 2PC(两阶段提交)协调写入,配置一致性(ONE、QUORUM、ALL)。 LWW(最后写入者胜出)检测冲突。 SWIM 风格的 Gossip 用于集群成员管理。 全数据库复制。

DDL 复制:

Marmot v2 支持分布式 DDL 复制,无需主节点选举:

  • 集群范围内的锁: 每个 DDL 操作获取数据库级别的分布式锁。
  • 自动幂等性: DDL 语句自动重写,安全回