Wednesday, January 7, 2009

利用PHP製作圖表

今天在Google如何利用PHP製作圖表時 找到一個很不錯的東西 -- Chart
Chart是一個PHP Library,可以讓我們很簡單的透過它繪製出圖表,而且安裝設定很簡單,使用起來也很簡單。Chart同時也是一個Open Source的Library

附註:我是以Windows的環境測試這個程式,Chart本身設定應該就是for Linux,所以我想Linux底下跑應該是沒有什麼問題。以下則是以Windows環境搭配Apache Server來做示範

首先我們先將Chart Library先Download下來:
http://quimby.gnus.org/circus/chart/chart-0.8.tar.gz


然後解壓縮之後將chart.php、rgb.php、IsoLatin1.enc三個檔案放到Appserv的網頁目錄底下,以我的電腦為例的話是C:\apache\htdocs。因為這個程式需要使用到GD函式庫,所以我們必須要將PHP設定可支援GD函式庫,所以我們到C:\WINDOWS底下找到一個php.ini的檔案,並且找到一行是:

extension=php_gd2.dll

在這一行的最前面我們會看到有一個分號(;),把分號去掉,重新啟動Apache。如果沒有分號,則表示已經啟動GD函式庫

接下來就要設定chart.php裡的一些config,找到下面幾行,並更改設定為下面的樣子

//設為剛剛我們複製到的目錄底下
$chart_cache_directory = "C:\apache\htdocs";
//設為剛剛我們複製到的路徑
$type1_font_encoding = "C:\apache\htdocs\Chart\IsoLatin1.enc";


接著就是寫測試程式的時候了!下面是測試程式 Code

example.php:

require('chart.php');
$state = array(
1,
1,
0,
1,
0
);
$time = array(
12,
13,
14,
15,
16
);
$chart = new chart(300, 200);
$chart->plot($state, $time, "red", "gradient", "black", 0);
$chart->stroke();
?>


就只有幾行的Code 就可以看到產生出來的圖表了!我們打開瀏覽器瀏覽我們剛剛寫的網頁,就可以看到如下面這個圖表了



Reference:
Chart Library

Tuesday, January 6, 2009

Google Toolbar 5 & IE Problem

今天開電腦裡的IE時,發現無法開啟IE,用工作管理員去看的時候發現,IE會開一下就關閉

後來用Google這個問題,發現似乎停用Google Toolbar就可以了!?試的結果真的是這樣。網址如下:
http://forums.microsoft.com/Technet-CHT/ShowPost.aspx?PostID=4274581&SiteID=23

因為之前使用Google Toolbar都沒有這個問題,我的環境
O.S. : Windows XP
Browser : IE 6
Google Toolbar : Google Toolbar 5

後來發現使用Google Toolbar 4的版本 就沒有這個問題了
載點

Monday, January 5, 2009

C# WinForm Socket

C# WinForm要使用Socket要注意的事還不少!因為若Socket要和WinForm是同時運行的,就必須使用到Thread,而使用到Thread就必須要小心結束WinForm的時候。Socket Thread是不是也一起結束了,如果沒有一起結束,就會留著一個孤兒程序在系統中,這樣會引起不必要的麻煩。若之後又要使用到Socket資源,很可能就會造成問題。所以在使用Socket Thread的時候,必須要小心

而我在建立Socket Thread的時候就先將Socket Thread設為Background執行,而將Thread設為Background跟Foreground有什麼不同呢?

根據MSDN所寫:
執行緒不是背景執行緒就是前景執行緒。背景執行緒和前景執行緒相同,唯一差別在於背景執行緒不會防止處理序終止。一旦終止屬於處理序的所有前景執行緒之後,Common Language Runtime 就會結束處理序。剩下的所有背景執行緒則會在尚未完成之前全部停止。


所以當我們結束WinForm的時候 Socket Thread也會跟著停止

Reference:
MSDN