MPlayer 的字幕問題

最近透過非合法的手段,找到了某部正在上映的院線片來看,但在 Red Hat 9 上用 mplayer 播放時,中文字幕會變成亂碼。翻了一下網路上其它人的解決方法,我也有正常的中文字幕看了 :)

Step 1. 開啟 mplayer,修改 preferences

Step 2. 選擇 Subtitle&OSD 標籤:

將 subtitle 裡 encoding 選項裡的編碼改成Traditional Chinese Carset(Big5)

Step 3. 選擇 Font 標籤,選擇中文字形:

我是用 /usr/share/fonts/zh_TW/TrueType/bsmi001p.ttf(當然也可以選用其它像 firefly 之類漂亮的字型),Encoding 選Unicode

Step 4. 其它例如字幕大小、透明度…等,都可以在這裡調整。

這樣一來,我的 Mplayer 也有漂亮的中文字幕啦 :)

取消 Vim 裡的高亮度(highlight)

在使用 Vi(m) 的時候,在文件中要搜尋某個字,會用 /somewords 來找,找到之後會把符合的字串標出顏色,這個功能有時挺方便,但有時看久了眼睛會花,不是挺舒服。

原來可以把這個方便的功能「暫時」關閉,

:nohlsearch

但下次找字串時又會出現高亮度。如果希望往後找字串都不會表示亮度,就是:

:set nohlsearch

希望每次啟動 vi 都要關閉高亮度表示,把設定寫到 ~/.vimrc 中。

有個更方便的做法,把下面這個寫到 ~/.vimrc 中:

map <F8> :set hls!<BAR>set hls?<CR>

以後按 F8 鍵,就會切換有/無高亮度了。

註:感謝 kenduest.bbs@bbs.sayya.orgBlueshine.bbs@ptt.cc 兩位大大的指導。

Postfix + Vm-pop3d

一般架設 mail server,通常是在 server 上開立一個帳號(ex: useradd eddie),就差不多可以讓使用者來收發信件了。但一部電腦只設定一組 domain name 的 mail,是有些浪費。但如果在同一台機器上要設定兩個以上不同 domain name 的 email,上面這個方式就行不通了,但透過 postfix 的 virtual alias table,還是可以做到這個功能的。

中文字處理的問題

最近在用 sed 處理中文資料的時候,發現經過處理後,有少數字會變成亂碼,後來才知道原來是 locale 沒設定好。

$ echo '65,3,"1111","謝婷雯","xxx@yahoo.com.tw'| sed 's/@/","/g'

結果得到:

65,3,"1111","謝?,"雯","xxx","yahoo.com.tw

我在自己帳號下的 .bash_profile 裡面加上 LC_ALL=zh_TW.Big5 之後:

$ echo '65,3,"1111","謝婷雯","xxx@yahoo.com.tw'| sed 's/@/","/g'

結果就是

65,3,"1111","謝婷雯","xxx","yahoo.com.tw

說明:

locale 的環境變數設定有下列幾個:

  1. LC_CTYPE: 字元分類及處理方式。
  2. LC_COLLATE: 字元順序與字串比較。
  3. LC_MESSAGES: 程式中用何種語言來顯示訊息。
  4. LC_MONETARY: 貨幣顯式格式。
  5. LC_NUMERIC: 數字顯式格式。
  6. LC_TIME: 日期與時間的顯式格式。
  7. LC_ALL: 此類別可以一次設定以上所有的類別。
  8. LANG: 作用類似 LC_ALL,也可用來一次設定所有的 locale 環境。

使用 locale 這個程式可以看到目前 locale 的設定情形:

> locale
LANG=en_US.UTF-8
LC_CTYPE=”zh_TW.Big5″
LC_NUMERIC=”zh_TW.Big5″
LC_TIME=”zh_TW.Big5″
LC_COLLATE=”zh_TW.Big5″
LC_MONETARY=”zh_TW.Big5″
LC_MESSAGES=”zh_TW.Big5″
LC_PAPER=”zh_TW.Big5″
LC_NAME=”zh_TW.Big5″
LC_ADDRESS=”zh_TW.Big5″
LC_TELEPHONE=”zh_TW.Big5″
LC_MEASUREMENT=”zh_TW.Big5″
LC_IDENTIFICATION=”zh_TW.Big5″
LC_ALL=zh_TW.Big5

參考資料:

http://xcin.linux.org.tw/i18n/pc2000/p2/node4.html

APT(Advenced Package Tool)

APT(Advenced Package Tool),是 Linux 用來管理套件的工具,透過 APT 可以更有效率的管理 RPM,不管是安裝、移除、或是升級都很方便。然而 APT 最大的優點,是可以自動處理 RPM 相依性的問題,例如當安裝 A rpm,而 A rpm 和 B rpm 又有相依性的時候,原本作法是先下載 B rpm 安裝後,再下載 A rpm 安裝;利用 APT 則只需要「apt-get install A」就完成了,這樣 APT 就會幫我們下載 A rpm,而且會自動下載相依性檔案(B rpm)幫我們安裝,這樣對 RPM 的安裝、移除、或是升級都可以不用去管煩人的相依性問題了。

Redirect and Pipe

什麼是 redirect?簡單的說,就是把目前所得的資料轉到其它地方。例如:

$ ls -al > test

就會把 ls -al 所得到的資料,全部轉到 test 這個檔案。要注意的是,如果 test 檔案原本不存在,執行上面這個指令後,會建立一個新的檔案;如果 test 檔案已經存在,那上面這個指令就會把 test 檔案覆蓋掉!!

如果是這樣的話:

$ ls -al >> test

兩個大於符號代表會把輸出的結果 append 到 test 檔案的最後面。

另外,輸出分成 stdoutstderr 兩種,stdout 就是一般的輸出結果,當在輸入過程有遇到錯誤時,就會送到 stderr,而 1>2> 分別就代表著 stdout 跟 stderr,要注意數字跟大於符號之間沒有空格。

$ ls -al 1> test 2> test.err

上面這行就是會把 ls -al 的結果輸出到 test 檔案,如果遇到錯誤的,就會導向 test.err 檔案。

redirect 是雙向的,除了「>」,也有「<」,例如:

$ mail -s “hello, eddie” eddie < /home/eddie/test

就是把這個 test 檔寄給指定的使用者。

$ mysql -u root -p mydb < sql.txt

就是把檔案 sql.txt 裡面的 sql 語法,輸入到 mysql 裡的 mydb 資料庫。

而 pipe(管線)跟 redirect 不太一樣,pipe 能處理前一個指令傳來的輸出資訊,處理完後再丟給下一個指令(如果有的話)。例如下面這個指令:

$ ps aux | grep java | more

意思就是說執行 ps 所輸出的結果,丟到 grep 裡面,然後 grep 會把含有java字串的那一行抓出來,grep 再把結果輸出給 more 指令,如果 grep 輸出的結果超過一頁,more 指令就會負責做分頁的動作。

差別:

$ cat test | mail -s “hi” eddie

這個是會把 test 檔案的內容,輸出給 mail 程式,再寄出去。

$ mail -s “hi” eddie < test

這個則是把 test 檔當作附加檔案寄出信件。

以上大致上是 redirect 跟 pipe 的介紹,這在很多地方都用得上,相信熟悉這些技巧將會對系統管理更得心應手。

Webmin 安裝

Webmin 是一套 Web-based 的系統管理軟體,原本複雜難記的指令,只透過瀏覽器就可以簡單的完成。不過,方便歸方便,該記的指令式還是要知道怎麼使用。

Step 1:下載 Webmin

Webmin 網站,可以下載 tar.gz 或 rpm 格式的,如果是在 linux 環境下,下載 rpm 格式安裝會簡單很多。

Step 2:安裝 Webmin

> rpm -ivh webmin-x.xxx-x.noarch.rpm

Step 3:使用 Webmin

執行 Step2 安裝結束後,安裝訊息會告訴你使用網頁瀏覽器連到指定的位置,通常是 http://localhost:10000/

第一次使用是以 root 的帳號密碼來登入,為了安全性的考量,建議第一次登入後新增一位跟 root 同等權限的使用者,然後把 root 帳號從 Webmin 系統移除(對原系統沒影響,只是 root 不能使用 webmin 系統而已),另外,預設的 port 10000 也建議改到其它的 port。

其實 Webmin 使用並不困難,例如上面提到使用者的新增、修改、更換 port 這些動作,相信都不難找到在哪裡做設定。

Enjoy it!!

加裝新硬碟 on Red Hat 9

今天試著裝上一顆 6G 的 IDE 硬碟,打算來當備份資料用的,感覺不是挺困難。

Step 1.分割 partition:

> fdisk /dev/hdb原來的硬碟是hda,新的這個是hdb。

Step 2.格式化:

> mke2fs /dev/hdb

Step 3.建立 mount 的目錄:

> mkdir /backup

因為在 Linux 環境裡,device 是以目錄形態表示,所以先新增一個目錄,待會再把硬碟 mount 到這個目錄。

Step 4.mount:

> mount -t ext2 /dev/hdb /disk2

這樣大致上就 OK 了。如果想在開機後自動把這個新硬碟掛進來的話,動手修改「/etc/fstab」這個檔案即可。

> vi /etc/fstab
#Device   MountPoint  filesystem Options  dump  fsck
/dev/hdb  /backup    ext3    defaults   1    1

其它相關指令:

  • mount
  • umount
  • fdisk
  • mke2fs
  • e2label
  • fsck
  • mkbootdisk