Config ssh to Keychina
将生成的 ssh 私钥添加到 Mac 的 keychain 中, 如果是其他操作系统,可忽略此步骤
$ ssh-add -K .ssh/is_rsa
将登录信息配置到。ssh/config 中
$ touch ~/.ssh/config
$ vim ~/.ssh/config
# edit text
Host myvm
Hostname ip
User user
保存之后就可以使用如下命令快捷登录服务器了
$ ssh myvm
$ ssh-add -K .ssh/is_rsa
$ touch ~/.ssh/config
$ vim ~/.ssh/config
# edit text
Host myvm
Hostname ip
User user
$ ssh myvm
cargo.toml
是 Rust 包管理器 cargo
的清单文件。这个文件包 name
、 version
和包的依赖,在 Rust 中,我们一般称之为 crate
。
在示例中给出了一系列信息,但是我们主要讨论如下三点:
$ npm init rust-webpack web_assembly_demo
npx: 18 安装成功,用时 3.989 秒
Rust + WebAssembly + Webpack = ️
Installed dependencies
$ yarn
yarn install v1.19.1
warning package.json: No license field
info No lockfile found.
warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.
warning rust-webpack-template@0.1.0: No license field
[1/4] Resolving packages...
warning @wasm-tool/wasm-pack-plugin > watchpack > chokidar > fsevents@1.2.9: One of your dependencies needs to upgrade to fsevents v2: 1) Proper nodejs v10+ support 2) No more fetching binaries from AWS, smaller package size
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
Done in 17.87s.
# You must change these to your own details.
[package]
name = "web_assembly_demo"
description = "My super awesome Rust, WebAssembly, and Webpack project!"
version = "0.1.0"
authors = ["guzhongren <guzhoongren@live.cn>"]
categories = ["wasm"]
readme = "README.md"
edition = "2018"
[lib]
crate-type = ["cdylib"]
[profile.release]
# This makes the compiled code faster and smaller, but it makes compiling slower,
# so it's only enabled in release mode.
lto = true
[features]
# If you uncomment this line, it will enable `wee_alloc`:
#default = ["wee_alloc"]
[dependencies]
# The `wasm-bindgen` crate provides the bare minimum functionality needed
# to interact with JavaScript.
wasm-bindgen = "0.2.45"
# `wee_alloc` is a tiny allocator for wasm that is only ~1K in code size
# compared to the default allocator's ~10K. However, it is slower than the default
# allocator, so it's not enabled by default.
wee_alloc = { version = "0.4.2", optional = true }
# The `web-sys` crate allows you to interact with the various browser APIs,
# like the DOM.
[dependencies.web-sys]
version = "0.3.22"
features = ["console"]
# The `console_error_panic_hook` crate provides better debugging of panics by
# logging them with `console.error`. This is great for development, but requires
# all the `std::fmt` and `std::panicking` infrastructure, so it's only enabled
# in debug mode.
[target."cfg(debug_assertions)".dependencies]
console_error_panic_hook = "0.1.5"
# These crates are used for running unit tests.
[dev-dependencies]
wasm-bindgen-test = "0.2.45"
futures = "0.1.27"
js-sys = "0.3.22"
wasm-bindgen-futures = "0.3.22"
Rust 的依赖会在启动 Web 程序的时候自动安装。
在 VS Code 上进行 Rust 的开发,需要使用一下两个库
安装很简单,不用说
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问:https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Debug executable 'show_posts'", // 配置名称,将会在调试配置下拉列表中显示
"type": "lldb", // 调试器类型:Windows 表示器使用 cppvsdbg;GDB 和 LLDB 使用 cppdbg。该值自动生成
"request": "launch", // 调试方式
"cargo": { // 运行的参数
"args": [
"build",
"--bin=show_posts",
"--package=diesel_demo"
],
"filter": {
"name": "show_posts",
"kind": "bin"
}
},
"args": [], // 传递给程序的参数,没有参数留空即可
"cwd": "${workspaceFolder}" // 调试程序时的工作目录
},
}
在我们开发中,我们通常需要对某一系列的组件 Coding, 但我们是程序员啊,我们怎么能容忍代码重复出现的坏味道呢。所以,对于一些列相同的操作我们就要用到循环处理了。
我需要撤销最后的四个提交
如果用* git revert * 一个一个 revert 挺费劲,可以用* git revert OLDER_COMMIT^..NEWER_COMMIT* 这种格式,对应我的工程就是
$ git revert 54b23c2251acde.....09123463e99436fba83f9^..a19a10b24b648b80401234686aac65...
这样会在 log 上多留下四条 revert 相关的记录,我不想生成 revert 相关的记录呢?可以的
在平时开发中我们有自己的 git 仓库,组内提交都是在这个库。突然有一天,领导说要把这个库整合到另一个更大的工程中(华为云的看板),那里面有前后端的代码;为了方便大家查找,我们需要将各个组的代码迁移到同一个大工程下。
依赖注入是目前很多优秀框架都在使用的一个设计模式。 Dependency Injection 常常简称为:DI。它是实现控制反转(Inversion of Control – IoC)的一个模式。
在各种大工程中少不了各种测试,其中 TDD 就是非常流行的一种,在前端开发中用的比较多的 Jest 就是一种,在 Golang 开发命令行工具的时候也是需要 DI 这种模式来实现命令行测试的。因为传统的测试室获取不到命令行的输入输出的。
基准测试是对计算机系统的性能的测试。
在程序中,基准测试,是一种测试代码性能的方法;比如有一个问题你有多种不同的方案,你想选择一种性能最好的方案,那么你就需要基准测试。