Rust 实现 SQLite 解析器:支持 CREATE TABLE 语句
本文介绍了如何扩展一个用 Rust 编写的 SQLite 解析器,使其支持 CREATE TABLE 语句。通过解析 SQLite 数据库的模式表,程序能够提取表名、根页号以及各列的名称和类型信息。文章详细讲解了词法分析、语法分析以及如何构建抽象语法树 (AST) 的过程,并展示了如何将提取的元数据存储在数据库结构中,最终实现了一个功能更完善的 SQLite 解析器。
本文介绍了如何扩展一个用 Rust 编写的 SQLite 解析器,使其支持 CREATE TABLE 语句。通过解析 SQLite 数据库的模式表,程序能够提取表名、根页号以及各列的名称和类型信息。文章详细讲解了词法分析、语法分析以及如何构建抽象语法树 (AST) 的过程,并展示了如何将提取的元数据存储在数据库结构中,最终实现了一个功能更完善的 SQLite 解析器。
还在为查找Linux内核tracepoint的元数据和数据结构而苦恼吗?tracepointargs工具闪亮登场!它可以列出所有Linux内核tracepoint及其参数、数据类型和相关结构体。更棒的是,它还能解析内核结构体布局,让你无需翻阅源码就能理解tracepoint的细节。只需结合bpftool生成vmlinux.h文件,就能轻松查看结构体内部信息,甚至递归展开嵌套结构。这对于eBPF开发者和内核探索者来说,无疑是一大利器,大大提升效率。
arXivLabs是一个框架,允许合作者直接在arXiv网站上开发和分享新功能。参与arXivLabs的个人和组织都认同并接受了arXiv的开放、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,只与遵守这些价值观的合作伙伴合作。 有一个能够为arXiv社区增加价值的项目想法吗?了解更多关于arXivLabs的信息。
Jujutsu是一个用Rust编写的全新版本控制系统,它以其简洁的设计和强大的功能超越了传统的Git。文章介绍了Jujutsu的核心概念——可变的Change,以及如何利用其独特的特性简化工作流程,例如轻松撤销操作、无缝处理冲突以及高效管理大型变更。Jujutsu支持与Git无缝集成,用户可以将其作为Git的前端来使用,并享受其带来的便利性。文章还介绍了一些高效的工作模式,例如使用jj new和jj edit来管理变更,以及利用revset表达式来灵活操作版本历史。总而言之,Jujutsu为开发者提供了一种更优雅、更高效的版本控制体验。
本文探讨了移动端推送通知如何将中心化引入去中心化服务,以及如何避免这种情况,即使对于主流配置也是如此。目前,许多去中心化应用(例如Mastodon、Nextcloud)依赖于Firebase云消息传递(FCM),这导致中心化问题。文章提出了一种解决方案:直接使用WebPush协议与FCM服务器通信,并结合UnifiedPush框架,实现去中心化的推送通知。这消除了对中心化网关的需求,并允许用户选择其偏好的服务。虽然并非所有服务都立即支持WebPush,但未来的发展趋势是朝着去中心化方向前进。
本文批判了当前AI编程工具以聊天为界面的设计模式。作者认为,软件开发需要精确性,而聊天界面无法满足这种需求。虽然AI可以理解自然语言,但构建复杂软件需要清晰的规范和文档,而非依赖AI的猜测。聊天界面使得开发者难以追踪变化,难以组织复杂性,最终只能产生原型软件,而非实际可用的产品。作者认为,未来的AI编程工具应该以文档为中心,将需求以文档形式呈现,从而实现精确的软件开发。
Modal团队开发了一个名为DoppelBot的Slack机器人,它可以通过微调OpenLLaMa模型来模仿你的CEO。该机器人利用用户的Slack消息进行训练,并能生成与CEO风格相似的回复。整个过程基于Modal的无服务器平台,包括数据抓取、模型微调、推理和Slack事件处理。DoppelBot的代码开源,允许用户在自己的工作空间中部署和自定义。它使用了LoRA技术,高效地微调模型,并支持多工作空间。这篇文章详细介绍了DoppelBot的工作原理和部署步骤,为团队协作和效率提升提供了一种新思路。
受到博主Simon Willison启发,我开始尝试运营一个链接博客,分享有趣的网络链接以及个人评论和想法。Simon的博客以分享AI相关内容和高质量链接著称,他会在链接外补充个人见解甚至代码片段,这启发我建立个人知识记录和分享的方式。以往我常纠结于文章的独特性和价值,而Simon强调的是持续写作,积累作品的重要性。我的链接博客将成为我的公开书签和评论的集合,目标是让读者从我的补充中获得比阅读原链接更丰富的体验,例如将不同主题关联起来,补充背景资料或其他来源信息。
文章探讨了AI对编程行业的影响,认为AI正在逐步取代程序员的一些基础技能,例如编写代码和调试错误。这类似于计算机的发明取代了人工计算员的工作。作者认为,这并非程序员技能的退化,而是效率的提升。未来程序员的角色将转变为更高级的架构师和AI的管理者,专注于系统设计、AI监督和结果评估,而非单纯的代码编写。
Codeberg是一个位于德国柏林的非营利性Git代码托管平台,它致力于维护开源公共资源。不同于商业平台,Codeberg拒绝追踪、第三方Cookie和营利行为,所有服务器均由其自行控制,用户数据不会被出售。其社区由志同道合的开发者、艺术家、学者、爱好者和专业人士组成,他们共同庆祝自由文化、开放性和创造力。Codeberg的未来掌握在用户手中,也欢迎世界各地的用户参与其中。
VSCode 市场中扩展程序的下载链接已失效。新的安装指南指示用户从扩展程序列表的“版本历史记录”部分的下载链接中选择适合其操作系统的版本,但该链接不存在。之前的侧边栏下载链接也已被移除,导致用户无法下载扩展程序。此问题影响所有操作系统和浏览器。
Freedesktop.org和Alpine Linux这两个重要的开源项目正因为资金短缺而面临服务器迁移的困境。Freedesktop.org在用尽Google Cloud Platform的开源信用额度后,又面临着Equinix的迁移压力,其负责人提议由Freedesktop.org自付服务器费用,并寻求赞助。而广泛应用于容器和嵌入式设备的Alpine Linux每月消耗800TB带宽,也急需新的服务器和持续集成环境,目前正在寻找荷兰附近的服务器。这两个项目都因其重要性与资金支持之间的不匹配而发出警示,呼吁更多的人和组织关注并支持开源项目的可持续发展。
在众多AI编码助手工具中,Cline凭借其系统级集成和模型灵活性脱颖而出。它并非简单的代码生成工具,而是能够与整个开发环境交互的强大助手。Cline支持多种AI模型(包括Anthropic、OpenAI、Google Gemini等),并具有智能上下文管理、实时成本监控和强大的检查点系统。独特的“计划/行动”模式和模型上下文协议(MCP)进一步提升了其效率和可扩展性,使其成为处理复杂系统和大型代码库的理想选择。虽然存在一些局限性,但Cline的系统级集成、模型灵活性以及对工程原则的尊重使其成为复杂工程项目的强大助力。
nv_cluster_lod_builder是一个连续细节层次(LOD)网格库,它通过预计算三角形簇,并在渲染时自适应地选择簇的子集来实现细粒度的几何细节控制。与传统的离散LOD相比,该库能提供更快的渲染速度和更低的内存使用率,特别适合光线追踪应用。该库利用一种特殊的细分策略,确保LOD转换平滑,避免出现缝隙或重叠。它还构建了一个空间层次结构,用于加速运行时簇的选择,并支持几何流传输以进一步节省内存。
OWASP发布了2025年非人类身份(NHI)Top 10风险清单,该清单总结了应用开发者在使用非人类身份(例如机器人、自动化工具等)时面临的十大关键风险。这些风险是根据OWASP风险评级方法,结合真实世界的数据泄露事件、调查问卷、CVE数据库等信息整理而成。该项目旨在帮助开发者更好地理解和应对这些风险,提高应用程序的安全性。
OWASP发布了2025年非人类身份(NHI)安全风险Top 10,涵盖服务账户、API密钥等滥用风险。这些风险包括密钥泄露、权限过大、身份认证不安全、环境隔离不足等,对软件开发和部署安全造成重大威胁。报告强调了改进措施,并呼吁开发者和安全专业人员共同努力,加强安全防护。
Linux内核正在探索将Rust语言用于编写设备驱动程序,但进展受阻于DMA(直接内存访问)子系统。Rust驱动程序需要与内核的DMA映射子系统交互,为此需要一套抽象层。然而,核心维护者Christoph Hellwig反对在`kernel/dma`目录中添加Rust代码,认为这会增加维护难度。Rust开发者提出将抽象层代码独立维护,但Hellwig仍然拒绝。这导致Rust在Linux内核中的应用面临挑战,其未来走向取决于内核社区的最终决策,以及核心维护者能否适应多语言编程环境。
作者厌倦了AWS高昂且难以预测的费用以及过度复杂的系统,转向了NearlyFreeSpeech (NFS)。NFS的预付费模式让他完全掌控成本,简易的控制面板也让他轻松管理多个项目。文章详细描述了作者将9个应用迁移到NFS的过程,其中包括Next.js, React, Express等多种技术栈的应用,并分享了迁移过程中遇到的挑战和解决方案。虽然一个Python Flask应用迁移较为复杂,但作者认为这主要源于应用本身的依赖关系,而非NFS。最终,作者用更低的成本获得了更安心和便捷的托管体验,并推荐NFS给其他开发者。
还在为 arXiv 论文提交的 LaTeX 代码清理而烦恼?Google Research 推出的 `arxiv-latex-cleaner` 工具能帮你轻松搞定!它可以自动删除辅助文件、注释、未使用代码和图片,甚至还能调整图片大小、压缩 PDF,以确保你的论文符合 arXiv 的大小限制。支持自定义正则表达式替换规则,并能处理 TikZ 图片的外部化。只需简单几步,你的论文就能准备好提交了!
本文探讨了使用Rust替代C语言进行底层系统编程的可行性,特别是针对一个名为upb的Protocol Buffers库。作者起初怀疑Rust能否在性能和代码大小方面与C语言匹敌,但发现了一种名为“无恐慌Rust”的技术,它通过避免使用panic!()来实现。这篇文章深入探讨了“无恐慌Rust”的原理、优势和挑战,包括代码大小、不可恢复的退出以及运行时开销等问题。作者展示了如何通过巧妙运用libc库、优化选项以及`std::hint::assert_unchecked`等技术来编写“无恐慌Rust”代码,并强调了在debug模式下保留溢出检查以进行额外的一致性检查。虽然该技术需要细致的工作,并可能需要避免使用大部分标准库,但它有望在保证Rust安全性的同时,获得与C语言库相同的性能和代码大小。
Mailspring 是 Nylas Mail 的全新迭代版本,由原作者之一维护。它速度更快、占用资源更少,并已正式发布!它用基于 Mailcore2 的全新 C++ 同步引擎取代了 Nylas Mail 中的 JavaScript 同步代码,内存和 CPU 占用率大约只有 Nylas Mail 的一半,空闲状态下几乎不会唤醒 CPU,从而延长电池续航时间。它还拥有完全改进的邮件撰写器和其他强大的新功能。Mailspring 的 UI 是开源的(GPLv3),并使用 TypeScript、Electron 和 React 编写;它基于插件架构,设计易于扩展。同步引擎在本地运行,也是开源的(GPLv3),用 C++ 和 C 编写。Mailspring 提供强大的功能,例如统一收件箱、稍后发送、邮件规则、模板等等。付费的 Mailspring Pro 版本还提供更多功能,例如链接追踪、已读回执等。
Windows 11 预览版(Build 26120.3073)更新加入了诸多修复和改进,最引人注目的是 Microsoft Paint 中新增的 Copilot 按钮。点击该按钮即可展开一个下拉菜单,访问一系列生成式 AI 功能,包括协同创作、图像创建器、生成式擦除和背景移除。这些 AI 功能此前已存在于 Paint 中,但 Copilot 按钮的加入显著提升了使用效率。此外,更新还包含云照片搜索(仅限 Copilot+ PC)以及任务栏、系统托盘和文件资源管理器的 bug 修复。此更新目前仅供 Windows 预览体验成员使用,稳定版 Windows 11 何时推出 Copilot 按钮尚不清楚。
作者的姓氏是“Null”,这在编程中是一个保留字,给他带来了许多麻烦。许多网站和应用程序无法处理他的姓氏,导致表单提交失败、邮件地址无法注册等问题。即使一些系统能接受“Null”,也会引发各种意想不到的错误。作者不得不采取各种变通方法,如添加句点或使用别名,但这些都只是权宜之计,并不能彻底解决问题。这篇文章以幽默的笔触讲述了这个令人啼笑皆非的故事,也反映了软件开发中一些常见的问题,以及大型公司在处理这类问题时的无力感。
SCQA是一个用于组织信息的框架,它通过情境(Situation)、复杂性(Complication)、问题(Question)和答案(Answer)四个要素,构建清晰、吸引人的叙事流程。文章以物理治疗中的游戏化为例,解释了如何运用SCQA框架,将枯燥的医疗过程转化为引人入胜的故事,从而提高患者的积极性和依从性。该框架不仅适用于商业、政策和科学领域,也适用于各种媒介,例如邮件、演讲、书籍、博客等,帮助人们更好地沟通和表达。
数学家们解决了Hilbert第十问题的一个重大扩展:证明了对于广泛的数环,判定丢番图方程是否有解是不可解的。这项工作建立在Yuri Matiyasevich 1970年关于整数解的原始证明之上,利用椭圆曲线和二次扭曲技术,克服了先前方法在非整数解情况下的局限性。这项突破不仅加深了我们对可计算性限界的理解,也为数学研究提供了新的工具。
现代代码助手广泛依赖代码检索技术,但现有评估方法存在缺陷。Voyage AI的研究指出,现有数据集存在标签噪声、缺乏深度算法推理能力评估以及数据污染等问题,导致模型评估结果不可靠。为此,Voyage AI提出两种构建高质量代码检索数据集的方法:一是利用问答数据集,二是利用GitHub代码库和问题/工单。Voyage AI还构建了自己的内部基准测试套件,包含多种编程语言、多种问答数据集和特定领域的基准测试,并对多个代码嵌入模型进行了评估,最终发现Voyage-code-3模型表现最佳。
一位资深开发者分享了其软件开发理念,重点强调避免重写代码的陷阱。他指出,当重写开始看起来像个好主意时,实际上已经犯下了许多可避免的错误,例如不断累积的技术债务和日益增长的代码复杂性。他建议开发者在开发过程中穿插巩固阶段,并预留充足时间进行代码完善和测试。此外,他还强调了自动化最佳实践的重要性以及思考异常数据的重要性,并建议编写易于测试的代码,使其正确性一目了然。
作者耗时五年维护的Rust时间库`time`,最近进行了重大性能优化。通过重新设计`Date::to_calendar_date`算法,利用欧几里德仿射函数和巧妙的整数运算技巧,避免了浮点数运算和分支预测,最终实现了57.5%的性能提升。新的算法不仅在计算日期和月份的组合时更快,而且在单独计算月份或日期时也显著提高了效率。这项优化并非易事,但作者认为其带来的性能提升非常值得。
httptap 是一款运行在 Linux 系统上的命令行工具,无需 root 权限即可监控任何程序发出的 HTTP 和 HTTPS 请求。它通过在独立的网络命名空间中运行目标程序,并拦截其网络流量来实现这一功能。httptap 使用 Go 语言编写,无需依赖,可直接运行。它能够显示请求的详细信息,包括 URL、HTTP 状态码、请求体和响应体等,并支持将数据导出为 HAR 文件。httptap 还支持 DoH(DNS over HTTPS),并能够处理 HTTP 重定向。
本文深入探讨了Linux内核的dm-writecache模块,该模块利用NVMe SSD作为后端HDD的写回缓存,显著提升随机写入性能。作者通过实验比较了使用和不使用dm-writecache的随机写入速度,结果显示,使用dm-writecache后,写入速度提升了数十倍。文章还介绍了其他缓存方法和工具,例如bcache和ReadyBoost,并详细讲解了如何使用dm-writecache和dmsetup工具配置缓存。即使没有LVM2,也能通过dmsetup手动配置。文章最后总结了dm-writecache带来的显著性能提升,并指出剩余的NVMe空间可以用于缓存其他磁盘。