分类: 开发

抛弃模块:一个基于全局函数数据库的编程新范式

2025-04-04

本文探讨了一种颠覆性的编程范式:摒弃模块,采用全局函数数据库。所有函数拥有唯一名称和丰富的元数据,存储于可搜索的键值数据库中。这简化了开源贡献(只需贡献单个函数),消除了模块划分难题,并方便了函数的查找和复用。作者认为,这种方式更有利于大型程序的开发和维护,并提出了具体的实现思路和扩展方案,例如函数评级和同行评审机制。

开发

Heroku 正式支持 .NET:开发者福音

2025-04-04
Heroku 正式支持 .NET:开发者福音

Heroku 宣布正式全面支持 .NET,结束了此前 Beta 测试阶段。这意味着 .NET 开发者现在可以在 Heroku 的生产环境中充分利用其强大的基础设施和支持服务。Heroku 自动化 .NET 应用的构建和部署,支持 C#、F# 和 Visual Basic 等语言,并与 Heroku 的其他功能(如 Pipelines、CI 和 Review Apps)无缝集成,提供便捷的开发和部署流程。无论您是 .NET 新手还是经验丰富的开发者,Heroku 都能为您提供流畅的部署体验。

开发 云部署

JavaScript 实现的 Transputer 模拟器:一个 90 年代操作系统在浏览器中复活

2025-04-04
JavaScript 实现的 Transputer 模拟器:一个 90 年代操作系统在浏览器中复活

一位开发者将自己用 C 语言编写的 Transputer 模拟器移植到了 JavaScript。这个模拟器不仅运行速度出奇地快,更令人惊奇的是,它预装了一个完整的 1996 年春开发的操作系统,包含 C 编译器、汇编器、3D 建模器和光线追踪器等功能。用户可以直接在浏览器中体验这个复古的操作系统,运行各种命令,甚至可以尝试自编译 C 编译器!这展现了 JavaScript JIT 编译技术的进步以及开发者对复古技术的热爱。

Rust语言在多媒体框架开发中的应用体验:八年回顾

2025-04-04

作者回顾了八年来使用Rust开发NihAV多媒体框架的经验。最初选择Rust是为了克服C语言的组合性和可移植性问题。文章详细比较了Rust与其他语言(C++、Java、Go、Nim等)的优缺点,并总结了Rust在组合性、性能、底层操作、内联汇编等方面的优势。同时,作者也指出了Rust的一些不足,例如宏系统和trait系统的一些局限性,以及Rust基金会的一些争议。总而言之,作者认为Rust是一个不错的选择,但需要开发者转变思维方式,适应Rust的特性。

本地优先Web开发:掌控你的数据

2025-04-04
本地优先Web开发:掌控你的数据

告别依赖后端服务器的传统Web应用!本地优先Web开发是一种革命性方法,将数据控制权交给用户。它允许用户在离线状态下访问应用,并自动同步数据。文章深入探讨了本地优先开发的核心原则、优势以及与传统云端应用的对比,并介绍了构建本地优先应用的步骤,例如将Vue SPA转换为PWA,使用SQLite等高级存储机制,以及实现同步和身份验证系统。未来文章将深入探讨数据冲突解决等更复杂问题。

开发

Bash INI 解析器:一个强大的Shell脚本库

2025-04-04
Bash INI 解析器:一个强大的Shell脚本库

这个强大的Bash脚本库`lib_ini.sh`提供了一套完整的函数,用于解析和操作INI配置文件。它支持读取、写入、添加、更新和删除INI文件中的节和键值,并能处理复杂值、数组和环境变量。该库还具有强大的错误处理、调试模式和可配置性,并提供在线交互式演示,方便用户测试。

开发 INI

Win11任务栏图标可调整大小啦!

2025-04-04
Win11任务栏图标可调整大小啦!

微软在最新的Windows 11 Insider Preview Beta版中测试了可调整大小的任务栏图标功能。用户可以在任务栏设置中选择始终显示较小图标、从不显示较小图标或当任务栏已满时显示较小图标。当任务栏已满时,图标会自动缩小以适应空间,避免被隐藏在二级菜单中。此功能类似于macOS的Dock,图标大小会根据打开的应用程序数量而变化。此外,开始菜单也进行了更新,布局更大,可以隐藏最近使用的应用建议,并在一页显示所有应用。需要注意的是,更新后可能会暂时失去1月份引入的电池充电状态图标,但微软计划很快恢复该功能。

开发

超越可复现构建:迈向幂等重建的Debian

2025-04-04

本文探讨了超越Debian软件包可复现构建的新目标:幂等重建。作者指出,仅仅使用旧版本的构建依赖来复现已发布的软件包(如Reproduce.Debian.net项目所做的那样)还不够,因为这依赖于无法从源码重建的旧二进制包。因此,作者提出了幂等重建的概念,即通过迭代重建,最终达到一个状态,使得重建后的软件包与前一次重建的结果完全一致。这需要解决构建时间戳、非确定性输出等问题。作者目前已完成阶段0重建,并计划发布构建工件,进行阶段1重建,最终目标是能够从像Guix这样的自举环境中重新构建Debian二进制发行版。

开发 幂等重建

简易去噪扩散模型:一个PyTorch实现

2025-04-03
简易去噪扩散模型:一个PyTorch实现

这是一个用PyTorch实现的简易去噪扩散模型代码库。作者基于已有的优秀资源,重构代码,使其更易于理解。代码逻辑清晰,将功能函数和类分别放在不同的文件中,方便学习者理解扩散模型的构建模块。模型训练和图像生成过程也分别在不同的文件中实现,方便参数调整。虽然生成的图像质量还有提升空间,但这个项目对于学习扩散模型非常有帮助。

开发

Slipstream:简化有状态流式应用开发的数据流模型

2025-04-03

Slipstream是一个使用Python构建的数据流模型,旨在简化有状态流式应用程序的开发。它支持多种数据源(如Kafka、流式API)和数据接收器(如Kafka、RocksDB、API),并允许使用普通的Python代码进行任意状态化操作(连接、聚合、过滤)。通过一个简单的计时器示例演示了其易用性,只需几行代码即可实现定时任务。Slipstream的核心在于其简洁性、灵活性和速度,通过优化的默认配置快速启动并运行。

开发

OpenVMS 代码库规模惊人:跨越三十五年,代码行数增长近三倍

2025-04-03

一位研究人员历时数月,对OpenVMS操作系统(VMS)的代码库规模进行了深入调查。通过统计15个代表性组件在不同版本(V6.2、V7.2、V8.2、V9.2-3)中的代码行数,发现VMS代码库规模在过去三十五年中增长了近三倍,从最初的几十万行代码膨胀到接近两百万行。研究还揭示了VMS代码语言从BLISS和宏汇编向C语言的转变趋势。这项研究为我们理解大型操作系统架构和演进提供了宝贵的参考。

资深开发者如何驾驭AI编程工具

2025-04-03
资深开发者如何驾驭AI编程工具

作者分享了使用AI辅助编程工具的经验,发现资深开发者更能有效利用这些工具。文中提到,AI工具更像是一位编程知识丰富的资深程序员,但在特定项目架构方面则如同初学者,需要开发者进行引导。作者总结了三个关键点:清晰的项目需求文档、完善的代码质量工具以及预先创建代码文件框架。通过两个项目案例(一个全新项目和一个已有项目),作者证明了AI工具可以极大提升开发效率,即使对于不熟悉特定技术栈的开发者也是如此。但成功的关键在于合理的规划和对传统软件工程最佳实践的运用。

开发

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

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

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

开发

拓扑排序算法变体:高效处理依赖关系

2025-04-03
拓扑排序算法变体:高效处理依赖关系

本文介绍了一种改进的拓扑排序算法,它基于 Kahn 算法,但将节点视为集合而非单个节点处理。该算法迭代地寻找图的根集,移除它们,然后重复此过程直到图为空。移除的根集顺序构成拓扑顺序,同一根集内的节点相互独立,可并行处理。算法还能检测循环,并返回部分拓扑排序结果,而非完全中止。

开发

Hatchet:基于Postgres的强大后台任务平台

2025-04-03
Hatchet:基于Postgres的强大后台任务平台

Hatchet是一个基于Postgres的后台任务平台,它简化了后台任务管理。告别复杂的队列和发布/订阅系统,Hatchet让您能够轻松地将函数分布到多个工作进程中,无需繁琐的配置和基础设施。它支持复杂的DAG工作流、故障告警、任务持久化和实时Web仪表板,并提供多种流量控制机制,例如并发限制和速率限制,确保应用稳定性。Hatchet支持Python、Typescript和Go,并提供云端和自托管版本。

开发 后台任务

WebKit 推出声明式 Web 推送:更省电、更私密

2025-04-03
WebKit 推出声明式 Web 推送:更省电、更私密

WebKit 推出了声明式 Web 推送 (Declarative Web Push),旨在解决传统 Web 推送在功耗和隐私方面的不足。传统 Web 推送依赖 Service Worker,这使得其容易受到 ITP(智能跟踪防护)的影响,且处理失败会导致推送订阅被撤销。声明式 Web 推送则允许在无需 Service Worker 的情况下发送和显示通知,直接在推送消息中包含通知内容,从而提高效率和隐私性,并与现有 Web 推送向后兼容。

开发 Web 推送

Supabase发布声明式模式,简化数据库模式管理

2025-04-03
Supabase发布声明式模式,简化数据库模式管理

Supabase发布了声明式模式,这是一种更简洁的方式来管理和维护复杂的数据库模式。通过将数据库结构定义在可版本控制的SQL文件中,开发者可以集中管理,减少冗余和错误。声明式模式尤其在处理复杂的数据库,例如Supabase自身包含RLS策略和触发函数的项目表时,能显著提升开发效率,将修改数据库模式的时间从数小时缩短到数分钟。这项改进简化了代码审查,并使并行开发更容易。

GitMCP:赋能AI,深度理解GitHub代码

2025-04-03
GitMCP:赋能AI,深度理解GitHub代码

GitMCP 是一款为GitHub项目创建专用模型上下文协议(MCP)服务器的工具,让AI助手能够深入理解你的代码上下文。它能够读取README、代码注释等文件,为AI助手提供更准确、更相关的代码信息,简化设置过程,无需复杂配置,即可连接你的AI工具。GitMCP 支持任何公共GitHub仓库和GitHub Pages,使你的文档和代码更容易被AI工具访问。

开发 代码理解

C3编程语言:C语言的优雅进化

2025-04-03
C3编程语言:C语言的优雅进化

C3 是一种基于 C 语言语法和语义的编程语言,旨在在保持 C 程序员熟悉性的同时对其进行改进。它不是一场革命,而是一次进化,为喜欢 C 的程序员提供了一种更现代化的选择。C3 与 C 具有完全的 ABI 兼容性,可以轻松地将 C 和 C3 代码混合在一个项目中。它引入了许多高级特性,例如泛型模块、基于结果的零开销错误处理和延迟执行,同时避免了不必要的复杂性。目前已发布 0.7.0 版本,支持多种操作系统,并提供预编译二进制文件和丰富的文档。

开发 C3

轻量级动画库:仅24.5KB,支持多种动画效果

2025-04-03
轻量级动画库:仅24.5KB,支持多种动画效果

一个名为Animate的轻量级动画库,其体积仅为24.5KB,却支持旋转、位移、变形等多种动画效果,并提供了强大的Timeline、Draggable、Scroll等功能模块。它使用简洁的API,支持多种缓动函数和动画组合,并能与WAAPI无缝集成。代码示例展示了如何创建各种动画,包括基于路径的动画、基于滚动事件的动画、以及响应式动画。

开发 动画库

Benchi: 基于Docker的轻量级基准测试框架

2025-04-03
Benchi: 基于Docker的轻量级基准测试框架

Benchi是一个轻量级的基准测试框架,利用Docker创建隔离环境来评估应用和基础设施的性能。它简化了基准测试的设置和运行过程,支持Docker Compose定义环境,收集并导出CSV格式的指标,自定义钩子函数,以及实时监控容器状态和指标。安装方式灵活,支持Go安装和Shell脚本安装,并提供详细的配置和使用示例,涵盖指标收集器、测试步骤定义以及Docker Compose集成等方面,方便用户进行性能测试和分析。

开发

curl-impersonate:绕过浏览器指纹识别的新利器

2025-04-03
curl-impersonate:绕过浏览器指纹识别的新利器

curl-impersonate是一个特殊的curl构建版本,能够模拟Chrome、Edge、Safari和Firefox四大主流浏览器的行为。它通过精确模拟浏览器TLS和HTTP握手过程,有效规避网站的浏览器指纹识别技术。该项目提供了命令行工具和可集成库两种使用方式,并支持多种操作系统。开发者通过修改curl的TLS扩展配置、使用不同的TLS库(如NSS和BoringSSL)以及调整HTTP/2设置等方式,实现了对浏览器行为的精准模拟。该工具的出现,为用户在保护隐私和访问受限网站方面提供了新的选择。

开发

TabSub:无需服务器的浏览器标签页间发布/订阅库

2025-04-03

TabSub 是一款轻量级的 JavaScript 发布/订阅库,利用浏览器本地存储实现不同标签页间的通信,无需服务器支持。它简单易用,提供 `publish`、`subscribe` 和 `state` 三个核心函数,分别用于发布消息、订阅消息和获取主题状态。虽然作者未进行大规模并发测试,但小规模测试表明其性能良好。TabSub 使用 MIT 许可证开源,代码托管在 GitHub 上。示例中,它被用于同步两个音频播放器的播放状态。

开发 发布订阅

优雅地解决超长页面锚点链接问题

2025-04-03
优雅地解决超长页面锚点链接问题

本文探讨了长页面锚点链接难以跳转到底部标题的问题。作者从简单的增加padding,到调整触发线位置,再到巧妙地平移虚拟标题位置,最终利用优化算法结合三次多项式函数,实现了优雅的解决方案,避免了简单方案带来的页面布局和用户体验问题。该方案通过调整权重平衡标题原始位置与各节间距,并利用平滑函数控制调整力度,有效解决了超长页面锚点链接的难题。

开发

nix-ninja:基于Nix的增量构建工具

2025-04-03
nix-ninja:基于Nix的增量构建工具

nix-ninja是一个利用Nix构建系统的增量构建工具,它解析ninja.build文件,为每个编译单元生成一个派生,并使用内容寻址派生来实现细粒度的增量构建。它与ninja CLI兼容,支持本地运行和在Nix派生中运行。当前版本仍处于实验阶段,依赖于Nix的未发布版本特性,但已经可以构建简单的C++程序和Nix本身。项目维护者欢迎贡献代码,并列出了0.1.0和0.2.0两个里程碑目标,分别专注于正确性和性能优化。

开发 增量构建

InitWare:一个更轻量、更模块化、更便携的systemd替代方案

2025-04-03
InitWare:一个更轻量、更模块化、更便携的systemd替代方案

InitWare是一个轻量级的服务管理套件,旨在替代systemd,它具有更好的可移植性、模块化和清晰的范围定义。它兼容许多systemd接口,可在NetBSD、GNU/Linux等多种现代BSD系统上运行,既可作为init系统,也可作为辅助服务管理器。InitWare已解决所有已知的安全问题,但目前仍处于alpha阶段,建议在生产环境中谨慎使用。

绕过Windows 11微软账户强制登录的简易方法

2025-04-03
绕过Windows 11微软账户强制登录的简易方法

微软正试图在Windows 11中强制用户使用微软账户,但一个新发现的技巧可以轻松绕过此限制。此前,微软删除了允许绕过此限制的'BypassNRO.cmd'脚本,但用户仍然可以通过注册表命令实现。现在,一个更简单的方法出现:在Windows 11安装过程中,按下Shift+F10打开命令提示符,输入“start ms-cxh:localonly”并回车,即可创建本地账户,从而跳过微软账户登录。这一方法直接集成在系统中,比之前的脚本方法更难被微软移除。

开发

AWS Labs MCP 服务器套件:提升你的开发工作流

2025-04-03
AWS Labs MCP 服务器套件:提升你的开发工作流

AWS Labs 推出了一套专用的 MCP 服务器,将 AWS 最佳实践直接融入你的开发流程。这套服务器包含用于管理其他 AWS Labs MCP 服务器的协调服务器,以及用于访问 Amazon Bedrock 知识库、进行 AWS CDK 项目分析、AWS 成本分析和使用 Amazon Nova Canvas 生成图像的服务器。每个服务器都有其特定的安装说明,一般包括安装 uv、Python 3.10 和配置 AWS 凭据等步骤。详细文档和 API 参考可在官方网站上找到。

开发

Rust编写的基于终端的拦截代理zxc:Vim和tmux赋能的强大工具

2025-04-03
Rust编写的基于终端的拦截代理zxc:Vim和tmux赋能的强大工具

zxc是一个用Rust编写的基于终端的拦截代理,它巧妙地结合了tmux和vim作为用户界面,提供强大的网络请求拦截、修改和转发功能。它支持HTTP/1.1和WebSocket,并具有历史记录、重复发送、插件扩展(如ffuf和sqlmap)等特性。用户可以通过vim的命令和快捷键进行操作,自定义配置拦截规则,并对请求和响应进行编码解码。zxc还支持自定义插件扩展功能,方便用户集成更多工具。

开发 网络代理

AI赋能音乐制作:Ableton Live与Claude AI的深度集成

2025-04-03
AI赋能音乐制作:Ableton Live与Claude AI的深度集成

AbletonMCP项目实现了Ableton Live与Claude AI的无缝连接,通过模型上下文协议(MCP)让Claude直接操控Ableton Live。用户可以用自然语言提示创建音轨、修改乐器效果甚至控制播放,极大提升音乐制作效率。该项目由两个主要部分构成:Ableton远程脚本和MCP服务器,安装简便,支持多种指令,例如创建合成器音轨、添加混响、设置节拍等。虽然存在一些局限性,例如复杂操作需要拆解成小步骤,但该项目无疑为AI辅助音乐创作开辟了新的可能。

开发
1 2 121 122 123 125 127 128 129 213 214