原本以為 Octopress 沒辦法加,不過實際嘗試後發現並不難。要修改的地方主要有 source/_layouts/default.html
和 source/_layouts/post.html
這兩個檔案。
Octopress 內建的 twitter, google plus, facebook 三項文章分享功能如果全部打開,會佔掉約 680px 左右的畫面寬度。當文章區塊的寬度小於這個數值時,facebook 的按鈕會跳到下一行。這邊可以透過修改 source/_includes/post/sharing.html
的方式來稍微縮減 facebook 區塊的寬度,以符合需求。
同區塊另外一個問題則是在預設版面中, twitter, google plus, facebook 三者按鈕的高度不同,尤其 facebook 的位置比較偏下。這邊我參考 StackSocial 頁面最下方區塊的作法,將三個按鈕改成 ul → li
格式。
這是花最多時間與腦力的一部分,尤其是我沒有 Ruby 基礎,好在 Ruby 的程式碼不難看懂,我雖然寫不出來,但是我看現有的 code 依樣畫葫蘆,一樣生出功能。這邊主要參考了 Octopress 內建的 Category Plugin,稍作修改,便得到了標籤功能。
透過這次修改,同時也對 Jekyll 所使用的 Liquid Template System 有更深入的了解。想想要整一個 Octopress 網站也真折騰,除了要懂 HTML, CSS, JavaScript 這些基本的之外,還得會摸 Ruby, Sass, Liquid Template,滿滿都是術語與新東西,真不是件簡單任務。
話說既然加入了標籤功能,接下來就是找個時間好好整理每篇文章的「分類」和「標籤」了……嗯,這讓我想到一句老話:
]]>要改的東西太多,那就改天吧。
我不常在 BBS 上直接編輯,多半都是在習慣的編輯器上寫好再貼過去。不過問題來了,我寫文章的習慣都是一直打字一直打字,直到段落結束才換行,這樣的文字如果複製起來直接貼到 BBS 上發表,雖然還是能夠正常顯示,但在編輯與回文時就會出現過長的文字而造成如上圖般糟糕的版面效果。
所以我在把文章貼到 BBS 上前,會先進行排版,將每行的字數限制在 72 字元以下。一開始我還乖乖手動一行一行按 Enter,可是這勤勞樸實的作風太不符合以 Lazy Easy 為最高指導原則的程式設計師身分了。經過一番研究後,我用 Vim 來做為我文章自動排版的工具。
要完成任務,首先得在 .vimrc
檔案裡加入以下設定:
set fo+=Bm
set tw=72
說明一下,tw
是 textwidth
,這邊的意思是每行長度為 72,你可以依個人喜好調整數值。而 fo
則是 formatoptions
的縮寫,其中的 Bm 都是與 Multibyte 相關的選項。沒加的話,預設是會採用英文規則,也就把空白當做字的間隔,因此一連串中文文字不會被斷開,那就達不到自動斷行的效果了。
接著,為了讓事情更方便些,可以加入以下的按鍵映射:
noremap <silent> <F7> gggqG
我把 F7 按鈕對應到 gggqG
,這串指令可以分成三個部分:gg
, gq
, G
。
gg
: 將游標移至檔案最前頭gq
:從游標開始處進行格式重排G
:將游標移至檔案最尾端所以以後只要在 Vim 寫好文章,或是把寫好的文字貼到 Vim 上,再按下 F7,就可以立刻排成 BBS 所需要的格式囉。
只剩下一個問題......如果文章中有太長的連結,要是能自動縮網址那就更完美了。
]]>這小工具很簡單,按年份分別列出該年寫了幾篇文章,總共多少字數。由於 Octopress 的文章其實就是一個個 markdown 純文字檔,所以要做統計並不困難,我不用想盡辦法連到資料庫或是將網站匯出 XML 來做分析。不過這個工具使用到 *nix shell 環境,Linux 與 Mac OSX 的使用者可以無痛使用,Windows 的話可能就要安裝一下 cygwin 或其他類似套件了。
工具的代碼如下,使用前,請先自行修改代碼中 SYEAR
與 POSTPATH
這兩個變數,以符合自己的需求:
附帶一提:字數的統計是直接使用 wc -m
,也沒有去掉 YAML 檔頭,所以不是很精確,大概參考參考就好。
雖說資料不難找,但每次都問 google 也是折騰,索性自己記個筆記,將來若有需要時,翻自己筆記總比上網搜尋來得快速。
更重要的是,才不會因為上網問 google 然後開一堆網頁邊看又繼續邊開連結搞到最後開了一大堆自己好像有興趣但其實跟原本問題一點也不相干的文章。我真是太容易分心了。
Python 的 easy_install 人如其名,真的很 easy。比方說我看到 Markdown 2.1.1 : Python Package Index 這個套件想要安裝,我只要到終端機輸入下面指令就行了:
$ easy_install markdown
要刪除模組的話則是輸入:
$ easy_install -m markdown
easy_install 主要的功能就是安裝,如果需要進一步說明,可以參考
$ easy_install --help
相比之下,Ruby 的 gem 就不僅僅只是個安裝工具,它是個完整的套件管理工具。例如我想安裝一個叫 toodledo 的套件,可以這麼輸入:
$ gem install toodledo
或是指定版本號:
$ gem install toodledo --version 1.3.8
移除的話是:
$ gem uninstall toodledo
我想知道有沒有跟 markdown 相關的套件,我可以用如下方式尋找:
$ gem list markdown --remote
如果沒有加上 --remote
, 則會列出本機已經安裝的套件。
$ gem list
更詳細的說明可以參考線上說明。
$ gem help
上面這兩個工具程式在 Mac OS X 中都是預設已經安裝在系統中的,省了不少麻煩。安裝的過程如果有遇到權限問題,那麼就在上面所列的指令最前面加上 sudo
再執行就好了。
昨天突然心血來潮想到來替 ls 上個顏色。以前用 Linux 時都有很漂亮的 ls 輸出,除此之外也會認真打造個人的 shell 環境。怎知開始用 Mac 兩年多來,都忘記來把 shell 好好調教一番,幾乎一直維持著原汁原味。
是說原本預設的也夠我用了就是,不過有個多采多姿的 ls 輸出不僅能提昇工作效率,光看著心情也會好起來。
在 Linux 要開啟顏色輸出是透過 ls --color
指令。而在 Mac 或 BSD 上則是使用 ls -G
。
當然,每次都加這參數也是麻煩。寫程式的都是懶人,所以我在 ~/.bashrc
檔案中加入下面這行設定:
sh
alias ls='ls -GF'
要說明一下的是,上面的設定除了開啟顏色輸出外,還加了 -F
這個能夠在 ls 輸出中加入識別符號的參數。像是目錄的名字後面會加上 '/', 可執行檔會加上 '*', 符號連結 (symbolic link) 會加上 '@' 等等。
關於顏色的指定,Linux 使用 LS_COLORS
環境變數,BSD 則是使用 LSCOLORS
。兩者的設定方式也不同,這部份網路上資料很好找,就不贅述。
直接說結果,我所使用的顏色組合如下:
sh
export LSCOLORS=gxfxbEaEBxxEhEhBaDaCaD
將這行加入 ~/.bash_profile
就可以享受美美的 ls 了。這個配色設定是從 LSCOLORS=gxfxbEaEBxxEhEhBaDaCaD 這網頁參考來的。
附帶一提,Mac 或 BSD 的 LSCOLORS
參數只能指定預設檔案類型的顏色,比較常見的類型只有檔案、可執行檔、符號連結三種。Linux 的 LS_COLORS
除了上述這些之外,還可以針對附檔名作指定,像是把 .zip .rar .tgz 等壓縮檔設成黃色;然後 .avi .m4v .mov 等影片檔設成洋紅色之類的。
CLICOLOR
, 在 ~/.bash_profile
中加入 export CLICOLOR=1
可以得到跟 ls -G
一樣的效果。