網絡技術日誌
關於 PHP, Linux, Open Source 及個人生活記載的網誌。-
PHP 的 is_file() 及 file_exists()
Posted on December 9th, 2011 No commentsPHP 的 is_file() 及 file_exists() 都是用作檢查檔案是否存在,它們的分別是 file_exists() 輸入的參數是目錄也會回傳 TRUE,而 is_file() 則只會對檔案回傳 TRUE:
PHP:但如果用 is_file(),即使 /path/to/dir 目錄存在,仍然會回傳 FALSE:
PHP:
-
MySQL 的流程控制
Posted on December 8th, 2011 No commentsMySQL 有幾個流程控制的 functions,以下是它們的用法簡介:
1. CASE
它就如同其他程式語言的 switch:// Below will return zero
SELECT CASE 0 WHEN 0 THEN 'zero' WHEN 1 THEN 'one' ELSE 'no one' END;// Below will return true
SELECT CASE WHEN 5>2 THEN 'true' ELSE 'false' END;2. IF
SELECT IF(expr1,expr2,expr3);// return yes
SELECT IF(1<5,'yes','no');3. IFNULL
SELECT IFNULL(expr1, expr2);// Return 5
SELECT IFNULL(5,0);// Return 10
SELECT IFNULL(NULL,10);4. NULLIF
SELECT NULLIF(expr1,expr2);// Return NULL
SELECT NULLIF(5,5);// Return 10
SELECT NULLIF(10,4);
-
MySQL 的 Safe Update Mode
Posted on December 6th, 2011 No comments最近要更新 MySQL 資料表內其中一個欄位的所有資料,只是用以下這個 SQL 指令:
UPDATE table_name SET field_name=0;
個 MySQL 回傳的錯誤訊息為:
"You are using safe update mode and you tried to update a table without a WHERE clause that uses a KEY column."
查看一些資料後,原來 MySQL 在沒有 WHERE 或 LIMIT 條件下會拒絕執行 UPDATE 或 DELETE querey,即使是沒有 KEY column 的 WHERE 條件也會拒絕執行。
要解決就是將 MySQL 的 Safe Update Mode 關閉:
SET SQL_SAFE_UPDATES=0;
UPDATE table_name SET field_name=0;如果要重新啟用 Safe Update Mode,只要執行:
SET SQL_SAFE_UPDATES=1;
-
刪除 tarball 內的檔案
Posted on December 5th, 2011 No comments如果想刪除 tarball 內的個別檔案,可以用 tar 指令實現,首先用以下指令查看 tarball 內的檔案內容:
# tar -tvf test.tar
然後就可以用以下指令刪除檔案,以下會假設刪除 del_file.txt 檔案:
# tar --delete -f test.tar del_file.txt
如果想一次過刪除多個檔案,也可以用 * 符號配合 --wildcards 選項:
# tar --wildcards --delete -f test.tar 'del_file.*'
請注意,以上方法只支援 tarball 檔案,而並不支援 tar.gz 或 tar.bz2。
-
免費省電軟件 — Granola
Posted on December 2nd, 2011 No commentsGranola 是一套智能省電軟件,它可以在不影響電腦正常使用的情況下節省用電,原理就是當電腦閒置時使用較少的 CPU 資源,而且 Granola 支援 Windows 及 Linux 平台。
-
取消 Firefox 安裝插件時倒數計時
Posted on December 1st, 2011 No comments在 Firefox 安裝插件時,預設會倒數幾秒鐘才可以安裝,如果覺得麻煩可以這樣取消:
1. 在網址列輸入 "about:config",再按 "我發誓,我一定會小心的!"。
2. 找出 "security.dialog_enable_delay"。
3. 將數值條改為 "0" 再按確定就完成了。
-
ScanGauge 讀取 ATF 溫度
Posted on November 10th, 2011 No comments之前買到的 ScanGauge 有編程功能,只要車上的 ECU 有這個數據,又知道查詢的 PID,可以自行寫入指令,以下是查詢 ATF 波箱油溫度的指令,在我的 NZE 121 上可以正常顯示:
TXD: 686AF101B4
RXF: 044105B40000
RXD: 2808
MTH: 00010001FFD8
NAME: ATF上面會顯示攝氏溫溫,如果想顯示華氏溫度,只要將 MTH 一行改成: 00090005FFD8
-
淘寶買的 ScanGauge Plus 及 MaxiScan MS509
Posted on September 1st, 2011 1 comment今次是第一次在淘寶購物,原來除了用信用咭付款後,到 OK 便利店也可以給支付寶充值,但匯率好貴,每 1 人民幣對 1.26 港元。付款後當天店家便出貨,在香港第二天就收到貨了,但順豐速遞會對偏遠地區收取 $30 的附加費。
今次買的兩件產品也與汽車有關,分別是 ScanGauge Plus 及 MaxiScan MS509,兩件貨品連同匯率及送到香港的運費大概 $900。
這個是 ScanGauge Plus

ScanGauge Plus 的功能很多,包括實時油耗、水溫、進氣溫度、轉數、節氣門開啟角度等等..... 還可以讀取固障碼及清除固障碼,在我的 NZE 121 安裝後操作正常。
另一個是 MaxiScan MS509

這個沒什麼特別,用作讀取固障碼及清除固障碼,測試後操作正常。
-
Shell Script 輸出顏色文字
Posted on August 24th, 2011 No commentsShell Script 可以控制輸出文字的顏色,做法與 html 相似,只是使用 ANSI escape codes 控制顏色輸出。顯示顏色文字的格式如下:
\33[ 樣式 ; 文字顏色 ; 背景顏色 m
輸出文字
\33[0m以下是樣色、顏色及背景顏色的可供選項:
文字樣式:
0 一般樣式
1 粗體
4 加底線
5 灰底
7 文字及背景顏色對調文字顏色:
30 黑色
31 紅色
32 綠色
33 黃色
34 藍色
35 紫色
36 青綠
37 白色背景顏色:
40 黑色
41 紅色
42 綠色
43 黃色
44 藍色
45 紫色
46 青綠
47 白色以下是在 shell script 的使用方法:
PHP:-
#!/bin/bash
-
# This script echoes colors and codes
-
-
echo -e "\n\033[4;31mLight Colors\033[0m \t\t\033[1;4;31mDark Colors\033[0m"
-
-
echo -e "\e[0;30;47m Black \e[0m 0;30m \t\e[1;30;40m Dark Gray \e[0m 1;30m"
-
echo -e "\e[0;31;47m Red \e[0m 0;31m \t\e[1;31;40m Dark Red \e[0m 1;31m"
-
echo -e "\e[0;32;47m Green \e[0m 0;32m \t\e[1;32;40m Dark Green \e[0m 1;32m"
-
echo -e "\e[0;33;47m Brown \e[0m 0;33m \t\e[1;33;40m Yellow \e[0m 1;33m"
-
echo -e "\e[0;34;47m Blue \e[0m 0;34m \t\e[1;34;40m Dark Blue \e[0m 1;34m"
-
echo -e "\e[0;35;47m Magenta \e[0m 0;35m \t\e[1;35;40m DarkMagenta\e[0m 1;35m"
-
echo -e "\e[0;36;47m Cyan \e[0m 0;36m \t\e[1;36;40m Dark Cyan \e[0m 1;36m"
-
echo -e "\e[0;37;47m LightGray\e[0m 0;37m \t\e[1;37;40m White \e[0m 1;37m"
-
-
Unix 及 Windows 文字檔案轉換
Posted on August 23rd, 2011 No comments在 Unix 及 Windows 裡面所儲存的文字檔案,最大分別是換新一行的顯示。Unix 會使用 EOL 作為跳行;而 Windows 則會使用 Ctrl-m (^M)。在 Linux 下可以用 dos2unix 及 unix2dos 將 Unix 及 Windows 的文字檔轉換:
$ unix2dos unix_text.txt win_text.txt
以上指令就會將 unix_text.txt 轉換成 windows 格式,並儲存到 win_text.txt,如果要將 windows 文字檔轉成 unix 文字檔,只要這樣:
$ dos2unix win_text.txt unix_text.txt
-
Linux — 檢視 kernel module (驅動程式) 版本
Posted on August 22nd, 2011 No comments要檢視 Linux 下 kernel module (驅動程式) 的版本,可以透過 modinfo 指令實現。首先要知道要查詢的 kernel module 名稱,輸入 lsmod 指令使會列出所有載入的 modules。
例如要找出 mptscsih 所使用的版本,只要輸入:
# modinfo mptscsih
然後系統便會列出關於 mptscsih 所資訊,其中 Version 就是 module 的版本。
-
Linux — 列出一個進程正在使用的檔案
Posted on August 19th, 2011 No comments要找出一個進程正在使用的檔案,首先要知道檔案的 process ID,可以用 ps 指令實現:
# ps aux | grep mysql
記下進程的 process ID 後,可以透過 /proc 檔案系統或 lsof 指令查詢,它們的使用方法如下:
/proc
假如 process ID 為 4252,只要用 ls 指令查視 /proc/4252/fd 目錄:# ls -l /proc/4252/fd
lsof 指令
# lsof -a -p 4252
-
阻檔嘗試入侵的 IP — Fail2Ban
Posted on August 17th, 2011 No commentsFail2Ban 是一套用 Python 寫成的系統安全工具,它會監察伺服器的紀錄檔,當出現多次登入錯誤後,便會觸發一些安全動作,例如將 IP 封鎖或用 Email 通知系統管理員等。Fail2Ban 相當具彈性,可以針對自己的需求設定不同的過濾規則,而 Fail2Ban 已經內建多個過濾規則,包含一些熱門伺服器軟件的過濾規則,支援 sshd, web server, ftp server, dns server 等。
安裝方法:
1. Fail2Ban 是以 Python 寫成,所以要先確定系統有安裝 Python,在 Redhat 安裝 Python 的方法是:
# yum install python python-devel gamin-python2. 然後安裝 EPEL Repos 及 Fail2Ban
Centos 5 x86_64:
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpmCentOS 5 i386:
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpmCentOS 4:
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/4/i386/epel-release-4-10.noarch.rpm安裝 fail2ban:
# yum install fail2ban設定方法:
安裝 Fail2Ban 後,可以開啟 /etc/fail2ban/jail.conf 進行設定,主要的幾個設定為:ignoreip = 127.0.0.1 ( 忽略的 ip )
bantime = 86400 ( 封鎖 ip 的時間, 以秒為單位, 這裡是 1 天 )
findtime = 600 ( 錯誤登入的時間 )
maxretry = 3 ( 在 findtime 時間內發生的錯誤發入次數 )設定 SSHD
在 /etc/fail2ban/jail.conf 內找到 [ssh-iptables] 段落,將 enabled 設定成 true,例如:[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=SSH, protocol=tcp]
logpath = /var/log/secure
maxretry = 3修改檔案後,要重新啟動 Fail2Ban:
# /etc/rc.d/init.d/fail2ban restart要觀察 Fail2Ban 的狀態,可以查看紀錄檔 /var/log/fail2ban.log,或者用 iptables 查看:
# iptables -nvL
-
透過 htaccess 設定 Character Set
Posted on August 15th, 2011 No comments要設定網站的 Character Set,除了在 httpd.conf 設定外,還可以在 .htaccess 對個別網站設定,格式如下:
AddDefaultCharset utf-8
以上這行便會設定網站預設使用 utf-8 編碼,如果只想對特定檔案設定 Character Set,可以這樣做:
AddCharset utf-8 .html .htm .css .js .xml .json .rss
這樣就可以設定 .html, .htm, .css, .js, .xml, .json 及 .rss 的預設 Character Set 使用 utf-8.
-
MySQL 效能優化工具 — MySQLTuner
Posted on August 9th, 2011 No commentsMySQLTuner 是一個針對 MySQL 效能的分析 Perl script,它會根據採集到的數據,給予修改 my.cnf 的設定值建議,從而改善 MySQL 的執行效率。
要執行 MySQLTuner 十分簡單,只要下載後並給予執行權限便可直接執行:
wget http://mysqltuner.com/mysqltuner.pl
chmod +x mysqltuner.pl
然後便可以直接執行 mysqltuner.pl:./mysqltuner.pl
這時 MySQLTuner 會詢問 mysql 的管理員用戶名稱及密碼,然後便會採集數據並產生報告。而報告的最後是 Recommendations 部份,是可以在 my.cnf 的 [mysqld] 調整的設定值,修改的設定值後需要重新啟動 mysql 才會生效。
