2011年1月28日金曜日

GAEでソーシャル・スタイル、web2pyで開発

アプリケーションをGAEで稼働させました。
URLは
https://masel-style.appspot.com

日本語になり切らない部分(中国語が残っている)もありますが、試しに訪問してみてください。
実はDjangoのregistrationが私にとっては、ひどくややこしくて苦労したのですが、web2pyではいとも簡単にできました。パスワード忘れや会員登録のメールアドレスの実在確認とか結構に面倒くさかったのが、すんなりでした。

アプリケーションはソーシャル・スタイルの学習をWebでやってしまおうという実験室です。
まだ無料ですから、今のうちに。

スタイル調査のサンプルの出力です。

web2py日本語

問題:login, password, emailなどのweb2pyで表示する基本的なフレーズを日本語にしたい。

内容:
基本的にTに渡された文字列は翻訳の対象になって、
各国語の利用ができるようにLanguageファイルが用意されている。
開発コンソールの「language」に各国語がリストされている。残念ながら日本語、ja.pyがない。ja.pyファイルはオリジナル文字列(Tで囲まれた文字列)と翻訳が対になったファイルである。
解決策:
そこでファイルja.pyを作成して、Languagesの下にある「update all languages」をクリックすれば、すべてのTで囲まれた文字列が出てくる想定であった。


想定違いの問題:
、Loginとかregisterのオリジナル文字列がこのファイルに現れない。どういう事の次第か、開発したアプリケーションのTの文字列が出現する。
たとえばコントローラーのdefault/indexで最後に、
return dict(message=T('ソーシャル・スタイル・クラブにようこそ'))
とやるとTの括弧内が言語ファイルに出てくる。ところがweb2pyのパッケージのAuthenticationにある筈のLogin,registerが出ないのである。
解決策:
中国語の言語ファイルを見るとloginなどが中国語になっている。
そこでこのファイルをja.pyに複写して、これを日本語に変換してOKになりました。

この投稿は
http://www.vimeo.com/7520812
が参考になりました。

このビデオのなかのdb.pyの次の2行も気になります。

2011年1月25日火曜日

Deploy 再び

開発中のシステムはソーシャルスタイルの診断システムをスタイルの学習システムです。
スタイル診断までをアカウントの登録、ログイン、質問紙の回答とかの一通りのアプリケーションを開発して、web2pyの開発環境で試験、コマンドライン、python2.5 web2py.pyでサーバーをスタートして滞りなく来ました。
そこでGAEにアップロード、deployしたのですが、internal errorの頻発でticketも閲覧できない。Googleのコンソールからデータベースのチケットを見ても何のことやら皆目分からない。
そこで何処かに書いてあったのはindex.yamlのこと。このファイルはこのアプリケーションが実行したデータベースアクセスを記録して、deployと同時にGAEのデータベースにインデックスを作成するということ。
探したができていない。

inde.yamlはdev_appserverを走らせないと作らない。dev_appserverはGAEの実行環境のサンドボックス(sandbox)であり、データベースをファイルシステムでシミュレートする。

ようするにweb2pyでサーバーを走らせたときはsqliteでデータベースを走らせる。dev_appserverはGAEのデータストレージを仮装してくれるというわけ。

dev_appserverはデバグ用のコンソールがあって
localhost:8080/_ah_adminで開きました。

dev_appserverで、実行してインデックスを作ったら

appcfg.py update_indexes web2py

でインデックスだけアップロードしてくれます。

役にたったURLは
開発については
http://code.google.com/intl/ja/appengine/docs/python/tools/devserver.html

アップロードと管理については
http://code.google.com/intl/ja/appengine/docs/python/tools/uploadinganapp.html
です。


結論
web2py.pyで開発して試験しても、dev_appserverで一通りのデータベースアクセスをしないとGAEでは動かないということ。

2011年1月2日日曜日

Google App Engine web2py アプリケーション

web2pyはアプリケーションをGoogle App Engine で動かせるように仕掛けが用意されているがなかなかうまく行かなかったのだが、Version 1.91.5 (2010-12-28 22:12:09)で簡単に動かせたのでログしておきます。私はマックで実行しましたが、Windowsもソースで実行すれば問題ないのではと推測します。


dev_appengine.pyやappcfg.pyを直接にいじる必要がなくなりました。


まず、環境を作ります。
http://wiki.web2py.com/Deploying_web2py_on_Google_App_Engine_GAE_からの引用です。

  1. http://code.google.com/appengine/downloads.htmlからpythonのSDK(Google App Engine SDK for Python)をダウンロードして/projectに解凍します。
  2. http://www.web2py.com/examples/static/web2py_src.zipからweb2pyのソース版をダウンロードして、/web2py に解凍します。
  3. ディレクトリは /project/google_engine と /project/web2py になります。web2pyの下にはpythonのソースプログラムがずらりと並びます。このなかにweb2py.pyがあります(windows版やMac版とはここが違います)。
  4. ディレクトリをweb2pyに移動して python2.5 web2py.py します。わたしはマックを使っているので、こんな具合になりました。


ローカルなサーバーが起動して、次の画面が表示されますから、Choose Passwordに適当な管理者パスワードを設定します。このパスワードはサーバーが起動するたびに要求されます。

start serverボタンをクリックするとブラウザーにweb2pyのローカルなホームページが表示されます。
(default.py をすこしいじったのでメッセージはよけいな文字が出ています。)
Readmeの4行目click here for the administrative interfaceをクリックします。
先ほどの管理者パスワードの要求に応えると管理者画面が表示されます。
この画面でアプリケーションの開発をします。
画面の左下にDeploy on Google App Engineがあります。このdeployボタンをクリックします。
appcfg.pyのパスとdeployするアプリケーションを設定して、あとはGAE Emailと GAE Passwordを入力します。
このメールアドレスとパスワードをなんど入れてもinvalid mail addressになっていたのですが、なんとこの二つのフィールドにメールアドレスを入れると正しくアップロードできます。これがこのブログの味噌です。今のバージョンでたまたまなのでいずれ正しいパスワードが必要になるのかもしれません。
web2pyのユーザーグループで発見したものです。Deploying application on GAE using the deploy buttonでユーザーグループを検索してください。

それからapp.yamlを更新するのを忘れないようにしてください。
データベースがらみの試験は別の機会に。