2013年6月29日 星期六

[reST] Code Syntax Highlight

[reST] Code Syntax Highlight

今天參加了 Tainan.py X MOSUT 的聚會,其中一個主題是 sphinx 的文件教學,

sphinx 的文件是用 reStructuredText 撰寫的,講者 demo 的時候剛好 demo 到了在 reST 裡面使用 code syntax highlight

當初要開始用 reST 寫部落格的時候也稍微作過一些功課,只是 syntax highlight 的部份沒有試出來,

今天聽完分享後在繼續查了些資料,我原本用來轉換的 rst2html 是 Docutils 所帶的,當使用 code-block 區塊的時候,像是:

.. code-block:: c

    int main()
    {
        printf("hello\n");
        return 0;
    }

是會發生錯誤的:

$ rst2html test.rst > test.html
test.rst:1: (ERROR/3) Unknown directive type "code-block".

.. code-block:: c

    int main()
    {
        printf("hello\n");
        return 0;
    }

接著找到這篇發現 Docutils 0.9 的版本後就支援了 code-block 而 Ubuntu 12.04.2 所套件庫裡的 Docutils 卻是 0.8.1:

$ rst2html --version
rst2html (Docutils 0.8.1 [release], Python 2.7.3, on linux2)

所以我就把他移除了(怒),接著從 pip 安裝 Docutils:

$ sudo apt-get remove docutils
$ sudo pip install docutils

目前 pip 上的 Docutils 是 0.10 版,趕快來試用一下

int main()
{
    printf("hello\n");
    return 0;
}

哈,太好了可以用了 :)

2013年6月12日 星期三

[Convert] 將文字轉成圖片

[Convert] 將文字轉成圖片

有時候在簡報或者寫 blog 時會有需要將一些輸出結果呈現出來的時候,

螢幕截圖是一個不錯的方式,不過截圖可能會比較模糊而且麻煩,

最近發現 convert 就有附帶一個功能是將文字直接轉換成圖片,用在這個地方剛剛好。

首先先舉個用 convert 將文字轉成圖片的例子:

$ convert -size 64x32 label:float convert_label.jpeg

指定大小 64x32 文字內容為 float 就可以得到以下圖片

https://github.com/float-tw/float-blog/raw/master/img/convert_label.jpeg

接下來要把 ifconfig lo 的結果轉換成圖片,首先先看一下原本的執行結果:

$ ifconfig lo
lo    Link encap:Local Loopback
      inet addr:127.0.0.1  Mask:255.0.0.0
      inet6 addr: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:16436  Metric:1
      RX packets:38990 errors:0 dropped:0 overruns:0 frame:0
      TX packets:38990 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0
      RX bytes:4280371 (4.2 MB)  TX bytes:4280371 (4.2 MB)

那我們可以用 pipe 導給 convert 將結果轉成圖片:

$ ifconfig lo | convert label:@- convert_label_ifconfig.jpeg

label:@- 的部份是表示 label 的內容由標準輸入取得,就可以得到

https://github.com/float-tw/float-blog/raw/master/img/convert_label_ifconfig.jpeg

當然我們也可以指定圖片為黑底白字:

$ ifconfig lo | convert -background black -fill white label:@- convert_label_ifconfig_black.jpeg
https://github.com/float-tw/float-blog/raw/master/img/convert_label_ifconfig_black.jpeg

當然 label 在使用上還有很多參數可以使用,這部份可以參考這片 [1] 以及官方的範例 [2]

2013年6月8日 星期六

[Linux] 使用 convert 做圖片轉檔

[Linux] 使用 convert 做圖片轉檔

convert 是 ImageMagick 的一個 CLI tool

所以安裝 ImageMagick 就可以得到他了!

可以用來做圖片轉檔,調整大小,也還有其他很強大的功能

這邊簡單介紹一下圖片轉檔和調整大小的方法

首先,圖片轉檔的部份非常簡單舉個例子,如果要把 png 檔轉成 jpeg 檔:

convert input.png outpu.jpeg

好了,就這樣,要轉的檔名放前面,輸出檔名放後面,convert 會自己根據副檔名做轉換

簡單吧。

調整大小的話:

convert input.png -resize 64x64 output.png

這樣就可以把圖片縮放到可以放入 64x64 的方形內,

那如果要把他轉成真的是 64x64 呢?加上驚嘆號強制調整,像這樣:

convert input.png -resize 64x64\! output.png

倒斜線是有時候因為 shell 的關係可能驚嘆號是脫逸字元,有時不加也是可以的。

2013年6月2日 星期日

[Linux] 文字檔編碼工具

[Linux] 文字檔編碼工具

一開使用這些工具是因為在 linux 下的 smplayer 在載入影片字幕的時候,

雖然設定成解 big5 編碼,可是還是會有部份的字變成亂碼,

把字幕檔轉成 UTF-8 就沒有這個問題了,另外偶爾也會遇到 code 裡面有中文註解,

用 gedit 開會有解碼錯誤的問題,或是一些原本 windows 底下的檔案。

iconv

沒記錯的話 ubuntu 12.04 預設是有安裝,

最早用的工具,因為參數蠻好記的範例如下:

iconv -f big5 -t utf8 -o output.txt input.txt

-f form-code

-t to-code

-o 輸出檔名

enca

用了一段時間後突然想到,是不是應該在轉換前先檢查一下檔案原本的編碼是什麼,

因為偶爾也會遇到簡體的編碼,

一開始想到的是用 file ,的確 file 可以用來檢查編碼,

不過後來發現了一個缺點,big5 編碼的檔案會被誤認成 ISO-8859,

所以就查到了這個,Ubuntu 12.04 預設沒有安裝 apt-get install enca 一下就可以了。:

enca input.txt

就可以檢查檔案編碼了,在 manpage 裡面可以查到他支援的編碼,測了幾個檔案 big5 可以正常偵測

另外更強大的是這個 enconv 他可以用來直接把檔案轉成系統的編碼:

enconv input.txt

假設系統編碼是 utf-8 而 input.txt 是 big5 編碼,那 input.txt 就會被轉成 utf-8,

非常的方便,完全不需要什麼參數 :)

當然,這兩個工具都有其他更多的參數可以使用,有興趣的可以問一下男人,

另外還有看到其他的工具像是 convmv 參數跟 iconv 類似,不過就沒有裝來玩了。