rosial

          lost memory
          數(shù)據(jù)加載中……

          《爪哇夜未眠》- REBOL篇 - REBOL的設置

          ????

          ????? 一般來說,REBOL不需要什么特別的設置(configuration),就可以執(zhí)行。但是在某些環(huán)境下(特別是Unix),你可能需要設置REBOL_HOME環(huán)境變量。另外,在某些窗口環(huán)境中,可以將擴展名為“.r”的文件,設置為REBOL解釋器的關聯(lián)文件,以方便執(zhí)行。

          真正重要的是網(wǎng)絡的設置與安全的設置,分成兩小節(jié)來說明。

          網(wǎng)絡設置

          ????? 某些REBOL函數(shù)需要知道網(wǎng)絡相關的設置,否則無法運作。例如send函數(shù)可以用來發(fā)送電子郵件。如果使用send,就必須先設置好外寄電子郵件服務器(SMTP Server)。如果沒設置電子郵件服務器,就試圖送出email,會得到下面的結(jié)果:

          >> send jerrytsai@shinewave.com.tw "Hello"

          ** User Error: No network server for smtp is specified

          ** Near: smtp-port: open [scheme: 'smtp]

          either only

          ????? 我們可以先設置網(wǎng)絡,再執(zhí)行send,就不會有問題了:

          >> set-net [jerrytsai@shinewave.com.tw
          ????? smtp.shinewave.com.tw]

          >> send jerrytsai@shinewave.com.tw "Hello"

          connecting to: smtp.shinewave.com.tw

          ?????set-net是一個函數(shù),后面需要一個區(qū)塊(block)參數(shù)(所謂的區(qū)塊,指的是:用中括號[ ]包圍的一群值),區(qū)塊內(nèi)放置“至少”兩個值,第一個值是寄件者的電子郵件信箱,第二個值是外寄電子郵件服務器(SMTP Server)。如果你不知道你的SMTP Server為何,可以從你的收信軟件(例如:Microsoft Outlook)中找到這樣的信息。

          ????? 如果每次使用send前都要先利用set-net來設置網(wǎng)絡,也實在是太麻煩了。你可以將這道set-net描述寫在user.r中。前一節(jié)提到,REBOL解釋器啟動時,會自動讀進user.r文件內(nèi)的REBOL script,并執(zhí)行之。

          Set-net的參數(shù)區(qū)塊內(nèi),最少要指定兩個值,最多可以有六個值,這六個值的意義依序分別為:

          1.???????? 電子郵件帳號

          2.???????? 電子郵件發(fā)送服務器

          3.???????? 電子郵件接收服務器

          4.???????? proxy服務器

          5.???????? proxy port(默認值是1080

          6.???????? proxy type(默認值是“socks”)

          ????? 任何值如果不存在,可以利用none來表示。例如:

          set-net [luke@rebol.com mail none our-proxy 1080 socks]

          ????? 這六個值中,第四到第六的值是和proxy有關。如果你是直接利用調(diào)制解調(diào)器(modem)或以太網(wǎng)(ethernet)聯(lián)機到互聯(lián)網(wǎng)(Internet),你不需要設置這三個值。如果你不確定這三個值應該么設置,你可以從你的網(wǎng)頁瀏覽器(Web browser)中找到這些設置。以微軟的Internet Explorer瀏覽器來說,在菜單中選擇【工具】àInternet選項】à【連接】à【局域網(wǎng)設置】,即可找到Proxy的相關設置值。

          ????? 對于REBOL來說,proxy類型可以是sockssocks5socks4generic。其中genericgeneric CERN proxy的意思。

          ????? 其實,set-net這個函數(shù)會將這六個設置值依序放到下面的六個系統(tǒng)變量中:

          SYSTEM/USER/EMAIL

          SYSTEM/SCHEMES/DEFAULT/HOST

          SYSTEM/SCHEMES/POP/HOST

          SYSTEM/SCHEMES/DEFAULT/PROXY/HOST

          SYSTEM/SCHEMES/DEFAULT/PROXY/PORT-ID

          SYSTEM/SCHEMES/DEFAULT/PROXY/TYPE

          ????? 因此,我們也可以不使用set-net函數(shù),而直接設置變量,例如:

          >> SYSTEM/USER/EMAIL: jerrytsai@shinewave.com.tw

          >> SYSTEM/SCHEMES/DEFAULT/HOST: smtp.shinewave.com.tw

          ???? 請注意,利用這種方法來設置變量時,冒號“:”必須緊接在變量后面,而冒號后面必須要有空格。

          ???? 你可以利用print來查看這些變量的值,例如:

          >> print SYSTEM/SCHEMES/DEFAULT/HOST

          msa.hinet.net

          安全設置

          ????????? REBOL script執(zhí)行時必須通過REBOL解釋器,而REBOL解釋器可以進行安全把關,如果解釋器發(fā)現(xiàn)script試圖進行一些“有安全疑慮”的動作時,就會顯示出類似圖1的對話框(dialog),警告用戶。用戶可以選擇因應的方式:

          l???????? Yes:允許script進行此次動作,繼續(xù)執(zhí)行

          l???????? Allow all:允許script進行所有此類動作(以后不用再問了),繼續(xù)執(zhí)行

          l???????? No:不允許script進行此動作,繼續(xù)執(zhí)行。這會產(chǎn)生Security Violation(違反安全)的Access Error存取錯誤)。

          l???????? Quit:將此script終止執(zhí)行

          1? REBOL解釋器詢問我們,如何處置有安全疑慮的動作

          ????? 何謂“有安全疑慮”的動作?對于REBOL/CoreREBOL/ViewREBOL/View/ProREBOL/CommandREBOL/Command/View這五個標準的REBOL解釋器來說,如果沒有特別設置安全,在解釋器預定的情況下,如果script試圖修改磁盤內(nèi)容或試圖執(zhí)行磁盤內(nèi)的文件,就會出現(xiàn)上述的對話框(dialog),來讓用戶自行決定。藉此保護用戶的文件系統(tǒng),免于受到破壞。

          ????? 但是上述的安全設置,只有針對這五個標準的REBOL解釋器。對于REBOL/BaseREBOL/Pro、與REBOL/Face來說,完全沒有安全的限制。因為這三個精簡核心版(kernel)的解釋器是給軟件開發(fā)人員用的,而不是給一般的軟件用戶用的。軟件開發(fā)人員只會使用REBOL/BaseREBOL/Pro、與REBOL/Face來測試自己開發(fā)出來的REBOL script,而不會用它們來執(zhí)行其它的REBOL script

          ????? 如果精簡核心版的解釋器想要和標準版的解釋器一樣,藉此保護用戶的文件系統(tǒng),免于受到破壞,可以利用下面的敘述:

          secure [file [allow read? ask write? ask execute]]【注】

          【注】secure后面中括號內(nèi)的文字,就是一種很簡單的方言,由security函數(shù)制訂,專門用來描述對于網(wǎng)絡和磁盤存取動作的限制。方言中出現(xiàn)的字,即使某些和REBOL語言的函數(shù)一樣(例如此處的readaskwrite),但意義上完全是兩回事。這就是方言!用來表達特殊領域,且不受到原本REBOL語法的規(guī)范。

          ????? 這里的意思是:對于文件的安全控管方式,允許文件被讀(allow read)、寫入的時候需要詢問用戶(ask write)、執(zhí)行文件的時候需要詢問用戶(ask execute)。

          ????? 我們可以利用security函數(shù)來針對網(wǎng)絡、整個文件系統(tǒng)、特定文件或目錄,進行安全上的限制。為了方便起見,我們通常將安全設置的敘述,放在rebol.r中。

          Security函數(shù)后面可以跟著一個字或一個區(qū)塊。如果是一個字,則表示網(wǎng)絡和文件系統(tǒng)都采用此種安全處理方式。如果是一個區(qū)塊,可以做比較細微的更動。例如:

          Security ask

          ????? 上面表示,不管對于網(wǎng)絡或磁盤系統(tǒng)的存取,都必須先詢問用戶,取得同意。

          Security [ net quit file ask %./ allow ]

          ????? 上面表示,對于網(wǎng)絡的存取一概拒絕,且自動結(jié)束程序的執(zhí)行。對于文件系統(tǒng),必須先詢問用戶,取得同意。對于目前目錄下(“%.”表示目前的目錄)的所有文件,一律允許存取。

          關于security函數(shù)的詳細用法,你可以利用help函數(shù)(或?)來取得說明文件:

          >> ? security

          ????? 如果你想執(zhí)行某個可信任的REBOL腳本,想破除安全限制,你可以利用REBOL解釋器的命令行選項“-s”【注】,如下所示。除了“-s”,還有一個“+s”的選項,其作用剛好和“-s”相反。

          REBOL -s TrustWorthy.r

          【注】這年頭,凡事還是小心一點好,建議你不要輕易使用“-s”。

          發(fā)表日期: Feb. 29, 2004

          posted on 2006-07-10 13:26 rosial 閱讀(802) 評論(1)  編輯  收藏 所屬分類: 蔡學鏞

          評論

          # re: 《爪哇夜未眠》- REBOL篇 - REBOL的設置  回復  更多評論   

          dsklasmilksanujauksa
          2006-08-09 14:41 | 王鵬
          主站蜘蛛池模板: 东乌珠穆沁旗| 湘阴县| 无棣县| 灌云县| 舒城县| 平远县| 贵溪市| 南雄市| 宝清县| 泸溪县| 丹东市| 富宁县| 大方县| 曲松县| 五指山市| 宝兴县| 和平区| 山东| 高安市| 伊宁市| 烟台市| 甘孜县| 西畴县| 怀化市| 保康县| 静安区| 南华县| 上高县| 安多县| 南阳市| 湘潭市| 尚志市| 临潭县| 宁乡县| 东乡族自治县| 额尔古纳市| 五常市| 杭锦后旗| 宣汉县| 泸水县| 呼玛县|