2009年4月13日 星期一

什麼是雲端計算?

這是我閱讀 Wikipedia "Cloud Computing" 條目的整理。

什麼是雲端計算(Cloud Computing)


雲端計算是基於網際網路開發(Cloud)並使用電腦技術(Computing)。
Cloud computing is Internet-based ("cloud") development and use of computer technology ("computing").
無論在何時、何地都能透過網際網路(Internet)來取得以IT為基礎的服務(e.g. Web Service)

雲端運算的資訊永久存在網際網路上的伺服器,並暫時快取在客戶端,包括桌上型電腦、筆記型電腦...等。
Cloud Computing is a paradigm in which information is permanently stored in servers on the Internet and cached temporarily on clients that include desktops, entertainment centers, tablet computers, notebooks, wall computers, handhelds, sensors, monitors, etc.

雲端運算的架構

Clients

存取 Cloud Application 的硬體或軟體,例如:
  • 行動裝置 (Mobile)
  • 終端機 (Thin client)
  • 瀏覽器 (Thick client)


Service (e.g. Web Service)

是一個機器對機器,透過網路提供某種服務。
Cloud Service is "software system[s] designed to support interoperable machine-to-machine interaction over a network"
例如:


Application


基於眾多 Service 所建構出來的 Application。通常不必經過安裝即可使用(但必須安裝 Clinet),減少軟體維護、不間段操作(?)以及支援的成本。
  • 例如只要安裝瀏覽器,便可以使用 Google Docs 來編輯文件、試算表、投影片,或是使用 GmailGoogle CalenderGoogle Talk (以上四個整合起來成為 Google App ,而他可以使用別的 domain name,交大 g2 信箱即為一例)。
例如:


Platform


以 Platform 作為一種服務 (e.g. Platform as a Service)。

Service 的提供者 (網站的所有人) 所規定的 Framework,Application 必須依照 Platform 的規定來建立。

例如:


Storage


以資料儲存作為一種服務。 (Storage as a Service)

例如:


Infrastructure


以基礎資源(CPU、Memory)作為一種服務,通常是指虛擬化平台的環境 (Infrastructure as a Service)。
例如買一台超級電腦,上面跑很多虛擬機器,每一台虛擬機器租給別人賺錢。而 CPU(幾核心)、記憶體(多大)的資源都可以依照需求設定。

例如:
==========

相信經過這樣的介紹,相信對雲端計算有了基礎的了解了。其最根本的原則就是「所有東西都可以是服務 (Everything is Service)」,而任何服務都能透過網際網路來取得

CPU 可以是服務、記憶體可以是服務、儲存也可以是服務、軟體可以是服務、功能也可以是服務,而且這些服務都存在那片深不可測的網際網路之雲裡面。

這一切將會是個趨勢,把電腦科技的所有部份封裝、然後當作商品。這只是電腦演進的必經的路而已,就像是公司會把部份外包,而外包的公司因為集中管理而有降低成本的效果。

這樣看起來,在未來,寫程式不用自己控制主機了 (其實現在就不用自己控制主機),寫軟體也會跟現在大不相同。去外面租一台虛擬主機,然後進行需要的運算;或甚至不用租主機,直接把寫好的 Web Service 放到 Platform 中,然後再叫別人去執行。未來的電腦會越來越輕便、打開瀏覽器就能擁有全世界...

Ajax 作業心得筆記

這學期上了一門 Web 2.0 的課,這個禮拜寫了兩份作業,收穫頗多。
  • 第一份是助教寫了個網頁,但是 CSS 的部份請同學自己 layout 出來。助教有把作好的樣子存成圖檔,然後要做成圖檔的樣子。
  • 第二份是把第一份作業加入 ajax 的部份,讓留言版可以使用。使用者可以選擇顯示圖片,但是圖片選好以後要可以立刻預覽。所有動作都不能換頁。
此外還有一個要求,就是在 Firefox 3.0.7 和 IE 7 看起來要一樣,以及不能使用 table layout。

自從大學以後我就沒再特別深入 Web 程式設計,我前些日子做的網頁還是用 table 去排版,我真是石器時代的人呀。至於 javascript ,雖然以前有玩過,但也沒有玩的很精通,更不用說 ajax 了。總之對於 Web 2.0 AJAX 技術方面,我還是個新手。

幸好有 Google。(古人沒 google 到底是怎麼寫程式的? 個個神人呀!!!!!)

CSS 最麻煩的地方就是圖層的控制,如果把 position 設為 relative 和 absolute 就會往上提升一個圖層,然後位置會參考父層有設定 position 為 relative 和 absolute 的圖層,如果都沒有就會參考 body 層。此外 clear:both 可以清除 position 和 float 的設定。(感謝學弟)

AJAX 最麻煩的地方就是圖片預覽的部份。在 Input File 上,IE 可以取得檔案的完整路徑,Firefox 基於安全理由只給檔名,所以若要在兩種瀏覽器上都可以使用勢必要將圖片上傳到伺服器端然後回傳圖片網址。在 submit 的時候如果不指定 target 的話,原本的網頁一定會 refresh,於是就用 iframe 作為 target ,然後設定 Timer 過一點小時間去讀資料更新畫面 (這邊還沒想到更好的辦法)。

在寫 AJAX 得時候,為了得到更好的結果,javascript 一直改進一直增加一直變肥,簡直是 javascript 加很大~~加不用錢~~~~。現在的網頁這麼炫麗特效這麼多,javascript 的量肯定更恐怖,難怪我的 u100 Netbook 開網頁越來越慢,有的時候簡直像是當機一動也不動, Firefox 本身又吃資源,然後就要等個 30 秒讓 CPU 慢慢跑......(翻桌)

此外我更佩服 GMail 的附加檔案了,還有上傳進度條,配合這麼完美到底怎麼做的...慢慢刻我大概要刻到老死吧.....

要 寫留言板勢必要用到資料庫,趁這個時候摸了一下聽聞很久的 SQLite,在 Debian lenny 上只要裝 php5-sqlite 套件就好了。SQLite 版本號是 2.8.x ,所以不支援 BLOG 格式(?),因為天天趕作業趕論文都早上四五點睡,肝爆很大~~爆不用錢~~~~為了避免意外,我把圖片利用 php 的 base64_encode() 把圖片編成 base64 MIMEtype 文字再存進資料庫(前面再加上 MIME type + "\n"),等需要圖片的時候再 decode dump 回去即可。

然後這次文字編輯器有用過 Dreamwaver + sftp,不錯用,只是每次開啟它都會忘記密碼很健忘。然後趁這個機會又學了一下 VIM (原本我是用 joe)。
  • :sp [filename] 橫切螢幕
  • :vs [filename] 直切螢幕
  • :shell 回到 shell 下做事
  • Ctrl-W w 在切割的視窗中循環切換
  • Ctrl-W hjkl 在切割的視窗中切換
  • Ctrl-W q 關閉該視窗
最後唯一沒有玩的就是 jQuery ,因為我想完整的把 AJAX 中 javascript 的部份好好走過一遍,不想套用其他 library,所以這次沒機會啦!下次有機會再玩:p

哇...沒想到兩個作業作了這麼多事情,學這麼多東西真好。