網頁

搜尋此網誌

2013年8月20日 星期二

HTML4 第一講

最新的 HTML 規範是第5版,稱為 HTML5 。在此,我想先介紹 HTML 第4版,而不是 HTML5 ,原因在於 HTML4 已經廣泛使用、規格已確定,而且學習 HTML4 之後瞭解 HTML5 也不難,所以我認為比較適合初學者優先學習。

認識 HTML

網頁是一個 HTML 文件,由 HTML 語言所撰寫而成的檔案,HTML全名為 HyperText Markup Language ,稱為超文字標記語言,是屬於一種標準通用標記語言 (Standard Generalized Markup Language, SGML) ,所謂標記語言指的是用標示 (mark up) 表示內容的結構、顯示和語意的資訊。

HTML 標記語言主要有兩個概念:元素 (element)屬性 (attribute),這些都定義在文件宣告定義 (Document Type Definition, DTD)裡面,每個元素具有多個屬性,元素由起始標籤、內容、結束標籤3個部分組成。元素名稱和屬性名稱都是不區分大小寫 (case-insensitive)

不過注意到,HTML 元素和標籤是不一樣的概念,元素不一定需要起始標籤結束標籤,例如 body, head, html, tbody這四個就允許完全不需要起始和結束標籤,但這些元素依舊存在於 HTML 文件中,有些元素則允許忽略結束標籤。另外,有一部分元素是不需要結束標籤,而且內容要為空。

HTML 文件是由 HTML 元素所組成,HTML4 總共有91個元素,我們可以依據不同用途分成四大類:基礎元素、結構元素、外觀元素與互動元素。這裡我們會先介紹 HTML 文件和基礎元素。

一個 HTML 文件可以分成三部分:版本資訊、文件標頭 (document head) 與文件主體 (document body) 。版本資訊是 HTML 文件的第一列,目前有三種文件類型宣告 (document type declaration) 指定版本資訊,分別是:

嚴謹的 (strict) 宣告
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

過渡的 (transitional) 宣告
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

框架組的 (frameset) 宣告
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

這三個版本資訊的差異在於 HTML 元素支援的數量不同,參閱下表所述:
stricttransitionalframeset
支援元素數量778891

接著版本資訊是 html 元素,代表 HTML 文件, html 元素內包括 head 與 body 兩個區塊。head 區塊由 head 元素組成文件標頭,是用來儲存文件的資訊,通常不會顯示給使用者看,所以只要不屬於內容的資料都應該在 head 區塊中。而 body 區塊則由 body 元素組成文件主體,這部分是文件的內容本身,寫網頁絕大多數都是在編輯 body 區塊,使用者看的網頁也就是 body 元素的內容。

一個 HTML 文件會像下面這樣的結構:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <!-- head 區塊:文件標頭 -->
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>這是標題</title>
  </head>

  <body>
    <!-- body 區塊:文件主體 -->
  </body>
</html>

注意,DTD中定義 html 元素中必須包含一個 head 元素與 body 元素,如果你在 HTML 文件中差入多個 head 標籤內容,還是只會有一個 head 元素, body 元素也是相同的行為,這其實說明 HTML 元素和標籤是不一樣的概念。

HTML 基礎元素如下表所示,加上 html 元素自己總共有 14 個基礎元素。
文件標頭文件主體
組成的元素headbody
所屬的元素title
meta
群集:div, span
標題:h1, h2, h3, h4, h5, h6
address

這裡還必須介紹一個觀念,文件主體內的元素可以分成兩大類,區塊 (block-level) 元素行內  (inline ,或稱 text-level) 元素。區塊元素中可以包含行內元素和其他區塊元素,而行內元素只能包含行內元素或資料,兩類的內容模型 (content model) 不太一樣。區塊元素通常從新的一列開始放置,而行內元素則會在同一列中延續放置,所以才稱為「行內」。這兩類元素對於語言方向性的行為也有所不同,這部分將另外說明。

###

2013年8月16日 星期五

網站、網頁、網頁應用程式

網站、網頁、網頁應用程式

這裡將對一些術語進行解釋說明,因為網站 (website) 網頁 (web page) 很多人常常搞不清楚。

網頁

先說明什麼是網頁 (web page),一個網頁是你開啟網頁瀏覽器 (web browser) 所看到的那個畫面,而這個畫面實際上是一個 HTML 文件的檔案,就好像一本書裡的一「頁」內容,因此才稱為網頁。目前以技術上來說,網頁不一定是一個 HTML 文件,也有可能是一個程式,利用程式產生 HTML 文件,這種方式稱為網頁應用程式 (web application, Web App)

以內容來看,網頁分為動態網頁靜態網頁兩大類。動態網頁不是因為網頁有會動的內容,而是網頁依據用戶輸入而產生不同的內容,內容是「動態」的才稱為動態網頁,大多數網頁應用程式都是動態網頁。另一方面,靜態網頁則指的是 HTML 文件的檔案,任何用戶讀取都是固定不變的內容,所以這是「靜態」的。

網站

那網站 (website) 又是什麼?一個網站是由一個以上的網頁所構成,有一個明確的網址位置,讓我們能夠經由網路存取。在瀏覽器中輸入網址,我們將在畫面上看到一個網頁,對一個網站而言,通常會有一個主要的頁面作為入口,稱之為首頁 (home page) 。從電腦的角度來看,網頁就像是一個檔案,網站則像是一個資料夾,這樣思考是不是比較清楚了。

再更進一步說明,網站是一個虛擬概念,真正的網站是存在於一台電腦上,這種電腦稱為伺服器 (server) ,用作網站的主機 (host) 。實際的應用中,伺服器是一個很強大的電腦,通常會存放多個網站,這樣的主機稱為虛擬主機 (virtual host)

另外,也常聽到網路應用程式 (network application) 這個名詞,網路應用程式是指利用網路完成工作的應用程式,廣泛來說,只要有使用網路資源的程式都可稱為網路應用程式。換句話說,網頁應用程式也是一種網路應用程式。

我們用一些類似的東西比喻網站、網頁、網頁應用程式這些概念,如下表所述:
書頁網頁檔案
書本網站資料夾
書店(建築物)主機(伺服器)磁碟機(電腦)
地址網址路徑

###

學習網頁的心得分享

學習網頁的心得分享

學習網頁應該如何開始?

我認為有兩方面需要學習,一個是網頁本身的技術,另一方面是寫網頁的工具軟體。

寫網頁的工具軟體

我自己一開始是用微軟的 FrontPage 2003 編輯網頁, FrontPage 的優點在於操作簡單,如果你會使用 Word 編輯文件,那麼使用 FrontPage 不會太困難,兩者擁有類似的操作介面和使用觀念,即使沒有任何網頁技術基礎也可以做出一個網站,加上 FrontPage 提供所見及所得 (What You See Is What You Get, WYSIWYG) 的操作介面,基本上不會接觸任何程式碼,這對於新手而言是另一個優點。

不過當網站越做越複雜,想要更進一步的功能,這時候 FrontPage 的優點反而變成缺點,操作簡單代表軟體幫你做了一些事情,你只看到結果而不知道其中的原理,只用 WYSIWYG 的方式製作網頁讓你無法精確控制背後的程式碼,因而發覺真正需要瞭解網頁技術,於是開始認識網頁的程式碼。

第二個使用的軟體是 Macromedia Dreamweaver MX, Dreamweaver 在當時(2002年)是最熱門的網頁編輯軟體,本身除了是 WYSIWYG 的網頁編輯器,也提供很多強大的程式碼編輯功能,而且可以控制的選項比 FrontPage 更多,因此可以藉著修改選項去學習程式碼,經由這套軟體讓我學習到更進一步的網頁技術。

現在,寫網頁都不用這些 WYSIWYG 的軟體,而是用 Eclipse 整合開發環境和網頁瀏覽器(web browser)。在  Eclipse 中編寫程式碼,接著用網頁瀏覽器(例如Chrome)查看執行結果,這樣的組合優點是精確控制網頁程式碼、在瀏覽器中完整呈現網頁結果,加上不用付任何費用就能取得軟體,而且 Eclipse 提供很多外掛可以擴充功能,不僅限於網頁開發使用,有助於降低爾後的學習門檻。我認為這樣的工具組合非常適合推薦給新手,因為這是自由又免費的工具軟體。

網頁本身的技術

綜括來說,網頁包含三種技術: HTML 、 CSS 與 JavaScript ,我稱之為「網頁三元素」,其中又以 HTML 為網頁最重要的基礎。 HTML 處理的是網頁結構, CSS 處理的是網頁的外觀樣式,而 JavaScript 則處理網頁的互動行為。學習的順序當然是以基礎為先,先學習 HTML ,接著是 CSS 或 JavaScript 。

如果你是設計人員,建議從 CSS 著手學習,因為 CSS 是控制網頁的版面和外觀,修改 CSS 可以在網頁畫面上看到結果,學起來會比較有感覺。

如果你是程式開發人員,則建議從 JavaScript 著手,因為 JavaScript 程式語言對任何一種程式開發人員都會是熟悉的,不像 CSS 是另一種概念。

不管是哪種學習路徑,最後三者都是必須完全學習接觸,這樣對於網頁才會有完整的認識。

網頁最重要的是「內容/服務」

說了這麼多,技術與工具都不是重點,網頁最重要的是「內容/服務」,所有的努力都是為了將內容和服務透過網路傳播,你可以利用很複雜的 HTML 、絢麗的 CSS 樣式、強大的 JavaScript 程式碼做出一個網站,但如果沒有豐富且實用的內容和服務,這一切都是沒有意義的。

我們將網頁技術比喻成身體,如下表所述, HTML 像骨骼架構起身體, CSS 如皮膚覆蓋身體, JavaScript 像神經控制身體,內容和服務則如同血肉構築整個身體。如果沒有血肉,人不就像是一個空殼,因此內容是網頁的主體。

HTMLCSSJavaScript內容/服務
骨骼皮膚神經血肉

###

2013年8月1日 星期四

Rework 工作大解放

這本書,「工作大解放 (Rework) 」應該列為禁書,強烈禁止所有軟體開發人員閱讀,足以顛覆所有工作常理,非常危險!在於多數公司文化根本不像書中所述那樣,看完後你真的想仿照書說的那樣做,心中充滿行動的熱情。作者10多年的業界經驗證實,他們就是如此執行,因而創造出一個不符合「常理」的軟體公司。

Teddy Chen在最近「還少一本書」也提到這本工作大解放,他說這本書充滿了 Agile 與 Lean 的精神,確實如此,特別適合新創公司和敏捷開發團隊閱讀,非常推薦。+1


福萊德 (Jason Fried ), 漢森 (David Heinemeier Hansson) 著,胡瑋珊譯,工作大解放:這樣做事反而更成功,台北:天下遠見,2010。
譯自:Rework

全書總共分成11章,總共88篇短文,文章不長很好閱讀,很適合利用休息時間閱讀一篇。以下幾篇是我認為非讀不可的文章,推薦給大家:
  • 從成功中學習
    當某件事成功了,你就會知道你做對了什麼,你以後可以再做一次,而下次可能做得更好。
  • 計畫是一種猜測
    沒有計畫地做事聽起來可能很可怕,但盲目的遵循與現實脫節的計畫更恐怖。
  • 騷到自己的癢處
    當你打造自己需要的事物時,便可直接且迅速地評估產品的品質,無須透過中間人。
  • 明確表明立場
    當你不清楚自己的信念,任何事物會產生爭議,每件事都是可以辯論的。
  • 從核心要點做起
    將注意力集中在讓它變得更美好,然後你所做的一切都要取決於這個基礎。
  • 忽略初期的細枝末節
    在你著手進行之前,你往往無法辨識哪些細節最重要。在你動手開始做時,你才會明白哪些地方要多加注意。
  • 有時放棄是對的
    不要把美好的時間浪費在不好的工作上。
適合放在工作桌上的一本書,提醒自己。

###

2013年7月29日 星期一

National Taipei University of Technology 台北科技大學

今年(2013年)捐贈書籍的時間又到了。延續去年 Web 浪潮,今年對於 Web 與行動網頁開發的書籍非常多, HTML5 和 CSS3 方面的基礎書籍已經逐漸飽和(氾濫),出版社開始引進較進階的內容(吸引讀者),像是效能最佳化、大規模建置等議題。

另一方面,NoSQL 資料庫的風潮逐漸受到開發者注意,彈性而無 Schema 的方式讓生產力有所提升,目前也有些 NoSQL 資料庫的書籍翻譯發行。這種有別於關聯式資料庫 (RDBMS) 的開發使用方式還很新,值得各位開發人員學習並評估是否適用。



這次捐贈的書籍清單如下所述:
  • Kristina Chodorow, Michael Dirolf著,吳曜撰譯 ,MongoDB技術手冊,台北:歐萊禮,2012。
  • Christopher Schmitt, Kyle Simpson著,賴屹民譯 ,HTML5 錦囊妙計,台北:歐萊禮,2013。
  • Steve Souders著,楊仁和譯,高效能網站建置指南,台北:歐萊禮,2013。
  • Rachel Andrew著,羅友志譯,CSS3網頁設計師手札,台北:碁峰資訊,2013。
  • 郭欣,巨型網站大師親自指導-建立極速Web站台的祕密,台北:佳魁資訊,2013。
  •  Matt West著,林盈新譯,HTML5 新世代網頁建置-新手也可以快速設計出專業網站,台北:果禾文化,2013。
  • 郭家寶,Google 御用網頁語言 Node.js:一流程式設計師養成精華,台北:佳魁資訊,2013。
  • 高俊峰,網站平台全面換血+完美優化:Linux伺服器加速營運14大原則,台北:佳魁資訊,2013。
  • Pramod J. Sadalage、Martin Fowler著,吳曜撰譯,搞懂NoSQL的15堂課,台北,碁峰資訊,2013。
  • 張春曉等編著,王者歸來:UNIX 王者殿堂,台北:佳魁資訊,2013。
  • Ian Lunn著,陳亦苓譯,CSS3 網頁設計優化-新手也能快速建立跨平台網頁台北:果禾文化,2013。
  • 張宴,Nginx-完全取代Apache,超輕、快、強的Web伺服器,台北:佳魁資訊,2013。
###

2013年7月23日 星期二

NoSQL Distilled 搞懂 NoSQL 的15堂課

最近這一年以來,NoSQL 資料庫越來越熱門,一直缺少一本書籍好好介紹 NoSQL ,現在,「搞懂NoSQL的15堂課 (NoSQL Distilled 中文版)」是很好的基礎入門書,讓我們搞清楚什麼是 NoSQL 資料庫,作者不講各個資料庫的操作細節,而是站在一個高度下有系統的介紹 NoSQL 資料庫,讓我們清楚瞭解 NoSQL 資料庫,不管你是否正在使用 NoSQL ,這本搞懂 NoSQL 的15堂課都非常值得閱讀。

Pramod J. Sadalage、Martin Fowler 著,吳曜撰譯,搞懂 NoSQL 的15堂課,台北,碁峰資訊,2013。
譯自:NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence

NoSQL 不是 Not Only SQL ,事實是來自 Twitter 的分類標籤 (hashtag) ,由 Johan Oskarsson 命名使用的。實際上, NoSQL 是對一種類型資料庫的統稱,這類資料庫有幾個特徵:聚集 (aggregate) 的資料模型、無綱要 (schemaless) 、使用叢集 (cluster) 執行等,目前世界上有的 NoSQL 清單可以參考這個網站:http://nosql-databases.org/

「搞懂 NoSQL 的15堂課」分成兩大部分共15章,第一部分介紹 NoSQL 的資料模型,主要讓我們瞭解 NoSQL 的特點,第二部分則針對實作進行說明,主要是說明鍵值資料庫 (Key-Value Databases)文件資料庫 (Document Databases)欄位群資料庫 (Column-Family Stores ) 圖形資料庫 (Graph Databases) 這四大資料模型的差異與特性。

NoSQL 由於無綱要的性質,使得程式設計師開發應用程式的生產力提高,加上叢集的實現方式, NoSQL 有利於大規模的資料量。相對的,這些看似優點的特性也產生另外一些問題,例如一致性 (consistency) 的議題,由於無綱要與叢集的性質,這讓資料必須分散在各主機上,加上聚集的資料模型,使資料庫在讀取與更新的一致性必須處理與注意。

書中最後提到不同的資料庫是設計用來解決不同的問題,我們面對 NoSQL 的同時,不應該完全放棄使用關聯式資料庫,針對不同應用場合使用特定的資料庫,或是採用多語言維持 (polyglot persistence) 的儲存方式,這些都值得我們進一步思考設計。

###

2013年7月21日 星期日

Go Programming Language

最近檢視一下Google開發的Go程式語言,這裡是一些學習筆記。
  • 發明者
    • Robert Griesemer
    • Rob Pike
    • Ken Thompson (B語言發明者)
  • 開發小組,總共有5人,除3位發明者外,還有
    • Ian Taylor
    • Russ Cox
Go程式語言的發展歷史,這部份可以參考常見問題,摘要如下:
Go程式語言的標準規範:http://golang.org/ref/spec

Go程式語言的簡介,參考『The Expressiveness of Go』投影片的內容
  • 發明原因:為了Google內部需要
    • 有效率大規模的編程
    • 加速編輯撰寫
    • 分散式系統
    • 多核心與網路硬體
  • 速度與安全,或容易使用,結合下列兩類語言的特質
    • C++, Java
    • Python, JavaScript
  • 設計4原則
    • 簡單(simple)
      • 概念是容易理解認識的
    • 正交(orthogonal)
      • 混合概念是清楚的
      • 容易理解和預測發生什麼行為
    • 簡潔(succint)
      • 不需要預先宣告任何意圖
    • 安全(safe)
      • 違反的行為應該被偵測到
  • 簡單原則可以從語言的關鍵字評比
    • Go語言:25個
    • Python 2.7:31
    • C (K&R):32
    • C++:48
    • C#:77
  • 著眼點
    • Go相信程式設計師所寫下的程式碼
    • 意思是,Go試著尊重程式設計師的意圖
    • 這將是安全(safe)而有趣(fun)
    • 用比喻來說,這是安全帶(seat belts)和輔助輪(training wheels)的差異
到這裡為止,對Go程式語言已有初步的認識,了解Go是為了大規模的分散式系統而發明的程式語言。目前工作上也沒有這類應用場合,所以也不會特別花心思去學習,但Go在大規模Web Application上的應用確實有潛力,值得留意Go程式語言的發展。

###

2013年6月25日 星期二

Beginning Eclipse

Eclipse 是一個強大的整合式開發環境 (Integrated Development Environment, IDE) ,除了可以開發 Java 應用程式之外,也支援其他程式語言的開發,如 C, C++, Python, PHP 等。

這篇文章將說明如何將 Eclipse 安裝在 Ubuntu 上,或者你也可以參閱官方的安裝指南

Step 1. 安裝Java Virtual Machine (JVM)
  • 可以參考 Ubuntu 的社群文件:https://help.ubuntu.com/community/Java
  • JVM 有很多實踐方式,建議安裝 Oracle Java ,可以參考安裝教學
    • 前往http://www.oracle.com/technetwork/java/javase/downloads/index.html
    • 依照作業系統是32或64位元選擇 JRE 下載,以64位元為例,選擇下載 Linux x64 的檔案為 jre-7u21-linux-x64.tar.gz
    • 在 /usr 下建立 java 目錄,指令:sudo mkdir /usr/java
    • 將 jre-7u21-linux-x64.tar.gz 解壓縮至 /usr/java 下,
      指令:sudo tar xzvf jre-7u21-linux-x64.tar.gz -C /usr/java/ --no-same-owner
    • 利用 update-alternatives 安裝 java 命令,指令:
      sudo update-alternatives --install "/usr/bin/java" "java" "/usr/java/jre1.7.0_21/bin/java" 1
    • 在 Terminal 中輸入:java -version,將顯示版本資訊,用以測試 java 是否安裝成功。
Step 2. 安裝 Eclipse
  • 前往http://www.eclipse.org/downloads/
  • Eclipse 有不同套裝軟體(差異請參考比較表),建議下載 Eclipse Classic ,請依據作業系統是32或64位元選擇。
  • 下載後,解壓縮至 /opt 目錄下,以64位元的最新版 Eclipse 為例,指令:
    sudo tar xzvf eclipse-SDK-4.2.2-linux-gtk-x86_64.tar.gz -C /opt --no-same-owner
  • 變更權限,指令:sudo chgrp -R sudo /opt/eclipse/
  • 執行 /opt/eclipse/eclipse 這個執行檔將啟動 Eclipse Classic ,第一次啟動會要求設定工作區 (workspace)
Step 3. 安裝 Marketplace Client
  • Eclipse Classic 預設是沒有安裝 Marketplace Client ,有了 Marketplace Client 可以讓我們安裝延伸套件更加方便,有點類似 App Store !
  • 啟動 Eclipse ,在工具列的 Help 選擇「Install New Software...」,在 Work With 選擇 Juno 項目,下方表格中選擇 General Purpose Tools 的 Marketplace Client 。
  • 按下 Next ,之後確認 License 繼續安裝。安裝完成後會要求重新啟動 Eclipse 。
Step 4. 安裝 Eclipse Color Themes
  • Eclipse Color Themes 是一個佈景配色管理的套件,能夠讓Eclipse的編輯環境有不同的高亮 (highlight) 顯示方式。
  • 啟動 Eclipse ,在工具列的 Help 選擇「Eclipse Marketplace...」,搜尋 Eclipse Color Themes 安裝,完成後重新啟動 Eclipse。
  • 另外必須安裝 Web content engine library for GTK+才能正常工作,
    指令:sudo apt-get install libwebkitgtk-1.0-0
  • 上述步驟都完成後,可以在 Eclipse 的 Preferences 裡面的 Appearance 看到 Color Theme 的設定項目。
到此,你已經擁有一個完整又強大的程式開發環境囉!

補充:
2013/07已經發布 Eclipse 4.3 (代號 Kepler ),看來把 Eclipse Classic 稱為 Eclipse Standard ,這次發行增加許多功能,請見http://eclipse.org/kepler/

###

2013年6月12日 星期三

Big Data 大數據

Big Data稱為巨量資料大數據,這大概是雲端運算之後最為流行的科技議題,然而沒多少人知道什麼是巨量資料。現在,這本「大數據」清楚解釋什麼是巨量資料,以及巨量資料對人類造成的革命性改變(如同雲端運算對商業模式的影響),這本書的內容在技術方面著墨不深,主要是說明巨量資料的觀念與影響,非常適合任何對於巨量資料有興趣的人閱讀,可說是巨量資料的入門書(科普書)。

麥爾荀伯格、庫基耶著,林俊宏譯,大數據,台北:天下遠見,2013。
譯自: Big data: a revolution that will transform how we live, work, and think

「大數據」整本書是一個金字塔架構,全書共10章,從現在談到未來,如果你真的沒有時間,只看第一章也能對巨量資料有基本的認識,這本書建議各位依序閱讀完全,感覺就像上了兩位大數據專家的一堂課。

巨量資料目前還沒有明確定義,不妨參考 Gartner 公司的研究副總裁蘭尼 (Doug Laney) 提出的「三個V」性質(參閱第一章參考資料),即資料量 (volume) 、速度 (velocity) 、種類 (variety) ,這樣對於「巨量」會比較有感覺。這本書沒有確切說明何謂巨量資料,主要是強調巨量資料帶來的改變,主要改變有三點:
  1. 能夠取得、分析的資料量大為增加
  2. 不會堅持一切都要做到精確
  3. 放下長久以來對於因果關係的堅持
之所以有這些改變在於現在是從「小量資料」轉變到「巨量資料」的時刻,由於科技的進步,分析處理巨量資料已經不再困難,然而過去小量資料 (small data) 的時代發產出來概念已不適用於未來。

第一個改變來自於資料取得不是隨機抽樣的方式。過去,因為處理資料能力有限,不得不對真實世界以隨機抽樣取得小量資料,現在,已有能力處理巨量資料,資料的取得盡可能是真實世界的全部且完整的資訊,或者說:全部都是樣本。

第二個改變基於第一個。由於資料是全部的測量點(取樣點),因而產生三個結果:發生錯誤的可能性相對提高、取得不同來源與類型的資料、各資料格式也會不盡一致,這些都是雜亂 (messy) 。雜亂是巨量資料的特性,資料的「精確」已經不是重點,關注的反而是「可能性」這個目標,由於有了全部的資料,我們在乎的是整體輪廓的價值。對於巨量資料而言,資料的數量比品質更為重要。

第三個改變是最重要的變革。基於我們已經擁有完整的資料,分析某個現象的因果關係其實已經不太重要,不太需要知道「為何如此」,我們只需要了解現象之間彼此的相關性 (correlation) ,觀念必須改為知道「正是如此」就夠了,這個概念讓我們得到更多新的「因果關係」,將足以改變我們看待一切的方式。

上述這三個改變將影響我們的生活與工作,並建立全新的思考方式,若想更進一步瞭解巨量資料,這本「大數據」絕對值得好好閱讀。

###

2013年6月4日 星期二

Selenium Browser Automation 瀏覽器自動化

Selenium (硒) 」是一套瀏覽器自動化 (browser automation) 的套件軟體,包含一系列工具程式 (suite of tools) ,最主要的目的是用來自動化測試 (testing) 網頁應用程式 (web application) ,或者利用自動化的功能建立網頁操作的管理工作。簡單來說,利用Selenium去幫我們操作瀏覽器,免除人為操作而達成自動化。

Selenium目前的版本是第2版,稱為「Selenium 2」,Selenium 的工具程式主要有4個部分,其中以 IDE 和 WebDriver 最為重要,各程式介紹如下:
  • Selenium IDE
    這是一個 Firefox 的附加元件,提供測試工作的錄製、編輯、執行與除錯等功能。
  • Selenium WebDriver
    這是一個用來操作瀏覽器的 API,對 Selenium 而言就像是瀏覽器的「驅動程式」,不同瀏覽器必須安裝不同的 WebDriver ,呼叫這個 API 的方式是安裝不同程式語言的程式庫,程式庫將直接對瀏覽器進行操作(直接呼叫瀏覽器的 API )。這是在第2版才加入的工具程式, Selenium WebDriver 又稱為「Selenium 2」。
  • Selenium Remote Control
    簡稱 Selenium RC ,也稱為「Selenium 1」,目前不建議 (deprecated) 使用。 Selenium RC 採用 Server-Client 架構的方式進行瀏覽器自動化,主要是利用瀏覽器內的 JavaScript 來達到自動化的操作。
  • Selenium Grid
    這是可以同時間執行多個 Selenium 的技術,由一個 Hub 和多個 Node 組成一個 Grid ,使用者透過 WebDriver 將測試工作送至 Hub ,而 Hub 將依據瀏覽器不同分派至特定 Node 執行,利用這種方式可以縮短總執行時間。
執行 Selenium 瀏覽器自動化必須在有桌面環境的系統下執行,例如 Windows 或 Ubuntu Desktop 的作業系統,因為 Selenium 會去真的啟動瀏覽器程序並控制它的動作,若要在 Ubuntu Server 上執行就會發生錯誤(沒有安裝瀏覽器)。

一般會建議使用 Windows 系統進行自動化測試,因為在 Windows 上可以執行 Internet Explorer (IE)、Chrome、Firefox、Safari 都不會有問題,適合進行 Web Application 的相容性(跨瀏覽器)測試,因為 IE 只能在 Windows 上執行!不然就是使用 Selenium RC Server ,遠端操作不同作業系統的瀏覽器。

###

熱門文章