diff --git a/blog/package.json b/blog/package.json
index 130770f9..bbd4dec6 100644
--- a/blog/package.json
+++ b/blog/package.json
@@ -20,6 +20,7 @@
"devDependencies": {
"@antfu/eslint-config": "^2.6.4",
"@iconify/json": "^2.2.180",
+ "@mdit/plugin-tasklist": "^0.8.0",
"@octokit/rest": "^20.0.2",
"@shikijs/markdown-it": "^1.0.0-rc.0",
"@shikijs/transformers": "^1.1.2",
diff --git a/blog/pages/pinned/about/site.md b/blog/pages/pinned/about/site.md
index e61837b5..fa5486d7 100644
--- a/blog/pages/pinned/about/site.md
+++ b/blog/pages/pinned/about/site.md
@@ -2,7 +2,6 @@
title: About this site - Alomerry Wu
display: About this site
subtitle: 一个基于 xxx 的博客,主要记录开发笔记。
-tocAlwaysOn: true
cards:
components:
- name: '七牛云'
diff --git a/blog/pages/pinned/bookmarks.md b/blog/pages/pinned/bookmarks.md
index 7f7eca26..3a6b3b20 100644
--- a/blog/pages/pinned/bookmarks.md
+++ b/blog/pages/pinned/bookmarks.md
@@ -2,7 +2,6 @@
title: Bookmarks - Alomerry Wu
display: Bookmarks
subtitle: Some of my favorite websites/tools with excellent design and UX that I highly recommend
-tocAlwaysOn: true
---
[[toc]]
diff --git a/blog/pages/pinned/website/docs.md b/blog/pages/pinned/website/docs.md
index e45c6914..5f20a6e7 100644
--- a/blog/pages/pinned/website/docs.md
+++ b/blog/pages/pinned/website/docs.md
@@ -2,7 +2,6 @@
title: 文档/规范 - Alomerry Wu
display: 文档/规范
subtitle: 一个基于 xxx 的博客,主要记录开发笔记。
-tocAlwaysOn: true
cards:
cloud-native:
- icon: 'i-logos:kubernetes'
@@ -45,4 +44,4 @@ cards:
## Frontend
-
\ No newline at end of file
+
diff --git a/blog/pages/pinned/website/website.md b/blog/pages/pinned/website/website.md
index f839e50d..a4589344 100644
--- a/blog/pages/pinned/website/website.md
+++ b/blog/pages/pinned/website/website.md
@@ -2,7 +2,6 @@
title: 好站 - Alomerry Wu
display: 好站
subtitle: 一个基于 xxx 的博客,主要记录开发笔记。
-tocAlwaysOn: true
cards:
website:
- icon: 'https://static.pintia.cn/sparkling-daydream/icons/PTA-logo.svg'
diff --git a/blog/pages/posts/2019/cn-beian-details.md b/blog/pages/posts/2019/cn-beian-details.md
index 5794979b..26dcbc20 100644
--- a/blog/pages/posts/2019/cn-beian-details.md
+++ b/blog/pages/posts/2019/cn-beian-details.md
@@ -5,7 +5,6 @@ lang: zh
type: posts
duration: 1min
desc: 记录 2019 年 alomerry.com 腾讯云备案流程和细节
-tocAlwaysOn: true
---
[[toc]]
diff --git a/blog/pages/posts/2019/usefull-cpp-lib.md b/blog/pages/posts/2019/usefull-cpp-lib.md
index 66e9543b..5ccf87dc 100644
--- a/blog/pages/posts/2019/usefull-cpp-lib.md
+++ b/blog/pages/posts/2019/usefull-cpp-lib.md
@@ -4,7 +4,8 @@ title: C++ 常用的函数 algorithm/stdlib/string/STL 库函数
lang: zh
type: posts+algorithm
duration: 10min
-tocAlwaysOn: true
+todoNext:
+ - 文字过少
---
[[toc]]
diff --git a/blog/pages/posts/2020/clean-code.md b/blog/pages/posts/2020/clean-code.md
index 25b92063..6bbe2b49 100644
--- a/blog/pages/posts/2020/clean-code.md
+++ b/blog/pages/posts/2020/clean-code.md
@@ -1,19 +1,20 @@
---
-date: 2020-10-03
-description: 《代码整洁之道》读书笔记和日常写代码、读代码对于代码风格的总结
-category:
- - Reading
-tag:
- - Code Style
+date: 2020-10-03T16:00:00.000+00:00
+title: 代码整洁之道 / Go 箴言笔记 TODO
+lang: zh
+type: posts
+duration: 25min
+desc: 《代码整洁之道》读书笔记和日常写代码、读代码对于代码风格的总结
+todoNext:
+ - 没处理完
+ - 内容过多
---
-# Clean Code
+[[toc]]
-## 《代码整洁之道》笔记
+## 有意义的命名
-### 有意义的命名
-
-**名副其实,避免误导**
+**名副其实,避免误导**
代码需要简洁,但是不能模糊。例如下面两个变量:
@@ -25,35 +26,35 @@ XYZControllerForEfficientHoldingOfStrings
_在区分两个变量的意思时需要反复对比,是很痛苦的。避免细微之处有不同。_
-**方法名**
+**方法名**
方法名应该是动词或动词短语。属性访问器、修改器和断言应该根据其值命名。
-### 函数
+## 函数
-**只做一件事**
+**只做一件事**
函数应该做一件事。做好这件事。只做这一件事。
-**switch 语句**
+**switch 语句**
遵循 单一权责原则,开放闭合原则
-**函数参数-减少参数数量**
+**函数参数-减少参数数量**
避免使用标识参数,如 `bool` 型参数,一旦使用,就表明方法中会因为 true 和 false 做不同的事。
-**函数参数-动词和关键词**
+**函数参数-动词和关键词**
一元函数应当形成一种良好的动词/名词对形式。_例如: `write(name)`、`writeField(name)`。
函数名称展示关键字形式可以减轻记忆参数顺序的负担。_例如:`assertEqual(expected,actual)` 修改成 `assertExpectedEqualsActual(expected,actual)`。
-**无副作用**
+**无副作用**
避免做函数承诺的以外的事情。
-**分隔指令和询问**
+**分隔指令和询问**
函数应该修改某对象的状态,或是返回某对象的相关信息,但两者不可兼得。例如:
@@ -80,7 +81,7 @@ public enum Error {
这样的类就是一块**依赖磁铁(dependency magnet)**。其它类都导入和使用它。当 Error 枚举修改时,所有这些其它的类需要重新编译和部署。使用异常代替错误码,新异常就可以从异常类派生出来。
-### 对象和数据结构
+## 对象和数据结构
**数据、对象的反对称性**
@@ -88,7 +89,7 @@ public enum Error {
过程式代码难以添加新数据结构,因为必须修改所有函数。面向对象代码难以添加新函数,因为必须修改所有子类。
-### 处理异常
+## 处理异常
**使用不可控异常**
@@ -108,7 +109,7 @@ public enum Error {
将错误处理隔离看待,独立于主要逻辑之外,就能写出强固而整洁的代码。做到这一步就能单独处理错误,提高了代码的可维护性。
-### 类
+## 类
**类应该短小**
@@ -122,7 +123,7 @@ public enum Error {
保持函数和参数列表短小,有时会导致一组子集方法所用的实体变量数增加,这时尝试将变量和方法拆分到多个类中,让新的类更为内聚。
-### 系统
+## 系统
**将系统的构造与使用分开**
@@ -156,7 +157,7 @@ public Service getService() {
> 软件系统与物理系统可以类比。它们的架构都可以递增式地增长,只要我们持续将关注面恰当的切分。
-### 迭进
+## 迭进
**表达力**
@@ -173,7 +174,7 @@ public Service getService() {
避免过度使用消除重复、代码表达力和 SRP 等基础的概念。目标是保持函数和类短小的同时,保持整个系统短小精悍。
-### 并发编程
+## 并发编程
- 并发总能改进性能。并发有时能改进性能,但只在多个线程或多处理器之间能分享大量等待时间的时候管用。事情没那么简单。
- 编写并发程序无需修改设计。事实上,并发算法的设计有可能与单线程系统的设计极不相同。目的与时机的解耦往往对系统结构产生巨大的影响。
@@ -238,7 +239,7 @@ DRY 原则(Don't Repeat Yourself)
**避免传递浏览**
-### Java
+## Java
**不要继承常量**
@@ -267,11 +268,7 @@ DRY 原则(Don't Repeat Yourself)
>
> 该函数不只是获取了一个 oos,如果 oos 不存在,还会创建一个。所以,更好的名字大概是 `createOrReturnOos`。
-
-
-## golang advice
-
-### Go 箴言
+## go 箴言[^go-proverbs]
- 不要通过共享内存进行通信,通过通信共享内存
- 并发不是并行
@@ -293,9 +290,7 @@ DRY 原则(Don't Repeat Yourself)
- 文档是供用户使用的
- 不要(在生产环境)使用 `panic()`
-https://go-proverbs.github.io/
-
-### Go 之禅
+## go 之禅[^go-dhyana]
- 每个 package 实现单一的目的
- 显式处理错误
@@ -308,133 +303,115 @@ https://go-proverbs.github.io/
- 如果你觉得慢,先编写 benchmark 来证明
- 适度是一种美德
- 可维护性
-
-https://the-zen-of-go.netlify.com/
-
-- 名字的长度没有逻辑限制,但是Go语言的风格是尽量使用短小
-的名字,对于局部变量尤其是这样;你会经常看到之类的短名
-宇,而不是元长的theLoopindex命名。通常来说,如果一个名
-宇的作用域比较大,生命周期也比较长,那么用长的名字将会
-更有意义《The Go Programming Language》
+- 名字的长度没有逻辑限制,但是Go语言的风格是尽量使用短小的名字,对于局部变量尤其是这样;你会经常看到之类的短名宇,而不是元长的theLoopindex命名。通常来说,如果一个名宇的作用域比较大,生命周期也比较长,那么用长的名字将会更有意义
### 代码
-#### 多个 if 语句可以折叠成 switch
+- 多个 if 语句可以折叠成 switch
-```go
-package main
+ ::: code-group
-var (
- bar = "bar"
- baz = "baz"
-)
+ ```go [main]
+ package main
-func foo() bool {
- return true
-}
+ var (
+ bar = "bar"
+ baz = "baz"
+ )
-// NOT BAD
-func f1() {
- if foo() {
- // ...
- } else if bar == baz {
- // ...
- } else {
- // ...
+ func foo() bool {
+ return true
}
-}
-
-// BETTER
-func f2() {
- switch {
- case foo():
- // ...
- case bar == baz:
- // ...
- default:
- // ...
+ ```
+
+ ```go [NOT BAD]
+ func f1() {
+ if foo() {
+ // ...
+ } else if bar == baz {
+ // ...
+ } else {
+ // ...
+ }
}
-}
-```
-
-#### 用 `chan struct{}` 来传递信号, `chan bool` 表达的不够清楚
-
-当你在结构中看到 `chan bool` 的定义时,有时不容易理解如何使用该值,例如:
-
-```go
-package main
-
-type Service struct {
- deleteCh chan bool // what does this bool mean?
-}
-```
-
-但是我们可以将其改为明确的 `chan struct {}` 来使其更清楚:我们不在乎值(它始终是 `struct {}`),我们关心可能发生的事件,例如:
-
-```go
-package main
-
-type Service struct {
- deleteCh chan struct{} // ok, if event than delete something.
-}
-```
+ ```
+
+ ```go [BETTER]
+ func f2() {
+ switch {
+ case foo():
+ // ...
+ case bar == baz:
+ // ...
+ default:
+ // ...
+ }
+ }
+ ```
-#### `30 * time.Second` 比 `time.Duration(30) * time.Second` 更好
+ :::
-你不需要将无类型的常量包装成类型,编译器会找出来。 另外最好将常量移到第一位:
+- 用 `chan struct{}` 来传递信号, `chan bool` 表达的不够清楚。当你在结构中看到 `chan bool` 的定义时,有时不容易理解如何使用该值,例如:
-```go
-package main
+ ```go
+ type Service struct {
+ deleteCh chan bool // what does this bool mean?
+ }
+ ```
-import "time"
+ 但是我们可以将其改为明确的 `chan struct {}` 来使其更清楚:我们不在乎值(它始终是 `struct {}`),我们关心可能发生的事件,例如:
-var (
- delay = time.Second * 60 * 24 * 60 // BAD
- delay = 60 * time.Second * 60 * 24 // VERY BAD
- delay = 24 * 60 * 60 * time.Second // GOOD
-)
-```
+ ```go
+ type Service struct {
+ deleteCh chan struct{} // ok, if event than delete something.
+ }
+ ```
-#### 用 `time.Duration` 代替 `int64` + 变量名
+- `30 * time.Second` 比 `time.Duration(30) * time.Second` 更好。你不需要将无类型的常量包装成类型,编译器会找出来。 另外最好将常量移到第一位:
-```go
-package main
+ ```go
+ var (
+ delay = time.Second * 60 * 24 * 60 // BAD
+ delay = 60 * time.Second * 60 * 24 // VERY BAD
+ delay = 24 * 60 * 60 * time.Second // GOOD
+ )
+ ```
-import "time"
+ 用 `time.Duration` 代替 `int64` + 变量名
-var (
- delayMillis int64 = 15000 // BAD
- delay time.Duration = 15 * time.Second // GOOD
-)
-```
+ ```go
+ var (
+ delayMillis int64 = 15000 // BAD
+ delay time.Duration = 15 * time.Second // GOOD
+ )
+ ```
-#### 按类型分组 `const` 声明,按逻辑和/或类型分组 `var`
+- 按类型分组 `const` 声明,按逻辑和/或类型分组 `var`
-```go
-package main
+ ```go
+ // BAD
+ const (
+ foo = 1
+ bar = 2
+ message = "warn message"
+ )
-// BAD
-const (
- foo = 1
- bar = 2
- message = "warn message"
-)
+ // MOSTLY BAD
+ const foo = 1
+ const bar = 2
+ const message = "warn message"
-// MOSTLY BAD
-const foo = 1
-const bar = 2
-const message = "warn message"
+ // GOOD
+ const (
+ foo = 1
+ bar = 2
+ )
-// GOOD
-const (
- foo = 1
- bar = 2
-)
+ const message = "warn message"
-const message = "warn message"
-```
+ ```
-这个模式也适用于 `var`。
+ 这个模式也适用于 `var`。
- 每个阻塞或者 IO 函数操作应该是可取消的或者至少是可超时的
- 为整型常量值实现 `Stringer` 接口
@@ -442,36 +419,36 @@ const message = "warn message"
- 检查 `defer` 中的错误
```go
-package main
+ package main
-func main() {
- defer func() {
- //err := ocp.Close()
- //if err != nil {
- // rerr = err
- //}
- }()
-}
-```
+ func main() {
+ defer func() {
+ //err := ocp.Close()
+ //if err != nil {
+ // rerr = err
+ //}
+ }()
+ }
+ ```
- 不要在 `checkErr` 函数中使用 `panic()` 或 `os.Exit()`
- 仅仅在很特殊情况下才使用 panic, 你必须要去处理 error
- 不要给枚举使用别名,因为这打破了类型安全
- https://play.golang.org/p/MGbeDwtXN3
-```go
- package main
+ ```go
+ package main
-type Status = int
-type Format = int // remove `=` to have type safety
+ type Status = int
+ type Format = int // remove `=` to have type safety
-const A Status = 1
-const B Format = 1
+ const A Status = 1
+ const B Format = 1
-func main() {
- println(A == B)
-}
-```
+ func main() {
+ println(A == B)
+ }
+ ```
- 如果你想省略返回参数,你最好表示出来
- `_ = f()` 比 `f()` 更好
@@ -1014,7 +991,6 @@ func main() {
- 从一个 slice 生成简单的随机元素
- `[]string{"one", "two", "three"}[rand.Intn(3)]`
-
## 通用
### 保持一致
@@ -1046,3 +1022,6 @@ func main() {
https://zhuanlan.zhihu.com/p/143621809
+
+[^go-proverbs]: [go 箴言](https://go-proverbs.github.io/)
+[^go-dhyana]: [go 之禅](https://the-zen-of-go.netlify.app/)
diff --git a/blog/pages/posts/2020/todo~code-review.md b/blog/pages/posts/2020/code-review.md
similarity index 85%
rename from blog/pages/posts/2020/todo~code-review.md
rename to blog/pages/posts/2020/code-review.md
index 55b4ad03..46b7415c 100644
--- a/blog/pages/posts/2020/todo~code-review.md
+++ b/blog/pages/posts/2020/code-review.md
@@ -1,18 +1,20 @@
---
-article: false
-title: Code Review 注意事项
-description: 在公司中学习到一些规范和流程
-date: 2020-07-06
-tag:
- - TODO
+date: 2020-07-06T16:00:00.000+00:00
+title: code review 注意事项
+lang: zh
+type: posts
+duration: 3min
+desc: 在公司中学习到一些规范和流程
+todoNext:
+ - 缺少个人简介
---
-
-
-
+[[toc]]
:::tip
+
内容来源于工作时一些规则和心得,记录下来品读和再总结,站在巨人的肩膀。
+
:::
@@ -43,12 +45,6 @@ $(description)
- 审查者 review 代码。有疑问或是建议的地方要留评论;提交者修正后要解决讨论;互相从中学习;有问题 assign 给提交者处理。
- 提交者相应评论。有问题则修复,同时减少不必要的 commit 历史;如果不同意,可以和审查者讨论;修正后 assign 给审查者 review;来回 assign 或留评论都是沟通机制,二选一,没道理都做。
-:::warning
-test
-:::
-
## Reference
-- 沟通技巧[^1]
-
-[^1]: [tech note](https://github.com/inetfuture/technote)
+- [tech note](https://github.com/inetfuture/technote?tab=readme-ov-file#code-review)
diff --git a/blog/pages/posts/2020/deploy-proxy.md b/blog/pages/posts/2020/deploy-proxy.md
index 5fda3e78..4b9b6069 100644
--- a/blog/pages/posts/2020/deploy-proxy.md
+++ b/blog/pages/posts/2020/deploy-proxy.md
@@ -3,7 +3,8 @@ date: 2020-02-14T16:00:00.000+00:00
title: 搭建科学上网教程
lang: zh
duration: 10min
-tocAlwaysOn: true
+todoNext:
+ - 探索透明代理
---
[[toc]]
diff --git a/blog/pages/posts/2020/typecho-theme-plugs.md b/blog/pages/posts/2020/typecho-theme-plugs.md
index e85dff87..2fa3a44a 100644
--- a/blog/pages/posts/2020/typecho-theme-plugs.md
+++ b/blog/pages/posts/2020/typecho-theme-plugs.md
@@ -1,28 +1,26 @@
---
-description: 已停更
-date: 2020-01-17
-head:
- - - meta
- - name: keywords
- content: typecho handsome Skymo 插件 主题 美化
- - name: description
- content: typecho 主题 handsome 美化插件 Skymo
- - name: author
- content: Alomerry 清欢
-tag:
- - Typecho
+date: 2020-01-17T16:00:00.000+00:00
+title: Typecho 主题 handsome 美化插件 Skymo
+lang: zh
+type: posts
+duration: 1min
+desc: 已停止更新
---
-# typecho 主题 handsome 美化插件 Skymo
+[[toc]]
::: danger Attention
-第一次搭博客使用的 typecho,并且使用了很久,装上 [handsome](https://www.ihewro.com/archives/489/) 主题,折腾了很多花里胡哨的特效和装饰。一直持续到 2021
-年毕业入职,可能是因为成为了社畜的原因,心态、追求也发生了一些变化,所以在 2022 年初,选择了更为直接的
+
+第一次搭博客使用的 Typecho,并且使用了很久,装上 [handsome](https://www.ihewro.com/archives/489/) 主题,折腾了很多花里胡哨的特效和装饰。一直持续到
+2021 年毕业入职,可能是因为成为了社畜的原因,心态、追求也发生了一些变化,所以在 2022 年初,选择了更为直接的
vuepress,所以这个插件应该大概率基本是也不会再更新了,这个插件中的很多代码是来源于网络,被我整合到一个插件中,大家可以自己动手修改。
+
:::
::: tip Version
+
插件最新更新时间:2021/02/24(已停止更新)
+
:::
## 后续更新计划
@@ -37,7 +35,7 @@ vuepress,所以这个插件应该大概率基本是也不会再更新了,这
## 主要特色
-- 自定义字体以及生效位置(V1.2)。
+- 自定义字体以及生效位置(v1.2)。
- ZCOOL XiaoWei
- Manaco
- 添加背景流动彩带。
@@ -56,50 +54,40 @@ vuepress,所以这个插件应该大概率基本是也不会再更新了,这
## 说明
-- 本插件带有一些额外样式优化,可能会和已有的插件样式冲突,如果有请在 GitHub 提交 issue。
+- 本插件带有一些额外样式优化,可能会和已有的插件样式冲突,如果有请在 gitHub 提交 issue。
## 安装步骤
-- 下载本插件,解压到 `usr/plugins/` 目录中。
-- 修改文件夹名字为 SkyMo。
-- 进入网站后台-控制台-插件-激活插件。
-- 启用或关闭部分动效。
-- [`Github下载地址`](https://github.com/Alomerry/SkyMo)
+- 下载本插件,解压到 `usr/plugins/` 目录中
+- 修改文件夹名字为 `SkyMo`
+- 进入网站后台-控制台-插件-激活插件
+- 启用或关闭部分动效
-## 更新
+[github下载地址](https://github.com/Alomerry/SkyMo)
-**1.2.2(2020.10.04)**
+## 更新
-***
+**1.2.2(2020.10.04)**
- feature
- 添加 Wawa 字体。
1.2.0(2020.10.04)
-***
-
- feature
- 添加字体选择和字体生效位置。
1.1.0(2020.07.06)
-***
-
- feature
- 将插件设计成可配置启动/关闭。
-
1.0.0(2020.01.17)
-***
-
- feature
- 添加动效
- 添加背景
----
-
## 修改
### 背景流动彩带
@@ -149,7 +137,7 @@ this._options = {
};
```
-设置彩带CSS
+设置彩带 css
```js
this._canvas = document.createElement("canvas");
diff --git a/blog/pages/posts/2020/deploy-NAT-traversal.md b/blog/pages/posts/2021/deploy-NAT-traversal.md
similarity index 99%
rename from blog/pages/posts/2020/deploy-NAT-traversal.md
rename to blog/pages/posts/2021/deploy-NAT-traversal.md
index fcd064d0..9be31685 100644
--- a/blog/pages/posts/2020/deploy-NAT-traversal.md
+++ b/blog/pages/posts/2021/deploy-NAT-traversal.md
@@ -3,7 +3,8 @@ date: 2021-07-11T16:00:00.000+00:00
title: 搭建内网穿透教程
lang: zh
duration: 10min
-tocAlwaysOn: true
+todoNext:
+ - 具体代理应用配置
---
[[toc]]
diff --git a/blog/pages/posts/2021/postman.md b/blog/pages/posts/2021/postman.md
index 87987f24..e8128559 100644
--- a/blog/pages/posts/2021/postman.md
+++ b/blog/pages/posts/2021/postman.md
@@ -1,10 +1,14 @@
---
-date: 2021-03-15
-tag:
- - Postman
+date: 2021-03-04T16:00:00.000+00:00
+title: postman 使用技巧
+lang: zh
+type: posts
+duration: 3min
+todoNext:
+ - 文字过少
---
-# Postman 使用技巧
+[[toc]]
## Environments
@@ -56,7 +60,7 @@ pm.environment.set('lastResponseStatus', pm.response.code);
![pre-request](https://cdn.alomerry.com/blog/assets/img/posts/postman-variable-value.png)
-## Case
+## Case
### 使用 Environment、Pre-request Script 注入请求参数
@@ -65,7 +69,7 @@ pm.environment.set('lastResponseStatus', pm.response.code);
pre-request script 代码[^js-random-string]:
```javascript
-let randomId = (new Date()).toISOString()+Math.random().toString(36).slice(-8);
+let randomId = (new Date()).toISOString() + Math.random().toString(36).slice(-8);
pm.environment.set('randomId', randomId);
```
@@ -73,4 +77,4 @@ pm.environment.set('randomId', randomId);
[^js-random-string]: [原生 JAVAScript 生成简单随机字符串](https://juejin.cn/post/6844903665522704398)
-[^postman-javaScript-reference]: [Postman JavaScript reference](https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/)
\ No newline at end of file
+[^postman-javaScript-reference]: [Postman JavaScript reference](https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/)
diff --git a/blog/pages/posts/2021/vscode-setting.md b/blog/pages/posts/2021/vscode-setting.md
index fbe07877..5b76080a 100644
--- a/blog/pages/posts/2021/vscode-setting.md
+++ b/blog/pages/posts/2021/vscode-setting.md
@@ -1,22 +1,33 @@
-### 常用设置
+---
+date: 2021-09-28T16:00:00.000+00:00
+title: vscode 常用设置与技巧
+lang: zh
+type: posts
+duration: 3min
+todoNext:
+ - 内容过少
+ - 继续积累
+---
+
+## 常用设置
```json
{
- // 设置 vscode 的默认 shell
- "terminal.integrated.defaultProfile.linux": "zsh",
- // 搜索时排除的路径
- "search.exclude": {
- "**/*.code-search": true,
- "**/bower_components": true,
- "**/node_modules": false,
- "**/node_moduless": true
- },
- "window.autoDetectColorScheme": true,
- "workbench.preferredDarkColorTheme": "Visual Studio Dark",
- "workbench.preferredLightColorTheme": "Visual Studio Light",
- "workbench.colorTheme": "Visual Studio Light",
- "window.nativeTabs": true,
- "editor.wordWrap": "on",
- "files.autoSave": "afterDelay"
+ // 设置 vscode 的默认 shell
+ "terminal.integrated.defaultProfile.linux": "zsh",
+ // 搜索时排除的路径
+ "search.exclude": {
+ "**/*.code-search": true,
+ "**/bower_components": true,
+ "**/node_modules": false,
+ "**/node_moduless": true
+ },
+ "window.autoDetectColorScheme": true,
+ "workbench.preferredDarkColorTheme": "Visual Studio Dark",
+ "workbench.preferredLightColorTheme": "Visual Studio Light",
+ "workbench.colorTheme": "Visual Studio Light",
+ "window.nativeTabs": true,
+ "editor.wordWrap": "on",
+ "files.autoSave": "afterDelay"
}
```
diff --git a/blog/pages/posts/2022/ci-gitlab.md b/blog/pages/posts/2022/ci-gitlab.md
index 82305b26..510cda44 100644
--- a/blog/pages/posts/2022/ci-gitlab.md
+++ b/blog/pages/posts/2022/ci-gitlab.md
@@ -1,8 +1,9 @@
---
date: 2022-06-17T16:00:00.000+00:00
title: gitlab
-lang: en
+lang: zh
duration: 10min
+type: todoNext
---
- https://docs.gitlab.cn/jh/ci/variables/index.html#%E4%BD%BF%E7%94%A8-bashsh-%E5%92%8C%E7%B1%BB%E4%BC%BC%E7%9A%84%E5%8F%98%E9%87%8F
diff --git a/blog/pages/posts/2022/deploy-vscode-web.md b/blog/pages/posts/2022/deploy-vscode-web.md
index d8390733..53c7a037 100644
--- a/blog/pages/posts/2022/deploy-vscode-web.md
+++ b/blog/pages/posts/2022/deploy-vscode-web.md
@@ -3,7 +3,6 @@ date: 2022-08-23T16:00:00.000+00:00
title: 搭建 vscode web
lang: zh
duration: 10min
-tocAlwaysOn: true
---
[[toc]]
diff --git a/blog/pages/posts/2022/[algorithm]-tail-recursion.md b/blog/pages/posts/2022/tail-recursion.md
similarity index 85%
rename from blog/pages/posts/2022/[algorithm]-tail-recursion.md
rename to blog/pages/posts/2022/tail-recursion.md
index 202cf621..ba65276c 100644
--- a/blog/pages/posts/2022/[algorithm]-tail-recursion.md
+++ b/blog/pages/posts/2022/tail-recursion.md
@@ -2,6 +2,7 @@
date: 2022-08-10T16:00:00.000+00:00
title: 尾递归
lang: zh
+type: posts+algorithm
duration: 10min
---
@@ -11,11 +12,9 @@ duration: 10min
`1 1 2 3 5 8...`
-
+::: code-group
-递归版
-
-```cpp
+```cpp [递归版]
int fib(int n){
if (n <= 1){
return 1;
@@ -26,13 +25,7 @@ int fib(int n){
fib(100)
```
-
-
-
-
-尾递归版
-
-```cpp
+```cpp [尾递归版]
int fib(int a, b, n){
if (n == 0){
return n1;
@@ -43,7 +36,7 @@ int fib(int a, b, n){
fib(1, 1, 100)
```
-
+:::
递归相当于外层调用依赖内层调用的结果,然后再做进一步的操作,最终由最外层的方法收口操作,返回最终结果
@@ -51,4 +44,6 @@ fib(1, 1, 100)
尾递归是一种形式, 只是用这种形式表达出的概念可以被某些编译器优化
-- [Golang 是否优化尾递归的验证](https://zhuanlan.zhihu.com/p/212125255)
\ No newline at end of file
+## Reference
+
+- [golang 是否优化尾递归的验证](https://zhuanlan.zhihu.com/p/212125255)
diff --git a/blog/pages/posts/2022/todo~mac.md b/blog/pages/posts/2022/todo~mac.md
deleted file mode 100644
index 0661faa9..00000000
--- a/blog/pages/posts/2022/todo~mac.md
+++ /dev/null
@@ -1,142 +0,0 @@
----
-article: false
-title: System Note
-description: macOS 使用过程中的一些经验、技巧、笔记
-date: 2022-02-26
-tag:
- - Mac
----
-
-/bin/launchctl setenv MTL_HUD_ENABLED 1
-
-## 激活后必被操作
-
-- 安装 git
-- 安装 [homebrew](2022-06-01-installation-manual.md#homebrew)
-- 安装 [oh-my-zsh](2022-06-01-installation-manual.md#oh-my-zsh)
-
-## 工具
-
-### 软件
-
-#### 必备
-
-- Jetbrains Tools
- - Goland
- - Webstorm
-- Karabiner
-- Warp 终端
-- ClashX pro 代理
-- AltTab 程序切换
-- Bartender 4 顶栏整理
-- Chrome
-- INNA
-- microsoft todo
-- iStat Menus
-- Mos
-- Obs
-- obsidian
-- [arc]()
-- Slidepad
-- Postman
-- pphub
-- soundsource
-- uncltuuer
-- VSCode
-
-#### 按需
-
-- spdpd.net
-- 钉钉
-- 腾讯会议
-- 网易云
-- 微信
-- 微信开发者工具
-- 向日葵
-- RustDesk
- - ID 服务器 bt.alomerry.com:21116
- - 中继服务器 bt.alomerry.com:21117
-- AppCleaner
-- bark
-- biliup-app
-- compressor
-- dash
-- downie 4
-- fcp
-- forklift
-- keycastr
-- loopback
-- medis
-- microsoft remote desktop
-- moonlight
-- navicat premium
-- qq
-- studio 3t
-- sync folders pro
-- tencent lemon
-- tunnelblick
-- wps
-- qv2ray
-
-- Noizio[^Noizio]
-- Dash
-- Karabiner
-- KeyCastr
-- Snap
-
-- Manico
-
-
-
-### 硬件
-
-**鼠标**
-
-G302
-
-本来是打算买一个无线(蓝牙)的鼠标,结果看很多人安利 G302,结果买回来发现是使用无线接收器的方式,无奈使用了一段时间。在挑选鼠标时我去翻阅了很多攻略,知乎啦,v2ex 上,看到很多人反馈逻辑的鼠标会有漂移,在我使用 G302 的大概半年里,我似乎从来没遇到。G302 鼠标大小比较小,适合小手或者适中的手,大手慎入,握姿应该也只能选择趴握。带两个侧键,中规中矩,但是最大的痛点任然是需要接收器,其次是 USB 的接收器(虽然好像也没有哪个无线鼠标的接收器是 typec 的),所以后面我就开始物色新的蓝牙鼠标。
-
-G604
-
-最近刚使用几天,不得不说,G604 是真的大,我本来以为 G502 已经很大了,结果握住 G604 才发现是真的大。至于很多人说的 G604 太重,换轻电池重心会漂移的问题,毕竟我是一个握了 G502 五六年的玩家了,真不怕 G604 加标准电池这点重量。G604 的侧键是真的多,配合逻辑的 G 开关和 Manico 效率真的提高了一个档次。其它的后面再使用一段时间再追加心得吧。
-
-最开始用
-
-## 软件
-
-### homebrew
-
-
-
-### Karabiner
-
-change Caplock to Ctrl+Alt+Option+Shift
-
-## aws
-
-移除 root 不能登录
-
-```sh
-no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="echo 'Please login as the
- user \"ubuntu\" rather than the user \"root\".';echo;sleep 10;exit 142" ssh-rsa xxxx= id_rsa
-```
-
-- sshd_config
- - PermitRootLogin prohibit-password
- - PubkeyAuthentication
-- /etc/init.d/ssh restart
-
-## Reference
-
-- [^Typora](https://typora.io/)
-- [^Noizio](https://noiz.io/)
-
-
-brew install dust https://github.com/bootandy/dust
-
-brew install duf https://github.com/muesli/duf
-
-## macos14 清除 dns
-
-sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
-
diff --git a/blog/pages/posts/2022/vps-and-home-lab.md b/blog/pages/posts/2022/vps-and-home-lab.md
index 3ba8fc5b..10172d05 100644
--- a/blog/pages/posts/2022/vps-and-home-lab.md
+++ b/blog/pages/posts/2022/vps-and-home-lab.md
@@ -1,11 +1,10 @@
---
-date: 2022-02-26T16:00:00.000+00:00
+date: 2022-02-23T16:00:00.000+00:00
title: cvm、vps 和 homelab 手册
lang: zh
duration: 10min
-desc: 记录家庭服务器和云服务器的服务笔记,用于迁移或者恢复
+desc: 记录家庭服务器和云服务器的服务笔记,用于迁移或者恢复,macOS 使用过程中的一些经验、技巧、笔记
place: 上海
-tocAlwaysOn: true
---
[[toc]]
@@ -156,7 +155,142 @@ apt update && apt install nginx -y
[^rename_ubuntu_usb_drive]: [Rename ubuntu usb drive](https://help.ubuntu.com/community/RenameUSBDrive)
+## 设备
+
+mac
+/bin/launchctl setenv MTL_HUD_ENABLED 1
+
+## 激活后必被操作
+
+- 安装 git
+- 安装 [homebrew](2022-06-01-installation-manual.md#homebrew)
+- 安装 [oh-my-zsh](2022-06-01-installation-manual.md#oh-my-zsh)
+
+## 工具
+
+### 软件
+
+#### 必备
+
+- Jetbrains Tools
+ - Goland
+ - Webstorm
+- Karabiner
+- Warp 终端
+- ClashX pro 代理
+- AltTab 程序切换
+- Bartender 4 顶栏整理
+- Chrome
+- INNA
+- microsoft todo
+- iStat Menus
+- Mos
+- Obs
+- obsidian
+- [arc]()
+- Slidepad
+- Postman
+- pphub
+- soundsource
+- uncltuuer
+- VSCode
+
+#### 按需
+
+- spdpd.net
+- 钉钉
+- 腾讯会议
+- 网易云
+- 微信
+- 微信开发者工具
+- 向日葵
+- RustDesk
+ - ID 服务器 bt.alomerry.com:21116
+ - 中继服务器 bt.alomerry.com:21117
+- AppCleaner
+- bark
+- biliup-app
+- compressor
+- dash
+- downie 4
+- fcp
+- forklift
+- keycastr
+- loopback
+- medis
+- microsoft remote desktop
+- moonlight
+- navicat premium
+- qq
+- studio 3t
+- sync folders pro
+- tencent lemon
+- tunnelblick
+- wps
+- qv2ray
+
+- Noizio[^Noizio]
+- Dash
+- Karabiner
+- KeyCastr
+- Snap
+
+- Manico
+
+
+
+### 硬件
+
+**鼠标**
+
+G302
+
+本来是打算买一个无线(蓝牙)的鼠标,结果看很多人安利 G302,结果买回来发现是使用无线接收器的方式,无奈使用了一段时间。在挑选鼠标时我去翻阅了很多攻略,知乎啦,v2ex 上,看到很多人反馈逻辑的鼠标会有漂移,在我使用 G302 的大概半年里,我似乎从来没遇到。G302 鼠标大小比较小,适合小手或者适中的手,大手慎入,握姿应该也只能选择趴握。带两个侧键,中规中矩,但是最大的痛点任然是需要接收器,其次是 USB 的接收器(虽然好像也没有哪个无线鼠标的接收器是 typec 的),所以后面我就开始物色新的蓝牙鼠标。
+
+G604
+
+最近刚使用几天,不得不说,G604 是真的大,我本来以为 G502 已经很大了,结果握住 G604 才发现是真的大。至于很多人说的 G604 太重,换轻电池重心会漂移的问题,毕竟我是一个握了 G502 五六年的玩家了,真不怕 G604 加标准电池这点重量。G604 的侧键是真的多,配合逻辑的 G 开关和 Manico 效率真的提高了一个档次。其它的后面再使用一段时间再追加心得吧。
+
+最开始用
+
+## 软件
+
+### homebrew
+
+
+
+### Karabiner
+
+change Caplock to Ctrl+Alt+Option+Shift
+
+## aws
+
+移除 root 不能登录
+
+```sh
+no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="echo 'Please login as the
+ user \"ubuntu\" rather than the user \"root\".';echo;sleep 10;exit 142" ssh-rsa xxxx= id_rsa
+```
+
+- sshd_config
+ - PermitRootLogin prohibit-password
+ - PubkeyAuthentication
+- /etc/init.d/ssh restart
+
+## Reference
+
+- [^Typora](https://typora.io/)
+- [^Noizio](https://noiz.io/)
+
+
+brew install dust https://github.com/bootandy/dust
+
+brew install duf https://github.com/muesli/duf
+
+## macos14 清除 dns
+
+sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
## 一键脚本
diff --git a/blog/pages/posts/2023/[cloud-native]-tekton&argocd.md b/blog/pages/posts/2023/[cloud-native]-tekton&argocd.md
index 9bb73753..4d0ef326 100644
--- a/blog/pages/posts/2023/[cloud-native]-tekton&argocd.md
+++ b/blog/pages/posts/2023/[cloud-native]-tekton&argocd.md
@@ -3,7 +3,6 @@ date: 2023-12-22T16:00:00.000+00:00
title: Tekton Pipeline
lang: zh
duration: 10min
-tocAlwaysOn: true
---
- 安装 k8s
@@ -20,7 +19,7 @@ tocAlwaysOn: true
- https://juejin.cn/post/7142758521988186143
-### argocd
+### argocd
- https://devops-blog.virtualtech.jp/entry/20220509/1652081784
- https://www.cnblogs.com/xunweidezui/p/17180195.html
@@ -42,4 +41,4 @@ tocAlwaysOn: true
### frps
- https://blog.lautumn.cn/linux/2022/02/16/proxy-frp
-- https://zhuanlan.zhihu.com/p/371234742
\ No newline at end of file
+- https://zhuanlan.zhihu.com/p/371234742
diff --git a/blog/pages/posts/2022/[share]-apps-intro.md b/blog/pages/posts/2023/[share]-apps-intro.md
similarity index 99%
rename from blog/pages/posts/2022/[share]-apps-intro.md
rename to blog/pages/posts/2023/[share]-apps-intro.md
index 679f8b5e..778ef787 100644
--- a/blog/pages/posts/2022/[share]-apps-intro.md
+++ b/blog/pages/posts/2023/[share]-apps-intro.md
@@ -3,8 +3,7 @@ date: 2020-04-26T16:00:00.000+00:00
title: 实用/特殊应用介绍
lang: zh
duration: 10min
-type: talk+note
-tocAlwaysOn: true
+type: posts
---
[[toc]]
diff --git a/blog/pnpm-lock.yaml b/blog/pnpm-lock.yaml
index dd0edd93..a95e3dfd 100644
--- a/blog/pnpm-lock.yaml
+++ b/blog/pnpm-lock.yaml
@@ -34,6 +34,9 @@ devDependencies:
'@iconify/json':
specifier: ^2.2.180
version: 2.2.182
+ '@mdit/plugin-tasklist':
+ specifier: ^0.8.0
+ version: 0.8.0(markdown-it@14.0.0)
'@octokit/rest':
specifier: ^20.0.2
version: 20.0.2
@@ -964,6 +967,19 @@ packages:
resolution: {integrity: sha512-1BeEB+DbtmDMUAfvbNUj5Hso8cSl2sBVK2iTyOMAqhfDVLdh+/9+D0JmQHaCeUk/vuJoMhOwbweZvh55wHxm4w==}
dev: true
+ /@mdit/plugin-tasklist@0.8.0(markdown-it@14.0.0):
+ resolution: {integrity: sha512-vfOTZdXIL/jk/ConUqCODI5WuqgB9qiBGc+wIa7UMhe73KcpwFeGFJVQZm9AvjhXDDYqznJxSMVRP/TN7TxVVw==}
+ engines: {node: '>= 18'}
+ peerDependencies:
+ markdown-it: ^14.0.0
+ peerDependenciesMeta:
+ markdown-it:
+ optional: true
+ dependencies:
+ '@types/markdown-it': 13.0.7
+ markdown-it: 14.0.0
+ dev: true
+
/@nodelib/fs.scandir@2.1.5:
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
diff --git a/blog/src/components/WrapperPost.vue b/blog/src/components/WrapperPost.vue
index 047c18a6..c23b8918 100644
--- a/blog/src/components/WrapperPost.vue
+++ b/blog/src/components/WrapperPost.vue
@@ -135,7 +135,7 @@ onMounted(() => {
diff --git a/blog/src/styles/prose.css b/blog/src/styles/prose.css
index bc62578f..87959859 100644
--- a/blog/src/styles/prose.css
+++ b/blog/src/styles/prose.css
@@ -133,7 +133,7 @@
margin-top: 0.8571429em;
}
.prose code {
- color: #3e3b3be8;
+ color: #4a0088db;
font-weight: 550;
font-size: 0.800em;
diff --git a/blog/vite.config.ts b/blog/vite.config.ts
index d7d23461..d4dfb664 100644
--- a/blog/vite.config.ts
+++ b/blog/vite.config.ts
@@ -20,6 +20,7 @@ import SVG from "vite-svg-loader";
// @ts-expect-error missing types
import { full as emojiPlugin } from "markdown-it-emoji";
import MarkdownItShiki from "@shikijs/markdown-it";
+import { tasklist } from "@mdit/plugin-tasklist";
import { rendererRich, transformerTwoslash } from "@shikijs/twoslash";
// @ts-expect-error missing types
@@ -44,9 +45,7 @@ const promises: Promise[] = [];
export default defineConfig({
resolve: {
- alias: [
- { find: "~/", replacement: `${resolve(__dirname, "src")}/` },
- ],
+ alias: [{ find: "~/", replacement: `${resolve(__dirname, "src")}/` }],
},
optimizeDeps: {
include: [
@@ -139,6 +138,7 @@ export default defineConfig({
md.use(preWrapperPlugin);
md.use(footnote);
md.use(sup);
+ md.use(tasklist);
md.use(sub);
md.use(emojiPlugin);