2012年4月27日

[Perl] 本地端使用 CPANPLUS 安裝 CPAN 模組(CPAN::Mini 應用)

CPAN 是 Perl 吸引人的特點之一,裡面有成千上萬個模組,都是全世界程式設計師的智慧結晶,所以要寫一個功能前都會先上來看看是否有相似的模組就不用自己再發明輪子。但是通常在企業的 production 環境都是在內部網路,所以根本無法連到在 Internet 的 CPAN 網站。
還好有一位大師 Ricardo SIGNES 解決了這個問題,CPAN:Mini 模組把現在最新的 CPAN 模組蒐集起來 (2012/04 mirror 約 2G),我們可以利用可以連線至 Internet 的機器,把模組 mirror 下來,再傳到內部網路主機即可在裡面安裝 CPAN 模組。

可先手動安裝 CPAN::Mini  之後你在命令列就有 minicpan 指令

再執行
minicpan -l /minicpan -r http://ftp.funet.fi/pub/languages/perl/CPAN

就開始 mirror 了,至少需 2HR 以上時間,完成後進 CPANPLUS 開始初始設定
1. 輸入 cpanp
2. 輸入 s reconfigure
3. 選 7> Select mirrors
4. 看到 Would you like to keep your current hosts? [Y/n]: 選 n
5. 再選 2> Custom
6. 填上剛剛 mirror 到 /minicpan 的路徑  
file:///minicpan (注意有三個 / )
7. 按 Enter 跳出
8. 選 4> Quit
9. 選 9> Save & exit
10. 輸入 q 離開
11. 再進入 cpanp
接下來就可以不用網路,在本地安裝 CPAN 模組囉,CPANPLUS 簡易用法請參考如下

CPANPLUS 簡易用法
安裝模組  (模組名稱查詢)
i Date::Manip

移除模組
u  GD::Cairo

查詢模組
m Chart::Clicker

查詢作者
a 作者名

2013/11/29 補充
假設 mini cpan 已經解開在 Linux 的 /cpan/mirror 目錄
則使用 cpanm 進行安裝模組的話可以執行如下指令
cpanm --mirror /cpan/mirror --mirror-only  CPAN_MODULE_NAME

2012年4月19日

SQLite 簡易指令說明

SQLite 資料型態有
NUMERIC, INTEGER, TEXT, REAL, NONE
日期型別是用 TEXT 的 data type

建立 DB 與 table 三步驟
1. 執行指令 sqlite3 mydatabase.db
2. 在 console 執行

CREATE TABLE peoplestatus(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, birthday TEXT, score1 REAL, score2 REAL, score3 REAL, height INTEGER, weight INTEGER);
3. .exit or .q or .quit

Insert 語法 (id 是 AUTO INCREMENT, 所以我們不用自己 insert id 值)

sqlite3 mydatabase.db "insert into peoplestatus(name, birthday, score1, score2, score3, height, weight) values(1, '2012-04-18', 60.58, 77.23, 90.54, 172, 70);"

Select 語法

sqlite3 mydatabase.db "select * from peoplestatus limit 2";
sqlite3 mydatabase.db "select * from peoplestatus order by id limit 1 offset 2";

看 DB 裡面有什麼 table

sqlite3 mydatabase.db "select * from sqlite_master;"

看 peoplestatus 這個 table schema

sqlite3 mydatabase.db ".schema peoplestatus";

Table 新增欄位

sqlite3 ip_pool.db "ALTER TABLE poolstatus ADD phoneno INTEGER"

查詢身高 2012-04-10 生日的人

sqlite3 mydatabase.db "select * from peoplestatus where birthday like '2012-04-10%' order by id desc"

CentOS 載入 MIB file

一般網路設備都有支援 SNMP 網管功能,但直接使用 snmpwalk 去看由於作業系統沒有載入設備的 MIB file 所以無法解析 OID 跟設備的對應關係,只看得到一堆 1.3.6.1.4.1.......

所以我們必須載入廠商提供的 Mib file,讓我的 CentOS 知道對應關係,方法如下

1. 複製廠商 Mib file 到 /usr/share/snmp/mibs/ 例如我們需要三個檔案

cp RBN-IPPOOL-MIB.my /usr/share/snmp/mibs/

cp RBN-SMI.my /usr/share/snmp/mibs/

cp RBN-TC.my /usr/share/snmp/mibs/


2. 在要執行程式的使用者下面建立 .snmp 目錄,並將剛剛三個檔案的檔案寫入 snmp.conf 設定檔

mkdir $HOME/.snmp

echo "mibs +RBN-IPPOOL-MIB" >> $HOME/.snmp/snmp.conf

echo "mibs +RBN-SMI" >> $HOME/.snmp/snmp.conf

echo "mibs +RBN-TC" >> $HOME/.snmp/snmp.conf


測試

snmptranslate -Td 1.3.6.1.4.1.2352.2.15 /usr/bin/snmpwalk -v 2c -c community 10.20.1.2 1.3.6.1.4.1.2352.2.15


如果有把 OID 解析成名稱, 那就成功囉~

2012年4月13日

[Perl] Check null value in Perl


if ( ! defined $var  ) {
  print "not defined\n";
}
else {
  print "defined\n";
}

來源 : http://www.unix.com/shell-programming-scripting/38416-not-null-cheking-argument-perl.html

2012年4月9日

CH57 健康同學會 - 五大防癌食物

核桃熱量比較高, 應適量攝取, 其他的能吃多少就吃多少了 XD

Xcode v4.2 升級到 v4.3.2 問題

前陣子因為 Apple 釋出 iOS 5.1, 所以開發工作也跟著出到 v4.3.2 版, 於是在閒暇的時候利用 Mac App store 把 Xcode v4.2 自動升級到 4.3.2. 升級完畢後點選 dock 上的 Xcode 圖示, 但是怎麼開起來還是 v4.2 版.... 後來利用 finder 搜尋 xcode 關鍵字, 發現在另一個地方也有一個 Xcode 執行檔, 原來 Mac App store 升級後不會自動替換掉 原本的 Xcode, 要自己拉出來才行阿!
這個小工具發生錯誤