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);