發表文章

EVENT呼叫的注意事項-Yield的使用

在PowerBuilder中事件的呼叫方式分為2種,『Post』與『Trigger』。 利用Trigger呼叫事件其實就像你在呼叫Function一樣,原本的程序會暫停(推入堆疊),然後執行Trigger的EVENT對象,執行完畢後,再回到(推出堆疊)原程序繼續執行,若是有回傳值,則會隨之回傳。 利用Post呼叫事件,則是將要呼叫的EVENT對象放到該物件的Message Queue(佇列)中 等待被執行 ,原本程序不中斷繼續執行,因此如果你的事件有回傳值,會根本都收不到(因為還沒執行) 以上是PB對事件呼叫的方式(對Function 也可使用Post)。 原本,這樣的描述執行方式是沒有問題的,但卻有的很大的盲點,那就就是 yield() 指令。

Railo 免安裝 Server 版

圖片
寫這篇文章的版本是 3.1.1 這裡介紹的是 Server 的 ZIP 版本 ,不是 EXE 版。 因為EXE版在安裝到 Windows 2000 的過程有異常當機情形,而且執行時若RESET次數過多會導致無法再正常啟動,但在 Windows XP 與 Windows 2003 不會,由於未找到原因,所以未了避免過多的問題,所以用ZIP版,操作起來也是蠻好用的。 下載檔案請到 官方下載網站 下載Server版本 railo-3.1.1.000-resin-with-jre-windows.zip (71 MB) 下載的ZIP解壓所後會產生一個資料夾 railo-3.1.1.000-resin-with-windows(下文都會稱此資料夾為 Railo 資料夾),裡面會有相關檔案。

Railo免安裝版-Railo Express

圖片
不知道Railo?先看 這一篇"認識Railo" 。 寫這篇時的版本是 3.1.1 下載 railo-express 的zip壓縮檔後,將它解壓縮。 注意該資料夾下有兩個檔案 start.bat 與 stop.bat ,這是啟動與停止。一般網頁的服務位址阜( port ,也有人說窗口阜)在 80 ,預設的情況下瀏覽器瀏覽網頁時,若不指定port則都是使用 port 80 連線。因為 railo-express 屬於環境測試使用,為了避免與本機上IIS(若有安裝IIS,其預設 port 就是 80)衝突,所以使用了別的 port來啟動服務。它預設的 port 是 8888。 若你想修改啟動 port 位置,請用記事本開啟 server.xml (與 start.bat 同資料夾下),找到底下指令: <Set name="port"> <SystemProperty name="jetty.port" default="8888"/></Set> <Set name="maxIdleTime">30000</Set> <Set name="Acceptors">2</Set> <Set name="confidentialPort">8443</Set>

什麼是CFML

CFML 是一種可 程式化的網頁標籤語法 。 只要你學過HTML就應該知道 HTML 的語法就是一種 網頁標籤語法 ,透過標籤語法可以讓 瀏覽器 知道要如何將網頁內容呈現給使用者,通常標籤語法都是被包在 < 與 > 之間,例如: <hr /> 就是告訴瀏覽器畫出一條水平線。 所以可知 網頁標籤語法 是給 瀏覽器 處理的,而 可程式化 又是什麼意思? 一般的HTML 檔案內容當你設計好時,它就是 固定內容 ,每次讀取都是一樣的內容,因此你需要因應使用者輸入需要而有畫面變化時,就需要重新設計一個HTML檔案。可是當有某種需求表單會有10種以上的反應的話,你就有可能要設計出11種樣版HTML檔案,最慘的是,若是這11種樣版大致上都需要一樣的版面時,以後只要有一個版面更新,那剩下的10個HTML檔案都要一並更新。 最害怕這種情況的,應該就屬網頁美工人員了,因為網頁美工排版動用到的標籤元素非常的多,而且很複雜,若是每次修改個板面就要一並修改數個相關檔案的話,那肯定會累翻,而且效率非常差。 也許有人使用 javascript (以後通稱 js )來解決,這也是一個方法,但是 js 有其先天的限制,無法與server進行溝通,例如資料庫連線。它只能在瀏覽器端處理,例如:輸入字元長度檢查、版面部分變化等。 較大變化異動的版面若使用 js 來做會導致內容過度複雜,難以維護,執行速度不佳等等,所以才說這是網頁美工人員的惡夢。 可程式化標籤是一種崁入式標籤,它可以與一般HTML標籤並存在同一個網頁檔案中,像是CFML的<cfoutput></cfoutput>、<cfset x=" 1">等,並不會和HTML標籤元素衝突,因此在大型的網頁排版軟體中,像是Dreamwaver上,都可以正常顯示美術編輯的效果。 可程式化的優點在於隱藏資訊,像是CFML的檔案(*.cfm)裡面就是HTML + CFML,在瀏覽器像伺服器請求這樣的檔案時,cfm裡面的CFML都會被伺服器處理過並拿走,只剩下標準的HTML,所以瀏覽器端完全不會看到CFML的標籤,版面也容易維持。 如同前面提到:如果一個網頁表單輸入畫面有10種回應頁面樣式的話,使用CFML處理也許只要一個網頁就可以搞定,美編人員可以不用耗費太多的時間在於相關檔案的維

架設自己的伺服器

好了,來說說怎麼讓CFML怎麼運作吧。 雖然CFML是 ColdFusion 的程式語言,但是ColdFusion現在是 Adobe 的產品之一。跟Adobe打過交道的人都知道,Adobe不好惹啊,而且一般人對它的價碼敬而遠之。所以在台灣用的人真的不多,因為台灣大多是中小企業啊。 介紹一下 Railo 但是學習過CFML的人都了解它是個好物,缺點就是付出的成本較高昂(就是要買一套Adobe ColdFusion)。但國外早期有不少人學CFML,後因Allaire被Adobe收購,原本的使用者因故改轉到PHP上,但是當時的PHP極度不穩定,導致不少損失。因此改尋找新的方案下找到了Railo(聽說當初還是個學生的專題研究,其名稱原是Ryhlo,是星艦迷航StarTreck Enterprise中的一隻外星狗的名字)。 至於認識的人都知道目前也有其他伺服器套件支援CFML如:BlueDragon、Smith等,但是敢號稱比原廠(指Adobe ColdFusion)更快的就不多了。 而Railo是一個伺服器軟體套件,也就是說你的電腦如果沒有安裝IIS之類的服務的話,它可以獨立執行成為一個 Http Server;而如果你有IIS的話,它也有外掛套件,讓你的IIS可以支援CFML的編譯,很重要的是: 它支援 ColdFusion 8 的語法,而且是 商業版 的,而且是 免費 的。 剛看到時,有點不太相信,不過真的是佛心來著的啊... 解決了一直以來,頭痛的版權採購問題。 當然,外面也有課程如 這個 在教學的。 如果要自己動手安裝的話可以去 官方下載網站 先下載較新的版本,裡面有很多版本的選擇。 首先,要注意Railo有兩個版本還有各類作業平台: 一個是 Express 版本,功能與 Server 版相同,這個版本主要是 測試用 ,因為不用安裝,如果你的Server本身有安裝其他服務,怕執行Railo會導致運作不正常的話,可以先用這個版本,這個版本的特點就是它是綠色軟體,解壓縮後可以看到其資料夾中有 Start 與 Stop 兩個批次檔,直接執行Start就可以,但是缺點就是畫面會出現DOS視窗不可以關閉,若關閉DOS視窗會導致服務也關了(正常停止服務要執行STOP那個批次檔) 第二個是 Server 版,這個版本就是會 安裝到se

網頁運作概念

基本上,網頁(HTTP)的運作方式其實並不難,只要大致上了解的它的運作方式,其他的都是增加上去的擴充功能。 你可以想像你的瀏覽器是一個餐廳的服務生,而你正在餐廳,餐廳的廚師是網頁伺服器,你想要看的網頁就是餐點。 最簡單的方式就是點一客牛排。 1.你會先跟服務生說:我要點一客牛排。 2.服務生收到您的要求,然後去跟廚師說:客人要一客牛排(Request)。 3.廚師做好牛排,交給服務生(Response)。 4.服務生將牛排交給你。 這個過程就是最簡單的網路資訊交易過程,按照上述的順序解釋如下: 1.你在瀏覽器上輸入了網址(例如:http://www.hostname.com)。 2.你按下送出(submit)後,瀏覽器將要求(Request)送到伺服器(Server)。 3.伺服器回應(Response)給瀏覽器需要的網頁資料。 4.瀏覽器將網頁資料呈現在你眼前。 很簡單吧。 當然上面是基本概念,其中當然多了幾道" 加工 "的動作: 1.廚師要將材料配合做出牛排 -> 伺服器端會將網頁中的指令翻譯成瀏覽器可用的HTML標籤語法 。(多數標準的htm、html檔案通常不會經過伺服器處理,因為這些檔案內容都是標準HTML標籤語言,由客戶端瀏覽器直接處理即可) 2.服務生通常不會直接將牛排交給客戶通常會加個餐巾、餐具等等 -> 瀏覽器會將收到的HTML標籤繪製成漂亮的畫面呈現在眼前 。 所以,依照運作的方式大致上網頁標籤/程式碼就可以分成3大類: 一、 瀏覽器語言 :標準的HTML標籤、CSS標籤,這類標籤語言是 最基本的網頁構成 程式碼,主要由瀏覽器依照其指定的描述去顯示繪製網頁呈現在眼前,但是這類的標籤語言大部分只有呈現畫面和簡單的輸入能力,互動效果比較少。 二、 javascript、vbscript等類 :相信很多人都聽過,可是常常搞混(如java和javascript),這種程式語言稱為瀏覽器語言,主要的目的是提供給瀏覽器除了HTML標籤外的互動能力(例如常見的網頁上的時鐘等等),屬於輔助性質的程式語言。 三、 伺服器語言 :網頁伺服器會先處理過具有標籤語言或程式碼的網頁檔案,再回應給瀏覽器顯示,所以若要從瀏覽器看到原始碼是不太可能的,因為都已經被轉換/執行過了。例如常聽到的PHP、JSP、JAVA、ASP、dot Net(asp

coldfusion恐慌症

接任主管的職務通常都會遇到需要自己克服的事情,而且別人也無法幫你的,還有的同事也在準備看好戲的,總之,就是如此啦。 雖然今天要講的不是什麼新聞了,但是卻是去年10月到今年3月間讓我極度傷腦筋的問題,那就是--ColdFusion,也許使用過的人大概不會覺得有啥問題的,重點就是我完全沒用過這套軟體啊 Orz。 偏偏公司的主網頁又是使用這軟體開發的,後來遇到網頁版面需要改版的問題,需要進行大規模的修改,但是前任主管才沒多久前將CF server升級過,聽說花了不少錢。 心想,半年前去補習過.NET,所以本來打算使用.NET開發,但是公司經費核准不下來(我想應該是老闆覺得才花過錢的為什麼又要再花一次錢吧),若用JSP或是JAVA又不是那麼熟悉,而且公司另一部主機使用JSP+Apache的經驗實在不愉快,讓我對純JAVA的東西不太想碰。 而且最大的問題是---為什麼國內沒有任何ColdFusion的書籍啊!!!!! 我可是找遍國內網路書店,台中市各大實體書店,包含了舊書攤!!! 後來老闆已經開始質疑我的能力了,對於網頁更新頗有微詞。 其實找書找得很累,加上挫折不斷本來就已經有點心灰意冷,所以3月開始不再找書了,開始往網路論壇去找,因為網路論壇沒有由淺入深的規劃方式,都是片面的技術性討論,而且有的技術性太深,根本看不懂。 但是為了突破,只好每天下班時到處去爬文,好在對岸的論壇幫上了點忙,閱讀起來幾較不吃力,但是對岸的相關文章也太淺太少,部分只好回去看英文的論壇再去對照相關用法。 台灣也有少部份論壇有,但也不普及,太多細節性的內容都不足,很多得自己TRY。 在胼手胝足的努力下,漸漸看懂CFML的語言特性了,不過大多支援的屬性還是很類似JAVA,畢竟,CF也是由JAVA開發出來的。不過,當了解CFML的特性之後,也發現其實他在設計上還算容易上手的,發現它學習起來門檻其實不高,只是需要觀念導引,但是當時就是缺乏有能帶進門的書籍或是參考資料,算是有點可惜。 有時間的話,可以將自己的學習內容寫上來,提供給需要的人觀看。 2009-08-13 update ---> 我想ColdFusion在台灣現在比較不那麼流行,但是相較於.NET、JAVA有著比較親和的撰寫特性,學習跟開發都很快可以上手,感覺上就像powerbuilder開發MIS的資料處理那樣的方便,這是後來我一直使用CF的