高見龍

iOS app/Ruby/Rails Developer & Instructor, 喜愛非主流的新玩具 :)

Zend Framework之Zend_Tool

看到DjangoRails之類的Web Framework都有可以快速的產生scaffold的工具,甚至連同樣都是PHP framework的CakePHP也有..還好我之前都是在Zend Studio裡直接new一個Zend Framework Project,它也會自動產生基本的架構出來。隨著Zend Framework 1.6版的上市,它也提供了類似的方便工具(不過從目錄名字看起來還是在實驗階段而已..)

我的作業環境是WinXP,如果要在別的系統可參考最底下的參考資料,有提到怎麼修改路徑。

簡單的使用方法如下:

Step 1.

ZF官網下載Zend Framework 1.6,解壓縮之後裡面有個laboratory資料夾,裡面有個ZendL,把它放到你的include_path底下。

Step 2.

在laboratory/Zend_Tool/bin裡有個zf.bat跟zf.php,改一下zf.bat裡的php.exe的路徑(如果放在跟php.exe同目錄就不用改了)

Step 3.

以上設定完成之後,到cmd模式下,輸入zf show version,應該會出現「Zend Framework Version: 1.6.0」字樣

Step 4.

隨便找一個資料夾來試試,輸入zf create project,等一會,它就會幫你把資料夾跟檔案產生好了(如下圖)

image

完成! 這樣就完成了基本的ZF MVC的骨架出來了,也做了簡單的bootstrap跟幾個預設的controller跟view。不過我發現這個Zend_Tool會把ZF的 library整個也複製一份到library底下,雖然是方便發布,不過我個人是習慣不把它放在web資料夾下..

結論:不管是Zend Studio或是Zend_Tool都可以快速的產生架構出來,我還是習慣用自己的架構..

參考資料:Zend Developer Zone

Zend Framework 1.6 Release

之前用了一陣子的RC版,今天終於正式Release了,這個1.6版的ZF比1.5版多了不少有趣的東西啊(不過選在跟新聞炒很大的google chrome同一天出來,鋒頭多少被蓋去了一點點)

  • Dojo Integration
  • SOAP
  • Preview of Tooling Project in Laboratory (see /laboratory folder)
  • Unit Testing Harness for Controllers
  • Lucene 2.3 Index File Format Support
  • Zend_Session save handler for Database Tables
  • Paginator Component
  • Text/Figlet Support
  • ReCaptcha Service
  • Captcha Form Element
  • Zend_Config_Xml Attribute Support
  • Zend_File_Transfer Component
  • File Upload Form Element
  • Zend_Wildfire Component with FireBug Log Writer
  • Media View Helpers (Flash, Quicktime, Object, and Page)
  • Support in Zend_Translate for INI File Format

對我工作上比較大的影響是跟Dojo的整合(我還是比較喜歡jQuery),這裡有篇文章有寫到1.6版新增的一些功能介紹。

另外,分頁、表單認證碼及檔案上傳功能…這些在做網站時常用的功能,之前都是自己拼裝出來用的,結果在1.6也都加進來了 :) 。我試著直接把1.5版昇級為1.6版,目前手邊的案子看起來都還滿正常的。

下載連結:http://framework.zend.com/download/current/

IE6 之 Select 的 Z-Index 設定

在IE6的環境下,如果網頁上有div區塊和下拉選單重疊在一起的時候,即使再怎麼調整下拉選單的z-index,下拉選單還是會把div區塊蓋住 (在Firefox是正常的),google了一下網路上的資料,大多是用iframe來解這個問題,但弄iframe寫起來也是花時間而且不順手。有善心人士把這段程式碼寫成jQuery的plugin:bgiframe,只要簡單的呼叫plugin,就可以在div底下插入一段可以把下拉選單遮住的iframe,div區塊就可以正常顯示了。

程式碼很簡單,直接看線上demo就知道了;有需要的也可以整包下載回去 :)

Python之飛龍在天

最近拿Python在做練習,這真是個有趣的語言,我發現Python對程式碼一定要縮排,不然會出錯的這個特性,對於我這種有程式碼潔癖的人真的 是利多。在網路上看到一個個有趣的漫畫,主要是在說python的簡單&易學易用,想要飛起來,只要import別人寫好的反重力模組就行了。

(如果我想變聰明,可以import iq180嗎?)

image

來源:http://xkcd.com/353/

Subversion之Post-Commit

最近用到Subversion來做版本控制,但常常commit完之後還得再把資料複製一份到www資料夾,實在不方便。查了一下資料發現,原來svn有一些hook可以用,例如可以在commit之前或之後做某些事情,這樣就可以讓開發人員commit之後,直接在web上就看到成果。

  • SVN Server環境是FreeBSD 6.3
  • repository放的位置:/home/svn/repository
  • 專案名稱:test
  • web資料夾:/www/test

在每個repository底下都有個hooks資料夾,裡面有好幾個寫好的template,光看名字大概就知道他們是要做什麼事的。這邊我只拿post-commit來用(其它的可參考Subversion Book)。

> cp post-commit.tmpl post-commit
> vi post-commit

我在裡面加了幾行update的語法:

#!/bin/sh
export LANG=zh_TW.UTF-8
/usr/local/bin/svn update –username myid –password mypw /www/test

加入第一行是因為有些非英文檔名的檔案在update的時候可能會出錯,其中myid跟mypw請代入自己的svn帳號密碼。另外,記得chmod +x,讓它變成可執行

最後,在web資料夾checkout一下test專案,大致上應該就可以運轉了。