發表文章

Powerbulder 呼叫 Windows API 要注意的地方-字串的傳遞

Windows API 函式(以下簡稱API) PowerBuilder(以下簡稱PB,以下範例使用PB6,PB10因為有UNICODE編碼關係會比較麻煩在此不方便做DEMO)的特性大部分用的人都知道,其缺點就是UI介面太單調、低階操作完全不行(我是指位元組變數運算操作還有I/O控制),但是還好它支援API的呼叫使用。 但是另一個問題又來了,API的呼叫很多參數都牽涉到位元組處理還有定址等太多問題,所以本篇僅針對字串傳遞的問題發響。 關於API傳遞字串,其實會使用的人應該都會注意到一件事情,就是API要求字串傳遞時,通常都是以傳址方式處理,而且通常接下來一個參數就是字串長度的值。

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