oh-my-zsh docker 插件详解, 配置, 别名使用

Docker 插件

这个插件可以为 docker 自动补全指令并设置别名。

要在你的 zsh 终端里使用这个插件,请在 .zshrc 文件的插件列表里添加 docker

plugins=(... docker)

下面是 docker/cli git 仓库里自动补全脚本的副本: https://github.com/docker/cli/blob/master/contrib/completion/zsh/_docker

JSR: 一个全新的 Javascript 包注册中心

JavaScript 社区最近被一个新的包注册中心 JSR 点燃了热情,该项目来自开发 Deno 的团队。Deno 是一个基于 V8 JavaScript 引擎和 Rust 构建的 JavaScript、TypeScript 和 WebAssembly 的运行时。

Deno 团队一直致力于为 JavaScript 开发提出新的选择。在详细回顾了 Node 早期设计时的遗憾之后,Node.js 的创建者 Ryan Dahl 于 2018 年的 JSConf EU 会议上公布了 Deno 项目。这个项目的目的是提供一个更快、更安全的 JavaScript 运行时,Deno 团队还将 Node/npm 的兼容性作为 Deno 项目的核心组成部分。

为了推动 Deno 的发展,Deno Land Inc. 于 2021 年成立,资金由 Shasta Ventures 和 Mozilla Corporation 提供。一年后,Deno 在红杉资本领投的 A 轮融资中获得了 2100 万美元的额外资金。

JSR 是 Deno 为重新定义 JavaScript 包注册中心领域做法而做出的最新努力。与长期以来被 JavaScript 生态系统视为标准包注册中心的 npm 相比,JSR 有几个明显的技术差异。Deno 团队在 2023 年 SeattleJS 会议上非正式宣布了 JSR 项目,并在 2023 年更新的博文中附上了该项目的链接。

几周前,JSR 网站总结了 Deno 正在构建的内容:

  • 为什么要选择 JSR? 真正的 TypeScript 优先环境:高效的类型检查,无需转换过程 —— 直接用 TypeScript 编写并部署代码。
  • 性能和可用性处于最前沿: 通过集成的工作空间和无缝的 NPM 集成,JSR 将可用性放在首位。
  • 安全且可访问的模块: JSR 中的所有模块都通过 HTTPS 公开,确保代码始终是安全的。
  • 开源,由社区驱动: JSR 由开发人员为开发人员构建,是根据 JavaScript 社区实际需求和贡献逐步形成的。

使用 Vite 和 Hono 开发全栈 web 应用

很多人都听过可以用 Vite 在浏览器中实现热加载模块的能力,并以这种方式使用它。但 Vite 能做的更多,特别是对于现代解决方法,新的后端框架也倾向于支持 Vite 的开发服务器。其中之一是 Hono。

与 Express 这样的传统框架相比,Hono 是一个相对较新的框架。它采用现代 Web API 的无服务器设计确实吸引了我的眼球。使用 Vite,Hono 应用程序也能从热模块重载中受益,这为我们提供了一种开发全栈应用程序的全新方式。

我有机会说服我的同事(在我的新工作场所)从使用 Koa/Egg.js 框架和 Webpack 的旧架构切换到这种新的 Vite + Hono 组合,并从中受益匪浅。使用这种新的全栈架构,我们不仅设法减少了后端和前端之间不必要的划分,而且还提高了代码质量,因为 Hono 可以在后端和前端之间共享 API 类型。

所以,在这里,我将与想要拥抱 Web 开发新时代的人分享我使用这个新栈的经验。我们开始吧。

将 Axum 程序迁移到 Loco

注意:Loco 基于 Axum,它是“包含所有功能的 Axum”,将您的 Axum 代码移至 Loco 非常容易。

我们将研究 realworld-axum-sqlx,它是一个基于 Axum 的应用程序,尝试使用 API、真实数据库和真实世界场景以及诸如配置和日志记录之类的真实世界的可操作性要求来描述一个真实世界的项目。

一点一点地研究 realworld-axum-sqlx我们将证明通过将它从 Axum 移至 Loco,大部分代码早已为您编写好,您将获得更佳的最佳实践、更好的开发体验、集成测试、代码生成和更快速的构建应用程序。

您可以使用这种分解方式来理解如何将您自己的基于 Axum 的应用程序也移至 Loco。如有任何问题,请在 discussions 中联系或点击绿色邀请按钮加入我们的 discord

Loco CLI

创建一个模板程序:

$ cargo install loco-cli
$ loco new
< 按照命令进行 >

现在 cd 进入你的应用程序,设置一个方便的 rr 别名并尝试各种命令:

$ cd myapp
$ cargo loco --help

你可以通过 CLI 在以下环境中驱动你的开发:

$ cargo loco generate model posts
$ cargo loco generate controller posts
$ cargo loco db migrate
$ cargo loco start

以及运行测试或使用 Rust 就像你已经知道的:

$ cargo build
$ cargo test

Loco 脚手架模板

用 Loco 的预定义模板来简化项目的初始化,让你的开发过程更加顺畅。第一步,安装我们的 CLI 并选择最合适的模板。

cargo install loco-cli

创建一个应用:

loco new
 ❯ App name? · myapp
? ❯ What would you like to build? ›
 lightweight-service (minimal, only controllers and views)
  Rest API (with DB and user auth)
  Saas app (with DB and user auth)

Loco 配置指南

loco 的配置位于 config/ 中,默认情况下设置 3 种不同的环境:

config/
  development.yaml
  production.yaml
  test.yaml

环境的选择依据如下:

  • 命令行标志:cargo loco start --environment production,如果没有给出,则回退到
  • LOCO_ENVRAILS_ENVNODE_ENV

如果没有给出,则默认值为 development

Loco 框架除了默认环境之外,还支持自定义环境。要添加自定义环境,请创建一个配置文件,其名称与前面示例中使用的环境标识符匹配。

Webhook 很糟糕, 但是我们有其他选择

Webhook 是网络基础设施的重要组成部分。它诞生于 2007 年的一篇博文中,是一种使用所有人都熟悉的 HTTP 协议来消费异步数据流的简单方式。如今,Webhook 仍然基本保持原样,但已成为实现各种通知和集成云系统的事实标准。

在网络时代,什么相当于管道?

— 蒂姆·奥莱利

如今,Webhook 无处不在。对于 SaaS 和 API 公司来说,Webhook 是基本要求,拥有与其他云软件集成所需的最低开发成本。根据 SVIX 的说法,在排名前 100 的 API 公司中,83% 提供 Webhook。而对于 SaaS 企业来说,提供集成的第一步是通过 Webhook。因此,如果您正在构建云软件,那么您应该提供 Webhook 并开发它,对吧?

不完全是。

Rust 的日志记录 - 如何上手?

在 Rust 中输出日志有很多不同的库,因此选择其中一个库可能很困难。当 println!dbg!eprintln! 无法满足你的要求时,拥有一种构建结构日志的方法非常重要,尤其是在生产级应用程序中。本文将帮助你了解在 Rust 中进行日志记录时,哪一个日志板库最适合你的用例。

Golang 范型编程:展望未来

理解问题

要正确理解 Golang 范型编程 的概念,首先需要理解它旨在解决的问题。我们通过一个简单的例子来进行说明。

假设我们有一个简单的 Add() 函数,它接受两个整数并返回它们的和:

func Add(a, b int) int {
  return a + b
}

func main() {
  fmt.Println(Add(1, 2))    // 输出:3
}

这个函数对整数来说非常好用,但如果我们想让它接受浮点数呢?如果我们尝试用我们的 Add() 函数使用浮点数,就会遇到一个错误:

func main() {
  fmt.Println(Add(1.1, 2))    // 错误:无法将 1.1(未类型化的浮点常量)用作参数 Add 的 int 值
}

现在,你可能会建议使用 接口 来解决这个问题,但这里有个问题。我们只希望 Add() 函数接受整数和浮点数,而不接受其他类型。很遗憾,仅使用接口无法实现这种程度的特殊性。

这性编就是 Golang 范程派上用场的地方了。

将你的 .NET Http 客户端重构成类型安全的 HTTP 客户端

在我用过的所有基于 .NET 的应用中,访问外部(REST)API 的功能是通过 HTTP 协议实现的。针对这一需求,.NET 框架提供了多种实现方案,本文将介绍其中我最喜欢的实现方式。

在 .NET framework 时代调用 HTTP 请求并处理响应比现在复杂得多。一种流行的解决方案是使用 RestSharp 库,它隐藏了很多复杂性。

现在使用 dotnet(Core)HttpClient API 来进行 HTTP 请求则要容易得多,也没有必要再使用第三方库了。虽然有诸多的好处,但我们仍需注意一些问题。

[翻译] JSR 初步印象

原文链接

JSR:解决 JavaScript 生态系统问题的包仓库

Deno 团队推出了一款名为 JSR 的新包仓库,旨在解决 JavaScript 生态系统中的诸多问题。我受邀抢先体验了这款仓库,并想分享一下我的感受。

Loco 指南

Loco 是一个 Rust API 和 Web 框架,用于构建全栈产品。

Loco 这个名字源自 locomotive,是对 Rails 的致敬,而且 locolocomotive 更容易输入 :-)。此外,在一些语言中它表示“疯狂”,但这并不是最初的意图(或者,在 Rust 上构建 Rails 是疯狂的吗?只有时间才能证明!)。

你需要对 Rust 有中等程度的了解。你需要知道如何构建、测试和运行 Rust 项目,已经使用了一些流行的库,例如 clapregextokioaxum 或其他 Web 框架,没有什么太花哨的。Loco 中没有疯狂的生命周期扭曲或复杂/过于神奇的宏,你不需要知道它们是如何工作的来使用 Loco。

Loco 深受 Rails 的启发。如果你了解 Rails 和 Rust,你就会有宾至如归的感觉。如果你只了解 Rails 并且不熟悉 Rust,你会发现 Loco 令人耳目一新。我们不假设你了解 Rails。

我们认为 Rails 非常棒,因此本指南也深受 Rails 指南 的启发

Loco 快速入门

让我们在 loco 上通过 4 个命令创建一个博客后端。首先安装 loco-clisea-orm-cli

$ cargo install loco-cli
$ cargo install sea-orm-cli

现在你可以创建你的新应用(选择“Saas app”)。

$ loco new
 ❯ App name? · myapp
? ❯ What would you like to build? ›
  lightweight-service (minimal, only controllers and views)
  Rest API (with DB and user auth)
 Saas app (with DB and user auth)
🚂 Loco app generated successfully in:
myapp

Diesel CLI 配置文档

Diesel CLI 是 Diesel 提供的一个可选工具,用于管理数据库 schema 。它的两个主要功能是运行数据库迁移和创建一个代表数据库 schema 的 Rust 文件。

Diesel CLI 的行为可以通过一个 toml 文件进行配置。默认情况下,Diesel 会在与 Cargo.toml 文件相同的目录下查找 diesel.toml 文件。您可以通过设置 DIESEL_CONFIG_FILE 环境变量或在命令行上传递 --config-file 来提供不同的配置文件。您可以通过运行 diesel setup 命令获得一个包含一些默认设置的基本配置文件。

在 Diesel 2.0 版本中,该文件包含一个名为 [print_schema] 的部分。此文件中的所有字段都是可选的。

深入 Diesel Schema

在本教程中,我们将详细了解 diesel print-schema 命令和 table! 宏的作用。对于 table!,我们将展示实际生成代码的简化版本,并解释每一部分对你的重要性。如果您曾经对生成的代码感到困惑,或者不明白 use schema::posts::dsl::* 代表什么,那么您现在处于正确的位置。要了解哪些类型在何处可用,另一种方法是打开您当前 crate 的 API 文档,通过运行 cargo docs --open 并导航到相关的模块。

Diesel 入门指南

在本指南中,我们将通过一系列简单的示例来逐一介绍CRUD操作,即“创建、读取、更新、删除”。本指南的每一步都是在前一步的基础上进行的,建议按顺序跟随操作。

在开始之前,请确保您已经安装并运行了PostgreSQL数据库。如果您使用的是其他类型的数据库,比如SQLite,部分示例可能无法直接应用,因为不同数据库的API实现可能会有所差异。在项目仓库中,您可以找到适用于每个支持数据库的各种示例

Diesel 要求使用 Rust 1.65 或更新版本。如果您正在按照本指南学习,请确保您通过执行 rustup update stable 命令,升级到至少 Rust 1.65 版本。

本文使用的 diesel 版本为 2.1.4, 最新信息请参考官方网站

使用大语言模型助力外语学习

学外语是很多人的梦想,但传统的学习方法很枯燥,缺乏个性化。死记硬背单词和繁琐的语法练习往往让人感觉难以真正掌握语言的应用,更别说找到一个合适的语言学习伴侣或导师了。不过,随着大语言模型的出现,外语学习迎来了全新的变革,变得更加高效和有趣。这些先进的人工智能算法通过海量文本数据训练而成,能够生成类似人类的文本,回答问题,甚至进行对话。在语言学习领域,它们为学习者提供了前所未有的帮助,使学习外语变得更加轻松和愉快。接下来,我们就来看看如何使用大语言模型来给外语学习加提速,让你的语言技能飞速提升,成为交流小能手!

Stable Diffusion 提示:权威指南

cover

每个 Stable Diffusion 用户都要解决的第一个问题是构建好的提示。本文总结了通过实验和其他用户输入开发的流程和技术。目标是写下我所知道的关于提示的所有内容,以便你可以在一个地方了解它们。

AI 角色扮演人物设计指南 P2

虽然前面的介绍旨在让您了解每种格式如何独立运作以及为什么它们如此优秀,但这个角色格式化和写作指南旨在为您提供角色创建过程的逐步深入解释,以及您需要知道的一切,以让您与其他机器人创作者区别开来。

大多数机器人创建界面都会有多个框用于编写角色信息。我们关心的只有名称、描述、作者注解(如果您的前端界面可用)、问候语/第一条消息,以及世界信息/lorebooks(如果您的界面可用)。

在开始之前,您需要一个角色编辑器。这是我推荐的一个

在指南中,我将经常提到一个名为“作者注解” (Author's Note) 的功能,然后再解释它到底是什么。如果您迫不及待想知道它是什么,简而言之,它是一个功能,可以在最后一条消息之上的X条消息中注入一个选定的提示。