依赖关系解析的魔力

依赖关系解析是程序员通常认为理所当然的事情。无论是它 cargo , npm 还是您使用的任何包管理器,当这个黑匣子自己找出应该安装的特定软件包集时,没有人会感到惊讶。

不过,对我来说,这是一项令人着迷的壮举。当一台机器解决这样的抽象问题时,感觉很神奇,而我作为用户的输入最少!因此,当 Prefix.dev 的好人聘请我为 Conda 包生态系统创建一个开源依赖项求解器时,我很高兴。并不是说我是该主题的专家(远非如此!),但我确实知道我的 Rust 并且我是一个快速学习者。事实上,5周后,新的求解器终于可以作为响尾蛇 1 项目中的实验选项使用!

功劳归功劳,我能够在 Prefix 对响尾蛇的出色工作以及对 @wolfv 的不懈测试的基础上再接再厉,他一次又一次地设法打破了我的求解器......直到它终于奏效!

现在,如果你有兴趣,你可以跟着我进入依赖解析兔子洞。那里有很多有趣的东西可以看!

运行 100 万个并发任务需要多少内存?

在这篇博文中,我深入研究了Rust,Go,Java,C#,Python,Node.js 和 Elixir等流行语言的异步和多线程编程之间的内存消耗比较。

前段时间,我不得不比较一些旨在处理大量网络连接的计算机程序的性能。我看到这些程序的内存消耗差异很大,甚至超过了 20 倍。一些程序消耗略高于 100 MB,但其他程序在 3k 连接时达到近 10 GB。不幸的是,这些程序非常复杂,并且在功能上也有所不同,因此很难直接比较它们并得出一些有意义的结论,因为这不是一个苹果对苹果的比较。这让我想到了一个创建综合基准的想法。

Deno 1.35:构建Web服务器的快速便捷方法

Deno 的愿景是使编程尽可能简单,这就是为什么其运行时附带了强大的工具链、原生 TypeScript 支持和 Web 标准 API,因此您可以跳过配置和学习新的 API,能够立即展开工作并提高效率。

今天发布的版本使我们更接近这一愿景:

  • 一种快速便捷的方法构建 Web 服务器,Deno.serve() 现在已经稳定了
  • 通过改进 NPM 支持使备受期待的包能够被使用

除了上述功能外,此版本还包括许多其他改进和错误修复.

Fresh 1.2 – 欢迎全职维护者,在 Islands 之间共享状态,有限的 npm 支持等等

自从我们推出 Fresh 1.0 以来已经快一年了,这是一个现代的、Deno 优先的、边缘原生的全栈 Web 框架。它采用现代的工具开发和渐进式增强,使用服务器端实时渲染和使用客户端 Islands 的架构。默认情况下,Fresh 会向客户端发送 0KB 的 JavaScript。自去年以来,Fresh取得了巨大的增长,成为GitHub上最热门的前端项目之一。

无服务器到单体应用 – 无服务器爱好者应该担心吗?

亚马逊的Prime Video Tech博客最近发布了一篇文章,引起了一些互联网的关注。本文探讨了一个团队,该团队能够通过从无服务器迁移到“单体应用式”架构,将其基础架构成本降低多达 90%。

并非每天都会听到从无服务器迁移到单体应用式架构的消息。所以理所当然地,这篇文章已经得到了不少第二眼。不过,有些观点充其量是可疑的,声称“看,即使是亚马逊也说无服务器很糟糕!

那是。。。。不是他们所说的一切,也不应该成为你的主要收获。因此,让我们深入研究这篇文章,了解为什么它会大惊小怪。

在这篇文章中,我们将研究:

  1. 团队试图解决的问题以及最初的基于无服务器的方法
  2. 采用“单体应用式”架构的第二次迭代。
  3. 为什么在这种情况下从无服务器到“单体应用式”是正确的举动

Zig的 “Colorblind” Async/Await是什么?

Zig 是一种新的通用编程语言,它正在从头开始重新思考语言和相关工具的工作方式。我已经讨论了编译时代码执行,现在我将介绍该语言的另一个创新概念:async/await。

但是等一下,async/await 不是也存在于其他语言中吗?

嗯,是的,但是Zig中的async/await与编译时执行相结合,允许函数隐式变为异步,并且整个库在阻塞和事件 I/O 模式下透明地工作,这是Zig独有的。

让我们看看这意味着什么

Deno KV 完整指南

Deno KV是一个基于键值的数据库,从Deno 1.32.0开始作为不稳定的API内置到Deno运行时中。Deno Deploy 现在整合了 Deno KV(目前作为仅限邀请的测试版),并在全球范围内分发 KV 数据。这意味着,当 Web 应用程序置于 Deploy 上时,现在每个服务器实例附近都有一个数据库。Deno KV还提供ACID事务来维护数据一致性。

本文将通过简单易懂的示例涵盖Deno KV的所有方面。由于有关Deno KV的信息在Deno文档中的多个位置,因此请将这篇文章视为KV的一站式指南。

请注意,已经创建了十几个工作代码示例来支持此博客文章。它们可以在此存储库文件夹中找到。您还将在本文的相关部分找到链接的每个示例。

🤖 使用 Next Js、GPT 4 和 Vercel AI SDK 构建 AI 聊天机器人的超级简单方法

随着自然语言处理(NLP)模型的改进和变得更容易访问,人工智能聊天机器人正变得越来越流行和强大。但是,从头开始构建聊天机器人可能具有挑战性且耗时,尤其是在您想要创建支持流式文本响应的丰富交互式用户界面时。

幸运的是,有一个新工具可以帮助您在几分钟内创建AI聊天机器人:Vercel AI SDK。Vercel AI SDK是一个开源库,可帮助您在JavaScript和TypeScript中构建对话,流式处理和聊天用户界面。它支持 React/Next.js、Svelte/SvelteKit,即将支持 Nuxt/Vue。

Vercel AI SDK还集成了流行的开源和云LLM(大型语言模型),如OpenAI,Hugging Face和LangChain。这意味着您可以利用 GPT-4 等最先进的 NLP 模型的强大功能为您的用户生成逼真且引人入胜的聊天响应。

在这里,我们将学习如何使用 Next Js、GPT 4 和 Vercel AI SDK 创建一个简单的 AI 聊天机器人。

Next Level AI 开发:深入了解 Vercel AI SDK

各位AI粉丝大家好!今天,我想与您分享人工智能驱动的Web开发领域的一个令人兴奋的发展。我一直在探索Vercel AI SDK,这是一个开源库,在技术界掀起了波澜。这个强大的工具集允许开发人员轻松构建边缘就绪的 AI 驱动的流媒体文本和聊天 Web 应用程序,我很高兴与您分享我的发现。

Deno KV

我对Deno KV很感兴趣,它将自己描述为“全球应用程序的全局数据库”。它是Deno应用程序的K/V存储,它捆绑了某种全球分布式/复制数据库服务。

代码示例如下所示:

const kv = await Deno.openKv();

等等,这看起来像是核心语言功能?他们是否将自己的专有托管云数据库作为其核心语言的一部分提供客户端?

它们不是 - 至少不是在Deno的开源实现中。我挖了进去,我想我明白他们在做什么。

Java vs Rust: Hello World HTTP 服务器性能测试

在本文中,我将比较Java的本机HTTP服务器和Rust的Hyper HTTP服务器。根据我的研究,我发现 Hyper 是 Rust 方面最受欢迎的服务器选择。如果有更好和流行的替代品,请告诉我。

Rust 是一种生成机器代码的编译语言,而 Java 也是一种生成在 JVM 内部运行的字节代码的编译语言。这种比较可能不太公平。无论如何,让我们运行测试并检查结果。

Go vs Rust: Hello World HTTP 服务器性能测试

在本文中,我将比较 Go 的原生 HTTP 服务器和 Rust 的 Hyper HTTP 服务器。根据我的研究,我发现 Hyper 是 Rust 方面最受欢迎的服务器选择。如果有更好和流行的替代品,请告诉我。

比较是公平的,因为两者都是生成机器代码的编译语言。让我们运行测试并检查结果。

Deno vs Rust: Hello World HTTP 服务器性能测试

在本文中,我将比较 Deno 的原生 HTTP 服务器和 Rust 的 Hyper HTTP 服务器。根据我的研究,我发现 Hyper 是 Rust 方面最受欢迎的服务器选择。如果有更好和流行的替代品,请告诉我。

这种比较很有趣,因为 Deno 本身是用 Rust 编写的。这种比较可能没有多大意义,因为 Rust 应该很容易胜过 Deno。主要区别在于Deno使用不同的HTTP服务器,称为flash。让我们运行测试并检查结果。

Bun vs Rust: Hello World HTTP 服务器性能测试

在本文中,我将比较 Bun 的原生 HTTP 服务器和 Rust 的 Hyper HTTP 服务器。根据我的研究,我发现 Hyper 是 Rust 方面最受欢迎的服务器选择。如果有更好和流行的替代品,请告诉我。

这种比较可能没有多大意义,因为 Rust 应该很容易胜过像 Bun 这样的解释运行时。让我们运行测试并检查结果。

在 Rust 中使用 C 库

今天,我想深入探讨我们在尝试用 Rust 重写 IoT Python 代码时遇到的一个困难:特别是 FFI,或“外部函数接口”——允许 Rust 与其他语言交互的位。一年前,当我尝试编写 Rust 代码以与 C 库集成时,现有的文档和指南经常给出相互矛盾的建议,我不得不自己磕磕绊绊地完成这个过程。本指南旨在帮助未来的 Rustaceans 完成将 C 库移植到 Rust 的过程,并使读者熟悉我们在执行相同操作时遇到的最常见问题。

在本指南中,我们将讨论如何使用 bindgen 将 C 库函数公开给 Rust。我们还将讨论此自动工具集的局限性,以及如何检查您的工作。公平警告:正确实施 FFI 是 Rust 困难模式。如果你是 Rust 的新手,请不要从这里开始。通读这本书,写一些练习代码,然后在你完全熟悉借阅检查器后再回来。

Rust FFI 和 bindgen:在 Rust 中集成 C 代码

我越听说在不同的渠道采用嵌入式 Rust,似乎有一个反复出现的主题。主题是似乎有些人认为 Rust 的采用将逐渐发生。这意味着许多项目完全从头开始采用 Rust 的可能性可能较小。相反,一些项目会将新的 Rust 代码集成到现有的 C 或 C++ 代码库中,或者将现有的 C 或 C++ 库集成到 Rust 项目中。因此,对于有兴趣进入嵌入式的人来说,获得做这些事情的能力将是有益的。

;Echo Shell 注入

这是一篇关于 shell 注入的介绍性文章,shell 注入是一个安全漏洞,允许攻击者在用户的计算机上执行任意代码。这是一个经过充分研究的问题,并且有简单有效的解决方案。以这样一种方式设计库 API 相对容易,以保护应用程序开发人员免受 shell 注入的风险。

我写这篇文章有两个原因。首先,今年我在三个不同的库中指出了这个问题。看来,尽管这个问题得到了很好的研究,但它并不为人所知,所以只是重复一些事情可能会有所帮助。其次,我最近报告了一个关于VS Code API的相关问题,我想将这篇文章用作GitHub的扩展评论:-)

<3 Deno

Deno是一个相对较新的JavaScript运行时。我发现非常有趣和美观,符合最近支配软件进化的“越差即好”规律的趋势。这篇文章解释了原因。