2024-01-05

50 篇热帖

1. Clicks – Physical keyboard for iPhone (www.clicks.tech)

Clicks – iPhone 物理键盘配件

产品概述:Clicks 是一款专为 iPhone 设计的物理键盘保护壳,旨在提供真实的按键输入体验,释放更多屏幕空间,并增强工作效率。

核心优势与功能

  1. 真实的按键体验

    • 提供令人满意的实体按键和清脆的点击声,带来更自然、更有成就感的输入感觉。
  2. 优质的防护设计

    • 采用拉丝金属侧键、微纤维内衬以及全新的外壳,在提供出色保护的同时,提升手持质感。
  3. 释放屏幕空间

    • 通过物理键盘取代屏幕虚拟键盘,可释放高达50%的可用显示区域,方便用户进行工作、娱乐、浏览和社交。
  4. 快速自定义操作

    • 支持一键启动自定义快捷方式。用户可个性化设置键盘,以控制智能家居、启动应用、发送信息或呼叫联系人。
  5. 提升移动生产力

    • 帮助用户在离开书桌时也能更高效地工作,旨在减少对笔记本电脑的依赖。

产品信息与用户反馈

  • 兼容型号:适用于 iPhone 17、16、15 和 14。
  • 用户评价:基于5,328条评论,反馈积极。
  • 试用政策:提供30天试用期。适应实体按键输入可能需要一到两周时间,若产品不适合,可获得全额退款。
2. Go: What we got right, what we got wrong (commandcenter.blogspot.com)

这是Go语言核心贡献者Rob Pike在GopherConAU 2023闭幕演讲的内容总结,回顾了Go项目开源14年来的经验与教训。他强调Go的初衷并非仅是创建一门新语言,而是提供一种更好的软件构建方式

项目做对了什么

Rob Pike认为以下几点对Go的成功至关重要:

  • 正式的语言规范:使多个编译器实现成为可能,确保了行为一致性。
  • 跨平台编译:极大简化了开发与部署流程。
  • 兼容性保证:自1.0版本后严格遵守,为用户提供了极高的稳定性。
  • 强大的标准库:覆盖了构建现代服务器软件的大部分需求,统一了社区实践。
  • 优秀的工具链:易解析的语言设计催生了丰富的工具,特别是 gofmt 成功推行了统一的代码风格,并成为了其他语言的典范。
  • 并发模型:Go通过goroutine和channel将CSP模型引入主流,降低了并发编程的复杂度。
  • 接口设计:基于方法集的隐式接口是Go面向对象设计的核心,也是库设计和组合的基石。

项目做错了什么

演讲也坦诚地反思了几个主要失误:

  • 并发宣传不足:早期未能清晰区分“并发”(程序结构)与“并行”(执行方式),导致许多开发者误用并困惑于性能。
  • 包管理历程曲折:从零开始处理依赖管理问题时低估了其复杂性,与社区的沟通和协作过程也存在不足,经历较长波折后才趋于稳定。
  • 文档缺乏示例:最初过于注重功能描述,忽视了示例的重要性,后来才补充了大量可执行示例(包括Playground)。
  • 吉祥物版权许可:地鼠(Gopher)采用CC-BY许可,虽鼓励创作但也引发了归属权和滥用的争议。
  • 项目管理与沟通:从私有开发转向开源后,团队与社区在目标、流程和代码质量标准上的磨合花了较长时间,初期沟通效率有待提高。

总结

Rob Pike总结道,Go的成功源于其作为软件工程项目的整体设计——关注可维护性、可读性和生产效率,而非仅仅是语言特性。尽管在沟通、包管理和文档等方面有值得改进的地方,但Go通过其工具、兼容性、并发和接口等关键设计,最终塑造了代码风格统一、社区协作高效的生态,这可能是主要编程语言中的首次。

3. Sit. (sonnet.io)

《Sit.》是一款极其简单的计时器应用,旨在鼓励用户暂时放下忙碌,安静地坐着。

核心功能

该应用的功能近乎原始:用户设定一个时长,随后只需静坐。时间结束后,应用会发出一声柔和的钟响,此后每分钟重复一次,直到用户手动关闭,以确保用户不会失去时间感。它没有其他复杂交互,旨在让用户专注于“静坐”本身。

创作动机

作者创建此应用主要基于三个原因:

  1. 归还时间:作者认为当前的互联网(尤其是社交媒体)已成为一种消耗用户时间、注意力和金钱的机器。他希望创造一个相反的东西——一个不试图填塞用户大脑、而是归还片刻时间的工具。使用Sit.时,用户只能选择关闭页面或静坐,这迫使用户直面自己的思绪,结束后反而可能感到更佳。
  2. 寻求动力:作者辞去全职工作后转做个人项目,在构建日常结构时容易陷入僵局。他决定构建一个极小、确保能完成并分享的项目来提振士气。这体现了迭代设计方法的价值:短反馈循环和为他人构建产品能带来成就感和动力。
  3. 关注心理健康:作者从专业和个人角度关注心理健康。他将Sit.设计为一种习惯强化工具,用于支持他日常的冥想练习(特别是“shi-nè”禅修)。该练习要求不聚焦于任何事物,初期可能令人不适。Sit.温和的计时器设计(结束后缓慢重复提醒,而非粗暴的闹钟)允许用户有时间反思,帮助将起初可能“烦人”的活动与积极感受关联,从而更容易坚持习惯,起到预防心理问题的作用。

更广泛的理念

文章也借此探讨了更广泛的议题,包括:

  • 极简工具哲学:作者喜爱“原子化”、目的极其简单的工具。Sit.正是这一理念的实践。
  • 对时间与注意力的反思:文中尖锐批评了主流网络对用户时间的掠夺。
  • 迭代与心理收益:指出敏捷开发等迭代方法不仅有助于解决问题,对维持创作者的心理健康和动力也有重要意义。
  • 心理健康的低垂果实:作者感慨社会对遥远科技狂热的投入,与现实中大量可被释放的人类潜能之间的落差。

后续计划

作者表示本文旨在探讨Sit.背后的 wider ideas。下一篇文章将借此应用介绍他将一个初步想法转化为可用软件的快速原型开发流程,涵盖用户研究、以人为本的设计和编码。文章结尾强调,使用Sit.的每一分钟,都是用户为自己夺回的时间。

4. Don't pass structs bigger than 16 bytes on AMD64 (gist.github.com)

文章标题指出,在AMD64架构上传递大于16字节的结构体会导致性能问题。作者通过优化自己的编程语言Neat,实现了2倍的性能提升。核心发现是:将Neat中的数组(包含三个指针,共24字节)从作为单一结构体传递改为分别传递三个独立的指针参数,显著加快了执行速度。

问题根源:根据SystemV AMD64 ABI规范,超过16字节的结构体参数会通过内存(即栈)传递,而不是通过寄存器。这会导致函数调用时频繁的栈内存分配和复制操作,产生大量开销。尽管LLVM优化器很强大,但对此类情况优化空间有限。

基准测试验证:文章提供了一个简单的C语言基准测试,比较传递一个包含三个double的结构体(24字节)与分别传递三个double字段的性能差异。结果显示,分别传递字段的方式(5.3秒)远快于传递结构体的方式(12.3秒)。检查汇编代码发现,结构体方式需要大量栈操作,而字段方式可以直接使用SSE寄存器,这与ABI最初设计的意图(尽量使用寄存器)相符,却在此失效。

性能退化本质:这种将大结构体放在栈上再传递指针的方式,实际上等同于退化到了旧的x86 cdecl调用约定(所有参数通过栈传递),该约定以缓慢著称。

优化影响范围:在实际代码中,内联可以消除这种差异。但并非所有函数都适合内联。对于非C语言的内部高级类型(如数组、元组),作者建议语言实现者可以决定其传递方式,将其拆分为独立字段传递以获得性能收益。

结论与建议:在AMD64平台上,无论是开发语言还是优化API,作者建议手动将超过16字节的结构体拆分为独立字段传递,尤其是在性能关键的内循环中,可能会带来显著的速度提升。

附录说明:即使结构体成员是double类型(按规范属于SSE类),当结构体大于16字节时,仍然无法通过寄存器传递,原因不明。

5. Cold showers on overhyped topics (2017) (github.com)

对热门话题的理性思考(2017)

本文列举并评估了多个在技术领域中被过度热炒的话题,并提供了基于研究或实践的“冷水”观点,旨在提醒人们保持冷静和理性。文章强调,这并不是否定热情,而是主张以更踏实的态度看待这些技术或理念。

主要话题及“冷水”观点

1. 形式化验证

  • 热炒观点: 形式化验证是编写软件的好方法,我们应该证明所有代码的正确性。
  • 冷水观点: 大量文献回顾表明,形式化方法学习难度大、应用成本极高,并且常常会遗漏关键缺陷。
  • 注意事项: 该文献发表于2000年,未涵盖现代工具(如TLA+或依赖类型)。

2. 静态类型 vs 动态类型

  • 热炒观点: 静态类型能减少Bug。
  • 冷水观点: 对截至2014年所有可用文献的综述显示,严谨的研究结论不确定,而结论确定的研究存在方法论问题。
  • 注意事项: 未涵盖静态类型的其他潜在益处(如作为文档),也未涉及渐进类型系统的研究。

3. 大数据系统的必要性

  • 热炒观点: 处理大数据需要大数据系统。
  • 冷水观点: 基准测试显示,在128核集群上运行的先进图处理算法,性能经常不如一台单线程的2014款MacBook Pro,有时差距高达一个数量级。
  • 注意事项: 作者算法优化能力极强。大数据系统在需要临时查询且不愿花时间优化时可能更优。作者建议:如果你自己用,请确保它比你的笔记本快;如果你为别人构建,请确保它比我的笔记本快。

4. Web框架性能与可扩展性

  • 热炒观点: 各种关于编程语言、Web框架、数据库的性能或可扩展性的说法。
  • 冷水观点: 提供了不同技术栈在不同任务下的实际硬数据。
  • 注意事项: 提供的是原始数据,需自行解读。

5. 敏捷开发方法

  • 热炒观点: 我们应该使用敏捷方法开发软件。
  • 冷水观点: 回顾了各种敏捷风格,指出某些实践(特别是用用户故事取代需求、缺乏规范说明)长期来看是有害的。
  • 注意事项: 作者总体上对敏捷持积极态度,认为它是一种良好(但不完美)的方法论。

6. 形式化验证系统的正确性

  • 热炒观点: 如果我形式化验证了代码,就不需要测试了!
  • 冷水观点: 研究人员检查了三个经过形式化验证的系统,均发现了关键正确性缺陷。这些缺陷源于“广泛的不匹配假设”,会导致服务器崩溃或产生错误数据。
  • 注意事项: 多数缺陷发生在系统边界;已实现的协议中未发现缺陷。形式化验证的系统缺陷虽不完美,但比未验证的系统少得多。

7. 标识符命名:缩写 vs 全称

  • 热炒观点: 标识符应自文档化!使用全称而非缩写。
  • 冷水观点: 研究让程序员修复代码库中的缺陷,一组代码所有标识符为缩写,另一组为全称。结果发现,在调试时间或质量上无差异。
  • 注意事项: 仅适用于修复缺陷的场景。研究设计非常严谨。

8. 驼峰命名法与下划线命名法

  • 热炒观点: 驼峰命名法比下划线命名法更易读,因此是最佳实践。
  • 冷水观点: 通过眼动追踪研究发现:(1)开发者对两种风格的准确性相同;(2)下划线风格能被更快、更轻松地处理。
  • 注意事项: 研究样本量小(15人),且受试者主要接受下划线风格训练。研究中以孤立单词呈现,可能存在上下文差异。

9. 微服务架构

  • 热炒观点: 微服务!微服务!
  • 冷水观点: 列举了关于“微服务能解决单体架构问题”的五个谬误,并指出要么单体架构本身没有那些问题,要么微服务会使问题更糟。
  • 注意事项: 主要为抽象论证和经验之谈,缺乏案例研究或实例。

10. 虚拟机预热性能

  • 热炒观点: 你喜爱的编程语言更新了,新版本声称性能有显著提升。
  • 冷水观点: 在近理想条件下对现代编程语言进行基准测试(时间比通常更长)表明,我们并未像期望的那样准确地评估语言实现。许多基准测试性能随时间下降,有些从未稳定。预热时间很重要,但常被忽略或报告不准确。
  • 注意事项: 仅评估x86_64架构和两个操作系统(Linux和OpenBSD)。实验于2017年进行(未包含熔断补丁)。

11. SQLite的单服务器扩展

  • 热炒观点: 横向扩展优于纵向扩展。云比裸金属更具可扩展性。
  • 冷水观点: Expensify发现,运行单台裸金属服务器比使用x1e.32xlarge EC2实例更快、更便宜。通过使用单服务器,他们避免了数据分片。
  • 注意事项: 未涵盖裸金属横向扩展是否也优于EC2横向扩展。无法真正比较成本差异,因未列出裸金属服务器价格。

12. Go语言的并发缺陷

  • 热炒观点: 与其他语言相比,Go的goroutine和通道并发系统更易理解、使用,且不易产生Bug和内存泄漏。
  • 冷水观点: 根据Tu等人的实证研究,存在大量与并发相关的缺陷,这些缺陷源于理解和使用Go提供的并发特性和模式的困难。
  • 注意事项: 研究仅针对Go语言。通道和共享内存导致的缺陷类型不同。研究了包括Docker、Kubernetes和gRPC在内的六个流行Go软件,分析了171个并发缺陷,其中超过半数由非传统的、Go特有的问题引起。
6. June 30th, 2024, will bring the End of Life (EOL) of CentOS Linux (2023) (www.redhat.com)

文章摘要

本文核心内容是提醒用户关注 2024年6月30日 这一关键时间节点,届时 CentOS Linux 将到达生命周期终点(EOL),同时 Red Hat Enterprise Linux 7 (RHEL 7) 也将到达维护终点(EOM)。文章旨在告知用户此变化,并指导如何为现有系统规划平稳过渡。

主要要点:

  1. 时间紧迫性:文章强调2024年6月30日迫在眉睫,建议立即开始规划和迁移工作,避免临近截止日期时匆忙应对。
  2. 迁移路径选择:用户面临多种技术路径以保持系统在支持期内:
    • 方法一(传统但繁重):购买新硬件或启动新的云实例,安装最新版RHEL,并迁移应用数据(“彻底替换”)。
    • 方法二(容器化):在新的RHEL 8/9服务器上部署Podman容器主机,将应用打包进容器(如UBI镜像),但需要较多工作量。
    • 方法三(推荐:原地转换与升级):这是文章重点介绍的两阶段流程,由红帽官方支持,旨在保留现有配置和自定义。
      • 第一阶段:从CentOS Linux转换为RHEL
        • 前提:将系统先升级到 CentOS Linux 7.9 并更新所有软件包。
        • 操作:使用 convert2rhel 工具进行原地转换。
        • 结果:得到受红帽支持的RHEL 7.9系统。
      • 第二阶段:从RHEL 7原地升级到RHEL 8
        • 前提:确保RHEL 7.9系统所有软件包已更新至最新。
        • 操作:使用 Leapp 工具进行升级,包括运行预升级评估、解决问题并执行升级。
        • 结果:得到仍有长期支持的RHEL 8系统。
  3. 红帽的支持与资源
    • 官方支持:在转换和升级过程中如遇问题,用户可以寻求红帽的技术支持。
    • 可选延长支持:对于RHEL 7,红帽提供付费的扩展生命周期支持(ELS)订阅。
    • 实践资源:文章末尾提供了官方文档链接和交互式实验环境(供用户自行尝试转换和升级过程)。

总结

文章是一份强烈的行动呼吁和迁移指南,敦促系统管理员为CentOS Linux和RHEL 7的终止支持做好准备。红帽提供了详细、受支持的原地迁移路径(从CentOS到RHEL,再从RHEL 7到RHEL 8)以及必要的工具和资源,以帮助用户在截止日期前完成过渡。

7. Project Oberon: Design of an operating system, a compiler, and a computer [pdf] (people.inf.ethz.ch)
# 《Project Oberon》项目总结

本文是对《Project Oberon: The Design of an Operating System, a Compiler, and a Computer》一书核心内容的概括。该项目由Niklaus Wirth和Jürg Gutknecht于1986至1989年间完成,其主要目标是设计并实现一个完整的、简洁的软件系统,使其能够被完整地描述和理解。

## 设计哲学与核心概念

Oberon系统的设计哲学是“少即是多”,强调简洁性、模块化和可扩展性。其核心思想包括:

1.  **单线程与非抢占式任务调度**:系统运行在一个单一的进程中,通过一个中央事件循环处理用户交互。任务切换仅发生在完整的命令(原子操作)执行之间,避免了复杂的锁机制和死锁问题。
2.  **视图与命令**:屏幕被分割为不重叠的矩形区域(视图),每个视图关联一个交互任务。命令是模块中导出的无参过程,用户通过鼠标点击文本中显示的命令名称来调用。全局变量(如视图及其内容)可在命令间传递,状态持久且可见。
3.  **可扩展性**:通过Oberon语言的类型扩展机制,系统能轻松添加新功能模块(如图形编辑器),这些模块可以继承并扩展现有数据类型(如显示帧)。
4.  **集成文本处理**:文本被抽象为核心数据类型,具有持久化、可编辑的特点,可直接作为命令的输入/输出,实现了编辑器、编译器和文件系统的深度集成。

## 核心系统模块

系统结构是一个分层的模块图,以下是关键模块:

*   **任务与命令管理 (Module Oberon)**:包含中央事件循环、命令调用机制以及鼠标/键盘光标管理。
*   **显示系统 (Modules Display, Viewers, MenuViewers)**:采用分层分块策略管理屏幕空间。`Display`提供底层光栅操作;`Viewers`管理逻辑显示区域的划分;`MenuViewers`实现包含菜单和内容区域的标准视图结构。视图通过消息传递机制进行交互。
*   **文本系统 (Modules Texts, TextFrames, Fonts)**:`Texts`模块实现文本的抽象数据类型,采用高效的“片段链”结构存储带格式的文本。`TextFrames`模块负责文本的渲染和交互式编辑。`Fonts`管理字形库。
*   **文件系统 (Modules Files, FileDir)**:`Files`模块将文件抽象为字节序列,通过“骑手”进行访问。文件在物理上由固定大小的扇区链表存储。`FileDir`模块管理文件目录,采用B树结构以实现高效检索。文件系统设计为不回收被引用的文件空间,以确保片段链等高级结构的正确性。
*   **存储管理 (Module Kernel)**:管理内存布局,包括模块空间、栈和堆。堆分配采用空闲链表,垃圾回收使用标记-扫描算法。标记阶段通过反转指针的遍历算法实现,无需额外栈空间。
*   **设备驱动 (Modules Input, Kernel等)**:封装了PS/2键盘鼠标、SD卡(磁盘)、串行通信(网络)等硬件接口,为上层提供统一抽象。

## 编译器与硬件

*   **Oberon语言与编译器**:Oberon语言本身是Modula-2的精简和扩展,添加了类型扩展特性。编译器设计紧凑,分为扫描器、解析器、代码生成器三部分,能高效地生成RISC指令代码,并具备自编译能力。
*   **RISC处理器**:为追求软硬件设计的简洁与一致性,项目设计了一个名为RISC的简单处理器,仅包含14条指令,无流水线或缓存等复杂优化。该处理器使用Verilog硬件描述语言设计,并可在FPGA上实现。
*   **系统环境**:包括SRAM存储、外围接口(PS/2、SPI、RS-232)、显示控制器等,均通过硬件模块描述并与处理器集成。

## 总结

Project Oberon展示了一个从硬件到操作系统、编译器、应用程序完全自主研发的案例。它证明了通过严谨的工程原则——注重本质、排除冗余、模块化与抽象——可以构建出代码量小、结构清晰、易于理解且功能完整的系统,从而反驳了“软件膨胀定律”。该系统虽然在某些方面简化了(如不支持多用户、有限的GUI功能),但其设计思想和实现细节对于理解系统构建的本质具有极高的教育价值。
8. Apple's classic Pascal poster, remade as a vector image [pdf] (www.danamania.com)

本文档为名为“PascalPosterV3A1”的PDF文件,它是将Apple经典的Pascal海报重新制作为矢量图像的成果。该文件基于PDF 1.4格式,并使用Adobe Illustrator 27.4(Macintosh版)在2023年4月12日创建和修改。

文件元数据表明它是一个线性化的PDF,不包含AcroForm、XFA、集合或签名信息。文档标题为“PascalPosterV3A1”,由Adobe PDF库17.00生成。创建工具记录显示为Adobe Illustrator,同时包含详细的XMP(可扩展元数据平台)信息,如创建日期、修改日期和缩略图。

文件的主要技术特征包括:

  • 单页文档。
  • 页面尺寸为A1尺寸(594.000000 x 841.000000 毫米)。
  • 包含可见的叠印效果。
  • 使用CMYK四色印版(Cyan, Magenta, Yellow, Black)和默认色板组。

文档内容部分显示了第一页,并包含一个以Base64编码的JPEG格式缩略图图像。XMP元数据还记录了文档的历史记录,包括两次使用Adobe Illustrator保存的操作。

9. AMD proposes an FPGA subsystem user-space interface for Linux (www.phoronix.com)

AMD 为 Linux 提出 FPGA 子系统用户空间接口

AMD 向 Linux 内核社区提交了一项提案,旨在为其 FPGA 设备建立一个标准化的用户空间接口子系统。

  • 核心目标:该提案旨在规范用户态应用程序与 FPGA 硬件之间的通信方式,提供统一的访问接口。
  • 技术意义:通过定义清晰的接口,有望简化 FPGA 的开发流程,提升系统性能与稳定性,并增强不同 FPGA 设备在 Linux 平台上的兼容性和可移植性。
  • 背景:此动向是 AMD 在开源 Linux 生态系统中持续投入,以优化其硬件支持与开发体验的一部分。
10. An app can be a home-cooked meal (www.robinsloan.com)

文章核心观点总结

本文作者Robin Sloan分享了为家人开发一款极简私密消息应用“BoopSnoop”的经历与思考。他通过这个项目阐述了对软件开发的一种新理解:编程可以像家常烹饪一样,是一种为特定人群、特定需求服务的个性化活动,其核心价值在于情感连接、自主控制和满足个人需求,而非追求市场规模化。

具体内容梳理

  1. 灵感来源与问题:作者曾长期使用一款名为Tapstack的应用与远方家人保持联系。该应用极其简单,专注于即拍即发的图片/视频“堆栈”,传递“我想你了”的 ambient presence(环境在场感),而非实用通讯。当Tapstack于2019年关停时,作者不愿将家庭交流迁入Instagram或WhatsApp这类被其他内容“包围”的商业平台,于是决定自建一个替代品。

  2. 应用设计与实现

    • 设计理念:BoopSnoop是对Tapstack的进一步简化。它无需登录、无需联系人管理,已内置全部使用者。核心功能仅为一个“魔法窗口”,用于拍摄、发送和查看全屏照片/视频,查看后即消失。界面几乎为零,仅有一个拍摄按钮和一个消息提示标。
    • 技术实现:应用前端基于开源的相机组件;后端仅需一个AWS S3存储桶和几个AWS Lambda函数来处理消息流转,结构极为简单。应用通过TestFlight分发给家人,并计划永久保持在此“测试版”状态。
    • 开发体验:作者坦言,得益于成熟的开源组件和示例代码,核心功能实现相对轻松,但大部分开发时间耗费在了iOS的代码签名和配置等繁琐流程上。由于应用完全定制化且包含专属密钥,他没有公开源码。
  3. 核心思想:编程如家常烹饪

    • 作者认为自己并非专业软件工程师,而是“编程的家常厨师”。他将“学编程”与“学烹饪”类比:后者不一定是为成为职业厨师,更多是为了更好地生活、传承文化、表达关爱。
    • 当编程脱离“必须职业化、可规模化”的要求后,它便成了一种全新的活动,类似于在家烹饪。这种活动能带来与为所爱之人做饭相似的满足感,并额外带来一种独特感受:独立、安全与掌控感
    • 这个家庭应用不会因外部力量而突然改变(如 redesign、广告),其命运由家人自己决定。作者认为这种感觉就是“家”的感觉。
  4. 成果与验证:文章附带的年度更新显示,从2020年至2025年,这款应用仍在被家庭成员日常使用。除了应母亲要求添加过一个功能外,作者多年来未再做任何更改,印证了其“家常菜”式软件的稳定性与持久性。

11. Making the web fun again (2013) (blog.neocities.org)

《让网络重拾乐趣》(2013年)内容摘要

核心论点

作者认为,早期互联网(如GeoCities时代)充满了自由创造与探索的乐趣,但商业化收购和社交网络的崛起扼杀了这种创造力,将网络变成了同质化的消费平台。他创建NeoCities项目的目的,正是为了重建一个鼓励个人表达和创造力的开放网络空间。

关键内容梳理

1. 早期互联网与GeoCities的教训

  • 早期网络体验:作者从童年通过文本浏览器访问网站的经历中感受到,互联网将深刻重塑文化,但过程中难免犯错。
  • Dot-Com泡沫的影响:2000年前后,泡沫催生了创新但也导致贪婪扩张。大公司高价收购初创企业后却未能妥善经营。
  • GeoCities的消亡:Yahoo于1999年以35.7亿美元收购GeoCities,但其“有毒的收购方式”最终导致该平台关闭。作者强调,GeoCities的关闭并非因为过时,而是因为母公司摧毁了其核心价值——让用户自由创建并掌控个人网站。

2. 对比当下网络生态

  • 创造力的丧失:过去的网络像“冲浪”,充满探索未知的冒险感;现在的社交网络(如Facebook)则像“郊区封闭社区”,个人主页高度同质化,内容千篇一律。
  • 从创造到消费:用户不再主动创造内容,而是被动消费和汇报消费行为,网络变得“沉闷、可悲、以消费为导向”。
  • 隐私与监控问题:用户在社交网络上的行为受到监控,类似“数字铁幕”。

3. NeoCities项目的设计与愿景

  • 目标并非怀旧:不是为了模仿GeoCities,而是重建一个支持自由创作的平台,让用户能完全控制网站的内容与形式。
  • 技术优势:现代Web技术(HTML5、CSS框架如Bootstrap)让创建美观、跨浏览器兼容的网站变得更容易。作者以一个基于浏览器的《小马宝莉》互动指南为例,说明静态HTML的强大与易用。
  • 初期成效:上线一周内已创建1,600多个网站,其中不少质量出色,且用户群体中包含正在学习HTML的初学者。
  • 可持续模式:静态HTML易于扩展和低成本托管。初始存储限制为10MB(计划扩展至20MB以上),服务器成本由作者自掏腰包承担。未来计划通过捐赠和支持者账户维持运营,拒绝风险投资,保持项目可持续性。
  • 开源与社区支持:NeoCities的源代码公开,欢迎社区参与开发。

4. 呼吁行动

  • 作者鼓励读者立即行动,创建自己的网站,重拾网络的创造乐趣,并感谢参与者让网络再次变得有趣。

总结

本文通过回顾互联网从开放创造走向封闭消费的历程,批判了当前社交网络对个人表达的压制,并介绍了NeoCities如何利用现代技术重建一个简单、自由、充满乐趣的网站创建平台,旨在恢复互联网的创意本质。

12. SIMD in Pure Python (www.da.vidbuchanan.co.uk)

SIMD in Pure Python

本文探讨了在纯Python(仅依赖语言本身和标准库)中实现类SIMD(单指令多数据)性能的方法。作者通过一系列实验和优化,最终在生命游戏(Game of Life)应用中实现了在4K分辨率下180fps的性能,相比朴素实现提速约3800倍。

核心概念与方法

1. 伪SIMD (Pseudo-SIMD)

  • Python本身不支持硬件SIMD指令,但其大整数(arbitrary-precision integers) 为位并行操作提供了可能。
  • 核心思想:将数据(如字节序列)打包进一个巨大的Python整数,利用按位运算符(&, |, ^) 一次性处理所有位。
  • 例如,一个将两个字节序列进行XOR的函数,可以通过将字节转为整数、执行一次^操作、再转回字节来实现。这相当于在布尔位级别上执行了SIMD操作。
  • 基准测试显示,对于缓冲区XOR操作,这种伪SIMD方法在数据量较大时,性能远超逐元素循环的朴素实现,甚至能与使用NumPy的实现相媲美。

2. CPython内部的“免费”SIMD

  • 伪SIMD的性能优势,部分源于CPython大整数运算的底层C实现。
  • 作者通过反汇编发现,CPython 3.11中用于两个大整数XOR的循环,被其编译器自动向量化为使用ARM NEON(一种SIMD指令集)寄存器的代码。
  • 这意味着,在纯Python层面使用位运算操作大整数时,实际上间接利用了CPU的硬件SIMD指令,从而获得了接近原生代码的并行处理能力。

3. SWAR/SWAB:寄存器内的SIMD

  • 超越简单的位运算,可以将多个固定宽度的小整数“打包”进一个Python大整数(称为SWAB: SIMD Within A Bigint)。
  • 关键挑战是处理进位传播(carry propagation)。解决方案是在数据位之间保留足够的“填充位”,并在运算后通过掩码操作清除溢出。
  • 这种方法可以用于并行的加法、减法、移位等操作,最大化每个Python虚拟机指令所完成的工作量,减少解释器开销。

应用案例:高性能生命游戏

1. 算法转换

  • 朴素实现:需要双重循环遍历网格的每个单元格,计算邻居数量并应用规则,时间复杂度O(n)。
  • SWAB优化实现:将整个网格状态编码为一个大的Python整数,其中每个单元格用4位(4-bit)表示。
  • 通过精心设计的移位(shift)、加法(add)和掩码(mask)操作序列,一次性计算出所有单元格的邻居总和,并根据规则更新状态,完全消除了显式的双重循环。实际的O(n)工作量被隐藏在快速的大整数原生操作中。

2. 性能突破与并行化

  • SWAB优化:将算法从朴素实现切换为SWAB实现后,在4K分辨率下获得了约450倍的性能提升(从0.4fps到180fps,使用8进程并行)。
  • 并行化架构
    • 生命线程:每个进程负责计算网格的一个水平条带,进程间通过管道通信以处理边界重叠。
    • Blitter线程:使用SDL2将SWAB缓冲区解包转换为可渲染的RGBA表面。
    • 渲染线程:负责将表面上传到GPU纹理并管理SDL事件。
    • 通过多进程来规避Python的GIL限制,利用多线程进行高效的图形数据准备。

3. 最终成果

  • 最终实现:在4K分辨率(3840x2160)下,使用8个并行生命进程,达到了180fps
  • 对比:相较于单线程的朴素实现,获得了约3800倍的加速

总结

作者通过创造性利用Python大整数的底层特性和CPython实现的自动向量化,在纯Python中实现了高效的SIMD风格计算。虽然存在内存分配、带宽开销等固有局限,但结合SWAR/SWAB技术和多进程并行,成功将计算密集型应用(如生命游戏)的性能提升到实用水平,展示了纯Python优化的巨大潜力。

13. Niklaus Wirth, 1934-2024: Geek For Life (tidyfirst.substack.com)

Niklaus Wirth (1934-2024):一生极客

本文通过作者的三次个人回忆,勾勒了已故计算机科学家Niklaus Wirth教授的学术形象与人生哲学。

三次相遇

  1. 初次接触(远程):作者在大学编程入门课程中首次通过 Pascal 语言接触到Wirth的工作。Pascal的严格规则与简洁性,与他之前接触的BASIC、FORTRAN等语言形成鲜明对比,给作者留下了深刻印象。
  2. 偶然发现:作者一家居住在瑞士苏黎世附近的Zumikon村期间,曾看到有人在山脊上操纵遥控飞机,后得知Wirth教授正是其中一员。
  3. 关键对话:在飞往尼斯参加学术会议的航班上,作者与Wirth教授意外成为邻座。航班延误的四小时里,两人都选择了编程度过。交谈中,Wirth教授透露他当时正在用自己设计的 Oberon 语言为自制的遥控直升机编写飞行控制软件。讨论中,当作者热情介绍新兴的“极限编程”与重构时,Wirth教授回应道:“我想,如果你不知道该怎么设计软件的话,那些(方法)确实是不错的。”——这句话深刻体现了他的设计信念。

从Wirth教授身上学到的四点启示

作者总结了从Wirth教授言行中获得的核心启发:

  • 第一性原理:他在语言与编程环境的所有工作中都基于清晰的原则。他不仅知道自己偏爱什么,更坚持理解背后的“为什么”。
  • 专注:如果他判断你没有浪费他的时间,他会非常慷慨;反之则不然。
  • 个人计算观:计算机是扩展人类思维的设备。他通过Oberon及其后续项目所体现的理念(与Forth、Smalltalk等各有不同)都共享着同一愿景:人是工匠,计算机是工具
  • 终身极客:Wirth教授在70岁高龄时仍在编写嵌入式软件,并全神贯注地将编程融入生活的每个缝隙。这激励了作者,也诠释了“一生极客”的精神。

Niklaus Wirth教授以其简洁有力的编程语言设计(如Pascal、Modula、Oberon)和对计算本质的深刻思考而闻名,本文生动地展现了他作为一位充满原则、专注、富有洞察力且终身热爱技术的实践者的形象。

14. YouTube demonetizes public domain 'Steamboat Willie' video after copyright claim (mashable.com)

YouTube主播Brock Baker于2024年1月4日上传了一段名为“Steamboat Willie (Brock's Dub)”的视频,对其1928年迪士尼动画短片《Steamboat Willie》进行了喜剧配音和音效改编。该视频在短时间内被YouTube取消货币化,并在某些地区被屏蔽,原因是收到了来自迪士尼的版权主张。

关键背景是,《Steamboat Willie》及其主角米老鼠的早期版本已于2024年1月1日进入公共领域,这意味着该作品不再受版权保护,任何人可自由使用、复制和改编。法律专家指出,Baker的视频无需依赖合理使用或戏仿辩护即可合法存在,因为公共领域作品被视为公共财产。

事件发生后,分析认为YouTube可能未及时更新其自动Content ID系统,该系统会扫描上传内容并与版权数据库匹配,导致将公共领域作品误判为侵权。文章呼吁YouTube应调整系统以自动处理新进入公共领域的作品。

后续更新显示,迪士尼于2024年1月5日撤回了对Baker视频的版权主张。整个事件突显了公共领域作品在数字平台上可能面临的自动化版权管理挑战。

15. WebRTC for the Curious (2020) (webrtcforthecurious.com)

《WebRTC for the Curious》(2020) 书籍总结

核心定位

  • 由实现者编写:一本由WebRTC实现者创建的开源书籍,旨在分享第一手的实践经验与知识。
  • 深度解析导向:针对不满足于抽象概念、渴望深入底层的学习者,重点聚焦于协议与API,而非特定软件。
  • 全面且无偏见:旨在提供一个全面、中立的资源,帮助读者理解WebRTC这项强大但具有挑战性的技术。

目标读者

  1. WebRTC新手开发者:希望系统学习。
  2. 现有WebRTC开发者:寻求超越API使用的深层理解。
  3. 需要调试帮助的资深开发者
  4. WebRTC实现者:需要对特定部分进行澄清或验证。

结构与特点

  • 模块化设计:各章节独立自成一体,读者可以从任何章节开始阅读,无需按特定顺序。
  • 章节格式:每个章节围绕一个核心问题,通过三个层次进行解答:
    1. 需要解决什么问题?
    2. 如何解决? (包含技术细节)
    3. 去哪里了解更多?
  • 无需预备知识:读者可以随时开始学习,同时书中也提供了进一步研究每个主题的资源。
  • 定位权衡:旨在教授整个系统,因此在深度上不如专门主题的书籍详尽。

内容与价值

  • 核心价值:总结RFC规范,并汇集了大量未文档化的实践知识。
  • 非教程性质:包含的代码量极少,侧重于原理和机制的阐述。

获取与许可

  • 开放获取:可在 GitHub 和 WebRTCForTheCurious.com 网站上在线阅读。
  • 格式:提供 ePub 和 PDF 下载。
  • 许可协议:采用 CC0 许可(公共领域奉献),无需署名,可自由使用。

社区与隐私

  • 欢迎贡献:鼓励通过 GitHub 仓库参与,包括提交问题、建议改进或直接贡献。
  • 隐私承诺:网站由个人编写,为个人服务,采用与厂商无关的立场,无利益冲突,且网站上不包含任何分析或跟踪代码
16. DIY Book Scanner (www.diybookscanner.org)

DIY 书籍扫描仪社区概述

我们是一个专注于构建书籍扫描仪的社区,致力于将书籍保存掌握在自己手中。我们是连接您的书架和电子阅读器的关键桥梁。欢迎加入我们!您可以尝试简单的扫描仪、套件组装,或探索扫描技术的极限来参与其中。

书籍扫描仪是用于将书籍页面数字化的设备,每个扫描仪都包含三个核心部分:

  • 相机:用于捕捉每一页的图像。
  • 控制器:触发相机并保存拍摄的照片。
  • 扫描支架:提供理想的摄影环境并整合所有组件。

最新动态

  1. Pi Scan 1.0 发布
    Pi Scan 运行在 Raspberry Pi 上,可控制两台相机进行书籍扫描。1.0 版本修复了众多错误,并新增了缩放和快门速度调整功能,支持多种输入方式(键盘、鼠标、触摸屏、脚踏板、按钮)来触发相机。
  2. Archivist Quill
    这是 Archivist 扫描仪的新版本,采用铝梁替代胶合板。现有套件可选配电子设备,其中包含预装 Pi Scan 的触摸屏、相机等即用型电子套件。

典型扫描支架的构成

扫描仪可以从简单的纸板支架、三脚架相机和手动控制,发展到具有计算机控制和高分辨率相机的复杂设备。以下是典型扫描支架的关键组件:

  • 照明:需要强大且均匀的光源,位置应尽量减少眩光和反射。
  • 相机:需稳固安装并对准页面中心,理想情况下使用两台相机同时捕捉双页。
  • 压板:通过玻璃或压克力板压平书页以避免卷曲,比后期软件处理更可靠。
  • 书本:扫描时压向压板,翻页时需移开。
  • 支架:支撑书籍的背面和书脊,V形支架可减少扫描对书籍的磨损。

开始尝试

该社区鼓励爱好者从简单设备开始,逐步探索更高级的扫描技术。

17. InVision design collaboration services shutdown (www.invisionapp.com)

核心目的:解决研究资料分散、团队协作低效的问题,将各类研究工具的输出整合到一个集中的画布上,促进团队对齐并推动洞察转化为实际行动。

主要功能与流程

  1. 聚合研究输出:支持从Claude、NotebookLM等多种研究工具中拉取内容,汇集到一个共享的数字画布中。
  2. 团队协同评审:团队成员在该画布上共同审查所有研究发现,通过讨论识别出关键洞察和重要方向。
  3. 明确方向并输出:团队基于讨论结果做出决策,确定共同方向,并将提炼后的洞察和结论流回至产品路线图、功能规格书或后续的AI提示词中,确保研究成果被有效应用于后续工作。

关键价值

  • 集中化管理:避免研究资料散落各处,提供一个统一的视图。
  • 提升协作效率:使团队能够同步进行评审、讨论和决策,加快共识形成。
  • 闭环工作流:强调将研究成果转化为实际规划或下一步行动,形成从研究到执行的闭环。
19. Modern Java/JVM Build Practices (github.com)
# 现代 Java/JVM 构建实践摘要

## 项目概述
本文是一个以项目仓库形式呈现的指南,专注于使用 **Gradle** 和 **Maven** 构建现代 Java/JVM 项目的最佳实践。它也提供了一个 Java 启动项目(适用于 JVM 上的其他语言)。项目遵循 CC0 许可证,鼓励自由复用和分享。

## 核心理念与目标
- **构建即代码**:构建流程和生产管道应与项目源代码受到同等重视。
- **一致性**:确保开发者本地环境的构建结果与持续集成(CI)及生产环境完全一致。
- **两个核心主题**:
    1.  **左移问题**:尽早发现构建和安全问题,避免其流入生产环境。
    2.  **简化开发**:自动化手动任务,让构建在本地和 CI 中提前报错。
- **启动项目**:旨在提供一个轻量级、低依赖的起点,展示最佳实践,帮助新项目快速上手,并降低新贡献者的参与门槛。

## 关键构建实践与工具
- **构建工具**:同时涵盖 Gradle 和 Maven,并提供配置示例。
- **容器化构建**:强烈推荐使用容器进行构建,以解决“在我机器上能运行”的问题。项目提供了使用 **Earthly** 进行容器化本地构建的命令(`earthly +build-with-gradle` 或 `+build-with-maven`),确保构建环境可复现。
- **依赖安全**:
    - 集成了 **OWASP Dependency-Check** 插件来扫描依赖项的已知漏洞(CVE)。
    - **重要警告**:自7月1日起,上游CVE数据API发生了重大变更。用户需将 Gradle 或 Maven 的该插件**升级至至少10.0.2版本**。首次更新后的构建会非常慢,且短期内可能因NVD服务过载而出现连接失败。
    - 建议申请 NVD API 密钥以加速CVE数据获取。
- **代码质量与分析**:建议集成合适的编译和代码质量插件(例如,可针对 Kotlin 项目进行替换)。

## 本地与 CI 构建
- 提供多种构建方式:
    - `./gradlew build` 或 `./mvnw verify`:纯本地构建。
    - `earthly +build-with-gradle` 或 `+build-with-maven`:容器化构建(推荐)。
- “启动程序”是一个简单的冒烟测试,构建成功后会输出特定字符串,以验证基本构建功能。

## 近期重大变更
- **JDK 升级**:项目已迁移至 **JDK 21**。
- **Gradle 升级**:使用 **Gradle 8.9**,并移除了 `testsets` 插件,改用 Gradle 原生的集成测试支持。
- **容器化工具调整**:停止使用已归档的 Batect,全面转向 **Earthly**。
- **文档重组**:将大部分详细内容从冗长的 README 迁移至项目的 GitHub Wiki,以便阅读和维护。

## 参与与使用
- 项目欢迎通过提交 Issue 或 Pull Request 进行贡献。
- 鼓励使用者“试驾”项目,从中挑选适合自己项目的实践,并注意根据自身环境评估建议的适用性。
- 项目会持续更新依赖版本和构建实践,使用者可参考“复用项目”指南来获取更新。
20. CellLVM: A proof-of-concept LLVM to Excel spreadsheet compiler (belkadan.com)

CellLVM: LLVM 到 Excel 电子表格的概念验证编译器

核心思想与起源

作者受朋友关于 CSV 格式的玩笑启发,意识到 LLVM 的静态单赋值(SSA)形式与 Excel 公式的工作原理高度相似:两者中,变量/单元格的值都由先前定义的表达式决定。这促使其构建一个将 LLVM 中间代码编译为 Excel 电子表格的编译器。

主要技术挑战与解决方案

  • SSA 格式匹配:LLVM 的 SSA 形式要求每个变量仅赋值一次,这与 Excel 公式的定义和引用方式天然契合。
  • 处理控制流(Phi 节点):SSA 使用 phi 节点来合并不同分支的值。作者发现 Excel 可通过“迭代计算”支持循环,并设计了一个基于“程序计数器”的变通方案来模拟 phi 节点,从而支持条件分支和循环。
  • 编译器实现:编译器代码仅约 150 行,主要功能是遍历单个 LLVM 函数,为指令和基本块分配行号,并将每条指令转换为对应的 Excel 公式。输出为一个包含三列(指令类型、值、程序计数器)的 .xlsx 文件。

当前状态与限制

  • 该编译器是一个概念验证,仅支持有限的操作集(例如,支持加法但不支持减法)。
  • 输入必须是仅包含一个函数的 LLVM 位码文件。
  • 已有一个演示视频,展示了其编译的电子表格执行一个循环加法直至结果超过 50 的过程。

未来发展方向

  1. 实现 alloca 指令:支持局部变量。这需要模拟内存加载/存储操作,可能通过追踪“最近一次匹配位置的存储值”来实现,并需处理循环中的复杂情况。
  2. 支持函数调用(特别是递归):这涉及到调用栈的模拟。一种可能的方案是使用不同的电子表格列来表示不同的栈帧,但这在设计和实现上存在挑战。

项目意义

该项目证明了将 LLVM 的 SSA 中间表示转换为 Excel 公式体系的可行性,展示了两种看似无关的技术形式在计算模型上的深刻相似性。它依赖于 LLVM(及其 Swift 包装器)和 xlsxwriter 等现有库,在作者有限的时间内得以完成。

21. You shouldn't run NSA-grade Wi-Fi at home. Here's how to do it (smallstep.com)

家庭部署NSA级Wi-Fi网络指南摘要

本文介绍了如何在家庭网络中部署符合美国国家安全局标准的WPA3 Enterprise 192-bit模式Wi-Fi,并明确指出这种配置不适合大多数普通家庭用户。

为什么不建议在家使用

  • 需要证书认证:WPA3 Enterprise不支持用户名/密码,需要数字证书,通常需要移动设备管理解决方案部署,手动管理非常复杂
  • 设备兼容性差:智能家居设备、打印机等大多数家用设备不支持企业级Wi-Fi
  • 操作复杂:需要外部认证服务器和证书颁发机构,设置和维护难度大

基本需求

  • 支持WPA2/WPA3 Enterprise的Wi-Fi接入点
  • 测试客户端设备
  • Smallstep账户(用于证书和认证服务)

技术背景:EAP-TLS与RADIUS

  • EAP-TLS:基于证书的认证协议,提供最高安全性
  • 优势:无需共享密码、双向证书认证、证书可过期更新
  • RADIUS:外部认证服务器,处理设备身份验证

部署步骤概述

1. 创建CA和RADIUS服务器

  • 在Smallstep创建设备集合,添加设备序列号
  • 配置Wi-Fi账户,提供SSID和公网IP
  • 获得RADIUS服务器配置详情

2. 配置接入点

  • 设置安全协议为WPA-3 Enterprise
  • 输入RADIUS服务器IP、端口和共享密钥
  • 启用192-bit高安全模式
  • 以UniFi设备为例演示具体配置过程

3. 设备注册与连接

iOS/iPadOS设备注册

  1. 根证书安装:下载并安装Smallstep根证书,启用完全信任
  2. 配置文件安装:通过AirDrop获取并安装.mobileconfig文件
  3. 信任设置:对RADIUS服务器根证书启用完全信任
  4. 网络连接:选择配置好的WPA3 Enterprise网络

macOS设备注册

类似iOS流程,需在钥匙串访问中手动设置证书信任

4. 证书更新

  • 证书有效期90天,需每45-60天手动更新
  • 重新AirDrop配置文件即可更新证书

5. 访客设备接入

  • 访客无需注册设备序列号
  • 需手动创建.p12证书包并传输
  • 连接时需手动选择EAP-TLS模式和证书

技术细节说明

.mobileconfig文件结构

包含三个有效载荷:

  1. 证书载荷:安装CA证书
  2. ACME证书载荷:通过ACME协议获取客户端证书
  3. Wi-Fi载荷:配置网络连接参数

192-bit模式技术要求

  • 椭圆曲线secp384r1证书
  • TLSv1.2协议
  • AES-256加密算法
  • 提供至少192位安全强度

总结

本文详细介绍了在家部署企业级Wi-Fi网络的技术方案,但强调其复杂性和局限性。适合技术爱好者作为实验项目,不建议普通家庭用户采用,因为会牺牲易用性和设备兼容性。

22. Audio2Photoreal (github.com)

Audio2Photoreal 项目摘要

项目目标

Audio2Photoreal 是一个PyTorch实现的项目,旨在从对话音频合成逼真的人物全身动作(包括面部和身体),最终生成照片级真实感的虚拟化身视频。该成果发表于CVPR 2024。

代码库内容

项目提供完整的流程支持,包括:

  • 训练代码:从头开始训练模型。
  • 测试代码:运行预训练模型进行推理。
  • 预训练模型:为特定人物提供可直接使用的模型。
  • 数据集:提供包含音频、身体姿态和面部表情注释的对话数据集。

核心功能与组件

  1. 快速开始演示:通过Gradio界面,用户可录制音频并生成对应的动画视频。
  2. 数据集
    • 包含四位参与者(PXB184, RLW104, TXB805, GQS883)的多个对话场景数据。
    • 每个场景包含:原始音频(双声道WAV)、身体关节角序列(.npy)、面部编码序列(.npy)以及缺失面部帧索引。
  3. 预训练模型:针对每位参与者训练了四个专用模型:
    • 面部扩散模型:基于音频条件生成256维面部编码。
    • 姿态扩散模型:基于音频和引导姿态生成104维关节旋转序列。
    • 引导姿态VQ Transformer:基于音频在1fps下生成离散姿态令牌。
    • VQ编码器-解码器:将连续的104维姿态空间向量量化。
  4. 模型运行
    • 面部生成:运行面部扩散模型,生成面部表情编码。
    • 身体生成:运行姿态扩散模型,需同时提供引导姿态模型,生成身体姿态序列。
    • 可视化:将生成的面部编码与身体姿态结合,通过渲染管线(需参考Codec Avatar Body项目)生成最终的逼真动画视频。
  5. 从头训练
    • 可训练四个独立的模型:面部扩散模型、身体扩散模型、身体VQ VAE和身体引导Transformer。
    • 训练依赖关系:身体引导Transformer的训练需要预先训练好的VQ模型。

安装与使用

  • 环境要求:CUDA 11.7, Python 3.9, GCC/G++ 9.0。
  • 安装步骤:创建Conda环境,安装依赖包,并下载渲染所需的资产和预训练模型。
  • 数据与模型下载:提供了脚本用于下载全部数据集和所有预训练模型(包括运动生成模型和身体解码/渲染模型)。

许可证

代码和数据集在CC-NC 4.0国际许可协议下发布。

23. Learning Regular Languages with L* Algorithm (rahul.gopinath.org)

文章总结:使用 L* 算法学习正则语言

本文是一篇教程,完整实现了 Angluin 的 L* 算法,并结合 PAC(概率近似正确)学习框架,用于在 Python 中推断黑盒程序的输入文法。其核心目标是在没有等价查询的情况下,通过成员查询学习到一个能被程序接受的输入规范(通常是一个正则文法),这在模糊测试等场景中非常有用。

核心概念与问题定义

  • 目标:给定一个黑盒程序,该程序能判断输入字符串是否被接受(例如,一个 URL 解析器接受格式正确的 URL),我们需要在不了解程序内部实现的情况下,学习其接受的语言规范。
  • 假设:程序接受的输入语言是正则语言,因此可以表示为一个确定性有限自动机(DFA)。
  • 基本要素
    • 成员查询:向黑盒提交一个字符串,获得“是”或“否”的回答。
    • 观察表:核心数据结构。行对应可到达状态的前缀,列对应用于区分状态的后缀。单元格记录了前缀与后缀组合字符串的成员查询结果(1/0)。
    • 关键属性:观察表需要满足封闭性一致性
      • 封闭性:对于所有前缀与输入符号的组合,其产生的状态必须在已有前缀集合中存在。
      • 一致性:如果两个前缀代表相同的状态(行内容相同),那么对于任意输入符号,它们转移到的下一个状态也必须相同。

算法流程(L* 主循环)

  1. 初始化观察表:从空前缀和空后缀开始,通过成员查询填充表格。
  2. 确保封闭性:检查所有前缀与输入符号组合产生的新状态(辅助行)是否已存在于前缀集合中。若不存在,则将代表新状态的前缀添加到前缀集合,并重新进行成员查询以更新表格。
  3. 确保一致性:检查是否有两个不同前缀代表相同的状态(行内容相同),但对于某个输入符号,它们转移到的状态不同。若是,则将导致不一致的“符号 + 后缀”作为一个新后缀添加到后缀集合,并更新表格。
  4. 生成假设文法:当观察表既封闭又一致时,可以从中提取出一个DFA/文法。文法中的状态对应于唯一的行内容模式,起始状态对应空前缀行,接受状态对应那些查询空后缀时为1的前缀状态。
  5. 验证与迭代:将生成的假设文法提交给“教师”进行验证。如果教师认为不等价,则提供一个反例(区分字符串)。算法利用这个反例来更新观察表(通常意味着添加新的前缀或后缀),然后重复步骤2-4。
  6. 终止:当教师判定假设文法与黑盒目标语言等价时,算法结束。

PAC 学习框架的应用

本文的关键创新在于用 PAC 学习框架替代了传统的等价查询。PAC学习提供了统计保证:

  • 参数:给定置信度 δ 和误差 ε。
  • 保证:算法以至少 1-δ 的概率,学习到一个分类误差小于 ε 的近似正确模型。
  • 实现:在验证假设文法时,“教师”不再进行精确的等价检查,而是根据 PAC 公式计算所需样本数 n,然后通过随机采样生成 n 个字符串,比较黑盒与假设文法在这些样本上的输出。如果发现反例,则将其提供给算法。
  • 评估:使用精确率召回率以及F1分数来更细致地评估学习到的文法质量,而不仅仅是简单的错误率。

辅助内容

  • 清理文法:从观察表生成的初始文法可能包含导致无限循环的非终结符,需要通过成本计算来识别并移除这些规则。
  • 上下文无关语言:文章指出,L* 学习到的正则文法可以作为更复杂语言(如上下文无关语言)的近似,识别其中的重复结构,但从 DFA 中恢复完整的上下文无关结构仍是一个开放问题。

总结

本文提供了一个完整的、可交互的Python实现,展示了如何利用L*算法和PAC学习框架,仅通过成员查询来自动学习黑盒程序的输入文法。该方法为自动化分析程序输入规范、特别是用于模糊测试的输入生成,提供了一个强大的基础工具。

24. Researchers Create First Functional Semiconductor Made from Graphene (research.gatech.edu)

首个石墨烯功能半导体的诞生

核心突破:佐治亚理工学院研究团队成功创造了全球首个由石墨烯制成的功能性半导体。这一突破为下一代更小、更快的电子设备及量子计算应用开辟了新途径。

技术背景与挑战

  • 硅的局限:当前主流的硅基半导体正逐渐触及物理极限,难以满足计算速度持续提升和设备持续微型化的需求。
  • 石墨烯的潜力与困境:石墨烯是由单层碳原子构成的二维材料,具有极高的强度、导电性和载流子迁移率。然而,其本征状态是“半金属”,缺乏半导体必需的“带隙”,这意味着它无法像传统半导体那样实现有效的电流开关,这一难题困扰了该领域数十年。

关键解决方案: 研究团队通过以下方式攻克了带隙难题并制备出功能性石墨烯半导体:

  1. 材料制备:在特殊熔炉中,于碳化硅晶圆上生长出外延石墨烯。当生长条件控制得当时,石墨烯层与碳化硅发生化学键合,并开始表现出半导体特性。
  2. 性能验证:为证明其作为半导体的功能性而不损坏材料,团队采用了“掺杂”技术,即向石墨烯系统中注入提供电子的原子。测试结果表明,这种石墨烯半导体的载流子迁移率是硅的10倍,意味着电子移动阻力极低,可实现更高效的计算和更低的热量产生。

核心成果与意义

  • 性能卓越:这是目前唯一同时具备所有纳米电子学所需特性、且电学性能远超其他在研二维半导体的材料。
  • 兼容性:该材料与现有的常规微电子加工工艺兼容,为其实际应用奠定了重要基础。
  • 应用前景:突破不仅为利用石墨烯独特性质开发全新电子技术提供了可能(例如,能够利用电子的量子力学波特性,这对量子计算至关重要),而且被视为电子学领域可能引发范式转变的里程碑。

研发历程: 这项研究经历了长期积累。论文共同作者、天津国际纳米粒子与纳米系统中心主任马蕾指出,他们的技术实现了关键的带隙突破,是迈向石墨烯基电子器件的关键一步。研究主导者Walter de Heer教授将其比作“莱特兄弟时刻”,强调了这一基础突破对未来技术演进的开创性意义。

25. Show HN: Bring phone calls into the browser (SIP-to-WebRTC) (github.com)

SIP-to-WebRTC 浏览器集成指南

本文档介绍了一个将电话呼叫(通过SIP协议)引入Web浏览器的示例项目。其核心是通过桥接SIP信令与WebRTC,实现在浏览器中播放电话呼叫的音频。

技术实现

  • 主要依赖 emiago/sipgo 库来处理入站SIP流量(如Invite请求)。
  • 示例演示了接收SIP音频并在浏览器中播放的基本流程。
  • 若需实现多方通话,需引入音频混合功能,可参考 zaf/g711 库进行G.711编解码,并在解码后对所有采样求和再编码。

操作步骤

  1. 启动浏览器会话
    • 访问提供的 jsfiddle 示例页面,页面包含音频播放器、两个文本区域和“Start Session”按钮。
    • 复制浏览器生成的 SessionDescription(位于顶部文本区域)。
  2. 运行并配置 sip-to-webrtc
    • Linux/macOS:通过命令行执行 echo $BROWSER_SDP | sip-to-webrtc
    • Windows:将浏览器的SDP保存到文件,然后执行 sip-to-webrtc < my_file
    • sip-to-webrtc 输出的 SessionDescription 粘贴到 jsfiddle 页面的第二个文本区域。
  3. 建立WebRTC连接
    • 点击“Start Session”按钮。
    • 成功建立连接后,浏览器和终端均会显示ICE连接状态日志(如“checking”变为“connected”),并提示“Starting SIP Listener”。
  4. 接收SIP呼叫
    • sip-to-webrtc 将在 :5060 端口监听并接受所有SIP Invite。
    • 接受呼叫时,终端会显示类似“Accepting SIP Invite: From: ...”的日志信息。
  5. 完成:呼叫音频将在浏览器中播放,证明SIP到WebRTC的桥接成功。

此示例展示了使用Pion WebRTC库实现电话与Web应用集成的基本方法。

26. Google illegally refusing to bargain with employee union, says NLRB (www.theregister.com)

摘要:反机器人验证页面的技术分析

该HTML页面是一个反机器人验证界面,用于检测用户是否为人类。页面结构包括HTML文档的基本元素,如<head><body>部分,其中包含meta标签定义字符集和视口,以及标题"Are we human?"。

页面结构与关键组件

  • HTML结构:文档以标准HTML5格式组织,<head>中包含脚本和样式定义,<body>中仅有一个div元素,类名为wicketkeeper,用于显示验证组件。
  • JavaScript功能:页面加载时会延迟执行slow.js脚本。定义了一个solved函数,在验证挑战被解决时调用。该函数通过fetch/_labrador/pow/v0/verify发送GET请求,携带pow-noncepow-tokenpow-result头部。如果服务器返回200状态码,页面将在500毫秒后自动重新加载。
  • CSS样式:使用媒体查询实现响应式设计,根据屏幕宽度调整wicketkeeper元素的尺寸和字体大小。在不同设备上(如桌面、平板和手机)优化显示效果。

目的与关键功能

页面主要用于自动化验证,防止机器人访问。用户完成验证挑战后,通过solved函数提交结果,服务器验证成功后重新加载页面,可能进入实际内容。整体结构简洁,专注于验证逻辑和用户体验优化。

27. Sentry new TOS to use data to train AI with no opt-out (sentry.io)

服务条款(TOS)变更

  • 2024年4月12日生效的更新(发布于2024年2月12日):
    • 将“事件数据”更名为“服务数据”,以更准确反映发送给Sentry的数据范围。
    • 更新数据使用权限:允许使用非识别数据用于产品开发和其他合法业务目的。
    • 要求客户授权使用服务数据(除识别数据外)用于除提供Sentry服务外的任何目的。
    • 更新数据本地化语言以适配新数据区域,并添加预扣税处理条款。
    • 简化定义。
  • 2022年12月29日的变更
    • 一般更新以对齐定义术语和结构,覆盖Sentry所有当前产品。
    • 澄清客户发送的事件数据和Sentry捕获的使用数据的处理方式。
    • 添加关于数据处理附录和业务合作修正案的交互说明。
    • 新增通过授权经销商购买订阅的条款。

数据处理附录(DPA)变更

  • 2024年5月29日的更新
    • 明确纳入欧盟-美国数据隐私框架、英国扩展和瑞士-美国数据隐私框架。
    • 合并适用于所有Sentry产品(包括Codecov by Sentry)的子处理器列表。
    • 改进可读性并简化术语,交叉引用相关政策。
  • 2022年12月29日的变更
    • 扩展DPA的地理范围,覆盖所有Sentry产品。
    • 改进可读性,简化核心术语,并使用附录处理补充条款。
    • 新增语言以遵守新兴美国数据保护法律,如《加州隐私权法案》(CPRA)。

隐私政策变更

  • 2025年10月29日的更新
    • 更新联系信息,包括引用Sentry Software Netherlands B.V.作为欧盟代表。
  • 2024年5月31日的更新
    • 更新数据隐私框架通知,反映美国替代争议解决提供商处理未解决的相关投诉。
  • 2023年12月15日的更新
    • 更新通知以反映Sentry对英国扩展和瑞士-美国数据隐私框架的认证。
  • 2023年10月5日的更新
    • 替换隐私盾牌通知为数据隐私框架通知,以反映欧盟委员会对欧盟-美国数据隐私框架的充分性决定。
  • 2023年7月25日的更新
    • 移除网站上的广告cookies和跟踪技术,并更新加州要求的披露。
  • 2022年12月29日的变更
    • 澄清隐私政策的范围和适用性,改进可读性并删除冗余语言。
    • 新增语言以遵守CPRA等法律。

申请人隐私政策变更

  • 2023年7月25日的更新
    • 改进可读性,并新增语言以遵守CPRA等美国数据保护法律。
28. Learning bimanual mobile manipulation with low-cost whole-body teleoperation (mobile-aloha.github.io)

本文介绍了Mobile ALOHA系统,这是一个用于学习双臂移动操作任务的低成本全身遥操作系统。该系统旨在解决现有模仿学习研究多集中于桌面操作、缺乏移动性和灵巧性的局限。

核心创新与系统构成: Mobile ALOHA在静态ALOHA系统基础上进行了扩展,增加了移动底盘和全身遥操作接口,从而能够收集复杂的、需要全身协调控制的移动操作任务数据。

方法与训练: 研究人员使用Mobile ALOHA收集演示数据,并进行监督行为克隆。一个关键发现是,与现有的静态ALOHA数据集进行联合训练(co-training)可以显著提升在移动操作任务上的性能。在每项任务仅使用50个演示的情况下,联合训练可将任务成功率提高高达90%。

实现的能力: 该系统能够自主完成一系列复杂的移动操作任务,包括:

  • 烹饪任务:如炒制并盛放虾仁。
  • 家务任务:如打开双门壁柜存放沉重的烹饪锅。
  • 交互任务:如呼叫并进入电梯。
  • 清洁任务:如使用厨房水龙头轻度冲洗用过的锅。

鲁棒性与失败案例: 文章也提到了系统在硬件与软件/人工智能共同开发过程中的鲁棒性、可重复性挑战,并分享了一些开发中出现的机器人失败案例。

致谢与资助: 本项目得到了波士顿动力人工智能研究所和海军研究办公室的资助,并感谢了斯坦福大学相关实验室成员在实验设施和帮助方面的支持。

29. Show HN: Possibly the most comprehensive design system collection (www.designsystemhunt.com)

这是一个精选的设计系统合集,收录了147个顶级设计系统,旨在帮助用户发现、探索并从中获取灵感。合集提供了Figma资源库访问。

以下是部分收录的设计系统及其简介:

  • Wired Elements:一套具有手绘、草图风格的UI元素,适用于线框图、模型或追求手绘感的设计。
  • Wedges:一个基于Wedges设计系统、Radix UI和Tailwind CSS构建的开源React UI组件库,旨在加速开发。
  • Cloudscape (AWS):为构建直观、引人入胜且包容性的用户体验,提供UI指南、前端组件、设计资源和开发工具。
  • Keep Design System:一个精炼的设计系统,旨在简化工作流程、提高生产力,用于构建网站和仪表板。
  • Instagram - UI Kit 1.0:高度精确、像素完美的Instagram UI套件,包含变量、高级属性、大量组件和预设屏幕。
  • Microsoft 365 UI Kit:帮助设计跨越Microsoft 365生态系统的应用,提供核心组件、模板和最佳实践。
  • NextUI:即使缺乏设计经验也能制作精美的网站。
  • Wix Design System:使用可复用的React组件,在Wix上大规模创建美观、直观的原生应用体验。
  • Ultraviolet (Scaleway):一个无形的力量,确保Scaleway的品牌、产品设计和内容保持一致性、美观性与有效沟通。
  • VA.gov Design System:美国退伍军人事务部用于在VA.gov上编写、设计和构建数字服务的系统。
  • Canva App UI Kit:一个基于React的组件库,用于设计和开发外观与体验模仿Canva的应用。
  • Arwes:一个未来科幻风格的UI网页框架。
  • Wikimedia Design Style Guide:确保维基媒体产品外观和行为一致的指南。
  • Mantine:一个功能齐全的React组件库,包含100多个可定制组件和50多个钩子,帮助快速构建功能完备、可访问的Web应用。
  • Porsche Design System v3:保时捷数字产品的基础UX指南和基于模式的Web组件。
  • Helios (HashiCorp):提供开源构建模块,用于设计和实现一致、可访问且令人愉悦的产品体验。
  • Coherent:一个对设计师友好、组件高度可定制的库,旨在为UX节省大量工作时间。
  • Blueprint (Palantir):一个基于React的Web UI工具包,针对构建复杂、数据密集的桌面应用界面进行了优化。
  • Helsinki:赫尔辛基市的数字体验资源,提供指南、设计资产和组件库,用于构建一致、可访问的数字品牌。
  • Pagedone:一个包含1000多个UI组件、部分和页面的开源库,在Figma中设计并基于Tailwind CSS构建。
  • Fluent 2 (Microsoft):微软设计系统的下一代演进,实现更无缝的协作与创造力。
  • Intergalactic (Semrush):一个持续发展的UI组件、指南和UX模式系统。
  • Amplify UI Kit (AWS):一个可访问、可主题化、高性能的React组件集合,可直接连接到云端。
  • U.S. Web Design System:美国联邦政府的设计系统,旨在更轻松地构建可访问、移动友好的政府网站。
30. Thoughts on Testing (www.brandons.me)

本文探讨了对软件测试的理性看法。作者并不反对测试,但认为需要评估测试的成本与收益,因为测试代码本身也属于技术债务,会消耗编写、维护和运行的时间,且测试数量并非越多越好。

作者提出了判断测试必要性的几个关键标准:

  1. 静态分析优先:能通过静态类型检查或lint工具发现的问题,应优先使用这些工具而非编写测试。
  2. 评估代码行为的变更频率:行为定义稳定、很少更改的代码(如数学函数)更适合测试,因为测试失败通常意味着真正的缺陷;而易变化的代码(如UI文案)可能导致测试频繁因需求变更而失败,产生维护开销。
  3. 避免测试仅重复实现逻辑:好的测试应验证代码意图而非简单重复其逻辑,这样更具长期稳定性。
  4. 测试复杂度:适合测试的是逻辑复杂、难以通过代码审查确保正确性的部分。
  5. 对外部系统的依赖:过度依赖模拟(mocking)的代码可能不适合单元测试,因为模拟增加了复杂性且降低了测试价值。
  6. 代码的重要性:业务关键或广泛使用的代码值得投入更多测试。

对于不同类型的测试,作者建议:

  • 集成测试应关注系统间的交互,测试意图而非具体实现。
  • UI渲染层代码通常不值得单元测试,因其易变、逻辑简单且依赖框架。但状态管理、业务规则(如数据验证)和通用UI组件库则适合测试。

总结而言,作者倡导根据具体情境权衡测试策略,避免盲目追求数量,而应聚焦于能带来实际收益且成本可控的测试。

31. Ask HN: Looking for a project to volunteer on?
32. Paper Sizes and Formats (www.swiftpublisher.com)

本文主要介绍了全球两大主流纸张尺寸标准体系:ISO国际标准与北美标准,并比较了它们的特点、应用场景及相互转换的注意事项。

两大纸张系统概述 目前主要存在两种纸张标准:ISO 216国际标准(广泛用于全球)和北美标准(主要用于美国、加拿大)。ISO标准基于长宽比为 √2 的原则,便于等比例缩放;北美标准则基于传统尺寸,长宽比不固定。

ISO 216标准详解

  • 核心特点:所有尺寸长宽比均为 √2:1,缩放方便且无边距浪费。
  • A系列:最常用,A0为1平方米基准。通过将A0连续对半切,得到A1、A2等更小尺寸。A4(210×297毫米)是办公与学术领域的通用尺寸。
  • B系列:尺寸介于相邻两个A系列之间,提供更宽的尺寸范围。
  • C系列:专为信封设计,C系列信封可完美容纳对应编号的A系列纸张。
  • 实用技巧
    • 简化缩放:标准尺寸间的缩放比例固定(如A4→A3为141%),许多复印机设有预设按钮。
    • 信封适配:通过沿短边对折,可轻松将大尺寸纸张放入小号信封。

北美标准详解

  • 传统尺寸:包括Letter(8.5×11英寸)、Legal(8.5×14英寸)和Tabloid(11×17英寸),广泛应用于日常办公。
  • ANSI标准:1995年采纳,基于Letter尺寸(ANSI A)发展而来。其尺寸对半切后能得到下一尺寸,但长宽比在1.2941和1.5455之间交替,导致缩放不如ISO系统方便。

跨系统打印与特殊尺寸

  • A4与Letter互印:打印A4文档于Letter纸需设置缩放至94%;反之需设置97%。
  • 未裁切纸张:用于商业印刷的RA和SRA系列,尺寸略大于标准A/B系列,以便裁切装订。
  • 非标准比例:通过裁切标准纸张可得到1/3 A4、1/4 A3等长条尺寸,适用于邀请函、传单等。

选择建议 纸张选择取决于使用地区。国际交流频繁的人士(如学生、跨国办公者)建议同时备有ISO和A4纸张,以应对不同文件需求。

34. Show HN: I made a game to improve my typing speed (keysmash.no)

这篇文章是作者在Hacker News上分享自己制作的一个打字速度提升游戏。

核心内容: 作者开发了一个基于浏览器的游戏,旨在通过互动方式帮助用户提高打字速度。游戏采用HTML Canvas技术实现界面绘制,其核心逻辑通过JavaScript代码处理游戏交互。文章展示了游戏的网页基础结构,但具体的游戏规则、关卡设计及练习机制等详细功能未在提供的代码片段中完整呈现。

技术实现:

  • 游戏界面使用 <canvas> 元素作为绘图区域。
  • 通过JavaScript代码控制游戏在画布上的渲染和交互逻辑。
  • 项目以“Show HN”形式公开,表明作者希望分享并获取社区反馈。

(注:由于提供的代码片段不完整,无法进一步描述游戏的具体玩法或功能细节。)

35. A Netflix for fake TV shows and movies (nestflix.fun)

Nestflix 平台概述
Nestflix 是一个专注于展示虚构嵌套内容的流媒体平台,类似于 Netflix,但专门收录电影和电视节目中嵌套的虚构故事。平台提供了超过1,100个“故事中的故事”,让用户浏览虚构的影视元素。

内容特点与示例
平台的核心是虚构的嵌套内容,包括虚构电影中的电影和假节目中的节目。示例内容展示了多样性:

  • 一个犯罪故事:城市犯罪率飙升,新手帮派成员 Snakes 访问耐心耗尽的黑帮老大 Johnny。
  • 一个感人故事:农夫 Jack 能与动物交谈的 heart-wrenching 叙事。
  • 一个医疗剧:Vivien Blake 在 Sunrise General 医院管理手术部门,剧情涉及水晶、身体交换和日间电视上最长的恶魔附身。

浏览分类
Nestflix 提供丰富的分类供用户探索,涵盖多种类型:

  • 喜剧、戏剧、儿童与家庭、动作与惊悚、科幻、恐怖
  • 真人秀与纪录片、西部片与经典、超级英雄、游戏节目、脱口秀
  • 节日与宗教、犯罪、浪漫、肥皂剧与 telenovelas
  • 业余创作者、音乐、体育、成人内容(18+)、英国电视

这些分类帮助用户快速找到感兴趣的嵌套故事内容。

36. Vox: Alpha open-source browser engine in V (vox.sx)
37. 23andMe told victims of data breach that suing is futile (arstechnica.com)

事件概述:基因检测公司23andMe在发生影响690万用户的数据泄露事件后,被指推卸责任、淡化后果,并试图通过法律手段阻止用户维权。

数据泄露经过:2023年,黑客通过“凭证填充”(利用其他网站泄露的密码)入侵了约1.4万个23andMe账户。由于用户启用了“DNA亲属”功能,黑客进而访问了数百万关联用户的个人数据,包括DNA共享比例等遗传信息。

法律纠纷核心

  • 公司立场:23andMe律师在致用户的信中声称诉讼“徒劳无益”,理由是公司已采取“合理安全措施”,且泄露数据(如DNA亲属信息)无法用于造成“金钱损害”。公司还将责任归咎于用户“使用并重复泄露的旧密码”。
  • 受害者立场:原告律师反驳称,公司“无理推卸责任”。大多数受害者的数据是通过平台功能暴露的,而非因自身密码问题。律师指出,对于存储敏感健康和遗传数据的平台,23andMe理应实施更严格的安全措施(如强制多因素认证),而该公司此前并未这样做。
  • 诉讼进展:美国伊利诺伊州联邦法院已认定超过100名受害者的索赔“看似合理”,索赔金额可能超过500万美元。目前在美国和加拿大已有超过30起相关诉讼,正在寻求合并审理。

责任归属争议:根据加州《隐私权法案》,企业需对敏感数据实施“合理安全程序”,但法律未明确定义“合理”。公司辩称已通过事后安全更新(如强制重置密码、启用多因素认证)弥补漏洞,但原告律师认为这恰恰证明了公司此前安全措施不足。

公司后续措施

  1. 泄露后强制所有用户重置密码并启用多因素认证。
  2. 更新服务条款,要求用户放弃集体诉讼权利,通过私人仲裁解决争议。此举被律师批评为旨在规避诉讼和公众审查。
  3. 向部分受影响用户发送邮件,将泄露归因于用户重复使用旧密码,但许多用户对此表示困惑,认为公司是在“掩人耳目”。

影响:受害者担忧其遗传和健康数据泄露可能带来长期风险。律师指出,公司试图将责任转嫁给用户,而非承认其在数据安全方面的疏失。

38. Ubuntu Looking at Discontinuing Its Source ISOs (www.phoronix.com)

根据提供的HTML内容,无法生成关于“Ubuntu Looking at Discontinuing Its Source ISOs”的文章摘要。所提供的页面内容是一个Cloudflare安全验证页面(通常用于阻止自动化访问),而非文章正文本身。页面中要求启用JavaScript和cookies才能继续,这意味着实际的文章内容在验证后才会加载。

因此,无法从当前文本中提取到文章的主旨、细节或任何实质性信息。

39. RIP: Pascal Creator Niklaus Wirth (www.theregister.com)
### 摘要

该HTML内容是一个用于验证用户是否为人类的页面,通常用于防止自动化攻击(如机器人)。页面的核心结构包括元数据、标题、脚本、样式和内容。

#### 目的
- 提供一个交互式挑战(如验证码),要求用户解决后才能继续访问或操作,以验证人类用户身份。

#### 结构
- **头部(head)**:
  - 包含字符集和视口设置的元数据,确保页面兼容性。
  - 标题为“Are we human?”,表明页面主题。
  - 引入外部脚本 `/_labrador/pow/slow.js`,可能用于加载或处理验证逻辑。
  - 内部定义JavaScript函数 `solved`,用于处理验证结果。
  - 样式定义不同屏幕尺寸下元素的响应式布局。

- **主体(body)**:
  - 包含一个类名为 `wicketkeeper` 的div元素,作为验证挑战的容器。
  - 该元素具有数据属性 `data-input-name="solution"` 和 `data-callback="solved"`,用于处理用户输入和回调。

#### 关键功能
- **JavaScript验证逻辑**:
  - `solved` 函数是一个异步函数,当用户解决挑战时被调用。
  - 它接收数据对象(包含nonce、token和response),并发送HTTP GET请求到 `/_labrador/pow/v0/verify` 进行服务器端验证。
  - 请求头包括验证参数:`pow-nonce`、`pow-token` 和 `pow-result`。
  - 如果服务器响应状态为200(成功),页面会在500毫秒后自动重新加载,可能刷新状态或加载新内容。

- **响应式样式**:
  - 使用CSS媒体查询定义不同屏幕尺寸下 `wicketkeeper` 元素的尺寸:
    - 大屏幕(≥1024px):最大宽度350px,高度75px,字体15px。
    - 中等屏幕(513px-1023px):最大宽度450px,高度95px,字体17px。
    - 小屏幕(≤512px):最大宽度92%,高度150px,字体30px,移除左右边距。
  - 这确保验证界面在各种设备上显示良好。

#### 总结
该页面是一个技术性验证组件,通过前端交互和后端验证机制来确认用户的人性,核心是JavaScript函数和响应式设计,用于集成到更广泛的系统中作为安全措施。
40. Meta-analysis: On average undergraduate students intelligence is merely average (www.frontiersin.org)

元分析:本科生平均智力仅为平均水平

这是一项元分析研究,其核心结论是:大学生的平均智力水平处于总体人口的平均水平。该研究通过综合与分析多项已有的实证数据,得出了这一发现,挑战了“大学生普遍具有更高智力”的传统假设。研究结论表明,在认知能力评估中,本科学生的整体表现并未显著超出一般人群的均值。

41. There's Waldo is a robot that finds Waldo (2018) [video] (www.youtube.com)

视频摘要:There's Waldo is a robot that finds Waldo (2018)

基本信息

  • 视频标题:There's Waldo is a robot that finds Waldo
  • 发布日期:2018年8月8日(约7年前)
  • 观看次数:488,049次
  • 频道:redpepper(1.06K订阅者)
  • 点赞数:约2K
  • 评论数:160条

视频内容

该视频展示了一个名为"There's Waldo"的机器人,其功能是在《Where's Waldo》(找威利)图书中自动寻找Waldo并指向他。

技术实现细节:

  • 硬件:使用Raspberry Pi控制的机械臂(UARM Metal),通过PYUARM Python库驱动
  • 工作流程
    1. 机械臂伸展并拍摄下方画布的照片
    2. 使用OpenCV从照片中检测和提取人脸
    3. 将人脸发送到Google AutoML Vision服务,与训练好的Waldo模型进行比较
    4. 当置信度达到95%(0.95)或以上时,机械臂伸展到匹配人脸的坐标并指向它
    5. 如果照片中有多个Waldo,它会依次指向每一个

性能表现:作为原型机,最快的一次从扫描到指出Waldo仅用了4.45秒,比大多数5岁儿童还要快。

项目目的:redpepper团队构建此机器人是为了测试Google AutoML Vision服务的能力,并以有趣的方式展示前沿技术的可及性和可能性。

当前页面状态

该视频当前需要登录才能播放(Playability Status: LOGIN_REQUIRED),系统提示"Sign in to confirm you're not a bot"。

42. Ask HN: What is the best FOSS file sharing protocol/app?
43. BBN and the Development of the ARPAnet (www.freaktakes.com)

BBN与ARPAnet的发展:总结

BBN:独特的“中间地带”研究公司

BBN(Bolt, Beranek, & Newman)并非传统学术机构或商业公司,而是融合了两者优势的“中间地带”。其创始人最初是MIT的声学教授,公司早期专注于声学咨询与合同研究。公司文化类似于大学实验室,鼓励研究员追求感兴趣的技术难题,即使这些项目盈利性不高。例如,公司为了支持J.C.R. Licklider对交互式计算的探索,自费购买昂贵的计算机并寻求外部资助。这种文化吸引了顶尖人才(包括从MIT、哈佛和林肯实验室转来的研究员),如Robert Kahn和Licklider本人。公司结构(早期为合伙制,后上市)允许其既进行前沿探索,又能承担大型、复杂的工程实施项目。

ARPAnet项目:BBN的关键角色与成就

ARPAnet是互联网的前身,由美国国防高级研究计划局(DARPA)资助。BBN在1968年赢得了该项目的核心合同——设计、建造和安装“接口消息处理器”(IMP),即早期的网络路由器。该项目极具挑战性,许多大型公司(如IBM、AT&T)认为其在技术和经济上不可行而放弃投标。BBN凭借其独特的结构和团队优势成功中标:

  1. 技术准备:团队成员在实时系统、计算机通信和网络工程方面拥有深厚经验(来自林肯实验室等项目)。
  2. 团队结构与管理:项目由小规模精英团队(约8人)负责,成员(如Frank Heart、Severo Ornstein、Robert Kahn、Dave Walden)对项目整体有深入了解,沟通频繁直接。领导注重选择顶尖人才,并保持扁平、高效的协作模式。
  3. 项目实施:BBN在极短时间内(约一年)成功构建了连接四个节点的首个ARPAnet。过程中解决了大量技术难题,包括错误控制、主机-IMP接口设计、以及需要与霍尼韦尔公司合作制造定制硬件的挑战。项目按时按预算完成。
  4. 持续发展与扩展:BBN随后将网络扩展至数十个节点,并开发了终端IMP(TIP)等新技术。他们建立了网络控制中心(NCC)来监控和维护网络,使其逐渐从一个实验系统转变为可靠的“工具”。

成功因素与影响

BBN的成功源于其将学术研究的自由探索与商业公司的项目执行能力相结合。公司鼓励研究员追求有趣的问题,同时拥有实施复杂工程项目的结构和纪律。与DARPA项目经理(如Larry Roberts)的紧密协作也至关重要,后者在技术决策、节点协调和资源调配方面发挥了关键作用。

ARPAnet项目不仅技术上证明了包交换网络和分布式架构的可行性,还催生了早期的用户社区。1972年的国际计算机通信会议(ICCC)上的公开演示,向世界展示了该技术的现实性。该项目总预算相对较低(约2500万美元),却奠定了现代互联网的基础。BBN的工作不仅体现了卓越的技术执行,也展示了如何通过合适的组织和管理结构,将突破性的研究构想转化为影响世界的实际系统。

44. UCLA will transform dead Westside mall into major science innovation center (www.latimes.com)

UCLA将把已关闭的西区购物中心改造为重大科学创新中心

加州大学洛杉矶分校(UCLA)宣布,将把长期停业的西区购物中心改造为生物医药研究中心,专注于攻克癌症治疗和全球疫情预防等重大挑战。这个三层建筑将被命名为"UCLA研究园区",内设两个多学科中心:一个专注于免疫学和免疫疗法,另一个专注于量子科学与工程。

原购物中心所有者Hudson Pacific Properties Inc.和Macerich宣布以7亿美元将该物业出售给加州大学董事会。通过收购该购物中心,UCLA节省了数年校园建设时间。UCLA是美国申请人数最多的大学,但其威斯特伍德校区在九个加州大学本科校区中面积最小,扩展空间有限。

该购物中心位于西区中心地带皮科大道和欧文兰德大道交汇处,距UCLA校园约两英里。此前商业开发商曾投入数亿美元将其改造为办公综合体,试图吸引科技公司入驻。谷歌曾于2019年签订14年租约并支付租金,但从未实际入驻。目前内部基本未完成装修,预计UCLA需要约40个月完成改造。

州长加文·纽森表示,该研究中心将"巩固加州在全球经济、科技和技术领域的主导地位至22世纪及以后"。资金方面,项目部分得益于加州计划投入的5亿美元,其中2亿已拨付。加州免疫学和免疫疗法研究所将入驻该园区,该所由医疗设备发明家加里·迈克尔森等人共同创立,将以独立非营利机构形式运营,通过公私合作获得资金。

改造后的空间将包括灵活工作区,原购物中心的12屏影院可能改建为礼堂或表演空间,用于艺术、人文、科学和社会科学等领域的活动。UCLA校长吉恩·布洛克称,该园区将成为"汇集学术界、企业伙伴、政府机构和初创公司的尖端研究与创新枢纽"。

此外,UCLA量子科学与工程中心也将迁入该园区。该中心成立于2018年,致力于推动量子计算、通信和传感技术的前沿研发。

西区购物中心由20世纪著名商场建筑师乔恩·杰德设计,1980年代开业时既受赞誉也遭批评。随着电子商务兴起和消费习惯变化,该商场逐渐衰落。谷歌母公司Alphabet今年早些时候宣布裁员12,000人,其此前的扩张计划未能实现。

这是UCLA近两年在洛杉矶的第三次重大物业收购,此前分别收购了位于市中心的装饰艺术风格信托大楼和玛丽蒙特加州大学的两个物业。

45. Mullvad's usage of Kyber is not affected by KyberSlash (mullvad.net)
46. In "Strange Metals," the Flow of Electricity Is Equally Strange (spectrum.ieee.org)

奇异金属中电流的流动方式可能呈现流体特性

  • 普通金属与奇异金属的对比:在常规金属中,电流以准粒子(类似在原子晶格中移动的波纹)形式流动,电阻随温度升高呈二次方增长。而在奇异金属中,电阻随温度升高呈线性增长,这一现象出现在多种材料中,如铜酸盐、重费米子金属等。
  • 理论假说:先前研究提出,奇异金属中电子可能因强烈量子纠缠而失去独立粒子特性,形成高密度量子态的“电子流体”,导致电阻的线性行为。
  • 实验证据:研究者通过测量YbRh2Si2(一种重费米子奇异金属)超薄晶态导线中的“射击噪声”(电流的随机涨落),发现其噪声水平异常低。这表明电流可能并非由离散电荷包(准粒子)构成,而更接近连续流体,支持了电子流体假说。
  • 技术挑战:此类实验需制备极高纯度、无杂质的纳米级导线,以避免外部干扰。研究团队通过分子束外延技术成功生长出符合要求的YbRh2Si2导线。
  • 潜在应用与展望:当前尚无明确应用场景,但理论预测此类电子流体可能具有极低粘度,未来或可用于开发新型器件。后续研究将扩展至其他奇异金属材料,验证其是否具备类似噪声特性。
47. How to Revive Wassailing (www.historytoday.com)

文章探讨了复兴古老传统,如“沃赛尔”(wassailing)的挑战与意义。作者指出,虽然复兴中世纪习俗有趣,但容易陷入人为与矫饰,使原本充满活力的传统变得虚假和毫无意义。作者分享了一次成功复兴沃赛尔的经历:在圣诞节后的第十二夜,参与当地村庄的沃赛尔仪式,通过这一习俗为未来一年果树丰收祈福。这个时节如今在英国多被忽视,但过去是重要的节庆与社区活动时刻。文章认为,传统如沃赛尔能够成为社区的灵感,而非负担,且其成功复兴的关键在于让人们能真实地参与并赋予其新的活力。

48. What's the smallest file size for a 1 pixel image? (shkspr.mobi)

作者测试了各种图像格式对单像素(1×1)图像的文件大小,以探索现代编解码器处理极小文件的能力。使用GIMP创建单像素白色图像,保存为PNG后,通过Squoosh转换为多种格式。结果显示,文件大小从24字节(JXL)到303字节(AVIF)不等,其中QOI(23字节)最小,而AVIF最大。关键发现包括:旧格式如BMP(126字节)和GIF(35字节)比新格式如AVIF更小;压缩选项可能导致文件意外变大(如有损WebP比无损版本大);AVIF因复杂头部而文件较大;Brotli可进一步压缩某些格式(如JPG降至69字节);JXL和QOI在主流浏览器中不受支持。WebP(30字节)是spacer.gif的最佳替代。作者挑战读者找到更小的可显示图像文件。

49. Building an antilibrary: the power of unread books (nesslabs.com)

反图书馆:未读书籍的力量

一、核心概念:从“积读”到“反图书馆”

  • 积读:一个描述“只囤不读”习惯的日语词汇。
  • 反图书馆:由作家纳西姆·塔勒布提出,核心是将个人收藏中的未读书籍视为与已读书籍同等甚至更重要的资产。其灵感来源于翁贝托·艾柯的私人图书馆,那里藏有三万本书,大部分未读。这并非用于炫耀,而是一个研究工具对未知的具象化探索

二、核心理念:拥抱未知与知识的谦逊

  • 未知的广度:反图书馆的价值在于它代表了我们所不知道的事物。它的存在不断提醒我们知识的边界,从而驱动探索与发现。
  • 对抗“知识的傲慢”:它有助于对抗“邓宁-克鲁格效应”,即我们容易高估自身知识。被未读之书包围是一种谦逊的体验
  • 认知的反转:传统观念重视已知,而反图书馆逻辑要求我们反转视角——未读书籍(未知)比已读书籍(已知)更具潜力

三、如何构建你的反图书馆

构建反图书馆没有固定公式,但以下策略可作参考:

  1. 记录相关文献:阅读时,记下书中提及的其他书籍。阅读后研究这些关联书籍,将真正引发你好奇心的加入反图书馆。
  2. 寻求推荐:向志同道合的读者请教,或利用Goodreads等平台根据已读好书寻找同类著作。
  3. 留白给偶然:不要完全依赖计划,为在书店偶然发现、因封面或标题吸引你的书籍留出空间。
  4. 接受比例动态变化:阅读越多,知识边界扩展越广,未读书籍的比例可能不降反增。这并非坏事,正是将“未知的未知”转化为“已知的未知”的过程。
  5. 改善与知识的关系:认识到知识是一个过程而非占有物。反图书馆是投资自我的方式,规模大小(从几本到几千本)均可,关键在于它建立了一种谦逊的知识关系

四、总结

反图书馆是一个违反直觉但极具价值的概念。它提醒我们知识是有限且不完美的,从而激发好奇心,鼓励质疑假设。在当下这个需要细致思维的世界里,它是一个不可或缺的思考工具。