如何编写一篇技术博客

如何准备、如何编写与如何发布

我在大一的时候就在博客园和 CSDN 写博客,主要内容是平时上课学的 C 语言算法和一些简单的入门教程。后来我停止了一段时间,因为我意识到自己在生产毫无价值的垃圾。

写一篇合格的博客不是一件容易的事情,借本文分享一下自己多年写博客的一些经验。

前期准备

发掘有价值的话题

什么是有价值的话题?

一件事的价值本身就因人而异,在技术领域价值的产生是因为有需求,所以一般而言,需求越大,越有价值。但在有一定的需求的情况下,越是困难的工作越有价值,因为困难的工作本身也意味着更少的人能做,在供需关系的影响下,会推高其价值。

简而言之,需求越大,难度越大,越有价值

同时,有一些人可能希望博客拥有一定盈利能力,为自己贡献一部分收入,毕竟自己花了非常多的时间去学习和分享这些资料。

有意思的是,在技术领域,需求量最大的一般是入门水平的技术博客。因为有非常多的人学习计算机,他们中的大部分甚至将来不会从事相关的工作。大部分时候,做入门水平的内容,不仅轻松而且还赚钱,这种现象造就了 CSDN 这样离谱的网站。

我知道很多人都鄙视这些大量灌水的入门水平博客,我也不喜欢,但是至少人家是真的懂流量。

话说回来,我们认为,优秀的博客必然是具有一定原创性的,最好还是具有一定深度的,但是假如你的水平真的有限,那么这两种类型的博客也是可以考虑的:

  • 总结归纳别人的资料(但是要附上所有的参考链接)
  • 翻译英语社区的内容(要注明为翻译类文章,且附上原文链接)

建立自己的知识库

博客难产的一个重要原因就是肚子里没有墨水,这个不一定是指你不懂这个技术,也可能是你懂这个技术,但是缺乏系统性阐述的资料。

我们每一个人每天都在不停接收各种非常碎片化的信息,其中的一些可能是鲜为人知的信息,它们可能是具有一定价值的,但是又不足以形成一篇完整的文章。这个时候最好的策略就是存储它们,当有一天,你需要为你的博客准备素材的时候,就不需要到处回忆和寻找了,只需要从你的个人知识库里面复制粘贴就好了。

常见的知识库有比如国内的语雀,还有国外的 Notion,相对来说,我个人使用 Notion 更多一些。

成为持续思考的人

不会自己独立思考的人是写不出博客的,就算写也只能写出千篇一律的文章。编写原创性的博客的关键要点就是把你自己转化为一个能持续思考的人。

但是,思考到底是什么呢?什么叫持续思考?

在我看来,思考是一种状态,意味着你大部分生物能量不再用于其他活动,全部为大脑使用。只要你活着,大脑一定是在运转的,所以如果仅仅是保持大脑的运转是不足以被称之为“思考”的。

每当你看到一个东西,听到一个东西,触碰到一个东西,你能够立马就进入这样的状态,就可以被称之为“持续思考”了。

思考是一种习惯,是可以培养的。假如你现在还做不到,那么可以尝试去做,并且保持下去,可能有一天你就突然反应过来自己成为了这样的人。

编写博客

设计合理的排版

这可能是我最想吐槽的一点,因为很多 CSDN 的文章,甚至就是生的文本,完全没有排版可言,有些内容其实还可以的,实在是可惜。

在我看来,Markdown、LaTex 是每一个程序员的必修课,这世界上没有不写博客的程序员,每一个我曾经的同学,他们都写过博客。

在必要的时候,也可以使用 Markdown 引擎的 HTML 功能来丰富文章的排版。还有,不要忘记 TOC,主要是针对自建网站的同学,大部分博客管理网站都会自动生成。

学会编写总结

新手的博客往往都是没有总结的,总结是一个非常好的习惯,不仅仅是在写博客的时候,平时你在和其他人交流工作的时候也可以尝试使用总结,可以更好地传达你需要表达的意思。

总结往往提醒别人,接下来的事情是重点。这样别人就会用更高的注意力去接收信息。

有一个误区是,很多人认为总结只是复制粘贴文章中的关键信息,但实际上,总结也可以帮助你在完成最终的博客前对文章脉络做一个梳理,帮助你思考文章的结构是否合理,有时候,总结可能还会促使你回去重新调整文章的结构,以增强文章的可读性。

标注参考资料

新手的博客往往是没有参考资料的,但是这可能是你人生中非常重要的一课:

你得要学会尊重别人的成果,这样别人才会尊重你的成果。

有一个问题,是否需要严格按照论文的形式写博客?

对于这个问题,如果你对自己的要求足够高,那么可以尝试严格使用论文格式去编写博客,但是很多博客并不是什么非常正式的内容,就像这篇文章,可能只是我临时起意,写下来的一些想法。所以我的主张是,你能真实地标注出你所引用的资料,就已经赢过大部分的人了。

发布博客

博客框架和主题并不重要

我在学生时代玩过不少的博客框架和主题,每一次升级那些主题的新版本,总是要花费我大量的时间去校对配置项,正是因为有了太多边边角角的东西,导致我忘记了最根本的事情:自己是来写博客的。

有时候,你可能还会使用一些特有的 Markdown 语法,这真的很糟糕,因为当你要去迁移到别的框架或者主题的时候,你就要回去检查以前博客的内容。在搭建技术博客的时候,要规避使用主题特有的一些功能。因为你不知道自己未来会使用怎么样的框架和主题。

但是,这并不代表我们不需要挑选博客框架和主题。

  • 我使用 Hugo 框架是因为我喜欢它有优秀的性能,可以非常快速渲染大量博客。

  • 我使用 Stack 主题是因为它提供了开箱即用的模板,并且高度自动化。

    Hugo Theme Stack Starter Template

不要泄露自己的隐私

在一些博客框架和主题里面,可能需要配置一些密钥等敏感信息,才能使用,比如一些评论系统。有些人会直接把这个信息提交到公共仓库里面,这样有安全风险。

我的建议是把博客存储仓库和部署仓库分离,并且分离之后把存储仓库设置为私密,不过部署仓库必须设置为公开,这样才可以挂载到 Github Pages 上。

假如你使用了 Github Actions 来自动化部署,那么可能还需要权限才能向私有仓库提交代码。

参考 Github 官方文档:Using secrets in GitHub Actions

先在自己的部署仓库里面创建一个 DEPLOY_KEY,记得勾选写入权限。

DEPLOY KEY

然后在自己的存储仓库里面创建一个 secrets,其值就是上面的 DEPLOY_KEY 的值:

ACTION SECRETS

然后,就可以在 Github Actions 部署的时候加上一个 DEPLOY_KEY:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
...
- name: Deploy 🚀
  uses: JamesIves/github-pages-deploy-action@v4
  with:
      repository-name: nonlinearthink/nonlinearthink.github.io
      branch: master
      ssh-key: ${{ secrets.DEPLOY_KEY }}
      folder: public
      clean: true
      single-commit: true

总结

祝大家都可以编写出优秀的博客!

使用 Hugo 构建
主题 StackJimmy 设计