2007年03月30日

又一篇跟網站製作無關 - 我要玩 Wii 啦!!

我也不知道我自己要撐到什麼時候 (>_<) 。超想玩...可是口袋還空空的...不想花太多錢錢... (嗚嗚...)

我要玩 Wii 啦!!

希望今年可以買得下手...七龍珠~~航海王~~等我呀~~


Posted by jaceju at 21:42回應(7)引用(0)心得感想

2007年03月27日

我也來實作 PHP mix-in 的概念 - Part 3

說明

石頭成老大把他心目中的 mix-in 目標做出來了,他主要的實作有以下兩個重點:

  1. 物件實體生成後彼此做 mix-in 是不相干的。
  2. 類別方法在動態委派後要能遵守繼承原則,也就是說子承父、父不承子。

另外他也提到要儲存方法是一件困難的事情,因為 PHP 有三種函式的呼叫方法:一般函數、類別靜態方法、實例方法。而我在 Part 2 裡的概念實作則是用 callback 虛擬型態來儲存,不過卻忘了把一般函式給放進去。

不過 Part 2 的實作已經實現了第一個目標,所以在這次 Part 3 的實作裡,我除了決定把一般函式也納入 mix-in 的實作裡,而且還要達成石頭成老大說的第二個目標。

另外我自己也加入了以下實作重點:

  1. 所有動作都要在 Prototype 類別裡處理掉,不能夠讓子類別除了自己的工作外,還得實作不必要的部份。 (石頭成老大抱歉啦~我是覺得 $methods 不應該在子類別再次定義。)
  2. Prototype  所延伸的子類別,不能覆蓋 Prototype 類別裡的任何方法,以避免功能出錯。
  3. 使用的方法要夠簡單,儘量不要讓使用者感到困惑。

經過一番努力,我終於試出來了;先來看看成果,後面我才來一一分析。

...繼續閱讀

Posted by jaceju at 0:19回應(0)引用(0) PHP

2007年03月25日

一個各家瀏覽器都可接受的事件處理器簡易寫法

如果臨時想讓各家瀏覽器都能處理 DOM 事件,又不想寫太多跨瀏覽器事件處理程式或使用額外的 JS 框架時,以下的程式碼可以參考看看。

註:這個方法是為了某些簡單的活動頁寫的,我想如果要做較為複雜的效果時,還是使用別人已經包裝好的函式庫比較好。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Event Testing</title>
<script type="text/javascript">
<!-- <![CDATA[
function someHandler(e, t, arg1, arg2) {
    var event_info = document.getElementById('event_info');
    var dom_info = document.getElementById('dom_info');
    var params = document.getElementById('params');
    
    event_info.innerHTML = '';
    for (var n in e) {
        event_info.innerHTML += '<p><strong>' + n +
                                ':<' + '/strong> ' + e[n] + '<' + '/p>';
    }

    dom_info.innerHTML = '';
        for (var n in t) {
                dom_info.innerHTML += '<p><strong>' + n +
                                      ':<' + '/strong> ' + t[n] + '<' + '/p>';
}
params.innerHTML = ''; params.innerHTML += '<p><strong>arg1:<' + '/strong> ' + arg1 + '<' + '/p>'; params.innerHTML += '<p><strong>arg2:<' + '/strong> ' + arg2 + '<' + '/p>'; } // ]]> --> </script> </head> <body> <a href="#" onclick="someHandler(event, this, 'param1', 'param2'); return false;">Show the info by eventhanlder.</a> <h2>Info of Event Object</h2> <div id="event_info"></div> <h2>The Params</h2> <div id="params"></div> </body> </html>

主要的原理在於 HTML Tag 中 onxxxx 的屬性可以接受 event 這個關鍵字,而它就是瀏覽器的 Event 物件。所以我們就可以將 event 當做參數,傳給相關的 Event Handler 。

另外這裡也利用 this 讓 Event Handler 可以知道是哪個 DOM 節點呼叫了它。

目前 W3C 標準與各家瀏覽器在 Event 物件上共同有的屬性如下:

  • altKey (是否按下 alt 鍵)
  • button (滑鼠的按鍵)
  • clientX (在瀏覽器可視範圍中對應的 X 軸)
  • clientY (在瀏覽器可視範圍中對應的 Y 軸)
  • ctrlKey (是否按下 ctrl 鍵)
  • screenX (在螢幕上對應的 X 軸)
  • screenY (在螢幕上對應的 Y 軸)
  • shiftKey (是否按下 shift 鍵)
  • type (事件類型)

屬性的說明請參考 W3Schools::HTML DOM Event Object


Posted by jaceju at 23:50回應(0)引用(0)JavaScript

2007年03月22日

安裝獨立的 IE7 正式中文版

目前網路開發界還處於 IE6 、 Firefox 的交戰期,沒想到IE7 正式中文版已經悄悄加入戰局了。

好吧,為了解救我們苦命的工程師還有視覺設計人員,上次提過的 IE7 standalone 再度派上用場。

安裝步驟

讓我為各位解說一下如何安裝獨立版的 IE7 :

  1. 第一步當然是先把 IE 7 for XP SP2 中文版下載回來,檔案名稱為 IE7-WindowsXP-x86-cht.exe ,這裡我將它放到 D:\Software 下 (你可以自行決定儲放的位置) 。

  2. 進到 DOS 命令列視窗,用以下指令把 IE7-WindowsXP-x86-cht.exe 解開至 D:\Software\IE7 :

    D:\Software>IE7-WindowsXP-x86-cht.exe /x
  3. 再下載 IE7 standalonezip 檔,並將它解開,裡面會有一個 IE7s.exe 和一個 LICENSE.rtf 。 (注意,我們只需要 zip 檔,不要下載到安裝檔了。)

  4. 把上一步驟的 IE7s.exe 放到 D:\Software\IE7 裡。

  5. 把整個 D:\Software 的 IE7 資料夾搬到...隨便你放哪...我是擺在 C:\Program Files 下。

  6. 幫 C:\Program Files\IE7\IE7s.exe 建立一個捷徑,然後把這個捷徑移到桌面上。

  7. Update: 執行 C:\Program Files\IE7\update\xmllitesetup.exe ,這樣就能讓 IE7 大部份的功能介面 (包含頁籤) 出現。

就這樣了,現在只要執行剛剛建立的捷徑,你就有獨立執行的 IE7 中文版了。當然你的 IE6 還是乖乖地被綁在 Windows 這個大柱子上任你摧殘...

補述

Dolittle 網友問了一個好問題,那就是為什麼照我上面說的方式裝好 IE7 後,不會出現 IE7 的分頁功能? (已解決,見下面的補述) 而且一打開後就會出現 JavaScript Error ?

這個問題很簡單,因為 IE 的核心其實會和系統息息相關,而我上面的做法只啟動了 IE7 的 render 引擎,而沒有把相關功能一起啟用。換句話說,這樣的安裝方式只是我為了檢查目前的網頁是不是能在 IE7 上被正確顯示,至於其他功能 (例如 Tab) 還是必須用正常的安裝方式才能啟用。而 JavaScript Error 也是因為某些元件沒有安裝,而 IE7 預設的啟動畫面裡有用到此功能所導致的。

有一利必有一弊,所以各位如果真的要使用 IE7 的完整功能,就我所知,只能用完整安裝了。

註:也許還有比較好的做法,歡迎大家提供。

再補述

Tsung 老大那邊發現要多一個執行 update\xmllitesetup.exe 的步驟,這樣 IE7 的介面才會完整出現。


Posted by jaceju at 10:00回應(14)引用(1)電腦知識

2007年03月20日

Eclipse 上的 PHP 開發工具 - 安裝篇

之前提過 PHP Development Studio ,它是基於 Ecplise + PHPEclipse 的一套 PHP 開發工具。然而後來 EClipse 官方自己也推了一個 PHP 開發工具計畫,它就叫 PDT - PHP Development Tools 。

我試用的結果它在 Eclipse 的支援程度比 PHPEclipse 好很多 (廢話,有官方支援當然好) ,而且比 PHPEclipse 多了很多功能 (像預先載入類別庫或更為完整的程式碼提示等) 。如果有需要免費的 PHP 開發環境的話, PDT 是個不錯的選擇。

剛好 Neo 大對它也有興趣,那我就野人獻曝,簡單介紹一下它的安裝方式。

...繼續閱讀

Posted by jaceju at 17:13回應(24)引用(0)開發工具

好書推薦

新書預告

以下為最近將會出版的書籍,值得期待:

好書推薦

另外整理一些我個人覺得不錯的 Web 開發相關中文書籍供大家參考 (我看過的才介紹) ,它們都是非常值得大家閱讀與收藏的技術書籍。

註:只介紹中文書的原因是為了讓經驗較少的伙伴也能快速瞭解這些技術,事實上還有更多原文的好書值得參考。

...繼續閱讀

Posted by jaceju at 14:20回應(0)引用(0)好書推薦

2007年03月19日

[轉載] Readable regular expressions

上次介紹過 Regular Expression 五個良好的習慣,這次來個英文的相關文章。

範例是用 PHP ,不過我想其他語言應該也適用。

文章網址:Readable regular expressions (英文)


Posted by jaceju at 10:16回應(0)引用(0)程式開發

2007年03月16日

透視 WebMVC

這篇寫超久的...大概從去年九月開始寫的,不過因為中間事情太多,因此是以牛步進行;之間有跟幾位 PHP 界的長輩們預告過本文的誕生,還好沒有跳票。

本文主要是把我所認知的 WebMVC 概念,以實作的方式來說明。而範例本來寫得很複雜,也請過丫凱兄幫忙測試。不過後來想想其實不必要在範例裡加入太多功能,因此就簡化了很多部份。

希望大家看完後,能給我一些建議與指導。

文章網址:透視 WebMVC


Posted by jaceju at 18:26回應(3)引用(0)Web 開發

2007年03月14日

我也來實作 PHP mix-in 的概念 - Part 2

石頭成老大說他要為他的 mix-in 實作 part 2 ,我也想到了一些好玩的東西。記得很久之前我寫過一篇「 PHP 的 callback 虛擬型態」,這次就把它用在這裡。

...繼續閱讀

Posted by jaceju at 22:40回應(0)引用(0) PHP

2007年03月13日

現在用 Zend Framework 適合嗎?

Update: 本文寫作時間是 ZF 0.9x beta 版的時候,所以以下言論目前已經失效了。 :)

常有朋友跟我討論到一件事:那就是 Zend 官方的 Zend Framework ,適合用來開發新專案嗎?

我的想法是:目前來說絕對不適合!

為什麼呢? Andries SeutensZend Framework - Zend.php rewritten 這篇文章說明了這點。

該文大意是, Zend.php 將會被拿掉,然後改以下三個類別來分擔它原來的工作:

  • Zend_Loader (holds loadClass(), loadFile() etc.)
  • Zend_Debug (holds dump())
  • Zend_Version (holds VERSION constant and compareVersion())

換句話說, Zend Framework 在沒有正式宣告有穩定版本前,被改動的機會還是很大。

當然 Zend Framewok 的開發團隊有他們的考量,這樣的考量好不好我沒辦法有什麼評斷。只是在不斷改版的過程裡,很多作法會被開發團隊遺棄或加入;很可能今天能用的程式,更新到 Zend Framework 的新版後就不能用了。所以我個人是認為 Zend Framework 還在調整階段,絕對不適合用在開發中的專案。

但是 Zend Framework 裡有非常多值得學習的 PHP5 用法,想要考認證的朋友不妨多去瞭解它。


Posted by jaceju at 9:53Zend Framework
 [1]  [2]  [最終頁]