-
MySQL 編碼函式
Posted on August 31st, 2007 No commentsMySQL 內建提供了一些編碼函式,以下會介紹 ENCODE() 及 DECODE() 的作用及用法:
ENCODE(str,pass_str)
將字串 str 加密,並使用 "pass_str" 作為加密鑰匙,例如:mysql> select encode("testing string", "mykey");
+ – - – - – - – - – - – - – - – - – +
| encode(“testing string”, “mykey”) |
+ – - – - – - – - – - – - – - – - – +
| �k��y����ۙ�( |
+ – - – - – - – - – - – - – - – - – +
1 row in set (0.00 sec)
DECODE(crypt_str,pass_str)
decode() 的作用就是對 encode() 加密的內容解碼,其中 crypt_str 是經過 encode() 加密的二進字串,而 pass_str 就是解密鑰匙。如果使用的鑰匙與加密時的鑰匙不同,回傳的結果便不會正確,用法如下:mysql> select decode(encode("testing string", "mykey"), "mykey");
+ – - – - – - – - – - – - – - – - – - – - – - – - – - +
| decode(encode(“testing string”, “mykey”), “mykey”) |
+ – - – - – - – - – - – - – - – - – - – - – - – - – - +
| testing string |
+ – - – - – - – - – - – - – - – - – - – - – - – - – - +
1 row in set (0.01 sec)
-
限制 MySQL 只接受 localhost 連線
Posted on August 30th, 2007 1 comment在預設的情況下 MySQL 接受所有連線,這個不是指 MySQL 的權限設定,而是 MySQL 有監聽它所使用的埠號。例如用 netstat 檢查會得出這個結果:
# netstat -an | grep 3306
tcp4 0 0 *.3306 *.* LISTEN
以下是在 FreeBSD 設定只接受 localhost 連線的方法:1. 開啟 /etc/rc.conf
2. 加入 mysql_args:
mysql_enable="YES"
mysql_args="–bind-address=127.0.0.1"
3. 重新啟動 mysql# /usr/local/etc/rc.d/mysql-server.sh restart現在可以再用 netstat 檢查一下,可以見到 MySQL 只監聽 127.0.0.1 的 3306 埠號:
# netstat -an | grep 3306
tcp4 0 0 127.0.0.1.3306 *.* LISTEN
-
PHP 讀取多重選項清單
Posted on August 29th, 2007 No comments在製作 HTML 表單的清單時,可以用 multiple 屬性讓使用者透過 Ctrl 鍵一次過選擇多個選項,例如:
HTML:但上面的 HTML 碼所傳送的 value 不能給 PHP 正確讀取,因為當同時選擇多個選項時,PHP 只可以讀取一個 value。要修正可以更改 select 的名稱,例如:
HTML:當傳送給 PHP 後,使用者所選取的選擇會放到 $_POST['box'] 陣列內。
-
Freebsd 找出空密碼帳號
Posted on August 28th, 2007 No comments有些系統用戶並沒有設定密碼,基於安全考慮,最好找出所有空密碼的帳號並暫時禁止登入。在 FreeBSD 可以透過 awk 在檔案 /etc/master.password 找出空密碼帳號,切換到 root 並輸入以下指令:
# awk -F: 'NF > 1 && $1 !~ /^[#+-]/ && $2=="" {print $0}' /etc/master.passwd
以上指令會用 awk 掃瞄 /etc/master.passwd,並以 : 作為分隔字串。並且找出 password 欄位 ($2) 空白的內容。如果系統內有空密碼帳號,便會用以下格式顯示:username::1099:1099::0:0:User &:/home/username:/bin/bash
當發現有空密碼帳號後,可以用以下指令進行 lock 及 unlock 的動作:
lock user
# pw lock username
unlock user
# pw unlock username
-
PHP 檢查信用卡號碼
Posted on August 26th, 2007 No comments現在網上購物越來越普及,所以對信用卡號碼的檢查也變得重要。要檢查信用卡號碼,一般可以用 LUHN 演算法來實現。現在大部份的主要信用卡也是使用 LUHN 演算法,包括 Visa, Master Card, American Express 及 Discover 等。LUHN 演算法只可以檢查信用卡號碼的合法性,而不會檢查信用卡其他資訊,包括是否過期。使用方法為:
1. 檢查信用卡號碼是否 16 位。
2. 將信用卡號碼切割成 16 個個別數字。
3. 將上面切割得的所有數字,由左至右起計,每逄單數位置的數值乘 2。
4. 將加總後所有結果都切割成個別數字再相加。
5. 將上面求得的總數求出 10 的餘數,如果餘數是 0 便表示信用卡號碼正確,否則便是錯誤。以下是 PHP 使用 LUHN 演算法檢查信用卡號碼的函式:
PHP:-
<?php
-
/* luhn_checker(): This is a small PHP function for checking valid *
-
* credit card with LUHN algorithm *
-
* *
-
* Last updated: 26 August 2007 *
-
* This is a free PHP script under GNU GPL version 2.0 or above *
-
* Copyright (C) 2007 Sam Tang *
-
* Feedback/comment/suggestions : http://www.real-blog.com/ */
-
-
function luhn_checker($card_num){
-
// 將非數字的字串移除
-
-
$sum = 0;
-
for($i=0; $i<strlen($card_num); $i++){
-
if(($i % 2) == 0){
-
// 在單數位置的數值乘 2
-
$digit = $digit * 2;
-
}
-
-
if ($digit> 9) $digit = $digit - 9;
-
$sum += $digit;
-
}
-
-
return TRUE;
-
}else{
-
return FALSE;
-
}
-
}
-
-
/* Example
-
if(luhn_checker("1234567812345678")){
-
echo "Correct!";
-
}else{
-
echo "Wrong card number!";
-
}
-
*/
-
?>
檔案下載: luhn_checker
-
-
PHP 列出目錄內容
Posted on August 26th, 2007 No comments以下是用 PHP 列出目錄內容的方法,當然也可以略為修改以程式碼改為 function 使用:
PHP:-
<?php
-
// 定義要開啟的目錄
-
$dir = "/var/www/vhosts/dir";
-
-
// 用 opendir() 開啟目錄,開啟失敗終止程式
-
-
-
// 用 readdir 讀取檔案內容
-
// 將 "." 及 ".." 排除不顯示
-
if($file != "." && $file != ".."){
-
echo "$file<br/>";
-
}
-
}
-
-
// 關閉目錄
-
?>
-
-
匯豐以股代息
Posted on August 23rd, 2007 No comments買入匯豐後,第一次收到銀行寄來的以股代息意向書,我選擇了全數以股票方式收取股息。股息要在 10 月 4 日才收到,要等到收到股息後才知道換股價。說實在的,現在匯豐的市價真的十分抵買,PE 及 PB 均明顯偏低,以現價計算,明年的股息率最少有 5 厘。
-
在 Linux 變更多個檔案副檔名
Posted on August 22nd, 2007 3 comments假如想變改當前目錄下所有檔案的副檔名,可以用一個 loop 完成:
for old in *.php5; do mv $old `basename $old .php5`.php; done
上面指令會在當前目錄裡面搜索所有 ".php5" 副檔名的檔案,然後逐一用 mv 變更為 ".php" 副檔名。
-
Python 連接 MySQL
Posted on August 20th, 2007 2 commentsMySQL 是十分流行的開源資料庫系統,很多網站也是使用 MySQL 作為後台資料儲存,而 Python 要連接 MySQL 可以使用 MySQL 模組。MySQLdb 模組可以讓 Python 程式連線到 MySQL server, 執行 SQL 語句及擷取資料等。
開始前要確定系統內的 Python 有安裝 MySQLdb 模式,你可以 Python command line interpreter 檢查,在指令模式輸入 python,然後便可以開始檢查:
Python 2.5.1 (r251:54863, May 2 2007, 16:56:35)
[GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
Traceback (most recent call last):
File "", line 1, in
ImportError: No module named MySQLdb
>>> exit()
如果見以上面的 "ImportError: No module named MySQLdb" 一句,便表示系統沒有安裝,到 MySQLdb 官方網站 下載 MySQLdb,並用以下方法安裝:$ tar zxvf MySQL-python-1.2.2.tar.gz
$ cd MySQL-python-1.2.2
$ python setup.py build
$ python setup.py install
安裝好 MySQLdb 後便可以編寫程式碼,以下是簡單的例子:CODE:-
#!/usr/bin/python
-
-
# 引入 MySQL 模組
-
import MySQLdb
-
-
# 連接到 MySQL
-
db = MySQLdb.connect(host="localhost", user="db_user", passwd="db_pass", db="db_name")
-
cursor = db.cursor()
-
-
# 執行 SQL 語句
-
cursor.execute("SELECT * FROM db_table")
-
result = cursor.fetchall()
-
-
# 輸出結果
-
for record in result:
-
print record[0]
-
-
PHP 透過 SMTP 發送郵件
Posted on August 20th, 2007 2 commentsPHPMailer 是一個功能豐富的函式庫,以下是用 PHPMailer 通過遠端 SMTP 認證發送郵件的例子:
PHP:-
<?php
-
// 建立 PHPMailer 物件及設定 SMTP 登入資訊
-
require("../phpMailer/class.phpmailer.php");
-
$mail = new PHPMailer();
-
$mail->IsSMTP(); // send via SMTP
-
$mail->Host = "remote.smtp.server"; // SMTP servers
-
$mail->SMTPAuth = true; // turn on SMTP authentication
-
$mail->Username = "me@localhost"; // SMTP username
-
$mail->Password = "123456"; // SMTP password
-
-
$mail->From = "myemail@localhost";
-
$mail->FromName = "My Name";
-
-
// 執行 $mail->AddAddress() 加入收件者,可以多個收件者
-
$mail->AddAddress("to@email.com","Josh Adams");
-
$mail->AddAddress("to2@email.com"); // optional name
-
-
$mail->AddReplyTo("jyu@aemtechnology.com","AEM");
-
-
$mail->WordWrap = 50; // set word wrap
-
-
// 執行 $mail->AddAttachment() 加入附件,可以多個附件
-
$mail->AddAttachment("path_to/file"); // attachment
-
$mail->AddAttachment("path_to_file2", "INF");
-
-
// 電郵內容,以下為發送 HTML 格式的郵件
-
$mail->IsHTML(true); // send as HTML
-
$mail->Subject = "testing email";
-
$mail->Body = "This is the <b>HTML body</b>";
-
$mail->AltBody = "This is the text-only body";
-
-
if(!$mail->Send())
-
{
-
echo "Message was not sent <p>";
-
exit;
-
}
-
-
echo "Message has been sent";
-
?>
-
-
開發 PHP5 的多工應用
Posted on August 18th, 2007 1 comment一直我也以為 PHP 沒有支援像 Java 或 C++ 的 threading 的功能,所以不可以寫到 multi-task (多工) 的應用程式。例如當應用程式需要擷取其他網站的內容,應用程式會延遲執行,直至完成擷取遠端的資料為止。原來現在已經可以用 stream_select 及 stream_socket_client 實現 PHP multitasking。
這篇在 developerWorks 的文章介紹了在 PHP 的 multitasking 及 threading:
Develop multitasking applications with PHP V5
昨天的股市真的如坐過山車,我只在收市看見點數跌二百多點,那時以為跌得不多,誰知原來曾跌過 1285 點。無論如何,自己也沒有在這次調整估貨,反而會看看星期一有沒有買貨的機會。我的兩隻千里馬招商銀行 (3968) 及平安保險 (2318) 公佈了中期業績,也交出了理想的成績單,對於有實質盈利支持的股份,在跌市時才也會較有信心。
-
讓 crontab 自動排程執行 php
Posted on August 9th, 2007 1 comment要用 crontab 自動執行 php 程式,可以這樣做:
方法一
1. 在 php 程式的第一行加入:#!/usr/local/php/bin/php -q
例如:
PHP:-
#!/usr/local/php/bin/php -q
-
<?php
-
$foo = 123;
-
?>
請留意,我的 php 是安裝在 /usr/local/php,請根據你的 php 執行檔位置作出修改。
2. 將 php 程式給予可執行權限:
chmod +x testing.php
3. 執行 crontab -e,然後加入以下內容:
00 00 * * * /path/to/testing.php > /dev/null 2>&2
以上語法會在每天的零時零分執行 /path/to/testing.php
方法二
另一個方法是不用在 php 程式的第一行加入 "#!/usr/local/php/bin/php -q",可以省略第一步及第二步,直接執行 crontab -e,並輸入以下內容:00 00 * * * usr/local/php/bin/php -q /path/to/testing.php > /dev/null 2>&2
這個方法的結果跟方法一的結果相同。
-
-
開始了月供股票計劃
Posted on August 5th, 2007 2 comments比較過幾間銀行的月供股票計劃後,覺得中銀的計劃最適合自己,星期五登記了計劃,今個月十號開始扣數。
股票選擇了 <2318> 平安保險及 <3968> 招商銀行。媽媽問為何股市升到這麼高點還要供款,這就是月供股票的優點。因為每月固定供款是使用了平均成本法,當股價下調時便買入較多股數;當股價上升便買入較少股數。這樣就無需在乎股價的短線波動,只要供款的股票長線上升就可以了,而且什麼時候開始也沒問題。
個人認為收費十分便宜,每月收取供款額的 0.25%,或者最低 $50 的收費,當中已包括佣金、印花稅、交易徵費及交易處理費。而且供款十分靈活,可以隨時暫停供款及重新開始。這個費用已經比起很多基金的 5% 認購費 + 每年 1% 至 2.5% 的管理費便宜。
現時自己的基金不會斷供,如果中途斷供會被徵收費用,只是往後自己想增加投資儲蓄時,會偏向月供股票的形式。因為我覺得如果連同交易費用一同計算,自己選股取得的回報率不會比基金低,且看看這決定是否正確。
-
跌市沒什麼好怕
Posted on August 1st, 2007 No comments今日恆指最多跌過 975 點,收市跌幅收窄為跌 729 點。可能有些人很怕股市下調,但我已經開始沒什麼感覺,因為自己沒有打算沽貨,所以早前股市創新高也只不過是 "紙上富貴"。而自己心目中的優質股裡面,除了匯豐外,其他也升到一個不合理的水平,如果可以調整一下,反而給予自己買入的機會。至於自己的理財目標,就是 40 歲達致財務自由,即靠股息/利息收入足夠支付自己的生活費。
昨天減持手上的中石油,原因很簡單,股神巴菲特減持對我的心理影響頗大。正因如此,今天剛好有一點資金買貨,將原本沽出中石油的錢以 $63.2 增持了平保。
