Blog 搭建

安装 hexo

1
2
3
4
5
npm install hexo-cli -g
hexo init blog
cd blog
npm install
hexo server

安装依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 使用 pandoc 渲染器
npm un hexo-renderer-marked
npm i hexo-renderer-pandoc

npm un hexo-renderer-pandoc
npm i hexo-renderer-markdown-it-plus

npm install hexo-deployer-git
sudo apt-get install pandoc

npm install prism

# rss
npm install hexo-generator-feed

# butterfly
npm install badge-maker
npm install --save hexo-renderer-jade hexo-generator-feed hexo-generator-sitemap hexo-browsersync hexo-generator-archive
npm install hexo-butterfly-footer-beautify --save

# 页面加密
npm install --save hexo-blog-encrypt

卸载 hexo 默认 markdown 渲染器,安装 pandoc markdown 渲染器。hexo 默认的 markdown 渲染器不支持 Mathjax,不支持插件扩展,不支持 emoji 表情。pandoc markdown 渲染器支持 Mathjax 语法,不仅可以渲染 markdown,还支持 textile,reStructedText 和许多其他格式,仍然不支持 emoji 表情。

此外还有其他 markdown 渲染器,hexo-renderer-markdown-it 支持 Mathjax 语法(支持不太好),支持 Markdown 以及 CommonMark 语法,渲染速度比 hexo-renderer-marked 快,支持插件配置,支持标题带安全的 id 信息,支持脚注(上标,下标,下划线)。 hexo-renderer-markdown-it-plus 支持 Katex 插件并默认启用,默认启用插件列表:markdown-it-emoji,markdown-it-sub,markdown-it-sup,markdown-it-deflist,markdown-it-abbr,markdown-it-footnote,markdown-it-ins,markdown-it-mark,@iktakahiro/markdown-it-katex,markdown-it-toc-and-anchor。

这里要吐槽一下各版本的 markdown 渲染器,对 latex 语法的支持真是一言难尽,pandoc 用了一段时间发现某些特性不支持打算换一个,然后 latex 公式各种崩,😔毁灭吧。

Plugin

1
2
3
4
5
6
7
8
9
10
11
# 搜索
npm install hexo-generator-search --save

# 字数统计
npm i --save hexo-wordcount
npm install hexo-word-counter

# 添加 emoji 表情支持
npm install hexo-filter-github-emojis

npm i remark-prism

文章加密

安装 hexo-blog-encrypt 插件

1
npm install hexo-blog-encrypt

用法

基本用法

1
2
3
4
5
---
title: Hello World
date: 2016-03-30 21:18:02
password: hello
---

高级设置

1
2
3
4
5
6
7
8
---
title: Hello World
date: 2016-03-30 21:12:21
password: hello
abstract: Here's something encrypted, password is required to continue reading.
message: Hey, password is required here.
wrong_pass_message: Oh, this is an invalid password. Check and try again, please.
---
  • abstract:用于设置加密文章显示的摘要
  • message:输入密码提示
  • wrong_pass_message: 输入错误提示

如果 deploy 失败则

1
2
3
rm -rf .deploy_git
hexo g
hexo d

如何写 Blog

分类

最大的问题是一篇文章只能处于一个分类,但是我的一篇 ISP 文章既属于驱动又属于 Image,还属于算法目录,这个时候这篇文章到底该放到哪里? 为此我花了大量时间来重新分类,但是有些东西始终有交叉,我是既要又要,emm!!!为此我找到了 MECE 分类法:

标签

标签相比于分类最大的不同是,一个事物可以有多个标签。在合理使用标签之前一直觉得标签是零散的,没有体系,但实际上标签可以比分类更体系。只要标签做好管理这就是一个快速索引,且是一个网状组织,顺着这个标签找到同一片文章的其他标签顺着这个标签再找到其他文章这种网站组织形式是非常高效的。

刚才说到合理使用标签,如果不合理使用就会造成很多若关联性,例如某篇 USB 文章提到硬 circuit、提到 phy、提到 OTG、提到 Controller;但是通篇主要是讲 phy,那 circuit、otg、controller 要不要打上标签呢?打上可能会大量孤立标签,可能 otg 这个标签只会有这一篇对应的文章,而这一篇又不是专门写 otg 的,倘若这样的标签对应很多文章,每一篇都不是主要的文章那是不是在检索的时候就很抓狂呢。

标签还有另一个问题,就是当文章数量达到几百篇的时候,标签的数量本身可能非常庞大、可能存在大量标签只对应非常少的文章或者只有一篇文章的情况,或者一个标签对应几十甚至上百篇的文章。

思路

我的做法很简单,将之前的目录前部标签化,对于纠结一篇文章该放到哪个目录下这个难题,直接打上两个标签。 分类可以让你对知识体系有一个整体的认识,他一定程度上代表了你的思考过程,我甚至有过一个极端的想法去掉分类,因为我曾经真的在给文章分类上睡不着觉的,但是我也经历过了标签满天飞的的窘境,最终还是打算保留分类。

思考

我认为标签优于分类的点在于,标签可以是多维度的扁平化分类,类如我之前写的一篇关于 IMU 的文章,对于分类,你可以置于算法目录下,这个是在编程、算法这个维度下的,也纠结于放在 Sensor 目录下,IMU 属于一个传感器,这个是放到 Sensor、MCU、MPU 这些具象实物维度下的分类,他还可以放在防抖目录下,在防抖的事件里他是至关重要的一个角色,这个是放到图像、音频、网络这些学科领域分类维度下的。因此分类还是必须的,但是不必是唯一的了,也就是在你心中依然是存在分类的,而且不是一个分类,是从多维度进行分类,一篇文章同时存在不同维度的不同分类下。而这些不同维度下的目录就是标签,这样标签不会出现爆炸,也不会出现同一个标签却写了不同名字的问题,例如 RTOS 标签被打成 UCOS、RT-Thread、Zephyr 等不同形式的标签。

回过头来看,分类是劝退写文章的障碍吗,我觉得未必,标签本质上也是需要建立目录的,而且是更多维度上的分类,其实标签比分类更难,分类做不好顶多是存在一些歧义问题,文章没有挂到某些应该被挂到的目录下,因为他只能在分类中出现一次。

关于双链

...

参考文章

https://bugwz.com/2019/09/17/hexo-markdown-renderer/#1-4%E3%80%81hexo-renderer-markdown-it