2024-02-05

50 篇热帖

1. Vesuvius Challenge 2023 Grand Prize awarded: we can read the first scroll (scrollprize.org)

维苏威挑战赛2023年大奖公布:首个古卷得以解读

背景与挑战

  • 2000年前(公元79年)维苏威火山喷发,掩埋了古赫库兰尼姆纸草卷轴图书馆,卷轴被碳化。
  • 18世纪被发现后,因无法无损展开卷轴,长期无法阅读内容。
  • 2023年3月,Nat Friedman、Daniel Gross和Brent Seales发起维苏威挑战赛,提供超100万美元奖金,鼓励用计算机视觉与机器学习技术破解难题。
  • 利用英国钻石光源粒子加速器对卷轴进行高分辨率CT扫描,数据开源供全球参赛者使用。

获奖情况

  • 大奖(70万美元) 由Youssef Nader(埃及博士生)、Luke Farritor(美国大学生)和Julian Schilliger(瑞士机器人学生)组成的团队获得。
    • 该团队提交了最易读的文本解码成果,包含至少4段各140字符、可读性超85%的文本,并额外解码了11列超2000字符。
    • 方法结合了多种模型架构(如TimeSformer),开源了墨迹检测代码,并开发了先进的自动分割工具ThumatoAnakalyptor。
  • 亚军(三队各5万美元):表彰了在墨迹标注和采样方面创新贡献的团队。

首次解读的卷轴内容

  • 解码文本约占单卷轴内容的5%,共15列,均为此前未见的古希腊哲学文本。
  • 内容聚焦伊壁鸠鲁学派对快乐、食物、音乐等生活享乐的探讨,可能与哲学家菲洛德穆(伊壁鸠鲁派,古罗马诗人维吉尔的老师)有关。
  • 摘要显示,作者讨论稀缺与丰裕物品带来的快乐差异,并在结尾批评对手“对快乐无话可说”。
  • 学者认为这是重要的古典文献发现,有望在未来进一步解码中揭示更多失传作品(如亚里士多德对话录、萨福诗歌等)。

技术原理与可靠性

  • 虚拟展开流程
    1. 扫描:通过X射线断层扫描生成卷轴3D体素模型。
    2. 分割:识别并展开卷曲的纸草层(主要使用Volume Cartographer工具)。
    3. 墨迹检测:机器学习模型识别展开平面上的墨迹区域(非基于文字识别,而是直接检测微小墨点)。
  • 可靠性保障
    • 获奖代码已开源,技术团队可独立复现结果。
    • 多个团队对同一区域解码结果高度一致。
    • 模型使用小输入/输出窗口,大幅降低“幻觉”风险。

未来计划:2024年维苏威挑战赛

  • 目标:从解码5%单卷轴进阶到解码90%的已扫描卷轴(共4卷),并为读取全部300卷轴奠定基础。
  • 瓶颈:当前卷轴表面分割仍依赖人工,成本高昂(每平方厘米超100美元)。
  • 重点:推进自动分割技术,攻克严重压缩或损坏区域的解码难题。
  • 模式延续:继续结合大奖与社区协作,计划组建内部软件/ML团队加速进展。
  • 长远愿景:未来可能扫描并读取所有卷轴,其中可能包含超16MB文本;别墅未发掘的下层或藏有主要图书馆,潜在卷轴达数万卷,将极大改变古典学研究。

致谢与庆祝活动

  • 感谢全球参赛者、捐赠者、组织团队(维苏威挑战赛团队、EduceLab团队、纸草学团队)及合作伙伴。
  • 庆祝活动:2024年3月16日下午4点于洛杉矶盖蒂别墅博物馆举行。

:总结严格基于原文内容,涵盖事件背景、技术突破、成果解读、未来规划及团队致谢,未添加个人评论。

2. DEF CON 32 Was Canceled. We Un-Canceled it (forum.defcon.org)

DEF CON 32 原计划举办地凯撒宫突然终止合作,导致大会面临取消危机。DEF CON 团队迅速组建选址小组,在拉斯维加斯紧急寻找替代场地。最终确定大会仍将按原定日期 2024年8月8日至11日 举行,主会场转移至 拉斯维加斯会议中心(LVCC),工作坊和培训则安排在 撒哈拉酒店

新场地将提供更大空间、专业餐饮区以及全国最大的室内LCD墙,并为活动内容创新提供更多可能性。团队已开设在线FAQ板块(论坛链接已提供)持续更新参会信息。此外,为纪念“重启”事件,官方发布了限定T恤和贴纸周边商品。

4. Show HN: Natural-SQL-7B, a strong text-to-SQL model (github.com)

NaturalSQL-7B 模型摘要

NaturalSQL by ChatDB 是一个在文本到SQL指令任务上具有最先进性能的模型系列。其中,NaturalSQL-7B 是该系列的代表模型,它在针对新数据库模式的基准测试 SQL-Eval 中表现出色,在同尺寸模型中处于领先地位。

核心特点与性能

  • 高性能基准:NaturalSQL-7B 在 SQL-Eval 框架上的测试结果表明,它生成正确SQL查询的比例很高,特别是在处理新遇到的数据库结构时。
  • 复杂查询能力:该模型擅长处理包含子查询、比率计算等复杂逻辑的问题。文章提供了一个详细示例来说明这一点。
    • 示例任务:查询上个月订单总额最高的客户,并列出其所有订购的产品及数量。
    • 模型输出:生成了一个复杂的SQL语句,使用了公共表表达式(CTE)WITH 子句来分步处理:
      1. LastMonthOrders:筛选上个月的所有订单及其细节和产品信息。
      2. CustomerTotalOrderValue:计算每个客户的订单总值,并找出最大值。
      3. 最终查询:连接这些结果,返回目标客户及其详细订单信息。

相关资源与许可

  • 代码许可:仓库中的代码遵循 Apache-2.0 许可证。
  • 模型许可:模型本身遵循 CC BY-SA 4.0 许可证。
  • 致谢:开发团队感谢 Defog 团队开源了用于基准测试的 SQL-Eval 框架。
5. Gödel, Escher, Bach is the most influential book in my life (2022) (philosophygeek.medium.com)

《哥德尔、埃舍尔、巴赫:集异璧之大成》是道格拉斯·侯世达于1978年所著的一部普利策奖获奖作品。作者近期重读此书后,深受启发,认为书中将计算、认识论与意识巧妙融合,令人赞叹。他决定聚焦于三个深刻影响了他个人生活的思维模型来阐述本书的重要性:认识论局限自指同构

核心概念与人物

本书的核心人物是数学家库尔特·哥德尔。他最著名的不完全性定理(1931年证明)颠覆了数学界,指出在任何足够强大的、自洽的形式系统中,总存在一些为真但无法在该系统内被证明的命题。这揭示了数学乃至宇宙根本的认识论局限——存在某些真理是任何天才、外星文明或机器都无法认知的,新的数学体系也无法触及。这类似于海森堡测不准原理在物理学中对精确测量的限制。

本书的关键主题是自指,即系统能谈论自身。强大的数学系统或任何产生复杂性的系统常包含自指,这既赋予系统力量,也立刻导致悖论(如“这句话是假的”)。同构是侯世达采用的一个宽泛术语,指两个系统在结构上的相似性。例如,行星绕恒星运行与电子绕原子核运行可被视为同构。这促使人们去定义系统的结构、相似之处以及次要部分。

艺术与音乐中的体现

书中次要人物——艺术家M.C. 埃舍尔和作曲家约翰·塞巴斯蒂安·巴赫——是哥德尔思想在艺术领域的映照,他们都大量运用了自指。埃舍尔的画作(如《画手》)和无限循环的水景,巴赫复杂的赋格曲(同一旋律叠加,类似轮唱),都提供了抽象数学概念的具体例证。

写作风格与结构

本书以高质量的写作著称。每章开头都有阿基里斯与乌龟(灵感源于刘易斯·卡罗尔)及其拟人化朋友之间的机智对话。这些对话处理各种离奇情境,且本身与后续章节的主题同构,常常比章节正文更易于理解主题。书中的“螃蟹卡农”对话甚至可以正反阅读。整本书也高度自指,主题常在数百页后得到回应。

个人影响与应用

作者阐述了《GEB》如何塑造他的思维:

  1. 自下而上的解决方案:他认为侯世达展示的复杂性从简单系统涌现的例子(如意识从神经元中产生、蚁丘中的蚂蚁群体涌现出“蚁丘阿姨”的智能),暗示自下而上优于自上而下。这契合其坚信社会应依赖个体智能的局部决策,而非顶层指令。
  2. 接受系统“缺陷”:对复杂系统固有局限(认识论局限)的认识,使他谦逊地看待人类知识系统的极限。他认为乌托邦思想试图剔除系统中“缺陷”往往是徒劳的,因为这些“缺陷”可能是系统的固有特性。更好的做法是在系统内最小化其弊端并最大化其价值。
  3. 软件设计中的迭代与反馈:侯世达展示的涌现性和复杂性观念,影响了作者与协作伙伴坚信迭代与反馈回路是高质量软件设计的关键。客户与公司、产品与工程之间的持续反馈循环,构成了生成优秀产品的系统。

总而言之,作者认为《哥德尔、埃舍尔、巴赫》为其提供了用于思考哲学的思维模型。写作此文的目的,既是为了向自己厘清本书的重要性,也希望鼓励那些书架上搁置此书的读者重新拾起阅读。

6. Show HN: Visit the front page of Hacker News on a random day (randomhackernews.com)

项目概述
这是一个“Show HN”项目,旨在让用户探索Hacker News的历史存档,通过重定向功能随机访问某一天的首页。

主要功能

  • 提供一种便捷方式,随机浏览Hacker News过去任意日期的首页内容。
  • 通过重定向技术实现快速访问,无需手动选择日期。

额外信息
项目中提到了“更多项目”,但未具体说明其他相关工具或细节。

7. Beyond self-attention: How a small language model predicts the next token (shyam.blog)

本文深入探讨了一个基于Andrej Karpathy教程训练的约1000万参数的小型Transformer模型(6层,解码器架构,字符级词元)的内部工作机制,特别关注自注意力层之后,前馈网络如何将注意力计算结果转化为对下一个词元的准确预测

核心理论 作者提出一个工作理论:每个Transformer块通过其前馈网络学习将给定的输入提示关联到训练语料库中的一类字符串。模型对下一个词元的预测,近似于这些关联字符串在训练数据中后续词元的频率分布。不同块可能将同一提示关联到不同的字符串类别,从而产生不同的预测分布。模型的最终输出是各块预测分布的加权线性组合。

关键证据与发现

  1. 前馈网络的主导作用:在作者研究的模型中,前馈网络参数占比超过65%,是决定块输出的主要因素。实验表明,仅使用前馈网络输出的近似计算,就能产生与完整模型高度相似的输出概率分布(在20000个测试提示上,平均Hellinger距离仅为0.17)。
  2. 近似方法的有效性:作者实现了一套命令式代码来执行上述近似过程:对每个提示,在训练语料库中找到与各块前馈网络输出余弦相似度高的子字符串,统计这些字符串后续词元的频率,再对各块的频率分布进行加权求和和归一化。该方法产出的分布与模型输出非常接近。
  3. 注意力机制的作用:虽然本文聚焦于前馈网络,但作者指出,自注意力机制的核心任务是识别输入词元间的模式,从而将提示精确地映射到训练语料库中合适的字符串类别。多块、多头的注意力为模型提供了评估大量潜在模式的能力,这是其预测能力的基础。
  4. 理论解释:作者认为,Transformer块在本质上是在嵌入空间中通过向量加法进行变换(输入嵌入 + 自注意力输出 + 前馈网络输出),其中前馈网络输出是主要导向向量。嵌入空间中存在对应于特定词元的“子空间”,前馈网络输出的作用就是将输入嵌入推向与预测词元相对应的子空间。

研究背景与局限性 该研究基于一个在TinyShakespeare数据集上训练的小模型,属于探索性的“白盒”分析。作者承认,此理论的普适性(例如在大模型上是否成立)有待验证,且对注意力机制的分析相对简略。尽管如此,该工作为理解Transformer中“自注意力之后”的计算流程提供了一个具体且可解释的框架。

8. Deno in 2023 (deno.com)

Deno 2023年发展总结

2023年,Deno 在提升 Node/npm 兼容性性能方面全面发力,并继续致力于简化Web开发。主要更新如下:

Node/npm兼容性大幅提升

  • 支持package.json,并可通过node:说明符(如node:fs)导入内置Node模块。
  • 对42个Node内置API中的38个提供了部分或完整支持。
  • 新增多个过渡标志:--unstable-byonm(允许使用用户偏好的npm包管理器)、--unstable-sloppy-imports(放宽模块导入严格性)和--unstable-unsafe-proto(支持依赖__proto__的npm包)。
  • Node-API已稳定,使用相关npm包时不再需要--unstable标志。

性能与核心API优化

  • 稳定并优化了Deno.serve()函数,极大简化了Web服务器创建。通过底层架构优化,HTTP吞吐量全年提升约73%,相比Node.js有约61%的优势。
  • 全面采用Web StreamsReadableStream/WritableStream)和AbortController,缩小浏览器与服务端编程的差距。
  • 优化了事件循环和HTTP接口与Hyper/Reqwest库的集成,减少了数据分配和复制开销。

配置与开发体验改进

  • deno.json配置文件功能增强:现可作为导入映射,结构扁平化,新增Glob模式支持和顶层exclude属性,便于控制文件排除。
  • 语言服务器协议(LSP)集成大幅提升:扩展了对npm:node:说明符的自动补全;VS Code扩展可自动激活;支持重命名文件时自动更新导入;改进了跨项目文件引用的预加载。
  • 零配置TypeScript体验更佳,编辑器集成更加顺畅。

新增功能与生态扩展

  • WebGPU 经过近一年开发,现已通过--unstable-webgpu标志可用,为GPU计算(图形渲染、数据分析、机器学习等)开辟新路径。
  • Jupyter笔记本 现支持使用Deno运行JavaScript和TypeScript,可用于数据科学、可视化,甚至构建生成式AI模型(如LangChain.js课程)。
  • Fresh框架 持续进化:新增_layout文件、路由分组、异步路由组件;Islands功能增强(支持嵌套、更多数据类型、子目录组织);引入Partials优化客户端导航;集成Tailwind CSS;改进插件系统和测试。
  • 发布了多个有用的开源Rust crate,如fastwebsockets(快速WebSocket实现)、deno_task_shell(跨平台Shell)等。

云服务与商业化

  • Deno Deploy 功能增强,提供全球分布式原语:Deno KV(已开源二进制文件,支持远程连接和Node/npm模块)、QueuesCron,它们与运行时深度集成。
  • Deno Subhosting 实现自助服务,允许用户通过API安全地部署和执行不受信任的多租户JavaScript代码。

展望未来

Deno团队正准备推出Deno 2,将进一步改进与Node/npm的兼容性,并提供迁移指南和新的依赖管理功能。

9. Tenstorrent engineers talk open-sourced bare-metal stack (www.eetimes.com)

Tenstorrent开源裸金属软件栈与硬件布局

Tenstorrent公司(由Jim Keller领导)正开源其裸金属软件栈,旨在让用户以最低层级访问硬件。这一举措是为挑战Nvidia在AI和HPC领域的主导地位(Nvidia凭借成熟软件栈CUDA实现优势),多家初创公司(如Untether、Esperanto)已通过开放裸金属编程能力来竞争。

核心开源项目:Metalium

  • 功能:提供低层编程模型,允许开发者编写自定义内核,以在Tenstorrent硬件上实现高效算法执行。附带调试和性能分析工具。
  • 目标用户:主要面向少数专家开发者,用于优化大规模部署性能或开发科学计算的自定义内核。
  • 特点:与CUDA不同,Metalium允许每个核心独立执行不同任务,仅在需要时同步,提供更多灵活性。
  • 开源承诺:公司承诺完全透明的开源,代码库(如GitHub)将公开所有内部开发过程、提交记录和问题跟踪,类似PyTorch的开放开发模式。

软件栈配套工具

  • TT-NN库:基于Python的高级库,支持开箱即用的AI模型运行,无需直接处理硬件复杂性或编写自定义内核。

硬件产品与路线图

  • Grayskull芯片(一代):已提供评估套件,分两个版本:220W版本(120核,332 TFLOPS FP4算力,8GB LPDDR4)和75W版本(96核,221 TFLOPS FP4算力)。
  • Wormhole芯片(二代):含80个Tensix核心和16路100Gb以太网,支持多芯片扩展。通过32颗Wormhole芯片组成的Galaxy系统,在网格中连接,已运行大型语言模型(如Falcon-40B),目标是以性价比竞争Nvidia DGX-A100。
  • Tensix核心架构:每个核心包含5个RISC-V小核、数据路由、数学引擎和SRAM,实现计算与数据移动解耦,以提升并行效率。
  • 未来芯片
    • Blackhole(二代):140个Tensix核心,更多DRAM和更快以太网,并集成16个独立RISC-V核以运行操作系统,无需外部x86主机。已在台积电N6工艺流片。
    • 第三代芯片(Quasar和Grendel):基于Chiplet设计,采用三星SF4工艺,更新Tensix核心,计划将四个核心与共享L2集成以提升权重复用,预计2025年推出。

编译器与软件优化

  • 公司编译器可将工作负载自动映射到芯片核心阵列,并生成可读网表供手动干预。优化映射能减少片上网络带宽消耗,提升数据传递效率。

战略意义

开源裸金属栈旨在扩大专家开发者生态,从少数关键开发者增长到更多参与者,以支持生产环境中的性能精细优化和自定义计算需求。公司强调“开发于公开”的文化和代码维护标准,以推动硬件透明度和可复现性。

10. Programming in 1969 (www.ilikebigbits.com)

1969年的编程:一位先驱者(作者的母亲)的访谈

本文通过作者对母亲玛丽安·埃尔内费尔特的采访,回顾了1969年左右在瑞典成为一名程序员的经历,涵盖了职业选择、培训过程、日常工作和行业环境。

职业道路与进入行业

玛丽安在1965-66年通过一篇包含流程图的文章对编程产生兴趣。高中毕业后(1967年),由于大学尚无编程专业,她申请了一个为期12个月的课程。同时,她也申请了瑞典国家铁路公司(SJ)的管理培训生项目。凭借优异表现(从700名申请者中脱颖而出),她加入了SJ培训生计划。培训期间,她轮岗学习了铁路运营的各个环节。1969年,得知SJ开设内部编程培训后,她成功申请并成为首批四名学员(两男两女)之一。

培训内容

初期培训包括参观SJ的计算机部门和在IBM接受课程。IBM采用了先进的远程电视教学,学员在分教室通过屏幕上课。课程首先涉及IBM操作系统,随后学习了IBM的编程语言PL/I——它被描述为比当时的COBOL更现代、更简洁的语言(支持表格和查询等)。玛丽安评价PL/I是一种“真正不错的编程语言”。之后,她还学习了汇编语言。培训模式是“一周课程,再加工作实践”,并由工作中的导师指导。

日常工作与技术环境

  • 工作流程:程序员首先绘制流程图,用铅笔编写代码。代码随后交给打孔部门,由操作员(主要是女性)将其打到80列的打孔卡上(72列代码,8列序列号)。每个代码指令对应一张卡片,一个程序可能装满多个数米长的卡片盒。
  • 执行与调试:程序(连同控制卡)被放入卡片盒,交给穿白大褂的机器操作员运行。由于优先级低,程序员每天通常只能运行一次程序,因此需要同时处理多个项目。运行结果会连同打印在“睡衣纸”上的错误列表一起返回。调试很大程度上依赖“桌面测试”(纸上推演)。
  • 硬件:早期使用IBM 360等大型机,后期升级为IBM 370。机器本身可能占据很大空间。
  • 终端时代:直到70年代末,才出现共享的终端室(使用Alfaskop终端),程序员需要争抢使用时间来修改程序,玛丽安直到1979年离职都未拥有过个人终端。

同事与行业地位

  • 团队构成:SJ计算机部门约有40名程序员和系统工程师。大多数同事(包括玛丽安)是公司内部培训的,当时这是新兴职业,甚至有些同事曾是火车司机,许多人没有高中文凭。部门内约有10名机器操作员和50名打孔操作员。40名程序员中有5-6名女性。
  • 企业文化:文中提到早期办公室门上对女性标注“小姐”或“夫人”而男性无此标识的现象,女性员工们通过拆下门牌表达了对这种不平等的不满。
  • 行业领先:SJ在数据处理方面走在瑞典前沿。1969年春天上线的SJ在线订票系统(24/7运行,用汇编语言编写)被认为是当时极其先进的项目,在全瑞典无出其右。

工作内容与个人发展

程序员主要负责编写新程序,而非维护。项目多为定期运行的统计程序(如工资核算)。玛丽安在职十年期间,参与了各类编程工作。1979年,她离开SJ,转行进入银行领域。

13. The first open source 3D atlas of human anatomy (conference.blender.org)

Z-Anatomy:首个开源3D人体解剖图谱

在不到两年的时间里,Z-Anatomy 项目已收集了超过 5,000个 三维解剖结构及标签,并包含了超过 3,500条 定义,全部集成在两个功能完善的开源查看器中。

核心特点

  • 免费与多语言:该图谱免费提供,支持5种语言
  • 开源与协作:采用 CC-BY-SA 许可证,旨在成为面向学生、医疗专业人员和研究人员的开源替代方案,促进科学领域的协作。
  • 工具平台Blender 既作为该项目的开发工作坊,本身也可用作解剖查看器。
  • 发起团队:该项目由一位比利时医学插画师、一位波兰Python程序员和一位西班牙开发者共同协作完成,旨在提供首个组织化的3D解剖图谱。
14. Stract: Open-souce, non-profit search engine (stract.com)

Stract 是一个开源、非营利的搜索引擎。内容中提到了 LegacyStract,可能指旧版本或相关项目。此外,用户可以通过 optic 来定制搜索体验,以个性化搜索结果。

16. Apple fixes zero-day bug in Apple Vision Pro that 'may have been exploited' (techcrunch.com)

苹果修复Vision Pro中可能已被利用的零日漏洞

概述: 苹果公司为其混合现实头显设备 Apple Vision Pro 发布了首个安全更新,修复了一个“可能已被在野利用”的关键零日漏洞。

关键信息:

  • 发布更新:苹果于周三发布了 visionOS 1.0.2 更新,该系统运行于 Vision Pro。
  • 漏洞性质:此次修复的漏洞存在于 WebKit 浏览器引擎中,该引擎为 Safari 及众多网页应用提供支持。成功利用此漏洞可导致恶意代码在受影响设备上运行。
  • 漏洞编号与历史:该漏洞官方编号为 CVE-2024-23222。苹果在上周发布的 iOS 17.3 系统更新中已针对 iPhone、iPad、Mac 和 Apple TV 修复了同一漏洞,但 Apple Watch 未受影响。
  • 利用情况未知:目前尚不清楚恶意黑客是否曾利用此漏洞专门针对 Vision Pro 发起攻击。苹果公司发言人在被问及时未予置评。
  • 攻击者与动机不明:同样未知的是谁在利用此漏洞,以及他们的目的。
  • 漏洞风险背景:WebKit 漏洞常被恶意行为者(如间谍软件制造商)利用,以此侵入设备底层操作系统并窃取用户个人数据。这类漏洞可能在受害者通过浏览器或应用内浏览器访问恶意网站时被触发。
  • 产品上市时间:Vision Pro 预计于本周五(报道当日)正式上市。

总结:苹果在 Vision Pro 上市前夕紧急修复了一个严重的 WebKit 零日漏洞,该漏洞已在其他苹果设备中被修复,凸显了该技术巨头对新产品安全性的重视。

19. How Condé Nast bought and destroyed Pitchfork (www.semafor.com)

康泰纳仕收购并摧毁Pitchfork始末

收购背景与动机

  • Pitchfork的崛起:从一个利基博客发展成为独立音乐潮流的引领者,总部从芝加哥迁至布鲁克林,吸引风投(VC)及Vice等公司的收购意向。
  • 创始团队的谨慎:创始人Ryan Schreiber和CEO Chris Kaskie拒绝了可能要求快速扩张的投资方,认为“规模扩张/投资感觉总是不对”。
  • 康泰纳仕的入局:2015年10月13日,康泰纳仕完成收购。Pitchfork看中其作为《纽约客》《名利场》等老牌刊物的“负责任管理者”声誉;康泰纳仕则看重Pitchfork的创意编辑风格、数字媒体影响力(曾获国家杂志奖)、直抵首页的流量,以及其巴黎和芝加哥音乐节活动业务的扩张潜力。

收购后的衰落过程

  1. 核心团队与身份丧失

    • 视频团队被并入康泰纳仕娱乐部门(CNE),多个原创项目和频道被终止,视频人员离职或被裁。
    • 内部设计和创意团队被吸收或裁撤,削弱了其获奖的编辑视觉风格。
    • 核心领导者在合同期内相继离开:CEO Kaskie因角色被削弱、自主权下降于2017年辞职;Schreiber在合同期满前数年便离开,未能在康泰纳仕业务侧找到清晰角色。
  2. 企业文化与管理冲突

    • 定位误解:2015年,康泰纳仕首席数字官Fred Santarpia公开表示Pitchfork有助于吸引男性受众,此标签令员工愤怒,且后续公司内部仍受此观念影响。
    • 组织结构调整:2016年,Pitchfork被归入“男性”品牌分类,而非更贴合的“文化”类别,引发不满。
    • 高层缺位:支持收购的Santarpia于2018年离职后,缺乏为Pitchfork发声的高管层;其最终被划归Anna Wintour管辖,后者被认为对该网站兴趣不大。
  3. 商业化压力与创意摩擦

    • 康泰纳仕试图将基于社区的网站纳入程序化广告销售体系,与原有模式冲突。
    • 音乐节(Pitchfork Festival)商业化冲突
      • 尽管活动扩展至伦敦、柏林、墨西哥城,赞助收入增加,但母公司试图进一步“奢侈化”以提升收入。
      • 员工反对过度商业化,认为其损害品牌;例如,2016年康泰纳仕销售人员批评芝加哥音乐节“不够时尚”;高管甚至提出通过重组白条纹乐队或绿洲乐队来刺激票房的荒谬建议。
  4. 数字媒体环境变化带来的外部压力

    • 社交媒体平台导流减少、Spotify算法分流了依靠Pitchfork发现音乐的休闲听众。
    • 2018年数字媒体行业整体受挫,新任主编Puja Patel虽试图在维持编辑风格的同时推动员工多元化,但仍面临削减成本的巨大压力。

结论

康泰纳仕在收购后通过持续削减成本、频繁的企业重组、核心人员流失,以及最根本的——将Pitchfork僵硬地融入其以受众数据驱动的广告模式和大企业架构中,逐渐侵蚀了Pitchfork作为独立音乐标杆的创意内核与品牌特色,最终导致其衰落。

20. Netflix: Piracy is difficult to compete against and growing rapidly (torrentfreak.com)

Netflix承认:盗版竞争难度大且增长迅速

作为反盗版联盟ACE和美国电影协会(MPA)的成员,Netflix处于全球打击在线盗版的前线。该公司在最近提交给美国证券交易委员会(SEC)的文件中罕见地直接指出,盗版提供的免费娱乐模式使其极难竞争,并且盗版正在迅速增长。

从竞争对手到面临挑战 十五年前,Netflix推出在线流媒体服务时,将自己定位为盗版的竞争对手,旨在通过提供合法、更便捷的平台来抢占盗版市场份额。最初,这一策略似乎奏效,吸引了数亿订阅用户,部分人放弃了盗版习惯。然而,随着“流媒体大战”的加剧,合法、便捷的平台逐渐演变为孤立且价格高昂的内容孤岛,形势开始转变。近年来,盗版活动再次抬头,甚至在美国等服务完善的市场也是如此。这虽然可能有助于Netflix在与其他合法平台的竞争中,但如果输给盗版,这点优势微不足道。

SEC文件中的风险披露 Netflix在最新的年度报告(10-K文件)的“竞争”章节中多次提及盗版。公司指出,在线视频行业竞争激烈,包括基于订阅、交易、广告和盗版模式的各种渠道都可能抢占市场。Netflix强调,盗版对其业务构成威胁,因为其对消费者的核心吸引力“如此引人注目且难以对抗:几乎所有内容都是免费的”。

全球增长与反制措施的不足 Netflix在早期拥有比多数盗版网站更便捷的按需流媒体体验。但如今,大多数盗版网站也提供按需流媒体,削弱了Netflix的一大优势。由于盗版对消费者极具吸引力,其在全球范围内快速增长,威胁着合法服务。Netflix在文件中写道:“鉴于这种引人注目的消费主张,盗版服务正经历全球快速增长,而我们为阻止这种增长所做的努力可能不足。”公司警告,如果无法成功应对竞争,业务、市场份额、收入和盈利能力都将受到不利影响。

行业普遍存在的担忧 尽管Netflix的担忧是真实的,但公司并未濒临危机。此类10-K文件旨在披露风险,提及盗版威胁的公司不止Netflix一家。有趣的是,包括Triller Corp、FuboTV、Redbox Entertainment等在内的多家公司,在其SEC文件中使用了与Netflix完全相同的关于盗版增长的表述,表明这一风险披露语言已被广泛采用。

应对盗版的投入 十年前,Netflix高管对盗版并不十分担忧,但如今,该公司每年投入数百万美元应对这一问题。Netflix近年来加入了MPA,并且是反盗版联盟ACE的成员,同时还拥有内部的反盗版部门以监控威胁。

21. ProofWiki: Online compendium of mathematical proofs (proofwiki.org)

ProofWiki:数学证明在线汇编

ProofWiki 是一个专注于收集、协作和分类数学证明的在线平台。其目标是建立一个全面的数学证明资源库,鼓励用户注册账户并参与贡献。

网站提供以下核心内容和功能:

  • 证明与定义库:目前收录超过29,602个证明和35,298个定义。
  • 社区协作:设有讨论页面和社区门户,方便用户交流与协作。
  • 帮助资源:提供常见问题解答和使用帮助。

网站定期展示精选证明。例如,关于旋轮线的一个定理指出:由方程 x = a(θ - sinθ)y = a(1 - cosθ) 生成的旋轮线,其一个完整弧段的长度为 8a

该定理的证明采用了笛卡尔的近似方法:

  1. 用内接于生成圆的多边形(如六边形)来逼近旋轮线。
  2. 计算多边形对应弧段的总长度,该长度可通过多边形的边长(弦长)和中心角推导得出。
  3. 应用拉格朗日正弦恒等式对求和公式进行化简。
  4. 最后令多边形的边数 n 趋向于无穷大(即用无限逼近的圆代替多边形),通过求极限得到精确的弧长结果 8a
22. Zellij – A terminal workspace with batteries included (tmux alternative) (zellij.dev)

Zellij 终端工作区功能概述

Zellij 是一个功能丰富的终端工作区工具,作为 tmux 的替代品,提供多种内置功能以提升终端使用体验。其核心教程和功能包括:

  • 基本功能:演示浮动窗格、命令窗格和回滚编辑,适用于日常任务,如终端操作和文本编辑。
  • 堆叠调整大小与固定浮动窗格:专注于窗格的调整和固定,优化多任务布局管理。
  • 布局创建:指导用户创建自定义布局,以自动化重复性任务和工作流程。
  • 会话管理:支持使用会话来分离不同任务和上下文,便于切换和组织工作环境。
  • Web客户端:允许在浏览器中运行和共享 Zellij 会话,扩展了使用场景,无需依赖专用终端模拟器。
  • 处理键盘快捷键冲突:解决 Zellij 界面拦截应用程序按键的问题,提供配置方法以避免冲突。
  • 文件选择器:提供动态文件探索工具,集成模糊查找和自动完成功能,提高文件导航效率。
  • Rust 插件开发:提供教程,指导开发者使用 Rust 语言为 Zellij 构建自定义插件,扩展其功能。

这些功能共同使 Zellij 成为一个高度可定制和用户友好的终端工作区工具,适合开发者和终端用户提升生产力。

24. Linux has reached 4% for the partial Feburary 2024 data on StatCounter (github.com)

文章摘要

根据提供的内容,文章标题为“Linux has reached 4% for the partial Feburary 2024 data on StatCounter”,但文章内容部分主要涉及GitHub仓库的界面元素,未包含具体的Linux市场份额数据或详细分析。内容要点如下:

  • 反馈功能:提供反馈选项,每条反馈都会被认真阅读,并包含电子邮件地址以便联系。
  • 保存搜索:用户可以使用保存的搜索来更快地过滤结果。
  • 登录/注册:提供登录和注册的链接,用于访问仓库功能。
  • 外观设置:包括外观设置选项,用于自定义界面。

由于内容不完整,无法获取关于Linux在StatCounter数据中达到4%的进一步细节或上下文。摘要仅基于提供的文本元素。

25. Apple iPod Shuffle USB interface pinout (pinoutguide.com)

Apple iPod Shuffle的USB接口引脚定义如下:

iPod引脚 引脚名称 USB引脚 USB颜色
1 USB DATA - / 左声道 2 白色
2 USB DATA + / 右声道 3 绿色
3 GND(接地) 外壳 黑色
4 VCC(电源) 1 红色

该接口同时用作耳机插孔,音频信号到USB数据(正负)的转换由适配器底座内的电路板完成。此外,VCC和GND之间设有公共二极管,以确保电源的完美隔离。

当使用非原装底座进行充电时,需将引脚3接地,并将Vcc施加到音频插孔的引脚1、2和4上。

27. Sapling: Experimental vi-inspired editor where you edit code, not text (github.com)

Sapling: 实验性代码编辑器概述

核心概念

Sapling 是一个高度实验性的代码编辑器,其核心创新在于 直接编辑抽象语法树(AST)而非纯文本。它旨在借鉴结构化编辑的思想来提升代码编辑的效率,类似于 Vim 或 Emacs 通过快捷键加速文本操作。

项目状态与背景

  • 当前状态:项目处于早期实验阶段,设计可能随时发生重大变化。作者(@kneasle)因个人时间有限暂停了开发,但项目并未中止,仍有社区支持和 Discord 讨论。
  • 设计灵感:主要受 Shtanton 的博客文章启发,编辑模型借鉴了 Vim、NeoVim 和 Kakoune(特别是其多光标选择模型)。同时参考了 Tree Sitter(一个通用的、容错的语法解析器)和其他结构化编辑器项目(如 grasp、Barista)。

为什么需要 Sapling?

传统文本编辑器中,代码大部分时间处于语法无效的中间状态。这不仅对程序员低效,也给语言服务器等工具带来挑战。Vim 等编辑器通过快捷键优化文本操作,而其中最有效的操作(如 ci()本质上是修改语法树。Sapling 将这一逻辑推演至极致:将主要的按键操作直接映射为对程序语法树的修改动作

设计目标(按重要性排序)

  1. 编辑速度:旨在让高级用户的编辑速度接近其思考速度。
  2. 稳定性:绝不能导致数据损坏或崩溃。
  3. 通用性:理论上可通过插入语言插件/语法来编辑任何语言。
  4. 熟悉感:为 Vim/Kakoune 用户提供熟悉的操作模式,但需针对 AST 编辑进行调整。
  5. 交互性:始终为用户提供动作的即时反馈。
  6. 性能:响应迅速,资源占用低。

基于 AST 编辑的优缺点

优势

  • 语法高亮、代码折叠、自动格式化等功能变得简单,因为编辑器始终理解代码结构。
  • 有望实现极快的编辑速度。
  • 操作可能比文本编辑更直观。

挑战

  • 文件搜索:只能选择语法节点,需要一种在树中搜索节点的有效方法(灵感来源:grasp)。
  • 打开文件:需要一个能处理语法错误、可将 AST 还原为文本的通用解析器。Tree Sitter 是一个潜在基础,但需增强其保留注释和输出文本的能力。

快速开始与当前功能

  • 安装:需从 GitHub 克隆仓库并使用 Rust 从源码构建。
  • 当前能力:目前仅支持编辑 JSON。提供基本键位:
    • 光标移动(在兄弟节点、父子节点间跳转)。
    • 树修改(替换、删除、插入新节点)。
    • 撤销/重做。
    • 支持命令重复计数(如 3u 撤销三步)。

什么是 AST?

抽象语法树(AST) 是程序结构的树形表示,仅包含逻辑结构,不含格式细节。例如,一段简单的 Rust 函数代码会被转换为一个由函数节点、参数节点、语句节点等构成的树结构,每个代码“元素”对应树中的一个“节点”。Sapling 的编辑操作即是直接对这些节点进行。

29. UUID Benchmark War (ardentperf.com)

UUID 存储方式基准测试摘要

本文对比了在 PostgreSQL 中存储主键的四种不同方式的性能与空间开销:text 类型存储 UUID、原生 uuid 类型、新的 uuidv7 函数(计划 PostgreSQL 17 实现)以及标准的 bigint 自增序列。测试通过并发插入百万行数据并查询来评估其表现。

核心测试结果

测试结果显示,性能与空间效率依次提升:

  1. text 存储 UUID:速度最慢(410秒插入百万行),存储空间最大(4.31GB)。
  2. 原生 uuid (v4):性能提升约10%,存储空间减小63%(2.65GB)。
  3. uuidv7:性能比 uuid (v4) 提升约30%,存储空间进一步缩小7%(2.47GB)。
  4. bigint:与 uuidv7 插入速度相当(约290秒),但存储空间最小(1.97GB),比 uuidv7 小25%。

关键发现:尽管在此次测试中 uuidv7 的插入速度与 bigint 持平,但作者指出,由于并发查询未对 uuid 列施加足够的缓存压力,两者的性能差距可能未完全显现。分析表明,uuid(特别是 v4)因数据局部性差,会显著增加缓存压力(IO:DataFileRead),从而影响整体工作负载性能。而 bigintuuidv7 因具备顺序性,在缓存利用上表现更优。

测试环境与方法

  • 环境:AWS EC2 (c7a.medium 实例),PostgreSQL 开发分支(2024-01-29),应用了 uuidv7 补丁。
  • 配置shared_buffers=1G, max_wal_size=204800
  • 工作负载:初始表含2000万行,并发(10个客户端)执行包含 INSERTSELECT 的事务。
  • 分析手段:通过监控等待事件和缓存使用情况(pg_buffercache)来诊断性能差异。

成本与可复现性

整个基准测试在AWS上运行的成本不足3美元。作者提供了详细的脚本和步骤,基于其“Copy-and-Paste Postgres Dev Env”环境,使测试完全可复现。

总结与讨论

文章明确了不应使用 text 存储 UUID,并强调了 uuidv7 作为兼顾性能与通用性的优秀选择。同时也指出,相较于 bigintuuid(128位)在存储上仍有固有的空间开销。文章引发了社区关于使用 ULID、测试不同索引类型(如 BRIN)以及评估 JOIN 操作影响等后续测试方向的讨论。

30. The Apple Vision Pro is spectacular and sad (www.theatlantic.com)

文章标题:Apple Vision Pro:惊艳与遗憾并存

本文是一篇关于 Apple Vision Pro 的深度使用体验与评论,作者通过亲身佩戴测试,从多个角度描述了这款设备的创新之处、实际体验中的矛盾感,以及其试图弥合数字与现实世界鸿沟时所暴露的根本性挑战。

核心体验与矛盾:

  1. 惊艳的起始与不适的现实:设备在初始设置时能通过扫描面部生成数字化虚拟形象(Persona),但效果显得不自然,令他人发笑。作者在增强现实(AR)模式下,通过高分辨率双屏看到了极为清晰的现实世界叠加虚拟界面,最初体验惊艳。但很快,由于现实世界的重建存在细微延迟和抖动,作者产生了生理上的不适感和晕动症。

  2. 作为工作空间的探索与困境:作者尝试在虚拟环境(如白沙沙漠、胡德山)中将其作为扩展电脑屏幕使用。虽然这种模式带来了符合人体工学的坐姿,但交互上存在严重问题:虚拟窗口管理困难(例如文档窗口“丢失”在另一个房间)、输入延迟、焦点难以集中。作者感到自己仿佛被困在了一个与现实脱节的“电脑空间”中,加剧了孤独与迷失感。

  3. 作为媒体设备的潜力与局限:在观影和游戏方面,Vision Pro表现出色。它能提供巨大、明亮的沉浸式影音体验(如播放《阿凡达:水之道》),AR游戏(如《水果忍者》)也能带来新奇的物理互动感。然而,长时间佩戴的重量负担、电池续航限制(需连接电源)以及“空间视频”记录家庭时刻时画质不够清晰、体验略显廉价等问题,也削弱了其吸引力。

  4. 数字与现实的冲突具象化:文章的核心论点在于,Vision Pro本意是通过增强现实来协调数字生活与物理生活,消除电脑将我们与世界隔离的现状。但实际体验表明,设备虽然技术先进,却并未成功融合两者,反而将两者间的矛盾与鸿沟以更高清、更个人化的方式呈现出来。作者描述摘下头显后重回物理世界时的错位感(如饥饿、与家人交流困难)正是这种割裂的体现。

总结与反思:

作者承认设备在技术上已是“惊艳之作”,有可能成为未来计算的新范式,类似于早期的Macintosh或iPhone。然而,其根本挑战在于:数字世界与物理世界之间是否存在一条无法用技术弥合的鸿沟?Vision Pro试图搭建桥梁,但其作为“一副眼镜”也同时是“一个眼罩”的双重属性,恰恰凸显了这一矛盾。它带来了前所未有的沉浸感与控制感,却也可能加深了人与现实环境的疏离。文章最终在肯定其技术成就的同时,对其试图统一两个世界的宏大愿景提出了深刻的质疑。

31. DNA damage and mutations in cells after irradiation with a nail polish dryer (www.nature.com)
32. Dijkstra's interview on Dutch TV (2000) (pncnmnp.github.io)

本文整理自计算机科学家艾兹赫尔·韦伯·戴克斯特拉于2000年接受荷兰电视采访的内容。采访中,戴克斯特拉阐述了他对计算机科学、软件开发及编程教育的深刻见解。

核心观点:计算机科学的本质 戴克斯特拉开篇即指出:“计算机科学不是关于计算机的,就像天文学不是关于望远镜的。” 他认为计算机科学的核心在于理论与思维,而非具体的机器。

对软件行业的批评 他强烈批评商业软件开发中“胡乱拼凑”的做法,认为许多软件只是为了售卖而无需足够好,并依赖后续版本修补。他主张第一个版本就应该是完善的成品。他认为企业因维护合同而可能容忍错误,而部分程序员则从不确定性和风险中获得刺激,这阻碍了对正确性的追求。

编程风格与教育 他将编程风格类比为莫扎特与贝多芬:前者构思完成即一次性写出谱子,后者则反复修改。他认为英美教育体系鼓励迭代修改,这促进了文字处理软件的普及,但他个人推崇一次做对的严谨方法。他批评大学课程不断“幼稚化”,并缺乏教授“硬科学”的勇气。

优雅与正确性 戴克斯特拉强调“质量、正确性与优雅”应是程序的特征。他将“优雅”定义为“巧妙地简单而有效”,认为优雅的程序更易管理、更高效,且是成败的关键因素。他坚信应给予世界其所需的,而非其所求的。

应对复杂性 他以IBM登月软件为例(该软件曾偶然发现将月球定义为斥力而非引力),说明测试只能证明缺陷存在,无法证明其不存在。因此,他强调必须通过严格的数学和控制机制来管理复杂性,而非依赖运气。

个人贡献与纪律 戴克斯特拉是多产的作者,其编号笔记(EWDs)是重要的科学交流形式。他认为,将思考清晰书面记录的日常纪律至关重要。他举例在开发早期操作系统时,由于无法实测,迫使他在设计阶段就施加严格的控制以确保正确性。

总结 戴克斯特拉倡导将编程视为一门严谨的科学和智力 discipline,强调思维的清晰性、设计的优雅性和正确性的优先级。他的见解对软件工程的理念和教育产生了深远影响。

35. Psychology, a Failed Discipline: Flawed Paradigms, Methodology, and Epistemology (unfashionable.blog)

心理学,一门失败的学科:有缺陷的范式、方法论与认识论

这篇文章对心理学作为一门学科进行了系统性的批判,认为其是“货物崇拜科学”的典型,缺乏理查德·费曼所强调的“科学诚信”与“绝对诚实”。作者指出,尽管p值操纵和可复制性危机已广为人知,但心理学的根本问题在于四大支柱的缺陷:依赖问卷调查、忽视索引性、研究抽象名词以及滥用统计方法

一、问卷调查的根本缺陷

研究严重依赖问卷,但问卷本身作为数据收集工具存在根本性问题。成功的问卷需要满足注意力、诚意、动机和理解四个条件,但在实际操作中,这些条件极难达成。受访者可能不认真、不诚实、试图表达观点或误解问题。更重要的是,即使所有环节失效,问卷仍会产出数据,其无意义性却难以被察觉。问卷因此类似于“传闻证据”,无法进行交叉检验,其有效性值得怀疑。

二、索引性知识与全局知识的冲突

心理学追求创建超越具体情境的“全局知识”,但很多研究结论高度依赖特定背景(即“索引性”)。强行去除背景会导致荒谬的结论。例如,“受害者平均离开并返回伴侣关系七次”的说法,源于对特定贫困乡镇60名女性的观察印象,却被推广为普遍规律。研究表明,许多在实验室中被判定为“暴力”的行为,实际上可能是参与者语境中的“嬉戏打闹”。Tal Yarkoni指出,心理学家经常在超出其研究样本可支持范围的情况下过度泛化结论。

三、“研究名词”的范式陷阱

一种常见的研究模式是“选择一个名词并研究它”(如领导力、幸福感)。这种模式有三大缺陷:

  1. 虚构性:无法直接研究抽象概念,只能通过代理指标测量,且指标可能与原始概念脱节。
  2. 必有结果:由于定义和测量方法的灵活性,研究总能找到某种相关性或差异。
  3. 永无止境:没有明确的标准来判断何时算“研究透彻”,从而可以无限生产论文。这是一个无法证伪、没有解释力、仅靠相关性堆积的“永动机”。

四、统计方法的滥用与认识论缺陷

统计分析(尤其是p值)使研究者能够检测极其微小甚至可能不存在的效应。现代统计方法仅有约百年历史,其引入改变了科学研究:从关注宏大现象和大胆假设,转向挖掘微弱信号。这导致了大量没有真正解释价值、仅旨在发表“显著结果”的研究。Paul E. Meehl在1978年就指出,心理学理论缺乏科学知识的累积特性,往往只是随着人们失去兴趣而褪色,而非被明确证伪或证实。大卫·多伊奇批评这种“无解释的科学”仅关注统计关联,却忽视了因果解释。可复制性危机中,具体研究的失败无人关心,因为根本就没有需要被挑战的理论。

五、对“偏见、助推与启动”范式的批判

作者重点批判了由丹尼尔·卡尼曼等人普及的“认知偏见”研究范式。援引格尔德·吉仁泽的工作,文章指出许多所谓的“偏见”是实验设计脱离现实语境的产物,将人在复杂环境中基于生态理性的决策误判为非理性。

  • 框架效应:在医学选择等问题中,人们并非非理性,而是在缺失信息(如无手术的生存率)时,通过语言框架进行合理推断。当信息完整时,框架效应消失。
  • 双曲线贴现:人表现出时间不一致的贴现率,但这更应被看作是主流经济指数贴现模型的缺陷,而非人的“偏见”。
  • 损失厌恶:在非遍历系统(即存在破产风险的现实世界)中,将损失看得比等量收益重是理性的生存策略。实验室中用虚拟货币进行的孤立实验无法捕捉这种全局风险考量。

六、系统性问题与“僵尸领域”

学术激励体系鼓励发表而非追求真理,导致了p值操纵、数据切片乃至数据造假。Brian Wansink的自述文章揭示了如何从“失败”的研究中“挖掘”出多篇论文的常见做法。尽管存在可复制性危机,但大量已被证伪或无法复制的领域(如社会启动、自我损耗)仍在被研究和资助,成为“僵尸领域”。例如,干细胞研究者Piero Anversa的数据造假被揭露后,相关领域研究资金仍在持续注入。作者认为,这种系统性缺陷使得心理学至少90%的论文属于“货物崇拜科学”,且该学科已无法挽救。

36. Running Open-Source AI Models Locally with Ruby (reinteractive.com)

本文介绍了使用Ruby在本地运行开源AI模型的方法,主要出于数据安全考虑,避免敏感信息通过外部API传输。文章以在AWS虚拟机中部署开源模型、通过Rails应用进行本地API调用为例,说明了该方案的优势。

选择Mistral作为推荐模型,因其体积小(约4GB)且性能优于GPT-3.5。Mixtral虽然更强大,但需要至少48GB内存。文中简要解释了模型参数(如7B参数)的含义,即神经网络中的权重和偏置数量。

运行模型需要借助本地软件,作者推荐了Ollama,它支持Mac和Linux(Windows可通过WSL运行),提供命令行操作并开放本地端口(11434)供API调用。安装Ollama后,通过ollama run mistral命令下载并运行模型。用户可通过创建Modelfile自定义模型,例如设定特定角色(如Ruby专家)和参数(如温度值)。

Ruby集成部分展示了如何使用Net::HTTP库向Ollama的/api/chat端点发送POST请求,包含模型名称、消息和流式设置。示例代码演示了基本的HTTP请求和响应处理。

实际用例包括处理非结构化数据(如邮件、文档)以提取结构化信息,或基于CRM客户信息训练模型。文章最后指出,在安全要求高的场景下,开源模型是合适的选择,并提到未来可能编写Ruby封装库以简化交互。

37. Solving the darknet riddle (2022) (sizeof.life)

本文记录了作者在2020年6月解密一个Reddit上发布的‘.onion’暗网链接谜题的过程。整个解谜链条包含多个层次和加密技术:

  • 初始谜题:一个页面包含随机字符和“你能进入多深?”的句子。页面源码注释中有十六进制字符,转换为ASCII后得到“混沌是钥匙”(chaos is the key)。每次刷新页面,会有一个不同字母被高亮,当字母‘x’高亮时,“enter”一词会附加一个隐藏链接。
  • 图像线索:链接指向一张图片,其中包含肉眼不易察觉的隐藏信息(需下载后仔细查看)。信息提示通过第一关,并给出新的谜题指令:向一个电子邮件地址发送主题为“hello world”的邮件。
  • 邮件地址解密:邮件地址为 A000668(9)@8,41235641483227。其中域名经谷歌搜索确认为 protonmail.com;用户名部分“A000668(9)”经分析指向第9个梅森素数(Mersenne prime),从而推导出完整地址为 [email protected]。
  • 邮件回复与二进制:发送邮件后收到回复,内容为二进制代码,转换后得到一个包含文本文件“haystack.txt”的URL。
  • “大海捞针”:文本文件包含100万个数字。作者使用Python脚本检测其中的非素数,最终发现一个非素数作为“针”(needle)。
  • 参数传递与十六进制:在指定URL页面,根据线索(包括提示“get”一词)发起HTTP GET请求,并将找到的非素数“针”作为参数传递。返回的十六进制信息解码后得到新谜题。
  • 洗牌算法:十六进制解码内容为“uonlyneed3dovetails2findwhere2go”和一个字符串。谜面提示“dovetail”指纸牌游戏中的交错洗牌(riffle shuffle)。作者将字符串进行3次交错洗牌处理后,得到了最终URL。
  • 最终页面:访问该URL,谜题至此结束,作者赞赏谜题设计的巧妙与趣味性。

整个解谜过程涉及十六进制转换、网页源码分析、隐写术、素数检验、HTTP请求参数、以及基于洗牌算法的密码转换等多种技术。

38. VSCode Drops Ubuntu 18.04 Support (www.omgubuntu.co.uk)

微软VS Code 1.86(2024年1月更新)将远程开发工具的最低构建要求提升至glibc ≥ 2.28。由于Ubuntu 18.04 LTS系统仍使用glibc 2.27,该版本与VS Code最新版不再兼容。此变更不仅影响在Ubuntu 18.04上直接使用VS Code的用户,也影响那些使用较新系统(如新版本Ubuntu、Windows或macOS)但需要连接Ubuntu 18.04服务器、云实例或容器的开发者。

微软在更新后宣布,将额外允许VS Code连接到不支持glibc ≥ 2.28的操作系统长达12个月。然而,鉴于Ubuntu 18.04 LTS通过扩展安全维护(ESM)将支持至2028年,且不太可能进行glibc重大升级,这一“破坏性变更”实际中断了许多开发者的工作流程。

开发者普遍反映此决定突然,事前未获充分预警。多数人是在更新VS Code并尝试连接服务器失败后才通过错误日志发现此问题。提供的临时解决方案包括:1) 将目标机器升级至Ubuntu 20.04 LTS;2) 将VS Code降级至1.85版本并禁用自动更新。但这两种方案均存在弊端:升级环境可能复杂耗时,而降级则会使用户无法获得后续的功能更新、错误修复和安全补丁。

此变更影响范围广泛,不仅涉及个人开发者,也影响使用Amazon Linux 2 EC2实例等不受用户控制基础设施的机构与企业。亚马逊已表示对此影响的担忧。文章批评微软在推动此重大变更时缺乏足够的用户沟通与警告机制,尤其是在受影响的Ubuntu 18.04 LTS生命周期尚未结束的背景下,决策显得仓促。

41. Gin, Television, and Social Surplus (2008) (gist.github.com)

本文源自Clay Shirky在2008年Web 2.0大会的演讲,核心探讨了人类认知盈余(cognitive surplus)的演变与利用。文章通过历史类比与社会现象分析,阐述技术如何将人们从被动消费转向主动参与,并论证这种转变是不可逆转的结构性变化。

历史类比:从杜松子酒到情景喜剧 工业革命初期,社会从乡村向城市剧变,杜松子酒成为缓解集体焦虑的“技术润滑剂”,帮助社会度过一代人的阵痛期,直至公共机构(如图书馆、民主制度)出现,将人口聚集转化为公共资产。类似地,20世纪电视扮演了关键角色:生产力提升与工时缩短制造了前所未有的“自由时间”,电视作为“认知散热器”,通过情景喜剧等被动消费形式消耗了这部分认知盈余。

认知盈余的觉醒与量化 互联网的出现使社会逐渐将认知盈余视为可开发的资产而非危机。以维基百科为例,其全项目累积约1亿小时人类脑力投入,而美国每年仅看电视就消耗2000亿小时——相当于每年可产生2000个维基百科项目。电视观众周末观看广告的时间已达1亿小时,凸显盈余规模之巨大。被动收视的时间正逐渐被主动创作与分享所分流。

从消费到参与:媒体范式的转变 20世纪媒体本质是“消费单行道”,而互联网媒体实为“三合运动”:人们既消费,也生产与分享。社交软件推动实验涌现,例如巴西犯罪地图Wiki项目,利用集体知识填补官方信息空白。尽管多数实验失败,但成功案例证明个体借助低成本工具可动员认知盈余,创造前所未有的集体资源。

不可逆的代际转变 四岁幼童在观影时寻找鼠标的轶事,象征了新一代对媒体的根本期待:屏幕应具备互动与参与能力。对数字原生代而言,媒体天然融合消费、生产与分享,这一认知转变是不可逆的结构性迁移,而非短期风潮。

结语:寻找鼠标 作者提出“寻找鼠标”作为行动纲领:在所有被动接受内容的领域挖掘参与机会,将认知盈余转化为集体协作成果。电视时代被动消费的集体沉醉正逐步消退,社会正学会将人类注意力盈余设计为创造力引擎。

42. Solving durable execution's immutability problem (restate.dev)

解决持久执行的不可变性问题

持久执行工具和平台的核心原理是:利用高速计算机将每个非平凡任务的结果写入持久存储,从而通过重播已完成任务的日志来完美恢复瞬态故障,使系统能像未发生故障一样继续执行。这带来了强大的价值主张,但仍存在一些难题,其中最棘手的是安全代码更新。

核心问题:不可变性问题

在持久执行中,代码更新可能导致在飞行中(即已启动但未完成)的请求失败。因为当请求在旧代码版本上开始执行后,如果代码被更新并重播该请求,日志(记录已完成任务)可能不再匹配新代码的行为,导致重播时失败或出现未定义行为。例如,在结账流程中添加一个新步骤,旧版本代码的请求在重播时会因缺少相关日志而无法继续。这称为“不可变性问题”:执行给定请求的代码在行为上必须永不更改,尽管请求可能在很久以后被重播。

当前解决方案的概述

不同持久执行平台采用了各自方法来解决此问题:

  • Azure Durable Functions:代码是可变的,重播总是执行最新版本。推荐策略是并行部署新旧版本,确保在飞行中的请求使用旧版本。但需要更新调用者以指向新部署,操作繁琐,可能导致开发者忽略版本管理而接受失败。
  • Temporal:使用工作器版本控制,每个工作器标记构建ID,只请求已在其构建ID上开始的重播。对于短时工作流有效,但长时工作流需要长期运行旧代码,成本高且有安全风险。补丁API可临时调整代码,但会导致补丁累积,需谨慎管理。
  • AWS Step Functions:工作流定义为不可变JSON(ASL格式),更新创建新版本,在飞行中的运行始终使用首次执行的版本。保持旧版本成本极低(仅存储文件),且Lambdas(调用的代码)有标准版本控制,避免了持久执行层面的版本问题。

Restate的方法

Restate旨在结合AWS Step Functions的不可变性和Azure/Temporal的代码工作流体验。其工作流类似普通代码(如RPC处理器),运行时向用户服务发出请求,服务可部署为长期容器或Lambda函数。通过集成Lambda版本控制,Restate实现了类似Step Functions的体验:在飞行中的请求始终在它们开始的代码版本上执行,新请求使用最新代码,且保持旧版本无额外成本。

对于容器部署(如Kubernetes),Restate可并行部署新旧容器版本来管理代码更新。然而,长时间运行(如数周)的处理器仍具挑战性,可能涉及安全补丁或基础设施变更。文章暗示这可能是未来讨论的主题,并邀请读者参与互动。

43. Oxford PV sets new solar panel efficiency world record (www.oxfordpv.com)

Oxford PV 创太阳能电池板效率新世界纪录

Oxford PV 与弗劳恩霍夫太阳能系统研究所合作,创下太阳能电池板效率新世界纪录,达到 25% 转换效率。这一数字显著高于商业模块典型的 21-23% 效率,标志着清洁能源转型的关键里程碑。

技术突破与背景

  • Oxford PV 是钙钛矿硅串联太阳能电池技术的全球领导者,该技术理论最大效率超过 43%,远高于传统硅太阳能电池的 30% 上限。
  • 该公司是牛津大学的衍生企业,专注于下一代太阳能技术的研发。
  • 纪录电池板在 1.68 平方米 面积上输出 421 瓦 功率,成为工业格式中最高效的钙钛矿硅串联太阳能模块。

市场意义与影响

  • 2023 年,太阳能占全球可再生能源新增容量的四分之三,提高电池板效率对推动净零排放和全电动未来具有变革潜力。
  • 更高效电池板可在相同面积产生更多电力,降低电力成本并加速清洁能源采用,适用于住宅、商业及公用事业规模市场。

公司进展与未来计划

  • Oxford PV 首席技术官 Chris Case 表示,该纪录展示了钙钛矿硅串联技术引领下一场太阳能革命的潜力。
  • 首席执行官 David Ward 强调,这是 2024 年的关键里程碑,公司将扩大德国工厂制造规模,并计划建设新高容量生产基地,以将技术推向主流。
  • 2024 年是公司转型之年,重点包括从德国工厂交付市场就绪电池板,并在全球范围内寻找新制造场地。

制造与测量技术

  • 制造过程使用弗劳恩霍夫 ISE 模块-TEC 中已用于大规模生产的设备,并针对串联技术进行了工艺优化。
  • 校准测量由 CalLab PV Modules 使用多光谱太阳能模拟器完成,通过模拟自然阳光条件下的照明(对钙钛矿和硅电池层使用不同 LED 光源),确保功率输出的精确性和可重复性。
44. We've found it folks: mcmansion heaven (mcmansionhell.com)

文章标题: We've found it folks: mcmansion heaven

这篇文章介绍了一座位于阿拉巴马州的房屋,建于1980年,价值约500万美元,被作者Kate称为“McMansion天堂”。房屋融合了多种建筑风格,包括后现代主义、70年代迷幻嬉皮士元素(如Bruce Goff和Earthships)、高科技和文艺复兴风格(以圣安东尼奥河步道为灵感),呈现出一种夸张而混杂的设计。内部以白色为主调,营造出梦幻、明亮的氛围,带有80年代的乐观主义气息,房间设计旨在提供多样化的空间体验,而非统一的整体构图。

房屋建造可能依赖建筑目录中的材料,但并非高端定制,而是通过材料的组装展现想象力,体现了“ad-hoc”(临时凑合)的建筑理念。场地距离其他建筑较远,提供了一种展览主义式的暴露感,同时通过距离确保隐私。尽管房屋试图成为艺术形式,但仍保留了McMansion的典型特征,如财富象征(如高尔夫元素、木质装饰和奢华符号)和缺乏凝聚力的整体设计。作者最后呼吁读者通过Patreon支持McMansion Hell的创作。

45. Analysis of Bach's information-dense music (www.newscientist.com)

巴赫信息密集音乐分析摘要

研究人员运用信息理论分析约翰·塞巴斯蒂安·巴赫的作品,试图理解其音乐的伟大之处。宾夕法尼亚大学的苏曼·库尔卡尼及其同事选取巴赫结构多样的作品(包括宗教众赞歌和炫技托卡塔)进行研究。

核心研究方法与发现

  • 信息网络构建:将每部乐曲中的音符视为节点,音符间的转换视为连接边,从而构建信息网络。
  • 信息量比较:托卡塔(旨在带来惊喜和娱乐)比众赞歌(用于教堂等沉思场合)含有更多信息量
  • 听众感知分析:研究人员改编了基于视觉序列实验的计算机模型,用于衡量听众对音符序列的预期与惊讶程度。通过比较基于乐曲结构的网络与基于听众预期的网络之间的不匹配程度,评估巴赫音乐的信息传递效率。
  • 效率结论:研究发现不匹配程度较低,表明巴赫的乐曲能有效地传递信息

未来研究与局限性

  • 研究团队计划通过真实脑部扫描数据来优化计算机感知模型
  • 加拿大西蒙弗雷泽大学的兰迪·麦金托什指出,该研究为理解大脑如何响应复杂音乐结构提供了新途径,但仍需考虑更多影响感知的因素,如聆听时长是否受过音乐训练
  • 目前尚未能确定巴赫的创作风格相比其他音乐类型是否独特。麦金托什提及,初步研究显示不同音乐家(如摇滚吉他手埃迪·范·海伦)存在某些普遍相似性,但需更细致的分析。
  • 库尔卡尼希望未来能对其他作曲家非西方音乐进行同样的分析。
46. Introduction to Thompson Sampling: The Bernoulli Bandit (2017) (gdmarmerola.github.io)

Thompson Sampling 简介:伯努利赌博机问题

1. 问题定义:伯努利赌博机

多臂赌博机(MAB)是最简单的强化学习场景。玩家面对 K 台老虎机,每台机器提供奖励的概率为 θₖ。玩家需决定拉动哪台机器、拉动顺序,以最大化长期累积奖励。每轮奖励为二元结果(成功或失败),来自参数为 θₖ 的伯努利分布。

关键概念

  • 后悔值:所选机器的期望收益 θᵢ 与最佳机器期望收益 θ_最佳 之差(θ_最佳 - θᵢ)。
  • 在 Python 中可轻松模拟赌博机环境,并计算后悔值。

2. 贝叶斯推断与先验/后验分布

为平衡探索(收集信息)与利用(最大化收益),使用贝叶斯推断估计每台机器的期望收益 θₖ。

  • 先验分布:使用 Beta 分布,因 Beta 分布是伯努利分布参数的共轭先验。
    • 初始先验为 Beta(1,1),即均匀分布,表示对 θₖ 无任何先验知识。
  • 后验更新:每轮拉动机器后,根据获得奖励(成功)或未获得(失败)更新 Beta 分布的参数。
    • 例如,拉动两次且均成功后,后验变为 Beta(3,1),概率质量向高奖励概率偏移。
  • 通过动画可直观观察后验分布随游戏进行逐渐集中。

3. 三种探索-利用策略

3.1 ε-贪心策略

  • 原理:以概率 ε 随机选择(探索),以概率 1-ε 选择当前平均奖励最高的机器(利用)。
  • 特点
    • 需要调整超参数 ε。
    • 探索是恒定且低效的,不随时间衰减。
    • 可能长期困于次优选择(若 ε 较低)。

3.2 上置信界策略

  • 原理(UCB1 算法):选择平均奖励与不确定性项之和最大的机器。
    • 选择 argmax( x̄ⱼ + √(2 ln n / nⱼ) ),其中 x̄ⱼ 为平均奖励,nⱼ 为该机器拉动次数,n 为总轮数。
  • 特点
    • 初期探索较多(因不确定性项大),后期逐渐转为利用。
    • 倾向于选择信息不足但可能乐观的机器。
    • 理论上有保证的次线性累积后悔值。

3.3 Thompson Sampling

  • 原理(概率匹配):每轮根据后验分布选择最优机器的概率进行随机决策。
    • 步骤:为每台机器从其当前 Beta 后验分布中抽取一个样本;选择样本值最大的机器。
  • 特点
    • 无需超参数
    • 高效探索:快速淘汰差的选项,但会为不确定但有希望的选项分配机会。
    • 实现简单,只需从后验分布采样并比较。

4. 性能比较与实验结果

通过1000次模拟、每次10000轮的实验进行比较:

  • 累积后悔值:Thompson Sampling 显著低于 ε-贪心和 UCB。
    • ε-贪心因恒定探索导致线性累积后悔。
    • UCB 表现可能不如 ε-贪心(特定设置下),但理论上有改善空间。
  • 机器选择收敛速度:Thompson Sampling 能快速稳定到最优机器。

5. 结论

  • ε-贪心:简单但低效,需调参且探索不智能。
  • UCB:利用不确定性指导探索,但实现稍复杂且对参数敏感。
  • Thompson Sampling:基于概率匹配原则,算法简单且性能优越,能实现高效探索与利用的平衡,是当前领域的先进方法。

注:本文重点展示 Thompson Sampling 在伯努利赌博机中的应用,所有代码示例与模拟可视化均基于 Python 实现。

47. How does Sidekiq really work? (dansvetlov.me)

本文深入剖析了Sidekiq(一个流行的Ruby后台作业处理器)的内部工作原理,主要基于对其v7.2版本源代码的分析。内容涵盖了从进程启动、作业生命周期管理到异常处理和潜在问题的完整流程。

核心架构与组件 Sidekiq采用线程模型,使用Redis作为后端存储。其服务器端主要组件包括:

  • CLI:负责解析命令行参数、加载配置和应用代码,并启动主进程。
  • Launcher:管理进程生命周期,协调启动、安静关闭和停止操作。
  • Manager:管理一组工作线程(Processor)。每个配置“胶囊”对应一个Manager,胶囊定义了队列和并发设置。
  • Processor:实际的作业执行单元,负责从Redis获取作业并执行。
  • Scheduled::Poller:一个独立线程,定期检查Redis中的“计划”和“重试”有序集合,将到期的作业移动到队列中。

作业生命周期

  1. 入队:通过Sidekiq::Client(或Job类方法)将作业序列化为JSON,并推入Redis列表(立即执行)或有序集合(计划执行)。
  2. 获取Processor使用BasicFetch(免费版)通过BRPOP命令从Redis列表中获取作业。该命令是阻塞式的,会移除作业。队列支持严格顺序、随机或加权轮询模式。
  3. 执行与中间件:作业经过客户端和服务端中间件链处理,然后执行业务逻辑。代码重载(对于Rails应用)在此阶段发生。
  4. 异常处理与重试
    • 默认行为:作业失败后最多重试25次,采用指数退避策略。
    • 重试作业被添加到Redis的retry有序集合,计划作业在schedule集合中。
    • JobRetry模块处理重试逻辑,支持自定义延迟策略和死亡处理程序。
    • 死亡作业(无效或重试耗尽)被放入dead有序集合(停尸房)。

生命周期管理与信号处理

  • 优雅关闭:接收到SIGTSTP信号后,Launcher调用quiet,设置标志位使Processor在完成当前作业后不再获取新作业。
  • 终止:接收到SIGINTSIGTERM信号后,Launcher调用stop。它首先执行quiet,然后等待当前作业完成(默认超时25秒)。超时后执行hard_shutdown
    • 将未完成的作业通过bulk_requeue推回Redis队列。
    • 通过向工作线程抛出Sidekiq::Shutdown异常来强制终止它们。
  • 信号设计:信号处理器不直接执行逻辑(因需可重入),而是通过Unix管道将信号名称写入,由主循环读取并分发处理,避免了在信号上下文中使用Logger等不可重入操作。

队列与作业的调度

  • 队列模式:支持严格顺序(按配置顺序)、随机和加权轮询,由队列列表中重复元素的数量隐式决定。
  • 计划与重试作业调度Poller线程定期运行,使用Lua脚本ZPOPBYSCORE原子性地从retryschedule有序集合中取出到期的作业,并将其推入目标队列。其轮询间隔会根据活动Sidekiq进程数量进行随机化,以避免对Redis造成“惊群效应”。

作业丢失的潜在场景 免费版Sidekiq提供“至少一次”的语义,但存在作业丢失的可能:

  1. 进程异常终止:若进程被SIGKILL或其它方式强行终止,所有正在处理的作业将丢失。
  2. hard_shutdown期间的重入失败:在将作业推回队列时,若Redis连接失败或内存不足,作业可能丢失。
  3. Redis问题:不当的内存淘汰策略(非noeviction)可能导致作业被驱逐;Redis重启且持久化配置不当时可能丢失数据。
  4. BRPOP的固有风险:作业在BRPOP后立即被移除,若进程在处理前崩溃,作业即丢失。

对比与扩展

  • 免费版 vs. 专业版/企业版:免费版BasicFetch存在作业丢失风险;专业版的SuperFetch通过延迟确认机制增强了可靠性,实现真正的“至少一次”交付。企业版提供基于fork的多进程模型。
  • 设计权衡:Sidekiq的设计侧重于简洁、高效和低Redis负载(通过BRPOP),但在极端情况下可能牺牲作业的持久性。对于需要强持久性的业务逻辑,文章建议考虑应用层面的补偿机制。

总结 Sidekiq通过线程模型、Redis后端和层次化的管理结构(Launcher/Manager/Processor)实现高效的后台作业处理。其内部实现了精细的信号处理、优雅的关闭流程、灵活的队列调度以及完善的重试与异常处理机制。然而,免费版在作业持久性方面存在固有局限,用户需根据业务对可靠性的要求选择合适的版本或补充保障措施。

48. Banning Private Jets and Going to a 4-Day Work Week Are Radical – and Popular (gizmodo.com)
49. Magnetic launching of black hole jets in Perseus A (www.mpifr-bonn.mpg.de)

事件视界望远镜首次观测英仙座A射电星系喷流基部

事件视界望远镜(EHT)国际合作组利用堪比地球直径的虚拟望远镜,以前所未有的超高角分辨率,解析了射电星系3C 84(即英仙座A)中等离子体喷流基部的演化结构。该星系距离地球2.3亿光年,是宇宙中最近的活跃超大质量黑洞之一。此项研究成果发表于《天文学与天体物理学》杂志,为理解喷流如何被黑洞发射提供了新见解,表明在磁场与引力的宇宙博弈中,磁场占据了主导地位。

核心发现:有序磁场驱动喷流发射 EHT通过探测光的线性偏振(光振荡的方向),揭示了3C 84黑洞附近存在强大且高度有序的磁场。这种强磁场被认为是驱动等离子体喷流的关键力量——喷流由未被黑洞吞噬的物质构成。研究表明,该黑洞周围的炽热气体中延伸着有序的磁场结构。

黑洞吸积与喷流机制 研究还为黑洞的吸积方式提供了线索,认为物质通过平流落入黑洞,并形成所谓的“磁化阻滞盘”。在此模型中,吸积盘内的磁力线紧密缠绕,抑制了磁能的有效释放。此外,观测数据暗示3C 84黑洞正在快速自转,这支持了喷流发射与大黑洞自转之间存在关联的理论。这些发现为验证广义相对论效应(发生在黑洞事件视界上方)如何促成强大喷流提供了观测基础。

观测技术与国际合作 这一突破得益于甚长基线干涉测量(VLBI)技术。EHT将全球多台射电望远镜(包括ALMA、IRAM 30米望远镜等)联网,使其协同观测同一目标并融合信号,从而形成具有极高角分辨率的虚拟地球大小望远镜。该技术能够穿透致密的星际气体,精确观测黑洞近邻区域,为发现和研究此前难以探测的其他超大质量黑洞铺平了道路。

EHT是一个由全球超过300名研究人员参与的国际协作项目,涵盖了多个大洲的众多研究机构。本次观测结果标志着理解像3C 84这样的星系迈出了重要一步,未来EHT将继续提升能力,以期对黑洞周围的喷流形成机制获得更详尽的认知。

50. How fast is rolling Karp-Rabin hashing? (lemire.me)

文章总结:滚动Karp-Rabin哈希的性能

这篇文章探讨了滚动Karp-Rabin哈希函数的实现与性能。

核心概念

  • 哈希函数:将值(如字符串)映射到固定大小的字符串,可用于快速比较长字符串。
  • Karp-Rabin哈希:一种递归哈希,通过循环乘以常数B并加上当前字符来计算哈希值。
  • 朴素方法:对字符串中所有长度为N的子串独立计算哈希,每个字符被访问N次,当N较大时效率低下。
  • 滚动哈希:改进方法,通过维护一个滚动窗口,仅访问每个字符两次。计算新哈希时,通过公式hash = hash * B + data[i] - BtoN * data[i-N]更新,避免了重复计算。

基准测试结果

使用大小为8的窗口进行测试,结果如下:

  • 滚动哈希:速度为0.75 GB/s,每字节13条指令。
  • 朴素哈希:速度为0.18 GB/s,每字节61条指令。 滚动哈希在性能和指令效率上均显著优于朴素实现。

优化与扩展

  • 其他哈希方法:文章提到表哈希(Tabulated hashing)在计算效率上可能更优。
  • 潜在优化:作者认为其朴素实现的Karp-Rabin滚动哈希仍有较大优化空间。
  • 参考资料:文章列出了相关的优化研究、学术论文及可能有用的软件库(如CLHash库和Rolling Hash C++库)。

结论

滚动Karp-Rabin哈希通过避免重复计算,大幅提升了哈希大量连续子串的性能,是处理此类问题的有效方法。其性能仍可通过更优的实现或结合其他哈希技术进一步提升。