分类: 开发

Apache NuttX RTOS每日自动回退测试

2025-02-08
Apache NuttX RTOS每日自动回退测试

为了尽早发现并修复Apache NuttX RTOS在QEMU RISC-V模拟器上的错误,作者开发了一套自动回退测试系统。该系统每日自动构建和测试NuttX,如果测试失败,则会回退到之前的提交,逐个重新构建和测试,直到找到导致失败的提交。随后,系统会发出Mastodon通知,并生成一份礼貌的说明邮件给相关的NuttX开发者,方便其进行修复。整个过程利用了GitLab Snippets和Prometheus数据库来记录和分析测试结果,最终在NuttX Dashboard上展示构建历史。

开发

2025 GIF 新选择:AVIF、WebP、视频的较量

2025-02-08
2025 GIF 新选择:AVIF、WebP、视频的较量

本文更新了2022年关于GIF替代方案的文章。如今,AV1视频编解码器和动画AVIF已在所有浏览器中获得支持(Safari存在一些问题)。WebP在文件大小和浏览器兼容性方面仍有优势。JPEG-XL支持静态图像,但动画支持有限。文章还比较了使用``元素的方案,并讨论了AV1、VP9编解码器以及媒体查询在响应式视频中的应用。虽然AVIF潜力巨大,但目前Safari的帧率问题和浏览器兼容性问题仍需关注。最终,选择取决于项目需求和对浏览器兼容性的权衡。

开发 WebP AVIF

从数小时到 360 毫秒:过度工程的数独难题求解

2025-02-08

作者尝试解决一个数独难题,目标是找到使得所有行组成的九个九位数的最大公约数最大的解。最初使用 Z3 求解器,但运行数小时仍未找到结果。作者随后尝试了多种优化方法:首先通过数学分析缩小搜索空间,然后使用 BFS 算法,并逐步优化 `is_good` 函数,从使用 HashSet 到使用 bitset,最后利用 SIMD 技术进行向量化计算。通过多线程和改进线程同步机制,最终将求解时间从数小时缩短到 360 毫秒,实现了超过 1600 倍的加速。虽然最终发现直接硬编码答案是最快的,但这篇文章展示了即使是看似简单的算术问题,也能通过精细的算法优化获得巨大的性能提升。

开发

分布式数据库中的版本控制:协调的终结者

2025-02-08

本文探讨了在构建高可用、低延迟、可扩展的分布式数据库系统时,版本控制相对于协调机制的优势。通过一个具体的例子,作者阐述了如何利用版本控制避免锁机制带来的并发性问题和可扩展性瓶颈。版本控制通过为数据创建多个版本,允许并发事务在不互相阻塞的情况下访问数据,从而提升系统性能和吞吐量。文章还深入探讨了版本选择和版本管理机制,并解释了如何在Aurora DSQL中利用物理时钟来避免协调,最终实现了高性能和高可用性的分布式数据库系统。

开发

数学手写技巧:避免歧义的书写指南

2025-02-08

这篇博文提供了一些数学手写技巧,以避免在书写罗马字母、数字和希腊字母时出现歧义。作者强调了区分相似字母和符号的重要性,例如将小写字母 'l' 写成斜体以避免与数字 '1' 混淆,以及在 'p'、'q'、't'、'u'、'v'、'w'、'x' 和 'z' 上添加特定的笔画以使其与其他符号区分开来。此外,文章还详细介绍了如何书写希腊字母,以避免与罗马字母或其他希腊字母混淆。总而言之,这篇文章为提高数学手写清晰度和准确性提供了宝贵的建议。

txtar:简化文本归档的Chez Scheme库

2025-02-08

txtar是一个Chez Scheme库,它提供了一种简单易用的文本归档格式,兼容golang.org/x/tools/txtar。它可以将多个文件连接在一起,并允许添加顶级注释。该库易于手工读写,非常适合测试数据。安装简单,只需运行make install,并设置CHEZSCHEMELIBDIRS环境变量。它依赖于srfi s13 strings和srfi s64 testing(仅测试时需要)。可以使用Thunderchez获取依赖库。库的导出函数都带有类型预期文档,鼓励用户查看实现。示例包括从文件名列表构造归档、写入文本到归档文件、从归档中检索文件等。txtar采用GNU Affero General Public License许可。

用Rust编写Windows内核驱动程序

2025-02-08
用Rust编写Windows内核驱动程序

本文介绍了使用Rust编写Windows内核驱动程序的实践经验。作者克服了Rust与C/C++类型转换的冗长问题,利用`wdk`相关的crates构建了一个简单的WDM驱动程序——“Booster”,可以修改任意线程的优先级。文章详细介绍了项目的搭建、依赖项配置、核心代码实现以及驱动程序的安装和测试过程,并指出了Rust在内核驱动开发中存在的挑战和改进方向。

开发

FlashSpace:macOS虚拟工作区管理神器

2025-02-08
FlashSpace:macOS虚拟工作区管理神器

FlashSpace是一款针对macOS系统的超高速虚拟工作区管理器,旨在提升并替代原生macOS Spaces。它无需等待macOS动画,支持多显示器,可自定义热键切换工作区,并能将应用程序分配到特定工作区和显示器。FlashSpace还具有焦点管理器、光标管理器、配置文件等功能,并支持SketchyBar集成,极大提高工作效率。

Rust的rand crate:随机数生成器的依赖地狱

2025-02-08
Rust的rand crate:随机数生成器的依赖地狱

本文探讨了Rust的`rand` crate(用于生成随机数)的依赖问题。作者发现`rand`及其依赖项的数量惊人,导致编译时间过长,代码体积膨胀。`rand`的依赖树包含多个crate,例如`libc`、`zerocopy`和`ppv-lite86`等,它们带来了大量的代码行数和编译开销。作者提出了几种可能的解决方案,包括将部分功能整合到标准库中,或者优化`rand`自身的依赖管理。这引发了关于Rust标准库的完整性和外部crate依赖管理的讨论。

开发 rand crate

Google的Carbon:不仅仅是C++的继承者,更是技术债务的清算者

2025-02-08
Google的Carbon:不仅仅是C++的继承者,更是技术债务的清算者

Google的实验性编程语言Carbon并非简单的C++替代品,而是旨在通过自动化工具大规模迁移现有C++代码到一个现代化、易维护的语言,解决C++技术债务难题。这源于Google与C++标准委员会在语言发展方向上的分歧,Carbon力图摆脱委员会的束缚,实现更灵活的语言演进。虽然挑战巨大,但Carbon利用Clang和LLVM等工具,并通过接口统一抽象,试图解决C++的复杂性问题,为未来几十年仍将存在的庞大C++代码库提供可行方案。

开发 Carbon

单文件跨平台C/C++库:cute_headers

2025-02-08
单文件跨平台C/C++库:cute_headers

cute_headers是一个包含多个单文件跨平台C/C++库的项目,旨在提供简洁易用的自包含库,例如2D碰撞检测、网络通信、地图加载、音频处理等。这些库无需依赖其他库,可以直接包含到你的项目中,并通过简单的宏定义来启用实现。作者巧妙地将头文件和实现代码结合,简化了项目集成和构建过程,同时避免了模板和内联代码带来的编译时间问题。cute_headers 提供了多个实用工具,非常适合游戏开发等领域。

开发

软件开发的复杂性陷阱

2025-02-08

资深开发者antirez发出警告:我们正在摧毁软件!过度追求新技术、忽视复杂性、依赖庞大臃肿的构建系统和依赖链,以及轻视代码可维护性、兼容性等问题,正在让软件变得越来越脆弱。他指出,盲目避免“重复造轮子”阻碍了学习和创新,而过早重写、频繁更换语言和框架,以及对现有库的依赖,都加剧了软件的复杂性。我们需要重新重视代码简洁性、可扩展性和可维护性,才能找回编程的乐趣。

隐藏的巨型缓存:为什么你的磁盘空间不翼而飞?

2025-02-08

许多Unix程序将缓存数据存储在隐藏的`.cache`和`.local`目录中,导致用户难以发现并清理这些占用大量磁盘空间的缓存文件。作者在共享文件服务器环境中,亲眼目睹研究生们因这些隐藏的缓存而困惑,甚至数百GB的磁盘空间被不知不觉地占用。文章呼吁程序开发者将缓存存储在可见的目录中,并建议磁盘空间使用工具应明确显示这些隐藏目录的内容,方便用户管理磁盘空间。

告别重复性操作:用“无事可做”脚本自动化你的运维流程

2025-02-08
告别重复性操作:用“无事可做”脚本自动化你的运维流程

运维团队常常面临繁琐的手动操作,例如用户账户的创建和基础设施修改。本文介绍了一种名为“无事可做”脚本的方法,它将手动流程的每个步骤封装成一个函数,虽然脚本本身不执行任何操作,但它通过清晰地组织步骤、降低自动化门槛,使得后续自动化更容易实现。这种方法避免了因步骤遗漏而导致的错误,逐步将繁琐任务自动化,最终提高效率。

用Fortune算法生成Voronoi图:一个O(n log n)的挑战

2025-02-08

本文深入探讨了使用Fortune算法以O(n log n)时间复杂度生成Voronoi图的复杂过程。作者坦言,实现该算法的难度超乎想象,并建议除非需要每秒处理大量大型Voronoi图,否则应考虑更简单的O(n²)实现或使用现成库。文章详细解释了Voronoi图的概念、Fortune算法的原理(包括扫描线、海滩线、事件队列、抛物线等),以及算法中各种数据结构和事件处理流程,例如站点事件、圆事件、不完整边、半边等。尽管算法复杂,但其生成的Voronoi图效果令人印象深刻。

开发 Fortune算法

reMarkable 2上的AI助手:Ghostwriter

2025-02-08
reMarkable 2上的AI助手:Ghostwriter

Ghostwriter是一个运行在reMarkable 2上的AI助手,它能够根据手写或屏幕上的提示,通过OpenAI、Anthropic和Google Gemini等模型生成文本或图像回复。开发者通过不断迭代,完善了手写识别、图像生成、虚拟键盘等功能,并实现了对不同模型和API的兼容。目前,Ghostwriter支持多种模式,包括文本辅助和绘图模式,并正在开发更强大的评估系统和更丰富的工具,以提升用户体验。

开发

纠正鸟式埃拉托斯特尼筛法的证明:一个关于无限列表的证明

2025-02-08

本文纠正了Richard Bird在其著作《Thinking Functionally with Haskell》中关于埃拉托斯特尼筛法的一个错误证明。Bird给出了一个基于列表的循环实现,但其证明提示存在缺陷。本文作者通过引入新的引理和基于Bertrand’s Postulate(伯特兰-切比雪夫定理的弱化版本),提供了一个完整的正确性证明,并探讨了该算法与David Turner提出的“完全函数式编程”理念之间的联系。

arXivLabs:与社区协作者共建arXiv新功能

2025-02-08
arXivLabs:与社区协作者共建arXiv新功能

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

开发

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

2025-02-08
arXivLabs:与社区协作者合作的实验项目

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

开发

Linux 之父与 Minix 之间的论战:设计哲学的碰撞

2025-02-08

这篇帖子记录了 Linux 之父 Linus Torvalds 与 Minix 作者 Andrew S. Tanenbaum 之间的一场激烈辩论。争论的核心在于操作系统设计哲学:Linus 认为应该充分利用特定硬件(如 386)的优势,而 Tanenbaum 则主张设计应优先考虑可移植性和在低端硬件上的运行能力。Linus 指责 Minix 的设计限制了其性能和功能,而 Tanenbaum 反驳 Linux 过于依赖特定硬件。这场辩论展现了两种不同的操作系统设计理念,也反映了当时硬件条件对软件开发的影响。

Docker Bake 正式发布:简化复杂 Docker 构建

2025-02-08
Docker Bake 正式发布:简化复杂 Docker 构建

Docker 正式发布 Docker Bake,一个强大的构建编排工具,集成在 Docker Desktop 4.38 中。Bake 使用声明式文件简化复杂的 Docker 构建流程,支持多镜像构建、并行化和缓存优化,显著提升构建速度和效率。它解决了传统 Docker 构建中命令复杂、多镜像管理困难等问题,并与 Docker Compose 兼容,支持多种高级特性如矩阵构建和自定义函数。此次 GA 版本新增了上下文去重传输、权限控制、可组合属性、变量验证等功能,进一步提升了安全性和易用性。

开发 Bake

Hotline:经典在线社区的Swift重生

2025-02-08
Hotline:经典在线社区的Swift重生

一个雄心勃勃的项目正在用Swift和SwiftUI重写1997年的经典Mac在线社区软件Hotline,旨在将其带到现代的苹果生态系统(iOS、macOS等)。该项目目前仅包含客户端,支持连接和参与Hotline服务器。用户可以进行IRC风格的聊天、私信、论坛阅读和发帖、BBS留言板互动以及FTP式的文件上传下载等。项目目标是创建一个现代化的开源Hotline版本,并重振这个曾经辉煌的品牌。

开发

RubyBoy:一个用Ruby编写的Game Boy模拟器,现已支持WebAssembly!

2025-02-08
RubyBoy:一个用Ruby编写的Game Boy模拟器,现已支持WebAssembly!

作者用Ruby构建了一个Game Boy模拟器RubyBoy,并将其发布为gem包。文章详细介绍了开发过程,包括UI实现、ROM加载、MBC芯片支持、CPU和PPU的实现以及性能优化策略。为了提升性能,作者使用了YJIT、避免不必要的Hash创建、调整循环计算等方法,并在Ruby 3.3的加持下取得了显著的性能提升。最终,RubyBoy成功运行在浏览器中,借助WebAssembly技术,实现了跨平台运行。

VS Code远程编辑的隐患:全盘入侵还是便捷开发?

2025-02-08
VS Code远程编辑的隐患:全盘入侵还是便捷开发?

文章探讨了VS Code远程编辑功能的安全隐患。虽然VS Code利用类似于Emacs Tramp的远程编辑功能很方便,但其与Tramp不同,它并非轻量级地连接远程环境,而是通过下载Agent,在远程服务器上运行一个Node.js程序,该程序可以访问文件系统、编辑文件、启动Shell进程甚至持久化自身。作者认为这种方式过于“入侵式”,存在安全风险,尤其是在开发服务器或生产环境中使用时。文章最后指出,虽然作者团队最终找到了绕过VS Code远程编辑机制的方法,但仍提醒读者注意其潜在的安全问题。

(fly.io)
开发 远程编辑

Chrome Manifest V3:广告拦截器开发者的噩梦?

2025-02-08
Chrome Manifest V3:广告拦截器开发者的噩梦?

谷歌Chrome浏览器Manifest V3 (MV3)扩展程序架构的重大改动给广告拦截器、内容过滤器和隐私工具的开发者带来了诸多难题。尽管谷歌声称MV3旨在提升安全性及性能,但诸多开发者如AdGuard和uBlock Origin的创建者却发现MV3的限制性远超预期,导致核心功能受限甚至无法实现。一些开发者抱怨MV3增加了开发难度,并指责谷歌对开发者反馈响应迟缓,甚至通过改变用户界面设计来弱化扩展程序功能。这引发了开发者对谷歌真实意图的质疑:是为了提升安全隐私,还是有意限制扩展程序功能?

开发

大型语言模型OCR能力的局限性:为什么LLM不擅长处理复杂PDF?

2025-02-07
大型语言模型OCR能力的局限性:为什么LLM不擅长处理复杂PDF?

一家名为Pulse的公司在使用大型语言模型(LLM)进行数据提取时遇到了意想不到的挑战。他们发现,尽管LLM在文本生成和摘要方面表现出色,但在处理复杂的PDF和表格时却存在严重缺陷。LLM的OCR能力受限于其概率性本质和对图像的抽象处理方式,容易出现幻觉、数据丢失和误读等问题,尤其是在处理财务和医疗数据时风险极高。此外,LLM还容易受到提示注入攻击,这引发了安全和伦理方面的担忧。Pulse最终决定放弃使用LLM进行OCR,转而开发结合传统计算机视觉算法和视觉转换器的自定义解决方案。

开发

AI如何改变技术面试?

2025-02-07
AI如何改变技术面试?

随着AI在编码等复杂任务上的能力日益增强,传统的技术面试方式正面临挑战。作者以自身经历为例,指出LeetCode和系统设计面试的弊端:过于注重算法和套路,与实际工作脱节。AI已经能够轻松通过一些技术面试,这迫使企业重新思考面试流程。作者建议将代码审查纳入面试流程,因为它更能考察候选人在代码质量、安全、性能等方面的评估能力,这在AI时代尤为重要。

开发

ExpenseOwl:极简主义的家庭财务追踪神器

2025-02-07
ExpenseOwl:极简主义的家庭财务追踪神器

厌倦了复杂的财务追踪软件?ExpenseOwl为你提供了一个极简的解决方案。它使用简单的JSON文件存储数据,通过现代化的饼状图直观展示每月支出,并支持命令行和Web界面。无需复杂的设置和功能,只需添加、删除和查看支出,即可轻松掌握你的财务状况。ExpenseOwl还支持自定义类别和货币,并可轻松部署在Docker中。

Emerge工具:Android和iOS应用性能测试示例项目

2025-02-07
Emerge工具:Android和iOS应用性能测试示例项目

Emerge工具开源了一个Android和iOS示例项目,演示了如何使用其产品套件进行大小分析、快照测试、死代码检测和性能测试。该项目已将应用发布到App Store和Google Play,并提供详细的文档和Gradle/fastlane配置示例,方便开发者学习和使用Emerge。

开发 Emerge

Zep AI:赋能下一代AI代理的基础记忆层

2025-02-07
Zep AI:赋能下一代AI代理的基础记忆层

Zep AI 正在构建下一代 AI 代理的基础记忆层,其持续学习的知识图谱技术能够使 AI 系统从用户交互和业务数据中构建丰富的时序理解。他们被美泰和 WebMD 等行业领导者信赖,用于提升 AI 应用的个性化和准确性。目前,Zep 正在招聘资深工程师,负责构建可扩展的创新解决方案,并与创始人一起制定技术战略,参与从基础设施到前端的各个方面的工作。理想候选人需具备 7 年以上软件工程经验,精通 Python、TypeScript 或 Go 中至少两种语言,并具有系统架构、生产规模软件构建和团队领导经验。

开发
1 2 165 166 167 169 171 172 173 213 214