《爪哇夜未眠》- REBOL篇 - REBOL Console
????? 一進入REBOL console,你會看到一大串文字描述,包含了版本聲明、組件列表(component list)、預先執行的腳本(pre-executed script)以及授權信息。下面分別說明。
產品與版本
????? 一開啟console就會顯示下面的版權說明:
REBOL/Core
Copyright 1997-2003 REBOL Technologies
REBOL is a Trademark of REBOL Technologies
All rights reserved.
????? 你也可以利用about函數,來重現這一段文字:
>> about
REBOL系列產品的版本編號分成五個數字(有時候是四個數字),用點分開。前兩個數字代表功能性的改變,第三個數字代表小改變(例如:加上少數的功能,修改部分原有的bug),第四個數字代表OS,第五個數字代表OS的變異版本。整體來看,前三個數字是功能版本,后兩個數字是平臺版本。
以REBOL/Core
任何時候,如果你想知道你使用的是哪一個REBOL產品的那一個版本,你可以通過“system/product”、“system/version”、“system/build”【注】這三個變量來取得此信息:
>> system/product
== View
>> system/version
==
>> system/build
== 6-Aug-2003/19:42:48-7:00
【注】build是一種更精細的版本號碼,REBOL以日期和時間來作為build的值。
????? 任何時候,如果你想取得最新版的REBOL,你可以再到REBOL Technologies公司的網站下載,或者更簡單的方式是,使用upgrade函數。
>> upgrade
connecting to: www.rebol.com
Script: "Download Current Version" (10-May-2001/20:12:53-7:00)
Your copy of Windows XP/NT/2K/9X iX86 REBOL/core
????? 上面的信息表示你的版本已經是最新版。使用upgrade函數,你也很可能得到下面的信息:
>> upgrade
??? You are running an unknown version of REBOL.
????? 這有兩種可能,其一是,你使用REBOL系統是實驗性質的版本(experimental version),而非正式發行版(release)。另一個可能是,REBOL Technologies公司忘了在更新服務器(upgrade server)上放置最新版,導致你的REBOL版本比更新服務器上的REBOL版本更新L。
使用upgrade前,請先確定網絡已經聯機。你可以用connected?函數來得知網絡是否聯機,true表示聯機,false表示未聯機:
>> connected?
??? == true
組件
在console窗口版權說明之后,接著列出此解釋器內所具備的組件(component),如下所示:
Component: "REBOL Mezzanine Extensions"
Component: "REBOL Internet Protocols"
Finger protocol loaded
Whois protocol loaded
Daytime protocol loaded
SMTP protocol loaded
POP protocol loaded
IMAP protocol loaded
HTTP protocol loaded
FTP protocol loaded
NNTP protocol loaded
Component: "
從這里可以看出,此版本的解釋器具備三個組件,分別是“Mezzanine Extensions”、“REBOL Internet Protocols”、“System Port”。其中“REBOL Internet Protocols”組件包含了下列的Internet protocol:Finger、Whois、Daytime、SMTP、POP、IMAP、HTTP、FTP、NNTP。
????? 我目前使用的REBOL解釋器是功能最完整的REBOL/Command/View,而不是REBOL/Core。以REBOL/Command/View來說,具有更多的組件,分門別類說明如下。
基本組件(這些組件包含在REBOL/Core中):
l?????????? Mezz:提供許多基本的功能
l?????????? Protocols:提供許多網絡協議
l?????????? Sysport:存取COM1/COM2等系統外接端口(port)
數據庫組件:
l?????????? ODBC:提供存取ODBC數據庫的功能
l?????????? MySQL:提供存取MySQL數據庫的功能
l?????????? Oracle:提供存取Oracle數據庫的功能
操作系統組件:
l?????????? Library:調用外部C語言動態鏈接庫(dynamic-linked library)
l?????????? Shell:和OS的shell溝通
l?????????? Registry:用來存取Windows Registry
用戶界面(UI)組件:
l?????????? graphics:提供存取繪圖的功能。當以后的文章介紹到GUI時,就會說明此組件的用法。
l?????????? view:提供建立窗口的功能。當以后的文章介紹到GUI時,就會說明此組件的用法。
l?????????? viewtop:提供桌面(desktop)的功能,第02篇會詳細介紹View Desktop。
l?????????? sound:提供音效的功能。當以后的文章介紹到計算器音效時,就會說明此組件的用法。
密碼組件:
l?????????? crypt:提供加密的功能
l?????????? Crypt2:提供加密的功能
l?????????? dhdsa:提供DH/DSA算法
l?????????? rsa:提供RSA算法
l?????????? Ssl:提供SSL網絡加密的功能
其它:
l?????????? BigNum:提供大數的功能
l?????????? Fastcgi:提供Fast CGI的接口。當以后的文章介紹到Web編程時,就會說明Fast CGI的用法。
l?????????? License:提供授權的功能,本文章稍后會說明。
如何知道你的REBOL有無支持某組件,通過component?函數即可。
>> component? 'odbc (注意:odbc前面要加上一個單引號)
== [ODBC
??? make object! [
??????? Title: "ODBC Access"
??????? Date: 24-Mar-2002/20:13:57
??????? Name: 'ODBC
??????? Version: 1...
>> component? 'usb
== none
>>
如果得到非none的值,就表示有找到此組件。
圖1列出了所有的REBOL解釋器以及所有的組件。方塊表示具備此組件;三角形表示雖然不具備此組件,但是有提供源文件,可以將源文件含入(include)。圓點表示雖然包含,但必須先取得授權,否則功能被禁止使用。
圖1? 所有REBOL解釋器的內含組件比較
????? 其中,REBOL/Base、REBOL/Pro、REBOL/Face包含在REBOL/SDK產品中;REBOL /View和REBOL/View/Pro是同一個產品,只要取得授權key文件,就可以從REBOL/View升級到REBOL/View/Pro;REBOL/Command和REBOL/Command/View都是REBOL/Command產品的一部份。
預先執行的腳本
????? 加載組件之后,會立刻執行兩個腳本,先執行rebol.r,再執行user.r(REBOL腳本的擴展名習慣用r)。你可能會看到下面的信息:
Script: "REBOL Extended Definitions" (none)
Script: "User Preferences" (4-Jul-2003/13:22:27+8:00)
???? 其中rebol.r就是上面的“REBOL Extended Definitions”,而user.r就是上面的“User Preferences”。也就是說,rebol.r內的程序是用來擴充系統的定義,user.r內的程序是用來進行用戶喜好的設定。這兩個文件都可以是空的,甚至文件不存在也可以。
????????? rebol.r的存在,是為了讓REBOL Technologies公司具有擴充REBOL的彈性。例如,哪天REBOL Technologies公司想要提供一個清除console畫面的函數,但又不想為此修改解釋器,他們可以發布一個rebol.r文件,內文如下:
REBOL[ ]
clrscr: does [print "^(1B)[J"]
????? 那么我們就可以利用這個新增的clrscr(clear screen)函數,來清除console:
>> clrscr
????? 另外,如果你有一些新增的定義,可以放在user.r中。在下一節,我們會將網絡設定和安全設定放在user.r中。
????? 也請注意,user.r文件內容一開始,也必須是“REBOL[ ]”,用來告訴REBOL解釋器,這是一個REBOL script。本專欄第03篇會對此有更詳細的說明。
授權
????? 如果你取得了授權,則最后會出現類似下面的授權文字。
Licensed to: xxx-xxx xxx (commercial) <xxx@xxx.xxx.xxx>
License ID: *-*****-*
解釋器有內含某組件,不代表我們就可以使用此組件。如果沒有取得授權,則某些組件會被禁止使用(disable)。
????? 上面提到,REBOL有一個組件叫做“License”,這正是用來處理授權的組件。REBOL/Core不包含License組件,所以沒有授權的問題,只要包含在REBOL/Core內的組件,都可以使用。除了REBOL/Core之外,其它的標準REBOL解釋器都具備License組件,都需要授權,否則無法使用某些部分的功能。
??????????????License組件處理授權的方式,是在同一個目錄下尋找名為license.key【注】的文件,如果找到了,則檢查此文件是否為正確的key,來決定授權是否成功。如果找不到license.key文件,授權當然也算失敗。
【注】license.key必須向REBOL Technologies公司購買,請參考網頁:http://www.rebol.com/purchase.html的說明。對于REBOL的初學者來說,可以不用購買授權,因為免費的REBOL/Core與REBOL/View目前已經夠我們使用。
????? 如果你沒有取得授權,則會出現類似下面的說明文字,這表示,因為你未取得授權,所以只能使用一部份的功能。
*** REBOL/View license only. No REBOL/View/Pro features.
*** Obtain REBOL/View/Pro from http://www.rebol.com
????? 你可以通過system/user-license/message來觀看授權文字
>> system/user-license/message
== {Licensed to: xxxxx-xxxx xxx (commercial) <xxx@xxx.xxx.xxx>
License ID: x-xxxxx-x}
????? 另外,也可以利用system/user-license來得知授權用戶的名字和序號
>> system/user-license/name
== "xxxxx-xxxx xxxx (commercial)"
>> system/user-license/id
== #x-xxxxx-x
????? 詳細授權書內容,可以從利用license函數取得。
>> license
其實,授權書內容存放在system/license變量內。
>> system/license
== {REBOL/Command End User License Agreement…
????? 因為授權書內容太長,所以只顯示出一小部份,我們可以利用print函數來將此內容全部顯示出來:
>> print system/license
發表日期: Feb. 22, 2004
posted on 2006-07-10 13:22 rosial 閱讀(375) 評論(0) 編輯 收藏 所屬分類: 蔡學鏞