2024-07-22

42 篇热帖

1. Joe Biden stands down as Democratic candidate (twitter.com)

内容总结

  • 核心标题:乔·拜登(Joe Biden)宣布退出民主党候选人竞选。
  • 正文状况:文章正文未能显示实际的新闻报道内容,而是呈现了一段网页错误提示。该提示表明在访问 x.com 时发生加载故障,原因可能是某些与隐私相关的浏览器扩展程序引发了冲突,并建议用户禁用此类扩展程序后重新尝试加载页面。
2. No More Blue Fridays (www.brendangregg.com)

文章标题:No More Blue Fridays

文章讨论了未来计算机系统通过采用eBPF技术避免因软件更新导致的崩溃。以2024年7月19日全球大规模Windows蓝屏事件为例,指出传统内核驱动更新可能引发严重系统故障。eBPF作为一种安全的内核执行环境,通过软件验证和沙盒机制确保程序不会导致系统崩溃,目前已在Linux内核中集成,并正被微软移植到Windows。

eBPF不仅用于安全领域,还被Cisco、Google、Meta等大型科技公司用于网络和可观测性。尽管eBPF管理代码可能存在缺陷,但修复漏洞能惠及所有用户。文章建议企业要求商业软件采用eBPF技术,并呼吁提高对该技术的认识,以避免类似全球性宕机事件重演。

作者来自Intel、Isovalent和Google。

4. Pin (without.boats)

Pin:Rust异步生态的基石与复杂性挑战

Pin的作用与起源
Pin是Rust异步生态系统的核心概念,用于解决自引用结构在内存移动时的引用失效问题。在async/await开发过程中,Future需要存储函数内的引用,这些引用可能指向自身字段(自引用)。如果Future被移动,自引用会悬垂,导致内存不安全。Pin通过将对象“固定”(pinning)到内存位置,确保其不会被移动,从而安全地支持异步函数中的引用。

Pin的设计与实现
Pin是一个包装器类型,可包装任意指针(如引用、Box),将目标对象置于“固定状态”(pinned typestate),禁止移动。它通过库API实现,而非编译器强制。大多数类型无需固定,因此引入了Unpin trait:若类型实现Unpin,可从Pin中安全获取可变引用并移动对象,这避免了向后兼容性问题。

Pin的复杂性问题
Pin的使用被描述为“复杂性悬崖”,主要原因包括:

  • 缺乏语法支持:Pin是纯库类型,没有内置语法糖,而普通引用享有隐式重新借用等特性。例如,普通可变引用可多次传递,但Pin需显式调用as_mut进行重新借用。
  • 固定投影(pinned projections):从固定引用获取字段的固定引用需第三方宏(如pin-project-lite),增加了学习成本。
  • 与Drop trait的冲突:Drop接受普通可变引用,可能在析构时违反固定保证,需要额外限制来确保安全。

非解决方案的排除
文章否定了其他方案:

  • 移动构造函数:在Rust中不可行,因为指针可能存在于值外部,需垃圾回收式追踪,破坏Rust的零成本抽象原则。
  • 偏移指针:编译时无法区分自引用与非自引用,需运行时枚举,不切实际。

未来改进方向
作者承认Pin的可用性问题,但自豪于其支持了安全异步编程。未来改进将聚焦于“固定位置”(pinned places)概念,以简化Pin的交互体验。Pin的演变体现了Rust在安全、性能和后向兼容性间的权衡。

5. Jiff: A brand new Datetime library for Rust, from the author of ripgrep (github.com)

Jiff: Rust 日期时间库简介

Jiff 是一个由 ripgrep 作者开发的、全新的 Rust 日期时间库。其核心设计目标是提供高级别的日期时间原语,旨在让正确且安全的使用变得简单,同时保证合理的性能。库的灵感主要来源于 TC39 为改善 JavaScript 日期时间处理而提出的 Temporal 提案

主要特点

  • 难以误用:API 设计优先考虑正确性和易用性,引导用户进入“成功之坑”。
  • 时区支持:自动、无缝地集成 IANA 时区数据库,支持夏令时感知的算术运算和舍入。
  • 无损转换:能够格式化和解析时区感知的日期时间,确保信息无损。
  • 可选功能:支持通过特性(features)启用 Serde 序列化集成等。

基本用法示例

一个典型用例是:解析一个 RFC 3339 格式的瞬间(Instant),将其转换为时区感知的日期时间,进行时间跨度的加法,然后无损地打印出来。Jiff 提供了诸如 TimestampZonedToSpan 等核心类型来完成这些操作。

use jiff::{Timestamp, ToSpan};

fn main() -> Result<(), jiff::Error> {
    let time: Timestamp = "2024-07-11T01:14:00Z".parse()?;
    let zoned = time.in_tz("America/New_York")?.checked_add(1.month().hours(2))?;
    // 输出示例: 2024-08-10T23:14:00-04:00[America/New_York]
    Ok(())
}

开发者可以通过在 Cargo.toml 中添加 jiff 依赖或运行 cargo add jiff 来使用此库。

设计哲学与技术细节

  1. 性能优先级:性能是重要目标,但次于API的可理解性和正确性。库内一些子模块(如 jiff::fmt)提供了对更复杂、高性能 API 的访问通道。
  2. 平台支持
    • 时区数据发现:在 Unix 系统上依赖 /usr/share/zoneinfo(可通过 TZDIR 环境变量配置);在 Windows 上则会自动将一份时区数据库副本嵌入二进制文件。
    • 系统时区发现:Unix 上读取 /etc/localtime;Windows 上通过系统 API 获取时区标识符并映射到 IANA 标识。
  3. 依赖策略:作者对引入新依赖持非常保守的态度,主要仅在平台交互或必要互操作性(如 Serde)时添加。在 Unix 平台上,Jiff 目前实现了零依赖。
  4. 最低 Rust 版本策略:MSRV 为 1.70.0。原则上,库本身及其仓库内的依赖不会使用在过去1年内发布的 Rust 编译器版本。MSRV 的提升将遵循语义化版本控制规范,仅发生在次要版本更新中。

当前状态与未来计划

  • 许可:双许可模式,采用 MIT 或 UNLICENSE
  • 版本:当前版本为 0.2.0
  • 未来计划Jiff 1.0 的发布已被推迟,目前没有确切时间表。作者希望尽可能确保 1.0 版本的 API 设计正确,因为发布后将承诺长期维护其 API。届时,0.2 版本仍会获得关键性错误修复更新,为期约一年,以便用户过渡。
6. Parse, Don't Validate (2019) (lexi-lambda.github.io)

Parse, Don't Validate (2019) 文章摘要

本文探讨了类型驱动设计的核心理念,提出了简洁口号“Parse, don't validate”(解析,不要验证)。作者通过Haskell示例说明,类型系统可以用来确保代码正确性,避免冗余检查和潜在错误。

核心观点

  • 类型驱动设计:通过强化参数类型而非削弱返回类型,将部分函数转为全函数,使非法状态在类型系统中不可表示。
  • 解析 vs 验证
    • 验证(如validateNonEmpty)只检查输入并丢弃信息,返回无意义类型(如()),导致调用方需处理冗余检查,可能引入错误。
    • 解析(如parseNonEmpty)将低结构输入转换为高结构输出(如NonEmpty a),在类型系统中保留检查信息,避免重复逻辑。
  • 优势:解析避免“shotgun parsing”(验证代码分散在处理代码中),将错误限制在解析阶段,提高代码健壮性和性能。静态类型确保解析与处理逻辑不同步时编译失败。

示例分析

  • Haskell的head函数:原实现为部分函数(空列表无输出)。两种修复方案:
    1. 削弱返回类型:使用Maybe a,但迫使调用方处理不可能情况(如Nothing),导致冗余检查和潜在bug。
    2. 强化参数类型:使用NonEmpty a,确保函数只接受非空列表,实现全函数。通过nonEmpty函数在边界处解析,后续使用无需检查。
  • 实践启示:应尽早解析数据(如将列表转为NonEmpty),将证明负担推向系统边界,避免分散验证。

实践建议

  • 使用精确数据结构(如Map代替列表元组)使非法状态不可表示。
  • 将解析逻辑集中在系统入口,避免在核心处理中掺杂验证。
  • 对返回m ()的函数保持警惕,优先通过类型捕获错误。
  • 避免反规范化数据,保持单一信息源。

总结

“Parse, don't validate”鼓励利用类型系统在编译时捕获错误,减少运行时故障。核心是通过类型驱动设计,将数据验证转化为类型安全的解析过程,提升代码可靠性和可维护性。

7. Ryanair wins screen scraping case against Booking.com in US court ruling (www.rte.ie)

瑎安航空在美国法院赢得针对Booking.com的屏幕抓取诉讼案

裁决核心

美国特拉华州地区法院陪审团一致裁定,Booking.com违反了《计算机欺诈与滥用法案》。裁决认定,Booking.com未经许可访问了瑞安航空网站的部分内容,并诱导第三方以欺诈意图进行未授权访问。法院同时驳回了Booking.com对瑞安航空诽谤和不正当竞争的反诉。

瑞安航空立场

  • 瑞安航空(欧洲客运量最大的航空公司)近年来对多家第三方订票平台提起法律诉讼,这些平台未经授权通过屏幕抓取技术转售其机票。
  • 该航司指出,这些平台在转售时会增加额外费用,并阻碍航空公司直接联系乘客。
  • 瑞安航空首席执行官迈克尔·奥利里表示,此裁决将帮助终结在线旅行社的非法屏幕抓取和过度收费行为,并希望推动英国及欧洲的消费者机构采取行动,将此类行为定为非法。

Booking.com回应

Booking.com表示对此裁决感到失望并不同意。公司认为,允许消费者访问和比较旅行行业的票价能促进消费者选择,并计划提起上诉

行业背景与动向

  • 瑞安航空近年来一直致力于打击非授权的票价屏幕抓取行为。
  • 就在近期,瑞安航空已与多家在线旅行社签署了授权转售协议,探索合法的分销渠道。
8. Eza: A modern, maintained replacement for ls (github.com)

Eza:现代的 ls 命令替代品

Eza 是 Unix 和 Linux 系统中传统文件列表命令 ls 的现代替代品,提供了更多功能和更优的默认设置。它使用颜色来区分文件类型和元数据,能够识别符号链接、扩展属性和 Git 信息。Eza 体积小、速度快,以单一二进制文件形式分发。通过差异化的设计,Eza 旨在成为功能更丰富、用户更友好的 ls 版本。

主要特性

相较于 exa,Eza 增加了多项新功能,包括但不限于:

  • 修复了 exa 2021 年引入的“The Grid Bug”。
  • 支持超链接。
  • 显示挂载点详细信息。
  • 输出 SELinux 安全上下文。
  • 显示 Git 仓库状态。
  • 使用人类可读的相对日期。
  • 多项安全修复。
  • 支持明亮终端颜色。
  • 众多小错误修复和改动。
  • 提供 theme.yml 配置文件,用于自定义颜色和图标。

安装与使用

Eza 支持在 Windows、macOS 和 Linux 上安装。具体的平台和发行版安装说明请参阅 INSTALL.md。对于已配置 Nix(支持 flakes)的用户,可以通过以下命令快速试用: nix run github:eza-community/eza

命令行选项

Eza 的选项与 ls 相似但存在差异,主要分为以下几类:

显示选项: 控制输出格式,如单列显示 (-1)、网格显示 (-G, 默认)、长详情 (-l)、递归目录 (-R)、树形显示 (-T)、设置显示宽度 (-w) 以及控制颜色、图标、超链接何时显示 (--colour, --icons, --hyperlink) 等。

过滤选项: 用于筛选文件,包括显示隐藏文件 (-a)、将目录视为文件处理 (-d)、限制递归深度 (-L)、反向排序 (-r)、按特定字段排序 (-s)、优先或最后列出目录 (--group-directories-first/last)、仅列出目录或文件 (-D, -f)、忽略 Git 未跟踪文件 (--git-ignore) 以及通过 glob 模式忽略文件 (-I)。

长视图选项: 在长格式 (-l) 下提供更详细的信息,如使用二进制 (-b) 或字节 (-B) 显示文件大小、显示文件所属组 (-g)、显示标题行 (-h)、显示硬链接数 (-H)、显示 inode (-i)、显示挂载点详情 (-M, 仅限 Linux 和 macOS)、显示文件系统块大小 (-S)、自定义时间戳字段 (-t, 如 modified, accessed, created) 和格式 (--time-style)、显示安全上下文 (-Z)、扩展属性 (-@)、Git 状态 (--git) 以及递归目录大小 (--total-size) 等。

各选项的参数(如排序字段、时间字段)有特定的有效值,详情请参阅手册页。

自定义主题

Eza 支持通过 theme.yml 文件进行高度自定义。该文件允许设置所有 LS_COLORSEXA_COLORS 环境变量支持的主题选项,并可为不同文件类型和扩展名指定图标。现有的环境变量仍可使用,且具有更高优先级(向后兼容)。官方提供了预置主题仓库 eza-themes。主题文件应置于环境变量 EZA_CONFIG_DIR 指定的目录,或默认位于 $XDG_CONFIG_HOME/eza

贡献指南

参与 Eza 开发的人员需首先遵守项目的行为准则,具体开发贡献详情请查阅 CONTRIBUTING.md 文件。

9. When ChatGPT summarises, it does nothing of the kind (ea.rna.nl)

这篇文章的核心观点是:大型语言模型(如ChatGPT)在执行“总结”任务时,并非真正理解文本并提取要点,而主要是在进行文本缩短。这种行为与真正的、需要理解上下文的总结存在本质区别。

主要发现与论证:

  1. 核心区别:总结需要理解文本结构,识别哪些句子是铺垫、哪些是核心结论。而文本缩短主要依赖于压缩冗长或重复的部分,不必然涉及深层理解。LLM的运作机制更倾向于后者。

  2. 实证案例:作者将自己手动总结一篇关于荷兰养老金改革的50页论文与ChatGPT生成的摘要进行对比,发现:

    • 关键信息缺失:论文中一个占比约25%、关于成立“利益相关者委员会”的核心具体提案,在ChatGPT的摘要中完全未被提及。
    • 概括不准确:论文指出监管策略效果有限,主张加强组织治理结构。ChatGPT的摘要却误读为“法规将加强治理”。
    • 依赖已有摘要:论文本身已有总结章节,ChatGPT却将其忽略,佐证了其缺乏对文本逻辑结构的理解。
  3. 根本原因:LLM生成文本时受到两个关键因素的影响:

    • 参数:基于训练数据形成的知识。如果主题在训练数据中非常常见,参数会主导输出,导致摘要脱离待总结的具体文本,甚至产生幻觉。
    • 上下文:包括提示和待总结的文本。当上下文相对较小或主题在训练数据中不常见时,待总结文本的影响会更大,但表现形式多为“文本缩短”。
  4. 广泛影响:当主题在训练数据中丰富时(如柏拉图的作品),LLM可能输出高质量的“摘要”,但这实质上是基于参数记忆的复述或重构,而非对给定文本的理解性总结。

  5. 对Gemini的测试:进一步测试发现,其他LLM(如Gemini)也存在类似问题。例如,当要求其扩展一个简短但正确的摘要时,它可能会开始生成原文中不存在的信息,这同样是参数(基于训练数据)压倒上下文(待总结文本)的表现。作者还发现,Gemini最初的“实时”摘要功能可能依赖于一个缓存的“摘要数据库”,而非真正读取网页内容。

结论: 作者认为,LLM的“总结”功能在绝大多数情况下是文本缩短,而非基于理解的内容提炼。其可靠性高度依赖于待总结主题在训练数据中的分布以及输入文本的长度。当主题具有专业性、具体性或在训练数据中不常见时,LLM的摘要极易出现关键信息遗漏、事实扭曲甚至凭空捏造的问题。作者因此对LLM在严肃商业场景中作为可靠总结工具的应用前景持悲观态度,并指出这种“看似总结”的行为容易误导使用者。文章强调,真正实现智能摘要所需的、远超当前LLM能力的上下文理解,尚未达成。

10. No one expects young men to do anything and they respond by doing nothing (2022) (www.robkhenderson.com)

社会期望如何塑造男性行为:家庭稳定性与阶层规范

核心问题

文章探讨了美国低收入家庭中父亲角色缺失的现象,指出这并非单纯由经济贫困导致,而是与社会规范、阶层价值观及行为期望的变化密切相关。

主要发现

家庭破裂的非经济因素

  • 《承诺我能做到》一书的研究显示,低收入女性选择单身育儿的主要原因并非金钱问题,而是伴侣的不当行为(犯罪、吸毒、暴力、不忠等)。
  • 传统观点认为经济困难导致单亲家庭增多,但作者强调男性行为退化是更关键的因素。
  • 低收入男性常因“自尊问题”拒绝从事低薪工作,导致家庭经济不稳定。

社会规范的双重标准

  • 精英阶层的矛盾:高学历、高收入群体私下重视家庭稳定,却在公共领域否定传统家庭价值,形成“奢侈信仰”。
  • 中产阶级的规范扩散:未婚同居关系被视为“可随时退出”,这种观念被低收入群体模仿,但后者常在生育后仍遵循此模式,导致家庭不稳定。
  • 精英阶层通过教育确保子女成长在稳定家庭中,却削弱其他阶层的家庭规范,加剧社会不平等。

行为遗传学的局限性

  • 双生子研究多针对中产阶级收养环境,未能反映极端恶劣环境的影响。
  • 环境因素(如社会规范、营养条件)对身高、肥胖、吸烟率等遗传特征仍有显著调节作用,说明行为标准可通过社会期望改变

期望塑造行为

  • 性经济学理论指出,男性为获得性奖励会调整行为;社会奖励同样适用此逻辑。
  • 当社会对低收入男性降低期望时,他们倾向于“沉沦到环境水平”。
  • 混乱环境中,若无人期待男性承担家庭责任,将导致灾难性后果。

结论

作者呼吁重新审视对低收入群体的行为期望:高标准而非低标准可能成为改变轨迹的关键。当前社会对年轻男性“不抱期望”的态度,已导致其回应以“无所作为”。这不仅是经济问题,更是文化规范崩塌与阶层价值观冲突的结果。

11. Show HN: A source-available billing system I've spent 18 months building (billabear.com)

Billabear 是一个源代码可用的计费系统,开发者已投入18个月进行构建。该系统拥有一个完整的网站(billabear.com),并提供了免费的演示版本。网站包含隐私政策等信息。

14. Intel says 13th and 14th Gen mobile CPUs are crashing (www.tomshardware.com)

英特尔13代与14代移动处理器崩溃问题解析

近期,针对英特尔第13代及第14代处理器不稳定问题延伸至移动芯片的报道,英特尔向Tom's Hardware发表声明进行澄清。公司承认收到少量关于第13/14代移动处理器不稳定的报告,但强调该问题的根本原因与台式机型号不同。英特尔表示,基于对台式机处理器不稳定问题的深入分析,认为移动产品并未暴露于同一问题。移动系统报告的症状(如系统卡顿和崩溃)通常由多种潜在的软硬件问题引起,并建议用户遇到问题时联系设备制造商。

然而,游戏公司Alderon Games的创始人Matthew Cassells对此提出异议。他指出,该公司笔记本电脑(搭载移动版处理器)的崩溃频率虽低于台式机芯片,但问题依然存在。Cassells在Reddit上回应称,笔记本电脑的崩溃模式(包括在Unreal Engine、解压、ycruncher等工作负载下)与台式机部分完全相同,涉及的移动处理器型号包括13900HX等。他认为英特尔可能因BGA返工成本高昂及对合作伙伴的影响而淡化问题,并表示其游戏崩溃数据显示大量笔记本电脑可能存在类似问题。

值得注意的是,第13代及第14代HX系列移动处理器与台式机型号共享类似的芯片设计,因此部分型号可能面临相同问题。不过,移动芯片因功耗限制更严格、所需电压较低,不稳定情况可能较少。但英特尔已驳斥此类推测。

此次不稳定事件已持续数月,英特尔仍未明确根本原因,仅提供临时解决方案(如调整主板电源配置)。该问题无疑损害了英特尔的声誉,影响消费者信任。与此同时,AMD即将推出搭载Zen 5架构的锐龙9000系列处理器,而英特尔下一代Arrow Lake处理器发布在即,此次危机发生的时机对英特尔尤为不利。

15. Caffeine suppresses cerebral grey matter responses to chronic sleep restriction (www.nature.com)
16. Unconditional Cash Study: first findings available (www.openresearchlab.org)

无条件现金转移研究初步发现

研究概述

该研究旨在通过大规模、长期的无条件现金转移(每月1000美元)项目,系统评估其对参与者生活的影响,探索其潜力与局限。研究结合定量与定性方法,样本量大、周期长、应答率高,在相关领域具有独特严谨性。

主要发现

1. 育儿与儿童

  • 积极影响:现金使父母有更多时间陪伴孩子,改善了育儿实践,增加了对儿童和自身的投资。
  • 短期局限:未观察到儿童学业或行为方面的显著短期改善,但可能为长期收益奠定基础。
  • 机制:现金通过“买回时间”使父母能更积极参与孩子的生活。

2. 健康

  • 医疗使用增加:现金提高了医院、急诊、牙科及专科护理的使用率,受助者医疗支出平均每月增加约20美元。
  • 身体健康:未发现对身体健康指标的显著影响,但医疗使用的增加可能带来长期健康益处。
  • 问题饮酒减少:受助者报告干扰职责的饮酒行为减少约20%。

3. 能动性(目标规划与追求)

  • 增强规划能力:现金显著促进了预算编制、未来规划、追求教育的意愿及创业兴趣。
  • 目标对齐:受助者更可能设定符合自身价值观的目标并采取行动。
  • 具体数据:受助者追求教育或职业培训的可能性比对照组高14%,制定预算的可能性高5%;黑人受助者创业可能性比对照组高26%。

4. 政治态度与行为

  • 总体影响有限:对政治参与和偏好无显著影响。
  • 工作价值观:证据表明,受助者更看重工作对个人、社会的重要性,或将工作视为获取政府福利的要求。

5. 就业

  • 灵活性提升:现金使受助者能根据个人情况、目标和价值观做出就业选择。
  • 工作调整:受助者平均每周工作时间减少1.3小时,就业可能性降低2个百分点,相当于每年少工作约8天。
  • 求职行为:受助者主动求职的可能性高10%,申请工作的可能性高9%,但申请数量较少,更看重工作意义。
  • 收入影响:不包括现金转移本身,受助者家庭总收入平均减少约2500-4100美元(约占对照组平均家庭收入的5%);若包括转移金额,受助者家庭总收入平均增加约6100美元。

6. 支出与生活

  • 基本需求:现金带来的月度支出增长主要集中在食品、租金和交通等基本需求上。
  • 住房流动性:受助者更可能搬家、更换社区或支付住房费用,在转移最后一年对搬迁和找新房的兴趣显著。

研究背景与方法

  • 时间跨度:研究自2016年提出,2019-2020年开始招募,2020年11月启动为期三年的现金转移,至2023年10月结束月度转移,后续追踪持续至2024年。
  • 复杂背景:研究期间恰逢COVID-19大流行,伴随政府刺激措施、失业率波动、通胀飙升及政策变化(如扩大的儿童税收抵免、租金减免等)。
  • 核心观点:现金是解决问题的重要一环,但其影响可能受限于医疗、儿童保育等其他资源的配套支持。

研究意义

该研究通过综合定量与定性分析,深入揭示了无条件现金对个人生活的复杂影响,旨在为促进经济包容性提供基于证据的基础,并理解其潜力和局限。

17. Physicist, 98, honoured with doctorate 75 years after groundbreaking discovery (www.theguardian.com)

罗莎玛丽·福勒:98岁物理学家75年后获荣誉博士学位

  • 背景与发现:98岁的物理学家罗莎玛丽·福勒在1948年于布里斯托大学攻读博士学位期间,发现了kaon粒子(K介子)。这一发现为其导师塞西尔·鲍威尔获得1950年诺贝尔物理学奖做出关键贡献,并推动了粒子物理学理论的革命,后续预测了如希格斯玻色子等粒子。

  • 放弃博士学位:福勒于1949年与物理学家彼得·福勒结婚并育有三子,在战后食品配给时期,她选择放弃博士学位,描述这一决定为务实之举。

  • 荣誉授予:75年后,布里斯托大学校长保罗·纳斯爵士在福勒剑桥住所附近的私人毕业典礼上,授予她荣誉理学博士学位。福勒表示“非常荣幸”,但谦逊地称自己自发现后未做过特别值得尊敬的事。

  • 赞扬与影响:纳斯称赞福勒的“智力严谨和好奇心”,认为她的工作为当今物理学家探索宇宙奠定了基础。福勒的发现记录在三篇学术论文中,于1948年观察粒子轨迹时首次识别出衰变成三个pions的新粒子,后命名为K轨迹,与曼彻斯特同事发现的粒子镜像但行为不同,引发了理论突破。

  • 个人背景:福勒1926年出生于萨福克,自幼擅长数学和科学,是同届唯一上大学的女生,成为首批获得物理学一等学位的女性之一。她的三个孩子均从事科学研究,包括女儿玛丽·福勒在剑桥的学术生涯。

18. Rrweb – record and replay debugger for the web (www.rrweb.io)

Rrweb – Web 会话重放调试库

Rrweb 是世界上最受信赖的会话重放库,用于记录和回放 Web 会话,支持托管和企业级服务,无需信用卡即可开始使用。它是最广泛采用的开源会话重放库,帮助用户构建任何需要回放功能的产品或服务。

核心用途:

  • 可观测性与监控: 通过附加完整会话重放到错误报告中,展示用户操作、网络状态和 UI 变化,帮助工程团队诊断问题原因。已被 datadog、new-relic、sentry 等公司使用。
  • 体验分析: 捕获像素级会话重放,记录点击、滚动和犹豫等用户行为,以观察真实用户旅程,支持基于证据的设计决策。已被 amplitude、mixpanel、pendo 等公司使用。
  • 自动化: 提供可靠、结构化的 DOM 快照,涵盖 JavaScript 执行、动态内容加载和网络请求,避免因标记变化导致的自动化失败。已被 browserbase 等公司使用。
  • 错误报告: 让用户或 QA 团队捕获和分享触发问题的交互序列,为开发者提供可重放的精确重现,简化错误修复。已被 birdeatsbug 等公司使用。
  • 演示平台: 记录交互式、可重现的产品演示,支持嵌入、按需重放和 UI 更改后即时更新,无需视频编辑。已被 navattic 等公司使用。

基础设施与服务: Rrweb cloud 提供可扩展的高速存储、分析和处理栈,包括存储、索引、查询、洞察、去重和 PII 过滤功能,构建完整的会话重放基础设施。

选择与灵活性: Rrweb 是唯一提供真正选择的会话重放基础设施:用户可选择开源版本自行管理,或使用托管云产品。免费云账户即可在几分钟内开始捕获会话重放,无需信用卡。

19. Bash-Oneliners: A collection of terminal tricks for Linux (github.com)

GitHub 平台功能概览摘要

该文本内容主要展示了 GitHub 平台为开发者提供的核心功能、解决方案与生态系统。可归纳为以下几个主要方面:

1. AI 辅助开发

  • GitHub Copilot:利用 AI 帮助编写代码。
  • GitHub Copilot 应用:支持从问题直接生成代码至合并。
  • MCP 注册表:新推出,用于集成外部工具。

2. 开发者工作流工具

  • GitHub Actions:自动化任何开发工作流。
  • GitHub Codespaces:提供即时云端开发环境。
  • GitHub Issues:用于规划和跟踪工作。
  • 代码审查:管理代码变更流程。

3. 应用安全

  • GitHub 高级安全:发现并修复漏洞。
  • 代码安全:在构建过程中保障代码安全。
  • 秘密保护:防止敏感信息泄露。

4. 解决方案浏览

提供多种维度分类以供用户探索相关方案:

  • 按公司规模:企业、中小型团队、初创公司、非营利组织。
  • 按使用案例:应用现代化、DevSecOps、DevOps、CI/CD。
  • 按行业:医疗、金融服务、制造业、政府。
  • 按主题:AI、软件开发、运维、安全。

5. 支持与社区资源

  • 文档、博客、更新日志:提供官方资料。
  • 市场:扩展功能平台。
  • 社区:赞助者计划、安全实验室、维护者社区、加速器等。
  • 支持与服务:文档、客户支持、社区论坛、合作伙伴。

6. 企业级功能

  • GitHub 高级安全Copilot 企业版高级支持:作为企业平台的附加服务。

总体而言,内容核心是 GitHub 作为集成化开发者平台,通过其 AI 工具、自动化工作流、安全防护和丰富的社区资源,为从个人开发者到大型企业的各类用户,覆盖软件开发全生命周期提供支持。

20. Stremio OS Is Now Available for Raspberry Pi 5 and 4 (blog.stremio.com)

核心发布

Stremio OS 现已正式支持 Raspberry Pi 5 和 4,用户可将其安装在容量至少为 8GB 的 SD 卡上运行。

系统与功能特性

  • 系统基础:基于 LineageOS v21(Android TV 14 定制版),不包含任何 Google 应用或服务。
  • 预装应用:内置 Stremio、Stremio Launch on Boot(开机自启工具)以及 Aptoide TV(用于处理自动更新)。
  • 高度自定义:用户拥有系统的完全控制权,可自由配置系统行为,例如设置或取消 Stremio 的开机自动启动。

硬件支持与限制

  • Raspberry Pi 5:完全支持流畅的 4K 内容播放。
  • Raspberry Pi 4:受限于硬件性能,无法播放 4K 内容。
  • 官方团队已在 8GB RAM 版本的 Pi 5 和 Pi 4 Model B 上完成了相关测试。

安装与配置指南

  1. 下载与写入:从官网下载对应设备的镜像,使用 Etcher(选择“Flash from file”)或 Raspberry Pi Imager(选择“Use custom”)将其写入至少 8GB 的 SD 卡。
  2. 扩展分区(可选):镜像大小为 7GB,若使用更大容量的 SD 卡,可使用 GParted 等分区工具扩展 /data 分区(/dev/block/mmcblk0p4)以利用未分配的磁盘空间。
  3. 首次设置:插入 SD 卡并开机,完成 Android TV 初始设置。在蓝牙发现阶段,可通过按遥控器返回键或键盘 F2 键跳过该步骤。
  4. 功能配置(可选)
    • 运行“Stremio Launch on Boot”应用实现开机自启,将设备变为单一用途设备(用户随时可返回 Android TV 主屏幕)。
    • 在“Apps”面板中将 Stremio 设置为精选应用。

项目状态

Stremio OS 项目目前仍处于初期阶段,暂被视为实验性项目。官方预告将在 2024 年为用户带来更多更新与惊喜。

21. How to Become a Registrar (www.icann.org)

如何成为ICANN认证注册商

成为ICANN认证注册商的过程包括以下几个步骤:

一、申请前准备

  1. 审查资格标准:阅读《注册商认证政策声明》中描述的资格条件。
  2. 评估财务要求:了解成为认证注册商所需的财务考虑因素。
  3. 了解相关协议:审查适用于所有ICANN认证注册商的管理协议和政策。

二、提交申请

  1. 正式申请:填写ICANN的申请表格。为加快处理速度,需提供非常具体、详尽的回答及所有必要的支持文件。申请延迟的主要原因包括:文件缺失、答案不完整或模糊。
  2. 等待审核结果:ICANN在审核申请并进行必要的跟进后,将通过电子邮件通知您认证结果。

三、批准后的必要步骤(若申请获批)

  1. 签署协议并付费
    • 与ICANN签署《注册商认证协议》并支付认证费。认证期限目前为5年。
    • 与ICANN指定的注册商数据托管代理签署《注册商数据托管协议》(或自费选择ICANN批准的托管代理)。这是完成认证流程的最后一步。
  2. 完成注册局对接
    • 将签署的协议和费用返回给ICANN后,ICANN将通知相关注册局并将您添加至认证注册商列表。
    • 您需要自行与注册局运营商协商合同、财务和技术细节。
  3. 准备服务条款
    • 制定您的域名注册人服务协议。该协议必须包含ICANN认证协议要求的特定条款。
    • 遵循ICANN的《统一域名争议解决政策》。
    • 可考虑制定隐私政策以符合认证协议的要求。
  4. 启动服务:完成上述所有步骤并通过相关注册局的测试后,即可开始向公众提供注册服务。

四、帮助

如有关于申请流程或成为认证注册商的一般问题,可向 [email protected] 发送邮件咨询。

26. The Linux audio stack demystified (blog.rtrace.io)

Linux音频栈揭秘

基础概念

声音本质:声音是振动通过介质(如空气)传播的声波,由振动物体产生,导致空气压力变化被人耳感知。声波具有周期(单次振荡时间)和振幅(感知为音量)两个基本属性。

数字音频原理

  • 采样:按固定间隔(采样率)测量模拟波形的振幅。根据奈奎斯特定理,采样率需至少为信号最高频率的两倍(如44.1 kHz对应20 kHz人耳上限)。
  • 量化:用有限位数(如16位/65,536级)表示样本振幅,牺牲精度换取数字可处理性。
  • 存储:数字音频以样本序列形式存储,支持单声道(单通道)和立体声(左右通道)。
  • 输出:数字信号通过数模转换器转换为模拟信号,经低通滤波平滑后驱动扬声器。

硬件角色声卡/音频接口负责模拟/数字信号转换、放大和滤波。优秀声卡应具备高信噪比、低失真、宽动态范围和低延迟。

Linux音频栈架构

Linux采用分层模块化架构,应用无需直接处理硬件细节。

核心层

  • ALSA:高级Linux声音架构,运行在内核空间,提供声卡驱动和基础音频功能,支持多声道和低延迟,通过libasound库向用户空间提供接口。

音频服务器层

音频服务器作为应用与硬件间的中介,提供混合、路由、音效等高级功能。

  1. JACK:面向专业音频的低延迟服务器,采用客户端-服务器模型,支持应用间灵活路由和样本精确同步,常用于音乐制作。
  2. PulseAudio:服务桌面环境的通用服务器,支持多流混合、独立音量控制、设备切换、网络音频流和音效处理,提升了桌面易用性。
  3. PipeWire:现代多媒体框架,统一了音频和视频处理,兼容PulseAudio和JACK应用,提供低延迟、安全沙盒和灵活路由,逐渐成为新标准。

音频服务器核心功能

  • 多流混合:将多个应用的不同采样率/位深音频混合为单一输出。
  • 多输出路由:同时向耳机、扬声器等多设备输出音频。
  • 独立音量控制:按应用调节音量。
  • 虚拟输出:创建逻辑输出供应用内部使用。
  • 音效处理:通过插件(如LADSPA)为流添加压缩、混响、均衡等效果。
  • 开发者API:提供简化的编程接口(如Python ALSA示例)。

选择建议

  • JACK:专业音频制作、实时处理、最低延迟场景。
  • PulseAudio:通用桌面音频、易用性优先、广泛兼容性。
  • PipeWire:综合解决方案,兼顾桌面体验与专业需求,支持音视频统一处理,具备现代特性(安全、模块化),是未来趋势。

大多数发行版已预置PipeWire或PulseAudio。若对当前音频栈满意,无需更改;若需更低延迟或更强功能,可考虑迁移到PipeWire。JACK仅推荐已有经验的用户使用。

30. Veles: Open-source tool for binary data analysis (codisec.com)

Veles:开源二进制数据分析工具

Veles是一款新兴的开源工具,专注于二进制数据分析。其核心功能包括:

核心功能

  • 二进制数据可视化:通过统计可视化方式,帮助用户快速从大量二进制数据中识别隐藏模式,弥补人类在原始数据中难以察觉细微模式的不足。
  • 高级探索与分析框架:结合了功能强大的十六进制浏览器、数据可视化特性以及可扩展的二进制数据解析框架,适用于逆向工程、文件系统镜像探索、隐写术等多种应用场景。

主要特点

  • 易于扩展:采用客户端-服务器架构,分析器可在独立进程中运行。用户可通过编写Python函数实现自定义数据解析,适应不同架构、文件格式和编码需求。
  • 开源项目:自2016年底发布开源Alpha版本以来,计划每月更新迭代,致力于推动二进制数据分析方式的发展,并与社区共享技术经验。

实践验证

Veles在CTF(夺旗赛)竞赛中得到持续测试与应用。团队认为CTF竞赛是检验二进制数据分析工具的理想环境,能够提供多样化的输入案例与边缘情况,确保工具的健壮性。目前团队在各类CTF中持续使用该工具,并鼓励其他团队利用其价值。

下载地址:官方提供下载入口(详见原文末尾)。

31. Doctor-prescribed videogame for ADHD (www.endeavorrx.com)

EndeavorRx:首个FDA批准的ADHD电子游戏疗法

核心介绍

EndeavorRx 是唯一一款由医生开具处方的、针对注意力缺陷多动障碍(ADHD)儿童的电子游戏治疗手段。它已获得美国食品药品监督管理局(FDA)批准,旨在改善 8 至 17 岁、以注意力不集中或混合型 ADHD 为主的儿童的注意力功能。

工作原理与科学基础

  • 科学依据:该疗法基于神经科学,通过游戏瞄准大脑中负责注意力功能的关键区域。
  • 自适应体验:游戏内容能够根据每个孩子的表现进行实时调整,提供个性化的治疗体验。
  • 使用方式:它必须作为综合治疗方案的一部分使用(可包括医生指导的治疗、药物和教育计划),不能独立使用,也不能替代ADHD药物

临床效果与数据

临床试验表明,使用 EndeavorRx 后:

  • 73% 的儿童报告其注意力有所改善。
  • 68% 的家长在治疗两个月后报告,孩子与 ADHD 相关的功能障碍得到改善。
  • 家长反馈显示,孩子在学业专注力、独立完成作业、社交互动和沟通方面出现积极变化。

安全性与注意事项

  • 安全性:在所有临床试验中,未报告任何严重不良事件。常见的轻微、短暂副作用包括挫折感降低(2.34%)和头痛(1.17%)。
  • 重要提醒:如孩子在游戏中出现情绪反应、头晕、恶心等症状,应暂停使用并咨询医生。
  • 适用限制:可能不适合患有光敏性癫痫、色盲或身体条件限制使用移动设备的患者,需咨询医生。
  • 法律要求:该设备仅限凭持照医疗保健提供者的处方购买和使用。

费用与获取

  • 费用:30 天的处方价格为 99 美元
  • 支付方式:可使用弹性支出账户(FSA)或健康储蓄账户(HSA)支付。购买时可直接使用相关卡片,或购买后提交报销申请。

总结

EndeavorRx 是一种创新的、基于科学的游戏化数字疗法,经临床验证能有效改善 ADHD 儿童的注意力功能。其安全性良好,但必须在医生指导下,作为现有治疗计划的补充手段使用。

32. French Acrobatic Artist’s Low-Gravity Invention (www.core77.com)

法国杂技艺术家Bastien Dausse的低重力发明

法国杂技艺术家Bastien Dausse的作品专注于(不)平衡以及与重力互动的欲望。他共同创立了剧团Compagnie Barks,其表演核心围绕重力及其颠覆展开。在剧团的《月球》表演中,Dausse使用了他发明的一款令人印象深刻的反重力装置。

该装置经过校准,能够模拟月球重力,即地球重力的六分之一。视频中展示了他如何将其连接到身体,整个设备技术设计简单,却效果显著。装置的低技术特性使其操作直观,同时实现了精准的重力模拟效果。

使用此装置的表演多种多样,充满娱乐性,展示了艺术家在低重力环境下的创意动作和平衡技巧。相关表演可以通过提供的链接观看,进一步体现了Dausse在杂技艺术中对重力概念的创新探索。

34. Difference between running Postgres for yourself and for others (www.ubicloud.com)

自用与他用PostgreSQL服务的关键差异

为他人运行PostgreSQL(托管服务)与自行管理存在本质区别。托管服务需提供完整的生产级功能,而自用通常只需关注备份与高可用。

核心功能要求

托管服务需具备:配置、DNS、证书、备份/恢复、安全、UI等完整体系。这些功能相互依赖,例如实现高可用需先建立监控和故障转移机制,而创建只读副本又依赖备份功能。

配置管理

自用配置简单:安装Postgres二进制文件并返回连接字符串即可。

为他人配置复杂

  1. 扩展安装:需预装约80个常用扩展,部分需编译安装
  2. 证书管理:需创建服务器证书并由证书机构(CA)签名。为避免外部签名延迟,通常需自建CA并为每个数据库创建独立CA
  3. 配置优化:需根据硬件规格调整PostgreSQL参数
  4. DNS记录:需创建稳定DNS名称,确保故障转移时连接字符串不变
  5. 性能优化:通过预置系统镜像(将扩展打包)、并行化操作、维护预配置数据库池等手段,将配置时间从10分钟优化至20-30秒

备份与恢复

目标实现任意时间点恢复(PITR):

  • 备份策略:每日全量备份+持续写入预写日志(WAL)
  • 恢复过程:基于目标时间前的最近全量备份,应用后续WAL文件
  • 技术挑战
    • 低活动场景:通过设置archive_timeout强制每分钟生成WAL文件
    • 无活动场景:通过调用pg_current_xact_id()模拟写入活动

高可用性

基本流程:主备节点+健康检查+故障转移。

  • 关键风险:主节点隔离失败可能导致数据丢失
  • 隔离措施(并行执行):
    1. 服务器可访问时:终止PostgreSQL进程并防止重启
    2. 断开网络接口
    3. 完全解除虚拟机配置
  • 注意:DNS更新不可靠作为隔离手段(存在TTL延迟)

安全隔离

主要威胁:通过COPY ... FROM PROGRAM执行操作系统命令

防护措施

  1. 权限控制:多数托管服务不提供超级用户权限(Ubicloud例外)
  2. 操作系统隔离
    • 以受限OS用户(postgres)运行命令
    • 将不同数据库置于独立虚拟机
    • 实现网络隔离,禁止虚拟机间通信

核心区别:自用环境通常已控制底层机器和网络,无需这些隔离措施。

结论

托管PostgreSQL服务需要处理自用环境无需考虑的复杂问题,包括自动化配置、精确时间点恢复、故障隔离和多层次安全防护。这些差异源于服务提供商需要为多个租户提供安全可靠的生产环境。

35. Data Fetching for Single-Page Apps (martinfowler.com)

单页面应用数据获取策略摘要

本文探讨了单页面应用中高效数据获取的关键模式,旨在提升应用性能与用户体验。文章以React为示例,但强调这些模式适用于任何前端框架。

核心挑战

现代单页应用在单个页面加载时会发起大量请求(如Twitter首页约300个,亚马逊商品页约600个)。为提升感知速度,应用常采用渐进式加载:先快速展示基础框架(导航栏、静态内容),再异步加载时间线、推荐等内容。这导致应用中存在大量独立的异步数据请求。

五大核心数据获取模式

1. 异步状态处理器

  • 目的:将数据获取逻辑与UI组件解耦,统一管理加载、错误、数据状态。
  • 实现:通过自定义Hook(如useUseruseService)封装请求状态,组件只需消费状态并渲染。
  • 优势:提升代码可复用性、可维护性,简化组件内部逻辑。

2. 回退标记

  • 目的:以声明式方式处理异步操作的加载和错误状态,减少组件内的状态处理样板代码。
  • 实现:利用框架特性,如React的<Suspense>组件包裹异步组件,并指定fallback加载占位内容。
  • 优势:代码更简洁,关注点分离,由框架统一处理加载状态。

3. 并行数据获取

  • 目的:避免“请求瀑布”,同时发起多个独立的数据请求,减少总体等待时间。
  • 实现:在组件树上层(如页面根组件)使用Promise.all并行发起请求,将获取到的数据向下传递。
  • 适用场景:请求之间相互独立,无依赖关系。若请求存在依赖,则需采用串行获取。
  • 优势:显著提升页面加载速度,优化用户体验。

4. 代码分割

  • 目的:减小初始加载包体积,实现非关键资源的按需加载。
  • 实现:利用动态import()语法配合React.lazy<Suspense>,实现组件级懒加载。
  • 适用场景:用户交互后才需要的组件(如弹窗、详情卡片),或体积较大的第三方库。
  • 权衡:首次交互可能因加载和解析额外资源而有短暂延迟。

5. 预加载

  • 目的:基于用户行为预测,提前获取可能需要的数据或资源,减少交互时的延迟。
  • 实现:在用户交互触发点(如鼠标悬停)提前发起数据请求并缓存结果,待组件真正需要渲染时直接使用。
  • 优势:有效隐藏加载延迟,提供近乎即时的交互体验。
  • 注意:需准确预测用户行为,无效预加载会浪费带宽。

模式选择与组合

实际开发中,这些模式通常组合使用。例如:

  • 页面关键框架(如导航栏)首先渲染。
  • 核心内容采用并行数据获取
  • 非关键内容(如评论、历史记录)采用代码分割懒加载。
  • 可预见的交互(如悬停)采用预加载优化体验。

结论

高效的数据获取对单页应用至关重要。通过合理运用异步状态处理器、回退标记、并行数据获取、代码分割和预加载等模式,开发者能够显著提升应用的性能和用户体验。选择何种模式取决于应用规模、团队结构、性能要求及具体交互场景,关键在于权衡模式带来的收益与实现复杂度。

36. Show HN: TinkerBird – A Chrome-native vector database (github.com)

TinkerBird 是一个专为浏览器设计的原生向量数据库,用于高效存储和检索高维向量(嵌入向量)。其核心查询引擎使用 TypeScript 编写,并采用 HNSW(分层可导航小世界)索引 实现快速向量检索。

主要特点与优势:

  • 本地化存储与计算:使用浏览器内置的 IndexedDB 作为存储层,所有数据与向量均在本地处理,无需服务器往返。这能降低延迟、减少对服务器的依赖,并确保敏感数据不出本地,从而规避了相关的成本、合规与安全风险。
  • 技术栈与扩展性:IndexedDB 基于 Blobs 和 LevelDB 构建,具备良好的稳定性与浏览器原生支持,适合离线优先的工作流。存储层可通过 LRU 缓存进行扩展。
  • 配套客户端推理库:可与 TinyLM 库配合使用,该库支持在浏览器内利用 WebGPU 运行模型(如 DeepSeek、Llama 3.2、Nomic Embed),实现零成本的文本嵌入和生成推理。

许可与贡献:

  • 项目基于 MIT 许可证 开源。
  • 欢迎社区提交建议、错误报告或任何贡献。
  • 项目以“原样”提供,不作任何保证。

技术基础: 其实现主要参考了关于 近似最近邻搜索HNSW 的一系列学术研究。

37. Cosmopolitan v3.5.8 (github.com)

Cosmopolitan v3.5.8 版本更新摘要

本文档介绍了 Cosmopolitan v3.5.8 版本的主要更新内容,聚焦于其对 AI 工具集成、开发者工作流以及生态系统功能的增强。

核心更新:

  1. AI 代码生成:GitHub Copilot 深度集成:版本强化了与 GitHub Copilot 的整合,旨在通过 AI 辅助提升代码编写效率与质量。
  2. 工具集成:MCP Registry:引入了 MCP Registry 功能,这是一个新的集成点,允许开发者将外部工具与平台进行连接和整合。
  3. 开发者工作流自动化:更新包括对 GitHub Actions 的进一步支持,用于实现任意工作流的自动化;以及增强的 GitHub Codespaces 功能,提供即时开发环境。

平台能力与服务:

  • 应用安全:提到了 GitHub Advanced Security 等安全特性,用于发现和修复漏洞、保障代码构建安全以及防止机密泄露。
  • 探索与支持:文档涉及通过 GitHub 的文档、博客、社区论坛等资源获取支持与服务。
  • 企业解决方案:概述了面向不同规模企业(企业、中小企业、初创公司、非营利组织)以及不同行业和用例(如应用现代化、DevSecOps、DevOps、CI/CD)的解决方案。

版本意义: 该版本通过集成 AI 编码助手、提供外部工具注册机制以及优化自动化工作流,进一步提升了平台在软件开发、协作与安全方面的综合能力,以满足开发者和企业在不同场景下的需求。

39. Ask HN: What resources do you recommend for learning Haskell?
40. Why I left Google (fogknife.com)

作者从谷歌离职,计划重返开源项目领域。经过三年在云服务文档前沿的打磨后,他希望转向更缓慢稳定的技术领域。

回顾在谷歌的时光,作者认为其如同一次完整的研究生课程,收获了宝贵的技能和职业关系。然而,随着谷歌公开调整目标与态度,公司逐渐变得与他当初入职时不同。尽管作者理解组织必然经历变化,但个人价值观与公司方向间的张力日益增大,最终促使他在三周年之际选择离开。

五月底,一次偶然的剧院经历成为关键转折点。作者观看了朱莉娅·马斯利的单人表演《哈哈哈哈哈》。演出中,马斯利邀请观众诉说烦恼并即兴提出解决方案。当被问及问题时,作者的妻子简短回答“AI”。马斯利随即表现出恐惧,并询问作者是否担心被AI取代工作。

作者回答:“不,我担心AI会让我的工作变得更糟。”当被问及职业时,他回应:“AI。”这一回答引发了全场反应。马斯利宣布作者当晚将成为“邪恶的象征”,并随后安排其参与一个象征性的“净化仪式”——作者在舞台上更衣并进入淋浴间,在舞曲中与观众互动,象征洗刷被命名的“邪恶”。

第二天,作者感到一种异样的不适。经朋友提醒,他意识到这次经历本质上是一次集体仪式:他在数百人面前以象征性裸体出现,所有注意力集中在他身上,而他在仪式中主动参与了对“邪恶”的象征性清洗——因为他在仪式空间外正是所指涉事物的直接参与者。

作者面临两个选择:拒绝这次经历,压抑内心的触动,让能量消散;或接受这罕见而超现实的经历作为馈赠,允许其改变自己。接受意味着需要采取行动,完成能量循环,从被动的承受者转变为主动的调整者,为世界做出微小而积极的改变。

作者最终选择了后者,并对此感到坦然。

41. Mojeek – The alternative search engine that puts the people who use it first (www.mojeek.com)

Mojeek:以用户为先的替代搜索引擎

核心定位与理念 Mojeek 是一款致力于将用户利益放在首位的替代搜索引擎。其核心使命是打造一款尊重和保护用户隐私、提供独特且无偏见搜索结果的搜索引擎。Mojeek 认为搜索是访问互联网的重要门户,因此通过采用从头自主研发的技术,为用户提供不同于主流搜索引擎的可靠选择。

发展历程 Mojeek 从一个个人项目逐步发展为索引规模超 90 亿网页的搜索引擎,其关键里程碑包括:

  • 2009年:获得首笔投资,正式从个人项目转型。
  • 2011年:从头开始抓取和构建新索引,并首次将服务器迁入数据中心。
  • 2013-2018年:多次获得私人投资,用于将索引规模翻倍、扩大团队以及提升单日网页添加量(2014年创下单日添加超500万网页的记录)。
  • 2024-2025年:索引网页数量先后突破 80 亿和 90 亿大关。

技术与管理团队 项目的核心人物是创始人兼开发者 Marc Smith。他自 2004 年起便致力于搜索引擎技术和知识产权的研发,一手构建了 Mojeek 的底层基础设施、网络爬虫、十亿级规模的索引系统以及核心算法。

用户支持 Mojeek 鼓励用户通过将 Mojeek 添加至浏览器,以实际行动支持这一注重隐私与无偏见搜索的替代项目。