2024-02-10

42 篇热帖

1. How I write HTTP services in Go after 13 years (grafana.com)

编写Go语言HTTP服务的实践总结(基于13年经验)

本文基于作者多年使用Go编写HTTP服务的实践,总结了一套注重可维护性、可测试性和清晰结构的方法。核心内容如下:

核心架构模式

  • NewServer 构造函数:为服务创建一个集中的构造函数,该函数接收所有依赖项(如logger、数据库存储)作为参数,并返回一个 http.Handler。这确保了依赖项的显式传递和类型安全。
  • 路由集中管理:建议在 routes.go 文件中映射所有API路由。这为查看服务的完整API表面提供了一个单一的入口点。
  • mainrun 分离main 函数应保持极简,仅调用 run 函数。run 函数接收操作系统基础对象(如参数、环境变量获取函数、标准输入/输出)作为参数,并返回错误。这极大地简化了测试,因为测试代码可以调用 run 来模拟完整程序的执行。

优化与技巧

  • 优雅关停:通过 context.Context 贯穿整个调用链来处理程序关停信号(如Ctrl+C)。在 run 函数中捕获信号并取消上下文,所有依赖项应尊重此上下文以便有序退出。
  • 延迟初始化:对于耗时的初始化工作(如解析模板),可以使用 sync.Once 将初始化推迟到处理程序首次被调用时,从而加快服务启动速度。
  • 统一编解码:使用辅助函数(如 encodedecode)来统一处理请求体的解码和响应体的编码。可以结合泛型来增加灵活性。
  • 数据验证:通过定义一个 Validator 接口(包含 Valid 方法),可以在解码数据时进行统一的验证,保持代码简洁。

中间件与处理器设计

  • 中间件适配器模式:中间件是接受一个 http.Handler 并返回一个新 http.Handler 的函数。建议在 routes.go 中直接应用中间件,清晰展示每个路由的中间件链。
  • 处理器工厂函数:处理器函数(handler)不直接实现 http.Handler,而是返回它。这允许在函数内部进行一次性设置工作(初始化),并为处理程序提供闭包环境。处理器特定的请求和响应类型可以定义在函数内部,保持全局空间整洁。

测试策略

  • 端到端测试优先:作者倾向于通过调用 run 函数来执行整个程序进行测试,模拟生产环境。这能测试到所有层(包括路由、中间件、处理程序和真实依赖),并减少测试间的重复。
  • 测试自包含:每个测试通过 run 获得独立的程序实例,可以传递不同的参数和模拟的环境变量。使用 context.WithCancel 并在测试结束时取消上下文以实现优雅关停。
  • 等待服务就绪:在测试中,可以通过轮询 /healthz 等健康检查端点来等待服务完全启动,而不是依赖复杂的信号机制。
  • 测试可读性:测试应讲述一个清晰的故事。例如,在测试中定义与测试用例最相关的请求类型,只包含必要字段,使测试意图一目了然。

总结

这套方法旨在创建易于阅读、扩展和维护的HTTP服务代码。它强调依赖的显式传递、关注点分离、清晰的代码组织以及强大的端到端测试。虽然在实际项目中可能需要根据团队或技术栈(如gRPC)进行调整,但其核心思想(如可测试性、清晰结构)具有普适价值。

2. Add coffee stains to LaTeX documents (2021) (ctan.org)

LaTeX 咖啡渍效果包 (coffeestains)

这是一个为LaTeX文档添加虚拟咖啡渍效果的宏包,旨在为文档增添趣味性或模拟经年使用痕迹。它通过PGF/TikZ图形系统实现,能直接在页面上生成逼真的咖啡渍图案,省去手动后期处理的时间。

主要功能与特点:

  • 核心作用:在LaTeX编译的文档页面上生成咖啡渍样式效果。
  • 实现技术:基于PGF/TikZ图形库。
  • 包含内容:提供了英文和法文文档说明。
  • 版本与许可:当前版本为0.5.1,采用公共领域软件许可。
  • 维护与分发:由Patrick Bideault维护,已被收录于TeX Live和MiKTeX发行版中。
  • 获取方式:可下载一个约493KB的压缩包获取完整内容。

该宏包属于LaTeX图形与趣味类别,适用于需要添加特殊视觉效果的文档场景。

4. Apple is lobbying against right to repair 6 months after supporting it (www.404media.co)
  • 核心事件:苹果公司一名高管公开游说,反对俄勒冈州一项强有力的“维修权”法案。
  • 立场转变:这与苹果此前在加利福尼亚州支持一项较弱维修权法案的立场形成鲜明对比。公司意图继续控制其维修生态系统的主导权。
  • 核心争议:苹果反对的关键条款是“零件配对”。苹果安全维修架构师John Perry在听证会上表示,该条款将迫使设备制造商允许使用来源不明的零件,从而破坏用户设备的安全、安保和隐私。
  • 行业分歧:谷歌已表态支持该法案,并认为自身能够轻松遵守其中的零件配对条款。这使得该立法斗争变得更加复杂和引人注目。
  • 背景:苹果在多年反对维修权后,于去年秋天转为在加州支持该权利,但此次在俄勒冈州的举动显示其态度出现反复。
5. Tenets (github.com)

Svelte 哲学信条摘要

Svelte 框架的设计基于一系列指导原则,旨在阐明其核心哲学。这些原则强调 Web 技术的重要性、用户体验优化、技术乐观主义以及社区驱动的开发方式。

核心原则

  1. Web 至关重要
    Svelte 致力于 Web 技术,认为它是至关重要的平台,但其生存并非理所当然。

  2. 优化感觉而非指标
    追求框架的最佳“感觉”,而不是单纯追求速度或大小等量化指标,以提供更符合用户审美体验的工具。

  3. 不追求流行
    目标是成为最佳框架,而非最流行的框架,即使这意味着做出与当前趋势相反的设计决策。

  4. HTML 优先
    HTML 是描述 UI 的优秀语言,Svelte 以 HTML 为中心进行增强,使其更适合描述交互式 UI,而非以 JavaScript 为主导。

  5. 拥抱技术进步
    反对悲观怀旧,对新技术持乐观态度,并积极吸收其他框架(如信号或服务器组件)的优秀想法,不断改进。

  6. 警惕指标误导
    指标可能被滥用,不应盲目追求 Lighthouse 等数值;设计时注重定性思考,而非仅依赖定量数据。

  7. 神奇而非神秘
    追求让用户感觉“神奇”的编码体验,但确保逻辑清晰,避免过度神秘化;Svelte 5 正在改进这方面。

  8. 梦想远大
    工具应能应对各种需求(如静态内容、实时应用等),鼓励大胆探索框架的潜力,即使目标可能无法完全实现。

  9. 用户友好优先
    大多数用户不关心框架细节,只想构建项目;因此设计要直观、API 简洁、易于发现,文档和教程应支持按需学习。

  10. 共识驱动设计
    Svelte 是社区驱动的项目,强调开放沟通和反馈,确保社区在项目未来中有参与权,新想法常源于社区。

这些原则共同塑造了 Svelte 的框架哲学,注重用户体验、技术演进和社区协作。

6. Semiconductor Fabrication 101 (engineering.purdue.edu)

该课程由普渡大学与英特尔、德克萨斯大学奥斯汀分校及全球领域领先合作伙伴共同提供,是一项免费在线课程,旨在帮助希望了解数字时代基础物理构件制造过程的学生和专业人士。

课程描述:课程内容涵盖全面、引人入胜的行业标准半导体制造工艺讲座,并辅以vFabLab虚拟实验室的访问与培训,以及实际设备与工艺技术的视频教程。课程旨在为学习者奠定坚实的半导体制造基础,提升创新能力、持续改进和批判性思维,使其能够在给定背景与资源下识别关键因素、确定优先级、探索交互作用并制定稳健解决方案。尤为重要的是,课程支持通过虚拟洁净室进行实践学习,学习者可随时随地使用任意设备便捷操作。

课程亮点

  • 自定进度学习,可在11-15小时内完成。
  • 包含使用先进半导体制造虚拟现实仿真系统vFabLab的实践训练。
  • 成功参与者可获得普渡大学、英特尔及德克萨斯大学奥斯汀分校联合颁发的证书。

贡献者包括来自普渡大学、德克萨斯大学奥斯汀分校、加州大学伯克利分校、斯坦福大学、佐治亚理工学院、宾夕法尼亚州立大学等知名院校的教授,以及英特尔、ASML、东京电子等企业的专家。

7. How to write stuff no one else can (thewritetoroam.com)

如何创作他人无法复制的内容

在商业与创作领域,相比竞争对手的优势主要来源于三方面:

  1. 资源优势:拥有更多资金或资源
  2. 行为优势:自然具备某种习惯或倾向
  3. 信息优势:掌握他人不知道的知识

作者认为信息优势最具韧性且可通过主动培养获得,而最大的信息壁垒在于接触特定人群——并非知名人物,而是幕后拥有深刻见解却鲜受关注的实践者。

幕后人物的价值

以蒂姆·费里斯的《每周工作4小时》为例,其成功离不开经纪人、编辑、市场总监等幕后人员的贡献。这些人物通常:

  • 拥有比名人更深入的实操经验
  • 接触门槛较低(如公开邮箱)
  • 其见解能提供差异化视角

案例:蒂姆·费里斯和瑞安·霍利迪的经纪人斯蒂芬·汉塞尔曼曾与多位畅销作家合作,其经验远超单一作者视角。

独特内容的创作逻辑

晨间酿造(Morning Brew)与The Hustle竞争时,日常报道40-60%内容重叠,因为大家都依赖相同信息源。而The Hustle的《周日故事》通过:

  • 挖掘冷门信息:深入旧报纸、 niche社群、博物馆档案
  • 聚焦幕后人物:避免采访知名人士,专注一线实践者
  • 讲述无人触及的故事:如“用好市多卡供养阿拉斯加偏远小镇的人”等独特选题

这些内容无法通过简单谷歌搜索获得,因而具有极高分享价值。

寻找关键幕后人员的方法

作者通过领英系统分析公司成长历程:

  1. 绘制公司发展时间线与关键节点
  2. 手动梳理所有员工信息(职位、部门、任期)
  3. 识别在关键转折期加入的核心成员
  4. 通过谷歌/播客搜索其公开观点
  5. 以咨询形式获取深度洞察(离职人员更愿分享)

关键技巧:采访结束时询问“您认为我还应该和谁交流?”,以此网络般展开人物关系。

核心原则

创作无人能复制的内容,关键在于探寻无人涉足的领域。通过接触被忽视的幕后人物,你能获得独特洞察,这些洞察往往只需十分钟交谈就能节省数小时调研时间。

8. Getting into robotics as a software engineer (bou.ke)

软件工程师进入机器人领域是一种从“比特世界”转向“原子世界”的高影响力转变。作者以自身从Web开发转向建筑机器人自动化的工作经历为例,指出亲手构建实体成果(如一面墙)的满足感是纯软件项目无法比拟的。面对气候变化、人口老龄化等宏大挑战,需要软件(控制系统、数据分析、计算机视觉)来赋予硬件生命,让整个系统协同工作。

与机械、电气工程师等跨学科团队合作是这段经历的核心价值之一。这不仅令人振奋,更能拓宽软件工程师的视野,使其认识到物理世界的可塑性。沟通初期虽有术语障碍,但最终能促进更深层次的协作。编程内容也更接近游戏开发,涉及3D三角学和场景图。

然而,涉及物理硬件也带来了新挑战。软件部署不能像云服务那样随意丢弃和替换状态(“宠物与牛”的模式),管理多台机器人(办公室测试机、现场作业机)及其配套软件的版本和更新异常复杂,需要精巧的工程解决方案(例如作者使用Nix进行系统配置管理)。调试时也必须考虑电缆松动等物理问题。

对于希望进入该领域的软件工程师,作者给出以下建议:

  1. 学习C/C++:这是微控制器编程的必备语言,现代C++虽不差但需遵守规范。面对嵌入式代码时,应用清晰的OOP和关注点分离原则能立刻提升代码质量。
  2. 尝试Rust:其强大的类型系统和安全性优势明显,生态系统优于C++,嵌入式支持虽仍在发展中但前景看好。
  3. 了解硬件开发流程:学习CAD和3D打印以理解同事的工作并满足好奇心;学习焊接以便进行简单维修并理解电子设备开发;如今硬件原型制作比以往任何时候都更容易上手。

总之,软件在机器人领域是核心,但需要与物理世界深度互动。作者鼓励同行跳出构建又一个娱乐性应用的循环,投身于解决实质性问题的机器人事业中。

9. Walmart, Delta, and Starbucks are using AI to monitor employee messages (www.cnbc.com)

文章摘要

大型企业如沃尔玛、达美航空、T-Mobile、雪佛龙和星巴克等,正借助初创公司 Aware 的人工智能技术,对员工在 Slack、Microsoft Teams 等工作通讯平台上的消息进行监控分析。

核心技术与应用

  • 目的:帮助企业实时了解员工情绪、识别沟通中的风险行为(如霸凌、骚扰、歧视、违规等),而非仅依赖年度调查。
  • 产品区分
    1. 分析工具:通过匿名化数据监控整体员工情绪和“毒性”内容,通常不暴露个人身份,但可按年龄、地区等维度分析群体反应。
    2. eDiscovery 工具:当检测到客户预设的“极端风险”行为(如暴力威胁、内幕交易)时,可追踪并标识具体员工姓名,供人力资源或安全部门调查。
  • 数据规模:Aware 每年处理数十亿条企业消息,使用客户数据训练其 AI 模型,以识别正常与异常模式。

争议与担忧

  • 隐私问题:尽管 Aware 声称使用匿名聚合数据,但研究表明结合元数据(如年龄、职位)仍可能识别个人,数据匿名化并非万全之策。
  • 伦理争议:专家指出此类监控可能导致“寒蝉效应”,抑制员工正常沟通,并涉及员工权利、工作公平性等 broader concerns。
  • 决策透明度:若员工因 AI 标记的内容受到处分,其知情权和申辩权可能受限,而 AI 的可解释性仍不成熟。

企业使用情况

  • 多数客户(如沃尔玛等)主要用其满足治理、风险与合规需求,占 Aware 业务的约 80%。
  • 达美航空表示同时使用其分析与 eDiscovery 工具以获取员工反馈和管理社交媒体记录。
  • Aware 称 AI 仅辅助识别潜在风险,最终决定仍由人工做出,符合公司政策与法律要求。

行业背景

此类监控是职场 AI 应用的一个快速发展的细分领域,随着生成式 AI 兴起而扩张,但引发了关于隐私、监控文化及员工权益的广泛讨论。

10. On-demand JSON: A better way to parse documents? (onlinelibrary.wiley.com)

该页面是网站用户账户管理界面,主要包括以下功能模块:

  • 导航菜单:提供对Journal、Articles和Actions的快速访问链接。
  • Cookies管理:由于浏览器禁用Cookies,页面提示用户需启用Cookies以进行身份验证和使用网站功能,并链接至隐私政策。
  • 账户操作
    • 密码更改:用户成功更改密码后,会显示“密码已成功更改”的确认消息。
    • 密码重置:用户可输入邮箱地址接收重置密码的指引,若未收到邮件则可能需要重新注册账户。
    • 用户名恢复:用户可通过输入邮箱地址找回关联的用户名,系统将发送相关指示。

整体页面侧重于用户认证与账户维护流程,无其他技术内容或文章正文信息。

11. I'm an engineer that needs to sell my services. Any good books on sales?
12. Cloud Egress Costs (getdeploying.com)

云出口费用概述

数据出口是指数据从云服务提供商网络发送到公共互联网的过程。这是一个常被忽视但可能产生高额费用的云服务成本。本文对比了众多云服务商在数据出口方面的定价,并提供了相关概念解释与成本控制建议。

主要云服务商出口费用对比

以下是部分服务商的免费额度超额费用对比(1 TB):

服务商 免费额度 1 TB超额费用
RunPod、GPUhub、Packet·ai、Civo、Lambda Labs 免费且无限制 免费且无限制
OVHcloud、Cloudflare、Gcore、Scaleway 大多数服务免费 大多数服务免费(部分有带宽限制或后续计费)
Heroku、UpCloud 2 TB/应用(软限制)、公平使用政策 非公开或带宽受限
Hetzner、Hexabyte 1-60 TB/实例、20 TB/实例 $1.16/ TB
Akamai Cloud、Oracle Cloud 1-20 TB/实例、10 TB/月 $5.00、$8.50/ TB
Backblaze、DigitalOcean、Vultr 3倍存储量、100 GB-10 TB/实例、2 TB/月 $10.00/ TB
Nebius、Exoscale、Fly.io、Cleura 免费无限制、1 TB/实例、100 GB/月、无 $15.00、$20.00、$20.00、$33.39/ TB
Railway $50.00/ TB
阿里巴巴云、Azure、AWS 10 GB/月、100 GB/月、100 GB/月 $74.00、$87.00、$90.00/ TB
Supabase、Google Cloud、Vercel 依计划而定、依服务而定、100 GB-1 TB $90.00、$120.00、$150.00/ TB
Firebase、Render、Netlify 10 GB/月、100 GB-1 TB、100 GB-1 TB $200.00、$300.00、$550.00/ TB

注:价格可能因地区等因素而异,此处选择近美东或法兰克福区域进行估算。

核心概念

  • 数据出口:数据从云提供商网络发送至公共互联网,通常按传输数据量(GB/TB)收费。
  • 数据入口:数据进入云网络,通常免费
  • 收费原因:云提供商需要为出口数据的基础设施和带宽付费,高价也可能用于抑制网络滥用或跨云大量数据迁移。

降低出口成本的方法

  1. 善用免费额度:大多数服务商提供每月一定量的免费出口。
  2. 使用内容分发网络:通过CDN缓存静态资源,减少直接从云源站下载的数据量。
  3. 数据压缩:在传输前使用Gzip、Brotli等算法压缩数据。
  4. 利用数据传输池:部分提供商允许同一账户下多个服务的传输额度共享。
  5. 设置监控告警:在使用量接近免费额度时收到通知,避免意外费用。
  6. 使用私有网络:同一数据中心或区域内服务间的数据传输可能免费(需注意NAT等网关费用)。

结论

数据出口是将数据从云环境传输到公网的必要成本,费用可能快速累积。用户在选择云服务时,应仔细评估其出口定价政策和免费额度,并结合优化策略来有效控制此项开支。

13. Broken VPNs, the Year 2038, and certs that expired 100 years ago (www.theregister.com)

案例背景

2010年底,IT支持专家Zimmie接到美国大型零售商客户的求助电话,其VPN设备在周末突然停止工作。该设备由Zimmie雇主的中央服务器管理,服务器运行自己的证书颁发机构(CA),用于为设备签名证书以进行相互认证。

问题描述

  • 故障现象:VPN设备因证书验证失败而无法工作,具体原因是无法下载证书吊销列表(CRL)。
  • CRL异常:CRL分配了512 KiB存储空间,但实际大小接近1MB(正常情况中值仅为51KB)。调查发现,CA每秒都在吊销并重新颁发所有证书,导致CRL每天增长超过250 KiB。
  • 证书有效期错误:CA自身的证书显示有效期从2037年开始到1910年结束,这意味着证书从未有效。CA在重新颁发证书时重复使用相同的无效日期。

根本原因分析

  1. UNIX时间2038问题
    • UNIX系统使用32位有符号整数表示时间(秒数自1970年1月1日起),最大可表示时间为2038年1月19日03:14:07 UTC。
    • 超过此时间后,整数溢出为负数,时间跳回1901年12月13日。CA在计算证书有效期时触发此问题,导致日期错误。
  2. NTP客户端缺陷
    • 设备使用NTP协议同步时间,但NTP客户端允许不合理的大幅时间调整(如数十万秒)。
    • NTP服务器可能因C语言符号错误,将负数时间差(如小负数)误解释为无符号整数,导致时间跳跃至2037年左右。
  3. 连锁反应
    • CA认为系统时间是2037年,因此将证书有效期设置为从2037年开始(溢出后至1910年)。
    • 证书过期后,CA不断重复吊销和重新颁发证书,但自动更新代码未修正起始日期,导致问题持续。

恢复与教训

  • 恢复过程:由于VPN连接中断,需派遣技术人员物理访问约一百个站点以重建新CA信任。
  • 技术教训
    • 小错误(如时间表示缺陷)可引发大规模故障。
    • 故障排除需依赖日志分析、包捕获和科学假设验证。
    • 类似NTP实现问题虽不常见,但在2038年临近时需保持警惕。
  • 故事意义:该案例展示了复杂问题如何分解为可理解的组件,并强调基础编程错误在现实中的影响。
14. Toolong: Terminal application to view, tail, merge, and search log files (github.com)

Toolong 是一款终端应用程序,用于查看、跟踪(tail)、合并和搜索日志文件(包括 JSONL 格式)。

主要功能:

  • 实时跟踪:支持实时跟踪日志文件更新。
  • 语法高亮:自动高亮常见 Web 服务器日志格式。
  • 高效处理:能够像处理小文件一样快速打开数 GB 的大文件。
  • 格式支持:支持 JSONL 文件,并能以美观的格式打印每一行;自动打开 .bz.bz2 压缩文件。
  • 日志合并:可通过自动检测时间戳来合并多个日志文件。

开发背景: 开发者基于自身作为 Web 开发者通过 SSH 使用 taillessgrep 等工具分析服务器日志的经验,创建了 Toolong。旨在提供一个响应迅速、直接易用、能自动处理繁琐工作的工具。

安装与使用:

  • 推荐通过 pipx 安装,也可使用 pip(建议在虚拟环境中安装)。安装后将添加 tl 命令。
  • 支持 Linux、macOS 和 Windows 系统。
  • 可通过命令行参数打开一个或多个文件(多文件以标签页形式打开),使用 --merge 选项可合并多个文件为单一视图。
  • 支持通过管道(pipe)接收数据,从而跟踪来自其他进程的输出。

其他信息:

  • 项目开发状态稳定(v1.0.0),具备核心功能,未来可能增加更多特性。
  • 开发者感谢了参考过的 LogMerger 项目。
  • 提到了 lnav 作为更成熟的类似工具替代品。
15. The Tears of a Clown: Probing the comedian's psyche (2008) (www.psychologytoday.com)

《小丑的眼泪:探究喜剧演员的心理》摘要

本文探讨了专业喜剧演员的心理特质、成长背景与动机。多项研究表明,喜剧演员往往智力超群,但童年常伴随孤独、焦虑与情感匮乏,这促使他们将幽默发展为一种心理防御机制和获取关注的手段。

喜剧演员的起源与背景

研究指出,喜剧演员通常来自较低的社会经济阶层。他们在学校时就表现出“班级小丑”的倾向,且较早承担家庭责任。家庭动态是关键因素:

  • 母亲角色:他们常将母亲描述为控制欲强、非慈爱且挑剔,而将父亲视为较温和的一方。这种环境迫使他们学会“解读”母亲,进而发展出敏锐观察外界矛盾与寻求认可的能力。
  • 家庭距离感:与家庭的疏离和缺乏凝聚力,可能赋予他们观察生活的独特视角,而这正是幽默的源泉之一。

动机:应对荒诞与掌控感

喜剧演员的创作动机复杂:

  • 理解生活荒诞性:早期经历让他们意识到生活的荒谬,喜剧成为他们理解并表达这种荒诞、从而掌控自身痛苦经历的方式。
  • 隐藏与防护:他们常将笑话作为“屏幕”,在访谈和测试中更倾向于描述隐藏、伪装的主题,以此掩饰内心的脆弱。
  • 应对“渺小感”:许多喜剧演员自尊较低,并怀有深刻的“渺小感”。他们的行为常致力于缩小自己与他人之间的差距,无论是通过贬低还是夸张。这种负面自我认知反而可能成为他们塑造独立身份的基础。

自我认知:治疗者与控制者

喜剧演员普遍将自己视为“治疗者”或“小丑祭司”,肩负着让人们发笑的利他使命。然而,他们也将幽默视为一种控制和主导观众的技巧。这种双重角色延续了历史上宫廷弄臣的传统:表面滑稽娱乐,实则揭示常人忽略的真相。

结论

综上所述,专业喜剧演员的幽默深深植根于其早年家庭经历和情感挣扎。它既是一种应对机制,帮助他们处理焦虑与寻求认可;也是一条探索自我与理解世界荒诞性的途径。正如写作常被视作解决问题的方式一样,喜剧创作也成为他们厘清自身经历、并试图以可控的方式影响观众情感的独特途径。

16. Spreadsheet "breaks" Apple Vision Pro eye-tracking (kguttag.com)

文章总结了作者对苹果Vision Pro(AVP)进行“通过光学镜片”拍摄测试的早期发现,重点揭示了其眼动追踪与注视点渲染(foveated rendering)在某些情况下会导致视觉伪影问题。

作者首先尝试拍摄通过AVP光学镜片的照片,这本身具有挑战性,因为AVP会基于眼动追踪动态调整分辨率并校正色差,以优化显示效果,使得摄像头捕获的画面与人眼所见可能不同。

在使用AVP原生的Excel应用进行测试时,作者发现了显著问题。显示黑色背景上的白色文字和线条时,画面会出现跟随眼动移动的方形区域闪烁。作者强调这是通过肉眼直接观察到的问题,并非摄影或录屏 artifact。他认为,这是AVP“过于智能”的体现——其眼动追踪和注视点渲染技术在处理此类高对比度静态内容时出现了错误。

文章进一步分析,该问题凸显了AVP显示器的实际分辨率低于人眼分辨率。在闪烁区域,可以观察到抗锯齿产生的“扭曲绳纹”波纹效果。注视点渲染虽然旨在通过中心高分辨率、周边低分辨率的方式优化性能,但当其判断错误时,反而会在高分辨率与低分辨率区域的边界处产生更明显的、跟随眼动的亮度与清晰度突变,加剧了视觉不连贯感。作者认为,更平滑的全图渲染方式可能比这种带有明显边界的注视点渲染更适合处理类似电子表格的内容。

通过使用不同相机和镜头拍摄的“通过光学镜片”照片,作者观察到了分辨率从中心向外逐渐下降的现象,这初步支持了注视点渲染的存在,并且可能与闪烁问题的边界相对应。

最后,作者总结指出,此次在Excel应用中轻易复现的问题很可能在其他场景中出现。问题的核心在于AVP的显示分辨率并未达到苹果所宣称的“视网膜”级别,而其复杂的渲染技术在某些情况下可能适得其反,产生视觉瑕疵。虽然这可能源于软件Bug或移植问题,并非不可改善,但根本上受限于显示器的物理分辨率。

17. Extending Rust's Effect System (blog.yoshuawuyts.com)

本文是RustConf 2023演讲《扩展Rust的效果系统》的转录。演讲核心论点是:Rust自1.0起已包含一个未明确称谓的“效果系统”(如?constasync/.await),为完成其集成并避免API重复爆炸,需要引入“效果泛型”。

核心问题:无泛型导致的API爆炸

  • 若无泛型,为所有类型组合编写io::copy等函数将产生巨大代码量(如标准库中18种Reader与27种Writer需486个函数)。
  • 效果:指asyncconst?try)、unsafe等关键词及关联类型(如Result),它们改变代码语义。
  • 效果不匹配(或函数染色问题):导致使用效果时体验不佳,例如在Option::filter闭包中无法使用?,或Debug trait无法异步写入。
  • 为每个效果(如async)创建副本trait(如AsyncDebug)会导致API指数级膨胀(如Fn系trait在5种效果下可产生96种变体)。

解决方案:效果泛型

效果泛型允许函数、trait和类型根据效果(如async)参数化,避免代码重复。

阶段一:效果泛型Trait定义

  • 允许trait方法(如Into::into)可选支持async等效果,实现者可选择实现同步或异步版本。
  • 通过属性(如#[maybe(async)])标注,实现向后兼容,底层可脱糖为const bool和关联类型。

阶段二:效果泛型Bound、Impl与类型

  • 函数(如copy)和类型(如File)也可泛型化效果,使其自动适配效果变体。
  • 调用点通过推断(如使用.await)或显式指定(如copy::<async>)选择效果。
  • 内部实现:对于函数,同步版本移除.await;对于类型,可通过条件编译(如IS_ASYNC)分支代码。

效果的本质与现状

  • 效果类型:函数语义的许可标注(如async允许await,const允许编译期计算)。
  • Rust现有五种效果:asyncunsafeconsttry(不稳定)、generator(不稳定),处于不同完成度。
  • 效果分为:
    • 携带型:脱糖为实际类型(如async fn返回impl Future)。
    • 非携带型:仅向编译器传递信息(如constunsafe)。
  • 携带型效果组合有固定顺序(如async fn返回Future<Output = Result<T, E>>)。
  • 隐式效果集:所有函数都携带效果集(如std函数与const函数效果集不同)。

未来扩展与效果别名

  • 效果泛型可降低新效果引入成本,如trygenerator及潜在新效果:
    • 无发散:保证函数不无限循环,支持静态运行时开销分析。
    • 无恐慌:保证函数不产生panic。
    • 参数性:保证函数仅操作其参数。
    • 能力安全:保证不向下转型抽象类型。
    • 析构器线性性:保证Drop总会被调用。
    • 模式类型不可移动类型等。
  • 效果别名:可为常用效果组合(如const = diverge + panic)提供简明名称。

实施路径

  • 形式化建模:通过MIR Formality形式化效果泛型。
  • 编译器重构:将const检查移至HIR层面,便于泛化到其他效果。
  • 后续计划:预计2024年起草效果泛型Trait定义的RFC。

总结

Rust已隐含效果系统,但缺乏效果泛型导致API重复与体验粗糙。效果泛型作为关键解决方案,可通过语法糖形式(基于const泛型)实现,旨在标准化现有效果集成、降低代码重复并支持未来效果扩展。

18. Seiji Ozawa 1935-2024 (bostonclassicalreview.com)

小泽征尔(1935-2024)

小泽征尔,曾任波士顿交响乐团(BSO)音乐总监长达29年(1973-2002),于2024年2月6日去世,享年88岁。逝世时,他仍是该乐团的荣誉音乐总监。

生平与职业生涯

  • 出生:1935年9月1日生于中国东北(时为日本傀儡政权“满洲国”)奉天。
  • 早年经历:1944年回到日本,学习钢琴。后因手伤转向指挥,并在音乐学校深造。
  • 成名:1959年赢得国际指挥比赛一等奖,由此崭露头角。
  • 北美生涯:比赛后受邀前往坦格伍德,并获库谢维茨基杰出学生指挥奖。曾担任伦纳德·伯恩斯坦和赫伯特·冯·卡拉扬的助理(1960-1961)
  • 主要职位:先后担任旧金山交响乐团(1962年首个美国专业职位)、多伦多交响乐团、拉维尼亚音乐节的音乐总监,后接任威廉·斯坦伯格执掌波士顿交响乐团。

在波士顿交响乐团的贡献

  • 任期:1973年至2002年,是乐团历史上任期最长的音乐总监之一。
  • 推动乐团发展
    • 将乐团带入“全球时代”,积极委约当代作品、增加录音及广播电视演出、举行历史性巡演
    • 保留乐团标志性优美音色的同时,拓展曲目至奥利维耶·梅西安、亨利·迪蒂耶、武满彻等作曲家的作品。
    • 监督了梅西安歌剧《阿西西的圣方济各》的世界首演等里程碑式演出。
  • 文化象征
    • 1979年率乐团访华(时值中国对外开放初期)。
    • 1998年日本长野冬奥会开幕指挥全球联演贝多芬《欢乐颂》。
    • 1999年除夕在埃菲尔铁塔下现场演出。

艺术成就与特点

  • 表演风格:以激情洋溢、记忆力惊人、指挥技巧流畅著称。
  • 录制与奖项
    • 出版了包括巴托克、柏辽兹、普罗科菲耶夫、拉威尔、武满彻及完整马勒交响曲系列在内的众多优秀唱片。
    • 获得两项艾美奖(1976年、1994年)。
  • 后期活动
    • 2002年后持续活跃,担任维也纳国家歌剧院音乐总监(2002-2010),并创立东京歌剧院(2005)。
    • 晚年因健康问题减少公开活动,但于2016年出版了与作家村上春树的对话录《绝对音乐》
    • 最后一次指挥是2022年11月22日,指挥斋藤纪念乐团演出贝多芬《埃格蒙特序曲》,并直播至国际空间站。

纪念与评价

  • 逝世后,波士顿交响乐团及全球多个音乐机构(包括柏林爱乐、维也纳爱乐、巴黎歌剧院、卡内基音乐厅、各大唱片公司等)纷纷致哀。
  • 波士顿交响乐团现任音乐总监安德里斯·尼尔森斯称其为“世界上最伟大的指挥家之一”,赞扬其“对音乐毫不妥协的热爱与对音乐家的尊重”。
  • 波士顿交响乐团总裁兼首席执行官查斯·史密斯表示,小泽对“卓越、教育与服务的承诺”将继续指引乐团迈向2031年150周年纪念。
20. Building the DirectX shader compiler better than Microsoft? (devlog.hexops.com)

DirectX着色器编译器(DXC)的改进与跨平台解决方案

背景与问题

  • DirectX着色器编译历史:微软的DirectX图形API使用HLSL作为着色语言。旧版编译器FXC(随Direct3D 11及之前版本)以编译慢、代码生成效率低著称。
  • DXC编译器的引入:Direct3D 12及Shader Model 6.0引入新编译器DXC,它是基于LLVM/Clang 3.7的微软分支(Microsoft/DirectXShaderCompiler)。DXC输出DXIL格式的字节码,这是一种未文档化的LLVM 3.7后端优化后的比特码,需专有库dxil.dll进行签名验证。
  • 核心痛点
    • 构建系统复杂:微软的LLVM分支维护困难,CMake构建系统无法轻易编译为静态库,因其依赖动态加载DLL(dxcompiler.dlldxil.dll)。
    • 专有依赖dxil.dll闭源签名库,用于验证着色器。缺少它则着色器无法在非开发者模式的Windows上运行,且微软仅提供Windows(x86/ARM)和Linux(x86)的二进制文件,缺乏macOS和Linux aarch64支持,阻碍跨平台离线编译。
    • WebGPU等框架的挑战:WebGPU通常将WGSL转换为HLSL再编译为DXIL,但因上述问题,许多项目(如Bevy)默认使用旧版FXC或被迫动态链接DXC。

解决方案:Mach引擎的改进

Mach引擎团队为构建跨平台图形API(sysgpu,支持Metal/Vulkan/Direct3D/OpenGL),对DXC进行了深度改造:

  1. 重写构建系统

    • 放弃原CMake系统,用Zig的build.zig重构,简化依赖和构建逻辑。
    • 生成预编译静态库,消除对DLL的链接需求。
  2. 修改C++代码,移除DLL依赖

    • 模拟DLL入口点(如dllmain)和动态函数加载逻辑。
    • 绕过dxcompiler.dlldxil.dll的加载要求,实现完全静态编译
  3. 绕过专有签名机制

    • 消除对dxil.dll的依赖。实测表明,在macOS上编译的DXIL字节码与Windows上编译的结果字节级一致,且无需签名即可在标准Windows设备运行。

成果与特性

  • 跨平台静态库支持:首次在macOS(Apple Silicon和x86_64)、Linux(x86_64和aarch64)、Windows(x86_64和aarch64,含MinGW/GNU ABI) 上提供预编译静态二进制文件。
  • 简化集成:提供C API和Zig API,替代传统COM接口。Zig用户可通过预编译二进制快速集成。
  • 开源构建:项目开源(hexops/mach-dxcompiler),支持从源码构建(需Zig和Git)。

局限性与注意事项

  • 平台支持不完整:Windows MSVC ABI支持尚有缺陷;Linux musl二进制未充分测试。
  • 功能范围不支持SPIRV输出(Mach引擎计划使用Zig作为着色语言);暂未适配最新Shader Model 6.7。
  • 维护风险:项目主要为解决Mach引擎自身需求而开发,由单人维护,可能随未来需求变化而弃用。

意义

该工作为游戏开发者提供了更轻便、跨平台且无专有依赖的DXC编译方案,降低了集成DirectX 12着色器编译的门槛,尤其利于WebGPU等跨平台框架。作者呼吁社区支持其持续开发。

21. Privacy focused platform Skiff is joining Notion, Skiff to be sunset (www.notion.so)

Skiff加入Notion并停止服务

公告内容: 隐私优先的工作空间平台Skiff正式加入Notion,其产品将逐步关闭(sunset)。Notion联合创始人Akshay与Skiff联合创始人Andrew Milich、Jason Ginsberg进行了对话,探讨了两家公司的起源与共同愿景。

Skiff的创立背景:

  • Andrew在研究生时期因旅行中受限的工具而萌生创建Skiff的想法,旨在应对跨语言、时区及安全约束的工作挑战。
  • Jason当时在Apple Vision Pro团队工作,这段经历让他意识到数字设备已不再是机器,而是个人生活与体验世界的深度延伸。他应Andrew邀请加入,两人于2020年4月1日(疫情期间)正式创立Skiff。
  • 公司核心目标是赋予用户对工作方式更多的控制权与知情权,强调清晰沟通对于构建产品和创造事物的重要性。

Notion对Skiff的关注与发现过程:

  • Notion联合创始人Akshay表示,自Skiff推出Docs产品起便关注其进展,并对其产品的细节设计印象深刻。
  • 几个月前,Akshay与Ivan再次讨论起Skiff,在体验其产品后,发现Skiff办公室竟位于Notion早期所在的旧址(旧金山Mission区Capp街的一个工业风格空间),两家公司甚至共用部分历史家具与照片。

两家公司的共同理念与价值观:

  • 双方均认为现有工具未能充分满足用户需求,致力于构建赋能用户、提升工作效率的互联工作空间。
  • 两家公司创始人在首次会面中感受到彼此使命与价值观的高度契合,Akshay形容Skiff团队让他想起十年前的Notion。
  • 双方均注重产品质量与用户体验,认为工具应体现设计者的深思熟虑,并希望通过结合现代技术来应对当今世界的复杂性与噪音。

后续计划: Notion欢迎Skiff团队加入,并期待共同探索设计新一代生产力工具。

22. Espressif ESP32: Breaking HW AES with Power Analysis (2023) (raelize.com)

ESP32硬件AES引擎的功耗分析攻击研究

攻击背景

侧信道攻击(SCA)利用设备在运行时泄露的时序、功耗或电磁辐射等信息来提取加密密钥。即使AES等强加密算法,在没有防护措施的情况下也易受攻击。本文研究受Ledger公司先前研究的启发,针对ESP32芯片的硬件AES引擎实施功耗分析攻击。

实验设置

  • 测试应用:通过ESP32内置ROM API与硬件AES引擎交互,使用GPIO引脚触发并同步示波器测量。
  • 功耗域:AES引擎由VDD3P3_CPU供电域供电。为精确测量,设计了专用开发板,将相关信号引出至独立引脚。
  • 测量设备:使用Riscure电流探头测量VDD3P3_CPU功耗,配合Picoscope 3206D示波器。电流探头具有低阻抗和高灵敏度优势。
  • 控制框架:使用Riscure FiPy框架控制数据采集流程。

攻击过程与方法

1. 数据采集与相关性分析

  • 输入/输出相关性:采集100万条功耗轨迹,分析输入/输出数据与功耗的相关性,确定AES操作发生在触发信号后的150-180微秒内。
  • 已知密钥相关性分析:使用Riscure Inspector软件,分析中间值的汉明重量(HW)泄漏模型。发现S-Box输出的汉明重量在触发后约1.6微秒(采样点400附近)存在显著泄漏。

2. 密钥提取攻击

  • 已知密钥分析:用于确定提取完整密钥所需的最小轨迹数。
    • 5万条轨迹:未能提取全部密钥字节,部分字节排名较低。
    • 20万条轨迹:成功提取全部16个密钥字节,所有正确字节均排名首位。
  • 首次顺序分析(模拟真实攻击场景,密钥未知):
    • 5万条轨迹:通过部分猜测与暴力破解结合,可提取密钥。
    • 20万条轨迹:无需暴力破解,直接提取完整密钥。

攻击速度优化

为减少数据采集时间,采取以下优化:

  1. 快速采集模式:使用Picoscope的Rapid Block Mode,一次通信测量多次加密操作,减少通信开销。
  2. 单点采样:仅采集泄漏显著的采样点(如采样点410),减少数据量。
  3. 本地生成输入数据:利用ESP32的硬件SHA1引擎生成伪随机输入,避免频繁传输数据。

最终结果

  • 优化后采集:20万条轨迹仅需约16秒完成采集。
  • 分析时间:使用Riscure Inspector分析约1分钟,使用Jlsca工具包分析仅需约10秒。
  • 总攻击时间:从数据采集到密钥提取,全程约25秒,无需暴力破解。

结论

ESP32硬件AES引擎未采用任何防护措施,易受功耗分析攻击。现有工具和知识降低了攻击门槛。通过针对性的优化,攻击效率大幅提升,凸显了在嵌入式设备中实施加密防护(如随机掩码、噪声注入等)的重要性。后续研究将探索电磁辐射分析攻击。

23. BirdLingo: A birdsong learning game (jessicalieb.itch.io)

BirdLingo:鸟类鸣叫学习游戏

游戏简介
BirdLingo 是一款旨在帮助玩家提高鸟类鸣叫识别技能的教育类游戏。玩家将在可爱轻松的氛围中,学习欧洲44种最常见鸟类的叫声。

基本信息

  • 平台与获取:游戏免费,已登陆 Google Play 和 Steam,即将上线 App Store。
  • 版本:当前版本为 v1.01(发布于2024年6月10日)。
  • 状态:已发布,支持 HTML5 平台。
  • 评分:获得 4.8 星评价(基于52个评分)。
  • 作者:Jessica Liebing。
  • 类型:教育类游戏。
  • 开发工具:使用 Construct 引擎制作。
  • 标签:动物、鸟类、可爱、感觉良好、免费、自然、放松、短篇、单人。

开发动态
游戏于2024年6月7日发布了 v1.0 版本更新。

更多信息
可访问官方网站 birdlingo.com 了解详情。

24. FAA says 737 MAX operator discovered loose bolts in rudder system in December (thehill.com)
25. Power of small optimizations (maksimkita.com)

微小优化的力量

优化层级概述

  • 架构级优化:对应用整体设计进行优化,影响最大。
  • 算法和数据结构级优化:选择合适的算法和数据结构。
  • 源码级优化:具体的代码实现层面优化,通常代码改动较小但可能实现难度高。

高层级优化通常比低层级优化影响更大。若架构或算法选择不当,低层级优化的效果有限。源码级优化不一定复杂,清晰简洁的代码往往也能带来良好性能。良好的组件隔离有助于安全地修改内部实现。

如何寻找优化点

  • 持续性能分析:在生产和开发环境中分析应用,使用 perf-top、火焰图等工具识别热点函数。
  • 保持好奇心:即使已优化的部分也可能存在进一步优化空间。
  • 优先优化关键路径:从执行时间最长的部分开始,但也不要忽视占比小(如3-5%)的区域,多项小优化累积可产生整体显著提升。
  • 关注多线程应用的单线程阶段:如排序/聚合的最终合并阶段,这些无法随线程扩展,优化收益巨大。

算法和数据结构选择示例

  • 使用混合算法:根据数据量切换算法(如数据量小用简单算法,量大用高效算法)。
  • 利用运行时统计数据:根据数据分布特性(如基数)选择算法。
  • 进行特化:针对特定数据类型优化(如对整数排序使用基数排序,但对近乎有序的数据使用 pdqsort 可能更快)。

源码级优化示例

  • 避免内存拷贝和不必要的分配。
  • 调整数据布局以减少内存使用和提升缓存局部性。
  • 使用手动 SIMD 指令或循环展开。
  • 将性能测试纳入 CI/CD 管道,以验证优化效果并检测性能回退。

ClickHouse 实战示例

背景与问题分析

  • 在优化涉及大量字符串列的查询时,通过性能分析发现 20-40% 的时间花费在字符串反序列化(deserializeBinarySSE2)。
  • perf-top 和汇编分析显示,主要瓶颈在于 PODArray::resize 函数调用未被内联,且内部又调用了 PODArrayDetails::byte_size,导致较高的调用开销。

优化方案

  • 原代码:在循环内调用 data.resize(offset) 进行调整。
  • 优化后:改为在必要时按 2 的幂次方扩大缓冲区,并使用 resize_exact 精确分配内存:
    if (unlikely(offset > data.size()))
        data.resize_exact(roundUpToPowerOfTwoOrZero(std::max(offset, data.size() * 2)));
    
    此改动减少了频繁的小规模调整和函数调用开销。

优化效果

  • 查询性能提升:针对测试查询,处理时间从 0.855秒 降至 0.691秒,吞吐量提升约 24%
  • CI/CD 性能测试:多个涉及字符串处理的查询平均提速 10-20%,个别查询提速高达 60%。 示例数据:
    • SELECT count() FROM empty_strings ...: 0.449s → 0.27s (提速 ~66%)
    • anyHeavy(...) 类查询: 0.088s → ~0.066s (提速 **33%**)

结论

显著性能提升不仅来自高层级复杂优化,也可能源于针对具体任务选择更优的算法/数据结构,或通过细致的源码级微小优化实现。持续的性能分析、对小优化点的重视以及累积效应,是提升应用性能的关键。

26. LubeLogger: Self-hosted, open-source vehicle service records and tracker (github.com)

LubeLogger:自托管的开源车辆维护记录与追踪工具

工具概述

LubeLogger 是一个自托管、开源、基于网页的车辆维护和燃油里程追踪器。其核心目标是帮助用户摆脱使用自制电子表格或管理纸质收据的麻烦,提供更结构化、数字化的车辆记录管理方案。

主要特点

  • 完全开源与自托管:用户可以在自己的服务器上部署和运行,拥有数据的完全控制权。
  • 网页端界面:通过浏览器即可访问和使用,方便随时随地记录和管理。
  • 功能聚焦:专注于车辆维护记录燃油里程(油耗) 的追踪与分析。

获取与部署方式

LubeLogger 提供了灵活的部署选项:

  1. Docker 镜像:适合熟悉容器化技术的用户,便于快速部署和管理。
  2. Windows 独立可执行文件:为 Windows 用户提供更简单的安装方式。
  3. Kubernetes 部署:通过由 Anza-Labs 提供的 Helm Chart,支持在 Kubernetes 集群中进行部署,适合更复杂的生产环境。

官方提供了详细的《快速入门指南》来指导用户进行下载和安装。

文档与支持

  • 文档:项目提供官方文档以供查阅。
  • 故障排除指南:帮助用户解决常见问题。
  • 问题搜索:鼓励用户在提交新问题前,先搜索现有的问题列表,以避免重复。
  • 演示:项目提供了一个每20分钟重置一次的在线演示(使用用户名“test”,密码“1234”),方便用户在下载前体验功能。

技术栈与依赖

LubeLogger 的开发依赖了多项开源技术,主要包括:

  • 前端/界面:Bootstrap, Bootstrap-DatePicker, SweetAlert2, Masonry, Chart.js, QRCode-Generator
  • 后端/数据库:LiteDB, Npgsql
  • 其他工具:CsvHelper, Drawdown, MailKit

许可与支持

  • 许可证:项目采用宽松的 MIT 许可证
  • 项目支持:用户可以通过项目指定的“Funding”页面为项目提供支持。
27. Mixed reality gone in Windows 11 Insider Preview Build 26052 (blogs.windows.com)

Windows 11 Insider Preview Build 26052 更新摘要

本次更新(Build 26052)向 Canary 和 Dev 渠道发布,主要变化包括新功能引入、重大功能弃用以及多项系统改进。Dev 渠道已从 23000 系列构建切换至 26000 系列,与 Canary 渠道暂时接收相同构建。

主要新功能

  1. Sudo for Windows:新增命令行权限提升工具。用户可在“设置 > 系统 > 开发者”中启用,并选择三种运行模式:在新窗口中运行、禁用输入运行或内联运行。
  2. 助听器支持增强:为支持蓝牙 LE 音频的助听器提供更细致的控制,包括调整音频预设、环境声音,并改进了“蓝牙和设备”设置页面。
  3. 音频麦克风测试工具:可在“设置 > 系统 > 声音”中测试默认模式和通信模式的音频处理差异。

重大变更与弃用

  • 版本号更新:Canary 和 Dev 渠道的版本信息将显示为 Windows 11 24H2,标志着本年度功能更新。
  • Windows Mixed Reality 停用:从本版本起,插接 Windows Mixed Reality 头戴设备将无法工作。Mixed Reality Portal 应用及相关的 SteamVR 支持已弃用。现有设备若停留在 Windows 11 23H2 版本,可在 2026 年 11 月前继续与 Steam 配合使用。此变更不影响 HoloLens。
  • Microsoft Defender Application Guard (MDAG) 停用:不再作为可选功能提供。

系统改进

  • Copilot 体验测试:尝试在复制文本后显示 Copilot 图标动画,提供快速操作(如总结、解释)。拖放图片至任务栏 Copilot 图标可启动 Copilot。此功能已暂停推出以修复错误。此外,正在部分设备上测试开机自动启动 Copilot。
  • 任务栏与系统托盘:更新了桌面电脑(无电池)的节能图标。
  • 文件资源管理器:多标签窗口的预览缩略图标题将注明包含多个标签。
  • 蓝牙:设备发现流程简化,默认显示常见设备类型,发现不常见设备时提供“显示所有设备”选项。
  • 图形:推出新的“颜色管理”设置页面(设置 > 系统 > 显示 > 颜色管理),替代旧的控制面板。
  • 注册表编辑器:支持将搜索范围限制在当前选定的键及其子项。
  • 开发者 API:引入“电力网格预测 API”,帮助应用将后台任务转移至可再生能源更充足的时段;新增节能器通知回调设置。
  • 安全:开发者可通过“下一代加密 API (CNG)”框架利用基于虚拟化的安全性 (VBS) 保护 Windows 密钥。
  • 设置:改进了存储池的 UI;Wi-Fi 属性页中 Wi-Fi 密码显示位置上移;可通过打印机设置启用“Windows 保护打印模式”。
  • 其他:调整了慢速充电器通知文本;可通过相机应用扫描 Wi-Fi 二维码快速连接网络。

修复与已知问题

修复:解决了多显示器配置显示冻结、DWM 渲染问题、安装失败、打印队列无法打开、文件资源管理器启动性能以及系统托盘崩溃等问题。快速设置中的音量滑块再次伴有声音。 已知问题

  • 部分热门游戏可能在本版本上无法正常运行或导致绿屏崩溃。
  • 部分 Microsoft Store 视频流应用内容可能无法播放。
  • 可能出现黑屏问题(可尝试 Win+Ctrl+Shift+B 解决)。
  • 设置中的“显示连接”部分错误显示,点击会导致设置崩溃。
  • 重要:拥有 Dev Drive 的用户若需回滚,必须在回滚前备份数据,否则 Dev Drive 将损坏并丢失数据。

计划说明与提醒

  • Canary 和 Dev 渠道目前接收相同构建是暂时的,未来 Canary 渠道将跃升至更高的构建系列。
  • 这些渠道的功能通过受控功能推出技术逐步上线,部分功能可能仅用于测试而不会正式发布。
  • 退出 Canary 或 Dev 渠道需要执行 Windows 11 的干净安装。
  • Copilot 体验目前仅在特定全球市场逐步推出。
28. Brplot – plotting app/lib in C (github.com)

Brplot - C语言编写的绘图应用/库

Brplot 是一个用 C 语言编写的轻量级绘图应用程序和库,旨在提供一种更好的替代方案(标题中 “brplot” 意为 “better rlplot”)。它既能作为独立的命令行应用运行,也能作为库集成到其他项目中。

核心功能

  1. 双模式运行

    • 应用程序:从标准输入读取数据并实时绘图。支持多种数据源,如用户输入、命令序列、网络套接字(UDP/TCP)以及系统监控数据(如CPU温度、内存使用率)。
    • :提供 C、Python 和 JavaScript (WASM) 的绑定,允许开发者将绘图功能直接嵌入自己的程序。
  2. 输入格式:数据格式为 [[x-value],]y-value[,[z-value]][;[line-index]],灵活支持指定坐标点、分组和自定义提取规则。

    • 支持命令行参数控制视图(如缩放、偏移)。
    • 提供强大的 --extract 命令,通过类似正则表达式的字符串从复杂文本中提取数据点。
  3. 交互控制:提供丰富的鼠标和键盘操作来交互式控制图表,包括:

    • 平移、缩放(支持单轴)。
    • 跟踪最新数据点。
    • 添加、清除、隐藏数据线。
    • 切换2D/3D视图、截图、调试视图等。

使用方式

  • 作为应用程序:通过管道将数据传递给 brplot。例如:
    • seq 100 | brplot 绘制1到100的数字。
    • while :; do ... done | brplot 实时监控系统指标。
    • 可以启动一个监听特定端口的实例(如42069),接收网络数据。
  • 作为库
    • C语言:通过包含单个头文件 brplot.h 使用,提供 brp_1, brp_2, brp_flush 等函数。
    • Python:通过 import brplot 使用,可轻松绘制列表或模拟数据。
    • JavaScript:通过导入模块在浏览器中使用,与HTML Canvas集成。

编译与安装

Brplot 使用自定义构建工具。编译后,它是一个单独的可执行文件,可以使用系统命令(如 install)安装到指定目录(如 /usr/bin/brplot)。

项目状态与截图

文档展示了该项目从2023年至2026年的历史截图,记录了其图形界面的演变过程。

许可证与依赖

项目采用 MIT 许可证,并依赖于第三方库(具体列表在原文末尾,但未在此展开)。

30. Carl Griffith's 1847 Oregon Trail Sourdough Starter (carlsfriends.net)

Carl Griffith's 1847 Oregon Trail Sourdough Starter 获取指南

本文档提供了获取 Carl Griffith 历史悠久的酸面团酵头(Sourdough Starter)的详细说明。该酵头由志愿者维护和分发,旨在延续 Carl Griffith 的传统,免费分享。

一、 获取方法

  • 美国居民:
    1. 需准备两个信封:一个是用于回寄的 #10 商用尺寸信封(约 9.5 x 4.1 英寸),上面需预先写好自己的回邮地址并贴足邮资(78美分或1盎司1等邮票的“永久”邮票)。
    2. 将这个准备好的回邮信封装入第二个寄送信封中,邮寄至指定地址:Oregon Trail Sourdough, P.O. Box 337602, Greeley, CO 80633, USA。
    3. 严格遵守信封尺寸要求(宽不小于8英寸/20厘米),且回邮信封内不能为空(必须包含邮资)。未遵循指令将导致延误。
    4. 由于请求数量巨大,每个地址仅限申请一份。可复活后与家人分享。
  • 其他国家居民:
    1. 需在信封中放入 1.70 美元邮资两张一美元钞票作为替代,并附上地址和“Send Starter”指令。
    2. 也可选择通过 PayPalsourdough@carlsfriends.net 支付 2 美元(覆盖邮费),并发送电子邮件告知邮寄地址。
    3. 重要:仅接受美国邮票和美元现金,无法使用国际回信券(IRC/UPU)或外币。

二、 费用与捐赠

  • 酵头本身完全免费。偶尔收到的自愿捐赠用于抵消分发和生产的成本,以维持免费传统。可通过现金或同一 PayPal 地址捐赠。

三、 酵头与资料

  • 您将收到一份半干的酸面团酵头(约一茶匙量),由小麦粉、水和天然酵母菌、乳酸菌组成。
  • 随信可索取 Carl 的原始说明书(Brochure),其中包含一些现代不推荐的做法(如添加牛奶、土豆或商业酵母)。
  • 官方网站提供最新的复活指南、常见问题解答(FAQ)以及更详细的说明和图片。

四、 免责声明

  • 酵头在卫生但非无菌条件下由志愿者培养、干燥和邮寄。
  • 不保证为认证食品。若对成分过敏或敏感,请勿使用。
  • 组织者保证尽最大努力提供健康、有活力的酵头,但邮政延误(自2019年起偶有发生,可能长达数月)不在其控制范围内。
  • 绝不出售或泄露申请人的个人信息。

五、 重要提示与技巧

  1. 信封:务必使用正确尺寸的回邮信封,勿使用过小信封,勿贴错邮票。
  2. 邮资:确保回邮信封内已妥善支付邮资,否则不会寄出酵头。
  3. PayPal 使用:仅限国际申请者使用,支付时需在备注中注明申请时使用的名字以便匹配。
  4. 地址:仔细、工整地书写回邮地址。请勿将自家地址写在回邮信封的左上角(该位置预留给寄件人标签)。
  5. 注意事项:组织者已注意到有 eBay 网站冒名销售,与此无关。请仅通过官方网站(www.Carlsfriends.net)获取最准确信息。
  6. 处理时间:通常需等待六周,但当前因社交媒体传播请求激增,处理时间可能更长,请耐心等待。

总结:获取该酵头的核心是遵循详细的信封和邮资准备规则,以确保邮件系统高效处理。整个过程由志愿者无偿运营,依赖于申请人的配合与小额捐赠的持续支持。

31. A nuclear weapons lab helped crack a serial-killer case (undark.org)

劳伦斯利弗莫尔国家实验室的法医科学中心在加州连环杀手埃弗伦·萨尔迪瓦尔的定罪中发挥了关键作用。萨尔迪瓦尔曾是一名呼吸治疗师,1998年被举报涉嫌加速病人死亡,随后在审讯中供认使用泮库溴铵和琥珀胆碱氯化物毒杀数十名患者,但之后翻供。由于缺乏物证,调查陷入僵局。

调查人员转向法医科学中心求助,该中心隶属于核武器实验室,擅长分析化学、生物、放射性及爆炸性等危险物质,常被视为“最后手段的实验室”。面对遗体中毒物已降解的挑战,中心科学家开发了创新方法:通过固相萃取和色谱-质谱技术,从20具遗体的组织样本中成功检测出泮库溴铵痕迹,其中6例呈阳性。这一突破性证据成为案件定罪的核心依据。

2001年,萨尔迪瓦尔基于这六项阳性结果对六项谋杀罪认罪,被判终身监禁不得假释。该中心的研究成果不仅破解了这起“死亡天使”案件,也体现了其将基础研究与实际应用相结合、应对非常规威胁的使命。

32. OPML Is Underrated (kmaasrud.com)

OPML被低估了

面对主流平台的“劣质化”趋势,作者观察到一种回归老网络精神的复兴,个人博客重新受到关注,“小型网络”概念兴起。这带来了对开放网络标准(如RSS)的新兴趣。RSS允许用户自主管理信息流,摆脱算法驱动的参与度优先的推荐,但其分散性使得管理和发现订阅源存在困难。

OPML(大纲处理标记语言) 作为一种主要用于存储订阅列表的格式,成为了解决方案。它通过一个XML文件集中存储所有关注的订阅源,极大简化了订阅的组织、迁移和跨平台分享。OPML文件支持通过大纲能力进行分类,或使用多个文件对应不同类别(如YouTube订阅、社交媒体用户、新闻网站等),但目前支持嵌套分类的应用较少。

作者进一步提出,OPML有潜力改善“小型网络”的生态系统。个人在网站上分享自己的OPML订阅列表(即“博客滚轮”),形成基于人为有意识策展的推荐系统,而非基于统计指标。这种由已知来源背书的透明推荐,有助于对抗“过滤气泡”。

此外,OPML基于XML的特性允许使用XSL样式表在浏览器中将其渲染为美观的HTML页面。这可以为格式添加说明和引导,并为每个订阅源添加背景描述,使其更易访问和具有展示性。

文章最终倡导个人创建并分享自己的博客滚轮,以此促进社区连接,复兴老网络的社群氛围。

33. Thinking about high-quality human data (lilianweng.github.io)

高质量人类数据的思考

核心观点

高质量数据是深度学习模型训练的关键燃料。虽然社区普遍认同其价值,但实际工作中常存在“大家想做模型工作,而非数据工作”的现象。获取高质量人类数据涉及操作步骤质量保证两个方向。

数据收集的操作步骤

每个环节都影响数据质量:

  1. 任务设计:设计清晰、复杂度低的工作流程。详细的指南有帮助,但过于冗长复杂的指南需要大量培训。
  2. 选择与培训评分员:选择技能匹配、一致性好的标注员。入职后需要定期的反馈和校准会议。
  3. 收集与聚合数据:此阶段可应用更多机器学习技术来清洗、过滤和智能聚合数据以识别真实标签。

众包智慧

源于1907年《自然》杂志上一篇关于猜牛重量的文章,其“民众的平均估计”非常接近真实值,被认为是“众包智慧”的早期例证。后续研究(如Callison-Burch 2009)利用亚马逊众包平台进行机器翻译评估,发现通过合适的加权方案(如与专家或其他众包员的一致性)可以有效处理垃圾标注者。

评分者一致性与聚合

假设存在单一正确答案时,可通过聚合多个评分来寻找可靠标签:

  • 简单方法:多数投票、原始一致性(与其他人的同意比例)。
  • 统计指标:Cohen‘s Kappa(校正偶然一致的概率)。
  • 概率图模型:如MACE(多标注者能力估计),通过建模任务难度、评分者偏见、可信度等因素来预测真实标签,并识别“垃圾”标注者。

评分者分歧与两种范式

在主观性任务(如安全、社会、文化领域)中,分歧可能是合理且有价值的。研究指出了两种对比的标注范式:

  • 描述性范式:鼓励标注者主观性,旨在建模多种观点。优点是能捕捉多样性,缺点是不能用分歧度量数据质量。
  • 规定性范式:抑制主观性,旨在一致地应用单一标准。优点是更符合标准NLP设置、易于质量控制,缺点是创建高质量指南昂贵且困难,且无法捕捉多样化的观点。 例如,研究发现标注者身份(如种族、性取向)和对话主题会影响其对有害内容的判断。

处理分歧的方法

  • 分歧解卷积:通过概率模型将标注中的稳定意见与个人不一致性误差分离。
  • 多标注者模型:将预测每个标注者的标签作为子任务进行训练(如多任务模型),可以更好地捕捉系统性的分歧并提供不确定性估计。
  • 陪审团学习:模拟陪审团过程,基于标注者的特征(如人口统计信息)建模其标注行为,并在决策时指定一个“陪审团”组合。

数据质量与模型训练

当数据集构建完成后,可通过模型训练动态来识别潜在错误标签:

  1. 影响函数:经典统计技术,用于度量通过微调训练点对模型参数的影响,从而近似地估计移除某个数据点对模型预测的损失影响。
  2. 训练过程中的预测变化
    • 数据地图:跟踪训练过程中模型的置信度(对正确标签的平均概率)和变异性(该概率的标准差)。难以学习(低置信度、低变异性)的样本更可能是错误标签。
    • 遗忘事件:跟踪模型在训练过程中对样本预测的正确性转变。那些一旦学会就从未被“遗忘”的样本可能是简单或清晰的,而常被遗忘的样本可能是噪声或特征不常见的样本。
    • 边界下面积:基于一个假设:错误标签样本由于梯度更新中的泛化信号与错误监督信号之间的张力,其边界分数(正确标签的逻辑值与其他类别最大逻辑值之差)会小于正确样本。通过插入伪造的“阈值样本来确定一个区分阈值。
  3. 噪声交叉验证:将数据集随机分成两半,用一半数据训练模型,另一半中标签与模型预测匹配的样本被视为“干净”样本。迭代此过程可以逐步筛选出更可信的样本。

总结

获取高质量人类数据是一个系统工程,需要在操作流程的每个环节精心设计。对于标注中固有的分歧,应根据任务目标选择合适的数据标注范式,并利用各种统计和建模方法进行有效聚合或分析。最后,利用模型训练动态可以帮助识别和过滤数据中的噪声标签。

34. Consumption of 100% Fruit Juice and Body Weight in Children and Adults (pubmed.ncbi.nlm.nih.gov)

文章标题: 100%果汁消费与儿童及成人体重:系统评价与荟萃分析

核心内容: 本文对现有证据进行系统回顾和荟萃分析,旨在评估100%果汁消费与儿童及成人体重变化之间的关系。

研究方法: 研究者检索了MEDLINE、Embase和Cochrane等数据库(截至2023年5月18日),纳入了符合条件的前瞻性队列研究(随访≥6个月)和随机对照试验(≥2周)。儿童的主要结局指标是体质指数(BMI)的变化,成年人的主要结局指标是体重的变化。

主要发现:

  1. 儿童(基于17项队列研究):每天每增加一份(约237毫升)100%果汁的消费,与BMI增加0.03(95% CI: 0.01-0.05)显著相关。
  2. 成年人
    • 队列研究:研究结果不一致。未调整总能量摄入的研究显示,每天每增加一份100%果汁,体重增加0.21公斤(95% CI: 0.15-0.27)。但在调整总能量摄入后,关联性发生逆转,显示体重略微下降0.08公斤(95% CI: -0.11至-0.05),且两种分析方法间存在显著差异(P<.001)。
    • 随机对照试验(19项):未发现饮用100%果汁与体重变化之间存在显著关联(平均差异:-0.53公斤;95% CI: -1.55至0.48),但置信区间较宽,表明结果不确定性较高。

结论与意义: 基于前瞻性队列研究的证据,儿童每天饮用一份100%果汁与BMI增长相关。成年人的研究结果存在差异,未调整能量的研究显示关联性,而调整后则无,这提示热量摄入可能是潜在的中介因素。目前关于100%果汁与成年人体重的随机对照试验证据有限且不确定性较高。研究结论支持相关指南的建议:限制果汁消费,以预防摄入过多热量和导致体重增加。 未来需要更多关于100%果汁与体重关系的试验研究。

其他信息: 该研究发表于《JAMA Pediatrics》(2024年),部分作者声明了与食品工业相关的利益冲突。

36. Are you sure you want to use MMAP in your DBMS? (www.symas.com)

文章内容摘要:对《你在数据库中确定要使用MMAP吗?》一文的深度回应

本文是针对一篇题为《Are you sure you want to use MMAP in your DBMS?》的论文的详细回应。该论文认为在数据库系统中使用MMAP(内存映射文件)存在严重的正确性和性能问题,甚至宣称几乎不可能正确、高效地使用它。本文作者逐点驳斥了原论文的观点,并以开源数据库引擎LMDB作为核心例证,论证了MMAP在精心设计下不仅能被正确使用,而且能带来显著的简洁性和性能优势。

核心反驳与论点

  1. 原论文的根本性错误

    • 逻辑谬误:原论文声称“几乎不可能正确使用MMAP”,这相当于试图证明一个否定命题,是逻辑谬误。
    • 事实矛盾:LMDB的存在本身就推翻了原论文的论点。LMDB是已知最可靠、最简洁的数据库引擎之一(代码量不足64KB),其在崩溃恢复方面的正确性在多项研究中得到证实,甚至超越了许多使用传统缓冲池方案的数据库引擎。
  2. 对原论文各章节的具体驳斥

    • 复杂性与可靠性:原论文主张使用MMAP会导致比使用传统缓冲池更高的复杂性和更低的可靠性。作者指出,LMDB以极简的代码实现了高可靠性和高性能,证明了原论文评估的错误。
    • MMAP的问题(IO阻塞、错误处理、性能)
      • IO阻塞:无论采用何种IO方式,应用程序在数据未加载到内存时都需要等待,这是系统固有特性,非MMAP独有问题。
      • 错误处理:原论文指出的“指针错误可能破坏内存中的页面”问题,通过LMDB默认的只读MMAP模式轻松解决,使其成为非问题。
      • 性能:所有基准测试表明,LMDB的读取性能均大幅领先其他引擎。页面驱逐也不是问题,因为只读MMAP页面始终是“干净的”,操作系统在内存压力下可直接回收,无需回写。
    • 实验分析无效:原论文使用文件系统基准测试工具(fio)进行分析,并未对比实际数据库系统的实现。其测试未能证明其核心论点——即基于MMAP的数据库系统在复杂性和性能上均劣于所有使用传统缓冲池的系统。这使得其整个实验分析缺乏说服力。
    • 结论谬误:原论文总结的“何时不应使用MMAP”的情景(如需要事务安全、显式内存控制、正确错误处理、高吞吐量),在LMDB中均已得到完美解决。而其提出的“可以使用MMAP”的场景(如小数据集只读),又被LMDB在更大数据集和读写混合负载下的卓越表现所驳斥。

LMDB的设计优势与MMAP的根本性价值

  • 简洁与鲁棒:LMDB利用操作系统提供的MMAP和文件系统页缓存,避免了重复实现复杂的缓冲池管理、IO调度和缓存策略,从而实现了无与伦比的简洁性和健壮性。
  • 高性能与天然适配:LMDB的B+树设计与操作系统的LRU缓存策略天然适配,无需额外优化即可获得优异性能,尤其在读取操作上。
  • 多进程/线程并发支持:MMAP依赖操作系统页缓存,使得多个进程和线程可以高效共享同一数据库而无需额外内存开销,这是传统数据库引擎难以实现的。
  • 操作系统的优势:作者最后强调了在多用户环境下,操作系统比任何单一应用更了解全局资源状况(如IO子系统、内存压力)。数据库系统试图精细管理缓存的做法不仅复杂,而且在共享机器上注定无法获得最优结果。重新实现操作系统已具备的功能,往往是徒增复杂且易错的工作。

总结

本文的核心观点是:原论文对MMAP的全面否定是基于错误的逻辑、不成立的证据以及对一个成功反例(LMDB)的忽视。在数据库系统中使用MMAP不仅可行,而且在LMDB这样的优秀设计下,能够带来超越传统缓冲池方案的简洁性、可靠性、高性能和并发优势。选择是否使用MMAP,本质是选择“重复造轮子”还是“高效利用操作系统提供的成熟基础设施”。

37. A glaring error in methane flaring (2022) (arstechnica.com)

甲烷燃烧效率研究的重大发现 (2022)

主要发现

  • 研究发现,考虑到低效燃烧和未燃烧气体,实际燃烧效率约为91%,而非通常认为的98%。
  • 低效燃烧导致部分甲烷未完全燃烧而直接排放到大气中,原因包括管道压力不正确导致气体出口速度不当、强风导致火焰闪烁等。

测量方法

  • 空中监测:团队使用配备二氧化碳和甲烷测量设备的飞机,在三个区域通过目视识别燃烧器,并顺风飞行进入排放烟羽进行采样分析。
  • 燃烧效率评估:通过空气温室气体分析仪测量空气成分,根据二氧化碳峰值和甲烷含量判断燃烧效率。共研究了三个区域的300个燃烧器。
  • 未燃烧气体检测:使用红外摄像机对准燃烧器排气管(天然气燃烧前通过的高架管道),以确定排气管是否未被点燃。

影响与建议

  • 气候影响巨大:虽然98%与91%的差异看似不大,但由于被燃烧的天然气体积巨大,累积排放量对气候变化有显著贡献。
  • 减排潜力:通过确保未点燃的燃烧器被点燃、优化已点燃燃烧器的工作条件,可将燃烧效率提升至98%,从而减少甲烷排放,相当于每年减少290万辆汽车的排放量
  • 研究强调,解决这些效率问题将对气候变化产生重大积极影响。

参考文献

  • 研究成果发表于《科学》期刊 (2022),DOI: doi/10.1126/science.abq0385。
38. UK to replace physical biometric immigration cards with e-visas (www.bleepingcomputer.com)

英国计划在2025年前用电子签证取代实体的生物识别居留许可生物识别居留卡,以实现边境系统的数字化。

主要变化与原因:

  • 现有的BRP和BRC实体卡将在2024年12月31日失效,即使持有人的移民身份本身仍然有效。
  • 这一决定源于英国脱欧。此前作为欧盟成员,英国法规要求采用新一代加密技术,并计划推出升级版实体卡。脱欧后,欧盟要求不再适用,英国内政部决定直接淘汰实体卡,转向电子签证。

电子签证的优势:

  • 为申请人提供便利,无需将实体护照提交至领事馆办理签证贴纸。
  • 便于雇主、房东等通过在线服务核实个人的工作权或居住权。
  • 政府部门(如社保、医疗系统)可在个人申请服务时自动、安全地访问其身份状态。
  • 提高边境安全并为英国公众节省成本。

潜在挑战:

  • 实体卡(如BRP)的核心优势之一是可离线验证,通过芯片和加密技术在不联网的情况下核实真伪。
  • 电子签证依赖在线系统,若航空公司或边境官员的IT系统发生故障,可能导致身份验证流程出现问题。

对现有持卡人的影响与后续步骤:

  • 移民身份不受影响:从2025年1月1日起,持卡人可在线证明其身份,无需实体卡。
  • 需要注册UKVI账户:现有BRP持有人将在2024年(而非2025年)能够创建UKVI在线账户,以访问其电子签证。
  • 保持账户更新:已拥有电子签证的个人应确保其UKVI账户中的个人信息(如联系方式、新护照详情)为最新。
  • 过渡期:在新系统完全启用前,现有BRP的续签或补办流程保持不变。
  • 未来计划:今年夏天起,英国政府将向航空公司、火车及渡轮运营商提供安全的乘客移民信息访问权限。

总体方向: 此次变革是英国边境和移民系统数字化转型的关键部分。虽然目前没有用数字护照替代实体护照的计划,但正朝着未来使用面部识别等技术实现无接触入境的方向探索。更多信息将在后续公布。

39. Creeped Out [pdf] (philpapers.org)

《毛骨悚然:对“诡异感”与“令人不适”反应的哲学分析》论文摘要

本文是一篇哲学论文,旨在探讨“诡异感”(creepiness)与“令人不适”(being creeped out)这一情绪反应的本质。作者Sara Bernstein和Daniel Nolan认为,尽管“诡异感”是人类普遍的经验,但其哲学探讨尚不充分,且缺乏标准的命名。

对现有理论的批判

作者首先分析了现有的定义。牛津词典的定义(“由恐惧或厌恶引起的、或倾向于产生此类感受的、令人毛发直立或战栗的感觉”)被认为过于宽泛或不准确,例如,当面目睹惨烈杀戮虽然会引发恐惧战栗,但通常不被视为“诡异”。他们也批评了Fischer和Fredricks(2020)提出的理论,即认为“诡异”行为源于对基本规范、理由或价值观的“不敏感”。作者认为该理论过于狭窄,无法涵盖所有案例:一方面,一些道德违规行为(如偷税漏税)或公然暴力(如持械抢劫)虽不道德但并“不诡异”;另一方面,某些行为(如朋友反复整容以模仿名人)虽未明显违反道德规范,却依然会令人感到“诡异”。

核心论点:响应依赖理论

作者提出的核心观点是,“诡异感”是一种响应依赖的属性。即,某事物之所以是“诡异的”,是因为它具有在适当情境激发合适观察者产生“令人不适”反应的倾向。这是一种相互阐明(mutual illumination)的方法论:我们对“诡异感”的理解始于对“令人不适”这一情绪反应的直观把握,并通过分析激发该反应的现象来不断精确化对这两者的理解。作者认为,这种方法比“诡异优先”或“无优先”的理论更具解释力,因为我们对“诡异感”的认知在很大程度上正是通过观察自己和他人的反应来实现的。

“令人不适”反应的特征

作者将“令人不适”的反应与恐惧厌恶进行了区分:

  • 与恐惧的区别:虽然都涉及危险感,但“诡异感”通常关联着潜在、模糊且不确定的威胁,而非即时、直接的危险。例如,黑暗中的可疑人影令人“诡异”,而迎面滚来的大石头则主要引发恐惧。此外,“令人不适”甚至可以在个人毫无危险时产生(如阅读关于脑寄生虫的医学报告)。
  • 与厌恶的区别:两者都可能包含厌恶感,但“诡异感”与威胁或危险的联系更紧密,而“厌恶”可以完全不涉及危险(如对脏乱卧室的厌恶)。“令人不适”通常由模棱两可且具有威胁性的事物引发,而单纯的污秽可能只引发厌恶。 作者强调,“令人不适”反应的核心特征通常包含三个要素:威胁性(直接或间接)、危险性不可预测性。这些要素在不同案例中的权重不同。此外,该反应可以延迟产生(如事后意识到某个场景的诡异之处),也可以由阅读、想象所触发。

检测“诡异感”的价值

作者认为,能够识别“诡异感”并做出“令人不适”的反应具有重要价值:

  1. 个人安全:作为一种原始的、进化而来的危险预警系统。
  2. 社会功能:它可以作为共享的早期预警信号,有助于社会凝聚(如共同经历恐怖片带来的 bonding),并能作为一种间接的社会谴责信号(例如,对他人的不当行为表示“令人不适”可能促使对方调整行为)。
  3. 审美价值:对“诡异感”的敏感性可以被艺术创作所利用,从万圣节服装到令人不安的艺术作品,都能带来特定的审美体验。

结论

作者总结道,“诡异感”是一个广泛的现象统一体,它可以通过与“令人不适”这一情绪反应的响应依赖关系得到统一解释。理解这一现象不仅有助于我们认识人类的情绪生活,也能为研究其他情绪(如厌恶、恐惧)及其对象提供一个有价值的案例研究。最终,对“诡异感”的精确分析有待于一个持续的、相互阐明的探究过程。

40. Unscrambling the Hidden Secrets of Superpermutations (www.quantamagazine.org)

超级排列:解码隐藏的秘密

本文以一个虚构故事引入,介绍了超级排列这一数学概念,并探讨了寻找最短超级排列的问题及其进展。

核心概念:排列与超级排列

  • 排列:指一组符号的特定顺序,其中每个符号恰好使用一次。n个不同符号的排列总数是n!(n的阶乘)。
  • 超级排列:一个包含给定符号集合所有可能排列的序列。例如,对于符号{A, B, C},一个简单的超级排列是将所有6个排列串联起来,但这通常不是最短的。

寻找最短超级排列:以三个符号为例

文章以寻找符号{A, B, C}的最短超级排列为例,阐述了基本思路:

  1. 建立界限:首先确定长度的下界(例如,至少需要8个符号)和上界(例如,通过简单串联得到18个符号)。
  2. 探索与优化:通过识别“循环排列”(如ABC、BCA、CAB),可以将两个循环序列合并并移除重复符号,从而得到更短的序列。
  3. 最终结果:经过推导和计算机验证,{A, B, C}的最短超级排列长度为9,例如ABCABACBA

扩展到更多符号:一个递归构建方法

文章描述了一种从n个符号的最短超级排列,系统性地构建n+1个符号的较短超级排列的方法:

  • 方法:在n个符号的最短超级排列中,找到每一个长度为n的排列,在其后添加第(n+1)个符号,再重复一遍该排列。
  • 长度公式:按此方法构建的n个符号的超级排列长度为:n! + (n-1)! + ... + 2! + 1!
  • 有效性:该公式对于 n ≤ 5 的情况给出了已知的最短超级排列。

更广泛的问题与最新进展

  • 一般化难题:当n > 5时,上述递归方法可能并非最优。寻找最短超级排列的问题变得更加复杂,甚至与“旅行商问题”有相似之处。
  • 界限研究:数学家们目前致力于改进最短长度的上下界。有趣的是,新的下界发现最初源自网络论坛4chan上一个关于观看电视节目所有顺序的讨论。科幻作家格雷格·伊根也提出了新的上界。
  • 未解之谜:对于较大的n,是否存在一个通用的、简洁的最优解公式,目前仍是未解之谜。

总结

超级排列是一个优雅的数学对象,它探讨了如何以最高效的方式序列化所有可能的排列。从小规模符号的确定性解法,到大规模时的界限研究,该问题持续激发着数学家和业余爱好者(包括匿名网友和科幻作家)的探索热情。在虚构故事中,正是利用n=5时120个排列的最短超级排列(仅153位数字),才在千钧一发之际拯救了世界。

41. Dyte (YC W21) Is Hiring Support Engineers (Latin America)
42. Modern Treasury (YC S18) Is Hiring an Enterprise PM (jobs.ashbyhq.com)

招聘摘要
Modern Treasury(Y Combinator 2018年夏季批次公司)正在招聘企业产品经理(Enterprise PM)。该职位针对企业级产品管理角色,但内容未提供具体职责、要求或公司详细信息。