Google AppEngine 3アプ目
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/02/25(木) 09:32:03ID:5mUqVSikhttp://code.google.com/appengine/
■過去スレ
Google App Engine
http://pc11.2ch.net/test/read.cgi/php/1207754942/
Google App Engine 2アプ目
http://pc11.2ch.net/test/read.cgi/php/1243654802/
■リンク集
はてなブックマーク
http://b.hatena.ne.jp/t/gae
http://b.hatena.ne.jp/t/Google%20App%20Engine
Delicious
http://delicious.com/popular/gae
http://delicious.com/popular/googleappengine
■参考サイト
App Engine ギャラリー
http://appgallery.appspot.com/
ドキュメント
http://code.google.com/appengine/docs/python/overview.html
0667nobodyさん
2010/11/01(月) 06:38:30ID:eyzOe3gX│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘ おっぱい!おっぱい!
0668nobodyさん
2010/11/18(木) 20:53:41ID:???ユニークの項目で見て、違いがあれば更新し、なければ追加するという処理なのですが、毎回SELECTして判定しないといけませんか?
0669nobodyさん
2010/11/19(金) 20:13:56ID:???>毎回SELECTして判定しないといけませんか?
うん。
普通だったらそういうユニークなキーは
StringPropertyではなくkey_nameに指定すると思う。
それだったら、エンティティの存在チェックは、
get_by_key_nameするだけだから早いよ。
0671nobodyさん
2010/11/23(火) 11:05:09ID:???1ページに200要素あってそれが8ページあり、それぞれ毎日更新されています。
ただし、8ページの要素名(フィールド)は互いにかなり重複しています。
このような場合は基底クラスを宣言してその派生クラスをdbクラスの多重継承とすべきでしょうか?
一気に全ページ対応の巨大なクラスを宣言すべきでしょうか?
検索クエリは全ページの横断クエリもありえるので細かく分ける必要はない気がします・・・・
開発経験が少ないので勘どころがわかりません
よろしかったらアドバイスお願いします
0672nobodyさん
2010/11/23(火) 12:33:20ID:???0673nobodyさん
2010/11/23(火) 12:57:30ID:???0674nobodyさん
2010/11/24(水) 23:10:32ID:???0675nobodyさん
2010/11/25(木) 22:22:29ID:???本当だ。外部のサーバーに飛ばしてるんだな。
Janeで見たらリダイレクトされていてもそのまま見られるから全然気付かなかったわ。
0676nobodyさん
2010/12/06(月) 00:19:46ID:???ブラウザでRSSを開くと前と更新されているのに
GAEのlogでは過去の内容のままで記録されています。
一応UserAgentやリファラーをつけて見ましたが変わりませんでした。
原因としてどの様なことが考えられますか?
0678nobodyさん
2010/12/06(月) 01:13:18ID:???0679nobodyさん
2010/12/06(月) 05:54:56ID:???0680質問
2010/12/12(日) 17:47:20ID:89yAKgNbもし可能なら日本語を入れるにはどうすればいいですか?
Google App Engine Lancherでgaewiki(http://code.google.com/p/gaewiki/)のサーバー起動して、
http://localhost:8088/日本語
としてFirefoxでアクセスすると↓のエラーメッセージが出ます
Traceback (most recent call last):
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3245, in _HandleRequest
self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3186, in _Dispatch
base_env_dict=env_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 531, in Dispatch
base_env_dict=base_env_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2410, in Dispatch
self._module_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2299, in ExecuteCGI
os.environ.update(env)
File "D:\app\dev\Python25\lib\os.py", line 462, in update
self[k] = dict[k]
File "D:\app\dev\Python25\lib\os.py", line 430, in __setitem__
putenv(key, item)
OSError: [Errno 0] Error
0681nobodyさん
2010/12/13(月) 00:20:46ID:???gaewikiを動かして日本語utf8なパスを試したところ、linux+python2.5の環境では問題なかったです。
日本語URLはbase64でエンコードされているので特に問題ないとは思うけど、
Windows+python or GAEの問題なのかなぁ。。
0682680
2010/12/13(月) 00:31:25ID:2tCEPe3y試していただいてありがとうございます。
質問した後に試してみたことがあります。
以下のようにアクセスするとログはこのように表示されます。
http://localhost:8088/日本語
ERROR 2010-12-12 15:25:01,736 dev_appserver.py:3285] Exception encountered handling request
Traceback (most recent call last):
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3245, in _HandleRequest
self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3186, in _Dispatch
base_env_dict=env_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 531, in Dispatch
base_env_dict=base_env_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2410, in Dispatch
self._module_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2299, in ExecuteCGI
os.environ.update(env)
File "D:\app\dev\Python25\lib\os.py", line 462, in update
self[k] = dict[k]
File "D:\app\dev\Python25\lib\os.py", line 430, in __setitem__
putenv(key, item)
OSError: [Errno 0] Error
INFO 2010-12-12 15:25:01,762 dev_appserver.py:3317] "GET /%E6%97%A5%E6%9C%AC%E8%AA%9E HTTP/1.1" 500 -
一方で以下のようにアクセスすると200を返して正常に処理されます。
http://localhost:8088/日本
INFO 2010-12-12 15:25:08,234 dev_appserver.py:3317] "GET /%E6%97%A5%E6%9C%AC HTTP/1.1" 200 -
この違いは何なのでしょうか・・・
0683680
2010/12/13(月) 01:49:58ID:2tCEPe3yとりあえずUbuntu Linuxをインストールして試してみたら上記の問題は発生しませんでした。
GAE上にアップロードして実行しても問題は発生しませんでした。
理由は分かりませんがWindows環境では問題が出るようですね・・・
0684nobodyさん
2010/12/13(月) 15:48:30ID:???転送や保存に金がかかるという理由以外にも、アップロードとかのしやすさを考えるとね
0685nobodyさん
2010/12/13(月) 16:06:39ID:???WindowsだとPython2.5.5以外では問題が多発したような。
もし2.6や2.7を使ってたら、2.5をインストールしなおしたほうがいい。
ちがってたらごめんね。
0686nobodyさん
2010/12/15(水) 16:21:04ID:???0687680
2010/12/15(水) 16:27:50ID:cZWB6GF9公式サイトでは2.5.5のwindows用バイナリは配布していないのですね。
ActivePython-2.5.5.7-win32-x86.msiをインストールして使ってみましたが、
やはり日本語URLの問題は発生します。
0688nobodyさん
2010/12/15(水) 16:55:54ID:???Pythonの問題じゃなくてWindows(mbcsがSJIS)の問題だと思わない?
0689nobodyさん
2010/12/16(木) 16:48:20ID:???0690nobodyさん
2010/12/17(金) 01:44:05ID:???0691nobodyさん
2010/12/17(金) 02:27:20ID:???GAE関係なしにPython2.5(Windows)の環境でutf-8で
dictのkeyに'日本語'と'日本'で問題ないか試してみた?
0692nobodyさん
2010/12/17(金) 12:44:53ID:???その問題、自分が開発してるときにもあったけど、
本サーバにデプロイしたら、問題なく動いたので
気にしないでやってた。
>>691のやつ試したら、
>>> os.putenv("hoge", u"日本".encode("utf-8"))
>>> os.putenv("hoge", u"日本語".encode("utf-8"))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 42] Illegal byte sequence
となるので、utf-8でエンコードしたときの末尾がよろしくない文字列を
putenvしようとするとエラーが出るのかな。
0693nobodyさん
2010/12/17(金) 13:04:44ID:???>>> os.putenv('hoge', u'日本語'.encode('utf-8'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 2] No such file or directory
>>> os.putenv('hoge', u'日本'.encode('utf-8'))
>>> os.putenv('hoge', u'日本語'.encode('utf-8'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 0] Error
>>> os.putenv('hoge', u'日本'.encode('utf-8'))
>>> os.putenv('hoge', u'日本語'.encode('utf-8'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 0] Error
なんだこりゃ
0694nobodyさん
2010/12/17(金) 18:48:28ID:???0695nobodyさん
2010/12/17(金) 21:40:26ID:???悪いのはpyじゃなくてWinだし
0696nobodyさん
2010/12/17(金) 23:08:16ID:???in posixmodule (also under NT).
0697nobodyさん
2010/12/17(金) 23:08:51ID:???WとAの2つのAPIがあって、Aでは未だにCP932が現役でCP65001が使えないんだから
0698nobodyさん
2010/12/17(金) 23:44:59ID:???やりたいことは、datastorのプロパティとDjangoを介したform要素を1対1で対応させて、挿入、編集処理を行いたいのです。
プロパティの数もかなり多いので、ループを多用した処理でコードを短くしたい。
<select>タグで選択させるエンティティもクラス定義の中にうまく取り込み定義したい。
いっそ、エンティティごとに表示させるformのタイプやバリデーションも定義したい。
こんなふうに考えてます。
なにか参考になるキーワードやサンプルページなどありましたら、教えてください。
具体的にコードを教えていただけるとさらにありがたいと思います。
GAEpythonアプリは簡単なものしか経験はありません。何卒よろしくお願いします。
0699nobodyさん
2010/12/18(土) 00:33:28ID:???Pythonのお勉強 Part40
http://hibari.2ch.net/test/read.cgi/tech/1289105386/
くだすれPython(超初心者用) その9
http://hibari.2ch.net/test/read.cgi/tech/1258320456/
Python の宿題ここで答えます Part 2
http://hibari.2ch.net/test/read.cgi/tech/1235050215/
【実験台】 Python 3.0 のお勉強 Part 1 【非互換】
http://hibari.2ch.net/test/read.cgi/tech/1157686822/
Microsoft IronPython 1.0
http://hibari.2ch.net/test/read.cgi/tech/1220604777/
俺のPython勉強日記
http://hibari.2ch.net/test/read.cgi/tech/1219618707/
【シンプル】Pythonっておもしろい【パワフル】
http://hibari.2ch.net/test/read.cgi/tech/1169473442/
Pythonに見られるインデントによる制御構造の是非
http://hibari.2ch.net/test/read.cgi/tech/1175919288/
Python Challengeをやろう!
0700nobodyさん
2010/12/18(土) 01:14:36ID:???0701nobodyさん
2010/12/18(土) 01:38:15ID:???http://code.google.com/intl/ja/appengine/docs/python/gettingstarted/
0703nobodyさん
2010/12/19(日) 09:20:10ID:???ありがとうございます。
http://code.google.com/intl/ja/appengine/articles/djangoforms.html
このあたりから調べてみます。助かりました。
0704nobodyさん
2010/12/23(木) 15:01:55ID:upuRkgtvapp.yaml
の書き方についてご教示ください。
- url: /
static_dir: static_dir/
- url: /article
script: article.py
このような設定をした場合で物理アドレスがstatic_dir/artcle/imgの中にあるイメージファイルは
article.html(article.pyが生成)の中でimg/と記述されているイメージタグからアクセスできるでしょうか?
テンプレートの中にあるarticle.htmlのイメージタグのsrcアドレスを単純な相対パスにしておきたいのですが。
この方法がダメなら書き直すしかないですね。
大量のhtmlを受け取って、そのうちの一部だけを動的に書き換えて欲しいという要求なので、なるべく元の
html内のimgタグなどはそのままにしておきたいのです。
よろしくお願いします。
0705nobodyさん
2010/12/23(木) 16:01:08ID:???- url: /img
static_dir: static_dir/article/img
- url: /article
script: article.py
- url: /
static_dir: static_dir/
0706nobodyさん
2010/12/23(木) 18:38:00ID:upuRkgtv0707nobodyさん
2010/12/23(木) 21:50:37ID:???0708704
2010/12/24(金) 21:25:00ID:N5vcjC0l>>705で教えて頂いた設定でおおかたうまくいきましたが
static_dir直下のファイルへのアクセスだけ404です。
- url: /
static_dir: static_dir/
- url: /.*
script: main.py
このように追加しましたが、うまくいきません。「.」や「*」などいろいろ追加してみましたがうまくいきません。
ディレクトリにファイルがない場合はmain.pyに拾わせてindex.htmlに行かせたいのですが、それは成功しています。
ただし、すごく遅いのでなにか循環しているかも知れません。
index.html内部にstatic_dir/直下のファイルへのiframe参照があるので、それがindex.htmlに呼ばれているような・・・
お手数をおかけしますが、お知恵をおかし下さい。
0709nobodyさん
2010/12/25(土) 01:02:52ID:???0710704
2010/12/25(土) 01:39:24ID:cnkwEauIfrom application.index import Index
from application.registform import RegistForm
from application.article import Article
from application.regist import Regist, Confirm, Resign
from application.proc import Proc
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
def main():
application = webapp.WSGIApplication([('/', Index),
('/logout', Logout),
('/registform', RegistForm),
('/confirm', Confirm),
('/resign', Resign),
('/proc', Proc),
('/article', Article)],
debug=True)
run_wsgi_app(application)
if __name__ == '__main__':
main()
こんなかんじです
まだ読み込んだだけで使ってないクラスとかあります
0711704
2010/12/25(土) 15:26:44ID:4xZSyuIY- url: (.*)/
script: main.py
- url: /(.*)
static_files: static_dir/\1
upload: static_dir/(.*)
で解決しました。でもなんかちょっともっさりした動作です。
main.pyに含まれるiframeがmain.pyを呼んでないか心配です。
ほかに改善すべきところがありましたら、アドバイスいただけると幸いです。
0712704
2010/12/25(土) 16:47:50ID:4xZSyuIY上記でだいたいいいのですが、ルートにアクセスしたとき、ルートのindex.htmlにアクセスしたとき
main.pyではなくstatic_dir/index.htmlを表示してしまいました。
http://foo.com/
http://foo.com/index.html
上記の場合のみmain.pyに処理させたい場合はどうしたらいいでしょうか?
頭が混乱してしまいました。
0713nobodyさん
2010/12/25(土) 19:43:49ID:???まともな回答が返って来ると考えてるとは御目出度い
0714nobodyさん
2010/12/25(土) 22:06:23ID:???script: main.py
も追加したら良いじゃない
飛ばす先はstatic_dir/index.htmlなんだろ
0715704
2010/12/26(日) 10:50:31ID:Kj3wLXeW申し訳ありませんでした。
半端な知識で理屈で考えるまえに組み合わせを総当りで試してしまいました。
>>714
ありがとうございました。
その一文を追加してあとルートディレクトリへのアクセスをmain.pyに向けたら一歩前進しました。
なんとかこの先もやっていけそうな感じになってきましたが、みなさんこんな場合はどうされてますか?
webプロダクションから完成済みページの一部だけを動的に変化するようにして欲しいと言われた。
webプロダクションの外注であるデザイン会社からhtmlで構成されたディレクトリがまるごと納品される。
ルートから各ページごとにディレクトリが切ってあり、それぞのディレクトリにindex.htmlがあり、内部相対リンクは
foo/index.htmlだったりfoo/だったり、昔のサーバーのクセに頼り切った構成。
GAEpythonの流儀に従い、動的ページとstaticページとtemplatesが分離していると、一見プログラマとデザイナは
仕事をわけて作業できそうですが、それは両方にSDKがインストールされていることが前提になります。
webプロダクションが勝手に使っているデザイン屋に同じ環境で作業することを強制することはなかなかできず。
そんな相手先に環境構築に行くのも物理的に無理。デザイン会社は変わるかも知れない。
結果、デザイン変更があった場合に備えて物理ディレクトリ上に相対アドレスでチェックして作業している環境を
まるごとコピーしてそれでも動くように細かく設定をして対処しようとしました。
その結果、完全ではないですが、なんとか体制はととのいましたが、一部htmlの相対アドレスを手直しせざるをえませんでした。
というわけで、環境を調整するだけで2日かかり、コードはまだ書けません。
みなさんのおかげで助かりました。ありがとうございました。
0717nobodyさん
2010/12/27(月) 03:21:04ID:gZZU6IfS0718704
2010/12/27(月) 18:04:56ID:mqmK5arbアクセス URL が www のない http://mydomain.co.jp の形式の場合、登録事業者で追加の手順が必要な場合があります。
登録事業者のウェブサイトでアカウントにログインし、ドメインが次の IP アドレスを指すよう A レコードを設定します。
この設定したけど、google印のNOT FOUNDが出ただけだった。
google apps はwwwなしのドメインで登録しちゃってる。
0719704
2010/12/27(月) 18:10:00ID:mqmK5arbwwwなしの運用ってできましたっけ?
>>716
どもすみません。
サイトはいくつか運営してるんですが、正規表現とか苦手で
>>717
結果として迷惑かけただけでしたね。
最初にレスくれた方のおかげでだいたい解決してたんですが
チラ裏みたいなことになって申し訳ないです。
0721704
2010/12/27(月) 20:21:21ID:GK7Rnap9できる場合もあるんですね
0722nobodyさん
2010/12/27(月) 20:25:08ID:???0723704
2010/12/27(月) 20:33:11ID:GK7Rnap90724nobodyさん
2010/12/27(月) 20:51:29ID:???0725nobodyさん
2010/12/27(月) 22:16:59ID:???今は無理
0726nobodyさん
2010/12/27(月) 23:21:36ID:GK7Rnap9ところでbulkloader.yamlってとんでもないところにできるんですね
0727nobodyさん
2010/12/28(火) 19:54:54ID:???アンインストールして古い方入れたら治ったけど、びびった
0728nobodyさん
2010/12/28(火) 23:35:36ID:???POSTデータをループで取り出す方法ある?
0729nobodyさん
2010/12/28(火) 23:36:55ID:???for key in self.request.arguments():
self.response.out.write(key + "=" + self.request.get(key) + "
")
0730nobodyさん
2010/12/29(水) 00:38:57ID:???0731nobodyさん
2010/12/30(木) 08:49:49ID:???なんでも、Channelに接続するときにCPU時間が3秒ぐらい、多いときだと10秒ぐらいかかるらしい
マルチキャストもブロードキャストもできないし
0732nobodyさん
2010/12/30(木) 13:13:44ID:???0733nobodyさん
2010/12/31(金) 21:22:10ID:???a = simplejson.load(file)
No JSON object could be decoded
0734nobodyさん
2010/12/31(金) 23:31:43ID:???0736nobodyさん
2011/01/01(土) 01:08:47ID:???static_dirにファイル置いてエラーってのは結構見つかったし
エンコードもcodecs.openしても関係ないascii文字だけでもダメ
0737nobodyさん
2011/01/01(土) 01:29:47ID:???jqueryにやらせようかな
0738nobodyさん
2011/01/01(土) 02:38:30ID:???そもそもpythonのdictと違って
""で囲ってないと死ぬ
0739nobodyさん
2011/01/01(土) 03:11:41ID:???{
[
{
"title": "New",
"action":"CreateDoc"
},
{
"title": "Open",
"action": "OpenDoc"
},
{
"title": "Close",
"action": "CloseDoc"
}
]
}
0740nobodyさん
2011/01/01(土) 03:33:32ID:???0741nobodyさん
2011/01/01(土) 03:35:43ID:???"hoge_array": [
{
"title": "New",
"action":"CreateDoc"
},
{
"title": "Open",
"action": "OpenDoc"
},
{
"title": "Close",
"action": "CloseDoc"
}
]
}
0743nobodyさん
2011/01/01(土) 05:08:38ID:???外側の配列に名前つけて試して、さらに削ってためしたけどだめです。
たぶん、みなさんの環境ではできちゃってるのかな。
0744nobodyさん
2011/01/01(土) 05:53:04ID:???0746nobodyさん
2011/01/05(水) 05:55:07ID:???ユーザーに送ることでユーザー側のjavascriptから直接外部サービスに
アクセスすることってできますか?
0747nobodyさん
2011/01/05(水) 06:03:33ID:???でもなんかセキュアじゃないような・・・
ご意見をお願いします。
0749nobodyさん
2011/01/05(水) 13:43:59ID:???0751nobodyさん
2011/01/09(日) 11:08:43ID:???ソースダウンロードできるの?
0752nobodyさん
2011/01/09(日) 12:32:21ID:???http://www.oreilly.co.jp/books/9784873114750/
0753nobodyさん
2011/01/09(日) 13:13:07ID:???そもそもオンライン情報だけで充分だし
バージョン上がったら使えなくなる本なんて金がもったいなくて買えんわ
0754nobodyさん
2011/01/09(日) 13:18:08ID:???社会人の朝食代レベルの金額なんだから別にそこまでないだろ…
俺はささっと買うわ
0755nobodyさん
2011/01/09(日) 13:28:08ID:b7LWieM10757nobodyさん
2011/01/09(日) 15:13:04ID:???目次を見る限り
0758nobodyさん
2011/01/09(日) 15:35:39ID:???まぁ買った人はレビューよろしこ
0759nobodyさん
2011/01/10(月) 10:21:50ID:???run_wsgi_app(application)
こんな感じにマッピングしたときに、Mainに正規表現で拾った値を渡すにはどうしたらいいでしょうか?
0760nobodyさん
2011/01/10(月) 11:18:57ID:???def get(self, match1, match2):
0762nobodyさん
2011/01/10(月) 15:41:16ID:???run_wsgi_app(application)
class Main(webapp.RequestHandler):
def get(self, **kw):
kw['hoge']
kw['fuga']
0763nobodyさん
2011/01/11(火) 21:18:58ID:???何を使えばいいのでしょうか?
exit()だと出力されずに終わってしまいます
0764nobodyさん
2011/01/11(火) 21:31:38ID:???自己解決しました。
■ このスレッドは過去ログ倉庫に格納されています