顯示具有 工作 標籤的文章。 顯示所有文章
顯示具有 工作 標籤的文章。 顯示所有文章

2011年3月7日 星期一

IBM主機中文碼的轉碼

不同系統間的資料傳遞,如果只是單純的英數字資料,就不會碰到麻煩,
但是,如果資料含有中文字,就要特別處理轉碼的問題,
原本處理來自IBM主機資料時,一直 Convert::IBM390這個模組,
也由於之前資料內很幸運的都沒有中文,
所以一直也沒注意到這個無法轉換中文的限制,直到.....今天。

Convert::IBM390只能夠轉換 IBM-1047 <=> ISO8859-1
而 IBM主機上的Traditional Chinese EBCDIC編碼是IBM-937(cp937)
目前Perl在CPAN上面的Encode模組找不到支援cp937
另外唐鳳所寫的模組Encode::IBM可以支援。(但我沒試過)

Unix-like作業系統上,也有一個iconv的指令,可已進行檔案轉碼的作業。
簡單介紹可以參考這裡

所以經由Perl可以間接使用iconv來轉碼,再將結果取回放回變數內,舉例如下。

###############################
# CP937 => Big5 轉碼
# 使用inconv指令
#
sub CP937_BIG5 {

    my $eb = shift;
    return '' unless $eb;

    # 在家目錄/tmp下
    my $big5file = $ENV{HOME} . '/tmp/big5file';
    open Convert, " | iconv -s -f IBM-937 -t big5 > $big5file "  or die;

    print Convert $eb;
    close Convert;

    open B5, '<', $big5file or die;

    my $big5 = <B5>;
    close B5;

    return $big5;

}


如果不想使用上面的方法,也可以改用Text::Iconv,比較簡潔。
###############################
# CP937 => Big5 轉碼
# 使用Text::Iconv來介接inconv指令
#
use Text::Iconv;
sub CP937_BIG5 {

    my $eb = shift;

    if ($eb) {
        return Text::Iconv->new("IBM-937" => "big5")->convert($eb);    
    }
    else {
        return '';
    }
    
}

轉碼是個不得已沒有營養的作業,
但為了現有營運中不同系統間的資料轉換,
它又是個必須存在的基本工具。

Perl提供了良好多樣性的方法來達到我們的目的,是個值得學習而又實用的程式語言。

2010年5月12日 星期三

fping指令的使用

ping指令是透過傳送ICMP封包給網路上的主機設備(hosts)的方式,來簡易判斷網路設備是否正常開啟運行,非常方便,但限制是一次只能檢查一台網路(主機)設備。

fping是另一個使用C語言撰寫的程式指令,除了基本的ping功能之外,最主要的特色是可以同時ping多台網路設備,適合大量網路設備檢查的情況使用。

要充分發揮fping的功能,通常搭配其他程式使用,也就是依實際需求(動態)提供所要檢查的設備ip,也可以後續處理檢查結果,例如記錄於資料庫或發警訊通知相關人員等等。

詳細參數參考:fping使用說明

使用範例:

(-u : 顯示不成功結果, -g : ip range  2> /dev/null 捨棄額外錯誤訊息 )
fping -u -g 172.17.214.120 172.17.214.132 2> /dev/null

(-e : 顯示來回檢查所費時間 )
fping -e -r1 -g 172.17.214.1 172.17.214.254 2> /dev/null

搭配程式範例:

use IPC::Open2;

use strict;

# declare file handle
my ($chld_out, $chld_in);

# "打開" 一個可讀可寫的 "執行子程序"
my $pid = open2($chld_out, $chld_in, '/usr/bin/fping -e -r1');

# 提供子程序的執行參數 此例. ping 172.17.214.1 ~ 172.17.214.10
for my $ip (1..10) {
   print $chld_in "172.17.214.$ip\n";
}
# 關閉檔案後,才會開始執行fping
close($chld_in);

# 讀取執行輸出(不含stderr)
my @output = <$chld_out>;

print for @output;

輸出

172.17.214.1 is alive (3.72 ms)
172.17.214.2 is alive (7.23 ms)
172.17.214.5 is alive (6.09 ms)
172.17.214.7 is alive (5.67 ms)
172.17.214.8 is alive (5.20 ms)
172.17.214.9 is alive (4.62 ms)
172.17.214.10 is alive (1.22 ms)
172.17.214.3 is unreachable
172.17.214.4 is unreachable
172.17.214.6 is unreachable


使用apt安裝 fping

sudo apt-get install fping

2010年3月16日 星期二

在Mediawiki內,新增崁入PDF檔案功能

參考線上說明

主要步驟有二

一、 在extensions目錄下新增一個檔案 EmbedPDF.php
二、 在LocalSettings.php最後新增一行:
    require_once('extensions/EmbedPDF.php');

使用時,只要在wiki text裡面用...標記就可以了。

2009年6月24日 星期三

年"中"獎金還沒著落,但我先把它們花掉了。




新購買的工作桌如期送到了
下班回家匆匆吃完晚餐後
便動手把電腦與周邊設備一一整線安置於桌上空間
又根據座椅調整了桌面的水平高度
希望長時間使用置於桌面的筆電不會造成手臂的不舒服

新桌子沒有想像中的堅固穩定
但畢竟不是像優美那樣的鋼製家具
所以也還好

整個整理妥當之後也快 11 點
剩下一些線材收納一下便完成

坐在比桌子更貴的椅子上
舒適放鬆的靠在椅上
有一種擁有的滿足
雖然這種感覺過幾天就會消失無蹤
但此刻伴隨著音樂
還真是享受