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