2025-05-06

37 篇热帖

2. Gemini 2.5 Pro Preview (developers.googleblog.com)

Explore the new Gemini 2.5 Pro I/O Edition, featuring enhanced coding performance, video to code capabilities, and improvements for front-end web development.

3. The curse of knowing how, or; fixing everything (notashelf.dev)

A reflection on control, burnout, and the strange weight of technical fluency.

5. OpenAI reaches agreement to buy Windsurf for $3B (www.bloomberg.com)

Bloomberg connects decision makers to a dynamic network of data, delivering business and financial information, news and insights globally.

7. As an experienced LLM user, I don't use generative LLMs often (minimaxir.com)

But for what I do use LLMs for, it’s invaluable.

8. Show HN: Real-time AI Voice Chat at ~500ms Latency (github.com)

Have a natural, spoken conversation with AI! Contribute to KoljaB/RealtimeVoiceChat development by creating an account on GitHub.

9. Google has most of my email because it has all of yours (2014) (mako.cc)

Republished by Slate. Translations available in French (Français), Spanish (Español), Chinese (中文) For almost 15 years, I have run my own email server which I use for all of my non-work corresponde…

10. Nnd – a TUI debugger alternative to GDB, LLDB (github.com)

Nnd 是一款为 Linux 设计的终端用户界面 (TUI) 调试器,可作为 GDB 和 LLDB 的替代品,其设计部分受到了 RemedyBG 的启发。

主要特性:

  • 快速: 用户界面响应迅速,操作即时,无卡顿或长时间等待。目前在线程数量极多(约>2k)时会变慢。
  • TUI 界面: 提供基于文本的交互界面。
  • 独立实现: 不依赖 GDB 或 LLDB,大部分功能从头开始编写。
  • 高效处理: 能够高效处理大型可执行文件。加载调试信息、搜索函数/类型等耗时操作具备多线程、异步、可取消及进度显示等特性。
  • 功能全面: 已包含大多数标准调试功能,如断点(含条件与数据断点)、各种步进操作、代码与反汇编显示、监视表达式、内置的 C++/Rust 标准库美化打印器,以及一些提升效率的特性(如基于虚表的自动向下转型)。
  • 轻量分发: 以单一的、无依赖的可执行文件形式分发,大小约 6MB。

已知限制:

  • 仅支持 Linux 操作系统。
  • 仅支持 x86-64 架构。
  • 仅适用于原生代码(如 C++、Rust、Zig、Odin),不支持 Java 或 Python 等。
  • 仅提供 TUI 界面,没有命令行交互、图形用户界面或 IDE 集成。
  • 不支持远程调试(但可通过 SSH 使用)。
  • 仅支持单进程,不跟踪 fork 创建的子进程。
  • 不支持录制/回放或反向步进功能。

开发状态: 开发者日常使用此调试器并认为其非常有帮助。目前未进行积极开发,主要工作是修复报告的错误和添加小型功能请求。大型功能(如重构监视表达式语言以支持循环、ARM 支持、macOS 支持、图形界面、调试适配器协议)短期内不太可能实现。

获取与构建: 用户可通过 curl 命令下载预编译的可执行文件,或使用 Rust 工具链从源码构建。运行 nnd --help 可获取使用文档。

11. How to harden GitHub Actions (www.wiz.io)

GitHub Actions 安全强化指南概要

本文是一份针对 GitHub Actions 的实用安全加固指南,旨在回应近年来(特别是2025年tj-actions事件及2026年持续发生的供应链攻击)日益增长的安全威胁。其核心是提供一套多层次的防御策略,从组织配置到工作流编写,再到运行时环境,以系统性地降低风险。

一、 核心安全威胁

  1. 凭证泄露与横向移动:近期攻击(如2026年的TeamPCP/Trivy-action和Axios事件)的共同主线是,通过污染工作流窃取凭证(如个人访问令牌PAT),进而危害代码仓库、包管理器等下游系统。
  2. 中毒管道执行(PPE):攻击者通过控制输入数据(如PR标题、文件内容)或利用高危触发器,在CI/CD管道中执行恶意代码。
  3. 供应链攻击:第三方Action或依赖项被篡改,导致在数小时内影响大量流水线。

二、 GitHub环境加固(组织与仓库级配置)

  1. 设置最小权限:将默认工作流令牌权限设为只读
  2. 限制可用Action:仅允许已验证的Action或通过允许列表批准的Action。自2025年8月起,可强制实施SHA钉扎(不允许未钉扎的Action运行)并快速阻止特定Action。
  3. 管控工作流与运行器:使用仓库允许列表限制工作流创建位置;限制自托管运行器的使用范围,避免用于公共仓库。
  4. 禁用危险设置:避免启用“允许GitHub Actions创建和批准拉取请求”。
  5. 强化分支保护:启用相关规则(如要求批准、驳回过期批准)以防止“批准后恶意提交”和“拉取请求劫持”等攻击。
  6. 为维护者启用不可变发布:防止发布后标签和资产被篡改。
  7. 分层管理秘密:优先使用仓库级秘密;对跨仓共享凭证使用组织级秘密;对部署等高危操作使用环境级秘密并配合审批。注意:拥有写权限的用户可访问仓库所有秘密。

三、 编写安全的工作流

  1. 精细控制权限:在工作流级别显式设置permissions: {},然后在Job级别按需授权,强制实施最小权限原则。
  2. 谨慎使用第三方Action
    • 优先选择:GitHub官方或经验证的Action。
    • 必须钉扎:使用提交SHA进行钉扎,而非仅依赖标签。
    • 评估风险:考量贡献者数量、代码复杂度、流行度。
    • 采用冷却期:在采纳新版本Action前延迟7-14天,以捕获多数短期供应链攻击。
    • 进行静态分析:使用zizmor等工具在CI中检测常见漏洞。
  3. 最小化秘密暴露
    • 将秘密仅传递到需要它的具体步骤(Step)的env中。
    • 避免访问整个secrets上下文或使用secrets: inherit
    • 分解工作流,隔离需要高权限秘密的Job。
  4. 规避常见漏洞
    • 警惕高危触发器pull_request_targetworkflow_run在基础仓库上下文中运行,拥有高权限。避免在其中检出并执行来自分叉的不受信代码。
    • 防止命令注入:避免将不受信输入(如PR标题、分支名)直接插入run:脚本。应对输入进行验证或通过显式参数传递。
    • 安全处理工件与凭证:设置actions/checkoutpersist-credentials: false以防止凭证意外泄露到工件中。谨慎向GITHUB_ENVGITHUB_PATH写入内容。

四、 安全运行工作流

  1. 自托管运行器风险极高:仅在受信任的私有仓库中使用,并将其视为敏感生产基础设施进行监控、日志记录和定期重建(使用临时基础设施)。严禁在公共仓库中使用。
  2. 实施网络出站控制:对自托管运行器执行默认拒绝出站策略,仅允许访问必要的仓库和API。
  3. 隔离高价值凭证:考虑使用GitHub Apps来管理发布/部署等操作的凭证,将其与工作流代码隔离,减少爆炸半径。
  4. 使用短期凭证:优先采用OIDC向云服务提供商进行身份验证,获取短期令牌,而非长期静态秘密。

五、 未来趋势与工具支持

  • GitHub 2026路线图:将引入工作流依赖锁文件、集中式工作流执行保护策略和评估模式,以简化大规模安全强制。
  • Wiz平台能力:提供工作流安全姿态评估、过度权限检测、SBOM中的Actions依赖可视化、技术栈检测及针对常见风险的内置检测规则。
  • 推荐开源工具zizmor(静态分析)、trajan/Gato-X(测试)、allstar(策略强制)。

六、 核心要点总结

  1. 最小化第三方攻击面:严格限制、SHA钉扎并延迟采纳第三方Action。
  2. 最小化权限与秘密:遵循最小权限原则配置工作流权限和秘密访问,优先使用OIDC。
  3. 防范中毒管道执行:严格审计高危触发器和任何攻击者可控的工作流元素。
13. Sneakers (1992) – 4K makeover sourced from the original camera negative (www.blu-ray.com)

Sneakers 4K Blu-ray Release Date April 22, 2025. Blu-ray reviews, news, specs, ratings, screenshots. Cheap Blu-ray movies and deals.

16. FTC rule on unfair or deceptive fees to take effect on May 12 (www.ftc.gov)

Staff of the Federal Trade Commission published Frequently Asked Questions (FAQs) designed to pro

17. New studies offer insight into Lyme disease’s treatment, lingering symptoms (news.northwestern.edu)

In two new studies led by bacteriologist Brandon L. Jutras, Northwestern scientists have identified an antibiotic that cures Lyme disease at a fraction of the dosage of the current “gold standard” treatment and discovered what may cause a treated infection to mimic chronic illness in patients.

19. Replacing Kubernetes with systemd (2024) (blog.yaakov.online)

In this post I go through the journey of overusing Kubernetes and how systemd can actually do most of what I use it for.

20. Inheritance was invented as a performance hack (2021) (catern.com)

继承最初是作为性能优化手段被发明的。它由 Simula 语言引入,主要出于两个核心动机:简化垃圾回收器和支持侵入式链表

1. 简化垃圾回收器

Simula 的垃圾回收器基于引用计数和一种简单的“兜底”回收机制。这种简化的实现导致了一个问题:一个对象(在 Simula 中称为“进程”)可能存活时间超过其创建所在的动态父作用域(栈帧),从而导致通过形参访问已释放的内存。为了规避这个问题,Simula 的设计者禁止了进程之间的多种按名调用参数,包括过程、标签和开关。这实际上削弱了语言表达能力(特别是限制了组合/参数化的灵活性),因为他们无法使用组合来定制具有共同属性的类。作为替代方案,他们发明了继承(当时称为“前缀”),以在不依赖复杂参数传递的情况下实现代码复用和定制。

2. 支持侵入式链表

Simula 最初使用传统链表(称为“集合”),其节点(称为“元素”)需要单独分配内存,导致内存开销和碎片化。他们意识到侵入式链表更高效——链表节点内嵌在对象结构中,无需额外分配。然而,侵入式链表要求对象的定义中包含链表节点(即“链接”)的结构。传统的组合方法无法优雅地实现这一点。解决方案正是继承(“前缀”):让特定类型(如卡车、公交车)的对象继承自一个通用的链表节点(“链接”)基类。这样,每个对象实例本身就包含了链表所需的节点,从而高效地将对象“挂载”到链表中。

结论

继承的诞生本质上是出于对性能实现简便性的考量(简化GC、实现高效侵入式链表),而非今日通常所强调的代码复用与扩展性。尽管 Simula 奠定了现代面向对象编程的多项基础,但继承作为最初的设计决策,与内存管理和数据结构效率紧密相关。

21. An appeal to Apple from Anukari (anukari.com)

Captain's Log: Stardate 78809.2

22. Analyzing Modern Nvidia GPU Cores (arxiv.org)

Abstract page for arXiv paper 2503.20481: Analyzing Modern NVIDIA GPU cores

24. DoorDash to acquire Deliveroo (www.cnbc.com)

British food delivery firm Deliveroo on Tuesday said it has agreed to a takeover offer from American rival DoorDash that values the company at £2.9 billion.

26. docker2exe: Convert a Docker image to an executable (github.com)

Convert a Docker image to an executable. Contribute to rzane/docker2exe development by creating an account on GitHub.

28. Design and evaluation of a parrot-to-parrot video-calling system (2023) (www.smithsonianmag.com)

Wild parrots tend to fly in flocks, but when kept as single pets, they may become lonely and bored

30. Cuttlefish 'talk' with their arms, study reveals (scienceblog.com)

Scientists have discovered that cuttlefish use distinct arm movements to communicate with each other, adding another dimension to these already remarkable marine creatures. Researchers from the École Normale Supérieure in Paris and the Italian Institute of Technology have identified specific arm gestures they’ve named “arm wave signs” that appear to serve as a communication system ... Read more

31. Mass spectrometry method identifies pathogens within minutes instead of days (phys.org)

Traditionally, bacterial diseases are diagnosed by the tedious isolation of pathogens and the creation of bacterial cultures. Waiting times of several days are the rule here. Only then can targeted treatment of the disease begin.

32. Show HN: TextQuery – Query CSV, JSON, XLSX Files with SQL (textquery.app)

TextQuery is a desktop app to import data file as a table, query it using SQL.

33. Pixels in Islamic Art: Square Kufic Calligraphy (2020) (uwithumlaut.wordpress.com)

When I was a little kid whenever we drove by mosques, I would be intrigued by the complex motifs they’re decorated by. I always tried to figure out the pattern; to me it was just a pattern, I never thought it can be writing because they didn’t look like letters from any alphabet I knew…

34. Show HN: Plexe – ML Models from a Prompt (github.com)

Plexe:从提示构建机器学习模型

Plexe 是一个 AI 驱动的工具,它允许用户通过自然语言描述来创建机器学习模型。用户只需提供数据集和用自然语言表达的意图,该系统通过自动化的多智能体方法即可构建出功能完整的模型。该项目由 Y Combinator 支持,同时也提供托管云服务。

主要特性

  • 多智能体架构:系统采用 14 个专门的 AI 智能体,涵盖数据与任务分析、指标选择、假设生成与模型搜索、评估以及打包部署等六个阶段。
  • 自动化模型构建:支持使用 XGBoostCatBoostLightGBMKerasPyTorch 为表格数据构建模型。输出是一个独立的模型包,不依赖 Plexe 本身。
  • 开箱即用的 Docker 镜像:提供了包含 PySpark、Java 和所有依赖项的预配置 Docker 镜像,方便运行。
  • YAML 配置:可以通过配置文件(config.yaml)自定义 LLM 路由、搜索参数、Spark 设置等。
  • 多 LLM 提供商支持:通过 LiteLLM 集成,支持 OpenAI、Anthropic、Ollama 等多种提供商,并允许为不同的智能体分配不同的模型。
  • 实验仪表板:内置 Streamlit 仪表板,用于可视化实验结果、搜索树和评估报告。
  • 可扩展性:通过 WorkflowIntegration 接口,可以连接自定义的存储、跟踪和部署基础设施。

快速入门

安装

pip install plexe
export OPENAI_API_KEY=<your-key>
export ANTHROPIC_API_KEY=<your-key>

使用示例

  • 命令行:提供数据集文件和自然语言意图。
    python -m plexe.main \
        --train-dataset-uri data.parquet \
        --intent "predict whether a passenger was transported" \
        --max-iterations 5
    
  • Python API:调用 main 函数,获取最佳解决方案、评估指标和报告。
    from plexe.main import main
    from pathlib import Path
    
    best_solution, metrics, report = main(
        intent="predict whether a passenger was transported",
        data_refs=["train.parquet"],
        max_iterations=5,
        work_dir=Path("./workdir"),
    )
    

安装选项

支持通过额外的依赖项进行灵活安装:

  • 框架catboostlightgbmpytorch
  • 任务tabularvision
  • 平台pysparkaws
  • 示例pip install "plexe[tabular,pyspark]"

要求 Python 版本 >= 3.10 且 < 3.13。

文档与社区

完整文档请访问 docs.plexe.ai。项目欢迎社区贡献,相关指南见 CONTRIBUTING.md,开发者也可以在 Discord 上交流。

该项目采用 Apache-2.0 许可证。

35. Propositions as Types (2014) [pdf] (homepages.inf.ed.ac.uk)

《命题即类型》(2014) 摘要

本文阐述了“命题即类型”这一深刻原理,它揭示了逻辑与计算之间的一种惊人联系,如同笛卡尔坐标连接了几何与代数。

核心原则

“命题即类型”(也称柯里-霍华德同构)指出,在给定的逻辑系统与编程语言之间存在一种深层同构关系:

  1. 命题对应类型:逻辑中的每个命题都对应编程语言中的一个类型。
  2. 证明对应程序:一个命题的证明对应于相应类型的一个程序(项)。
  3. 证明化简对应程序求值:证明的规范化/化简过程恰好对应于程序的求值/执行过程。 这并非简单的表面映射,而是保留了证明与程序、化简与求值深层结构的同构。

意义与范围

  • 深度:该原理不仅是命题与类型的双射,更是证明/程序及化简/求值过程的同构。
  • 广度:它适用于广泛的逻辑系统(如直觉主义、经典、模态、线性逻辑)和计算范式。它奠定了函数式编程的基础,并解释了函数、记录、变体、参数多态、数据抽象、续体、线性类型和会话类型等特性。
  • 影响:该原理启发了众多证明助手(如Agda, Coq, NuPRL)和编程语言(如ML, Haskell, Scala)的设计。

历史渊源

  • 逻辑与计算的并行发展:20世纪30年代,阿隆佐·邱奇发展了λ演算以定义“有效可计算性”,并证明了判定问题的不可解性。几乎同时,格哈德·根岑引入了自然演绎和矢列演算,以建立逻辑系统的一致性。
  • 连接的发现:1934年,哈斯凯尔·柯里观察到函数类型与蕴涵命题的对应。1969年(1980年正式发表),威廉·霍华德明确阐述了自然演绎与简单类型λ演算之间的完整对应,并将其扩展到谓词逻辑(通过引入依赖类型)。他揭示了核心的第三层联系:证明化简即程序求值。
  • 独立发展与统一:此后,该对应关系在多个领域被独立发现或发展,例如德布鲁因的Automath、马丁-洛夫的类型论、吉拉尔的系统F(二次λ演算)与雷诺兹的独立工作、以及欣德利与米尔纳独立发展的类型系统。

扩展与应用

该原理从直觉主义逻辑和简单类型λ演算出发,已扩展到:

  • 经典逻辑:通过格里芬和穆尔蒂等人发现,对应于带有call/cc操作符的计算和续体传递风格变换。
  • 模态与线性逻辑:对应于分阶段计算、分布式计算等概念,并与单子、会话类型等相关联。
  • 理论基础:范畴论中的笛卡尔闭范畴为简单类型λ演算和直觉主义自然演绎提供了共同的数学模型。同伦类型论(HoTT)将拓扑学引入这一图景。

结论

“命题即类型”揭示了编程语言设计与逻辑基础中某些方面的绝对性与普适性。尽管人类可能在不同的宇宙中发现不同的物理常数,但难以想象存在不遵循基本逻辑规则的世界。因此,λ演算与自然演绎的这种对应关系,其普适性可能超越了“通用”语言的范畴,具有更根本的意义。

(附录部分包含了作者与威廉·霍华德的通信记录,其中霍华德澄清了其思想的起源、影响以及与柯里等人工作的关系。)

36. Databricks in talks to acquire startup Neon for about $1B (www.upstartsmedia.com)

Acquisition-hungry data and AI unicorn Databricks is in talks to buy the startup behind a popular open-source version of Postgres, sources tell Upstarts Media.

37. The Turkish İ Problem and Why You Should Care (2012) (haacked.com)

土耳其语I字符问题及解决方案

问题描述

在土耳其语(文化代码tr-TR)环境下,将字符串"interesting"转换为大写后与"INTERESTING"比较,结果可能为False。这是因为:

  • 英语中i的大写形式是I(无点)
  • 土耳其语中i的大写形式是İ(有点),形成了四种变体(大写带点、大写不带点、小写带点、小写不带点)

影响范围

即使应用程序仅支持英语,也可能受影响。当用户系统使用土耳其语区域设置时,字符串操作可能产生意外结果,甚至导致安全漏洞。

解决方案

推荐使用序号字符串比较(Ordinal或OrdinalIgnoreCase),而非依赖于文化敏感的比较。示例:

bool comparison = input.ToUpper().Equals("INTERESTING", StringComparison.OrdinalIgnoreCase);

代码分析工具集成

配置方法

  1. 创建规则集文件.ruleset),初始包含关键规则(如CA1309):

    <RuleSet Name="ImportantRules">
      <Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis">
        <Rule Id="CA1309" Action="Error" />
      </Rules>
    </RuleSet>
    
  2. 项目配置

    • 在项目属性“代码分析”选项卡中启用分析
    • 选择“所有配置”
    • 加载自定义规则集文件

逐步优化策略

  1. 初始阶段:从单条规则开始(如CA1309),确保构建失败以强制修复
  2. 扩展规则:按重要性逐步添加更多规则(如全局化、安全性、性能等规则)
  3. 反向管理:当规则数量较多时,可改为排除不重要的规则:
    <RuleSet Name="ComprehensiveRules">
      <IncludeAll Action="Error" />
      <Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis">
        <Rule Id="CA1704" Action="None" /> <!-- 示例:禁用特定规则 -->
      </Rules>
    </RuleSet>
    

注意事项

  • 优先处理严重违规项,对于无法立即修复的大量违规,可临时抑制但确保新代码不再引入
  • 规则集文件可通过Visual Studio图形界面编辑,也可直接修改XML
  • 适用于.NET项目,尤其推荐在新项目或重大重构时启用

推荐的规则类别

可参考以下代码分析规则类别(选择性启用):

  • 全局化规则(Globalization)
  • 安全性规则(Security)
  • 设计规则(Design)
  • 性能规则(Performance)
  • 可靠性规则(Reliability)

通过系统化实施代码分析,可有效预防土耳其语I问题及其他区域性相关错误。