个人知识管理—Gollum Wiki

个人知识管理(PKM),应该是很多人所需要的东西。我在学生时代也折腾过,但是因为需求不大,所以也就仅仅是用用而已。工作之后,随着需要学、需要记、需要整理的东西越来越多,急需一个靠谱的个人知识管理软件来保存我的知识、心得、体会等。

PKM进化

我选择的首款PKM工具是大名鼎鼎的Evernote,也是受电脑玩物的一系列文章的影响。其优点有:

  1. 全平台同步,手机端尤其好用。
  2. 网络同步,不必担心资料丢失。
  3. 非常优秀的浏览器插件,保存文章很方便,而且格式不丢。

但相应Evernote的缺点也不少:

  1. 保存附件的话免费流量容易超。(这个倒是可以借助Dropbox/Google Drive来解决)
  2. 编辑器太烂,不适合编辑工作。

尤其是第二点,因为职业关系,我写的笔记中会带很多代码片段,而evernote的编辑器实在太弱。所以现在我只用evernote来收集资料,并不用它来归纳整理。

之后我分别尝试了Google Drive/OneNote/Wiz/DokuWiki等等各种不同的知识管理体系,均因为各种原因放弃了,不易编辑是首要原因。

所以我为我所寻找的PKM定下了如下要求:

  1. Markdown 语法支持,易于编辑、导出、保存,且为纯文本格式,不挑编辑器。
  2. 网络同步,防止资料丢失。
  3. 方便的Publish,可以将wiki发布到互联网进行知识分享。

最终选择–gollum

最后我的选择是github开发并开源的gollum,它被用于github自身的wiki系统中,所以长期支持的可靠性是有的。

gollum完全支持Markdown在内的多种标记语言,而且利用git来进行版本管理,从而可以方便的进行网络同步(只需要一个remote git repo),此外由于其本质是一个ror程序,所以可以方便的publish到互联网,进行知识分享。

gollum架设

安装:

gem install gollum
gem install redcarpet #markdown support
#gem install github-markdown #github-markdown support
pip install Pygments #代码高亮需要

使用:

mkdir wiki
git init
gollum
# 此时就可以在浏览器中访问http://localhost:4567

gollum开机自动启动

使用supervisord来开机启动gollum

因为我们的gollum所依赖的环境分别位于rvm和virtualenv下,所以首先需要:

rvm wrapper 1.9.3 startup gollum

然后:

sudo vim /etc/supervisor.d/gollum.ini
[program:gollum]
;; need: rvm wrapper 1.9.3 startup gollum
command=/home/cynic/.rvm/bin/startup_gollum  --no-live-preview /home/cynic/Projects/wiki ; the program (relative uses PATH, can take args)
;;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
;;numprocs=1                    ; number of processes copies to start (def 1)
;;directory=/home/cynic/Projects/wiki               ; directory to cwd to before exec (def no cwd)
;;umask=022                     ; umask for process (default None)
;;priority=999                  ; the relative start priority (default 999)
;;autostart=true                ; start at supervisord start (default: true)
;;autorestart=unexpected        ; whether/when to restart (default: unexpected)
;;startsecs=1                   ; number of secs prog must stay running (def. 1)
;;startretries=3                ; max # of serial start failures (default 3)
;;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)
;;stopsignal=QUIT               ; signal used to kill process (default TERM)
;;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
;;killasgroup=false             ; SIGKILL the UNIX process group (def false)
user=cynic                   ; setuid to this UNIX account to run the program
;;redirect_stderr=true          ; redirect proc stderr to stdout (default false)
stdout_logfile=/tmp/gollum.out        ; stdout log path, NONE for none; default AUTO
;;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
;;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
;;stdout_events_enabled=false   ; emit events on stdout writes (default false)
stderr_logfile=/tmp/gollum.err        ; stderr log path, NONE for none; default AUTO
;;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)
;;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
;;stderr_events_enabled=false   ; emit events on stderr writes (default false)
environment=PATH=/home/cynic/.virtualenvs/python27/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin       ; process environment additions (def no adds)
;;serverurl=AUTO                ; override serverurl computation (childutils)

之后

sudo rc.d start supervisord
#arch上可将supervisord加入rc.d中的启动项,其他系统同理

即可

在VirtualBox中安装gollum

安装方法同上,但要注意两个问题:

  1. 端口映射,映射主机的某个端口到虚拟机的4567
  2. rails在VirtualBox会很慢,解决办法如下:(来源)

解决rails应用在virtualbox中很慢的方法之一:

  • Find your webrick/config.rb
    • It may be in /usr/lib/ruby/[version]/webrick/config.rb if you’re running a normal Ruby
    • If you use RVM, you’ll have to find the appropriate ruby directory, e.g. /home/username/.rvm/rubies/[version]/lib/ruby/[version]/webrick/config.rb
    • I don’t know jack about other options like rbenv
    • Worst-case scenario, try find / -type d -name "webrick"
  • Edit in your favorite editor (obviously this would be vim)
    • Look for :DoNotReverseLookup => nil.
    • Change nil to true.
    • If you don’t see this setting, you may have to use the /etc/hosts hack above.