2024-11-22

37 篇热帖

1. Show HN: A Marble Madness-inspired WebGL game we built for Netlify (5-million-devs.netlify.com)

这是一个为庆祝 Netlify 达到500万开发者 而构建的互动3D网页游戏页面。

  • 核心目的:作为Netlify的营销活动,通过一个受《Marble Madness》启发的WebGL游戏,邀请用户参与庆祝,回顾Netlify的发展历程并让用户感受到自己在其中的角色。
  • 主要功能与体验
    • 用户将在一个3D环境中进行游戏,沿着设定的旅程“旅行”。
    • 该旅程旨在展示Netlify如何从过去发展到现在的500万开发者里程碑。
    • 强调用户个人在Netlify故事中的参与(“where you played a role”)。
  • 技术实现
    • 前端框架:使用React构建单页应用(通过<div id="root"><script type="module">指向的JavaScript文件推断)。
    • 3D渲染:利用WebGL技术实现3D游戏图形。
    • 字体:引入了Google Fonts的Mulish字体家族。
    • 分析:集成了Google Analytics(gtag.js)进行数据跟踪。
    • 部署:页面本身托管在Netlify的子域名 5-million-devs.netlify.com
  • 元数据优化:页面包含了完整的Open Graph和Twitter Card元数据,优化了在社交媒体上的分享展示,描述和图片一致指向庆祝500万开发者这一主题。
  • 访问方式:页面提示需要启用JavaScript才能运行。
2. Salmon return to lay eggs in historic habitat after dam removal project (www.opb.org)
4. Show HN: Llama 3.2 Interpretability with Sparse Autoencoders (github.com)

Llama 3.2 可解释性项目:使用稀疏自编码器提取特征

项目概述

本项目旨在复现 Anthropic、OpenAI 和 Google DeepMind 等机构近期利用稀疏自编码器(SAE)进行大语言模型(LLM)机制可解释性的研究。其核心思想是,现代 LLM 通过“叠加”在同一组神经元中编码多个概念。SAE 通过将模型内部激活值投影到一个更大但稀疏的潜在空间,试图将这些纠缠的叠加表示分解为独立、清晰可解释的“特征”,从而使神经元变得“单义”,以理解模型行为、检测幻觉等。

该项目针对 Llama 3.2-3B 模型,提供了一个从捕获激活数据、训练 SAE、分析学习到的特征到实验验证的完整流程。当前版本(v0.2)已包含所有代码、数据和模型。

核心功能与实现

  1. 端到端流程与实现

    • 使用纯 PyTorch 实现,依赖少。
    • 包含自定义的 Llama 3.1/3.2 推理实现(支持流式文本/聊天补全),并移除了对 Fairscale 库的依赖。
    • 能够捕获模型特定层的残差激活值,并支持在推理时注入训练好的 SAE 模型。
  2. 数据捕获与预处理

    • 使用自定义的、按句子分割的 OpenWebText 数据集,捕获了 2500 万个句子(平均 27.3 个 token)在 Llama 3.2-3B 第 23 层的激活值,原始数据达 4TB。
    • 预处理阶段计算了所有激活值的均值,并对数据进行了分批,以支持高效训练。
  3. SAE 训练

    • 架构:采用与 OpenAI 类似的 TopK SAE,潜在特征维度为 65,536,激活数 k=64。包含辅助损失机制来防止和复活“死亡”的潜在特征(即长期未激活的特征)。
    • 训练:在 8 张 RTX 4090 GPU 上进行分布式训练,使用预处理的数据进行了 10 个 epoch 的训练,处理了约 70 亿次激活。训练过程稳定,损失呈对数衰减,最终总损失约为 0.144。辅助损失机制非常有效地复活了训练初期约 40% 的“死亡”潜在特征。
  4. 可解释性分析

    • 特征提取:为每个学习到的潜在特征,识别并提取使其激活最强的 前 50 个句子(采用均值和末尾 token 激活聚合)。
    • 语义分析:利用 Claude 3.5 Sonnet 等前沿大模型,通过结构化的思维链提示,自动分析这 50 个句子的语义共同点,为每个潜在特征生成一个语义描述和置信度分数。该过程成本高效(约 66.74 美元)。例如,潜在特征 #896 被识别为代表“使用正式机构术语提及联合国机构、人员、行动或官方文件”。
  5. 验证与测试

    • 提供文本补全和聊天补全测试脚本,以及一个 Gradio 交互界面。
    • 可以分析模型在有无 SAE 情况下的行为差异。
    • 支持 特征引导:通过调整潜在特征的激活值(通过动态 h_bias),尝试引导模型生成与特定特征语义相关的内容。当前版本的引导能力有限,但验证了流程的可行性。

项目结构与资源

项目分为四个主要模块:数据捕获SAE 训练可解释性分析验证测试。作者已发布了关键资源,包括:自定义的 OpenWebText 句子数据集、捕获的 Llama 3.2-3B 激活数据(3.2 TB)、SAE 训练日志(W&B)以及最终训练好的 SAE 模型。

未来工作展望

作者提出了多项潜在改进方向,包括:

  • 增大潜在特征维度并减小 k 值以提高特征多样性和可解释性。
  • 实施更全面的激活跟踪和潜在特征交互分析。
  • 开发更精细的可解释性分析方法。
  • 将研究扩展到 Llama 3.1-8B 等其他模型。
  • 实验不同的激活捕获点(如更早的层或注意力/MLP输出)。
  • 进一步优化辅助损失机制和 SAE 架构。

引用

作者提供了项目的引用信息。

5. The AI reporter that took my old job just got fired (www.wired.com)

总结:被解雇的AI新闻主播

事件概述

夏威夷考艾岛的地方报纸《花园岛报》近期终止了由以色列公司Caledo开发的AI新闻主播James和Rose的节目。这对虚拟主播仅运行了约两个月。该项目原计划扩展至全美数百家地方报纸,但因公众强烈反对而提前结束。

AI主播的主要问题

  1. 表达方式不当:以单调、缺乏情感的语气报道各类新闻(从南瓜赠送活动到劳工惨案纪念活动),引起观众反感。
  2. 语言能力缺陷
    • 频繁读错夏威夷地名
    • 出现基础词汇错误(如将“步枪”误读为“裁判”)
  3. 技术瑕疵
    • 初期James无法眨眼、手部持续颤抖
    • 后期技术虽有小幅改进,但未根本解决问题

公众反应

  • 视频评论几乎全为负面,被形容为“恐怖”
  • 夏威夷非营利新闻机构以该项目作为反面案例进行筹款宣传
  • 在选举季引发跨党派的一致批评

商业运营问题

  1. 广告计划失败
    • 节目宣称由Longs Drugs赞助,但该公司表示未被告知商标使用于AI视频
    • 整个项目期间未售出任何嵌入式广告
  2. 资源分配争议
    • 报纸母公司OPI拒绝透露项目具体投入
    • 原作者指出,该项目可能挤占了本可用于雇佣人类记者、摄影师和编辑的资金

背景信息

  • 《花园岛报》为资源严重不足的地方媒体(作者任职期间全岛仅两名记者)
  • 该报纸今年被拥有多家地方媒体的Carpenter Media Group收购
  • Caledo公司仍将该项目定义为“成功”,并计划继续向其他报纸推广

结局

节目于11月4日播出最后一期后终止。作者(前员工)对此表示欢迎,但也对AI主播的未来表达了谨慎的祝愿。

6. A “meta-optics” camera that is the size of a grain of salt (cacm.acm.org)

盐粒大小的元光学相机:技术概述

根据文章标题推测,本文可能介绍一种基于 元光学(Meta-optics) 技术的新型相机,其尺寸达到类似一粒盐的微型尺度。以下是基于标题及常见技术背景的要点总结:

核心特点

  • 超微型化:相机尺寸极小,接近盐粒大小(通常约0.3毫米),有望突破传统光学系统的体积限制。
  • 元光学技术:利用超表面(Metasurface)等人工微纳结构操控光波,替代传统透镜,实现轻薄、集成化光学功能。
  • 潜在应用领域:适用于医疗内窥镜、隐蔽监控、微型机器人视觉、可穿戴设备及物联网传感等场景。

技术优势

  1. 高集成度:将透镜、光圈等光学元件集成于单一平面结构。
  2. 轻量化与低功耗:减少材料使用与能源消耗,适合嵌入式系统。
  3. 成像质量优化:通过超表面设计可修正像差,实现广角或特定波段成像。
  4. 批量制造潜力:基于半导体工艺,有望实现低成本大规模生产。

技术挑战

  • 制造精度要求高:纳米级结构需要先进光刻技术。
  • 成像性能限制:受尺寸限制,分辨率与光通量可能面临瓶颈。
  • 数据处理需求:常需结合算法校正,以补偿光学设计简化带来的误差。

行业意义

此类相机代表光学领域与半导体技术的融合趋势,可能推动移动设备、医疗诊断、工业检测等领域的革新,为未来“无处不在的视觉感知”提供硬件基础。

注:以上分析基于标题推测,实际技术细节需以完整文章内容为准。

7. Poisoning the Day (ashore.io)

文章标题:Poisoning the Day

本文内容目前无法访问。页面显示“支付要求”(Payment required),表明阅读完整内容可能需要付费。 同时,页面还显示“部署已禁用”(DEPLOYMENT_DISABLED)以及一个具体的部署标识符。这通常意味着文章服务或相关功能处于不可用状态。

9. Show HN: Rebels in the sky – Terminal game about space pirates (github.com)

《太空叛军》终端游戏简介

游戏背景与设定

游戏设定于2101年,公司已掌控世界。玩家唯一的自由途径是加入海盗船员,在银河系中掠夺。生存的核心是通过篮球比赛实现。玩家需要创建自己的船员,在银河系中游荡,寻找值得挑战的篮球对手。

快速体验

可通过SSH连接至 frittura.org 并选择 "rebels" 选项直接试玩游戏。注意:存档文件在闲置2天后会被删除。

安装与构建

构建依赖:

  • Linux系统:需安装 libasound2-devcmake
  • macOS系统:需安装 cmake(可通过brew)。
  • Windows系统:需安装 cmake

构建步骤:

  1. 需要安装Rust工具链。
  2. 克隆代码仓库后,使用命令 cargo build --release 构建。

其他安装方式:

运行游戏

游戏作为终端应用程序运行。直接在终端中执行可执行文件,例如 ./rebels

  • 建议的最小终端尺寸: 160x48。
  • 已测试的终端列表: GNOME终端、konsole、iTerm2、tabby、WezTerm、Ghostty。
  • 重要提示: 当前默认会生成本地机器人队伍以提升游戏体验。可通过向可执行文件传递 -f 参数来禁用此行为。未来当在线玩家增多后,游戏将默认只使用在线队伍。

音乐系统

游戏音乐从网络电台流式传输。可以通过编辑 assets/data/stream_data.json 文件来添加更多电台。

贡献与反馈

  • 欢迎加入Discord社区参与讨论和提供想法。
  • 如果遇到错误,请提交issue并描述情况。开发者可通过拉取请求贡献代码。

运行中继节点

运行中继节点有助于保持游戏的去中心化。

  • 运行命令: rebels -n
  • 其他玩家连接方式: rebels -i <中继节点IP地址>
  • 构建时需启用 "relayer" 特性:cargo build --release --features "relayer"

运行SSH服务器

可以运行一个SSH服务器供其他玩家连接。

  • 运行命令: rebels -j
  • 其他玩家连接方式: ssh <用户名>@<服务器IP> -p 3788
  • 构建时需启用 "ssh" 特性:cargo build --release --features "ssh"

许可证

本软件根据 GPLv3 许可证发布。

10. Oxide Cuts Data Center Power Consumption in Half (oxide.computer)

文章讨论了数据中心能源消耗问题,并介绍了Oxide公司如何通过创新设计将能耗降低一半。

当前挑战

  • 数据中心已消耗全球1-2%的电力,预计十年内将升至3-4%,碳排放也将翻倍。
  • 随着数据和人工智能的发展,电力需求持续增长。
  • 对于85%的本地IT设施,组织面临两大挑战:如何降低能耗与碳排放?以及如何在现有数据中心电力不足的情况下跟上AI创新?

传统数据中心的低效设计

  • 传统数据中心以单个服务器为计算单元,每台服务器都配备独立的交流电源、散热风扇和电源管理,如同各房间自带独立空调和电气系统的房子。
  • 服务器与存储设备、网络交换机各自独立,缺乏整体协同设计,限制了高效可持续计算系统的发展。

Oxide的解决方案:机架级设计

  • 借鉴超大规模公有云的协同设计理念,并加以改进,推出可购买和自运营的“云计算机”,无需依赖公有云。
  • 将整个机架视为单一统一计算机,通过软硬件协同设计,消除冗余组件,优化系统运行。
  • 关键创新点包括:
    • 直流母线替代交流电源:使用高效直流配电总线,通过定制电源架控制器从数据中心输入交流电后一次转换为直流电,再通过母线分配至机架各处。这消除了传统32服务器机架中70个独立交流电源的需求,并能平衡负载。
    • 更大尺寸风扇提升效率:定制服务器滑轨采用更大风扇,散热能效比传统服务器高12倍(传统服务器单台最多有7个风扇,需更努力工作)。
    • 专为能效优化:消除PCIe提升卡、存储背板等非必要组件,优化气流。Oxide云计算机专为机架级云计算设计,针对该任务进行优化。
    • 软硬件协同设计:包含强大的云控制平面,可深度观测全系统。硬件(如智能直流-直流转换器)可向软件提供遥测数据,为未来动态功率上限、基于效率的工作负载分配等功能奠定基础,这些在传统服务器和软件系统中无法实现。

效益

  • 客户与环境双赢:从根本上重新思考数据中心利用率和计算设计,减少电力需求,实现每千瓦电力产生更多有效计算。
  • Oxide证明,通过机架级设计以及周全严谨的软硬件协同,可以实现显著的效率提升。
  • 组织可通过采用Oxide云计算机,在实现业务目标的同时,达成可持续发展目标。
11. Story of the two thousand stolen Playdate handhelds (podcast.play.date)

这篇内容是围绕2000台Playdate掌机失窃事件展开的叙事。核心故事线是:今年早些时候,公司的财务主管Jen发现Playdate的库存短缺了2000台,随后展开了一段曲折的调查,最终将线索指向了北拉斯维加斯的一家Circle K便利店。故事的叙述风格带有冒险色彩,比喻如同驾驶《夏威夷神探》(Magnum, P.I.)中的酷炫座驾。

内容中包含了对整个事件的回忆与讲述,并穿插了一些看似无关却充满个人风格的幽默细节(例如关于屋顶咨询小费的调侃)。文末提供了相关的资源链接,包括演讲、剧集参考、事件相关照片页面以及文字记录。

总结要点如下:

  • 事件起因:Playdate库存发现2000台的短缺。
  • 调查过程:由此引发了追踪调查,最终指向一个具体的地理位置——北拉斯维加斯的Circle K。
  • 风格与氛围:叙述生动,带有戏剧性和轻松幽默的笔调。
  • 配套资源:提供了相关演讲、影像资料、图片及文字记录的访问链接。
12. Tailwind CSS v4.0 Beta 1 (tailwindcss.com)

Tailwind CSS v4.0 Beta 1 摘要

发布背景:经过约八个月的开源开发、大量错误修复、向后兼容性处理以及解决Windows持续集成问题后,Tailwind CSS团队发布了首个公开测试版v4.0 Beta 1。v4.0是全新构建的引擎,旨在提升性能并适应现代Web开发。

主要特性

  • 极致性能:全新引擎的完整构建速度提升高达5倍,增量构建速度提升超过100倍,增量构建耗时可低至微秒级。
  • 统一工具链:内置导入处理、供应商前缀添加及语法转换,无需额外工具
  • CSS优先配置:提供全新的开发者体验,允许开发者直接在CSS中自定义和扩展框架,取代了旧版的JavaScript配置文件。
  • 为现代Web设计:基于原生级联层、广色域构建,并优先支持现代CSS特性,如容器查询(@container)、@starting-style、弹出窗口(popovers)等。

后续行动:团队发布了新的测试版文档,并鼓励开发者开始使用并帮助测试,以期在2025年初发布稳定的正式版本。

13. NASA: Mystery of Life's Handedness Deepens (www.nasa.gov)

NASA:生命分子手性之谜加深

研究核心

NASA资助的一项新发现加深了生命分子手性之谜:关键分子RNA(在DNA出现前可能承载生命指令)在合成蛋白质基本单元(氨基酸)时,可能偏好左旋或右旋构型。该成果发表于《自然-通讯》,对探索生命起源具有重要意义。

背景:生命的手性偏好

  • 蛋白质是生命的核心执行分子,由20种氨基酸以不同组合构成。
  • 部分氨基酸存在互为镜像的两种构型(如左手与右手),而地球生命几乎全部使用左旋氨基酸,这种特性称为同手性
  • 科学界长期未解的问题是:生命为何选择左旋氨基酸而非右旋?

RNA世界假说与实验设计

  • RNA世界假说认为,在DNA出现前,更简单的RNA可能同时负责存储遗传信息和构建蛋白质。
  • 本研究假设:如果RNA世界成立,RNA本身可能隐含了对左旋氨基酸的化学偏好。
  • 实验方法:研究人员模拟早期地球条件,测试具有酶功能的RNA分子(核酶)合成氨基酸苯丙氨酸的倾向。共测试了15种不同核酶组合,观察其对左旋与右旋氨基酸的催化比例。

关键发现

  • 核酶可偏好左旋或右旋氨基酸,并未表现出固定的倾向性。
  • 这表明早期RNA世界不一定存在选择左旋氨基酸的化学必然性,挑战了生命手性源于化学确定性的观点。
  • 研究者推测,生命的同手性可能并非早期化学决定的结果,而是后期进化压力下的产物。

研究意义与未来方向

  • 此发现深化了生命起源的谜团,提示手性选择可能涉及更复杂的进化过程。
  • 理解生命化学特性有助于指导地外生命探测,例如分析陨石、小行星样本中的分子手性。
  • NASA的OSIRIS-REx任务已从小行星贝努带回样本,未来将分析其中氨基酸的手性特征,以及火星样本中可能存在的核酶与蛋白质证据。
  • 研究由NASA、西蒙斯生命起源合作计划及美国国家科学基金会资助。
14. Mechanically strong yet metabolizable plastic breaks down in seawater (www.science.org)

机械强度高且可代谢的塑料可在海水中分解

核心突破

该研究介绍了一种新型塑料材料,其核心创新在于同时实现了高机械强度与可生物降解(可代谢)性,并且能够在海洋环境中有效分解

背景与痛点

传统石油基塑料虽然坚固耐用,但在自然环境中极难降解,导致严重的环境污染,尤其是在海洋中。现有的可生物降解塑料往往在机械性能(如强度、韧性)上有所妥协,或者其降解条件较为苛刻(如需要特定的工业堆肥设施),难以在海洋等开放环境中快速降解。

关键特性与意义

  1. 机械强度:该新型塑料保留了传统塑料所需的机械性能,足以满足实际应用需求。
  2. 可代谢性:材料设计使得其能够被环境中的微生物识别并作为营养源分解代谢。
  3. 海水降解能力:最重要的突破在于其能够在海水中发生降解,这直接针对了塑料污染最严重的领域之一,为解决海洋塑料垃圾问题提供了新的材料解决方案。

潜在应用与前景

这种“既强韧又环保”的塑料,有望替代用于包装、一次性制品、渔具等领域的传统塑料,在满足使用功能的同时,即使意外泄漏到海洋中,也能被自然环境逐步分解,从而大幅降低长期的生态风险。该研究为开发下一代环境友好型高性能塑料材料开辟了新路径。

15. Autoflow, a Graph RAG based and conversational knowledge base tool (github.com)

Autoflow:基于知识图谱的RAG对话式知识库工具

项目状态:
Autoflow目前处于早期开发阶段,团队正积极开发中,计划未来将其转化为Python包(如 pip install autoflow-ai),成为完整的RAG解决方案。

核心特性:

  1. 对话式搜索界面:提供类似Perplexity风格的对话搜索页面,内置高效网站爬虫,可自动遍历官方文档和网站,通过站点地图抓取实现全面覆盖与流畅搜索。
  2. 可嵌入的JavaScript代码片段:支持将对话搜索窗口嵌入任何网站,通常放置于页面右下角,便于用户快速获取产品相关问题的即时回答。

部署要求:

  • 支持通过Docker Compose部署,建议配置4个CPU核心和8GB内存。

技术栈:

  • 数据库:TiDB(用于存储聊天历史、向量、JSON数据及分析)
  • RAG框架:LlamaIndex
  • 模型编程框架:DSPy(专注于基础模型的编程而非提示工程)
  • 前端框架:Next.js
  • UI与样式:Tailwind CSS + shadcn/ui

参与与许可:

  • 欢迎社区贡献,详情参考项目贡献指南。
  • 开源许可:Apache License, Version 2.0。
  • 联系方式:可通过Discord进行交流。

资源链接:

  • 在线演示:https://tidb.ai
  • 部署文档:提供详细部署指南(文章内提及)
16. The FORTH code for Chipwits is released in the game's 40th anniversary (chipwits.com)

Chipwits游戏40周年开源FORTH代码发布

为庆祝Chipwits游戏发行40周年,开发者将其原版Mac和Commodore 64平台的FORTH源代码开源发布。代码托管于GitHub仓库(chipwits/chipwits-forth),旨在保护游戏遗产,并展示1984年8位微计算机跨平台开发的特点。

游戏历史与开发背景

Chipwits于1984年随Macintosh发布,是首款图形化编程教学游戏之一,灵感来源于《Rocky's Boots》等经典编程游戏。因Apple Lisa开发设备昂贵(售价9995美元),独立开发者Doug Sharp和Mike Johnston选择在Mac上直接使用MacForth Plus进行开发。开发历时7个月,赶在圣诞季前完成。

为何选择FORTH语言

FORTH是一种堆栈式编程语言,在8位计算机上广泛可用。选择FORTH的原因包括:在Mac上可直接开发、具备跨平台移植潜力、代码简洁高效。全游戏Mac版源码仅约3000行FORTH代码,而现代化C#重制版已达35000行。

跨平台移植挑战

1985年,游戏移植至Commodore 64平台。移植面临诸多限制:需用操纵杆实现下拉菜单(原本为鼠标设计)、处理165KB磁盘空间(Mac版为400KB)、适应64KB内存和更慢的处理器。后续还推出了Apple II版本,同样使用FORTH变体开发。

源码恢复过程

开发者从保存40年的磁盘中成功恢复了数据:

  • C64磁盘使用原装1541磁盘驱动器配合XoomFloppy USB适配器读取
  • Mac 3.5英寸磁盘因专有扇区布局难以读取,最终通过GreaseWeazle自定义硬件控制器成功提取 所有原始磁盘映像和提取的代码均已上传至GitHub仓库。

代码结构与示例

FORTH源码按“屏幕”组织,常混合代码与数据:

Mac版机器人移动逻辑

移动功能的代码直接结合游戏逻辑与图形渲染,通过像素操作实现动画。代码仅用几行就处理了空地板移动、撞墙或撞炸弹等情况,并实时更新分数显示。

C64版精灵定义

Commodore 64版本中,精灵数据直接嵌入源码。Chipwits角色由多个24×21像素单色精灵叠加构成,类似动画赛璐珞片,牺牲了可用精灵数量以换取更清晰的图像。

任务分数表设计

开发者创建了自定义词d,,将数值乘以10后存储,便于用简洁表格编码物品数量和分数(如150存为15 d)。这种设计方便在开发后期快速调整游戏平衡性。

社区参与邀请

项目团队希望社区参与以下工作:

  • 从磁盘映像中完整提取所有相关源码
  • 修复文件对齐问题(40字符/64字符宽度)
  • 确定包含最新源码的磁盘
  • 创建现代平台编译指南
  • 提取原始精灵和图像为.png文件

开发者已建立Discord服务器供社区交流协作。

现代重制版信息

团队正在开发Chipwits现代化重制版,保留原作趣味性与计算机科学严谨性,同时改进学习曲线并加入全球排行榜。游戏已在Steam上架并开放愿望单。

17. Security researchers identify new malware targeting Linux (www.welivesecurity.com)

安全研究人员发现针对Linux系统的新恶意软件

ESET研究人员发现了一个针对Linux系统的新后门,并将其命名为WolfsBane。经高度确信的归因分析,该恶意软件与中国的高级持续性威胁(APT)组织Gelsemium有关。这是首次公开报道该组织使用Linux恶意软件。此外,研究人员还发现了另一个名为FireWood的Linux后门,但其与Gelsemium的关联性证据较弱,可能被多个中国APT组织共享。

核心发现与威胁概况

  • WolfsBane 是Gelseivirus组织已知Windows后门 Gelsevirine 的Linux对应版本。其投递器与Windows版的Gelsemine投递器功能类似,并包含一个基于开源用户态rootkit(BEURK)修改而来的隐藏模块。
  • FireWood 与ESET追踪的 Project Wood 恶意软件存在关联,后者可追溯至2005年。
  • 这两个后门及相关工具的目的是实施网络间谍活动,旨在窃取系统信息、用户凭证及特定文件,并通过隐蔽方式维持长期访问。
  • 攻击者可能通过利用Web应用程序漏洞(如针对Apache Tomcat服务器)获得初始访问权限,并部署了多个基于公开代码的Web shell。

技术分析要点

  1. WolfsBane 执行链与隐藏机制

    • 执行链包含投递器启动器主后门三个阶段。
    • 投递器会根据系统配置(root权限与否、是否使用systemd)通过修改服务文件、启动脚本或用户配置文件来建立持久化。
    • 主后门通过加载嵌入库来执行命令和通信(支持UDP和HTTPS),其加密库机制允许远程更新。
    • 使用修改过的BEURK rootkit来隐藏自身进程和文件活动。
  2. FireWood 后门功能

    • 使用XOR加密的配置文件,包含C&C服务器地址、进程伪装名称、连接计划等。
    • 通过创建.desktop自启动文件实现持久化。
    • 通信数据使用TEA加密算法(轮数可变)。
    • 功能强大,可执行包括下载执行、命令执行、文件管理、进程隐藏、模块加载等在内的众多命令。

相关工具

  • SSH密码窃取器:一个特洛伊化的OpenSSH客户端,用于记录用户的登录凭证。
  • 权限提升工具:一个小型二进制文件,利用SUID位在已获得root权限的环境中提升权限。
  • Web Shell:在受攻击的服务器上发现了多个功能各异的JSP Web shell,用于远程控制。

研究意义与趋势 此次发现是Gelsemium组织首次被公开报道使用Linux恶意软件。这一现象反映了一个更广泛的行业趋势:随着Windows端点安全的加强(如EDR工具的普及和微软默认禁用VBA宏),威胁行为者正将攻击重心转向互联网暴露的基础设施,其中大量系统运行在Linux上。因此,Linux系统正日益成为APT组织新的重点目标。

关键指标(IoCs)

  • 相关域名:dsdsei[.]com (WolfsBane C&C), asidomain[.]com (FireWood C&C)
  • 恶意软件文件哈希(SHA-1)可在报告末尾的列表及GitHub仓库中获取,涵盖了两个后门、rootkit、工具和Web shell等多种样本。
  • 技术报告遵循MITRE ATT&CK框架,详细描述了攻击中使用的技术和战术。
18. Lessons from 15 Years of Indie App Development (lukaspetr.com)

独立应用开发15年经验总结

作者在2009年11月9日开始学习开发应用,立志成为独立开发者。历经15年,直到近年才实现应用收入足以覆盖所有开销。以下是其核心心得:

  • 享受过程:长期坚持的关键在于真正享受构思功能、设计界面、解决技术难题和发布更新的全过程。
  • 明确动机:初期动机是创造有价值的产品,而非赚钱。随着生活成本增加,需要收入支撑,但核心仍是“为热爱而赚钱”。若将赚钱视为首要目标,独立开发并非最佳选择。过去的创伤有时也能成为强大动力。
  • 风险与回报:风险在于放弃公司工作的稳定收入和职业机会;回报在于获得工作的满足感、产品决策权和掌控感,若成功则能影响用户生活。
  • 保持不切实际的心态:尽管成功概率极低且竞争全球,但全力以赴去追求,避免日后后悔。
  • 成功与失败界限模糊:即使多年后仍未盈利,也可能因积极的用户反馈和对产品前景的信心而选择坚持,为证明自己和避免未来遗憾而继续。
  • 找到利基市场:选择自己坚信且能解决自身痛点的产品(如个人时间追踪应用),并致力于成为该细分领域的最佳应用。
  • 提供持久价值:专注于构建有技术壁垒、难以复制且长期有用的特性,避免追逐短期热点。
  • 准备身兼数职:需负责产品、设计、开发、营销、推广、客服等多方面工作,虽充满挑战但也避免了单调。
  • 应对自我怀疑:不应问“我是否足够好?”,而应问“我是否尽力了?”。通过保障睡眠、健康饮食、锻炼和专注工作来改善。
  • 定期反思:通过每周、每月回顾以及每日自由写作进行深度复盘,这是生活的最佳工具。
  • 认识优缺点:通过多年实践与反思,了解自身优势和劣势,并利用优势,改进劣势(如作者营销能力弱但执行力强,但也因此易陷入细节拖延)。
  • 学习并应用经验:避免固步自封,通过反思获得改进启示,并逐步实施(如平衡工作与生活、定期营销、改善线上形象)。
  • 寻求助力:加入成功的独立开发者小组,获取设计、营销、变现等方面的建议和反馈,这对业务增长至关重要。
  • 运气的作用:成功部分归功于运气(如应用被推荐、遇见同行、产品被提及),但前提是自己主动尝试和创造机会。
  • 其他重要心态:摒弃自我中心,世界不欠你任何东西;工作的成功与否不决定个人价值;平衡热爱与商业需求;优先享受工作乐趣;保持感恩;只要不停止尝试,现实就可能赶上梦想。

作者庆幸能生活在这个可以如此工作的时代,并鼓励所有追求创造性事业的人坚持下去。

19. What made Dostoevsky's work immortal (thoughts.wyounas.com)

陀思妥耶夫斯基作品永恒性的根源

约瑟夫·布罗茨基认为,金钱是人类必须应对的第五种自然力,这是陀思妥耶夫斯基小说在其逝世百年后仍具现实意义的主要原因。布罗茨基在其散文集《小于一》中深刻分析了这一点。

金钱与中产阶级视角

  • 陀思妥耶夫斯基一生受债务困扰,曾因财务压力在极端期限内完成作品。
  • 布罗茨基通过引用俄国社交名媛的观察指出,陀思妥耶夫斯基本质上是 “小资产阶级”(即中产阶级)。这种经济地位使其作品能与大多数人产生共鸣,因为中产阶级的生活条件——既非巨富也非赤贫——是一种 “可容忍的人类状态”
  • 中产阶级作家因其自身处境的 precariousness(不稳定性),能够以敏锐的视角观察底层生活,且由于其贴近上层,也能避免对上层的过度美化。这使他们能处理更多样的困境,从而扩大读者群。

贫困作为创作催化剂

  • 布罗茨基暗示,** precarious financial condition(财务不稳定性)往往是产生伟大文学,尤其是蕴含道德律令的文学的先决条件**。
  • 文章列举了多位诺贝尔文学奖得主(如加西亚·马尔克斯、福克纳、米斯特拉尔、加缪)早期的贫困或挣扎经历,作为这一观点的例证。他们的创作往往源于为了维持生计的“内行操作”(inside job),而非来自社会顶层或底层的外部批判。

语言与艺术深度

  • 布罗茨基强调,使陀思妥耶夫斯基成为伟大作家的关键因素既非其题材的复杂性,也非其思想的深邃或同情心,而是他所使用的工具——俄语本身
  • 俄语的多音节特性、不规则的语法结构,以及陀思妥耶夫斯基将高雅文学、口语、官僚用语熔于一炉的独特风格,造就了他小说中狂热、歇斯底里的节奏和强烈的语言摩擦
  • 他的“离题”和意识流并非完全源于情节需要,更多是由语言引导,是语言改变了或重新导向了意识。

独特的叙事方法

  • 陀思妥耶夫斯基继承了古典主义原则:在提出己方论点前,必须穷尽对立面的所有论据
  • 这种先系统阐述对立观点的能力,不仅增强了作品的真实感,也拓宽了叙事路径,为读者提供了更丰富、更深刻的情感与道德体验。

结论

布罗茨基的洞见揭示,陀思妥耶夫斯基作品的永恒魅力,源于其中产阶级视角所捕捉的普遍人类经验经济困境所激发的道德洞察,以及对俄语潜能非凡的挖掘与运用。这种结合使得他的小说能够穿越时代,持续与读者对话。

20. Listen to the whispers: web timing attacks that work (portswigger.net)

本文是一篇关于Web定时攻击的研究论文,旨在展示如何利用高精度定时分析技术在实际网络环境中发现安全漏洞。以下是其核心内容的摘要:

核心观点

传统定时攻击常因网络和服务器噪声干扰而难以在真实环境中应用。本文介绍了通过高精度定时分析来探测服务器内部状态的新方法,并重点阐述了如何使其变得可靠、可移植且实用。

关键技术突破

  1. 单数据包攻击

    • 利用HTTP/2协议,将两个请求封装在同一个TCP包中发送,从而完全消除网络延迟抖动这一最大噪声源。
    • 通过比较两个请求的响应顺序(而非绝对时间差),可以检测到微秒级的服务端处理差异。
    • 该技术已被集成到Burp Suite等工具中,实现了在远程目标上的“本地化”精度。
  2. 三大有效攻击应用

    • 发现隐藏攻击面:通过分析响应时间差异,可以探测到隐藏的参数、Cookie、HTTP头以及未公开的路由。例如,发现了缓存键配置错误、WAF(Web应用防火墙)绕过等。
    • 检测服务器端注入漏洞:特别适用于难以直接探测的“盲注”漏洞,如服务器端参数污染、JSON/XML格式注入等。定时分析能高效识别触发异常处理的输入。
    • 利用反向代理错误配置这是本文最重要的发现之一
      • 作者发现了一类“作用域SSRF”漏洞:反向代理根据Host头将请求转发到内部系统,但仅限于特定子域(如*.example.com),无法通过外部回调(OAST)检测。
      • 通过定时攻击(如探测DNS缓存、长域名解析失败)可以准确识别此类漏洞。
      • 利用该漏洞可实现防火墙绕过、内部系统访问、前端规则绕过以及“前端身份冒充”(利用后端对前端服务器的信任头信息)等多种攻击。

研究验证与工具

  • 作者在30,000个实时网站的测试平台上验证了这些技术的有效性。
  • 提供了开源工具支持(如Param Miner、Turbo Intruder),以实现自动化探测和自定义攻击。
  • 研究强调了理解信号与噪声平衡的重要性,并介绍了如何通过放大信号(如增加服务器负载)和减少噪声(如利用缓存、连接复用)来提高攻击可行性。

防御建议

  • 开发者应假设攻击者能知晓代码执行流和分支情况。
  • 在实现缓存等性能优化时需格外谨慎。
  • 考虑实施基于IP的速率限制,以干扰单数据包攻击。
  • WAF厂商可尝试拆分单数据包中的多个请求。

总结

本文将定时攻击从理论层面推向了实战应用,证明了通过精细化的技术(尤其是单数据包攻击)可以可靠地探测微秒级的服务端差异。其核心贡献在于发现了利用反向代理作用域SSRF这一强大且易被忽视的漏洞类别,并提供了一套完整的方法论与工具,使安全测试人员能够发现并利用更多隐藏的、基于服务器内部逻辑的安全问题。

21. OK, I can partly explain the LLM chess weirdness now (dynomight.net)

文章探讨了大型语言模型(LLM)在国际象棋能力上的差异之谜,指出所有LLM中只有gpt-3.5-turbo-instruct能表现出业余高级水平,而其他更新、更大的模型则表现糟糕。作者通过实验检验了多种理论,并提出了自己的解释。

主要实验与发现:

  1. 基础提示效果不佳:使用标准的聊天提示格式(系统提示+用户提示)时,gpt-4ogpt-4o-mini等聊天模型表现远逊于gpt-3.5-turbo-instruct(一个“补全”模型)。

  2. 有效的性能提升方法

    • 提供示例(上下文学习):仅添加三个简单的示例(输入-输出对)就能显著提升聊天模型的棋力。
    • 微调(Fine-tuning):使用由国际象棋引擎(Stockfish)生成的对局数据对模型进行微调,也能有效提高其表现。
    • “反刍”提示:一种关键技巧是要求模型在给出下一步棋之前,先重复整个棋局的完整记录。这迫使模型为自身构建更连贯的上下文,从而大幅改善了聊天模型的表现。
  3. 无效甚至有害的方法

    • 提供合法走法列表:这反而严重损害了模型的表现,导致其更早出现错误。
    • 微调与示例结合:同时使用微调和示例提示时,效果有时甚至不如只使用其中一种,原因尚不明确。

作者的理论解释:

作者认为,gpt-3.5-turbo-instruct的优异表现可能源于两个核心因素:

  1. 训练数据的差异:OpenAI可能在基础模型的训练数据中包含了数量更多、质量更高的国际象棋棋谱(可能来自等级分1800以上的棋手),而开源模型则缺乏这种针对性的、高质量的棋艺数据过滤与集成。

  2. 基础模型与聊天模型的差距:底层的基础模型(Base Model)本身可能具备很强的下棋能力,但经过“指令微调”和包装成聊天接口后,这种在“补全”模式下自然展现的能力被削弱了。实验中通过“反刍”等技巧绕过聊天接口的限制,使得聊天模型表现出更强的棋力,间接证明了其底层基础模型的潜力。因此,聊天模式下的性能损失可能同时源于指令微调过程和聊天模板格式的干扰。

其他要点:

  • 作者排除了OpenAI作弊(如调用外部引擎)的可能性,并指出LLM确实具备超越简单记忆开局的真实棋艺能力。
  • 优化LLM的特定任务表现(如国际象棋)充满挑战,需要不断尝试各种提示、示例和微调策略的组合,过程如同“寻找咒语”。
  • 研究引用了多项相关工作,证明gpt-3.5-turbo-instruct确实在内部构建了某种棋盘状态的表征。
22. WhisperNER: Unified Open Named Entity and Speech Recognition (arxiv.org)

WhisperNER:统一开放命名实体与语音识别模型

该论文介绍了 WhisperNER,一种能够联合进行语音转录和实体识别的新型模型。其核心目标是整合命名实体识别(NER)与自动语音识别(ASR),以提升转录文本的准确性和信息丰富度。

主要特点与创新:

  1. 支持开放类型NER:模型能够在推理时识别多样化且不断演化的实体类型,不受限于预设的封闭实体集合。
  2. 训练数据构建:基于开放NER研究的进展,研究人员为大型合成NER数据集生成了对应的合成语音样本。这使得模型能够在包含多种NER标签的大量样本上进行训练。
  3. 训练机制:在训练过程中,模型会接收到NER标签作为提示,并被优化以输出带标注的转录语句,即同时产出文字内容和对应的实体标签。
  4. 评估方法:为了评估WhisperNER,研究人员为常用的NER基准测试生成了合成语音,并为现有的ASR数据集标注了开放NER标签。

实验结论: 实验结果表明,WhisperNER在域外开放类型NER任务以及监督微调设置下,均优于自然基线模型。

总结: WhisperNER通过创新的数据合成与模型训练策略,成功将开放命名实体识别能力集成到语音识别流程中,实现了更强大、更灵活的语音理解功能。

23. What's Next for WebGPU (developer.chrome.com)

WebGPU 的未来发展方向

标准化进程

WebGPU 规范持续演进,Google、Mozilla、Apple、Intel 和 Microsoft 等主要公司每周举行工作组会议讨论其开发。最新会议概述了下一代 WebGPU 的主要目标和计划功能。会议的核心焦点是推进“Meta 0”状态并解决遗留问题,以达成 W3C 候选推荐标准(CR)。与会者认为,目前不存在阻碍 WebGPU 获得 W3C 推荐的重大问题。CR 阶段意味着规范将获得更强的稳定性和知识产权保障。

新功能优先级

会议基于开发者、实现方和利益相关者的反馈,优先讨论并确定了以下新功能:

面向人工智能(AI)的功能

  • 子组(Subgroups):允许应用程序利用 GPU 线程间的本地快速通信,并借助着色器核心旁的固定大小矩阵乘法硬件。
  • 纹素缓冲区(Texel Buffers):为 16 位或 8 位等小数据类型提供更高效的存储和访问方式,适用于某些图像处理 ML 算法。
  • 统一内存架构(UMA)缓冲区映射:通过减少或消除数据拷贝及同步开销,提升数据上传性能。

面向渲染算法的功能

  • 无绑定资源(Bindless):允许着色器使用无限数量的资源(如纹理),突破当前严格的限制,是许多高级渲染算法的先决条件。
  • 多个间接绘制(Multi-draw Indirect):使 GPU 的前期计算能够创建多个绘制命令,适用于 GPU 驱动的渲染(如 GPU 剔除)。
  • 64 位原子操作(64-bit Atomics):支持在缓冲区或纹理中进行“软件光栅化”,例如将深度测试与 32 位负载写入合并为单一原子操作。

Web 平台集成增强

为提升功能和与 Web 平台的集成,会议讨论了以下特性:

  • 兼容模式(Compatibility Mode):旨在使 WebGPU 能在更广泛的设备上运行,包括仅支持 OpenGL ES 3.1 的设备。
  • WebXR 集成:允许 WebXR 图层模块与 WebGPU 接口,为不同类型的图层提供 WebGPU 交换链。
  • Canvas 2D 互操作:改善 Canvas 2D 与 WebGPU 的互操作性,解决性能和人体工程学问题,允许在 WebGPU 中访问文本和路径绘制,并将 WebGPU 渲染输出到 Canvas 2D。

工具与库改进

会议还讨论了改善 WGSL 工具和库的举措,其中一个重要项目是开发 WESL,旨在提供一套由社区驱动的 WGSL 扩展集。

总结与展望

本次会议凸显了 WebGPU 工作组与开发者及更广泛的图形社区紧密合作,共同塑造 WebGPU 未来的重要性。工作组积极寻求对所提功能的反馈,并致力于确保 WebGPU 满足开发者需求。WebGPU 的未来演进预计将取得重大突破,为 Web 图形和 AI 开启新的可能性,赋能开发者创造更沉浸、更吸引人的 Web 体验。

24. Everything You Never Wanted to Know About Linker Script (2021) (mcyoung.xyz)

本文是一篇关于链接器脚本的详细介绍,旨在帮助读者理解其概念、作用和核心语法。

核心概念与作用

链接器脚本(.ld文件)是提供给链接器(如ldlld)的模板,用于精确控制最终可执行文件或二进制文件的内存布局。它指定了如何将来自多个输入对象文件(.o)和静态库(.a)的代码与数据段组合成最终的输出。这种控制对于操作系统内核、固件和驱动程序等底层软件至关重要。

工具链与链接过程

  • 工具链组件:一个典型的C/Rust工具链包括编译器(生成汇编.s)、汇编器(生成对象文件.o)和链接器(链接所有对象文件生成最终可执行文件,如a.out)。
  • 链接器的主要步骤:链接器执行“最终链接”时,主要步骤包括:符号解析(匹配所有未定义的符号引用)、垃圾回收(基于入口点(如_start)移除未使用的代码)、执行链接器脚本(安排段的布局),以及重定位(修正地址引用)。

对象文件与段

对象文件由多个组成,每个段都有特定的属性和用途。常见段包括:

  • .text:存放可执行代码,通常只读且可执行。
  • .data:存放已初始化的全局变量,可读写。
  • .rodata:存放常量,只读。
  • .bss:存放未初始化的全局变量,在文件中不占空间(运行时由操作系统清零)。 objdump工具可用于查看对象文件中的段信息。

链接器脚本核心元素

  1. SECTIONS命令:这是脚本的核心,定义输出文件中的段及其包含的内容。语法如 .text : { *(.text) } 表示将所有输入对象中名为.text的段合并到输出的.text段中。通配符*代表所有输入对象。
  2. 内存地址与位置计数器
    • 每个段都有虚拟内存地址加载内存地址
    • 位置计数器(.)是一个特殊变量,记录当前输出位置,会随着段的添加自动递增。可通过 . 显式设置VMA。
  3. MEMORY命令:用于定义内存区域(如ROM和RAM),并为其指定属性(如只读r、读写rw、可执行x)。链接器会根据段的属性将其分配到匹配的区域。可以使用 > region 语法将段显式分配到特定区域。
  4. 符号定义:可以在脚本中直接定义符号(如 __text_start = .;)。这些符号可在程序代码中作为外部变量声明,并通过取其地址来获取链接时确定的值,常用于获取段的起始地址和大小。

关键功能与应用

  • LMA与VMA分离:在微控制器等系统中,可将代码(VMA在ROM)和初始数据(LMA在ROM,VMA在RAM)分离。程序启动时需要将数据从ROM(LMA)复制到RAM(VMA)。
  • 填充与对齐:可以使用 FILL(pattern) 填充段内未用空间,或使用 ALIGN(expression) 指定对齐要求。
  • 输出指令:如 ENTRY(_start) 设置程序入口点,INCLUDE 包含其他脚本文件。
  • 静态断言ASSERT() 提供链接时的静态检查。

实际示例与学习资源

文章最后提到了一些真实的链接器脚本供参考,包括:

  • 系统默认脚本(可通过 ld --verbose 查看)。
  • Linux内核使用的、经过C预处理器处理的链接器脚本。
  • Tock OS(一个用Rust编写的嵌入式操作系统)中带有详细注释的链接器脚本,被认为是学习“真实但不过于复杂”脚本的好例子。
25. Chemists Create World's Thinnest Spaghetti (phys.org)

世界最细面条:UCL团队用面粉制造出纳米纤维

由伦敦大学学院(UCL)领导的研究团队成功制造出世界上最细的“面条”,直径仅372纳米,约为人类头发直径的1/200。此项研究并非为了食用,而是旨在探索利用极细材料(纳米纤维)在医学和工业中的广泛应用潜力。

研究目的与背景

淀粉基纳米纤维前景广阔,可用于促进伤口愈合的敷料(因其高多孔性允许水分通过但阻挡细菌)、骨再生支架及药物递送。然而,传统方法需从植物细胞中提取和纯化淀粉,耗能耗水。该团队提出一种更环保的方法:直接使用面粉等富淀粉原料制造纳米纤维,其基础与制作意面相同。

技术方法与创新

研究团队在《纳米尺度进展》期刊上发表论文,描述了采用“静电纺丝”技术制备这种“纳米意面”。该技术通过电荷将面粉与液体的混合物从针尖拉出形成纤维。与传统意面通过金属孔压出混合物不同,此过程是通过电荷“拉”出更细微的纤维。

此前已知的最细手工意面是撒丁岛的“Su Filindeu”,宽约400微米,比这种新造的“纳米意面”厚约1000倍。由于单根纤维宽度小于某些可见光波长,无法用常规相机或显微镜清晰成像,其尺寸通过扫描电子显微镜测量。

应用前景

  • 伤口敷料:淀粉纳米纤维多孔性结构利于保持伤口湿润并防止细菌侵入。
  • 组织工程:可作为支架,模拟细胞外基质,辅助组织再生。
  • 药物递送:利用纤维的特性控制药物释放。

淀粉作为地球上第二大生物质来源(仅次于纤维素),丰富、可再生且可生物降解。但纯化淀粉需复杂处理,而使用面粉简化了制备流程。

技术挑战与后续研究

使用面粉而非纯淀粉进行静电纺丝更具挑战性,因面粉中的蛋白质和纤维素等杂质会增加混合物黏度,阻碍纤维形成。研究人员使用甲酸而非水作为溶剂,以分解淀粉的螺旋结构层(与烹饪分解淀粉的原理类似),随后甲酸在纤维飞向金属板过程中蒸发。混合物需经过数小时加热并缓慢冷却以达到适当稠度。

下一步将研究该产品的具体特性,如降解速度、与细胞的相互作用及规模化生产可能性。

趣味注解

研究者指出,这种“纳米意面”并不适合食用,因其“会在不到一秒内煮过头,甚至来不及从锅中取出”。

参考文献
Britton, B., et al. "Nanopasta: electrospinning nanofibers of white flour." Nanoscale Advances (2024). DOI: 10.1039/D4NA00601A

26. Show HN: Video editor app that generates FFmpeg commands (newbeelearn.com)
# 基于浏览器的视频编辑器应用,用于生成 FFmpeg 命令

## 核心功能
这是一个离线的、免费的浏览器端视频编辑工具。其主要目的不是直接输出视频文件,而是通过图形化界面编辑后,**生成对应的 FFmpeg 命令行指令**,方便用户用于手动或自动化的工作流。

## 支持的编辑元素
- **视频与图片**:支持导入视频(MP4/WEBM)和图片文件。
- **文本**:可添加文本,并自定义字体大小、颜色、背景色、对齐方式和边框。
- **音频**:支持添加音频轨道。
- **图形**:包括矩形框(用于高亮)和绘图画板(需要 FFmpeg 的 rsvg 库支持)。
- **元素复制**:可复制元素设置,避免重复调整。

## 主要编辑选项
- **位置与尺寸**:通过 X/Y 坐标调整位置,设置宽度和高度。
- **时间控制**:设置元素的开始和结束时间,或在时间线上拖动调整。注意:视频的起始位置不可更改,因此无法进行任意片段的裁剪。
- **透明度**:可调整文本等元素的透明度。
- **裁剪**:使用剪刀工具裁剪视频元素,裁剪后会创建一个新片段并添加到时间线,不影响原始文件。

## 时间线管理
- **图层系统**:每个元素位于独立图层,较低层级在上(覆盖高层级)。音频混合时,最低层级的音频可听,其他层级音频静音。图层顺序可手动调整。
- **缩放控制**:默认“适应”模式显示所有元素,可使用缩放按钮查看详细时间轴,并支持水平滚动。

## 预览与导出
- **预览**:提供播放、暂停和拖动预览功能,但可能有轻微卡顿,不影响最终输出。
- **导出命令**:**核心产出是 FFmpeg 命令字符串**。由于浏览器安全限制,命令中的文件路径仅包含文件名,用户需自行确保文件在同一目录或手动调整路径。

## 其他特性
- **完全离线**:加载后无需网络连接即可使用。
- **免费**:无需注册或付费。
28. Ultra-low-latency, batching and concurrent queue for IPC in Java (github.com)

CoralRing 是一个用于 Java 进程间通信(IPC)的超高性能、无锁、无垃圾回收、支持批处理的并发环形队列。它基于堆外共享内存,通过内存映射文件实现不同 JVM 之间的通信。其核心设计使用内存屏障(通过 volatile 操作)而非锁,以追求尽可能低的延迟。

关键特性与原理

  • 内存映射文件:共享内存大小不受物理内存限制,理论上由硬盘空间决定。但为实现最低延迟,应将文件置于 /dev/shm/ 目录下,使其内容完全驻留在 RAM 中。
  • 环形队列结构:即使使用小块内存,也能通过循环利用来传递无限数量的消息。

两种主要模式

  1. 等待环

    • 生产者和消费者在队列满或空时会等待。
    • 消费者按发送顺序读取消息。慢速消费者会阻塞生产者。
    • 可采用忙轮询(busy spin)或来自 CoralQueue 的等待策略。
  2. 非等待环

    • 生产者永不停歇,队列满时会覆盖最旧的消息。
    • 消费者若跟不上进度(落后 N 条消息,N 为队列容量),将被迫断开连接(availableToFetch() 返回 -1)。
    • 面临的主要问题:消费者可能与正在覆盖消息的生产者发生“碰撞”,导致读取到损坏的消息。

解决非等待环“碰撞”问题的方案

  • 设置落后容忍度:让消费者在落后未达到队列容量一定百分比时就提前断开,降低“碰撞”概率,但无法完全消除。
  • 使用消息校验和:生产者为每条消息附加校验和(如 xxHash),消费者通过验证校验和确保消息完整性。可完全消除损坏消息风险,但会带来微小性能开销。
  • 使用超大内存映射文件:分配足够大的文件(如 95GB),使生产者几乎无需环绕队列,从根本上避免碰撞。此方案还附带了消息持久化存盘的好处。

广播与多播

  • 等待广播环:支持单个生产者向多个消费者广播,每个消费者按序接收全部消息。慢速消费者可能阻塞生产者。
  • 非等待多播环:支持多个非等待消费者。消费者可随时加入或离开,不会影响生产者,且保证消息有序不丢失。

与 CoralQueue 的区别 CoralRing 专为不同 JVM 进程间的通信设计,而 CoralQueue 项目则适用于同一 JVM 内部的线程间通信。

29. FaSTer: Atari ST Digital Magazine (www.goto10retro.com)

FaSTer是一本独特的加拿大杂志,于1986年以软盘形式发行。其独特之处在于它通过软盘进行分发。作者在几个月前的一次Atari ST收藏中获得了一期FaSTer磁盘杂志,原以为是密封版,尽管仍处于收缩包装中,但实际上并未真正密封。作者此前从未听说过这本杂志。

32. Apple will now be treated like a bank (9to5mac.com)

苹果将面临银行式监管

由于Apple Pay的普及,美国消费者金融保护局(CFPB)决定将苹果公司纳入监管范围,此举通常适用于银行和金融服务公司。从下月起,CFPB将有权监督和规范苹果在移动钱包服务方面的政策与实践。

CFPB的角色与决定

CFPB是负责执行美国联邦消费者金融法律的机构,旨在确保消费者金融产品公平、透明且具有竞争力。去年,CFPB提出将移动支付服务更严格地视为类似银行的实体,赋予其更广泛的执行权力,以处理消费者投诉。该提案现已最终确定。

监管范围与原因

新规适用于每年处理超过5000万笔美元交易的数字钱包及支付应用公司。CFPB局长Rohit Chopra指出,监管决定源于数字支付已从“新鲜事物变为必需品”,其监管必须反映这一现实。目前,超过60%的美国人口使用移动钱包,其中Apple Pay最受欢迎。

苹果的应对与背景

苹果通常会在各国法律强制要求下才调整政策,但此次选择提前行动。此前,欧盟要求苹果开放NFC支付芯片的访问权限,苹果在全球范围内主动做出更改,以应对可能来自CFPB的类似监管要求。此前,苹果为推出“Apple Pay Later”曾获取银行牌照,后因可能面临更严格监管而撤回该服务。

总结

尽管苹果尚未成为正式银行,但CFPB的监管决定意味着,Apple Pay等服务将受到类银行的监督,反映出数字支付在金融生活中日益重要的地位。

33. Monocle: Optics Library for Scala (www.optics.dev)

Monocle: Scala的光学库摘要

目的:Monocle是一个Scala库,提供简单而强大的API,用于访问和转换不可变数据。它允许开发者通过焦点(optics)操作来定位和修改数据结构中的特定部分,同时保持数据的不可变性。

关键功能与代码示例

  • 焦点操作:使用focus方法结合lambda表达式定位数据字段。
    • replace:替换指定字段的值。
    • modify:修改字段的值,例如应用函数转换。
    • get:获取字段的当前值。
  • 不可变性:所有操作返回新数据结构,原始数据保持不变。
  • 代码示例
    import monocle.syntax.all._
    
    val user = User("Anna", Address(12, "high street"))
    // 替换用户姓名
    user.focus(_.name).replace("Bob")  // 结果: User("Bob", Address(12, "high street"))
    // 修改街道名称为大写
    user.focus(_.address.streetName).modify(_.toUpperCase)  // 结果: User("Anna", Address(12, "HIGH STREET"))
    // 获取街道号码
    user.focus(_.address.streetNumber).get  // 结果: Int = 12
    

安装与配置

  • 支持版本:Monocle支持Scala 2.13.x和3.x。
  • 依赖添加:在sbt构建文件中添加以下依赖项:
    libraryDependencies ++= Seq(
      "dev.optics" %% "monocle-core"  % "3.1.0",
      "dev.optics" %% "monocle-macro" % "3.1.0",
    )
    
  • 编译器选项:对于Scala 2.13,如果使用宏注解,需要添加编译器选项:
    Global / scalacOptions += "-Ymacro-annotations"
    

版权与许可证

  • 所有代码基于MIT许可证发布。
  • 设计受其他项目影响,特别是Haskell Lens库。
  • 版权属于维护者,时间范围为2016年至2021年。
34. From string to AST: parsing (2019) (kubuszok.com)

从字符串到抽象语法树:解析概述

解析是将字符序列(如CSV、JSON或编程语言代码)转换为结构化表示(如抽象语法树AST)的过程。其核心在于将输入基于明确的规则进行确定性解释,这与自然语言的歧义性相反。

形式语法与乔姆斯基层次

解析依赖于形式语法,它以无歧义的规则定义语言结构。语言学家诺姆·乔姆斯基提出生成语法,通过规则组合生成语言,并建立了乔姆斯基层次来分类形式语言:

  1. 类型-0(无限制文法):无限制,但难以处理。
  2. 类型-1(上下文相关文法):规则形如αAβ→αγβ,即替换发生在特定上下文中。
  3. 类型-2(上下文无关文法,CFG):规则形如A→γ。CFG易于分析,是大多数编程语言语法定义的基础。程序的语法分析通常基于CFG,之后再进行语义分析(如变量是否已定义)。
  4. 类型-3(正则文法):规则严格限制,对应正则语言,可用正则表达式描述。

正则语言与有限状态自动机

正则语言与有限状态自动机(FSA) 等价。正则表达式编译后实质上构建了一个FSA。

  • 确定性有限自动机(DFA):每个状态-输入对有唯一转移,行为确定。
  • 非确定性有限自动机(NFA):允许存在多条转移路径。NFA可以通过子集构造法转换为DFA,但最坏情况下状态数会指数增长。 正则表达式引擎通常通过模拟NFA或惰性构建DFA来实现,以在编译时间和运行效率间取得平衡。

上下文无关文法与下推自动机

处理CFG需要比FSA更强大的计算模型——下推自动机(PDA)。PDA在FSA基础上增加了一个,用于处理递归结构(如嵌套括号)。

  • PDA与CFG在描述能力上等价。
  • 实践中解析CFG主要有两种方法:
    • 自顶向下(LL):从根节点开始预测,需向前看k个符号,称为LL(k)。
    • 自底向上(LR):从叶子节点开始归约,同样可能需向前看,称为LR(k)。具体实现包括SLR、LALR等。

解析器组合子

传统上,解析器生成器(如Yacc/Bison)根据文法定义生成高效的PDA代码。而解析器组合子是现代的函数式方法,通过组合小型解析器函数来构建复杂解析器。

  • 优点:代码更直观、易维护,与宿主语言类型系统集成良好。
  • 原理:本质上是函数组合。一个解析器是一个函数,接受字符串输入,返回解析结果和剩余未解析的输入。
  • 示例:像Scala中的FastParse库,利用宏生成高性能代码,兼具组合子的灵活性和生成器的效率。

其他计算模型与语法

  • 图灵机(TM):等价于无限制文法,具有无限存储,是计算能力的理论上限。停机问题证明了其不可判定性。
  • 线性有界自动机(LBA):介于PDA与TM之间,等价于上下文相关文法

实践中的解析与编译

  1. 解析与AST:编译器的前端(词法分析、语法分析)负责生成AST。语法分析处理上下文无关部分,语义分析处理上下文相关部分(如类型检查)。
  2. 编译阶段分离:编译器可将过程分为多个阶段(如Scala编译器有20多个阶段),以提高可维护性并实现前后端分离(例如一个前端对应多个后端)。
  3. 错误处理:在解析器中提供有意义的错误信息具有挑战性,需要在文法中预见可能的错误并插入恢复规则。

总结

解析是将文本转化为结构化AST的关键步骤,其理论基础是形式语言与自动机理论。从正则表达式(正则文法/FSA)到解析器组合子(CFG/PDA的函数式实现),技术不断发展,使我们能够构建易于读写的编程语言和数据处理工具。

36. Spies Jumped from One Network to Another via Wi-Fi in an Unprecedented Hack (www.wired.com)

俄罗斯军事黑客组织APT28(隶属GRU情报机构)开发出一种名为“最近邻攻击”的新型Wi-Fi黑客技术。该技术不再需要特工物理靠近目标建筑,而是通过远程入侵目标附近其他建筑的网络设备,将其作为跳板,利用其Wi-Fi功能攻击最终目标网络。这种技术源于2018年荷兰行动失败后的战术演进,大幅降低了暴露风险。

攻击过程揭示
2022年初,Volexity在调查一起针对华盛顿特区客户的入侵事件时发现该技术。黑客首先入侵目标街道对面另一栋建筑的网络,控制一台已接入本地网络的笔记本电脑,并启用其Wi-Fi模块。随后,黑客利用窃取的凭证(可能因目标网络未启用双因素认证而有效)通过该笔记本的Wi-Fi接入点入侵目标网络。调查还发现存在“菊花链”式攻击:黑客可能已通过多个相邻网络的Wi-Fi逐步跳跃至最终目标。

攻击目标与背景
黑客攻击主要针对与乌克兰情报相关的个人。入侵时间集中在2022年2月俄罗斯全面入侵乌克兰前后。调查人员最终通过漏洞特征匹配(Windows打印后台处理程序漏洞)确认该攻击与APT28组织有关。

技术演进意义
这种远程“近邻攻击”是对传统“近距离访问”攻击的重大改进,既保留了Wi-Fi侵入的有效性,又避免了物理在场的风险。安全研究人员警告,此技术凸显了企业Wi-Fi安全需加强,建议采取限制Wi-Fi范围、修改网络名称、增强身份验证等措施以防范类似攻击。

37. AI eats the world (www.ben-evans.com)

根据文章内容,以下是作者近年来AI主题演讲活动的概述:

演讲合作对象

在过去几年中,作者为多家全球知名企业进行了AI相关主题的演讲,合作公司包括:

  • Alphabet
  • Amazon
  • AT&T
  • Axa
  • Bertelsmann
  • Deutsche Telekom
  • Hitachi
  • L’Oréal
  • LVMH
  • Nasdaq
  • Swiss Re
  • Warner Media
  • Verizon
  • Vodafone

近期演讲活动

作者近期参与了两个重要的行业活动并进行了演讲:

  1. 2025年秋季演讲:在芬兰赫尔辛基举办的 Slush 大会。
  2. 春季演讲:在新加坡举办的 SuperAI 活动。

文中提及这两次演讲的视频可供观看。