2011年5月30日 星期一

LAB37


LAB36

XML:

可延伸標示語言(英語:eXtensible Markup Language,簡稱:XML),又稱可延伸標記語言,是一種置標語言。置標指電腦所能理解的資訊符號,透過此種標記,電腦之間可以處理包含各種資訊的文章等。如何定義這些標記,既可以選擇國際通用的標記語言,比如HTML,也可以使用像XML這樣由相關人士自由決定的標記語言,這就是語言的可延伸性。XML是從標準通用置標語言(SGML)中簡化修改出來的。它主要用到的有可延伸標示語言、可延伸樣式語言(XSL)、XBRL和XPath等。

XSLT:

XSLT是把XML檔案轉化為另一檔案的轉換語言,即將源檔案的所有數據或者部分數據,利用XPath進行選擇,生成另外的XML檔案或者其他可直接顯示或列印的文件格式(例如 HTML文件、RTF文件或者TeX文件)。XSLT語言是聲明性的語言,即XSLT程序本身只是包含了一些轉換規則的檔案。而這些規則可以被遞歸地應用到轉換過程中。XSLT處理程序會首先確定使用XSLT中的哪些規則,然後根據優先順序作出相應的轉換操作。


2011年5月16日 星期一

lab 33

CGI簡介
原始的HTML語言是設計用來展現靜態的資料,它讓人使用一種簡單的語法展現出豐富的多媒體資料,就像廣告看板一樣。 由於WWW具有相當大的商業用途,因此推出後大受歡迎。可是單純的靜態展示好像缺少了什麼? 如果使用者需要的資料具有時效性,必需時常更新,這時該怎麼辦呢? 又或者你想留下使用者的資料,讓你的網頁能跟使用者達到互動的效果,這時又該如何? 由於上述種種需求,於是就誕生了CGI這東東。
CGI是Common Gateway Interface的縮寫,中文翻做『共通閘道介面』。它是一種標準介面程式,能讓你的網頁跟WWW server溝通,達到跟使用者互動的效果。 而且透過CGI程式,可以讓你動態的產生網頁,秀出server上的最新資料。當你link到一個CGI物件時,你取回的文件並非是一份靜態資料, 而是一個藉由程式動態產生的HTML資料流。傳回來的資料也許分分秒秒都在更改,或者針對使用者的特殊查詢而有不同的反應,例如股票市場行情等等。 簡單來說,CGI程式就是能夠動態產生WWW網頁,並讓一般使用者經由WWW取用現存在傳統資訊系統內的資料。


首先,你得認清一個事實:如果資料是天天更新,你絕對不可能寫一個很大的HTML文件包含所有的這些更新資料。 萬一放在WWW上的資料是分分秒秒都在變動的,那麼利用程式自動根據資料產生HTML文件顯然是你唯一的選擇。 第二,CGI程式可以根據使用者輸入的要求自動產生HTML格式的資料。因為輸入資料是由WWW server負責接收,並非CGI程式本身, 故得找出一個有效率的方法,來做使用者輸入參數和產生HTML文件程式間的溝通工作。 CGI本身制訂的標準有提到可以藉由環境變數來達成這個目的,而且CGI程式也有能力取得現存在各類資料庫裡的資料。 這就是為什麼我們稱之為Common Gateway Interface,因為CGI程式通常就像橋樑或閘道一般,溝通著非WWW系統和WWW server (這和下面所說的Web server、HTTP server是一樣的,都是指一個架有HTTPd的伺服器)。
舉個例子來說,你是某家證券公司的大老闆,你的公司裡已經有一個相當完善的資料庫,裝滿了過去所有的股票價格資料, 現在你想經由WWW提供這些資料給你的顧客們做參考,但是你的資料庫系統根本就不懂HTTP這種格式,這時你就需要一個閘道程式, 當作股票價格資料庫和HTTP server間的橋樑通道,於是CGI程式就誕生了。它可以取得HTTP使用者送來的查詢指令,轉換成現存資料庫可以了解的指令, 用以取得資料後,再將資料轉換為HTML格式,最後再經由HTTP server傳回給使用者,秀在使用者的瀏覽器上。
根據上述這些要求,CGI程式的確可以用任何程式語言來撰寫,只要該語言具有讀寫檔案的能力且該資料檔可被存取即可。 不過這也表示寫程式時需要注意安全性的問題,以免資料被使用者有意無意的破壞,否則到時候就真的欲哭無淚了。

接下來我要說一些比較理論性的東西,但卻是寫CGI程式必備的基本知識。一部Web server上一定會跑起HTTPd,這是HTTP的server程式(daemon)。 由於HTTPd牽涉到系統設定問題,所以除非你是系統管理者或是自己架一台server跑起HTTPd,否則一般使用者是沒有權跑自己寫的CGI程式的。 不過現在另外有個程式叫CGI wrap,它可以透過一種特殊的方法讀取userhome/www/cgi-bin裡的CGI程式,並且以使用者的身份來執行這個CGI程式,所以不虞有被破站的危險。 ind.ntou.edu.tw這部Email and Web server就有裝上CGIwrap,並且全校師生都有帳號,是大家練習CGI程式的好去處(相關的使用方法請Email to root@ind.ntou.edu.tw)。
OK! 現在我們假設你的Web server已經設置好執行CGI的環境,並且你有存取cgi-bin目錄的權限 (至於HTTPd和TCPwrap的安裝與相關設定並不在本篇文章的討論範圍內,有興趣者請自行到各大bbs站相關佈告欄的精華區找找,一定可以找到你所需要的答案)。 當使用者用瀏覽器link到一個CGI程式時,瀏覽器會透過HTTP這個通訊協定,送出一個請求(require)給遠端(remote)的Web server,Web server就會跑一個HTTPd process, 這個process會去找指定的目錄下有沒有這個CGI程式,如果有的話HTTPd會啟動一個child process來跑這個CGI程式,也因此繼承了HTTPd所有的環境變數設定。 這也就是說使用者所輸入的要求會經由HTTP通訊協定傳送到Web server的HTTPd,再經由環境變數或標準輸入裝置(STDIN)傳遞給CGI程式。CGI程式相關的環境變數列表於下:


Environment VariableDescription
SERVER_SOFTWAREThe type of Web server running the CGI program
SERVER_NAMEThe name of the Web server host
SERVER_PORTThe port address of the Web server
GATEWAY_INTERFACThe version number of the CGI standard
SERVER_PROTOCOLThe version of HTTP the server is running
REQUEST_METHODThe method of requesting data specified by the client
QUERY_STRINGRequest parameters supplied by the client
SCRIPT_NAMEThe resource locator of the CGI program
REMOTE_HOSTThe name of the client host
REMOTE_ADDRThe Ipaddress if the client host
AUTH_TYPEAuthorization method,often blank
REMOTE_USERThe name of the user provided by the client
REMOTE_IDENTAn identify fot the client user,not often available
REFERER_URLHow the client got here
HTTP_ACCEPTThe MIME types accepted by the client
HTTP_USER_AGENTThe client browser type
CONTENT_TYPEThe MIME type of data supplied with the request
CGI程式接收到使用者的需求,經過一番處理,然後會將標準輸出(執行結果)傳送給HTTPd,再經由HTTP交給客戶端(client)的瀏覽器秀出來。 所以CGI程式在標準輸出上的執行結果必須要符合HTML格式,而在文件的排版方面當然也要依HTML格式來寫,這一點要特別注意一下。


資料來源:http://ind.ntou.edu.tw/~dada/cgi/CGIintro.htm



Lab 33



2011年3月20日 星期日

Homework 4

試用中央研究院SahanaTW測試平台

 SahanaTW這是一個災難管理網站應用系統,可以協助解決災
後大規模的人道問題,包括受災人口通報統計、物資捐贈、庫存、媒合管理及志工與專案管理等。



狀態地圖
在這地圖中各地區中所發生的事都可以一目瞭然


失蹤者的登入與查詢


下面這張圖可能看起來簡單了點


其實這樣確實夠用了
但是名字的重覆率其實相當高
萬一出現成千上萬個資料肯定會看到眼花
若能增加地址的查詢會更好
畢竟我可能只會寄包裹到朋友家
而不會去記身分證更甚至是其他證件的號碼