分类: 编程技术

Rust 的依赖关系吓到了我

Rust 的依赖关系吓到了我

出于好奇,我运行了 toeki 这款用于计算代码行数的工具,发现 rust 代码竟然有 360 万行之多。删除供应商提供的软件包后,rust 代码减少到 11136 行。

Rust 中的奇怪表达式

Rust 中的奇怪表达式

Rust 拥有非常强大的类型系统,但因此也存在一些怪癖,有些人甚至称其为“可恶的表达式”。rust 存储库中有一个测试文件 weird-expr.rs,用于测试其中的一些表达式,并确保它们在更新之间保持一致。因此,我想逐一介绍这些表达式,并解释它们在 rust 中是如何有效的。

为什么 Rust 编译器这么慢?

为什么 Rust 编译器这么慢?

异步函数的深度调用图的编译时间需要改进——可能是 LLVM 存在一个容易触发的特殊边界情况,而 rustc 生成的代码恰好触发了它,或者可能是其他语言中未充分利用的糟糕启发式算法。

微软发布用Rust编写的Linux版经典MS-DOS编辑器

微软发布用Rust编写的Linux版经典MS-DOS编辑器

该编辑器向经典的MS-DOS 编辑器致敬,但采用了现代化的界面和与 VS Code 类似的输入控制。其目标是提供一个易于使用的编辑器,即使是那些对终端操作不太熟悉的用户也能轻松上手。

使用 CSS 实现缩放动画:变换顺序很重要……有时

使用 CSS 实现缩放动画:变换顺序很重要……有时

当你动画化 scale 时,目标的宽度和高度会在整个动画过程中线性变化(尽管,如前所述,可以应用缓动效果)。这感觉类似于相机缩放效果

Linux 管道的速度到底有多快?

Linux 管道的速度到底有多快?

我们通过分析 perf 输出和 Linux 源代码,系统性地提升了程序的性能。管道和拼接在高性能编程中并非热门话题,但我们涉及的主题包括:零拷贝操作、环形缓冲区、分页与虚拟内存、同步开销。

每位开发者都应尝试 Vim

每位开发者都应尝试 Vim

学习Vim不仅仅是选择一个新的编辑器,更是改变你与代码互动的方式。我认为每位开发者都应该尝试一下Vim,看看它是否适合自己。如果你坚持下去,Vim会让你获得一种难以言喻的控制感和流畅性,直到你亲身体验才会明白。

HTML 规范变更:对属性中的 < 和 > 进行转义

HTML 规范变更:对属性中的 < 和 > 进行转义

此更改仅修改了在序列化过程中将 HTML 片段转换回字符串表示的方式。影响仅限于访问 innerHTML 或 outerHTML 属性或对元素调用 getHTML() 方法的情况。这些操作会采用现有的 DOM 结构,并生成文本 HTML 表示法。

如何修改Starlink Mini以在不使用内置WiFi路由器的情况下运行

如何修改Starlink Mini以在不使用内置WiFi路由器的情况下运行

本文将详细介绍如何物理移除 Starlink Mini 中的内置 Wi-Fi 路由器板,使终端仅通过以太网运行,从而为高级用户提供更大的灵活性。请注意,此修改仅适用于Starlink Mini 1(截至2025年6月14日)。未来型号(如预期中的Mini 2)的硬件变更可能使此过程失效。

在字符串中检测元音的最快方法

在字符串中检测元音的最快方法

但当我开始深入研究时,我意识到这背后还有更多内容。我挑战自己想出尽可能多的检测元音的方法。我还让几位朋友尝试了一下。哪种方法最快?哪种方法绝不能使用?哪种方法最巧妙?哪种方法最易读?这篇文章涉及11种不同的检测元音的方法,包括算法分析、解析Python字节码、检查CPython实现,甚至查看编译后的正则表达式操作码。让我们开始吧。

Python 正在逐步移除 GIL,这对 Python 开发者意味着什么

Python 正在逐步移除 GIL,这对 Python 开发者意味着什么

鉴于无 GIL Python 预计将于 2028 年左右成为默认版本,而当前的无 GIL Python 3.13 仅为实验性构建,我们目前不应在生产环境中使用无 GIL Python。因为仍存在许多不确定性——包括兼容性、稳定性和生态系统采用率。它需要时间来完善。但我们确实应该密切关注无GIL Python的发展。它已经发生了,而且非常令人兴奋!

我不遵循的五个软件最佳实践

我不遵循的五个软件最佳实践

尽管没有开发者希望过这样的生活,但许多人在职业生涯中至少经历过一次。为了确保这样的混乱留在过去,他们从战斗的伤痕中总结出了集体智慧。我通过近十年的专业开发经验积累了一些智慧,同时也从同事那里学到了更多。

日志分析工具 GoAccess 配置详细教程

日志分析工具 GoAccess 配置详细教程

GoAccess是一个网络日志分析工具,它允许你可视化网站的流量,并更深入地了解访客信息:访客数量、页面访问量、访客来源(地理位置、操作系统、浏览器等)。它通过解析网页服务器的访问日志实现这些功能,无论是Apache、NGINX还是其他服务器均适用。

用一个奇招检测并让Chromium机器人爬虫崩溃(机器人爬虫讨厌这个!)

用一个奇招检测并让Chromium机器人爬虫崩溃(机器人爬虫讨厌这个!)

享受这个漏洞吧。把它留在你的工具箱里。在测试环境中让机器人崩溃时笑一笑。但也许不要在生产环境中部署它。尤其是当Googlebot能看到它的时候。

Rust 比 C 更快吗?

Rust 比 C 更快吗?

假设我们有一个初级开发人员在写 Rust,也在写 C,做的是同一个任务。我们会在其中一种语言中获得更快的代码吗?这控制了能力,但控制不了相同的代码。这是“相同”的吗?

为什么 C++ 认为我的类是可复制构造的,而实际上它无法被复制构造?

为什么 C++ 认为我的类是可复制构造的,而实际上它无法被复制构造?

对于“这个类是否可复制构造?”这个问题,答案应该是什么?你不知道定义是什么,只知道它的声明。编译器是否应该停止编译并显示错误信息“无法预测未来”?但是,如果你不想在头文件中暴露复制构造函数的实现呢?判断可复制构造的规则是是否存在未被删除的复制构造函数。

SVG 网站图标(favicon)的实际应用

SVG 网站图标(favicon)的实际应用

我们有充分理由关注SVG Favicon:暗色模式支持。暗色模式近期备受关注。您可能已为自己的网站实现了暗色模式。这对图标意味着什么?这意味着根据浏览器标签页背景亮度显示不同Favicon的能力。

这是 JavaScript 吗?

这是 JavaScript 吗?

当有人说”这只是 JavaScript”时,更明确的说法应该是”这只是适用于…的 JavaScript”,例如:这是适用于浏览器的 JavaScript; 它只是用于 Node 的 JavaScript;它只是用于 Next.js 的 JavaScript

如何处理 Rust 依赖项

如何处理 Rust 依赖项

虽然一些微型 crates 各自都能很好地完成某项任务,但我们仍然应该寻找一种方法来减少依赖树中的依赖项数量。

为什么 2025/05/28 和 2025-05-28 在 JavaScript 中是不同的日子?

为什么 2025/05/28 和 2025-05-28 在 JavaScript 中是不同的日子?

,JavaScript Temporal 即将推出:一套新的日期和时间 API,旨在取代 Date 对象。我们最初的整个日期解析问题源于时区歧义,但在很多情况下,我们希望将纯日期字符串完全视为纯日期。

在 Rust 中写入未初始化的缓冲区

在 Rust 中写入未初始化的缓冲区

Rust 中的非初始化缓冲区是一个由来已久的问题, John Nunley and Alex Saveau 想到了一种新方法,使用 Buffer Trait,现在已经出现在 rustix 1.0 中,我将在这篇文章中介绍。

contrast-color():在 CSS 中让浏览器给出对比色

contrast-color():在 CSS 中让浏览器给出对比色

调色板示意图,说明何时使用何种颜色组合。(本文正文中也阐述了所有信息)。

虽然例子都是在彩色背景上显示黑/白色文字,但contrast-color()的用途远不止于此。你可以为文字使用自定义颜色,并将背景设为黑/白色。或者完全不涉及文字,为边框、背景等定义颜色。你可以做很多事情。

调色板示意图,说明何时使用何种颜色组合。(本文正文中也阐述了所有信息)。
每个开发人员最需要的三种重构

每个开发人员最需要的三种重构

Extract Method、Rename Variable/Method/Class 和 Extract Variable 并不是工具箱中唯一的重构工具,但却是最有用的工具。它们带来的好处最多。 如果让我只选择一个,我会选择 Extract Method,因为它能最有力地抵御方法庞杂这一常见问题(诱惑?

JavaScript 的新超能力:显式资源管理

JavaScript 的新超能力:显式资源管理

显式资源管理提案引入了一种确定性方法,用于显式管理文件句柄、网络连接等资源的生命周期。该提案为语言增加了以下内容:using 和 await using 声明,当资源退出作用域时会自动调用处置方法;[Symbol.dispose]() 和 [Symbol.asyncDispose]() 符号,用于清理操作。asyncDispose]() 符号;

掌握 Python 3.8+ 中的海象操作符 (:=)

掌握 Python 3.8+ 中的海象操作符 (:=)

海象运算符并不是为了写出更短的代码,而是为了在适当使用时写出更清晰、更高效的代码。它在循环、综合和条件中特别有用,消除冗余既能提高性能,又能提高可读性。