2025-12-21

15 篇热帖

Backing Up Spotify

安娜档案馆备份了Spotify,以供永久保存 (Anna’s Archive Backed Up Spotify for Permanent Preservation)

安娜档案馆 (Anna’s Archive) 发布了一项前所未有的项目:备份了 Spotify 的元数据和音乐文件,旨在永久保存人类的音乐文化遗产。这项备份包含大约 300TB 的数据,并通过分发的巨型torrent文件提供,按受欢迎程度分组。

主要特点和细节:

  • 庞大的数据库: 包含 2.56 亿首歌曲的元数据,以及 1.86 亿个唯一的国际标准录音代码 (ISRC)。
  • 全面的覆盖: 备份了大约 8600 万个音乐文件,代表了 Spotify 上听歌量的 99.6%。
  • 开放的档案: 采用完全开放的架构,允许任何人拥有足够的磁盘空间来镜像和分发备份。
  • 优先级排序: 备份优先考虑受欢迎程度高的歌曲,但同时也努力捕捉长尾音乐,这些音乐通常由于缺乏个人关注而难以保存。
  • 质量考虑: 为了可访问性和可保存性,备份采用 160kbit/s 的 OGG Vorbis 格式 (流行歌曲) 和 75kbit/s 的 OGG Opus 格式 (不常听的歌曲)。
  • 时间范围: 截止日期为 2025 年 7 月,之后发布的音乐可能未包含在内。
  • 数据发布阶段: 数据将分阶段发布,包括元数据、音乐文件、额外文件元数据、专辑封面和 .zstdpatch 文件。

项目背景:

安娜档案馆通常专注于文本资料的保存 (书籍、论文等),因为文本具有更高的信息密度。 然而,该组织意识到音乐保存的重要性,并利用一种大规模抓取 Spotify 数据的技术,启动了这一项目。

现有音乐保存工作的局限性:

  • 过度关注流行音乐: 许多现有的音乐保存工作主要集中在最受欢迎的艺术家。
  • 过度追求高质量: 许多爱好者追求最高质量的音频文件 (例如 FLAC),这导致文件体积庞大,难以构建完整的存档。
  • 缺乏权威的 torrent 列表: 目前缺乏一个类似 LibGen 的 torrent 列表,可以汇总所有音乐的 torrent。

数据结构和统计信息:

  • 歌曲: Spotify 拥有约 2.56 亿首歌曲,该备份包含了约 99.9% 的元数据。
  • 流媒体统计: 大约 70% 的歌曲播放量来自 21 万首受欢迎程度在 50-80 之间的歌曲。
  • 艺术家和专辑: 该项目也收集了关于艺术家和专辑的信息,并提供了按流派分类的统计数据。
  • 音频特征: 抓取了 Spotify 提供的音频特征数据,例如节拍、音调和能量。
  • 数据库结构: 元数据存储在 SQLite 数据库中,方便查询和分析。

行动呼吁:

安娜档案馆呼吁社区成员参与到音乐遗产的保护中来:

  • 捐赠: 捐款支持安娜档案馆的运营。
  • 共享: 通过种子 torrent 文件来帮助分发数据。

通过社区的合作,安娜档案馆旨在确保人类的音乐遗产免受自然灾害、战争和预算削减等威胁。

数据探索 (Data Exploration):

  • 流行度分布: 分析了歌曲的流行度分布,揭示了许多歌曲播放量极低。
  • 持续时间: 歌曲的持续时间呈现出明显的峰值。
  • ISRC计数: 分析了 ISRC 计数,揭示了许多歌曲都有多个版本。
  • 真随机播放列表: 该项目提供了一种创建 Spotify 真正的随机播放列表的可能性,涵盖了平台上 99.9% 的歌曲。

未来计划:

  • 允许下载单个文件
  • 持续的数据分析和发布

总而言之,安娜档案馆的项目代表了音乐保存领域的一项重大突破,旨在确保人类的音乐遗产能够得到永久的保护。

Flock and Cyble Inc. weaponize “cybercrime” takedowns to silence critics

Have I Been Flocked? - 执照车牌隐私检查 总结

概述:

Have I Been Flocked? 是一个网站,其主要目的是允许用户查询他们的车牌是否在 Flock 大规模监控数据库中被查询过。 它提供了一个简单的工具来检查个人隐私,特别是与 Flock 监控系统相关的隐私。

主要功能:

  • 车牌查询: 该网站允许用户输入他们的车牌号码,然后查询该车牌是否在 Flock 数据库中被记录过。
  • 隐私检查: 网站的核心功能是帮助用户了解他们的车牌是否被 Flock 系统追踪或查询。

网站信息:

  • 网站名称: Have I Been Flocked?
  • 网址: https://haveibeenflocked.com
  • 组织信息:
    • 名称: Have I Been Flocked?
    • Logo: favicon.svg (尺寸:512x512)
  • 网站描述: 检查您的车牌是否在 Flock 大规模监控数据库中被搜索过。

技术信息 (基于提供的 JSON 数据):

  • Schema.org 结构化数据: 网站使用了 Schema.org 结构化数据来描述网站和组织信息,这有助于搜索引擎更好地理解网站的内容。
  • 上下文 (@context): 使用 https://schema.org 作为上下文,表明使用了 Schema.org 词汇表。
  • 组织 (Organization): 定义了网站的组织信息,包括名称和网址。
  • 网站 (WebSite): 定义了网站本身的信息,包括网址、名称和描述,以及发布者信息(指向组织)。

总而言之,Have I Been Flocked? 网站是一个帮助用户检查其车牌是否被 Flock 大规模监控数据库查询的隐私工具。

Show HN: Jmail – Google Suite for Epstein files

Please provide the content you want me to summarize. I need the text to be able to fulfill your request. Once you provide the content, I will generate a concise, accurate summary in markdown format and Chinese language, adhering to your specified constraints.

Pure Silicon Demo Coding: No CPU, No Memory, Just 4k Gates

Tiny Tapeout 8 演示设计总结 (TT08)

2025年12月19日

除了 VGA甜甜圈 之外,我提交了两个作品参加 Tiny Tapeout 第8届 演示场景竞赛。该竞赛要求参赛者设计一个“微型”ASIC,该ASIC包含约4000个逻辑门,输出2位RGB到VGA端口和1位音频到扬声器。其中一个作品是复古的C64/Amiga风格的介绍,另一个 是Nyan Cat。

"TT08" 介绍

视频不可用

视频循环播放不完美,但硬件循环是无缝的。

该介绍包含一个星空背景,一个彩色瓦片的三维平移棋盘,以及投射阴影的波浪滚动文字。我受到 lft的AVR演示Craft 的启发,在屏幕一侧添加了一个小型的示波器。

该设计受限于两个Tiny Tapeout“瓦片”,这对于音乐、效果和数据来说空间有限。这是一个非常受限的平台:没有ROM,没有RAM,每个状态都是一个触发器,相比组合逻辑,它占用了一定的空间。传统的“大小编码”技巧不适用,因为你无法存储ROM,没有帧缓冲区,所以你必须在每个时钟周期生成一个像素。没有CPU可以利用,只有你自己的状态机。

原型设计

像VGA甜甜圈一样,这个设计使用了1220x480的奇怪自定义视频模式和48MHz的时钟,因为这是在手头 唯一可用的FPGA硬件下原型设计的最佳方式。但事后来看,我非常后悔使用了这种视频模式。大多数数字捕获的演示效果不佳,因为有抖动和失真伪影。但在真实的CRT上看起来很棒!

上述视频是使用Verilator模拟器生成的,该模拟器将Verilog源代码编译为C++,并允许我进行逐个时钟周期的设计模拟,将渲染输出到SDL窗口/音频流。这还允许我将模拟帧转储以创建上述视频。我稍后将使用此 SDL VGA Verilator测试基准 用于其他项目。

C++模拟器在我的系统上运行速度约为半实时,我通常会将其综合到OrangeCrab的Lattice ECP5 FPGA上,并连接到由R-2R DAC(每个通道两比特,即R和2R,没有阶梯,用于RGB)组装在万用板上的丑陋设备上。

原型VGA FPGA板

OrangeCrab FPGA和我的RGB222 VGA连接器

声音通过RC滤波器输出到单个引脚。大多数人使用某种PWM,但我在实践中使用了更简单的Sigma-Delta转换(尽管存在一些权衡;见下文)。我将音频电缆焊接到OrangeCrab的第13脚,然后将其插入便携式吉他放大器中。

为了在RGB222中获得更好的色彩保真度,我使用了 有序抖动代码,与甜甜圈中使用的相同。

Skywater 130nm的综合

Tiny Tapeout提供了一个基本的工作流程,用于获取你的Verilog设计并“硬化”它——生成GDS文件(用于制造的格式)——作为一个提交时的GitHub操作,但也有一个 本地硬化 工具,这对于我反复添加元素到演示并优化以使其适合的情况来说至关重要:要么单元格数量过多,无法适应面积,要么它们可以适应,但连接它们之间的电线路由会失败(有时需要一个小时或更长时间)。能够在自己的PC上进行多次实验非常宝贵。

![ASIC布局](/

Claude in Chrome

Claude 在浏览器中工作:摘要

Claude 现在可以在您的浏览器中运行,具备导航、点击按钮和填写表格的能力。这项功能适用于 Claude Code 和 Claude Desktop 用户,目前处于测试阶段,所有付费订阅者均可使用。

主要功能与应用:

  • 与 Claude Code 集成: 开发者可以利用 Claude 在 Chrome 中进行代码构建和测试,加速浏览器项目迭代。
  • 日常工具集成: 将 Claude 集成到日常工作流程中,优化应用体验,无需离开浏览器。
  • 后台任务执行: Claude 可以在后台完成任务,让您专注于其他工作。
  • 定时工作流: 可以设置每日或每周的报告、更新和检查,无需手动触发。
  • 具体应用案例:
    • 分析仪表板:提取数据并生成摘要报告。
    • Google Drive:整理文件、创建文件夹结构、查找重复文件。
    • 日历和邮件:标记需要准备的会议、预订会议室。
    • 产品规格对比:从多个产品页面提取数据,生成 Google Sheets 比较表。
    • CRM 集成:自动记录通话内容并创建 Salesforce 联系人记录。
    • 邮件整理:识别营销邮件、新闻简报和自动通知,方便批量删除。

使用注意事项与安全提示:

  • 权限授予: 仅向您信任的网站授予权限,并学习 Claude 的工作方式。
  • 行动确认: 在 Claude 处理财务、个人或工作关键任务前,务必确认。
  • 风险提示: 浏览器 AI 存在安全风险,例如恶意提示注入攻击,可能导致 Claude 执行意外操作。Claude 可能会产生幻觉,导致您没有预期的行为。
  • 风险缓解: 了解并阅读有关风险的文档,并提供反馈以帮助改进安全机制。
  • 避免敏感操作: 避免使用 Claude 进行财务交易、密码管理或涉及敏感个人数据。
  • 预先批准: 在开始工作前,预先批准 Claude 在网站上采取的行动,并密切监督。

技术细节:

  • Claude 在 Chrome 中作为 Google 扩展程序运行。
  • 使用 Google API 的信息将遵守 Chrome Web Store 用户数据政策,包括有限使用要求。
  • Claude Desktop 用户可以通过启用 Chrome 连接器,在浏览器中执行任务。

总而言之,Claude 在浏览器中的工作为用户提供了强大的自动化工具,但同时也伴随着安全风险。在使用时务必谨慎,并遵循安全提示,以确保安全可靠的使用体验。

Over 40% of deceased drivers in vehicle crashes test positive for THC: Study

研究总结:驾驶员致命车祸中THC阳性率高,且未因大麻合法化而改变

核心内容:

一项研究表明,在俄亥俄州蒙哥马利县2019年1月至2024年9月期间发生的致命车祸中,超过40%的驾驶员在检测中呈现出活性delta-9-四氢大麻酚 (THC) 阳性。该研究结果强调了大麻合法化后仍然存在的显著且持续的公共卫生风险。

研究方法:

研究人员分析了蒙哥马利县的验尸记录,重点关注了246名在致命车祸后接受THC检测的死亡驾驶员。研究期间包括俄亥俄州于2023年合法化娱乐用大麻。

主要发现:

  • 高阳性率: 总共有103名驾驶员(41.9%)检测出THC阳性,年度阳性率在25.7%到48.9%之间。
  • 大麻合法化无显著影响: 大麻合法化前后,检测出THC阳性的驾驶员比例没有显著变化 (42.1% vs. 45.2%),表明大麻合法化并未影响那些选择在吸食后驾驶的人的行为。
  • 时间趋势稳定: 在为期六年的研究期间,THC阳性率保持在较高水平,没有显著变化。
  • 平均THC水平: 驾驶员的平均血液THC水平为30.7 ng/mL,远高于大多数州设定的驾驶合法限值 (通常为2-5 ng/mL)。研究作者认为,该水平表明驾驶员在驾驶前不久吸食了大麻。

研究结论与建议:

研究作者认为,虽然公众对娱乐用大麻合法化的关注度很高,但对于其潜在的公共卫生风险(例如驾驶时吸食大麻的危险)的重视不足。他们建议人们将吸食大麻与饮酒一样对待:不要吸食后驾驶。

研究信息:

  • 研究地点: 俄亥俄州蒙哥马利县
  • 研究时间: 2019年1月至2024年9月
  • 研究对象: 246名在致命车祸中死亡的驾驶员
  • 研究呈现: 美国外科医师学院(ACS)临床大会2025 (Clinical Congress 2025) 科学论坛
  • 作者: Akpofure P. Ekeh, MBBS, FACS 等

声明: 该研究以摘要形式在ACS临床大会科学论坛上发表,尚未经过同行评审。

OpenSCAD is kinda neat

OpenSCAD 电池盒生成器总结 (Summary of OpenSCAD Battery Holder Generator)

这篇文章描述了作者使用 OpenSCAD 创建一个简单的 AA 和 AAA 电池盒的过程。作者之前在 Autodesk Fusion 360 中设计过类似的电池盒,并将其上传到 Printables。为了学习 OpenSCAD 的基础知识,作者决定用 OpenSCAD 重新实现这个设计。

核心要点:

  • OpenSCAD 功能: OpenSCAD 是一种基于代码的 CAD 工具,用户通过编写代码来生成 3D 模型。
  • 设计目标: 设计一个参数化的电池盒,通过修改参数 (numRows, numColumns, batteryType) 可以定制电池盒的大小和布局。
  • 代码结构: 代码主要由两个部分组成:
    • cube([lengthBox, widthBox, depthBox]): 创建一个主盒子,作为电池盒的整体框架。
    • difference() { ... }: 使用差集运算,从主盒子中减去电池孔。
      • 嵌套循环 for (c = [ 1 : numColumns ]) for (r = [ 1 : numRows ]): 迭代生成每个电池孔的位置。
      • translate([startColumn, startRow, thicknessWall]) cube([batteryType, batteryType, heightCompartment + 1]): 在计算出的位置创建并移动一个立方体,作为电池孔。
  • 关键参数:
    • AA = 15: AA 电池宽度 (mm)。
    • AAA = 11: AAA 电池宽度 (mm)。
    • heightCompartment = 19: 电池隔间高度 (mm)。
    • thicknessWall = 1: 盒壁厚度 (mm)。
    • numRows = 4: 电池行数。
    • numColumns = 10: 电池列数。
    • batteryType = AA: 电池类型 (AA 或 AAA)。
  • 代码链接: 完整的 OpenSCAD 代码可以在 https://nuxx.net/files/3d%5Fprinting/battery%5Fholder%5Fgenerator.scad 找到。
  • 输出结果: 生成的 3D 模型可以直接导入切片软件 (slicer) 进行打印,无需使用昂贵的 CAD 软件。
  • 作者的困惑: 作者对 let() 在循环中定义变量的使用方式感到困惑。
  • 潜在用途: 作者认为这种简单的方法对于创建轴承垫圈、垫片和其他简单的几何形状非常有用。

总结:

该文章展示了如何使用 OpenSCAD 编写简单代码来生成一个参数化的电池盒。 这种方法简洁高效,可以灵活地定制电池盒的尺寸和布局,并且适用于创建其他简单的 3D 几何形状。

Ireland’s Diarmuid Early wins world Microsoft Excel title

微软 Excel 世界冠军:爱尔兰选手 Diarmuid Early 登顶

2025 年,爱尔兰选手 Diarmuid Early 在拉斯维加斯 HyperX 竞技场上,在戏剧性的音乐和盛大的宣传下,成功夺得了微软 Excel 世界锦标赛的冠军头衔,取代了三届冠军 Andrew Ngai。他被誉为“Excel 表格的勒布朗·詹姆斯”,赢得了高达 6 万美元的奖金和冠军腰带。

赛事盛况与竞争激烈

本次世界锦标赛吸引了来自全球的 256 名 Excel 爱好者参与,经过多轮淘汰赛,最终决出了 24 名选手在拉斯维加斯角逐冠军。Diarmuid 描述了决赛的紧张氛围,尽管平时在家里练习较为平静,但来到拉斯维加斯后,现场气氛火爆,观众欢呼声震天。 决赛采用计时淘汰制,每五分钟淘汰一名垫底选手,选手们需要在高压环境下迅速做出判断和操作。

Excel 电竞是什么?

Excel 电竞将常见的办公工具变成一项充满活力的竞技运动。这项赛事起源于金融领域,如今已扩展到更广泛的问题解决领域,无需金融或会计知识。比赛通常为 30 分钟,分为多个难度递增的关卡。选手通过快速、准确地完成任务来获得积分,先完成的选手获胜。比赛考验选手在 Excel 中快速思考和解决问题的能力。

Diarmuid Early 的职业生涯与未来

Diarmuid 目前居住在纽约,并创办了自己的金融公司。他的 Excel 技能得到了客户的认可,许多人主动联系他寻求合作。 他在 YouTube 上分享 Excel 教程和实时解题过程。

他被投资者商业日报誉为“Excel 表格的勒布朗·詹姆斯”,并对这一称号表示乐于其中的喜剧色彩,认为这可能与他身高有关。

社区与参与

Excel 电竞社区十分活跃,Diarmuid 表示经常收到来自希望加入该领域的人的帮助请求,并积极参与到社区中。 2026 年 1 月 22 日将举行首届“通往拉斯维加斯之战”,欢迎所有 Excel 爱好者报名参加。

Why do people leave comments on OpenBenches?

OpenBenches 项目:纪念长椅上的意外情感连接

本文讲述了作者及其妻子 Liz 运营的 OpenBenches 项目 的经历。该项目是一个众包平台,收集来自世界各地的纪念长椅信息,用户上传带有地理位置标记的长椅照片和相关信息。迄今为止,该项目已经收录了大约三万九千多座长椅。

项目初期设计与实际使用:

最初,作者期望用户主要在评论区提供长椅信息更新,例如铭文错误或长椅位置变动等。然而,实际情况与预期大相径庭。

评论区的使用情况:

用户在 OpenBenches 网站的评论区表达了各种各样的情感和想法,主要可以归纳为以下几类:

  • 询问更多关于被纪念者的信息: 用户希望了解被纪念者的生平事迹,例如家族关系、职业成就等。
  • 感谢设立长椅的人: 用户感谢那些资助或设立长椅的人,表达对长椅带来的安宁和舒适的感激。
  • 表达被长椅触动的情感: 用户分享因长椅而引发的感伤、思念和哀悼之情。
  • 表达悲痛之情: 用户表达对失去亲人的深切悲痛和思念。
  • 感谢照片上传者: 用户感谢上传照片的人,特别是当照片能够帮助他们找到亲人的纪念长椅时。
  • 向被纪念者表达爱与思念: 即使不认识被纪念者,用户也希望通过评论表达对他们的爱与思念,并祝愿他们被永远铭记。
  • 简单表达赞赏: 用户简单地表达对长椅或相关信息的赞赏。

项目特点与数据保护:

  • 预先审核评论: 为了遵守《在线安全法案》并防止垃圾信息,所有评论都经过预先审核。
  • 自托管评论系统: 使用 Commentics 系统自托管评论,避免将用户数据发送到第三方服务器,从而降低 GDPR 风险。
  • 社区连接: 评论区形成了意想不到的社区连接,人们通过长椅分享情感,表达对逝者的思念,体现了对人生的理解和对未来的希望。

作者认为,OpenBenches 项目展现了 Web 2.0 的价值,即通过提供一个共享空间,激发人们之间产生情感连接和社区互动。

可以访问 OpenBenches.org 查看所有评论。

You have reached the end of the internet (2006)

互联网终点总结 (Summary of the Internet's End)

这是一篇幽默诙谐的页面内容,自称是互联网的终点。其主要内容可以概括如下:

  • 声明终结: 页面明确表示这是互联网的最后一页,最后一台服务器的尽头,意味着用户已经浏览完了互联网的所有内容。
  • 建议行动: 页面建议用户关闭电脑,并进行一些有意义的离线活动,例如阅读书籍、参与公益活动、与邻居交流、种植树木或与家人互动。
  • 幽默警告: 页面以玩笑的方式提醒用户在离开时关掉灯。
  • 假装下载: 页面最后以一个动图(downloadwww.gif)模拟下载互联网到本地硬盘的过程,进一步增添了幽默感。

总结: 该页面并非真的互联网的终点,而是一个旨在幽默地提醒用户放下网络,回归现实生活,并进行有益的离线活动的信息页面。 其目的在于鼓励用户平衡网络使用与现实生活。

Measuring AI Ability to Complete Long Tasks

AI 能力提升:任务完成长度呈指数级增长

摘要: 这篇论文研究了人工智能 (AI) 性能的衡量方式,并提出使用 AI 代理能够完成的任务 长度 作为衡量标准。研究发现,过去 6 年中,该指标呈现出持续的指数级增长趋势,大约每 7 个月翻倍一次。如果这种趋势持续下去,预计在未来十年内,AI 代理将能够独立完成大量目前需要人类花费数天或数周才能完成的软件任务。

主要发现:

  • 任务长度增长: 研究表明,通用前沿模型代理能够可靠完成的任务长度(以人类专业人士完成任务所需的时间衡量)在过去 6 年中平均每 7 个月翻倍一次。
  • 衡量标准的重要性: 任务长度是一个有用的衡量 AI 能力的指标,因为它反映了 AI 代理在连接更长行动序列方面的挑战,而不仅仅是缺乏解决单个步骤所需的技能或知识。
  • 当前 AI 能力: 尽管在文本预测和知识任务方面,当前前沿 AI 远超人类,但在实际应用中,它们尚不能可靠地完成低技能的计算机工作,例如远程行政助理任务。
  • 未来预测: 如果当前趋势持续,在未来 2-4 年内,AI 将能够完成长达数周的任务,这将带来巨大的机遇和风险。
  • 趋势的稳健性: 即使在绝对测量值存在 10 倍误差的情况下,对未来 AI 能力的预测变化也仅为大约 2 年。
  • 数据验证: 通过对不同任务集(包括短软件任务、HCAST 和 RE-Bench 等)以及基于实际任务的数据集(SWE-Bench Verified)进行分析,验证了该趋势的稳健性。SWE-Bench Verified 显示了更快的翻倍时间,约为 3 个月。

研究方法:

  • 研究人员记录了人类专业人士完成各种软件和推理任务所需的时间。
  • 他们发现人类完成任务所需的时间与模型成功率之间存在很强的相关性。
  • 通过拟合逻辑曲线来预测模型在不同任务长度下的成功概率,并以此确定模型的“时间范围”,即模型以 50% 的概率能够成功完成的任务长度。

结论:

该研究强调了使用任务长度来衡量 AI 性能的重要性和意义,并预测了 AI 能力的快速增长。如果这种指数级增长的趋势持续下去,未来 AI 将能够自主执行更长时间、更复杂的项目,这对于 AI 基准测试、预测和风险管理具有重要意义。

开源资源:

Ruby website redesigned

Ruby 编程语言概要

Ruby 是一种自 1995 年以来广受欢迎的编程语言,以其“让程序员快乐”的设计理念而闻名。

主要特点与优势:

  • 丰富的生态系统: Ruby 拥有庞大的 gems 库(超过 200,000 个),涵盖了从 Web 开发到数据处理等各种开发需求。 结合成熟的框架(如 Rails)和全面的工具链,开发者可以快速构建高质量的应用,无需重复造轮子。
  • 简洁易懂的语法: Ruby 采用简单直观的语法,接近自然语言,减少了复杂符号和冗余代码。这使得它对初学者友好,并且易于维护。
  • 高效开发: Ruby 的表达性语法允许开发者用更少的代码实现更复杂的逻辑。通过元编程和块等特性,可以减少重复代码,专注于解决核心问题。 强大的测试框架保证了代码质量,同时实现快速开发周期。
  • 活跃友好的社区: Ruby 社区秉承“Matz 是友善的,所以我们也是友善的 (MINASWAN)”的文化,欢迎所有水平的开发者。 全球各地的会议和聚会促进知识共享和交流。 社区充满才华和创造力,乐于分享编程的乐趣。

关键人物评价:

  • 松本行弘 (Matz): Ruby 的创造者,表达了对 Ruby 社区蓬勃发展的惊喜和对“让程序员快乐”愿景实现的欣慰。
  • David Heinemeier Hansson: Ruby on Rails 的创造者,认为 Ruby 是他见过的最美丽的编程语言,其设计纯粹无与伦比。
  • Dave Thomas: 《实用程序员》的作者,认为 Ruby 能够快速将想法转化为代码,简洁性使其专注于问题本身,并能快速生成优雅的代码。
  • Amanda Perino: Rails 基金会执行董事,强调 Ruby 社区的温暖和协作精神是其最大的资产。

简而言之,Ruby 是一种以简洁、高效和强大的社区为特点的编程语言,旨在提升程序员的开发体验。

Try Ruby 可以在线尝试 Ruby。 Download 可以下载 Ruby。

Big GPUs don't need big PCs

树莓派 eGPU vs. PC GPU:性能、效率与成本的对比

本文探讨了在树莓派 5 上使用外接 GPU (eGPU) 的实用性,对比了其与传统 PC GPU 的性能表现,涉及 Jellyfin 媒体转码、图形渲染、LLM/AI 性能以及多 GPU 应用。作者通过实验,测试了 AMD、Intel 和 Nvidia 显卡在树莓派和 PC 上的表现,并最终得出结论:在特定场景下,树莓派 eGPU 方案具有一定的优势,尤其是在效率方面。

核心要点:

  • 带宽瓶颈: 树莓派 5 仅提供 PCIe Gen 3 的 1 个通道的带宽,远低于现代 PC 的 16 通道 PCIe Gen 5。
  • 实验内容: 作者测试了四个方面:Jellyfin 媒体转码、图形渲染 (GravityMark)、LLM/AI 性能 (预处理和推理) 以及多 GPU 应用 (LLM)。
  • 多 GPU 实验: 通过 Dolphin ICS PCIe Gen 4 外接交换机和 3 插槽背板,作者实现了在树莓派上运行两张显卡。
  • 令人惊讶的发现:
    • Llama 3 70b 性能: 在树莓派上运行四张 Nvidia RTX A5000 GPU,性能仅比 Intel 服务器低 2%。
    • 效率优势: 即使带宽受限,树莓派在许多情况下仍能与 PC 相匹敌,甚至在效率方面表现更好,通常能节省 2-5% 的峰值性能损失。
    • 成本优势: 树莓派 eGPU 方案的成本约为 350-400 美元,而 PC 方案则为 1500-2000 美元。
    • 功耗优势: 树莓派空载功耗仅为 4-5W,而 PC 为 30W。
  • 测试结果:
    • Jellyfin 媒体转码: PC 在原始吞吐量方面具有优势,但对于轻度压缩的 H.264 和 H.265 文件,树莓派的表现也足够良好。
    • 图形渲染 (GravityMark): PC 速度更快,但使用较旧的 AMD 显卡时,树莓派甚至能略胜一筹,并在效率方面表现突出。
    • LLM/AI 性能: 树莓派在某些模型上与 PC 相当,甚至表现更好,尤其是在效率方面。
    • 多 GPU 应用: 即使带宽受限,多 GPU 方案仍能扩展模型容量,但性能不如单张高端 GPU。
  • 结论: 树莓派 eGPU 方案并非适用于所有场景,但对于追求效率、成本效益,且对峰值性能要求不高的用户来说,它是一个可行的选择。

关键技术细节:

  • PCIe 带宽: 树莓派 5 仅拥有 PCIe Gen 3 的 1 个通道,而 PC 通常拥有 16 通道 PCIe Gen 5。
  • Dolphin ICS PCIe 交换机: 用于在树莓派上运行多张显卡,允许显卡共享内存,从而绕过树莓派的 PCIe 瓶颈。
  • llama.cpp: 用于运行 LLM 的框架,作者使用其 Vulkan 后端。
  • encoder-benchmark: 用于测试视频编码性能的工具。
  • GravityMark: 用于测试图形渲染性能的基准测试。

总而言之,本文通过实际测试,证明了在特定情况下,树莓派 eGPU 方案具有一定的实用价值,尤其是在功耗和成本方面具有优势。

I spent a week without IPv4 (2023)

IPv6 迁移:最佳实践与经验教训 (IPv6 Migration: Best Practices and Lessons Learned)

本文探讨了 IPv6 迁移的重要性以及最佳实践,并分享了作者在只使用 IPv6 一周的实验中所学到的经验。文章强调了 IPv6 已经准备就绪,并呼吁网络管理员积极采用。

核心观点:

  • IPv6 迁移刻不容缓: 长期依赖传统方法已无法满足需求,是时候迁移到 IPv6 了。NAT (网络地址转换) 并非设计 IPv4 协议时就预料到的,反而带来了许多路由问题,应该将其视为应急措施,而非安全机制。
  • IPv6 的优势:
    • 家庭网络: 允许在家中网络中接收来自互联网的入站连接(例如 VPN 或游戏服务器)。
    • P2P 通信: 消除 NAT 穿越问题,尤其是在多个游戏玩家共享连接时。
    • IPSec VPN: 提升性能,解决 NAT 穿越问题。
    • 简化配置: 在点对点链路或隔离网络中无需手动分配地址。
    • 服务托管: 可在单个 WAN 地址上使用不同的地址为不同的服务提供服务。
  • IPv6 地址格式: 128 位地址,以 8 个四位十六进制块表示,用冒号分隔 (例如 fd69:beef:cafe:feed:face:6969:0420:0001)。
  • 网络设计理念转变: IPv6 旨在回归互联网协议原始设计,摆脱 IPv4 的错误,强调正确的子网设计和路由。

过渡机制:

文章介绍了四种主要的 IPv6 过渡机制:

  • 双栈 (Dual Stack): 同时部署 IPv4 和 IPv6,所有网络段都需要同时配置 IPv4 和 IPv6 子网。适用于小型网络,但难以扩展。
  • 无状态 IP/ICMP 转换 (Stateless IP/ICMP Translation): 完全过渡到 IPv6,在网络边缘对 IPv4 和 IPv6 进行无状态转换。适用于数据中心,允许 IPv6 内部网络同时提供对公共 IPv4 客户端的访问。
  • NAT64: 类似于 IPv4 NAT,但 IPv6 地址池被映射到单个公共 IPv4 地址。需要配合 DNS64 使用,将 IPv4 A 记录转换为 AAAA 记录,以便客户端自动连接到 NAT64 网关。
  • 464XLAT: 结合 NAT64 和 SIIT (IPv4 到 IPv6 的 1:1 转换) 的机制。客户端运行自己的 CLAT (客户端转换器),自分配 IPv4 地址,与 PLAT (提供方转换器) 通信。适用于 ISP 网络,无需 DNS64,并为客户端提供无缝的 IPv4 通信体验。iOS 和 macOS 具有自动配置 464XLAT 的功能。

实验教训:

  • IPv6 已经成熟。
  • 约一半常用的网站支持 IPv6,需要更多网站和 CDN 积极支持。
  • 网络设计应以 IPv6 为主,而非 IPv4 为主。
  • NAT64 应该取代传统的 NAT。
  • DNS64 在公共 Wi-Fi 等受控网络中可能足够。
  • 苹果设备对 IPv6 的支持良好,自动配置 464XLAT。

总而言之,本文强烈建议网络管理员开始迁移到 IPv6,并鼓励他们探索不同的过渡机制,以构建更高效、更灵活的网络。

MIRA – An open-source persistent AI entity with memory

MIRA:一个持久化实体 - 摘要

MIRA 是一个开源项目,最初是一个个人食谱生成器的想法,经过 10 个月的开发,演变成一个“连续数字实体”的尝试。其核心目标是实现持久性和记忆,避免了传统聊天机器人的“新聊天”概念,始终保持一个持续的对话线程。

核心功能与架构:

  • 持久化记忆: MIRA 通过异步对话处理和自我调整的上下文窗口实现持久性。记忆以离散信息的形式存储,根据语义相似度、记忆遍历和过滤等方式被动地加载到上下文窗口中。对于大型文本,使用 domaindoc_tool 进行协作处理,并支持自主扩展、折叠和分节,以避免 token 爆炸。
  • 工具系统: MIRA 自带一系列工具(如联系人、地图、邮件、天气、提醒、网络搜索等),这些工具完全自包含,在启动时自动注册,配置信息存储在工具文件内。MIRA 可以根据任务需要动态启用和禁用工具,避免不必要的 token 浪费。用户可以通过 API 修改工具内容,并可以使用 Claude Code 等工具快速创建新的工具。
  • 长期架构: 采用事件驱动的架构,模块之间解耦,易于扩展。当对话超过一定时间后,会触发事件(如 SegmentCollapseEvent),触发一系列事件,例如记忆提取、缓存失效和摘要生成,为下一次交互做准备。
  • 知识库: MIRA 预置了一个名为“knowledgeofself”的 domaindoc,用于迭代其自身的人格和模式,实现跨时间的持久性。

技术细节与依赖:

  • 语言模型: 虽然 MIRA 可以与 gpt-oss-120b 或 hermes3-8b 等模型配合使用,但作者强烈推荐使用 Claude Opus 4.5,因为它具有独特的“自我意识”和优秀的工具使用能力。
  • 开发工具: 作者主要使用 Claude Code (CC) 进行开发,并编写了详细的构建工具指南,方便用户利用 CC 快速创建自定义工具。
  • 安装: 可以通过提供的 deploy.sh 脚本进行本地安装,该脚本将自动处理平台检测、依赖检查、Python 虚拟环境创建、依赖安装、模型下载、HashiCorp Vault 初始化和数据库部署等步骤。
  • 部署: 也可以通过 miraos.org 访问托管的 MIRA 版本,无需本地安装。

开源理念:

作者长期支持开源软件,并决定将 MIRA 开源,认为其具有超越个人能力的潜力。开源版本与托管版本基本相同,仅缺少 Web 界面和身份验证功能。作者承诺长期维护开源版本。

致谢:

作者感谢 Claude Code 团队、MemGPT 以及所有为开源做出贡献的开发者,特别感谢 Letta 的 Sarah 为其提供了机器自主管理上下文窗口的灵感。

总之,MIRA 是一个雄心勃勃的项目,旨在构建一个具有持久记忆和自我迭代能力的数字实体,并通过开源的方式邀请社区参与其发展。