2024-08-14

42 篇热帖

1. Show HN: If YouTube had actual channels (ytch.xyz)

项目概述
这是一个Hacker News(HN)社区分享的项目,标题为“如果YouTube拥有真正的频道”。该项目旨在重新设计YouTube的频道体验,可能通过自定义界面或插件形式,提供更贴近传统电视频道感的功能。

主要功能与设置选项

  • 显示频道名称:可自定义是否在播放界面显示当前频道名称。
  • 显示字幕:允许用户选择是否开启字幕。
  • 显示视频标题:控制视频标题的显示状态。

支持与联系

  • 联系方式:提供邮箱支持([email protected])。
  • 资助渠道:支持通过“Buy Me a Coffee”或Patreon进行赞助。

其他信息

  • 页面底部包含“Studio”(工作室)、“服务条款”和“隐私政策”的链接,表明该项目可能涉及内容创作或用户协议相关功能。

总结
该项目通过可配置的UI设置,试图为YouTube赋予更传统的频道式体验,强调用户对界面元素的自主控制,并通过开源或支持渠道接受社区反馈与资助。

2. Disney seeks dismissal of wrongful death lawsuit citing waiver in Disney+ terms (wdwnt.com)

迪士尼要求佛罗里达州法院驳回一起因过敏反应致死引发的过失诉讼,并援引其Disney+流媒体服务条款中的强制仲裁条款作为依据。该案涉及纽约医生Kanokporn Tangsuan,她于2023年10月在迪士尼之泉的Raglan Road爱尔兰酒吧用餐后因严重过敏反应死亡。死者曾告知餐厅其乳制品和坚果过敏史,并得到工作人员对其饮食需求的保证。

迪士尼在5月31日提交的动议中指出,其丈夫Jeffrey Piccolo在2019年通过PlayStation注册Disney+免费试用时,已同意服务条款中“所有争议必须通过单独约束性仲裁解决”的规定。迪士尼还称,Piccolo于2023年9月通过My Disney Experience应用购买EPCOT门票时,也签署了包含类似条款的协议。迪士尼认为,无论Piccolo是否实际阅读了条款,这些协议均具有法律效力。

原告方律师在8月2日提交的文件中称迪士尼的主张“荒谬至极”,认为不能因流媒体服务中“隐藏”的条款,就剥夺1530万订阅者对迪士尼及其关联公司的索赔权。律师强调,Piccolo是以已故妻子遗产代表的身份提起诉讼,而其妻子遗产在签署Disney+条款时尚不存在,因此迪士尼试图“强制执行一个既未签署、也未由相关方签署的协议”。原告律师将此论点描述为“近乎超现实”。

该案目前处于法律程序阶段,迪士尼公园及度假村方面未予置评。

4. Google Pixel 9 Pro (store.google.com)

Google Pixel 9 Pro 产品总结

产品概述与定价

Google Pixel 9 Pro 起售价为 999 美元(或 36 期分期每月 27.75 美元),支持以旧换新。该系列首次提供两种尺寸:6.3 英寸的 Pixel 9 Pro 和 6.8 英寸的 Pixel 9 Pro XL,均深度集成 Gemini AI 助手。

设计与显示

手机采用丝滑哑光玻璃背板、双饰面相机栏和抛光金属边框,具备防泼溅和防跌落设计,并注重环保材料的使用。配备 Super Actua 显示屏,峰值亮度高达 3000 尼特。

核心性能与续航

搭载全新 Google Tensor G4 芯片与 16GB RAM,提供强大的端侧 AI 处理能力。电池续航超过 24 小时,极限省电模式下可达 100 小时;Pixel 9 Pro XL 支持快充,约 30 分钟即可充至 70%。

相机系统与 AI 影像

  • 硬件配置:后置三摄包括 50MP 主摄(f/1.68 光圈)、48MP 超广角(支持微距和 103° 视野,暗光性能提升 30%)及 48MP 长焦镜头(5 倍光学变焦,最高 30 倍 Super Res Zoom)。前置 42MP 超广角镜头。
  • 视频拍摄:支持最高 20 倍视频变焦、Night Sight 暗光视频以及最高 8K 分辨率的 Video Boost 画质增强。
  • AI 编辑工具:提供 Add Me(合影添加摄影师)、Best Take(最佳表情合成)、Zoom Enhance(变焦增强)、Photo Unblur(去模糊)以及 Magic Editor(支持重新构图、移动/消除物体和 AI 生成背景)。
  • 包容性设计:Real Tone 真实还原各种肤色,Guided Frame 通过音频和触觉辅助视障人士自拍。

Gemini AI 与软件生态

内置 Gemini AI 助手,支持 Gemini Live 自然语音对话、跨应用任务执行、图像生成及 YouTube 视频信息提取。购机即享 Google One AI Premium 计划,包含 100 万 token 上下文窗口、2TB 存储及 Gmail/Docs 中的 Gemini 高级功能。此外,Pixel Screenshots 和 Circle to Search(圈选搜索)大幅提升了信息检索效率。

安全、更新与购买支持

  • 长期支持:提供长达 7 年的 Pixel Drops、操作系统和安全更新。
  • 健康与安全:支持无蜂窝网络或 Wi-Fi 环境下的卫星紧急 SOS 服务,并内置温度计应用(可测体温并同步至 Fitbit)。
  • 网络与包装:支持 5G 网络和双 SIM 卡(物理 SIM + eSIM 或双 eSIM)。包装内含 1 米 USB-C 数据线和取卡针,不含 45W 充电器。
  • 售后服务:提供 Preferred Care 设备保护计划,涵盖意外损坏和机械故障,并支持从其他 Android 或 iPhone 轻松迁移数据。
5. Interviewing the Interviewer: Questions to Uncover a Company's True Culture (praachi.work)

面试双向评估:通过提问揭示公司真实文化

在技术面试中,候选人往往处于被审视的位置,但公司可能无意或有意地掩盖其真实文化。面试是一个双向过程,候选人也应主动评估公司是否适合自己。通过提出开放式问题,可以更清晰地了解公司文化,做出更明智的职业选择。

关键提问策略

  • 直接询问开放式问题:例如“您在公司的体验如何?能否谈谈公司文化?”这类问题鼓励面试官基于个人经验作答,往往能得到更坦诚的回应。
  • 深入追问示例:如果回答笼统,可以追问“能否举例说明公司文化如何体现在日常工作中?”这有助于从泛泛而谈转向具体细节。
  • 探索改进空间:询问“您认为公司哪些方面可以改进?”能揭示潜在问题,也反映公司的自我认知和透明度。
  • 了解员工支持体系:通过“团队成员遇到困难时,公司如何处理?”这类问题,可以洞察公司对员工的支持机制和危机应对方式。
  • 评估创新氛围:询问“能否分享团队成员用非传统方法解决问题的例子?”这能判断公司是否鼓励突破常规。
  • 关注成功认可与文化演变:例如“团队如何庆祝成员达成重要目标?”以及“公司文化如何适应变化?”这些问题反映公司对成就的重视程度和灵活性。

细节观察要点

提问时需密切关注面试官的回应方式:是热情详尽还是照本宣科?是否坦诚开放?这些非语言的线索往往与答案内容同样重要,能帮助判断公司文化的真实性。

主动掌控面试过程

在竞争激烈的科技行业中,候选人应充分利用面试机会获取关键信息。避免接受模糊回答或企业套话,而是通过有针对性的问题,寻找与自身价值观相符、能支持个人成长且有利于发挥潜能的工作环境。面试不仅是公司筛选候选人的环节,更是候选人打破信息壁垒、发现公司真相的重要时机。

7. Sort, sweep, and prune: Collision detection algorithms (2023) (leanrada.com)

碰撞检测算法:排序、扫描与修剪(2023)摘要

核心主题

文章详细探讨了游戏开发中的碰撞检测算法,重点介绍并逐步推导出高效的扫描修剪(sweep-and-prune)算法的简化版本。旨在通过交互式示例和第一原理讲解,展示如何从朴素方法优化至更实用的解决方案。

问题背景

碰撞检测是视频游戏编程中的常见基础问题,用于实现角色不可相互穿越、敌人碰撞转向、细胞吞噬等游戏机制。文章以刚体球体模拟为例,进行算法演示。

算法演进过程

1. 朴素方法(Naive Approach)

  • 原理:检查每一对物体是否碰撞(双重循环)。
  • 时间复杂度:O(n²),物体数量n增加时,性能急剧下降。
  • 缺点:对于大量物体,每帧需测试的碰撞对数量巨大,效率低下。

2. 优化思路:利用不等式的传递性

  • 关键洞察:通过聚焦于单个轴(如x轴)的边界检查(如 object1.right > object2.left),可以利用不等式的传递性跳过不必要的测试。
  • 示例:若已知A.right ≤ B.left且B.right ≤ C.left,则无需测试A和C,可直接推断它们在x轴上不重叠。
  • 前提:需要物体按特定顺序(如x坐标)排列,才能批量应用传递性跳过测试。

3. 排序优化

  • 核心步骤:每帧对物体列表按左边缘x坐标(left)排序。
  • 代码改进
    • 添加排序函数 sortByLeft(balls)
    • 在内层循环中添加提前退出条件:if (ball2.left > ball1.right) break;。当遇到一个在x轴上不重叠的物体时,由于列表已排序,后续物体必然也不重叠,可提前终止对当前物体的测试。
  • 效果:显著减少了相交测试的次数,仅测试在x轴上潜在重叠的物体对。

简化版算法性能分析

  • 时间复杂度
    • 排序步骤:O(n log n)。
    • 带提前退出的嵌套循环:平均 O(n + m),其中m为x轴重叠的物体对数量。
    • 整体平均复杂度:O(n log n + m),远优于朴素方法的O(n²)。
  • 优势
    • 性能提升显著,尤其当物体分布均匀、重叠较少时。
    • 实现简单,仅需在朴素方法基础上增加两行关键代码(排序和提前退出)。
    • 复杂度部分取决于输出(重叠数量),在最佳情况(无重叠)下可达O(n)。

结论与实用价值

文章指出,这种基于排序并利用轴对齐提前退出的算法是实现碰撞检测的极佳平衡点,兼具编程简易性和运行时高效性。对于许多游戏场景(如平台游戏、卷轴游戏),它能提供足够好的性能。

文章结构说明

  • 文章分为两部分:第一部分详解上述简化版算法;第二部分将介绍更复杂、更高效的版本(可能涉及更好的排序算法或进一步优化)。
  • 全程配有交互式示例和可视化对比,直观展示算法原理与性能差异。
8. Font with Built-In Syntax Highlighting (blog.glyphdrawing.club)

文章探讨了在手写网站代码时实现语法高亮的替代方案,核心是利用OpenType字体的高级功能将高亮逻辑直接嵌入字体文件中,从而避免依赖JavaScript库。

问题与动机:手写网站代码(HTML/CSS/JS)时,为代码片段添加语法高亮通常需要使用如Prism.js等外部库。这些库会动态修改DOM,增加页面复杂性,这与作者追求简洁、无外部脚本的理念相悖。因此,作者探索了完全在字体层面实现语法高亮的可能性。

技术方案:作者通过修改开源字体Monaspace Krypton,结合OpenType的两个关键特性来实现:

  1. COLR表:允许字体包含多种颜色。作者创建了一个8色调色板,并将字母、数字等字符复制多份,每份分配不同的颜色,作为备用字形(如.alt1.alt2)。
  2. 上下文替换:使字符能够根据相邻字符进行“智能”替换。通过编写特定的替换规则(lookups),字体引擎可以识别代码中的关键词或模式(如JavaScript关键字if,CSS函数rgb()),并将其对应的字符序列替换为预定义的彩色版本字形。

具体实现

  • JavaScript关键字:通过相对直接的规则链实现。例如,识别console一词时,规则会确保只在独立单词情况下匹配,并依次将每个字母替换为其彩色变体。
  • CSS/HTML语法:由于关键字众多,采用更高效的模式匹配方法。例如,识别CSS函数时,规则匹配任何在左括号(之前、长度不超过一定字符数(如25个)的字母序列,并将其整体替换为彩色形式。
  • 注释与字符串:对于长度不定的内容(如/* ... */注释),作者使用了类似有限状态机的技巧。规则会触发从起始符号(如/*)开始,逐个字符进行替换的状态延续,直到遇到结束符号。

优点

  • 安装简单:与使用任何自定义字体一样,只需通过CSS引入。
  • 无JavaScript依赖:高亮完全由字体渲染引擎处理。
  • 代码干净:HTML源码无需额外添加<span>标签。
  • 适用场景广:在支持OpenType的环境中均可工作,包括传统上无法进行语法高亮的<textarea>元素。
  • 性能好,无需维护:高亮规则随字体文件内嵌,无需运行时解析。

缺点与局限

  • 修改困难:更改高亮规则或支持新语言需要编辑和重新构建字体文件,门槛较高。
  • 匹配能力有限:基于上下文替换的模式匹配远不如正则表达式强大,无法精准区分代码上下文(例如,段落标签<p>内的英语单词if也会被高亮)。
  • 不支持跨行高亮:注释或字符串如果包含手动换行,则后续内容不会被高亮。
  • 环境支持:依赖OpenType特性,虽主流浏览器支持,但某些应用(如旧版PowerPoint)可能不支持。

潜在与未来

  • 文章展示了多个使用此字体的项目,如一个单文件的Web组件式代码沙盒。
  • 作者提出,未来可借助harfbuzz-wasm技术,用真正的解析器替代当前复杂的字体规则,从而克服现有缺点。
  • 该概念已被W3C的CSS字体模块规范作为颜色字体潜在应用的示例提及。
  • 修改内嵌颜色主题可通过编辑字体源文件或使用CSS的override-colors规则实现。
10. Examples of Great URL Design (2023) (blog.jim-nielsen.com)

优秀URL设计范例 (2023)

URL的普遍性与重要性

URL是互联网的通用语法,不仅用于浏览器访问,还广泛应用于:

  • 编程脚本、数据抓取等程序化数据检索
  • 实体书籍的脚注和附录中的参考文献
  • 物理介质(如二维码、物联网设备按钮)的可操作触发器

优秀URL设计案例

1. StackOverflow:平衡计算机与人类需求

  • 设计模式/questions/:id/:slug
  • :id:唯一标识符,服务器用于定位内容
  • :slug:可选的、可读的问题简述,帮助用户理解内容
  • 优点
    • :id 部分足以保证URL有效且稳定
    • :slug 可自由更改而不破坏链接
  • 示例
    • 简洁版:stackoverflow.com/questions/16245767
    • 可读版:stackoverflow.com/questions/16245767/creating-a-blob-from-a-base64-string-in-javascript/

2. Slack:营销语言与URL融合

  • 设计特点:将营销标语融入URL结构
  • 示例
    • slack.com/is/team-communication
    • slack.com/is/everything-in-one-place
  • 优势:URL本身形成自然语言句子,增强品牌叙事连贯性

3. Jessica Hische:创意域名与句子结构

  • 设计特点:使用 .is 域名(冰岛国家代码),结合第一人称陈述句风格
  • 示例
    • jessicahische.is/anoversharer(关于页面)
    • jessicahische.is/sofulloffancypopcorn(项目页面)
  • 优势:在保持功能性的同时增添个性与趣味性

4. GitHub:语义化技术路径

  • 设计特点:URL结构映射Git语义
  • 示例github.com/django/django/compare/4.2.7...main
  • 优势:用户可直接通过URL进行代码对比等操作,无需界面导航

5. NPM与unpkg:产品化URL设计

  • NPM
    • 包页面:/package/:package-name(如 npmjs.com/package/react-router
    • 版本页面:/package/:package-name/v/:semver(如 npmjs.com/package/react-router/v/5.3.4
  • unpkg CDN
    • 文件访问:unpkg.com/:package@:version/:file
  • 优势:URL结构本身成为产品接口,提升工作效率

总结

优秀的URL设计需兼顾机器可读性与人类可读性,可融入品牌叙事,或映射产品语义。在技术产品中,精心设计的URL能直接作为功能入口,成为用户体验的关键部分。

11. "Frost crack" sounds may come from sky, not trees (nautil.us)

文章摘要:神秘“霜裂声”可能源自天空而非树木

传统认知与疑问
长期生活在寒冷地区的人们常听到类似枪声的爆裂声,传统上认为这是树木内部树液冻结膨胀导致的“霜裂声”。例如,拉科塔人将二月称为“树木因寒冷开裂之月”。然而,科学证据表明,树木内树液冻结产生的声音属于超声波频段,人耳无法听见,因此无法解释那些可听见的爆裂声。

研究契机与初期探索
芬兰阿尔托大学声学荣休教授乌托·莱恩在1990年极光风暴期间首次听到无法解释的声响,并注意到其与极光活动的潜在关联。萨米人等北欧民族历来有“能听见的光”(极光)的民俗记载,但科学界对极光是否伴随声音长期存在争议。2000年起,莱恩正式启动“极光声学项目”,通过录音设备初步证实声音可能源于大气,但反对者认为这些声音是幻觉或树木霜裂声。

关键发现与突破
研究初期面临两大难题:极光发生高度约80公里,远超出声音传播范围;且需解释声音如何凭空产生。莱恩通过多麦克风三角定位技术,意外发现声音源头位于地表约230英尺(约70米)高空,与大气“逆温层”高度吻合。在无风晴朗的夜晚,地面暖空气携带负离子上升,与上空冷空气形成逆温层,同时太阳风带来的正离子也积聚于此。正负电荷相互作用释放能量,产生类似微型闪电的放电声响,并伴随磁场脉冲。

实证与结论
2023年1月,莱恩团队在无可见极光的条件下记录到数百次类似霜裂的声响,定位确认其源自逆温层(高度约246英尺)。同步磁场测量显示,声响与地磁活动高度相关,而树木无法产生磁场脉冲。至此,研究彻底排除了树木产生这些声音的可能性,证实声响源自天空逆温层的电离放电现象。

学术评价与意义
挪威特罗姆瑟地球物理研究所研究员尼亚尔·古尔布兰森认为,莱恩的研究是突破性的,但需更多专家进一步验证。该研究首次将大气科学与声学领域结合,重新解释了冬季森林中神秘声响的起源,并非否定树木可能开裂,而是表明那些长期被归因于树木的诡异声音,实际上可能源于夜空本身。

结论
长期被视为“树木霜裂声”的冬季爆裂现象,经科学证实源自地表数百英尺高的大气逆温层,由电离粒子放电产生,并伴随地磁活动。这一发现不仅解答了自然谜题,也展现了跨学科研究的价值。

12. Tell HN: Google OAuth consent screen issue could be costing you signups
13. Ask HN: What do you monitor on your servers?
14. DUNE scientists observe first neutrinos with prototype detector at Fermilab (newscenter.lbl.gov)
# DUNE科学家首次利用费米实验室原型探测器观测到中微子

国际深地中微子实验(DUNE)取得重大进展。科学家在费米国家加速器实验室的DUNE原型粒子探测器中,首次探测到加速器产生的中微子。

## 核心事件与技术突破
- **里程碑事件**:2023年7月10日,DUNE团队宣布,在安装于费米实验室现有中微子束流路径上的最新原型探测器中,成功记录了首批加速器产生的中微子,这为验证探测器设计迈出了关键一步。
- **核心技术**:该原型探测器的核心是**LArPix**——一种创新的像素化传感器与电子系统,由劳伦斯伯克利国家实验室团队构想、设计并建造。它能以真正的三维成像能力记录中微子相互作用,是DUNE近探测器的核心技术之一。
- **探测器设计**:该原型被称为“2×2原型探测器”,因其包含四个模块呈方形排列。它使用液氩时间投影室记录粒子轨迹,拥有超过33.7万个电荷敏感像素,分辨率约为4毫米,能实现高精度、大尺度的3D成像。这种模块化设计使其有别于以往的ICARUS和MicroBooNE等探测器。

## 实验背景与科学目标
- **DUNE项目简介**:DUNE是目前在建的世界上最全面的中微子实验,旨在探索中微子研究新领域,并有望解答宇宙中的一些重大物理谜团,例如寻找物质起源、深入了解超新星和黑洞形成。
- **实验设置**:DUNE探测器分布在两地。中微子束流从费米实验室出发,先经过设置在此地的近探测器(分析高强度束流),然后穿越800英里地壳,到达位于南达科他州桑福德地下研究设施的远探测器。
- **核心科学目标**:通过比较中微子与反中微子在行进过程中发生类型转变(中微子振荡)的差异,寻找被称为CP破坏的对称性破缺证据,这可能解释为何宇宙中物质远多于反物质。

## 团队合作与下一步计划
- **国际协作**:DUNE合作组由来自200多个研究机构的1400多名科学家和工程师组成。2×2原型探测器的硬件开发由瑞士伯尔尼大学、费米实验室、伯克利实验室和SLAC国家加速器实验室领导,众多大学作出了重要贡献。
- **技术验证意义**:此前从未建造并测试过能探测高中微子和反中微子通量的模块化液氩探测器。2×2原型的成功运行证明了这些创新技术在DUNE近探测器严苛环境(每秒脉冲、每秒约50次相互作用)下的有效性,为未来建设由35个更大模块组成的最终近探测器铺平了道路。
- **后续步骤**:团队计划利用费米实验室的束流对2×2原型进行为期数月的持续测试。目前束流正以“反中微子模式”运行,科学家将用其研究反中微子与氩的相互作用。分析这些数据将为DUNE正式运行做好准备,同时也为早期职业科学家提供宝贵的研究经验。

此次首次中微子观测不仅展示了先进技术的潜力,也标志着DUNE项目向实现其雄心勃勃的科学目标迈出了坚实的一步。
15. Go 1.23 Released (go.dev)

Go 语言版本发布记录摘要

本文档是 Go 语言官方版本发布历史的总结,列出了从 Go 1 至最新的 Go 1.26.0 的所有主要版本及其后续的次要修订版本。

核心要点

  1. 版本发布模式:Go 采用“主要版本”加“次要修订版本”的发布模式。

    • 主要版本:例如 Go 1.26.0、Go 1.25.0 等,是包含新特性的重大更新。
    • 次要修订版本:例如 Go 1.26.1、Go 1.25.2 等,在主要版本发布后陆续推出,主要包含安全修复错误修复,旨在维护现有版本的稳定性和安全性。
  2. 版本支持政策

    • 每个主要 Go 版本会一直被支持,直到有两个更新的主要版本发布之后。例如,Go 1.5 在 Go 1.7 发布后才结束支持。
    • 在支持期内,对于关键问题(包括严重的安全漏洞),Go 团队会通过发布次要修订版本(例如 Go 1.6.1)来进行修复。
  3. 更新与查看

    • 用户可以通过 git fetch --tagsgit checkout goX.Y.Z 命令切换到特定版本。
    • 每个版本更新的详细内容可在对应的 Go 发行说明问题跟踪器的里程碑(Milestone)中查看。
  4. 常见修复内容

    • 安全修复:非常频繁,涉及众多标准库包,尤其是 net/httpcrypto/x509html/templatego 命令、crypto/tlsosarchive/tar 等网络、加密、命令行和系统相关的包。
    • 错误修复:通常涉及编译器、链接器、运行时、go 命令以及标准库中的各种包。

版本历史概览

文档按时间倒序列出了所有主要版本及其修订版本:

  • 最新主要版本:Go 1.26.0(发布于 2026-02-10),其后已有多次修订(至 go1.26.4)。
  • 其他近期主要版本:包括 Go 1.25.0、Go 1.24.0、Go 1.23.0 等,每个版本都配有长达十余次的修订。
  • 历史版本:追溯至 Go 1(发布于 2012-03-28),早期版本的修订次数相对较少。

每个版本条目均清晰列出了其发布日期及所有次要修订版本的简要更新说明。

17. What I Learned Writing an Album in Just Intonation (www.osar.fr)

摘要:创作纯律专辑的心得

纯律(Just Intonation, JI)是微分音音乐的一部分,涉及12音阶之外的音符。作者通过创作专辑实践了自由JI(freestyle JI),提供了对JI的实用视角,探讨了其作为音乐自然方式与偏离常态的双重性。

JI基础

JI基于自然频率比率(整数比),与12音平均律(12TET)对比。12TET将八度等分为12个半音,使用无理数间隔;JI则直接使用整数比,理论上更符合人类对和声的感知。但实践表明,JI可能比12TET更和谐或更不和谐,取决于使用方式。

解决方案

  • “无聊”方案:音阶:常见方法是将JI限制为12音音阶,但可能引入更多不和谐音程,难以避免“错误”音程。
  • “远出”方案:自由JI:不使用预定义音符,允许每个音符有独立频率,所有频率均为自然比率。作者采用此方法,为和弦动态分配音高,使和声更连贯,但导致单个八度内超过40个不同音调。

自由JI的实践

  • 和弦构建:使用James Tenney的谐波晶体生长技术,从种子音符生长出和弦,通过谐波距离衡量和谐度。这种方法允许灵活构建多样和弦,并标识音符的中心性与外围性。
  • 作曲方法:在和弦变化时重新定义可用音调,避免全局音阶。这增强了和声的连续性和多样性,但需要编程工具实现,手动操作困难。

JI的挑战

JI引入音差(commas),即非常相似的音程,可能导致音高混淆。相比之下,12TET通过平均化消除了音差,形成均匀的网格,便于和声移动和转调。例如,《指环王》配乐中的和弦进行在12TET中可无缝循环,但在JI中难以实现,易导致不和谐过渡。JI作曲需谨慎避免隐藏的不和谐音程,否则可能比12TET更糟。

不同调音系统的思考

JI与12TET是不同的艺术工具:JI提供完美的单一和声解释,适合特定和弦序列;12TET则支持更广泛的和声技巧,如循环进行。大多数12TET音乐不直接转换为JI,反之亦然。音乐软件常将JI作为简单调音选项,但JI实际需要不同的作曲方式和表示方法。

结论

通过创作专辑,作者认识到JI在特定场景下能产生丰富和谐的效果,但受音差限制。JI与12TET各有优势,应视为不同创作系统,而非优劣之分。进一步阅读推荐Xenharmonic Wiki、Joe Monzo和William Sethares的研究。

19. Show HN: I've open sourced DD Poker (github.com)

DD Poker是一个功能齐全的德州扑克(包括无限注、底池限注和限注)电脑游戏,现已将其全部源代码开源。该代码库包含了游戏本身的源码、底层游戏引擎、支持性后端服务器以及配套网站。

游戏核心功能与架构:

  • 游戏客户端:基于Java Swing的桌面应用程序,可在Mac、Linux和Windows上运行。支持与AI对手或其他人类玩家进行在线对局。游戏内置了用于举办家庭锦标赛的扑克时钟,以及用于分析手牌强度和获胜概率的高级计算器工具。
  • 后端服务器:本质上是一个与MySQL数据库通信的Java Spring应用程序,原用于协助玩家寻找并创建在线游戏房间。官方服务器已于2017年停止运行,但开源代码允许用户自行搭建。
  • 配套网站:基于Apache Wicket框架构建,作为游戏的在线门户。

快速开始: 用户可以通过克隆仓库、安装Java和Maven,然后运行特定命令来从源代码构建并启动游戏,无需预先设置服务器或数据库。

开源原因与历史: DD Poker最初由Donohoe Digital LLC开发。1.0版于2004年发布,2.0版(2005年)加入了在线对局功能。3.0版于2009年转为捐赠软件,并在2017年停止更新。尽管如此,仍有玩家通过手动分享游戏URL的方式继续游玩。开源旨在支持那些希望为本地扑克社区自行运行服务器的爱好者,并让这套虽已近20年历史但仍可运行的代码能被他人所用。

版权与许可证:

  • 源代码:采用GNU通用公共许可证(GPLv3) 授权,允许修改和重新分发。
  • 品牌资产:游戏名称“DD Poker”、“Donohoe Digital”以及相关标志、图像、文档等,受知识共享署名-非商业性使用-禁止演绎4.0国际许可协议(CC BY-NC-ND 4.0) 保护。未经明确书面许可,不得将这些资产用于商业用途。
  • 商标:“DD Poker”及DD黑桃标志均为注册商标。

第三方代码: 项目中直接包含或通过Maven依赖引用了多个开源组件,如Zookitec Explicit Layout、MersenneTwisterFast随机数生成器等,相关信息可在项目文档中查阅。

20. Vaultwarden: Unofficial Bitwarden compatible server written in Rust (github.com)

Vaultwarden:用 Rust 编写的非官方 Bitwarden 兼容服务器

Vaultwarden 是一个用 Rust 编写的 Bitwarden 客户端 API 替代服务器实现,与官方 Bitwarden 客户端兼容,非常适合在官方服务可能过于耗费资源的场景下进行自托管部署。

主要特性

项目提供了近乎完整的 Bitwarden 客户端 API 实现,包括:

  • 个人保险库、发送、附件、网站图标、个人 API 密钥
  • 组织功能:集合、密码共享、成员角色、分组、事件日志、管理员密码重置、目录连接器、策略
  • 多因素/双因素认证:支持身份验证器、电子邮件、FIDO2 WebAuthn、YubiKey、Duo
  • 紧急访问
  • Vaultwarden 管理后台
  • 修改版的 Web Vault 客户端(包含在容器中)

使用方式

推荐通过官方发布的容器镜像安装和使用,镜像发布在 ghcr.iodocker.ioquay.io

Docker/Podman 命令示例

docker pull vaultwarden/server:latest
docker run --detach --name vaultwarden \
  --env DOMAIN="https://vw.domain.tld" \
  --volume /vw-data/:/data/ \
  --restart unless-stopped \
  --publish 127.0.0.1:8000:80 \
  vaultwarden/server:latest

此命令将数据持久化存储在宿主机的 /vw-data/ 目录中。

Docker Compose 示例

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: "https://vw.domain.tld"
    volumes:
      - ./vw-data/:/data/
    ports:
      - 127.0.0.1:8000:80

也可以使用社区维护的软件包,但版本可能滞后或配置方式略有不同。另外,也支持自行构建。项目推荐使用反向代理(即使框架本身支持 TLS)。

社区与支持

如有问题、建议或需要帮助,可加入其在 Matrix、GitHub Discussions 或 Discourse 论坛的社区。报告 bug 或崩溃时,应先搜索现有 issue 和讨论,若无类似问题再新建。

免责声明

  • 此项目与 Bitwarden 或 Bitwarden, Inc. 无关联(尽管一位活跃维护者受雇于 Bitwarden,但其贡献是独立的)。
  • 维护者团队共同决定项目方向,专注于服务自托管社区(个人、家庭及小型组织)。
  • 重要提示:项目方不对使用过程中可能发生的数据丢失负责。强烈建议定期备份文件和数据库。如遇数据丢失,请立即联系项目团队。
  • 项目原名 Bitwarden_RS,为避免与官方 Bitwarden 服务器混淆及商标问题而更名为 Vaultwarden。
21. The Syndicated Actor Model (syndicate-lang.org)

联合行动者模型摘要

核心概念

联合行动者模型是一种新型并发编程模型,它结合了行动者模型、元组空间和发布/订阅系统的特点。其核心思想是通过数据空间(一种特殊行动者)来复制和共享状态,而不仅仅是传递消息。

三大核心思想

1. 联合行动者模型

  • 本质:基于邻近并发组件之间的状态共享机制
  • 关键组件
    • 数据空间:负责路由和复制已发布数据
    • 断言:行动者发布的内部状态部分
  • 整合特性:融合了行动者的状态同步、元组空间的共享状态、Erlang式的故障处理机制

2. 会话并发

  • 核心理念:通信的目的是共享状态,从而复制信息
  • 关键概念
    • 会话框架:定义任务边界的事实集合
    • 会话状态:包含领域知识、认知知识和兴趣知识
    • 递归结构:会话可包含子会话,形成层次结构

3. 联合DSL

  • 语言扩展:在编程语言中添加特定语法结构
  • 重要构造
    • 小平面:表示(子)会话的构造
    • 状态断言:自动向对等方传播状态变化
    • 兴趣表达:通过断言表达对特定事实的兴趣

与其他模型的对比

模型 特点 局限
行动者模型 基本消息传递 不善处理共享状态
元组空间 状态传递为主 故障容错和最终一致性问题
发布/订阅 多播消息 处理有状态对话困难

技术实现支持

Preserves数据语言

  • 用途:跨编程语言和网络通信的通用数据语言
  • 特点
    • 支持用户定义记录
    • 基于数据模型的值比较
    • 可读语法和紧凑二进制格式

网络协议

  • 功能:支持跨网络链接的联合行动者通信
  • 消息类型:包括断言、撤销、消息和同步

安全机制

  • 使用对象能力确保分布式系统安全
  • 基于模式匹配的权限控制
  • 支持安全的委托和权限衰减

应用示例

文章展示了使用Syndicate DSL编写的聊天程序,演示了:

  • 用户到场/离开的通知
  • 昵称管理
  • 消息广播

作者信息

该模型由Tony Garnock-Jones提出,他是一名计算机科学研究者和软件开发者,拥有相关领域的博士学位。

该模型通过将状态共享、会话结构和安全访问控制整合到统一框架中,为构建可靠的分布式和并发系统提供了新的方法论。

22. Tmpmail: Temporary email right from your terminal written in POSIX sh (github.com)

Tmpmail 是一款用 POSIX sh 编写的命令行工具,允许用户在终端中创建临时邮箱地址并接收邮件。它主要依赖 1secmail 的 API 来收发邮件。

核心功能

  • 生成临时邮箱:可随机生成地址,也可指定自定义地址。
  • 查看收件箱:列出所有邮件及其 ID。
  • 读取邮件:支持查看指定 ID 的邮件或最新邮件。
  • 显示选项:默认使用 w3m 渲染 HTML 邮件,但可通过 --browser 参数指定其他文本浏览器或 GUI 浏览器。
  • 剪贴板支持:通过 --clipboard-cmd 定义命令(默认为 xclip),或使用 -c 参数将邮箱地址复制到剪贴板。

依赖项 运行需依赖以下程序:w3mcurljqxclip

安装方式

  • 本地安装:从 GitHub 下载脚本并赋予执行权限,然后移至 PATH 目录。
  • 包管理器:支持通过 AUR、Pacstall(适用于 Debian/Ubuntu)和 Nixpkgs 进行安装。
  • Docker:提供了 Dockerfile,可构建镜像并在容器中运行。

使用示例

  • 生成随机邮箱:tmpmail --generate
  • 生成指定邮箱:tmpmail --generate custom@domain.com
  • 查看收件箱:直接运行 tmpmail
  • 查看最新邮件:tmpmail -r
  • 以纯文本查看邮件:tmpmail -t [邮件ID]

该工具的设计灵感来源于 Mitch Weaver 的 1secmail 脚本。

23. The Blue Collar Jobs of Philip Glass (www.honest-broker.com)

菲利普·格拉斯的蓝领生涯

菲利普·格拉斯作为极简主义音乐的代表人物,其职业生涯的独特之处在于:他在四十多岁之前一直从事各类蓝领工作,以维持生计的同时坚持音乐创作。他的经历揭示了艺术家在缺乏经济支持下,如何通过体力劳动与创作并行,最终实现职业转型。

早期求学与经济压力

格拉斯十五岁即考入芝加哥大学,后就读茱莉亚音乐学院,并师从娜迪亚·布朗热。尽管布朗免费教他,但格拉斯仍需依靠打工支付学费。他的家人因担心他像家族中失败的艺术家亲戚一样,反对他从事音乐。为筹措学费,他曾在美国伯利恒钢铁厂操作起重机,并在工间阅读赫尔曼·黑塞的小说。

多元化蓝领工作

返回纽约后,格拉斯开启了长达二十余年的“日工”生涯:

  • 搬家服务:他成立搬家公司,通过《村声》广告接单,每周仅工作20-25小时即可维持生活。
  • 建筑与水管工:他参与艺术家阁楼的建造,自学水管安装,从修理水槽到处理热水系统,并在百老汇附近的水管公司工作三年。这段经历甚至影响了他为雕塑家理查德·塞拉推荐铅材料。
  • 出租车司机:1970年代中期,为获得更灵活的时间,他成为纽约出租车司机,常在夜间工作后通宵作曲。其代表作《爱因斯坦在海滩》便是在此期间完成。开出租期间他曾遭遇抢劫,险些丧命。

艺术与工作的相互影响

格拉斯从未获得过学术职位或创作资助,甚至因工作被收回已获得的3000美元补助。巡演往往亏损,需工作数周才能弥补开支。然而,这些体力劳动并未阻碍其创作,反而可能为他音乐中的节奏与质感提供了养分。他自称艰苦的体力劳动让他在20-30岁时保持健康,并认为自己因此“多活了二十年”。

职业转型与遗产

1978年,42岁的格拉斯因受荷兰歌剧院委托创作《非暴力》(灵感源自甘地),终于能够全职从事音乐。他的经历体现了惊人的韧性:在纽约最艰难的时期,他将各种蓝领工作转化为自力更生、精力与信心的来源。如今87岁的他仍活跃在乐坛,其生涯不仅是音乐的典范,更是艺术家通过多元身份实现自我重塑的范例。

24. Project Oak: Meaningful control of data in distributed systems (github.com)

Project Oak:分布式系统中数据的有效控制

Oak 是一个用于构建分布式系统的软件平台,旨在以透明的方式提供关于系统行为的可外部验证(或可证伪) 的声明。它提供了构建Enclave 应用程序的构建块——这些应用程序与其运行的宿主环境隔离,并支持远程证明。

核心概念

  • 分布式系统:由异构“节点”组成,包括运行在服务器上的 Enclave 应用程序(如数据中心、公有云)、客户端设备上的普通应用、HTTP/gRPC 服务或存储系统。
  • 节点交互:通信双方互为“发起者”和“响应者”,其中任意一方或双方都可能是 Enclave 应用程序。
  • 远程证明:Enclave 应用程序可以向其他节点证明自身状态,证据包括其软件和硬件身份,与受防篡改硬件保护的本地加密密钥绑定,并由宿主上的一个或多个信任根签名。
  • 信任根:聚焦于基于虚拟机的可信执行环境(TEE),如 AMD SEV-SNP、Intel TDX。硬件密钥由 TEE 制造商(如 AMD、Intel)签名,从而将信任分布到多个不串通的参与者,减少对服务提供商的信任需求。
  • 加密通信:启动时,Enclave 应用程序生成本地密钥对,并将公钥与其证明绑定。通信双方在建立端到端加密通道时,会交换证明以评估对方的可信度,从而确保机密性完整性真实性

关键设计

  • 拆分架构:为最小化攻击面和可信计算基(TCB),采用:
    • Enclave 应用程序:在 TEE 内运行,访问解密密钥,处理解密的请求并加密响应。该二进制文件与可外部验证的声明关联。
    • 主机应用程序:在不受信任的宿主环境运行,作为前端暴露 gRPC 端点,仅处理加密数据,负责创建和维护 TEE 内的 Enclave 实例并转发数据。此架构使得服务提供商无法在未被检测的情况下替换 Enclave 应用程序。
  • 密封计算:Oak 的典型用例是构建隐私保护的密封计算应用。客户端将数据发送至 Enclave 应用程序(通常在服务器端),服务提供商无法看到输入、输出或计算副作用。
  • 操作系统支持:TEE 内支持两种风格:
    • Oak Restricted Kernel:极简微内核,仅支持单 CPU 和单应用,提供严格限制的系统调用,适合信任代码基需全面审查且可接受性能受限的场景。
    • Oak Containers:以 OCI 运行时 bundle 提供,包含完整 Linux 内核和容器运行时,支持多 CPU 和更灵活的开发体验,但可信代码基更大,依赖 Linux 生态系统的安全性。
  • 远程证明协议:采用多阶段协议测量启动过程中每层(超越引导加载程序)的身份,并通过设备标识符组合引擎(DICE)将其与 TEE 证据加密绑定。连接时,节点请求证明和背书(如来自 CPU 制造商的证书链),验证证据是否匹配预期。
  • 透明发布:一套格式和工具,允许开发者以透明、不可否认的方式发布和消费关于二进制产物的声明。依赖 Sigstore 的 Rekor 作为外部仅追加可验证日志,确保签名被记录,防止开发者在 Enclave 应用程序中插入后门而不被发现。

信任模型

  • 不可信:大多数硬件、宿主操作系统(内核、驱动等)、虚拟机监控器(VMM)。服务提供商可能拥有宿主根访问权限并试图窃取数据,Oak 通过 TEE 管理的加密密钥保护数据。
  • 可信但可验证:Oak 平台库、组件及 Enclave 应用程序运行于 TEE 内,可访问未加密数据。通过开源和透明发布支持外部检查和验证。
  • 可信:硬件 TEE 制造商(如 AMD、Intel)。客户端在连接时自行决定信任哪些 TEE 制造商。
  • 侧信道攻击:对机密计算环境构成重大挑战,现有 TEE 可能存在漏洞,需要硬件和软件创新进行防御。物理攻击需要服务提供商在数据中心实施强物理安全措施。
25. Show HN: Double – Design and invest in your own stock index
26. Show HN: Open-source LLM provider price comparison (github.com)

开源LLM提供商价格比较项目概要

该项目旨在为“计算游牧者”提供开源大语言模型(LLM)推理的成本比较。主要工作包括:

  1. 核心目标:收集来自不同云服务商/提供商的GPU基准测试数据,并将其与其他提供商的固定按词元(token)计费成本进行比较。
  2. 用户价值:通过使用其平台,用户可以做出明智的决策,以选择具有成本效益的LLM选项、经济实惠的语言模型以及高效的LLM GPU。
  3. 提供的工具:一个全面的LLM价格比较工具,旨在帮助用户评估多种AI模型,并提供AI模型定价指南。该项目帮助用户为所选模型选择合适的GPU和云提供商,促进GPU推理和LLM GPU基准测试。
  4. 重点比较案例:文章中明确列出了针对 Llama 3.1 instruct 8bLlama 3.1 instruct 70b 模型的比较示例。
  5. 项目性质:这是一个开源项目,鼓励社区参与。项目提供了CONTRIBUTING.md文件说明参与方式,欢迎提交问题、提问和拉取请求。同时,项目遵守开源社区行为准则,相关信息见CODE_OF_CONDUCT.md
  6. 部署方式:支持自我托管(Source Self-hosted)。

总结:这是一个旨在通过收集和对比GPU基准数据与按词元计费成本,来帮助用户为开源LLM(特别是Llama 3.1系列模型)选择最具成本效益的推理方案和云服务提供商的开源项目。

27. LLM-based sentiment analysis of Hacker News posts between Jan 2020 and June 2023 (outerbounds.com)

该研究旨在通过分析Hacker News的帖子及评论,量化社区对不同话题的情感反应。研究使用LLama3 70B大语言模型,分析了2020年1月至2023年6月期间,超过10万条获得5条以上评论的热门帖子。

研究方法与流程 研究通过Metaflow工作流自动化完成数据收集与分析,主要步骤包括:

  1. 数据收集:从公开数据集筛选出约10万篇符合条件的帖子并下载内容。
  2. 帖子分析:使用LLM为每篇帖子提取10个最相关的话题标签。
  3. 评论分析:利用Google BigQuery的Hacker News数据集重建评论串,并用LLM对每个讨论串进行情感评分(0-9分,0为最负面,9为最正面)。

主要发现

  • 热门话题:编程、人工智能、开源、计算机科学和Python等技术话题占据主导,但仅占总话题的一小部分。话题趋势明显,如“AI”、“自然语言处理”自2022年起激增,而“COVID-19”相关话题已消退。
  • 社区情绪
    • 整体情感:评论情绪整体偏向积极,这与社区给人的乐观印象一致。但平均情绪在2021年8月后呈现缓慢下降趋势。
    • 喜爱与厌恶的话题:社区对编程语言(如Rust、Python)、开源项目、怀旧技术等话题普遍有正面反应;对FTX诈骗、监控、裁员、种族剖析等话题则表现出强烈的负面情绪。
    • 两极分化话题:如谷歌、政府监管、风险投资等话题容易引发极端正面或极端负面的讨论。

技术实现与价值 研究强调了当前大语言模型在处理此类复杂文本分析任务上的高效与高质量,大幅降低了研究门槛与成本。所有代码与生成的数据集均已开放,可供进一步探索。

研究局限 分析指出,LLM对中性情绪的判断可能存在偏差,且情感评分仅代表算法解读,需谨慎参考。整个研究过程展示了利用现代LLM和MLOps工具(如Metaflow)进行大规模社区洞察的可行性。

30. Hackers may have leaked the Social Security Numbers of every American (www.engadget.com)

2024年4月,黑客组织USDoD声称出售从数据经纪商National Public Data窃取的29亿条记录,涵盖美国、英国及加拿大公民数据。随后部分数据已在论坛泄露。此次最全面的泄露包含27亿条记录,涉及美国居民的姓名、社会安全号码(SSN)、别名及所有已知居住地址,数据未加密,总量约277GB。

National Public Data通过公开来源采集个人资料,用于背景调查等用途。此前泄露中曾包含电话号码和邮箱,但本次最全面的泄露未包含这些信息,因此无法通过Have I Been Pwned?查询。多家媒体核实发现,数据中多人的家庭信息(包括已故亲属)准确,但部分SSN与错误个体关联,且地址信息可能来自旧备份,未包含当前住址。

该事件已引发集体诉讼。尽管无法完全确认是否包含所有美国公民数据,但影响范围极广。建议采取以下防护措施:

  • 警惕诈骗及钓鱼攻击,勿泄露账户信息。
  • 监控信用报告,发现异常及时通知信用机构(如Experian、Equifax、TransUnion)。
  • 申请信用冻结,防止他人冒名开户、贷款或办理信用卡。
  • 考虑使用身份欺诈保护服务并清除公开网络个人信息(可能收费)。
  • 启用双因素认证(推荐使用认证器应用而非短信验证)。
  • 使用密码管理器,避免重复使用密码,并定期更换敏感账户密码。
31. Rust Atomics and Locks (2023) (marabos.nl)

《Rust Atomics and Locks (2023)》一书旨在帮助各水平的Rust程序员深入理解底层并发编程。作者Mara Bos(Rust库团队前负责人)通过本书系统讲解了原子操作、内存排序及其与操作系统API的结合运用,从而构建互斥锁、条件变量等常见并发原语。书中强调,尽管Rust生态系统拥有丰富的并发数据结构库,但正确实现这些结构仍具挑战性,内存排序错误并不少见。

本书的核心内容涵盖:Rust类型系统如何有效保障并发正确性;原子操作、内存排序、互斥锁和条件变量的详细解析;原子操作在Intel与ARM处理器上的实际运行机制;操作系统如何辅助实现锁机制;编写包含并发、原子操作和锁的正确代码的方法;以及如何正确构建自定义的锁与同步原语。通过学习,读者将全面掌握Rust内存模型、处理器架构与操作系统角色的协同工作原理,建立坚实的底层并发知识基础。

32. A different kind of keyboard (2021) (ianthehenry.com)

文章总结:一种不同的键盘 —— Peggi琶音键盘

本文介绍了作者设计的一种名为 Peggi 的八键输入设备。它并非传统的“和弦键盘”(需要同时按下多个键),而是一种琶音键盘,要求用户按顺序按下多个键来输入字符。

核心设计与工作原理

  • 基本概念:Peggi键盘旨在贴在手机背面使用。它有6个“常规”键、1个空格键和1个修改键。每个手指固定负责一个键,无需移动。
  • 输入方式
    • 小写字母和常用标点:需依次按下两个键
    • 大写字母和其它符号:需依次按下三个键
    • 数字和罕用符号:需按住修改键(近似和弦操作)。
  • 设计动机:作者因缺乏音乐训练而难以掌握和弦键盘,认为顺序按键(琶音)对普通键盘用户更直观、更易学习。

优点与体验

  1. 学习门槛低:顺序按键是人已具备的技能(类似常规打字),比同时按键更易上手。
  2. 响应更快:字符在按键按下时即输入(而非松开时),感觉更灵敏、更熟悉。
  3. 效率潜力:6个键通过顺序组合可产生30种双指琶音,足以映射所有常用字母,按键数量少于和弦键盘所需。
  4. 容错设计:空格键始终直接输入空格,有助于隔离错误,防止一个失误污染整句输入。

缺点与挑战

  1. 输入事件数量:理论上每个字母需两次按键(总输入事件数与和弦键盘相当,但方式不同)。
  2. 错误影响:漏按或多按一个键会导致后续所有字符错位。但作者指出,在实际使用中因手指不移动,此类错误罕见。
  3. 人机工程学问题
    • 手机持握不自然,拇指操作不便,横向模式勉强可用,纵向模式体验很差
    • 键盘更适用于文本输入,而非文本编辑。
  4. 键位布局:基于主观舒适度和字母频率手动设计(例如,将英文最常用词“the”设计为手指向上滚动的连贯动作),并非经过严格优化。

性能与现状

  • 理论速度:由于平均每个字符约需1.8次按键,理论上可能达到常规键盘速度的一半(约50词/分钟)。
  • 实际速度:作者实测仅约10词/分钟,远低于理论值。
  • 发展历程:作者早期用廉价数字键盘制作过初代原型,并配有一个专用iOS应用。后受 Faunchpad 启发,使用可编程的八键宏键盘和 QMK 固件制作了新原型。
  • 结论:作者认为这只是一个有趣的实验,目前对自己并不实用,但希望能启发他人。

相关资源

  • 设计灵感来源于 GKOS
  • 原型基于 Faunchpad 硬件。
  • 作者提供了固件代码(GitHub)和在线演示链接。
  • 文章提及其他相关项目,如 ASETNIOP(和弦布局)和 Twiddler(商业和弦键盘)。
33. Things I learned from teaching (2023) (claytonwramsey.com)

2023年教学经验总结

作者在2023年春季作为本科生,独立讲授了一门名为“COLL 110:国际象棋人工智能”的棋类引擎课程。他从教学中获得的感悟远多于学生。本文旨在分享教学前希望知道的心得,并为未来可能再次开设该课程留下记录。

主要教学挑战

  1. 学生并非最优先事项
    尽管讲师对主题充满热情,但学生选修该课程往往仅为了少量学分,他们的主要精力分散在其他课程、工作、家庭和社交活动中。这可能导致学生表现出对主题的厌倦感,但实际上他们只是没有足够的时间和精力深入探究。
    解决思路:讲师需要将复杂材料分解为简明易懂的模块,设计既能激发思考又不至于令人挫败的作业。

  2. 学生背景差异巨大
    课程吸引了编程经验从仅完成入门课程到比讲师更资深的学生。如何设计一套既能满足经验学生、又不会让新手感到困惑的课程体系是核心难题。
    尝试方法:在讲座中兼顾不同层次(例如简要引入高级概念但不深入),并在作业中设置基础任务与可选挑战,最终项目允许学生根据能力选择方向。

  3. 课堂参与度迅速下降
    传统“讲授-作业”模式效果有限。学生难以长时间保持主动倾听,尤其在一天结束时的课程中。结果往往是只有一半学生在认真听讲。
    改进方向:考虑采用混合式教学(如翻转课堂),或增加课堂互动实践,例如让学生在课上实时编写和调试代码,以促进主动学习。但缺乏助教使得全面个性化指导难以实现。

  4. 学生很少参加答疑时间
    作业提交中常见“此功能未完成,不知原因”的注释,而这些疑问本可通过答疑轻松解决。学生不参加答疑的原因包括:

    • 时间安排:他们常拖延至截止前才开始作业,错过可用答疑时间。
    • 心理障碍:部分学生觉得打扰讲师,或因过往不佳体验而回避。
      建议措施:在作业截止当日安排答疑,并将“答疑时间”改称为“学生时间”,以强调其服务性质。

总结与感悟

教学这门选修课并非一帆风顺,作者坦言并未掌握教学艺术,但认为所遇挑战具有普遍性。这段经历在写作、公开演讲和专业沟通方面带来了显著成长。作者鼓励犹豫是否尝试教学的人勇于实践,因为与学生的互动本身就是一种宝贵回报。

34. ARPA-H announces awards to develop novel technologies for precise tumor removal (arpa-h.gov)

ARPA-H宣布资助开发肿瘤精确切除新技术

美国高级健康研究计划局(ARPA-H)宣布,通过其“精准外科干预”(PSI)项目,首批选定八个团队获得资金支持,旨在开发革命性技术,使外科医生能够一次性、更精确地切除肿瘤。

项目概述与目标

  • 资助机构与金额:ARPA-H(隶属于美国卫生与公众服务部)承诺总投入不超过1.5亿美元
  • 核心目标:开发新型技术,提高肿瘤切除精度,从而显著降低重复手术率,并减少对神经、血管、淋巴管等关键结构的意外损伤。
  • 项目愿景:PSI计划旨在彻底改变手术方式,其成果有望应用于癌症及其他疾病的手术,改善患者治疗效果。

两大技术领域及资助团队详情

PSI项目涵盖两大技术方向:癌细胞定位(技术领域1)和关键解剖结构定位(技术领域2)。

技术领域1:癌细胞定位

此领域旨在帮助医生在术中判断癌细胞是否已切除干净。

  • 技术领域1-A(检测已切除肿瘤表面残留癌细胞)

    • 杜兰大学:利用大孔径相机和结构光照明显微镜对切除的整个肿瘤进行三维高分辨率成像,并开发AI算法自动识别癌细胞。(资助上限2290万美元)
    • 莱斯大学:开发使用紫外正荧光成像的新型显微镜,利用荧光染色标记细胞,并开发AI算法将图像转换为类似常规病理图像的样式进行分类。(资助上限1800万美元)
    • 华盛顿大学:开发光照扫描显微镜系统对肿瘤表面进行成像,并利用AI算法进行“伪染色”,无需在手术室实际染色即可进行图像分类。(资助上限2110万美元)
  • 技术领域1-B(检测患者体内微观癌细胞残留)

    • 加州大学旧金山分校:发明一种光学阵列显微镜,可直接压在手术腔表面进行多色成像,并开发基于酶活性的多癌种荧光染色剂。(资助上限1510万美元)
    • 伊利诺伊大学厄巴纳-香槟分校:结合光学相干断层扫描与非线性光学技术,检测可疑组织并多层展示细胞的代谢和结构特性。(资助上限3260万美元)
    • 约翰斯·霍普金斯大学(同时参与领域1-B和领域2):开发一种新型非接触式光声内窥镜,提供更丰富的手术视野,并开发多癌种荧光造影剂。(资助上限2090万美元)

技术领域2:关键解剖结构定位

此领域旨在让神经、血管、输尿管等关键结构在手术中更清晰可见。

  • 达特茅斯学院:创建一种集成于腹腔镜的成像解决方案,特别适用于前列腺癌手术,使用神经、尿道和血管荧光染色剂,并三维映射这些结构。(资助上限3130万美元)
  • 约翰斯·霍普金斯大学:使用现有荧光染料结合其新型光声内窥镜,使深层组织中的血管和神经可视化,避免误伤。(同上文描述)
  • Cision Vision公司:利用短波红外和高光谱成像,并结合AI算法,在不使用染色剂的情况下区分不同组织类型,从而可视化血管、神经,尤其是淋巴结构。(资助上限2230万美元)

项目要求与展望

PSI项目要求所有方案必须:

  1. 用户友好:设备设计需适配不同使用者(如不同手型的外科医生)。
  2. 公平可及:优先考虑低成本解决方案,并必须在乡村医院进行测试。
  3. 人群代表性:设备验证需在能反映疾病人口特征的患者群体中进行。

ARPA-H主任Renee Wegrzyn博士表示,这些技术有望“第一次且每一次”都成功切除癌症,从而减少手术错误、降低复发率、减轻医疗成本,并改善数百万癌症患者的健康结局。

37. Is "Rich Dad Poor Dad" a Fraud? (economistwritingeveryday.com)

《富爸爸穷爸爸》真实性与内容核查总结

背景与动机 罗伯特·清崎于1997年出版的《富爸爸穷爸爸》全球销量超3200万册。该书自称非虚构,通过对比高学历却贫穷的“穷爸爸”与辍学却富有的“富爸爸”,传授利用借贷投资房地产致富的秘密。因清崎近期发表争议言论(如自称“负债的亿万富翁”并贬低提倡无债生活的理财专家Dave Ramsey),且现实中鲜有人靠其建议致富,引发了本文作者对该书的事实核查。

初步印象与内容缺陷 作者初读时认为该书“投资生息资产而非消费品”的理念合理,房地产致富的故事也具吸引力。但书中缺乏具体的操作细节,主要目的是推销清崎自己的昂贵课程,给人一种“好得不真实”的直觉。

事实核查与虚构争议 多方调查(如John T. Reed等人的分析)表明,书中核心的“富爸爸”人物纯属虚构,并不存在。此外,没有证据显示清崎在通过卖书赚取数百万美元之前,曾通过房地产交易获得过巨大成功。将虚构故事包装成事实,严重违背了诚信原则。

建议的危害性与专家严厉批评 除了造假,书中的许多财务建议被指适得其反、有害甚至违法:

  • 违法行为:建议利用公司内部朋友的内幕消息炒股(构成内幕交易);在合同中插入“需合伙人批准”条款以便违约,而所谓的合伙人其实是他的猫(构成欺诈)。
  • 专家评价:The Motley Fool的Richard Emert指出其缺乏具体建议,只是80年代“零首付”房地产骗局的翻版。调查者John T. Reed直言这是“最愚蠢的财务书之一”,充满事实错误。他批评清崎只是个毫无财务专业知识的推销员,书中几乎没有好建议,纯粹是迎合大众“不劳而获、快速致富”幻想的骗局。

结论 尽管清崎的追随者可能喜欢他的个人魅力,但个人魅力绝不应成为评估财务建议的标准。家庭财务是严肃的事务,盲目听信缺乏实质内容且存在造假和违法风险的“理财大师”是极不适当的。

39. Pixel Watch 3 (blog.google)

Pixel Watch 3 摘要

核心亮点

Pixel Watch 3 是谷歌最新旗舰智能手表,主打性能提升与深度健身功能整合,并首次引入脉搏丢失检测这一可能挽救生命的创新功能。

设计与显示

  • 两种尺寸:提供 41mm 和全新的 45mm 两种规格。
  • 显示屏升级:搭载更先进的 Actua 显示屏,峰值亮度达 2000 尼特,是前代的两倍,阳光下清晰可见;最低可调至 1 尼特,暗光环境使用更舒适。边框更窄,屏幕面积显著增加(45mm 增加 40%,41mm 增加 10%)。
  • 续航与充电:得益于能效优化的显示屏、Wear OS 5 系统及混合架构,续航可达全天。新的“省电模式”可延长电池寿命至最长 36 小时。45mm 版本电池容量增大 35%,41mm 充电速度提升 20%。

健康与健身功能

  • 恢复与负荷管理:引入三项新工具:
    • 每日就绪度:通过分析静息心率、心率变异性和近期睡眠等生物指标,评估身体恢复状态。
    • 心肺负荷:跟踪全天活动中心脏的强度与负荷,监测训练趋势,避免过度或不足训练。
    • 目标负荷:每日提供个性化训练目标,综合考虑心肺负荷与就绪度,平衡训练与恢复。
  • Fitbit 晨间简报:每天早晨在手腕上主动推送摘要,包括睡眠、就绪度、目标心肺负荷、周运动目标进度、天气以及健康指标(如心率变异、血氧、皮肤温度)是否异常。
  • 跑步工具增强
    • 训练构建器:可自定义跑步计划,设定距离、时间、配速或心率区间目标,并轻松创建间歇跑。
    • 实时指导:提供触觉反馈和音频提示,如热身结束、配速偏离、心率超标或需切换间歇。
    • 跑姿分析:利用先进的运动传感和机器学习,分析步频、步幅长度与高度、触地时间等数据。
  • Fitbit Premium:附带六个月免费订阅,提供由谷歌 AI 驱动的每日个性化跑步推荐,并可访问 Peloton 精选课程。

关键安全功能

  • 脉搏丢失检测:首创功能,可检测心脏突然停止跳动的事件。检测到后,手表将自动拨打紧急服务电话,并发送包含位置信息的自动化求救信息。该功能计划于 2024 年 9 月在欧洲部分国家推出。

生态整合

  • 深度集成 Google 与 Pixel 生态
    • 可作为 Google TV Streamer 的遥控器。
    • 通过手腕查看 Google Home 应用的摄像头实时画面。
    • 使用 Pixel Recorder 应用手腕端录音,内容自动同步至手机并可搜索、转录。
    • 通话助手:利用 AI 屏蔽垃圾电话,并可代接来电、保持等候。
    • 超宽带芯片:支持用手表滑动解锁 Pixel 手机,或作为数字车钥匙解锁并启动兼容的宝马和 MINI 汽车。

款式与价格

  • 颜色与表带:提供多种表壳与表带颜色组合,支持皮革、金属和编织等多种材质的配件表带。
  • 售价与预订
    • 41mm 版本:蓝牙/Wi-Fi 版 $349.99,LTE 版 $449.99。
    • 45mm 版本:蓝牙/Wi-Fi 版 $399.99,LTE 版 $499.99。
  • 发售日期:2024 年 9 月 10 日起,在 Google Store、Google Fitbit.com 及全球指定零售商处发售。
40. Show HN: We made a tool to help developers improve OpenAPI specs (github.com)

Rate My OpenAPI 工具套件摘要

核心目标 Rate My OpenAPI 是由 Zuplo 推出的一套工具,旨在帮助开发者提升 OpenAPI 规范文件的质量,从而改善 API 消费者的使用体验,并确保 API 的成功。

OpenAPI 标准介绍 OpenAPI 是描述 HTTP API 的行业标准。在项目中使用它,可以利用其他工具生成文档、代码、测试、模拟数据乃至部署 API,形成 OpenAPI 生态闭环。

评估类别 该套件从四个关键类别对 OpenAPI 定义文件进行全面评估和评分:

  1. 文档质量:确保 API 文档清晰完整,易于用户理解和使用。
  2. SDK 生成支持:验证 API 定义是否支持生成不同编程语言的 SDK,便于集成。
  3. 安全性:检查是否遵循安全最佳实践,防范常见漏洞。
  4. 完整性:确认 API 定义完整,所有必要的端点、参数和响应均已准确描述。

工具套件组成

  1. 网站

    • 网址https://ratemyopenapi.com
    • 功能:提供直观的界面上传并分析 OpenAPI 文件。
    • 特点
      • Linting:上传并检查文件,获得详细反馈。
      • 综合评分:获得关于文档、SDK、安全和完整性的清晰评分。
      • 详细报告:获取深入的报告,指出改进领域并提供优化建议。
      • 可视化:通过内联反馈直观地查看 API 结构和质量。
  2. CLI 命令行工具

    • 适用场景:适合偏好命令行工作或需要将质量检查集成到开发工作流中的开发者。
    • 特点
      • 自动化检查:可集成到 CI/CD 管道中,对每次提交进行自动质量检查。
      • 详细输出:直接在终端获得详细反馈,并可进一步集成到开发流程。
    • 安装与使用:通过 npm install rmoa 安装,使用 rmoa lint --filename <文件> --api-key <API_KEY> 命令。
  3. GitHub Action

    • 功能:无缝集成到代码仓库,确保 API 质量持续达标。
    • 特点
      • 自动 Linting:在每次 Pull Request 和 Push 时自动检查 OpenAPI 定义文件。
      • 内联反馈:直接在 Pull Request 中通过评论获得问题反馈和改进建议。
      • 持续改进:通过持续监控和反馈维护高标准的 API 质量。
    • 集成方式:通过在 GitHub Actions 工作流文件中配置 uses: zuplo/rmoa-action@v1 实现。
  4. API

    • 用途:所有工具均使用其 API 进行分析和返回结果。开发者也可以直接调用这些 API,以构建自定义工具或集成评估功能。
    • 文档:详细端点文档可在 https://api.ratemyopenapi.com/docs 获取。

获取 API 密钥 所有工具均需要 API 密钥。开发者可以免费注册获取,注册地址为 https://api.ratemyopenapi.com/docs。

开源许可 该项目采用 MIT 许可证。

41. CSVs Are Kinda Bad. DSVs Are Kinda Good (matthodges.com)

CSVs Are Kinda Bad. DSVs Are Kinda Good

CSV格式的缺陷

文章通过Python代码示例,具体展示了CSV格式在实际使用中遇到的多种问题:

  1. 数据转义问题:当数据本身包含引号(")时,CSV通过双引号("")或反斜杠(\)进行转义,但如果读写双方对转义方式未达成一致,就会导致解析错误。
  2. 分隔符不一致:用户可能使用非标准的分隔符(如|),如果读取时未正确指定,会导致所有数据被错误地合并到一个字段中。
  3. 换行符平台差异:不同操作系统使用不同的换行符(如\r\n\n),处理不当会导致读取时出现空行。
  4. 字段内换行符:数据字段内若包含换行符,即使使用引号包裹和通用换行符处理,仍可能引发复杂的解析问题。

这些问题的根源在于CSV使用逗号、引号、换行符等本身也属于常见文本内容的字符作为结构控制符,因此必须依赖复杂的转义和引用规则,使格式变得脆弱和边缘情况繁多。

DSV作为替代方案

作者提出了DSV(分隔符分隔值) 的概念,其核心思想是使用ASCII控制字符作为分隔符和记录分隔符,从而彻底避免与数据内容冲突:

  • 字段分隔符:ASCII 31(US,单元分隔符)。
  • 记录分隔符:ASCII 30(RS,记录分隔符)。

文章提供了Python实现的DSVWriterDSVReader类。其优势在于:

  • 无需转义或引用:因为这些控制字符极不可能出现在正常文本数据中。
  • 无换行符问题:不使用常规换行符作为记录分隔符。
  • 能可靠处理包含引号、换行符甚至Unicode字符的数据。

DSV的局限性

尽管DSV在理论上更健壮,但存在实际应用中的缺点:

  1. 可读性差:文件在文本编辑器中因非打印字符而显示为乱码。
  2. 工具兼容性低:主流电子表格软件(如Google Sheets)不支持自定义DSV格式,且难以通过界面输入控制字符。
  3. 库支持有限:标准库(如Python的csv模块)硬编码了对常规换行符的支持,难以直接用于DSV。
  4. 生态系统缺失:绝大多数现有工具和流程围绕CSV设计,DSV缺乏广泛支持。

结论

CSV因其内在的数据与结构符冲突问题而复杂易错。DSV利用历史上的ASCII控制字符提供了一个更坚固、无冲突的数据交换格式。然而,选择DSV意味着要面对工具链支持和可读性的挑战。在编写能产生和消费数据、且数据可能包含任意内容(尤其是来自不可靠输入)的软件时,DSV可能是一个更优的选择。

42. Reversing the AMD Secure Processor (PSP) – Part 2: Cryptographic Co-Processor (dayzerosec.com)

AMD 安全处理器(PSP)加密协处理器(CCP)分析

本文是系列文章的第二部分,聚焦于 AMD 安全处理器(PSP)中的加密协处理器(CCP),主要分析了其最新版本 CCPv5 的架构、关键功能及在固件加载与解密中的实际应用。

CCPv5 核心功能与架构

CCP 是一个专用硬件模块,主要承担两项任务:

  1. 硬件加速加密:支持对称加密(AES、DES3)、非对称加密(RSA、ECC)、哈希(SHA)以及数据解压(ZLIB)等多种引擎。
  2. DMA 拷贝引擎:用于执行大规模数据拷贝操作,包括加载和解压固件。

本地存储块

CCP 利用 本地存储块 作为操作过程中的上下文存储区。与 CCPv3 相比,v5 的 LSB 功能更为通用,可直接在块内或跨块进行加密/解密,实现安全的密钥派生。

  • 容量:共 8 个 LSB,每个 LSB 包含 16 个槽位,每个槽位可存 32 字节数据,总计 4KB 存储空间。
  • 访问控制:5 个 LSB 专用于各自的命令队列,剩余 3 个可供公共访问,并可精细控制不同队列对特定 LSB 的访问权限。

命令队列与描述符

共有 5 个命令队列 用于向 CCP 提交作业。每个队列可容纳 16 个命令。

  • 命令描述符:每个命令占用 256 字节(8 个 32 位字),包含控制字、数据长度以及分别指向源、目标和密钥的 48 位指针
  • 内存类型:指针关联的内存类型标识至关重要,它决定了操作的数据来源与去向,支持三种类型:
    • SYSTEM:系统 DRAM。
    • SB:CCP 本地存储块。
    • LOCAL:PSP 的本地静态 RAM。

实际应用:固件加载与解密

固件加载

PSP 初始程序加载器通过 spiRead() 从 SPI 闪存读取数据。

  • 小数据(<1KB)使用 memcpy
  • 大数据使用 ccp_passthrough() 进行 DMA 拷贝。该函数通过 MMIO 寄存器向 CCP 的命令队列 #0 提交请求。

固件解密

固件可能被分层加密:

  1. 根密钥:存储在 CCP 锁定的 LSB 槽中,对 PSP 固件自身不透明,难以提取。
  2. 中间密钥加密密钥:存储在闪存中,由根密钥解密。
  3. 组件密钥:嵌入固件头部,由 iKEK 解密。
  4. 固件主体:使用组件密钥解密。

解密流程示例:

  • 启动时,使用 LSB 地址 0x80 处的密钥解密 wrapped_ikek,将解密后的 iKEK 存储在本地内存(0xF2C0)。
  • 当需要加载加密固件时(例如通过系统调用),先调用 component_key_decrypt() 使用存储的 iKEK 解密固件头中的组件密钥。
  • 随后调用 fw_body_decrypt(),使用组件密钥和固件头中的初始化向量,以 AES-128 CBC 模式解密固件主体。

结论与要点

  • 接口简洁:尽管功能强大,CCP(特别是 PSP 内部使用的部分)的接口结构相对直接,复用了与 x86 内核中 Secure OS 提交作业相似的结构。
  • 内存交互:其支持在 PSP 本地 SRAM、CCP 本地存储块和系统 DRAM 三种内存类型间进行操作,提供了灵活的数据流。
  • 安全设计:CCP 持有如根密钥等核心秘密。利用 LSB 槽位锁定队列专属访问 实现的深度防御机制是安全的关键。若相关配置不当,可能导致密钥等敏感数据泄露,这为针对 Secure OS 的研究提供了潜在方向。
  • 参考资料:分析基于 Linux 内核的 CCP 开源驱动代码及相关的故障注入攻击研究论文。