多页应用上的视图过渡入门

多页应用(MPA)和静态网站的视图转换 API 已准备好在 Chrome 113+ 中面进行测试 (通过 flags 开启)。MPA 的视图转换是我的 CSS 愿望清单上的一项重要功能。我花了不到一个小时的时间,零JavaScript 和两行CSS 实现。我对结果很满意。

使用 Rust Tonic 和 React 构建和部署 gRPC-Web 应用程序

gRPC 是一种现代的高性能远程过程调用(RPC)框架,可在任何环境中运行。gRPC 基于 protobufs 构建,可扩展且高效,并在多种语言和运行时中提供广泛支持。

在本教程中,我们将介绍如何将一个基于 Rust 的 gRPC API 支持的 React 应用程序部署到 Koyeb。演示应用程序是一个电影数据库网站,其功能是展示一系列电影及其关联的元数据。您可以在此处找到两个应用程序组件的源代码:

使用 Deno 和 Deno Deploy 构建和发布 Astro 站点

Astro是一个为以内容为中心的网站设计的Web框架。它的 API 设计和工具使得逐步构建更复杂的网站变得容易,同时在默认情况下不会向客户端发送 JavaScript。就像鸡肉和华夫饼一样,Deno和Astro合作了一段时间。但是随着最近 Deno 运行时的 1.35 版本,Astro 与 Deno 一起使用的体验变得更好了。

今天,我们将介绍结合使用 Astro 和 Deno 的所有方法,然后使用 Deno Deploy 在生产环境中运行您的应用程序。

为什么你应该使用 io_uring 进行网络 io 操作

io_uring 是 Linux 内核的异步接口,可能有益于网络。对于文件 I/O(输入/输出)来说,这是一个很大的胜利,但对于已经具有非阻塞 API 的网络 I/O 来说,这可能只提供适度的收益。收益可能来自以下方面:

  • 减少了服务器上执行大量上下文切换的系统调用数量
  • 用于文件和网络 I/O 的统一异步 API

许多功能将很快在红帽企业 Linux 9.3 中提供, io_uring 该版本随内核版本 5.14 一起分发。最新的 io_uring 功能目前在 Fedora 37 中可用。

Rust Leptos 入门教程

Leptos 是一个类似于 Solid (JavaScript) 和 Sycamore(Rust)等的框架。与其他框架如React(JavaScript),Svelte(JavaScript),Yew(Rust)和Dioxus(Rust)有一些相似之处,因此了解其中一个框架也可能使理解Leptos更容易。

如何从规范的 Rust SDK 生成 JavaScript 和 Python SDK

介绍

我们在PostgresML创建的工具功能强大且灵活。我们的工具几乎有无数种方式可用于支持矢量搜索、模型推理等等。像我们之前的许多公司一样,我们希望我们的用户能够享受我们工具的好处,同时不需要阅读大量文档的才能使用,因此我们构建了一个SDK。

我们是 Rust 的忠实粉丝(几乎我们的整个代码库都是用它编写的),我们发现使用它作为我们的主要语言可以让我们编写更安全的代码和更快地迭代我们的开发周期。但是,我们的大多数用户目前使用Python和JavaScript等语言。为 Rust 制作 SDK 是没有意义的,因为没有人会使用它。经过深思熟虑,我们最终确定了 SDK 的以下要求:

  1. 它必须以多种语言本机提供
  2. 所有语言必须具有与规范 Rust 实现相同的行为
  3. 添加新语言应仅包含最小的开销

rust-macros-flow-chart.jpg

*TLDR 我们正在构建宏,将原版 Rust 转换为兼容的 Pyo3 和 Neon Rust,然后将其进一步转换为原生 Python 和 JavaScript 模块。*

Fresh 1.3 – 简化的路由组件以及更多内容

自从我们发布 Fresh 1.2 以来,仅仅一个月过去了,我们已经带着另一个版本回来了!我们计划每月发布一次新的 Fresh 次要版本。

这个周期包含了许多来自社区的令人难以置信的 PR,这简直令人惊叹!文档已得到扩展和改进,修复了许多错误并添加了新功能。感谢所有帮助使此版本成为可能的人。但是说得够多了,让我们来看看我们对 Fresh 所做的所有改进。

最小化 Rust 二进制文件大小

此文演示了如何减小 Rust 生成的二进制文件大小。

默认情况下,Rust 对执行速度、编译速度和易于调试而不是二进制大小进行优化,因为对于绝大多数应用程序来说,这是理想的。对于想要优化二进制大小的开发人员来说,Rust 提供了实现此目标的机制。

在 Zig 实现接口

早在 2020 年 6 月,Nathan Michaels 就发表了一篇关于如何在 zig 中进行运行时多态(接口)的文章。然而,从那时起,社区已经从 @fieldParentPtr 转向使用胖指针。这是标准库现在使用的惯例,例如在 allocator 和 rand 中。这篇文章将介绍新惯例以及如何使用它。就像在 Nathan 的原始帖子中一样,我将创建一个正式的迭代器接口,它可以像这样使用:

while (iterator.next()) |val| {
// do something with val
}

依赖关系解析的魔力

依赖关系解析是程序员通常认为理所当然的事情。无论是它 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的一站式指南。

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