全國性的無線上網 http://itaiwan.gov.tw/ ,不知道會不會像3G一樣,一下子就被塞爆了,到時一定一堆掛網的。
- 10月 03 週一 201113:08
iTaiwan (愛台灣)無線上網
- 10月 02 週日 201118:35
紙模:功夫熊貓2 羊仙姑
- 10月 02 週日 201118:29
紙模:功夫熊貓2 雷霆犀利俠
- 10月 02 週日 201118:23
紙模:功夫熊貓2 風暴鐵牛俠
- 9月 30 週五 201123:50
Perl: DBI 查詢 use fetchrow_hashref
今天遇到了一個現象,讓我花了好多時間,最後才查清楚怎麼回事,手動查詢資料庫,明明 table 內有資料,程式用 fetchrow_hashref 查詢就是沒資料....
my $ref = $sth->fetchrow_hashref();
print "name=$ref->{'NAME'}, address=$ref->{'ADDR'}\n";
執行結果:
name=, address=
會造成這樣的原因是因為大部分的資料庫,資料表的欄位名稱不分大小寫,而 perl 的 hash ,其 key 的部分是區分大小寫的,在這情況下會帶來不小的困擾,造成上面語法無法取得資料。
為了避免潛在大小寫不匹配的問題,必須透過 NAME_uc 或 NAME_lc 屬性來告知 fetchrow_hashref 強制欄位名稱為大寫或小寫。
my $ref = $sth->fetchrow_hashref();
print "name=$ref->{'NAME'}, address=$ref->{'ADDR'}\n";
執行結果:
name=, address=
會造成這樣的原因是因為大部分的資料庫,資料表的欄位名稱不分大小寫,而 perl 的 hash ,其 key 的部分是區分大小寫的,在這情況下會帶來不小的困擾,造成上面語法無法取得資料。
為了避免潛在大小寫不匹配的問題,必須透過 NAME_uc 或 NAME_lc 屬性來告知 fetchrow_hashref 強制欄位名稱為大寫或小寫。
- 9月 30 週五 201123:40
紙模:章魚鋼鐵人
- 9月 30 週五 201120:22
紙模:Link in Legend of Zelda
- 9月 28 週三 201101:51
開機時出現指令碼錯誤 del.icio.us網站
開機時會出現一個網址指令碼錯誤,顯示為 http://del.icio.us/js/playtagger
第一次遇到,真的嚇了一跳,以為電腦中毒了
最後終於找到原因,原來是 yahoo 輸入法的常駐程式在搞鬼,過幾天應該會修正好
第一次遇到,真的嚇了一跳,以為電腦中毒了
最後終於找到原因,原來是 yahoo 輸入法的常駐程式在搞鬼,過幾天應該會修正好
- 9月 26 週一 201115:35
Perl: 快速分解檔案路徑及名稱。 use File::Basename
不管使用什麼程式語言,常常會遇到要拆解檔案路徑和名稱的情況,有些有提供api使用,有些要自己手動來完成,Perl 則提供了一個好用模組來快速解決這問題。
範例如下:
#!/usr/bin/perl
use strict;
use warnings;
use File::Basename;
my $fullpath='YourFileFullpath';
my ($name, $path, $suffix) = fileparse($fullpath);
print "name=$name\n";
print "path=$path\n";
print "suffix=$suffix\n";
結果:
# On Unix
$fullpath="/foo/bar/baz";
# returns
$name="baz", $path="/foo/bar/", suffix="";
# On Windows
$fullpath='C:\foo\bar\baz';
# returns
$name="baz", $path='C:\foo\bar\', suffix="";
# get file name, It does NOT always return the file name portion of a path as you might expect. To be safe, if you want the file name portion of a path use fileparse() .
$fullpath="/foo/bar/baz";
my $name = basename($fullpath);
#return
$name="baz"
範例如下:
#!/usr/bin/perl
use strict;
use warnings;
use File::Basename;
my $fullpath='YourFileFullpath';
my ($name, $path, $suffix) = fileparse($fullpath);
print "name=$name\n";
print "path=$path\n";
print "suffix=$suffix\n";
結果:
# On Unix
$fullpath="/foo/bar/baz";
# returns
$name="baz", $path="/foo/bar/", suffix="";
# On Windows
$fullpath='C:\foo\bar\baz';
# returns
$name="baz", $path='C:\foo\bar\', suffix="";
# get file name, It does NOT always return the file name portion of a path as you might expect. To be safe, if you want the file name portion of a path use fileparse() .
$fullpath="/foo/bar/baz";
my $name = basename($fullpath);
#return
$name="baz"
- 9月 21 週三 201113:37
在CentOS (5.x) 開啟ftp(port 21)
CentOS 安裝完成後,預設只開放 Port 22 供外面連結,如要開放其他 port,如 ftp(port 21),要如何進行??
1. 察看 port 21 是否 listen
# netstat -tulnp | grep 21
2. 如 port 21 沒 listen, 啟動 vsftpd
# /etc/init.d/vsftpd start
3. 修改 iptables-config
# vim /etc/sysconfig/iptables-config
將 IPTABLES_MODULES 修改如下,兩模組間用一個空白區隔
IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp"
4. 修改 iptables
# vim /etc/sysconfig/iptables
複製 --dport 22 那一行到下一行,再修改 22 -> 21
ex:
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
5. 重啟 iptables
# /etc/init.d/iptables restart
6. 察看 iptables 現在運作的 rule
# iptables -L -n
7. 再預設的情況下,CentOS 的 ftp 並允許實體帳號登入取得家目錄的資料,所以下達 dir 不會有任何資料顯示(此為SELinux的限制,Linux 核心2.6之後版本,SELinux預設是啟動的)。
顯示 SELinux 相關設定
# getsebool -a | grep ftp
...
ftp_home_dir=off
# setsebool -P ftp_home_dir=1
1. 察看 port 21 是否 listen
# netstat -tulnp | grep 21
2. 如 port 21 沒 listen, 啟動 vsftpd
# /etc/init.d/vsftpd start
3. 修改 iptables-config
# vim /etc/sysconfig/iptables-config
將 IPTABLES_MODULES 修改如下,兩模組間用一個空白區隔
IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp"
4. 修改 iptables
# vim /etc/sysconfig/iptables
複製 --dport 22 那一行到下一行,再修改 22 -> 21
ex:
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
5. 重啟 iptables
# /etc/init.d/iptables restart
6. 察看 iptables 現在運作的 rule
# iptables -L -n
7. 再預設的情況下,CentOS 的 ftp 並允許實體帳號登入取得家目錄的資料,所以下達 dir 不會有任何資料顯示(此為SELinux的限制,Linux 核心2.6之後版本,SELinux預設是啟動的)。
顯示 SELinux 相關設定
# getsebool -a | grep ftp
...
ftp_home_dir=off
# setsebool -P ftp_home_dir=1


