標籤

2010年11月15日 星期一

SaaS 運用網站 -- 網路音樂

我鎖定了幾個SaaS的Web Site來看看他們做的如何,可惜的是有許多的sites並不提供給與位於台灣的使用者像是SpotifyPandora等等。 我試了JangoGrooveshark,我最推薦Grooveshark,它的使用介面就像iTune,免費的版本會有右邊的廣告與500個"我的最愛"限制與5,000首歌曲的限制,只要每月3塊美金的付費你就可以移除掉這些限制。  根據他網站的資料他們宣稱他們有2千萬首的歌曲資料和且持續增加中,它同時也把P2P的功能加入讓使用者可以分享使用自已所編輯的歌曲播放曲目,Groovershark我試用一次就上癮了。

它同樣提供中文使用介面,不過是簡體中文。

也提供類似Google Instant Search的功能,這對常常拼錯字的我很有用

搜尋到的歌曲目錄

點選要播放的歌曲後會在下方的Play Slot出現,這個使用介面有像Mac

當然Social network的功能是不會少的,現在是打群架的時代。


意外的是,它也與last.fm一起打群架

選定歌曲後可以分享或是加到自己的play list內。


SaaS 運用範例網站 Sumo Paint 與 Photoshop Express Editor

世界真的變了,如果10年誰說軟體不需要安裝就可以使用的話一定會被當成神話,可是現在還是認為這是個神話的人就是一個大笑話了。  最近在k的資料的過程中慢慢發現提供SaaS運用的廠商還真不少,我目前一個一個在試用他們所提供的服務,也慢慢的發現這個business真的是可行的。 

為什麼我一定要購買昂貴的套裝軟體來安裝卻只是用其中不到30%的功能,為什麼這些軟體會不斷的需要更新? 而且每次更新都會讓我的硬碟越來越腫?   舉例來說,如果我要編輯一個圖片,如果只是加個字或是顏色的小動作我可以用小畫家來解決,但是如果是需要比較複雜的功能的話我就要安裝個繪圖軟體,但是現在我可以使用SaaS的服務而且我並不需要安裝這些肥大的軟體了。 

這裡所介紹的兩款SaaS 圖片編輯軟體都是以Flash來製作的,除了iPhone與iPad 外,幾乎所有的Platform都可以使用。首先介紹的是 Adobe所提供的 Photoshop Express Studio,它目前只提供jpg檔案的編輯,並沒有提供Layer的功能,不過是一般使用者如果只是做簡單的照片調整是綽綽有餘了。

上傳檔案來做編輯

簡單的編輯方式讓使用者來選擇(例如燈光選擇套用)


另外一個是很屌的軟體, Sumo Paint 這一款也適用Flash寫的,使用的介面與功能簡直就是PhotoShop的翻版,連我都直接註冊個account來使用了,這一款支援layer的功能所以可以做到許多複雜的特效功能。

有興趣的話可以申請個account玩玩
 
這是 Sumo Paint 的使用介面跟PhotShop真的很像


我upload圖片來做個測試

所support的Layer特效也不少

目前支援的儲存格式有 png, jpg以及他們的sumo格式


2010年11月14日 星期日

一連串的破壞式創新...Google真的很屌

在study的過程中看到Python的東西,我想用這個來做web testing看看,無意間看到Google App Engine竟然也讓使用者用Python來開發App, 進而看到Google I/O 2010的 keynote,看到一連串的資料後我真的不由得說這真的是破壞式創新的代表啊。 Googlec還真屌。

Google I/O 2010 - Keynote Day 1 - Full Length

2010年11月12日 星期五

Citrix XenServer真的是Open Source了

最近在K資料,Citrix 2007年以500萬美元買下XenSource後,在2009年2月宣佈將會推出免費的XenServer版本,後來在2009年10月宣佈XenServer將會是Open Source..

結果在今年2月真的把它變成Open Source了,想下載的可以到這裡,Citrix也提供免費的XenServer Free Edition 下載。


2010年11月11日 星期四

雲端科技到底是啥?

最近在研讀與雲端科技相關的資料,越看心中越有一些疑問,裡面所談的技術不是已經存在了嗎? 之後再看了更多的資料後漸漸明白要去了解其中的本質必須要從商業的角度去看而不是由技術面去討論,因為從技術面來說,我會認為Oracle 的CEO Larry Ellison 對Cloud Computing的批評並沒錯,但是科技業好玩的地方就是同樣的技術給不同的公司去採用執行,有的公司會因此獲利,有的卻沒撈到半點好處。


如果從技術面來看雲端科技,它是許多技術與服務的整合與利用,這些技術包括了; Virtualization,DataBase, VPN,Fault Tolerant,Load Balancing,Grid Computing,Web Programing ..等等。 的確這些技術早就已經存在而且被採用在不同的領域上,從技術面去看會覺得這沒什麼,我也可以搞出這個的整合技術呀,但是還是要回答那個問題"Why me?" 為何使用者會從口袋掏出錢來採用購買你的服務?

要很簡單的來解釋雲端就要先把科技業最擅長的名詞包裝先擱在一邊(我記得華爾街的某個分析師說過,除了Fashion產業外,科技業是最會做產品包裝)。

"所謂的雲端就是在網際網路上有許多的業者已經將可以使用的服務提供給使用者來租用節省成本"


這些服務都有以下的特點
1. 價格便宜,以計次或是計時的方式來收費。
2. 節省成本,你不用養IT或是機器或是買軟體,你只是租用這些服務而已。
2. 彈性使用,有需要的時候來使用或擴增縮減,不需要用的時可以停止使用。
3. 快速,信用卡一刷立刻就可以上線使用。


根據所提供服務的項目不同可以分成三大類
1. IaaS (Infrastructure as a Service) 設備建置服務
2. PaaS (Platform as a Service)      平台提供服務
3. SaaS (Serivce as a Service)        軟體應用服務

千萬不要被IaaS, PaaS, SaaS的專有名詞嚇到,其實在實體世界中,這樣的服務早就已經存在了,所以在做這些名詞解釋時我會同時以實體世界來做例子解說。

1. IaaS (Infrastructure as a Service) 設備建置服務
說到這裡要說一下Amazon(亞馬遜網路商店)的故事,因為這個名詞跟他所做的事息息相關。 話說在2000年網路還沒泡沫化前,各個 .com 業者從投資大眾與創投手中拿到大筆大筆的資金(當年我廣告公司的老闆有說他投資400萬給一家做線上安太歲的 .com公司),因為這些錢總是不能直接放到口袋,所以這些熱錢有不少是投資建置在網路設備與伺服器上,同時他們也看好未來會使用他們的服務人口會大增,所以他們必須提早準備建置足夠的伺服器與資料庫。ok..想不到 .com的泡沫真的破了,這些機器就只好拍賣出售啦,而活下來的.com業者在那一段復甦的時期也不敢再投資更多的設備了。 Amazon 當時就是活下來的 .com業者,而且還活的很好,但是他們也真的花了很多錢在基礎設備上,要養這些設備還多花更多的錢,他們也發現事實上一台伺服器在平常工作時CPU也花不到25%,硬碟更不用說,能用到30%就偷笑了,於是就有一個想法出現,而不出租這些設備呢? 搞一個網站像Dell一樣讓使用這來點選所要租的伺服器與資料庫,使用者要線上刷卡下單就行,這個主意太棒了,可以充分的利用空閒的伺服器有可以賺錢。

不過問題來了,一旦客戶真的下單的話,在Amazon上班的IT不就要24小時standby隨時設定好設備給人家使用? 這樣絕對會內部反彈,況且我相信當時絕大部分的工程師應該不看好這樣的爛決定,誰會租用放在別人公司的伺服器啊? 頭殼壞掉才會去用。  想不到真的有不少頭殼壞掉的客戶會租用,因為Amazon所提供的EC2的服務太便宜了,又不用去養一天到晚不能讓我看色情圖片的IT人員。 Amazon 必須要提供更快速的服務給需要租用的客戶,於是他們在伺服器安裝Xen(類似 VMware 的虛凝化軟體)根據客戶的訂單來同時跑不同的虛凝作業系統,而且一切都自動化。 想不到原本要提高空閒機器使用率的爛方法結果為Amazon帶來大筆大筆的獲利。

商業就是這樣,一旦賺錢別人就會來搶一杯羹,不過這也代表這個行業是有賺頭的。後來像 IBM, Sun 他們也紛紛要投入這樣的租賃行業。 話說回來當年為何台灣企業沒想到可以用這個方法賺錢? 因為在台灣企業一台伺服器IT人會可是會充分的利用想辦法安裝不同的軟體把CPU操到80%以上(我之前去過一家漢堡連鎖店的Server Room裡,它奶奶的,一台server 裝了IIS, SQL, Proxy..等等)。

事實上IaaS的觀念在實體上到可見,比如說,你開了一家公司,你必須要找一個營業場所,這營業場所必須要有水,電,以及網路,你是會去買一個地來蓋呢還去找商業大樓租一個辦公室? 基本上概念是一樣的。  況且IaaS所提供的服務除了便宜之外更有彈性,舉例來說Amazon 它的小型基本款租用Windows 版的一個小時 0.06美金(台幣1.8塊左右),而且有1年租, 3年租,還有打折,以前要做軟體測試跟別人搶機器的時代我看快要結束了。  話說回來,我可以用Amazon的服務來BT嗎?


2. PaaS (Platform as a Service) 平台提供服務
基本上PaaS的定義跟SaaS很像,只不過PaaS所提供的一種"方法模式",你可以組用這樣的"方法模式"來製作出你的東西或產品。 如果以實體例子來解釋就像是電子工廠的生產線,這一台生產線可以組裝製作出許多不同的產品,像電腦..手機..等等..  事實上有不少小型的電子公司他們本身是沒有生產線的,他們是接到單後去租用別人的生產線來製作自己的產品,因為投資一條生產線的成本很高的。 所以PaaS的概念也是類似,你不用花大筆的錢來自行建置自己公司的會計或是庫存系統,買現成的市售軟體又要更改公司流程來使用這些軟體,我就不能先租用個服務來建置符合我公司流程的解決方案嗎?

例如像Google 提供了 Google App Engine讓你開發符合你所要的軟體放到雲端使用,Windows Azure 與 SalesForce.com 的 Force.com也是,而且PaaS服務提供者必須提供API給客戶來開發使用。

3. SaaS (Serivce as a Service) 軟體應用服務
SaaS的觀念有點像以前的ASP (Application Service Provider),它所建置好軟體就擺在網路上等著使用者付費使用。 與其花大筆錢購買套裝軟體來安裝我何不如直接使用他們所建置好的軟體呢?  舉例來說,我Photoshop 一個月用不到3次,可是為了偶爾使用這個軟體我的電腦就必須安裝這個大怪物,我何不使用Splashup呢?  要製作Presentation 投影片我也可以到 280slides.com來製作,要用Office軟體我也可以用Google App來完成。
Splashup.com 

280Slides.com

所以一個重點來了,軟體不再是那樣昂貴了,軟體不一定需要安裝了,軟體也可以有不同的收費方式了,更重要的是,我不用再次再次的的做軟體更新了。 每次裝完一個作業系統跟使用軟體後,半年後就可以明顯看到硬碟長的又肥又壯,我兒子能這樣就好了。

其實在實體的例子最明顯的就是租車,為何要買車養車呢? 如果使用的次數不多還且租車的費用便宜的話當然租車划算啊。 延生的例子就更多了,為何要結婚呢?需要的話何不.....


VM 技術
IaaS業者使用VM的目的除了可以節省成本外,能夠自動化與管理監控才是主因,VM的架構其實算是很成熟了,也有不少產商在著墨此項技術。 VMware在這個領域上可算是領先者,由羅森步魯姆跟他太太戴安所創立的公司營業額可達20億美金。


目前VM的格式運用在雲端的有三種
1. Amazon 的AMI (Amazon Machine Image)
2. VMware VMDK (Virtual Machine Disk)
3. Microsoft 與 Citrix 的VHD (Virtual Hard disk)

雖然 Amazon 與 Citrix所採用的都是 Open Source 的Xen 來開發VM,但是他們都基於商業的利基來製作自的VM格式,所以不同家做出的VM image是不相容的。 Amazon可以讓顧客將自己公司內部伺服器置做成AMI的格式上傳到他們的EC2服務來建置server,而這樣的動作也帶動了其他的商機。

rPath這家公司就提供這樣的服務幫你打包成AMI的格式上傳到Amazon EC2裡,因為有太多人使用VMware的格式,Eucalyptus 則是提供了可以將VMDK轉成AMI格式的服務上傳到Amazon裡,像這樣的公司我就把它稱成為 VM Enable或是 Cloud Enable的公司。

除了VM外,因為Cloud Computing的帶動也增加不少的技術商機,像是資料庫,線上付費與帳單管理(畢竟這是類似外包作業)以及管理服務。


至於什麼是公有雲(Public Cloud),私有雲(Private Cloud)以及混和雲(Hybrid Cloud)呢?
這樣說好了,其實我們目前談的都算是公有雲,因為所有的主機與運算是在別人家的機房內,跟我的連結就是靠網路,但是如果要將公司的內部機密資料送上去我還是有疑慮的話,目前一些IaaS也提供了Private Cloud可供使用,我只要用VPN連到他們所提供的Private Cloud就可以了。 至於Hybrid Cloud就是這兩種的混合。

因為IaaS業者使用了大量的VM技術,所以另一個Internal Cloud的觀念也被提起,既然使用這樣的方式可以大量降低成本,而且如果有資料安全使用上的考量,何不利用VM的技術來打造內部雲呢?

談了一些雲端東西,接下來這幾年就可以看見這些服務的發展,消費者以後可享用更便宜的服務,企業也可以大幅的降低成本。 讓我們看看"天邊一朵雲"並且"漫步在雲端吧"。



2010年11月10日 星期三

在 Windows XP 上 build TrueCrypt 6.3a

前一陣子很迷OTFE (On the Fly Encryption)於是著手開始study FreeOTFETrueCrypt 這兩個Open Source, FreeOTFE要用Delphi來build我覺得太過麻煩就放棄。 看了一些資料後就決定來Build TrueCrypt 試看看,進而study他的source code,越看越入迷,後來乾脆自己來改他的source code並且做了一版UI比較容易使用的版本,我把它叫 USK (USB Security Kit),我還沒把64 bit driver sign 過,所以就丟出32 bit的版本出來給其他人玩玩看。


我在study TrueCrypt當時是6.3a的版本,現在它已經推出7.0的版本,因為support多平台的關係,裡面用的source code 全部用c來寫,所以要在做資料轉換的時候就不能用MFC的 Cstring,這時就要查一些古老的c library 了,所以改起來可說是一把眼淚一把鼻涕的查資料到三更半夜。

要build TrueCrypt 之前有以下幾樣東西要準備
1. Microsoft Visual Studio 2008 SP1
2. Microsoft Visual C++ 1.52
3. Windows Driver Developer Kit (7600.16385.0)
4. NASM (2.09)
5. GZIP
6. PKCS11 (Cryptographic Token Interface)
7. Microsoft Windows SDK for Windows 7 (如果你是在Windows 7 build的話可以不用裝)

1. Microsoft Visual Studio 2008 SP1
我沒在VS2005 與 VS2010試過,理論上VS2010應該沒啥大問題

2. 安裝Microsoft Visual C++ 1.52
將這個package解開到c:\MSVC 下

 3. 安裝Windows Driver Developer Kit (7600.16385.0)
預設的安裝會是在 c:\WinDDK 下

4. 安裝NASM (2.09)
解壓縮後把 nasm.exe copy到c:\windows\system32 下

5. 安裝GZIP
解壓縮後把 gzip.exe copy到 c:\windows\system32 下

6. 下載 PKCS11 
下載點
下載這三個header檔  pkcs11.h, pkcs11f.h 以及 pkcs11t.h 至 c:\PKSC11_INC 目錄下

7. 安裝Microsoft Windows SDK for Windows 7 
預設安裝目錄在是 c:\Program Files\Microsoft SDKs\Windows\v7.0


下載 TrueCrypt source code 與設定編譯環境
1. 下載 TrueCrypt source code

2. 設定作業系統環境變數
在環境變數內把以下的目錄加進去系統變數內
變數名:MSVC16_ROOT 變數值: c:\MSVC
變數名:WINDDK_ROOT 變數值: c:\WinDDK\7600.16385.0
變數名:PKCS11_INC 變數值: c:\PKCS11_INC


基本上這樣就已經ok了,現在打開 TrueCrypt.sln 的solution 檔來編譯看看吧。


TrueCrypt 的solution 包含了6個project,裡面比較重要的是 Crypto, Driver, Format跟Mount這四個projects.  基本上 Crypto是不會去做太多的更動,因為裡面大多是很標準的encryption library。 Driver的project可以build出32 bit與64 bit的driver,不過64 bits的driver沒sign 過是沒法load起來。

如果你想要讓你TrueCrypt 認不得你所create的decryption volume的話你必去要在 Driver project下去修改Volumes.c 檔0x54525545 這個offset值,不過一旦你修改這個值,所有reference 這個值的檔案都要修改。

我動最多的project是Format這個project,我大概改了約一半左右的檔案,特別是Tcformat.c 這個檔幾乎是被我改到面目全非了..




2010年11月9日 星期二

要如何 Build Google雲端SaaS的作業系統 Chromium OS

要自己build Google的Chromium OS不是一個太大的難事,如果你按照著Google他所提供的步驟來做build的起來的話我頭可以給你,因為你會遇到一些眉眉角角要處理的小問題。

Google Chromium OS的網頁提供了許多的資訊可以參考,要自己build Chromium OS的話就要到這裡看一下資料。 根據上面的資料你必須準備build之前所需要的東西, Ubuntu 64 bits 8.04以上的版本,以及一些所需要的software。 看這個內容真的是很模糊,頗有Alpha的水準,以下就分享一下我build的步驟。

A. 準備動作
1. Ubuntu 64 bits Desktop 的作業系統,你一定要用64 bits的版本,32 bit的Ubuntu build不起來,相信我所說的因為我試過了。
2. 如果你沒有額外的機器,你可以在VMware上安裝Ubuntu來build,不過真的很慢,我在我的Mac上跑VM來build花了我整整一天的時間。

B. 下載所需要的Tools
1. 安裝好Ubuntu 後請開啟console mode 的 Terminal 
2. 這時你會在home的 目錄下,請 建立一個 trunk 的目錄 (輸入 mkdir trunk)
3. 現在安裝git的核心軟體curl(輸入 sudo apt-get install git-core subversion curl)
4. 現在取得Google的depot tool 
(輸入 svn co http://src.chromium.org/svn/trunk/tools/depot_tools)
5. 接下來在 建立 etc的目錄 (輸入 mkdir etc) 然後進入到 etc的目錄下 (輸入 cd etc)
6. 取得bash_completion (輸入 curl "http://www.chromium.org/chromium-os/building-chromium-os/using-cros_workon/bash_completion?attredirects=0&d=1" -o bash_completion -L )
7. 現在回到home的目錄(輸入 cd ~)
8. 建立 工具的path (輸入 Add to ~/.profile
export PATH=~/trunk/depot_tools:"$PATH"
[ -f "$HOME/etc/bash_completion" ] && . "$HOME/etc/bash_completion"
export PS1='\h:\W$(__git_ps1 "(%10s)") \u\$ ')

C. 取得Chromium OS的source code
1. 進入 trunk 的目錄 (輸入 cd trunk)
2. 取得minilayout.xml (輸入 repo init -u http://git.chromium.org/git/manifest -m minilayout.xml)
3. 在取得  minilayout.xml 後開始來下載最新的Chromium OS 的source code (輸入 repo sync)
4. 接下來就慢慢的等吧..
5. 等到全部下載完成後 請到scripts的目錄下來建立 chroot的作業環境
(輸入 cd ./src/scripts)
(輸入 ./make_chroot)
6. 接下來就慢慢等吧

D. 進入 chroot的環境來build image
1. 等到 chroot的環境建立好之後請進入 chroot (輸入  ./enter_chroot.sh)
2. 進入chroot的環境後請先建立一個 share user所需的密碼 
(輸入 ./set_shared_user_password.sh)
shared user 的預設帳號名是 chronos,只後你可以用這個預設帳號與密碼進入你的 Chromium OS
3. 設定build目標的硬體設備 (輸入 ./setup_board --board=x86-generic --default)
4. 接下來就開始build package吧 (輸入 ./build_packages)
5. ok現在先去睡個覺慢慢等吧
6. 現在來開始 build image (輸入 ./build_image.sh)
7. ok 再去睡個覺吧
8. build好的image 會存在 /build/images/x86-generic/latest/ 的目錄下

E. 製作VMware image 
1. 確認一下qemu-img 是否存在 (輸入 which qemu-img)
2. 如果沒有的話就需要merge qemu-kvm (輸入 udo emerge -sq qemu)
3. 完成後可以下次確認 (輸入 which qemu-img)
4. 接下來開始 build VMware的image吧 (輸入 /image_to_vm.sh --from=../build/images/x86-generic/latest/ --board=x86-generic --make_vmx --format vmware --vmdk  chromiumos_vmware.vmdk --vmx chromiumos_vmware.vmx)
5. build 好VMware image後可以load vmx的設定檔來載入vmdk的image,在這之前你比需修改一下 vmx的內容要不然image load起來後會無法選擇網路,請在vmx檔內加入這一個網路介面 (ethernet0.virtualDev = "e1000" )

F. 製作USB boot up image
1. 你可以 輸入 sudo fdisk -l 的指令來確定你USB所在的位置
2. 輸入 ./image_to_usb.sh --to /dev/sdb 來安裝USB boot up image (/dev/sdb 是我usb device所在的位置)

我的USB boot up image製作並不成功,Boot up 的結果是螢幕一片黑,目前我還在想辦法解決中。