抛弃模块:一个基于全局函数数据库的编程新范式
本文探讨了一种颠覆性的编程范式:摒弃模块,采用全局函数数据库。所有函数拥有唯一名称和丰富的元数据,存储于可搜索的键值数据库中。这简化了开源贡献(只需贡献单个函数),消除了模块划分难题,并方便了函数的查找和复用。作者认为,这种方式更有利于大型程序的开发和维护,并提出了具体的实现思路和扩展方案,例如函数评级和同行评审机制。
本文探讨了一种颠覆性的编程范式:摒弃模块,采用全局函数数据库。所有函数拥有唯一名称和丰富的元数据,存储于可搜索的键值数据库中。这简化了开源贡献(只需贡献单个函数),消除了模块划分难题,并方便了函数的查找和复用。作者认为,这种方式更有利于大型程序的开发和维护,并提出了具体的实现思路和扩展方案,例如函数评级和同行评审机制。
Heroku 宣布正式全面支持 .NET,结束了此前 Beta 测试阶段。这意味着 .NET 开发者现在可以在 Heroku 的生产环境中充分利用其强大的基础设施和支持服务。Heroku 自动化 .NET 应用的构建和部署,支持 C#、F# 和 Visual Basic 等语言,并与 Heroku 的其他功能(如 Pipelines、CI 和 Review Apps)无缝集成,提供便捷的开发和部署流程。无论您是 .NET 新手还是经验丰富的开发者,Heroku 都能为您提供流畅的部署体验。
一位开发者将自己用 C 语言编写的 Transputer 模拟器移植到了 JavaScript。这个模拟器不仅运行速度出奇地快,更令人惊奇的是,它预装了一个完整的 1996 年春开发的操作系统,包含 C 编译器、汇编器、3D 建模器和光线追踪器等功能。用户可以直接在浏览器中体验这个复古的操作系统,运行各种命令,甚至可以尝试自编译 C 编译器!这展现了 JavaScript JIT 编译技术的进步以及开发者对复古技术的热爱。
作者回顾了八年来使用Rust开发NihAV多媒体框架的经验。最初选择Rust是为了克服C语言的组合性和可移植性问题。文章详细比较了Rust与其他语言(C++、Java、Go、Nim等)的优缺点,并总结了Rust在组合性、性能、底层操作、内联汇编等方面的优势。同时,作者也指出了Rust的一些不足,例如宏系统和trait系统的一些局限性,以及Rust基金会的一些争议。总而言之,作者认为Rust是一个不错的选择,但需要开发者转变思维方式,适应Rust的特性。
告别依赖后端服务器的传统Web应用!本地优先Web开发是一种革命性方法,将数据控制权交给用户。它允许用户在离线状态下访问应用,并自动同步数据。文章深入探讨了本地优先开发的核心原则、优势以及与传统云端应用的对比,并介绍了构建本地优先应用的步骤,例如将Vue SPA转换为PWA,使用SQLite等高级存储机制,以及实现同步和身份验证系统。未来文章将深入探讨数据冲突解决等更复杂问题。
这个强大的Bash脚本库`lib_ini.sh`提供了一套完整的函数,用于解析和操作INI配置文件。它支持读取、写入、添加、更新和删除INI文件中的节和键值,并能处理复杂值、数组和环境变量。该库还具有强大的错误处理、调试模式和可配置性,并提供在线交互式演示,方便用户测试。
微软在最新的Windows 11 Insider Preview Beta版中测试了可调整大小的任务栏图标功能。用户可以在任务栏设置中选择始终显示较小图标、从不显示较小图标或当任务栏已满时显示较小图标。当任务栏已满时,图标会自动缩小以适应空间,避免被隐藏在二级菜单中。此功能类似于macOS的Dock,图标大小会根据打开的应用程序数量而变化。此外,开始菜单也进行了更新,布局更大,可以隐藏最近使用的应用建议,并在一页显示所有应用。需要注意的是,更新后可能会暂时失去1月份引入的电池充电状态图标,但微软计划很快恢复该功能。
本文探讨了超越Debian软件包可复现构建的新目标:幂等重建。作者指出,仅仅使用旧版本的构建依赖来复现已发布的软件包(如Reproduce.Debian.net项目所做的那样)还不够,因为这依赖于无法从源码重建的旧二进制包。因此,作者提出了幂等重建的概念,即通过迭代重建,最终达到一个状态,使得重建后的软件包与前一次重建的结果完全一致。这需要解决构建时间戳、非确定性输出等问题。作者目前已完成阶段0重建,并计划发布构建工件,进行阶段1重建,最终目标是能够从像Guix这样的自举环境中重新构建Debian二进制发行版。
这是一个用PyTorch实现的简易去噪扩散模型代码库。作者基于已有的优秀资源,重构代码,使其更易于理解。代码逻辑清晰,将功能函数和类分别放在不同的文件中,方便学习者理解扩散模型的构建模块。模型训练和图像生成过程也分别在不同的文件中实现,方便参数调整。虽然生成的图像质量还有提升空间,但这个项目对于学习扩散模型非常有帮助。
Slipstream是一个使用Python构建的数据流模型,旨在简化有状态流式应用程序的开发。它支持多种数据源(如Kafka、流式API)和数据接收器(如Kafka、RocksDB、API),并允许使用普通的Python代码进行任意状态化操作(连接、聚合、过滤)。通过一个简单的计时器示例演示了其易用性,只需几行代码即可实现定时任务。Slipstream的核心在于其简洁性、灵活性和速度,通过优化的默认配置快速启动并运行。
一位研究人员历时数月,对OpenVMS操作系统(VMS)的代码库规模进行了深入调查。通过统计15个代表性组件在不同版本(V6.2、V7.2、V8.2、V9.2-3)中的代码行数,发现VMS代码库规模在过去三十五年中增长了近三倍,从最初的几十万行代码膨胀到接近两百万行。研究还揭示了VMS代码语言从BLISS和宏汇编向C语言的转变趋势。这项研究为我们理解大型操作系统架构和演进提供了宝贵的参考。
作者分享了使用AI辅助编程工具的经验,发现资深开发者更能有效利用这些工具。文中提到,AI工具更像是一位编程知识丰富的资深程序员,但在特定项目架构方面则如同初学者,需要开发者进行引导。作者总结了三个关键点:清晰的项目需求文档、完善的代码质量工具以及预先创建代码文件框架。通过两个项目案例(一个全新项目和一个已有项目),作者证明了AI工具可以极大提升开发效率,即使对于不熟悉特定技术栈的开发者也是如此。但成功的关键在于合理的规划和对传统软件工程最佳实践的运用。
arXivLabs是一个允许协作者直接在我们网站上开发和分享arXiv新功能的框架。与arXivLabs合作的个人和组织都秉承并接受了我们开放、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,并且只与遵守这些价值观的合作伙伴合作。如果您有关于能为arXiv社区增值的项目的想法,请了解更多关于arXivLabs的信息。
本文介绍了一种改进的拓扑排序算法,它基于 Kahn 算法,但将节点视为集合而非单个节点处理。该算法迭代地寻找图的根集,移除它们,然后重复此过程直到图为空。移除的根集顺序构成拓扑顺序,同一根集内的节点相互独立,可并行处理。算法还能检测循环,并返回部分拓扑排序结果,而非完全中止。
Hatchet是一个基于Postgres的后台任务平台,它简化了后台任务管理。告别复杂的队列和发布/订阅系统,Hatchet让您能够轻松地将函数分布到多个工作进程中,无需繁琐的配置和基础设施。它支持复杂的DAG工作流、故障告警、任务持久化和实时Web仪表板,并提供多种流量控制机制,例如并发限制和速率限制,确保应用稳定性。Hatchet支持Python、Typescript和Go,并提供云端和自托管版本。
WebKit 推出了声明式 Web 推送 (Declarative Web Push),旨在解决传统 Web 推送在功耗和隐私方面的不足。传统 Web 推送依赖 Service Worker,这使得其容易受到 ITP(智能跟踪防护)的影响,且处理失败会导致推送订阅被撤销。声明式 Web 推送则允许在无需 Service Worker 的情况下发送和显示通知,直接在推送消息中包含通知内容,从而提高效率和隐私性,并与现有 Web 推送向后兼容。
Supabase发布了声明式模式,这是一种更简洁的方式来管理和维护复杂的数据库模式。通过将数据库结构定义在可版本控制的SQL文件中,开发者可以集中管理,减少冗余和错误。声明式模式尤其在处理复杂的数据库,例如Supabase自身包含RLS策略和触发函数的项目表时,能显著提升开发效率,将修改数据库模式的时间从数小时缩短到数分钟。这项改进简化了代码审查,并使并行开发更容易。
GitMCP 是一款为GitHub项目创建专用模型上下文协议(MCP)服务器的工具,让AI助手能够深入理解你的代码上下文。它能够读取README、代码注释等文件,为AI助手提供更准确、更相关的代码信息,简化设置过程,无需复杂配置,即可连接你的AI工具。GitMCP 支持任何公共GitHub仓库和GitHub Pages,使你的文档和代码更容易被AI工具访问。
C3 是一种基于 C 语言语法和语义的编程语言,旨在在保持 C 程序员熟悉性的同时对其进行改进。它不是一场革命,而是一次进化,为喜欢 C 的程序员提供了一种更现代化的选择。C3 与 C 具有完全的 ABI 兼容性,可以轻松地将 C 和 C3 代码混合在一个项目中。它引入了许多高级特性,例如泛型模块、基于结果的零开销错误处理和延迟执行,同时避免了不必要的复杂性。目前已发布 0.7.0 版本,支持多种操作系统,并提供预编译二进制文件和丰富的文档。
一个名为Animate的轻量级动画库,其体积仅为24.5KB,却支持旋转、位移、变形等多种动画效果,并提供了强大的Timeline、Draggable、Scroll等功能模块。它使用简洁的API,支持多种缓动函数和动画组合,并能与WAAPI无缝集成。代码示例展示了如何创建各种动画,包括基于路径的动画、基于滚动事件的动画、以及响应式动画。
Benchi是一个轻量级的基准测试框架,利用Docker创建隔离环境来评估应用和基础设施的性能。它简化了基准测试的设置和运行过程,支持Docker Compose定义环境,收集并导出CSV格式的指标,自定义钩子函数,以及实时监控容器状态和指标。安装方式灵活,支持Go安装和Shell脚本安装,并提供详细的配置和使用示例,涵盖指标收集器、测试步骤定义以及Docker Compose集成等方面,方便用户进行性能测试和分析。
curl-impersonate是一个特殊的curl构建版本,能够模拟Chrome、Edge、Safari和Firefox四大主流浏览器的行为。它通过精确模拟浏览器TLS和HTTP握手过程,有效规避网站的浏览器指纹识别技术。该项目提供了命令行工具和可集成库两种使用方式,并支持多种操作系统。开发者通过修改curl的TLS扩展配置、使用不同的TLS库(如NSS和BoringSSL)以及调整HTTP/2设置等方式,实现了对浏览器行为的精准模拟。该工具的出现,为用户在保护隐私和访问受限网站方面提供了新的选择。
TabSub 是一款轻量级的 JavaScript 发布/订阅库,利用浏览器本地存储实现不同标签页间的通信,无需服务器支持。它简单易用,提供 `publish`、`subscribe` 和 `state` 三个核心函数,分别用于发布消息、订阅消息和获取主题状态。虽然作者未进行大规模并发测试,但小规模测试表明其性能良好。TabSub 使用 MIT 许可证开源,代码托管在 GitHub 上。示例中,它被用于同步两个音频播放器的播放状态。
本文探讨了长页面锚点链接难以跳转到底部标题的问题。作者从简单的增加padding,到调整触发线位置,再到巧妙地平移虚拟标题位置,最终利用优化算法结合三次多项式函数,实现了优雅的解决方案,避免了简单方案带来的页面布局和用户体验问题。该方案通过调整权重平衡标题原始位置与各节间距,并利用平滑函数控制调整力度,有效解决了超长页面锚点链接的难题。
nix-ninja是一个利用Nix构建系统的增量构建工具,它解析ninja.build文件,为每个编译单元生成一个派生,并使用内容寻址派生来实现细粒度的增量构建。它与ninja CLI兼容,支持本地运行和在Nix派生中运行。当前版本仍处于实验阶段,依赖于Nix的未发布版本特性,但已经可以构建简单的C++程序和Nix本身。项目维护者欢迎贡献代码,并列出了0.1.0和0.2.0两个里程碑目标,分别专注于正确性和性能优化。
InitWare是一个轻量级的服务管理套件,旨在替代systemd,它具有更好的可移植性、模块化和清晰的范围定义。它兼容许多systemd接口,可在NetBSD、GNU/Linux等多种现代BSD系统上运行,既可作为init系统,也可作为辅助服务管理器。InitWare已解决所有已知的安全问题,但目前仍处于alpha阶段,建议在生产环境中谨慎使用。
微软正试图在Windows 11中强制用户使用微软账户,但一个新发现的技巧可以轻松绕过此限制。此前,微软删除了允许绕过此限制的'BypassNRO.cmd'脚本,但用户仍然可以通过注册表命令实现。现在,一个更简单的方法出现:在Windows 11安装过程中,按下Shift+F10打开命令提示符,输入“start ms-cxh:localonly”并回车,即可创建本地账户,从而跳过微软账户登录。这一方法直接集成在系统中,比之前的脚本方法更难被微软移除。
AWS Labs 推出了一套专用的 MCP 服务器,将 AWS 最佳实践直接融入你的开发流程。这套服务器包含用于管理其他 AWS Labs MCP 服务器的协调服务器,以及用于访问 Amazon Bedrock 知识库、进行 AWS CDK 项目分析、AWS 成本分析和使用 Amazon Nova Canvas 生成图像的服务器。每个服务器都有其特定的安装说明,一般包括安装 uv、Python 3.10 和配置 AWS 凭据等步骤。详细文档和 API 参考可在官方网站上找到。
zxc是一个用Rust编写的基于终端的拦截代理,它巧妙地结合了tmux和vim作为用户界面,提供强大的网络请求拦截、修改和转发功能。它支持HTTP/1.1和WebSocket,并具有历史记录、重复发送、插件扩展(如ffuf和sqlmap)等特性。用户可以通过vim的命令和快捷键进行操作,自定义配置拦截规则,并对请求和响应进行编码解码。zxc还支持自定义插件扩展功能,方便用户集成更多工具。
AbletonMCP项目实现了Ableton Live与Claude AI的无缝连接,通过模型上下文协议(MCP)让Claude直接操控Ableton Live。用户可以用自然语言提示创建音轨、修改乐器效果甚至控制播放,极大提升音乐制作效率。该项目由两个主要部分构成:Ableton远程脚本和MCP服务器,安装简便,支持多种指令,例如创建合成器音轨、添加混响、设置节拍等。虽然存在一些局限性,例如复杂操作需要拆解成小步骤,但该项目无疑为AI辅助音乐创作开辟了新的可能。