anfa 的部落格

關於 Lab3 課本的範例

之前想好了忘了說... ||

關於課本的 Code, 是不能直接打開使用的,

因為會在 XMLHTTPRequest 時出問題而無法運作,

因此需要以 http:// 的型式打開才可.

 

學同如果自己有空間的話, 可以把 html 上傳上去測試,

如果沒有的話, 可以下載 HFS 讓自己的電腦變成 HTTP Server,

然後再加上 XML 的 MIME Type:

點選 Menu -> Other Options -> MIME types...
Add row,
File Mask 輸入 *.xml
MIME Description 輸入 text/xml

關於該軟體的介紹可參考:

http://www.chweng.idv.tw/swintro/hfs.php

http://azo-freeware.blogspot.com/2006/03/hfs-20.html

Lab T1 : Exercise.3-1

組別: 第三組
組員: 岑志豪 任祥偉 李耀軒

Exercise.3-1
Using the del.icio.us API from Chapter 2, create a dataset of bookmarks suitable
for clustering. Run hierarchical and K-means clustering on it.

這個例題要我們將delicious上的bookmark抓下來,再利用HierarchicalK-Means這兩種方法做分類。

我們修改了課本上的generatefeedvector.py,利用它讀取delicious上的rss feed,並將抓下來的bookmark資訊做處理,使抓下來的資料適合於做分類。

餵入的rss feeds:

http://feeds.delicious.com/v2/rss/popular/travel

http://feeds.delicious.com/v2/rss/popular/hotel

http://feeds.delicious.com/v2/rss/popular/airfare

http://feeds.delicious.com/v2/rss/popular/design

http://feeds.delicious.com/v2/rss/popular/education

http://feeds.delicious.com/v2/rss/popular/web2.0

http://feeds.delicious.com/v2/rss/popular/linux

我們抓了7個在popular tag裡的rss feedsurl,將每個bookmark的所含的tag抓出來計算,用這些資料來分類。

 

而後我們實作了Hierarchical的分類法,並利用PIL(Python Imaging Library)產生圖形化的Hierarchical分類,分類結果如下: 

  

 

  

而使用 K-Means (k=5)分群出來的結果為:

 

11/1 報告

Paper: SOA-Based Service Recovery Framework
Authors: Jie-Ying Chen; Yong-Jun Wang; Yi Xiao
Conference: The Ninth International Conference on Web-Age Information Management, 2008. WAIM '08.
Page(s): 629-635
Digital Object Identifier 10.1109/WAIM.2008.67

這篇論文提出一套新的機制以使系統中故障之 SOA-Based Service 得以修復或繼續運作,

其定義了一個名為 Recoverable Service Unit 的 Model 以使 SOA-Based Service 具有修復之可能,

在以  Recoverable Service Unit 為基礎之 Service 上提出了三種修復機制: Service Migration, Service Degradation, Service Reconstruction

F08-Web基本原理與技術-共同筆記版主競標結果 (10/09 更新)

下表為現時 共同筆記 版主競標結果, 空缺長期招標中~

1. HTTP
2. XHTML ie965123
3. CSS ie965225
X.1. XML語法 (在XML技術與應用分類)
X.2. Schema (在XML技術與應用分類)
X.3. XPath (在XML技術與應用分類)
X.4. XSLT (在XML技術與應用分類)
4. JavaScript ohsc98
5. Document Object Model (DOM)
6. AJAX neilchen
6.1 Script.aculo.us
7. Database: SQL, MySQL www1036
8. PHP 496511217
9. Ruby on Rail james9985

[Pre-Class] Server-side scripting

"

Server-side scripting
顧名思義, 是運行在伺服器端的描述語言,
與 Client-side scripting 不同, 其代碼是不為用戶所見的.

現時比較熱門的 Server-side scripting 有:
ASP / ASP.NET
JSP / Servlet
PHP
ROR

提到 Server-side scripting, 最好先從 CGI 說起.
CGI(Common Gateway Interface), 中文為 通用網關介面.

在很久以前的 Web 上, 要寫一些如留言板的網上服務, 和現在的作法不太一樣.
就 CGI 的運作方式而言, 雖然同樣是先接收使用者的請求, 然而對於該請求,
CGI 得要 OS 建立一個新的 Process, 呼叫伺服器內相對應的程序及 Script 來處理該請求,
處理完畢後再把結果發送給使用者.

如此一來, 由於每一個請求都要建立獨立的 Process, 在效率上並不理想.
於是開始產生出不同的解決方案, 如 ASP 及 JSP.

他們和舊式的 CGI 最主要的不同之處是, 其 Script 並不需要透過 OS 呼叫外部的程序去處理,
而是直接由 Web Server 處理. 而且也不需要每次都建立新的 Process. 因此效率比 CGI 為佳.

接下來再簡單簡介一下 ASP 與 JSP

ASP 全稱 Active Server Pages, 為 Microsoft 公司建立,
運行於 IIS(Internet Information Services) 的 Script.
其後推出的 ASP.NET 則基於 Microsoft .NET Framework 技術. (和 ASP 差距甚大)
在 ASP 中可以加入 Microsoft 的 VBScript 使用. ( ASP.NET 則是 Visual Basic, C# 及 JScript )

JSP 全稱 JavaServer Pages, 為 Sun 公司 Java 技術的其中一個分支.
雖然我們可以透過 Java 語法來建立服務 (Servlet), 可是與 HTML 的親和力卻不夠.
因此我們透過一個比較接近 HTML 的方式 - JSP - 來編寫服務, 再由 Server 將其生成對應的 Servlet.

親和力問題還有其他的解決方案, 如 Model-View-Controller, 在此就不詳細提及.

參考
ASP.NET 首頁
http://www.microsoft.com/taiwan/msdn/asp.net/default.mspx

JavaServer Pages Technology
http://java.sun.com/products/jsp/

PHP: Hypertext Preprocessor
http://www.php.net/

Ruby on Rails
http://www.rubyonrails.org/

Microsoft ASP.NET 快速入門教學課程
http://cht.gotdotnet.com/quickstart/aspplus/doc/whatisaspx.aspx

JavaServer Pages
http://www.oreilly.com.tw/product_java.php?id=a083
http://www.oreilly.com.tw/preface/083.pdf

"

[Pre-Class] XPath

"

Path, 路徑.
XPath, 叉路徑. (喂)

路徑
1. 往來的道路。
2. 做事的門路、方法。

對以上的理解沒問題的話, 那就應該能理解什麼是 XPath 了.
正如上面的所寫, 往來的道路就是路徑. 而對於 XML 而言, 節點之間的往來也有其路徑.
那麼 XPath 就是代達這些節點往來路徑的方法了.

提及路徑, 大家可能馬上想到 絕對路徑 及 相對路徑 這2種方法.
然而光靠這2種方法作節點的訪問在應用上還是不夠方便.

而 XPath 就提供了很多彈性方法給我們使用.

在 W3C 發佈的 2.0 正式版中指出, 其 expression 方法有以下10種:
1  Primary Expressions
2  Path Expressions
3  Sequence Expressions
4  Arithmetic Expressions
5  Comparison Expressions
6  Logical Expressions
7  For Expressions
8  Conditional Expressions
9  Quantified Expressions
10 Expressions on SequenceTypes

另外由 1.0 文件中我們可以看到當時的 Data Model 定義了 7 種類型的節點: (課本有提及)
1 root nodes
2 element nodes
3 text nodes
4 attribute nodes
5 namespace nodes
6 processing instruction nodes
7 comment nodes

而 W3C 在發佈 XPath 2.0 正式版的同時, 也發佈了 XQuery 1.0 and XPath 2.0 Data Model (XDM)
http://www.w3.org/TR/xpath-datamodel/
從下圖中我們可以看到其 Type Hierarchy 結構

而 XPath 的 Processing Model 如下
http://www.w3.org/TR/xpath20/#id-processing-model

在 W3Schools 裡可以看到這樣的一張示意圖:

由此可見 XQuery, XLink 及 XSLT 也內建支援 XPath.

在我們課本上所提及的 XPath 版本為 1.0, 而在本年一月時 W3C 正式發表了 XPath 2.0 版本.

在 Java 上我們可以透過 Jaxen 配合其他 XML Parser(如 dom4j) 使用.
另外由 Java 5 開始也內建 XPath 的支援了.

以上僅為本人對此標題內容之理解, 如有錯誤歡迎指教.

參考資料
XML Path Language (XPath) 1.0
W3C Recommendation 16 November 1999
http://www.w3.org/TR/xpath/

XML Path Language (XPath) 2.0
W3C Recommendation 23 January 2007
http://www.w3.org/TR/xpath20/

XML 路徑語言(XPath) (版本  1.0)
http://www.opendl.com/openxml/w3/TR/xpath/xpath-big5.html

XPath From Wikipedia
http://en.wikipedia.org/wiki/XPath

Jaxen
http://jaxen.codehaus.org/

domj4
http://www.dom4j.org/

Package javax.xml.xpath
http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/xpath/package-summary.html
http://java.sun.com/javase/6/docs/api/javax/xml/xpath/package-summary.html

The Java XPath API
http://www-128.ibm.com/developerworks/xml/library/x-javaxpathapi.html
http://www.ibm.com/developerworks/cn/xml/x-javaxpathapi.html

Learn XPath
http://www.w3schools.com/xpath/default.asp

XPath 教程
http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html

"

[Pre-Class] DOM

"

DOM

什麼是 DOM? (請不要看成DOOM啊)

全名為 Document Object Model.
簡單說就是對一個文件裡的內容產生一種物件概念.
只要是屬於文件內的物件, 你都有方法把他抓出來, 並可加以處理.
而 DOM 正是我們與物件之間的橋樑.
這樣的橋樑用專業術語來說就是 API. (Application Programming Interface)

DOM 正式發表是從1998年由 W3C 組織所提出. (DOM 1)
其出發點是為了讓一些 JavaScript 腳本 及 Java 程式能夠在不同的瀏覽器之間使用.

而 DOM 的前身 可以說是來自 Dynamic HTML - HTML,CSS,Javascript 所併合出來的東西.
當其時正是瀏覽器大戰 - Netscape V.S. Internet Explorer 的時期,
DHTML 這種東西沒有很好的一種規範, 不同瀏覽器之間所使用的 Javascript 不完全一樣,
做成網頁設計者在瀏覽器兼容上很大的麻煩, 也加速了 DOM 的發展.

DOM 的出現對 DHTML 的發展產生很大的幫助, 使得設計者可以在不同的瀏覽器上使用統一的介面呼叫物件.
因此現在談及 DHTML 的話, 也會把 DOM 一起併合進來.

常見的應用是在 HTML 及 XML 中, 不過其實只要是合乎這種結構的東西理論上都可以用 DOM 來表達.

按照 W3C 所說, DOM 的特徵是:
the interfaces and objects used to represent and manipulate a document
用來表示處理文件的介面及物件

the semantics of these interfaces and objects - including both behavior and attributes
這些介面及物件的語義 (包括 表現和屬性)

the relationships and collaborations among these interfaces and objects
這些介面及物件間的關係和合作

對於W3C還沒正式發表DOM之前, IE 與 Netscape 之間呼叫物件的差異可參考:
把應用程序從 Internet Explorer 遷移到 Mozilla - DOM 差異
http://www.ibm.com/developerworks/cn/web/wa-ie2mozgd/?ca=wa-t10#dom_differences

現在 DOM Level 3(最新版) 的藍圖:
http://www.w3.org/TR/DOM-Level-3-Core/introduction.html

延伸:
DOM 為網頁設計者解決不少問題, 但實際使用上還是有點麻煩.
在 Web 2.0 的時代, Javascript Prototype Object 的潛在能力被廣泛"激發"出來(帶頭者不明),
眾多由 Prototype Object 衍生出來的 Javascript Framework 發佈,
又再一次為網頁設計者帶來新一股衝擊, 使得 Javascript 及 DOM 在使用上更加方便.
其中比較熱門的 Framework 有:

Prototype
http://www.prototypejs.org/

jQuery
http://jquery.com/

moo.fx
http://moofx.mad4milk.net/

script.aculo.us
http://script.aculo.us/

Dojo
http://dojotoolkit.org/

參考連結:
Document Object Model (DOM)
http://www.w3.org/DOM/

About the W3C Document Object Model
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dom/domoverview.asp

MSXML DOM Reference
http://msdn2.microsoft.com/en-us/library/ms764730.aspx

Gecko DOM Reference
http://developer.mozilla.org/en/docs/Gecko_DOM_Reference

HTML DOM Tutorial
http://www.w3schools.com/htmldom/default.asp

XML DOM Tutorial
http://www.w3schools.com/dom/default.asp

"

[Pre-Class] XML Schema

"XML Schema 是什麼?
他是用來定義描述 XML 的 schema language 的一種, 而他本身也是一個 XML 文件.

相對於 DTD, 他可以作更細微的定義及描述.

好, 說完.
(怎可能 XDD")

在很久之前, 還沒有一種用來定義及描述 XML 的一套標準,
因此當時出現了很多不同的 schema language 來定義他.

其中有: (引用 http://en.wikipedia.org/wiki/XML_schema)
Document Definition Markup Language (DDML)
Document Schema Definition Languages (DSDL)
Document Structure Description (DSD)
Document Type Definition (DTD)
Namespace Routing Language (NRL)
RELAX NG and its predecessors RELAX and TREX
SGML
Schema for Object-Oriented XML (SOX)
Schematron
XML-Data Reduced (XDR)
XML Schema (W3C) (WXS or XSD)

看到的可能會有點眼傻: 是不是多了點?
對, 當期時就是這個樣子. 原因可能有很多,
如 需求不一, 功能成熟程度, 使用難易度等.

早期 Microsoft 所使用的那一套是 XDR, 也就是我們課本上說的 Microsoft XML Schema,
http://www.w3.org/TR/1998/NOTE-XML-data-0105/
http://www.ltg.ed.ac.uk/~ht/XMLData-Reduced.htm (輕量版 XML Data)

而在 W3C 還沒完全成為標準時, 其推行的 schema 叫 XML Schema(S必須大寫).

在 Dongwon Lee 及 Wesley W. Chu 發表的一文當中, 對當時6種的 XML Schema Languages 作出了一些比較和分析
Comparative Analysis of Six XML Schema Languages
http://www.cobase.cs.ucla.edu/tech-docs/dongwon/ucla-200008.html
http://dret.net/biblio/reference/lee00

在該功能對比表上我們可以看出 XML Schema 其實已經是滿成熟的了.

而由 語意及網路服務研究中心 總結出的結論是:
引用自: http://www.ws.org.tw/sws/index.php?option=com_content&task=view&id=36&Itemid=48
a. 由容易使用的觀點:由於XML Schema支援廣泛的功能,與其他Schema Languages相較,最不容易使用。
b. 由Language的觀點:XML Schema較易寫出更好的查詢,且更容易偵錯。
c. 由資料庫的觀點:XML Schema支援很多內建的Domain Types,但不能表達SQL check或assert clause。
d. 由表達能力的觀點:XML Schema為展現表達能力最強的規範之一。

在此提一下, 當時能與 XML Scheam 決一高下的可以說是 RELAX NG 了.
http://www.xml.org.tw/function/Fglossary1.asp?key=RELAX%20NG

而在 MSXML 更新到 4.0 時, 微軟從使用 XDR 改為使用 XML Schema 了.
在 XML Schema 成為標準後, 其他的 schema language 也續漸被人所淡忘了.

所以到今天說 XML Schema 基本上已經是範指 W3C 的那一套.

只可惜我們所用的課本比較舊, Microsoft XML Schema 佔的部份很多, W3C 的就很少... (翻座)
相信這點對熱愛知識的我們是不會介意的. (笑)

又某一個日出.

延伸文章
Schema 成就 XML 資料描述
http://2tigers.net/html/tiger_column/article4.html

XML Specifications
http://msdn.microsoft.com/XML/Understanding/XMLSpecs/default.aspx

"

頁面