分类: 开发

从一年到几周:优化编译器程序图共享的历程

2025-05-13

作者历时一年解决编译器程序图序列化问题,初始方案笨拙且难以维护。最终通过与他人合作,重新审视问题,将问题转化为寻找图中的最低单公共祖先(LSCA)问题。借助已有的LCA算法库和巧妙的lazy编程技巧,作者最终实现了线性时间复杂度的优雅解法,将代码长度缩减三分之一,并有效解决了性能瓶颈。

高效清理对象存储中的逻辑删除文件:WarpStream 的经验总结

2025-05-13
高效清理对象存储中的逻辑删除文件:WarpStream 的经验总结

本文介绍了作者在构建分布式系统时,如何高效清理对象存储中逻辑删除文件的经验。直接使用桶策略或同步删除都存在缺陷,前者无法满足复杂系统对不同数据保留时间的需求,后者可能导致文件孤立。作者对比了延迟队列和异步协调两种方法,最终采用了一种混合方案:在 WarpStream Agents 中引入“乐观删除队列”,结合异步协调,高效且经济地清理文件,并有效避免了文件孤立问题。该方案充分利用了系统的特点,并考虑了容错和灾难恢复。

开发

CocoIndex:用LLM构建知识图谱

2025-05-13
CocoIndex:用LLM构建知识图谱

CocoIndex是一个简化知识图谱构建和维护的工具,它支持持续的源数据更新。本文以CocoIndex文档为例,演示了如何使用大型语言模型(LLM)从文档中提取实体关系,构建包含实体关系和实体提及两种关系的知识图谱,最终导出到Neo4j数据库。整个流程包括数据源的添加、数据收集、关系提取、知识图谱构建以及Neo4j的导出和查询。

开发

Dusk OS:为文明崩塌而生的极简操作系统

2025-05-13

Dusk OS是一个基于Forth语言的32位操作系统,旨在应对文明崩塌后的极端生存环境。它极度简化系统设计,牺牲部分功能以换取极高的效率和可操作性。通过“类C”编译器,Dusk OS可以轻松移植现有的UNIX C代码,并拥有极小的代码量(不到6000行即可实现一个完整的系统)。它完全自托管,可在老旧硬件上流畅运行,并具有极高的“功率密度”,对传统的软件文化提出了挑战。

开发

谷歌秘密研发Android桌面模式,挑战三星DeX

2025-05-13
谷歌秘密研发Android桌面模式,挑战三星DeX

谷歌正在秘密研发一款类似三星DeX的Android桌面模式,该模式已在Pixel手机上被发现。它允许用户在连接外接显示器后,以可调整大小的窗口运行多个应用程序,并配备了任务栏。虽然该功能目前尚不完善,预计不会随Android 16一起发布,但它标志着谷歌在改进Android大屏体验方面迈出了重要一步,未来可能在Android 17中正式推出。

Material 3 Expressive:更具表现力的Android体验

2025-05-13
Material 3 Expressive:更具表现力的Android体验

谷歌在Material You设计基础上推出了Material 3 Expressive,为Android用户带来更个性化、更具表现力的手机体验。它通过更流畅的动画和更自然、更有弹性的动画效果,提升日常使用的愉悦感。例如,当您关闭一个通知时,相邻的通知会微妙地响应您的拖动操作,并伴有令人满意的触觉反馈。这使得Android系统更具人性化和亲和力,更贴合用户的需求。

开发

OpenTelemetry与Apache Arrow携手:Rust驱动下一阶段高效数据处理

2025-05-13
OpenTelemetry与Apache Arrow携手:Rust驱动下一阶段高效数据处理

OpenTelemetry协议与Apache Arrow项目的第二阶段正式启动,旨在利用Rust构建更高效的遥测数据处理管道。该项目将探索零拷贝、列式处理的端到端方案,并与OpenTelemetry Collector的Go生态系统集成。此举有望显著提升大型遥测数据流的处理效率,并促进与Apache DataFusion等数据湖技术的整合,为用户带来更强大的数据分析能力。

开发

Mill构建工具:React式构建的革命

2025-05-13

Mill 是一款独特的构建工具,它借鉴了 React.js 的核心设计理念:直接风格构建和使用单一通用语言。与传统的基于回调函数和多语言配置的构建工具不同,Mill 允许开发者编写直接返回最终构建结果的函数,并由 Mill 自动处理缓存、并行化和优化等复杂工作。这种方法简化了构建流程,提高了可读性和可维护性,并提升了 IDE 集成体验。

开发

PyPI 推出组织账户,增强可持续性

2025-05-13
PyPI 推出组织账户,增强可持续性

Python 包索引 (PyPI) 推出了组织账户功能,旨在提升平台的可持续性和用户体验。该功能允许团队创建自管理的组织账户,拥有专属的网络地址,方便大型项目和公司管理多个子团队和包。社区项目可免费使用,企业项目需支付少量费用。所有收入将用于改进 PyPI 的支持和基础设施。此举旨在应对 PyPI 持续增长的下载量和带宽需求,并提高响应速度。该功能完全可选,不会影响现有用户的体验。

开发 组织账户

优雅地处理Rust中的Option:告别unwrap()

2025-05-13
优雅地处理Rust中的Option:告别unwrap()

Rust开发中,处理`Option`类型的`None`值常常让人头疼。本文探讨了避免使用`unwrap()`方法,安全地处理`None`值的多种方案。文章首先分析了直接使用`?`操作符带来的编译错误,以及`unwrap()`带来的运行时风险。随后,作者详细介绍了`ok_or()`方法、`match`语句以及Rust 1.65引入的`let-else`表达式三种处理方式,并比较了它们的优缺点。其中,`let-else`表达式因其简洁易懂、易于理解和维护等优点被推荐为最佳实践,有效地提升了代码的健壮性和可读性。

开发 Option

AG-UI:AI代理与前端应用交互的新协议

2025-05-13
AG-UI:AI代理与前端应用交互的新协议

AG-UI是一个轻量级、基于事件的开放协议,旨在标准化AI代理与前端应用的连接方式。它支持多种事件类型和传输方式,并提供灵活的中间件层,确保不同环境下的兼容性。AG-UI已与多个流行的代理框架集成,支持实时聊天、双向状态同步、生成式UI等功能,并提供React客户端库以及与AWS SNS合作开发的消息客户端。其简洁的设计和丰富的功能,使其成为构建AI驱动应用的理想选择。

谷歌的Android桌面模式:挑战三星DeX?

2025-05-13
谷歌的Android桌面模式:挑战三星DeX?

谷歌正在开发名为“Desktop View”的全新Android桌面模式,该模式将带来持久任务栏和可调整大小的自由窗格等功能,为用户提供类似PC的多任务体验。这标志着谷歌在挑战三星DeX,为非三星Android手机用户提供更强大的桌面体验方面迈出了重要一步。虽然目前仍处于开发阶段,但其功能已相当完善,包括持久任务栏、可调整大小的自由窗格以及应用间的拖放功能,有望在未来成为Android系统的重要组成部分。

开发 多任务

HelixDB:一款超高速图向量数据库,为RAG和AI应用而生

2025-05-13
HelixDB:一款超高速图向量数据库,为RAG和AI应用而生

HelixDB是一个用Rust编写的开源图向量数据库,专为检索增强生成(RAG)和AI应用而设计。它基于LMDB存储引擎,速度极快,号称比Neo4j快1000倍,比TigerGraph快100倍,与Qdrant性能相当。HelixDB支持图和向量数据类型,提供ACID一致性,并具有易于使用的CLI工具和SDK(TypeScript和Python)。目前,团队正致力于扩展向量数据类型功能、增强查询语言以及构建测试套件等。长期目标包括开发内部图向量存储引擎和网络协议库。

开发

程序员的调试技巧:从低级错误到设计缺陷

2025-05-13
程序员的调试技巧:从低级错误到设计缺陷

本文深入探讨了程序员在调试过程中遇到的各种常见错误,包括拼写错误、逻辑错误、意外初始条件、内存泄漏、内存覆盖、竞争条件、设计缺陷、第三方库错误、规范失败以及难以重现的错误。文章详细介绍了每种错误类型的特征、原因以及相应的调试策略,并强调了使用调试器、编译器警告、代码格式化工具、断言以及自定义内存分配器等工具的重要性。作者还分享了在处理多线程错误、设计缺陷以及难以重现的错误时的经验,并建议使用统计方法来分析大量的错误报告。最后,文章还讨论了编译器错误,并指出虽然罕见,但仍然需要程序员了解如何识别和处理。

开发

Linux 之父回归机械键盘:噪音与效率的权衡

2025-05-13
Linux 之父回归机械键盘:噪音与效率的权衡

Linux内核项目负责人Linus Torvalds在尝试了六个月的低音键盘后,又回到了他心爱的带有Cherry MX蓝轴的机械键盘。他表示,机械键盘的敲击声和触感反馈有助于减少打字错误。尽管他居家办公,不会打扰到他人,但他还是将最近的打字错误归咎于键盘(后来又改口说是自动更正的锅)。目前,Linux 6.15内核版本进展顺利,预计两周后发布。

开发

C语言宏:优雅地检测常量表达式

2025-05-13

本文探讨了在C语言中编写宏以检测表达式是否为编译时常量的多种方法。作者尝试了利用C23的`constexpr`和`typeof`、GNU扩展`__builtin_constant_p`、C11的`static_assert`、以及巧妙运用`sizeof`和复合字面量等技巧。这些方法各有优劣,有的需要较新的C标准支持,有的依赖编译器扩展,有的可能改变表达式的类型或产生警告信息。文章最后总结了这些方法的利弊,并表达了对更优雅解决方案的期待。

Java并发编程进化史:从线程到结构化并发

2025-05-13

本文回顾了Java并发编程的演变历程,从Java 1的原始线程到Java 21的结构化并发。早期Java并发编程需要手动管理线程,存在诸多问题。Java 5引入了ExecutorService,简化了线程生命周期管理;Java 7的ForkJoinPool针对CPU密集型任务进行了优化;Java 8的CompletableFuture支持非阻塞任务链式操作;Java 9的Flow API支持响应式编程;Java 21的虚拟线程和结构化并发则进一步提升了并发编程的效率和安全性,解决了以前手动管理线程带来的诸多问题,并提供了一种更安全、更简洁的方式来处理并发任务。

搜索引擎PDF索引:从图像到文本的挑战与解决方案

2025-05-13

搜索引擎近期获得了索引PDF文件的能力,但从PDF中提取文本信息远比想象中复杂。PDF并非文本格式,而是图形格式,文本以字形坐标的形式存在,可能旋转、重叠或无序排列。文章详细介绍了如何改进PDFBox的PDFTextStripper类,通过统计页面字体大小和行间距等特征,更有效地识别标题、段落等语义信息,从而提升PDF文本提取的准确性和适用性,最终实现对PDF内容的有效索引。

开发 PDF索引

Windows LTSC 版本的微软应用商店安装包

2025-05-13
Windows LTSC 版本的微软应用商店安装包

这个项目提供了一个适用于 Windows 10 LTSC 2019、2021 和 Windows 11 LTSC 2024 的微软应用商店安装包。注意,最新版本的 LTSC 2019 已不再支持此应用商店,安装后可能需要更新系统才能正常使用。安装包下载后双击即可安装,但为了获得最佳体验,建议安装完成后在应用商店设置中更新到最新版本。

Snobol4:一种基于模式匹配的奇特编程语言

2025-05-13

Snobol4 是一种独特的编程语言,其核心在于模式匹配。它将所有逻辑和控制流都简化为模式匹配语句,摒弃了其他语言中常见的循环和条件语句等结构。这种极简主义的设计,虽然对于大型程序的编写可能效率低下,但却易于初学者理解,并能有效解决小型编程问题。文章作者认为,Snobol4 的模式匹配机制如同 Awk 但更为强大,其简洁性令人印象深刻,体现了“一个奇怪的技巧”也能实现出奇高效的编程方式。

开发 Snobol4

AI:糟糕的顾问,优秀的语法错误检测器

2025-05-13

作者尝试使用AI辅助SwiftUI编程,发现AI更像一个不可靠的顾问,而非优秀的架构师。初期让AI直接编辑代码,结果混乱不堪。后来改为自己编写代码,让AI提供建议,学习效率显著提高。AI在查找语法错误方面表现出色,能快速定位问题,但大型决策和架构设计方面表现欠佳,需要人工仔细检查。作者总结:AI适合处理重复性工作和查找语法错误,但不能完全依赖,需要人工监督和验证。

开发

Screen 终端模拟器曝出多个安全漏洞

2025-05-13

一项安全审计发现了screen终端模拟器中的多个安全漏洞,其中最严重的是一个本地root权限提升漏洞(CVE-2025-23395),影响运行于setuid-root模式下的Screen 5.0.0版本。该漏洞允许非特权用户在任意位置创建具有root权限的文件。此外,还发现了TTY劫持(CVE-2025-46802)、世界可写PTY(CVE-2025-46803)以及其他信息泄露和竞争条件漏洞。研究人员已经发布了补丁,并建议用户更新到已修复的版本,并且避免在setuid-root模式下运行Screen。

Nextcloud控诉谷歌扼杀其Android文件应用

2025-05-13
Nextcloud控诉谷歌扼杀其Android文件应用

欧洲软件厂商Nextcloud指责谷歌故意破坏其拥有超过80万用户的Android文件应用程序。问题在于“所有文件访问”权限,该权限需要对设备上的文件进行广泛访问。虽然大多数应用程序可以使用谷歌更注重隐私的存储访问工具,但有些应用程序需要更多权限,因此需要“所有文件访问”权限。Nextcloud的Android文件应用程序是一个文件同步工具,长期以来一直拥有读取和写入所有文件类型的权限。但在2024年,谷歌Play商店撤销了该权限,有效地破坏了该应用程序。Nextcloud认为这是谷歌打压竞争对手的行为,并指出欧盟对微软的反竞争行为的调查进展缓慢,这导致小型公司几乎没有办法应对大型科技公司的行为。

开发

Dgraph Labs 的持续安全审计之旅:2000+ 安全问题修复

2025-05-13
Dgraph Labs 的持续安全审计之旅:2000+ 安全问题修复

Dgraph Labs 通过整合 GitHub Actions 和一系列工具,建立了持续安全审计系统,在短短三个月内修复了 2000 多个安全问题,显著提升了 SOC2 合规性。该系统涵盖代码、二进制文件和 Docker 镜像三个层面,利用 Trivy 和 Snyk 进行扫描,并利用 GitHub 安全标签进行问题跟踪和修复。 他们还使用了 Linters 进行静态代码分析,并利用 DependaBot 实现自动化修复。这套系统极大提高了安全问题的可见性和解决速度,是持续改进安全实践的典范。

Odin编程语言:C语言最佳实践的继承与革新

2025-05-13
Odin编程语言:C语言最佳实践的继承与革新

作者在之前的C语言游戏引擎开发工作中积累了丰富的经验,例如自定义内存分配器、临时分配器、跟踪分配器、零初始化、指定初始化器和缓存友好型编程等。Odin语言巧妙地将这些最佳实践融入语言本身,并通过内置库提供支持,极大提升了开发效率和代码安全性。文章详细介绍了Odin如何实现这些特性,并强调了Odin语言的简洁性和易用性,以及与C语言的相似性,使得C语言开发者能够快速上手。

开发

线上线下机器学习管道的差异与规模化AI的关键

2025-05-13
线上线下机器学习管道的差异与规模化AI的关键

本文探讨了在线和离线机器学习管道在构建可扩展AI系统中的关键区别。离线管道用于批量处理,例如数据收集、ETL和模型训练,而在线管道则实时或近实时地为用户提供预测。文章强调了将这两个管道分离的重要性,并以一个用于微调总结SLM的特征管道为例,阐述了如何利用ZenML等MLOps框架构建一个可重复、可跟踪和可扩展的数据集生成流程,该流程从MongoDB提取数据,经过一系列处理后,最终发布到Hugging Face。理解这种分离对于构建强大的生产级AI系统至关重要。

开发

工程经理的五种说服技巧

2025-05-13
工程经理的五种说服技巧

本文介绍了五种工程经理常用的说服技巧,并结合实际案例进行讲解。首先是“根回法”(Nemawashi),通过提前与相关人员沟通,获得支持,从而减少冲突;其次是“诱饵定价法”(Decoy Pricing),巧妙设置选项,引导对方做出期望的选择;然后是“反向心理学”(Reverse Psychology),提出相反的观点,激发对方的逆反心理;接着是“让我来决定”(LMDTFY),提前做出决定,给对方保留否决权;最后是“巧合工程”(Engineered Serendipity),制造巧合,促成沟通。这些技巧可以帮助工程经理在项目审批、资源争取、团队协作等方面取得更好的效果。

开发 说服技巧

Firefox源码:贡献指南及构建说明

2025-05-13
Firefox源码:贡献指南及构建说明

想参与Firefox开发?Mozilla提供了详细的源码目录结构文档(https://firefox-source-docs.mozilla.org/contributing/directory_structure.html)和贡献快速参考(https://firefox-source-docs.mozilla.org/contributing/contribution_quickref.html),指导你如何构建Firefox并创建补丁。遇到问题?加入Matrix的`Introduction`频道(https://chat.mozilla.org/#/room/#introduction:mozilla.org)寻求帮助。你也可以下载每日构建版本进行测试(https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/ 或 https://www.mozilla.org/firefox/channel/desktop/#nightly),但需注意每日构建可能存在bug。

开发

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

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

arXivLabs是一个开放平台,允许协作者直接在arXiv网站上开发和分享新功能。参与者必须遵守arXiv的开放、社区、卓越和用户数据隐私的价值观。如果你有想法能提升arXiv社区价值,欢迎了解arXivLabs。

开发

Shader Minifier:将4KB炫技动画变为现实的幕后功臣

2025-05-13
Shader Minifier:将4KB炫技动画变为现实的幕后功臣

Shader Minifier是一款用于压缩GLSL代码的工具,它帮助demoscene艺术家们在极小的空间内创作出复杂的计算机动画。文章讲述了Shader Minifier的演进历程,从最初简单的去除空格和注释,到如今运用静态分析、内联函数等高级优化技术,最终帮助开发者将47KB的着色器代码压缩至5.2KB,显著提高了开发效率。其核心思想是巧妙地利用压缩算法的特性,通过变量重命名和函数优化等手段,减少代码体积,提升压缩率。尽管Shader Minifier已经取得了显著成果,但作者仍在不断探索改进空间,以应对更大体积的64KB动画创作挑战。

开发 代码压缩
1 2 89 90 91 93 95 96 97 213 214