Why#
我这人有个毛病,很难与 必定混沌的现实 和谐相处;
过于习惯 滥用……所谓的「断舍离」。
简单点说,精神洁癖。
只要我关注某个话题,我必然会产生各种各样的想法。
如果我无动于衷、转头就忘掉,那还好;一旦我试图 于某处 记录下这些想法——
持续的更新 意味着 规模的扩大,意味着 不断的熵增,意味着 混乱与无序。
这是不以人的意志为转移的宇宙规律、自然法则;无论你用何种、多高级、再优秀的 知识归纳 方法论,都无法解决这个问题。
这是 热力学第二定律 确定的:熵增(信息熵也是熵)过程每时每刻都成立,永不停止,无法逆转。
万一你 觉得 你可以做到——恭喜你,你发明了 第二类永动机。
拓展到编程方面,这就是目前被越来越多人所认同的一条行业规律:
功能是 100% 的资产,但源码是 100% 的债务。
你写的每一行代码都是屎山,每一行。当然,我也是;这世上的任何一个人都是。 软件开发的过程是一个博弈,或者通俗点说,赛跑 过程。
你要做的就是在 项目必然变成屎山的过程 中 尽可能快 地实现你需要的功能(需求)。
如果你跑赢了,它(最终成果)就是你的产品;
如果你跑输了——很正常,想必大家手里都攒了不少这种东西。
当然,合理的代码规范和 Code Review 仍然是相当有意义的。
它们至少减缓了项目变成屎山的速度,给出更多操作空间,让你在赛跑过程中更有余裕。
回到写作方面,前面说到,信息的堆积必定导致混乱与无序。
而我由于个人原因很难容忍这种混乱与无序,我往往会选择一种简单粗暴的解决方法。
用高级点的说法叫「归档」(以备日后查阅);其实就是封存起来,丢到一边吃灰。
很简单的道理:眼不见心不烦。
说出来你可能不信,我写博客差不多有十年了。
但现在(本站)什么样子,大家有目共睹。
对于(博客)网站本身也是,不说每年,基本隔个两年就要重建一次:
换风格、换主题、换框架、换技术栈。
而且基本上每次重新建立后,我回过头读自己以前的文章都觉得不忍卒睹,至少也是「有很大的提升空间」。
因此我会把以前已经发布的文章和未发布的存稿全都一股脑丢进 inbox,伺机再议。
与其说是「重建」,不如说是「重置」。
Which#
动态还是静态#
当然是静态。
只说个人博客,在线编辑 / 即时更新 绝对是伪需求。
如果你真的那么在乎文章发布的实时性,那就更应该 提前 做好编辑 & 发布的准备工作,而不是到点了才上赶着临时抱佛脚。
动态博客的复杂度是降不下去的。环节越多,破绽必然越多,安全性和稳定性一定越低。
2023 年初 阮一峰的博客被黑 沦为笑柄很多人都知道吧。引以为戒干嘛,接着笑啊。
而静态博客就可以把整站内容方便快捷、干净利落地托管给 CDN 服务商等 PaaS 平台,放心坐享成熟的配套服务。
用什么框架#
我反正选择 Hugo,理由:开源免费、性能优秀、功能强大、生态丰富、更新活跃。
我确定这不是路径依赖。众所周知,我是一个将「生命在于运动 」奉为圭臬的人。
一线有什么最新技术涌现,我是非常乐意尝鲜的。
相当炫酷的 Astro 确实很有意思,但那些花里胡哨的功能我的 博客 真的用不到,就用奥卡姆剃刀(如非必要,勿增实体)剃掉了。
基于个人美学,我还是比较希望自己的博客有更纯粹的写作和阅读体验。
Hugo extended or not#
可能很多刚开始上手 Hugo 的人都会对迷惑于:普通的 hugo
和 hugo-extended
之间有什么区别?我应该选用哪一个?
一个简单粗暴的解决方案是 无脑选择功能(兼容性)更强的 extended 版,只要你用来运行 Hugo 的设备没有性能瓶颈问题*。
* 存在性能问题:没开玩笑,这种情况是有可能发生的。
比如我的 Raspberry Pi 3B+,我明确记得数年前 Hugo 官方的构建链是不含 arm 架构在内的,我想在树莓派上跑最新版的 Hugo 必须自行编译。
然后我惊讶地发现 3B+ 跑 Hugo 的 extended 版居然蛮吃力的。当然我机子的散热不太行,可能也占了很大因素。
如果你和我一样是喜欢追根究底的好奇宝宝,以下是结论。
- 「唯一」的 主要 功能区别是——是否支持 SASS/SCSS(显然仅 extended 支持)。
- 其实还有 图像处理——主要是编码 webp;解码(读取)webp 所有版本都支持。
- 而其他的,包括 PostCSS 在内的一堆功能,常规版都支持(
AI 可能会有不同看法)。
即:extended 版是常规版的超集。
应该没多少人是不用主题或者自己写主题的吧?
那么,是否需要 extended 版 其实取决于 你选用的主题 的依赖。
甚至哪怕你选择的主题用了 SASS/SCSS,但如果该主题提前把编译好的样式加进了 /resources
目录,你仍然可以运行常规版来使用这个主题。
我个人还是建议:只要你用的机器没拉到带 Hugo 都费劲,无脑上 extended 总归没错。
用什么主题#
曾经一度被 Dejavu Moe 种草过 Congo,属实优雅。
当时没有立刻换是因为实在是太素了,在功能性上并不是很吸引我。
后来 Blowfish 出现,一直有在关注。
但那时候我特别反感的一点是:Blowfish 明明是 Congo 的 fork,但在 README 和文档中只字不提,然后还开了捐助通道,真的挺那啥的。
在这个阶段我还是倾向于 Congo 的。
直到现在,Blowfish 在 文档 中声明了:
该主题是 Congo 的一个分支,并进行了 大量 扩展。
算是勉强洗白。
并且 Congo 的更新频率(2024.4.17 v2.8.2)确实不如 Blowfish(2024 8.10 v2.75.0)。
本次重置博客最终决定选用 Blowfish。
How#
安装 Hugo#
人生苦短,我用 Scoop:
scoop install hugo-extended
新建项目#
基本操作,没啥好说的:
hugo new site new-blog
cd new-blog
git init
安装 Blowfish 主题#
具体细节可以参考《Blowfish 文档 - 安装和配置》。
我电脑上有 Go,所以我选择依托于 Go 的包管理器实现的 Hugo Modules 来安装主题。
如果你更喜欢通过 Git 子模块安装主题,也没什么问题。
唯一需要注意的一点区别:
- Hugo Modules 方式:通过读取配置文件里
module
表中的信息 依次加载 声明的依赖模块,无需其他额外配置。 - Git Submodule 方式:先用 Git 将主题仓库 clone 到本地的
/themes
目录下,再通过配置文件里的theme
字段 明确指定 使用某个主题。
配置 Blowfish 主题#
详见《Blowfish 文档 - 入门指南》。
至于我的私心偏好会另开一篇文章。