UPDATE
  • 2016-10-06,一语成谶“生命不息,折腾不止”,我又抛弃了octopress,新欢是hugo。

  • 2016-11-19,不多说了,因为asciidoctor,暂时离开hugo,入坑jekyll。

前几年,我玩了一段时间wordpress,也断断续续写了一些博客,但是总感觉wordpress不顺手,遂抛弃之。

一、为什么抛弃wordpress

主要原因是:

  • 帖代码麻烦

    作为一个linux用户,经常要跟命令和代码块打交道,所以我迫切希望能快速插入代码块。wordpress的处理方式中显得颇为累赘,要么需要挪动鼠标去点击visual editor中的<code>按钮,要么需要在代码块前后插入<pre lang="bash"></pre>这样的标签,原本愉悦的写作心情顿时受阻,如鲠在喉。

  • 标签、标签、太多的标签!

    虽然wordpress提供了visual editor,但是功能太弱,资深用户往往切换到plain text模式,然而这种模式最大的缺点就是<html>、<h1>这样的标签和文字参杂在一块,版面混乱,修改起来非常困难。

  • 缺乏合适的客户端

    一般用户都希望能有个客户端进行离线写作,完事后再发布到博客中,然而目前还没有一款成熟的客户端可供使用。绝大部分的用户必须登录到wordpress后台进行编辑。

总之,在wordpress中,技术类文档要想有漂亮的排版,作者必是经历一番辛苦的调整。这还不算,最郁闷的是,每一篇都要经历这个痛苦的过程,所以说,wordpress只适合于一般的文字工作者,不适合于技术人员。

为了将wordpress改造得更便利一些,我曾尝试过一些插件:

  • 编辑器插件

    尝试过TinyMCE Advanced等插件,这条路是走错了,原因有二:1、可视化编辑器跟一些代码高亮插件冲突;2、它们基于GUI,无法满足快速插入代码块和快速格式化的需求,放弃之;

  • wiki插件

    曾尝试着将wordpress改造成wiki,也找过一些wiki插件,其中BlogText效果最好,可以满足我的要求,本以为,我就这么一直用下去,安心落户于wordpress之中。

    然而随后的数据丢失事件耗尽了我的耐心。我的博客是跟别人合租的一个dreamhost虚拟空间,2011年的某天,我发现博客无法访问,联系房东后被告知,由于合租者中有人不守规矩,创建非法网站,dreamhost停用了整个空间,并删除了所有数据,WTF!辛辛苦苦写的博客全没了。虽然电脑里面还有一些原始文稿,但要重新录入wordpress,又要经历一番痛苦的折磨,索性作罢。

二、新欢:octopress

直到前段时间,我偶然间发现了markdownvim,接着发现了githubjekyll,然后是octopressherohu,我的激情又被点燃。这是一个多么神奇的组合,仿佛就是为技术控而打造的。

下面简单介绍这些组件:

  • markdown

    根据wikipedia的定义,它是一种轻量级标记语言,主要目的是为用户提供一种“易读易写的纯文本格式“编写文档,这意味着:1、帖代码非常方便;2、不需html标签就可以达成漂亮的排版。这是吸引广大技术博主的主因,因为用wordpress来写技术类文档简直就是反人类。

  • vim

    vim是一款非常优秀的编辑器,它跟声名显赫的emacs并驾齐驱。坊间流传着这样的一句话:emacs是神的编辑器,而vim是编辑器之神。足见vim的地位之高。vim的特点是编辑功能强大而灵活,扩展性强,非常适合于码农或高阶用户。近年被移植到了windows,同样在windows程序员间引起了一阵旋风,纷纷从IDE叛逃至vim阵营。用vim写markdown文档是一种享受,因为经过打磨后的vim不仅有着漂亮的外表,还有自动补齐这些便利的功能。这就解决了编辑器的问题,至此,还有什么理由抱着wordpress不放呢?

  • git

    是一个分布式版本控制系统。它linux内核开发过程中意外诞生的,现在被广泛应用于软件项目的代码管理。相对于CVS、SVN而言,git的特点是每个开发者的电脑均有整个代码仓库的镜像,大部分操作在本地执行,所以git具有速度快、对网络依赖小,不存在单点故障的优点。

  • github

    顾名思义,它就是基于git工具的远程仓库托管平台。有大量的开源项目和著名的软件公司均使用它作为项目代码的远程仓库。不过,最吸引我的则是github pages功能,它允许用户免费存放300M的静态页面,此外还提供了一个二级域名:http://<user-id>.github.com/,用户可以用它来创建一个免费的静态网站。看到这,读者可能会犯嘀咕:“都什么年代了,还要手写html网页啊?”,github当然也想到这一点,于是其创始人Tom Preton-Werner开发了jekyll这个引擎。

  • jekyll

    是一个简单的、面向博客的静态网站生成器。当用户上传(push)源文件到github仓库后,github将触发jekyll引擎,调用markdown解析器对源文件进行编译,同时结合网站模版添加统一的风格,最终生成静态页面。jekyll引擎是一项关键性技术,它将用户从繁琐的html标签中解救出来。这样,用户就可以用markdown来随心所欲的书写文档了。然而jekyll仅仅是一个引擎,用户还需要调教评论、代码高亮、Javascripts和css等组件才能打造一个称心如意的博客。于是,octopress应运而生。

  • octopress

    是一个基于jekyll的博客框架,它整合了Pinboard、Delicious、Disqus、google plus one等插件,还有一个高质量的HTML5模版。虽然octopress将自己标榜为“a blogging framework for hackers”,但普通用户也可以很容易用octopress创建一个漂亮的静态博客。

嗯,似乎很麻烦,不就是写个博客吗,只好以“生命不息,折腾不止”自勉了。

三、octopress的使用流程

octopress的使用分两部分:

3.1 本地

  1. 使用自己喜好的编辑器,遵循markdown语法来写博文;

  2. 使用rake generate,遵循octopress/jekyll的定义生成一个完整的静态网站内容;

  3. 使用gitrsync将该静态网站内容推送到位于互联网上的博客平台;

3.2 博客平台

博客平台所做的工作就非常简单了:

  1. 接收从本地推送过来的静态网站;

  2. 提供www访问服务;

也就是说博客平台只要提供一定的磁盘空间,接着开启apache或nginx就可,完全不需要考虑PHP、MySQL等组件。用户既可以选择github或heroku这些免费的平台上,也可以放在自己的VPS中。

那如何在部署octopress博客环境呢,请看欢迎你,octopress!(下)