分类: 开发

Mux:为开发者打造的视频基础设施

2025-04-17
Mux:为开发者打造的视频基础设施

Mux 是一家致力于简化视频开发的公司,其使命是通过解决开发者在构建视频应用时遇到的难题(如视频编码、流媒体和监控)来实现视频技术的民主化。Mux 拥有来自 Google、YouTube 等科技巨头的优秀团队,并由 Coatue、Accel 等顶级投资者支持,服务于 Reddit、Vimeo 等众多知名客户。他们开发了 Mux Video 和 Mux Data 等产品,并主办 Demuxed 视频工程师大会,致力于打造更优质的视频体验。

使用GPG加密文件安全管理环境变量的Shell工具

2025-04-17
使用GPG加密文件安全管理环境变量的Shell工具

这是一个使用GPG加密文件安全管理环境变量的Shell工具。它解决了命令行工具需要使用包含敏感信息的未加密环境变量文件的问题。该工具允许用户从加密文件中读取密钥,并方便地进行不同账户的登录和注销。它支持嵌套登录,并通过更新`SECRET_LOGIN`环境变量以及shell提示符来指示当前登录账户。此外,它还提供了账户文件名的自动补全功能。

Val: 一种基于Chumsky和Ariadne的任意精度计算器语言

2025-04-17
Val: 一种基于Chumsky和Ariadne的任意精度计算器语言

Val 是一种基于 Chumsky 和 Ariadne 构建的简单任意精度计算器语言,可在 Linux、MacOS 和 BSD 等多种系统上运行。它提供命令行界面、REPL 环境,支持语法高亮、命令历史和 Emacs 风格编辑。Val 支持函数、循环、条件语句等多种编程结构,并包含丰富的内置函数和常量,涵盖算术、逻辑、比较、集合操作等。此外,Val 还支持多种数据类型,包括数值、布尔值、字符串和列表。

开发

用距离函数驯服 iCalendar 循环事件

2025-04-17
用距离函数驯服 iCalendar 循环事件

作者在实现一个处理 iCalendar 文件的库时,遇到了处理循环事件的难题。iCalendar 使用复杂的规则来定义循环事件,传统的实现方法通常针对不同的频率和参数编写大量特定逻辑。作者另辟蹊径,将循环规则视为 SQL 查询,并借鉴计算机图形学中签名的距离函数(SDF)的思想,用距离函数来表示事件的发生。这种方法将复杂的规则分解成简单的距离函数,通过迭代计算找到事件的发生时间,避免了大量的条件判断,使得代码更简洁、更易于维护。虽然初始实现效率不高,但作者通过优化,使其能够在毫秒级内处理复杂的循环规则。

(pwy.io)

TypeScript函数参数:对象参数优于单个参数

2025-04-17

在TypeScript中编写函数时,参数传递方式有两种:单个参数和对象参数。文章指出,对象参数通常更好。使用单个参数时,参数的意义难以理解,代码易出错且难以维护。而使用对象参数,例如`{firstName: "John", lastName: "Doe", age: 28, isActive: true}`,则清晰明了,易于阅读和维护,TypeScript的自动补全和类型安全功能也能更好地发挥作用。

开发 函数参数

SQLite虚拟表中的写入和事务支持

2025-04-17

本文深入探讨了SQLite虚拟表中写入和事务支持的实现细节。通过实现xUpdate、xBegin、xSync、xCommit和xRollback等钩子函数,虚拟表可以支持写入操作并确保事务完整性。文章解释了SQLite的回滚日志和超级日志机制如何在单数据库和多数据库场景下协调原子提交,以及虚拟表如何通过两阶段提交协议参与其中。作者强调,持久化操作必须在xSync中完成,xCommit和xRollback应仅执行幂等性的清理工作,避免可能导致失败的操作。

开发 虚拟表

AgentAPI:统一控制编码AI代理的HTTP API

2025-04-17
AgentAPI:统一控制编码AI代理的HTTP API

AgentAPI是一个强大的HTTP API,用于控制Claude Code、Goose、Aider和Codex等编码AI代理。它提供了一个统一的聊天界面,允许用户通过简单的API调用与这些代理交互,甚至可以构建一个代理控制另一个代理的MCP服务器。AgentAPI自动处理终端输出,去除冗余信息,并将其解析为独立的消息,简化了与编码AI的交互过程。虽然未来大型语言模型可能推出官方SDK,但AgentAPI致力于成为一个通用的适配器,以便开发者能够轻松切换不同的编码AI代理。

开发 HTTP API

Ubuntu 25.04 “Plucky Puffin”:焕新登场,性能与安全兼备

2025-04-17
Ubuntu 25.04 “Plucky Puffin”:焕新登场,性能与安全兼备

Canonical发布了Ubuntu 25.04 “Plucky Puffin”,带来了GNOME 48、改进的安装和启动体验,以及针对Spring框架的全新“devpack”。该版本提升了Intel GPU上的AI工作负载性能,并支持AMD SEV-SNP的机密计算。Linux 6.14内核改进了调度,并引入了新的NTSYNC驱动程序,提升了Wine和Proton上Windows游戏的性能。此外,Ubuntu 25.04还包含最新的工具链、改进的管理功能和网络控制,以及对Intel Core Ultra处理器和ARM64硬件的增强支持。

开发

沙箱中运行Python代码的MCP服务器

2025-04-17
沙箱中运行Python代码的MCP服务器

本文介绍了一个使用Pyodide在Deno中运行Python代码的Model Context Protocol (MCP) 服务器,该服务器为Python代码提供了一个安全的沙箱环境,与操作系统隔离。服务器支持多种运行模式,包括标准输入输出(stdio)、服务器端事件(SSE)以及预热模式,方便开发者测试和部署。文中还提供了一个使用PydanticAI和该MCP服务器的示例,演示了如何通过Agent与大型语言模型交互。

开发

Erlang/OTP SSH 服务器存在严重安全漏洞:可远程执行代码

2025-04-17

Erlang/OTP 的 SSH 服务器中发现了一个危急的安全漏洞 (CVE-2025-32433),允许未经身份验证的远程攻击者执行任意代码。该漏洞存在于 OTP-27.3.3、OTP-26.2.5.11 和 OTP-25.3.2.20 之前的版本中,攻击者可利用 SSH 协议消息处理中的缺陷,在无需凭据的情况下访问并控制受影响的系统。官方已发布补丁,建议用户尽快升级到 OTP-27.3.3、OTP-26.2.5.11 或 OTP-25.3.2.20 及以上版本。

开发 Erlang/OTP

DeepSeek开源分布式文件系统3FS深度解析

2025-04-17

DeepSeek开源了一款名为3FS(Fire-Flyer File System)的分布式文件系统。文章深入探讨了分布式文件系统的概念和3FS的工作原理。3FS由Meta(元数据管理)、Mgmtd(管理服务器)、Storage(存储节点)和Client(客户端)四种节点类型构成,采用CRAQ(Chain Replication with Apportioned Queries)协议实现强一致性。文章还分析了3FS的性能特点,并对未来性能测试和改进方向进行了展望。

开发 CRAQ

Go-MCP: 简洁易用的MCP服务器开发Go SDK

2025-04-17
Go-MCP: 简洁易用的MCP服务器开发Go SDK

Go-MCP是一个用于轻松构建MCP(模型上下文协议)服务器的Go SDK。它提供类型安全、直观的接口,使服务器开发变得轻而易举。通过代码生成确保工具和提示参数的静态类型检查,从而在编译时而不是运行时捕获错误。其简洁的API和开发者友好的设计使其易于上手。该项目提供了详细的示例和文档,并支持多种MCP功能,例如工具、提示、资源管理和日志记录。虽然目前不支持动态工具添加,但该项目正在积极开发中,未来将支持批量处理、流式HTTP传输和进度通知等功能。

开发

Rust编译时间优化:从25分钟到2分钟

2025-04-17
Rust编译时间优化:从25分钟到2分钟

Feldera团队在使用Rust编译大型SQL生成的代码时遇到了编译时间过长的问题,一个8562行SQL代码生成的10万行Rust代码需要25分钟才能编译完成。他们尝试了多种优化方法,例如类型擦除和代码去重,但收效甚微。最终,他们通过将生成的Rust代码拆分成1106个小的crate,并利用多核并行编译,将编译时间缩短到了2分钟以内,充分利用了多核处理器的性能。

开发 多核并行

在 Apple Silicon 上使用 UTM 构建 Linux 开发环境

2025-04-17
在 Apple Silicon 上使用 UTM 构建 Linux 开发环境

本文介绍了如何在 Apple Silicon 芯片的 Mac 上使用 UTM 虚拟机快速搭建 Linux 开发环境。通过 Homebrew 安装 UTM 和 cdrtools,并利用 cloud-init 脚本实现自动化配置,包括安装 Git、Docker 等常用开发工具以及 SSH 密钥。文章详细讲解了创建虚拟机、导入镜像、配置 cloud-init 脚本以及移除临时驱动器的步骤,最终构建一个可用的 Linux 开发环境。

开发 UTM

从零开始理解可微编程

2025-04-17

本文深入浅出地讲解了可微编程,从微积分中的导数定义出发,逐步解释了梯度、方向导数和雅可比矩阵的概念。文章详细阐述了数值微分、符号微分和自动微分(正向模式和反向模式)三种微分方法,并比较了它们的优缺点。最后,文章通过一个图像去模糊的案例,演示了如何利用反向模式自动微分结合梯度下降法解决实际优化问题。

开发

arXivLabs:与社区协作者一起进行实验性项目

2025-04-17
arXivLabs:与社区协作者一起进行实验性项目

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

开发

NP难题之外:一个更直观的复杂度问题

2025-04-17
NP难题之外:一个更直观的复杂度问题

本文作者质疑将停机问题作为NP难问题之上的典型例子,认为其不够直观且易于混淆。停机问题虽然不可判定,但验证“是”的答案却可以通过有限步骤运行程序来实现。作者提出了一个更易理解的例子:在一个无限网格上移动棋子,判断能否到达目标点。这个问题在低维度下是PSPACE完全的,维度增加后复杂度会迅速提升,最终达到ACKERMANN完全,直观地展示了远超NP问题的复杂性。

Formance:重新定义开发者与金融的交互方式

2025-04-17
Formance:重新定义开发者与金融的交互方式

Formance 致力于重新定义开发者与资金的交互方式,将其作为一等基本类型,并与金融系统进行组合。目前,资金隐藏在许可的、供应商锁定的基础设施中,Formance 平台旨在通过提供非特定类型的基本组件来赋能产品优先的公司,使他们能够创建创新的金融应用程序。这些组件以开源包的形式提供,并可连接到您选择的金融合作伙伴。Formance 具有全球原生特性,全天候为全球企业公司提供服务,帮助他们构建和扩展金融应用程序。

开发

框架的邪恶:为何构建库而非框架

2025-04-17
框架的邪恶:为何构建库而非框架

本文探讨了函数式库设计的原则,特别关注可组合性和避免回调。作者认为框架难以组合、探索和测试,并限制代码结构。相比之下,库赋予开发者更多控制权,鼓励交互式探索,并支持多层抽象。文章以游戏引擎为例,展示了如何通过异步工作流和事件编程避免回调的缺点,并通过FsLab等例子说明了库的可组合性。最终,作者倡导构建可组合、易于探索的库,而非僵硬的框架。

开发 库设计

C语言stdint.h的隐藏宝藏:超越limits.h的整数类型定义

2025-04-17
C语言stdint.h的隐藏宝藏:超越limits.h的整数类型定义

本文讲述了作者在学习C语言过程中,关于整数类型定义的意外发现。早期C语言的整数大小在不同架构的机器上差异很大,为此,一些编译器厂商自定义了类型定义,例如Microware的types.h。后来ANSI C标准引入了stdint.h,提供了像uint32_t这样的标准类型定义,以及limits.h中定义的INT_MAX等最大值。然而,作者最近才发现stdint.h中还包含了INT8_MAX、UINT32_MAX等,可以直接用于定义特定大小整数类型的最大值和最小值,这使得代码更具可移植性,避免了因平台差异导致的错误。

Haskell 并发编程:告别线程地狱

2025-04-17

本文讲述了作者从C/C++/Rust转向Haskell进行嵌入式系统开发的经历,重点介绍了Haskell在并发编程方面的优势。Haskell使用green threads和事件驱动IO,避免了传统线程模型的复杂性。通过`async`包和`STM`(软件事务内存),Haskell提供了一种更简洁、更安全的方式来处理并发任务,例如`concurrently`、`race`、`mapConcurrently`等函数,以及`TVar`、`TBQueue`等数据结构,可以轻松实现并发操作且避免常见的并发问题,例如死锁和竞态条件。

开发 STM

纯Nix实现的三角函数库:告别Python,拥抱极致性能

2025-04-17
纯Nix实现的三角函数库:告别Python,拥抱极致性能

作者为了计算其17个VPS节点间的网络延迟,避免手动ping测,尝试用Nix计算节点经纬度间的物理距离来近似延迟。由于Nix缺乏三角函数,作者最终选择用纯Nix实现了sin、cos、tan、arctan和sqrt函数,并基于此实现了Haversine公式计算节点间距离及延迟。该项目避免了使用Python等外部依赖,提升了计算效率和可重复性。

开发

Kotlin 类型类与数据验证:Arrow 库和上下文接收器的实践

2025-04-17
Kotlin 类型类与数据验证:Arrow 库和上下文接收器的实践

本文探讨了 Kotlin 类型类在数据验证中的应用。作者以一个金融科技初创公司的用户投资组合验证系统为例,逐步讲解如何使用 Arrow Kt 库和 Kotlin 上下文接收器,构建一个基于类型类的泛型、可复用数据验证框架。文章对比了面向对象方法和类型类方法,并详细阐述了类型类在提高代码可维护性和可扩展性方面的优势,以及如何利用 Arrow 库的 `EitherNel` 类型处理验证错误。

开发

告别Spotify!我的自托管音乐之旅

2025-04-17
告别Spotify!我的自托管音乐之旅

厌倦了Spotify,我踏上了寻找完美替代品的旅程。尝试过Winamp、foobar2000、甚至自己动手搭建网页播放器,最终选择了Jellyfin。Jellyfin是一个自托管的媒体服务器,让我可以随时随地访问我的音乐库,无需依赖流媒体服务。虽然需要一些技术操作,但设置起来并不困难,即使是旧电脑也能胜任。配合手机端的客户端应用,离线收听音乐也变得轻松便捷。这不仅让我实现了数字自主,也开启了自托管其他应用的大门,例如Immich照片管理。

开发

ZFS压缩下的文件大小悖论:逻辑块与物理块之争

2025-04-17

在ZFS文件系统启用压缩的情况下,一个256KB的零文件(使用`dd`命令创建)展现出令人费解的现象:`ls -l`显示其大小为256KB,但`ls -s`和`ls -slh`却显示其大小远小于实际大小,甚至接近于0。这是因为ZFS的高效压缩使得物理块数量极少。文章探讨了文件大小的三种度量方式:逻辑大小(字节数)、物理块数和逻辑块数,并指出POSIX标准的`st_blocks`字段并没明确规定应该报告哪种大小,导致文件在不同文件系统间移动时,`st_blocks`值可能发生变化,甚至可能导致文件大小膨胀无法适应新的文件系统。

开发

数据库查询引擎:推式 vs. 拉式

2025-04-16

本文探讨了数据库查询引擎中推式(push)和拉式(pull)两种模式的差异。拉式模式类似于迭代器模型,消费者驱动数据获取;而推式模式则由生产者驱动,数据主动推送给下游操作符。推式模式在处理DAG形查询计划(例如SQL中的WITH语句)方面更有效率,因为生产者可以将数据同时推送到多个下游操作符,避免了数据重复计算和不必要的缓冲。然而,拉式模式在处理某些算法(如merge join和LIMIT)时更方便。文章还讨论了缓存效率、代码简洁性以及两种模式在不同场景下的适用性,最终指出没有绝对的优劣之分,选择取决于具体需求。

开发 推拉模式

Plandex:大型项目AI编码助手

2025-04-16
Plandex:大型项目AI编码助手

Plandex是一款基于终端的AI开发工具,能够规划和执行大型编码任务,处理涉及多个步骤和数十个文件的项目。它可以直接处理高达200万个token的上下文(每个文件约10万个),并可以使用tree-sitter项目映射索引超过2000万个token的目录。Plandex支持多种模型,并具有累积差异审查沙箱、可配置的自主性、自动调试等功能,帮助开发者高效完成大型项目的开发,并能有效控制成本。

开发 大型项目

程序优化:先别急着重写,试试这四种方法

2025-04-16

程序运行速度慢是程序员的常见痛点。本文作者总结了多年的优化经验,提出四种优化方案:1. 使用更好的算法;2. 使用更好的数据结构;3. 使用更底层的系统;4. 接受精度较低的解决方案。文章以冒泡排序和选择排序为例,详细阐述了算法选择的重要性,并强调了在选择数据结构和编程语言时需考虑实际情况。作者提醒,在进行优化之前,务必先进行严格的性能分析,避免盲目优化。

开发

命令行下的轻量级编码助手Codex

2025-04-16
命令行下的轻量级编码助手Codex

Codex是一个运行在终端的轻量级编码助手,通过OpenAI API提供ChatGPT级别的代码推理能力。它支持交互式和非交互式模式,能自动补全代码、运行代码、安装依赖、甚至生成单元测试,并提供安全沙箱机制防止恶意代码运行。用户可自定义指令和审批模式,从简单的代码解释到复杂的项目重构,Codex都能胜任。它支持多种操作系统,并已开源,开发者可以参与贡献。

开发

Llama 3.3 许可证:你真的读懂了吗?

2025-04-16
Llama 3.3 许可证:你真的读懂了吗?

Meta 的 Llama 3.3 模型虽然被宣传为开源,但其许可证却包含许多限制性条款,许多开发者可能并未完全理解。文章指出,许可证要求分发 Llama 模型或衍生产品必须显眼地标注“Built with Llama”,并以“Llama-”作为衍生模型名称的前缀。此外,许可证还包含一项“可接受使用策略”,要求开发者向用户披露其 AI 系统的已知风险,例如偏差或不准确性。作者提醒开发者仔细阅读许可证,并决定是否遵守这些条款,避免潜在的法律风险。

开发
← 前页 1 3 4 5 6 7 8 9 101 102