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
0485nobodyさん
2010/06/11(金) 22:51:36ID:OxcIBMws腐ってやがる
0487nobodyさん
2010/06/12(土) 07:03:33ID:???http://togetter.com/li/24245
確かにぶっとんでる報告あるね
0488nobodyさん
2010/06/13(日) 08:41:02ID:5ShZLTyC0489nobodyさん
2010/06/18(金) 16:41:08ID:???http://livedoor.2.blogimg.jp/agomesu/imgs/4/f/4faec292.png
ばらまこうぜ!
0490nobodyさん
2010/06/27(日) 19:44:44ID:LWdgfVKR0491nobodyさん
2010/07/07(水) 22:46:48ID:???0492nobodyさん
2010/07/08(木) 09:01:30ID:???0493nobodyさん
2010/07/08(木) 09:05:42ID:???0494nobodyさん
2010/07/08(木) 09:27:28ID:???Bigtableの不安定さは困るけど
Googleのいつもの過渡期の状況だと思うし
最悪データの不整合が起きてもダメージの少ない
断片データばっかりのサービスだから気にしてない
本業が忙しすぎて全然進まないのが悩み
0495名無しさん@そうだ選挙に行こう
2010/07/10(土) 11:24:46ID:???ローカルとリモートじゃかなり動作が違ってくるし。
あと、1つのファイルを修正して、Deployするのに3分かかるってどういうことだ?
Deploying new version.
Checking if new version is ready to serve.
Will check again in 1 seconds.
Checking if new version is ready to serve.
Will check again in 2 seconds.
Checking if new version is ready to serve.
Will check again in 4 seconds.
Checking if new version is ready to serve.
Will check again in 8 seconds.
Checking if new version is ready to serve.
Will check again in 16 seconds.
Checking if new version is ready to serve.
Will check again in 32 seconds.
Checking if new version is ready to serve.
Will check again in 60 seconds.
Checking if new version is ready to serve.
Will check again in 60 seconds.
Checking if new version is ready to serve.
Googleってこんな糞な会社だったっけ?
0496名無しさん@そうだ選挙に行こう
2010/07/10(土) 14:12:06ID:???0497名無しさん@そうだ選挙に行こう
2010/07/10(土) 14:42:31ID:???>>495読めよ。
アホかお前?
0498名無しさん@そうだ選挙に行こう
2010/07/10(土) 21:14:22ID:???0499名無しさん@そうだ選挙に行こう
2010/07/10(土) 22:34:23ID:???dopyupyupyupyu
0500名無しさん@そうだ選挙に行こう
2010/07/11(日) 08:52:51ID:???単体テストしてりゃそこまで気にならんと思うレベル
ちなみにうちはDeployには5分以上かかりやがるw
0501名無しさん@そうだ選挙に行こう
2010/07/11(日) 09:13:02ID:???データストアの内容も違うし、モデルもとシンクされん
何か入れないと反映されんからな
意味の成さない糞アプリなら気にならんレベルかもしれんが、
それ以上のことをやろうとすると挙動がかなり変わってくる
GAEを使った人気アプリがないのはその辺の理由が大いに絡んできているんだろう
0502名無しさん@そうだ選挙に行こう
2010/07/11(日) 13:41:20ID:???0503名無しさん@そうだ選挙に行こう
2010/07/11(日) 15:05:01ID:???あとインデックスを後から追加とか削除とかしたときも本番で動作変わるし
0504名無しさん@そうだ選挙に行こう
2010/07/11(日) 16:43:47ID:???結構いるよね、ほのめかしはするけど実は答え知らない自称上級者
0505名無しさん@そうだ選挙に行こう
2010/07/11(日) 16:47:40ID:???マッチ0件
0506名無しさん@そうだ選挙に行こう
2010/07/11(日) 20:30:29ID:???0507名無しさん@そうだ選挙に行こう
2010/07/11(日) 20:39:10ID:???俺もあっち見てこっち見てたらデジャブったわw
0509nobodyさん
2010/07/12(月) 06:06:04ID:???開発ストレス貯まりまくりでワロタよw
いろんな部分で非効率的だよね。
俺はGAE環境での開発が結構進んでたんだけど、
今後の事を考えて、早目にレンタルサーバーに
以降することにしたよ。
アマゾンのクラウドにするかslicehostにするか迷ってるとこ。
0510nobodyさん
2010/07/12(月) 07:51:56ID:???を地で逝ってる
0511nobodyさん
2010/07/12(月) 09:07:39ID:kdNT9nFj俺もSlicehostあたりに移行しようかなぁ
0513nobodyさん
2010/07/12(月) 10:09:30ID:???んなこと言う必要ないぐらい明白だと思うが。
できることで言えば、
GAE ⊂ Django + MySql
だし、そもそもGAEのデータモデリングはDjangoのそれに修正を加えたものだし、
そこまで移行も時間かからんだろ。
0516nobodyさん
2010/07/12(月) 18:07:15ID:???0517nobodyさん
2010/07/12(月) 18:24:30ID:???0518nobodyさん
2010/07/13(火) 12:34:28ID:???どんな感じですか。想像するに遅くて使いものにはならないだろうと思うけど、
実際に使った人の感想が聞きたい。
0520nobodyさん
2010/07/16(金) 15:30:39ID:???0521nobodyさん
2010/07/18(日) 09:49:59ID:???[ユーザのメルアド、投稿内容、時間]というエンティティをつくってbigtableに書き込んでいます。
ログインしたメルアドと上記の値を比較して、一致したものを取り出して表示、としていますが、
これってセキュリティ上まずい気もするし、実際動かしてみても重たい…。
こういうことをしたい時はどのような方法を使えばいいのでしょうか?
0524nobodyさん
2010/07/18(日) 23:10:09ID:???重いのは他に原因があるはず
0525nobodyさん
2010/07/18(日) 23:46:59ID:???>>524
DataStoreの制限により1回の問い合わせで最大1000件しか取得できないってのが厄介です。。。
こういう時には一般的にどのような手法を用いるのでしょうか?
0526nobodyさん
2010/07/19(月) 00:46:34ID:???一度に1000件も必要?
もしかしてforとifで1件ずつメールアドレスが一致するか判断してたりする?
ユーザーの識別だけなら、get_current_user()で取得したユーザーオブジェクトの参照をそのままプロパティに入れられるし、
GQLを使うことで、そのユーザーを参照しているエンティティだけの集合を取得できる。
0527nobodyさん
2010/07/19(月) 13:35:07ID:???アクセスログみたく全て記録しているとかアホな設計なんだろ・・・
0529nobodyさん
2010/07/19(月) 15:03:20ID:???524の言うとおりメルアドをキーにして
キーによる取得を行えば1件だけ取り出せるはずだけど
クエリを使う必要自体が無い
0530nobodyさん
2010/07/19(月) 16:00:14ID:???一人のユーザーに対してエンティティが1つしか存在し得ないのか、
一人のユーザーに対して複数のデータがあるのかで、
最適解が変わってくるよ。
0531nobodyさん
2010/07/19(月) 20:46:06ID:???一人のユーザーが1000件以上投稿してるってことなら、
http://code.google.com/intl/ja/appengine/articles/paging.html
これが参考になると思うけど、たぶんもっと初歩的なことっぽいよね
比較してとかいってるしクエリすら使ってないのかも
0532nobodyさん
2010/07/20(火) 23:28:42ID:???抜け道ないの?ここまで実装したのに・・・。
0533nobodyさん
2010/07/21(水) 02:24:32ID:SCc+40Nzこれを読んでいるのですが、
「同じ時刻にポストされた投稿をユニークにする」という目的を達成するだけなら、
ユーザごとにシャードしたカウンタを作る必要はなく、
時刻+ユーザ名をmd5化するだけでいいのではないでしょうか?
0534nobodyさん
2010/07/21(水) 02:33:40ID:???それにしても乱数値をハッシュする文字列に加えればいいだけのような
0535nobodyさん
2010/07/23(金) 00:21:02ID:???0536nobodyさん
2010/07/23(金) 00:22:55ID:???0537nobodyさん
2010/07/23(金) 08:16:55ID:3kgiklkkドキュメントにはまだ1000件制限が書いてますね
あれは夢だったのでしょうか?
0538nobodyさん
2010/07/23(金) 12:12:54ID:???ngramで自前で検索している人は見かけたな。どの程度使い物になるかわからんけど
しかし、SQLじゃないけど、KVSはKVSで共通のインターフェイスで
動けば既存のライブラリとかつかえいやすいのにねえ・・・
0539nobodyさん
2010/07/23(金) 22:49:26ID:o0x58EQAうちだけ?
0540nobodyさん
2010/07/24(土) 01:21:55ID:???0541nobodyさん
2010/07/24(土) 01:34:29ID:wdEoiH3Gトランザクションで起きる
リトライ回数2なのに
0542nobodyさん
2010/07/25(日) 09:20:11ID:???>offset must be less than 1,000. (limit does not have a maximum.)
fetch()のlimitに上限ないとはっきり書いてあるけど?
count()は相変わらず1000件が上限。
0543nobodyさん
2010/07/26(月) 23:57:20ID:???0544nobodyさん
2010/07/27(火) 00:03:52ID:???古いということを分かりやすくして欲しい
0545nobodyさん
2010/07/29(木) 03:04:35ID:???0546nobodyさん
2010/07/29(木) 13:37:51ID:Gv9aTwPG0547nobodyさん
2010/07/30(金) 11:50:09ID:???あと、ヘルプというか仕様のページがfirefoxで印刷しようとすると上手くいかないのは
うちだけなのだろうか
0548nobodyさん
2010/07/30(金) 12:10:47ID:???うちも
Googleのいつもからして
この手のドキュメントに翻訳者雇って
ってのは無い気がする
素直に英文読むべきなんだろね
0549nobodyさん
2010/07/30(金) 12:34:47ID:???今のままでは古い情報を信じる人が多数。
GAEのドキュメントってどっかでバージョン管理されてないのかな。
いやされてるだろうけど、リポジトリを公開してほしい。翻訳も含めて。
0550nobodyさん
2010/07/30(金) 17:54:39ID:???0551nobodyさん
2010/07/30(金) 19:22:08ID:???プログラミング系の翻訳したことがない人がやったのではないかと思う。
>The datastore reserves all property names that begin and end with two underscores (__*__).
の訳が
>データストアは 2 つのアンダースコアで始まり、終わる(__*__)すべてのプロパティ名を保存します。
で、最初は意味が分からなかった。
reserveをことごとく保存って訳してるから、原文のsaveとreserveのどっちのことなのか混乱する。
0552nobodyさん
2010/07/30(金) 19:30:13ID:???0553nobodyさん
2010/07/31(土) 14:19:53ID:rYzrW/xeたとえばユーザ名をkey_nameにしたい時、
userというプロパティを作ってそれをkeyとして使う、というような書き方ができれば、
後から見た時に分かりやすいと思うのですが、
model定義の中にkey_nameの形式に関する情報がないので、
後から見た時に、どんな情報をkey_nameとして使っていたのか分からなくなりそうです。
0554nobodyさん
2010/07/31(土) 14:29:39ID:lZZO3IGoって書くと明示的に宣言できるらしいぞ
0555nobodyさん
2010/07/31(土) 20:22:00ID:???英語版ではその記述が無くなってるね。
0557nobodyさん
2010/08/01(日) 02:00:55ID:???0559nobodyさん
2010/08/01(日) 10:52:32ID:???GAEって結構戦略的なプロダクトじゃないのかと
0560nobodyさん
2010/08/02(月) 03:14:08ID:???0561nobodyさん
2010/08/02(月) 11:31:20ID:???0562nobodyさん
2010/08/02(月) 18:07:32ID:???0563nobodyさん
2010/08/03(火) 16:22:49ID:???0564nobodyさん
2010/08/05(木) 22:55:51ID:vDU1rk1G何なのか分からない。
上げたソースって見れなかったっけ?
0565nobodyさん
2010/08/06(金) 00:21:22ID:???0566nobodyさん
2010/08/07(土) 14:15:48ID:Eg7K0i+uこういう厄介なエラーのデバッグどうやりますか?
言語はpythonです
0567nobodyさん
2010/08/07(土) 15:29:45ID:???# -*- coding: hogehoge -*-
書くの忘れてるとか
0568nobodyさん
2010/08/07(土) 15:31:51ID:???あとからカラム追加してそこがNULL値になってると
開発と本番とでエラー動作が変わったりするな
0570nobodyさん
2010/08/11(水) 05:05:51ID:???くだすれに相当するスレが無さそうだったのでお願いします。
このアドレスの、
http://yasu1987.blogspot.com/2010/06/simple-twitter-bot-on-google-app-engine.html
32行目、
status = api.GetUserTimeline()
の処理を(というか全部ですが)Oauthに変えたいのですが、
http://blog.mudaimemo.com/2010/03/google-app-engine-twitteroauth.html
のmain.py のclient.make_request以下を
timeline= client.make_request('http://twitter.com/statuses/user_timeline.json',
token=TWITTER_ACCESS_TOKEN,
secret=TWITTER_ACCESS_TOKEN_SECRET,
protected=True,
method='GET')
と書き換えるのではダメでした。他の言語を扱ったことはあるのですが、
web系の言語は全くなく、かなり断片的に調べてやっているので
全く見当はずれなことをしているかもと思うのですが、よろしければ
どのように書き換えれば上のような事が出来るか教えて頂けないでしょうか。
最終的にしたいのは最初のコードを全てOauthに対応させることなのですが、
参考になるドキュメント、あるいはもっと簡単な方法があれば教えて頂ければ幸いです。
0571nobodyさん
2010/08/11(水) 05:32:07ID:???まず、そのサイト見るのやめた方がいいと思う。
BASIC認証使ったコードを6月28日に公開する時点で問題外。
0572nobodyさん
2010/08/11(水) 06:37:23ID:???0573nobodyさん
2010/08/12(木) 08:41:01ID:???うーん…そうですか しかし、検索ワードを加工して発言するbotを
作りたいので雛形としてはかなり使いやすいのです。
とりあえずこれをOauthに直す方向で行ってみたいと思います。
>>572
なるほど、元々Oauthが使えるんですね。
やってみます。
ところで、上のコードでusertimelineの取得にだけtwitter.Apiを
使ってあるのは何故なんでしょうか。ここの書き換え方がよく分からないのですが、
当てずっぽうで
status = api.GetUserTimeline()
↓
status = AppEngineTwitter.user_timeline()
もしくは
status = AppEngineTwitter.Get('http://twitter.com/statuses/user_timeline')
あたりをやってみたんですが、違ったようです。どうやって書けばよいか、
また、後学のためにソースのどのあたりに注目すればよいか教えて頂けると幸いです。
よろしくお願いします。
0574nobodyさん
2010/08/14(土) 14:24:40ID:???IronPythonで動かした人います?
0575nobodyさん
2010/08/14(土) 20:08:45ID:gkT0wk0x1MBに収まるようにツイートを指定するにはどんな計算をしたらいいですか?
要素が複雑なので難しいです
0576nobodyさん
2010/08/16(月) 12:04:45ID:???0577nobodyさん
2010/08/16(月) 17:19:43ID:???0578nobodyさん
2010/08/16(月) 23:02:39ID:???0579nobodyさん
2010/08/17(火) 02:10:32ID:???0580nobodyさん
2010/08/17(火) 02:27:19ID:???0581nobodyさん
2010/08/17(火) 22:45:24ID:???0583nobodyさん
2010/08/18(水) 05:41:01ID:???■ このスレッドは過去ログ倉庫に格納されています