人大脑的记忆能力是有限的。 我平时鼓捣电脑经常会遇到很多问题,解决后就忘记了,但如果下次再遇到,就又要求助于google从而浪费很多时间。网上很多知识技巧不值得去花时间记忆,建立一个知识库来保存这些技巧知识是最好的方法。TL上面大家关于如何建立自己的个人知识管理系统给出了许多方案。没有什么是最好的,只有最适合自己的。我曾经尝试过利用书签,自建wiki站点,Evernote,Dropbox等来建立知识库。但是始终觉得不够方便便捷。经过多次尝试,我最终选择了Zim wiki结合github和Dropbox来建立我的个人知识管理系统。

Zim wiki(http://zim-wiki.org/)是一个跨平台的个人wiki软件,其linux版本非常好用,没有Evernote那些花哨不实的功能,呼出速度也很快,适合从网页或者终端中保存文字。用来作为简单的个人知识管理最合适不过。 但是Zim wiki缺少同步功能,所以我通过设置github来为其添加了这个功能。因为zimwiki中每个条目都是一个txt纯文档,所以只需要在平时使用的Notebook对应的目录下面设置git,就可以把内容同步到github上面。之后只需要再把git pull和git push这几个命令写成一个bash脚本,就可以实现自动同步了。

#syncwiki.sh
cd ~/knowledge
git pull origin master
git add *
git commit -m "new"
git push origin master

为了更加方便,我又修改了下/usr/bin下面的zim程序,在

except KeyboardInterrupt: # e.g. <ctrl>C while --server
	print >>sys.stderr, 'Interrupt'
	sys.exit(1)

中sys.exit(1)前面添加了

	os.popen("sh ~/syncwiki.sh")

并将新程序保存为zimm,这样通过zimm打开的zimwiki在每次关闭wiki前就会自动与github同步了。你也可以通过添加crontab来设定定时同步。 使用github可以实现不同linux主机间wiki系统的同步,而linux与windows系统之间的同步我选择了dropbox。 Dropbox同步方法非常简单,将linux下面notebook对应的文件夹用ln命令做个链接,链接到Dropbox下面,之后在windows系统下面,设置zimwiki打开Dropbox的文件夹就可以。这种同步方法的缺点是每次修改后再次从另外一个系统打开zimwiki的时候会卡上几秒钟,而且如果两个系统同时修改wiki则会造成冲突,从而导致同步失败。 虽然存在不足,但是其实一般工作的时候很少会linux和win系统同时去添加wiki。还是那句话,够用就好。

除了使用github,你也可以使用其他的在线版本控制系统来实现wiki的同步。比如新浪的SAE。如果需要将自己的个人知识管理系统共享给别人,可以直接使用zimwiki提供的httpserver,直接共享成为网页。如果需要长期共享,可以去搜索zim wiki deploy(作者的blog:blog github地址:GitHub),这个人提供了将zimwiki转换为dokuwiki的脚本。

除此之外,你也可以尝试使用ssh -X来远程启动zimwiki实现同步:)