顯示具有 Google App Engine 標籤的文章。 顯示所有文章
顯示具有 Google App Engine 標籤的文章。 顯示所有文章

2009/04/21

Google App Engine 支援 Java 了 !

  這是有點後知後覺及馬後炮 ! 主要是因為最近很機車的案子沉寂幾週後又開始狠機車起來了! 幾乎把 Google App Engine 的學習忘了. 剛才為了查 Django 才發現 4/7 Google App Engine for java 己推出. 但還是一樣要 sign up , 等候 email 通知啟用中 ........ 只好等囉 ! 沒辦法最近工作上一直在使用 Java 開發 web app ,實在拿不出時間深入了解 Python.


2009/03/27

Google App Engine 程式中文問題


  架好開發環境,也寫好最簡單的第一支 helloworld.py 之後,很容易地就上傳到 Google App Engine 正確執行.但是,問題來了,那支程式太簡單了,而且是英文.一來加入就正確的寫法,二來測試中文是否正確顯示,果然問題出現了! 執行畫面如上圖:

以下是程式碼:

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class MainPage(webapp.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('Hello, webapp World! 中文')
self.response.out.write("我是中文")

application = webapp.WSGIApplication([('/', MainPage)],debug=True)

def main():
run_wsgi_app(application)

if __name__ == "__main__":
main()


  想了一下開發語言 Python 針對中文需要注意的地方,才發現在最前面加入一行 encoding


# -*- coding: utf-8 -*-

  結果還是不行,接下來就想到 Content-Encoding 上面了,可惜 Google App Engine (GAE) 文件上有說明,基於安全考量,設定 Content-Encoding 是無效的.最後,把Content-Type 由 text/plain 改成 text/html 後中文亂碼問題就解決了 !

  以下是完整程式碼:



# -*- coding: utf-8 -*-
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class MainPage(webapp.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/html'
self.response.out.write('Hello, webapp World! 中文')
self.response.out.write("我是中文"
self.response.out.write("單引號或雙引號括起來都可以 !")
self.response.out.write("記得第一行加入 # -*- coding: utf-8 -*-")
self.response.out.write("記得Content-Type 設為 text/html")

application = webapp.WSGIApplication([('/', MainPage)],debug=True)

def main():
run_wsgi_app(application)

if __name__ == "__main__":
main()



2009/03/26

申請 Google App Engine及第一支 Web 程式

  Google Apps 真的不好用,也無法做太多客製化,自己租個網頁空間又花錢.現在 Google App Engine 來了,可以自己開發,它提供平台.可惜的是只能用 Python ,如果能有 Java 多好,但免費的我就不要再挑了,反正程式語言學過那麼多種,沒差一個 Python. 

  但申請過程好笑的事發生了,Google Account 我有,但接下來要求你輸入手機號碼,因為要發一封簡訊給你.裡面有一個 Account Code.但格式實在說明不清,最後才發現台灣門號要用以下格式:

+886 955 123 456

簡單的說就是加號再加國碼為第一段,門號去零後拆三段輸入.但事情真的沒有這麼簡單,因為網頁中只認中華 台哥大 及威寶 三家門號.連我原遠傳門號攜碼到台哥大也不行.實在有夠xxx . 最後只好自公司美麗的同事借一下中華門號輸入.果然三分鐘內就有回應.那是一組數字,輸入完就會要求輸入你想要建立的 Application 名稱 : xxxx.appspot.com,只有 xxxx部份是可自訂, 後面的 appspot.com 是沒得選.

 

  進入開發前要下載三項檔案:
  • Python (2.5) : 可惜已經裝好的3.0.1 要移除了.只好到 www.python.org 下載 2.5.4 版來安裝
  • Google App Engine SDK : 安裝 Python 後就將此 .msi 檔安裝起來
  • 開發文件 google-appengine-docs-20090115.zip : 不下載安裝也行,在網路上看即可
第一支 helloword 程式:helloworld.py
  請先在 Google App Engine SDK 安裝目錄下建立一層子目錄叫 helloworld,將 helloworld.py及接下來的組態檔存放在該目錄
print 'Content-Type: text/plain'
print ''
print 'Hello, world! 大家好'

組態檔:app.yaml
application: helloworld version: 1 runtime: python api_version: 1  handlers: - url: /.*   script: helloworld.py 

啟用 Web Server :
在App Engine 安裝目錄下執行 dev_appserver.py helloworld/


測試它:

  http://127.0.0.1:8080/

簡單的執行結果:


放到 Google App Engine 上執行:

先將 app.yaml 中 Application : helloworld 改成 申請到的 Application id .如果沒改會出現下方畫面中的一堆錯誤訊息.

上傳程式 :
執行 appcfg.py update helloworld/

會要求輸入 Google 帳號及密碼,接下來顯示上傳程式過程及結果.


確認結果: 連上自己的網址 http://giliyou.appspot.com

網站流量統計分析:最後可以在自己的 App Engine Dashboard 看一下執行數據

 接下來,開始K 文件,一步一步進入 Google App 的 Framework 中 !