2024-07-31
36 篇热帖
2. Porffor: A from-scratch experimental ahead-of-time JS engine (porffor.dev)
Porffor 是一个实验性的提前编译(AOT)JavaScript 引擎,可将 JavaScript 代码直接编译为 WebAssembly 或原生二进制文件。
与现有的 JS 转 Wasm 方案(通常打包解释器)相比,Porffor 生成的 Wasm 输出体积小 10-30 倍,速度也快 10-30 倍。它解决了 JS 在 Wasm 沙盒中执行时的性能损失问题,适用于安全高效的服务器端 JS 托管(如边缘运行时)以及增加逆向工程的难度。
在编译为原生二进制方面,由于 Porffor 不打包运行时,二进制大小相比传统方式可减小多达 1000 倍(约 90MB 减至不到 100KB)。这使得 JS 可用于嵌入式设备、游戏主机等资源受限的场景,并允许创建小于 1MB 的命令行应用程序。其底层编译路径为 JS -> C -> 原生代码。
Porffor 的关键特点包括:自身用 JavaScript 编写,避免了内存安全漏洞;从零开始构建并专注于 AOT,从而能实现以往不可能的优化;原生支持 TypeScript,无需构建步骤。
与传统的解释器、即时编译(JIT)或混合模式引擎不同,Porffor 采用 AOT 编译,在开发者机器上完成编译,用户机器上直接执行二进制文件。这消除了运行时编译对用户体验的影响,允许进行深度静态分析优化,但牺牲了 eval 等动态 JavaScript 功能。项目目前仍处于早期阶段,部分 JavaScript 功能尚不支持,但正在通过 Test262 测试套件持续跟踪和改进其对 ECMAScript 标准的符合性。
3. I prefer rST to Markdown (buttondown.email)
本文作者偏好使用 reStructured Text (rST) 而非 Markdown 来编写大型文档(如书籍),并阐述了其核心原因。主要观点如下:
1. 核心架构差异
- Markdown 是 HTML 的轻量级表示,解析器通常将其直接转换为 HTML 标签。
- rST 是一种中等权重的标记语言,旨在表示一个抽象的文档树(doctree)。解析后,Sphinx 会生成一个由各种节点(如
image_node)组成的文档树。
2. rST 的关键优势
- 高度可扩展性:rST 的功能(如插入图片)通过“指令”和对应的处理函数实现。用户可以像添加内置功能一样,轻松注册新的指令(如
.. figure::),从而创建自定义的文本对象。 - 构建时处理能力:Sphinx 可以在渲染前对抽象的文档树(doctree)进行转换。作者举了一个核心例子:在《程序员的逻辑》一书中,利用此特性将分散在各章节的“练习题解答”节点集中移动到书末的“解答列表”中,并在两者之间建立双向超链接,同时根据不同输出格式(HTML, EPUB, PDF)采用不同渲染策略。
3. 具体应用案例
作者为处理书中的练习题和解答创建了自定义的 rST 扩展。在生成 EPUB 和 LaTeX (PDF) 时,会运行一个转换操作:将所有 solution 节点从原位置移动到统一的 solutionlist 节点下,并添加相互引用的链接。这体现了 rST 在处理复杂文档结构和构建逻辑时的强大灵活性。
4. 对常见反对意见的回应
- 关于语法美观:作者承认 rST 语法不如 Markdown 简洁美观,但认为其功能强大性更为重要。他建议对语法敏感的用户可以考虑 Asciidoc、MyST、Typst 等其他工具。
- 关于 Markdown 的局限性:作者指出,简单的 Markdown 缺乏统一的扩展语法和原生的构建时转换支持。许多基于 Markdown 的文档生成器不得不通过额外的预处理步骤来增加功能,但这限制了其能力,并且程序员工具链(如 LSP)对这种“魔改版” Markdown 的支持不如对标准 rST 的支持好。
5. 总结 作者强调,其目的不是说 Sphinx/rST 绝对优秀,而是想指出简单的 Markdown 在大型、复杂文档项目中能力不足。他鼓励人们认识到文档构建器可以比想象中强大得多,并选择最适合自身需求的工具。
(注:文中还简要介绍了作者正在编写的《程序员的逻辑》一书的内容与进度。)
4. Meta introduces Segment Anything Model 2 (ai.meta.com)
5. macOS in Docker Container (github.com)
Docker-OSX 项目概述
Docker-OSX 是一个允许在 Docker 容器中运行 macOS 的开源项目,旨在提供接近原生的性能。它支持多种用途,包括在 Linux 或 Windows 上进行 macOS 安全研究、iMessage 安全研究、iPhone USB 直通以及使用 Xcode 进行开发。
核心特性与优势
- 近原生性能:基于 QEMU 和 KVM 虚拟化,运行效率高。
- 图形界面支持:通过 X11 转发(支持 WSLg)或 VNC 访问 macOS 图形桌面。
- 设备支持:支持 iPhone USB 设备直通(通过 VFIO 或 usbfluxd),以及文件系统共享。
- 安全研究:内置序列号生成功能,便于进行 iMessage/iCloud 安全测试。
- 广泛的系统兼容:支持从 macOS High Sierra (10.13) 到 macOS Tahoe (16) 的多个版本。
主要使用方式
用户通过 docker run 命令并指定不同参数来启动特定版本的 macOS 容器。关键参数包括:
--device /dev/kvm:启用硬件虚拟化。-p 50922:10022:将容器的 SSH 端口(10022)映射到主机。-v /tmp/.X11-unix:/tmp/.X11-unix和-e "DISPLAY=...":用于图形界面输出。-e SHORTNAME=<版本名>:指定要运行的 macOS 版本(如catalina,big-sur,sonoma)。- 对于较新版本(如 Monterey, Ventura, Sonoma 等),可能需要额外的参数,如
-e GENERATE_UNIQUE=true来生成唯一的序列号和配置。
安装前提条件
- 主机需为支持 KVM 的 x86_64 架构。
- 需在 BIOS 中启用硬件虚拟化。
- 磁盘空间需充足(建议 50GB 以上,特别是使用 Xcode 时)。
- 需要安装 Docker 以及 QEMU 等虚拟化相关依赖包。
重要提示与进阶用法
- 序列号生成:项目包含脚本用于生成唯一或特定的机器序列号、主板序列号、UUID 和 MAC 地址,这对于 iMessage 等功能至关重要。
- 性能优化:可通过优化脚本(osx-optimizer)或调整容器参数(如 CPU、内存)来提升性能。
- 存储管理:支持将容器镜像存储在外部驱动器或 NFS 上,并可以提取、压缩容器内的磁盘映像。
- 网络与端口:支持自定义端口转发和桥接网络配置。
- 容器创建:除了使用预设的
:latest、:auto等标签,用户还可以使用:naked标签来引导自己准备的.img磁盘映像文件,实现高度自定义。
社区与支持 项目拥有活跃的社区,提供 Discord 和 Telegram 频道供用户交流问题。文档详细,包含了从快速启动到高级配置(如无头模式、VNC、USB 直通、文件共享)的全面指南。项目基于 GPL v3+ 许可,欢迎贡献。
总结 Docker-OSX 提供了一种便捷、高效的方式在 Docker 容器环境中运行 macOS,主要面向开发者、安全研究人员以及需要在隔离环境中使用 macOS 的用户。其核心价值在于简化了 macOS 虚拟化环境的部署,并提供了丰富的配置选项以适应不同场景的需求。
6. Robot dentist performs first human procedure (newatlas.com)
- 技术突破:波士顿Perceptive公司开发的AI控制全自主机器人,首次成功完成人类牙科手术,速度比人类牙医快约8倍。
- 核心系统:使用手持式3D体积扫描仪,基于光学相干断层扫描(OCT)技术,通过光束构建高分辨率口腔模型(含牙齿、牙龈及神经),可自动检测龋齿,准确率约90%,且避免X光辐射。
- 手术流程:人类牙医与患者讨论治疗方案后,机器人接管并完成手术。首个应用案例是牙冠预备手术,传统需2小时(分两次就诊),机器人仅需约15分钟。
- 安全性与效率:公司称机器人能在患者轻微移动下安全操作,测试已成功。手术精准高效,可减少患者张口负担和就诊时间,潜在降低医疗成本。
- 行业影响:被视为牙科医疗突破,可提升诊疗精度、患者体验及医疗可及性。结合机器人辅助手术的发展趋势,未来可能普及。
- 当前状态:尚未获得FDA批准,未公布上市时间表。公司计划扩展治疗范围,推进全自动化牙科医疗方案。
7. `find` + `mkdir` is Turing complete (ogiekako.vercel.app)
8. Our audit of Homebrew (blog.trailofbits.com)
Homebrew安全审计概述
本次审计由Trail of Bits与Homebrew维护者联合进行,范围包括brew CLI核心代码库以及三个安全相关仓库:Homebrew/actions(自定义CI/CD工作流)、Homebrew/formulae.brew.sh(可安装包的JSON索引)和Homebrew/homebrew-test-bot(CI/CD编排与生命周期管理)。
审计旨在评估本地及CI/CD环境中潜在的安全风险,包括意外代码执行、沙盒绕过、构建完整性破坏以及权限提升等问题。
主要发现
brew CLI方面
- 沙盒逃逸与权限问题:发现漏洞允许公式通过字符串注入影响沙盒构建(TOB-BREW-2),或利用macOS上的套接字机制逃逸构建沙盒(TOB-BREW-11)。
- 代码执行来源问题:
brew install可能被诱导从非本地URL(如SFTP、SCP)安装公式(TOB-BREW-13)。 - 完整性风险:使用易碰撞的MD5哈希(TOB-BREW-5)可能导致公式命名空间混淆;公式可隐式包含未声明的网络资源(TOB-BREW-8)。
- 权限提升:公式可能利用用户已激活的sudo令牌进行提权(TOB-BREW-12)。
CI/CD方面
- 工作流触发风险:多个工作流使用
pull_request_target触发器,允许第三方PR在上游仓库上下文中运行代码,可能导致凭证泄露或构建篡改(TOB-BREW-18)。 - 输入验证漏洞:
workflow_dispatch输入存在shell注入风险,低权限用户可能借此提权(TOB-BREW-23)。 - 本地与CI/CD交叉风险:某些本地漏洞(如TOB-BREW-6的归档提取问题、TOB-BREW-13的非本地安装)在CI/CD环境中可能被低权限内部人员利用,用于横向移动或提权。
审计结论与背景
审计认为,Homebrew在包管理生态中面临独特挑战:其公式本身就是可执行的Ruby脚本,且设计上需要执行第三方代码,因此预期与非预期代码执行的边界较为模糊。尽管发现的问题均非关键级别,但它们揭示了攻击者可能通过恶意公式或输入验证不足,绕过Homebrew的设计安全假设(如沙盒、构建隔离)。
此次审计由Open Tech Fund资助,旨在加强互联网关键基础设施的安全。完整报告已发布于Trail of Bits的公开资料库。
9. Launch HN: SSOReady (YC W24) – Making SAML SSO painless and open source (github.com)
SSOReady 产品摘要
核心定位
SSOReady (YC W24) 是一个开源的、简化的解决方案,旨在帮助开发者为其产品快速添加 SAML 和 SCIM 支持。
主要功能
- SSOReady SAML:提供实现企业单点登录(SSO)所需的一切。
- SSOReady SCIM:提供实现企业目录同步(Directory Sync)所需的一切。
- 自助式设置界面:提供一个托管的用户界面,供客户的员工自行配置 SAML 和/或 SCIM。
技术特点与灵活性
- 跨平台兼容:可在任何技术栈的应用程序中使用。
- 多语言SDK:提供 TypeScript、Python、Go、Java、C#、Ruby 和 PHP 的轻量级 SDK 封装。
- 架构中立:作为一个认证中间件层运行,不“接管”用户数据,也无需更改现有的用户数据库。
- 部署选择:可使用其云托管实例,也可选择自行托管(自托管)。
企业级扩展功能(需企业计划)
- 自定义域名与品牌:在自有域名上运行 SSOReady,并定制品牌体验。
- 管理API:通过编程方式大规模自动化 SAML 和 SCIM 的全部配置。
- 企业级支持:提供含服务等级协议(SLA)的支持,包括对自托管部署的支持。
便捷的实施方式
- 快速上手:提供 SAML 和 SCIM 的快速入门指南。
- 简化实现:声称大部分集成工作可在一下午内完成,核心逻辑仅需两行代码(SAML)或一行代码(SCIM)。
- 工作原理:
- SAML:通过两个核心端点实现:
Get SAML Redirect URL(用于发起登录重定向)和Redeem SAML Access Code(用于处理回调并完成登录)。开发者使用自定义的organizationExternalId来管理组织的 SAML/SCIM 设置。 - SCIM:通过
List SCIM Users端点,即可异步获取客户组织的员工列表。
- SAML:通过两个核心端点实现:
设计理念
- 核心信念:认为所有向企业销售软件的公司都应支持企业 SSO,这是对客户安全的重要保障。
- 解决问题:旨在消除企业 SSO(尤其是 SAML)实现的复杂性和困惑,致力于为开发者提供清晰、默认安全的实现路径。
- 开源承诺:采用 MIT 许可证,确保代码的开放性和用户自由,防止未来在安全软件上不合理涨价。
安全
提供安全漏洞报告渠道,联系邮箱为 security@ssoready.com。
10. Swift Homomorphic Encryption (www.swift.org)
Swift 同态加密
2024年7月30日,苹果公司宣布发布一个新的开源 Swift 包 swift-homomorphic-encryption,用于在 Swift 中实现同态加密。
同态加密是一种密码学技术,允许在加密数据上进行计算,而无需将底层的未加密数据暴露给处理过程。客户端可以将加密数据发送到服务器,服务器对该加密数据进行操作并返回结果,客户端随后可对该结果进行解密。在此过程中,服务器本身从不解密原始数据,甚至无法访问解密密钥。这种方法为云服务在保护用户数据隐私和安全的同时进行操作提供了新的可能性。
苹果在自身工作中也使用了同态加密,并很高兴将此 Swift 实现分享给社区使用和贡献。
在 iOS 18 中,苹果利用该技术实现了新的 实时来电显示查询 功能,提供来电显示和垃圾电话拦截服务。该功能使用同态加密将加密查询发送到服务器,服务器可以提供关于电话号码的信息,而不会获知请求中的具体电话号码。为此,苹果还共享了 live-caller-id-lookup-example,提供了一个功能性的示例后端,用于测试使用同态加密的实时来电显示查询功能。
这两个包充分利用了以下特性:
- Swift on Server,包括 Hummingbird HTTP 框架和跨平台支持
- 使用 Benchmark 库轻松进行基准测试
- Swift Crypto 中高性能的底层密码学原语
实时来电显示查询依赖于私有信息检索,这是一种私有的键值数据库查找形式。在 PIR 场景中,客户端拥有一个私有关键字(如电话号码),并希望从服务器检索关联的值。由于关键字是私有的,客户端希望在不让服务器知晓该关键字的情况下执行此查找。
PIR 的一个简单实现是让服务器将整个数据库发送给客户端进行本地处理。虽然这确实可以防止服务器知道正在执行的查询,但对于更新频繁的大型数据库而言,这并不可行。
相比之下,苹果的 PIR 实现(基于同态加密)只需与客户端同步少量数据库元数据。这些元数据很少更改,从而能够高效处理具有大量更新的超大型数据库。
同态加密的典型工作流程如下:
- 客户端加密其敏感数据并将结果发送给服务器。
- 服务器对密文进行计算(可能结合其自己的明文输入),而不会知道任何密文解密后的内容。
- 服务器将生成的密文响应发送给客户端。
- 客户端对结果响应进行解密。
该 Swift 同态加密实现采用了 Brakerski-Fan-Vercauteren (BFV) 同态加密方案。BFV 基于带错误的环学习困难问题,具有抗量子性。
实时来电显示查询功能需要具有后量子 128 位安全性的 BFV 参数,以针对经典的和未来可能的量子攻击提供强大保护。
苹果认为,开发者会发现同态加密对于苹果生态系统内外的多种独立隐私保护应用非常有用,包括隐私集合交集、安全聚合和机器学习。
文章最后提供了使用 Swift 同态加密的基本代码示例,展示了从选择加密参数、编码明文、生成密钥、加密、解密到解码的完整流程。该示例代码简洁地演示了核心 API 的使用方式。
苹果期待与社区合作增强此包,并鼓励开发者在遇到问题或提出改进建议时,在 GitHub 的相关仓库中提交 issue。他们期待看到同态加密如何赋能 Swift 社区的开发者和研究人员,实现新的用例。
作者:Fabian Boemer、Karl Tarbe 和 Rehan Rishi,均为苹果公司从事 Swift 同态加密及其他隐私保护技术的团队成员。
11. The Truth About Linear Regression (2015) (www.stat.cmu.edu)
《线性回归的真相》(2015) 内容摘要
本文是作者Cosma Shalizi在2015年秋季教授“现代回归”课程(36-401)时所编写的讲义汇编。其核心目的是提供一种视角:将统计学视为在1960年后已取得显著进展的学科,而线性回归的教学应反映这一点。
核心主张与特点
作者强调,在讲授线性回归时,应弱化那些过度依赖高斯噪声假设和模型必须完全正确设定的理论部分,转而侧重于更依赖计算、但更为稳健的技术。作者认为,当前对线性回归的许多常规教学并未充分体现统计学的现代发展。
内容与结构
- 来源与定位:该讲义部分内容与作者的另一本著作《Advanced Data Analysis from an Elementary Point of View》(特别是其第二章)有重叠,但也包含了大量新的、更基础的内容。
- 资源形式:提供PDF全文、数据文件以及每章配套的R代码。
- 大纲概览:讲义结构全面,涵盖了从基础到进阶的线性回归主题,主要包括:
- 最优预测、统计模型介绍
- 简单与多元线性回归的建模、估计(最小二乘法、最大似然法)
- 诊断、推断、预测、参数解释、变量转换
- 模型评估(如F检验、R²)与模型选择
- 处理特殊问题(如多重共线性、离群值、交互作用)
- 高级方法(加权/广义最小二乘、变量选择、树模型、自举法)
- 未来计划:作者提及可能在未来将线性时空估计与预测(如维纳滤波、克里金法)的内容融入本讲义。
最后更新
讲义文本的最后一次更新是于2025年10月20日,内容为勘误校正和在R语言更新后重新运行代码。作者对评论和更正持开放态度。
12. Fake job interviews are securities fraud (www.bloomberg.com)
13. How great was the Great Oxidation Event? (eos.org)
大氧化事件有多“大”?
氧气是动物生命的关键。尽管已研究数十年,科学界对早期地球大气中的氧气何时足够支持动物仍无共识。主流观点认为氧气首次在约24亿年前的大氧化事件(GOE)期间显著积累,但对其具体浓度存在重大分歧:一种估计认为氧气升至现今水平的10%–40%,另一种则认为低于现今的0.1%。这一差异至关重要,因为原始动物(如海绵)至少需要现今氧气水平的0.25%才能生存。
化石记录显示,最早的确认真核生物(动物前身)出现于约17亿年前,而最早的动物化石(如埃迪卡拉生物群)则在约5.4亿年后才出现。一种假说认为,直至约8亿年前氧气升至近现代水平后,真核生物才开始多样化并演化为动物,但这依赖于“此前氧气水平过低”这一争议观点。
铬同位素证据的矛盾
科学家通过代用指标(如岩石中的铬同位素)推测古氧气水平。铬同位素在与锰氧化物矿物反应时会发生分馏,该反应需要氧气浓度高于现今的0.1%。早期研究在8亿年前的岩石中才发现显著的铬同位素分馏,暗示此前氧气水平过低。然而,后续研究在19亿年前的岩石中也发现了强烈分馏,表明氧气可能早已达到支持动物的水平。
来自西班牙里奥廷托河的启示
里奥廷托河的酸性、高金属水体为解决矛盾提供了新线索。该河流因黄铁矿氧化而呈现强酸性(pH约2),并富含铁、铬等金属。研究发现,在这种酸性环境中,尽管大气氧含量高达21%,锰氧化物却无法形成,导致河水与河口沉积物中的铬同位素未发生分馏,其比值与源岩几乎相同。
这一发现表明,在酸性排水广泛的环境(如大氧化事件后大气氧与地表硫矿物反应的时代),锰氧化物的缺失可能阻止了铬同位素“氧信号”的形成。因此,8亿年前岩石中缺乏铬同位素分馏,未必意味着当时氧气水平低,而可能是酸性排水导致的“信号掩盖”。这意味着氧气水平可能在元古宙更早时期就已达到现今的0.1%以上,足以支持动物生命。
动物为何“迟到”?
如果氧气早已充足,动物为何迟至元古宙末期才出现?研究提出了多种可能解释:
- 海洋氧波动:浅海氧含量可能反复被缺氧的深海水体稀释,不稳定的氧环境阻碍了动物演化。
- 食物与营养匮乏:产氧的原生植物构成食物链基础,低氧可能伴随食物短缺;此外,氮等关键生物元素可能因微生物活动而稀缺。
- 基因演化滞后:多细胞生物核心基因的演化可能需要数十亿年时间。
最新研究日益表明,动物演化延迟并非因为缺乏氧气。对氧气历史的更深入理解,不仅关乎地球生命演化,也可能适用于探寻其他星球上的生命迹象。
14. Jeff Bezos' management rules are slowly unraveling inside Amazon (fortune.com)
亚马逊领导原则面临内部挑战与演变
核心原则与独特文化
亚马逊以16条“领导原则”(如客户至上、崇尚行动、勤俭节约等)和独特的实践文化(如六页纸备忘录、两个披萨团队、PRFAQ工作法)闻名。这些原则和实践被视为公司成功的关键,在员工招聘、评估和决策中占据核心地位,并被众多外部企业效仿。
内部挑战与争议
- 原则被武器化与滥用:部分员工和管理者认为,领导原则越来越多地被用作惩罚或压制异见的工具,而非指导决策的框架。例如,“赢得信任”和“不同意但执行”等原则在某些情境下被负面使用。
- 新旧文化冲突:随着大量外部高管加入,亚马逊传统的书面叙述文化(如六页纸)面临挑战,PPT演示文稿在某些团队中出现。新高管对原有文化理解不足,导致执行不一致。
- 疫情与远程办公影响:疫情期间的快速招聘和远程工作模式削弱了文化传承,新员工难以通过日常互动潜移默化地学习亚马逊工作方式。
- 领导层变动:创始人贝索斯作为文化标杆的角色难以替代。长期倡导公司文化的资深高管(如杰夫·威尔克)相继离职,进一步影响了文化传承。
具体表现与案例
- 回归办公室政策争议:员工利用领导原则(如“招聘和发展最优秀人才”“赢得信任”)质疑公司的返回办公室指令,并通过六页纸备忘录表达不满,凸显原则解释的分歧。
- 原则扩展与执行松动:2021年新增的“努力成为地球最佳雇主”和“成功与规模带来广泛责任”两条原则被部分员工视为表面文章,且与原有原则难以融合,增加了执行复杂性。
- 实践调整:为适应公司规模扩大,部分团队开始简化流程(如先使用一页纸摘要),但核心决策方式仍依赖书面叙述。
应对措施与未来展望
- 领导层重视文化重申:CEO安迪·贾西通过视频课程亲自讲解领导原则,强调其需持续实践而非简单背诵。公司定期更新内部培训资源。
- 文化传承者的努力:部分资深管理者(如Prime全球负责人贾米尔·加尼)主动纠正原则误用,引导团队正确应用。
- 商业成功未受直接影响:亚马逊财务增长保持强劲,但文化稀释的长期风险值得关注。公司面临如何平衡规模化、外部人才引入与核心文化维护的挑战。
外部视角与启示
- 原则的灵活性与挑战:领导原则的广泛性使其可被多重解读,既可能成为稳定组织的文化基石,也可能因解释不一致而削弱凝聚力。
- 历史参照:学者指出,像丰田这样具有清晰文化原则的公司能够跨越领导层变更和市场变化保持成功,亚马逊需要持续投入以维护其“运营圣经”的活力。
亚马逊的领导原则和工作文化正经历调整,其能否在规模扩张和时代变迁中保持本质,将影响公司未来的创新与竞争力。
15. Construction of the AT&T Long Lines "Cheshire" underground site (coldwar-ct.com)
AT&T“柴郡”地下设施建设概述
基本信息
- 设施名称:AT&T长线“柴郡”地下站点
- 建成时间:1966年
- 位置:美国康涅狄格州柴郡
- 性质:两层地下加固建筑,全天24小时运营
核心功能
- 通信枢纽:
- 作为迈阿密至新英格兰“L4同轴电缆”的中继站和终端站
- 承载普通长途电话和关键军事通信线路
- 包含AUTOVON四线交换机,是全球军事通信网络的组成部分
- 连接网络:
- 通过地面微波与AT&T达勒姆站点连接
- 连接新伦敦(海军潜艇基地)、罗德岛格林希尔及跨大西洋至欧洲的线路
设施结构与防护设计
- 建筑加固:
- 混凝土结构大量使用钢筋加固
- 外部覆盖至少10英尺厚土层
- 厚实外壁和重型防爆门
- 冲击防护:
- 关键设备(照明、管道、机架)均采用弹簧悬挂
- 卫生设施使用弹簧和柔性接头
- 防爆门设计为互锁模式,确保一次仅能开启一扇
- 空气处理系统:
- 三个大型进气隧道连接外部
- 原装配重型防爆阀门
- 化学、生物及放射性(CBR)空气过滤系统
- 配备空调、加湿/除湿功能
- 应急支持系统:
- 三台750kVa燃气轮机发电机
- 四个45,000加仑燃料罐(总容量180,000加仑)
- 冗余淡水供应系统
- 大型电池组阵列
- 生存保障:
- 厨房及自助餐厅
- 库存食物、毛毯、床铺、剃须用品等生存物资
- 辐射测量设备及生存手册
- 防污染服装及鞋类(包括1968年产匡威运动鞋)
运营与人员
- 现场设有植物经理、监督员和技术人员
- 设有东北区域恢复中心,同样全天候运营
- 通过两次安全门禁并经过六段楼梯进入地下
地面设施
- 曾支持微波通信的塔楼(作为地下电缆的备份通信路径)
- 核爆炸探测器及伽马射线探测器
- 空气排气格栅
建造过程特点
- 大规模挖掘与混凝土浇筑
- 安装大型波纹金属通风管道
- 重型防爆阀门安装
- 设备安装前进行防护处理
该设施是冷战时期关键通信基础设施的典型代表,集通信中继、军事通信和核防护于一体,体现了当时对通信安全与生存性的极端重视。
16. The effect of CRTs on pixel art (www.datagubbe.se)
CRT对像素艺术的影响分析
核心论点:破除“CRT模糊”迷思
现代像素艺术常被认为缺乏复古感,普遍观点认为是现代平板显示器失去了CRT(阴极射线管)特有的“模糊感”,无法平滑低分辨率像素的边缘。然而,真实的CRT屏幕上单个像素依然清晰可见,CRT并非消除早期8位图形块状感的万能滤镜。许多展示CRT模糊效果的网络图片实为软件滤镜生成或照片失焦所致。
像素艺术的核心技术
在早期8位和16位系统(如C64、Amiga)中,受限于极低的分辨率和固定的调色板,艺术家开发了关键的像素级技术来提升画质:
- 抖动(Dithering):利用特定的像素图案(如点、线或噪点)模拟新的色彩值,增加视觉色彩深度。
- 抗锯齿(Anti-aliasing, AA):使用中间色调像素平滑锐利边缘,模拟更高的分辨率。 这些技术旨在对抗硬件限制,无论在哪种屏幕上都能改善图像,而在CRT的轻微模糊、色彩溢出和扫描线作用下视觉效果更佳。
信号质量与显示设备的演进
CRT的显示效果高度依赖于视频信号质量与设备素质:
- 低质量信号:射频(RF)和复合视频(Composite)信号会产生严重的噪点和模糊。特例是IBM PC的CGA色彩混合,它利用NTSC复合信号的伪影来生成额外颜色,这属于信号特性而非CRT本身的物理特性。
- 高质量信号:S-Video和RGB(如SCART接口)能提供极佳的清晰度,保留更多原始细节。 随着技术进步,后期的VGA和专业CRT显示器具有更密的点距,其显示的低分辨率像素艺术与现代平板屏幕一样清晰且呈块状。早期廉价消费级电视的物理伪影才是造成“复古模糊感”的真正原因。
像素比例与宽高比
现代数字屏幕具有固定的分辨率和纯粹的正方形像素。相反,CRT支持多种分辨率,且像素通常是非正方形的(例如VGA的320x200分辨率在显示时会被拉伸以适配4:3的屏幕比例)。在现代屏幕上以1:1的正方形像素直接渲染旧游戏,会导致图像比例失调(如画面被压扁)。
对现代像素艺术的评价
真正的像素艺术应遵循低分辨率、有限调色板以及像素级精度的创作原则。当前现代像素艺术存在两个主要问题:
- 技巧缺失:许多创作者刻意避免使用抖动和抗锯齿等传统技巧,导致作品呈现出过度生硬的块状感。
- 盲目怀旧:受玫瑰色怀旧情结影响,错误地夸大了CRT的“模糊”宽容度,忽视了旧时代艺术家在像素级细节和编程技巧上付出的努力。
17. Divers discover Roman mosaic (www.smithsonianmag.com)
罗马马赛克在那不勒斯附近水下被发现
潜水员在意大利那不勒斯附近的海湾中,发现了一幅令人惊叹的古罗马地板马赛克。根据Campi Flegrei考古公园的声明,这些彩色大理石板曾装饰着一座豪华别墅的入口门廊(“protiro”),其年代可追溯至公元三世纪。
历史背景:奢华之城 该别墅位于古罗马城市Baiae。这座城市在罗马帝国晚期,曾是凯撒和尼禄等统治者的度假胜地,因其贵族们沉迷于宴饮、狂欢和享乐而闻名,常被比作“罗马帝国的拉斯维加斯”。考古学家指出,Baiae这个名字本身就与放荡和丑闻相连。
工艺与地质变迁 发现的马赛克属于一种名为“opus sectile”(拉丁文意为“切割工艺”)的艺术形式。与使用大量小瓷砖的传统镶嵌画不同,这种工艺是将大理石直接切割成设计所需的形状来进行拼接。 别墅最初坐落在可以俯瞰海景的黄金位置。然而,该地区位于那不勒斯附近的巨大火山区——Phlegraean Fields。由于“bradyseism”(一种地壳升降的地质现象),地面下沉,最终使整座房屋沉入了Pozzuoli湾。如今,该区域是潜水者探索水下废墟的热门地点。
修复与挑战 目前,考古人员正在对这幅古老的马赛克进行修复。由于马赛克本身已非常脆弱,且被大量碎裂,修复过程复杂且耗时。潜水员已将部分碎片打捞上岸,并浸入淡水中以去除盐分,目标是未来能在陆地上重现部分图案设计。此外,他们还发现了别墅高墙的碎片,这些墙体倒塌后覆盖在马赛克上,这解释了其当前的破损状况。
当地市长称,这件工艺精湛、带有复杂几何图案的opus sectile马赛克地板,为人们提供了一个了解古罗马生活和艺术的迷人窗口。此次发现让人们得以沉浸在历史中,探索海面之下的隐藏奇观。
18. Creativity fundamentally comes from memorization (shwin.co)
创造力本质上源于记忆化
本文的核心论点是:创造力并非凭空产生,其根本源于对已有知识和模式的深度记忆化(内化)。灵感或创新的火花,是连接已内化概念的结果。
论点阐述
- 创作的前提是熟悉:DJ混音需熟悉两首歌,作家创造双关语需掌握词汇,作者认为,若不熟悉既有作品,甚至无法确定其新意。
- 记忆化实现自主性:将艺术领域的模式和规律内化于心,才能看到其中的联系与新颖之处。自主性催生创造力,而系统化的学习方法有助于更快达成自主性。
学习与记忆化的方法
作者提出一个快速学习方法:
- 记忆模式:记住一个概念中的不同分类或模式(即“基本构件”)。
- 广泛接触案例:通过大量实例,将现实案例与已学模式进行匹配。 作者认为,即便最初是不求甚解的死记硬背(如记住光速数值),也能为日后理解的浮现创造机会。真正的“理解”可以视为一种更深刻的、形成知识网络的记忆化,目的是便于提取和连接。
记忆化如何释放创造力
- 为创新打下基础:舞者掌握基本舞步后才能即兴,钢琴家熟悉音阶后才能创作。掌握基础规则(记忆化)可以减少处理基本事务的心智消耗,从而将认知资源释放出来,专注于更高层次的创新。
- 在理解规则后打破规则:例如在音乐或销售中,需要先知晓常规模式(期望),才能有意识地“打破期望”并产生共鸣。
- 通过系统实现自由:初学销售话术时可能生硬,但将其内化后,便能根据对话实际情况灵活、创造性地调整。
对创造力与跨领域学习的启示
- 创造力系统:如果创造力源于多个领域的自主性,那么通过系统化方法快速学习并精通多个领域,是提升创造力的有效途径。
- 跨领域创新:当今许多创新(如热门歌曲、初创公司)源于多个专业知识领域的交叉融合(例如信息安全与无线电技术结合)。在信息普及的时代,跨领域的“重复型专家”(即在多个领域都有深度知识的人)更可能产生新颖价值。
总结
作者结论:若要富有创造力,就应当深入学习众多事物,并掌握快速学习的方法。拥抱系统化学习,用以牢固掌握基础,从而解放心力,聚焦于真正的创新。
19. Troubleshooting: Terminal Lag (lock.cmpxchg8b.com)
背景与问题
作者在配置相似的 Windows 11 (WSL) 和 Fedora Linux 双机环境下工作,发现通过快捷键启动 xterm 终端时,Windows 下的启动耗时(约 1600ms)是 Fedora(约 300ms)的 5 倍以上,遂展开排查与优化。
排查与优化过程
- 消除窗口动画:发现 Windows 下 X410 服务器调用
SetLayeredWindowAttributes产生了耗时的窗口淡入动画。作者通过cdb调试器在xinit初始化时修改内存指令(Patch)禁用该函数,节省了约 300ms。 - 系统级性能分析:使用
hyperfine、strace等工具测试文件系统、X Server 和 FreeType,排除了主要瓶颈。随后通过ltrace和gdb发现 Windows 下启用的 toolbar(工具栏)功能导致XtRealizeWidget调用缓慢,禁用该特性后启动速度有所提升。 - 参数扫描调优:利用
hyperfine的参数扫描功能批量测试xterm的布尔配置,通过禁用部分非必要功能(如 Tektronix 仿真)额外节省约 200ms,但受限于 Windows 下的综合系统开销,仍无法完全消除延迟。
最终解决方案:进程缓存机制
为彻底解决启动缓慢问题,作者引入了“服务器模式”来缓存后台进程:
- 延迟映射库:编写了一个
LD_PRELOAD动态链接库,拦截顶层XMapWindow()调用并暂停进程执行,实现延迟映射(Deferred Mapping),直到接收到特定信号。 - 后台进程池:使用
xargs命令在后台预启动并挂起多个xterm进程(默认 3 个)。 - 信号唤醒:将启动快捷键替换为
pkill命令,向最老的后台xterm进程发送SIGUSR1信号,使其解除暂停并瞬间显示窗口。
结果
通过实施进程缓存机制,Windows 环境下 xterm 的启动时间降至约 366ms,仅比 Fedora 慢 60ms,成功解决了终端启动卡顿的问题。
20. Why the CrowdStrike bug hit banks hard (www.bitsaboutmoney.com)
# CrowdStrike故障重创银行业深度解析
## 事件概述
- 2024年7月19日,网络安全公司CrowdStrike发布的配置更新存在严重缺陷,导致其Falcon端点监控软件引发Windows系统大规模蓝屏死机。
- 该故障波及全球多个关键行业,其中银行业遭受打击尤为严重,美国多家大型银行全国范围内的柜员和银行家系统瘫痪,营业中断。
## 技术原因分析
- **内核级操作**:Falcon作为端点安全软件,运行在操作系统内核空间以直接监控其他进程。此次故障源于一个配置更新错误,导致已运行的Falcon软件在内核层面发生灾难性故障,使Windows系统在启动时即崩溃。
- **配置漏洞的广泛影响**:此类配置错误是导致系统中断的常见原因。但由于Falcon在企业(尤其是银行)的几乎所有工作电脑上广泛部署,且错误发生在关键的内核空间,其“爆炸半径”远超普通配置错误。
- **修复困难**:修复过程异常复杂,因为负责修复的技术人员本身的工作电脑也因蓝屏无法使用。
## 银行业受冲击特别严重的原因
1. **监管驱动的强制性部署**:
- 美国联邦金融机构审查委员会(FFIEC)的《信息科技审查手册》信息安全分册,对金融机构的IT风险管理提出了要求。
- 该手册要求机构实施“深度防御”以应对恶意软件,端点监控是其中的关键控制措施。
- 为满足监管合规要求(监管检查),银行倾向于采购成熟的商业解决方案。CrowdStrike通过积极面向政府及相关行业的销售策略,使其产品成为众多金融机构满足监管要求的标准选择,从而在金融系统中实现了极高渗透率。
2. **单点故障风险**:
- 安全工具本身可能引入安全漏洞,特别是在形成“单点故障”(monoculture)时。此次事件凸显了将关键安全组件广泛部署于内核层面,使其一旦出错即能瘫痪整个系统的巨大风险。
## 故障的实际影响
- **现金流动性危机**:依赖现金交易的小企业和个人受冲击最大。作者亲身经历,在芝加哥多家银行均无法提取现金用于支付承包商,因为柜台系统和ATM均告失灵。
- **应急替代方案失效**:部分银行允许使用ATM,但涉及大额现金提取的反欺诈验证系统同样因故障无法完成,形成功能瘫痪。
- **局部应急措施**:个别银行网点因成为系统正常运营的“信息孤岛”,现金被迅速提取一空。
- **金融基础设施的抽象层失效**:该故障暂时剥离了现代金融系统赖以生存的电子化、非人格化层,使支付回到依赖个人信用和社交网络的原始状态。作者提及历史上类似情况(如1970年爱尔兰银行罢工时酒吧和教堂临时充当兑换点)作为对比,但指出在当今社会,此类基于个人关系的应急网络已难以快速建立。
## 核心结论
CrowdStrike故障并非由恶意攻击引起,而是一次意外的配置错误。但此事件深刻揭示了现代金融系统对少数几个深度集成、运行在内核级别的关键第三方软件的依赖,形成了系统性脆弱性。监管要求推动了安全产品的标准化部署,却在无形中也放大了此类技术性单点故障的社会与经济影响范围。
21. FakeTraveler: Fake where your phone is located (Mock location for Android) (github.com)
FakeTraveler应用摘要
FakeTraveler是一款为Android设备设计的模拟定位工具,允许用户伪造手机的GPS位置信息,主要用于隐私保护或应用测试。
核心功能与工作原理
- 位置选择:用户可以通过两种方式设定虚假位置:
- 在应用内的地图上长按选择目标地点。
- 手动输入目标位置的经纬度坐标。
- 应用位置:设定完成后,点击“Apply”按钮即可生效。
- 高级设置:点击设置按钮(⚙️),可进行更精细的配置,例如让模拟位置在一段时间内持续生效。
使用注意事项
- 如果模拟的位置出现信号跳动或不稳定的情况,建议进入系统设置,在“位置服务”中关闭Wi-Fi扫描和蓝牙扫描功能。这些替代定位源可能会干扰GPS模拟数据。
使用前提与权限要求
- 该应用需要系统级别的模拟位置权限才能正常工作。用户必须首先在设备中开启“开发者选项”,然后在“设置 -> 系统 -> 开发者选项 -> 选择模拟位置应用”中,指定FakeTraveler作为模拟位置应用。
版本信息与许可
- 具体的版本更新日志可查看应用内的
fastlane/metadata/android/en-US/changelogs/目录。 - 该程序基于GNU通用公共许可证(GPLv3或更高版本) 发布,是一款自由软件。
- 应用图标由社区成员
@ArtistDev44创作。
22. Building static binaries with Go on Linux (eli.thegreenplace.net)
23. Rustgo: Calling Rust from Go with near-zero overhead (2017) (words.filippo.io)
本文介绍了一项技术实验,旨在以近乎零开销的方式从Go语言调用Rust代码,其性能目标是替代需要手动编写的汇编代码,用于实现高性能的加密函数。
核心问题与动机 Go标准库中许多高性能加密函数依赖精心优化的汇编代码,但编写和审查汇编代码难度大且风险高。因此,作者探索能否使用更易读写的高级语言Rust来编写这些“热点”函数,并使其调用开销与汇编相当,从而避免使用Go的标准FFI(cgo),因为cgo的调用开销过高,不适用于小型热点函数。
技术方案:绕过cgo,直接链接 核心思想是将Rust代码约束得像汇编一样(例如,仅使用栈、无堆分配),然后通过Go的底层构建工具链和汇编进行直接链接和调用,绕过cgo带来的巨大开销。
- 链接过程:利用Go的底层工具(
go tool compile,go tool asm,go tool link)手动构建。将Rust代码编译为静态库(.a),然后通过系统链接器(如clang)将其与Go程序的目标文件链接在一起。 - 函数调用:通过Go的编译器指令
//go:cgo_import_static导入Rust函数符号,并使用//go:linkname创建别名。调用时,并非直接调用,而是在Go汇编中编写一个“跳板”函数。该跳板函数负责:- 根据Rust使用的C调用约定,将参数放入指定寄存器(如
RDI,RSI)。 - 调整栈指针(
SP),以复用Go为函数预留的栈空间,并确保栈按16字节对齐(C调用约定要求)。 - 调用Rust函数。
- 恢复栈指针,并将返回值(通常在
RAX寄存器中)移至Go约定的返回位置。
- 根据Rust使用的C调用约定,将参数放入指定寄存器(如
性能测试 基准测试显示,此方案的调用开销非常低:
- 相比直接内联的函数调用,
rustgo慢约11%(在macOS上)或2%(在Linux上)。 - 相比使用cgo调用同一Rust函数,
rustgo快近15倍。 一个使用curve25519-dalek库进行椭圆曲线标量乘法的真实案例表明,rustgo的性能接近纯Rust基准测试结果,比纯Go实现快约3倍。
挑战与局限性
- 实现复杂:需要深入理解Go和C的调用约定,并手写汇编跳板。
- 平台差异:在macOS和Linux上表现不一,例如macOS需要通过函数指针间接调用以绕过
cgo_thread_start;在Linux上需要正确传递链接器标志(如--gc-sections)来剥离未使用的符号。 - Rust的
no_std要求:为实现真正“类汇编”的约束,Rust代码必须使用#![no_std]属性,这带来了额外的复杂性(如需要定义语言项、链接compiler_builtins和rlibc)。 - 安全性与稳定性:实验中存在硬编码的栈大小、未保存Go协程上下文等问题,不适合生产环境。Rust代码中的
panic可能导致未定义行为。
总结与现状
这是一个于2017年进行的有趣技术探索,证明了在特定约束下,从Go调用Rust可以达到接近汇编的性能。然而,作者明确指出这并非生产指南。如今,Go的cgo性能已有所提升,并出现了purego和wazero等无cgo的替代方案。文中采用的//go:cgo_import_static等技巧在今天的Go版本中可能已不再适用。其主要价值在于展示了通过精细控制链接和调用约定来优化跨语言调用的可能性。
24. Call of Duty: Warzone Caldera Data Set for Academic Use (blog.activision.com)
《使命召唤:战区》Caldera 学术数据集概要
核心公告
动视宣布首次以开源形式发布《使命召唤®:战区™》中的 Caldera 地图数据集,仅供非商业用途。该数据集采用 OpenUSD 格式,旨在为人工智能学习、游戏开发演进及学术研究提供资源。
数据集内容与规模
- 地图几何数据:包含 Caldera 地图近乎完整的几何结构,大小约 4 GB。其复杂度体现在:
- 超过 500 万个网格
- 约 2800 万个基本体
- 超过 10 亿个点实例
- 玩家行为数据:包含随机选取的、匿名化的玩家移动时间采样与路径数据,用于展示玩家在地图上的行为模式。
发布目的与价值
- 推动创新与学习:为学术和研究社区提供经过生产环境验证的高质量资源,用于 AI 训练、算法开发和内容生成技术演进。
- 教育资源:为学生、教育工作者和专业人士提供宝贵的培训、演示和实验素材。
- 支持 AI 发展:为 AI 模型训练提供一个丰富、复杂的虚拟环境,有助于提升对复杂几何与交互的理解。
- 促进工具演进:鼓励开发能处理复杂几何与环境的、更强大的创作工具。
- 填补数据空白:为计算机图形学研究提供罕见的大规模、生产级复杂数据集,补充现有经典数据集(如斯坦福兔子、Moana 岛)的不足。
选择 Caldera 的原因
Caldera 是《战区》的标志性大型地图,其规模、几何复杂度和层次化结构能很好地代表动视当前的设计哲学。其分层结构允许研究者选取地图子集进行分析,避免过拟合问题。
预期影响与愿景
- 对学术界:提供真实世界规模的测试平台,加速新解决方案的开发并验证其可扩展性。鼓励对物体关系、场景创建与编辑、玩家互动模式等领域的探索。
- 对《使命召唤》社区:研究成果可能带来更高效的数据表示、更丰富的游戏体验以及激发内容创作团队的新灵感。
- 对游戏行业:鼓励更多的开源贡献,促进创造力与协作。
总结
该数据集代表了游戏行业一次重要的开源实践,将一个经过大规模战斗检验的生产环境地图向学术界开放,旨在通过共享基础资源,推动人工智能、图形学研究及游戏技术整体向前发展。
25. Australia starts peanut allergy treatment for babies (www.bbc.com)
26. Launch HN: Martin (YC S23) – Using LLMs to Make a Better Siri
Martin (YC S23) 产品摘要
Martin 是一款基于大语言模型(LLM)构建的增强型语音助手,旨在成为比 Siri 更可靠、集成更深的个人生产力工具。它通过 iOS 应用程序(支持语音交互)以及短信、WhatsApp 和电子邮件(支持文字交互)提供服务。
核心创新与功能:
- 深度应用集成:与用户日常使用的生产力应用深度整合,目前支持日历管理、设置提醒、信息查询、发送每日简报,并能代替用户以其独立电话号码与联系人进行完整的文字对话(例如协调聚餐安排)。未来计划集成 Google Docs、Slack 和电话功能。
- 基于对话的个性化记忆:通过分析用户历史对话,推断用户当前的忙碌事项、担忧或期待,并在“晨间同步”或“晚间复盘”等场景中主动建议待办事项或讨论话题。用户可通过这些每日5-10分钟的对话来规划和回顾。
技术实现与优化:
- 语音交互:提供免提和按键说话两种模式,旨在降低延迟(大多数命令响应在几秒内)并优化语音活动检测,以减少误打断。按键模式专为用户需要长时段描述的场景设计。
- 集成开发:追求功能的深度与可靠性,例如在Google日历集成中完整支持添加会议链接、邀请联系人和管理次要日历,并能结合自然语言指令(如“为活动设置提醒”)。
- LLM记忆:这是目前的主要技术挑战。团队使用多个LLM及思维链推理步骤,从对话中提取信息并让Martin定期“反思”以构建记忆,但仍在持续改进中。
商业模式与试用: 提供7天免费试用,试用结束后向早期用户(主要为生产力专家和AI产品订阅者)收取每月30美元的订阅费用。
27. Quint (quint-lang.org)
Quint:生成信心的可执行规范
AI生成代码已成为趋势,但信任度不足:90%的开发者使用AI写代码,仅24%高度信任。传统上通过编写规范、测试和审查来建立信心的过程逐渐消失,导致软件团队速度加快但缺乏可靠证据。Quint旨在解决这一问题,通过可执行规范将系统意图转化为可检查、可验证的证据,无需额外开销。
Quint的工作原理是:一个规范连接系统意图、代码、测试和运行时,构建单一的信任基础设施。从设计到生产,Quint Studio使系统行为成为软件过程的核心支柱,确保一致性。
核心组件:
- Quint Studio:捕获意图,以可执行的高级系统描述形式验证属性。在设计阶段验证行为,将其带入测试,并在生产中识别不匹配。
- Quint语言:开源语言和工具,用于编写可执行规范、建模和验证行为,支持集成到自定义工具中。
应用场景:适用于正确性至关重要的系统,包括:
- AI基础设施:验证难以测试的新硬件或平台设计。
- 区块链/金融科技:确保存储价值的协议,通过验证交易转变。
- 云基础设施:检查复杂分布式系统中的最坏情况交织,解决测试不确定性。
可靠性:Quint基于多年研究和实际使用,在生产环境中得到验证。团队自身也使用Quint审计关键系统的行为正确性,从设计到实施。
Quint提供了一个生态系统,帮助团队在快速开发中维持信心,确保系统行为符合预期。
28. JavaScript garbage collection and closures (jakearchibald.com)
JavaScript 垃圾回收与闭包内存泄漏机制
核心问题
JavaScript 引擎在处理闭包和作用域的垃圾回收(GC)时,存在与开发者预期不符的行为,容易导致大对象(如 ArrayBuffer)发生意外内存泄漏。
泄漏原理
JS 引擎会将变量与其创建时的作用域绑定。当一个作用域内存在多个内部函数(闭包)时:
- 如果其中一个闭包引用了大对象,而另一个闭包(如返回的清理函数)未引用,引擎仍会将大对象保留在该作用域中。
- 即使引用大对象的闭包已执行完毕或不再可调用,只要同一作用域内还有任何其他闭包存活(如返回的清理函数仍被外部引用),整个作用域就不会被销毁,大对象也随之泄漏。
- 只有当该作用域内的所有闭包都不可调用或被解除引用(如设为
null或undefined)时,作用域及大对象才会被 GC。
触发场景
此问题不局限于特定 API,以下场景均会触发:
- 定时器与清理函数:内部
setTimeout引用大对象,同时函数返回一个不引用大对象的clearTimeout包装函数。 - 全局函数挂载:将多个内部函数挂载到全局,只要其中一个曾引用大对象,在所有挂载函数被清除前,大对象持续驻留内存。
- 立即执行函数(IIFE):即使引用大对象的函数是 IIFE(执行后即销毁),只要同作用域内还有其他存活的闭包,仍会触发泄漏。
浏览器现状
这是一个跨浏览器的普遍问题(涉及 Chromium、Firefox、WebKit)。由于修复该作用域管理逻辑会带来显著的性能损耗,浏览器厂商目前不太可能修复此问题。
关于 eval 的误区澄清
此泄漏现象并非由 eval() 引起:
- 直接
eval:会导致浏览器无法静态分析作用域,触发降级优化(deopt),强制保留父作用域的所有变量。 - 间接
eval:通过别名调用(如const customEval = eval)会在全局作用域执行,不会触发 deopt。 - 结论:本文探讨的泄漏是引擎对闭包作用域生命周期管理的固有机制,与
eval的静态分析限制无关。
29. How the electricity markets respond to a nuclear trip (blog.gridstatus.io)
事件概述
2024年7月24日,德克萨斯州STP核电站的一个机组意外脱网,导致ERCOT电网频率下降。ERCOT迅速采取措施以维持电网稳定,展示了电网应对大型发电机突然离线时的响应机制。
电网稳定措施
- 频率恢复:脱网后电网频率立即下降,ERCOT部署了紧急备用服务(ECRS)等辅助服务。电池储能系统参与响应,帮助将频率恢复至正常水平。
- 电价反应:电价在事件后重新平衡,STP核电站处出现显著负电价,指示了停电来源。负电价延迟是由于当时负荷较低,且系统发电正在增加。电价信号随后重新配置了西德克萨斯地区的发电输出,部分机组增加出力,部分机组削减出力。
- 发电重新平衡:为补偿脱网损失,发电输出根据传输系统限制进行了调整,以适应新场景。
事件确认与原因
- 7月25日,核管理委员会(NRC)确认STP核电站单元1因变电站火灾而脱网,单元2也降至90%输出。这证实了脱网事件源于STP,并凸显了所有发电技术都可能面临停电风险。
关键启示
- 电网可靠性依赖于细致的规划和维护,单一技术或节点不应被视为完全可靠。事件表明,电池储能等分布式资源在快速响应中发挥重要作用。
数据与工具
- 分析基于Grid Status网站的数据和工具,该平台提供实时事件跟踪和电网状态监测,支持进一步研究和应用。
30. Federal regulator says Amazon can be held responsible for faulty goods (www.cnbc.com)
美国监管机构裁定亚马逊应对第三方卖家销售的缺陷产品负责
核心裁定
美国消费品安全委员会(CPSC)一致认定,亚马逊在其在线市场上销售的商品属于“分销商”,因此必须对缺陷产品承担法律责任。这推翻了亚马逊长期坚持的“仅为买卖双方中介”的立场。亚马逊被要求制定计划通知购买者和公众产品危害,并为受影响产品提供退款或更换。
背景与争议
亚马逊的第三方卖家市场占其电商销售额的约60%。该市场在带来收入的同时,也存在假冒、不安全甚至过期商品的问题。多年来,亚马逊在多起诉讼中辩称,其仅作为买卖双方的“管道”,不参与第三方卖家的采购或分销,因此不承担产品责任。这一辩护在2018年一起涉及爆炸平衡车的案件中曾成功。
关键诉讼与产品问题
2021年,CPSC起诉亚马逊,要求其召回数十万件被视为危险的产品,包括:
- 故障的一氧化碳探测器
- 无防触电保护的吹风机
- 存在烧伤风险的儿童睡衣 (共计418,818件商品)
亚马逊的应对与论点
- 亚马逊曾将自身定位为“第三方物流提供商”,仅负责接收和运输产品。
- 在诉讼期间,亚马逊已下架CPSC标记的所有产品,并向购买者发出安全警告、提供账户信用。
- 但CPSC认为其行动“不充分”,应提供退款以激励消费者销毁或退回产品。
裁决依据
行政法法官驳回了亚马逊的物流商论点,指出其“亚马逊物流(FBA)”服务使公司对平台销售的产品拥有“深远的控制权”。法官裁定,亚马逊不能因部分服务涉及物流而规避《消费品安全法》规定的义务,必须保护消费者免受伤害。
亚马逊的回应
亚马逊对裁定表示“失望”,计划提起上诉。公司强调支持其平台上所有产品的安全性,并在产品召回时会主动下架并通知消费者。亚马逊在2021年更新了退货政策,允许消费者就第三方卖家商品的缺陷问题直接联系亚马逊。
意义
此裁决是里程碑式决定,可能迫使亚马逊等电商巨头对其平台销售的第三方产品承担更多安全责任,影响其运营模式和法律责任边界。
31. Taking command of the Context Menu in macOS (blog.gingerbeardman.com)
本文介绍了如何在 macOS 右键菜单中集成 Shell 脚本(如使用 ffmpeg 处理视频)以快速执行文件操作,并详细对比了系统自带的 Automator 与第三方应用 ContextMenu 两种实现方案。
Shell 脚本处理文件
通过命令行工具可实现高效的文件批处理:
- 单文件处理:使用单行命令,通过
$@接收文件参数,并利用变量替换自动更改输出文件的扩展名。 - 多文件处理:使用
for循环遍历传入的参数列表逐个执行命令。 - 多文件并行处理:在循环内的命令末尾添加
&符号,使任务在后台并行执行以提升处理速度。
Automator 方案
利用 macOS 内置的 Automator 创建“快速操作”(Quick Action),并添加“运行 Shell 脚本”动作。
- 优点:系统免费自带,设置直观;工作流保存在
~/Library/Services/目录下,支持跨设备迁移。 - 局限性:菜单项被强制折叠在“快速操作”子菜单中;难以精确限制或组合特定的文件类型(例如无法轻松设定为同时支持特定扩展名的音视频文件)。
ContextMenu 方案
第三方应用(含免费 Lite 版),专门针对 Automator 的痛点进行了优化。
- 核心功能与优势:
- 允许取消子菜单,直接在右键菜单显示。
- 支持细粒度控制触发的文件或目录类型(可精确到文件扩展名或 UTI 类型)。
- 支持在界面显示命令执行的输出结果。
- 支持在执行潜在危险操作前弹出确认提示。
- 存储机制:操作配置文件存储在应用专属组文件夹或用户自定义路径中,均支持迁移。
应用实例与共享资源
- GIF 压缩与缩放:使用
gifsicle命令行工具,通过特定参数优化并压缩 GIF 文件,或结合--scale参数在压缩的同时按比例放大图像。 - 开源脚本仓库:作者在 GitHub(
gingerbeardman/contextmenu-actions)分享了大量实用的操作集合。每个.cmaction文件内包含main.sh脚本,涵盖音视频/图像格式转换、GIF 优化、生成哈希值、修改文件属性等丰富功能,其中的 Shell 脚本也可直接提取用于 Automator。
32. Superconducting Microprocessors? Turns Out They're Ultra-Efficient (2021) (spectrum.ieee.org)
33. Ngtop – Request analytics from the Nginx access logs (github.com)
ngtop 是一个命令行工具,用于从 Nginx 的 access.log 文件中查询和分析请求数据。其核心功能是快速统计特定条件下的请求次数,并以表格形式展示结果,支持按 URL、User-Agent、IP 地址、Referrer 等维度进行分组和过滤。
主要功能与用法:
- 基本查询:运行
ngtop可查看默认时间范围(如最近一小时)的请求统计。 - 时间范围:使用
--since(或-s) 和--until(或-u) 参数指定时间范围,支持秒(s)、分钟(m)、小时(h)、天(d)、周(w)、月(M)等单位。 - 分组维度:在命令中指定如
url、user_agent(或ua)、referer、status等字段,即可按该字段分组统计请求量。 - 过滤条件:使用
--where(或-w) 参数添加过滤条件,支持精确匹配(=)、模式匹配(%)、排除(!=)以及多条件组合(AND/OR)。 - 结果限制:使用
--limit(或-l) 参数限制返回的结果条数(默认为 Top 5)。
工作原理:
- 数据解析与存储:运行时,ngtop 查找 Nginx 日志文件(默认路径为
/var/log/nginx/access.log*,可通过环境变量NGTOP_LOGS_PATH自定义),解析日志条目,并将数据存储到一个本地的 SQLite 数据库文件中(默认为./ngtop.db,可通过NGTOP_DB自定义)。 - 增量处理:后续运行仅解析和存储自上次运行之后新增的日志条目,提高了重复查询的效率。
- 查询执行:用户提供的命令行参数(时间、分组、过滤)会被转换为 SQL 查询语句,在 SQLite 数据库上执行,最终输出统计结果。
安装与配置:
- 安装:可直接下载对应平台的预编译二进制文件,或通过 Go 语言包管理器安装(
go install github.com/facundoolano/ngtop@latest)。 - 配置:通过环境变量进行配置,主要包括
NGTOP_LOGS_PATH(日志路径)、NGTOP_LOG_FORMAT(日志格式)、NGTOP_DB(数据库路径)和NGTOP_DEBUG(调试模式)。日志格式默认假设为 Nginx 的 combined 格式。
典型用例示例:
ngtop url:显示最近一小时内请求量最高的 Top 5 URL。ngtop -s 1d -w status=404:统计最近一天内所有状态码为 404 的请求总数。ngtop ua -w url=/blog/%:查看匹配/blog/路径的请求中,各 User-Agent 的访问量排名。ngtop referer -w url=/example -w ip=1.2.3.4:查看来自特定 IP、访问/example的请求,其来源页面(Referrer)的分布情况。
总之,ngtop 提供了一个轻量、灵活的方式,让用户无需编写复杂脚本即可直接从 Nginx 日志中获取有价值的流量分析洞察。
34. WordGrinder: A simple word processor that runs on the console (github.com)
WordGrinder:控制台文字处理器概述
软件简介
WordGrinder 是一款设计简洁、支持 Unicode 的控制台文字处理器(版本 0.9,发布于 2025-01-22)。其核心设计理念是“不干扰用户”,专注于提供基础但高效的写作功能。主要特性包括:
- 基本的段落与字符样式
- 简单的屏幕标记和菜单界面(无需记忆复杂快捷键)
- 支持 HTML 格式的导入与导出
- 无需图形界面,可在纯终端中运行(同时提供适用于 Unix、Windows 和 macOS 的 GUI 版本)
安装要求
运行 WordGrinder 需预先安装以下组件:
- 构建工具:
ninja - 终端库:
ncursesw(宽字符版本) - 图形库(可选,用于 OpenGL 前端):OpenGL/GLFW 开发包
- 压缩库:
zlib - 终端环境:支持 UTF-8 的终端模拟器(如 gnome-terminal、konsole、xterm、rxvt-unicode),并需配备 Unicode 字体。
不同操作系统的安装命令示例:
- Debian/Ubuntu:
libncursesw5-dev zlib1g-dev libglfw3-dev - Fedora:
zlib-devel libglfw-devel ncurses ncurses-devel - macOS(Homebrew):
pkg-config glfw - Haiku:使用
pkgman安装对应依赖
构建与安装
- 运行
make自动检测配置并编译。 - 使用
sudo make install安装到系统目录(如需自定义路径,可通过PREFIX环境变量指定)。 - Windows 编译说明:需在 MSYS2 环境下使用 Mingw64 工具链及 NSIS 执行
make。
基本使用
- 启动命令:
wordgrinder(新建空白文档)或wordgrinder 文件名.wg(打开已有文档)。 - 详细手册见文件
README.wg,另有man页面说明命令行接口。 - 项目用户邮件列表:https://lists.sourceforge.net/lists/listinfo/wordgrinder-users
许可证信息
- WordGrinder 本身:采用 MIT 许可证(© 2007-2025 David Given)。
- 内嵌第三方库(均位于
third_party目录):- Luau(MIT 许可证)
- MiniZip(BSD 许可证)
- SCOWL 词表(特定许可证)
- xpattern 模块(MIT 许可证)
- Fantasque Sans Mono 字体(开源字体许可)
- libstb 工具库(公共领域/MIT)
- clip 剪贴板库(MIT 许可证)
- cmark Markdown 库(BSD/MIT)
- fmt 格式化库(MIT 许可证)
版本历史摘要
- 0.9(2025):替换 X11/GDI 前端为 OpenGL,新增 macOS GUI 支持;改进色彩方案与标尺布局;加入鼠标支持、系统剪贴板集成、Emacs orgmode 导出;将解释器从 Lua 迁移至 Luau 并进行代码重构。
- 0.8(2020):新增段落编号样式、模板支持、Markdown 导入、Windows 控制台版本;修复多项导入导出及拼写检查问题。
- 0.7(2017):采用新的纯文本可差异比较文件格式,支持 Lua 5.3,改进本地化检测,新增密集段落模式。
- 0.6(2015):新增 X11 前端、拼写检查、撤销重做、Markdown 导出;改进选择操作和引号支持。
- 早期版本(0.1-0.5):逐步增加 LaTeX/troff 导出、目录生成、自动保存、Windows 移植等基础功能,并持续修复错误。
作者信息
作者 David Given,联系方式:dg@cowlark.com,网站:http://www.cowlark.com。
35. Using the term 'AI' in product descriptions reduces purchase intentions (news.wsu.edu)
研究概述
华盛顿州立大学主导的一项研究表明,企业在产品描述中使用“人工智能(AI)”一词可能会无意中降低消费者的购买意愿。该研究发表于《酒店营销与管理杂志》,旨在评估AI信息披露与消费者行为之间的关系。
研究方法
研究人员对1000多名美国成年人进行了实验性调查,涵盖了8个不同的产品和服务类别。在对照实验中(如智能电视产品),仅部分描述中加入了“人工智能”一词,结果显示看到该词汇的消费者购买意愿明显更低。
核心发现
- 情感信任受损:研究指出,提及AI会降低消费者的“情感信任”,进而直接减少购买意愿。情感信任在消费者对AI驱动产品的认知中起着关键作用。
- 高风险产品负面影响加剧:对于昂贵电子产品、医疗设备或金融服务等“高风险”产品,AI披露带来的负面反应更为强烈。由于此类产品失败可能带来金钱损失或人身安全隐患,提及AI会使消费者更加警惕并降低购买概率。
营销建议
基于研究结果,研究团队为企业和营销人员提出以下策略建议:
- 避免滥用AI标签:强调AI并非总是有益,应尽量避免在产品描述中使用“AI”等流行词汇(buzzwords)。
- 聚焦功能与益处:营销重点应放在描述产品的具体功能和实际带来的好处上,而非技术标签。
- 提升情感信任:若需展示AI技术,应谨慎呈现并制定专门策略以增强消费者的情感信任,特别是在推广高风险产品时需格外慎重。