今天查了一下,自己的博客已经写了有五百多篇了,这里面的文章,大部分以技术内容为主,兼谈一些商业、文化上的看法,历时将近六年的积累。写博最初的目的,是想把自己碰到的技术细节记下来作为资料,以方便日后查阅,后来也陆续地写了一些零散的随笔。

自己的日常工作是搞开发,时间也蛮紧张的,业余时间也十分有限,那我是如何在繁忙的工作中,抽时间整理自己的观点写成博文呢?这篇就简单讲一下我自己写博客过程中素材收集、整理、加工的步骤与方法,并且简单说一下 org2blog 工具的使用方法。

第一步也是最重要的一步:如何积累写作素材

素材简而言之,就是你想说什么、你想写什么内容,类似于记者想要报道新闻时的选题。

<p>
  素材的积累,没有什么捷径可走。平时看到什么感兴趣的,记下来;平时想到啥点子,记下来:<a href="http://cn.waterlin.org/#fn.1">《点子的形成》</a>详细论述了这一环节的方法论。在这里,对于搞技术的,素材积累还有一个特定的环境,即你碰到一个需要解决的问题,在尝试解决过程中,你的解决思路与想法、查阅的资料、与别人的讨论,均可以作为素材记录下来。
</p>

<p>
  素材的搜集,需要有一个好工具。传统的笔记方法,就是使用纸和笔,对文件进行标记,对一些想法记录下来。但是纸质的东西,容易丢失和遗忘,也不方便事后整理。就我个人来说,我喜欢用 Emacs 的 <a href="http://blog.waterlin.org/articles/emacs-org-mode-subscripter-setting.html">Org Mode</a> 来搜集素材,新开一个主题,然后把所有找到的内容、材料往里一扔,不时的回去看一眼,提醒自己是否有遗忘、有没有新发现、有没有激发新的想法。对于技术内容写作者来说,使用一个电子化的素材整理工具,对工作效率会有大大的提高,尤其是在需要插入示例代码、数据、图表的时候,电子化的资料整理方式显得尤其方便。
</p></p>

第二步:如何让素材快速写成文并发布出去

积累素材到想法成熟的时候,就要开始进行文章编写。这个时候,我就喜欢用 Emacs 编辑器,谁叫这个是神用的编辑器呢?

<p>
  最早以前我是先在 org mode 里把文章修改好,然后用命令 C-u M-x org-export-region-as-html 把这一段 org 语法标记的内容发布成 html 内容,然后通过其它的<a href="http://blog.waterlin.org/articles/comparison-about-blog-publishing-tools.html">博客发布工具</a>如 Zoudry 等发布到 WordPress 系统上。
</p>

<p>
  可是,这样有几个问题:
</p>

<ol>
  <li>
    在拷贝内容到 Zoundry 里时,无法同步拷贝图片,图片依然需要手动贴过去。我也有尝试过把图片放到一台图片服务器上,然后再在 org 文件里链接这个图片服务器的图片地址,可是试了几次后,就果断放弃了,这样实在是太麻烦。
  </li>
  <li>
    该操作依然略显麻烦,并且还有 Zoundry 与 org 文件信息同步的问题,其它修改操作也比较麻烦,也不方便从 org 里追踪已经发布的信息,比如该博客地址、标签等。
  </li>
</ol>

<p>
  所以,我希望是在 Org 里直接编辑好,一键发布,不用再使用额外的工具了。
</p>

<p>
  终于,我找到了我理想的发布工具。用 <a href="https://github.com/punchagan/org2blog/">org2blog</a> 的 subtree 发布功能,刚好可以实现我的上述需求,从 <a href="http://blog.waterlin.org/articles/tag/emacs">Emacs</a> 里维护 <a href="http://blog.waterlin.org/articles/tag/wordpress">WordPress</a> 博客。
</p>

<p>
  org2blog 针对 Org 全文发布的几个简单命令:
</p>

<ul>
  <li>
    <b>M-x org2blog/wp-post-buffer</b> ,发布当前 Org 文件为博客草稿,这个步骤还是很有必要的,发布成草稿后,再仔细检查一下你的文章写得有没有问题。
  </li>
  <li>
    <b>C-u M-x org2blog/wp-post-buffer</b> ,把整篇文章发布成博客,即上一条命令是预览,而这条命令是正式发布。
  </li>
</ul>

<p>
  如果只想把当前 Org 里的子条目(subtree)发布成博客,则可以使用下述命令:
</p>

<ul>
  <li>
    <b>M-x org2blog/wp-post-subtree</b> 发布该条目成草稿,包括该条目下面的所有子条目。
  </li>
  <li>
    <b>C-u M-x org2blog/wp-post-subtree</b> 把该条目发布成正式文章,包括该条目下面的所有子条目。
  </li>
  <li>
    当需要修改 WordPress 上已发布的文章时,直接编译该 Org 条目,然后重新使用上面的命令发布即可。
  </li>
</ul>

<p>
  如果需要添加一个 tags 给这个博文,则需要在这个 subtree 上添加 tags,同时可以在 drawer 里设置好其它属性。
</p>

<p>
  我喜欢把单个的文章都放到同一个 org 文件里来发布,每次只需要发布一条 * 的顶级条目即可。这样,避免在很多情况下,使用单个文件来存放一个文章,使得目录里的内容过于松散而造成不好管理的问题。
</p>

<p>
  另外,当写了很多的笔记与文章后,这个文件就开始会变得很宠大了。这个时候,我就会再新建一个文件,又重零开始发布文章。也就是说,定期把过去写完的文件存档,修改为只读模式,这样就方便整理数据,避免不经意间的错误修改。
</p>

<p>
  使用 org2blog 来写博客的好处就是,Wordpress 上有一个备份,你的本地电脑里也有一份原始数据的备份,并且这份数据是文本数据,你可以方便地转换成任何格式(如 PDF)。通过这种万能方式,除了可以很方便地保存数据,还可以用这些数据来进行再生产。
</p>

<p>
  额外提示一下:在 M-x org2blog/wp-post-subtree 时,会登陆一个博客,当你写好了另一篇博客文章并需要发布到另外一个博客时,默认情况下,依然会是前一个博客的登陆状态。这个时候,你可以使用 M-x org2blog/wp-logout 来注销之前的登陆状态。
</p></p>

第三步(也是永远不会结束的一步),定期回顾

不管你使用何种方法整理素材,使用何种工具来发布博客,有一件事情,你一定要经常做的:定期回顾你已经写好的文章。你定期抽一点时间,来翻阅一下你之前写的文章,会得到很多的灵感,你会觉得某一些问题,原本应该讲得更清楚更透彻一些,有一些问题需要再补充一下最新的进展,甚至于有一些内容你可以形成一个系列文章,等等。

<p>
  学无止境,如果能把你学到的东西完整、清晰的表述出来,那将是掌握了该内容的最佳表现。一个内容,如果你连说都说不清楚,你敢说你弄懂了吗?所以,尽量尝试着严谨地表达你的观点,这是一个让自己学习的过程,也是一个与别人分享的过程。
</p>