2009年2月7日 星期六

PHP - ADODB $ADODB_FETCH_MODE 決定資料集以那種方式將資料傳給陣列

$ADODB_FETCH_MODE 這個全域變數決定了資料集以那種方式將資料傳給陣列,資料集在被建立時(如 Execute() 或 SelectLimit() )會把本變數 $ADODB_FETCH_MODE 的值保存下來,而隨後本變數 $ADODB_FETCH_MODE 的任何改變都不會影響到現存的資料集,只有在以後資料集被建立起來時才會改變。

以下為為已定義的常數:

define('ADODB_FETCH_DEFAULT',0);
define('ADODB_FETCH_NUM',1);
define('ADODB_FETCH_ASSOC',2);
define('ADODB_FETCH_BOTH',3);

以下為一個使用的例子:

在本範例中,如你所見兩個資料集在被 Execute() 建立時,會依據 $ADODB_FERCH_MODE 的值來決定儲存及使用的存取模式。

如果沒有任何的模式被定義,預設值則是 ADODB_FETCH_DEFAULT。呈現的預設模式則依據資料庫驅動程式而有所不同,所以不要依賴 ADODB_FETCH_DEFAULT。為了可攜性,我們建議你固定為 ADODB_FETCH_NUM 及 ADODB_FETCH_ASSOC,因為有許多驅動程式並不支援 ADODB_FETCH_BOTH。

假如你有多個連結物件,並且想要有不同的 fetch 模式給每個連結,那麼就使用 SetFetchMode() 函數,一旦連結的物件呼叫這個函數,那麼連結物件會忽略全域變數 $ADODB_FETCH_MODE 並且自己會使用內部的 fetchMode 屬性。

要取得之前的 fetch 模式,你可以使用檢查 $db->fetchMode 屬性,或使用 SetFetchMode() 的傳回值。

PHP - Filter Functions 過濾器

在以往要檢查 E-mail 格式是否正確,我們通常都是透過寫正規表示式來做判斷,如下︰

但在 PHP5 之後,可以直接透過 Filter 函數,有更方便的作法,如下︰


深入閱讀︰
PHP Manual - Filter Functions
w3school 在线教程 - PHP Filter 函数

2008年12月26日 星期五

Google Analytics 流量統計名詞解釋

訪客 Vistors

‧PageView 網頁檢視

PageView,又可簡稱為「PV」。PV 代表站內網頁被檢索查看的總次數。當一個訪客來到你的網站後,看了首頁與兩篇文章,總共檢視了三個網頁,那麼你的部落格PV便會加上 3。

‧Visit 造訪次數

「造訪次數」一般被認為是查看網站行銷效果與熱門度的基本指標,對於其他統合參數來說,「Visit」也常是必要的參考值,這是因為這項數據更具體的代表了「每一次實質的到訪行為」。例如有一個訪客來到你的網站看了兩三個網頁,然後離開網站,或者在短時間內(Google Analytics 預設為 30 分鐘)重複進出你的網站,那麼這整個瀏覽過程中這位訪客只會被計算為一次的 Visit。但是只要超過時限,「造訪次數」就不會管訪客之間是否為同一個人,都會被計算為新的一次實質造訪行為。

‧Absolute Unique Visitor 絕對特定訪客

這是 Google Analytics 比較特殊的一項設計,Absolute Unique Visitor(絕對特定訪客)是比 Visit 更嚴格的計算法。它的計算方式是,在一段特定時間內(這段時間依據你在 Google Analytics 上方圖表拉出的時間長度而定),不管到訪網站幾次,只要是同一個訪客,都只會被計算為一位絕對特定訪客,也就是不重複的瀏覽者數量。

‧Vistor 訪客

當我們在 Google Analytics 中使用圖表上方的下拉選單,想要改變圖表的數據項目時,你會看到一個「Vistors 訪客」的項目,這個項目顯示的數值會比「Visit 造訪次數」稍低,為什麼呢?因為這裡的「Vistors 訪客」指得就是「每天的絕對特定訪客」,亦即「每日不重複訪客」數目。一般來說,Google Analytics 預設會在它的圖表中優先顯示這個項目的數據。

‧New Visitor 新訪客

「在某段時間內只造訪你部落格一次」的訪客數量。

‧Returning Visitor 舊訪客

如果訪客曾經來過你的網站,那麼統計就會將其計算為「Returning Vistors」。

‧Average Pageview 平均網頁檢視

平均網頁檢視就是「網頁檢視數」除以「造訪次數」,就可以得到在每次部落格上的實質訪問行為裡,平均會被瀏覽多少個網頁。

‧Time on Site 網站停留時間

每一位訪客平均停留在你網站的時間。統計服務會記錄每一次「Visit 造訪」的時間長度,,然後除以「總造訪次數」,就可以得到這個平均值。

‧Bounce Rate 退回率

訪客只造訪一個網頁就離開網站的比率。基本的算法是「只看一個網頁的造訪次數」除以「總造訪次數」。

‧Visitor Loyalty 忠誠度

在訪客忠誠度裡,會依據不同的重複造訪次數,來顯示每個區段在總體造訪次數中所佔的比例,也就是說你可以看到有多少訪問是忠誠的不斷到訪,又有多少訪問是隨機的臨時拜訪。

‧Visitor Recency 新近度

訪客新近度意即,訪客上一次來看你的網站是多久以前?(也可以說是訪客們都隔多久來看一次你的網站)你可以看到從 0 天、1 天到 365 天等不同時間點所擁有的訪客比率。有些訪客可能已經一年都沒有再回到你的網站,這其實也表示他們可能對你網站不感興趣。另外因為「0 天前」這個項目也包含了新訪客的數目在裡面,所以判讀上需要考慮這個額外因素。

‧Length of Visit 造訪時間長度

在造訪時間長度中顯示,總造訪次數在不同的「停留時間區段」裡的分佈情形。

‧Depth of Visit 造訪閱讀量

在造訪閱讀量中顯示,總造訪次數在不同的「閱讀頁數區段」裡的分佈情形。

流量來源 Traffic Sources

‧Direct Traffic 直接流量

些訪客並非透過任何網站轉到你的網站,他們可能是透過已經存在瀏覽器中的書籤、或直接在網址列輸入網址而來,這些都被稱為 Direct Traffic。擁有直接流量對於一個網站來說,這表示已經有讀者把你的網站視為「他們想看的目標」,所以他們才會儲存你的網址,才會想到要看時,直接連進你的網站。

‧Referring Site 推薦連結網站

這項服務告訴你,訪客都是透過哪些網站的推薦而來到這裡(實際的計算情形是,你的網址連結出現在別的網站,其他人透過點擊這些連結而進入你的網站的數目)。

‧Search Engines 搜索引擎

這個數據就是告訴你,訪客都是透過哪些搜索引擎來找到你的網站。

‧Keyword 關鍵字

這項數據的意義是說,你的訪客都是透過在搜索引擎搜索哪些關鍵字而來到你的網站。

內容 Content

‧Top Content 主要內容

這個項目會列出你的網站中最常被瀏覽的網頁網址,點擊特定網址後可以看到該網頁的獨立統計數據,例如專屬這個網頁的停留時間、退回率,和長時間的流量變化。

‧Content by Title 標題內容

標題內容其實有點像文字化的主要內容,「主要內容」列表顯示的是每個獨立的網址的瀏覽量,而「標題內容」裡面顯示的是以網頁標題為主的瀏覽量。有時候,訪客可能用不同的網址在瀏覽你同一個標題下的網頁,它們其實是同一個網頁,會這樣的原因之一,是有些人可能是透過網頁代理來瀏覽你的網站,因此統計時看到的是不同的網址,這時候透過「同一個標題」,就可以把這些相關網址都集合在一起統計。

‧Content Drilldown 內容深入

這個項目是把你網站裡的網址分層檢索,然後讓你層層深入的去查看每一層級網址的流量。

‧Top Landing Pages 主要到達網頁

這個資料可以告訴你訪客通常都從網站中的哪幾個網頁進入你的網站。

‧Top Exits 主要離開網頁

這個資料可以告訴你訪客通常都從網站中的哪幾個網頁離開你的網站。


深入閱讀︰
電腦玩物 - Google Analytics 各種流量統計數據對部落格有什麼意義?

2008年12月13日 星期六

免費的自動檔案同步軟體 Allway Sync

Allway Sync 是一個非常容易使用的 Windows 檔案同步軟體。



它可以在幾個資料夾之間進行檔案同步。同步方式有源資料夾同步和各向同步兩種方式:

一、源資料夾同步方式將以一個資料夾為基準,刪除或覆蓋其餘資料夾與源檔案相比較不相同的檔案。

二、各向同步方式則自動將更新的檔案覆蓋幾個同步資料夾中的舊檔案。軟體帶有一個小型資料庫,監視每次更新後的檔案狀態。如果再一次同步之後,你刪除了同步資料夾中某些檔案,它在同步的時候將其它的幾個資料夾的副本也刪除,而不會將不需要的未刪除檔案重復拷貝到已更新的資料夾。由於軟體自己會對檔案進行刪除和覆蓋,它提供了使用回收站進行檔案備份的措施,使用者可以在不慎執行錯誤的同步動作之後,從回收站將錯誤刪除或覆蓋的檔案找回來(預設並沒有開啟該功能,需要自行設定)。

此外,該軟體還具有自動同步功能,可以在指定的條件下自動執行同步任務。還可以指定檔案篩選列表,過濾一些不希望同步的檔案或資料夾。最重要的是可以透過連線網路磁碟機或 FTP 連˙線的方式同步兩台不同主機的資料夾檔案。

如果您要同步的檔案大小和數量不是很多,這個軟體是免費的,你可以一直使用下去。如果您要同步的檔案和數量太多,而且經常需要進行同步,那麼可能就會超過它的使用許可,那應該購買它的專業版使用許可,才能進行頻繁的大量檔案同步操作。

相關資料︰
官方網站下載位址
電腦玩物 - 免費的自動檔案同步軟體:Allway Sync 5.5.8(中文版) 實作教學

當 MySQL 出現 Host 'host_name' is blocked 錯誤時


當你 MySQL 出現上面這個錯誤訊息,這意味著,mysqld 已經得到超過 max_connect_errors 次的錯誤連線請求。mysqld 會認定這個錯誤可能是來自駭客的攻擊,並進一步阻止該主機繼續連線。可以透過執行下面指令來解除這個限制,重新允許該主機的連線。

範例假設 MySQL 資料庫的帳號為 root,密碼為 123。

你可以透過下面的 SQL 列出 MySQL 系統變數值,得知目前 max_connect_errors 的設定值。


參考資料︰
MySQL :: MySQL 5.0 Reference Manual :: B.1.2.6 Host 'host_name' is blocked

2008年10月23日 星期四

Windows 的 MySQL 資料庫熱備份 / 使用 BigDump 匯入大於 2MB 以上的 .sql

這裡介紹在 Windows 下 MySQL 資料庫熱備份的一個很簡單方法︰

1. 寫一個 .bat 批次檔,內容如下︰

phpbb_db_backup.bat

範例假設 MySQL 資料庫的帳號為 root,密碼為 123,要匯出的資料庫為 phpbb。

2. 手動或使用 Windows 排程執行 phpbb_db_backup.bat,執行完畢就會將資料產生一個 .sql 文件存在所指定的目錄。

完成備份後在將來需要時,直接拿備份的 .sql 文件匯入 MySQL 資料庫就可以了。

在 MySQL 中匯入資料庫的方式有很多種,最常用的方式就是使用 phpMyAdmin 管理程式的匯入介面來上傳、匯入。不過如果 .sql 文件太大的話,則很容易遇到伺服器的執行時間或檔案大小的限制,結果就是無法順利上傳、匯入資料。

以下介紹一個相當實用的 PHP 小程式『BigDump』,它可以幫我們將超大的 .sql 文件直接匯入 MySQL 資料庫中。

首先將下載回來的 bigdump.php 用文字編輯器開啟,修改部份設定參數,如下︰

修改完成後將 bigdump.php 上傳到Server上,並將 .sql 文件放在同個目錄下,瀏覽 bigdump.php,就可以選擇要匯入的檔案,輕輕一點沒多久就可以將資料完整的回存到資料庫裡了。

2008年10月4日 星期六

善用 Google 文件 - 讓您的文件、試算表、簡報作更有效的分享,並利用表單作問卷調查

相信很多人跟我ㄧ樣長久習慣了使用微軟所提供的應用軟體,也就習慣了使用 Microsoft Office 來製作許多的文件資料。所以大家手邊都有不少的 Word(.doc)、Excel(.xls)、PowerPoint(.ppt) 格式的文件檔案,也都習慣了使用這些格式的文件檔案互相提供資訊,尤其是在許多政府官方的網站上。

當沒有注意到那個鏈結的背後是直接指向 Word(.doc)、Excel(.xls)、PowerPoint(.ppt) 的文件檔案時,這時候就會發現瀏覽器停在那邊,等著這個文件檔案下載後,系統自動開啟 Microsoft Office 來讀取。如果電腦差一點或是系統使用久了不穩定時,還有可能造成瀏覽器當掉的情況,尤其如果您是使用 IE 瀏覽器。其實我們要在網路上發佈分享這些文件資料,有其他更好的選擇。

Google 文件

Google 文件 是 Google 網路應用程式服務的其中之一,不需要另外安裝任何軟體程式,透過瀏覽器就可以直接使用。除了擁有基本該有的製作編輯功能,還有發佈分享、共同編輯、版本控制,等更強大的功能。

在 Google 文件所有文件檔案都可以直接發佈成網頁,並且擁有獨立的瀏覽網址,這有幾個好處︰

一、我們不再需要將 Word(.doc)、Excel(.xls)、PowerPoint(.ppt) 的檔案上傳至伺服器,也就是說當使用者檢視這些資料時並不會吃我們伺服器的頻寬。

二、由於已經發佈成網頁格式,所以使用者不需要先下載,或是系統需開啟 Microsoft Office 來讀取,瀏覽速度上也就快很多,重點是使用者的電腦不需一定要安裝 Microsoft Office。

三、我們隨時可以至 Google 文件修改重新發佈,或停止發佈。

四、可以使用 Google Analytics (分析) 來追蹤瀏覽您已發佈文件的訪客數。

Google 文件發佈範例︰帶頭升級 Office 2007? 別當害群之馬

Google 試算表發佈範例︰臺北市按性別分類之主要統計指標


除了發佈成網頁之外,簡報檔發佈還提供程式碼可以複製並貼到任何網站或網誌的 HTML,甚至可以做線上簡報。

範例如下︰


Google 文件線上簡報範例︰嚴長壽-我所看見的未來

Google 文件還提供了另外一種文件檔案『Google 文件 - 表格 表單』,利用這種文件檔案您可以製作成表單讓使用者填寫,例如作問卷調查。當使用者填寫這份表單資料送出後,Google 文件會將資料以試算表形式儲存在這份文件檔案中,您可以透過插入小工具分析這些資料,當然您也可以發佈這份文件檔案與大家分享這些資料。

Google 文件表格範例︰Ian 懶惰蟲筆記訪客卷問




相關閱讀︰
Google 文件說明中心
帶頭升級 Office 2007? 別當害群之馬 - Chao-Kuei's Notes | 資訊.人.權.貴 隨便記

2008年9月3日 星期三

Google Chrome - Google 自行開發的瀏覽器

瀏覽器我早已習慣使用 Firefox。雖然 Microsoft Windows 本身就有 Internet Explorer,但是長久以來對於 IE 的使用經驗實在不太好。最常遇到的經驗就是系統使用久了 IE 整個掛點完全不能開啟使用,不然就是無緣無故的當掉。微軟 IE 還有一向遭到大家詬病「不鳥 W3C,只搞自己的標準」,在寫 CSS 或 JavaScript 時常常為了 IE 還需多做許多設定及判斷。微軟在 2008/03/05 放出 IE 8 的 Beta 1 測試版,雖然 IE 8 號稱「與標準更相容」,但是看到國外的「Anomalous Anomaly」部落格「Acid 3 is out! IE 5.5 beats IE 7?」中看到 Acid 3 測試 IE 5.5 擊敗 IE 7,IE 8 相容性卻只比 IE 7 多 6 分,從12 分進步到了 18 分,對 IE 再次心寒。(Acid 3 是一項針對 W3C 制定 XHTML、HTML、CSS 等最新網頁標準的綜合測試。)

Google Chrome 是 Google 自行開發的瀏覽器。對於瀏覽器,Google 秉持著如首頁般簡潔、快速的設計理念,對於大多數人來說,瀏覽器只是一個能夠開啟網頁、瀏覽網頁的程式,將它打造的更輕巧、更有效率就是 Google 想實踐的目標。Google Chrome 在分頁標籤上做了一個新的設計,讓每個網頁分頁都是獨立運行互不引響,進而減少遭受惡意網站攻擊而導致整個瀏覽器停擺的窘境。只要將停擺或是有問題的分頁關閉,其他分頁依然會正常運行,不會因為一個分頁導致其他分頁的工作或資料尚失,例如可能這時另外的分頁正在使用網路 ATM。



目前 Google Chrome 正在起步,依照 Google 一貫的精神,相信這是可以期待的。使用者可以透過勾選『自動傳送使用統計資料及當機報告給 Google,就能助我們一臂之力,讓 Google 瀏覽器更臻完美』選項,便可以幫助 Google 改善瀏覽器。



Google 瀏覽器背後的故事


相關資料︰
Google Chrome 的理念與功能展示介紹漫畫
Anomalous Anomaly - Acid 3 is out! IE 5.5 beats IE 7?
免費資源網路社群 - Google Chrome - Google自行開發的瀏覽器將顛覆網際網路!

2008年8月8日 星期五

mailto 應用 subject 參數中文編碼問題

有時候我們會使用 mailto:,讓使用者直接點連結開啟像 Outlook 這一類的軟體發信與我們連絡。甚至可以利用一些參數預設開啟時的一些資料,範例如下。

subject︰主旨。
body︰內文。
cc︰副本。
bcc︰密件副本。

但是當你的頁面是使用 utf-8 編碼時,在繁體中文 Outlook 中文的部份會出現亂碼,原因就是繁體中文 Outlook 是 big5 編碼,而你傳送的參數值是 utf-8 編碼。

在這情況下我們必須將 big5 的文字做 URL 編碼,在 PHP 可以利用 rawurlencode() 這個函式。要注意的是在做 URL 編碼時,必須確定是針對 big5 的文字所做的編碼,以上面的範例更改成如下。

2008年8月2日 星期六

Google Maps API - 設定地圖控制項位置及自訂地圖控制項

‧地圖控制項位置設定

之前已經介紹過如何透過 GMap2.addControl(control) 添加地圖控制項。addControl 方法有一個非必填的第二參數 GControlPosition(anchor, offset) 可以指定該控制項在地圖上的位置。

anchor 為一常數分別代表地圖的四個角落。
G_ANCHOR_TOP_RIGHT 地圖的右上角
G_ANCHOR_TOP_LEFT 地圖的左上角
G_ANCHOR_BOTTOM_RIGHT 地圖的右下角
G_ANCHOR_BOTTOM_LEFT 地圖的左下角。

offset 為 GSize(width, height) 物件來表示控制項距離地圖邊緣多少像素。

看範例所呈現的結果

‧自訂地圖控制項

Google Maps API 還允許透過創建 GControl 的子類自訂地圖控制項。從技術角度上講,不是使用 JavaScript 建立對象的 subclass,而是將 prototype 對象分配給 GControl 對象的實例。

自訂可用的地圖控制項,至少為該類定義以下兩個方法︰

initialize() 方法必須返回 DOM 元素,並透過 GMap2.getContainer() 取得包含地圖的 DOM 元素添加到地圖中。

getDefaultPosition() 方法必須返回類型為 GControlPosition,向地圖返回預設情況下控制項在地圖中出現的位置。

看範例所呈現的結果

參考︰
‧class GMap2︰addControl(control, position?),getContainer()
‧class GControlPosition
‧class GSize
‧enum GControlAnchor
‧interface GControl


更多教學文件在此︰Google Maps API - 前言及目錄