一 理想的写作环境:Git+Github+Markdown+Jekyll
理想的写作环境,受各类干扰小、清理废话及版本管理容易。曾花费较长时间寻找,最后还是找到了。
2010年开始,采取Git+Github+Markdown+Jekyll,完成一些作品。暖色调灯光,黑暗的背景色,全屏的写作状态,很有氛围。
这种搭配,符合心理学原理,背后有着相应理念。分享如下:
Git
让人不再担心写废,想到哪里,写到哪里。
背后理念
Github
让人不再担心备份与远程协作,一切提交,均有记录。
补充介绍
购买一个Github的私人账户,用于托管个人"不适合公开"的项目。 零散的思考,随时写在Jekyll的_drafts目录下。当思考成熟,予以发布。较系统的思考,尤其需要远程协作,则参考Github中成功的开源图书项目,单独整理为Jekyll的子目录或独立项目。
背后理念
Markdown
不再忧虑排版,专注写作。
背后理念
Jekyll
Octopress出来之后,也向人推荐。但自己不用。之所以用Jekyll,是希望专注于写作而非版式、图片等。如果用Octopress,又回归老路了。 Octopress有两点细节不能接受:
- 无法支持Github在线编辑;
- 分源码与生成两个分支,违背简洁原则。
背后理念
相关参考
二 用Jekyll写技术博客
缘由
曾经也有过写技术博客的冲动。申请过bloger,msn space。但总觉得这些blog如果写一些日常的感受还可以,但总是让人不能专注于写作,很小的编辑框,还要时刻注意换行,稍不注意,显示的格式就不对了。
老外写书已经采用编程和项目的方式了, The Pragmatic Bookshelf 的书都是这么写出来的,通过git做版本管理,通过Rake执行图书排版,甚至通过hudson进行每次提交进行排版。
Jekyll时ruby的一个项目。允许通过git进行版本管理,托管在github上作为一个项目。并通过静态页面进行访问。Tom是Jekyll的作者,同时也是github的创始人,这篇文章中Tom介绍了开发jekyll的初衷。
使用
更详细的使用步骤参见这里
写post
$ rake post title="Jekyll-Intrduction"
本地preview
在_post目录中完成编辑,使用vim 本地启动server,进行预览,如果在预览的过程中又对文件进行了编辑,会动态生成新的网页。
$ rake preview
提交到github
将文章提交到github上。如果使用了github提供的个人主页服务,则提交之后即能够访问。首先要创建一个 “用户名.github.com”的仓库.具体步骤参见
$ git add .
$ git commit
$ git push
通过ftp自动发布
如果不是使用github提供的个人主页服务,使用自己托管的空间,通过ftp上传,可以通过下面的方式完成网站的部署
_deploy.sh
function data_upload_lftp() {
HOST="174.XXX.XXX.XXX"
USER=""
PASS=""
LCD="_site"
RCD="public_html/"
lftp -c "
set ssl:verify-certificate no
set ftp:list-options -a;
open ftp://$USER:$PASS@$HOST;
lcd $LCD;
cd $RCD;
mirror --reverse \
--delete \
--verbose \
--exclude-glob a-dir-to-exclude/ \
--exclude-glob a-file-to-exclude \
--exclude-glob a-file-group-to-exclude* \
--exclude-glob other-files-to-esclude"
}
data_upload_lftp
然后执行
$ bash _deploy.sh
就完成blog的发布 可以把发布脚本写在git的post commit hook里面,但是我更习惯于多次提交,一次push,一次deploy的节奏。
markdown格式类似于wiki格式又不同于wiki编写,比wiki的语法更简单,也够用了。 非常适合在vim中进行编辑,可以将注意力集中在写作上,不再分散精力。文章托管在github上,如果是重要一点的内容,可以申请付费的repo,托管私有项目。通过git进行版本管理,不再担心写错,想到哪,写到哪。也方便做备份。