之前我寫過一篇部落格,敏捷的寫部落格,借鑑了敏捷看板的思想來管理部落格。
而在DevOps領域有一個很火的技術實踐叫做基礎設施即程式碼。Kief對基礎設施即程式碼的解釋是這樣子的:
基礎設施即程式碼是一種使用新的技術來構建和管理動態基礎設施的方式。它把基礎設施、工具和服務以及對基礎設施的管理本身作為一個軟體系統,採納軟體工程實踐以結構化的安全的方式來管理對系統的變更。
裡面的關鍵一點是以軟體工程實踐的方式來管理基礎設施。那麼對於我們的部落格可不可以也採納軟體工程實踐的方式來管理那?答案是可行的。
-
選取合適的語法
既然想寫程式碼一樣寫部落格,那麼首先要選擇一種語法了,這種語法就是Markdown。Markdown非常容易上手,包含的tag剛剛夠用,尤其展示程式碼非常方便,自從用了它再也不用和煩人的CSS打交道了。人們不僅用Markdown在stackoverflow上發問題、解答問題,還在GITHUB上track issue,甚至現在寫郵件也用Markdown了。拿它來寫技術文章簡直不用太爽。
-
選取合適的框架
實現基礎設施程式碼需要選擇一款基礎設施自動化工具,這些工具的特點是全命令列操作,很容易實現自動化。那麼建立自己的技術部落格站點也需要選擇一個部落格框架,支援全命令列操作的部落格框架有Jekyll、Octopress、Hexo等。它們各自的特點不在本文的討論範圍。但我多說一句,我現在使用的是Octopress,我也用過Hexo,我更喜歡Hexo,原因有二,一是速度快,二是環境簡單。
-
選取順手的編輯器
這些部落格框架的特點是可以Offline寫作,然後一鍵釋出。所以你可以選用任何你喜歡的編輯器來寫文章,不用使用線上編輯器和各種樣式問題、網路問題抗爭了。Atom、Sublime或者專業編輯工具MacDown、Mou等都行。
-
一切納入版本管理
這些部落格框架建立部落格、生成部落格、釋出部落格全部可以命令列操作。而且所有的配置(包括對站點的基本配置、外掛的配置、主題的配置)都可以直接修改配置文字,部落格也是以MarkDown的格式儲存,所以整個站點都可以存放在GIT之類的版本控制庫中。比如我的整站部落格原始碼都放置在GitHub上,從此再也不用更擔心部落格內容丟失了。
-
靈活的釋出策略
它們通過命令可以生成純靜態的部落格,所以無需任何web伺服器都可以執行。你可以將其放置到GitHub Pages上,或者Heroku上都行,或者自己隨便找臺免費的雲主機裝個nignx即可。當然也有更高大上的做法,我把整個部落格放置在AWS的S3上。S3是亞馬遜推出的物件儲存服務,並且我還是用了亞馬遜提供的全球CDN加速功能CloudFront,對我的部落格進行了全球CDN加速。無論是澳洲海邊還是中國內陸,訪問速度都是槓槓的。
-
定製開發的能力
漂亮的主題風格也是選取一個部落格框架需要考慮的一個因素。想要更換皮膚就太簡單了,也是全命令列操作。拿Octopress舉例,網上有很多熱心使用者製作的皮膚,都託管在github上,相中以後直接通過命令列操作就可以給你的部落格換上最In的皮膚。
另外還有對部落格的定製化也是我們關心的。每款部落格框架都有豐富的外掛,這些外掛的程式碼都放置在GitHub上,完全開源,安裝配置外掛也非常簡單,命令列全部搞定。我自己也寫了一些定製化的外掛,比如當我釋出一個新部落格的時候,只需
rake deploy
一條命令就可以把我的部落格推送到我的weibo和linkedin上,也可以把整個部落格內容同步到我在部落格園的部落格站點上。這些外掛也開源在GitHub上,分別是octopress-linkedin和octopress-syncPost。
這樣子,寫部落格變成了一種享受。進入諮詢團隊以後,堅持寫部落格也帶來了其它一些好處。比如和客戶討論一個問題時,直接把我文章連結發給他說,說這個東西我之前專門寫過部落格,你看了就懂了。這樣瞬間在客戶面前樹立了專業的形象。更有甚者,客戶當著我的面搜尋某個技術名詞,第一頁第一條赫然就是我寫的部落格。所以可以少費些口舌,把精力用到其它地方去。