2024-11-09

27 篇热帖

1. Delta: A syntax-highlighting pager for Git, diff, grep, and blame output (github.com)

Delta:为Git输出添加语法高亮的交互式分页器

Delta 是一款增强型交互式分页器(pager),用于优化 Git、diff、grep 和 blame 的输出显示,提升代码差异阅读的效率和体验。

安装与基本配置

  • 安装:在多数包管理器中,安装包名为 git-delta,可执行文件为 delta
  • 配置 Git 使用 Delta
    • 直接编辑 ~/.gitconfig
      [core]
          pager = delta
      [interactive]
          diffFilter = delta --color-only
      [delta]
          navigate = true
          dark = true
      [merge]
          conflictStyle = zdiff3
      
    • 或运行命令:
      git config --global core.pager delta
      git config --global interactive.diffFilter 'delta --color-only'
      git config --global delta.navigate true
      git config --global delta.dark true
      git config --global merge.conflictStyle zdiff3
      

核心功能与特性

  1. 语法高亮

    • 支持与 bat 相同的语法高亮主题。
    • 可应用于 git greprggrep 等命令的输出。
  2. 增强差异显示

    • 单词级高亮:使用 Levenshtein 编辑距离算法推断单词级变化。
    • 并排视图:支持侧对侧对比显示,并自动换行长行。
    • 行号显示:可独立或配合其他视图启用。
    • 改进的合并冲突显示:提供更清晰的冲突标记与布局。
    • 支持 Git 的 --color-moved 特性,跟踪代码移动。
  3. 导航与交互

    • 通过 nN 快捷键在差异区段、文件或提交历史(log -p)中快速跳转(--navigate)。
  4. Git blame 增强

    • 提供语法高亮。
    • 支持将提交哈希转换为指向代码托管平台的超链接(--hyperlinks),兼容 GitHub、GitLab、SourceHut、Codeberg 等。
  5. 代码与路径操作

    • 可直接从 diff 输出中复制代码(默认移除 +/- 标记)。
    • 文件路径也可配置为超链接,方便在操作系统中直接打开。
  6. 样式与自定义

    • 提供超过 20 个可样式化元素(如提交头、文件头、差异块头等),支持前景色、背景色、字体属性等精细配置。
    • 使用与 Git 相同的样式语法。
    • 支持 diff-highlightdiff-so-fancy 的兼容模式。
    • 自动检测终端背景的明暗模式,或手动设置为 darklight
  7. 兼容性

    • 不仅处理 Git 输出,也支持传统的统一差异格式(unified diff)。

设计目标

Delta 旨在通过高度可定制的布局和样式,让阅读和分析代码差异变得高效且愉悦,同时允许用户保持与默认 Git 输出的接近程度。

2. Mitochondria Are Alive (www.asimov.press)

核心论点:本文主张,线粒体不仅是细胞器,而是一种具有独立生命特征的生物实体。作者基于科学证据,从生命定义、进化历史和功能特性等多个角度进行论证,旨在更新我们对线粒体的传统认知。


一、 理论起源:内共生假说

  • Lynn Margulis的开创性工作:1967年,Lynn Margulis提出“内共生理论”,认为线粒体起源于约15亿年前被原始真核细胞吞噬、但未被消化的细菌。两者形成共生关系,宿主提供营养和保护,细菌(即线粒体前体)提供能量。
  • 从争议到接受:该理论最初饱受质疑,但后续发现线粒体的膜结构和分子机制与现存细菌高度相似,使其逐渐被生物学界主流接受。

二、 重新定义“生命”:线粒体符合标准

作者反驳了将线粒体视为“非生命”细胞器的普遍观点,并从两种生命定义框架进行论证:

  1. 分子生物学标准(特征清单法)
    • 拥有独立遗传系统:线粒体拥有自己的环状DNA和基因表达系统。
    • 能够自我复制:通过二分裂方式独立增殖,类似于细菌。
    • 处理信息并响应环境:监测激素、氧化应激、能量状态等信号,并据此调控细胞功能(如介导感染细胞的程序性死亡)。
  2. 生物物理学标准(热力学定义)
    • 维持非平衡态:线粒体通过摄入葡萄糖等低熵物质,排出二氧化碳和水等高熵废物,并利用质子梯度合成ATP,从而在细胞内维持高度有序的状态,符合生命系统维持远离平衡态的定义。

三、 对“非生命”观点的反驳

  • 反对意见:主要观点认为线粒体无法独立生存,必须寄生于宿主细胞质中。
  • 作者的反驳:此逻辑存在谬误。自然界中,没有任何生命体是完全孤立存在的。人类胚胎发育依赖母体,许多细菌也生活在其他生物体内(如立克次体、全孢螺菌)。生物的“实际生态位”常与其“潜在生态位”不同。
  • 证据支持:实验证明,线粒体可以在不同物种的细胞间转移(如黑猩猩、大猩猩的线粒体可整合入人类细胞),并发挥治疗作用。这表明其生存能力不局限于单一宿主。

四、 重新认识的深远意义

  1. 科学与医学价值
    • 线粒体功能障碍与心血管疾病、神经退行性疾病、衰老等多种健康问题密切相关。将其视为生命体,有助于我们更深入地理解其病理机制。
    • 为治疗相关疾病、延长寿命乃至工程化改造生物能量代谢(如光合作用)开辟新思路。
  2. 推动技术革新
    • 当前生物技术(如CRISPR)已能精密操控基因(物质与信息),但对生物能量的调控工具仍显不足。我们需要开发类似“CRISPR for mitochondria”的工具来驾驭线粒体。
  3. 思维范式的转变
    • 正如Margulis的理论革新了我们对真核生物起源的理解,接受“线粒体是活的”这一观点,将打破旧有的科学教条,开启对生命复杂性和细胞间共生关系的新认识。
3. Scientist treated her own cancer with viruses she grew in the lab (www.nature.com)

一名病毒学家通过向肿瘤注射实验室培养的病毒成功治愈了自己的乳腺癌,这一案例引发了关于自我实验伦理的讨论。

病毒学家 Beata Halassy 使用自己培养的病毒进行自体治疗,并认为治疗成功且是一次积极经历。然而,研究人员警告称,其他人不应尝试这种方法。

该案例突出了在医疗研究中自我实验的伦理问题。文章同时提及了癌症治疗领域的其他进展,例如利用癌症基因组改进白血病治疗、针对实体瘤的细胞疗法进入临床、以及肿瘤命名方式可能需要改变等。

5. I quit Google to work for myself (2018) (mtlynch.io)

本文作者分享了从谷歌辞职成为独立开发者的经历。在谷歌工作的前两年,他热爱公司环境,但逐渐发现晋升机制存在问题。晋升由匿名委员会决定,依赖于量化指标,而作者许多重要工作(如修复遗留系统、帮助同事)无法量化证明价值。第一次晋升失败后,他试图优化工作方式以迎合晋升标准,但工作逐渐变得功利,不再以解决实际问题为导向。

后来,谷歌取消丰厚节日礼物事件让作者意识到,自己与谷歌只是“商业关系”——他提供服务换取报酬,而非公司的一部分。他反思为何一直为谷歌利益工作,而非为自己的职业发展。同时,项目频繁被取消和调动,让他感到对职业生涯缺乏控制力。

他发现了独立开发者社区,被其自主可控的创业模式吸引。尽管存在风险,但独立开发者能掌握自己的命运。经过长期思考,他决定离开谷歌尝试独立创业,尽管没有明确的商业计划,而是希望通过探索不同项目找到方向。

文章以作者晋升再次失败告终:尽管他为优化晋升而工作的表现获得最高评分,但委员会认为时间太短。这最终促使他离开。后续更新显示,作者已作为独立开发者持续工作多年。

6. It's legal for police to use deception in interrogations. Some want that to end (text.npr.org)

摘要:

在美国所有州,警察在审讯中向成年人撒谎是合法的,这常被用作获取供词的执法工具。然而,越来越多的人呼吁终止这一做法,以减少错误定罪。

案例背景:Ted Bradford在华盛顿州雅基马被审讯一起强奸案时,警察声称拥有DNA证据证明他有罪,并施压迫使他认罪。尽管Bradford坚持无辜,但在长时间审讯后认罪。后来,因DNA技术进步,他于2010年被赦免。这一案例突显了欺骗性审讯可能导致虚假供词的风险。

当前立法动态:近年来,十个州已通过法律禁止在审讯中对青少年使用欺骗,从伊利诺伊州2021年开始。但法律倡导者认为,其他脆弱群体如年轻人、智力障碍者或易顺从的人也应受到保护。华盛顿州民主党议员提出法案,旨在使通过欺骗获得的供词(不论成人或儿童)在法庭上不被采纳,但该法案因执法部门反对而未通过。

执法部门观点:华盛顿州治安官和警察协会反对禁令,认为欺骗是必要的工具,用于解决案件,并声称其产生的真实供词多于虚假供词。他们担忧禁令会削弱打击犯罪的能力。

替代方法与改革呼吁:专家建议采用不依赖欺骗的审讯技巧,如建立融洽关系和开放式提问,这在欧洲等地区是常见做法。支持改革者认为,这可以提高警方可信度,并确保正义。华盛顿州议员计划再次推动法案,强调使用最佳工具以正确定罪。

总结:警察审讯中的欺骗做法引发争议,涉及错误定罪风险、保护脆弱群体以及执法效率之间的权衡。改革者呼吁扩大禁令,而执法部门则坚持现有方法的有效性。

7. Show HN: HTML-to-Markdown – convert entire websites to Markdown with Golang/CLI (github.com)

HTML-to-Markdown 是一款功能强大且可扩展的工具,用于将HTML内容(包括整个网站)转换为清晰易读的Markdown格式。它通过Golang库、命令行工具、在线演示和REST API等多种方式提供使用。

核心功能与特性:

  • 格式转换:完整支持粗体、斜体、列表(含嵌套)、引用块(含嵌套)、内联代码、多行代码块、链接和图片(可处理多行)。
  • 智能处理:支持智能转义,避免不必要的Markdown渲染;可选择保留或移除特定的HTML标签以精细控制输出。
  • 高度可扩展:支持插件系统,允许用户编写自定义逻辑或使用预置插件(如Table插件,支持表格对齐、合并单元格)。

使用方式:

  1. Golang 库

    • 安装:go get -u github.com/JohannesKaufmann/html-to-markdown/v2
    • 提供简单函数如 htmltomarkdown.ConvertString() 进行转换,也支持通过 converter.NewConverter() 创建可自定义配置(如使用不同插件、设置域名将相对链接转为绝对链接、定义标签处理方式)的转换器。
  2. 命令行工具 (CLI)

    • 支持通过Homebrew、Debian包或源码安装。
    • 可直接转换标准输入、文件或网站内容,并支持通过参数(如 --domain--exclude-selector--plugin-table)进行配置。

其他重要信息:

  • 插件:已提供基础(Base)、通用标记(Commonmark)、删除线(Strikethrough)、表格(Table)等插件。鼓励用户编写自定义插件。
  • 安全:工具不负责清理恶意内容。在将转换后的Markdown重新转换为HTML显示时,建议使用HTML清理器(如bluemonday)。
  • 并发:转换器可在多个Goroutine中安全使用。
  • 贡献与测试:项目欢迎贡献。采用“金文件”测试,可通过提交HTML片段并运行测试来验证和调试转换逻辑。
  • 许可:除非特别说明,项目采用MIT许可协议。
8. Memories are not only in the brain, human cell study finds (medicalxpress.com)

研究概要

纽约大学的研究人员发现,除大脑神经细胞外,人体其他部位的细胞也具备形成记忆的能力。这一发现挑战了传统认为记忆仅存于大脑的认知,为理解记忆机制、优化学习方式以及治疗记忆相关疾病开辟了新方向。

研究方法

  • 研究团队在实验室中培养了两种非脑人体细胞:神经组织细胞和肾脏组织细胞。
  • 通过向这些细胞施加不同模式的化学信号(模拟大脑学习时神经递质的释放模式),观察细胞的反应。
  • 研究人员特别关注神经学中经典的“间隔学习效应”,即间隔分散学习比集中突击学习更有利于记忆巩固。
  • 为监测细胞的学习与记忆过程,他们对细胞进行基因工程改造,使其在激活“记忆基因”时能发出荧光信号。

核心发现

  1. 非脑细胞具有记忆机制:当受到化学信号刺激时,这些非脑细胞会激活一个特定的“记忆基因”,这与大脑神经元形成记忆时激活的基因相同。
  2. 间隔学习效应得到验证:当化学信号以间隔模式(而非一次性集中)施加时,细胞对该基因的激活更强、持续时间更长。这表明“间隔学习效应”并非大脑独有,可能是所有细胞的一种基本属性。
  3. 记忆功能的基础性:研究负责人库库什金博士指出,细胞从间隔重复中学习的能力,可能是生命体的一个普遍特性。

意义与展望

  • 科学意义:该发现为记忆研究提供了新的模型和途径,有助于从更基础的细胞层面理解记忆的形成机制。
  • 应用潜力:未来可能开发出新的学习增强策略或记忆障碍治疗方法。
  • 健康启示:研究暗示身体其他器官的细胞也可能具有“记忆”功能(例如胰腺细胞“记住”饮食模式以调节血糖),这要求未来医学以更整体的视角看待健康与疾病治疗。

研究发表:该成果已于2024年发表于《自然·通讯》期刊。

9. Claude AI to process secret government data through new Palantir deal (arstechnica.com)

Anthropic公司近期与数据分析公司Palantir达成合作,将其Claude AI模型用于处理美国政府的机密数据,此举引发了对其“安全至上”伦理形象的质疑。

该合作与Anthropic自2021年成立以来所标榜的“注重伦理与安全”的AI开发理念相冲突。该公司曾以“Constitutional AI”等自我施加的伦理约束和负责任开发实践区别于竞争对手。然而,此国防合作协议与其公开的“好人”形象不符,受到业界关注。

合作方Palantir本身也具争议性,其近期获得美国陆军一份4.8亿美元的合同,用于开发名为“Maven智能系统”的AI目标识别系统,该项目因军事AI应用在科技界饱受批评。

Anthropic的服务条款对政府使用Claude设有特定规则,允许用于外国情报分析、识别隐蔽影响力活动,但禁止用于虚假信息、武器开发、审查和国内监控等。与Anthropic保持定期沟通的政府机构可能获得更广泛的使用权限。

此外,即使Claude不直接用于瞄准人类或武器系统,其作为大型语言模型的固有缺陷——即容易产生难以察觉的错误信息(“幻觉”)——在处理机密政府数据时构成重大潜在风险。这引发了外界对技术内在缺陷在涉及人命关天场合中应用的担忧。

10. Texture-Less Text Rendering (poniesandlight.co.uk)

本文介绍了一种无纹理的文本渲染技术,专用于快速绘制调试信息。它摒弃了传统的字体纹理图集方式,转而将字体位图数据直接存储在着色器中,并通过单次绘制调用完成所有文本的渲染。

核心原理

  1. 位图存储:将每个字符(ASCII可打印字符)表示为一个8x16像素的位图。这16字节(128位)的数据被编码为一个GLSL的 uvec4(4个无符号整数)。每个比特代表一个像素的开关状态。
  2. 数据来源:位图数据可从标准的PSF1终端字体文件中提取。使用十六进制编辑器跳过文件头,提取96个可打印字符的原始字节,并转换为着色器中的常量数组 font_data[96]
  3. 单次绘制调用:使用实例化绘制。一次绘制调用包含两个数据流:
    • 逐顶点数据:定义一个基础四边形(两个三角形)的顶点。
    • 逐实例数据:每个实例代表要绘制的一段文本(例如4个字符)。数据包括屏幕位置、缩放、要绘制的字符(打包为 uint32_t)以及前景/背景色。
  4. 着色器实现
    • 顶点着色器:根据实例位置缩放计算顶点在屏幕上的位置,并为四边形生成归一化的纹理坐标(UV)。同时,将字符数据和颜色以 flat 插值方式传递给片段着色器。
    • 片段着色器
      1. 定位字符:根据UV坐标确定当前片段属于实例中的哪一个字符(从4个字符中选取)。
      2. 查表获取位图:根据字符的ASCII码,从 font_data 常量数组中取出对应的 uvec4 位图数据。
      3. 像素着色:根据UV坐标计算出的像素位置(x,y),定位到 uvec4 中具体的比特位。若该比特为1,则用前景色渲染;否则用背景色渲染。对于填充字符(\0),直接丢弃片段。

优势与适用场景

  • 简单高效:无需创建、绑定和管理字体纹理。
  • 单次绘制:所有文本通过一个实例化绘制调用完成,状态切换极少。
  • 适用场景:非常适合对渲染开销要求不高、但需要快速集成显示能力的调试信息输出。其视觉效果为像素风格。

技术要点

  • 数据打包:将文本按每4个字符一组进行打包,以充分利用32位顶点属性。
  • 坐标映射:着色器中需要进行多次坐标映射:从屏幕空间到四边形UV,从UV到像素网格坐标,再从像素坐标到位图中的具体比特。
  • 字节序处理:由于从文件原始字节直接转换为整数,需注意字节序问题,并在着色器中通过位移操作进行适配。
11. SVDQuant: 4-Bit Quantization Powers 12B Flux on a 16GB 4090 GPU with 3x Speedup (hanlab.mit.edu)
12. Somebody moved the UK's oldest satellite in the mid 1970s, but no one knows who (www.bbc.co.uk)
13. FrontierMath: A benchmark for evaluating advanced mathematical reasoning in AI (epochai.org)

FrontierMath 是一个旨在评估人工智能系统高级数学推理能力的新基准测试。该基准包含数百个原创、由专家设计的数学问题,涵盖现代数学的主要分支,从计算数论到抽象代数几何,通常需要专业数学家花费数小时甚至数天才能解决。

尽管领先的人工智能模型在 GSM-8K 和 MATH 等传统基准测试中已接近完美得分,但它们在 FrontierMath 上的问题解决率低于 2%,这揭示了当前人工智能能力与数学界集体智慧之间的巨大差距。FrontierMath 的独特之处在于数学问题允许严格的自动化验证,并且每个问题都经过精心设计,以避免通过猜测或模式匹配来解决(即“防猜测”)。

基准测试的开发得到了 60 多位来自领先机构的数学家的合作,包括教授、国际数学奥林匹克(IMO)出题者和菲尔兹奖得主。这些数学家对问题的难度给予了高度评价。每个问题都经过同行评审以确保正确性、清晰度和适当的难度。所有问题的答案都可以通过计算进行自动验证,例如精确的整数或 SymPy 中的数学对象。

研究人员在评估当前人工智能模型时,为其提供了最大程度的支持,包括充足的思考时间以及与 Python 环境交互以编写和执行代码的能力。然而,即使是包括 Claude 3.5 Sonnet、o1-preview 和 GPT-4o 在内的领先模型,其解决率也未能超过 2%,这与它们在其他数学基准上的高分表现形成鲜明对比。

未来计划包括:

  • 定期评估:持续评估前沿人工智能模型以衡量进展。
  • 扩展基准:在保持严格标准和问题分布的同时,增加更多问题。
  • 公开发布问题:继首批五个代表性问题之后,计划发布更多问题。
  • 加强质量保证:通过扩大专家评审和错误赏金计划来减少错误率。

利益相关方声明: OpenAI 委托创建了 300 个问题(构成了即将到来的版本 FrontierMath_XX-XX-25 之前的全部问题),并完全拥有这些问题。他们拥有该版本之前所有问题陈述和解决方案的访问权,但后续版本中随机保留的 50 个解决方案子集除外。Epoch AI 保留使用 FrontierMath 所有问题进行内部评估和发布的权利。

14. Rust's Sneaky Deadlock With `if let` Blocks (brooksblog.bearblog.dev)

这篇文章讨论了Rust中一种隐蔽的死锁模式,特别是当if let语句与RwLock结合使用时。

核心问题在于,if let语句中绑定的变量会保持其作用域,覆盖整个if-else块。作者通过一个RwLock<Option<u32>>的示例说明了这一点:当OptionSome时,if let获取的读锁会一直持有到else分支结束。因此,当OptionNone,程序尝试进入else分支并获取写锁时,由于之前的读锁尚未释放,便会发生死锁。

文章指出,这种问题在wasmCloud等项目中多次出现。作者建议,为避免此类隐蔽的死锁,在处理锁时应编写单元测试以覆盖所有代码路径,并考虑使用显式的代码块(block)来限定锁的作用域,确保锁在不需要时被及时释放。

15. My Notes on Apple Math Notes (mlajtos.mu)

苹果数学笔记(Math Notes)深度评析

本文是作者在2021年提出的“新纸张”应用概念基础上,对苹果于2024年推出的 Math Notes 功能进行的详细分析与评价。

核心功能与优势

  • 基本原理:用户在iPad或iPhone上手写数学表达式(如 2+3=),系统能精准识别手写内容(即便字迹潦草),并在用户输入“=”后,即时计算并将结果以模仿用户笔迹的风格内联插入。这被作者视为一项“魔法”般的成就。
  • 关键技术突破:支持二维数学符号(如上标、分数),处理传统手写数学表示的复杂性,技术实现难度高。
  • 民主化与普及:该技术已随苹果设备进入数百万用户手中,是技术普及的重要一步。
  • 动态交互功能
    • 滑块:可拖动滑块直接改变表达式中的数值并实时更新结果。
    • 绘图:能将函数表达式(如 y=x^2)立即绘制为图形,且图形能响应变量的改变。
  • Smart Script整合:系统可对生成的结果文本进行美化,使其更工整。

主要批评与不足

  • 缺乏实时反馈与信任问题:计算结果出现前,系统静默无动态,用户无法得知手写识别是否正确(如“1”是否被误识为“7”)。作者认为这依赖了苹果对识别准确率的“过于自信”的假设。
  • “交互”模式仍存缺陷:虽支持暂停后自动计算(替代输入“=”),但在iPadOS 18.2版本中仍存在bug,例如简单的 x= 无法正常打印值,需写成 x+0= 的变通方案。
  • 严重的逻辑缺陷:系统不区分大小写字母作为变量(例如 a=1; A=2; a= 会得出2),这被作者称为“重大灾难性缺陷”。
  • 操作与状态管理:“划动删除”功能需要不必要的笔与橡皮切换,并导致约2秒的不一致状态。
  • 符号与变量定义受限:缺乏函数定义的正式支持(无法像 f(x)=x^2 这样定义并调用)。作者认为这是向更强大计算功能(如求和、优化)发展的关键缺失。
  • 符号体系僵化:当前数学符号集是固定的,不支持用户自定义符号或运算符,限制了数学表达的未来演化。

对未来发展的期望

作者期望Math Notes能超越“一个好用的计算器”,成为大众化的问题解决工具,就像Excel普及了复杂计算一样。具体方向包括:

  1. 支持用户自定义的二维符号自定义运算符
  2. 实现完善的函数定义、求值与图形化
  3. 解锁更高级的计算能力,如迭代求解和优化问题。

后续更新与观察

文章更新提到了iPadOS的改进(如交互模式和图形响应变量),也指出了新问题,如多点触控只支持一个数值调节器、对“圆形旋钮”调节器的偏好。作者最后表示无法找到为正式版系统提交bug的途径。

16. SQLite does not do checksums (avi.im)

SQLite 不进行校验和

SQLite 默认不进行数据校验和计算。这意味着当数据库文件发生磁盘损坏时,数据库或应用程序无法检测到数据已损坏。即使是单个比特的翻转(由磁盘故障、磁盘驱动程序错误或其他应用程序恶意/意外修改数据库文件等原因导致)也可能引发严重问题。这并非缺陷,而是 SQLite 的设计选择:它假设底层硬件和操作系统负责检测或纠正因宇宙射线、热噪声、设备驱动程序错误等造成的比特错误。SQLite 不会为检测损坏或 I/O 错误向数据库文件添加任何冗余数据。

损坏风险演示

通过一个简单的脚本可以演示此风险:

  1. 创建一个银行数据库,其中包含用户 Alice 的记录,余额为 83,000 美元。
  2. 使用命令对数据库文件进行单比特翻转。
  3. 结果:Alice 的余额变为零。
  4. 即使运行 PRAGMA integrity_check 也不会报告错误。

WAL 模式与校验和

SQLite 为 WAL(Write-Ahead Logging)帧提供了校验和。然而,当检测到损坏的帧时,SQLite 会静默忽略该帧及所有后续帧,且不抛出错误。忽略损坏帧可能可接受,但不报错可能带来风险。

可选解决方案:Checksum VFS Shim

可以使用 Checksum VFS Shim 来添加校验和功能,但存在重要限制:

  • 仅适用于 reserve bytes 值恰好为 8 的数据库。
  • 如果使用了任何占用 reserve bytes 的扩展,则无法使用此 Shim。

总结

SQLite 默认不进行数据完整性校验,这是其设计原则——它假设存储层是可靠的。是否需要额外校验取决于具体应用对数据完整性的要求。虽然存在可选的校验和扩展,但存在兼容性限制。

17. What Is a Staff Engineer? (nishtahir.com)

文章总结:Staff工程师的角色解析

角色定义 Staff工程师(Staff+)指高级工程师之上、不担任工程经理职务的技术领导者。他们倾向于留在技术职业发展轨道上,虽然头衔不统一(如首席工程师、技术专家等),但通常具备两个共性:在专业领域拥有公认的深厚专业知识,以及丰富的团队领导与产品交付经验。

四项关键能力框架 成功胜任Staff+角色需要融合四项技能:

  1. 核心技术能力:在某一专业领域具备深度知识,并辅以广泛的系统经验与多环境实践。这是解决复杂技术问题、推动团队目标的基础。
  2. 产品管理能力:能够分析团队、项目或组织目标,制定技术愿景,并有效沟通以获得利益相关者(尤其是工程团队)的认同。此能力有时体现在“技术架构师”角色中。
  3. 项目管理能力:擅长将大型任务分解为可管理的小任务,制定可跟踪的计划与时间表,并管理不确定性和风险。这要求掌握项目管理基础,但与项目经理角色互补而非替代。
  4. 人员管理能力:具备领导团队达成目标的能力,包括有效指导、提供技术及职业发展建议,并能识别团队的优势与成长领域,通过辅导提升团队整体效能。

“胶水工作”及其重要性 Staff+工程师的核心日常工作之一是自主结合上述技能,承担团队中必要但往往不易被归类的“胶水工作”。这类工作虽不显眼,却对维持团队动力和创造高价值至关重要。例如:

  • 协调与外部团队或供应商的沟通,消除误解,建立合作。
  • 调查并解决技术债务(如因依赖导致的测试缺失),制定长期改进计划,并指导团队。
  • 为遇到困难的团队成员提供轻量指导和资源,帮助其快速上手。
  • 明确模糊的需求,通过跨部门会议深入理解用户场景,以提供更优方案。

完成胶水工作的关键在于,Staff+工程师最终需要提升团队能力(例如通过指导现有成员或推动设置专人负责),使这些职责得以被接管,从而让自身能聚焦于更具战略性或更高优先级的任务。

常见问题解答

  • 是否需要承担指导职责? 是的,这是角色的核心部分。通过识别团队优劣势并创造学习机会来提升团队能力,是Staff+工程师的必备职责。
  • 什么样的团队需要Staff+工程师? 理论上任何团队都可能需要,但其具体职责因团队构成而异。例如,在小团队中可能是主要贡献者,在大团队中则更可能担任技术负责人。配置时需考虑机会成本,确保其时间用于解决更高价值的问题。
  • 不同级别的Staff工程师有何区别? 主要区别在于其影响范围。更高级别的Staff工程师应能影响整个组织、公司乃至行业,并擅长利用影响力引导技术方向。
  • 如何平衡领导职责与编码工作? 在此级别,领导技能通常是更具价值的资产。应优先考虑团队和项目需求,将编码工作(如概念验证或低优先级功能)作为时间允许时的补充,避免其挤占胶水工作等高阶职责所需的时间。

结论 Staff+工程师的核心在于运用其自主权和组织影响力,将技术专长转化为对团队或组织目标的有意义贡献。其角色本质是灵活且适应性的,具体职责需根据个体和情境动态调整。

18. How to find exploits in video games (shalzuth.com)

如何发现视频游戏中的漏洞:安全测试路线图

本文介绍了作者在《Sword of Convallaria》游戏中进行安全测试以寻找漏洞的框架,主要涵盖数据提取、网络协议分析及工具自动化流程。

游戏概况

  • 平台与技术:游戏基于 Unity 引擎开发,逻辑使用 Lua 编写,网络通信采用 HTTPS(登录认证)和 UDP(游戏内数据包,格式为 protobuf)。
  • 盈利模式:游戏包含 PvP 和付费微交易,但官方未设立 bug bounty 计划。

逆向工程步骤

  1. 数据提取

    • 使用 AssetsTools.NET 从游戏资源中提取 Lua 字节码和 protobuf 定义文件。
    • 提取的文件包含网络协议结构与游戏逻辑。
  2. Lua 字节码解密

    • Lua 脚本加密采用 XOR 密码,通过 hook slua.dll 分析解密过程:
      • 第一字节单独异或 0x35,后续字节按固定密钥循环异或。
    • 解密后,使用 UnluacNET 进行反编译,并修复字节码读取中的额外加密层(基于偏移计算的复杂 XOR 变换)。
    • 最终调整字符串读取偏移(sizeT.m_big -= 10),成功获得可读 Lua 脚本。
  3. 网络协议分析

    • 通过 Fiddler 绕过代理限制,观察登录流程(使用 AccessToken 和 MacKey 认证)。
    • 用 Wireshark 捕获 UDP 数据包,识别 protobuf 格式。数据包头结构为:
      • 4字节长度 + 2字节操作码(opcode) + 4字节计数器 + payload。
    • 操作码与协议名映射通过解析 Lua 脚本中的 .proto.lua 文件自动提取。
  4. 工具自动化

    • 创建工具链实现一键更新:从游戏服务器下载最新资源、提取文件、解密脚本、生成操作码映射表。
    • 确保在游戏更新后工具仍可快速适配。

漏洞测试示例

  • 编写客户端程序登录并发送测试数据包(如抽卡协议 CSOnlineGacha),通过异常输入(如负数、特殊模式)验证漏洞。

总结

本文提供了从数据提取、协议逆向到自动化测试的完整安全评估框架,旨在帮助研究人员系统化地发现游戏漏洞,提升游戏安全性。

源代码详见 GitHub。

19. Money was never the end goal – mrdoob – threejs creator (twitter.com)

摘要

mrdoob(three.js 的创造者)在推特上强调,金钱从来不是他的最终目标。他极度厌恶对 Adobe Flash 的依赖,因此决心为 HTML5/WebGL 世界创建一个免费的替代选项。这一过程充满挑战,他不得不在个人生活中做出一些牺牲,但他认为这一切都是值得的。

21. Ask HN: What hacks/tips do you use to make AI work better for you?
22. Genetic repair via CRISPR can inadvertently introduce other defects (phys.org)

研究发现:CRISPR基因修复技术可能意外引入新缺陷

研究背景与发现 CRISPR基因编辑技术有望用于治疗遗传疾病,但一项发表于《通讯-生物学》的研究指出,其在实际应用中可能带来意想不到的风险。瑞士苏黎世大学(UZH)的研究团队在修复慢性肉芽肿病(CGD)的基因缺陷时发现,尽管CRISPR成功纠正了突变,但在部分细胞中引发了新的染色体结构异常。

疾病与基因特点 慢性肉芽肿病是一种罕见遗传病,发病率约1/12万,由NCF1基因缺失两个碱基导致。该基因负责生成一种免疫防御关键酶复合物。NCF1基因存在特殊结构:在同一条染色体上有三个拷贝——一个活性基因和两个假基因(序列相同但通常不表达)。

CRISPR的作用与问题 研究团队在细胞实验中成功用CRISPR插入了缺失的碱基,但发现CRISPR的分子剪刀无法区分活性NCF1基因与假基因,因此可能在染色体上多处同时切割。后续修复过程中,这会导致基因片段错位或缺失,可能引发不可预测的健康后果,甚至增加白血病风险。

改进尝试与挑战 为降低风险,团队测试了多种方法,包括修改CRISPR组件和使用保护性元件以减少多处切割概率,但均未能完全消除副作用。研究强调,尽管CRISPR疗法前景广阔,仍需技术突破才能实现安全有效的临床应用。

研究意义 该研究为开发针对慢性肉芽肿病及其他遗传病的基因编辑疗法提供了重要参考,突显了优化CRISPR技术精确性和安全性的迫切需求。

参考文献 Federica Raimondi et al, Gene editing of NCF1 loci is associated with homologous recombination and chromosomal rearrangements, Communications Biology (2024). DOI: 10.1038/s42003-024-06959-z


改写说明

  • 精简和归纳原文内容,突出研究核心发现、机制及临床应用意义
  • 按逻辑顺序组织信息,依次说明背景、问题、原因、尝试措施和结论
  • 保持客观表述,严格依据原文事实,未添加个人评论或推测

如果您需要更简短或更侧重某一方面的表述,我可以继续为您优化调整。

23. The case of a program that crashed on its first instruction (devblogs.microsoft.com)

案例分析:程序在第一条指令崩溃

问题现象 客户程序在启动时立即崩溃,崩溃报告显示其在第一条指令处失败。调试器打开转储文件后出现异常错误:

ERROR: Unable to find system thread FFFFFFFF
ERROR: Exception C0000005 occurred on unknown thread FFFFFFFF
(61c.ffffffff): Access violation - code c0000005

初步排查 调试器显示6个线程:

  • 线程 1 (0x61c.22d4):正在执行写操作(mov word ptr [rbx+40h],ax
  • 其他线程:处于等待或休眠状态(如ntdll!ZwWaitForWorkViaWorkerFactoryKERNELBASE!SleepEx

关键发现:写入只读页面 通过!address @rbx命令检查写入目标地址:

  • 内存区域00007ff6e4600000 - 00007ff6e4601000(4KB)
  • 保护属性PAGE_READONLY(只读)
  • 用途:程序自身的映像头部(ContosoDeluxe.exe
  • 模块名称ContosoDeluxe

写入操作尝试修改程序自身的只读映像头部,导致访问违规(Access Violation)。

异常代码分析 线程1的调用栈地址(0x0000029342074058)来自可疑内存区域。进一步检查线程5的调用栈(0x00000293420a1efd),发现其执行于同一内存块中。

检查该内存区域属性:

  • 保护属性PAGE_EXECUTE_READWRITE(可读写可执行)
  • 类型MEM_PRIVATE(私有内存)

这种可读写可执行的内存通常与恶意代码注入相关,因为正常代码很少需要同时具备读、写、执行权限。

反汇编代码分析 执行的代码包含一个无限循环,反复调用Sleep(1000)。代码特征:

  1. 循环结构call SleepStubcall 内存分配函数call 检查函数 → 跳转回循环开始
  2. 内存分配:通过RtlAllocateHeap进行堆内存分配
  3. 注册表操作:尝试打开并读取HKEY_LOCAL_MACHINE\SOFTWARE\systemconfig注册表键

恶意软件识别 通过内存字符串搜索(!mex.strings)在内存区域中发现:

  • 字符串:system
  • PDB路径H:\rootkit\r77-rootkit-master\vs\x64\Release\r77-x64.pdb

该路径表明这是r77-rootkit恶意软件(一个公开源码的rootkit)。

根本原因

  1. 恶意软件感染:客户的程序被r77-rootkit恶意软件感染
  2. 代码注入:恶意软件将自身代码注入到程序的私有可执行内存中
  3. 修改映像头部:恶意代码尝试修改程序自身的只读映像头部(可能是尝试进行持久化或隐藏操作)
  4. 触发崩溃:写入只读页面导致访问违规,程序在启动时立即崩溃

结论 这不是程序本身的缺陷,而是恶意软件感染导致的问题。恶意软件在程序启动过程中注入代码并尝试修改只读内存区域,从而触发崩溃。由于崩溃报告匿名提交,开发者无法直接通知受影响的用户其系统已被恶意软件感染。

24. Pirating "The Pirate Bay" TV Series Is Ironically Difficult (torrentfreak.com)
  • 电视剧发布情况:以著名盗版网站“海盗湾”为题材的同名电视剧在瑞典SVT Play平台首播,但国际观众暂无法通过正规渠道观看。
  • 盗版资源现状:尽管该剧主题与盗版密切相关,但在公共盗版网站(如海盗湾本身)上寻找其盗版资源却异常困难。首播后,剧集主要在私人场景服务器中流传,公共站点长期未出现资源(后续经过延迟才被上传)。
  • 背景与历史:海盗湾由Piratbyrån团体于21世纪初创立,利用BitTorrent技术彻底改变了媒体分享方式,挑战了传统娱乐产业,其三位创始人(Fredrik Neij、Peter Sunde、Gottfrid Svartholm)后因版权问题被判入狱,但引发了深远的数字与政治革命。
  • 电视剧制作细节:该剧由瑞典B-Reel Films制作,虽基于真实故事,但大量融合虚构元素,时间线和角色刻画均经过艺术加工,并未获得海盗湾创始人直接参与。导演表示创作重点在于捕捉创始人的精神与信念,而非严格还原历史。
  • 后续计划:作者计划发布后续文章,引用海盗湾联合创始人Peter Sunde及Piratbyrån联合创始人Rasmus Fleischer的评论。
25. Argentinian Farmer Finds Family of 20k-Year-Old Car-Sized Armadillos (allthatsinteresting.com)

阿根廷农民发现两万年前汽车大小的犰狳家族化石

发现经过
阿根廷农民胡安·德迪奥斯·索塔在转移小牛时,于自家土地旁干涸的瓦利曼卡河床附近,发现了四具距今约两万年的雕齿兽(Glyptodon)化石遗骸。这些巨型犰狳的遗骸最初被部分露出,后经由“潘帕第四纪考古与古生物研究所”(INCUAPA)团队发掘。

关键细节

  • 数量与状态:这是首次在同一地点发现四只雕齿兽聚集。它们大部分朝向相同,仿佛在共同行进。专家推测可能是一个核心家庭结构,包括雌雄亲代与幼崽。
  • 尺寸与特征:个体大小接近大众甲壳虫汽车,部分壳体长达五英尺(约1.5米),厚两英寸(约5厘米)。壳体由超过一千块一英寸厚的骨板(皮内成骨)组成,尾部带有骨质突起或尖刺,可作为武器。
  • 成因推测:区域干旱使化石露出。科学家希望通过研究这些遗骸,探索其家族结构、性别二态性及灭绝原因。

背景与意义

  • 物种信息:雕齿兽属异关节总目,是植食性动物,与现代犰狳有亲缘关系。它们在南美繁衍了约三千万年,并于约一万年前灭绝,可能与人类过度利用其硬壳有关。
  • 历史发现:该地区曾有类似发现,如2015年另一位农民找到一块三英尺长的雕齿兽壳,初误认为恐龙壳。
  • 后续研究:INCUAPA团队计划通过进一步测试,确定这些犰狳的死亡年龄、死亡方式,并验证是否具有性别二态性。

此次发现为理解雕齿兽的社会行为、生理特征及灭绝历程提供了珍贵样本。

26. Apple Macintosh before System 7 (earlymacintosh.org)

本文是一篇基于原始苹果磁盘和文档的详细资料,系统梳理了1991年System 7发布之前苹果Macintosh电脑的硬件、软件版本及配件信息,并对官方历史记录中的错误进行了澄清。

核心要点:

  1. 数据来源与可靠性警告:文章指出,广泛流传的苹果知识库文章TA31885存在严重错误(例如错误地将System 1.1标为2.0,且后续版本号是事后编造的),并警告读者其不可靠。本文内容均基于一手原始资料。

  2. 硬件发布时间线

    • 详细列出了从1984年1月的Macintosh 128K (M0001) 到1990年10月的Macintosh LC (M0350) 等超过15款机型。
    • 信息包括发布日期、型号编号、技术规格编号以及该机型原始搭载的系统文件版本(如Macintosh SE搭载System 4.0)。
  3. 软件版本演进

    • 清晰展示了操作系统、Finder和MultiFinder版本的对应关系与发布日期。
    • 从1984年的“Mac Software” 1.0 (System 1.0, Finder 1.0) 开始,历经多个更新,直至1991年的“Macintosh System Software 6.0.8” (System 6.0.8, Finder 6.1.8, MultiFinder 6.0.8)。
    • 指出了关键版本的更新内容,如System 2.1首次引入分层文件系统(HFS)。
  4. 硬件细节与型号差异

    • Macintosh 128K/512K:存在不同代次的机壳(标注“Macintosh 128K”或“512K”)、主板、模拟板和软驱。例如,早期索尼OA-D34V软驱与后期改进型号在弹出机制上有区别。
    • Macintosh Plus与512Ke:存在米色和“白金色”不同颜色的机型,以及逻辑板和键盘的升级。例如,白金色机型配用了M0110A扩展键盘。
    • 升级套件:记录了苹果提供的官方OEM升级套件,如512K内存扩展套件、Plus磁盘驱动器套件(可将128K/512K升级为等效的512Ke)和Plus主板套件。
  5. 软件包与手册

    • 详细描述了随Macintosh 128K、512K、Plus和512Ke附带的软件包内容变化,包括系统盘、应用软件(MacWrite, MacPaint)、培训磁盘和音频磁带的演变。
    • 列出了不同机型对应的用户手册版本及其修订情况。
  6. 其他资源:文章还提及了相关的参考网站、模拟器(如Mini vMac)以及用于旧Mac的现代存储解决方案。

总结:本文是一份关于System 7之前Macintosh历史的详尽考据,纠正了官方记录的谬误,准确还原了硬件型号、软件版本及其配套资料的演进过程,是研究早期Macintosh系统的重要参考。

27. The number given as % CPU in Activity Monitor (eclecticlight.co)

活动监视器中% CPU数值的误解与真相

常见误解

在macOS活动监视器中,% CPU是一个常被引用的测量值。许多人认为它表示每个CPU核心使用率的百分比,但实际上,它是每个核心真实百分比的总和。例如,在八核处理器中,最大值可达800%(或考虑超线程时达1600%)。对于Apple Silicon芯片,情况更为复杂,因为核心类型和频率变化会影响该数值。

Apple的定义与问题

Apple将% CPU定义为“正在使用的CPU能力的百分比”,但该定义在文档中缺乏明确解释。用户通常假设100%代表一个核心的最大处理能力,但这是不正确的。实际测试表明,% CPU并非如此直观。

测试与发现

为验证这一点,作者使用一个运行汇编代码循环的应用程序,在Apple Silicon芯片(如M3 Pro)上进行测试:

  • 测试一:两个线程以低服务质量(QoS)运行在效率核心(E核心)上,每个线程完成500亿次浮点计算循环耗时10.2秒。活动监视器显示E核心总% CPU为200%。
  • 测试二:八个线程以高QoS运行,前六个分配到性能核心(P核心),后两个溢出到E核心,每个线程在E核心上仅耗时3.0秒。活动监视器同样显示E核心总% CPU为200%,但整体CPU总使用率达800%。

尽管线程在E核心上执行时间差异显著(3.4倍),% CPU数值却相同,这揭示了该测量值的局限性。

频率的影响

Apple Silicon芯片的核心频率由macOS动态控制,核心分组为集群(如E核心集群和P核心集群),集群内核心共享L2缓存并运行相同频率:

  • 在低QoS测试中,E核心频率设为最低744 MHz。
  • 在高QoS测试中,E核心频率升至最高2748 MHz,速度提升3.7倍。 如果最大频率下的满负荷算作100%能力,那么低QoS时实际仅使用27%的CPU能力,但活动监视器仍显示为100%。这解释了执行时间的差异。

% CPU的实际含义

活动监视器显示的% CPU实际上是“核心活跃驻留”(active residency),即处理器周期中非空闲、用于执行进程线程的百分比。它不考虑以下因素:

  • 核心频率或时钟速度的变化。
  • P核心与E核心之间的吞吐量差异。
  • 核心集群的频率设置。

因此,该数值并非直接反映CPU的实际计算能力,而是忙闲状态的粗略指标。

总结

在Apple Silicon Mac上,活动监视器中的% CPU数字并非完全无意义,但具有误导性。它显示的100%可能实际对应27%到100%之间的CPU能力利用率。用户在解读该数据时,需意识到它未考虑核心频率和类型差异,应结合其他工具(如powermetrics)进行更准确的分析。