2011年10月14日

使用 Octopress + GitHub 免費架設部落格,以 Markdown 語法快速發表文章

最近看到幾位部落客開始改用「Octopress」,取代「Wordpress」。
http://octopress.org/
發現 Octopress 真是個好東西,特別是對於本身是 Programmer 的 Blogger 來說!

雖然我一直用 Blogger 寫網誌,也陸續使用 Wordpress 架設過幾次,但大部分技術類的筆記,還是用 Wiki 整理(目前偏好 dokuwiki)。

如果你也是 Programmer ,曾經想過要把學習心得記錄下來,寫過又要貼圖、又要放程式碼的文章,就會瞭解 Blogger 、 Wordpress 並不是那麼順手。

Programmer 總是想盡辦法提高效率,讓程式碼能少寫一些、步驟能簡化一點、流程能更簡潔,最好是大部分的東西都可以自動生出來,讓 Programmer 工作時只要 focus 那些真正需要動手的事情。

因此 Programmer 應該要學習用 Markdown 語法,它可以幫助快速撰寫學習筆記、電子郵件、會議記錄、系統文件等等,雖然寫出來的文件是純文字格式,但本身就具有 WYSIWYG 的效果。

舉例來說,以下是三種不同純文字標記方式。

HTML syle

<h2>title</h2>
<p>contents line1</p>
<p>line2</p>
<ulp><
>li>item1</li> 
<li>item2</li>
</ul>

LaTeX style

\section{title}
contents line1
line2
\begin{enumerate}
  \item item1
  \item item2

Markdown style

## title
contents line1
line2
* item1
* item2

這三種文字格式,都能透過程式自動化處理,讓排版輸出結果可以顯示在瀏覽器,或是發佈成PDF等其他格式。

Markdown 顯然比其他標記語法更容易看懂,因為夠直覺,即使從來沒學習 Markdown 標記的人,第一次看也不會覺得有什麼困擾。對於撰寫者本身,不太需要去記憶標籤用法,需要撰寫的字數也很少。

在平板電腦的時代,這種寫法就相當具有優勢,例如聽演講時需要撰寫一篇記錄,又不方便攜帶筆電;因為輸入文字的速度有限,又要能兼具基本的排版,避免之後還要花太多時間處理,這時候簡單易寫的語法就相當管用。

* 如果你有一台 iPad ,建議可以參考這幾款運用 Markdown 的文字編輯軟體:iA WriterByword 。

如果你開始習慣用 Markdown 寫文件,就會覺得「回不去了!

雖然許多 Blog 或 Wiki 軟體,也可以安裝擴充套件,讓文章可以用 Markdown 語法撰寫。
可是,這樣還是不夠 Simple 阿!

因為 Programmer 通常會有用得很順手的 Text Editor,例如 vim、emacs、TextMate、BBEdit、gedit 等等,強大的文字編輯軟體,不僅有 Syntax Highlighting 功能,還可以使用 Template、Macro、Shortcuts 等等功能。不僅拿來寫程式碼很好用,用來編寫 Markdown 文件當然也是游刃有餘。

如果你已經很熟手邊的文字編輯器,每天花不少時間寫 Code,可是為了把一些學習心得記錄成網誌,又要打開網頁、使用另一種編輯器,才能寫 Markdown 語法;過程中手指要不斷離開鍵盤、受滑鼠折磨,這真是受夠啦!!!

既然是撰寫跟程式有關的文件,何不就用撰寫程式的方式,開啟新文件、打字、存檔、執行 deploy 程式,不用再多那些礙手礙腳的步驟,就能發佈成網誌文章!

Octopress 很簡單、管用!
  1. Octopress 內建了一個簡單、好看的 HTML5 theme,也支援行動裝置顯示的最佳化,讓你的部落格一開始就有很好的外觀基礎。
  2. Octopress 支援各種你想用的功能:Twitter, Google Plus One, Disqus Comments, Pinboard, Delicious, and Google Analytics ,不夠用也可以很容易自己擴充。
  3. Octopress 使用最近很夯的 Compass and Sass ,讓你可以用輕鬆省事又炫的技巧,調整版面外觀。
  4. Octopress 使用 Solarized 幫程式碼著色,漂亮!
Octopress 可以幫你使用 Markdown 撰寫的網誌文章, compile 為靜態(static)網站,並內建 deploy 到 GitHub 的功能!!!

也就是說,使用 Octopress + GitHub 架設部落格,可以不用花一毛錢(除了網址註冊費)!

發佈到 GitHub 的網址,預設是:

http://yourname.github.com/

你也可以設定成自己購買的網域名稱。

使用 MacVim 編輯 Markdown 格式的網誌文章

在建立好 GitHub Pages Repository 之後,使用 Octopress 內建的指令即可自動設定 GitHub 發佈。

# 設定 GitHub 發佈
rake setup_github_pages

*這邊需要填入 Git URL,格式如: git@github.com:yourname/yourname.github.com.git

在安裝好 Octopress + GitHub 的機器上,撰寫網誌變成一項簡單的工作,就樣每天照三餐寫 Code 一樣容易,常用的指令示範如下。

# 建立新文章,保存在 source/_posts/日期-標題.markdown
rake new_post["標題"]

# 產生網站檔案
rake generate

# 發佈到 GitHub
rake deploy

發佈後的範例如下:

http://sslab.github.com/

有興趣開始使用 Octopress ?請參考以下詳細安裝及設定教學:


3 則留言:

  1. 運行rake setup_github_pages時,碰到錯誤了,不知道是否可指點迷津。。。


    Juanito:octopress Mac$ rake setup_github_pages --trace
    ** Invoke setup_github_pages (first_time)
    ** Execute setup_github_pages
    Enter the read/write url for your repository: http://juanitofatas.github.com
    rake aborted!
    undefined method `[]' for nil:NilClass
    /Users/Mac/projects/octopress/Rakefile:284:in `block in '
    /Users/Mac/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/task.rb:205:in `call'
    /Users/Mac/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/task.rb:205:in `block in execute'
    /Users/Mac/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/task.rb:200:in `each'
    /Users/Mac/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/task.rb:200:in `execute'
    /Users/Mac/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain'
    /Users/Mac/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize'
    /Users/Mac/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
    /Users/Mac/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/task.rb:144:in `invoke'
    /Users/Mac/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/application.rb:112:in `invoke_task'
    /Users/Mac/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/application.rb:90:in `block (2 levels) in top_level'
    /Users/Mac/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/application.rb:90:in `each'
    /Users/Mac/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/application.rb:90:in `block in top_level'
    /Users/Mac/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/application.rb:129:in `standard_exception_handling'
    /Users/Mac/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/application.rb:84:in `top_level'
    /Users/Mac/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/application.rb:62:in `block in run'
    /Users/Mac/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/application.rb:129:in `standard_exception_handling'
    /Users/Mac/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/application.rb:59:in `run'
    /Users/Mac/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/bin/rake:32:in `'
    /Users/Mac/.rvm/gems/ruby-1.9.2-p290/bin/rake:19:in `load'
    /Users/Mac/.rvm/gems/ruby-1.9.2-p290/bin/rake:19:in `'
    Tasks: TOP => setup_github_pages

    回覆刪除
  2. 應該是 Git Repo URL 有誤:
    請試試:
    git@github.com:juanitofatas/juanitofatas.github.com.git

    回覆刪除
  3. it works!!! So many thanks!!! :D:D:D

    回覆刪除

lyhcode by lyhcode
歡迎轉載,請務必註明出處!