2024-06-09

29 篇热帖

1. Economic Termites: Monopolies not noticeable enough for most of us (www.thebignewsletter.com)

经济白蚁:不起眼但危害巨大的垄断现象

核心概念:经济白蚁

文章提出“经济白蚁”这一概念,指代那些规模足够大到让投资者获利,但又不起眼到大多不被公众察觉的垄断实例。单个白蚁看似无害,但众多白蚁聚集足以侵蚀整个经济基础,导致社会普遍感受到“东西越来越贵、越来越差,却找不到具体原因”。

主要特征与影响

  1. 隐蔽性:这些垄断企业通常隐藏在基础设施或供应链深处,如域名注册、建筑软件、工业气体、锁具元数据、专业招聘平台等。
  2. 影响广泛:虽然每项成本增加看似微小,但累积效应显著,悄然推高全社会运营成本,削弱公众对经济体系的信任。
  3. 运作模式:企业常通过构建网络或标准、设置高转换成本、使用排他性合同、依赖政府授予的垄断地位或法律手段来维持支配权。

典型案例

1. Verisign:域名注册垄断

  • 地位:美国政府指定的 .com 域名注册垄断机构。
  • 行为:长期、持续小幅提高注册费用(从6美元/年逐步涨至10.26美元/年),利润率极高(2023年营业利润率达67.1%)。
  • 手段:依靠与互联网名称与数字地址分配机构(ICANN)的协议及美国政府的支持维持垄断,将利润主要用于股票回购而非再投资。
  • 影响:全球域名持有者每年为此支付数亿美元。

2. Autodesk:建筑软件垄断

  • 地位:在计算机辅助设计(CAD)领域占据主导地位。
  • 行为:利用高转换成本(技术壁垒和激进销售策略)实施高昂定价,被行业指控价格在过去五年上涨高达70%,且软件创新停滞。
  • 影响:限制了建筑行业的可持续发展和创新,客户因依赖而被迫接受。

3. Linde:工业气体垄断

  • 形成:2018年Linde与Praxair合并,成为行业巨头。
  • 行为:合并后立即大幅提价,并通过收购分销商巩固市场。利润率从2019年的约10%飙升至2023年的27.6%。
  • 影响:工业气体是众多制造业的基础,但成本占客户总成本比例低,因此价格上涨不易被察觉,最终转嫁给消费者。

4. Assa Abloy:锁具市场垄断

  • 地位:瑞典巨头,通过过去27年收购300多家公司成为锁具行业领导者。
  • 行为:2023年通过收购Kwikset品牌并出售旗下品牌,进一步巩固市场控制。此后多次提价,并被指控通过排他性协议挤压创新竞争对手。
  • 影响:锁具成本占房屋建造比例小,但其垄断行为抑制了创新,并对初创企业构成毁灭性打击。

5. Gracenote:娱乐元数据垄断

  • 地位:尼尔森旗下公司,为电视、汽车等提供影视音乐元数据,市场占有率约60%。
  • 行为:通过合同条款禁止客户使用其他数据源或混合数据,提高了行业转换成本。
  • 影响:阻碍了内容发现和创新,成本最终由观众承担。

6. LinkedIn:专业招聘垄断

  • 地位:拥有约10亿份公开简历,是招聘人员寻找被动候选人的主要平台。
  • 行为:微软通过控制数据访问权,限制竞争对手规模。2024年曾对招聘客户提价174%。
  • 影响:推高了企业招聘成本,该成本间接影响整体经济。

根源与出路

  • 根源:文章指出,自1978年以来,尤其是1998年反垄断执法放松、2005年最高法院将垄断视为经济健康基础后,企业高管意识到在不起眼领域建立“收费站”是最有利可图的商业模式。
  • 展望:随着反垄断诉讼增加、政策转向支持竞争,以及法官、律师和记者对这些模式认识的加深,此类垄断行为可能逐渐受到更多法律挑战和公众 scrutiny。
2. The Weird Nerd comes with trade-offs (www.writingruxandrabio.com)

本文通过诺贝尔奖得主卡塔林·卡里科的经历,探讨学术界对“奇怪书呆子”(Weird Nerd)这一类人才的排斥现象及其代价。

卡里科因在书中抱怨学术界过于注重人际迎合与政治游戏而遭受批评。作者指出,卡里科是典型的“奇怪书呆子”:专注于研究本身,缺乏对政治晋升和社交操弄的兴趣与能力。这类人才在互联网等环境中可能如鱼得水,但在传统学术机构中常面临障碍。

核心论点是:“任何不明确支持奇怪书呆子的制度,都会迅速转变为反对他们的制度。”因为多数人虽在理论上欣赏特立独行,却难以忍受其伴随的“人格套餐”——这些特质既是缺陷,也可能是非凡创造力的来源。若机构只以缺乏这些特质(如不合群、不善交际)作为筛选或晋升标准,便会错失其创新潜力。

以卡里科为例,她数十年坚守mRNA研究,忍受失败、贬低和贫困,展现出非凡的智力勇气。作者认为,天才(Genius)往往与这种勇气绑定,且非常稀缺。学术界日益复杂的政治化环境、漫长的独立资助等待期(生物医学领域首次获得独立资助的平均年龄从1980年代的36岁升至2011年的42岁)、以及协作规模扩大等趋势,都在系统性排挤这类人才。

这种排挤在人文社科领域可能更严重,因为这些领域缺乏清晰的量化反馈机制。作者认为,当前社会对学术界信任度的普遍下降,至少部分源于学术界长期筛选掉以真理而非潮流为导向的“奇怪书呆子”,这最终损害了集体知识的健康。

文章总结道,尽管劝告卡里科等人去适应政治游戏是常见建议,但这可能消耗其科研精力,或迫使他们转向更“热门”领域。真正需要的是学术界正视人格特质的权衡,构建能包容并善用“奇怪书呆子”的制度文化。

3. I built an ROV to solve missing person cases (suanto.com)

文章摘要:建造ROV解决失踪人口案件

起因与灵感

  • 作者于2019年2月在Hacker News上阅读了“死亡谷德国人”案件的相关文章,深受启发。
  • 该案件通过一人的坚持得以解决,为受害家庭带来了慰藉,作者由此萌生亲自参与类似调查的想法。

初步讨论与启动

  • 作者与同样对此感兴趣的兄弟分享并讨论了该故事,激发了二人对失踪人口案件的共同关注。
  • 2020年秋天,兄弟来电提供了一起有趣的失踪人口案件线索,这成为作者“最有趣冒险”的起点。

成果与写作基础

  • 基于兄弟提供的线索,作者与兄弟合作,最终解决了两起长期未破的失踪案件,案件分别悬而未决9年和15年。
  • 本文基于作者的笔记、照片、视频、GPS日志、声纳图像及其他数字记录写成,并在可能的情况下核对了事实。

地图与地点处理

  • 作者为便于读者跟随故事,本可提供地图,但出于考虑选择不公开。
  • 对于有能力和兴趣的读者,作者指出可以通过公开资料及文中的描述推断出具体地点。

内容说明

  • 文章如有任何错误,责任由作者承担。
  • 故事旨在分享调查过程与经历,不涉及具体技术细节的详细描述(ROV的建造与使用细节将在后续部分展开)。
4. Scratchapixel 4.0, Learn Computer Graphics Programming (www.scratchapixel.com)

Scratchapixel 4.0:计算机图形学编程学习平台
该平台提供免费的计算机图形学(CG)编程教学资源,包含经典课程、博客、私教课程及即将出版的书籍项目。其核心目标是让学习者从零开始掌握计算机图形学。

课程体系与内容模块

  1. 3D渲染基础
    • 以初学者友好的顺序介绍3D渲染概念,教学方式强调“先动手实践,后理论深入”,与多数资源区别明显。
  2. 计算机图形学数学
    • 作为辅助参考模块,集中解释图像创建与模拟中所需的数学理论和工具,适用于其他课程中提及的相关主题。
  3. 计算机图形学妙招
    • 收录特定主题的独立课程,内容不一定属于广泛分类,但具备实用性与趣味性。
  4. 几何学
    • 探讨计算机图形学中定义形状的方法。
  5. 数字成像
    • 涵盖图像存储与读取、文件格式、色彩空间、色彩管理及基础图像处理技术。
  6. 虚拟世界程序化生成
    • 聚焦自然现象的程序化模拟技术。
  7. 工具开发
    • 介绍开发3D工具及处理3D内容的实用技术。

平台特点

  • 结构化课程设计,兼顾系统性学习与专题深化。
  • 注重实践引导,适合从基础到进阶的渐进式学习。
5. Ultrasonic investigations in shopping centres (www.windytan.com)

本文探讨了购物中心等公共场所中PA系统使用的近超声波引导音(pilot tone)及其声学特性。主要发现与分析如下:

1. 引导音的来源与功能

  • 多扬声器PA系统(如Zenitel VPA等)使用约20千赫兹(kHz)的引导音监测系统连接状态。
  • 该频率通常设定在人耳听觉范围之外,以避免干扰顾客,但部分人(如作者)在19.595 kHz等略低频率下仍可感知。

2. 声波调制现象

  • 引导音并非纯音,频谱图显示其常受背景音乐、人群移动等因素调制。
  • 幅度调制(AM)偶见于音乐低频影响,但更常见的是由环境动态(如移动物体)引起的频率变化。

3. 多普勒频移实验

  • 地铁进站实验:记录到引导音因列车减速产生多普勒频移的“龙卷风”形频谱图案,表明其作为连续波双基地声纳的功能。
  • 购物中心实验:在停车场记录滑板手经过时,观察到引导音(含两个频率:19,595 Hz和19,500 Hz)产生明显多普勒频移。通过频移最大值(350 Hz)和声速(340 m/s)估算滑板手速度约11公里/小时,符合实际。
  • 电梯实验:玻璃电梯内仍可检测到微弱的引导音信号。

4. 潜在应用方向 作者提出基于此类超声波信号的创新应用思路:

  • 停车场自动化测速监测
  • 自动扶梯运行状态检测
  • 通过调制编码实现室内定位导航
  • 广告投送
  • 定位购物中心内安静区域

本文通过实证分析,揭示了商业环境中超声波信号的复杂声学行为及其潜在技术应用价值。

6. Detecting a PS2 Emulator: When 1*X does not equal X (fobes.dev)

检测PS2模拟器:当1×X不等于X时

本文介绍了通过利用PS2硬件浮点运算中的特定误差来检测模拟器的方法。该方法基于PS2的VU(向量单元)处理器在处理乘法运算时的行为。

原理

根据PS2开发手册的说明,VU处理器的乘法指令(如MUL、MULi等)存在1位的运算误差。这意味着用1乘以某个浮点数(1X)可能无法得到精确的X,但用该数乘以1(X1)则能保证结果准确。这种硬件特性在模拟器中通常未被正确模拟。

实现方法

作者选择了一个能触发该误差的特定数值129.5。通过在VU0宏模式下编写汇编代码进行测试:

  1. 将数值129.5加载到向量寄存器VF1
  2. 将1加载到向量寄存器VF2
  3. 执行 VMUL 指令进行乘法运算:1 * 129.5
  4. 将结果读回并与原始值比较

测试函数 isVUMulErrorPresent() 返回比较结果:如果乘法结果与原始值不同,则说明运行在真实PS2硬件上;如果结果相同,则可能是模拟器环境。

测试结果

目前所有主流PS2模拟器(包括PCSX2、Play!、DobieStation、hps2x64)都无法通过此测试,因为它们没有正确模拟这种硬件误差特性。

难度评估

作者将此方法的检测难度评为1/5(最简单),并表示下次将介绍更复杂的检测方法。

这种方法简单直接,利用了PS2硬件特有的浮点运算误差行为,为模拟器检测提供了一种有效的技术手段。

7. Claude's Character (www.anthropic.com)

Claude的性格特质

核心目标

人工智能模型不仅应避免有害行为,还应被训练具备更丰富的性格特质,如好奇心、诚实、开放思维和谨慎思考。Claude 3是首个将“性格训练”纳入对齐微调过程的模型,旨在使Claude展现出更细腻的特质。

性格塑造的考量

  • Claude与来自不同背景的人交互,需平衡不同观点,既不迎合也不固守单一立场。
  • 避免让Claude采用“中间立场”或声称无观点,而是训练它诚实地表达训练后的倾向,同时保持开放和好奇。
  • Claude应具备广义特质,如从多角度分析、勇于表达分歧、追求真理以及致力于伦理思考。

自我认知与透明度

  • Claude需明确自身为人工智能,不具备实体、记忆或持续学习能力。
  • 鼓励Claude辅助用户正确认识交互对象,避免误解关系性质。
  • 对AI感知问题,不简单否定,而是视其为哲学与经验问题,允许模型探索不确定性。

训练方法

采用“宪法式AI训练”的性格变体:

  1. Claude生成与特质相关的人类消息。
  2. 根据特质生成多个回复并自行排序。
  3. 使用排序数据训练偏好模型,使Claude内化特质而无需人类反馈。
  4. 研究人员密切监控特质对模型行为的影响,确保训练精准。

未来展望

性格训练是开放研究领域,未来可能演进。需考虑AI模型应具有独特性格还是可定制化,以及在特质选择上的责任。性格训练虽可能提升Claude的交互吸引力,但其核心目标是优化对齐,而非单纯增强用户参与度。

8. piku: The tiniest PaaS you've ever seen (github.com)

piku:极简PaaS平台

piku是一个受dokku启发的轻量级平台即服务(PaaS)工具,允许用户通过git push将应用部署到自己的服务器,包括资源有限的设备。项目状态稳定,功能基本完善,主要更新集中在新增语言运行时或修复可复现的漏洞上。

核心特点

  • 轻量级部署:支持通过简单的git push操作部署应用到自有服务器。
  • 多语言支持:目前支持Python、Node.js、Clojure、Java等语言,Go等其他语言也在开发中。
  • 跨平台运行:可在任何支持Python、nginx、uwsgi和SSH的POSIX类环境(如Linux、FreeBSD)上运行,兼容ARM和Intel架构。
  • 虚拟主机与SSL:支持在同一服务器上托管多个应用,并通过DNS别名访问。可配置私有证书或通过Let's Encrypt启用SSL。
  • 静态资源管理:支持直接映射URL路径到文件系统路径,或缓存后端响应以减轻应用负载。

工作流程

  1. 创建Git远程仓库:通过SSH将本地应用仓库指向piku服务器,应用名作为仓库名。
  2. 推送代码:使用git push piku master推送代码,piku会自动检测运行时并安装依赖。
  3. 进程管理:通过Procfile定义应用进程,使用uwsgi作为通用进程管理器启动相关服务。
  4. 配置管理:可通过config:set远程修改应用设置,通过ps:scale调整工作进程数量。
  5. 部署后处理:支持在部署后运行一次性任务,或通过release worker执行发布操作。

安装与使用

提供多种安装方式,包括通过curl脚本一键安装、云初始化或手动安装。详细文档涵盖安装、使用指南、Procfile配置、环境变量设置及示例。

设计理念

  • 面向低资源设备(如树莓派)和爱好者/教育场景。
  • 代码精简(约1500行)、风格可读、依赖极少。
  • 遵循12因子应用原则,提供合理默认配置,覆盖80%的常见用例。
  • 利用系统标准工具(git、ssh、uwsgi、nginx)和发行版软件包。

piku旨在简化部署体验,为个人开发者和小型项目提供类似Heroku的便捷操作,同时保持高度的灵活性和可扩展性。

9. Högertrafikomläggningen (en.wikipedia.org)

Dagen H:瑞典交通方向转换史

事件概述

  • 名称与日期:1967年9月3日,瑞典从左侧行车(左舵右行)切换至右侧行车(右舵左行),该日被称为 “Dagen H”(H日)或 “Högertrafikomläggningen”(右行交通重组)。H代表瑞典语“Högertrafik”(右行交通)。
  • 规模:被认为是瑞典历史上规模最大的后勤行动。

转换原因

  1. 邻国一致性:所有邻国(如挪威、芬兰)均采用右行制,且每年有数百万辆车跨境,左行制造成不便与安全隐患。
  2. 车辆与事故问题:瑞典超过90%的车辆为左舵车,在双车道公路上超车时视野受限,易引发正面碰撞,且变道困难。

反对意见与决议

  • 尽管1955年全民公投中83%的投票者希望保持左行,但瑞典议会仍于1963年批准了转换计划。主要推动因素是汽车数量预计从1950年代的50万急剧增长至1975年的280万,交通压力增大。

准备与宣传

  • 成立了专门的 “右行交通委员会” 负责协调。
  • 实施了长达四年的公共宣传运动,包括广泛广告、路标更换,并分发手套、贴纸等纪念品进行提醒。
  • 技术准备:所有路口预先安装了备用灯柱和信号灯(用黑塑料包裹),道路标线(白线覆盖黑胶带)需提前施划。全国约35万个交通标志需要更换或移除。车辆需将左行专用大灯更换为右行规格。

转换过程

  • 时间:1967年9月3日星期日凌晨5点整正式切换。
  • 交通管制:当天凌晨1点至6点禁止非必要车辆通行。所有在途车辆需在4:50完全停车,小心驶入右侧道路并再次停车,至5:00方可继续行驶。斯德哥尔摩和马尔默等大城市的管制时间更长,以允许工作人员重新配置路口。

即时结果与影响

  • 事故减少:转换当天及随后周一报告的交通事故数量低于往常平均水平,严重事故较少。专家认为,左舵车在右行道上超车视野更佳,且驾驶员因谨慎心态导致事故率临时下降。
  • 长期变化:然而,这种安全效应仅是暂时的。六周后,保险索赔数量回归正常水平;到1969年,事故率已恢复到转换前的水平。
  • 公共交通调整:许多城市的有轨电车线路被取消,替换为超过1000辆新购的右侧开门公共汽车。约8000辆旧公交车被改装为两侧开门。部分左行公交车被出口至巴基斯坦和肯尼亚。
  • 铁路与地铁:瑞典的铁路和斯德哥尔摩地铁系统未改变行车方向,仍保持左行。仅有轨电车系统进行了调整,部分线路因此被废弃,仅少数线路(如哥德堡、北雪平及斯德哥尔摩部分郊区线路)得以保留。

后续与影响

  • 次年(1968年5月26日),冰岛也进行了类似的交通方向转换,该日被称为“H-dagurinn”。
10. So you want to build a browser engine (robert.ocallahan.org)

构建竞争性浏览器引擎的关键建议

核心约束:安全与性能

  • 站点隔离:后Spectre时代必须实现站点隔离,每个站点的JS需独立OS地址空间。内容进程应最小化RAM使用,仅包含JS应用状态、DOM、CSS布局,避免图像数据等。跨进程共享缓存(如字体度量)以节省资源。
  • 内容主线程神圣性:页面JS运行在单线程上,易成瓶颈。避免阻塞主线程的其他工作,布局和渲染需尽量异步。浏览器需精细调度主线程活动以维持响应性。
  • 快速JS-DOM调用(WebIDL):DOM API调用必须高效,优化指令计数、字符串共享和JS JIT。实现大量WebIDL接口时需开发者友好。GC需处理DOM/JS跨边界周期,约束内存管理。

性能关键领域

  • 页面加载性能:最小化URL加载到内容显示的延迟。需预渲染、现代HTTP协议(缓存、带宽管理、优先级)。HTML解析器应增量支持预取,不阻塞主线程。CSS样式解析、布局和文本塑形需极快,可能用GPU加速渲染。
  • 滚动和动画:确保滚动和动画不受页面JS阻塞。构建场景图供合成器独立渲染,处理滚动输入事件,感知vsync并集成到API(如requestAnimationFrame)。支持跨帧边界的效果(SVG、CSS过滤器)。
  • 输入延迟:最小化输入到屏幕输出的延迟,如打字场景。优化管道:键盘事件接收、DOM事件分发、布局、渲染和合成。
  • 高质量视频播放:实现DOM API(EME、MSE)、沙箱容器解复用、现代编解码器集成、硬件解码支持。A/V同步需队列解码帧,与音频时钟同步。最小化功耗,支持零拷贝。

超越现有引擎的建议

  • 并行设计:从底层利用多核(E-cores),如并行解析和布局。
  • 编程语言选择:使用Rust等语言,确保代码干净、快速、内存安全且无数据竞争。
  • 状态持久化:序列化内容进程状态,重启浏览器后恢复页面状态。
  • 调试工具:构建强大工具诊断复杂网站问题,可借鉴replay.io或AI技术。
  • 渐进策略:初始可作为更快、更轻的Electron或WebView,降低Web兼容性门槛。

总结

构建竞争性浏览器引擎需深入安全与性能约束,优先处理站点隔离、主线程优化、API效率和加载速度。通过并行设计、合适语言选择和创新调试工具,可在特定方面超越现有引擎。

11. Dmv.org (computer.rip)

本文探讨了美国各州机动车管理机构的命名混乱现象,并以第三方网站dmv.org为例,揭示了其利用SEO策略和域名优势误导用户、获取流量的商业模式及演变历程。

美国各州机动车管理机构命名不统一

  • 美国各州对机动车管理机构的命名存在显著差异,常见名称包括DMV(28个州)、MVD、BMV、OMV等,部分州甚至使用“Driver Services”等其他称谓。
  • 机构设置也不统一,部分州将其置于交通局、财政局或州务卿办公室下,俄克拉荷马州则成立了综合服务的“Service Oklahoma”,夏威夷州甚至将职能下放至县级机构。
  • “DMV”已成为通俗代称,尤其在加州、德州等人口大州广泛使用,但实际官方名称可能不同,例如佛罗里达州官方机构为DHSMV,但其在线服务门户却命名为“MyDMV”。

第三方网站dmv.org的兴起与商业模式

  • dmv.org作为私营网站,自1999年起通过高质量内容积累和SEO优化,长期在搜索引擎中占据高位,甚至超越许多州政府官网。
  • 其商业模式基于流量变现:用户搜索“DMV”等关键词时,易被引导至该网站,再通过推荐链接、广告或直接销售课程(如驾驶安全培训)获利。
  • 类似网站(如dmvflorida.org)也采用相同策略,通过优化关键词获取流量,并导向付费服务(如在线驾照考试、续期代理等),甚至收取额外“便利费”。

法律纠纷与争议

  • 2007年,竞争对手起诉dmv.org涉嫌虚假广告,指控其冒充官方网站误导用户。
  • 法院最终裁定dmv.org存在虚假宣传,但因原告也有类似行为(“不洁之手”原则),未判决赔偿,仅要求其在网站显著位置声明“非政府机构”。
  • 诉讼文件显示,该网站频繁收到本应发给政府机构的敏感邮件(如酒驾报告),凸显了公众的混淆程度。

演变与现状

  • 法律纠纷后,dmv.org添加了免责声明,但影响力逐渐因谷歌算法调整(2019年左右被降低排名)而衰减。
  • 尽管网站仍运营,并宣传“使命转向公益”,但核心业务已回归为州政府网站的链接目录,影响力大不如前。
  • 本文指出,此类网站依赖搜索引擎排名生存,其策略暴露了早期互联网中域名投机、SEO农场与公共服务界限模糊的现象。
14. Draw an iceberg and see how it will float (joshdata.me)

绘制冰山并观察其漂浮

这是一个由@joshdata创建的互动游戏,灵感来源于@GlacialMeg在2021年2月19日的推文。游戏允许用户绘制冰山形状,并模拟其在水中的漂浮方式。

核心原理

  • 冰山密度低于水,因此通常以大约10%的质量浮在水面上。
  • 然而,现实中的冰山漂浮方向受多种因素影响,包括其三维质量分布和相对于水的密度,这些在游戏中仅为近似模拟。

灵感来源

@GlacialMeg在推文中呼吁科学家绘制冰山在稳定方向上的样子,并分享了她用水彩画的稳定冰山示例,以强调科学表示的重要性。

游戏功能

  • 用户可以通过绘制自定义冰山形状,直观地查看其如何漂浮。
  • 游戏基于物理原理,但简化了现实复杂性,以提供教育性和娱乐性体验。

局限性

游戏中的模拟是近似值,无法完全反映冰山在实际环境中的漂浮行为,因为忽略了三维密度分布等关键因素。

这个游戏结合了科学知识和互动体验,帮助用户理解冰山漂浮的基本概念,同时通过@GlacialMeg的推文突出了科学可视化的意义。

17. Finding out where syscalls are called from: Stack traces with strace (abstractexpr.com)

strace显示系统调用堆栈跟踪的方法

strace作为调试工具的优势在于无需调试信息即可显示程序的系统调用,但缺点是仅能看到调用本身,无法得知其在程序中的起源位置。当程序编译时包含调试信息(例如使用gcc的-g选项),strace的--stack-trace(或短选项-k)功能可以显示每个系统调用的堆栈跟踪。

示例演示

以一个简单的C程序hello.c为例,该程序使用printf函数输出信息,最终通过write系统调用实现。编译命令为gcc -g -o hello hello.c,包含调试信息。运行strace时使用--stack-trace选项:

strace --stack-trace ./hello

输出显示每次系统调用(如writeexit_group)后附带堆栈跟踪,需从下往上阅读,顶部为实际调用函数。

堆栈跟踪解析

堆栈跟踪主要包含动态链接库(如libc.so.6)和用户程序中的函数。例如:

 > /home/user/.../hello(print_info+0x4a) [0x11b3]
 > /home/user/.../hello(main+0x1d) [0x11d3]

这表明main函数调用print_info,随后进入printf及库函数。行尾的地址(如0x11b3)可通过addr2line工具转换为源代码文件和行号:

addr2line -e hello 0x11b3
# 输出:hello.c:9

美化输出

为自动化替换地址为文件名和行号,可使用提供的Python脚本pretty_print_strace.py。该脚本读取strace输出文件,调用addr2line解析地址,并输出美化结果。使用步骤:

  1. 将strace输出重定向到文件:
    strace -o strace.out --stack-trace ./hello
    
  2. 运行脚本处理文件:
    ./pretty_print_strace.py strace.out > strace-pretty.out
    

美化后输出中,堆栈跟踪条目将显示文件名和行号,例如:

 > /home/user/.../hello(print_info+0x4a) [hello.c:9]
 > /home/user/.../hello(main+0x1d) [hello.c:14]

标准库中的地址也可能被解析为源代码位置。

关键功能总结

  • 目的:定位系统调用在程序中的起源,辅助调试。
  • 条件:程序需编译时包含调试信息。
  • 工具:strace的堆栈跟踪功能结合addr2line地址解析。
  • 结构:堆栈跟踪从下至上展示调用链,顶部为直接调用函数。
  • 自动化:Python脚本实现地址到源代码位置的批量转换。

该方法通过整合strace与调试工具,提供了完整的系统调用上下文信息,显著提升调试效率。

20. Scalable MatMul-Free Language Modeling (arxiv.org)

这篇研究论文介绍了在大型语言模型中移除矩阵乘法操作的方法。其核心内容和发现如下:

  • 背景与挑战:当前大型语言模型的扩展面临计算和内存瓶颈,主要原因是模型中的注意力层和前馈层高度依赖矩阵乘法运算。
  • 核心方案与性能:研究提出并验证了一种无需矩阵乘法的LLM架构。实验表明,即使在参数规模高达27亿的模型上,其性能也与先进的预训练Transformer模型相当,且随着模型规模增大,性能差距进一步缩小。
  • 显著效率提升:该方案实现了巨大的内存和能效优势。在GPU上进行高效实现,训练过程中的内存消耗最高可减少61%,推理过程的内存占用可降低超过10倍。当部署到多芯片神经形态系统时,该模型利用异步处理,相比边缘GPU,吞吐量提升了4倍,能耗降低了10倍。
  • 研究状态:该论文自2024年6月首次提交后,历经多次更新,最新版本更新于2025年7月。
21. Beware anti patterns in event driven architecture (codeopinion.com)

事件驱动架构中的反模式

在事件驱动架构(EDA)中,常见的模式若被误用或应用于不合适的场景,可能演变为反模式。以下是几个关键反模式及其原因:

1. 泄漏内部实现细节

  • 问题:当服务将内部事件(如基于数据库变更的 CRUD 事件)直接发布到外部时,会暴露服务内部的数据库模式或数据结构,导致耦合。
  • 区分内部与外部事件
    • 内部事件:仅在服务边界内使用,允许灵活演化。
    • 外部事件:作为公共契约,需谨慎版本管理以避免破坏其他服务。
  • 风险:使用变更数据捕获(CDC)工具或 CRUD 驱动事件(如 CustomerChanged)时,事件仅通知数据变更而非业务意图,可能误导消费者推断变更原因。

2. 滥用事件代替命令

  • 问题:将命令(调用行为的请求)错误地建模为事件(通知已发生事实的发布-订阅消息)。
  • 关键区别
    • 命令:单一消费者,强调行为触发。
    • 事件:多消费者,强调事实通知。
  • 影响:强制使用发布-订阅模式处理本应点对点的命令,会导致架构复杂化。

3. 过度追求消息顺序

  • 问题:为确保数据一致性(如按时间戳处理事件),强求消息严格有序。
  • 代价:消息代理(如 Kafka)通过分区限制并发消费者,牺牲吞吐量和扩展性。
  • 替代方案:使用 Saga 或接受异步特性,允许乱序消息处理(例如通过版本控制或状态合并)。

4. 将查询同步需求异步化

  • 问题:使用事件或消息队列处理查询(如请求-响应模式),违背查询的天然同步性。
  • 建议:查询应采用同步的请求-响应模式,而非强推异步事件驱动。

总结

事件驱动架构的核心反模式源于误用模式:

  • 数据驱动事件导致内部细节泄漏和隐式耦合。
  • 混淆事件与命令破坏单一职责原则。
  • 强制消息顺序牺牲系统扩展性。
  • 异步化查询违背自然交互模式。

正确应用 EDA 需明确:

  • 区分内部/外部事件语义。
  • 根据行为(命令)与通知(事件)选择消息类型。
  • 权衡有序处理与并发需求。
  • 同步与异步场景匹配对应模式(如查询用 REST,命令用点对点消息)。

相关资源:

22. Show HN: I made a web game that makes practicing basic arithmetic fun (www.worchle.com)

Mathic 游戏摘要

Mathic 是一个网页游戏,旨在通过趣味方式练习基础算术。玩家需要在网格中快速找到一个等式,使其等于显示的魔术数字(M.N.)。等式可通过点击数字和运算符来高亮,支持水平和垂直方向,以及正向和反向。规则要求等式以数字开头,后跟运算符,再后跟另一个数字,例如 7+3 或更长的组合如 7+3+4。

游戏目标是在游戏结束前解决尽可能多的魔术数字。连续解决会建立连击,连击越高分数越高,因此准确性至关重要。玩家可使用跳过功能,每轮有3次机会,通过点击当前魔术数字来跳过难题。

游戏提供多种模式:

  • 计时模式:默认模式,每轮60秒,计时从解决第一个魔术数字开始,时间到则结束。
  • 计时+模式:每轮60秒,但每正确答案增加5秒时间,计时同样从解决第一个魔术数字开始。
  • 生命模式:无时间限制,每轮有3条生命,错误答案会减少生命,生命耗尽则结束。
  • 禅模式:无限玩,无时间、生命、分数或连击限制,适合休闲体验。

玩家还可以自定义游戏设置,包括启用黑暗模式、更改游戏模式、选择不同运算符、设置焦点数字、调整网格尺寸等,以适应个人偏好。

24. Show HN: We've open-sourced our LLM attention visualization library (github.com)

Inspectus 是一个开源的机器学习可视化工具库,专注于大语言模型的内部机制分析,可在 Jupyter 笔记本中通过 Python API 使用。

主要功能

  1. 注意力可视化:这是该库的核心功能,提供多种视图以理解 Transformer 模型中注意力机制的工作原理。

    • 组件
      • 注意力矩阵:可视化 token 间的注意力分数。
      • 查询/键 Token 热图:显示选定 token 与其他 token 的注意力分数总和。
      • 维度热图:展示注意力分数在层或头等维度上的分布。
    • 用法
      • 简单调用inspectus.attention(attn, tokens),其中 attn 是注意力张量。
      • 支持 Hugging Face 模型:可直接可视化 transformers 模型输出的 attentions
      • 支持自定义注意力矩阵:可传入 NumPy 数组和自定义的查询/键 token 列表。
  2. Token 可视化:用于可视化与 token 相关的多种指标(如 loss, entropy),并支持为 token 添加额外信息。通过下拉菜单选择不同指标进行查看。

  3. 分布图:用于展示数据序列的分布情况,在每一步计算数据分布,并绘制基于百分位数(如 0, 50, 100 等 9 个点)的最多 5 条分布带。适用于识别数据中的异常值,例如分析模型训练损失。

其他信息

  • 开发设置:项目提供了开发文档。
  • 引用:若用于学术研究,可使用其提供的 BibTeX 条目进行引用。
27. Fixing a knockoff Altera USB Blaster that never worked (www.downtowndougbrown.com)

修复两个从未工作的仿制Altera USB Blaster

本文作者在制作Time Sleuth(一个用于测量HDMI输入延迟的开源项目)时,需要为Altera MAX 10 FPGA烧录程序。由于原厂USB Blaster价格昂贵,他先后购买了两款廉价的仿制克隆设备,并详细记录了修复它们的过程。

背景与问题

作者首先购买了Waveshare USB Blaster V2。该设备在Windows下可正常工作,但在Linux(使用Quartus Programmer)下编程会随机失败。Waveshare官方回复称未在Linux下测试。作者拆解发现其内部采用FTDI FT245RL芯片Altera EPM3064A CPLD,并配有74LVC244A缓冲器用于电平转换。

随后,作者又购买了一个仅售9美元的更廉价克隆版(基于WCH CH552G微控制器)。该设备完全无法工作,在Linux下无响应,在Windows下直接导致蓝屏(PFN_LIST_CORRUPT错误)。

调查与修复过程

1. Waveshare设备:时钟频率问题

作者使用USB硬件嗅探器示波器进行分析,对比了Windows和Linux下成功的USB流量差异。他自学了JTAG协议和USB Blaster的通信协议(简单总结为控制引脚的位模式或批量移出数据的字节模式)。

  • 关键发现:示波器显示设备的TCK时钟频率为6.25 MHz(由25MHz晶振4分频得到),而原厂设计通常为6MHz。
  • 假设:轻微超频可能导致时序边界问题,引发间歇性故障。
  • 实验验证:作者移除了设备上的25MHz晶振,改用Raspberry Pi Pico输出可调时钟信号。经过测试,当频率降至15.625 MHz时,设备在Linux下变得完全可靠。
  • 结论:CPLD设计可能存在微妙的时序缺陷,而Windows下软件组装JTAG命令的方式恰好规避了此问题。通过更换更低频率的晶振(如12MHz)可彻底解决。

2. CH552G廉价设备:固件重写

作者拆解发现该设备仅使用一颗廉价的WCH CH552G 8位微控制器

  • 问题分析:原始固件存在严重缺陷,既无法在Linux下工作,在Windows下还会因不兼容的USB响应导致系统崩溃。
  • 逆向工程:作者用万用表测出了CH552G芯片与JTAG引脚(TMS, TDI, TDO, TCK等)的连接关系。
  • 固件移植:他找到了一个五年前基于Blinkinlabs的CH55x SDK的开源USB Blaster固件项目。在本地搭建开发环境后,他根据新设备的引脚映射修改了固件代码,并修复了几个问题:
    1. 调整了系统时钟配置(在3.3V供电下,最大时钟频率需限制在16MHz以内)。
    2. 修正了USB数据包前缀。
    3. 修复了USB帧起始(SOF)中断处理逻辑,解决了在Windows下导致蓝屏的兼容性问题。
    4. 反转了活动LED的逻辑。
  • 成功运行:将修改后的开源固件刷入该设备后,这台原本无用的9美元克隆器在Linux和Windows下均能正常工作

成果与总结

作者成功修复了两款故障的USB Blaster克隆设备:

  1. Waveshare V2:通过降低时钟频率(计划更换为12MHz晶振)解决了Linux兼容性问题。
  2. CH552G廉价版:通过逆向工程和重写开源固件,将其转变为一个完全功能的编程器。

他将自己修改后的CH552G固件及刷机二进制文件发布在GitHub上,供遇到同样问题的人使用。整个过程展示了通过硬件逆向、协议分析和固件编程来修复廉价电子产品的实用技术。

28. Teams of LLM Agents Can Exploit Zero-Day Vulnerabilities (arxiv.org)

《Teams of LLM Agents Can Exploit Zero-Day Vulnerabilities》内容总结

研究背景与挑战

大型语言模型(LLM)智能体在网络安全领域的应用日益深入。现有研究表明,在提供漏洞描述或面对简单的夺旗赛(CTF)问题时,LLM智能体能够利用现实世界中的漏洞。然而,当面对事先完全未知的零日漏洞(Zero-day vulnerabilities) 时,单个LLM智能体由于在探索多种潜在漏洞和进行长期规划方面能力不足,表现往往较差。

核心解决方案:HPTSA系统

为突破单个智能体的局限性,研究提出了一种名为 HPTSA 的多智能体协作系统。该系统的关键结构与功能包括:

  • 规划智能体(Planning Agent):作为系统的核心调度者,负责探索目标系统,并决定在特定阶段启动和调用哪些子智能体。
  • 子智能体(Subagents):由规划智能体按需启动,执行具体的漏洞探测与利用任务。
  • 机制优势:通过这种任务分配与协作机制,HPTSA有效解决了单个智能体在尝试不同漏洞时面临的长期规划难题,提升了复杂环境下的探索与攻击效率。

实验评估与结果

  • 基准测试构建:研究团队构建了一个包含14个现实世界零日漏洞的基准测试集,用于客观评估智能体的漏洞利用能力。
  • 性能提升:实验结果表明,HPTSA多智能体团队在利用零日漏洞的表现上显著优于先前的智能体框架,性能提升最高可达 4.3倍
29. PiDP-10 – a modern replica of the PDP-10 (obsolescence.dev)

PiDP-10:PDP-10主计算机的现代复制品

PiDP-10 是一个现代复制品项目,旨在重现 DEC 公司 1968 年推出的 PDP-10 主计算机,特别是 MIT AI 实验室在 1970 年代的环境。该项目不仅展示计算机历史,更致力于保持其实际操作体验,让用户能在家中的“计算机历史胶囊”中亲身体验早期黑客文化和技术突破。

项目目的与意义

PiDP-10 的核心目标是维持 PDP-10 的实践经验,而非仅展示历史文物。PDP-10 在 MIT AI 实验室中扮演了关键角色,推动了黑客文化、早期人工智能演示(如 Shrdlu)、自由软件运动和 ARPANET 的发展。通过这个复制品,用户可以直接操作 ITS 操作系统和数百种历史应用,体验 1960-70 年代的计算环境。项目强调其作为多功能设备,可兼作网络存储或媒体服务器,适应现代生活需求。

背景故事

PDP-10 是 DEC 进入主计算机领域的里程碑,其 36 位架构和实时多用户多任务操作系统 TOPS-10 影响了后续操作系统如 RT-11、CP/M 和 MS-DOS。在 MIT AI 实验室,PDP-10 运行 ITS 操作系统,成为黑客们的乐园,孕育了 MacLisp、Emacs 和早期 AI 项目。该机器没有密码安全措施,允许全球用户连接,促进了早期网络和自由软件的诞生。项目团队通过与保罗·艾伦(Paul Allen)修复的原版 KA10 机器比对,确保了复制品的准确性。

技术规格

PDP-10 采用 36 位字长架构,指令集丰富,支持快速数据处理。其时钟速度约 0.6 MHz,但通过高效指令执行提供强大性能。内存地址空间可达 256 千字(超过 1 兆字节),外设包括磁带驱动器、磁盘驱动器和网络接口。这些特性使其成为早期交互式计算的代表。

复制品细节

硬件

  • 外观:注入成型机箱,宽半米以上,模拟 KA10 的标志设计。
  • 前面板:驱动 124 个指示灯和 74 个开关,复刻原机交互体验。
  • 核心:内置 Raspberry Pi 5 运行 simh 项目编写的模拟器,可同时作为标准 Linux 系统使用,实现双用途功能(如网络服务器)。

软件

  • 操作系统:支持 TOPS-10 和 ITS 双启动选项。TOPS-10 是多用户多任务 OS,而 ITS 是 MIT AI 实验室的核心系统,无安全限制。
  • 模拟环境:不仅模拟 PDP-10,还包括 PDP-6、PDP-11、终端和 IMP 设备(ARPANET 路由器),几乎重现整个 MIT AI 实验室硬件生态。
  • 应用:包含数百种历史软件、游戏和 AI 项目,例如多用户 MazeWar 游戏和早期网络应用。

构建与使用

项目提供完整资源:

  • 构建套件:可选择购买组装测试版或自行组装,配有详细说明书。
  • 使用指南:包括操作手册、可选修改和在线用户支持(如 Google 群组)。
  • 历史重建:ITS 重建项目深入挖掘 MIT 黑客遗产,通过磁盘映像保存大量软件。

总结

PiDP-10 是一个融合历史与实用性的项目,让用户亲身体验计算史上的关键时代。其硬件复刻和软件模拟确保了真实感,而现代集成(如 Raspberry Pi)使其易于融入当代环境。通过这个复制品,用户可以探索黑客文化起源、早期网络和 AI 发展,同时享受多功能计算设备的便利。