Google App Engine for Python 6アプ目
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2013/01/19(土) 13:49:13.57ID:???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/
Google AppEngine 3アプ目
http://hibari.2ch.net/test/read.cgi/php/1267057923/
Google App Engine 3アプ目 (実質4)
http://kohada.2ch.net/test/read.cgi/php/1267094290/
Google App Engine for Python 4アプ目 (実質5)
http://kohada.2ch.net/test/read.cgi/php/1302598469/
■リンク集
はてなブックマーク
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
0016nobodyさん
2013/01/21(月) 11:55:41.04ID:???01.Google App Engine 最近の動向
http://ameblo.jp/cabeat-e/entry-11394475313.html
03.Google App Engineで独自ドメイン&SSL(1/2)
http://ameblo.jp/cabeat-e/entry-11395844646.html
06.Google App Engineのデータストア バックアップとリストア
http://ameblo.jp/cabeat-e/entry-11396018265.html
「作ればわかる! Google App Engine for Java プログラミング」本をPythonで書いてみる (1)
http://d.hatena.ne.jp/thinkAmi/20120819/1345357405
Google App EngineのTwitter BotをFlaskとTweepyで作る
http://d.hatena.ne.jp/emergent/20120422/1335076686
Google App EngineのdatastoreをMaster/SlaveからHRDに変更するには?という記事を書こうと思ったんですが…
http://d.hatena.ne.jp/furyu-tei/20120909/1347130062
こんなとこかな
フレームワークの紹介とか要る?
0017nobodyさん
2013/01/21(月) 12:40:14.83ID:???001816
2013/01/21(月) 13:09:38.21ID:???古い情報を元に始めると損する場合が結構あるから
まずこの記事ぐらいはざっと眺めた方が良い
01.Google App Engine 最近の動向|CA Beat エンジニアのブログ
http://ameblo.jp/cabeat-e/entry-11394475313.html
無料で使える!ってだけで群がった当初の情報だと
Hello World程度の浅い紹介とかしか無いけど
アプリケーションやサービスにどう適用するのかが本題
色々揃ってきてようやくライブラリやノウハウも出てきた
HRDの理解とDatastoreのバックアップ・リストア
Warmup等含めたインスタンスの管理
極力Queryを減らすKey志向の設計
memcache, Frontend Cacheによるキャッシュコントロール
辺りは押さえとくべき
NDBは使いやすいし自然とキー志向になるし
自動キャッシュがとてもありがたく
DBで微妙だったプロパティとか整理されてるんでおすすめ
001916
2013/01/21(月) 13:13:50.09ID:???StructuredProperty, JsonProperty, PicklePropertyとか
楽できるプロパティが嬉しい
Searchは今後Appengineで欠かせないサービスになる
早めにインデックスやドキュメントの管理と
使いどころを把握しとくと良い
まだ価格が公開されてない上日本語対応は微妙だけど
DatastoreのQueryで困るケースが色々解決できる
Geo検索もできるし
0020nobodyさん
2013/01/21(月) 13:31:13.49ID:Ez5Yieb20021nobodyさん
2013/01/21(月) 17:00:25.72ID:???0022nobodyさん
2013/01/21(月) 18:11:30.65ID:???https://groups.google.com/forum/?fromgroups=#!topic/google-app-engine-japan/dYItmifWmwA
ここにあるみたいにUAが問題かもよ
0023nobodyさん
2013/01/21(月) 18:57:03.79ID:???mobile adsense使えないとマネタイズ成り立たないサービスには使えないじゃないか…
0024nobodyさん
2013/01/21(月) 19:07:48.94ID:???「独自ドメインじゃないとカウントされない」
とあったが本当かね?
appspot.comはgoogle管理だからカウント除外されるのか
(売上に含めちゃったら面倒だから?)
0025nobodyさん
2013/01/21(月) 19:08:58.13ID:???0026nobodyさん
2013/01/22(火) 11:20:44.44ID:B0nURCWoこのスレには分かる人いないのか
0027nobodyさん
2013/01/22(火) 11:31:33.62ID:???君が全力で調べてその調査結果を是非世に公表してくれたまえ
0028nobodyさん
2013/01/22(火) 11:41:53.35ID:B0nURCWoスレッドセーフなプログラムになってないと
事故が起こるかもよ?っぽいんだけど
どうやったらスレッドセーフにできるのかとか
どういう時どういう書き方したらいいのかとか
探したんだけどさっぱりわからん
0029nobodyさん
2013/01/22(火) 15:04:50.63ID:???0030nobodyさん
2013/01/22(火) 15:46:25.12ID:???調べている人自体が少ないのだろう
◯◯を調べたけど◯◯がわからない、的な情報でもいいから
誰かがどこかにblogか何かで書いていくしかないね
0031nobodyさん
2013/01/23(水) 04:04:12.77ID:???linux関係でググるといまだに古い資料が出てきちゃう現象
0032nobodyさん
2013/01/23(水) 10:44:20.92ID:???・マルチスレッドプログラミングでの最大の問題点は
スレッド間で誤って同じデータを触ってしまうこと
・Pythonはそもそもグローバルインタープリタロック(GIL)という仕組みで
インタプリタでは同時に複数のスレッドが動かない
・GAEのThreadsafeはインスタンスを有効活用するためのもの
(単一のインスタンスで複数のリクエストを捌ける?)
・わけがわからん
GILがあるから原則スレッドセーフというかマルチスレッドできない??
2.7環境だとGILが無くなった??
それともThreadingモジュールを使う場合だけ関係ある話??
たすけて
0033nobodyさん
2013/01/23(水) 14:06:23.26ID:LxbWzKRZPythonを利用してWebサイトを作りたいと思っています
必要なツールや知識は何がありますか?
Python、GAE、HTML←この3つの知識があれば作れますか?
足りない知識やツールなどがあれば教えて下さい
0034nobodyさん
2013/01/23(水) 14:24:13.41ID:???HTML5
CSS3
SassとCompass(Scout)
jQuery
CofeeScript
バックエンド向けキーワード:
python2.7
webapp2
flask
その他(バージョン管理):
Mercurial または Git
0035nobodyさん
2013/01/23(水) 14:37:32.98ID:LxbWzKRZクライアント向けって書いても良かったんじゃないかと
0036nobodyさん
2013/01/23(水) 15:56:37.21ID:???TypeScript
WebGL
backbone.js
node.js
バックエンド向けキーワード: 追加
node.js
wsgi
django
werkzeug
0037nobodyさん
2013/01/23(水) 16:52:56.59ID:LxbWzKRZ全て習得済みでした・・・
0038nobodyさん
2013/01/23(水) 17:13:58.87ID:shCR0fI30039nobodyさん
2013/01/24(木) 20:03:07.12ID:T/pnfIUt0040nobodyさん
2013/01/24(木) 20:10:56.87ID:???Quotaとかも用意されてない力技じゃなかったっけ?
0041nobodyさん
2013/01/24(木) 20:18:38.39ID:???それともbackendsとして?
0042nobodyさん
2013/01/25(金) 09:57:59.49ID:mBZPWIR9それ以外に当然Datastoreやその他の割り当ても使う
0043nobodyさん
2013/01/27(日) 23:49:10.41ID:???上げようとしたらアプリ固有のパスワード入れろって怒られて、そんなん設定したっけ?と思ったが、二段階認証のほうのアレねw
紛らわしい名前w
あ、もし公式以外で良さげなサンプル集サイト知ってたら教えて下さい。
0044nobodyさん
2013/01/28(月) 11:18:46.39ID:FBfOV1KRとりあえずgithubが鉄板
https://github.com/search?l=Python&p=1&q=appengine&ref=commandbar
https://github.com/search/advanced
からだったらスター数とかfork数で絞れるし
どのサンプルにせよ古いコードはフレームワーク周りが鬼門
ndb使ってるなら比較的最近だから判断材料になるね
ndb使ってるプロジェクトはリポジトリ検索だと探しにくいから
コード検索で"appengine ndb"とかやると良いよ
0045nobodyさん
2013/01/28(月) 14:14:36.64ID:???ああ、なるほど!そこでのgithubなのか
名前は見かけるけど、プログラミング自体初心でgithub使ったこともなく、頭がそこまで回りませんでした
gae sampleとかで検索しても良いの出ないんで、普通はどうしてるのだろうと思ったら、そういうサイトを活用してるんですね!
仕様も結構変わってるみたいですもんねえ
色々と為になる助言ありがとうございます。
0046nobodyさん
2013/01/28(月) 20:08:59.02ID:???datastoreに記録されるの・・・・?
0047nobodyさん
2013/01/30(水) 12:47:10.50ID:???インデックスのみでクエリ行けるようにすべきなのか
なるべくインデックス作らずkey -> memcacheにすべきなのか
答えは無いだろうけど方針とかある?
0048nobodyさん
2013/01/31(木) 12:04:59.41ID:fFNHcJ57ndb使ってるとkeyonlyからget_multi()で引っ張れば
キャッシュが自動で効いて手軽だし
0049nobodyさん
2013/02/01(金) 13:01:16.52ID:???リハーサルとかできますか?
ツールを使うと問答無用で移行してしまいますか?
ツールで移行したデータを削除して
最初からやり直すことはできますか?
0050nobodyさん
2013/02/03(日) 09:01:45.80ID:???0051nobodyさん
2013/02/03(日) 13:34:10.49ID:???0052nobodyさん
2013/02/04(月) 08:52:16.37ID:FzpmjJ5gNotificatonなり任意の接続もその内できそうだけどね
0053nobodyさん
2013/02/04(月) 17:10:39.89ID:???ろくに英語も読めないのにクレーム風の物言いとか凄い感覚だわ
0054nobodyさん
2013/02/06(水) 17:27:50.06ID:???課金は1週間ごとですよね?
メールの100通制限は最初の支払いが終われば解除されるとあるけど
1. 最初の支払いって課金有効にしてから一週間目?
2. もしその1週間の間に無料枠超過しなかったら支払い発生しないからずっと100通制限?
という二点がきになってます
というのもサービスを公開すると絶対に100通でおさまるわけがないし
メール配信以外では負荷がすくないのでテスト段階では無料枠に収まってるので
毎月最低$9は取られるはずだけどこれは月末まで待たないとダメ→メールの制限は月末までとれないだとマジ困るし
なにがなんだかもう
0055nobodyさん
2013/02/06(水) 19:23:04.47ID:???2.は超過云々じゃなく課金有効後一定時間経過だったはず
> Note: it may take 15-20 minutes for resource allocation changes to take effect.
そもそも毎月$9じゃなく毎週$2.1だよ
課金有効にした時点で毎週取られる
あくまで全部多分の話
金が絡むことをこんな場所できいちゃだめ
公式フォーラム行きなさいな
0056nobodyさん
2013/02/06(水) 19:25:49.31ID:???0057nobodyさん
2013/02/06(水) 20:45:29.23ID:???ありがとう
> Note: it may take 15-20 minutes for resource allocation changes to take effect.
は多分認証中ステータス?のことだと思う
https://developers.google.com/appengine/docs/quotas#Mail
ここに「100 messages daily until first charge cleared」ってあるから最初の引き落としだと思ったんだ
今5日たってるけどまだなので2日まってみる
あまりかかるようなら公式で聞いてみます
0058nobodyさん
2013/02/12(火) 20:18:44.12ID:C70uKqkZappengine ja night #23 #ajn23 に行ってきました - @thorikiriのてょりっき
http://d.hatena.ne.jp/t-horikiri/20130123/1358958603
appengine ja night #23 が終わりました - スティルハウスの書庫
http://d.hatena.ne.jp/kazunori_279/20130209/1360394339
Blog @vierjp : Google App Engineパターン (appengine ja night #23)
http://blog.vier.jp/2013/02/google-app-engine-appengine-ja-night-23.html
老人Zの毎日更新ブログ Google App Engine Billing Migration Notice
http://peracola.blog90.fc2.com/blog-entry-1655.html
採用事例:ソーシャルイントロクイズ 『SongPop』
http://gae-p.blogspot.jp/2013/02/songpop.html
Google App Engineでデータストアに保存したエンティティーのキーを取得する方法 | Tech Booster
http://techbooster.org/gae/15069/#more-15069
今日のPython: Google App Engine のアップロードを2段階認証プロセスに対応させる
http://blog1.erp2py.com/2012/02/google-app-engine-2.html
0059nobodyさん
2013/02/12(火) 21:08:44.34ID:???0060nobodyさん
2013/02/12(火) 23:29:54.27ID:???offsetの事とか全然知らなかった
危ない危ない
その他の事はちょっと難しすぎて手に負えない感じだなあ
0061nobodyさん
2013/02/13(水) 00:08:46.72ID:???cursor使うと
|< |<< [1][2][3][4][5]…..[20][21][22] >>| >|
こういう飛ばし飛ばしページング出来ないのがね
まぁ自分の経験上、ページングみるときに飛ばしながら見ることはないので
「次へ」と「戻る」だけでナビゲーションは事足りるんだけどね
0062nobodyさん
2013/02/13(水) 01:14:29.98ID:???アンチパターンだの書いてあったが限定的すぎるわ
0063nobodyさん
2013/02/13(水) 01:30:36.33ID:???大量のデータのページングが行えないのか
どっちつかずだ
0064nobodyさん
2013/02/13(水) 10:25:37.71ID:???件数やページ指定必須のページングしたいなら
offsetでコスト高
TwitterやFacebookみたいに順次次のページが得られれば良いなら
cursor使ってコスト低
cursorがまだ無い頃に紹介されてた独自のcursor的設計とか
offsetとcursorを上手く組み合わせれば
もうちょっとバランスよくなるかも知れんが
結局使える範囲が狭くなるな
0065nobodyさん
2013/02/14(木) 12:50:13.73ID:???しょぼいやん
0066nobodyさん
2013/02/14(木) 23:53:01.40ID:UFQyynMf0067nobodyさん
2013/02/15(金) 02:31:31.12ID:???自分で実装すればいいじゃん
適当な形態素解析ライブラリで検索対象の文章を分かち書きして
それをリストプロパティにぶっ込んでデータストアに保存(Create)
検索時(Read)は検索クエリを同様に形態素解析ライブラリで分かち書き
複数個の単語が帰ってくるから、それを元にリストプロパティから等価クエリ(=)で引っ張ってきてKeyリストを取得
得られたKeyリスト(複数)をAnd集合演算、最終結果のKeyリストをもとに
データストアから実態を取得でおk
Javaのほうだと実際にこれをやってる人何人かいる
0068nobodyさん
2013/02/15(金) 10:04:33.91ID:???サーバ側でコードをあまり書かずに
クライアント側で結構完結できてしまう
ということなのかな?
0069nobodyさん
2013/02/15(金) 14:08:39.60ID:???全文検索の独自実装なんてとっくにやっとるのよ
それが高コストすぎるからSearch APIに期待してるわけで
Datastoreでアホみたいな高コスト要因になるクエリも
Searchなら多分そんなややこしいもんじゃない筈だしね
>>68
Endpointsはスマホアプリとかのバックエンドを
最低限のコードで実現できる仕組みだな
テスト版がJavaしかなくて残念だったけど
Pythonも対応したのでその内評価してみるわ
0070nobodyさん
2013/02/15(金) 15:54:54.87ID:???以下の様な MyModel があったとします。
class MyModel(ndb.Model):
message = StringProperty()
date = ndb.DateTimeProperty(auto_now_add=True)
MyModel.message には None 状態のデータが入る事があり、
message 内文字列が存在する MyModel を取得するために
以下の様な記述を行なっています。
q = Model.query(Model.message > None)
ここで、更に MyModel にデータが登録された日付で検索を行う条件を加えたい所ですが
不等号による検索を行なっているため
date での order は不可状態。
よって、message を登録する際は文頭に 日付の時間を必ず追加するようにしています。
これで解決できてはいるのですが、もっとスマートな方法はないでしょうか。
0071nobodyさん
2013/02/15(金) 16:26:51.64ID:???booleanのnone_flagを新設
文字列がNoneだったらCreateやUpdate時にTrueを入れる
デフォルトはFalse
None以外のエンティティを取得したい時は
none_flag=Falseと日付orderを使う
0073nobodyさん
2013/02/15(金) 18:39:04.54ID:???ずっとPHPでCakePHP使ってきたんだけど
PythonというかGAEではコマンドでひながた作ったり
モデルデータを自動で作ってくれるフレームワークってないの?
0074nobodyさん
2013/02/15(金) 18:54:29.69ID:???デプロイもワンクリック
ぶっちゃけCUIでダラダラコマンド入力するよりこっちのほうが楽でしょ
モデルデータは知らん
0075nobodyさん
2013/02/17(日) 21:39:56.97ID:???全然標準でいける。
0076nobodyさん
2013/02/17(日) 21:42:19.18ID:???前スレみれないからわからんわ。
0078nobodyさん
2013/02/18(月) 02:00:37.11ID:???webappだな。
生産性はビューまわりは悪いな、やっぱ。
作るものによっては、ビューエンジンだけ、Djangoのとか使ったほうがいいかもな。
他は変なストレスがなくてよい。
データストアとかは、変にラップされたもの使うより、自分で実装したほうが精神衛生上よいし、
認証周りも、フレームワークで用意してくれてるごっついもの使うより、自分で1から実装したほうが、
フレームワーク独特の仕様でイライラするようなことはないな。
まぁGAEにかぎったことじゃないがな。webappはシンプルでいいよ。
0079nobodyさん
2013/02/18(月) 10:28:08.12ID:???どうやったらスレッドセーフなものが書けるの?
みたいな話だったと思う
俺の理解はこのスレの >>32 と変わんないから
もし知ってるならなんかヒントだけでもほしいよ
>>78
俺も同意
素直だけどGAE前提だから扱いやすいね
webappは2の方がいろいろ楽になってるから
英語しかないけど2使ったほうがいいな
0080nobodyさん
2013/02/18(月) 16:59:48.99ID:5q8/651I0081nobodyさん
2013/02/20(水) 23:01:15.15ID:???db.delete(k)
みたいにフェッチしないで削除したほうが、よけいなREAD発生せずにすむのかね?
0084nobodyさん
2013/02/22(金) 22:23:25.92ID:???http://tr.im/zw5y
ソースはこれ
0085nobodyさん
2013/02/27(水) 13:03:32.96ID:???年月日時間、別々で持った方がいいかなぁ。まぁじっくり設計して考えろって話だが。
0086nobodyさん
2013/02/27(水) 14:10:08.76ID:???できない場合
dateを数値に変換したものを別に持たせとけば良さそう
0088nobodyさん
2013/02/27(水) 18:46:55.44ID:???あぁ別で持つって手もあるのか。
なんか気づいたら報告する。
>>87
�d
ほぅ。例えば日数だけで検索したい場合は、stringとかで持ってたほうが早いってことかな。
0089(;D)笑男 ◆LeBIz0ZWfs
2013/03/01(金) 10:21:37.15ID:???これを安全というか危険というか
今の放射能の議論は扱ってる数字は同じなので解釈問題になってしまってる
0090(;D)笑男 ◆LeBIz0ZWfs
2013/03/01(金) 10:22:17.55ID:???0091nobodyさん
2013/03/01(金) 11:12:42.95ID:???0092nobodyさん
2013/03/01(金) 18:20:33.13ID:???dat2.filter( "shikutyosonmei =",u '名古屋市千種区' )
dat2.order( "todofukenmei ")
dat2.order( "shikutyosonmei ")
dat2.order( "ooazatyotyome ")
ローカルではエラーが出ないがサーバーではエラー
dat2.get("ooazatyotyome","")
dat2.get("ooazatyotyome")
正解
dat2.ooazatyotyome
まえからそうだっけ?
0093nobodyさん
2013/03/01(金) 18:21:45.76ID:???ローカルではエラーが出ないがサーバーではエラー
dat2[0].get("ooazatyotyome","")
dat2[0].get("ooazatyotyome")
正解
dat2[0].ooazatyotyome
0094nobodyさん
2013/03/02(土) 10:20:30.13ID:???今度はローカルで
AttributeError: 'dict' object has no attribute 'ooazatyotyome'
0095nobodyさん
2013/03/02(土) 10:49:04.61ID:???データが取れない所でDict入れてた
スレ汚しすみません
0096nobodyさん
2013/03/02(土) 20:05:26.87ID:???親エンティティの検索も発生しちゃうのか?
もしそうだとしたら、とりあえずキーだけ欲しくて条件によっては親エンティティも
取得したい場合は、ReferenceProperty使わないほうがいいのかね。
009796
2013/03/02(土) 23:00:41.72ID:???0098nobodyさん
2013/03/03(日) 17:47:19.86ID:JQuTw+Pi0099nobodyさん
2013/03/13(水) 10:08:08.66ID:???以下のコードでそれっぽいことできたんですが、もっと良い方法ないですかね。
if users.user_id() == 'アクセスを許可したいGoogleアカウントのID':
<ページを表示>
else:
<403ページヘリダイレクト>
0100nobodyさん
2013/03/13(水) 10:26:27.95ID:???0101nobodyさん
2013/03/15(金) 07:54:21.04ID:4gK3sk/W0102nobodyさん
2013/03/15(金) 10:53:33.91ID:C48HVSYdどういう意図の制限か知らんが
それが一般にオープンなものじゃなくて
身内だけで使うものなら
そのアプリケーション単位のアカウント設定使いなよ
0103nobodyさん
2013/03/15(金) 11:03:52.65ID:???0104nobodyさん
2013/03/15(金) 12:28:40.86ID:C48HVSYdそりゃある程度手間かけないと
自分でやってる形が一番手軽だけどメンテしにくい
Accountモデル作ってキーをGoogleAccountのIDにして
key.get()で判定が一番早いかな
Datastore ViewerでCRUDできるし
ndbだとkeyで取ったらキャッシュするんで
メンテ時はキャッシュのフラッシュ忘れずに
0105nobodyさん
2013/03/15(金) 18:02:46.14ID:???あんたA人屋根
0106nobodyさん
2013/03/15(金) 20:50:24.23ID:???また村上が懲りずにデマばらまいてる
そのうちこのスレにもやってくるぞ
0108nobodyさん
2013/03/18(月) 00:00:31.01ID:oBAWUAZZ0109nobodyさん
2013/03/18(月) 02:14:17.40ID:???0110nobodyさん
2013/03/20(水) 22:14:03.14ID:???0111nobodyさん
2013/03/22(金) 18:54:05.29ID:???0112nobodyさん
2013/03/25(月) 19:50:19.12ID:???http://portal.nifty.com/2013/03/22/a/3.htm
0113nobodyさん
2013/04/05(金) 14:36:44.83ID:exGUhXLD時々プロパティがなかったりしてエラーがでるんだけど
どうやってチェックするかど忘れした
0114nobodyさん
2013/04/08(月) 01:52:09.51ID:qxm57EL80115nobodyさん
2013/04/10(水) 08:56:46.33ID:ZdxjB7Qnいまんとこゲームのバックエンドばっかりだし
0116nobodyさん
2013/04/10(水) 15:37:42.92ID:ZdxjB7Qn■ このスレッドは過去ログ倉庫に格納されています