2015年10月19日 星期一

建立自己的TinyWebDB

App Inventor有資料庫可以使用

  1. TinyDB:這個資料庫的內容,只有與該DB所整合的APP可以使用,其他的無法使用,換言之只有安裝該APP的那一台裝置可以使用,另外一台裝置即使安裝了相同的APP也不可以使用
  2. TinyWebDB:這個資料庫是放在網路上,任何安裝可以存取這個資料庫的APP的裝置,在聯網之後都可以存取這個資料庫內容,例如多人線上遊戲就是一個例子

不過因為TinyWebDB是位在公共區域,任何用App Inventor開發的APP都可以使用這個空間。空間有限,所以每一個APP最多只可以有1000個資料,超過時最早進入資料庫的資料就會被覆蓋掉。
若APP需要超過這個數量的資料,那就需要建立自己的TinywebDB,Google在Google APP Engine雲端平台上,提供程式設計者可以自己建立TinywebDB的環境,也提供了範例程式碼,只要依據在APP Inventor中所載的步驟,就可以建立自己的TinywebDB
下面說明建立的方法。主要的大步驟如下

  1. 安裝Google App Engine SDK for Python以及佈署工具
  2. 取得範例TinywebDB的原始程式碼,並且在本機先測試是否可以運作
  3. 在Google App Engine上建立用於TinywebDB的新專案,若是未曾使用過Google App Engine,要先熟悉環境
  4. 建立新專案之後,將在本機端測試過的程式檔,佈署到Google App Engine雲端平台上
  5. 使用App Inventor開發APP,在使用TinywebDB時,將ServiceURL設定為剛剛建立的這個TinywebDB的URL

1. 安裝Google App Engine SDK for Python以及佈署工具
1.1 到 http://code.google.com/appengine/下載App Engine for Pytho

1.2 選擇Google App Engine SDK for Python
1.3 選擇Windows版 (視你的平台而定)

1.4 安裝完成後執行 Google App Engine Launcher
1.5 這個原始碼是配合 Python 2.7版本的App Engine,所以若是版本不對,則需要更新。可以由此處下載https://www.python.org/download/releases/2.7/
安裝好了之後,在Google App Engine Launcher的面板,於Control選單下方的Preferences畫面中,輸入Python Path(Python執行檔的路徑),以本例子Python 2.7是安裝在C:\Python27\python.exe

2. 取得範例TinywebDB的原始程式碼,並且在本機先測試是否可以運作
2.1 到http://appinventor.mit.edu/explore/sites/all/files/tinywebdb/customtinywebdb.zip下載你自己之 tinywebdb web service的原始碼customtinywebdb.zip
解壓縮所下載的customtinywebdb.zip檔,解壓縮的會將所有的檔案放在customtinywebdb 目錄內,可以之改為自己喜歡的名字,本例子改為htlin_webdb
然後由面板中選擇File-->Add Existing Application功能,並選擇剛剛解壓縮的目錄,在本例子的路徑為
C:\Users\rogerlin\Desktop\htlin_webdb\appinventordb

2.2 測試本機端安裝
將這個範例原始碼加入後,可以點選這個專案,然後按Run,就可以在本機建立一個測試用的資料庫
若是這個專案可以正常啟動,那麼開啟瀏覽器,並輸入localhost:8080,應該就可以看到在本機執行的測試資料庫
在這裡有一點需要注意的是,這個測試資料庫設定的通訊埠為8080,若是這個號碼已經背其他網路服務用掉的話,那就要更改這個號碼
這個服務的主要目標是與由App Inventor開發的APP通訊,不過他也提供一個網頁的介面,供程式設計師進行除錯之用


3 在Google App Engine上建立用於TinywebDB的新專案
接下來要將這個程式碼佈署到Google App Engine上,以便可以真正讓APP來存取
3.1 首先點選Google App Engine Launcher上的Dashboard,以便登入到Google App Engine的Dashboard

3.2 給予新專案唯一名稱
請選擇一個唯一的名稱,這個名稱稍後會用到,本例子為htlinwebdb,如果可以順利建立這個服務,那表示這個名稱是唯一的,可以用。同時要記得這個名字,稍後會用到。

3.3修改範例程式中的app.yaml設定
接下來要修改剛剛解壓縮之範例程式碼目錄內的app.yaml組態檔。這個組態檔要用文字編輯器(例如記事本)開啟,並且將第一行application的內容(這個範例專案為customtinywebdb27 )改為你剛剛在建立Google App engine專案時所使用的名稱,本例子為htlinwebdb。
修改完成後存檔,並且關閉檔案。
接下來要將這個本機的目錄內的程式,佈署到Google App Engine之上。
請選擇Google App Engine Launcher上的Deploy按鈕,接著你會看到一個新開啟的視窗,並且顯示出佈署的一連串作業。
如果一切順利,就可以關閉這個視窗。
在Google App Engine的Developers console上可以看到下列的資訊

4 測試安裝結果
要測試這個服務是否已經正常運作,可以使用下列的網址格式
xxx.appspot.com,將xxx改為剛剛在Google App Engine建立專案時所選擇的識別子,本例子為htlinwebdb,所以網址是
htlinwebdb.appspot.com,在瀏覽器中輸入這個網址,就可以得到下面的結果

我們發現它跟本地端的一模一樣。這表示已經成功佈署到Google App Engine雲端平台之上,而且順利運轉中
5. 在App Inventor中引用
接下來在App Inventor中,於專案內建立一個TinyWebDB時,可以將ServiceURL改為,這個往們剛剛建立的webDB的URL,http://htlinwebdb.appspot.com

沒有留言:

很炫的衣服標語

陪老婆在運動公園走路時,有一位速度更快的婦人超車。起先不以為意,後來留意到她所穿衣服背後的文字為"Virginia is for lovers but Pennsylvania has Intercourse"。 自己的英文造詣平平,可以看出美國維吉尼亞...