分类: 开发

Rust的精确十进制固定点类型库:primitive_fixed_point_decimal

2025-06-20
Rust的精确十进制固定点类型库:primitive_fixed_point_decimal

Rust内置的浮点数类型在表示十进制数时精度不足。`primitive_fixed_point_decimal`库提供了一种解决方案,它使用整数类型和缩放因子来精确表示十进制数,并保证分数精度。该库提供两种类型:`ConstScaleFpdec`,在编译时指定缩放因子;`OobScaleFpdec`,在运行时指定缩放因子,更灵活但使用更复杂。该库还考虑了多次乘除运算可能导致的累积误差问题,并提供了`cum_error`机制来解决这个问题。总而言之,这是一个高效、精确的Rust十进制固定点类型库,适用于对精度要求高的场景,例如金融应用。

Git Smart Squash:AI 驱动的 Git 提交历史清理工具

2025-06-20
Git Smart Squash:AI 驱动的 Git 提交历史清理工具

厌倦了在 PR 之前整理凌乱的 Git 提交历史?Git Smart Squash 使用 AI 自动将你的更改整理成逻辑清晰、结构良好的提交,只需几秒钟。它分析你的 diff,将相关的更改分组,并创建遵循常规提交标准的清晰提交信息。支持本地 AI (Ollama) 和云端 AI (OpenAI, Anthropic, Gemini),提供安全可靠的备份机制,确保你的原始提交始终保存。即使是大型 diff,也能通过拆分工作或切换到云端 AI 来处理。

开发

RaptorCast:一种高效的区块链消息层设计

2025-06-20

RaptorCast 旨在解决区块链中块传播的性能、安全和鲁棒性问题。它采用UDP协议以追求速度,并通过R10编码和Merkle树签名机制来处理丢包和恶意节点。其广播策略基于两跳结构化广播,根据验证者权益分配数据,并通过冗余策略保证数据完整性和可用性,即使在存在丢包和恶意节点的情况下也能高效地传播区块提案。

开发 共识机制

用Elixir编写的BitTorrent Tracker: ExTracker

2025-06-20
用Elixir编写的BitTorrent Tracker: ExTracker

ExTracker是一个用Elixir语言编写的高性能BitTorrent Tracker,它具有低内存占用、零配置等优点,能够充分利用多核处理器。目前已实现HTTPS支持和数据库备份,并提供源码、预编译版本和Docker镜像三种部署方式。虽然仍在开发中,但已有一个测试实例运行,并支持实时统计功能。未来计划添加更多功能,例如白名单/黑名单、更精细的Peer管理以及地理位置支持等。

开发

Glaze:C++ 结构体字符串插值库

2025-06-19

Glaze 库为 C++ 提供了基于 Stencil 和 Mustache 模板的字符串插值功能,方便地将结构体数据格式化为字符串。它支持变量插值、布尔型条件语句、容器迭代、嵌套语句以及 Mustache 风格的 HTML 转义,并提供错误处理和自动编号功能(`glz::stencilcount`)。通过简单的模板语法,开发者可以灵活地生成动态输出,例如 HTML 文档或格式化文本。

开发

Literate编程:让代码更易读懂的编程范式

2025-06-19
Literate编程:让代码更易读懂的编程范式

Literate编程是一种由Donald Knuth发明的编程风格,它将程序的源代码首先设计为易于他人阅读和理解,其次才是供计算机执行。这使得程序员可以按照思维流程的顺序编写程序,而非受限于计算机强加的程序结构。Literate程序通常由自然语言解释和代码片段交织而成,这使得代码易于理解和分享。本文介绍的Literate工具,旨在简化并增强Knuth和Levy的CWEB系统,支持多种语言、语法高亮、HTML漂亮打印、Markdown编写等特性,并提供命令行工具进行代码编译和HTML文档生成。

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

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

arXivLabs是一个框架,允许合作者直接在我们网站上开发和共享新的arXiv功能。与arXivLabs合作的个人和组织都秉承并接受了我们开放、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,并且只与遵守这些价值观的合作伙伴合作。 有一个项目的想法可以为arXiv的社区增加价值吗?了解更多关于arXivLabs的信息。

开发

Godot游戏网络代码的鲁棒性测试

2025-06-19
Godot游戏网络代码的鲁棒性测试

开发《Little Brats!》过程中,作者面临的最大挑战是多人在线游戏部分的网络同步。文章详细介绍了如何使用预测-校正和延迟补偿技术来应对网络延迟和丢包,并通过Godot引擎和Linux的`tc`命令模拟各种网络状况进行测试。作者还对比了Godot中可靠模式和不可靠模式的网络传输特性,并分享了在不同网络条件下的测试结果和经验,最终实现了游戏在各种网络环境下的稳定运行。

开发 延迟补偿

告别「10倍工程师」神话:构建卓越的团队而非寻找超级英雄

2025-06-19
告别「10倍工程师」神话:构建卓越的团队而非寻找超级英雄

本文批判了「10倍工程师」的迷思,指出衡量工程师生产力的单一指标是不可靠的,团队而非个人才是软件交付的关键。作者倡导构建能够让普通工程师发挥最大潜力的系统,这需要缩短发布周期、简化回滚流程、注重可观察性、投资内部工具,并打造包容的团队文化。最终目标是提升团队整体效率,而非依赖个体英雄,从而实现可持续的业务增长。

开发

EnrichMCP:为AI赋能的ORM框架

2025-06-19
EnrichMCP:为AI赋能的ORM框架

EnrichMCP是一个Python框架,它通过构建在MCP(模型上下文协议)之上的语义层,将你的数据模型转化为AI代理可理解和使用的类型化工具,就像AI领域的ORM一样。它支持SQLAlchemy模型、REST API以及自定义逻辑,自动生成类型化工具、处理实体间关系、提供模式发现和Pydantic模型验证。无论是探索数据模型、查询数据还是遍历关系,AI代理都能像开发者使用ORM一样自然地与你的数据交互。

开发

uxn环境下的Lisp方言:巧妙实现词法作用域闭包

2025-06-19

作者在uxn环境下开发了一个名为niënor的Lisp方言编译器,该编译器能够编译类似Scheme的代码并生成uxn ROM。文章重点介绍了niënor如何巧妙地实现词法作用域闭包。不同于直接复制函数并替换未绑定变量的复杂方法,niënor在编译时将闭包所需的外部变量作为参数添加到lambda函数中,并在运行时生成一个包装器(portal)函数,该函数将环境变量作为参数传递给lambda函数。这种方法避免了运行时代码生成和复杂地址计算,高效且简洁地实现了闭包功能,并配合malloc和free函数实现了内存的动态管理。

开发 uxn

访问修饰符:OOP 的一个无用特性?

2025-06-19

本文探讨了面向对象编程中访问修饰符(public、protected、private)的必要性。作者认为,通过接口和继承的组合,可以实现访问修饰符的功能,而无需引入额外的机制。访问修饰符的出现,可能源于Simula语言设计上的疏忽,导致了功能冗余。作者建议,为了代码简洁和清晰,应尽量避免使用访问修饰符,并提倡使用组合而不是继承。

编程代理:衡量开发体验的新方法

2025-06-19
编程代理:衡量开发体验的新方法

作者通过24小时编程马拉松的经历,发现现有开发工具和流程存在诸多问题,例如文档缺失、API设计缺陷等,导致开发体验极差。然而,编程代理的出现改变了这一现状。作者利用代理进行客观评估,通过测量代理在不同语言和工具上的表现,量化了开发体验的优劣,例如测试覆盖率、错误报告质量、生态系统稳定性等。作者认为,代理的反馈与人类开发者的感受高度一致,为改进代码质量和开发流程提供了新的思路。

开发

巨型语言模型Gemini:高效处理选举结果图像PDF

2025-06-19

OpenElections长期面临将选举结果图像PDF转换为CSV文件的难题。传统的数据录入和OCR软件效率低且成本高。作者发现Google Gemini大型语言模型能高效解决此问题。Gemini能够处理大型多页PDF,准确识别文本,即使是包含标记或阴影的复杂图像也能胜任。虽然Gemini在处理极大型文件时需要分批处理,但其准确性和效率远超传统方法,极大加快了OpenElections的数据处理速度。

开发

Kubernetes 十年:反思与展望

2025-06-19

本文回顾了Kubernetes十年发展历程,从Google内部的Borg系统演变而来,到如今成为云原生时代的基石。作者肯定了其在容器编排、基础设施管理和作业调度方面的巨大成功,但也指出了YAML配置的不足、etcd依赖以及Helm包管理器的缺陷。文章建议Kubernetes 2.0应采用HCL替代YAML,支持etcd之外的后端存储,并开发原生包管理器,以提升用户体验和安全性。此外,文章还建议默认启用IPv6和内置IPSec,简化网络拓扑。

开发

Marginalia搜索引擎:升级后的在线状态和所有权变更检测系统

2025-06-19

Marginalia搜索引擎团队开发了一个新系统“ping-process”,用于检测服务器在线状态和网站重大变更(包括所有权变更和域名停放)。该系统主要依靠HTTP HEAD请求和DNS查询,通过分析证书细节、安全姿态、服务器头部等信息来识别变更。数据存储在“快照表”和“事件表”中,前者存储最新信息,后者存储历史事件。系统克服了调度和证书验证等挑战,初步成功识别大量域名停放事件,未来将进一步完善所有权变更检测模型,并应用于爬虫策略优化。

开发

Rust重写的RoureXOS 2.0:轻量级操作系统闪亮登场

2025-06-19
Rust重写的RoureXOS 2.0:轻量级操作系统闪亮登场

RoureXOS操作系统迎来了用Rust语言重写的第二个版本。这个轻量级操作系统既可以在QEMU模拟器中运行(使用提供的ISO镜像),也支持x86_64裸机环境(从USB启动)。详细的编译和运行指南涵盖了依赖项安装、内核编译、ISO镜像制作以及QEMU模拟运行等步骤,甚至提供使用SLIP协议进行网络连接的说明。开发者提供了清晰的步骤,让使用者可以轻松体验这个全新的操作系统。

开发

用Raymarching算法绘制无限世界:从零开始的GLSL着色器之旅

2025-06-19
用Raymarching算法绘制无限世界:从零开始的GLSL着色器之旅

本文介绍了使用Raymarching技术和GLSL着色器创建3D场景的方法。作者从基本概念如光线追踪、符号距离函数(SDF)出发,逐步讲解如何构建简单的形状,并通过SDF运算符(如min和smoothmin)组合形状,实现更复杂的场景。文章还涵盖了光照模型、软阴影、无限重复场景的创建以及使用噪声导数生成逼真的地形等高级技术。最终,作者展示了如何结合这些技术创建出令人惊叹的无限延伸的火星景观,并分享了其创作过程和心得体会。

开发

OpenAPI:革新软件开发的API规范

2025-06-19
OpenAPI:革新软件开发的API规范

在软件开发领域,高效构建、维护和集成应用至关重要。OpenAPI规范(OAS)作为描述RESTful API的通用语言,成为了提高效率的关键。它为API提供了详细的蓝图,涵盖端点、请求和响应格式以及身份验证方法。OAS带来的优势包括:促进团队协作、实现自动化(例如自动生成客户端SDK和服务器存根、交互式文档和自动化测试)、增强开发者体验、促进合作伙伴生态系统发展以及推动API优先的开发文化。创建OAS的方法包括手动创建、代码优先生成和AI辅助生成,每种方法各有优缺点。OpenAPI与Swagger的关系是:OpenAPI是规范本身,而Swagger是一套基于OpenAPI规范的工具集。采用OpenAPI是构建强大、可扩展应用程序的战略重点。

开发

Strudel:用代码创作音乐的利器

2025-06-19
Strudel:用代码创作音乐的利器

Strudel是一个基于JavaScript的音乐编程环境,它将Tidal Cycles的模式语言移植到JavaScript中,即使你不会JavaScript或Tidal Cycles,也能轻松上手创作动态音乐。Strudel支持实时编码音乐、算法作曲,并能集成到你的现有音乐设备中。教程和示例代码帮助你快速入门,创作出令人惊艳的音乐作品。

Claude 代码使用监控工具:实时追踪你的代币消耗

2025-06-19
Claude 代码使用监控工具:实时追踪你的代币消耗

这款名为Claude Code Usage Monitor的终端监控工具,能够实时追踪你使用Claude AI时代币的消耗情况。它以直观的进度条显示代币使用情况和剩余时间,并能预测代币耗尽时间,支持Pro、Max5、Max20等多种计划,并能自动切换到自定义最大值模式。此外,它还具有警告系统、自定义重置时间等功能,界面简洁美观,大大提升了用户体验。

开发

开源维护者反叛:libxml2 维护者不再区别对待安全漏洞

2025-06-19

libxml2 的唯一维护者宣布将不再区别对待安全问题和普通 bug,这一举动在开源社区引发热议。文章认为,这反映了越来越多的开源维护者对公司利用开源软件现状的不满。作者区分了个人合作式开源和公司利用开源两种模式:前者如 Debian 和 BSD,以社区协作为主;后者则以公司盈利为目的,对开源贡献者缺乏责任感。作者预测,未来开源社区将越来越重视这种区别,并可能调整与公司之间的互动模式。

开发

用玩具项目重拾编程的乐趣

2025-06-19

作者认为,创造是理解的关键。与其避免重复造轮子,不如自己动手做一个,这能让你更深刻地理解其运作原理。在软件开发日益商品化的今天,作者提倡构建简单的“玩具项目”来重拾编程的乐趣。文章列举了多个玩具项目,例如正则表达式引擎、x86操作系统内核、游戏模拟器等,并按难度和时间进行了评估,鼓励读者尝试,从中学习和提升技能。

开发 玩具项目

Zed编辑器发布强大的新调试器

2025-06-19
Zed编辑器发布强大的新调试器

Zed编辑器团队宣布发布其备受期待的调试器,该调试器支持Rust、C/C++、JavaScript、Go和Python等多种流行语言。该调试器旨在快速、熟悉且可配置,并利用Debug Adapter Protocol (DAP)和一个创新的定位器系统来自动配置调试会话。其架构分为数据层和UI层,确保高效性和可扩展性,为未来的协作调试奠定了基础。此外,它还利用Tree-sitter实现了开箱即用的内联变量值,并支持键盘驱动的调试。

开发

从粘贴文本的噩梦中解脱:WYSINWLB

2025-06-19

作者遭遇了从粘贴文本中手动清理嵌套的``和`

`标签的困境。这些文本的格式混乱,机器生成的格式注重外观而非语义,导致文本几乎无法编辑。作者认为,这种糟糕的编辑体验会让普通用户放弃编辑,因此提出了“WYSINWLB:What You See Is Not What Lies Beneath”的概念,凸显了所见非所得的文本编辑难题。

开发

用Crystal包装器连接Elixir和Go后端

2025-06-19
用Crystal包装器连接Elixir和Go后端

Mozi团队需要将一个新的Elixir Phoenix LiveView应用连接到现有的Go后端。他们尝试了NIFs和Ports,但最终选择使用Erlang的C节点,并用Crystal编写了C包装器来简化维护。这个方案在编译时和运行时都解耦了代码库,通过在Elixir端使用`Node.list`来检测C节点连接,并使用S6进行容器内重启。虽然存在跨C/Go边界的性能损耗,但这对于他们的用例来说是可以接受的。最终实现了Elixir、Crystal和Go三种语言的混合应用,提高了代码的可维护性。

开发

模型上下文协议 (MCP) 更新:增强安全性和功能性

2025-06-19

模型上下文协议 (MCP) 发布了最新版本,主要更新包括:移除对 JSON-RPC 批量处理的支持;增加对结构化工具输出的支持;将 MCP 服务器分类为 OAuth 资源服务器,并添加受保护的资源元数据以发现相应的授权服务器;要求 MCP 客户端实现 RFC 8707 中描述的资源指示器,以防止恶意服务器获取访问令牌;明确授权规范和新的安全最佳实践页面中的安全注意事项和最佳实践;添加对引出的支持,使服务器能够在交互过程中向用户请求其他信息;在工具调用结果中添加对资源链接的支持;要求在使用 HTTP 时,通过 MCP-Protocol-Version 头部指定协商的协议版本;将生命周期操作中的“SHOULD”更改为“MUST”;以及其他模式更改,例如在其他接口类型中添加 _meta 字段,在 CompletionRequest 中添加 context 字段,以及添加 title 字段用于更友好的显示名称。完整的变更日志可在 GitHub 上查看。

开发 协议更新

Linux桌面可访问性困境:志愿者的辛酸与商业利益的冷漠

2025-06-19
Linux桌面可访问性困境:志愿者的辛酸与商业利益的冷漠

一位GNOME开发者愤怒发声,控诉Linux桌面可访问性改进的困境。尽管GNOME基金会投入巨资并有志愿者无偿付出大量时间,但成果却鲜为人知,反而充斥着对GNOME的负面评价和对志愿者的无端指责。文章揭露了部分公司利用GNOME成果却未进行反哺的现状,呼吁Linux社区关注可访问性问题,并尊重为之努力的开发者。

开发

BeeKEM:一种用于去中心化安全组消息传递的创新密钥封装机制

2025-06-19
BeeKEM:一种用于去中心化安全组消息传递的创新密钥封装机制

本文深入探讨了BeeKEM,一种用于去中心化安全组消息传递的创新密钥封装机制。与传统的TreeKEM相比,BeeKEM通过允许同时存在多个组状态“纪元”来增强对冲突离线更新和网络分割的恢复能力。当成员收到冲突更新时,他们可以保留所有接收到的密钥,标记为“冲突”,从而继续解密和读取来自冲突纪元的消息。在进行更新时,只需将冲突节点视为空白即可。BeeKEM为构建具有更强隐私保护和自主性的本地优先应用程序带来了新的可能性。

1 2 56 57 58 60 62 63 64 213 214