2024-06-03

30 篇热帖

2. Hacking millions of modems and investigating who hacked my modem (samcurry.net)

这篇文章讲述了作者一次偶然发现自身网络流量被未知IP地址拦截重放的离奇经历,进而展开的一系列调查,最终发现了美国互联网服务提供商(ISP)Cox Communications的一个重大安全漏洞,该漏洞可能影响了数百万用户的调制解调器设备。

事件起因与初步调查 作者在工作中发现自己发往AWS服务器的HTTP请求在几秒后被一个未知的IP地址(159.65.76.209)完全重放。测试不同设备(电脑、手机)和不同云服务商(AWS、GCP)后,确认问题源头在于其家用调制解调器或ISP网络。查询该IP地址发现其曾用于托管针对南美一家网络安全公司的钓鱼网站,并可能关联邮件服务器域名。因设备是租赁的,作者在ISP门店被迫上交旧调制解调器并更换新设备后,异常流量重放现象停止。

多年后的新发现 近3年后,作者与朋友重新调查。通过分析关联的域名模式,他们发现该IP地址指向的域名(如limit742921.tokyojingoism44769.xyz)符合恶意软件使用的域名生成算法(DGA)特征,暗示该IP很可能是一个用于控制受感染路由器的命令与控制(C&C)服务器

发现Cox Business门户网站漏洞 作者将调查转向ISP的管理工具。他假设黑客可能攻击了ISP内部用于远程管理客户设备的系统。通过分析Cox Business门户网站的前端代码,作者发现其核心API路径(/api/cbma/)是一个反向代理,后端运行的是Spring框架。

关键技术发现与漏洞利用

  1. Swagger API文档泄露:通过URL编码技巧(在.js文件后附加%2f),作者绕过了静态资源路由限制,访问到了完整的Swagger API文档,发现有超过700个API端点,涵盖账户、设备、账单、语音等广泛功能。
  2. 授权绕过漏洞:测试发现,许多需要授权的API端点(如客户资料搜索),只需简单地重复发送同一个未授权的HTTP请求,最终就会得到成功的200响应。这使得未经授权的访问成为可能。
  3. 完整的攻击链实现
    • 信息搜集:通过客户姓名搜索,可获取其账户唯一标识符(GUID)。
    • 获取设备信息:利用账户GUID,可查询该账户下所有连接设备的MAC地址、型号、序列号等详细信息。
    • 设备控制:最关键的发现是,通过一个需要encryptedValue参数的API(用于更新设备设置,如WiFi密码),作者发现该参数的验证存在缺陷。他只需要目标设备的MAC地址,即可构造一个有效的加密值,并成功向该设备发送配置更新命令。作者通过将自己的WiFi名称改为“Curry”并导致网络重启验证了这一点。

漏洞影响与修复 该系列漏洞意味着,一个完全外部的攻击者无需任何前提条件,就能够:

  • 搜索并获取Cox商业客户的个人信息(包括FBI现场办事处等敏感客户)。
  • 查询任意客户设备的MAC地址及连接设备。
  • 对数百万台通过Cox网络管理的调制解调器执行命令、修改设置,获得相当于ISP技术支持人员的权限。 Cox在收到报告后迅速下线了有漏洞的API端点(6小时内),并随后修复了授权问题。

结论与未解之谜 作者披露的漏洞揭示了ISP与客户设备之间信任层的安全缺陷。尽管此次发现的API漏洞被快速修复,但作者最初的个人调制解调器被入侵事件(发生在2021年,早于该漏洞服务上线2023年)的具体原因仍是未解之谜。攻击者重放流量的目的也令人费解。

3. I'm forking Ladybird and stepping down as SerenityOS BDFL (awesomekling.substack.com)

SerenityOS创始人宣布将Ladybird分叉并辞去BDFL职务

SerenityOS的创始人宣布将把Ladybird浏览器从SerenityOS中分叉出来,成为一个独立的顶级项目。同时,他将辞去SerenityOS的BDFL(终身仁慈独裁者)角色,将项目的控制权移交给现有的维护团队。

决策背景:SerenityOS于2018年由创始人个人创建,后发展为一个拥有超过一千名贡献者的开源社区。过去两年,创始人的工作重心已完全转向最初作为SerenityOS内部HTML查看器而开发的Ladybird。自2022年Ladybird成为跨平台项目后,他几乎全部精力都投入到了其Linux版本的开发中。他认识到,一个社区中逐渐形成了两个兴趣不同的群体:一个专注于构建桌面操作系统,另一个专注于构建跨平台网络浏览器,两者继续共享所有资源和基础设施已不合时宜。

主要变更

  1. 项目分立:Ladybird将拥有独立的开发仓库(GitHub)、沟通渠道(Discord服务器)。
  2. 目标平台:Ladybird将支持Linux和macOS,不再支持SerenityOS。
  3. 开发政策:Ladybird将放宽“非此处发明”政策,允许使用第三方开源库,而SerenityOS则保持原有的严格政策。
  4. 项目焦点:SerenityOS的焦点将重新回归到“与朋友一起开发有趣的软件”,而非此前过度专注于构建网络浏览器。

创始人强调此次变更不存在内部矛盾,纯粹是为了让两个项目都能更专注于各自的核心目标,从而获得更好的发展。他对SerenityOS社区表达了深厚的感情与感谢,并表示将SerenityOS的未来交到社区手中,相信维护团队会妥善管理。他对于两个项目能更专注于自身目标的未来感到兴奋。

4. Show HN: I made a tiny camera with super long battery life (toaster.llc)

Photon 相机摘要

Photon 是一款由加州开发者 Dave 打造的超小型相机,主打超长续航极简安全。其核心特性与技术规格如下:

核心优势

  • 电池寿命:单次充电可拍摄约 50,000 张照片,续航以年为单位计算。
  • 安全隐私:无蓝牙、Wi-Fi 或蜂窝网络,照片无法无线传输,杜绝远程入侵与隐私泄露。
  • 开源软硬件:硬件设计与软件代码完全开源,供用户审查与修改。

拍摄与存储

  • 拍摄模式:支持定时拍摄(用于延时摄影)与动态捕捉(侦测运动触发拍摄)。
  • 镜头视角130° 超广角水平视角,覆盖范围广。
  • 存储机制:内置存储约 20,000 张照片,空间满后新照片自动覆盖最旧照片。
  • 图像格式:以 RAW 格式保存传感器原始数据,保证图像质量。

设计与配套

  • 外形尺寸:仅 47 x 36 x 31 mm,比 AirPods 外壳更小,采用 6061 铝合金加工并阳极氧化处理。
  • 防护性能:防雨设计,可承受雨水但不可浸水。
  • 软件支持:配套 Photon Transfer 软件,仅适配 Mac 系统,通过 USB-C 接口连接。
  • 费用模式:无云服务、无订阅费用,一次性购买。

技术规格

  • 电池寿命:≥50,000 张照片。
  • 照片分辨率:2304 x 1296 像素。
  • 视角:水平 130° / 垂直 75°(相机);水平 90° / 垂直 90°(动态侦测)。
  • 侦测范围:动态侦测最远约 5 米
  • 工作温度:0°C 至 50°C(32°F 至 122°F)。

注意事项

  • 低光性能:当前版本在弱光环境下表现有限,建议等待后续软件更新。
  • 运动传感器局限:无法检测玻璃后方的运动;在自然环境中(如风吹草动)可能频繁误触发,导致电量快速消耗,未来更新可能提供灵敏度调节。
  • 存储覆盖:存储满后自动覆盖旧照片,无手动清理提示。
5. Ask HN: Who is hiring? (June 2024)
6. Show HN: 10 Years to Build a Free SQL Editor (www.timestored.com)

QStudio 3.0 版本核心发布摘要

QStudio 3.0 是一款旨在成为现代数据分析师首选的强大免费SQL编辑器。本次更新的核心是深度集成DuckDB,并引入了多项提升分析效率与易用性的关键功能。

核心功能与亮点

  • 强大的本地分析引擎 - qDuckDB

    • QStudio 的核心集成了专为OLAP分析优化的DuckDB,构成一个强大的桌面数据分析平台。
    • 支持在本地创建和保存数据库。
    • 能够将任何数据库的查询结果保存到本地。
    • 提供Parquet文件查看器(Windows下可直接点击打开)。
    • 支持跨不同数据源进行数据连接查询。
  • 数据透视功能 - Pulse-Pivot

    • 允许用户以类似Excel的方式对数据进行透视操作,并能够生成对应的SQL查询语句,便于未来复用。
  • AI辅助功能

    • Text2SQL:根据自然语言描述生成SQL查询。
    • Explain-My-Query:逐步解释SQL代码的逻辑。
    • Explain-My-Error:利用AI分析SQL代码报错的原因。
  • 其他重要改进

    • 增强导出:支持将完整查询结果(而非仅可见行)导出为Excel (.xlsx)文件。
    • 语法高亮优化:改进了SQL高亮,并新增了对HTML、JS、JSON、Bat、Sh等语言的支持。
    • 编辑器增强:新增SQL格式化、大小写转换命令,支持使用Ctrl+Q运行当前SQL语句。
    • 自动补全:结合内置模板和AI建议,提供SQL自动补全。
    • DolphinDB支持:新增服务器浏览、语法高亮和自动补全。
    • 用户界面:新增图表和数据库图标,添加了欢迎屏幕,并移除了旧版Java代码以提升性能。

生态与合作

QStudio 3.0 的发展得益于合作伙伴的贡献:

  • DuckDB:其列式数据库技术是实现强大本地分析功能的基石。
  • Data Intellect:协助开发了大型企业所需的单点登录(SSO)集成。
  • PRQL:集成了这种现代数据转换语言的支持,为所有数据库提供了一个更简洁、强大的SQL替代方案。

总结

QStudio 3.0 标志着这款免费SQL编辑器在十年开发后的重要进化,通过集成DuckDB、引入AI助手、增强数据操作与导出能力,致力于成为最佳的分析型数据库IDE。用户可通过其官网了解最新信息或通过GitHub反馈问题。

7. EU: Users who refuse scanning to be prevented from sharing photos and links (www.patrick-breyer.de)
# 欧盟争议性聊天监控法规最新动态

## 核心冲突
法国可能放弃此前对欧盟《儿童性虐待法规》(俗称“聊天控制”)的否决权,使这一极具争议的法案有望获得欧盟政府批准。该法规旨在通过技术手段扫描用户通信内容以打击儿童性剥削。

## 法规关键内容(2024年5月28日草案)
1.  **用户选择机制**:使用带聊天功能的应用/服务的用户将被要求选择是否接受对其私下分享的图像、照片和视频进行“自动扫描与可能的上报”。
2.  **技术手段**:将运用人工智能技术对未知图像和视频进行审查。
3.  **拒绝后果**:若用户拒绝扫描,将被**禁止发送或接收图像、照片、视频和链接**。
4.  **端到端加密**:WhatsApp、Signal等端到端加密服务必须在消息发送前实施自动搜索(即“客户端扫描”),此举将破坏原有的加密安全性。
5.  **内容调整**:拟议中的文本信息扫描(用于检测诱导内容)和语音通信扫描将被取消。
6.  **豁免对象**:作为对法国的可能让步,安全机构和军事人员的聊天记录可获豁免。

## 争议与反对声音
- **法律服务局立场**:欧盟理事会法律服务局明确指出,对非嫌疑对象进行无差别扫描仍被视为**侵犯基本权利**。
- **主要反对者(欧洲议员 Patrick Breyer)警告**:
    - 该草案实质是欧盟委员会最初极端提案的“换包装”实施。
    - 使用不可靠技术扫描数百万无辜公民的私人聊天和照片,并将内容泄露给无关第三方,将**摧毁数字通信隐私**。
    - 客户端扫描会**破坏端到端加密**,使智能手机成为“间谍”。
- **程序担忧**:部分此前持批评态度的欧盟政府开始赞扬新草案,可能导致此前形成的**阻挠联盟瓦解**。反对者担心欧盟议会在闭门谈判中逐渐放弃立场,做出危及在线安全的妥协。

## 最新进展
欧盟政府计划于**2024年6月4日**继续讨论该法规草案。事态发展显示,尽管存在重大争议和基本权利方面的质疑,多数欧盟政府仍决心推进此法规。
8. The Intellectual Obesity Crisis (2022) (www.gurwinder.blog)

信息过载危机:心智的肥胖症

本文将信息过量比作糖分过量,指出在信息匮乏的原始时代,好奇心帮助人类获取宝贵知识;而在当今信息泛滥的时代,同样的好奇心反而导致我们沉迷于无用信息,引发“心智肥胖症”。

核心机制:信息的“糖瘾”

  • 大脑的多巴胺奖励系统将信息本身视为奖励,无论信息是否有用。
  • 这源于进化:在稀缺环境中,获取信息(如食物来源)关乎生存。
  • 但工业社会和互联网使信息过量供应,这种本能转化为对低质量“垃圾信息” 的成瘾性渴求。

“垃圾信息”的定义与特征

  • 核心特征:并非因为虚假,而是无实用价值,不能改善生活或增进理解。
  • 生产逻辑:在注意力经济中,生产廉价、情绪化的垃圾信息是吸引眼球的最高效方式。
  • 主要类型:八卦、琐事、标题党、营销文、煽动性内容、无意义的刷屏等。
  • 成瘾性:尤其是能引发愤怒等强烈情绪的内容,传播最快且最具成瘾性。

心智肥胖的后果

  1. 认知能力下降:持续浏览社交媒体可能导致“规范性解离”,注意力涣散,信息处理能力减弱。
  2. 心智堵塞:无用信息填满记忆,分散注意力,混淆判断,使人沉迷于琐事和虚假愤怒。
  3. 形成恶性循环:情绪化刺激促使消费更多信息,而持续的消费又挤占了深度学习、专注和思考的时间。
  4. 最终结果:意识流被堵塞,形成“心智动脉硬化”,宝贵的时间和注意力被消耗,却留不下有意义的记忆。

应对方案:管理信息饮食

  1. 培养元认知习惯:在消费信息前,实践“10-10-10法则”——问自己10分钟、10个月、10年后如何看待这条信息。
  2. 主动调整环境:通过创造性活动(如作者建议的写作)强制过滤信息。写作要求对读者负责,并需要独处与深度思考,有助于在干扰世界中保持清醒。
  3. 自主制定信息食谱:最终需找到适合自己的信息摄入方式。作者警示,若放任自己随意消费网络信息,最终人生回顾时,你不会记得那些无用的推文或帖子,只会意识到自己不是在消费信息,而是被信息所消费。

结论:本文呼吁读者警惕被算法和情绪操控的信息消费模式,通过自觉管理和创造性输出,夺回对自身注意力和心智的控制权,避免陷入“信息快餐”导致的空虚与悔恨。

9. Quake in 13kb (2021) (js13kgames.com)

《雷神之锤》压缩至13KB:js13kGames 2021 竞赛项目

项目概述

Q1K3 是一个参与 js13kGames 2021 竞赛的项目,其核心目标是将经典的第一人称射击游戏《雷神之锤》(Quake)压缩并实现在一个仅 13KB 大小的网页包中。

核心成就

  1. 极端压缩:在游戏体积限制极为严苛(代码、资源总计不超过13KB)的竞赛规则下,成功实现了《雷神之锤》的核心游戏体验。
  2. 技术挑战:该项目涉及对原始游戏代码、资源(如纹理、模型)进行大幅度的优化、重写或替换,以达到竞赛的尺寸要求,同时保留游戏的可玩性。
  3. 竞赛背景:js13kGames 是一个面向网页游戏开发者的年度挑战赛,强调在极小的代码体积内实现创意与功能。Q1K3 是该竞赛中一个突出的、展示极限压缩与网页技术能力的实例。

总结

Q1K3 项目展示了在极端的体积限制下,通过先进的技术手段和大胆的优化,能够在网页上重现一个标志性的3D游戏体验。它是对开发者技术能力和创造力的一次集中体现。

10. AMD Unveils Ryzen 9000 CPUs for Desktop, Zen 5 (www.anandtech.com)

2026年最佳游戏CPU推荐摘要

市场概述

当前游戏CPU市场由AMD与Intel主导。AMD凭借3D V-Cache技术在中高端游戏性能上占据优势,而Intel通过Arrow Lake Refresh系列在性价比和应用性能上展开竞争。下一代产品(如Intel Nova Lake与AMD Zen 6)预计在2026年底或之后发布。目前DDR5内存与SSD价格高涨,大幅增加了平台升级成本。

最佳游戏CPU推荐(按价格与性能分级)

1. 300-400美元区间

  • 首选:AMD Ryzen 7 9800X3D

    • 8核16线程,Zen 4架构,AM5平台,3D V-Cache技术提供96MB L3缓存。
    • 游戏性能远超Intel旗舰(比Core i9-14900K快约30%),能效比高,散热需求低。
    • 性价比优于更新款的Ryzen 7 9850X3D(后者仅快约3.3%,价格高6%)。
  • 备选1:AMD Ryzen 7 9700X

    • 8核16线程,Zen 5架构,TDP仅65W(可选105W模式),单线程性能领先。
    • 游戏性能与Intel Core i9-14900K持平,优于Arrow Lake系列,价格约305美元。
  • 备选2:Intel Core Ultra 7 270K Plus

    • 24核24线程(8性能核+16能效核),Arrow Lake Refresh架构,LGA 1851平台。
    • 应用性能突出,游戏性能略胜Ryzen 7 9700X,支持iBOT技术提升游戏表现,价格350美元。

2. 200-300美元中端区间

  • 首选:Intel Core Ultra 5 250K Plus

    • 18核18线程,Arrow Lake Refresh架构,价格仅220美元。
    • 游戏性能与AMD Ryzen 5 9600X持平,多线程性能超后者一倍以上,能效较好。
  • 备选:AMD Ryzen 5 7600X3D

    • 6核12线程,Zen 4架构,3D V-Cache提供102MB缓存,游戏性能接近Ryzen 7 7800X3D。
    • 游戏功耗仅约65W,性价比高(约230美元),但多线程性能较弱。

3. 400美元以上高性能区间

  • 首选:AMD Ryzen 9 9950X3D2

    • 16核32线程,Zen 5架构,双CCD均搭载3D V-Cache(总192MB L3缓存)。
    • 游戏与生产力性能兼备,比Ryzen 9 9950X3D多线程快约3.9%,价格约900美元。
  • 备选:Intel Core i9-14900K

    • 上代旗舰,8性能核+16能效核,游戏性能仍优于新一代Arrow Lake旗舰(Core Ultra 9 285K)。
    • 价格降至约469美元,但功耗高,需更新BIOS解决曾存在的稳定性问题。

4. 100-150美元预算区间

  • 首选:AMD Ryzen 5 7600X

    • 6核12线程,Zen 4架构,AM5平台,价格约164美元。
    • 游戏性能良好,但需DDR5内存,平台成本较高。
  • 备选:AMD Ryzen 5 5600

    • 6核12线程,Zen 3架构,AM4平台(支持DDR4),价格约135美元。
    • 适合旧平台升级,附带散热器,但无PCIe 5.0支持。

5. 入门级集成显卡游戏

  • 首选:AMD Ryzen 5 8600G

    • 6核12线程,RDNA 3集成显卡(8CU),AM5平台,价格约191美元。
    • 支持Hyper-RX技术(含帧生成、超分辨率),可在720p/1080p低画质下运行部分游戏。
  • 备选:AMD Ryzen 5 5600G(或5600GT)

    • 旧款APU,Vega集成显卡,AM4平台(DDR4),价格约150美元。
    • 适合极低预算,720p游戏表现较好,附带散热器。

选购要点

  • 核心数量:8核足以满足主流游戏,更多核心对游戏提升有限但有利于多任务。
  • 平台成本:DDR5内存及新主板(如AM5/LGA 1851)价格高昂,预算有限时可考虑DDR4平台(如AM4)。
  • 3D V-Cache技术:显著提升游戏性能,尤其在较低分辨率下,但对生产力应用增益有限。
  • 市场趋势:AMD X3D处理器目前游戏性能领先,Intel Arrow Lake Refresh在性价比方面表现出色。

注意事项

  • 价格随市场波动,建议参考实时报价。
  • 部分CPU需BIOS更新以优化性能或稳定性(如Intel Core i9-14900K)。
  • 游戏表现受GPU、内存等因素影响,需均衡配置。

(注:以上信息基于Tom's Hardware 2026年5月更新的测试数据与推荐。)

11. Learn CSS Grid with a virtual garden game (cssgridgarden.com)

Grid Garden 是由 Codepip 开发的一款用于学习 CSS Grid 布局的虚拟花园游戏。该游戏支持包括中文(简体与繁体)在内的众多语言版本。

12. FBI Raids Big Corporate Landlord over Nationwide Rent Hikes (www.thebignewsletter.com)

根据本周新闻,FBI突击搜查了大型企业房东Cortland Management,涉及一桩波及全国的租金操纵案,可能影响高达1600万套公寓。该案核心指控是Cortland与软件公司RealPage共谋,通过算法协调定价和限制供应来推高租金。

Cortland总部位于亚特兰大,在十三个州运营8.5万套租赁单元。但更大的阴谋在于RealPage,它被指控自2016年起协调至少21家大型房东和机构投资者,这些机构控制了全美70%的多户公寓楼和1600万套单元。RealPage由私募股权巨头Thoma Bravo所有。

据称,房东们每日通过RealPage的收益管理系统共享实时定价、库存和入住率数据,并获得定价建议。房东采纳这些建议的比例高达80-90%,系统甚至会通过“定价顾问”施压,促使房东接受建议,并威胁不遵守的客户。有指控称,系统还倾向于将公寓保持空置状态以推高价格。

这一模式导致了异常的市场现象:在亚特兰大,尽管空置率上升,但自2016年以来租金已暴涨80%。文中指出,2015-2017年间,许多房东开始使用RealPage的定价建议,而2017年RealPage收购了主要竞争对手Lease Rent Option,从而获得了近乎完美的市场供需信息。

司法部正对此案进行深入调查,且性质可能涉及刑事犯罪。值得注意的是,FBI此次参与了反垄断调查,这是该机构自2000年代初以来在该领域罕见的高调行动。

文章开头还简要提及了特朗普被定罪一事,指出此事可能对市场权力问题产生重要影响,但未深入讨论。此外,文章提到去年报道的Equifax在收入验证领域的垄断问题,已发展成由抵押贷款机构提起的反垄断集体诉讼。

13. HN-text: an easy-to-use, text-first Hacker News terminal client (github.com)

HN-text 是一个快速、易用且无干扰的 Hacker News 终端客户端。

设计动机:

  • 易用性:仅需使用方向键或 hjkl 键即可完全操作。
  • 无干扰:将文章和评论转换为简洁易读的纯文本。
  • 快速导航与响应性:提供流畅的终端浏览体验。

主要功能:

  • 导航:使用方向键(或 hjkl)在首页文章列表、评论页面和文章文本内容之间导航。
  • 查看文章:在终端内直接以文本形式阅读文章内容。
  • 外部打开
    • 空格键 在默认浏览器中打开文章。
    • c 键在浏览器中打开评论页面。
  • 查看最佳文章:启动时添加 best 参数,可查看 Hacker News 最佳页面。
  • 其他操作
    • q 键退出应用。
    • r 键刷新首页。

键盘快捷键:

  • 导航/j 下移,/k 上移,/l 打开评论/文章,/h 返回。
  • 打开空格键 在浏览器中打开文章,c 键在浏览器中打开评论。
  • 应用控制q 退出,r 刷新。

安装方法:

  1. 通过 Homebrew
    brew tap piqoni/hn-text
    brew install hn-text
    
  2. 下载二进制文件:从发布页面下载对应操作系统的文件,并使用 chmod +x 添加执行权限。
  3. 通过 GO 安装(需要 Go 环境):
    go install github.com/piqoni/hn-text@latest
    
    注意:若出现“command not found”,需将 GOPATH/bin 添加到系统 PATH 环境变量中。
14. DuckDB 1.0.0 (duckdb.org)

DuckDB 1.0.0 版本发布总结

发布概述

DuckDB 团队正式发布 1.0.0 版本,代号“Snow Duck”。项目自 2018 年启动以来,已积累超 30 万行 C++ 引擎代码和 4.2 万次提交。目前每月下载量达数百万次,扩展程序日下载流量超 4TB,在开发者社区中获得了广泛关注。

发布 1.0.0 的契机

  • 信任契约:作为数据管理系统,1.0.0 版本象征着开发者与用户间的信任,承诺保障查询准确性、数据安全,并不随意破坏现有应用。
  • 存储格式兼容:以往版本更新常导致旧数据文件不兼容。自 v0.10.0 引入向后及有限的向前兼容机制并经生产环境验证后,团队现可保证 1.0.0 创建的文件与未来版本完全兼容。

核心焦点:稳定性

  • 专注系统稳定:1.0.0 版本新增功能极少,核心目标是全面提升稳定性。
  • 严密的测试保障:通过每晚运行数千测试用例和数百万查询、执行各类基准测试防止性能退化,并利用模糊测试(Fuzzing)覆盖各种极端 SQL 查询场景。随着使用量激增,严重问题报告并未增加。
  • 跨版本稳定:未来对 SQL 方言和 C API 等面向用户的更改将更加谨慎。若必须修改,将提前预警并提供兼容的替代方案。

未来展望与长期规划

  • 资金与治理:核心贡献者所在的 DuckLabs 公司无外部投资,通过提供咨询与支持服务盈利,资助近 20 人的团队进行长期开发。非营利的 DuckDB 基金会负责保护知识产权,确保项目在 MIT 许可证下长期存续。
  • 扩展生态建设:致力于优化插件(扩展)环境,简化社区贡献的构建与分发流程。扩展可动态添加 SQL 函数、文件格式和优化器,团队期望借此将 DuckDB 打造为下一代数据架构的基础。
  • 持续迭代:后续将稳步推出 1.0.1、1.1.0 乃至 2.0.0 版本,团队具备长期维护的资源与结构。

致谢

团队向所有代码贡献者、用户、CWI 数据库架构组、早期资助者、DuckLabs 客户、基金会捐赠者、金牌赞助商(MotherDuck、Voltron Data、Posit)以及 DuckLabs 团队表达了诚挚的感谢。

15. Ruby's Timeout is dangerous and Thread.raise is terrifying (2015) (jvns.ca)

Ruby Timeout 的危险性与 Thread.raise 的隐患

核心问题

Ruby 的 Timeout 模块设计存在根本性缺陷,其底层依赖的 Thread.raise 机制会威胁程序稳定性。该 API 宣称能自动终止可能超时的操作,但实际实现会导致难以追踪的错误。

实现机制与风险

Timeout 通过创建新线程监控目标线程,超时后调用 Thread.raise 强制抛出异常。这种方式存在严重问题:

  1. 中断点不可预测:异常可能在任意代码行被抛出,包括网络请求执行中、资源清理阶段、rescue 块内部甚至数据库操作过程中。
  2. 破坏代码原子性:开发者无法为每个代码行设计异常防御,强制中断会导致状态不一致。
  3. 非协作式中断:目标线程无法主动检查中断信号,完全被动接受中断。

其他语言的对比

  • Java:类似机制 Thread.stop() 早在1998年就被弃用,最终在Java 8中被禁用,因其会产生无法预见的异常。
  • Pythonthread.interrupt_main() 模拟Ctrl+C中断,同样不被推荐用于生产环境。
  • C#Thread.Abort() 会抛出 ThreadAbortException,社区普遍认为其危险。
  • C++std::thread 设计上不支持中断。

根本缺陷

这种通用超时机制的出发点就存在逻辑问题:没有任何方法能安全地中断任意代码块。超时发生时代码可能正在执行任何操作,强制中断必然破坏程序完整性。

文档与改进方向

作者认为当前Ruby文档对 Timeout 的危险性警告不足,建议:

  1. 更新文档明确说明风险
  2. 采取Java的处理方式:先强烈警告,最终禁用此功能
  3. 采用协作式中断方案(如Java的 Thread.interrupt),允许线程在特定点主动检查中断信号

结论

Timeout 是Ruby中应避免使用的危险API,其设计违背了线程安全的基本原则。在需要超时控制的场景,应考虑其他架构方案(如非阻塞I/O、未来超时模式等)替代强制中断机制。

16. Ask HN: Who wants to be hired? (June 2024)
18. Ask HN: What was your most humbling learning moment?
20. Workmanship standard for crimping, interconnecting cables, harnesses, and wiring (standards.nasa.gov)

文档概述

本文档为NASA技术标准(NASA-STD-8739.4),主题为**“压接、互连电缆、线束和布线的工艺标准”**。

主要信息

  • 制定与责任机构:该标准由NASA制定,具体由NASA总部安全与任务保证办公室负责。
  • 技术领域:属于安全、质量、可靠性与可维护性技术学科范畴。
  • 标准状态
    • 该标准是NASA强制性标准
    • 2016年6月30日获得NASA批准,并自同日起生效。
    • 经NASA总部安全与任务保证办公室核准
  • 核心目的:规定用于连接电气、电子或机电组件的互连电缆与线束组件的制作要求。该标准适用于由NPD 8730.5定义的关键性工作
  • 关键词:工艺、电缆、线束、压接、布线。
  • 访问权限:该标准已获准在互联网上公开访问,属于公开可用标准
21. Making USB devices – end to end guide to your first gadget (popovicu.com)

USB设备制作入门指南总结

USB基础概念

  • 定义:USB是一种用于数据传输和供电的行业标准,支持主机(如电脑)与外围设备间的通信。
  • 核心特性:串行总线(逐位传输),通过差分信号(D+和D-线对)抗干扰传输数据。
  • 物理连接:典型USB 2.0包含4根线:5V电源、D+/D-差分对、地线。USB-C接口仍基于差分对,但需注意其速度与USB版本无直接关联。
  • 差分对原理:利用电压差(V+ - V-)传输信号,可抵消共模噪声,提升长距离传输可靠性。

硬件设计要点

  • PCB布线
    • 差分对走线需等长、紧密平行,以保持阻抗匹配并减少噪声。
    • 阻抗控制需根据板材参数计算线宽,常用工具为阻抗计算器。
  • 速度分级:USB 2.0支持全速(12 Mbps)和高速(480 Mbps),设备与主机会协商速度。低速原型通常更宽松。

协议与软件层面

  • 协议栈:包含物理层、数据链路层等,主机通过设备类(如大容量存储、串口)识别设备功能。
  • 驱动机制:操作系统预置通用设备类驱动,无需为每个设备单独开发驱动。

实践项目:构建STM32 USB串口设备

硬件配置

  • 开发板:使用NUCLEO-F103RB(STM32F103 MCU),通过ST-LINK编程,但需另接USB端口用于数据传输。
  • USB连接
    • 配置MCU引脚:PA11(D-)、PA12(D+)、5V电源、GND。
    • 需外接1.5kΩ上拉电阻(连接PA12至3.3V),以启用USB功能。
    • 修改跳线JP5设置为“外部5V供电”。

软件开发

  • 工具链:使用STM32CubeIDE配置,选择USB设备模式为“通信设备类(虚拟串口)”。
  • 代码生成:CubeIDE自动生成USB初始化代码,用户需在接收回调中添加逻辑(如收到字符‘1’时点亮LED)。
  • 烧录与运行
    • 通过ST-LINK烧录固件后,断开编程接口,改用目标USB端口供电。
    • 主机识别设备为串口(如Mac下的/dev/tty.usbmodem*),通过串口工具发送‘1’可控制LED。

作者反思与建议

  • STM32软件框架:批评其生成大量样板代码、强耦合且更新维护困难,更推荐Linux的标准化API与清晰内核/用户空间分离。
  • 权衡取舍:裸机开发适合低成本、轻量设备;Linux方案更灵活但复杂度高。
  • 扩展建议:可进一步探索Linux USB设备模式,或自定义PCB设计(参考Phil's Lab等资源)。

总结

本文提供从USB原理到实践制作的完整路径,强调差分信号、PCB布线等硬件基础,指导使用STM32构建最小可行USB串口设备,并反思现有嵌入式开发框架的优缺点,为初学者指明方向。

25. Upgrading my Chumby 8 kernel part 10: RTC (www.downtowndougbrown.com)

本文描述了作者为Chumby 8设备升级Linux内核过程中,如何解决实时时钟(RTC)无法在重启后保留时间的问题。作者最初发现PXA168处理器内置的RTC在重启后时间会重置为1970年。通过查阅硬件原理图,作者发现设备实际上并未使用PXA168的RTC,而是依靠一个由电池供电的STM32F101加密处理器来记录系统运行时间。

原厂固件通过用户空间脚本实现时间管理:脚本读取STM32的运行时长,并结合存储的偏移文件计算出当前时间。作者在升级后的系统中采用了类似方案,移植了原厂的cpi通信工具,并编写了shell脚本来保存和恢复时间,同时集成NTP进行网络时间同步。该方案完全在用户空间实现,无需特殊内核驱动。最终,设备能够在启动后正确显示当前时间,作者对原厂这种简洁高效的设计表示赞赏。

要点概括:

  • 初始问题:重启后系统时间重置为1970年,PXA168内置RTC无法在断电时保持时间。
  • 硬件发现:设备使用STM32加密处理器记录运行时长,由电池供电,替代传统RTC。
  • 原厂方案:通过用户空间脚本读取STM32运行时长,结合偏移文件计算时间,并定期通过NTP同步。
  • 实现方法:作者移植cpi工具,编写脚本自动保存/恢复时间,集成NTP,设置定期同步。
  • 设计评价:完全用户空间实现,避免复杂内核驱动,方案简洁有效。
26. Eight years of organizing tech meetups (2023) (notes.eatonphil.com)

八年技术聚会组织经验总结(2023)

本文作者回顾了2015年至2023年间组织各类技术聚会(包括线下聚会、公司内部活动、在线社区、读书会和线上演讲活动)的经验与教训,旨在帮助有类似兴趣的人避免常见问题,提升活动质量。

主要经历与时间线

2015年:费城初次尝试

  • 创建模糊主题的Meetup小组,吸引数十人加入。
  • 面临场地费用高、需最低消费等问题,最终找到社区空间。
  • 举办首次活动仅6人参加,因主题模糊、年龄差异大且无明确目标而终止。

2016-2017年:在林节点公司组织内部活动

  • 黑客之夜:未经批准自愿购买披萨,鼓励员工下班后协作项目。参与者多为支持或技术写作人员,持续3-5周后因疲劳停止。
  • 读书会:选择《Practical Common Lisp》,仅限内部员工参与。采用“至少一人参与即启动”策略,成功招募2人,每周利用公司时间进行30分钟讨论。虽完成全书但书籍选择欠佳。

2017-2020年:纽约市与疫情中断

  • 考虑在WeWork举办公开读书会但未实施。
  • 疫情导致所有线下活动中止。

2021-2022年:线上社区与虚拟活动

  • 创建专注于软件内部的Discord社区,通过社交媒体宣传逐步增长至约1100名活跃成员(峰值1700人)。
  • 举办“Hacker Nights”线上活动:每月一次,邀请外部专家演讲10-20分钟。通过Meetup.com组织,常因链接问题或Zoom炸弹干扰(如恶意音乐、身份冒充)受挫,持续5个月后因压力大而停止。

2023年:回归线下读书会

  • 在纽约组织阅读《Designing Data Intensive Applications》的读书会。
  • 采用“私信报名”策略,吸引40人私信,其中20人位于纽约。
  • 选择布莱恩特公园免费公共场地,每两周一次,每次30分钟,计划3个月完成全书。
  • 目前已进行两次,出席率约7-9人,以软件开发者为主,体验良好。

关键心得与技巧

活动难点

  • 组织活动需持续投入精力,包括寻找场地、安排餐饮、邀请演讲者。
  • 虚拟活动同样费力,但作者认为其回报感低于线下活动。
  • 参考成功案例(如CMU数据库小组、分布式系统读书会)采用季节性、预先规划全部环节的模式。

活动益处

  • 扩展人际网络,结识志趣相投者。
  • 促进学习:通过主题选择、讨论互动获得知识,远超独自学习。

实用技巧

  1. 保持低调轻松:强调活动的趣味性,降低参与者压力。
  2. 试探兴趣而非直接宣布:用“考虑启动X”代替“宣布启动X”,留出退路。
  3. 采用私信反馈:要求私信报名而非公开回复,避免公开场合无人响应的尴尬。
  4. 明确最低成功标准:例如“只需2人参与即启动”,类似众筹最低门槛。
  5. 利用企业资源:许多公司愿意提供场地和餐饮支持,以换取活动带来的品牌曝光和招聘机会。可通过高级开发者或工程经理联系洽谈。
  6. 接受较低出席率:实际出席率通常为RSVP的10-20%,超过此比例即属成功。

未来计划

  • 考虑继续举办季节性线下读书会,给予自身休息间隔。
  • 若重开正式聚会,将尝试联系企业提供支持。
  • 计划未来亲自进行一些技术演讲。

作者希望通过分享这些经验,促进更多高质量技术聚会的诞生,并强调活动的核心应是乐趣、学习与连接。

27. Nuclear material left in "Swap Shop" at UK Hacker camp emfcamp (meow.social)
28. Qimgv – Fast, simple image viewer (github.com)

Qimgv – 快速、简洁的图像查看器

Qimgv 是一款快速、易用的图像查看器,提供可选的视频支持。由于作者身处乌克兰受战争影响,更新可能较慢。当前版本为 1.0.2。

主要特性

  • 界面与性能:采用简洁、不杂乱的用户界面,仅在需要时显示 UI 元素。软件启动和图像加载速度快。
  • 高度可定制:支持主题、快捷键等全面配置。
  • 图像操作
    • 提供高质量缩放(若编译时启用了 OpenCV 支持,可在设置中选择滤镜)。
    • 基础图像编辑功能:裁剪、旋转、调整大小。
  • 文件管理
    • 能够快速将图像复制或移动到不同文件夹。
    • 提供文件夹视图模式。
  • 扩展支持
    • 通过 libmpv 实现实验性视频播放。
    • 能够运行自定义 Shell 脚本处理当前图像。
  • 多种安装方式:支持 Windows(便携版或通过 Chocolatey/WinGet 安装)及多个 Linux 发行版(通过包管理器安装),也可从源码编译。支持额外的图像格式(如 JPEG-XL, AVIF, HEIF 等)通过插件实现。

用户界面与操作

  • 界面:包含一个可拉出的缩略图面板和文件夹视图,右键点击可调出上下文菜单。
  • 快速复制/移动面板:使用快捷键 C(复制)或 M(移动)调出面板,面板显示 9 个预设目标目录。使用数字键 1-9 即可将当前图像快速复制/移动至对应目录,完成后再次按 CM 隐藏面板。
  • 运行脚本:可在“设置 > 脚本”中添加 Shell 命令或脚本文件,并在“设置 > 控件”中为其分配快捷键。
  • HiDPI 支持(Linux/macOS):可通过设置环境变量 QT_SCALE_FACTOR 来覆盖显示缩放比例。
  • 默认快捷键:提供丰富的快捷键,例如左右箭头/滚轮切换图片,Ctrl+滚轮缩放,数字键1/2/3切换适应模式,F切换全屏,X裁剪,R调整大小,C/M调用快速复制/移动面板等。所有快捷键均可在“设置 > 控件”中重新配置。

安装

  • Windows:从发布页面获取便携版或安装程序(带视频支持的版本包含 mpv)。也可通过 Chocolatey (choco install qimgv) 或 WinGet (winget install --id easymodo.qimgv) 安装。
  • GNU+Linux:支持多种发行版,如 Arch(AUR)、Ubuntu(PPA)、Fedora、OpenSUSE 等。编译详情见项目 Wiki。
  • BSD:支持 FreeBSD。

捐赠

作者请求用户考虑向乌克兰军队或 United24 捐赠,以支持其未来能继续开发本项目。

29. cuDF – GPU DataFrame Library (github.com)

cuDF - GPU 加速的 DataFrame 库

cuDF 是一个采用 Apache 2.0 许可证的开源库,专为表格数据处理提供 GPU 加速。它是 RAPIDS GPU 加速数据科学套件的重要组成部分。

主要组成

cuDF 由多个库构成:

  • libcudf:一个底层的 CUDA C++ 库,提供符合 Apache Arrow 标准的数据结构和核心算法。
  • pylibcudf:为 libcudf 提供 Python/Cython 绑定的库。
  • cudf:主要的 Python 库,提供了:
    • 一个镜像 pandas API 的 DataFrame 库。
    • cudf.pandas:一个零代码修改的加速器,可直接加速现有的 pandas 代码。
  • cudf-polars:为 Polars DataFrame 库提供 GPU 执行引擎的 Python 库。
  • dask-cudf:为 Dask 分布式 DataFrame 提供 GPU 后端的 Python 库。

相关项目

cuDF 被多个知名项目采用,例如:

  • Spark RAPIDS:Apache Spark 的 GPU 加速插件。
  • Velox-cuDF:在 GPU 上执行 Velox 计划的扩展模块。
  • Sirius:一个 GPU 原生 SQL 引擎,为 DuckDB 等库提供扩展。

安装

系统要求

需根据 RAPIDS 安装指南匹配操作系统、GPU 驱动和 CUDA 版本。

通过 pip 安装

  • 稳定版:在 PyPI 上可用。安装时需为库名添加与已安装 CUDA 主版本号匹配的后缀(如 -cu12-cu13)。
    # 以 CUDA 12 为例
    pip install cudf-cu12
    
  • 开发版(每夜构建版):需额外指定 Anaconda 的 rapidsai 夜间仓库索引。

通过 conda 安装

  • 稳定版:从 rapidsai 频道安装。
    conda install -c rapidsai cudf
    
  • 开发版:从 rapidsai-nightly 频道安装。

使用示例

1. 使用 cudf 库

API 与 pandas 高度相似。

import cudf
df = cudf.read_parquet("data.parquet")
df.dropna().groupby(["A", "B"]).mean()

2. 使用 cudf.pandas 加速现有 pandas 代码

无需修改原始 pandas 脚本。

  • 命令行:通过 python -m cudf.pandas script.py 运行脚本。
  • Jupyter 环境:在导入 pandas 前使用魔术命令 %load_ext cudf.pandas

3. 使用 cudf-polars

在 Polars 的惰性 API 中,通过 collect(engine="gpu") 指定 GPU 执行。

import polars as pl
lf = pl.scan_parquet("data.parquet")
lf.drop_nulls().group_by(["A", "B"]).mean().collect(engine="gpu")

社区与支持

  • 问题反馈:在 GitHub 问题跟踪器中提交。
  • 讨论交流:在 RAPIDS Slack 工作区进行。
  • 贡献指南:项目欢迎社区贡献,详细指南请参考项目文档。
30. How to make a great government website (asteriskmag.com)

如何打造优秀的政府网站

背景与动机

公民技术专家Dave Guarino分享了进入政府数字化服务领域的经历。他在大学时受边沁功利主义思想影响,致力于"如何行善"的实践。通过观察发现加州SNAP(补充营养援助计划)参与率仅约65%,大量符合条件的人每月损失150-200美元的联邦资助,这促使他与伙伴于2014年启动GetCalFresh.org项目,旨在消除申请障碍。

福利申请的主要障碍

  1. 认知障碍:许多人不了解项目存在,或因污名化(如担心移民身份影响)不敢申请
  2. 申请障碍:原始申请表格长达200个问题/50多个页面,包含许多非必要问题,如询问"是否曾因用福利交换枪支被定罪"
  3. 访谈障碍:必须进行的电话访谈常因系统繁忙难以接通,错过即可能被拒
  4. 文件障碍:需提交完整收入证明、身份文件等,缺失或不全即被程序性拒绝
  5. 程序性拒绝:非因不符合条件,而是因流程障碍被拒,这是衡量系统有效性的关键指标

GetCalFresh的解决方案

核心设计原则

  • 采用"最低负担"申请表:仅收集姓名、地址、签名、日期等最基本信息
  • 建立数据验证机制:确保提交信息能通过各郡系统审核
  • 与各郡现有系统集成:通过自动化填写现有在线申请表实现兼容,避免大规模系统替换
  • 持续迭代改进:跟踪用户从意识到申请到最终获卡的全过程障碍

具体技术实现

  • 申请简化:与地方政府合作确定最低必要信息集
  • 文件处理:开发早期文档提交系统,适应各郡不同接收方式
  • 访谈提醒:通过短信提前通知、定期跟进访谈状态
  • 数据反馈:收集申请完成率、放弃率等过程数据

系统性挑战与思考

技术局限性

技术无法解决所有问题,但能提供关键测量能力:

  • 可量化申请流程中的摩擦点
  • 实现商业领域常见的转化率分析
  • 为政策制定提供实证数据

加州独特系统结构

  1. 高度去中心化:58个郡各自管理福利项目,差异巨大
    • 人口从1200人(Alpine郡)到1000万人(洛杉矶郡)
    • 服务模式需因地制宜调整
  2. "吃苦头"政策倾向:加州倾向接受所有联邦创新项目,但基础执行能力不足
  3. 财政结构性问题:第13号提案限制房产税,导致财政收入随资本市场波动大
  4. 人力资源困境:高生活成本地区难以吸引和保留福利工作者

改进方向建议

  1. 建立统一的服务质量指标(如申请完成率、程序性拒绝率)
  2. 平衡政策雄心与基础执行能力
  3. 考虑LLMs在政策解读和案例处理中的应用潜力
  4. 重视县政监督员的关键作用

核心启示

优秀的政府数字服务不是技术替代,而是:

  1. 以用户旅程为中心识别并消除实际障碍
  2. 利用技术增强而非替换现有系统
  3. 建立数据反馈循环持续改进
  4. 正视系统复杂性采用渐进式创新
  5. 技术方案需适应政策、机构和地理的多元性

GetCalFresh案例表明,成功的技术干预源于深刻理解行政负担、与现有系统智能集成,并通过数据持续优化服务可达性。