據說safari 5有設定方式可模擬iphone/ipod
http://stackoverflow.com/questions/3882233/iphone-browser-simulator-for-windows
不過會問這個問題通常是因為網頁中使用了javascript,那麼可用的模擬器有人討論過了
http://stackoverflow.com/questions/464089/simulators-emulators-for-mobile-browser-testing
如果使用比較簡單的javascript而不用extjs/jquery的話,在行動裝置上可正常運行的機率會比較高些,以下幾個網站的範例滿值得參考的
http://www.webanddesigners.com/33-jquery-tutorials-to-create-navigation-menu
http://www.noupe.com/jquery/50-amazing-jquery-examples-part1.html
http://www.1stwebdesigner.com/css/38-jquery-and-css-drop-down-multi-level-menu-solutions/
不過到最後我還是沒有踹出來,所以…放棄了XD
2011年1月29日
2011年1月27日
使用 Google 應用服務引擎 ( GAE = Google App Engine ) 建立 Facebook 應用程式 (IX) 多國語言化 i18n
根據不少資料顯示,這不是一個簡單的工作。事實上是非常的麻煩,而且我並沒有成功,但是為了留下記錄,我還是寫下我所進行的步驟。一個可行的行動方案如下
http://blog.yjl.im/2009/02/using-django-i18n-in-google-app-engine.html
不過有一步不成功,是使用 make-messages.py 這步。不要緊,直接把 C:\Program Files\Google\google_appengine\lib\django\django 整個目錄複製到工作目錄下吧。這或許是個overkill,等有時間再回來看看是不是只需要其中某些檔案就好…當然之前按該連結所寫的settings.py就要放到所複製過來的django/conf目錄下
這還沒完,請到 http://sourceforge.net/projects/gettext/ 下載相關的檔 gettext-runtime-0.13.1.bin.woe32.zip , gettext-tools-0.13.1.bin.woe32.zip , libiconv-1.9.1.bin.woe32.zip ,解壓後把所有的bin目錄中的檔案放在工作目錄中
http://blog.yjl.im/2009/02/using-django-i18n-in-google-app-engine.html
不過有一步不成功,是使用 make-messages.py 這步。不要緊,直接把 C:\Program Files\Google\google_appengine\lib\django\django 整個目錄複製到工作目錄下吧。這或許是個overkill,等有時間再回來看看是不是只需要其中某些檔案就好…當然之前按該連結所寫的settings.py就要放到所複製過來的django/conf目錄下
這還沒完,請到 http://sourceforge.net/projects/gettext/ 下載相關的檔 gettext-runtime-0.13.1.bin.woe32.zip , gettext-tools-0.13.1.bin.woe32.zip , libiconv-1.9.1.bin.woe32.zip ,解壓後把所有的bin目錄中的檔案放在工作目錄中
2011年1月22日
使用 Google 應用服務引擎 ( GAE = Google App Engine ) 建立 Facebook 應用程式 (VIII) 大量資料庫上傳
appcfg.py upload_data,相當於ms-sql的bulk insert,不過…相當麻煩
http://code.google.com/intl/zh-TW/appengine/docs/python/tools/uploadingdata.html
照著上面的文件說明,會踹一次就成功的,只能說是神人了…經過無數次試誤,歸納出以下步驟;以下所提到的"腳本目錄"就是app.yaml等原始碼所在的目錄
(本地端環境寫入)
2."編輯您的 app.yaml,並在 handlers: 區段新增下列幾行程式碼:"。這句話對windows使用者而言是有點輕描淡寫了,如果上一步沒作好,會debug到天荒地老;script所在位置放絕對路徑是不work的!!在handlers:的下一行新增以下幾行
- url: /remote_api
script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py
login: admin
3.為了方便起見,先進入腳本目錄,然後在本地端起動伺服器。沒起動的話,會在執行appcfg.py upload_data時得到無法建立連線之類的錯誤訊息。若要清空資料,加參數 --clear_datastore
python "C:\Program Files\Google\google_appengine\dev_appserver.py" --port=8080 .
4."建立載入器類別",這步大概照做
5."準備您的資料",這步大概照做,所撰寫的程式要放在前述的PYTHONPATH底下;為了方便起見,先進入腳本目錄,然後將新腳本放在此目錄下
6."將資料載入開發伺服器",執行下列指令,登入就打admin,密碼沒有,如app.yaml所指定;若出現10061錯誤,加上--num_threads=4;為了方便偵錯,把錯誤訊息重導到到error.txt的話,可以在下列指令最後再加上 >errors.txt 2>&1
python "C:\Program Files\Google\google_appengine\appcfg.py" upload_data --config_file=XXX.py --filename=YYY.csv --kind=ZZZ --url=http://localhost:8080/remote_api --num_threads=4 .
p.s.像ms sql analyzer那樣的工具 http://localhost:8080/_ah/admin/datastore
p.s2.跳出一堆error,似乎和utf-8有關...字串型態需設為 lambda x: unicode(x, 'utf-8') ,參考 http://code.google.com/p/googleappengine/issues/detail?id=157#c18 ;文字中的雙引號"也要改為兩個""作為escape
http://code.google.com/intl/zh-TW/appengine/docs/python/tools/uploadingdata.html
照著上面的文件說明,會踹一次就成功的,只能說是神人了…經過無數次試誤,歸納出以下步驟;以下所提到的"腳本目錄"就是app.yaml等原始碼所在的目錄
(本地端環境寫入)
1.如果先前沒有設定PYTHONPATH的話,要記得設定,不然它會找不到你的.py檔;PYTHON_LIB則是要處理windows和linux/unix系統間的不一致,尤其是路徑的表示法
set PYTHONPATH=...放model的目錄;為了方便起見,就用腳本目錄吧
set PYTHON_LIB="C:/Program Files/Google/google_appengine"
- url: /remote_api
script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py
login: admin
python "C:\Program Files\Google\google_appengine\dev_appserver.py" --port=8080 .
4."建立載入器類別",這步大概照做
5."準備您的資料",這步大概照做,所撰寫的程式要放在前述的PYTHONPATH底下;為了方便起見,先進入腳本目錄,然後將新腳本放在此目錄下
6."將資料載入開發伺服器",執行下列指令,登入就打admin,密碼沒有,如app.yaml所指定;若出現10061錯誤,加上--num_threads=4;為了方便偵錯,把錯誤訊息重導到到error.txt的話,可以在下列指令最後再加上 >errors.txt 2>&1
python "C:\Program Files\Google\google_appengine\appcfg.py" upload_data --config_file=XXX.py --filename=YYY.csv --kind=ZZZ --url=http://localhost:8080/remote_api --num_threads=4 .
p.s.像ms sql analyzer那樣的工具 http://localhost:8080/_ah/admin/datastore
p.s2.跳出一堆error,似乎和utf-8有關...字串型態需設為 lambda x: unicode(x, 'utf-8') ,參考 http://code.google.com/p/googleappengine/issues/detail?id=157#c18 ;文字中的雙引號"也要改為兩個""作為escape
2011年1月18日
使用 Google 應用服務引擎 ( GAE = Google App Engine ) 建立 Facebook 應用程式 (VII) 總而言之…
這篇文章所用的流程是我所見過最快的
http://pythoughts.com/facebook-apps-with-google-app-engine
不過要每個環節都不出錯,才能一次ok,我認為還是需要相當的經驗
關於各版本的演進、優缺點等,可以參考以下這個網站
http://blog.wahahajk.com/search/label/Google%20App%20Engine?max-results=5
相當於ms sql的bulk insert,在一開始要倒資料時相當有用的
http://code.google.com/intl/zh-TW/appengine/docs/python/tools/uploadingdata.html
處理中文時有些地方要注意,同時可以將命令寫成批次檔
http://roy2006tw.blogspot.com/2010/10/google-app.html
有用過RoR的話,GAEO是一個類似的工具,利用scaffold來產生骨架
http://blog.kengao.tw/2008/12/project-google-app-engine_22.html
若您要開發伺服器在啟動之前刪除其資料存放區,請於啟動伺服器時,使用 --clear_datastore 選項:
dev_appserver.py --clear_datastore helloworld/
可參考原文 http://code.google.com/intl/zh-TW/appengine/docs/python/gettingstarted/usingdatastore.html
否則的話會花很久時間,刪一筆要一秒(!!),其中根據我在本機上的測試,all()不需要花時間,fetch()花了0.8秒,delete()花了0.2秒
http://efreedom.com/Question/1-3129391/Google-App-Engine-Devserver-Hideously-Slow
選擇性刪除時,請參考 http://stackoverflow.com/questions/4448123/do-a-mass-db-delete-on-app-engine-without-eating-cpu
真的要大量刪除時,要用cursor
http://stackoverflow.com/questions/3034327/google-app-engine-delete-until-count-0
http://pythoughts.com/facebook-apps-with-google-app-engine
不過要每個環節都不出錯,才能一次ok,我認為還是需要相當的經驗
關於各版本的演進、優缺點等,可以參考以下這個網站
http://blog.wahahajk.com/search/label/Google%20App%20Engine?max-results=5
相當於ms sql的bulk insert,在一開始要倒資料時相當有用的
http://code.google.com/intl/zh-TW/appengine/docs/python/tools/uploadingdata.html
處理中文時有些地方要注意,同時可以將命令寫成批次檔
http://roy2006tw.blogspot.com/2010/10/google-app.html
有用過RoR的話,GAEO是一個類似的工具,利用scaffold來產生骨架
http://blog.kengao.tw/2008/12/project-google-app-engine_22.html
若您要開發伺服器在啟動之前刪除其資料存放區,請於啟動伺服器時,使用 --clear_datastore 選項:
dev_appserver.py --clear_datastore helloworld/
可參考原文 http://code.google.com/intl/zh-TW/appengine/docs/python/gettingstarted/usingdatastore.html
否則的話會花很久時間,刪一筆要一秒(!!),其中根據我在本機上的測試,all()不需要花時間,fetch()花了0.8秒,delete()花了0.2秒
http://efreedom.com/Question/1-3129391/Google-App-Engine-Devserver-Hideously-Slow
選擇性刪除時,請參考 http://stackoverflow.com/questions/4448123/do-a-mass-db-delete-on-app-engine-without-eating-cpu
真的要大量刪除時,要用cursor
http://stackoverflow.com/questions/3034327/google-app-engine-delete-until-count-0
q = Location.all(keys_only=True)
results = q.fetch(500)
while results:
db.delete(results)
q = Location.all(keys_only=True).with_cursor(q.cursor())
results = q.fetch(500)
2011年1月16日
使用 Google 應用服務引擎 ( GAE = Google App Engine ) 建立 Facebook 應用程式 (VI) 我的第一個fb on gae程式--雲端執行
要上傳程式的話,首先要在 https://appengine.google.com/ 先申請一個app,並且把所申請的 id 填到app.yaml的 application 欄位。觀察了launcher的log,應該是在本地的應用程式目錄下達這樣的指令
python "C:\Program Files\Google\google_appengine\appcfg.py" --no_cookies --email=你的帳號@gmail.com --passin update .
這個--passin 參數的目的是可以由檔案抓密碼,這樣就不用再打一次…懶啊~~
http://www.mail-archive.com/google-appengine@googlegroups.com/msg29550.html
由訊息中會發現會發現一個警告(不是錯誤),還需要安裝一個ssl模組 (我咧…淦…什麼…現在才講),但不裝是不影響上傳的,而且在windows平台上裝這個很麻煩(http://pypi.python.org/pypi/ssl) ,中間會問你的密碼,輸入後過一會就ok了
上傳完後,到 https://appengine.google.com/ 看看,版本號遞增了,再去fb改對應之前指到本機的設定,到 https://appengine.google.com/settings 中所指定的位置,然後就可以看到跟剛才在本地端執行時一樣的結果
GAE上傳的詳情也可參考
http://code.google.com/intl/zh-TW/appengine/docs/python/gettingstarted/uploading.html
更fancy的facebook應用程式範例可以參考官方網站
http://developers.facebook.com/docs/samples/canvas
開發時的一些問題,如為何使用chrome在本地端運行時經常沒有回應,如何使用dict型態的資料欄位,在中文網頁中似乎只有這個地方找得到:
http://www.keakon.net/category/Google%20App%20Engine
python "C:\Program Files\Google\google_appengine\appcfg.py" --no_cookies --email=你的帳號@gmail.com --passin update .
這個--passin 參數的目的是可以由檔案抓密碼,這樣就不用再打一次…懶啊~~
http://www.mail-archive.com/google-appengine@googlegroups.com/msg29550.html
由訊息中會發現會發現一個警告(不是錯誤),還需要安裝一個ssl模組 (我咧…淦…什麼…現在才講),但不裝是不影響上傳的,而且在windows平台上裝這個很麻煩(http://pypi.python.org/pypi/ssl) ,中間會問你的密碼,輸入後過一會就ok了
上傳完後,到 https://appengine.google.com/ 看看,版本號遞增了,再去fb改對應之前指到本機的設定,到 https://appengine.google.com/settings 中所指定的位置,然後就可以看到跟剛才在本地端執行時一樣的結果
GAE上傳的詳情也可參考
http://code.google.com/intl/zh-TW/appengine/docs/python/gettingstarted/uploading.html
更fancy的facebook應用程式範例可以參考官方網站
http://developers.facebook.com/docs/samples/canvas
開發時的一些問題,如為何使用chrome在本地端運行時經常沒有回應,如何使用dict型態的資料欄位,在中文網頁中似乎只有這個地方找得到:
http://www.keakon.net/category/Google%20App%20Engine
使用 Google 應用服務引擎 ( GAE = Google App Engine ) 建立 Facebook 應用程式 (V) 我的第一個fb on gae程式--本地端執行
一般來說一開始都會先在本機上測試一下
請再次複習fb上有關canvas url的設定,將其中的CANVAS URL(以及SITE URL)改為GAE測試時的本機位置,例如 http://localhost:8081/
請服用:
1. http://clay0529.blogspot.com/2009/09/facebook-apps-developer-tutorial-1.html & http://clay0529.blogspot.com/2009/09/facebook-apps-developer-tutorial-2.html & optional http://clay0529.blogspot.com/2009/10/facebook-apps-developer-tutorial-gae.html
或
2. http://ithelp.ithome.com.tw/question/10052284
當然你可能會發現一些錯誤訊息,如 PIL沒有安裝之類的,那麼請參考
http://code.google.com/intl/zh-TW/appengine/docs/python/images/installingPIL.html
此外,在瀏覽器打 http://localhost:8081/ 是可以運行沒錯,但搬到FB上卻不見了。這是因為FB使用的是post,而範例只有實作了get;解決的辦法就是…對很聰明,就把get的程式碼複製變成post就好了
基本上就是這樣
請再次複習fb上有關canvas url的設定,將其中的CANVAS URL(以及SITE URL)改為GAE測試時的本機位置,例如 http://localhost:8081/
請服用:
1. http://clay0529.blogspot.com/2009/09/facebook-apps-developer-tutorial-1.html & http://clay0529.blogspot.com/2009/09/facebook-apps-developer-tutorial-2.html & optional http://clay0529.blogspot.com/2009/10/facebook-apps-developer-tutorial-gae.html
或
2. http://ithelp.ithome.com.tw/question/10052284
或
如果您用的是之前的HELLO WORLD,那麼還沒引入FACEBOOK代碼,一切都還單純。
當然,如果用的是GAE+FB,那就要把上述教學網頁中對應的PHP程式置換為PYTHON。
例如,如果你抓了 facebook-python-sdk 回來,可以試著執行它所附帶的 examples\appengine 範例,其中的 FACEBOOK_APP_ID = "..." & FACEBOOK_APP_SECRET = "..."請代換為申請FB應用程式所得到的值。把src目錄下的facebook.py複製到範例目錄中,執行
c:\facebook-python-sdk-322930c\examples\appengine>python "C:\Program Files\Google\google_appengine\dev_appserver.py" --port=8081 .
當然你可能會發現一些錯誤訊息,如 PIL沒有安裝之類的,那麼請參考
http://code.google.com/intl/zh-TW/appengine/docs/python/images/installingPIL.html
此外,在瀏覽器打 http://localhost:8081/ 是可以運行沒錯,但搬到FB上卻不見了。這是因為FB使用的是post,而範例只有實作了get;解決的辦法就是…對很聰明,就把get的程式碼複製變成post就好了
基本上就是這樣
使用 Google 應用服務引擎 ( GAE = Google App Engine ) 建立 Facebook 應用程式 (IV) facebook/python-sdk 安裝
之前說到去 https://github.com/facebook/python-sdk/ 抓了facebook-python-sdk以後,這個module還是有點不給力啊…安裝的動作要先作一下,還好就像perl一樣,有作者寫好的腳本,請運行
python.exe setup.py install
當然如果你像我一樣沒有設預設路徑給python,那就還要打出它的位置,比如
c:\Python25\python.exe setup.py install
更詳盡的解說可以參考 http://docs.python.org/install/index.html
不過根據下面這串討論,還是把要import的程式放進專案中最保險
http://groups.google.com/group/google-appengine-python/browse_thread/thread/a3f1644015b09a6b
放進來以後就像這樣
python.exe setup.py install
當然如果你像我一樣沒有設預設路徑給python,那就還要打出它的位置,比如
c:\Python25\python.exe setup.py install
更詳盡的解說可以參考 http://docs.python.org/install/index.html
不過根據下面這串討論,還是把要import的程式放進專案中最保險
http://groups.google.com/group/google-appengine-python/browse_thread/thread/a3f1644015b09a6b
放進來以後就像這樣
Example structure:
my-app/
app.yaml
...
libs/
facebook/
facebook.py
other-lib/
....
app.yaml
...
libs/
facebook/
facebook.py
other-lib/
....
2011年1月15日
使用 Google 應用服務引擎 ( GAE = Google App Engine ) 建立 Facebook 應用程式 (III) Facebook Python SDK
如何從臉書知道使用者的資訊,甚至記得使用者的資訊呢?這裏面一定要有一些資訊的交流吧…
那要和GAE整合的話呢?
根據小道消息指出,fb是用php寫的,所以參考一下php的寫法
剩下的,大概就是常態的web application開發工作了。祝好運!!
2011年1月9日
使用 Google 應用服務引擎 ( GAE = Google App Engine ) 建立 Facebook 應用程式 (II) GAE初探
GAE安裝完成後,來個hello world吧
http://code.google.com/intl/zh-TW/appengine/docs/python/gettingstarted/helloworld.html
最後一步要"測試應用程式",執行dev_appserver.py時,很奇怪的沒有成功
但是使用"Google App Engine Launcher"的話,感覺更順手耶,參考以下連結
http://give.pixnet.net/blog/post/30024215
或
http://www.scribd.com/doc/35546742/%E9%9B%B2%E7%AB%AF%E9%81%8B%E7%AE%97-Google-App-Engine-GAE-%E7%A8%8B%E5%BC%8F%E9%96%8B%E7%99%BC%E5%85%A5%E9%96%80
當然執行後可以看看log,然後會發現,官網上執行的指令是有問題的;log內容是:
Running command: "['C:\\Python25\\pythonw.exe', 'C:\\Program Files\\Google\\google_appengine\\dev_appserver.py', '--admin_console_server=', '--port=8080', 'C:\\helloworld']"
所以執行的指令應該要像
C:\helloworld>python "C:\Program Files\Google\google_appengine\dev_appserver.py" --port=8080 .
或是
python "C:\Program Files\Google\google_appengine\dev_appserver.py" --port=8080 C:\helloworld
下回試試把facebook的應用程式指來本機或GAE看看
to be continued...
http://code.google.com/intl/zh-TW/appengine/docs/python/gettingstarted/helloworld.html
最後一步要"測試應用程式",執行dev_appserver.py時,很奇怪的沒有成功
但是使用"Google App Engine Launcher"的話,感覺更順手耶,參考以下連結
http://give.pixnet.net/blog/post/30024215
或
http://www.scribd.com/doc/35546742/%E9%9B%B2%E7%AB%AF%E9%81%8B%E7%AE%97-Google-App-Engine-GAE-%E7%A8%8B%E5%BC%8F%E9%96%8B%E7%99%BC%E5%85%A5%E9%96%80
當然執行後可以看看log,然後會發現,官網上執行的指令是有問題的;log內容是:
Running command: "['C:\\Python25\\pythonw.exe', 'C:\\Program Files\\Google\\google_appengine\\dev_appserver.py', '--admin_console_server=', '--port=8080', 'C:\\helloworld']"
所以執行的指令應該要像
C:\helloworld>python "C:\Program Files\Google\google_appengine\dev_appserver.py" --port=8080 .
或是
python "C:\Program Files\Google\google_appengine\dev_appserver.py" --port=8080 C:\helloworld
下回試試把facebook的應用程式指來本機或GAE看看
to be continued...
2011年1月8日
使用 Google 應用服務引擎 ( GAE = Google App Engine ) 建立 Facebook 應用程式 (I)
請依以下步驟服用
0.安裝 python 2.5.4 http://www.python.org/download/releases/2.5.4/
1.建立GAE開發環境 http://zh-tw.facebook.com/note.php?note_id=216355946942
2.建立新的Facebook應用程式 http://clay0529.blogspot.com/2009/09/facebook-apps-developer-tutorial-1.html
3.使用GAE開發Facebook應用程式 http://clay0529.blogspot.com/2009/10/facebook-apps-developer-tutorial-gae.html
0.安裝 python 2.5.4 http://www.python.org/download/releases/2.5.4/
1.建立GAE開發環境 http://zh-tw.facebook.com/note.php?note_id=216355946942
2.建立新的Facebook應用程式 http://clay0529.blogspot.com/2009/09/facebook-apps-developer-tutorial-1.html
3.使用GAE開發Facebook應用程式 http://clay0529.blogspot.com/2009/10/facebook-apps-developer-tutorial-gae.html
訂閱:
文章 (Atom)