2024-01-15

50 篇热帖

1. Teach Yourself Programming in Ten Years (1998) (norvig.com)

《十年学编程》核心内容摘要

本文批判了市场上宣称能在极短时间内(如24小时或21天)教会编程的流行书籍,并基于研究论证,认为真正的专业技能需要长达十年或一万小时的刻意练习才能掌握。

对速成学习的质疑

作者指出,书店中充斥着大量《24小时自学Java》之类的书籍,这暗示编程要么是人们急于求成,要么是编程本身异常容易学习。然而,这类书名具有误导性:

  • “自学”:在24小时内无法通过编写足够多的程序来积累经验,无法深入理解。
  • “C++”:在24小时内可能仅能学习语法,无法理解语言的适用场景和哲学。
  • “在24小时内”:这个时间根本不足够。

结论是,这种学习只能带来肤浅的熟悉,而非深刻的理解。

精通需要十年或一万小时

引用多项研究(如Bloom、Bryan & Harter、Hayes、Simon & Chase等),作者表明在象棋、音乐、绘画、网球等多个领域,发展出专业技能通常需要大约十年时间。关键在于刻意练习:不仅是重复,而是挑战超出当前能力的任务,分析表现并纠正错误,然后不断重复。即使是莫扎特和披头士这样的天才或成功团体,也经历了漫长的成长期。

马尔科姆·格拉德威尔普及了“一万小时定律”,而其他名人如塞缪尔·约翰逊和乔叟也强调精通需要一生努力。虽然具体时间因技能和人而异,但核心是需要年复一年、每周投入大量时间的刻苦努力。

成功编程的实践建议

作者提出了一个成功编程的“秘方”:

  1. 保持兴趣:出于乐趣而编程,并确保它足够有趣,以支撑你投入十年/一万小时。
  2. 实践编程:最佳学习方式是“做中学”。刻意练习要求有定义明确、难度适中的任务,以及反馈和纠正的机会。
  3. 交流与阅读:与其他程序员交谈,阅读其他人的程序,这比任何书本或课程都重要。
  4. 考虑深造:大学或研究生院能提供一些需要文凭的工作和更深层次的理解,但并非唯一途径。书本学习本身是不够的。
  5. 参与协作项目:在一些项目中做最好的程序员(学习领导),在另一些项目中做最差的(学习大师的做法)。也要练习维护和理解他人编写的程序。
  6. 学习多种语言:至少学习六种编程语言,涵盖面向对象(如Java/C++)、函数式(如Lisp/Haskell)、支持语法抽象(如Lisp)、声明式(如Prolog)和强调并发性(如Go)等不同范式。
  7. 理解计算机:了解计算机执行指令、读取内存、磁盘操作等基本时间开销。
  8. 参与标准制定:参与语言标准化工作或本地编码规范制定,以理解他人的偏好。

关于天赋与教育

作者引用Fred Brooks的观点,指出培养优秀软件设计师需要:尽早发现有潜力的设计师、为其配备导师、并提供交流机会。同时,像Michelangelo这样的大师可能有一种超越训练本身的内在品质,但这种品质往往源于甘愿为刻意练习奉献大量人生的意愿。

附录:选择第一门编程语言

作者建议选择编程语言时考虑:

  • 朋友用什么:向朋友学习的便利性超越了语言本身的差异。
  • 保持简单:避免为专业团队设计的复杂语言(如C++/Java)。
  • 交互式学习:选择支持交互模式(即时反馈)的语言。 基于这些,他推荐PythonScheme作为首选,JavaScript因教程众多也是一个选择,儿童则可从Alice、Squeak或Blockly开始。

附录:推荐资源

作者强调“仅靠书本学习是不够的”,但仍推荐了一些经典教材,如《计算机程序的构造和解释》(SICP)、《如何设计程序》(HtDP)、《Python编程:计算机科学导论》以及《计算机编程的概念、技术和模型》等。

2. Vanna.ai: Chat with your SQL database (github.com)

Vanna.ai: Chat with your SQL database

核心概述

Vanna 2.0 是一个将自然语言问题转换为 SQL 查询并最终返回数据洞察的工具。其核心流程为:自然语言 → SQL → 答案。新版本专注于提供企业级安全、用户感知权限和生产就绪的特性。

Vanna 2.0 新特性

  • 用户感知:在每一层都实现了用户感知,查询会根据用户的权限自动进行过滤。
  • 现代 Web 界面:提供美观的预构建 <vanna-chat> Web 组件。
  • 流式响应:实时返回表格、图表和进度更新。
  • 企业安全:支持行级安全、审计日志和速率限制。
  • 生产就绪:与 FastAPI 集成,具备可观测性和生命周期钩子。

主要功能与优势

1. 立即可用

  • 提供生产级聊天界面。
  • 可创建连接您自己数据库的自定义代理。
  • 可直接嵌入任何网页。

2. 企业级安全

  • 用户感知:用户身份贯穿系统提示、工具执行和 SQL 过滤。
  • 行级安全:查询自动根据用户权限过滤。
  • 审计日志:为合规性追踪每个用户的查询。
  • 速率限制:通过生命周期钩子实现每用户配额。

3. 内置美观的 Web UI

  • 预构建的 <vanna-chat> 组件,无需自建聊天界面。
  • 支持流式表格和图表等富组件。
  • 响应式设计,支持移动端、桌面端及明暗主题。
  • 框架无关,兼容 React、Vue 或纯 HTML。

4. 技术栈兼容性强

  • 支持任何 LLM:如 OpenAI、Anthropic、Ollama、Azure 等。
  • 支持任何数据库:如 PostgreSQL、MySQL、Snowflake、BigQuery 等。
  • 集成现有认证系统:支持 Cookies、JWTs、OAuth 令牌。
  • 支持现有框架:如 FastAPI、Flask。

5. 可扩展且设计合理

  • 自定义工具:通过扩展 Tool 基类实现。
  • 生命周期钩子:用于配额检查、日志记录、内容过滤。
  • LLM 中间件:用于缓存、提示工程。
  • 可观测性:内置追踪和指标。

工作原理

系统工作流程如下:

  1. 用户在 <vanna-chat> 组件中输入自然语言问题(如“显示第四季度销售额”)。
  2. 请求被发送到服务器端点(如 /api/vanna/v2/chat_sse),并携带认证信息。
  3. 服务器将请求传递给代理(Agent),并解析出用户身份。
  4. 代理调用工具(如执行 SQL 的工具),该工具会应用行级安全,根据用户的组成员身份自动过滤查询。
  5. 工具将过滤后的结果返回给代理。
  6. 代理将结果流式传输回前端,包括表格、图表和自然语言摘要。

关键概念

  • 用户解析器:您负责定义如何从请求(Cookies、JWTs 等)中提取用户身份。
  • 用户感知工具:工具会根据用户的组成员身份自动检查权限。
  • 流式组件:后端将结构化的 UI 组件(表格、图表)流式传输到前端。
  • 内置 Web UI:预构建的 <vanna-chat> 组件负责美观地呈现所有内容。

生产部署集成示例

提供了将 Vanna 与现有 FastAPI 应用及认证系统集成的完整代码示例。核心步骤包括:

  1. 定义一个用户解析器,用于从您自己的认证系统(如 JWT)中提取用户信息。
  2. 设置代理,并配置 LLM 服务(如 Anthropic)和工具注册表(如 SQL 执行工具)。
  3. 将 Vanna 的路由注册到您的 FastAPI 应用中,从而获得流式聊天端点(/api/vanna/v2/chat_sse)。
  4. 在前端使用 <vanna-chat> 组件指向该端点即可。

自定义与高级功能

  • 自定义工具:允许扩展功能以满足特定业务需求(例如发送邮件)。
  • 高级企业功能
    • 生命周期钩子:在请求生命周期关键点添加配额检查、日志记录等。
    • LLM 中间件:在 LLM 调用周围实现缓存、提示工程。
    • 对话存储:持久化并检索每用户的对话历史。
    • 可观测性:内置追踪和指标集成。
    • 上下文增强器:添加 RAG、记忆或文档以增强代理响应。

适用场景

  • 需要自然语言界面的数据分析应用。
  • 需要用户感知权限的多租户 SaaS。
  • 希望拥有预构建 Web 组件和后端的团队。
  • 具有安全/审计要求的企业环境。
  • 需要丰富流式响应(表格、图表、SQL)的应用。
  • 需要与现有认证系统集成的场景。

迁移说明

Vanna 2.0 是完全重写的版本,专注于用户感知代理和生产部署。主要变化包括新的 Agent API、用户感知、流式富组件和 Web 优先设计。从旧版(0.x)升级提供了迁移指南,包括快速包装现有实例或逐步迁移至新 API。

3. FSRS: A modern, efficient spaced repetition algorithm (github.com)

FSRS:现代高效的间隔重复算法

FSRS(Free Spaced Repetition Scheduler)是一个现代、高效的间隔重复算法,用于优化学习中的复习时间安排。其核心目标是通过科学预测记忆状态,为学习者提供个性化的复习计划,从而提升记忆效率。

学术研究基础 FSRS的开发基于坚实的学术研究,主要成果体现在两篇重要论文中:

  • 《A Stochastic Shortest Path Algorithm for Optimizing Spaced Repetition Scheduling》:发表于ACM KDD会议。
  • 《Optimizing Spaced Repetition Schedule by Capturing the Dynamics of Memory》:发表于IEEE TKDE期刊。 这些研究从理论层面提出了利用随机最短路径算法和捕捉记忆动态特性来优化间隔重复调度的方法,为FSRS提供了算法框架。

开源数据集 项目配套提供了相关领域内最大的开源数据集,用于支持算法研究与开发:

  • open-spaced-repetition/FSRS-Anki-20k
  • open-spaced-repetition/anki-revlogs-10k 这些数据集包含了带有时间序列特征的学习记录,对促进相关研究具有重要价值。

项目性质与社区驱动 FSRS是一个独立的开源项目,其发展由社区驱动。项目感谢来自商业组织(如墨墨背单词公司)的支持,这些支持使得核心贡献者(如Jarrett Ye)能够投入时间和专业知识,确保FSRS保持技术前沿,并持续作为免费、开放的算法服务于所有用户。

4. Could inflammation be the cause of myriad chronic conditions? (2019) (www.harvardmagazine.com)

文章探讨了慢性低度炎症如何成为多种非传染性慢性疾病(如心血管疾病、糖尿病、痴呆症、癌症、关节炎等)的共同根源。关键发现和观点总结如下:

  1. 炎症的核心作用

    • 运动研究:Samia Mora等人2007年的研究发现,运动对心血管健康的益处中,约三分之一可归因于长期炎症的减少。
    • CANTOS临床试验:2017年一项涉及万余名患者的重大试验表明,使用抗炎药canakinumab阻断IL-1β通路,能在不降低胆固醇的情况下显著降低心血管事件风险,并使肺癌死亡率下降高达77%,关节炎和痛风症状也显著改善。这提供了“炎症是因果因素”的强有力证据。
    • 疾病关联:证据表明,阿尔茨海默病、癌症、关节炎、哮喘、糖尿病、抑郁症等多种看似无关的疾病,都可能由慢性炎症触发。
  2. 炎症的进化起源与代谢联系

    • 进化遗产:人类进化过程中为应对感染、饥荒和创伤而形成的促炎、胰岛素抵抗和促凝血特性,在现代环境中(营养过剩、久坐、长寿)反而导致了慢性疾病。
    • 代谢性炎症(Metaflammation):持续的过度进食造成代谢应激,脂肪细胞(尤其是内脏脂肪)成为炎症信号的重要来源,引发全身性低度炎症,将肥胖与糖尿病、心脏病等联系起来。
  3. 控制炎症的策略

    • 生活方式干预:研究证实,规律运动和地中海饮食(富含蔬果、坚果、橄榄油、鱼类)均能降低心血管风险,其中约三分之一的益处来自减轻炎症。
    • 药物干预:CANTOS试验证明了靶向抗炎(如阻断IL-1β)的可行性,但单通路阻断可能效果有限,且存在理论上的免疫抑制风险(尽管试验中该风险较低)。
    • 促消退介质:Charles Serhan发现了一类称为“专门促消退介质”的脂质分子(包括消退素、保护素、脂氧素等)。这些分子在炎症后期主动发挥作用,促进细胞碎片清除和组织修复,而非简单抑制免疫反应。它们由ω-3等必需脂肪酸衍生而来,阿司匹林也能刺激其产生。这代表了一种不抑制免疫、而是促进炎症自然消退的新治疗思路。
  4. 核心概念

    • 炎症并非单纯的疾病症状,而是推动疾病进展的根本生物学过程
    • 从进化角度看,慢性炎症是古老生存机制在现代环境下的“错配”。
    • 治疗策略应从“阻断炎症”转向 “精细调控并促进炎症的自然消退”,同时结合饮食、运动等生活方式管理。
5. ChatGPT does Advent of Code 2023 (www.themotte.org)

文章总结

本文探讨了ChatGPT-4在2023年“Advent of Code”(AoC)编程挑战中的表现,并分析了其作为通用人工智能(AGI)基准测试的意义。AoC是一项每年12月举行的编程活动,每天发布一个新问题,难度逐步增加。作者旨在评估ChatGPT-4在未经提示的情况下解决这些问题的能力,以检验大语言模型(LLM)的实际编程水平。

实验方法与数据来源

作者使用ChatGPT-4的API和命令行工具进行测试,手动输入问题描述(去除故事性内容),并允许最多三次尝试。若程序运行错误或输出错误,会提供反馈让模型调试;若多次失败则放弃。此外,作者参考了两位使用ChatGPT Plus的测试者的结果:一位YouTube博主和一位博客作者,后者因过度干预被认为参考价值较低。

测试结果

  • ChatGPT-4(API版):仅独立解决了2天(第2、4天)的全部问题;在另外2天(第1、5天)解决了第一部分,但第二部分失败;其余8天均未解决第一部分。
  • ChatGPT Plus:表现略好,独立解决了4天(第2、4、6、9天)的全部问题,并在其他几天通过少量提示(如提供答案提示或解释问题)解决了部分问题。
  • 对比去年(GPT-3.5):GPT-4的整体表现甚至略低于GPT-3.5在2022年的水平(GPT-3.5去年独立解决了3天)。

关键发现与结论

  1. 调试能力缺失:ChatGPT无法有效调试代码,遇到错误时通常完全重写程序,而非通过添加日志或逻辑分析逐步定位问题。这表明模型缺乏对编程逻辑的“世界模型”,仅基于模式匹配生成代码。
  2. 难度评估与过拟合问题:作者认为今年的AoC难度并未显著提高。GPT-4在其他标准测试(如法律考试)中的进步可能源于过拟合(例如在AoC第7天中,模型过度受扑克牌相关训练数据影响,无法正确处理类似的自定义排序规则)。
  3. 基准测试的局限性:由于AoC问题每年新颖,且训练数据可能包含往年解决方案,很难客观衡量模型的真实进步。作者指出,OpenAI可能拥有未公开的测试集以避免数据污染。
  4. 总体印象:ChatGPT仍只能解决遵循简单指令的问题,在需要复杂逻辑、创造性思维或调试的场景中表现不佳。作者对LLM短期内取代程序员的可能性持怀疑态度,并指出当前技术可能已进入平台期。

意义与争议

作者强调,AoC作为基准测试的优势在于其问题多样、难度递增且答案不可预测。尽管曾有ChatGPT用户因快速解题引发公平性争议(组织者已禁止其参与排名),但本次实验显示LLM在解决实际编程任务时仍存在根本性局限。未来模型的改进(如新的训练方法或架构)是否可能突破这些限制,仍有待观察。

6. When Random Isn't (orlp.net)

文章总结:《When Random Isn't》

本文作者回顾了十多年前在《魔兽世界》中发现并利用游戏插件安全系统漏洞的经历。

背景与插件系统

  • 作者少年时期因《魔兽世界》的插件系统(使用Lua语言)开始学习编程,插件通过修改游戏用户界面文件实现。
  • Blizzard为防止自动化操作,设计了双重环境安全机制
    • 非安全环境:可获取游戏状态信息(如生命值),但无法执行操作(如施法)。
    • 安全环境:可执行操作(如施法),但无法获取状态信息,以此限制自动化。
  • 安全环境中的按钮等交互元素仅在非战斗时可创建/移动,防止战斗中自动化。

漏洞发现:随机数生成器弱点

  • 作者试图“合法”绕过安全环境限制,发现了一个潜在的信息通道:随机函数
  • 游戏中的random函数底层调用MSVC的rand,使用线性同余生成器,实现如下:
    uint32_t state;
    int rand() {
        state = state * 214013 + 2531011;
        return (state >> 16) & 0x7fff;
    }
    
  • 该生成器存在严重弱点:
    • 状态空间小:输出仅显示15位,但通过数学推导可从少量输出反推隐藏状态。
    • 共享状态:整个游戏进程使用同一随机状态,安全与非安全环境共享。
    • 可预测性:作者通过两次随机输出,利用模运算推导出隐藏状态,算法最多需要三次输出即可唯一确定状态。

利用方法

  1. 在非安全环境钩子中,获取游戏状态并决定要执行的动作(如选择技能列表中的某个索引)。
  2. 反向工程当前随机状态,并预测下一次随机数输出。
  3. 若预测输出对应的目标动作索引不符,则主动推进随机数序列(通过调用随机函数),直到产生所需输出。
  4. 安全环境执行时,调用random获得“预测中”的数值,从而选择“随机”动作,实则被操控。

结果与反思

  • 该漏洞使作者能在安全环境中实现任意自动化操作,尽管平均需要多次随机调用(取决于动作列表长度)。
  • 数年后漏洞已被修复,可能Blizzard改进了随机算法或隔离了安全环境的状态。
  • 作者强调这是对“可控随机性”的挑战,类似于魔术师操纵看似随机的结果。
7. Raspberry Pi is manufacturing 70K Raspberry Pi 5s per week (www.tomshardware.com)

树莓派5每周生产7万片,计划扩产至9万片

树莓派首席执行官Eben Upton透露,树莓派公司目前每周生产7万片树莓派5主板,并计划在短期内将产能提升至每周9万片。扩产主要得益于自动化测试设备的增产。树莓派系列此前曾经历长期供应短缺,目前多数型号供货已恢复,但树莓派5在部分地区(如美国)仍可能面临缺货。

生产与供应情况

  • 制造方:树莓派主板由索尼在威尔士的Pencoed工厂生产,制造过程高度自动化,包括测试和包装均采用机器完成。
  • 树莓派4与5的对比:树莓派4的周产量预计与树莓派5相近,目前全球主要零售渠道供货充足。树莓派5的4GB和8GB版本仅比同配置的树莓派4贵5美元,但性能显著提升,包括更快的处理器、USB及Wi-Fi速度、支持M.2 SSD、双摄像头接口等。
  • 企业用户注意:树莓派5并非树莓派4的直接替代品,需要新外壳、更高功率电源及主动散热器,因此企业用户可能仍需采购旧型号。

未来计划

树莓派公司将维持高产能生产,直至订单积压完全解决且销售渠道库存恢复正常水平。

8. A periodic table of visualization methods (www.visual-literacy.org)

这篇文章介绍了一个交互式的可视化方法周期表,旨在系统性地展示和分类各种数据与信息的可视化技术。

该周期表以网页形式呈现,用户可以通过鼠标悬停(hover)操作,直观地查看每种可视化方法的名称、示例图片及简要说明。它将众多可视化方法组织成一个类似化学元素周期表的结构,便于比较和学习。

周期表根据多个维度对可视化方法进行了分类:

  1. 按所传达的信息类型

    • 过程可视化:用于描绘时间序列,如流程图、甘特图、时间线、循环图。
    • 结构可视化:用于展示概念关系,如层级、网络等,例如树状图、思维导图、组织结构图。
  2. 按视觉表达的侧重点

    • 概览:强调宏观模式与整体印象,如条形图、饼图、散点图。
    • 细节:突出个体数据点的特征,如数据表、平行坐标图。
    • 概览与细节兼顾:同时支持宏观和微观层面的分析,如表格透镜(Table Lens)。
  3. 按思维模式

    • 发散思维:用于产生创意和多种可能性,如思维导图、概念图、亲和图。
    • 收敛思维:用于分析、综合和减少复杂性,如决策树、流程图、帕累托图。

文中列举了数十种具体的可视化方法,涵盖了从基础图表到专业设计图的广泛领域,例如:

  • 基础图表:表格、柱状图、折线图、饼图、散点图、雷达图。
  • 关系与流程图:流程图、实体关系图、泳道图、数据流图、状态图。
  • 层级与网络图:树状图、思维导图、概念图、语义网络。
  • 时间线与进度图:甘特图、时间线、关键路径法(CPM)。
  • 商业与策略分析图:SWOT分析矩阵、BCG矩阵、利益相关者地图、价值链图、五力分析图。
  • 高级与信息设计图:热力图、信息图、概念骨架、丰富图片(Rich Picture)。

该周期表的设计融合了视觉吸引力教育功能性,通过颜色、布局和交互提示,帮助用户快速识别不同可视化方法之间的关联与区别。它是一个实用的资源,供设计师、分析师、教育者和任何需要有效传达信息的人参考,以选择最适合其特定数据和沟通目标的可视化方式。

9. Project Bluefin: an immutable, developer-focused, Cloud-native Linux (www.ypsidanger.com)

Project Bluefin:不可变的、开发者友好的云原生 Linux

Project Bluefin 从 ublue-os/bluefin 重新启动为 projectbluefin.io,目前处于 Beta 阶段,计划于 2024 年春季正式发布(GA)。Bluefin 是一个基于 Fedora Silverblue 的定制镜像,由云原生爱好者团队创建,旨在提供一个可靠、自动化的桌面体验,同时最大限度地减少维护工作。它通过 GitHub 自动化整个交付流水线,实现每日镜像更新。

核心特点

  • 不可变和基于镜像:Bluefin 是一个不可变的桌面系统,基于 OCI 镜像构建,允许用户轻松回滚到原始镜像,确保系统稳定性。
  • 自动化更新:更新完全自动化且透明,无需用户干预,所有升级在 CI 层面处理,每日通过 OCI 镜像交付。
  • 开发者友好:提供 Bluefin-dx 开发者镜像,可通过 just devmode 命令切换。包含 Visual Studio Code(集成 devcontainers)、devbox、homebrew、JetBrains Toolbox 等工具,并预装 LXD/LXC、KVM、virt-manager 和 Docker,支持灵活的用户空间切换(例如使用 Alpine 或 Wolfi 镜像)。
  • 容器化支持:内置 Podman 容器运行时,可运行任何 Linux 工作负载,并通过 distrobox 允许用户使用其他发行版镜像。
  • 设备兼容性:提供特定设备镜像(如 Framework、Asus、Microsoft Surface),并计划基于 Fedora Asahi SIG 为 Mac 用户生成镜像。
  • 云原生工具集成:默认包含 kind、flux、helm、kubectl 等云原生工具,旨在加速云原生技术的使用。

贡献和可持续性

  • 项目设计为低贡献门槛,使用 Containerfiles、Python/Shell 等常见工具,充分利用社区云原生知识自动化维护工作。
  • 通过 just 任务运行器提供便捷功能(例如 just ml-box 一键配置 PyTorch),方便贡献者共享快捷操作。
  • 强调开源贡献者的可持续性,采用类似 CNCF 项目的治理和程序,欢迎社区参与。

当前状态与未来展望

  • Beta 版本已成熟,Universal Blue 镜像拉取超过 200 万次,计划在 2024 年春季 GA。
  • 未来改进重点包括优化安装体验(等待 Fedora 安装程序对 OCI 安装的支持)和自动驱动程序管理(如 Nvidia 驱动需手动重置镜像)。
  • 艺术主题以恐龙(特别是 Deinonychus antirrhopus)为灵感,象征力量和进化,作品由 Jacob Schnurr 和 Andy Frazer 创作,反映项目对人类想象力和自动化效率的融合愿景。

Bluefin 旨在为 Linux 桌面用户提供一个强大、低维护的系统,并作为进入云原生领域的门户,鼓励开发者通过熟悉的方法提升效率。

12. Enthusiasts struggle to keep model railway industry on track (www.theguardian.com)

英国模型铁路行业正面临严峻挑战。历史悠久的Hattons Model Railways宣布将停止营业,而全国性的Warley National Model Railway展览也宣布2023年为其最后一届。

困境的主要原因包括:

  • 爱好者群体老龄化:从业余俱乐部到全国展览组织,核心成员与参与者年龄普遍偏高,面临退休和自然减员。
  • 成本高昂与空间限制:高端机车、车厢及布景耗资不菲,且搭建大型铁路模型需要大量空间,这在现代居住环境中日益稀缺。
  • 市场竞争与代际兴趣转移:来自互联网等新兴娱乐方式的竞争,夺走了年轻人的注意力。

尽管面临危机,行业并未坐以待毙,正在寻求转型与创新:

  • 产品创新与市场拓展:行业领先者Hornby通过管理层改组(引入乐高等公司人才),积极开发更便宜、更小尺寸的入门级产品(如TT:120比例),旨在降低门槛并吸引新客户。
  • 利用数字化与全球化:3D打印、在线设计分享社区(如Patreon)和廉价国际邮费,使得爱好者能获取独特零件甚至极小比例的模型(如日本的T-scale),形成了一个全球化的爱好者生态。

总结而言,英国模型铁路这一传统爱好正因人口结构变化和消费习惯改变而陷入低谷,但通过产品小型化、廉价化以及拥抱数字制造与网络社区,行业正在努力开拓新的生存与发展路径。

13. Show HN: BSON Extension for Postgres (github.com)

PostgreSQL 的 BSON 扩展

本文介绍了一个为 PostgreSQL 实现 BSON 数据类型的扩展,旨在支持高性能和表达力强的数据查询。BSON(二进制 JSON)是一种富类型的二进制数据格式,与 JSON 相比具有多项优势。

BSON 的主要优势

  • 日期时间:作为一等类型存在,无需像 JSON 那样转换为字符串,便于进行比较等原生操作。
  • 数值类型:明确支持 int32、int64、float 和 decimal 四种类型,避免了精度丢失和类型误解析问题。
  • 二进制数据:byte[] 作为一等类型,无需 base64 编码。
  • 性能:在某些条件下,二进制 BSON 的进出数据库速度比原生 jsonb 或 json 快近 10 倍,避免了字符串转换和字典转换。
  • 往返保真性:BSON 是二进制规范,无空格、引号规则等问题,数据存入和取出完全一致。
  • 广泛的 SDK 支持:在 20 多种语言中有标准 SDK 实现,便于在分布式系统中无缝处理数据。

这些特性使得数据可以在不同程序(如 Java、Python)和消息总线(如 Kafka)之间以 BSON 字节数组的形式高效、保真地传输和存储。

核心功能与访问方式

该扩展为 BSON 类型提供了一套函数和操作符,用于创建、检查和查询 BSON 对象。

  1. 字段访问函数(点路径表示法): 提供了一系列类型安全的高性能函数,例如 bson_get_datetime(bson_column, 'msg.header.event.ts')。这些函数在底层通过“遍历”BSON 结构来获取数据,仅在路径终点分配内存,因此更高效,尤其适用于大型或深层嵌套结构

  2. 箭头操作符(->->>: 类似于 PostgreSQL 中 JSON 类型的操作符,例如 bson_column->'msg'->'header'->>'ts'。虽然方便,但在每个箭头处都会构造一个新的子结构对象,当路径较深时,效率较低且消耗更多内存

  3. 与 JSON/JSONB 的互操作性: BSON 类型可以转换为 JSON(EJSON 格式)以保持类型保真度。这意味着所有基于 JSON 类型的丰富函数、操作甚至其他扩展(如 ?& 操作符)都可以应用于 BSON 数据。例如,可以将 BSON 子路径提取并转换为 jsonb 进行查询。

  4. 处理数组: 与 JSON 不同,BSON 本身不能直接从标量或数组创建,只能从键值对象创建。在访问路径中遇到数组时,BSON 规范将其返回为一个以字符串索引为键的对象(如 {"0": "value", "1": ...}),而非 JSON 数组。处理方式包括:

    • 使用字符串索引访问单个元素。
    • 将父级转换为 jsonb 类型后再访问(性能可能受影响)。
    • 使用专门的 bson_get_jsonb_array 函数,该函数结合了点路径的高效性和 JSONB 数组的易用性。

索引与查询性能

扩展支持在 BSON 字段上创建函数索引,例如:

CREATE INDEX ON data_collection (bson_get_string(data, 'd.recordId'));

使用此类索引后,针对特定字段(如 d.recordId)的查询性能可获得数量级提升(示例中从全表扫描的约 1 秒降至通过索引的 0.1 毫秒)。这使得对 BSON 文档中任意深度的字段进行高效查询成为可能。

构建与测试

  • 构建要求:需要 PostgreSQL 开发 SDK、libbson 库及头文件、C 编译器等。
  • 测试环境:已在多个 PostgreSQL 版本(14.4 至 18.2)和操作系统(macOS、RHEL)上通过测试。

当前状态与待办事项

该扩展目前处于实验阶段。作者列出了一些待改进事项,包括:优化测试驱动、改进数组提取方式、增强错误处理和类型检查以防止损坏的 BSON 导致进程崩溃,以及改进文档等。

14. Show HN: Material Files – Open Source Material Design File Manager for Android (github.com)

Material Files:开源Material Design Android文件管理器

核心特性

  • 开源轻量:应用开源、轻量、注重安全。
  • Material Design:严格遵循Material Design指南,注重细节。
  • 便捷导航:支持面包屑导航,便于在文件系统中穿梭。
  • Root支持:可使用root权限查看和管理文件。
  • 压缩文件支持:支持查看、解压和创建常见压缩文件。
  • NAS支持:支持管理FTP、SFTP、SMB和WebDAV服务器上的文件。
  • 主题定制:可自定义UI颜色,支持夜间模式及真正的黑色背景。
  • Linux兼容:如同Nautilus(Linux桌面文件管理器),能正确处理符号链接、文件权限和SELinux上下文。
  • 稳健实现:底层直接使用Linux系统调用,而非解析ls命令。
  • 优良架构:基于Java NIO2 File API和LiveData构建。

开发初衷

  1. 对现有设计的不满:开发者喜爱Material Design,但发现现有大多数文件管理器要么不遵循,要么在细节设计(布局、对齐、图标等)上存在瑕疵。
  2. 开源与安全需求:开发者希望拥有一个开源文件管理器。对于需要root权限的操作,使用闭源应用让人不安,因为这意味着授予应用对设备的完全访问权限。
  3. 正确的实现方式
    • 后端:采用Java NIO2 File API作为后端,避免了自定义模型与UI逻辑耦合,使代码更清晰,易于扩展对其他文件系统的支持。
    • 文件访问:不使用旧的java.io.File或解析ls命令,而是直接绑定Linux系统调用。这解决了旧API无法正确处理符号链接等问题,也避免了解析ls的不稳定性。直接调用系统调用使得应用快速流畅,并能正确处理高级功能如文件权限、符号链接、SELinux上下文以及无效UTF-8编码的文件名。
    • 前端:基于现代的ViewModel和LiveData构建,保证了清晰的代码结构并支持屏幕旋转,同时妥善处理了文件操作错误、冲突及前后台状态。
  4. 榜样力量:受到Linux上设计优美的Nautilus和开源的Material Design音乐播放器Phonograph的启发。

关于集成到自定义ROM的建议

  • 请勿用此应用替换AOSP的DocumentsUI,因为某些功能依赖于后者。
  • 确保此应用可被卸载或禁用。
  • 避免与Play/F-Droid版本发生冲突(涉及应用签名和包名问题)。

许可证 本项目采用 GNU通用公共许可证第3版 授权。

15. Fast RISC-V-based scripting back end for game engines (github.com)

文章标题:用于游戏引擎的快速基于RISC-V的脚本后端

核心概述 RVScript是一个面向游戏引擎的脚本系统,其核心是一个低延迟的RISC-V沙箱虚拟机。该系统旨在通过低调用开销和内存占用的快速虚拟机,结合现代编程技术,实现类型安全和内存安全的脚本,能够在严格的帧预算内执行数十亿次函数调用,从而革新游戏引擎中的脚本编写方式。

设计目标与优势

  • 解决现有瓶颈:传统脚本系统(如Lua、LuaJIT、WebAssembly模拟器)在函数调用,特别是参数较多时,存在显著开销,导致脚本函数调用成本高昂。RVScript旨在将游戏脚本延迟降至最低,使自动化游戏等需要大量脚本函数调用的场景也能在每帧内及时完成。
  • 极致性能:虚拟机支持二进制翻译模式,可进一步降低延迟。该翻译结果可交叉编译到终端用户平台(如Windows),对用户透明地实现同等效果。
  • 现代C++支持:脚本程序使用现代C++20编写,可选地启用RTTI和异常。部分C库函数以系统调用形式实现,能获得原生性能。

技术实现与构建

  • 结构:宿主侧代码位于engine文件夹,模拟一个微型游戏框架。脚本程序位于scripts文件夹。
  • 构建环境:需要安装cmake、git和合适的g++或Clang编译器。可通过setup.sh初始化依赖(libriscv和OpenGL等)。对于非Debian系系统,建议使用distrobox
  • RISC-V工具链
    1. 系统包工具链(如g++-12-riscv64-linux-gnu):简单易用,但使用的glibc的POSIX多线程需谨慎与C++异常混合。
    2. newlib工具链riscv64-unknown-elf):用于生产高性能、轻量的可执行文件。需从源码编译RISC-V GNU工具链并配置。构建脚本会优先选择此工具链。
  • 构建与运行:在engine目录运行build.sh,该脚本会同时编译引擎和programs目录下的脚本程序。可通过BENCHMARK=1运行基准测试。

调试与支持

  • 实时调试:通过DEBUG=1构建,可生成易于GDB调试的程序。引擎支持远程GDB调试,会自动尝试启动并连接。需安装gdb-multiarch
  • WSL2支持:在Windows 10的WSL2环境下可直接使用,无额外步骤。
  • 社区支持:相关讨论和帮助可访问其Discord。

API创建 宿主端为虚拟机添加新功能的方式主要有两种:

  1. 系统调用:性能高,但需硬编码编号,通过内联汇编从客户机调用,不利于自动生成API或防止绑定错误。
  2. 动态调用:推荐方式。通过字符串名称从脚本内调用宿主端的std::function函数。示例展示了如何为无参函数、带整型参数和返回值的函数、接受结构体引用的函数以及接受char*size_t参数对的函数创建动态调用。动态调用的声明需在dynamic_calls.json中配置,构建系统会自动生成相关API文件。内存操作有辅助函数(见memory.hpp)可简化。

开发状态 该项目仍在开发中,API目前不稳定,未来可能会有变化。

16. YouTube is loading slower for users with ad blockers yet again (www.tomsguide.com)

YouTube广告拦截器用户再次遇到加载缓慢问题

  • 最新情况:2024年初,YouTube用户再次报告启用广告拦截器时出现加载延迟。但YouTube发言人向Android Central表示,近期的延迟问题与公司的广告拦截检测措施无关。
  • 用户猜测:此前用户推测延迟源于YouTube代码中人为设置的超时机制,该机制会使视频播放器减速,模拟网络连接缓慢的情况。
  • Google既往措施:Google曾通过屏幕弹窗提示、以及更严格的“三次罢工”政策(即安装广告拦截器观看三个视频后禁用播放器)来限制广告拦截器。2023年11月,Google还测试过类似减速,并警告用户“若安装广告拦截器,可能出现次优观看体验”。
  • 用户应对方案:目前建议用户尝试将AdBlock或AdBlock Plus更新至最新版本。若问题仍未解决,仅剩两个选择:禁用广告拦截器,或订阅YouTube Premium。
  • 背景分析:尽管Google否认此次延迟与广告拦截打击有关,但考虑到其2022年广告收入达2244.7亿美元(总营收2798亿美元),Google有充分动机保护其核心收入来源,这可能是其持续抵制广告拦截器的战略之一。
  • 证据现状:目前关于延迟是否为故意措施的证据仍属轶事,尚无确凿证明。
17. Kind of annoyed at React (blog.cassidoo.co)

React 现状引发不满

作者背景与总体感受

作者拥有近十年 React 使用经验,曾是 React 18 Working Group 成员,撰写过数十篇文章和教程,并全职教授 React。尽管 React 是首选库,但作者认为它近年来变得过于复杂和令人沮丧,主要归因于社区沟通不足和透明度问题。

主要问题点

  1. 发布延迟:自 2022 年 6 月以来没有正式发布,进展缓慢。
  2. 框架依赖与垄断:核心团队提倡“使用框架”,但一些成员离职加入大型 React 框架公司,该框架使用 Canary 发布而非稳定版本,形成疑似垄断。
  3. 文档问题:新文档编写缓慢且缺乏支持,导致搜索“React documentation”时新文档未出现在首条结果。
  4. 概念混淆:存在“两个 React”(可能指版本或模式),但缺乏清晰的 mental model,增加用户理解难度。
  5. 多样性倒退:React 领导层中多样性努力被忽视,不同声音减少。

个人反思与展望

作者强调这不是纯粹的负面评论,React 团队的沟通已有所改善。虽然仍用 React 构建复杂项目,但希望使用时能更快乐。对未来持谨慎乐观态度,期待改进。

18. 25% of US/Canada trade depends on a single privately owned bridge (twitter.com)

美国与加拿大之间贸易的25%依赖于一座私人拥有的桥梁。这座桥梁由一位卡车运输大亨以4000万美元购得,收购发生在桥梁仍为公开交易资产时,并经历了与沃伦·巴菲特和查理·芒格的竞标过程。推文作者认为这可能是有史以来最伟大的资产收购之一。

19. Tracking and mapping the data broker ecosystem (databrokerswatch.org)

本文内容为服务条款与免责声明。该服务“按原样”提供,不作任何明示或暗示的保证。用户需自行承担使用该服务的全部风险,服务提供方不对因使用该服务导致的任何直接或间接损害负责。网站提供的与法律相关的信息仅供私人使用,不构成法律建议;如有具体法律问题,应咨询执业律师。文档最后附有版权信息。

20. MIT MicroMasters (micromasters.mit.edu)

MIT MicroMasters 项目概要

项目核心价值

  • 职业发展:通过在线学习与监考考试获得项目证书,以高性价比的MIT官方证书提升专业背景。
  • 硕士加速:为申请MIT及全球多所合作院校的硕士学位提供快速通道,可兑换学分。
  • 社区归属:证书获得者可成为MIT校友会附属成员,享受专业期刊与出版物访问权限。
  • 人脉拓展:通过专属职业社群与全球同行建立联系,扩大专业网络。

面向机构与教育组织

  • 支持企业、高校等机构将MicroMasters项目整合至员工培训或课程体系。
  • 提供灵活的合作定价方案,助力组织提升团队技能。
  • 详细合作信息需进一步咨询。

免费线上活动

  • 定期举办由MIT课程团队及教师主持的线上研讨会。
  • 提供项目详情介绍与答疑机会,方便潜在学员深入了解。

项目理念

  • 该项目面向全球学习者,提供高性价比、可加速的硕士教育路径。
  • MIT校长Sally Kornbluth强调,MicroMasters通过连接全球人才,激励学习者挑战自我、挖掘潜力。
22. Ask HN: Why do computers/tablets/etc "freeze up" as they get older?
23. Show HN: A minimal working Rust / SDL2 / WASM browser game (github.com)

一个最小化的 Rust / SDL2 / WASM 浏览器游戏项目

项目概述

该项目展示了一个使用 RustSDL2 编写,并编译为 WebAssembly (WASM) 以便在浏览器中运行的最小化游戏示例。

环境要求与前置准备

  • 必需工具rustupgit
  • SDL2 开发库
    • macOS:通过 Homebrew 安装,例如 brew install sdl2,并确保设置 LIBRARY_PATH 环境变量。
    • Ubuntu:使用 sudo apt install libsdl2-dev 安装。
  • 获取代码:克隆仓库 git clone https://github.com/awwsmm/hello-rust-sdl2-wasm.git 并进入目录。

构建步骤

1. 本地构建(桌面版)

直接运行:

cargo build

2. 构建为 WASM 版本

构建 WASM 版需要额外步骤:

  • 安装目标架构工具链
    rustup target add asmjs-unknown-emscripten
    
  • 安装 Emscripten 编译器
    • macOS:运行 brew install emscripten
    • Ubuntu:按 Emscripten 官方指南安装:
      git clone https://github.com/emscripten-core/emsdk.git && cd emsdk
      ./emsdk install latest
      ./emsdk activate latest
      source ./emsdk_env.sh
      
  • 设置环境变量
    export EMCC_CFLAGS="-s USE_SDL=2"
    
  • 构建
    cargo build --target asmjs-unknown-emscripten
    
  • 运行:在浏览器中打开生成的 HTML 文件。

参考资源

项目基于以下工作:

  • Michał Kalbarczyk 的博客文章
  • Greg Buchholz 的论坛帖子
  • Tobias Widlund 的相关工作 另外推荐 Mozilla 的 Rust 到 WASM 指南作为更简单的入门参考。
24. Some Memories of Niklaus Wirth by Martin Odersky (odersky.github.io)

关于Niklaus Wirth的回忆

文章概述
本文是Martin Odersky为纪念计算机科学先驱Niklaus Wirth所写的回忆录。Wirth于2024年1月1日去世,他作为工程师兼科学家,通过设计编程语言、编译器和系统软件对计算机领域产生了深远影响。作者曾是Wirth的博士学生,文中回忆了Wirth对其学术生涯的启发以及在ETH共事期间的深刻体验。

Wirth的贡献与影响

  • 工程与科学结合:Wirth坚持将严格的科学原理应用于实际工程,从无到有地推动了编程语言和系统工具的发展。
  • 编程语言序列:他设计了从EULER、ALGOL-W、Pascal、Modula/Modula-2到Oberon的一系列语言,其中Pascal因简洁清晰广泛应用于教学,Modula-2引入了模块化和并发概念,Oberon则以极简主义支持可扩展系统。
  • 实际应用:他的语言和系统(如Lilith计算机、自助式操作系统与编译器)均在有限内存下实现,体现了“极致简洁”的工程哲学。

作者的个人经历

  • 入门契机:作者因接触Pascal和Modula-2的源码而投身计算机科学,并与同学合作开发了适用于微型计算机的Modula-2编译器,后成为商业产品。
  • ETH的工作环境:Wirth团队以小规模(仅6名博士生)实现了从硬件、字体、操作系统到编程工具的全栈自主研发,强调功能必要性与实现紧凑性,例如编译器优化仅用于加速自身构建。
  • 博士阶段:作者用属性文法对Oberon进行形式化规范,后虽转向函数式编程,但Wirth的简洁理念持续影响其工作风格。

Wirth的个人特质

  • 反对官僚:他不热衷于标准化委员会,认为此类工作收效甚微。
  • 专注研究而非社区:尽管Modula-2一度受到业界关注,Wirth更倾向于持续探索新方向(如Oberon),而非推动语言社区扩张。

遗产与总结
Wirth独特地融合了理论深度与实践严谨,强调抽象必须服务于简洁实用的系统设计。他的工作体现了“理论指导实践”的永恒价值——唯有以彻底的简洁性为目标,才能让抽象真正提升日常编程的效率与质量。

25. Slashing Data Transfer Costs in AWS by 99% (www.bitsand.cloud)

本文探讨了AWS数据传输费用过高的问题,并提出了一种通过利用Amazon S3存储服务节省高达99%跨可用区数据传输成本的方法。

AWS数据传输费用概述

AWS的数据传输费用结构如下:

  • 从AWS到公共互联网:每GB收费0.09美元至0.154美元不等(例如,1TB需90至154美元)。
  • 跨AWS区域传输:每GB收费0.02美元至0.147美元不等(例如,1TB需20至147美元)。
  • 同一区域内不同可用区(AZ)之间传输:双向均收费,每GB0.01美元(例如,1TB总费用为20美元)。此价格在所有区域相同。

这些费用仅针对传出(egress)数据,且对于云服务商而言利润极高。其他云提供商也有类似定价。

利用S3降低跨可用区传输成本的原理

S3具有几个关键特性,可用于优化成本:

  1. 区域级存储:标准S3存储类在区域级别而非单个可用区存储数据,AWS会自动将其复制到区域内的多个可用区,从而提供高耐用性和可用性。
  2. 免费上传和下载(同区域内):上传数据到S3免费;在同一AWS区域内从S3下载数据也免费(仅当数据跨区域或传至互联网时才产生传输费)。
  3. 可扩展性与按需付费:S3存储按小时计费(每GB每月约0.023美元),且请求成本较低。

方法演示与实验验证

作者通过两个实验比较了直接传输与通过S3中转的成本:

  • 实验一(直接传输):在us-east-1a和us-east-1b的EC2实例间直接传输1TB数据,产生约20美元的跨可用区传输费用。
  • 实验二(S3中转):实例先上传数据至S3存储桶,再由另一实例下载。结果显示,总成本仅为8美分(主要来自S3 PUT/GET请求费用),无数据传输费用。存储成本极低(因数据被快速删除)。

实验证实,通过S3中转,跨可用区数据传输成本可从每GB 0.02美元降至约0.000032美元,节省超过99%。该方法尤其适用于大规模数据传输(例如,1PB传输仅需约32美元,而直接传输需2万美元)。

注意事项与局限性

  • S3限制:单个对象最大5TB,单次上传最大5GB(需使用分段上传)。
  • 延迟与适用性:该方法可能增加延迟,且不适用于需要实时同步的场景。
  • 成本构成:费用主要来自S3请求和短暂存储,但通过及时删除对象可最小化存储成本。
  • 免费额度影响:AWS免费额度可能略微影响实验结果,但整体成本仍极低。

结论

该方法利用了S3内部跨可用区复制数据的机制,本质上将已包含在存储费用中的跨可用区复制成本转化为免费传输。尽管存在一些限制,但在以成本优化为首要目标的场景下,该方法可有效降低数据传输费用超过99%,展示了AWS服务组合中潜藏的深度成本优化可能性。

26. Git Branches as a Social Construct (utcc.utoronto.ca)

该网页内容并非关于Git分支的文章,而是一则关于访问限制的通知。

核心信息: 用户在访问Wandering Thoughts博客或CSpace时被阻止,原因是其HTTP请求的User-Agent头信息过于通用或可疑。

原因: 自2025年初以来,存在大量行为类似的爬虫(部分用于收集大语言模型训练数据),给网站带来巨大负载。网站管理员正在尝试封锁这些爬虫,因此部分用户被误拦。

User-Agent头信息要求: 管理员要求所有User-Agent必须清晰标识身份,具体要求如下:

  1. 对于非浏览器用户代理,必须同时明确标识所用软件以及软件的具体使用者。
  2. 不能接受极其通用的值,例如 Go-http-client/1.1
  3. 如果User-Agent头信息中包含 compatible 等兼容性标识,则必须包含一个明确的、真实的URL,用以说明其活动或软件信息。例如,类似 Mozilla/5.0 (compatible; mysoftware) 这样不明确的格式是不可接受的。

发布信息: 该通知由Chris Siebenmann于2026年4月18日发布。

27. How governments become addicted to suppliers like Fujitsu (www.theregister.com)

本文实际内容为网页验证页面,而非标题所述文章。页面技术结构如下:

页面功能与结构:

  • 验证机制:通过加载slow.js脚本实施工作量证明(Proof of Work)机制,用于区分人类用户与自动化程序。
  • 验证流程
    1. 用户界面元素(类为wicketkeeper的div)收集验证解决方案。
    2. 验证成功后触发solved回调函数,该函数向服务端/_labrador/pow/v0/verify发送包含验证令牌和结果的请求。
    3. 服务端验证通过(HTTP 200)后,页面在500毫秒后自动刷新,可能用于加载实际文章内容。

响应式设计:

  • 样式部分通过CSS媒体查询适配不同屏幕尺寸:
    • 桌面端(≥1024px):验证组件最大宽度350px,高度75px。
    • 平板端(513px-1023px):最大宽度450px,高度95px。
    • 移动端(≤512px):宽度占比92%,高度150px。

技术目的:

  • 该页面作为防护层,旨在阻止自动化爬虫访问网站内容,确保只有通过人类验证的用户才能继续浏览。原始文章《政府如何对富士通等供应商上瘾》的实际内容未在提供的HTML代码中呈现。
28. COSMIC SETI (science.nrao.edu)

COSMIC 系统概述

COSMIC(Commensal Open Source Multimode Interferometer Cluster)是一套部署于甚大阵列(VLA)的新型数字信号处理系统,旨在使地外文明搜寻(SETI)观测能够与VLA的常规科学观测同步进行。该系统目前仍在积极开发中。

核心硬件组成

COSMIC系统独立接收来自VLA各天线的数字化数据流副本,由三部分构成:

  1. 光纤分路器:复制并传输VLA天线的数字化数据。
  2. FPGA集群:将数据通道化至1 MHz分辨率,并通过100 Gb/s以太网传输。
  3. CPU/GPU集群:接收数据并执行多种信号处理,最终将SETI候选信号(“hits”)存入数据库。目前可处理来自每根天线2 GHz带宽,未来计划扩展至全带宽。

数字信号处理流程

  • FPGA处理:接收数据流,将其通道化为1 MHz通道,并对数据进行延迟和相位跟踪(fringe-stopping),然后通过以太网传输。
  • CPU/GPU处理:构成核心处理流水线,具备以下关键能力:
    • 缓存约5分钟的全阵列电压数据。
    • 最多形成32个相干波束及非相干波束。
    • 频率分辨率可在1 MHz至1 Hz间配置。
    • 进行天线间相关处理(用于校准)。
    • 执行多普勒漂移搜索,寻找线性漂移率在-50 Hz/s到+50 Hz/s之间的窄带信号。
    • 系统会永久存档候选信号附近的短时数据片段。

工作流程

COSMIC根据主观测任务自动调整工作模式:

  1. 获取VLA的指向信息,并按主观测者的设置配置FPGA。
  2. 若指向校准源,则运行相关器模式以生成天线增益解。
  3. 若指向科学目标,则查询视场内的SETI候选恒星。
  4. 缓存天线电压数据,为候选目标形成合成波束。
  5. 生成高分辨率频谱,并运行多普勒漂移搜索算法识别信号。
  6. 发现漂移信号时,存档对应的电压数据。系统预计每年存档约1 PB的候选事件数据。

未来发展方向

COSMIC系统设计灵活,未来可为社区科学家开发新观测模式,例如:

  • 对单天线或单波束进行长时间深度电压数据缓存。
  • 连续高时间分辨率可见度矩阵记录。
  • 实时射频干扰研究。
  • 搜索非线性频率漂移特征。

COSMIC团队致力于与科学界合作,开发能增强VLA现有能力的辅助观测模式。

29. Paper Pipe Organ (2019) [video] (www.youtube.com)

这是一个关于纸制管风琴的YouTube视频页面(视频ID: ujdlxAQw5oA),标题为**"Mini Organ Made From Paper"**(用纸制作的小型管风琴)。

视频基本信息

  • 标题: Mini Organ Made From Paper
  • 频道: Caters Clips(已认证,380万订阅者)
  • 发布时间: 2019年4月12日
  • 观看次数: 351,112次
  • 点赞数: 22,328
  • 评论: 已关闭

视频内容摘要

视频展示了来自白俄罗斯明斯克的33岁软件开发者Aliaksei Zholner仅使用纸张、纸板、气球和一叠书,成功复制了经典音乐剧《歌剧魅影》中的管风琴声音。他按照经典管风琴的工作原理,用纸制作了簧舌、调音线和簧管,通过气压和振动从这个小型但功能强大的乐器中创造出美妙的音乐。

技术要点(视频章节)

  1. 1:27 - 簧舌振动部分越短,音调越高
  2. 1:46 - 为了同时正确发出多个音符(如和弦),需要气压调节器
  3. 2:03 - 管道安装

页面状态

该视频要求登录才能播放(状态:LOGIN_REQUIRED),YouTube提示需要登录以确认用户不是机器人。视频描述中包含Caters News Agency的版权信息和社交媒体链接。

30. Compression Attached Memory Modules may make upgradable laptops a thing again (arstechnica.com)

CAMM2标准:让笔记本电脑内存重新可升级

核心概念

CAMM(压缩附加内存模块)是一种新型内存标准,其最新版本CAMM2已由JEDEC正式定稿。与传统SO-DIMM内存条不同,CAMM模块平铺安装在主板上,通过金属触点连接,而非插入插槽。这种设计旨在解决传统SO-DIMM内存占用空间大、不支持高速低功耗内存的问题,同时保留可升级性。

背景与演变

  • 历史趋势:2010年代中期起,为追求更轻薄的笔记本电脑设计,厂商逐渐将内存直接焊接在主板上,牺牲了可升级性。SO-DIMM内存插槽逐渐从主流消费类笔记本中消失,目前仅存在于游戏本、商用笔记本及少数注重维修性的产品(如Framework笔记本)。
  • 技术差距:焊接内存通常采用移动端专用的LPDDR4/LPDDR5标准,相比传统DDR4/DDR5具有更高速度和更低功耗,但无法升级。
  • 当前需求:随着维修权立法推进和用户对可升级性的重视,笔记本电脑的维修性与升级性正重新成为卖点。

CAMM2的优势与挑战

优势

  1. 可升级性:模块可替换(需螺丝固定),支持单模块双通道,未来可能支持多通道。
  2. 高性能低功耗:支持高速LPDDR内存,性能优于传统SO-DIMM。
  3. 节省空间:模块平铺安装,比SO-DIMM插槽更节省内部空间,有利于笔记本轻薄化设计。
  4. 容量提升:支持更高内存容量(如Dell已提供64GB CAMM模块)。

挑战

  1. 行业接受度:需取代成熟的SO-DIMM标准,目前仅Dell(全球第三大PC厂商)、三星、Crucial等部分厂商支持。
  2. 成本问题:初期价格较高(如Dell的64GB CAMM模块售价约1030美元),高于同等容量的SO-DIMM内存。
  3. 厂商动机:部分厂商可能更倾向于焊接内存以控制定价和升级成本,类似Apple在Mac中采用专有存储的做法。

行业进展与前景

  • 标准制定:JEDEC于近期完成CAMM2标准定稿。
  • 厂商动向:Crucial已展示LCAMM2模块,三星计划年内推出CAMM内存,Dell已在部分笔记本(如Precision 7670)中应用。
  • 未来展望:CAMM有望逐步替代SO-DIMM,但能否广泛应用于主流消费类笔记本仍需观察。若成功推广,用户可能重新获得无需专门寻找支持升级的笔记本即可升级内存的能力。

总结

CAMM2标准通过结合可升级性与高性能内存支持,试图在轻薄设计与用户升级需求之间取得平衡。尽管面临行业推广与成本挑战,但其在技术上的改进可能推动笔记本电脑内存升级性的回归。

31. JSON Resume (jsonresume.org)

JSON Resume 是一个为开发者制定的简历标准。它提供了以下核心内容:

  • 标准化:旨在帮助开发者创建格式统一的简历。
  • 主题库:拥有一个由社区创建的简历主题图库,用户可以浏览和使用。
  • 开源:JSON Resume 的所有部分均在 GitHub 上以开源形式发布。
32. Expand Everything: Userscript to click "show more" links to expand all the text (github.com)

Expand Everything 用户脚本概述

核心功能

Expand Everything 是一个用户脚本,旨在自动点击网页上的“显示更多”、“加载更多”等按钮,以展开被折叠的完整内容。它适用于计划阅读、打印、复制或归档整个页面的场景,解决了用户需手动点击才能查看完整信息(如评论、描述)的问题。

工作原理

  • 使用 MutationObserverquerySelectorAll 监测并自动点击目标元素。
  • 为避免性能下降,在发生一定数量的变化后(例如200次)会断开观察器,此计数可针对不同网站调整。
  • 在单页应用(SPA)导航时,会重新安装观察器以处理新元素。
  • 尽可能使用 Navigation API 监听位置变化,否则通过 setInterval(间隔1000毫秒)轮询,并在页面不可见时停止。

安装方式

  • 需要支持用户脚本的浏览器扩展(如 ViolentmonkeyUserscripts)。
  • 通过访问 expand.user.js 并确认安装,或手动创建新脚本并粘贴源代码。

支持网站

脚本针对多种网站进行了优化,包括但不限于:

  • GitHub:展开问题评论、最小化评论、过时审查评论。
  • YouTube:展开视频描述和评论。
  • Twitter/X:展开长推文、显示回复和“可能垃圾”内容。
  • Stack Exchange 站点:显示所有评论。
  • Substack:展开评论文本。
  • Reddit(需配合 Reddit Enhancement Suite):展开低于阈值或已删除的评论。
  • Hacker News:展开折叠评论。
  • Quora纽约时报BloombergIMDbLinkedIn 等众多其他网站。

特性与注意事项

  • 通过 MutationObserver 限制和页面可见性轮询优化性能。
  • 提供 演示视频测试页面(在脚本源代码中注明)以验证效果。
33. Heads up – effectively offline for now (lkml.iu.edu)

Linux 内核主要维护者 Linus Torvalds 发布通知,宣布 Linux 内核的合并窗口已暂停

事件与原因:Linus 所在的美国俄勒冈州遭遇冬季风暴,导致他所在地区的电力与网络中断。他预计短期内无法恢复工作。

具体情况

  • 影响范围:约有 10 万用户受到影响,Linus 所在的社区并非优先恢复供电区域。
  • 历史参考:过去曾发生过类似情况,电力恢复耗时超过一周。他希望此次不会持续那么久,但无法确定。
  • 个人选择:出于对路况安全(倒塌的树木和电线)及其他驾驶员的担忧,Linus 决定留守家中,而非前往其他有网络的地方工作。

潜在影响:此暂停直接影响了 Linux 内核开发的周期和补丁提交流程,开发者需等待其恢复在线后才能继续推进合并窗口的工作。

34. Polymorphic Types in C [pdf] (open-std.org)

根据提供的PDF文件标题《Polymorphic Types in C [pdf]》及无法直接解析的二进制流内容,可以推断该文档旨在探讨在C语言中实现多态类型的技术。由于原始内容为加密的PDF数据,无法提取具体文本,以下摘要基于标题和常见的技术主题进行概述。

主题概述

该文档可能专注于如何在C语言中模拟面向对象编程中的多态性。C语言本身不具备原生的多态支持,但开发者可以通过多种技术手段来实现类似功能,从而提升代码的灵活性和可重用性。

核心技术与方法

  1. 函数指针:这是实现多态的基石。通过在结构体中嵌入函数指针,可以将特定行为(方法)绑定到数据(对象)上。不同的结构体实例可以包含指向不同实现的函数指针,从而实现运行时多态。
  2. void 指针与类型转换:利用void*可以创建通用的数据容器或接口,结合类型转换,在运行时处理不同类型的对象。这种方式灵活性高,但牺牲了类型安全性。
  3. 结构体继承(模拟):通过将“基类”结构体作为“派生类”结构体的第一个成员,可以模拟单继承。这样,指向派生类对象的指针可以安全地转换为基类指针,从而利用共享的接口。
  4. 接口(抽象基类):定义一个仅包含函数指针的结构体作为接口(类似于C++中的纯虚基类)。不同的具体类型实现该接口,并提供自己的函数定义。

可能讨论的优缺点

  • 优点:使得C语言编写的系统更具模块化和扩展性,能够设计出更清晰的API,便于维护和功能扩展。
  • 缺点:手动实现较为繁琐,容易出错。相比原生支持多态的语言,缺乏编译期类型检查,可能引入运行时错误。性能开销(如函数指针调用)通常高于直接的函数调用。

结论

该文档很可能系统性地介绍了在C语言环境下,利用底层语言特性手动构建类型系统以实现多态的各种模式、最佳实践以及需要注意的陷阱。其目标是为C程序员提供一套实用的技术指南,以编写出更抽象、更灵活的代码。

35. Before I reach my enemy, bring me some heads (samkriss.substack.com)

文章摘要:《Before I reach my enemy, bring me some heads》

核心主题

本文通过分析《Dede Korkut之书》的文本特征,探讨了口头文学书面文学的根本差异,并以此为镜,批判了现代学术写作的僵化与剽窃现象,最终指向数字时代对文学传统的颠覆。

主要内容

1. 《Dede Korkut之书》与口头文学的本质

  • 起源:该书是奥古兹突厥人(Oghuz Turks)的史诗合集,传统上归于神话诗人Dede Korkut。内容本身经过漫长口头传唱,后于14-15世纪被文字记录,并融入了伊斯兰教元素及荷马史诗情节(如独眼巨人)。
  • 核心特征:重复性与公式化
    • 人物:缺乏独立个性。所有英雄都勇敢、冲动、热衷复仇,拥有相似的外貌特征(栗色眼睛、白色前额)、家庭结构(白须父亲、白发母亲)和爱好(突袭、狩猎、囚禁与逃脱)。
    • 语言与情节:大量使用重复的史诗程式化语句(如“在我的敌人抵达前,带回几颗头颅”)。情感通过固定的自然象征(黑色山峦象征兴衰,血色河流象征生死)表达。关键场景(战前祈祷、战斗模式)高度相似。
    • 本质:这并非缺陷,而是口头文学的核心机制。诗歌的最小意义单元是意象(如“黑色山峦”),而非单独的词汇。吟游诗人依靠记忆和重组固定程式来叙事,每次表演都声称与上次相同,实则不断变化。写作的固定文本终结了这种流动性。

2. 文学范式的转变:从重复到原创

  • 口头/中世纪模式:强调重复、程式化与集体智慧。古典史诗(如《奥德赛》)及中世纪文学都大量借用和重组既有材料,原创性并非首要追求。
  • 现代小说模式:自《堂吉诃德》起,文学开始追求原创性、独特的角色塑造与个人风格。读者期待新颖的情节、深刻的人物心理和独特的语言表达。
  • 当代衰落:作者认为,数字时代(数字文本、社交媒体、短视频)正使我们回归“口头”状态。在线文本具有即时性、流变性,类似口语;而书籍的固定性变得“不自然”。数字媒介更利于程式化重复(如 meme、固定舆论立场),而非传统小说追求的原创性。小说的时代可能已经终结。

3. 学术写作:现代性的“程式化”与剽窃困境

  • 案例:哈佛大学校长 Claudine Gay 因学术著作中未注明来源的文本相似性(被视为剽窃)而辞职。
  • 批判分析
    • 本质:作者指出,学术写作充满程式化、陈词滥调和必要的引用(类似于口头史诗的固定短语),却伪装成高度原创的思想。它本质上是中世纪的,而非启蒙的。
    • 结构性矛盾:学术体制要求疯狂发表(“词语的黑色河流”),但极少有人真正阅读。为了发表和引用,学者们不可避免地重复使用领域的“标准表述”,从而陷入结构性剽窃。
    • 荒谬性:以 Gay 事件为例,指出对数字(如“0和1”)或专业领域标准表述的“剽窃”指控是荒谬的。这暴露了现代学术对“原创性”的虚假执着与实际写作惯例之间的脱节。

4. 结论与展望

  • 作者以《Dede Korkut之书》中Yigenek与Emen在梦中获得相同启示、次日携手作战的故事为喻,指出在某种共享的、超越文字的层面进行交流与认同是可能的
  • 最终观点:我们正生活在一个“部落化”的时代,数字技术使我们回归一种类似口头传统的文化状态。与其徒劳地维护“个人原创”的旧范式,不如承认并接受重复、借用和程式化表达作为知识生产和交流的自然组成部分,甚至为学术写作“正名”,使其回归其真正的中世纪传统。
36. A mouse for your mouth': New device allows users to scroll with their tongues (www.nbcnews.com)

MouthPad^:一款用舌头操控的口腔触控板

核心概述 MouthPad^ 是一款由 Augmental 公司开发的创新型可穿戴设备。它形似牙齿保持器,佩戴在口腔上颚,通过感应舌头的移动与按压,让用户能够无线操控智能手机、平板或电脑,实现滚动屏幕、打字、拨打电话甚至下棋等操作。这款设备被开发者比喻为“口腔的鼠标”。

设计与功能

  • 外观与佩戴:设备主体为透明结构,中央有一个金色触控板作为舌头接触点。侧面有一个小凸起,内置蓝牙天线和无线充电电池。
  • 操作方式:通过舌头滑动和点击进行导航。设备内置力传感器,可识别左右点击,并可自定义为快捷键。
  • 连接与续航:通过蓝牙连接多种设备。当前电池续航约5小时,公司计划在下个版本中延长至8小时。用户佩戴时可以喝水,但不建议吃饭时使用。

开发初衷与目标用户 该设备最初旨在为手部功能障碍或瘫痪人士提供一种更便携、更有效的辅助技术。开发者注意到市场现有产品存在笨重或不便于携带的不足。然而,其应用潜力已吸引更广泛的用户群体,包括需要解放双手的专业人士(如机械师、外科医生),以及宇航员。

研发进展与市场状态

  • 原型开发与测试:团队花了约两年时间完善原型,重点优化了控制和过滤功能,确保设备在接触唾液或水时仍能正常工作。过去六个月,已有用户(包括一名大学生)在测试中将其作为电脑和手机的主要输入设备。
  • 上市计划:产品预计于今年晚些时候上市,目前可在其官网申请早期体验。公司正致力于未来的功能扩展,如集成语音和轮椅控制。
37. Show HN: Kindllm – LLM chat optimized for Kindle e-readers (kindllm.app)

Kindllm:Kindle电子阅读器专属LLM聊天应用

项目简介
Kindllm是一个专为Kindle电子阅读器优化的无干扰LLM(大型语言模型)聊天网页应用。它被定位为阅读时的理想伴侣,旨在解决用户在Kindle上阅读时频繁用手机查询信息的烦恼。该应用基于Mistral AI的Mixtral模型,并主要在Kindle Paperwhite系列设备上进行了测试。

技术栈
该项目采用了以下技术构建:

  • 前端:使用htmx实现轻量级交互
  • 后端框架:采用Hono(一个轻量级Web框架)
  • 数据验证:使用Zod
  • 部署平台:通过Cloudflare Workers进行部署
  • API服务:集成Anyscale Endpoints作为LLM接口

部署与使用
用户可通过以下步骤部署和使用:

  1. wrangler.toml文件中设置Anyscale Endpoints API密钥
  2. 完成开发环境配置
  3. 部署至Cloudflare Workers
  4. 在Kindle的网页浏览器中访问https://kindllm.<ACCOUNT_NAME>.workers.dev

开发动机
开发者表示,最初因在Kindle阅读时频繁用手机查询信息而感到困扰,曾尝试开发此类应用但未能在旧版Kindle浏览器上良好运行。近期亚马逊更新了部分Kindle的网页浏览器,使其能够支持此类简单交互应用的运行,从而促成了该项目的实现。

许可协议
该项目采用MIT许可证发布,版权归Anders Rex所有(2024年)。

38. Do venture capitalists want forever war? (responsiblestatecraft.org)

风险资本正大举押注国防领域。随着全球多地冲突持续(如乌克兰和中东),美国风险资本对国防初创企业的投资在四年内翻倍。2019年投资约160亿美元,而仅2023年前五个月就完成了200多笔国防与航空航天交易,总值近170亿美元。知名VC机构如彼得·蒂尔的Founders Fund、安德森·霍洛维茨(a16z)和Lux Capital已成为国防新星(如Anduril、Hadrian、Rebellion Defense)的重要支持者,不仅获取高额回报,还日益影响美国外交政策。

这些VC支持的企业正在挑战洛克希德·马丁、RTX等传统国防承包商的地位。例如,Palantir(获Founders Fund支持)曾击败RTX赢得8亿美元陆军合同;SpaceX抢占卫星市场,迫使波音和洛克希德成立自有风投部门以应对竞争。新兴企业如机器零件制造商Hadrian(成立于2020年)已融资近1亿美元,Rebellion Defense则在2019年通过埃里克·施密特、詹姆斯·默多克等投资筹集6300万美元,其董事会包括施密特和中央情报局风投机构In-Q-Tel的受托人。

风险资本本质是高风险投资,约75%的初创企业会失败。国防领域的回报率通常低于科技等行业,因此投资逻辑依赖于地缘紧张和冲突时期——此时政府对武器和技术的需求增加,更易授予VC支持的企业以合同。此外,VC正通过影响政策来推动自身利益:彼得·蒂尔等亿万富翁VC积极支持政治候选人,其前雇员进入白宫和国防部任职;埃里克·施密特作为国防创新委员会成员,参与为Rebellion Defense所涉技术分配资源,该公司已获得高达9.5亿美元的空军合同。

VC的透明度不足使其活动缺乏公众监督。国防领域的VC及其企业似乎有意推动紧张局势:Palantir和Anduril公开表态支持以色列在加沙的行动,以色列军队使用了VC支持的Shield AI无人机;VC机构则强调中国威胁,试图影响政策方向。今年,13家科技公司和VC联合致信要求国防采购改革,以扩大初创企业获取国防预算的渠道。

投资回报在冲突中显现:Anduril 2023年收入估计达3.42亿美元,预计获得6.25亿美元新政府合同;Rebellion Defense合同当年翻倍;Palantir在第三季度盈利7200万美元后股价上涨20%。正如Palantir首席执行官所言:“糟糕时期对Palantir非常有利。”风险资本在国防领域的成功依赖于冲突,其投资策略本质上是在寻求对抗。

39. Winworld Software Archive (winworldpc.com)

WinWorld软件存档 WinWorld是一个在线博物馆,致力于保存和分享老旧、废弃及预发布的软件。该网站提供关于多种计算机和操作系统的详细信息、媒体文件及下载服务。

其整个软件库完全免费、开放,面向所有人。无论是想重温经典Windows版本、研究计算机历史,还是为无法运行最新软件的旧系统寻找可用程序,该网站旨在成为用户获取高质量信息与下载资源的首选平台。用户可在此获取适用于PC、Mac、Amiga等多种平台的经典操作系统、应用程序、游戏及测试版软件。

如需了解更多网站历史,可访问其“关于”页面。此外,用户还可通过论坛或Discord与社区互动。

40. 'Technical glitch' in payroll software sparks riots in Papua New Guinea (www.theregister.com)

提供的HTML内容并非关于巴布亚新几内亚薪资软件故障及骚乱的文章正文,而是一个网站的技术验证页面(Human Verification / CAPTCHA)。

该页面的主要功能和结构如下:

  • 目的:用于验证访问者是否为真人,以防止自动化程序访问。
  • 核心机制:页面加载后会运行一个挑战脚本(slow.js),用户完成挑战后会触发 solved 回调函数。
  • 验证流程solved 函数将生成的验证结果(包括 nonce、token 和 response)通过 fetch 请求发送至服务器端点 /_labrador/pow/v0/verify 进行验证。
  • 响应处理:若服务器返回状态码 200(表示验证成功),页面将在500毫秒后自动刷新。
  • 界面与适配:页面使用一个 class="wicketkeeper"div 元素作为验证控件的容器,并通过CSS媒体查询实现了在不同屏幕尺寸(桌面、平板、手机)下的自适应布局,确保验证区域大小和字体适配不同设备。

总结来说,此文件是网站访问流程中的一个技术屏障,并未包含标题所述事件的任何新闻报道内容。用户可能因访问该新闻链接而首先遇到了此验证页面。

42. Sorry. Your car will never drive you around [video] (www.youtube.com)

YouTube 视频页面摘要

视频基本信息

  • 标题: Sorry. Your Car Will Never Drive You Around.
  • 创作者: Benn Jordan (1.18M 订阅者)
  • 观看次数: 853,732 次
  • 发布时间: 2024年1月7日首映,约2年前
  • 地点标记: 亚特兰大(Atlanta)

视频内容概述

这是一期深入探讨自动驾驶汽车技术的视频,主要关注以下方面:

  1. 自动驾驶的各个阶段 - 介绍从L0到L5的自动驾驶等级
  2. 特斯拉全自动驾驶(FSD)系统的现实与期望 - 对比预期功能与实际表现
  3. 安全测试 - 包括针对塑料假人和真实儿童的安全测试
  4. 超声波传感器技术 - 分析其工作原理和局限性
  5. Openpilot开源自动驾驶系统 - 作为替代方案的介绍
  6. 特斯拉安全性数据 - 讨论特斯拉车辆的事故率问题
  7. 消费者权利 - 讨论相关法律和权益问题

其他信息

  • 该视频于2024年1月6日发布,地点在亚特兰大
  • 频道还提供了 Patreon 支持链接和流媒体频道"Lambient"
  • 视频包含详细的章节标记,方便观众跳转到感兴趣的部分
43. YouTube prime is $7 cheaper if you subscribe on the website
45. Peregrine lunar lander on Earth reentry trajectory (spacenews.com)

根据提供的内容,文章实际显示为网站访问请求被限制的错误提示,未包含关于“游隼号月球着陆器再入地球轨道”主题的具体信息。

当前状态:

  • 无法获取文章《Peregrine lunar lander on Earth reentry trajectory》的实质内容。
  • 页面返回信息表明,用户因在短时间内请求过多而被暂时限制访问。

可能的相关技术方向(基于标题推测): 若文章存在,其主题可能涉及:

  1. 任务背景:游隼号(Peregrine)作为月球着陆器,其任务设计、发射情况及未能成功着陆月球的原因。
  2. 轨道动力学:讨论使该航天器从错误任务轨道转向地球再入轨道所需进行的轨道机动计算与执行。
  3. 再入过程:分析航天器以何种角度、速度再入地球大气层,以及相关的热防护与风险。
  4. 结果评估:可能涉及对此次非计划再入事件安全性的评估,以及对太空交通管理和 debris 减缓的影响。

由于原始文章内容无法获取,以上为基于标题的合理技术推断,非实际文章摘要。

46. When Optimising Code, Measure (www.solipsys.co.uk)

这篇文章通过一个具体的代码优化实例,强调了在优化代码时实际测量性能的重要性。作者在实现费马因数分解算法时,逐步优化了四个版本的Python代码。初始版本(版本0)因每次循环都计算平方根而效率极低。后续版本通过改进循环逻辑(版本1)、避免重复平方运算并使用增量更新(版本2、3)显著提升了性能。测试显示,版本3相比版本2有进一步改进。

然而,作者在准备进一步优化时,仅将版本3中的多行赋值语句(如 a2 += cc += 2)合并为单行并行赋值(a2, c = a2+c, c+2),得到版本4。令人意外的是,测试表明这个看似等价的改动反而使代码变慢。作者最初猜测这可能是因为并行赋值允许在不同核心上执行,但评论指出Python的全局解释器锁(GIL)会阻止真正的并行执行。评论还提到,使用 a*a 代替 a**2 可能是一个更大的优化点。

文章的核心启示是:代码优化的理论推断或经验猜测可能不可靠,必须通过实际测量来验证每一个改动是否真正提升了性能。作者强调,即使改动看起来很小,也应进行测量。

47. Font-Face Toggler Bookmarklet (www.phpied.com)

Font-Face Toggler 书签工具

功能介绍 这是一个用于快速切换网页字体(Web Fonts)显示的书签工具。开发者可借此工具反复开启或关闭字体,观察因字体加载引起的布局偏移(layout shift),用于用户体验测试。

安装与使用

  1. 安装:将提供的“toggle fonts”链接拖动到浏览器的书签工具栏。
  2. 使用:访问使用了Web字体的页面,点击该书签即可切换字体状态。

实现原理 工具通过遍历页面的所有样式表,针对@font-face规则进行操作:

  • 若规则已启用,则将其fontFamily属性值暂存至fontFamiliar,并清空fontFamily以禁用字体。
  • 若规则已禁用(即fontFamiliar已存在),则恢复原始fontFamily并删除临时属性。

限制说明

  • 无法修改跨域或不可访问的样式表(例如第三方域名),但会首次报告其URL。
  • 错误提示仅出现一次,避免频繁弹窗。

布局偏移监控 可配合以下代码在控制台实时监测布局偏移值(CLS),以量化字体切换带来的影响:

new PerformanceObserver((list) => {
  let cls = 0;
  for (const entry of list.getEntries()) {
    cls += entry.value;
  }
  console.log(cls);
}).observe({type: 'layout-shift'});

备注

  • 工具支持local()字体的版本已更新。
  • 作者联系方式:BlueSky、Mastodon、LinkedIn、Threads、Twitter。
48. China sooner or later will 100% indigenize smartphone OLED panel supply chain (www.digitimes.com)

登录功能说明

本文档描述了网站的一个用户便利功能:保持登录状态。主要点如下:

  • 目的:允许订阅者保存登录信息,以便在后续访问时无需重复输入用户ID和密码,提升访问效率。
  • 激活方式:在登录部分勾选“保持登录状态”(Keep me signed in)框,即可启用该功能。
  • 保存机制:勾选后,系统会将密码保存在用户当前使用的计算机上,从而实现自动登录。
  • 注意事项:如果用户选择使用注销功能,已保存的登录信息将丢失,这意味着下次访问网站时需要重新登录。
49. Inequality Inc. How corporate power divides our world (policy-practice.oxfam.org)

《不平等公司:企业权力如何分裂我们的世界》摘要

核心现状

自2020年以来,全球最富有的五名男性财富已翻倍,而与此同时,全球近50亿人口却变得更贫穷。当前按现有速度,消除贫困需要230年,但10年内可能诞生首位万亿富翁。

企业权力与不平等加剧

报告指出,全球企业与垄断权力的集中化正系统性加剧经济不平等。全球十家最大企业中,七家拥有亿万富翁CEO或亿万富翁为主要股东。

企业驱动不平等的主要途径

  • 挤压劳动者:通过压榨工人权益与薪酬
  • 逃避税收:规避企业应承担的纳税义务
  • 公共服务私有化:将本应由国家承担的职能转为私有
  • 气候危机恶化:其商业活动加剧环境破坏与气候问题

这些行为共同服务于为富裕所有者创造更巨大财富的目标。

结论与建议

报告呼吁政府必须彻底重新分配亿万富翁与企业的权力,将其归还于普通民众。通过有效监管与重塑私营部门,实现一个更平等的世界是可能的。

50. Xenia Linux – An Immutable Linux distribution based on Gentoo Linux (xenialinux.com)

Xenia Linux 项目概览

项目定义 Xenia Linux 是一个基于 Gentoo Linux 的不可变 Linux 发行版。

核心特性

  • 基础架构:以源码级可定制性著称的 Gentoo Linux 作为其底层基础。
  • 系统模型:采用不可变操作系统设计。这意味着系统核心文件在运行时是只读的,旨在提高系统的稳定性、可靠性和安全性,并简化系统更新与维护流程。

当前状态 该项目对应的官方网站域名 xenialinux.com 已被注册,但截至信息更新时,尚未上线任何实际网站内容。该页面提示访客稍后再次访问以查看项目未来的动态。

总结 Xenia Linux 是一个面向未来、追求稳定与安全的 Linux 发行版探索项目,它结合了 Gentoo 的强大定制能力与不可变系统的现代化优势,目前处于早期筹备阶段。