2009年12月25日 星期五

公司統一編號驗證

國稅局目前網頁上不提供,這是從其他部落格找到的,我稍微修改過。
工具:PowerBuilder

先來看一段驗證公式(來源:酷!學園):

2009年12月10日 星期四

閱讀的好地方-好讀網站

介紹一個不錯的網站

如果你是愛看文字書的人士這個網站可以讓你飽飽\眼福。


2009年11月26日 星期四

設計DataWindow的好習慣:SQL Plan

PowerBuiler中的DataWindow就是SQL Result的視覺化物件。在.net中的物件中類似是DataGrid。

當你設計一個 DataWindow 時,很大的機會都會用到 SQL 查詢。
但是很方便的設計工具,不代表你可以有效的使用它。

雖然我這裡的範例使用的是 ASE SQL Server,
而且 SQL 語句都是在 SQL server 上執行的,
但是本質上 SQL 查詢的指令和模式都有很大的雷同,
所以這裡沒有指定是哪一種 SQL Server ,我要提供的只是觀念。

2009年11月19日 星期四

在PowerBuilder下轉換簡繁體中文字

聲明:這是在Windows XP SP3繁體中文版環境底下的方式,不一定適用於英文版外掛繁體中文套件及Windows XP簡體版。

這是PB10的版本,如果你是PB10以下的版本,請注意external function宣告的方式不需要使用";ansi"。

首先宣告 instant 變數 :

// 區域語系
Constant    long   LCMAP_TRADITIONAL_CHINESE=67108864
Constant    long   LCMAP_SIMPLIFIED_CHINESE=33554432
// 編碼方式
constant Uint CP_ANSI          = 0         // default to ANSI code page
constant Uint CP_OEM           = 1         // default to OEM code page
constant Uint CP_MAC           = 2         // MAC code page
constant Uint CP_TANSI         = 3         // THREAD ANSI code page 
constant Uint CP_SYMB          = 42        // SYMBOL
constant Uint CP_WIN874        = 874       // "windows-874" "泰文 (Windows)"
constant Uint CP_2022_JP_SJ    = 932       // "iso-2022-jp" "日文 (Shift-JIS)"
constant Uint CP_GB2312        = 936       // 簡體中文   (GB2312)
constant Uint CP_KR            = 949       // "euc-kr" "韓文"
constant Uint CP_BIG5          = 950       // 950 為 "big5" "繁體中文 (Big5)"
constant Uint CP_UNICODE_BE    = 1201      // "unicodeFFFE" "Unicode (Big-Endian)"
constant Uint CP_WIN1258       = 1258      // "windows-1258" "越南文 (Windows)"
constant Uint CP_USERD         = 50000     // "x-user-defined" "使用者定義"
constant Uint CP_AUTO          = 50001     // "_autodetect_all" "自動選取"
constant Uint CP_2022_JP_J     = 50220     // "iso-2022-jp" "日文 (JIS)"
constant Uint CP_2022_KR       = 50225     //  "iso-2022-kr" "韓文 (ISO)" 
constant Uint CP_JP_AUTO       = 50932     // "_autodetect" "日文 (自動選取)" 
constant Uint CP_KR_AUTO       = 50949     // "_autodetect_kr" "韓文 (自動選取)"
constant Uint CP_JP_EUC        = 51932     // "euc-jp" "日文 (EUC)" 
constant Uint CP_KR_EUC        = 51949     // "euc-kr" "韓文 (EUC)" 
constant Uint CP_GB2312_HZ     = 52936     // "hz-gb-2312" "簡體中文 (HZ)"  
constant Uint CP_UTF7          = 65000     // "utf-7" "Unicode (UTF-7)"
constant Uint CP_UTF8          = 65001     // Unicode   (UTF-8)

然後是 external Function :

2009年11月18日 星期三

網路漫畫下載程式

這是我自己寫的小程式
謝謝各位關心,本頁由於對象網站抓取異常已經停止更新,原程式已經重新修改並導向新網站抓取漫畫,歡迎各位到 這裡來看看

原本,在阿榮的網頁裡面看到的 抓線上漫畫的小軟體 後,愛看漫畫的我終於可以免除用網頁看漫畫的痛苦,但是常常遇到 kukudm 網站的問題(改程式碼、主機位置、網頁塞車)的困擾,導致常常下載不了,加上原本作者在當兵無法即時維護,沒辦法之餘,只好把以前拿來分析網頁的程式改寫,做出了這支程式,當然也感謝榮哥幫我刊載。

不過,由於它是PowerBuilder 10開發的,所以Runtime的部份頗大,主程式約400K,但是Runtimer就大到 13MB了!關於Runtime的檔案我還不知道要如何簡化,盡量把不要的DB connect檔案拿掉了。
提醒您,漫畫雖然好看,但是也要讓眼睛適當休息,畢竟螢幕會比書本對您的眼睛殺傷力更大喔。
廢話不多了,簡單介紹用法吧,有興趣玩的就自行下載去玩。
網頁文章內容圖片來不及更新,所以會與程式畫面有一點點出入
下載位置請點這裡,版本:2.0.4.5,RAR壓縮檔,約5MB,解壓後約15MB。沒有密碼。

※來源網站的漫畫列表暫時關閉不對外開放,因此無法取得列表了。
請找到檔案 kukudm.exe,點擊並執行,主畫面如下:




2009年11月13日 星期五

2009年11月10日 星期二

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

Windows API 函式(以下簡稱API)

PowerBuilder(以下簡稱PB,以下範例使用PB6,PB10因為有UNICODE編碼關係會比較麻煩在此不方便做DEMO)的特性大部分用的人都知道,其缺點就是UI介面太單調、低階操作完全不行(我是指位元組變數運算操作還有I/O控制),但是還好它支援API的呼叫使用。

但是另一個問題又來了,API的呼叫很多參數都牽涉到位元組處理還有定址等太多問題,所以本篇僅針對字串傳遞的問題發響。

關於API傳遞字串,其實會使用的人應該都會注意到一件事情,就是API要求字串傳遞時,通常都是以傳址方式處理,而且通常接下來一個參數就是字串長度的值。

2009年11月9日 星期一

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

在PowerBuilder中事件的呼叫方式分為2種,『Post』與『Trigger』。

利用Trigger呼叫事件其實就像你在呼叫Function一樣,原本的程序會暫停(推入堆疊),然後執行Trigger的EVENT對象,執行完畢後,再回到(推出堆疊)原程序繼續執行,若是有回傳值,則會隨之回傳。

利用Post呼叫事件,則是將要呼叫的EVENT對象放到該物件的Message Queue(佇列)中等待被執行,原本程序不中斷繼續執行,因此如果你的事件有回傳值,會根本都收不到(因為還沒執行)

以上是PB對事件呼叫的方式(對Function 也可使用Post)。

原本,這樣的描述執行方式是沒有問題的,但卻有的很大的盲點,那就就是 yield() 指令。

2009年9月12日 星期六

Railo 免安裝 Server 版

寫這篇文章的版本是 3.1.1

這裡介紹的是 Server ZIP版本 ,不是EXE版。

因為EXE版在安裝到Windows 2000的過程有異常當機情形,而且執行時若RESET次數過多會導致無法再正常啟動,但在 Windows XPWindows 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 資料夾),裡面會有相關檔案。

2009年8月15日 星期六

Railo免安裝版-Railo Express

不知道Railo?先看這一篇"認識Railo"

寫這篇時的版本是 3.1.1

下載 railo-express 的zip壓縮檔後,將它解壓縮。
注意該資料夾下有兩個檔案 start.batstop.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>


2009年8月14日 星期五

什麼是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處理也許只要一個網頁就可以搞定,美編人員可以不用耗費太多的時間在於相關檔案的維護與同步性。

○HTML標籤參考這裡
○CFML標籤種類看這裡

上一篇:架設自己的伺服器

2009年8月13日 星期四

架設自己的伺服器

好了,來說說怎麼讓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會導致運作不正常的話,可以先用這個版本,這個版本的特點就是它是綠色軟體,解壓縮後可以看到其資料夾中有StartStop兩個批次檔,直接執行Start就可以,但是缺點就是畫面會出現DOS視窗不可以關閉,若關閉DOS視窗會導致服務也關了(正常停止服務要執行STOP那個批次檔)

第二個是Server版,這個版本就是會安裝到service中的版本,但是這個版本有EXE和ZIP兩種形式,EXE為自動安裝程式,直接執行即可安裝。而ZIP為壓縮檔案,先解壓縮(與Express版相同)然後執行該資料夾中的install-service批次檔,你就可以看到服務裡面多了Railo 1.0 Server的項目,它可以隨Windows自動啟動。但是個人經驗是EXE的版本在安裝到Windows 2000後會有一些問題,目前原因不明;但是ZIP版執行卻不會有問題。

不過因為個人使用的是Windows XP和2003,所以其他的版本各位就要自己試試看了。

Server Zip版的裡面有個Setup.exe的程式,那是用來設定給外部服務器支援用的,例如你已經安裝了Apache或是IIS,而且已經正在使用無法任意移除,利用Setup程式將自己的servlet提供給Apache或是IIS使用,使得這些服務器能夠認識並解析執行CFML的cfm檔案。

關於Setup.exe的設定,請參考 http://www.caucho.com/resin-3.0/install/install.xtp

上一篇:網頁運作概念
下一篇:什麼是CFML
另篇:Railo免安裝版-Railo Express
另篇:Railo免安裝 Server 版

網頁運作概念

基本上,網頁(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(aspx)...(繁不及備載),而CFML(ColdFusion)即是屬於此類。

從上述說明,你應該了解到CFML是用來製作伺服器端網頁的標籤程式碼。

所以你要了解,如果你的網頁(部落格不算)是架設在別人的伺服器中的話,那就得看提供伺服器服務的網路商使用的是何種語言了,不過基於安全考量,通常網路商不會讓你製作具有伺服器語言的程式網頁,最常見可用的都是標準的HTML與javascript與CSS而已。

下一篇:架設自己的伺服器

2009年8月12日 星期三

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的原因。

○CFML = ColdFusion Markup Language
○關於ColdFusion歷史可以參考 http://zh.wikipedia.org/w/index.php?title=ColdFusion&variant=zh-tw
○CFML線上參考書 http://livedocs.adobe.com/coldfusion/6.1/htmldocs/part_cfm.htm