2024-06-02

30 篇热帖

1. Signal: Will leave the EU market rather than undermine our privacy guarantees (twitter.com)

Signal 重申立场:宁可退出欧盟市场,也不削弱其隐私保护

针对欧盟《数字身份钱包框架》的潜在要求,即时通讯应用 Signal 再次明确其坚定立场:为了维护端到端加密和用户隐私的核心承诺,公司宁可选择退出欧盟市场,也不会在其应用中建立任何形式的“后门”或弱化加密强度。

其主要观点和背景如下:

  1. 根本冲突:欧盟法规提案(如数字身份钱包)可能要求通信服务集成身份验证功能,或允许官方机构在特定情况下访问加密内容。Signal 认为这与其 “隐私优先” 的架构根本冲突。

  2. Signal 的隐私保障:Signal 的核心价值在于提供 无法被后端或第三方(包括Signal自身)破解的端到端加密。任何为满足法规而可能引入的扫描、监视或身份绑定功能,都会破坏这一根本性保障。

  3. 坚决的“退出”警告:Signal 的总裁曾公开表示,如果法律迫使他们削弱加密,他们会选择关闭在欧盟的服务,而不是妥协。此次重申再次确认了这一 “最后手段”

  4. 行业担忧:Signal 的立场反映了科技行业对欧盟加密监管提案的广泛担忧,认为这些提案可能威胁到基本通信隐私和安全,并为全球范围内的类似监控要求开创先例。

总结:Signal 将 用户隐私和加密完整性 置于市场存在和商业利益之上。面对可能要求其妥协的法律环境,该公司选择维护其技术原则,即使代价是失去欧盟市场。这凸显了当前数字时代中,企业核心价值观与监管政策之间的深刻张力

2. Parable of the Sofa (www.tbray.org)

摘要

本文通过修复旧沙发的经历,对比现代家具质量下降的现象,探讨了当前经济模式对小企业的冲击,并推崇“生活方式企业”的价值。

  • 背景:作者家中的沙发使用25年后坐垫磨损,原考虑购买新沙发,但妻子指出新沙发质量差,并建议维修。最终选择本地企业“Luxcious”更换皮革坐垫,花费1100加元。

  • 现代沙发质量问题:文章引用《Dwell》杂志观点,指出近15年来的沙发普遍采用廉价材料(如压缩木屑、胶水、简易支架、劣质弹簧和泡沫),且工艺粗糙。其根源在于全球化、廉价劳动力套利、税收设计、过度追求利润、扁平化包装等“晚期资本主义”特征,导致产品寿命短、质量低下。

  • 修复选择的优势:相比购买高品质新沙发(价格可达五位数),修复成本更低且环保。修复后的沙发虽背面略显陈旧,但整体可继续使用多年,体现了耐用品维护的经济性。

  • “Luxcious”与“生活方式企业”:这家家族经营的小企业位置隐蔽、风格独特,专注于旧家具修复,服务可靠。作者将其归类为“生活方式企业”——即不追求无限制扩张、不依赖债务或金融工程,仅维持稳定经营并为少数员工提供生计的小企业。此类企业在现代经济中常被风险投资家轻视,但作者认为它们更 resilient(坚韧)、人性化且能提升经济环境质量。

  • 对当前经济模式的批判:文章批评现代资本主义倾向于压制这类小企业,推崇依赖科技、营销和无限增长的大型公司。作者呼吁政策应支持“生活方式企业”,限制私募资本的过度扩张,但承认尚未找到理想的监管方案,并愿意支持追求这一目标的政党。

核心观点:高质量、可维修的耐用消费品与家庭经营的小企业共同构建了更可持续、更人性化的经济体系,值得政策和社会支持。

3. Python notebooks for fundamentals of music processing (www.audiolabs-erlangen.de)

本文介绍了FMP(音乐处理基础)笔记本,这是一套用于教学和学习音乐处理基础知识的Python教育材料。

核心内容与特点 FMP笔记本采用Jupyter Notebook格式,将音乐信息检索(MIR)领域的核心技术与算法进行了教科书式的详细讲解,并辅以Python代码示例,实现了理论、图示、音频示例和代码的整合。其内容涵盖音频领域,适合学生、教师和研究人员用于学习理论与实践、准备教学材料或作为MIR任务的基线实现。

当前状态与版本 项目持续更新维护,当前版本为1.2.6。用户可以通过提供的静态HTML版本立即浏览内容。

使用与获取

  • 静态浏览:可直接访问导出的HTML版本,无需安装即可查看所有文本、图表和音频示例。
  • 运行代码:需要下载笔记本及数据,搭建Python环境并启动Jupyter服务器,具体步骤在项目启动指南中有详细说明。

许可与版权

  • 笔记本的文本和图表采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议
  • 相关的Python包 libfmp 采用MIT许可证,并已在GitHub上发布。
  • 文中引用了书籍《音乐处理基础》的内容,使用时需注明引用。

主要参考文献 使用相关成果时,建议引用以下文献:

  1. Meinard Müller 的教材《音乐处理基础——使用Python和Jupyter笔记本》(2021年第二版)。
  2. 关于FMP笔记本及其Python包 libfmp 的相关学术论文。

维护与致谢 项目由Meinard Müller维护,并得到了众多学生、合作者和同事的贡献与支持。代码示例也部分参考了LibROSASteve Tjoa的MIR笔记Eran Egozy的课程等优秀资源。

5. Here comes the Muybridge camera moment but for text (interconnected.org)

本文探讨了文本嵌入(embeddings)技术如何通过将文字转化为数学坐标(概念空间中的位置),使我们能够可视化并分析文本的深层语义结构,如同为文字发明了“相机”与“Photoshop”,可能彻底改变我们理解与处理文本的方式。

1. 嵌入技术基础 嵌入将单词或段落转换为高维坐标,使语义相近的文本在概念空间中彼此靠近。作者以自行构建的BBC节目搜索引擎为例,展示了嵌入如何实现基于语义而非关键词的智能搜索(例如,“最大的行星”与“木星”节目匹配,能区分同名的天神“木星”)。

2. 文本的可视化与“概念速度”

  • 通过对文本滑动窗口生成嵌入,并进行降维(如投影至三维),可绘制出文本在概念空间中的运动轨迹(如一篇道格拉斯·恩格尔巴特文章的彩虹曲线图)。
  • 这揭示了文本的“概念速度”——文本在概念空间中移动的快慢与路径,可对比不同文本、探寻作者风格或发现逻辑转折。
  • 降维至一维则可创建基于语义相似性的内容序列(如从地质平滑过渡到历史的BBC节目列表)。

3. 实时文本诠释(实时阐释学)

  • 利用AI可快速分析文本的深层特征,例如测量小说中时间流速的历史变化(从18世纪每周/250词加速至20世纪中期的每10分钟/250词)。
  • 未来可能实现“实时阐释”,例如在政治演讲中即时可视化修辞技巧或逻辑陷阱,使文本的隐含结构如照片般清晰可见。

4. 文本的语义编辑(文字Photoshop)

  • 嵌入不仅是坐标,更是可操作的特征向量。通过放大或抑制特定特征,可在保持语义核心的同时改变文本风格(如将道格拉斯·亚当斯的文字调节为更正式的版本)。
  • 这类似于图像处理中的“减淡/加深”工具,未来或可为书籍“调色”,根据读者心理动态调整文本的语域、语气或主题强调。

5. 总结与展望 作者将当前技术比作1878年迈布里奇用连续摄影首次捕捉马匹奔跑瞬间的“相机时刻”——此前人们无法确知马匹四蹄是否同时离地。同样,文本嵌入与可视化正在揭示文字运动中“不可见”的深层结构。与此同时,语义编辑能力犹如文字的“Photoshop”,在带来新工具与界面的同时,也将引发对文本真实性、艺术表达及文化影响的全新讨论。

6. ht: Headless Terminal (github.com)

ht: Headless Terminal 工具总结

核心概念 ht(Headless Terminal)是一个用 Rust 编写的命令行工具,其核心功能是为任意可执行程序(如 bash、vim)创建一个无头(headless)的 VT100 风格终端环境(包含伪终端 PTY 和终端服务器),并允许通过 JSON 格式的 STDIN/STDOUT 进行编程式控制。它主要面向 macOS 和 Linux 系统。

主要用途与动机 该工具主要用于需要以编程方式与终端交互的场景,特别是:

  • 测试与AI代理交互:为依赖终端作为用户界面的程序提供测试方案,使 AI 代理能够像人类一样操作终端。
  • 为LLM提供终端访问:最初动机是解决让大型语言模型(LLM)代理更便捷地使用终端的问题,类似于“终端的无头浏览器”。

安装与构建

  • 安装:可直接下载对应架构的最新二进制文件。
  • 从源码构建:需要 Rust 编译器(1.84+)和 Cargo。可通过 cargo install --git https://github.com/andyk/ht 安装,或手动克隆仓库后使用 cargo build --release 编译。

使用方式

  • 启动默认shell:运行 ht 会启动一个交互式的 bash shell。
  • 启动特定程序:使用 ht <command> <args>,例如 ht fishht nano /etc/fstab
  • 终端尺寸:默认为 120x40(列x行),可通过 --size 参数(如 --size 80x24)设置,也支持动态调整。
  • 实时预览:可通过 -l / --listen 选项启动内置 HTTP 服务器,提供基于 Web 的实时终端预览页面。

API 详解 ht 提供两种 API:STDIO APIWebSocket API

STDIO API 采用基于行的 JSON 协议,主要命令包括:

  1. sendKeys:模拟键盘输入,支持特殊键名(如 Enter, ^c)和修饰键组合(C-, S-, A-)。
  2. input:发送原始输入字符(如发送 Ctrl+C 需使用 \u0003)。
  3. takeSnapshot:获取终端当前状态的纯文本快照。
  4. resize:动态调整虚拟终端窗口大小。

通过 --subscribe 选项可订阅并监听事件,事件将输出到 STDOUT。

WebSocket API 在启用 HTTP 服务器后可用,提供两个端点:

  • /ws/events:订阅终端事件。
  • /ws/alis:实现 asciinema 实时流协议,可直接用于播放器预览。

事件系统 事件以 JSON 格式通过 STDOUT 或 WebSocket 发送,主要类型包括:

  • init:首次连接时发送,包含进程PID和初始快照。
  • output:包含终端输出的原始字符序列(含控制序列)。
  • resize:窗口大小改变时触发。
  • snapshot:在执行 takeSnapshot 命令后触发,包含纯文本快照和可恢复状态的原始序列。

其他信息

  • 测试:可在桌面终端中手动输入 JSON 命令进行交互测试,配合 rlwrap 可提升体验。
  • 相关库:有实验性的 Python (htlib.py) 和 TypeScript (htlib.ts) 封装库。
  • 未来计划:可能增加带样式信息的视图输出、视图更新订阅、与 asciinema 的深度集成。
  • 相关工具:提及了传统的 expect 工具,并建议在可用时优先使用目标工具的原生 API。
  • 许可证:代码使用 Apache License 2.0 许可。
8. Hotwire: HTML Over The Wire (hotwired.dev)

Hotwire: HTML Over The Wire

Hotwire 是一种现代 Web 应用构建方法,其核心是通过网络传输 HTML 而非 JSON,从而大幅减少 JavaScript 的使用。这种方法带来了多项优势:

  • 快速的首次页面加载
  • 将模板渲染保留在服务器端
  • 开发体验更简单、高效,且不牺牲传统单页应用(SPA)的速度和响应性

用户既可以将 “HTML-over-the-wire” 作为理念来启发自研工具,也可以直接采用由 37signals 团队为其产品 HEY 打造的 Hotwire 框架。这些框架协同工作,构成一个跨平台的完整解决方案,主要包括以下三个部分:

  1. Turbo 这是 Hotwire 的核心。它是一套互补的技术,旨在加速页面跳转和表单提交、将复杂页面分解为组件,并通过 WebSocket 进行流式局部页面更新。最关键的是,实现这些功能完全不需要编写任何 JavaScript

  2. Stimulus 虽然 Turbo 通常能处理传统上需要 JavaScript 的约 80% 的交互场景,但仍有部分情况需要自定义代码。Stimulus 通过一种以 HTML 为中心的方法来管理状态和连接,使得编写这部分自定义代码变得简单易行。

  3. Hotwire Native 这是一个 Web 优先的框架,用于构建原生移动应用。它提供了所有必要的工具,帮助开发者复用现有的 Web 应用,从而高效地构建出色的移动应用。

Turbo、Stimulus 和 Hotwire Native 相互配合,共同为全平台开发提供了完整的 Hotwire 解决方案。

9. PyCon US 2024 Recap (katherinemichel.github.io)

PyCon US 2024 回顾摘要

会议概述

PyCon US 2024 于匹兹堡举行,是作者第二次参加线下的 PyCon 大会。会议内容丰富,涵盖技术演讲、主题演讲、社交活动及社区互动。作者分享了与社区成员的重逢和新建立的联系,强调了 Python 社区的包容性和活力。

重要主题演讲

  • K. Jay Miller 主题演讲:探讨了增加黑人 Python 开发者参与度的方法,介绍了 Black Python Devs 社区的成立与发展,旨在为黑人开发者提供归属感和支持网络。
  • Simon Willison 主题演讲:讨论了大型语言模型(LLMs)的应用,认为它们是“模仿智能”而非人工智能,并展示了 LLMs 在编程中的实用技巧,如提示工程和检索增强生成。
  • Sumana Harihareswara 主题演讲:分享了她在 Python 包管理基础设施方面的工作经历,强调了开源项目维护的挑战和社区支持的重要性。

技术讨论亮点

  • 克服全局解释器锁(GIL):通过子解释器和内存共享实现并行执行,使用不可变数据结构(如 HAMT)提高数据共享效率。
  • CPython 性能测量:介绍了 Faster CPython 团队的工作,包括基准测试方法和 Python 3.11 的性能提升。
  • 构建 JIT 编译器:解释了 Python 3.13 中通过复制和修补技术实现即时编译的过程,旨在提高执行效率。
  • 自由线程(No GIL)更新:规划了自由线程的实现路径,包括实验阶段、社区支持及成为默认选项的步骤。
  • 子解释器与自由线程:展示了 Python 3.13 中禁用 GIL 和使用子解释器实现并行的示例,讨论了兼容性挑战。

社区活动与互动

  • PyLadies 拍卖:筹集了创纪录的 60,000 美元,用于支持女性 Python 开发者。
  • 社交互动:作者与众多社区成员交流,包括 Guido van Rossum、Pablo Galindo Salgado、Simon Willison 等,回顾了个人职业发展与社区联系。
  • 分会场与展览:参观了多个数据库和工具展台(如 Datadog、EdgeDB、MongoDB),了解了最新技术动态。
  • 开放空间活动:包括个人资料照片拍摄、杂技表演等,增强了社区互动。

个人体验与反思

作者强调了社区的力量,通过会议建立了深厚的联系,并从技术讨论中获得了启发。文章以对未来的展望结束,期待 PyCon US 2026 在长滩举行,并鼓励更多人参与 Python 社区活动。

关键人物提及

  • 社区领袖:Mariatta(PyCon US 主席)、Deb Nicholson(PSF 执行董事)。
  • 核心开发者:Barry Warsaw、Thomas Wouters、Brandt Bucher 等。
  • 演讲者与组织者:K. Jay Miller、Simon Willison、Anthony Shaw 等。

总结:PyCon US 2024 是一次技术深度与社区温暖并重的盛会,突出了 Python 生态系统的创新与包容性,为开发者提供了学习、交流和成长的平台。

10. The Sword of Kumdor (lynn.github.io)

《Kumdor之剑》是一款1991年为NEC PC-98平台开发的打字角色扮演游戏。玩家扮演银河系顶级打字员,被召唤至Kumdor星球通过拼写咒语来对抗神秘怪物,但在坠机中丢失了所有键盘技能。游戏以其超现实氛围、独特对话和鲜明视觉风格著称,被日本粉丝视为“童年最爱RPG”和“被低估的杰作”。

游戏操作十分独特:战斗与施法之外,仅使用F、J和空格键进行移动与转向,以确保玩家双手始终保持在基本键位。游戏英文翻译补丁以xDelta格式发布,需使用特定工具应用;运行修补后的游戏需在模拟器中加载并正确配置BIOS文件。由于PC-98使用JIS键盘,非JIS键盘玩家可能难以输入某些符号,需通过模拟器设置或创建键位映射文件来解决。

翻译过程中,译者巧妙处理了语言双关与文化元素:例如将“クムの木”译为“keytree”以形成“keylime”、“keywine”等水果谐音;将“ヨゴンナ”根据日文数字谐音译为“Fivetown”。咒语翻译虽改变了施法键位,但实际影响有限。译者还参考了《地球冒险》的本地化风格,保留了原作幽默直白的语气。

技术方面,译者使用调试器、反汇编工具等对游戏数据进行逆向工程:游戏文本存储在未压缩的Shift-JIS数据中,提取较为直接;片头手写文本则需解析特殊坐标数据并重新绘制;此外还绕过了复制保护机制,并修改了汇编代码以优化英文语法(例如将拾取物品信息改为完整句子)。整个翻译项目历时约一个半月,译文约7200词。

译者感谢了多位协助测试与技术支持的合作者,并建议玩家在游戏时搭配实验电子音乐以增强体验。

11. Lisp: Icing or Cake? (dthompson.us)

Lisp:糖霜还是蛋糕?

2024年春季Lisp游戏创作大赛(Lisp Game Jam)刚结束,提交了48款游戏,创下新高。在参与者相互体验和评分的过程中,文章作者观察到两种使用Lisp构建游戏的元模式,这些模式也适用于更广泛的Lisp应用。以下是比赛提交的语言分布概况:

语言 提交数 占比(约)
Guile 15 31%
Fennel 10 21%
Clojure 5 10%
Common Lisp 5 10%
Racket 4 8%
Elisp 4 8%
S7 3 6%
Kawa 1 2%
OWL 1 2%

Guile首次成为最常用语言,这主要归功于11款基于Hoot(Scheme到WebAssembly编译器)的Web游戏。Fennel(编译到Lua的Lisp)通常是最流行的语言,排名第二。S7(可嵌入的Scheme)也引起了关注。

文章将两种模式描述为“Lisp作为糖霜”和“Lisp作为蛋糕”,两者均有效,各有侧重,并构成一个连续谱系。

Lisp作为糖霜(Icing)

此模式将Lisp用作“脚本”语言,嵌入到由C、Rust等静态语言编写的底层程序中。核心是嵌入Lisp解释器,适用于更关注高级应用逻辑的场景。其优势在于能快速利用现有静态语言工具链(如通过emscripten编译为WebAssembly进行Web部署),但深度依赖底层语言生态。

  • 示例:S7是可嵌入的Scheme;Guile可用于扩展C程序;Fennel则为已有Lua扩展接口的应用提供Lisp语法。
  • 典型堆栈
    • Fennel + love2d:love2d(C++程序)嵌入Lua解释器,是Fennel的完美目标,易于本地和Web部署。这是目前最成功的Lisp游戏开发堆栈。
    • S7 + raylib:raylib(C库)与可嵌入的S7结合,易于通过emscripten部署到Web。

Lisp作为蛋糕(Cake)

此模式尽可能用Lisp实现整个软件栈,仅通过外部函数接口(FFI)最少化调用必要的共享库。这需要更长时间,因为可能需要为Lisp实现缺失库或包装C库,且Web部署更复杂。

  • 示例:Common Lisp(如SBCL)具有良好的C FFI,可编译为原生可执行文件;Guile的理想用法也是从开始就用Scheme编写程序。
  • 典型堆栈
    • Guile + Chickadee:Chickadee是一个用纯Scheme编写的Guile游戏库,仅包装少量C库用于底层任务。其渲染、数学计算等均用Scheme实现,推动了Guile编译器和虚拟机的改进,但开发缓慢。
    • Hoot + HTML5 canvas:Hoot是完全用Scheme编写的Scheme到WebAssembly编译器,直接生成Wasm 2.0,无需打包垃圾收集器,二进制体积小(如<2MiB)。它与JavaScript互操作简便,使用浏览器内置HTML5 canvas API进行2D渲染。这相当于“密集的蛋糕加上一点糖霜”,因为其核心工具链是Lisp构建的,但仍依赖高级浏览器API。

蛋糕/糖霜连续谱

蛋糕方法有其局限性:现代Lisp系统最终仍建立在C等底层之上(如Emacs的C核心、Guile的C虚拟机、Hoot运行在V8等C++引擎上)。完全用Lisp重写所有底层库(如OpenGL、libpng)既不现实也无必要。

然而,将更多栈层从C回收为Lisp仍有意义:Lisp代码更易于修改、可运行时热重载,通常具有内存安全性(得益于GC),减少FFI调用可降低开销和提高安全性。随着栈中Lisp成分增加,它就更像蛋糕而非糖霜。

项目案例

  • Guix项目:使用Guile实现函数式包管理和init系统,取代了Nix和systemd。尽管初期被质疑“重复造轮子”,但十多年后,其最大化使用Lisp的做法为项目成功奠定了关键基础,为用户提供了极高的系统定制能力。
  • Trial游戏引擎:用Common Lisp实现大量功能,而非包装C库。
  • Pre-Scheme:有望通过NLnet资助复兴,实现用Lisp实现GC运行时以下的层级。

结论

作者个人倾向于“蛋糕”模式,希望看到项目不断拓展Lisp的能力边界。对于Lisp游戏创作大赛,他更看重推动Lisp栈层回收的小进步,而非游戏本身。虽然构建一个“Lisp蛋糕”并非易事,但作者坚信值得为之努力,并提倡用Lisp重写,而非Rust。

12. How do our brains adapt to control an extra body part? (www.cam.ac.uk)

文章标题: 我们的大脑如何适应控制额外的身体部位?

摘要:

2022年,研究团队在皇家学会夏季科学展览上对“第三拇指”设备进行了大规模公共测试。该设备是一个通过脚部压力传感器控制的机械拇指,旨在作为身体的延伸。研究结果发表于《科学机器人学》。

  • 实验概况: 研究团队在五天内测试了596名参与者,年龄从3岁到96岁不等,背景多样。其中仅有4人因设备不合脚或无法用脚控制而无法使用。
  • 任务与表现: 参与者有一分钟时间熟悉设备,随后完成两项任务:一是仅用第三拇指从钉板上取钉(333人完成);二是用第三拇指配合生物手操作不同形状的泡沫物体(246人完成)。结果表明,98%的参与者能在使用的最初一分钟内成功操控物体,表现出强大的即时学习能力。
  • 影响因素分析: 性别和用手习惯(即使设备固定在右手)未导致表现差异。也没有证据表明“手巧”的人(如乐器学习者或从事手部精细工作的人)表现更好。
    • 年龄因素: 成年与老年人表现相似,但老年人内部表现出随年龄增长性能下降的趋势,这可能与感觉运动、认知能力的年龄性衰退或对技术的代际关系有关。儿童的表现总体较差,10岁以下儿童中有6人未能完成任务,且即使完成的儿童,其表现也随年龄增长而提升。12-16岁的青少年表现仍弱于年轻成年人。
  • 研究者观点: 作者强调,身体增强技术设计的关键在于包容性易用性,需考虑到不同年龄、性别、身体状况、生活方式、文化背景以及对技术的喜好。大规模且多样化的实体测试对于实现人机无缝集成至关重要。
13. SPI Flash (trmm.net)

本文介绍了作者自制的SPI Flash读写工具,旨在替代速度较慢的Bus Pirate,用于快速读取和写入SPI闪存芯片。

工具概述

  • 目的:替代传统方案,实现高速读写SPI闪存。
  • 硬件:基于Teensy 2/3开发板和8引脚SOIC芯片夹,可在一分钟内完成多兆字节ROM的读写。
  • 开源:源代码发布于Bitbucket。

硬件与连接

  • 芯片识别:常见8引脚SOIC闪存(如25L6406E)可用于笔记本和服务器。
  • 引脚定义
    • 8引脚芯片:包括片选(CE)、数据输出(SO)、写保护(WP)、接地(GND)、电源(Vcc)、复位(RST)、时钟(SCK)、数据输入(SI)。
    • 16引脚芯片:用于服务器主板,引脚排列更复杂。
  • 电压适配:Teensy 2需改装以提供3.3V;Teensy 3原生支持3.3V。
  • 调试技巧:若芯片无响应(返回0xFF),可尝试多次断电重启;建议通过跳线控制电源。部分MacBook的调试接口可直接连接SPI信号。

使用方法

工具以串口设备形式连接计算机,支持以下命令:

  • i:读取芯片ID,验证是否工作正常。
  • r <地址>:从指定地址读取16字节数据并显示十六进制。
  • e <地址>:擦除指定地址的扇区(通常由上传命令自动处理)。
  • u <起始地址> <长度>:上传数据到指定地址,自动擦除所需扇区。可配合pvcat命令传输文件。
  • 完整ROM读取:使用xmodem协议,通过命令行工具(如rx)导出整个ROM为文件。

参考资料

  • 作者在31c3会议的Thunderstrike演讲中提供了更多关于ROM逆向工程的细节。
  • 硬件修改和引脚连接参考链接已提供。

该工具为硬件调试和固件分析提供了高效解决方案,特别适用于安全研究和嵌入式开发。

14. Copy-and-Patch: Fast compilation for high-level languages and bytecode (2020) (arxiv.org)

摘要

本文介绍了一种名为**“复制与修补”(Copy-and-Patch)** 的快速编译技术。该技术专为运行时编译场景设计,例如现代数据库的查询编译器和浏览器中的WebAssembly虚拟机。其核心特点是编译速度极快,同时能生成质量良好的代码。

技术原理: 该技术通过从一个庞大的二进制实现变体库中“拼接”代码来生成目标程序。这些二进制实现被称为**“模板”(stencils)**,它们是一些带有“空洞”的半成品代码片段,在代码生成阶段需要插入缺失的值。论文详细描述了如何构建模板库以及实现该算法的优化过程。

应用与性能: 研究人员展示了该技术的两个用例:

  1. 面向元编程的高级类C语言编译器:其编译开销极低,从抽象语法树生成代码的时间甚至短于构建该语法树本身。基于此系统实现的SQL数据库查询编译器,在TPC-H基准测试中表现优异:

    • 编译速度:比LLVM -O0快两个数量级,比更高优化级别快三个数量级。
    • 代码性能:生成代码的运行速度比解释执行快一个数量级,并比LLVM -O0快14%。
  2. WebAssembly编译器

    • 编译速度:比Google Chrome中的WebAssembly基线编译器Liftoff快4.9至6.5倍。
    • 代码性能:在Coremark和PolyBenchC基准测试中,生成的代码性能比Liftoff高出39%至63%。

结论: “复制与修补”技术通过创新的代码拼接机制,在保持高质量代码输出的同时,实现了极快的编译速度,为高性能运行时编译系统提供了有效解决方案。

15. 84–24 (84-24.org)

文章摘要:修复1984年初代Macintosh 128K的历程

本文作者详细记录了修复一台1984年发布、具有历史意义的苹果Macintosh 128K电脑的全过程。修复动机源于作者的“中年危机”情怀,旨在重温童年经典。

历史背景与机器特点

  • Macintosh的诞生:原计划是Jef Raskin主导的廉价家用电脑(目标价低于1000美元),但在1980年史蒂夫·乔布斯接手后,被重塑为注重图形界面和用户体验的“革命性”产品,最终定价2495美元。
  • 硬件限制:机器仅配备128KB内存,没有内置硬盘,完全依赖3.5英寸软驱(单面格式化后容量为400KB)进行数据存取和系统启动。
  • 市场影响:虽然Macintosh将图形用户界面推向大众,但因价格偏高,主要进入教育及专业领域,未达到原定的家庭普及目标。

故障诊断与修复过程

  1. 初始故障与诊断

    • 机器开机后出现经典的“Sad Mac”错误界面,伴随特定错误代码 04040A
    • 通过查阅苹果官方服务指南和社区资料(如68kmla.org论坛),解读出该代码指示内存测试失败,且错误字符“A”代表十六进制值10,对应两颗损坏的内存芯片(位置为F6和F8)。
  2. 内存芯片更换

    • 损坏的芯片型号为 Micron MT4264(64Kbit DRAM),此芯片已停产多年。
    • 作者从加州零售商Jameco购得替换芯片,并在专业亲属帮助下,完成了主板上16针芯片的拆卸、焊接和更换。修复后,电脑成功通过内存检测,屏幕显示正常启动界面。
  3. 软驱维护

    • 软驱机械部件因年久润滑脂固化而卡顿。
    • 通过拆卸、用酒精清洁旧润滑脂、重新涂抹新润滑脂并测试机械运动,恢复了软驱功能。最终成功从软盘启动系统。
  4. 外壳修复尝试(Retrobright)

    • 塑料外壳因溴系阻燃剂在紫外线照射下发生黄变。
    • 作者尝试使用 Retrobright(一种含高浓度过氧化氢的凝胶)在阳光下处理,但因操作不当导致凝胶蒸发不均,产生斑驳痕迹。
    • 最终放弃化学方法,转而求助专业喷漆店,使用匹配的“苹果米色”涂料重新喷涂,成功恢复外观。

总结与反思

  • 修复项目耗时数月,最终成功让这台四十岁的电脑恢复运行。
  • 作者强调,尽管128KB内存在当年已显不足,但修复过程融合了历史考证、技术调试和动手实践,是一次对计算机历史和个人情怀的深度探索。
  • 文章也提及了Macintosh的设计哲学(如使用防拆螺丝)以及当时的技术限制(如内存直接焊在主板上),展现了早期个人电脑的设计特点。
16. Show HN: Open-source load balancer for llama.cpp (github.com)

Paddler:开源 LLM 负载均衡与服务平台

Paddler 是一个开源的大语言模型(LLM)负载均衡器和部署平台,旨在帮助用户在自有机房基础设施上运行、部署和扩展 LLM 推理,从而获得隐私保护、可靠性、成本控制及免于依赖闭源模型提供者的能力。

核心特性

  • 内置 llama.cpp 推理引擎:直接集成 llama.cpp 进行模型推理。
  • 专用的 LLM 负载均衡:针对 LLM 工作负载优化的请求分配机制。
  • 动态代理扩展:通过可动态添加的代理(Agent)组件工作,便于与自动伸缩工具集成。
  • 请求缓冲:支持从零主机开始扩展,提升资源利用率。
  • 动态模型切换:可在运行中更换模型。
  • 内置 Web 管理面板:提供管理、监控和测试界面。
  • 可观察性指标:支持运维监控。

目标用户

  • 需要集成 LLM 推理和嵌入功能的产品团队。
  • 需要规模化部署和运行 LLM 的 DevOps/LLMOps 团队。
  • 处理敏感数据且对合规性与隐私要求高的组织(如医疗、金融)。
  • 希望实现可预测的 LLM 成本,而非按 token 计费的机构。
  • 需要稳定模型性能以维持 AI 功能一致用户体验的产品负责人。

架构与部署

Paddler 以单一二进制文件形式分发,核心包含两个可部署组件:

  1. 负载均衡器(Balancer)
    • 提供推理服务接口(供应用程序连接以获取 token 或嵌入)。
    • 运行管理服务(用于内部配置管理)。
    • 可选启用 Web 管理面板(用于可视化监控和测试)。
  2. 代理(Agent)
    • 通常部署在独立实例上。
    • 将请求进一步分配给“插槽”(Slots),由插槽执行实际的 token 和嵌入生成。
    • 其插槽机制基于 llama.cpp 的自定义实现,维护独立的上下文和 KV 缓存。

安装与快速开始

用户可通过以下方式获取二进制文件:

  • 从 GitHub 发布页面下载预编译版本。
  • 从源代码编译(最低 Rust 版本要求为 1.88.0)。

启动基本集群的示例命令:

# 启动负载均衡器(含可选 Web 管理面板)
paddler balancer --inference-addr 127.0.0.1:8061 --management-addr 127.0.0.1:8060 --web-admin-panel-addr 127.0.0.1:8062

# 启动一个拥有 4 个插槽的代理
paddler agent --management-addr 127.0.0.1:8060 --slots 4

其他特性

  • 桌面应用程序(Beta版):提供图形界面版本,适用于本地 AI 集群或公司内部多设备协作等场景,可与命令行版本混合使用。
  • AI 生成代码的政策:项目代码均经过人工审查,但允许并鼓励提交经 AI 辅助生成的代码(需提交者理解代码逻辑)。项目提供了 CLAUDE.md 文件以指导代码风格。

社区与资源

  • 提供 Discord 和 Reddit 社区支持。
  • 附有详细的文档、API 文档及演示视频。

名称由来

项目名称“Paddler”最初源于设想使用 Raft 共识算法(意为“在筏上划行”),后虽放弃该设计但保留了名称。后受《辛普森一家》中“That's a paddlin'”梗影响,进一步接纳此名。

17. LLMs aren't "trained on the internet" anymore (allenpike.com)

核心观点

公众常误认为大语言模型(LLM)仅是“在互联网上训练的互联网模拟器”,难以处理互联网上罕见的任务。然而,这一观念已过时。前沿模型的训练数据已不再局限于互联网,“互联网模拟器”的标签已无法准确预测未来模型的能力发展。

突破“数据墙”的策略

随着互联网公开数据基本被耗尽,AI实验室遭遇“数据墙”。为继续提升模型,实验室转向获取和创建非公开数据:

  • 数据优化:通过标注和过滤提取高价值数据。
  • 人类反馈(RLHF):利用人类评分微调模型,优化指令遵循和安全行为。
  • 使用数据:利用用户与模型交互产生的海量数据。
  • 购买专有数据:获取邮件、内部报告、代码库、合同等未公开的商业或个人数据。

弥补能力短板的定制数据

当前LLM在表达不确定性、长对话连贯性、高级规划、复杂代码推理和遵循长提示等方面表现不佳,主要原因是互联网上缺乏此类高质量示范文本。为解决此问题,实验室正大规模引入定制数据

  • 合成数据:例如微软的Phi-3模型,利用大模型生成的高质量合成数据填补空白,以较小的参数量实现了优异性能,并有助于减少幻觉和偏见。
  • 人类专家生成数据:鉴于合成数据的局限性,AI公司每年斥资超10亿美元(如通过Scale.ai),雇佣博士、律师等专业人士专门创作互联网上稀缺的高质量数据(例如“专家合理表达不确定性”的样本)。这些高价值专有数据将直接用于训练下一代模型。

发展趋势

早期LLM的缺陷确实受制于互联网数据的质量,但随着高成本定制训练数据的规模不断扩大,LLM将显著超越“互联网模拟”的范畴。在那些互联网上缺乏但可通过昂贵定制数据来演示的任务上,模型能力将持续获得显著提升。

19. Lord Kelvin and his analog computer (spectrum.ieee.org)

开尔文勋爵与他的模拟计算机

威廉·汤姆森(即开尔文勋爵)在1870年购买游艇后,亲身经历了准确预测潮汐的挑战,这促使他设计了第一台潮汐预测机。这台机器是早期模拟计算机的典范,但其知名度远低于巴贝奇的差分机。

科学背景与设计原理

潮汐的成因由牛顿阐明,后被拉普拉斯建议用谐波振荡来表示。汤姆森利用这一概念,将特定地点的潮汐分解为10个主要的谐波分量(现代分析使用37个),每个分量对应地球、月球和太阳的一个周期运动(如月球半日潮周期为12小时25分钟)。通过长期的潮汐数据记录来计算各分量的具体参数。

机器的工作机制

该机器是一个精密的机械装置:

  • 核心结构:包含10个独立组件,每个对应一个谐波分量,通过齿轮设定其振幅和周期
  • 运作方式:用户转动曲柄,同时驱动所有齿轮,实现对所有谐波曲线的叠加
  • 输出结果:墨水笔在移动纸卷上描绘出合成的复杂潮汐曲线。转动一小时代表现实的一小时,快速转动可在约4小时内模拟一年的潮汐。

工程协作与改进

汤姆森在论文中明确致谢了多位合作者:

  • 亚历山大·莱热:绘制齿轮设计图纸并制造原型机。
  • 爱德华·罗伯茨:完成转速比的计算。
  • 詹姆斯·汤姆森(其兄):设计了用于谐波分析的“盘-球-筒”积分器。 这凸显了工程成就通常是团队协作的成果。

后续发展与影响

  • 同期发展:1874年,美国的威廉·费雷尔独立开发了使用19个分量的类似装置。
  • 持续改进:后续科学家如乔治·达尔文、罗林·A·哈里斯和阿瑟·杜德森等人不断改进谐波分析技术和预测机器,将分量数增至37个。
  • 技术延续:这些机械式预测机因其数学计算的复杂性,一直使用到20世纪50年代才被电子计算机取代。

汤姆森的其他海洋贡献

除了潮汐预测机,汤姆森还在海洋技术领域有多项发明,包括改进的罗盘、天文钟、测深仪和仪器座。他在理论上的贡献包括数学描述了船舶产生的“开尔文尾迹”模式以及沿岸传播的“开尔文波”。

总结

开尔文勋爵的潮汐预测机不仅解决了实际的航海安全问题,也是科学理论转化为实用工具的杰出范例。它融合了精密机械工程、数学建模和对自然规律的深刻理解,是模拟计算发展史上的重要里程碑。

22. China lands Chang'e 6 sample-return probe on far side of the moon (www.space.com)

中国嫦娥六号探测器成功在月球背面着陆

任务概况

中国嫦娥六号(Chang'e 6)无人探测器于北京时间2024年6月2日6时23分,在月球背面的南极-艾特肯盆地内的阿波罗环形山(Apollo Crater)成功着陆。这是继2019年嫦娥四号之后,中国第二次在月球背面实现软着陆,目前全球仅有中国完成过这一壮举。

任务目标与历史意义

嫦娥六号是人类首次计划从月球背面采样并返回地球的任务。该任务面临高风险和高工程难度,旨在从这一始终背对地球的区域获取约2公斤(4.4磅)的月壤和岩石样本,以帮助科学家首次近距离研究月球背面的物质。

着陆与采样计划

探测器于5月3日发射升空,经过约四天飞行进入月球轨道。在进行了数周的轨道调整与着陆区勘测后,成功执行了着陆任务。着陆器将在未来数天内,利用其搭载的钻探设备,从月表及地下最深2米处采集样本。随后,样本将由搭载的上升器送入月球轨道,与轨道器完成对接,并由返回舱携带于6月25日左右着陆地球。

技术挑战与科学意义

月球背面因其始终背向地球,通信极为困难,需依赖专用中继卫星。此次任务中,中国新发射的“鹊桥二号”中继卫星提供了关键支持。科学上,返回样本将有助于揭示月球演化历史,并解答一个重大谜团:为何月球背面与正面地形差异巨大——正面广泛分布着暗色的玄武岩平原(月海),而背面则极为稀少。

嫦娥探月工程背景与未来规划

嫦娥工程以中国神话人物“嫦娥”命名,自2007年启动以来逐步推进:

  • 嫦娥一号、二号(2007、2010):月球轨道探测。
  • 嫦娥三号(2013):首次月面着陆(正面)。
  • 嫦娥四号(2019):首次月背着陆。
  • 嫦娥五号(2020):从月球正面采样返回。

后续计划包括:

  • 嫦娥七号(计划2026年):探测月球南极资源,特别是水冰。
  • 嫦娥八号(计划2028年):测试月球资源原位利用技术。
  • 中国目标在2030年前实现载人登月,并计划在2030年代后期与俄罗斯、白俄罗斯、巴基斯坦等国合作,在月球南极附近建造“国际月球科研站”。
24. X is justifiably slow (2022) (zeux.io)

X 合理地慢(2022)

本文探讨了当人们声称“X 慢但可以预期,因为它需要做很多工作”时,这种说法往往缺乏根据,依赖于说话者的直觉而非对 X 本身的分析。作者指出,X 慢的原因可能多种多样,需要具体审查,而非泛泛而论。

X 慢的潜在原因包括:

  • 低效算法:例如,数据库查询慢可能是因为缺少索引,导致算法复杂度不佳。
  • 算法实现效率低:相同想法的不同实现可能有 10 倍或更大的性能差距,若未进行性能分析,难以识别瓶颈。
  • 未充分利用硬件:现代硬件速度极快,但代码若不使用 SIMD、多线程或优化缓存访问,可能比最优实现慢 100 倍以上。
  • 执行不必要的工作:例如,缺少缓存、缓存命中率低或缓存检索效率差。
  • 问题框架错误:如 C++ 编译器慢可能源于堆栈效率低下,通过重构问题(例如改变编程语言)可能显著改善。

何时“X 慢因工作多”可能正确?

  • 当问题已被充分探索、无法重构,且实现经过彻底性能分析和优化时。
  • 尤其当可以进行“光速计算”(如基于硬件带宽限制评估)来证明工作量必要时。

作者强调,在实际中很难区分这些情况,因此每当听到泛泛的声明时,都感到恼火,因为很少有充分的分析支持这种结论。本文旨在提醒,性能问题需基于具体实现、硬件和数据仔细评估,而非依赖直觉。

26. Footage of Chang'e-6's land on far side of the moon (www.cnsa.gov.cn)

该内容主要展示了嫦娥六号探测器在月球背面着陆的画面记录。相关信息及页面由国家航天局主办,并由国家航天局新闻宣传中心承办发布。

27. A secure embedded operating system for microcontrollers (tockos.org)

摘要

本文介绍了针对微控制器的安全嵌入式操作系统Tock,重点关注其在安全关键设备中的应用。安全关键设备,如可信平台模块(TPM)和USB认证令牌,本质上是多编程环境,需要运行由不同开发者编写的应用程序。这些设备面临潜在的安全风险,因为不受信任的组件可能存在缺陷或发生崩溃,导致敏感信息泄露。

Tock操作系统通过其设计保证了系统的安全性,确保即使应用程序存在漏洞或意外崩溃,不受信任的组件也无法泄露秘密。这种机制适用于那些需要高度安全性的嵌入式场景,增强了设备在复杂多编程环境下的可靠性。Tock的核心目标是提供一种安全的运行时环境,防止潜在的恶意或错误代码破坏系统安全。

28. Show HN: Tunnelling TCP through a file (github.com)

通过文件服务器隧道化TCP连接

这是一个名为 ft.exe 的工具,允许通过文件服务器建立 TCP 隧道连接,从而绕过网络限制(如防火墙)或实现远程访问。

核心功能

  • 跨平台支持:提供 Windows、Linux 和 Mac 的可执行文件。
  • 通过文件中转数据:程序将 TCP 数据写入文件,由对端程序读取文件并转发到目标连接,从而实现隧道传输。
  • 自动清理:为防止文件无限增长,当文件超过 10MB 时会自动清除。

典型使用场景

1. 绕过防火墙

当两台主机(A 和 B)之间有防火墙,但都能访问同一共享文件夹时:

  • 主机 A 监听本地端口(如 5000),并通过文件隧道将流量转发至远程服务(如 127.0.0.1:3389)。
  • 主机 B 配置反向读取同一组文件,形成完整隧道。
  • 连接主机 A 的 5000 端口即可访问主机 B 的 3389 端口。

2. 通过 RDP 隧道化 TCP 流量(类似 SSH 隧道)

当只能通过 RDP 访问远程主机(B),但需要访问其内网服务时:

  • 主机 A 监听本地端口(如 5000),指向目标服务(如 192.168.1.50:8888),并指定通过本地文件读写。
  • RDP 连接主机 B,确保本地驱动器共享。
  • 主机 B 通过 RDP 映射的本地驱动器(如 \\tsclient\c\Temp\)读写文件。
  • 连接主机 A 的 5000 端口即可访问目标服务。

高级特性

  • 多端口转发:通过多次使用 -L 参数,可在单条隧道中转发多个端口。
  • 绑定地址:使用 -L 0.0.0.0:端口:目标地址 可允许网络内其他计算机使用隧道。
  • 远程转发:通过 -R 参数,可让远程端监听端口并通过隧道转发到本地网络的服务,从而共享本地运行的服务。
  • 共享互联网连接:可通过配置利用其他计算机的互联网连接。

工作原理

程序启动 TCP 监听器,接收连接后将数据写入文件;对端程序读取该文件并建立新的 TCP 连接,转发数据。文件作为数据中转媒介,实现跨网络边界的数据传输。

29. CSS written in pure Go (github.com)

CSS written in Pure Go 摘要

项目概述

这是一个用Go语言编写的CSS库,允许开发者直接在Go代码中编写CSS样式,无需依赖预处理器或JavaScript框架。项目旨在提供服务器端对CSS的完全控制,简化构建过程,并保持CSS的简洁性和可调试性。

动机

作者希望探索在Go中编写CSS的可能性,以便从服务器端动态控制样式,避免使用UI库、预处理器或linters。目标是减少构建步骤,并让CSS与Go项目编译流程集成,同时保持CSS的纯粹性。

安装与快速开始

  • 安装:通过Go包管理器安装,命令为 go get github.com/AccentDesign/gcss
  • 快速开始:提供了一个独立的示例仓库 gcss-starter,包含热重载工具 air,便于开发和测试。

核心用法

  • 基本用法:使用 gcss.Style 类型定义CSS选择器和属性,通过 CSS 方法写入 io.Writer,生成标准的CSS字符串。
  • 多个样式:通过自定义 Styles 类型处理多个样式,并批量输出。
  • 主题支持:定义 Theme 类型用于媒体查询(如暗色/亮色主题),并使用 Stylesheet 类型组合多个主题,实现响应式设计。
  • 示例代码:展示了如何创建样式、定义主题并输出CSS,包括媒体查询的生成。

主要好处

  • 服务器端控制:CSS完全由Go代码管理,便于动态调整。
  • 避免类名混乱:无需在HTML中使用冗长的类名(如 bg-gray-50 dark:bg-slate-800),减少维护难度。
  • CSS纯净性:不依赖变量或混入,保持CSS简洁,易于调试。
  • 可复用性:可以通过Go函数返回样式,实现类似混入的代码重用。

示例与贡献

  • 示例目录:提供了多种使用场景的示例,包括完整示例、CSS重置、Templ集成、媒体查询、模板函数、文件写入、HTTP处理程序和标准输出。
  • 贡献指南:欢迎通过问题或拉取请求贡献代码和想法。

与其他CSS框架集成

  • 可以与Tailwind CSS等框架混合使用,通过分离CSS文件(如 base.cssutils.css)并在HTML中按顺序引入,确保gcss样式特异性较低以便覆盖。

未来计划

  • 计划扩展CSS属性支持,但仅限于必要场景,避免覆盖所有CSS功能。
  • 专注于用Go创建可配置的UI组件,而非全面替代CSS。

这个项目提供了一种创新的方式,将CSS编写集成到Go开发流程中,适合需要服务器端样式控制的场景,同时保持灵活性和简洁性。