トップページphp
1001コメント298KB

Google AppEngine 3アプ目

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/02/25(木) 09:32:03ID:5mUqVSik
Google App Engine
http://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
0713nobodyさん2010/12/25(土) 19:43:49ID:???
自分の頭を整理しないで混乱したまま質問して
まともな回答が返って来ると考えてるとは御目出度い
0714nobodyさん2010/12/25(土) 22:06:23ID:???
- url: /index.html
script: main.py

も追加したら良いじゃない
飛ばす先はstatic_dir/index.htmlなんだろ
07157042010/12/26(日) 10:50:31ID:Kj3wLXeW
>>713
申し訳ありませんでした。
半端な知識で理屈で考えるまえに組み合わせを総当りで試してしまいました。
>>714
ありがとうございました。
その一文を追加してあとルートディレクトリへのアクセスをmain.pyに向けたら一歩前進しました。

なんとかこの先もやっていけそうな感じになってきましたが、みなさんこんな場合はどうされてますか?
webプロダクションから完成済みページの一部だけを動的に変化するようにして欲しいと言われた。
webプロダクションの外注であるデザイン会社からhtmlで構成されたディレクトリがまるごと納品される。
ルートから各ページごとにディレクトリが切ってあり、それぞのディレクトリにindex.htmlがあり、内部相対リンクは
foo/index.htmlだったりfoo/だったり、昔のサーバーのクセに頼り切った構成。
GAEpythonの流儀に従い、動的ページとstaticページとtemplatesが分離していると、一見プログラマとデザイナは
仕事をわけて作業できそうですが、それは両方にSDKがインストールされていることが前提になります。
webプロダクションが勝手に使っているデザイン屋に同じ環境で作業することを強制することはなかなかできず。
そんな相手先に環境構築に行くのも物理的に無理。デザイン会社は変わるかも知れない。
結果、デザイン変更があった場合に備えて物理ディレクトリ上に相対アドレスでチェックして作業している環境を
まるごとコピーしてそれでも動くように細かく設定をして対処しようとしました。
その結果、完全ではないですが、なんとか体制はととのいましたが、一部htmlの相対アドレスを手直しせざるをえませんでした。
というわけで、環境を調整するだけで2日かかり、コードはまだ書けません。
みなさんのおかげで助かりました。ありがとうございました。
0716nobodyさん2010/12/27(月) 02:14:50ID:???
>>715
君はGAE云々以前の問題だと思う
ホームページのひとつでも自分で作って運営してスキルを積んだ方が良い
0717nobodyさん2010/12/27(月) 03:21:04ID:gZZU6IfS
情報を小出しにして人を振り回す事によりその人を不快にさせる方法を実践で教えてくれてありがとう。
07187042010/12/27(月) 18:04:56ID:mqmK5arb
http://www.google.com/support/a/bin/answer.py?hl=ja&answer=91080

アクセス URL が www のない http://mydomain.co.jp の形式の場合、登録事業者で追加の手順が必要な場合があります。

登録事業者のウェブサイトでアカウントにログインし、ドメインが次の IP アドレスを指すよう A レコードを設定します。

この設定したけど、google印のNOT FOUNDが出ただけだった。
google apps はwwwなしのドメインで登録しちゃってる。
07197042010/12/27(月) 18:10:00ID:mqmK5arb
あ、本文が抜けてた。
wwwなしの運用ってできましたっけ?

>>716
どもすみません。
サイトはいくつか運営してるんですが、正規表現とか苦手で

>>717
結果として迷惑かけただけでしたね。
最初にレスくれた方のおかげでだいたい解決してたんですが
チラ裏みたいなことになって申し訳ないです。
0720nobodyさん2010/12/27(月) 19:33:27ID:???
>>719
できますよ
07217042010/12/27(月) 20:21:21ID:GK7Rnap9
できますか!

できる場合もあるんですね
0722nobodyさん2010/12/27(月) 20:25:08ID:???
うそん?nakid domainてGAE businessで出来るって聞いてたんだけど。wwwつきのにリダイレクトされるとかでなくて?
07237042010/12/27(月) 20:33:11ID:GK7Rnap9
わたしはとりあえずリダイレクトさせてます
0724nobodyさん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:???
pythonSDKをアップグレードしたらモジュールがなんちゃらってエラーが出た
アンインストールして古い方入れたら治ったけど、びびった
0728nobodyさん2010/12/28(火) 23:35:36ID:???
foo=self.request.get('foo')
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 API面白そうだけど、海外ではCPU時間がかかりすぎることが問題になってるね
なんでも、Channelに接続するときにCPU時間が3秒ぐらい、多いときだと10秒ぐらいかかるらしい
マルチキャストもブロードキャストもできないし
0732nobodyさん2010/12/30(木) 13:13:44ID:???
同じIDから作ったトークン渡せばできるっぽいよ
0733nobodyさん2010/12/31(金) 21:22:10ID:???
file = open('example.json')
a = simplejson.load(file)

No JSON object could be decoded

0734nobodyさん2010/12/31(金) 23:31:43ID:???
どんなファイル食わしてもあかんねん
0735 【大吉】 2011/01/01(土) 00:11:58ID:???
JSONって結構縛りあるよ
ちょっとでも外れてるとあうと
0736nobodyさん2011/01/01(土) 01:08:47ID:???
サンプルコードの3行くらいのJSONもアウトでした
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"
}
]
}
0742 【だん吉】 株価【19】 【478円】 2011/01/01(土) 03:49:58ID:???
できました
あいがとう
0743nobodyさん2011/01/01(土) 05:08:38ID:???
できないよ。
外側の配列に名前つけて試して、さらに削ってためしたけどだめです。

たぶん、みなさんの環境ではできちゃってるのかな。
0744nobodyさん2011/01/01(土) 05:53:04ID:???
pythonのJSONモジュールって複数あるからなぁ
0745nobodyさん2011/01/03(月) 20:31:16ID:???
>>741ならうまくいくとおもうけど。
0746nobodyさん2011/01/05(水) 05:55:07ID:???
GAEのurlfetchでログインした外部のサービスから得た認証クッキーを
ユーザーに送ることでユーザー側のjavascriptから直接外部サービスに
アクセスすることってできますか?
0747nobodyさん2011/01/05(水) 06:03:33ID:???
あ、認証情報をセッションに頼らずにhiddenとかに入れて独自に認証すりゃできますよね
でもなんかセキュアじゃないような・・・

ご意見をお願いします。
0748nobodyさん2011/01/05(水) 06:20:32ID:???
>>746
そんなことできるはずねーだろ
0749nobodyさん2011/01/05(水) 13:43:59ID:???
oauthってのが理想に近いのでしょうか?
0750nobodyさん2011/01/05(水) 15:05:44ID:???
>>749
理想が何なのかわからん
0751nobodyさん2011/01/09(日) 11:08:43ID:???
Use the appcfg download_app command to download your application's code. If you do not want any admin to be able to download code, you can permanently prohibit code downloads. New!

ソースダウンロードできるの?
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:b7LWieM1
おまえ豪華な朝食だな
0756nobodyさん2011/01/09(日) 14:23:00ID:???
>>751
これできたっけ?
0757nobodyさん2011/01/09(日) 15:13:04ID:???
しかし、本の内容は糞っぽいよ
目次を見る限り
0758nobodyさん2011/01/09(日) 15:35:39ID:???
確かに…。基本的な部分だけか
まぁ買った人はレビューよろしこ
0759nobodyさん2011/01/10(月) 10:21:50ID:???
application = webapp.WSGIApplication([('/([a-zA-Z0-9]+)/(a-zA-Z0-9)', Main)], debug=True)
run_wsgi_app(application)
こんな感じにマッピングしたときに、Mainに正規表現で拾った値を渡すにはどうしたらいいでしょうか?
0760nobodyさん2011/01/10(月) 11:18:57ID:???
class Main(webapp.RequestHandler):
  def get(self, match1, match2):
0761nobodyさん2011/01/10(月) 11:31:41ID:???
>>760
ありがとうございます
0762nobodyさん2011/01/10(月) 15:41:16ID:???
application = webapp.WSGIApplication([('/(?P<hoge>[a-zA-Z0-9]+)/(?P<fuga>a-zA-Z0-9)', Main)], debug=True)
run_wsgi_app(application)

class Main(webapp.RequestHandler):
  def get(self, **kw):
    kw['hoge']
    kw['fuga']
0763nobodyさん2011/01/11(火) 21:18:58ID:???
ifの分岐でself.response.out.writeしたあと、それ以降の処理はやりたくないとき、
何を使えばいいのでしょうか?
exit()だと出力されずに終わってしまいます
0764nobodyさん2011/01/11(火) 21:31:38ID:???
763
自己解決しました。
0765nobodyさん2011/01/11(火) 21:47:05ID:???
>>764
2ちゃんでは、質問したことを自己解決した場合は
その方法を書くのが礼儀
0766nobodyさん2011/01/11(火) 22:20:18ID:???
>>765
return これでした。
基本ですが忘れてました
0767nobodyさん2011/01/14(金) 23:55:42ID:???
無料の場合、cronの数は制限されていますか?
3つ目がfailedになってて、logにもエラーが記録されてないので原因が特定できず困ってます。
0768nobodyさん2011/01/15(土) 02:20:08ID:???
まずは2つめと3つめを入れ替えてみよう
0769nobodyさん2011/01/15(土) 04:47:47ID:???

2011-01-15 04:43:54 Running command: "[u'D:\\Python\\pythonw.exe', '-u', 'D:\\Program Files\\Google\\
google_appengine\\appcfg.py', '--no_cookies', u'--email=email@my.com', '--passin', 'update', 'G:\\app']"
2011-01-15 04:43:54 (Process exited with code -1073741515)

You can close this window now.

このようなエラーがでてアップロードできないのですが
どういったことが考えられますか?
0770nobodyさん2011/01/15(土) 05:08:46ID:???
GAE側に障害発生中とか
0771nobodyさん2011/01/15(土) 05:57:02ID:???
>>770
ありがとうこざいます
明日またやってみます > <
0772nobodyさん2011/01/17(月) 01:40:56ID:???
ttp://codepad.org/Fef3UIgB
メールにかかれたURLのページをfetchして返信するappを作りましたが
http://ja.wikipedia.org/wiki/%E7%89%B9%E5%88%A5:%E9%95%B7%E3%81%84%E3%83%9A%E3%83%BC%E3%82%B8
などのサイズの大きいページを指定するとエラー↓になります。
The API call mail.Send() required more quota than is available.
一体何のquotaが超えているのでしょうか?

ttp://code.google.com/intl/en/appengine/docs/python/mail/overview.html
を見ると、メールサイズの制限は10MBなので、大丈夫なはずです。
また、このエラーの後でも普通サイズのページを指定すると正常に動作します。
0773nobodyさん2011/01/17(月) 04:00:43ID:???
administratorから出してるか
0774nobodyさん2011/01/17(月) 23:22:32ID:???
出しています
0775nobodyさん2011/01/18(火) 12:56:40ID:???
datastoreのエンティティが更新された履歴って残せますか?
0776nobodyさん2011/01/18(火) 13:46:53ID:???
ログに書き出すか datastore にログ用 entity 作って自分で記録汁
だけど dashboard から更新したらやっぱり記録されない
0777nobodyさん2011/01/18(火) 17:36:02ID:???
了解 bigtableってプロパティレベルで履歴が残るって解説読んだことがあった気がしたけど
datastoreではできないんですね
ありがとうございました
0778nobodyさん2011/01/23(日) 12:57:55ID:???
オライリーの本キタ━━━━(゚∀゚)━━━━!!
0779nobodyさん2011/01/23(日) 19:01:22ID:???
>>772
http://code.google.com/intl/ja/appengine/docs/quotas.html
送信されたメッセージ本文のデータ 340 KB/分
0780nobodyさん2011/01/23(日) 21:22:35ID:/P06sEKg
オライリーの「プログラミング Google App Engine」のサンプルコードってどこにあるの?

本にはここを見ろと書いてあるんだが見つからない
http://www.oreilly.co.jp/books/9784873114750/
0781nobodyさん2011/01/23(日) 22:58:55ID:???
>>780
何ページに書いてある?
俺の予想は海外のオライリーサイトだと思うよ
0782nobodyさん2011/01/24(月) 12:56:51ID:???
pytz使ってる人いませんか?
GAE用に最適化されてるgae-pytzを使おうと思ったんですが
pytz本体のバージョンがpytz 2010oなのにgae-pytzが2010hで更新止まってるんですが
何か問題あったんでしょうか?
0783nobodyさん2011/01/24(月) 21:08:22ID:???
>>778
おらおらおらおらオラオラオラオラオラオラオラオラオラオラオライリー
0784nobodyさん2011/01/26(水) 12:37:51ID:???
>>780
そのページ → 原著のページ → 著者のページ
に行けばサンプルコードがあるよ。
0785nobodyさん2011/01/30(日) 13:22:29ID:???
slim3使ってるんですが、同時にデータ書き込みがあった場合ってどうなるんでしょうか?
エンティティのロックってのがいまいち理解できない・・。
0786nobodyさん2011/01/30(日) 17:10:24ID:???
重複スレができたので、こっちはpython、あっちがjavaということになってる
0787nobodyさん2011/01/30(日) 17:14:54ID:???
>>786
ありがとう
0788nobodyさん2011/01/31(月) 12:55:21ID:???
600件くらいのCSVデータをdatastoreにアップロードしたいのですが、
中にリストプロパティに入れたいデータがあるんです。
http://code.google.com/intl/ja/appengine/docs/python/tools/uploadingdata.html
どうやったらいいんでしょうか?
ヒントだけでもお願いします。
0789nobodyさん2011/02/01(火) 13:23:47ID:???
http://groups.google.com/group/google-app-engine-japan/web/tips-wiki
0790nobodyさん2011/02/05(土) 12:13:19ID:???
>>789
なるほど、そういうことですね。
0791nobodyさん2011/02/05(土) 17:27:35ID:???
{% for %}にジェネレータ渡しちゃいけないんだな
気付けば当たり前だけど嵌ったので書いとく

==*.py==
xs=(1,2,3,4,5)
template_values = {
'xs1': ( x*x for x in xs ),
'xs2': ( x*x for x in xs ),
}

==テンプレ1==
{% for x in xs1 %}
{{x}},
{% endfor %}
{% for x in xs1 %}
{{x}},
{% endfor %}

==テンプレ2==
{% for x in xs1 %}
{{x}},
{% endfor %}
{% for x in xs2 %}
{{x}},
{% endfor %}

テンプレ1 => 1,4,9,16,25,
テンプレ2 => 1,4,9,16,25,1,4,9,16,25
0792sage2011/02/06(日) 09:32:44ID:CTIgjDfj
>>680
同じ症状で色々と試したら、解決しました。
File "D:\app\dev\Python25\lib\os.py", line 430, in __setitem__
putenv(key, item)
このラインを
#putenv(key, item)
のようにコメントアウトしたらおkでした。
次のラインに
self.data[key.upper()] = item
がありますし、__getitem__は、
self.data[key.upper()]
を返しますので、問題ありません。
何処にあるかわかりませんが、putenvにバグがあると思います。というか、むしろ必要性を感じません。
他にPythonの開発してたら、その時は元に戻したほうがいいかもしれません。

ちなみに、os.py:410に、
# Fake unsetenv() for Windows
# not sure about os2 here but
# I'm guessing they are the same.
などというコメントがありますから、いい加減さが目だちます…orz

誰かの参考になれば幸いです。
0793nobodyさん2011/02/06(日) 09:33:51ID:???
うわ、上げてしまった…
スマソ…orz
0794nobodyさん2011/02/06(日) 09:39:36ID:???
しかも、>>696とか…
死にたい…
0795nobodyさん2011/02/06(日) 10:39:03ID:???
>>792

>>680じゃないけど

http://localhost:8088/日本語
アウト
http://localhost:8088/日本語.html
OK
http://localhost:8088/日本語/temp.html
OK
コメントアウトしてもしなくても症状変わりません。
0796nobodyさん2011/02/06(日) 11:33:35ID:???
>>795
GAEサーバー再起動しました?
あと、コールスタックは>>680と同じですか?
コメントアウトしたなら、OSErrorのコールスタックも変わってくるはずです。
0797nobodyさん2011/02/06(日) 13:15:58ID:???
>>796
GAEサーバー再起動したら正常に動作いたしました。
知識不足のせいでお手数をおかけしました。

日本語URLを扱っていてたまたま最後は半角で終わるため
直接は問題は出ていませんでしたが、これですっきりしました。
ありがとうございました。
0798nobodyさん2011/02/06(日) 17:37:55ID:???
GAEでPHPを使う方法がわかりません
モジュールとしてスクリプトを書いていいんですか?
それともCGIのように1行目に実行ファイルへのパスを書くんですか?
0799nobodyさん2011/02/06(日) 17:41:11ID:???
>>798
AmazonEC2なら簡単に使えますよ
0800nobodyさん2011/02/06(日) 17:43:02ID:???
EC2って有料でしょ?有料はいりませんよ?
0801nobodyさん2011/02/06(日) 18:55:40ID:???
つまんないから帰ってくれないか
0802nobodyさん2011/02/06(日) 20:16:57ID:???
質問に対して人をおちょっくって来たほうが悪い
0803nobodyさん2011/02/06(日) 20:22:45ID:???
>>798
http://codezine.jp/article/detail/3948
正直言って、無駄な労力だと思うので、他に行った方がいいと思う。
0804nobodyさん2011/02/06(日) 20:45:26ID:???
pythonでHPって持てるの?ここ
0805nobodyさん2011/02/07(月) 00:02:52ID:???
>>804
http://hp.com/
0806nobodyさん2011/02/07(月) 02:43:34ID:???
著しくレベル低いなw
0807nobodyさん2011/02/07(月) 03:02:24ID:???
GAEは糞
何度でも言うよ
GAEは糞
0808nobodyさん2011/02/07(月) 03:25:00ID:???
どのへんが?
0809nobodyさん2011/02/07(月) 17:39:36ID:qvm2E2Ff
アカウント取得しまくったらBANされたりするかな?
0810nobodyさん2011/02/09(水) 18:15:53ID:???
それは使い方に問題があるだろw
0811nobodyさん2011/02/10(木) 04:11:24ID:J9bT3WK+
混雑してくるとやたら重くなるんだけど、そういうもんなの?自動でスケーリングしてくれるんじゃないの?
0812nobodyさん2011/02/10(木) 10:13:54ID:???
GAEの癖を理解してコードを書かないと性能を発揮できない。
特に書き込み。
0813nobodyさん2011/02/10(木) 11:34:23ID:UzZbws4D
blobstore で保存された画像のURLって静的に保証されたものなんですかね?
datastoreにblobkeyだけ保存して、毎回取り出すために
blob_info = blobstore.BlobInfo.get(blob_key)
self.send_blob(blob_info)
しないといけないんですね?
そのリクエストを受け付けるURLにblob_keyを混ぜるとしたら、〜.jpgみたいなURL作るためには
/blob_key/temp.jpg
みたいなURL書き換えでキーを渡さないといけないんでしょうか?

例えば外部からbolbstore上の画像をダイレクトで参照できるURLってないのかな?

なんか勘違いしてるんですかね?
■ このスレッドは過去ログ倉庫に格納されています