2024-09-25

39 篇热帖

1. Being Raised by the Internet (jimmyhmiller.github.io)

文章讲述了一个在贫困艰难环境中成长的少年,如何通过电脑和互联网自学技能,并借助网络上陌生人无私分享的开源资源改变命运的故事。

  • 艰难的童年:作者成长于贫困且不稳定的家庭。父母缺席,他每周仅获得少量钱款(有时甚至没有)用于购买食物,经常食不果腹。在夏季没有学校免费午餐时,生存尤为困难。
  • 电脑与互联网成为避难所:作者从垃圾堆旁捡到一台旧电脑,开始自学计算机。尽管最初连Linux系统都难以安装,无线网络连接更是难题,但他通过不断尝试和网络搜索,最终解决了问题。电脑和互联网成为他逃避现实困境的“出口”,他沉迷于编程学习、破解网站和各种技术项目,找到了精神寄托。
  • 互联网上的“陌生人”塑造了他:作者强调,他今天所取得的成就完全归功于互联网上无数未曾谋面的陌生人。那些免费的在线教程、开源软件、技术博客、论坛讨论(如Slashdot)和学习资源(如W3Schools)构成了他的自学体系。这些人分享的知识与技能,是他逃离贫困所依赖的“脊梁”。
  • 开放分享的深远影响:作者向这些贡献者表达了深切感激。他指出,无论这些分享者的动机是什么,也无论他们的作品是否广为人知或取得世俗成功,他们开放、自由分享的行为,客观上帮助了一个身处困境的12岁孩子找到了人生方向,赋予了他自信和谋生的技能。
  • 总结与致谢:最后,作者向所有通过网络无私分享知识的陌生人致以诚挚感谢。他认为,无论贡献多么微小,这些开放的分享都对他的人生产生了巨大影响,实质上“抚养”了他长大。
2. Xkcd 1425 (Tasks) turns ten years old today (simonwillison.net)

XKCD 1425(任务)迎来十周年

2024年9月24日 - 链接博客

漫画核心思想
XKCD 1425 号漫画《任务》迎来发布十周年。该漫画曾将“判断一张照片是否为鸟类”描述为需要博士学位才能解决的难题,而如今这类任务已变得极为简单——借助视觉大语言模型(如 CLIP、ResNet+ImageNet 等)即可轻松完成。

关键启示依然成立
漫画的核心思想至今仍具深刻意义:在软件开发中,区分任务的难易程度需要丰富的经验积累。

大语言模型带来的新挑战
作者指出,大语言模型(LLM)的兴起甚至加剧了这一难题。人们很难直观理解 LLM 能可靠完成哪些任务、不能完成哪些任务。例如,这类系统在数学计算上表现糟糕,也无法稳定地查询事实信息。

AI 辅助编程的普及与挑战
随着 AI 辅助编程工具的普及,越来越多人开始尝试开发自定义软件。这些新兴的“AI 辅助型准程序员”正面临一场关于任务难易认知的速成课。作者举例说明,有人试图用 Claude 的 Artifacts 功能构建图像分析工具,却未意识到其技术限制(如 CSP 头部设置会阻止代码调用外部 LLM 接口),这反映出理解任务复杂性仍非易事。

3. DOJ accuses Visa of monopoly that affects price of 'nearly everything’ (www.cnbc.com)

美国司法部指控维萨垄断市场,推高“几乎所有商品”价格

美国司法部于周二起诉全球最大支付网络维萨公司,指控其通过实施“排他性”协议并压制新兴企业,非法维持在借记卡支付领域的垄断地位。

核心指控:非法垄断与高额费用 司法部在纽约提起民事反垄断诉讼,指控维萨构成“垄断化”及其他非法行为。根据起诉书,维萨的行为导致美国消费者和商户每年多支付数十亿美元的额外费用。美国司法部长梅里克·加兰德表示:“我们指控维萨非法积聚了远超竞争市场水平的收费能力。”他强调,这些成本通过商户和银行转嫁给消费者,表现为价格上涨、质量或服务下降,因此“维萨的非法行为不仅影响一种商品的价格,而是影响几乎所有商品的价格”。

维萨的市场地位与行为 维萨和其竞争对手万事达卡在过去二十年迅速崛起,总市值约达1万亿美元。在美国,超过60%的借记卡交易通过维萨网络处理,其每年收取超过70亿美元的处理费。司法部指控维萨采取以下手段维持其垄断:

  1. 威胁与惩罚性协议:若商户及其银行将“相当一部分”借记卡交易转给竞争对手,维萨便威胁收取更高费用。据称,这些协议保护了维萨四分之三的借记卡交易量免受公平竞争。
  2. 压制创新与收编竞争对手:维萨每年向竞争对手支付数亿美元,以“削弱他们开发可能威胁维萨垄断利润的创新新技术”的风险。起诉书指出,维萨与苹果、PayPal、Square等科技公司签订协议,将这些潜在竞争对手转变为合作伙伴。例如,维萨与苹果的协议中,苹果承诺不会主要依赖非维萨支付流程创造支付功能,从而避免直接竞争。维萨经理曾表示,与Square的协议旨在“防止被边缘化”。

维萨的回应 维萨称该诉讼“毫无根据”。其总法律顾问朱莉·罗滕贝格回应称,支付市场竞争激烈,不断有新公司提供新的支付方式,“今天的诉讼忽略了维萨只是众多竞争者之一的现实”,并称维萨为其网络、创新及带来的经济机会感到自豪。

历史背景与监管环境 此次诉讼发生在拜登总统任期的最后几个月,该政府下的监管机构已对多个领域的市场垄断行为采取行动。维萨此前已多次面临反垄断审查:

  • 2020年,司法部曾提起反垄断诉讼以阻止维萨收购金融科技公司Plaid,该53亿美元的收购最终被放弃。
  • 2024年3月,维萨和万事达卡曾同意一项价值300亿美元的和解协议以限制费用,但被联邦法官驳回,认为其提供的金额“明显不足”。

司法部诉求与行业动态 司法部要求法院禁止维萨一系列反竞争行为,包括可能阻碍新进入者的收费结构或服务捆绑。与此同时,支付行业也在发生变化,如第一资本金融公司宣布以353亿美元收购Discover金融,意图加强Discover的支付网络,以期成为维萨和万事达卡更可行的竞争对手。

6. The lost language extensions of MetaWare's High C compiler (2023) (duriansoftware.com)

MetaWare High C 编译器的已遗失语言扩展

本文介绍了1980年代末 MetaWare 公司为其 High C 编译器开发的一系列超越当时标准的创新语言扩展。这些扩展是为运行在基于 80386 处理器的 FM TOWNS 平台(使用 Phar Lap 的 DOS 扩展器)而设计的。尽管 ANSI C 标准(C89)刚刚确立,High C 除了包含一些 DOS 特定的扩展外,还引入了许多用户导向的、极具前瞻性的语言特性,其中一些直到数十年后才出现在 C 或 C++ 标准中,甚至至今仍无等价特性。

主要语言扩展

  1. 数字字面量中的下划线 允许在长数字字面量中使用下划线作为分隔符以提高可读性(例如 1_000_000)。这是一个小型但实用的改进,C++ 直到 C++14 才引入类似功能(使用单引号),而 C 语言直到 C23 标准才采纳。

  2. 命名参数 在函数调用时可以使用 参数名 => 值 的语法为参数添加标签。这允许以任意顺序传递参数,并能混合使用带标签和无标签的参数。该特性类似于 Python 的关键字参数,标准 C 或 C++ 至今仍不具备此功能。

  3. 范围匹配(Case Ranges)switch 语句中支持匹配一个值的范围(例如 case 1..10:)。此特性借鉴自 Pascal,但标准 C 和 C++ 从未采纳。

  4. 嵌套函数与闭包 High C 允许在函数内部定义其他函数(嵌套函数),这一特性同样借鉴自 Pascal,但其功能更为强大和完整。它支持声明“完整函数值”类型,这些函数值作为不逃逸的闭包工作,除了函数指针外还携带一个上下文指针,用于访问捕获的上下文。

    • 关键能力:嵌套函数可以作为一等值使用(但其生命周期不超出外围函数返回)。
    • 非局部退出:嵌套函数甚至可以使用 goto 跳转回其父函数,从而实现类似于 Smalltalk 块的非局部退出,可用于构建具有控制流特性的函数。
    • Objective-C 的 Blocks(2009)和 C++ 的 Lambda(2011)虽然引入了闭包,但均不具备这种非局部退出能力。标准 C 也始终没有官方的嵌套函数特性。
  5. 生成器协程 这是 High C 最引人注目的扩展之一。它支持类似 Python 风格的生成器协程。

    • 语法:函数可以声明为 void foo(参数) -> (产出类型),函数体内部可以多次调用 yield(values...) 来生成一系列值。
    • 使用:调用者可以使用特殊的 for 循环语法 for 变量... <- foo(参数...) do { ... } 来遍历生成器产出的值。
    • 实现:该特性实际上是基于嵌套函数功能的语法糖。生成器函数的隐式参数 yield 是一个“完整函数值”(即闭包),调用者的循环体会被转换为一个嵌套函数,作为参数传递给生成器。
    • 高级组合:生成器可以与嵌套函数功能紧密结合。例如,在生成器内部的嵌套函数可以捕获外部的 yield 操作,并通过递归遍历树等数据结构,在每一层进行 yield。循环体内的 breakcontinuegoto 也可以通过跳转到循环外部来正常工作。
    • 尽管 C++20 引入了功能强大的协程机制,但其复杂性很高,且生成器与局部函数的直接组合能力不如 High C 的设计直观。

总结

MetaWare High C 编译器的语言扩展展示了在 C 语言标准化早期,不同厂商为提升语言表达力和开发效率所做的积极探索。这些扩展中的许多思想(如代码可读性改进、命名参数、闭包、协程/生成器)预见了未来编程语言的发展方向,其部分实现方式(特别是嵌套函数与生成器的结合)即使在今天看来也颇具启发性。

7. Show HN: Hosting my website using my C web server (github.com)

BlogTech 摘要

BlogTech 是一个用 C 语言编写的 Web 服务器工具包,旨在管理中小型网站。它支持 HTTPS、虚拟主机、自动证书管理(通过 ACME 协议)和远程客户端管理。项目仍在测试阶段,但作者已使用版本 0.4.x 成功运行网站数周。

主要功能与结构

快速开始

  • 平台支持:运行在 Linux 和 Windows 上(Windows 有 HTTPS 限制)。
  • 编译要求:Linux 需安装 OpenSSL 开发库和 GCC;Windows 需安装 Clang。
  • 构建与运行:通过 build.shbuild.bat 编译后,可启动 HTTP 服务器,监听本地端口(默认 8080),并使用客户端模式上传、下载或删除文件。

认证机制

  • 使用 HMAC/SHA256 数字签名保护修改请求。
  • 客户端和服务器共享密钥(存储在 admin.pwd 文件中),通过 --auth-password-file 选项指定。
  • 请求包含自定义头部(如 X-BlogTech-NonceX-BlogTech-Timestamp 等)以防止伪造和重放攻击。
  • 开发时可用 --skip-auth-check 跳过认证检查。

虚拟主机

  • 允许同一服务器托管多个网站,通过 --domain 选项指定域名。
  • 文档根目录下自动为每个域名创建子目录;未指定域名的请求指向默认目录。

HTTPS 支持

  • 仅 Linux 支持 HTTPS,基于 OpenSSL 实现。
  • 需通过 --cert-file--cert-key-file 加载证书和私钥。
  • 支持加载多个证书(使用 --extra-cert 选项)。
  • 开发时可使用自签名证书(通过 OpenSSL 命令生成)。

ACME 自动证书管理

  • 通过 ACME 协议自动请求和更新证书(如来自 Let's Encrypt)。
  • 需运行 HTTP 服务器在端口 80,并正确配置 DNS 记录。
  • 使用 --acme-enabled 启用,需提供域名、邮箱等参数。
  • 测试时可用本地 ACME 服务器(如 Pebble),通过 Docker 和配置文件模拟。

配置文件

  • 命令行参数可移至配置文件(如 blogtech.conf),简化复杂命令。
  • 默认加载 blogtech.conf 文件;可用 --no-config 忽略。

崩溃日志

  • 服务器崩溃时生成 crash.bin 文件,下次启动时自动转换为可读的 crash.log 堆栈跟踪。

守护进程设置

  • 可配置为 systemd 守护进程,在系统启动时自动运行。
  • 通过创建服务文件(如 blogtech.service)并使用 systemctl 命令管理。

注意事项

  • 项目仍处于测试阶段,使用前请评估风险。
  • HTTPS 和 ACME 功能在 Linux 上完整支持,Windows 仅支持 HTTP。
  • 认证机制基于内存中存储的随机数,服务器重启可能导致请求重放。
  • 虚拟主机和证书管理需仔细配置,确保域名和文件目录正确对应。

BlogTech 提供了一个集成的 Web 服务器解决方案,适合需要简单部署和自动证书管理的场景。

9. Who is Marcellus Williams: Execution in Missouri despite evidence of innocence (innocenceproject.org)

Marcellus Williams案件摘要

Marcellus Williams是一名非裔美国人,被指控于1998年谋杀白人女性Felicia Gayle,并被判处死刑。尽管有证据表明他可能无罪,但计划于2024年9月24日在密苏里州执行。以下是案件关键点:

案件更新与法律程序

  • 2024年9月12日,圣路易斯县巡回法院驳回了检察官Wesley Bell要求撤销定罪和死刑的动议。
  • 2024年7月2日,法院曾安排8月21日听证会,评估“清晰和令人信服的无罪证据”。

证据问题

  • 犯罪现场有大量法医证据(指纹、脚印、头发、凶器DNA),但均与Williams不匹配。
  • 州政府销毁或损坏了可能证明其无罪的关键证据,导致无法进行确证性测试。

定罪依据与证人可靠性

  • 定罪完全基于两名激励证人的证词:Henry Cole和Laura Asaro。他们因自身刑事案件获得宽大处理而作证。
  • 这些证人记录不良、证词不一致,且未提供任何无法独立验证的信息。证言与犯罪现场证据矛盾。

历史执行暂停与调查委员会

  • Williams在死囚牢房度过23年,多次面临执行。
  • 2016年DNA测试显示,凶器上的男性DNA并非来自Williams。
  • 2017年,时任州长Eric Greitens在执行前数小时暂停执行,并成立调查委员会。
  • 2023年6月,现任州长Mike Parson解散委员会,未发布报告,随后总检察长Andrew Bailey申请新执行日期。
  • 2024年6月4日,密苏里最高法院驳回Williams的民事诉讼,并设定9月24日执行日期。

受害者家庭与解决方案

  • 受害者家庭支持终身监禁而非死刑,并与Williams和检察官办公室达成协议:Williams认罪换取终身监禁。
  • 但总检察长反对该协议,并推动继续执行。

种族偏见因素

  • Williams为非裔,受害者为白人;陪审团由11名白人和1名黑人组成。
  • 检察官使用陪审团选择中的种族歧视策略,排除了多数合格黑人候选陪审员。
  • 研究显示,在圣路易斯县,受害者为白人时,被告被判死刑的可能性是黑人受害者的3.5倍。

Williams个人背景

  • 他在狱中虔诚信仰伊斯兰教,担任监狱伊玛目,并是 accomplished诗人,拥有良好记录。

呼吁行动

  • 公众可通过联系州长、签署请愿书、在社交媒体分享案件来帮助阻止执行。
  • 无罪计划等组织正在协助法律辩护。

该案件突显了激励证人证词、证据处理不当和种族偏见可能导致错误定罪的问题。Williams的团队继续寻求上诉以阻止执行。

10. Hacker plants false memories in ChatGPT to steal user data in perpetuity (arstechnica.com)

安全研究员Johann Rehberger发现ChatGPT长期记忆设置中存在漏洞,攻击者可借此存储虚假信息和恶意指令,从而持续窃取用户数据。OpenAI最初将此标记为安全问题而非技术安全问题,并关闭了查询。Rehberger随后创建概念验证漏洞利用,演示了该漏洞的利用方式,促使OpenAI于本月早些时候发布部分修复。

漏洞源于ChatGPT的长期记忆功能,该功能于2024年2月开始测试,9月广泛推出,旨在存储先前对话信息(如用户年龄、性别、信念等)作为未来对话的上下文。Rehberger发现,通过间接提示注入(即AI利用来自不受信任内容如电子邮件、博客或文档的指令),攻击者可创建虚假记忆并永久存储。例如,可欺骗ChatGPT相信用户年龄102岁、居住在Matrix中或坚持地球是平的,这些虚假信息会影响所有后续对话。

攻击者可通过多种渠道植入虚假记忆,包括将文件存储在Google Drive或Microsoft OneDrive、上传图像或浏览网站如Bing,这些内容均可由恶意方创建。此漏洞允许攻击者长期窃取用户输入数据,构成持续性安全风险。

11. Launch HN: Haystack (YC S24) – Visualize and edit code on an infinite canvas (github.com)

Haystack Editor:无限画布上的可视化代码编辑器

项目概述

Haystack Editor 是由 Haystack Software 开发并开源的代码编辑器,将传统代码编辑器的简洁性与画布界面相结合,旨在提供更直观的代码可视化和编辑体验。该项目源码遵循 PolyForm Strict License 1.0.0 许可证,每周更新并提供 Windows、macOS 和 Linux 版本下载。

核心功能

  • 画布工作区:在无限画布上可视化组织和编辑代码结构,支持拖拽和缩放。
  • 资源管理器视图:提供清晰的项目文件浏览和管理界面。
  • 键盘导航:支持通过键盘快捷键快速跳转和操作代码元素。
  • 代码生成:集成 AI 辅助的代码生成功能(如生成函数)。
  • 基础编辑能力:包含完整的代码编辑、导航、语法高亮、轻量级调试和扩展支持。

技术架构

  • 采用模块化设计,核心组件与扩展分布于独立仓库(例如调试适配器、Pixi 图形库)。
  • 内置扩展位于 extensions 文件夹,包括语言语法支持(如 JSON、语言特性扩展)和代码片段。
  • 支持通过丰富的扩展模型集成第三方工具。

社区参与

  • 欢迎提交 Bug 报告、功能建议和代码贡献。
  • 提供详细的贡献指南,涵盖从源码构建、调试测试到提交 Pull Request 的完整流程。
  • 可通过 Discord 提问、GitHub Issues 反馈问题或关注开发者账号交流。

许可证

源代码和编辑器发行版均受 PolyForm Strict License 1.0.0 约束,版权由 Haystack Software Inc. 所有。

12. Google Cache Is Fully Dead (www.seroundtable.com)

谷歌已完全停止其缓存服务。此前,谷歌今年早些时候移除了搜索结果中的缓存链接,几周前转向了Wayback Machine的链接。现在,直接访问谷歌缓存的链接也已完全失效,尝试访问只会显示空白页面。

谷歌搜索联络员丹尼·沙利文曾解释移除缓存的原因:该功能最初是为了帮助用户在页面加载不可靠时访问网页,而如今网络技术已大幅改进,因此决定退役该功能。他个人希望未来能在“关于此结果”部分添加指向互联网档案馆(Wayback Machine)的链接。

社交媒体上许多用户确认了缓存操作符“cache:”已失效。谷歌官方已确认该操作符不再工作,并从相关文档中移除了它。

目前可用的替代方案包括:

  1. Wayback Machine(互联网档案馆)
  2. 谷歌搜索控制台中的URL检查工具(适用于网站所有者)
  3. 谷歌富结果测试工具
14. Reading texts on paper versus computer screen: Effects on reading comprehension [pdf] (clikmedia.ca)
15. Two new Gemini models, reduced 1.5 Pro pricing, increased rate limits, and more (developers.googleblog.com)

Gemini 1.5 系列模型最新更新

核心发布

Google 推出了两款全新的生产就绪模型:Gemini-1.5-Pro-002Gemini-1.5-Flash-002。开发者可通过 Google AI Studio 和 Gemini API 免费获取,企业客户可通过 Vertex AI 访问。

价格与速率限制优化

  • 大幅降价:针对 128K 以下 token 的提示词,1.5 Pro 的输入价格降低 64%,输出价格降低 52%,增量缓存价格降低 64%(2024年10月1日生效),整体降幅超 50%。
  • 速率限制提升:付费层 1.5 Flash 速率限制提升至 2,000 RPM(提高 2 倍),1.5 Pro 提升至 1,000 RPM(提高近 3 倍)。

性能与质量提升

  • 速度与延迟:输出速度提升 2 倍,延迟降低 3 倍。
  • 能力增强:MMLU-Pro 提升约 7%;数学能力(MATH 和 HiddenMath)大幅提升约 20%;视觉理解和 Python 代码生成能力提升 2% 至 7%。
  • 响应风格优化:默认输出长度缩短 5% 至 20%,使响应更简洁并降低使用成本;同时减少了拒绝回答的情况,提高了回答的实用性。

安全与过滤设置

  • 默认过滤器调整:新模型(-002 版本)默认不应用安全过滤器,赋予开发者根据具体用例自行配置的灵活性,同时在遵循指令与保障安全之间取得了更好的平衡。

实验模型与其他更新

  • Flash-8B 实验版:发布了改进版 Gemini-1.5-Flash-8B-Exp-0924,在文本和多模态任务中性能显著提升,现已通过 AI Studio 和 API 提供。
  • Gemini Advanced:Advanced 用户即将可以使用专为聊天场景优化的 1.5 Pro-002 版本。
16. SQL Tips and Tricks (github.com)

SQL 技巧与窍门总结

本文汇总了一系列实用的SQL技巧,旨在提升日常数据查询的可读性、可维护性与性能。

一、 格式与可读性

  • 使用前导逗号:在SELECTWHERE子句中,将逗号放在字段或条件的开头,而非结尾。这能清晰标识新列的开始,并便于检查是否遗漏逗号。
  • 使用哑值WHERE子句:在WHERE子句中添加 1=1 这样的条件,可以方便地注释掉其他条件进行测试,而不会导致语法错误。
  • 代码缩进:缩进代码以提高可读性。可以遵循团队规范,或使用在线格式化工具。
  • 考虑使用CTE:对于复杂查询,使用公共表表达式比嵌套内联视图更易读、易维护和调试。
  • 添加注释:注释应解释“为什么”这样做,而不仅仅是“做什么”,方便日后回顾。
  • 使用USING简化连接:当连接列名相同时,使用 USING (column) 可以简化连接语句,并消除结果集中的重复列。

二、 数据整理

  • 反连接:用于返回一个表中与另一个表无匹配的行。实现方式有LEFT JOIN并检查NULLNOT IN(需注意NULL问题)或NOT EXISTS
  • 使用QUALIFY过滤QUALIFY子句可以直接基于窗口函数的结果过滤行,避免使用子查询,简化代码。但请注意,此功能并非所有数据库都支持。
  • 按位置分组GROUP BYORDER BY可以使用列在SELECT子句中的位置编号。此技巧适用于临时查询,生产代码应使用列名。
  • 使用ROLLUP生成总计GROUP BY ROLLUP可以轻松生成小计和总计行。
  • 使用EXCEPT查找差异EXCEPT返回第一个查询结果中存在,但第二个查询结果中不存在的行,可用于比较两个表的数据差异。

三、 性能

  • 优先使用NOT EXISTS:如果被比较的列允许NULL值,NOT EXISTS通常比NOT IN性能更好。
  • 避免隐式类型转换:在WHERE子句中,确保比较值的数据类型与列类型匹配。隐式转换可能导致错误或查询变慢。

四、 常见错误

  • 注意NOT IN与NULLNOT IN在子查询结果包含NULL时无法正常工作。应改用NOT EXISTS
  • 避免计算字段别名歧义:为计算字段(如聚合函数或表达式结果)起别名时,避免与现有列名相同,否则可能导致意想不到的分组行为或错误。使用唯一的别名更安全。
  • 明确指定表名:在涉及多个表的查询中,始终为列名指定其所属的表(别名),以避免歧义并提高可读性。

五、 杂项

  • 理解执行顺序:掌握SQL子句的逻辑执行顺序(如FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY)对编写正确查询至关重要。
  • 完整阅读文档:在使用新函数或功能前,务必阅读官方文档,了解其所有行为细节(例如处理NULL的方式),以避免意外错误。
  • 使用描述性名称保存查询:保存查询时使用有意义的名称(如包含主题、日期、请求者),便于日后查找和复用。
17. Hack GPON – how to access, change and edit fibre ONTs (hack-gpon.org)

这个wiki提供了关于如何访问、更改和编辑光纤ONTs的教程、代码和链接。大多数ONTs运行定制固件,实现供应商和ISP特定的集成,功能被锁定以匹配服务要求。ONTs的行为通常取决于OLT和ISP应用的设置;由于大多数OLTs对ONT进行多项检查,从外部ONT切换到SFP或反之的简单替换几乎不可能。因此,该wiki旨在帮助用户学习如何访问、编辑和修改ONTs,以克服这些限制。

18. Beyond the route: Introducing granular MTA bus speed data (new.mta.info)

MTA公交车段落速度数据集介绍

核心内容: 纽约大都会运输署(MTA)在开放数据平台发布了全新的“MTA Bus Route Segment Speeds Dataset”,提供覆盖全市公交网络的精细化、分段行驶速度数据,旨在帮助公众更深入地了解公交车运行状况。

数据定义与来源:

  • 数据对象: 针对每条公交线路在主要站点(称为“timepoints”,即时刻表上显示的车站)之间的行驶速度。
  • 数据来源: 利用公交车上的GPS系统记录车辆到达各主要站点的时间,结合站点间的道路距离计算得出。
  • 数据内容: 包含反映实际出行时间的全部因素,如乘客上下车等待、红绿灯、交接班、道路封闭、交通拥堵等。数据集包含年、月、星期几、线路ID、行程类型、小时、当前站点、下一站点、班次数量和平均速度等字段。

数据价值与应用场景:

  • 发现拥堵热点: 可视化分析显示,曼哈顿、布鲁克林市中心和南布朗克斯区在工作日白天(尤其是早晚高峰时段)公交车速显著放缓;而皇后区东部和史泰登岛的线路速度相对较快。
  • 精细化分析: 允许用户深入探究城市特定走廊(如曼哈顿第六大道的M7线路区间)在一天中不同时段的速度变化,精确识别最慢路段。
  • 洞察乘客影响: 数据揭示,大部分乘客恰恰在车辆运行最慢的拥堵时段乘车。速度仅下降几英里/小时,就可能将全程耗时增加一半。
  • 支持决策与改进: MTA可利用此数据规划改善措施(如增设公交专用道、优化登车流程等),公众和研究人员也可用于进一步分析。

数据发布与使用:

  • 该数据集已上线纽约州开放数据门户,并每月更新
  • MTA鼓励数据使用者探索、提问,并分享基于此数据集构建的创新发现。
19. Google Cloud files complaint due to Microsoft's anti-competitive licensing (cloud.google.com)

Google Cloud 就 Microsoft 反竞争许可行为向欧盟委员会提出正式投诉,随后因欧盟委员会宣布将通过单独流程评估该问题而撤回,但仍坚持其立场。

投诉核心指控 Microsoft 利用其市场主导地位,通过限制性许可条款阻碍欧洲客户选择其他云服务商。具体表现为:客户最初购买的 Windows Server 等软件许可证允许在任何硬件上运行,但 Microsoft 在 2019 年后修改规则,对将其迁移到竞争对手云平台(如 Google Cloud、AWS)的行为施加高额费用(声称高达 400% 的溢价),并限制安全更新,从而将客户锁定在其 Azure 平台。

这些做法被认为对欧洲造成了广泛损害:包括每年给企业带来至少 10 亿欧元的额外成本;浪费公共资金;压制云市场创新与竞争,导致 Microsoft 份额激增而欧洲服务商份额下降;以及因供应商单一化引发更高的网络安全风险与保险成本。

Google Cloud 呼吁公平开放的云许可环境,并表示其自身做法不同,例如支持多云架构且不收取退出费。该投诉旨在代表众多对 Microsoft 做法不满的客户和合作伙伴发声,寻求一个有利于所有人的解决方案。

21. Global EV Charging Points with Open Charge Map (tech.marksblogg.com)

Open Charge Map (OCM) 全球电动车充电点数据集分析概要

1. 项目概述

  • Open Charge Map (OCM) 是一个旨在记录全球电动车充电点位置的开源项目。
  • 截至目前,该数据集包含超过 20万个 充电点位置。
  • 数据来源包括 志愿者贡献官方渠道
  • 项目由澳大利亚珀斯的软件开发者 Christopher Cook 自2011年起领导。
  • 数据的地理分布在欧盟地区与人口密度相关。

2. 数据展示与内容

  • 用户可通过网站或应用查看全球充电点的地图。
  • 每个充电点包含以下信息:
    • 充电站/泊位数量。
    • 支持的充电接口类型。
    • 功率规格。
    • 运营状态(是否可用)。
    • 访问权限(是否向公众开放)。
    • 费用详情。
  • 用户可提交充电点及其周边环境的照片。

3. 数据集结构与处理

  • 数据存储:数据按国家代码(如 EE 代表爱沙尼亚)组织,每个位置是一个独立的JSON文件。
  • 位置信息:包含地址、操作员、状态、使用类型、创建/更新时间等元数据。
  • 连接详情:每个位置可有一个或多个充电站,每个充电站(连接点)详细说明了接口类型、电流类型、功率、电压、数量等。
  • 参考数据:项目包含一个 referencedata.json 文件,通过ID映射到具体的名称和属性(如连接类型、操作员、状态类型等13个参考表)。
  • 媒体文件:数据集还包含用户提交的照片URL,原始图片总量约30GB,主要来自欧洲,多数图片保留有详细的EXIF元数据。

4. 数据分析流程

为了将原始数据转化为可分析的数据集,作者执行了以下步骤:

  1. 反规范化处理:编写脚本将每个位置按其连接点(充电接口)展开成独立记录,并与参考数据(如操作员、接口类型名称)进行关联。
  2. 数据加载:将处理后的JSONL格式数据导入 DuckDB 数据库,生成一个包含 373,428条记录 的表。
  3. 关键字段:最终数据集包含地址(含经纬度、国家、地区)、连接点规格、运营商、状态、数据来源等数十个字段,便于进行多维分析。

5. 主要分析发现

  • 区域分布:充电点主要集中在 西欧、北欧、南欧和北美。东欧、亚洲、非洲等地区数据点相对较少。
  • 站点规模:北欧拥有一个拥有超过500个泊位的超大型充电站(位于瑞典)。大多数充电点规模较小(1-4个泊位)。
  • 主要运营商ChargePoint、Tesla、Blink Charging、flo 和 Shell Recharge Solutions 是拥有超过3000个地点的全球性主要运营商。数据集也揭示了各地区本土的主要运营商。
  • 充电接口与规格
    • 欧洲:最常见的是 Type 2 (仅插座)CCS (Type 2)。最受欢迎的功率规格是 400V, 32A, 22kW AC(三相)
    • 北美:最常见的是 Type 1 (J1772)。最受欢迎的功率规格是 230V, 16A, 3.7kW AC(单相)
  • 数据来源与更新
    • 数据同时来自手动录入、部分自动化导入和完全自动化导入。
    • 近年来,自动化数据导入 的占比显著增加。
    • 许多记录在2021年之后进行了验证或更新。
  • 访问权限:绝大多数充电点(超过15万个)是 公开可用 的。

总结

Open Charge Map 提供了一个规模庞大且持续增长的全球电动车充电基础设施数据集。通过结构化处理和分析,该数据集能够清晰地揭示全球充电网络的分布格局、技术规格(接口与功率)、市场运营主体以及数据质量(来源与新鲜度),为电动车生态系统的相关研究和决策提供了宝贵的数据基础。

23. Why Most Published Research Findings Are False (journals.plos.org)

为什么大多数已发表的研究发现是错误的

核心观点

越来越多的担忧认为,当前大多数已发表的研究发现可能是错误的。一篇研究发现的真实概率取决于研究效力和偏倚、针对同一问题的其他研究数量,以及至关重要的一点——在每个科学领域中,真实关系与无关系之间的比率。在本文的框架下,当研究领域的研究规模较小、效应量较小、被检验的关系数量多且预选性低、设计、定义、结果和分析模式的灵活性较大、存在更大的财务及其他利益和偏见、以及更多团队追逐统计显著性时,研究发现的真实性可能性更低。模拟表明,对于大多数研究设计和环境,研究发现为假的可能性大于为真。此外,对于许多当前科学领域,声称的研究发现可能通常只是对普遍偏倚的精确度量。

影响研究发现真实性的关键因素

研究发现的真实概率(阳性预测值,PPV)受以下因素影响:

  1. 先验概率(R值):指在特定领域中,被检验的真实关系与无关系的比率。R值越低(即真实关系越稀有),研究发现的PPV越低。
  2. 研究效力(1-β):即研究发现真实关系的能力。效力越低(β越高),PPV越低。
  3. 偏倚(u):指研究设计、数据分析和报告过程中倾向于产生本不应存在的研究发现的因素。偏倚会显著降低PPV。
  4. 独立团队测试数量(n):多个独立团队研究同一问题会增加至少有一个团队报告显著结果的概率,从而降低单个显著发现真实的PPV。

六个主要推论

  1. 研究规模越小,发现越不可靠:小样本研究效力低,PPV下降。
  2. 效应量越小,发现越不可靠:研究真实微小效应时,效力低,且更容易受偏倚影响。
  3. 检验的关系数量越多且选择性越低,发现越不可靠:探索性、假设生成式研究(如高通量组学)的PPV极低。
  4. 研究设计、定义、结果和分析模式的灵活性越大,发现越不可靠:灵活性为将“阴性”结果转化为“阳性”结果(即偏倚)提供了更多机会。
  5. 财务及其他利益和偏见越大,发现越不可靠:利益冲突和先入为主的观念会增加偏倚。
  6. 领域越“热门”(参与团队越多),发现越不可靠:大量团队竞争可能导致匆忙发表极端且相互矛盾的结果(普罗透斯现象)。

偏倚与真实性的定量关系

文章通过模型推导了PPV的计算公式,并举例说明。

  • 示例:在一项全基因组关联研究中,假设检验100,000个基因多态性,其中约10个与疾病真实相关(R=10⁻⁴)。研究有60%的效力。在无偏倚情况下,一个刚刚达到p<0.05的显著发现,其真实的后验概率仅为约12×10⁻⁴。若存在偏倚(u=0.10),该概率进一步降至4.4×10⁻⁴。如果有十个独立团队进行类似研究,其中一个报告了显著结果,其真实的概率仅为1.5×10⁻⁴。
  • 模拟结果:对于大多数研究设计和场景,PPV超过50%非常困难。例如,一个设计良好、效力充足的随机对照试验(RCT),其PPV约为85%;而一个探索性流行病学研究或发现导向的研究(如微阵列),其PPV可能远低于50%。

一个重要观点:研究发现可能是对偏倚的度量

在一个完全没有真实发现的“零领域”,所有观察到的效应量理论上应在随机误差范围内。因此,观察到的效应量与零假设的偏离程度,纯粹就是该领域普遍偏倚的度量。声称效应量越大的领域,可能只是遭受了更严重的偏倚。这一观点颠覆了传统上将极大且极显著的效应视为重大发现的观念,实际上它们可能更应被视为存在重大偏倚的信号。

如何改善现状

  1. 追求更高质量、低偏倚的大规模证据:针对先验概率较高的问题,进行大型研究或高质量的Meta分析。
  2. 强调整体证据而非单一研究的显著性:不应过分强调单一团队的统计显著性结果。
  3. 通过提高研究标准来减少偏倚:例如,借鉴临床试验的做法,预先注册研究方案和分析计划。
  4. 理解并评估先验概率(R值):在研究前思考所检验关系的真实可能性有多大,有助于更恰当地解读结果。
24. Firefox tracks you with “privacy preserving” feature (noyb.eu)
25. 45 years ago CompuServe connected the world before the World Wide Web (www.wosu.org)

CompuServe:万维网之前的互联网先驱

45年前,CompuServe在互联网普及之前就将世界连接起来。尽管硅谷被视为互联网时代的诞生地,但这家总部位于俄亥俄州中部的公司在技术发展史上扮演了关键角色。

公司起源与早期业务

CompuServe成立于1969年,最初是Golden United人寿保险公司的子公司,主要提供计算机分时服务,向没有大型机的企业提供数据处理能力。20世纪70年代末,公司发现其庞大的主机在晚间闲置,于是决定将访问权限开放给技术爱好者。

消费者在线服务的诞生

1979年9月24日,CompuServe正式推出面向消费者的在线服务。通过与RadioShack合作,将服务与流行的TRS-80家用电脑及调制解调器捆绑销售。1980年,公司被税务服务公司H&R Block收购。

首创功能与用户体验

作为第一个主要的在线信息服务提供商,CompuServe提供了一系列开创性功能:

  • 电子邮件:用户地址格式如72241.443@compuserve.com
  • 在线报纸:《哥伦布电讯报》成为全球第一份在线报纸
  • 信息查询:天气地图、股票报价、在线购物和机票预订
  • 文件共享与下载

连接过程需要通过调制解调器拨号,速度比今天的互联网慢约3000-4000万倍,但屏幕上以绿色文本显示的菜单选项为用户打开了数字世界的大门。

社交与社区成为核心

尽管功能丰富,但用户最热衷的是人际交流。公司推出的CB模拟器(基于70年代流行的民用波段无线电命名)实现了实时在线聊天。此外,平台还拥有数千个兴趣论坛,从针线工艺到NASA科学,形成了活跃的线上社区。

用户Will Cowman回忆道,他14岁时每周用零花钱购买一小时的上网时间(5美元/小时),通过CompuServe与全球各地的人交流,而无人因年龄评判他。

竞争与衰落

CompuServe与Prodigy、AOL等在线服务竞争至90年代中期。然而,随着互联网和万维网的兴起,这些封闭式服务未能适应更开放、自由的网络环境。1997年,AOL从H&R Block收购了CompuServe服务,公司虽存续但辉煌不再。

历史遗产

CompuServe被公认为数字社区的先驱。正如前科技记者Dylan Tweney所说:“对许多人而言,CompuServe连接了世界,并让人们首次认识到,计算机不仅是计算工具,更是通信和信息设备。”

2022年,俄亥俄州历史学会在阿灵顿中心路和亨德森路交汇处(公司1973年的计算机中心和企业大楼所在地)设立历史标记,以纪念这家公司的开创性贡献。

26. No more blurry fonts in Linux (2023) (blog.aktsbot.in)

解决Linux字体模糊问题

问题背景:作者在Linux系统中尝试使用Inter字体时,发现所有字体都显得模糊,影响可读性。

解决方案:通过修改环境变量来改善字体渲染。具体操作是打开 /etc/environment 文件,在文件末尾添加以下行:

FREETYPE_PROPERTIES="cff:no-stem-darkening=0 autofitter:no-stem-darkening=0"

技术细节

  • 该环境变量配置了FreeType库的字体渲染属性,启用stem-darkening功能。
  • stem-darkening通过加粗字体笔画,提升小屏幕上的字体清晰度。
  • 配置适用于所有字体,但对Inter字体效果尤为显著。

效果对比:修改前字体模糊,修改后字体变得清晰易读(参考文中提供的前后图片)。

操作步骤

  1. 编辑系统文件 /etc/environment
  2. 添加指定环境变量。
  3. 重启机器使配置生效。

总结:此方法通过调整FreeType渲染设置,有效解决了Linux系统中字体模糊的问题,提升桌面使用体验。

27. New California law requires one-click subscription cancellations (thedesk.net)

加州新法律要求订阅服务提供一键取消功能

加利福尼亚州通过的Assembly Bill (AB) 2863法案要求,如果商家提供通过一键购买方式的自动续订订阅服务,就必须同时为客户提供相同的简便一键方式来取消订阅。该法律将于2025年1月1日生效,并适用于次年7月起签订的购买和合同。

立法背景与目的:

  • 加州原有的法律已是全美最严格的之一,要求允许通过互联网注册订阅的公司,也必须提供通过互联网取消的途径。
  • 其初衷是防止公司只允许网上订阅,却强制用户通过电话取消(电话常伴有漫长等待,旨在阻碍用户成功取消)。
  • 然而,旧法存在漏洞:公司只要提供“网上取消”途径即可合规,但可以设置多个链接、跳转多个要求“选择加入”的网页,使得取消流程繁琐。

新法律的核心要求:

  • 堵塞漏洞,明确要求取消流程的简便程度必须与订阅流程对等
  • 如果订阅可以通过一键操作完成,取消也必须能一键完成。

主要影响范围:

  • 流媒体服务(如Roku、亚马逊、苹果等硬件平台上的订阅)。
  • 数字报刊、健身俱乐部、软件开发者及酒类俱乐部等各类提供一键订阅按钮的服务。

立法支持者观点:

  • 法案共同起草人、议员Pilar Schiavo表示,该法旨在帮助加州人在订阅成本累积的时期节省开支,树立了全国保护消费者的典范。
  • 支持该提案的消费者团体“加利福尼亚消费者联合会”执行董事Robert Herrell指出,消费者已受够难以取消的“吸血式”订阅,并强调“订阅与取消应该同样简单”。
28. Doom on a modified rotary phone (tamulaitis.lt)

Doom Phone:改装旋转电话玩Doom游戏

Doom Phone是一个改装过的旋转电话,通过蓝牙连接来控制经典第一人称射击游戏《Doom》。该项目在2017年立陶宛维尔纽斯由Technarium团队举办的“Internet Of Shit”黑客马拉松上用两天时间完成,活动主题是构建“完全无用但功能齐全”的设备。该项目最初名为“Dialrhea”,赢得了“最不烂项目奖”和“最受欢迎项目公共奖”。

技术实现

设备基于Arduino构建,使用Adafruit Bluefruit LE UART模块进行蓝牙通信,可模拟蓝牙键盘与任何支持蓝牙低功耗的设备配对。核心技术包括:

  • 旋转拨号盘读取:通过Arduino读取旋转机制产生的脉冲计数,将其转换为数字输入。
  • 听筒按钮:用于触发动作(如射击或发送消息)。
  • 多种操作模式:通过电位器切换模式,包括:
    • 游戏模式:为《Doom》定制控制(方向键、射击等)。
    • 表情模式:通过拨号盘输入并发送表情符号。
    • 普通模式:输出拨号数字。

蓝牙通信是主要挑战,团队通过添加重试循环和超时机制来提高稳定性。代码实现了按键状态管理、防抖处理和蓝牙指令发送。

项目展示与影响

Doom Phone在多个活动中展出,包括2017年创客嘉年华、黑客营地“Not Trolls Allowed”、维尔纽斯科技园区周年庆及Braille卫星音乐节。在2024年阿姆斯特丹创意编程聚会上展示后,被发布至Hacker News并引发讨论。

Doom游戏的文化意义

选择《Doom》因其历史重要性:它重新定义了PC游戏市场,开创了共享软件发行模式,并且玩家社区一直尝试在各类硬件上运行《Doom》,从计算器到土豆供电的设备。

同类项目比较

2024年日本玩家Yoshino制作了类似设备,但营销更成功。相比之下,Dialrhea支持无线蓝牙和更丰富的交互(听筒控制),而Yoshino的设备需有线连接且仅用拨号盘控制。

未来计划

作者希望举办工作坊制作更多类似设备,并组织《Doom》死斗赛,理想场合是黑客营地等活动。

30. I have 2000 old VHS tapes in my garage and don't know what to do with them (takes.jamesomalley.co.uk)

文章摘要

核心问题:作者拥有约2000盘90年代末至2000年代初录制英国电视节目的VHS录像带,因无力独自处理其庞大的数字化工作,现寻求机构或个人接手,以保存其中蕴含的历史价值。

主要内容

  1. 录像带的价值:这些录像带不仅记录了当时的电视节目(如《Blue Peter》、《Eurotrash》),更重要的是,在其模拟信号中隐藏着大量“图文电视”数据的碎片。图文电视是互联网普及前英国重要的实时图文信息服务,但当时未被系统存档,大部分内容已永久失传。
  2. 技术突破:开发者Alistair Buxton编写了神奇的软件,能够从VHS录像带的原始数据中提取图文电视碎片并重建为完整页面。这为恢复已消失的数字历史提供了关键手段。
  3. 现状与困境
    • 作者已建立工作站并开始处理,但工程量巨大。在六个月里仅处理约40盘,随后因生活忙碌而停滞。
    • 约30箱录像带占用大量物理空间,给作者及其家人带来压力,且作为模拟格式,VHS媒介会随时间劣化,存在保存紧迫性。
  4. 求助呼吁:作者希望找到能妥善保存或数字化这批完整档案的机构、组织或个人,以延续最初录制者的无意贡献,并防止历史数据彻底消失。文章最后提供了联络方式并请求读者扩散信息。
31. Launch HN: Modern Realty (YC S24) – AI Real Estate Agent for Home Buyers
32. Show HN: Coros – A Modern C++ Library for Task Parallelism (github.com)

Coros:现代 C++ 任务并行库

简介与目的

Coros 是一个仅包含头文件(header-only)的 C++23 库,专为基于任务的并行处理设计。它深度结合 C++20 协程与 C++23 的 std::expected 类型,旨在提供简洁、高性能的并行任务调度与管理方案。

核心特性

  • 易用性:接口直观,无需编译,引入头文件即可使用。
  • 高性能:在斐波那契计算(评估调度开销)和矩阵乘法(测试整体性能)等基准测试中表现优异。
  • 异常处理:利用 std::expected 安全管理错误与异常。
  • 单子操作(Monadic operations):支持通过 and_then 方法优雅地链接任务。

核心组件

  1. coros::ThreadPool:线程池,负责管理指定数量的工作线程并执行任务。
  2. coros::Task<T>:任务容器,作为协程的返回类型。使用 co_return 返回结果,使用 co_await 控制执行流。底层使用 std::expected<T, std::exception_ptr> 存储执行结果或异常指针。
  3. Awaiters:支持 co_await 操作符的可等待对象,用于在任务中实现挂起与恢复。

关键功能模块

库的功能划分为四个核心头文件:

  • start_tasks.h:配置线程池与任务,并从主线程启动执行。提供阻塞主线程的 start_sync 和非阻塞的 start_async
  • wait_tasks.h:挂起当前任务以等待其他任务完成。包含同步(wait_tasks,显式 co_await 时调度)和异步(wait_tasks_async,创建时立即调度)版本,并支持跨线程池迁移任务。
  • enqueue_tasks.h:将任务提交至线程池但不等待其完成。此模式不获取返回值,且任务内抛出的异常会被直接重新抛出。
  • chain_tasks.h:实现任务的链式调用。通过 and_then 串联单参数任务并在线程池中执行;若链路中发生异常,则自动捕获并终止后续任务。

安装与编译要求

  • 安装:将 include 文件夹放入项目目录并配置包含路径。
  • 编译器:需支持 C++23 的 std::expected 特性(兼容 GCC 13+ 或 Clang 17+,MSVC 暂不支持)。
  • 编译选项:必须开启协程支持(如 GCC 的 -fcoroutines)。库会自动利用 std::hardware_destructive_interference_size 避免缓存伪共享(False sharing)以优化性能。

许可证

项目采用 Boost Software License 1.0 开源许可证,允许自由使用、修改、分发及创建衍生作品。

33. Audio Masking (www.cryptomuseum.com)

音频屏蔽技术总结

音频屏蔽是一种用于隐藏监听设备所截获音频情报的技术,旨在防止被业余或专业的拦截者发现。以下是文章介绍的主要屏蔽技术。

一、子载波调制

这是最常见、应用最广泛的屏蔽技术。

  • 原理:将可听的音频信号调制到一个远高于人耳听觉范围(如12.5 kHz、22 kHz或40 kHz)的子载波上,然后再将混合信号调制到射频载波上。拦截者解调射频信号后只能听到无声的载波,需要再次解调才能恢复音频。
  • 应用:1958年由CIA首次用于窃听设备(Easy Chair Mark III),冷战期间被CIA和东德斯塔西等情报机构大量用于电话和房间窃听设备。
  • 检测与弱点:容易被专业的监测接收器(如1976年的Scanlock Mark 3)解密。后续版本甚至能自动发现子载波频率。为了增强隐蔽性,有些设备会在基带中注入噪声或强50/60 Hz哼声,模拟环境干扰,但仍可被专业设备破解。CIA曾故意使用易于发现的子载波设备,以掩盖同一房间中更隐蔽的窃听器。

二、双边带抑制载波调制

这是一种使用较少的技术,旨在击败大多数寻虫设备。

  • 原理:将音频信号调幅调制到一个高频子载波(如20 kHz)上,再将此信号频率调制到射频载波上,同时抑制或消除子载波本身。解调射频后,得到的音频信号中包含位于高频区的语音信息,且因缺少子载波而难以自动还原。
  • 应用:1967年由CIA首次使用(SRT-52发射机配合SRT-57解调器)。进一步可通过注入噪声或哼声来掩盖边带信号。

三、脉冲位置调制类屏蔽技术

这类技术基于脉冲位置调制,具有较宽的带宽(可达100 MHz)和极高的隐蔽性。

  1. 三脉冲屏蔽

    • 原理:在噪声控制下以随机间隔取样音频,并以脉冲位置调制传输。每个采样脉冲位于两个固定距离的参考脉冲之间,其相对位置携带情报。
    • 应用:1969年由CIA首次用于SRT-52发射机(亦称52系统)。未发现可直接解调的商用接收器,传统监测接收器也无法锁定其信号。
    • 检测方法:需使用便携式频谱分析仪(如Rohde & Schwarz FSH-3)手动扫描,配合定向天线寻找具有6-10 MHz宽载波及多个边带的典型信号特征。现代便携式监测接收器(如PR-100)可用于定位,但无法解调。差分射频探测器(如Audiotel Delta-V)也可在较近范围内探测到。
  2. 拒绝脉冲屏蔽

    • 原理:以固定间隔取样并进行脉冲位置调制,但在噪声控制下随机丢弃(拒绝)最多五个连续脉冲,形成噪声模式。存活脉冲的相对位置承载情报。
    • 应用:1968年由CIA首次用于SRT-56发射机(亦称56系统),后因其可靠性也被用于其他型号(如SRT-145、SRT-107)。
    • 检测:与三脉冲技术类似,需手动频谱扫描。
  3. 脏脉冲屏蔽

    • 原理:以固定间隔取样并进行脉冲位置调制,在噪声控制下随机延迟每个脉冲的后沿(或后来改进的前沿),仅脉冲前沿(或后沿)的相对位置承载情报。此技术解决了早期版本在过载接收机上可能意外解调的问题。
    • 应用:改进后的脏脉冲技术于1974年首次用于SRT-91发射机(亦称91系统),因其紧凑可靠也被其他型号(如SRT-99)采用。
    • 检测:目前未发现可直接解调的商用接收器,需专用设备(如CIA的SRR-90/91)进行解调,或采用类似上述手动扫描的方法进行探测。

总结:音频屏蔽技术从最初的子载波调制发展到基于脉冲位置调制的复杂系统,其核心目的是通过非标准调制方式隐藏音频情报,增加拦截和破解难度。尽管子载波调制易于被专业设备破解,但脉冲类技术因其宽带宽、低占空比和噪声编码特性,提供了更高的隐蔽性,探测和解密需要更专业和复杂的设备与方法。

34. FRED: New Zealand open-access and crowdsource database of fossil records (fred.org.nz)
35. GSoC'24: Differentiable Logic for Interactive Systems and Generative Music (ijc8.me)

本文是关于2024年Google Summer of Code(GSoC)项目的总结,项目标题为“面向交互系统与生成音乐的可微分逻辑”,由BeagleBoard.org组织支持。作者探索了将可微分逻辑门网络(difflogic)应用于嵌入式实时交互系统和生成音乐创作的可能性。

项目核心组件 项目基于三大技术要素:

  1. 可微分逻辑:使用基于PyTorch的difflogic库,通过逻辑门网络替代传统神经网络,旨在获得更高的计算效率和硬件亲和性。
  2. 交互系统平台:采用Bela平台,这是一个基于BeagleBone Black的开源嵌入式系统,专为低延迟的音频和传感器实时处理设计。
  3. 生成音乐实践:借鉴bytebeat音乐形式,即通过简短的数学表达式(以时间样本为自变量)直接生成音频样本,涵盖音色、节奏、旋律等所有层面。

主要工作与执行 项目工作在有限的12周内展开,重点在集成和创意应用,机器学习实验部分被缩减。

  • 集成工作

    • 语言集成:为Bela支持的多种编程语言(如C++、Pure Data、SuperCollider、Csound)创建了使用逻辑门网络的封装库,提供了从编译时固化到动态加载(如Pure Data外部对象)的灵活方案。
    • 硬件集成:探索利用BeagleBone Black的可编程实时单元(PRU)在后台并行运行逻辑门网络。作者绕过C编译器,直接生成PRU汇编代码,并进行了网络预处理和优化。
  • 实验与发现

    • 输入/输出编码:对比了二进制位置编码和GroupSum(一元)编码。实验发现,位置编码网络在训练到推理模式转换时失真更大,而GroupSum编码网络行为更平滑。
    • 技术挑战:尝试将difflogic与可微数字信号处理(DDSP)等技术结合,但因标量与二进制向量之间的转换不具备完全可微性而受阻,该问题留待未来研究。
  • 创意应用

    • 声音合成:将逻辑门网络视为以时间为输入的采样函数,模仿bytebeat的生成方式。研究发现,即使是随机初始化的、采用二进制位置编码的小型网络,也能产生出乎意料的“音乐性”声音。
    • 交互设计:构建了网络实时可视化工具,直观展示了其输入(二进制时钟)中蕴含的幂次周期性结构如何影响输出。在此基础上,受“电路弯曲”启发,设计了允许用户实时“操纵”运行中网络(通过掩码逻辑门)的交互方式。
    • 部署演示:最终应用可在Bela硬件上运行(配合Trill Square传感器进行交互),也可作为浏览器端的WebAssembly模块(在Audio Worklet中运行)方便演示。

未来展望 作者指出了多个可继续探索的方向:

  1. 机器学习:进行更多任务(如典型任务基准)的训练实验,尝试复制DDSP、变分自编码器等现有技术。
  2. 集成:统一语言封装与PRU工作流,简化跨设备训练与部署流程。
  3. 创意探索:深入分析小型二进制网络产生音乐性声音的内在偏差,并探索其作为紧凑音乐表示的潜力。

总结 该项目成功探索了可微分逻辑在嵌入式交互和生成音乐中的初步应用,实现了关键的语言与硬件集成,并通过创意应用揭示了逻辑门网络独特的生成潜力。尽管在机器学习理论实验方面有所欠缺,但为后续的技术研究与艺术创作提供了有价值的起点和工具。

37. Dethrace: Reverse engineering the 1997 game "Carmageddon" (2023) (github.com)

Dethrace 项目概述

Dethrace 是一个旨在逆向工程1997年竞速/混战游戏《Carmageddon》并在现代系统上原生重建它的开源项目。

核心内容

构建与依赖

  • 使用 CMake 构建,运行时依赖 SDL2
  • 支持通过包管理器(如 macOS 的 brew 或 Linux 的 apt)安装依赖。
  • 项目使用 git 子模块,克隆后需执行 git submodule update --init --recursive
  • 构建流程标准:创建 build 目录,运行 cmake ..make

运行游戏

  • Dethrace 不包含任何游戏资产。玩家必须拥有《Carmageddon》的原始数据文件(如原始CD或从GOG.com购买)。
  • 支持多个免费试玩版(原版试玩、Splat Pack 试玩、Splat Pack 圣诞试玩)。
  • 程序通常应置于《Carmageddon》游戏根目录(与 CARMA.EXE 同级)。Windows 用户需将 SDL2.dll 放在同一目录。
  • 支持通过 dethrace.ini 配置文件自定义游戏目录和设置。
  • 支持 GOG 的 CD 音频约定,即使用 MUSIC 文件夹中的 .ogg 音轨文件。

技术背景与原理

  • 项目的灵感源于在《Carmageddon》Splat Pack 扩展版光盘中发现的一个旧版 Watcom 调试符号文件 (DETHSRC.SYM)
  • 该符号文件记录了内部构建版的函数名称,但其代码地址已失效。项目通过将原始汇编代码逐步转换为等效的 C 代码来逆向工程游戏。

法律与贡献

  • Dethrace 源代码在 公共领域 许可下发布,但仅供非商业用途
  • 项目的文档和功能仅能配合通过合法拥有《Carmageddon》所提供的资产使用
  • 项目与 SCi、Stainless Software 或 THQ Nordic 无任何关联或背书。
  • 详细的贡献指南和变更日志可在项目的文档中找到。
38. Capstone Disassembler Framework (github.com)

Capstone反汇编框架摘要

Capstone是一个反汇编框架,目标是成为安全社区中二进制分析和逆向工程的终极引擎。它由Nguyen Anh Quynh创建,并由一个小社区开发和维护。

主要特性

  • 支持多种硬件架构:包括ARM、AArch64、Alpha、ARC、BPF、Ethereum VM、LoongArch、HPPA、M68K、M680X、Mips、MOS65XX、PPC、RISC-V(rv32G/rv64G)、SH、Sparc、SystemZ、TMS320C64X、TriCore、WebAssembly、XCore、X86(16/32/64位)和Xtensa。
  • 干净、简单、轻量、直观的API:架构无关,便于集成和使用。
  • 提供指令详细信息:作为“分解器”,可输出反汇编指令的细节。
  • 提供指令语义:包括隐式寄存器读写列表等语义信息。
  • 纯C语言实现:并有多种语言绑定,如Swift、D、Clojure、F#、Common Lisp、Visual Basic、PHP、PowerShell、Emacs、Haskell、Perl、Python、Ruby、C#、NodeJS、Java、Go、C++、OCaml、Lua、Rust、Delphi、Free Pascal和Vala,这些绑定主要在主代码中或由社区提供。
  • 原生支持流行平台:包括Windows、Mac OS X、iOS、Android、Linux、BSD、Solaris等。
  • 线程安全设计
  • 特别支持嵌入到固件或OS内核
  • 高性能:适合恶意软件分析,能处理各种X86恶意软件技巧。
  • 开源BSD许可证

其他资源

  • 官方网站https://www.capstone-engine.org,提供进一步信息。
  • 编译和安装:见BUILDING.md文件。
  • 文档:包括软件架构概述(docs/ARCHITECTURE.md)、测试文档(tests/README.md)、自动同步更新器文档(suite/auto-sync/README.md)和链接教程(docs/README)。
  • 贡献指南:见CONTRIBUTING.md。
  • 模糊测试信息:见suite/fuzz/README.md。
  • 许可证:项目基于BSD许可,分发二进制或源代码时需附上LICENSE.TXT文件。