七月 18, 2014
» 遷移個人首頁經驗分享


在DNS代管商網站上輸入要切換的CNAME

在Openshift中輸入domain name alias

遷移成功!


趁週末將個人首頁 www.gasolin.idv.twGoogle App Engine(GAE) 遷移至 OpenShift. 從2009年開始使用 GAE 架設個人首頁,從剛開始 (python, GAEO),2012(Java, play framework),到今天遷移到 OpenShift(Node.js, webapplate / Express),使用了三種 Server SIde 技術。最近的這次遷移只用了兩天,就完成整個申請/移植/部署的過程。遷移的主因是 GAE 最近不再支援 Java 1.6,使得無法繼續使用 Play Framework 1.2.x 來部署。Play Framework 1.2.x 已經被完全改寫的 2.x 取代許久,而新版並未支援GAE。加上近年開始使用js的機會更多,於是乾脆搜尋了一下,選擇 OpenShift 作為最新的遷居點。

除了 Play Framework 例外,GAEO我有參與開發,webapplate 則乾脆是自己弄來撰寫 Web App 的樣板。透過實際使用,目前可無痛部署到 HerokuAppFogOpenShift 上,而不需修改程式碼。所以雖然說遷移只用了兩天,但其實為了弄好 webapplate,也準備了快一年。

由於 webapplate server side 使用 express 4搭配 swig (Django-like) 樣板(template)引擎使用,與原本使用的樣板架構一致,所以遷移上並沒有遇到什麼問題。

webapplate server side 已做過伺服器效能最佳化,使用yslowpagespeed都可以測到相當高分的結果。


七月 25, 2011
» 使用Play! Framework在GAE上架網站


今年自己在網站開發方面做了很多改變。

第一件是Domain name續約並全面採用 gasolin.idv.tw 系列網址。

本如部落格網址可由 blog.gasolin.idv.tw 連結,
Android書籍/應用相關訊息可由 android.gasolin.idv.tw 連結。

第二件是使用的網頁框架改變。

個人的首頁 www.gasolin.idv.tw 仍然架在Google App Engine上頭,
但背後使用的技術,也從Python based的 GAEO ,改為使用Java based的 Play! Framework

使用 Play! Framework 的好處是它並不像GAEO一樣完全捆綁在Google App Engine上,而是隨時可以搬離GAE獨立運作。

再者Play!的專案架構和使用方法很接近TurboGearsDjango等現代的網頁框架,因此熟悉現代網頁框架的開發者應該能很快地上手。開發的時候可以在本地端開發,而且修改後的結果也能即時自動編譯並顯示,用起來非常接近使用動態語言開發的使用經驗。(Play!的命令行工具是用Python寫的:))

Play! 的另一個好處是有很好的模組(Module)架構。要將網站發佈在Google App Engine上時,透過GAE模組和搭配Siena(提供ORM層)、crudsiena(提供自動Admin管理頁面)模組,可以不被Google App Engine的一堆限制所制約,從而得到完整的開發經驗。

Play! 的官方網站上有很齊全的文件可供參考。所謂的「齊全」到了什麼地步呢?
除了簡介、教學、模組介紹之外,甚至還有cheatsheet !


要從頭開始建立一個Play網頁程式到發佈在GAE,要做以下6幾點

1. 建立專案

$ play new  [project name]

2. 安裝相關模組

執行

$ play install gae-版本
$ play install siena-版本
$ play install crudsiena-版本

3. 修改模組依存關係

進入專案目錄, 修改 conf/dependencies.yml 檔案


# Application dependencies

require:    - play -> play [1.2.1,)
    - play -> secure
    - play -> siena [2.0.0,)
    - play -> crudsiena [2.0.0,)
    - play -> gae 1.4
4. 自動檢查模組依存關係

執行

$ play deps

5. 修改GAE相關設定

根據GAE模組提供的文件做相應的GAE發佈設定(指定要deploy的GAE代號)

6. 發佈

執行

$ play gae:deploy --gae=[app engine java sdk path]

如此即完成整套使用Play!  + Google App Engine 的配置流程。


Update 2011/7/20: 在Taipei GTUG活動中和大家分享了Play! on GAE的相關經驗,並公開投影片

五月 22, 2009
» Google 救甘興 -- Google 應用服務引擎(App Engine)中文文件




Google 對他的應用服務引擎(App Engine)推廣不遺餘力,
除了在四月多發佈 Java 版的應用服務引擎之外,
前幾天竟然把官方網站上的文件全部翻譯成了中文!

學網頁開發再也不用自己架設伺服器(Server)、安裝網頁伺服器(Web Server)、伺服器語言、和資料庫(Database),有了 Google 應用服務引擎通通一次搞定。

對 Google 應用服務引擎有興趣的人可以連至Google 應用服務引擎官方網站 (中文)查看。

十月 10, 2008
» 機油 (GAEO) 0.2 alpha 版發佈



開發過 Google App Engine 網頁應用程式的 Python 開發者,可能都有種被縛手縛腳的感覺。因為現成 Python 的網頁框架在 Google App Engine 上,有些地方因為 Google App Engine 的限制而無法作用,因此用起來不是很順手。

GAEO (Google App Engine Oil) 是個專門作用在 Google App Engine 上的框架,免去 Google App Engine 一切得自己手動建造的麻煩。

安裝

使用

easy_install gaeo

命令就可以安裝好。

安裝完提供 gaeo 跟 gaeogen 兩個命令。

建立新專案

使用
gaeo <專案名稱>

來建立一個新專案,新專案中除了基本 Google App Engine 的設定檔案外,還複製了一個 gaeo 檔案夾,提供 gaeo 相關的函式庫。

建立後進入專案,啟動 Google App Engine 開發工具的 server 就可以看到運行的網站。

還可以改使用
gaeo --eclipse <專案名稱>

來順便建立 pydev+eclipse 開發環境用的專案資訊。


程式碼組織方式

GAEO 組織程式碼的方式一樣是網頁框架常見的 Controller/Model/Templates 組織方式。剛建立的資料夾主要內容如下:

main.py
application/controllers/welcome.py
application/template/welcome/index.html


main.py 中可以透過 initRoutes() 函式來修改 url 對應的類別(class)。
template 中的 welcome 資料夾則是直接對應到 controllers 中的 welcome.py。

新增函式


要新增一個 url 處理函式,可以用
gaeogen controller blog view post

命令,會在 application/controllers 中建立 blog.py 檔案,裡面有一個 'blog' class,class 中包含 'view'和 'post' 兩個 method。另外 application/template 中也會建立一個 blog 資料夾,裡面包含 view.html 和 post.html 兩個 Django template 檔案。

技術

技術上 gaeo 樣板使用 django template,而整個 routing 是採用「一頁樣板(template) 對應一個方法 (method) 」的組織方式,可以用類似 route 的方式添加新方法。0.2 版除了提供 scaffold (鷹架)之外,也提供 plugin 系統,整個很有 Ruby on Rail 的感覺。

照著官方文件說明做一遍,一個多小時內就可以上手開發 Google App Engine 上的網頁應用程式啦。

biggo.com.tw

A Django site.