分类: 开发

Claude Code 的钩子函数:扩展功能的强大工具

2025-07-01
Claude Code 的钩子函数:扩展功能的强大工具

Claude Code 引入了钩子函数这一强大功能,允许用户自定义 shell 命令在 Claude Code 的生命周期中不同阶段执行。这使得用户可以精确控制 Claude Code 的行为,例如自动代码格式化、日志记录、自定义权限控制等等,将原本依赖 LLM 判断的建议转化为可靠的应用级代码。钩子函数使用简单,配置灵活,但需注意安全风险,确保命令安全可靠。

arXivLabs:与社区协作者共建arXiv新功能

2025-07-01
arXivLabs:与社区协作者共建arXiv新功能

arXivLabs是一个开放平台,允许开发者与arXiv社区合作,直接在网站上开发和分享arXiv的新功能。参与者必须遵守arXiv的开放、社区、卓越和用户数据隐私的价值观。你有好的想法吗?加入arXivLabs,为arXiv社区创造价值!

开发

高通开源EUD:无需外接调试器即可进行芯片级调试

2025-07-01
高通开源EUD:无需外接调试器即可进行芯片级调试

高通悄然开源了其嵌入式USB调试(EUD)接口的源代码,这使得开发者能够通过USB接口直接进行SWD调试,无需外接JTAG调试器。EUD接口自2018年以来已集成到几乎所有高通SoC中,它允许调试CPU和Hexagon协处理器。虽然开源代码初期存在一些编译问题,但社区已迅速修复。该项目支持Snapdragon 845、855和865等芯片,为U-Boot和安全世界调试提供了便利,但对内核调试的支持仍有限制,且SMP支持尚不完善。

开发 EUD

Nimtable:Apache Iceberg™ 的控制面板

2025-07-01
Nimtable:Apache Iceberg™ 的控制面板

Nimtable 是一个轻量级、易于使用的平台,用于监控、优化和管理基于 Iceberg 的湖仓。它提供了一个基于 Web 的界面,方便用户浏览表、运行查询、分析文件分布和优化存储布局。Nimtable 支持多种目录(REST Catalog、AWS Glue、AWS S3 表和 PostgreSQL),并与 S3 等对象存储无缝集成。此外,它还提供交互式查询、AI 辅助功能(例如 AI 表格摘要和智能建议)、文件分布分析以及表优化功能(例如文件压缩和快照过期管理)。

开发 湖仓

C语言中的类型安全泛型数据结构:一种巧妙的联合体用法

2025-07-01
C语言中的类型安全泛型数据结构:一种巧妙的联合体用法

本文介绍了一种在C语言中实现类型安全泛型数据结构的技巧,它巧妙地利用联合体将类型信息与泛型数据结构关联起来。作者以链表为例,展示了如何通过宏定义和联合体实现类型检查,避免了传统泛型方法带来的类型不安全和代码膨胀问题。文章还比较了使用`void*`和灵活数组成员的两种方法,并最终实现了编译时类型安全检查,使得在添加错误类型时编译器就能报错。

开发

AI 辅助 LLVM 编译器优化:一个 ASN.1 序列化故事

2025-07-01

作者在维护一个 Rust 的 ASN.1 DER 序列化库时,发现整数长度计算的代码效率低下。他尝试使用 Claude AI 优化代码,并利用 Alive2 形式验证工具验证结果。令人惊讶的是,Claude AI 甚至帮助作者生成了一个 LLVM 编译器优化的补丁,并通过了代码审查,最终提交到 LLVM 项目。这展现了 AI 在软件开发,特别是编译器优化领域的巨大潜力,同时也强调了在使用 AI 工具时进行人工审查的重要性。

开发

Vercel BotID 逆向工程:一个过于基础的反机器人系统?

2025-06-30

本文深入分析了 Vercel 新推出的 BotID 反机器人系统,特别是其免费的 Basic 模式。作者发现,Basic 模式目前的检测机制过于简单,很容易通过修改浏览器属性等方式绕过。虽然 BotID 收集了包括浏览器指纹、GPU 信息等多种信号,但这些信号的处理方式过于基础,无法有效识别复杂的机器人。作者推测 Vercel 正在利用 Basic 模式收集数据,为未来更强大的反机器人模型训练做准备。付费的 Deep Analysis 模式则使用了 Kasada 的反机器人脚本,其复杂程度远高于 Basic 模式。

开发

TokenDagger:OpenAI TikToken 的高性能替代方案

2025-06-30
TokenDagger:OpenAI TikToken 的高性能替代方案

TokenDagger 是 OpenAI TikToken 的一个高性能替代品,针对大规模文本处理进行了优化。基准测试显示,在代码标记化方面,TokenDagger 的速度是 TikToken 的 4 倍以上,整体吞吐量提升 2 倍。该项目基于优化的 PCRE2 正则表达式引擎,并简化了字节对编码 (BPE) 算法,从而减少了大型特殊标记词汇表对性能的影响。开发者只需简单的几行命令即可安装和运行 TokenDagger,并进行性能测试。

Ensō「秘法吸血基努」版本公开测试

2025-06-30
Ensō「秘法吸血基努」版本公开测试

Ensō 的新版本「秘法吸血基努」已开放公众测试!此版本专注于简化 UI,提升易用性和隐私性。新增“咖啡店模式”,隐藏文本内容以保护隐私;提供多种易访问的主题,并改进文本渲染引擎。未来将添加 RTL 语言支持和更多功能,但目前版本已极大提升用户体验。

开发 Ensō UI 更新

C语言指针别名与编译器优化:一场关于源码安全的博弈

2025-06-30
C语言指针别名与编译器优化:一场关于源码安全的博弈

本文深入探讨了C语言中指针别名对程序优化的影响。指针别名是指两个指针指向同一内存对象。编译器在优化代码时,需要进行别名分析,以判断指针是否别名。如果误判,则可能导致程序错误或性能下降。文章以一个计算倒数的例子说明,当两个指针可能别名时,编译器无法进行某些优化,因为这可能会改变程序的算法。作者还讨论了C语言中用于辅助别名分析的机制,例如restrict指针限定符和volatile限定符,以及一些高级别名分析技术,例如基于类型的别名分析和基于流的别名分析。最后,作者提出了一种新的指针别名分析模型,该模型考虑了指针的生命周期和信息流,旨在提高编译器的优化效率和程序的安全性。

开发 指针别名

用丢番图不等式建模API速率限制

2025-06-30

本文探讨了如何用数学方法,特别是丢番图不等式,来解决API速率限制问题。作者以一个每小时允许10次请求,每个任务尝试三次的场景为例,展示了如何将任务调度问题转化为整数可行性问题。通过分析任务的重试模式和时间窗口,作者建立了一个不等式模型,并用Go语言编写了一个程序来判断是否可以安全地调度新的任务,避免超过速率限制。文章最后还提到了优化算法的思路,将时间复杂度从O(n^2)降低到O(n*log(n))。

在Linux上为Windows交叉编译Raylib Lisp绑定和游戏

2025-06-30

本文介绍了如何在Linux上为Windows交叉编译C代码和SBCL Lisp程序,以及如何在Linux上的Emacs中使用Wine运行Windows版本的SBCL,并加载.dll文件到Lisp镜像中,最终生成.exe可执行文件。作者详细介绍了使用mingw-w64-toolchain交叉编译C代码,以及如何配置Raylib库进行交叉编译,生成.dll文件。此外,文章还阐述了在Wine环境下安装和使用SBCL,并利用vend管理依赖项,最终通过sb-ext:save-lisp-and-die函数生成Windows可执行文件。

开发

arXivLabs:与社区协作者的实验性项目

2025-06-30
arXivLabs:与社区协作者的实验性项目

arXivLabs是一个框架,允许协作者直接在arXiv网站上开发和分享新的arXiv功能。参与arXivLabs的个人和组织都认同并接受了arXiv关于开放性、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,并且只与遵守这些价值观的合作伙伴合作。如果你有想法能够为arXiv社区增值,那就了解更多关于arXivLabs的信息吧!

开发

Rust 异常处理的演进:从巨型枚举到精巧的错误集

2025-06-30

Rust 的异常处理一直存在争议。传统的做法是为每个模块或整个 crate 定义一个巨大的错误枚举,导致代码臃肿且难以维护。文章探讨了替代方案:使用结构体表示单个错误,并使用 `error_set` crate 等工具管理错误集。`error_set` 通过宏简化了错误枚举的定义和转换,并支持错误集的组合和子集关系,使错误处理更清晰、高效。虽然对于需要携带额外信息的复杂错误,仍需额外的工作,但 `error_set` 提供了一种更优雅、可维护的 Rust 异常处理方式。

开发 error_set

Go语言高性能事件分发器:速度提升4-10倍

2025-06-30
Go语言高性能事件分发器:速度提升4-10倍

这个Go语言库提供了一个高性能的进程内事件分发器,用于解耦模块并实现异步事件处理。它支持同步和异步处理,速度快、简单易用。基准测试显示其速度比通道快4到10倍,每秒处理数百万个事件。适用于进程内模块解耦、轻量级发布/订阅模式和高吞吐量场景,但不适用于进程间通信、事件持久化或高级路由等复杂场景。

开发 事件分发

Depot API:构建可扩展的客户容器基础设施

2025-06-30
Depot API:构建可扩展的客户容器基础设施

许多SaaS平台需要为客户运行代码,这带来了容器构建的挑战。本文介绍如何使用Depot API构建工具,为多租户SaaS平台创建隔离的构建环境。通过Go语言客户端,可以创建项目、管理项目缓存、获取构建指标和日志。Depot API支持Buf.build,提供多种语言的客户端库,方便集成到现有基础设施。文章详细讲解了创建项目、删除项目、重置项目缓存、获取构建指标和详细步骤的方法,最终实现可扩展、安全的客户容器基础设施。

开发 Depot API

Python dataclasses 的 kw_only 参数:增强可维护性和扩展性

2025-06-30

Python 的 dataclasses 提供了一种便捷的方式来创建数据类,但其默认的 `__init__` 方法使用位置参数,可能导致代码难以维护和扩展。本文介绍了 `kw_only=True` 参数,它强制使用关键字参数,从而避免了参数顺序改变带来的问题,并允许子类灵活地添加必填字段。虽然该参数在 Python 3.10 中引入,但文章也提供了兼容旧版本的方案。

Knuth的“过早优化是万恶之源”被误用了?

2025-06-30
Knuth的“过早优化是万恶之源”被误用了?

本文深入探讨了Donald Knuth的名言“过早优化是万恶之源”的实际含义。作者通过分析Knuth论文中关于使用goto语句和多重集合实现的例子,指出这句名言并非完全反对所有的小优化。作者通过实验比较了不同实现方式的性能,发现对于关键代码和常用库函数,即使是微小的优化(例如循环展开)也可能带来显著的性能提升,这取决于代码的基准测试结果。作者最终建议使用经过良好优化的标准库函数,以避免不必要的优化工作,并充分利用现代编译器的优化能力。

开发

绕过恶意软件虚拟机检测:自定义SMBIOS欺骗CPU风扇

2025-06-30

恶意软件常通过检查虚拟机中缺失的硬件组件(如CPU风扇)来躲避分析。本文介绍了如何通过修改虚拟机的SMBIOS数据,伪造CPU风扇信息,从而绕过这种检测。作者详细描述了在Xen和QEMU/KVM环境下操作的步骤,包括获取SMBIOS数据、创建自定义SMBIOS文件以及配置虚拟机。文中还提及了在Xen环境下需要额外处理SMBIOS Type 28(温度探头)数据才能成功欺骗WMI。

开发 SMBIOS

NativeJIT:Bing搜索引擎的高性能JIT编译器

2025-06-30
NativeJIT:Bing搜索引擎的高性能JIT编译器

NativeJIT是一个开源的跨平台库,用于高性能即时编译包含C数据结构的表达式。它由Bing团队开发,用于Bing搜索引擎中的文档评分,以提高搜索结果的相关性。NativeJIT轻量快速,无需依赖除标准C++运行时之外的任何库,并在Linux、OSX和Windows上运行。其生成的代码经过优化,特别关注寄存器分配,能够高效处理大规模查询。

开发

用Ampere Altra打造经济实惠的开发机器

2025-06-30
用Ampere Altra打造经济实惠的开发机器

作者为了满足64k页大小的需求,决定组装一台基于Ampere Altra的开发机器。他选择了AsrockRack ALTRA8BUD-1L2T主板,二手Q80-30处理器(80核心,3.0 GHz),Arctic Freezer 4U-M散热器,以及八条16GB SK Hynix HMA82GR7CJR8N-XN内存条。经过一些调试,系统成功运行。他还选择了一个合适的机箱和电源,并添加了NVME存储和显卡。最终花费约1800欧元,略高于预期。未来计划安装Fedora 42,创建RHEL和CentOS Stream虚拟机,并尝试使用不同显卡和作为桌面使用。

LLVM-MCA性能分析:向量化优化的陷阱

2025-06-29
LLVM-MCA性能分析:向量化优化的陷阱

作者在使用ARM NEON进行向量化优化时遇到性能下降问题。初始代码使用五个加载指令(5L),优化后代码使用两个加载指令和三个扩展指令(2L3E),旨在减少内存访问。然而,2L3E版本反而更慢。利用LLVM-MCA工具进行性能分析,发现2L3E版本导致CPU执行单元出现瓶颈,资源利用不均衡,指令依赖性更强,最终导致性能下降。5L版本因其更均衡的资源利用和独立的加载指令而表现更佳。该案例说明了即使看似合理的优化,也可能因未考虑CPU资源竞争和指令依赖性而导致性能下降,LLVM-MCA是分析此类问题的有力工具。

开发 LLVM-MCA

布隆过滤器:高效的概率数据结构

2025-06-29

布隆过滤器是一种概率数据结构,用于快速、高效地判断一个元素是否在一个集合中。它通过哈希函数将元素映射到位向量中的多个位,设置这些位为1。查询时,同样进行哈希,如果所有对应位都为1,则元素可能在集合中;否则,元素一定不在集合中。布隆过滤器存在误判的可能性,但其空间效率和速度优势使其在处理大规模数据时非常实用。文章详细介绍了布隆过滤器的原理、哈希函数选择、大小选择以及实际应用场景,并列举了不同系统中布隆过滤器的实现方式。

开发

Octelium:零信任访问平台,颠覆传统VPN

2025-06-29
Octelium:零信任访问平台,颠覆传统VPN

Octelium是一个免费开源的、自托管的零信任资源访问平台,旨在替代传统的远程访问VPN。它功能强大,可作为零配置远程访问VPN、ZTNA平台、安全隧道基础设施、API网关、AI网关、MCP网关和A2A架构基础设施、安全匿名容器化应用托管平台、Kubernetes网关/入口/负载均衡器,甚至家用实验室基础设施。Octelium提供可扩展的零信任架构(ZTA),通过WireGuard/QUIC隧道和公共无客户端访问,实现基于身份的、应用层(L7)感知的无密钥安全访问。

Windows 95 插件即插即用背后的“版权大战”

2025-06-29
Windows 95 插件即插即用背后的“版权大战”

Windows 95 的即插即用功能的实现并非一帆风顺。为了让旧硬件兼容新功能,工程师们费尽心思。一个有趣的案例是,一些厂商为了免费获得LitWare文字处理软件的完整版,会在BIOS中添加“Not Copyright Fabrikam Computer”字符串,从而欺骗软件的授权检测机制,绕过试用版限制。这展现了早期PC兼容性挑战以及厂商之间为争取软件授权而采取的策略。

开发 即插即用

IPv4 断连?Linux、WireGuard 和 Hetzner 拯救我的互联网!

2025-06-29

一次停电后,我的 IPv4 互联网连接中断,只有 IPv6 可用,但许多网站无法访问。我利用 Hetzner VPS 服务器、WireGuard 和 Linux 网络命名空间巧妙地解决了这个问题。通过在 VPS 上搭建 WireGuard 服务器,将 IPv6 连接作为客户端与服务器端建立隧道,从而恢复 IPv4 功能。此外,我还使用网络命名空间在不干扰 WireGuard 连接的情况下运行工作 VPN 和 Docker,并解决了 WireGuard MTU 设置问题。整个过程充分展现了 Linux 系统的灵活性和强大的问题解决能力。

开发

两个神秘的Mathematica程序

2025-06-29

这段代码展示了两个用Mathematica编写的程序,它们都生成了一系列数字。第一个程序使用`Do`循环和`While`循环迭代生成一个序列,其增长模式依赖于先前元素的位置。第二个程序则基于累加前序差值,不断扩展序列,直到长度超过50。这两个程序都展现了Mathematica在生成复杂数列方面的强大功能,其背后隐藏的算法值得进一步探索。

开发 数列生成

XLibre:X11的叛逆之叉,挑战Wayland霸权

2025-06-29
XLibre:X11的叛逆之叉,挑战Wayland霸权

由于Wayland的进展缓慢且存在诸多不足,开发者Enrico Weigelt发起XLibre项目,对X11进行深度改进。XLibre并非简单的分支,而是对X11的彻底重塑,旨在修复Wayland的缺陷,并提供比Wayland更优秀的性能和安全性。Weigelt声称其被Red Hat驱逐出Xorg项目,这引发了业界对Red Hat操控Linux发展的质疑。令人意外的是,Fedora,Red Hat的衍生发行版,已开始考虑用XLibre替换X11。XLibre的未来仍有待观察,但它无疑为Linux桌面世界带来了新的变数。

开发 XLibre

Linux内核开发者内讧:Bcachefs被移除

2025-06-29
Linux内核开发者内讧:Bcachefs被移除

Linux内核6.17版本将移除Bcachefs文件系统。这源于Bcachefs维护者Kent Overstreet与Linus Torvalds之间持续的冲突,起因于Kent提交代码的方式和时机,违反了内核社区的既定规则。争议的核心在于一个名为“journal-rewind”的新功能,它在发布候选版本阶段提交,引发了其他开发者的担忧。尽管Kent辩解称为了用户数据完整性,但Linus最终决定移除Bcachefs,这在Linux内核开发历史上留下了一段插曲。

1 2 49 50 51 53 55 56 57 213 214