2012年12月12日 星期三

[JavaScript] input type='text' 取值比大小

  今天在開發 javascript 的時候,發現從 HTML 取得的 input type='text' 值在進行「比大小」的時候會發生奇怪的錯誤。我們來看看下面範例:

<script type='text/javascript'>
    function form_check(){
        var a = example.input_value.value;
        var b = example.compare_value.value;

        if (a > b){alert("a is greater than b.");}
    }
</script>

<form name='example' ... onsubmit='return form_check();'>
    <input type='text' name='input_value' />
    <input type='text' name='compare_value' />
    <input type='submit' ... value='Submit' />

  如果今天在瀏覽器上輸入 a 跟 b 的值之後並點選 submit,此時 javascript function 會進行 a, b 值的比較;如果 a 大於 b,會跳出 a 大於 b 的訊息。

只不過,神奇的錯誤發生了!!!

1 ) 若輸入 a = 80, b = 50,則順利跳出 a 大於 b 的訊息

2 ) 若輸入 a = 100, b = 50,則不會跳出 a 大於 b 的訊息

  經過谷哥大神的開示,我發現,每次輸入 text 的直接為 string,並非我們所想像的 integer。因此, 函式 form_check 進行的比較是字串大小的比較,而非「數值」大小的比較。如果要進行數值大小的比較,必須進行下列的修正:


<script type='text/javascript'>
    function form_check(){
        var a = example.input_value.value;
        var b = example.compare_value.value;

        if (parseInt(a) > parseInt(b)){ alert("a is greater than b."); }
    }
</script>

如此一來,我們將順利比較輸入值的大小!

P.S. 如進行一般數值大小的比較,可使用 parseFloat( )。

2012年11月2日 星期五

[HTML 5] 兩種不同的 form SUBMIT

  話說 HTML 5 推廣一陣子囉!我還是只會使用舊有方法編輯 html 檔案。直到最近,公司的專案請外包廠商編寫 CSS + html,我才發現一個 form submit 可以有兩種不同寫法。

首先,介紹舊有寫法:

<form name="example" method="post (get)" action="form action">
    <!-- FORM 內容 -->
    <input type="submit" name="btn_name" value="Submit" />
</form>

最近學到的新方法:

<form id="example" method="post (get)" action="form action">
    <!-- FORM 內容 -->
</form>
<button type="submit" form="example">Submit</button>

有沒有發現什麼不一樣呢?

答案是 HTML 5 的 button 標籤可以寫在 from 的外頭,透過 button 標籤裡的 form 參數作為按鍵與表單的連結。請注意, button form 參數的值必須等同於表單的 id。

想更了解 <button> 如何使用嗎?請參考這裡

2012年11月1日 星期四

[Avria] Generation of update structure failed. UpdateLib delivers error 537 解決方法

  前幾天,外國友人急電,跟我說:「他的電腦無法自動更新防毒軟體 (Ariva)」,請我過去幫他看看。到了他家,看了更新失敗的 log 之後,發現是 Generation of update structure failed. UpdateLib delivers error 537 問題。上網查詢後,發現蠻多人有這樣的問題,當然解決方法也不少囉!

  發生 Generation of update structure failed. UpdateLib delivers error 537 問題的解決方法,請參考這裡。筆者所紀錄的,為此次解決問題的方法。

1. 先從這裡下載 Avira 離線更新工具

2. 解壓縮avira_fusebundlegen-win32-en.zip,開啟 avira_fusebundlegen-WIN32-EN 資料夾

3. 執行 fusebundle.exe 並等待一段時間,在 install 資料夾下產生 vdf_fusebundle.zip

4. 開啟 Ariva ,選擇【更新】→【手動更新】→【選擇 vdf_fusebundle.zip】

這裡有一項相當重要的部分要注意,如果您所安裝的作業系統為 Windows 64 位元,在執行 fusebundle.exe 時,必須在 fusebundle.conf 中增加一個參數 platform= win32

2012年10月21日 星期日

[JavaScript] 燈箱效果 ── Lytebox

  先前開發公司專案時,被要求使用類似「燈箱特效」顯示相關聯結的內容。藉由「燈箱」作為關鍵字搜尋,發現已有強者寫好的 JS 可利用,且大多數使用者推薦 lightbox2。使用 lightbox2 相當簡單,藉由下載官方網站整包檔案,解壓縮並加入專案,即可立即使用!只不過, lightbox2 僅可嵌入圖檔,無法嵌入網頁,所以不符合需求。

國父革命十一次才成功,一次的失敗不算什麼!在努力不懈搜尋之下,發現另一套 JS ── Lytebox 可嵌入網頁內容,這不就是符合我們所要的需求嗎?!在這兒,我將記錄如何安裝與使用 Lytebox,達到「燈箱」效果並嵌入靜態網頁。

2012年6月26日 星期二

[Django] Installing Django with Apache & mod_wsgi

Django 安裝及簡介 文章中曾介紹如何安裝 Django。

不過,若要將開發的網頁透過 domain 分享給世界各地的人欣賞,

則需要設定 apache 以達到這個目的。

下面將一步一步介紹如何在 apache 上安裝 Django:

PART 1 - Server 的部署

安裝 Apache 及 mod_wsgi
> sudo apt-get install apache2 libapache2-mod-wsgi

安裝 Django 請參考這裡

建立一資料夾儲存網站資料〈此為筆者存放位置,讀者可自行決定〉
> sudo mkdir /opt/www

PART 2 - 設定 domain name

> sudo vi /etc/hosts

並加入下列內容:

192.168.1.1 domainname 〈此為筆者之假設,請讀者自行決定〉

PART 3 - Django 測試

建立 Django 專案
> cd /opt/www
> sudo django-admin.py startproject helloworld

產生一個 wsgi 的檔案
> sudo mkdir /opt/www/helloworld/apache
> sudo vi /opt/www/helloworld/apache/django.wsgi

在 django.wsgi 檔案中編輯下列內容:

import os
import sys

path = '/opt/www'
if path not in sys.path:
    sys.path.insert(0, '/opt/www')

os.environ['DJANGO_SETTING_MODULE'] = 'helloworld.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler( )


修改 apache 設定
> sudo vi /etc/apache2/sites-available/default

於 default 檔案中‧‧‧

修改下列內容:

DocumentRoot /var/www -> /opt/www/helloworld

<Directory /var/www> -> <Directory /opt/www/helloworld>


增加下列內容:

WSGIScriptAlias / /opt/www/helloworld/apache/django.wsgi

啟動 site
> sudo a2ensite default
> sudo service apache2 reload


最後,打開網址,並輸入 http://domainname 就會看到 Django 安裝完成的畫面囉!

2012年6月14日 星期四

[OpenStack] 如何透過 dashboard import keypair?

在 OpenStack dashboard 中存在一項功能 ── import keypair。

But, how to import a keypiar via dashboard 一直困擾著我!囧

經由上網發問,總算得知正確的使用方式。

因此,藉由這裡記錄在 OpenStack dashboard import keypair 的方法。

首先,什麼是 keypair?下面是 OpenStack 初學者手冊中的定義。

You will also need to generate a keypair consisting of private key/public key to be able to launch instances on OpenStack. These keys are injected into the instances to make password-less SSH access to the instance. This depends on the way the necessary tools are bundled into the images.

接下來,將說明如何操作 import keypair。

STEP 1. 在主機上建立公鑰 (public key)
# ssh-keygen

建立過程中詢問之事項皆 Enter 帶過。

STEP 2. 進入 .ssh 資料夾
# cd .ssh

將會發現資料夾中存在 id_rsa 以及 id_rsa.pub 檔案。

STEP 3. 開啟公鑰
# cat ~/.ssh/id_rsa.pub

STEP 4. 複製工要內容,並貼入 dashboard 中 public key 欄位

恭喜你,順利完成 import keypair 的艱難任務! :D

參考資料:
1. OpenStack Compute Starter Guide -Essex

2012年6月2日 星期六

[Ubuntu] 在 Ubuntu 上安裝 Samba 分享檔案

用習慣圖形介面管理檔案的我,

一開始接觸 Ubuntu 相當不習慣!( Crtl+C Crtl+V 不是很好用嗎?! )

幸好公司的前輩為我開啟 Samba 這套分享檔案套件,

使我順利在 Windows 上管理 Ubuntu 的檔案。

話不多說,下面咱們就來看看如何在 Ubuntu 上安裝這套好用的套件。:D

STEP 1 安裝 Samba
sudo apt-get install samba

STEP 2 設定 Samba 設定檔
sudo vi /etc/samba/smb.conf

STEP 3 增加「分享資料夾」
在 smb.conf 尾端加上

[Sharename]
    path = /
    browseable = yes
    read only = no
    create mask = 0644
    directory mask = 0755

STEP 4 重新啟動 Samba 服務
sudo /etc/init.d/smbd restart

STEP 5 建立 Samba 帳號密碼
sudo smbpasswd -a username

2012年5月15日 星期二

[Django] Generating file to download with Django

最近在開發 Django 時遇到需產生檔案進行下載,

經閱讀 Django 官方文件與 Google 後整理如下。

要產生下載的動作需設定 Content-Disposition 標頭。

from django.http import HttpResponse

# 產生檔案
response = HttpResponse(mimetype='application/binary')
response['Content-Disposition'] = \
'attachment; filename=%s.pem' % filename
return response

2012年5月10日 星期四

[JavaScript] location.href 用法

最近在開發 Web 介面時發現,

實作點擊按鍵後進行頁面轉換 ex: demo.html --> temp.html

使用先前所學 onclick="location.href('temp.html')" 技術,

在 IE 瀏覽器中可執行。

但, Google Chrom & Firefox 卻無效果 ( 攤手 )

經「估狗」大神指導,發現將程式寫法改成 onclick="location.href='temp.html'"

一切問題就解決啦!!! ( 灑花 )




實際體驗區:

下面按鍵使用 Google Chrom 跟 Firefox 無效果!



下面按鍵使用 IE, Chrom & Firefox 皆可!

2012年4月18日 星期三

[Ubuntu] 在 Ubuntu 11.10 上安裝 SVN Server

在安裝 SVN 前,假設您的 Apache 伺服器已安裝完成。

若未安裝 Apache ,請參考

https://help.ubuntu.com/community/ApacheHTTPserver

1. 安裝 SVN

sudo apt-get install subversion
sudo apt-get install libapache2-svn

假設安裝的過程中,出現錯誤訊息: E: Unable to locate package libapache2-svn

請您這樣做: sudo apt-get update 即可解決上述問題!

2. 配置 Apache 的 httpd.conf 文件

vi /etc/apache2/httpd.conf

<Location /svn>
DAV svn
SVNParentPath /svn
AuthType Basic   
AuthName "subversion repository"
AuthUserFile /svn/passwd 
AuthzSVNAccessFile /svn/auth
Require valid-user
</Location>

3. 創建 SVN 根目錄,並創建 myproject 版本庫


mkdir /svn/
mkdir /svn/myproject
svnadmin create /svn/myproject
chmod 777 -R /svn/myproject


4. 配置使用者帳號、密碼

在第 2 步時,我們已經指定使用者密碼配置文件為: /svn/passwd

htpasswd -c /svn/passwd admin

5. 配置使用者群組權限

在第 2 步時,我們已經指定使用者群組權限配置文件為: /svn/auth

vi /svn/auth

[groups]
developers=admin

[/]
developers=rw
*=r

6. 重新啟動 Apache

sudo /etc/init.d/apache2 restart



2012年3月14日 星期三

[Django] 靜態文件 (static files) 管理與部屬

最近在開發 template 的時候出現一個問題,就是 html 檔案中的 image 無法顯示。原本以為是路徑設定上的問題,但經嘗試「相對路徑」與「絕對路徑」後仍無法解決問題,只好求助 google 大神囉!囧

經 google 大神開釋後,發現 django 有自己 管理靜態文件 (Managing static files) 的方法。經查閱後整理如下:

1. Django 下所有靜態文件 (ex: images, .css, .js 等 ) 皆存放於 static 資料夾下;使用者上傳的圖片、檔案‧‧‧等等皆存放於 media 資料夾。

2. 修改專案 (project) 下的 settings.py。

    STATIC_ROOT = '/static/'
    STATIC_URL = '/static/'
    STATICFILE_DIRS = { './static', }


3. 在 template 要插入 image 的 tag 寫入
    <img src={{ STATIC_URL }}example.png />

如此一來,django 中所有靜態文件 ( image, .css, .js, etc.) 可顯示。

2012年3月13日 星期二

[iTunes] 透過 iTunes 將 CD 轉成 mp3

第一步 首先開啟 iTunes,並將 CD 放入光碟機中。當 iTunes 偵測到 CD 之後,會自動連上網查詢資料庫,如果有找到 CD 音軌的資訊,會問你要套用哪個資料檔。


第二步 接著 iTunes 會詢問你是否要「匯入到您的 iTunes 資料庫?」。如果你要將 CD 中的音樂轉存成 mp3 的話請按【是】。如未出現此對話框,可在放入 CD 後,點選視窗下方【匯入 CD】,將 CD 中的音樂轉存。


第三步 如圖,轉檔時會出現「正在匯入 OOXX」,請稍待。



第四步 全部光碟中的音樂都轉存到電腦中之後,點選 iTunes 左邊【音樂】資料夾,便可看到剛剛匯入的音樂檔囉!

2012年3月7日 星期三

[Django] Django 安裝及簡介 (Introduction to Django)

Django 是一個利用 Python 撰寫而成的高階網頁框架 (Web framwork),其架構可支持迅速地開發網頁應用程式 (Web application),並實現簡潔、務實的設計。

安裝 Django 的流程如下:

1. 安裝 Python。Django 目前適用於 Python 2.4 ~ 2.7 版本。

2. 安裝 Django。如曾安裝舊版本,請先行移除!

3. 確認。Type python from your shell. ( 以 Linux 為例 )

>>> import django
>>> print django.get_version()
1.3


不用懷疑,安裝 Django 就是這麼簡單!:P

參考資料:

1. Django official website: https://www.djangoproject.com/

2. Django book (2nd edition) : http://www.djangobook.com/en/2.0/

2012年2月28日 星期二

[Virtualization] libvirt 簡介

Libvirt 為一套提供方便的方法管理 VM 及其他虛擬功能 ( 例如:Storage 或網路 ) 的 C 語言軟體。這些軟體包含 API 函式庫、daemon (libvirtd) 及一個命令提示工具 (virsh)。
  Libvirt 的主要目標為,提供一個簡單的方法管理多個不同的虛擬化提供者或 hypervisor。舉例來說,命令 "virsh list --all" 可列出所有支援的 hypervisor (KVM、Xen、VMWare ESX 等等 )中存在的 VM。

Libvirt 所提供之主要功能為:

1 ) VM 管理:開始、停止、暫停、儲存、回復及遷移。

2 ) 支持遠端機器控制 (Remote machine support):運行 libvirt daemon 的機器皆可使用 libvirt 的所有功能,包含遠端控制機器。更多資訊,可參考 http://libvirt.org/remote.html

3 ) Storage 管理:運行 libvirt daemon 的機器可管理不同型態的 storage。更多資訊,可參考 http://libvirt.org/storage.html

4 ) 網路介面管理:運行 libvirt daemon 的機器可管理 physical 和 logical 網路介面。更多資訊,可參考 https://fedorahosted.org/netcf/

5 ) 虛擬 NAT 與路由基礎網路 (Route based networking):運行 libvirt daemon 的機器可管理與產生虛擬網路 (virtual network)。更多資訊,可參考 http://libvirt.org/archnetwork.html

Libvirt 支援:

1 ) KVM/QEMU
2 ) Xen
3 ) LXC - Linux container system
4 ) OpenVZ - Linux container system
5 ) User Mode Linux
6 ) VirtualBox
7 ) VMware ESX and GSX
8 ) VMware Workstation and Player
9 ) Microsoft Hyper-V

2012年2月13日 星期一

[OpenStack] OpenStack Dashboard 簡介與安裝

簡介:
OpenStack Dashboard 是一個以 web 為基礎的視窗提供使用者透過 OpenStack APIs 與 OpenStack Compute 雲控制器溝通。

系統需求:
1. 必須運行 OpenStack Compute 安裝並包含 Identity 與 Keystone 服務
2. 必須知道 Identity 與 Compute 的 URL
3. 必須安裝 git
4. Python 2.6 或 2.7

安裝步驟:
1. 安裝 OpenStack Dashboard 框架,其中包含 Apache 及相關模組

sudo apt-get install -y libapache2-mod-wsgi
sudo apt-get install -y openstack-dashboard openstackx python -sqlite

2. 配置 Dashboard

2.1 開啟 mysql,並輸入 root 使用者的密碼

mysql -u root -p

2.2 配置 MySQL,建立 dash 資料庫

mysql> CREATE DATABASE dash;

2.3 建立使用者,並擁有 dash 資料庫之最高權限

mysql> GRANT ALL ON dash.* TO 'dash'@'%' IDENTIFIED BY 'yourpassword';

2.4 於 /local/local_settings.py 中修正下列選項:

● DATABASE:

DATABASES = {
      'default': {
          'ENGINE': 'django.db.backends.mysql',
          'NAME': 'dash',
          'USER': 'dash',
          'PASSWORD': 'yourpassword',
          'HOST': 'localhost',
          'default-character-set': 'utf8'
      },
  }


2.5 運行 syncdb 指令初始化資料庫

# If using Cloud Builders packages, do this:
  cd /var/lib/dash
  PYTHONPATH=/var/lib/dash/ python dashboard/manage.py syncdb

  # If using Managed IT packages, do this:
  /usr/share/openstack-dashboard/dashboard/manage.py syncdb


你將會看見下列結果輸出

Installing custom SQL ...
  Installing indexes ...
  DEBUG:django.db.backends:(0.008) CREATE INDEX `django_session_c25c2c28` ON`django_session` (`expire_date`);; args=()
  No fixtures found.


3. 重啟並運行 Apache 伺服器

sudo /etc/init.d/apache2 restart
sudo restart nova-api


如果安裝正確,打開瀏覽器並輸入 http://localhost 你將會看見 OpenStack Dashboard。

2012年2月7日 星期二

[OpenStack] OpenStack Compute (Nova) 簡介

Nova 的特色及功能如下:

1. Instance 生命週期 (life cycle) 管理

2. 計算資源管理

3. 網路及認證

4. REST-based API

5. 最終一致的非同步通訊

6. 支援 Xen, XenServer/XPC, KVM, UML, VMware, vSphere and Hyper-V

OpenStack Compute 組件包含:

1. API Server (nova-api):提供外界對於雲基礎架構的管理與介面。

2. Message Queue (rabbit-mq server)

3. Compute Workers (nova-compute):處理 instance 的生命週期管理,透過 Message Queue 接收

並處理生命週期管理之請求。

4. Network Controller (nova-network):處理主機網路辨別。例如:分配 IP 位址、辨別專案

VLAN 等等。

5. Volume Worker (nova-volume):用於管理 LVM-based instance volume。功能如新增、刪除及從

instance 掛 ( 卸 ) 載一個 volume。

6. Scheduler (nova-scheduler):對應 nova-API 呼叫至正確的 OpenStack 組件。

參考資料:

1. OpenStack Compute Starter Guide

    - http://docs.openstack.org/diablo/openstack-compute/starter/content/

2012年2月3日 星期五

[OpenStack] 「手動」安裝 OpenStack 後之後續設定

[OpenStack] 在 Ubuntu 11.10 上「手動」安裝 OpenStack 中已將「手動」安裝之前置作業及資料庫設定完成,接下來的後續設定部分,將於本篇中介紹。

首先,必須設定 nova.conf 檔案中的旗標。nova.conf 位在 /etc/nova 下,原始檔案內容如下:

--daemonize=1
--dhcpbridge_flagfile=/etc/nova/nova.conf
--dhcpbridge=/bin/nova-dhcpbridge
--logdir=/var/log/nova
--state_path=/var/lib/nova


相關旗標資訊可參考 /bin/nova-api --help 或 OpenStack Compute Administration 手冊中 Setting Flags in the nova.conf 章節。

設定 nova.conf 後,必須產生一個 "nova" 群組

sudo addgroup nova

將 nova.conf 的權限設定給予 root,並保證使用者 nova 隸屬於 nova 群組

sudo usermod -g nova nova
chown -R root:nova /etc/nova
chmod 640 /etc/nova/nova.conf


緊接著設定 OpenStack Compute 環境,利用 Identity 服務保證資料庫 schema 的及時性。

nova-manage db sync
nova-manage user admin <user_name>
nova-manage project create <project_name> <user_name>
nova-manage network create <network-label> <project-network> <number-of-networks-in-project> <addresses-in-each-network>


旗標與環境設定完成後,需產生 Credentials (zip file)。

mkdir –p /root/creds
/usr/bin/python /usr/bin/nova-manage project zipfile $NOVA_PROJECT $NOVA_PROJECT_USER /root/creds/novacreds.zip


解壓縮 credentials 的 zip 檔在家目錄下,並加入至安裝環境中。

unzip /root/creds/novacreds.zip -d /root/creds/
cat /root/creds/novarc >> ~/.bashrc
source ~/.bashrc


最後,別忘了啟動存取 VM;使用 "euca-authorize" 指令啟動存取。

euca-authorize -P icmp -t -1:-1 default
euca-authorize -P tcp -p 22 default


如已使用 "euca-authorize" 指令,但無法透過 ping 或 SSH 方式進行存取 VM,請使用下列方法解決問題。

killall dnsmasq
service nova-network restart


安裝至此,已完成所有安裝與設定之步驟,請帶著愉快的心情使用 OpenStack 吧!:D

2012年1月29日 星期日

[Django] 解決 Django 錯誤 "CSRF verification failed. Request aborted."

在 settings.py 的 MIDDLEWARE_CLASSES 中加入下列兩行程式碼

'django.middleware.csrf.CsrfViewMiddleware' 'django.middleware.csrf.CsrfResponseMiddleware'

問題就迎刃而解囉!

2012年1月21日 星期六

[OpenStack] 在 Ubuntu 11.10 上「手動」安裝 OpenStack

目前 OpenStack 可在 Ubuntu 10.10 或 11.04 上以 root 權限安裝,若非 root 則需前置 sudo 指令。

今欲嘗試安裝 OpenStack 在 最新版本 Ubuntu 11.10 ( Oct. 2011 釋出 ) 上。

首先,安裝 Nova PPA (Personal Packages Archive) 和 python-software-properties 進行前置設定。

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:openstack-release/2011.3

執行更新

sudo apt-get update

安裝訊息 queue 伺服器,RabbitMQ

sudo apt-get install -y rabbitmq-server

安裝 Python dependencies

sudo apt-get install -y python-greenlet python-mysqldb

安裝 nova- 封包及 dependencies ( 自動安裝 )

sudo apt-get install nova-volume nova-vncproxy nova-api nova-ajax-console-proxy
sudo apt-get install nova-doc nova-scheduler nova-objectstore
sudo apt-get install nova-network nova-compute
sudo apt-get install glance


安裝支援工具,例如 euca2ools 和 unzip

sudo apt-get install -y euca2ools unzip

到目前為止,已完成前置作業;接下來將進行資料庫 ( 以 MySQL 為例 ) 安裝及設定。

首先,藉由 "pre-seed" 進行環境設定

bash
MYSQL_PASS=nova
NOVA_PASS=notnova
cat <<MYSQL_PRESEED | debconf-set-selections
mysql-server-5.1 mysql-server/root_password password $MYSQL_PASS
mysql-server-5.1 mysql-server/root_password_again password $MYSQL_PASS
mysql-server-5.1 mysql-server/start_on_boot boolean true
MYSQL_PRESEED


安裝 MySQL

sudo apt-get install -y mysql-server

編輯 /etc/mysql/my.cof 改變 "bind-address" 從本地端至任意 (0.0.0.0) 並重啟 mysql 服務

sudo sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf
sudo service mysql restart


建立 nova 資料庫

sudo mysql -u root -p$MYSQL_PASS -e 'CREATE DATABASE nova;'

更新資料庫,並給予使用者 (‘nova’@’%’) 權限

sudo mysql -u root -p$MYSQL_PASS -e "GRANT ALL PRIVILEGES ON *.* TO 'nova'@'%' WITH GRANT OPTION;"

設定使用者 (‘nova’@’%’) 密碼

sudo mysql -u root -p$MYSQL_PASS -e "SET PASSWORD FOR 'nova'@'%' = PASSWORD('$NOVA_PASS');"

2012年1月20日 星期五

[Cloud] 雲端運算五四三

雲端運算 (cloud computing) 包含

個必要特色 (essential charateristics),個部屬模組 (deployment models) 以及個服務模式 (service models)。

其中,五個必要特色為:
     ● On-demand self-service
     ● Broad network access
     ● Resource pooling
     ● Rapid elasticity
     ● Measured service

四個部屬模組為:
     ◎ 私有雲 (private cloud)
     ◎ 社群雲 (community cloud)
     ◎ 公有雲 (public cloud)
     ◎ 綜合雲 (hybrid cloud)

三個服務模式:
    ○ SaaS
    ○ PaaS
    ○ IaaS

另外,找到一份不錯的文件,參考參考!http://people.chu.edu.tw/~b09602005/attach1122.pdf

參考資料:
1. The NIST Definition of Cloud Computing
    - http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf

2012年1月19日 星期四

[OpenStack] 安裝 OpenStack 系統需求建議

基本 OpenStack 安裝包含下列兩種伺服器 (server):

1. Cloud Controller node ( 運行網路、volume、API、scheduler 及映像服務 )。

硬體規格建議
處理器:64 位元 x86
記憶體:12 GB RAM
硬碟大小:30 GB (SATA 或 SAS 或 SSD)
volume:在 compute node 上掛載兩個 2TB (SATA) 硬碟
網路:一塊 1GB 網路卡 (Network Interface Card, NIC)

2. Compute nodes ( 運行 virtual instance )。

硬體規格建議
處理器:64 位元 x86
記憶體:32 GB RAM
硬碟大小:30 GB (SATA)
網路:兩塊 1GB 網路卡


作業系統:OpenStack 目前支援 Ubuntu、RHEL、SUSE、Debian 和 Fedora。

網路:1000 Mbps。對於虛擬機之間的網路有三種選擇,分別是 flat、DHCP 以及 VLAN。

資料庫:對於 OpenStack Compute,目前可存取 PostgreSQL 以及 MySQL。

Network Time Protocol:必須安裝時間同步軟體,例如 NTP。

2012年1月16日 星期一

[OpenStack] OpenStack 概論

    OpenStack 提供開放原始碼建立公有 (public) 或私有 (private) 雲。其宗旨在於幫助組織運行虛擬計算 (virtual computing) 或儲存服務 (storage) 的雲。OpenStack 旗下包含一組公共維護 (community-maintained) 的開放原始碼項目,分別是 OpenStack Comput (Nova)OpenStack Storage (Swift) 以及 OpenStack Image Service (Glance)

    OpenStack Compute 是雲的控制器。它用於啟動個人或一組用戶的虛擬實例 (virtual instance),也為每一個實例 (instance) 或項目 (project) 進行網路配置。

    OpenStack Storage 提供分散式且最終一致的虛擬物件存儲 (virtual object store)。它類似於 Amazon Web Service - Simple Storage Service (S3),能藉由分散式節點存儲數十億物件,並具有冗餘和容錯管理的能力。

    OpenStack Image Service 是一個虛擬機 (virtual machine, VM) 鏡像存儲、查詢和檢索系統,服務包括允許使用者透過 REST-like  HTTP 請求查詢 VM 鏡像詮釋資料 (metadata) 以及檢索實際鏡像。

三者之間關係圖如下:


參考資料:
1. OpenStack 官方網站 - http://www.openstack.org/
2. OpenStack Compute Administration Manual
    - http://docs.openstack.org/diablo/openstack-compute/admin/content/index.html