Microsoft 開始一項名為 DreamSpark 的活動,內容是讓學生可以免費用微軟的軟件開發工具。一套完整的 .net 開發平始十分昂貴,要購買這類昂貴的商業軟件才可以學習一門技術,那已經對入門已經加上一重障礙,這項舉動無疑可以讓學生更早接觸微軟的開發工具。
如果你是全職學生,只要到 DreamSpark 網站登記,那便可以免費下載以下產品:
– Microsoft Visual Studio 2008 Professional Edition
– Windows Server 2003 Standard Edition
– Microsoft SQL Server 2005 Developer Edition
– Microsoft Expression Studio
– Game Studio 2.0
– Creators Club Online
– Microsoft Visual Studio 2005 Professional Edition
– Microsoft Visual C# 2005 Express Edition
– Microsoft Visual C++ 2005 Express Edition
– Microsoft Visual Basic 2005 Express Edition
– Microsoft SQL Server 2005 Express Edition
– Microsoft Visual Web 2005 Express Edition
– Microsoft Visual J++ 2005 Express Edition
– Microsoft Visual PC
大家如有看一些 phone-in 的財經節目,一定會聽過支持位、阻力位、黃金比率等字眼,這些都是股票技術分析的名詞。看技術分析一般是從事短線買賣,或者對於長線投資者,希望從技術分析捕捉一個較佳的入市位。
我沒有學過技術分析,也不打算學,因為個人較認同基本分析,相信股價長遠而言會和盈利掛鈎,而且基本因素比技術因素較紮實。如果公司有優秀的業績,那麼即使股價下跌也會較有信心。
近期比較少留意財經消息,因為這個月較多工作。正如特首所講:「我要做好呢份工」,做好正職才是根本,從沒想過全職炒股,搞不好分分鐘成為病態股民,我買股票的目的只是對抗通漲及資本增值。
可以打開 HTTP socket 連線及傳送 HTTP POST 指令,以下是範例:
PHP:
-
<?php
-
// Generate the request header
-
$ReqHeader =
-
"POST $URI HTTP/1.1n".
-
"Host: $Hostn".
-
"Content-Type: application/x-www-form-urlencodedn".
-
"Content-Length: $ContentLengthnn".
-
"$ReqBodyn";
-
-
// Open the connection to the host
-
$socket =
fsockopen($Host,
80, &
$errno, &
$errstr);
-
if (!$socket){
-
-
$Result["errno"] = $errno;
-
$Result["errstr"] = $errstr;
-
return $Result;
-
}
-
$idx = 0;
-
fputs($socket,
$ReqHeader);
-
-
$Result[$idx++
] =
fgets($socket,
128);
-
}
-
//-------------------------------------------
-
?>
或者可以使用 PHP 的 cURL extension。當你安裝了 cURL 及重新編譯 PHP 支援 cURL後,便可以用以下這個較簡單的方法:
PHP:
-
<?php
-
$URL="www.mysite.com/test.php";
-
$ch = curl_init();
-
curl_setopt($ch, CURLOPT_URL,"https://$URL");
-
curl_setopt($ch, CURLOPT_POST, 1);
-
curl_setopt($ch, CURLOPT_POSTFIELDS, "Data1=blah&Data2=blah");curl_exec ($ch);
-
curl_close ($ch);
-
?>
其實這個方法不單可以用在 MySQL,在其他資料庫及非圖片也應該也沒問題,原理是 使用 base64_encode() 將檔案轉成 MIME base64 字串編碼,然後放入資料表,當然儲存檔案用的欄位要夠大才可以,在取出時用 base64_decode() 回復原狀即可,以下是例子:
PHP:
-
<?php
-
-
mysql_query("insert into table_name values ('$file_str')");
-
?>
如果在 PHP 想將數值自動補零,例如以 00, 01, 02 ...... 等方式顯示,可以用以下方法:
$var = 1;
echo sprintf("%02d", $var);
這樣就會印出 01,其中 2 是顯示的位數,如果想顯示 001,可以改成 sprintf("%03d", $var);
早前替客戶開發了一個系統,原本沒遇到問題,但這個星期他們致電給我說不能輸入中文。這時覺得奇怪,MySQL 內的 table 欄位已設成 utf8,而輸入介面及顯示頁面的編碼均為 utf8。
然後在 MySQL 官方網站的 Character Set Support 找到解決方法。
只要在查詣資料表時使用 SET NAMES 'utf8'; 即可解決,這個語句等同於以下句:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
因為 MySQL 在 4.1 或以上的版本的認證加密方法更改了,那即是說在 php 程式內即使密碼正確也會連接失敗。解決方法為:
1. 重新編譯 PHP
將 --with-mysql 的選項改為 --with-mysqli=mysql_config_path/mysql_config,其中 mysq_config_path 是 MySQL 的安裝路徑下的 bin 目錄。
2. 修改 my.cnf
打開 /etc/my.cnf,在 "[mysqld]" 下加入一行
old-passwords
然後重啟 MySQL,這樣就會強逼 MySQL 使用舊加密認證。
如果要在資料庫內隨機抽取資料,可以用 PHP 或 MySQL 內置的 RAND() 函式來做,以下是使用 MySQL 的語法:
SELECT * FROM table_name ORDER BY RAND() LIMIT 1;
只要在系統安裝 ImageMagick 後,就可以在指令模式下製作各種圖片的持效。當然也可以使用 PHP 從 shell 下使用 ImageMagick,以下是製作縮圖的方法:
shell_exec("/usr/local/bin/convert -sample 500x500 /pathto/images/image1.jpg /pathto/images/image2.jpg");
以上是將來源圖片 /pathto/images/image1.jpg 製作縮圖,高和闊都以 500 像素為上限,那就是說製作出的縮圖會根據原始圖片的比例下,高和閣都不會超出 500 像素,然後檔案會輸出到 /pathto/images/image2.jpg.
如果要單單用 PHP 完成以上工作,要自行計算出縮圖片大小才可以做,而且更加可以用百份比,例如 50%x50% 就是高和闊都是原圖的 50% 大小。
如果你的 PHP 程式需要做很複雜的運算,而且預計不能在 30 秒 (PHP 的預設值) 內完成,可以在 PHP 程式的開始部份加上:
set_time_limit(900);
以上例子是將 timeout 時間設定成 900 秒,即 15 分鐘。
一般上使用 MySQL 都是儲存資料及需要時抽取所需的資料,其實 MySQL 還有很多其他功能,以下介紹使用 MySQL 的變數刪除一些舊資料:
select @del_time:=`time` from `article` order by `time` desc limit 499, 1;
delete from `article` where `time`
以上第一行 SQL,會定義一個 del_time 變數,value 是資料表 article 倒序排第 500 筆的 `time` 欄位。
第二句是刪除在 article 資料表內時間比 del_time 還要舊的文章。
Visual Studio 2008 已經開放下載,在 Visual Studio 2008 Express Developer Center 包括所有 Visual Studio 2008 的免費版本及 SQL Server 2005 Express (2008 版本開放時會更換)。裡面還有一些範例及資源,例如 Facebook Dev Kit 及 Game Creators Game Development Kit。
開寫程式時一般上會用上 Integrated Development Environment (IDE),這裡有超過 70 個 IDE,包括有 C/C++, Java, Perl, ASP.net, PHP, Python 及 Ruby:
Read more...
今天將 laptop 升級為 Ubuntu 7.10,新版本的開發代號為 Gutsy Gibbon,照例 Ubuntu 的開發團隊也沒有令我們失望。主要更新包括 Ubuntu 7.10 將 Linux kernel 更新為 2.6.22,桌面環境建構在 X.org 7.2 上,glibc 及 GCC 的版本分別為 2.6 及 4.2。
印象最深刻的是驅動程式的部份,當我安裝好系統後,系統便自動彈出有新的顯示咭驅動程式,跟著指示很快便更新完成,感覺真的很方便。另外用上一個版本當瀏覽一些較多 client side 語言之類的網站時,會出現很慢的情況,不知是 Firefox 還是其他套件的改進,現在瀏覽頁面較複雜的網頁時也很暢順。其他更新包括:
-- 預設已經支援 NTFS 寫入檔案系統,不用手動安裝。
-- 內建 Compiz 0.6.0 及 Compiz Fusion 0.5.2,可以實現超炫的 3D 桌面效果。
-- 使用 Gnome 2.20,OpenOffice.org 2.3,IMP 2.4 RC 3 及即時通訊軟件 Pidgin 2.2.1。
MySQL 內建提供了一些編碼函式,以下會介紹 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)