トップページ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
0484nobodyさん2010/06/11(金) 22:42:26ID:???
>>482
いくつきえたの?
0485nobodyさん2010/06/11(金) 22:51:36ID:OxcIBMws
巨神兵状態だな・・・
腐ってやがる
0486nobodyさん2010/06/12(土) 02:54:34ID:???
>>483
ドキュメントに複数プロパティでの並べ替えの例がある。
色々制限があるので、詳しくはドキュメントを参照。
0487nobodyさん2010/06/12(土) 07:03:33ID:???
Togetter - まとめ「データストア障害でエンティティが消えた疑惑」
http://togetter.com/li/24245


確かにぶっとんでる報告あるね
0488nobodyさん2010/06/13(日) 08:41:02ID:5ShZLTyC
ダッシュボードがおかしくなってるのは俺だけ?
0489nobodyさん2010/06/18(金) 16:41:08ID:???
これ見てよ↓
http://livedoor.2.blogimg.jp/agomesu/imgs/4/f/4faec292.png
ばらまこうぜ!
0490nobodyさん2010/06/27(日) 19:44:44ID:LWdgfVKR
なんでもそうだけど、甘く見ると痛い目みるよね
0491nobodyさん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:???
ファイル数増えてるならZIPにするべき
0497名無しさん@そうだ選挙に行こう2010/07/10(土) 14:42:31ID:???
はぁ?
>>495読めよ。
アホかお前?
0498名無しさん@そうだ選挙に行こう2010/07/10(土) 21:14:22ID:???
pgrw
0499名無しさん@そうだ選挙に行こう2010/07/10(土) 22:34:23ID:???
>>498
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:???
データストアのNULLの処理の挙動に互換性がないのが一番アホだと思う
あとインデックスを後から追加とか削除とかしたときも本番で動作変わるし
0504名無しさん@そうだ選挙に行こう2010/07/11(日) 16:43:47ID:???
ワロタw
結構いるよね、ほのめかしはするけど実は答え知らない自称上級者
0505名無しさん@そうだ選挙に行こう2010/07/11(日) 16:47:40ID:???
スレ検索: 上級者
マッチ0件
0506名無しさん@そうだ選挙に行こう2010/07/11(日) 20:30:29ID:???
WPF と GAE にいったいどんな共通点が・・・
0507名無しさん@そうだ選挙に行こう2010/07/11(日) 20:39:10ID:???
誤爆だろw
俺もあっち見てこっち見てたらデジャブったわw
0508nobodyさん2010/07/12(月) 01:34:04ID:???
>>501
はげどう
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あたりに移行しようかなぁ
0512nobodyさん2010/07/12(月) 09:17:13ID:???
>>511
SlicehostはGoogle App Engineの代替にはならないだろ。
0513nobodyさん2010/07/12(月) 10:09:30ID:???
>>512
んなこと言う必要ないぐらい明白だと思うが。

できることで言えば、
GAE ⊂ Django + MySql
だし、そもそもGAEのデータモデリングはDjangoのそれに修正を加えたものだし、
そこまで移行も時間かからんだろ。
0514nobodyさん2010/07/12(月) 10:15:08ID:???
>>513
>そもそもGAEのデータモデリングはDjangoのそれに修正を加えたものだし

この発想はなかったわ(w
0515nobodyさん2010/07/12(月) 13:24:27ID:???
>>514
それは "発想" と言うより、Googleが公言している「事実」なんだけどな。
0516nobodyさん2010/07/12(月) 18:07:15ID:???
pgr w
0517nobodyさん2010/07/12(月) 18:24:30ID:???
GAEのJRubyでRailsが動きました(キリ
0518nobodyさん2010/07/13(火) 12:34:28ID:???
>>517
どんな感じですか。想像するに遅くて使いものにはならないだろうと思うけど、
実際に使った人の感想が聞きたい。
0519nobodyさん2010/07/13(火) 20:44:33ID:???
>>518
重くて使いものになりません
0520nobodyさん2010/07/16(金) 15:30:39ID:???
プロジェクトが遅れに遅れてクライアントから出入り禁止にされます。
0521nobodyさん2010/07/18(日) 09:49:59ID:???
mixiやRTMのように、個人別に表示内容を変えるサービスを構築中です。
[ユーザのメルアド、投稿内容、時間]というエンティティをつくってbigtableに書き込んでいます。
ログインしたメルアドと上記の値を比較して、一致したものを取り出して表示、としていますが、
これってセキュリティ上まずい気もするし、実際動かしてみても重たい…。
こういうことをしたい時はどのような方法を使えばいいのでしょうか?
0522nobodyさん2010/07/18(日) 19:37:11ID:???
>>521
google.appengine.api.users.Userを使うべし
0523nobodyさん2010/07/18(日) 19:41:23ID:???
>>521は単なるアホだと思ったが>>522はもっとアホだったw
0524nobodyさん2010/07/18(日) 23:10:09ID:???
メアドなりIDなりをキーにするしかないんじゃないの
重いのは他に原因があるはず
0525nobodyさん2010/07/18(日) 23:46:59ID:???
>>522
>>524
DataStoreの制限により1回の問い合わせで最大1000件しか取得できないってのが厄介です。。。
こういう時には一般的にどのような手法を用いるのでしょうか?
0526nobodyさん2010/07/19(月) 00:46:34ID:???
>>525
一度に1000件も必要?
もしかしてforとifで1件ずつメールアドレスが一致するか判断してたりする?

ユーザーの識別だけなら、get_current_user()で取得したユーザーオブジェクトの参照をそのままプロパティに入れられるし、
GQLを使うことで、そのユーザーを参照しているエンティティだけの集合を取得できる。
0527nobodyさん2010/07/19(月) 13:35:07ID:???
IndexとKeyも解からんやつがGAEやるな
アクセスログみたく全て記録しているとかアホな設計なんだろ・・・
0528nobodyさん2010/07/19(月) 14:24:24ID:???
>>527もあまり理解できてなさそうな臭いがするのはなんでだろう…
0529nobodyさん2010/07/19(月) 15:03:20ID:???
>>525
524の言うとおりメルアドをキーにして
キーによる取得を行えば1件だけ取り出せるはずだけど
クエリを使う必要自体が無い
0530nobodyさん2010/07/19(月) 16:00:14ID:???
>>521が何をしたいのかよくわからないんだけど、
一人のユーザーに対してエンティティが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
http://code.google.com/intl/ja/appengine/articles/paging.html

これを読んでいるのですが、
「同じ時刻にポストされた投稿をユニークにする」という目的を達成するだけなら、
ユーザごとにシャードしたカウンタを作る必要はなく、
時刻+ユーザ名をmd5化するだけでいいのではないでしょうか?
0534nobodyさん2010/07/21(水) 02:33:40ID:???
いや同一ユーザが1秒以内に投稿した場合は駄目ですね・・
それにしても乱数値をハッシュする文字列に加えればいいだけのような
0535nobodyさん2010/07/23(金) 00:21:02ID:???
django1.1で開発しようと思ってるんだけど、settings.csやら何やら必要最低限になってるプロジェクトの雛形ってどこかに無いかしら?
0536nobodyさん2010/07/23(金) 00:22:55ID:???
血迷って.csにしてしまった…
0537nobodyさん2010/07/23(金) 08:16:55ID:3kgiklkk
いつだったか、1000件の制限が撤廃されたという記事を見た記憶があるのですが
ドキュメントにはまだ1000件制限が書いてますね
あれは夢だったのでしょうか?
0538nobodyさん2010/07/23(金) 12:12:54ID:???
>>532
ngramで自前で検索している人は見かけたな。どの程度使い物になるかわからんけど


しかし、SQLじゃないけど、KVSはKVSで共通のインターフェイスで
動けば既存のライブラリとかつかえいやすいのにねえ・・・
0539nobodyさん2010/07/23(金) 22:49:26ID:o0x58EQA
相変わらず<class 'google.appengine.runtime.DeadlineExceededError'>が起きるなぁ
うちだけ?
0540nobodyさん2010/07/24(土) 01:21:55ID:???
普段軽いのがタイムアウトするって事?
0541nobodyさん2010/07/24(土) 01:34:29ID:wdEoiH3G
うん
トランザクションで起きる
リトライ回数2なのに
0542nobodyさん2010/07/25(日) 09:20:11ID:???
>>537
>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:???
blobstoreとかまったく載ってないもんな
0546nobodyさん2010/07/29(木) 13:37:51ID:Gv9aTwPG
mailserveも載ってないな
0547nobodyさん2010/07/30(金) 11:50:09ID:???
googleは翻訳者を雇ったほうがいいな

あと、ヘルプというか仕様のページがfirefoxで印刷しようとすると上手くいかないのは
うちだけなのだろうか
0548nobodyさん2010/07/30(金) 12:10:47ID:???
>>547
うちも

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の型や性質を明示的に定義することはできないのでしょうか?
たとえばユーザ名をkey_nameにしたい時、
userというプロパティを作ってそれをkeyとして使う、というような書き方ができれば、
後から見た時に分かりやすいと思うのですが、
model定義の中にkey_nameの形式に関する情報がないので、
後から見た時に、どんな情報をkey_nameとして使っていたのか分からなくなりそうです。
0554nobodyさん2010/07/31(土) 14:29:39ID:lZZO3IGo
# key = username
って書くと明示的に宣言できるらしいぞ
0555nobodyさん2010/07/31(土) 20:22:00ID:???
そういえば、日本語ドキュメントではkey_nameは数字から始めてはいけないってあるけど
英語版ではその記述が無くなってるね。
0556nobodyさん2010/08/01(日) 01:17:10ID:???
>>554
RDBMSみたいにスキーマで制約を課せたらいいのですが
それしかないですね・・
0557nobodyさん2010/08/01(日) 02:00:55ID:???
あ、modelにそれ用のメソッド実装したりしたらいいのか・・
0558nobodyさん2010/08/01(日) 04:02:32ID:???
>>555
ホント勘弁してほしいよな
わざわざ"a"+num とかやってたのに
0559nobodyさん2010/08/01(日) 10:52:32ID:???
Googleなのになんで?って思うよな
GAEって結構戦略的なプロダクトじゃないのかと
0560nobodyさん2010/08/02(月) 03:14:08ID:???
全然
0561nobodyさん2010/08/02(月) 11:31:20ID:???
GAEは夢
0562nobodyさん2010/08/02(月) 18:07:32ID:???
GAEは水泡
0563nobodyさん2010/08/03(火) 16:22:49ID:???
GAEは青雲
0564nobodyさん2010/08/05(木) 22:55:51ID:vDU1rk1G
かなり昔にgaeにデプロイしたアプリが
何なのか分からない。
上げたソースって見れなかったっけ?
0565nobodyさん2010/08/06(金) 00:21:22ID:???
おとせないよねw
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:???
GAEならBigTableに入ってるデータのインデックスを持ってるとき
あとからカラム追加してそこがNULL値になってると
開発と本番とでエラー動作が変わったりするな
0569nobodyさん2010/08/07(土) 15:38:02ID:???
>>566
例外をちゃんと見る
ログを見る
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:???
>>570
まず、そのサイト見るのやめた方がいいと思う。
BASIC認証使ったコードを6月28日に公開する時点で問題外。
0572nobodyさん2010/08/11(水) 06:37:23ID:???
http://0-oo.net/sbox/python-box/appengine-twitter
0573nobodyさん2010/08/12(木) 08:41:01ID:???
>>571
うーん…そうですか しかし、検索ワードを加工して発言する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:???
Google appengine の開発用ローカルサーバを
IronPythonで動かした人います?
0575nobodyさん2010/08/14(土) 20:08:45ID:gkT0wk0x
twitterのタイムラインをfetchしたら1MB制限で引っかかりました。
1MBに収まるようにツイートを指定するにはどんな計算をしたらいいですか?
要素が複雑なので難しいです
0576nobodyさん2010/08/16(月) 12:04:45ID:???
ありがとうございました
0577nobodyさん2010/08/16(月) 17:19:43ID:???
何が?
0578nobodyさん2010/08/16(月) 23:02:39ID:???
なんたらguruの人かわいそう
0579nobodyさん2010/08/17(火) 02:10:32ID:???
gu-guruの人?
0580nobodyさん2010/08/17(火) 02:27:19ID:???
ライフスペースのグルじゃね?
0581nobodyさん2010/08/17(火) 22:45:24ID:???
お腹がguruguru
0582nobodyさん2010/08/18(水) 03:38:49ID:???
いま >>581 がいいこと言ったぞ!
0583nobodyさん2010/08/18(水) 05:41:01ID:???
かわいそう過ぎる。。。
■ このスレッドは過去ログ倉庫に格納されています