分类: 开发

ZFS疑难解答:从校验和错误到密钥重定向

2025-09-07
ZFS疑难解答:从校验和错误到密钥重定向

本文是ZFS疑难解答指南,涵盖了常见的ZFS问题,例如校验和错误、磁盘故障、快照恢复和加密数据集操作。文章详细解释了如何使用`zpool status`、`smartctl`和`zfs scrub`命令检测和修复校验和错误;如何使用`zpool offline`和`zpool replace`命令替换故障磁盘;如何使用`zfs rollback`、`cp`和`zfs clone`命令恢复数据;以及如何使用`zfs change-key`命令更改加密密钥,并对加密数据集的复制和密钥重定向进行说明。通过本文,用户可以更好地理解和处理ZFS中的常见问题,确保数据安全和系统稳定性。

开发

用浏览器实时解析钢琴教学视频的工具PianoReader

2025-09-06
用浏览器实时解析钢琴教学视频的工具PianoReader

厌倦了那些花里胡哨的钢琴教学视频?开发者构建了PianoReader,一个无需服务器计算,直接在浏览器中运行的工具,能实时解析钢琴教学视频并输出简谱和和弦。它巧妙地利用HTML canvas进行视频帧处理,通过用户标注钢琴键位,再结合图像分析判断琴键是否按下,最终生成可读的乐谱。虽然目前仅支持白键,处理速度也受限于视频帧率,但对于学习简单的歌曲已足够实用。

开发

用Claude Code智能筛选端到端测试,缩短CI时间

2025-09-06
用Claude Code智能筛选端到端测试,缩短CI时间

团队面临端到端(E2E)测试缓慢且脆弱的难题,导致bug难以快速修复。文章介绍了一种利用Claude Code AI模型结合git diff智能筛选相关E2E测试的方法。通过分析代码变更和测试文件,Claude Code能精准预测需要运行的测试,将原本44分钟的测试时间缩短到7分钟以内,极大提升了CI效率,并有效降低了生产环境bug的发生率。虽然成本略高,但节省的开发时间和减少的bug修复成本使其成为一项经济高效的解决方案。

开发

自制Python类型检查器:从零到英雄

2025-09-06
自制Python类型检查器:从零到英雄

本文讲述了作者如何用350行Python代码构建一个简单的类型检查器。文章循序渐进地介绍了类型检查器的核心功能,包括解析Python代码、查找类型注解、检查类型兼容性、处理函数调用和返回类型、支持列表、字典和联合类型,以及类型收窄等。虽然该类型检查器功能有限,但它成功地捕捉到了一些实际Python代码中的类型错误,并为读者提供了一个理解类型检查器工作原理的良好示例。

开发

Rust基金会推出Rust创新实验室,加速安全编程语言发展

2025-09-06
Rust基金会推出Rust创新实验室,加速安全编程语言发展

为了增强Rust编程语言生态系统,Rust基金会在RustConf 2025上推出了Rust创新实验室。该实验室将为精选的Rust项目提供稳定的中立环境,包括治理监督、法律和行政支持以及财政赞助。首个项目是Rustls,一个安全的TLS库。实验室旨在解决开源开发中的可持续性问题,并促进Rust在系统编程和网络基础设施等领域的应用,最终推动安全软件的未来发展。

开发

5000年前的数据库:比现代数据库更可靠?

2025-09-06

一张5000年前苏美尔文明的数据库图片引发了作者对数据库日期存储上限的思考。图片展示了公元前3100年记录大麦和麦芽的数据库,其可靠性远超现代数据库。测试发现,MySQL无法存储公元前4713年之前的日期,而PostgreSQL和SQLite则可以。这引发了作者对如何存储更早日期的思考,例如博物馆文物记录等,并提出了使用纪元时间戳或自定义系统等方案。

(avi.im)
开发

驯服AI:一套严谨的协同软件开发方法

2025-09-06
驯服AI:一套严谨的协同软件开发方法

本文介绍了一种结构化的AI协同软件开发方法,旨在解决代码膨胀、架构漂移和上下文稀释等常见问题。该方法将开发过程分为四个阶段:AI配置、协同规划、系统实现和数据驱动迭代。每个阶段都设置了系统约束和验证检查点,并强调基于经验数据而非假设进行决策。核心策略是将大型任务分解成一系列小的、可管理的组件,每次只向AI提出一个清晰具体的请求,并通过严格的代码规范(例如每文件不超过150行)和性能基准测试来保证代码质量和架构一致性。该方法通过一个名为`project_extract.py`的工具辅助项目管理,并提供了一个DiscordJS机器人示例来展示其应用。

开发

GitHub Copilot 引发开发者大规模迁移

2025-09-06
GitHub Copilot 引发开发者大规模迁移

微软GitHub Copilot AI代码辅助工具尽管拥有2000万用户,却因其强制捆绑、侵犯开源许可、代码质量堪忧等问题引发开发者强烈不满。大量开发者在GitHub上发起请求,要求禁用Copilot,甚至迁移至Codeberg等替代平台。 Copilot的强制植入以及微软忽视用户反馈的态度,加速了这一趋势。 开发者们纷纷表达了对Copilot的抵制,认为其不仅侵犯了他们的权利,还带来了代码质量和版权等问题。 这也反映出,在AI工具的应用中,用户体验和尊重开源精神同样重要。

开发

用查找表优化UTF-8解码:避免分支预测

2025-09-06
用查找表优化UTF-8解码:避免分支预测

本文探讨了如何通过查找表来优化UTF-8解码过程,避免分支预测带来的性能损耗。作者详细解释了如何创建一个256字节的查找表,将UTF-8序列的首字节映射到其对应的序列长度。查找表有效地将分支操作替换为简单的数组访问,从而提升解码效率。虽然增加了256字节的内存消耗,但这种方法在许多情况下可以显著提高性能。

开发

Sparrow:Apache Arrow 的 C++20 友好型 API

2025-09-06
Sparrow:Apache Arrow 的 C++20 友好型 API

Sparrow 是一个用 C++20 实现的 Apache Arrow 列式格式库,提供简洁易用的 API 和 C 接口的便捷转换。它支持多种编译器,并提供 mamba/conda 包管理器的安装方式。Sparrow 提供了多种数据初始化和访问方式,方便用户与其他库进行集成,例如,可以方便地从外部库读取 Arrow 数据结构,并将其转换为 Sparrow 的数据结构,反之亦然。文档正在撰写中,该项目由 ArcticDB、Bloomberg 和 QuantStack 合作资助。

开发

开源软件的权力博弈:Rug Pulls、Forks与权力转移

2025-09-06

在2025年欧洲开源峰会上,Dawn Foster探讨了开源软件开发中权力动态的复杂性。大型云提供商通常拥有主导地位,这可能会导致他们利用权力损害小型公司。一种策略是“抽屉式撤回”(Rug Pulls),即公司重新许可软件以限制竞争对手的盈利能力。这常常会导致“分叉”(Forks)的出现,即社区为了重新掌控代码而创建项目分支。演讲者分析了Elasticsearch、Terraform和Redis等项目的案例,比较了不同项目在分叉前后贡献者的构成变化,并指出中立治理和多元贡献者基础的重要性。最终,Foster强调,虽然分叉是维护者和贡献者对抗权力失衡的一种手段,但项目应更注重中立治理和广泛的贡献者参与,以减少“抽屉式撤回”的风险。

开发 分叉

不可能图形的计算机表示:Mescher的诞生

2025-09-06

长期以来,不可能图形的计算机表示一直是个难题。现有方法如切割或弯曲会破坏几何完整性,影响后续处理。研究人员提出了一种名为Mescher的新型网格表示方法,它基于离散外微积分,存储每个顶点的2D屏幕空间位置和每条边的深度差。这使得Mescher能够表示诸如埃舍尔作品中的不可能结构,并支持诸如平滑、热扩散和测地线距离计算等几何处理操作。更令人兴奋的是,它还能进行反向渲染,将可能的几何体变形为不可能的图形。Mescher为理解人类视觉感知和拓展计算机图形学提供了新的途径。

虚幻引擎启动速度优化:38000个工具提示的秘密

2025-09-06
虚幻引擎启动速度优化:38000个工具提示的秘密

虚幻引擎启动速度慢?一位开发者深入研究发现,引擎创建了多达38000个工具提示,消耗大量资源和时间。这些工具提示大部分在实际使用中从未显示。通过简单的代码修改,将工具提示的创建延迟到需要时,极大地提升了启动速度,并且不会影响运行时性能。这项优化减少了启动时2-5秒的等待时间,同时也减少了内存占用。

开发

开源文本转CAD网页应用CADAM:用自然语言和图片生成3D模型

2025-09-06
开源文本转CAD网页应用CADAM:用自然语言和图片生成3D模型

CADAM是一个革命性的开源网页应用,允许用户仅使用自然语言描述和图像参考就能生成3D模型。它利用Anthropic Claude API进行AI驱动建模,并提供实时预览、参数控制和多种导出格式(.STL和.SCAD)。CADAM基于React、Three.js和OpenSCAD WebAssembly构建,并支持BOSL和BOSL2库,为3D打印和CAD社区提供了强大的工具。

开发

Plateshapez:生成对抗性车牌图像数据集的工具

2025-09-06
Plateshapez:生成对抗性车牌图像数据集的工具

Plateshapez是一个用于生成对抗性扰动车牌图像数据集的研究工具。它遵循用户优先、默认安全、专家可操控的设计原则,提供命令行界面和Python API,可生成具有可重复性、透明性和伦理保障的结构化数据集。用户可自定义配置,添加各种扰动(形状、噪声、纹理、扭曲),并控制扰动的作用范围(车牌区域或整张图像)。该工具旨在研究OCR和ALPR系统的对抗鲁棒性,并提供了详细的文档和伦理准则。

为阿拉伯语打造拼音键盘:一场充满挑战的旅程

2025-09-06

作者分享了开发阿拉伯语拼音键盘的经历。阿拉伯语书写方向从右到左,且为草书,给开发带来挑战。作者巧妙地利用UTF-8和Zero-Width Joiner解决了部分问题,并为28个字母以及额外的 Hamza 符号和标点符号设计了键位映射方案。作者还详细解释了如何处理发音相似的字母以及那些缺乏直接英文对应字母的特殊字符。最终,作者成功创建了一个可在网页上使用的阿拉伯语拼音键盘,并提供了源码和使用说明。

在家搭建BIND DNS服务器:实现数字主权

2025-09-06
在家搭建BIND DNS服务器:实现数字主权

作者在家搭建了一个BIND DNS服务器,以实现其家庭网络的数字主权,即使在没有互联网连接的情况下也能正常工作。文章详细介绍了在Fedora 42系统上安装和配置BIND的过程,包括配置主配置文件`/etc/named.conf`、正向区域文件`/var/named/forward.homelab.jhw`和反向区域文件`/var/named/reverse.homelab.jhw`以及`/var/named/reverse2.homelab.jhw`,并解释了每个配置选项的含义。作者还强调了在修改区域文件后必须更新序列号的重要性,以避免DNS错误。最终,作者成功实现了家庭网络内设备的主机名解析,并展示了nslookup命令的测试结果。

开发 BIND

MentraOS:开源智能眼镜应用开发平台

2025-09-06
MentraOS:开源智能眼镜应用开发平台

MentraOS是一个开源的智能眼镜应用开发平台,支持多种智能眼镜型号,例如Even Realities G1和Mentra Mach 1。开发者可以使用TypeScript SDK快速构建应用,并通过Mentra Store进行分发。MentraOS处理配对、连接、数据流和跨兼容性等底层工作,开发者只需专注于应用的创意和功能。该平台完全开源(MIT许可证),并拥有活跃的社区支持。

开发

Rust 如何避免 C++ 中低级错误:借用检查与移动语义

2025-09-06

本文讨论了 C++ 中因遗漏 & 符号导致值传递而非引用传递的低级错误,以及 Rust 如何通过其默认的移动语义和借用检查系统来避免此类错误。在 C++ 中,这种错误可能导致性能问题,而 Rust 的编译器会在编译时捕获此类错误,从而提高代码的可靠性和性能。文章以 `vec::retain` 函数为例,说明 Rust 如何在编译时阻止开发者编写低效或错误的代码,即使在尝试使用非惯用方式时也是如此。虽然 C++ 也提供了类似机制,但 Rust 的默认设置更简洁有效,减少了开发者的认知负担。

开发

实时模糊算法:从Box Blur到Dual Kawase Blur

2025-09-06
实时模糊算法:从Box Blur到Dual Kawase Blur

本文讲述了实时模糊算法的演变历程,从简单的Box Blur到高效的Dual Kawase Blur。作者通过WebGL交互式演示,逐步讲解了Box Blur、Gaussian Blur、Separable Gaussian Blur、Kawase Blur以及最终的Dual Kawase Blur算法,并分析了每种算法的优缺点和性能表现。文章还探讨了频率空间图像处理和下采样技术在模糊算法中的应用,以及如何优化GPU性能。最终,作者推荐了Dual Kawase Blur作为实时视觉效果的基本构建块,因为它在性能、稳定性和视觉效果之间取得了良好的平衡。

开发 模糊算法

Z.AI 开放平台:API 调用示例

2025-09-06
Z.AI 开放平台:API 调用示例

这段代码演示了如何使用 cURL 向 Z.AI 开放平台的 API 发送 POST 请求,以获取大型语言模型 glm-4.5 的响应。请求包含用户角色和助手角色的对话,以及对 Z.AI 开放平台的描述。该示例展示了如何调用 API 并获取模型生成的文本,这对于理解 Z.AI 开放平台的功能和使用方法至关重要。

Protocol Buffers:一场由业余爱好者编写的灾难?

2025-09-05

本文作者批判了Protocol Buffers(protobuf)的设计缺陷,认为其类型系统糟糕、设计随意,并导致一系列问题渗透到代码中。protobuf 的诸多限制源于其对已解决问题的拙劣方案,缺乏组合性,例如oneof字段不能重复,map字段的限制等等。文章还批评了protobuf在向后和向前兼容性上的谎言,以及它如何污染代码库,使得代码难以编写和维护。作者认为protobuf只适合谷歌这样的大公司,不适合大多数公司,建议开发者放弃使用protobuf。

开发

ClickHouse实时分析:毫秒级查询数十亿条天气记录

2025-09-05
ClickHouse实时分析:毫秒级查询数十亿条天气记录

本文介绍了如何利用ClickHouse构建实时分析应用,实现毫秒级查询数十亿条数据。文章涵盖数据导入、高级技术(如统计抽样、预聚合策略和多级优化)等,并结合Rill平台演示了从S3导入NOAA天气数据并进行可视化的完整流程。ClickHouse凭借其列式存储、高级压缩和向量化查询执行等特性,实现了极速的分析性能,成为实时分析的理想选择。文章还讨论了实时分析中数据新鲜度和准确性之间的权衡,以及数据建模策略(如反规范化、字典、增量物化视图等),最终展示了一个完整的基于ClickHouse、S3和Rill的实时数据分析案例。

开发

深入探秘Mach-O:苹果系统的二进制奥秘

2025-09-05
深入探秘Mach-O:苹果系统的二进制奥秘

本文深入探讨了Mach-O,苹果操作系统中用于可执行文件、库和目标代码的二进制格式。文章详细解释了Mach-O的结构,包括头部、加载命令、段和节,以及通用二进制文件。此外,文章还阐述了Mach-O在代码签名完整性和ARM64e系统上的指针认证码(PAC)中的作用,并介绍了代码签名机制和PAC的工作原理。通过对Mach-O的深入了解,我们可以更好地理解苹果系统的安全机制和代码执行过程。

Mojo:LLVM 之父 Lattner 的下一个大动作,旨在革新机器学习编程

2025-09-05
Mojo:LLVM 之父 Lattner 的下一个大动作,旨在革新机器学习编程

LLVM 创建者 Chris Lattner 与 Ron 共同探讨了 Mojo 编程语言的设计理念。Mojo 旨在简化现代 GPU 的编程,同时提供编写最先进内核所需的控制级别。其关键在于,让程序员充分了解硬件细节,并通过类型安全的元编程使其易于管理和共享,从而实现针对特定计算和硬件平台的专门化。Lattner 认为,只有这样才能打破单一厂商对 AI 计算生态的垄断。

开发

告别Docker守护进程:Podman容器运行时的新时代

2025-09-05
告别Docker守护进程:Podman容器运行时的新时代

作者回顾了Docker容器技术的兴起和安全隐患,详细介绍了Podman——一个无需守护进程的容器运行时。Podman通过其简洁的架构、增强的安全性(无root权限运行)、以及与systemd和Kubernetes的良好集成,解决了Docker daemon带来的安全性和稳定性问题。文章还提供了一个从Docker迁移到Podman的FastAPI应用的实用指南,展示了迁移的便捷性和Podman带来的诸多优势,例如更优的资源利用和更安全的生产环境。

开发

告别SQL的嵌套查询地狱:单次查询构建电影页面数据

2025-09-05

本文讲述了使用关系型数据库构建电影页面数据时遇到的挑战。传统方法需要多次SQL查询来获取导演、演员、类型等信息,并手动将结果组装成所需层级结构,效率低下且易出错。作者通过使用`jsonb_agg`等函数,在单次SQL查询中直接生成JSON格式的结构化数据,有效解决了“对象关系阻抗失配”问题,提升了效率,避免了多次网络请求和数据不一致的问题。这展示了SQL的演进,以及适应新的数据需求的重要性。

开发

HTTPX 的 Fiber 并发插件:提升异步编程效率

2025-09-05

HTTPX 的 :fiber_concurrency 插件允许在由 Fiber 调度器管理的多个 Fiber 中无缝地使用同一个 HTTP 连接,尤其适用于长连接场景。如果使用 :persistent 插件,则此插件默认启用。示例代码展示了如何在 Thread 中启动多个 Fiber,每个 Fiber 使用 http.get() 并发地访问同一个 URL。此插件是使用异步 gem 等框架进行 Fiber 调度时必不可少的组件。

开发 HTTPX Fiber

在终端中渲染 Chrome:Carbonyl 浏览器项目

2025-09-05

Carbonyl 项目尝试在终端中渲染网页。作者巧妙地利用终端的字符和转义序列,结合 Rust 和 C++,实现了基本的网页渲染。文章详细介绍了如何利用 Unicode 字符模拟像素,处理文本绘制、鼠标输入以及与 Chrome 进程间通信等技术细节,并解决了一些渲染效率和布局问题。最终,Carbonyl 虽然还处于早期阶段,但已展现出在终端环境下渲染网页的可行性,为开发者提供了一个新奇的探索方向。

开发 终端渲染

Adobe Premiere登陆iPhone:免费的专业级移动视频编辑

2025-09-05
Adobe Premiere登陆iPhone:免费的专业级移动视频编辑

Adobe 将其专业视频编辑软件 Premiere 带到 iPhone 上,并承诺提供免费的专业级移动视频编辑功能。这款应用将于本月晚些时候推出,Android 版本也正在开发中。Premiere for iPhone 支持无限数量的视频、音频和文本层,具有自动字幕、4K HDR 支持以及一键导出到 TikTok、YouTube Shorts 和 Instagram 等功能。虽然应用本身免费,但 Adobe 表示额外云存储和生成式 AI 功能需付费。它支持 Adobe 的生成式音效和 AI 驱动的语音增强,以及更多通过 Adobe Firefly 生成的 AI 素材。用户也可以选择免费的 Adobe 字体、图像、声音、音乐和视频素材。与简化版的 Premiere Rush 不同,这款新的 Premiere 旨在提供更接近完整版 Premiere Pro 的体验,让用户在手机上也能拥有专业级的创意控制。

1 2 9 10 11 13 15 16 17 213 214