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

Google App Engine 2アプ目

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/05/30(土) 12:40:02ID:tuYY7oEn

Google App Engine
http://code.google.com/appengine/

■過去スレ
Google App Engine
http://pc11.2ch.net/test/read.cgi/php/1207754942/

■参考サイト
App Engine ギャラリー
http://appgallery.appspot.com/
ドキュメント
http://code.google.com/appengine/docs/python/overview.html
0552nobodyさん2009/11/17(火) 11:45:45ID:???
畑も耕さず、種も蒔かず、雑草も抜かず、肥料も巻かず、
水もやらず、添え木もせず、収穫もせず、金も払わず、

ただ実を食う。

そんな人間にも育て方が下手だと
批判をする権利はあります。
0553nobodyさん2009/11/17(火) 12:48:34ID:???
権利はあるけど対応する義務はないぞ
0554nobodyさん2009/11/17(火) 13:56:55ID:???
FAQだろうけど、聞いてみる。
GAEでセッション管理はどうすんの?
標準機能としては提供してないよね?
ぐぐってみたけど、これというのがなさそう。
みんなどうしてる?
Datastoreに保存すべきか、それとも暗号化してCookieに入れるようなのを作るか。
0555nobodyさん2009/11/17(火) 15:37:57ID:???
gaeoはデフォmemcachedでDatastoreも選べる
django patchはDatastoreのみ
0556nobodyさん2009/11/17(火) 16:31:07ID:???
こんな糞スレにURL張っても逆宣伝にしかならんだろ。
0557nobodyさん2009/11/17(火) 17:15:03ID:???
>>555
あれ、GAEで、標準でセッションて使えたっけ?
詳細ページへのリンクをプリーズ
0558nobodyさん2009/11/17(火) 18:26:16ID:???
gaeo
0559nobodyさん2009/11/17(火) 19:11:59ID:???
これのいちばんしたにかいてあるじゃば
http://code.google.com/intl/ja/appengine/docs/java/config/appconfig.html
0560nobodyさん2009/11/17(火) 20:22:26ID:???
なるほど、GAE for Javaでは標準装備なのか。なんでPythonではついてないの?
0561nobodyさん2009/11/17(火) 22:26:37ID:???
>>554
Python版だと無いですよね
Kay なら Datastore 版セッションと SecureCookie のセッションと選べますよ。

memcached のみのセッションは信頼性の面で難ありなので止めた方が良いです。
0562nobodyさん2009/11/17(火) 23:03:58ID:???
セッション機能なんて自分で作っても5分くらいだから。
0563nobodyさん2009/11/17(火) 23:21:37ID:???
5分でテストまで出来るなんてすばらしいな。
うちの会社に欲しい人材だわ。
0564nobodyさん2009/11/17(火) 23:26:27ID:???
テストはテストという項目で請求しないのか。
随分がさつな会社だな。
0565nobodyさん2009/11/17(火) 23:51:16ID:???
cookie + memchaced で作ったセッション管理モジュール上げてやんよ
0566nobodyさん2009/11/18(水) 00:33:48ID:???
平日は早朝から夜まで、土日も関係なく社員が働く会社をブラック企業と言います。
0567nobodyさん2009/11/18(水) 05:39:47ID:???
memcacheをセッションにするのは普通不安定なの?
GAEだから不安定なの?
0568nobodyさん2009/11/18(水) 07:55:40ID:???
memcacheってよく壊れなくね?
0569nobodyさん2009/11/18(水) 08:02:35ID:???
ec2でmemcached鯖立ててた時は
たまに消えてた
0570nobodyさん2009/11/18(水) 10:03:07ID:???
Kayのオッサンはスルーかよ(www
551確定ってことか?
0571nobodyさん2009/11/18(水) 11:08:35ID:???
どうでもいいよそんなこと
0572nobodyさん2009/11/18(水) 12:24:42ID:???
memcached って expire 期間指定出来たっけ?
0573nobodyさん2009/11/18(水) 12:33:34ID:???
expireする時間を指定可能
あと時々勝手な都合でexpireする
0574nobodyさん2009/11/18(水) 16:00:17ID:???
ttp://code.google.com/intl/ja/appengine/docs/python/tools/libraries.html#PyCrypto

-----
App Engine には Python Cryptography Toolkit のカスタム バージョンが付属しており、
これは PyCrypto とも呼ばれています。
App Engine に付属するバージョンは pycrypto 2.0.1 をベースにしています。
これは最新バージョンではありませんが、その大半は新しいバージョンとの互換性があります。
-----

とあるけど、SDK 1.2.7 の中には見つからないんですけど。
import Crypto とかしてもエラーになるし。
だれか教えて!
0575nobodyさん2009/11/18(水) 21:51:49ID:???
>>574
デプロイしたら動くんじゃね?
0576nobodyさん2009/11/18(水) 23:14:16ID:???
セッションってmemcachedの主な用途だと思ってたんだが
不安定ならキャッシュくらいにしか使えないね
0577nobodyさん2009/11/19(木) 00:17:46ID:???
その名の通りキャッシュなんで、不揮発じゃない
0578nobodyさん2009/11/19(木) 00:23:18ID:???
576の将来が不安
0579nobodyさん2009/11/19(木) 00:33:02ID:???
永続的(もしくは保存期間が長い)セッションに使うと、
単なるキャッシュなので、
get: 参照して、無ければDB的な物から引いて更新
set: キャッシュ更新して 本体書き込み

同時アクセス考慮するならDB的な物をロックするとか
トランザクションするならさらに制御が複雑に

最近のwebサービスだと、セッション用に素のmemcached使わずに永続的な実装にして使ってる。
0580nobodyさん2009/11/19(木) 00:46:14ID:???
>>565
まだですか
0581nobodyさん2009/11/20(金) 12:31:13ID:???
アクセス数を減らす為に、CSS Spriteとか使ってるけど、
そもそもサイトの静的リソース(画像、CSS,Javascript、Flashとか)を
別アプリケーション立ててそっちにもっていくのは規約に反するのかな?
0582nobodyさん2009/11/20(金) 12:48:08ID:???
問題なし
0583nobodyさん2009/11/20(金) 13:46:47ID:???
GAE内で2つってこと?
0584nobodyさん2009/11/20(金) 14:28:37ID:???
>同時に複数のアカウントでアプリケーションを操作するなどして割り当てを侵害したり、悪用しようとしたりすることは、利用規約への違反となり、アプリケーションが無効になるか、アカウントが停止されることがあります。

アカウント内なら問題無さそう
むしろ一つのアプリケーションに複数のアカウントを関連付ける機能があるのにこれはひどい
0585nobodyさん2009/11/20(金) 17:54:31ID:???
↑意味を取り違えてると思う

>同時に複数のアカウントでアプリケーションを操作するなどして

というのはその方法でCPUやDataStoreやMail/Dayのquotaの制限を突破しちゃだめっていう意味だと思う
0586nobodyさん2009/11/20(金) 23:45:27ID:???
って突破できなくね?
ドメイン変わるし。
0587nobodyさん2009/11/21(土) 04:55:21ID:???
アカウント2つでアプリ2つ作って、片方を静的ファイル置き場みたいに使っちゃダメってことだよね
当たり前か。
アカウント1つでもだめだろな
0588nobodyさん2009/11/21(土) 05:34:15ID:???
静的コンテンツは他に鯖{借りて|立てて}スケールアウトすればいいのだ
・・・あれ?
0589nobodyさん2009/11/21(土) 06:56:33ID:???
GAEいらないじゃん
0590nobodyさん2009/11/21(土) 12:59:08ID:???
性的コンテンツなら、そこいらのレンサバで勝手にスケールするだろ
0591nobodyさん2009/11/21(土) 13:10:56ID:???
どんだけアクセス数が少ないんだよ
0592nobodyさん2009/11/21(土) 13:16:56ID:???
ボクの性的コンテンツがスケールしません
0593nobodyさん2009/11/21(土) 19:23:31ID:???
ボクの性的コンテンツはビックスケールです
0594nobodyさん2009/11/21(土) 20:04:56ID:???
DSの中にあります
0595nobodyさん2009/11/26(木) 09:34:16ID:???
.
0596nobodyさん2009/11/26(木) 16:54:02ID:7zJTiiD0
http://www.asahi.com/business/topics/economy/TKY200911220277.html
0597nobodyさん2009/11/28(土) 19:48:27ID:???
純粋なあの頃は仕事で追い詰められて自殺なんて都市伝説だと思ってたけど
今じゃ知り合いの失踪も自殺も体験した
0598nobodyさん2009/11/29(日) 16:23:00ID:???
remote_apiでデータいじると、DateTimePropertyの値がUTCに直されずに保存されちゃうんだな
auto_nowにしてたフィールドが9時間進んでいて驚いた
0599nobodyさん2009/11/29(日) 17:11:15ID:???
素人以下の造りだよなぁ
0600nobodyさん2009/12/02(水) 11:07:11ID:???
質問いいですか?
GAEで作ったアプリてローカルでも運用できるもんなんでしょうか?

wikiみたいなのを作った場合を想定していて、
例えば外部公開用の他に、
自分用でかつネットつないでない時も使えないときも使いたい場合、
どうしたものでしょうか?GAEの
ローカルでもちゃんと動いてくれるものでしょうか?

感覚的にRailsのアプリのBTS、RedmineをWindows上でproductionモードでmongrelでローカルにて動かすような感じです。
0601nobodyさん2009/12/02(水) 11:40:32ID:???
開発用のローカルサーバそのままでOKならそれでいいんじゃないの?
0602nobodyさん2009/12/02(水) 11:58:20ID:???
鬼のようなPV(になる予定)のサイトを作るんですが、EC2かGAEか悩んでいます。

自由度無くて詰んだら嫌なのでEC2に決まりかけてたのですが、
mysqlをスケーリングしてうんぬんはやはり面倒なのでGAEがいいよなあと。

いまどきのWebサービスを開発するにあたって
GAEでどうしてもできないことはなにがありますでしょうか。

たとえば、
-全文検索サーバをインストールして使う
-数時間かかるバッチ処理
-HTTP以外の通信
-SQLでかんたんにできること JOINとか?
-巨大なファイルをあつかう1GB以上とか
-データベースの定期ダンプ
-複雑な画像処理 ImageMagick

ほかにありますでしょうか。アドバイスお願いします。
これから要件まとめてなにか気がついたら私もまたカキコします。

これ
http://code.google.com/p/appengine-jruby/wiki/GettingStarted
つかってGAEでRubyというのも良いですね。
ただ、CPUが無駄遣いだというカキコがちょっと前にありましたけども。
0603nobodyさん2009/12/02(水) 12:40:43ID:???
鬼のようなPVなら俺なら迷い無くEC2
0604nobodyさん2009/12/02(水) 13:24:04ID:???
EC2のHigh-Memory Quadruple Extra Large Instance 68.4 GB of memory,
26 EC2 Compute Units (8 virtual cores with 3.25 EC2 Compute Units each),
1690 GB of instance storage, 64-bit platform

にmysql載せればいくらでも相当無理しても大丈夫そうだ。
ディスクの速度が不明だな。書き込み速いのかな。

スレ違いでした。すまん。
0605nobodyさん2009/12/02(水) 13:28:35ID:???
>>602
鬼のようなPVのサイトだから、独自ドメインを使うと思うんだけど、
なんか独自ドメインだとSSLが使えないらしいんだよね。
たとえば http://www.example.org/admin/ というURLで管理者情報をいじくるページをつくったとして、
これを https にしたいとしても、できないんだってさ。
独自ドメインじゃなく xxxxx.appspot.com ならSSL使えるらしい。

これってどうよ?俺的には致命的なんだけど、だれか回避策しらんかね?

あと、www.example.org はOKだけど example.org (naked urlというらしい)は使えないとか。まあこの制限は我慢できるか。
0606nobodyさん2009/12/02(水) 13:32:29ID:???
別ドメインになるとセッションの受け渡しができないよなぁ。。
0607nobodyさん2009/12/02(水) 13:33:04ID:???
>>602

>たとえば、
>-全文検索サーバをインストールして使う
>-数時間かかるバッチ処理
>-HTTP以外の通信
>-SQLでかんたんにできること JOINとか?
>-巨大なファイルをあつかう1GB以上とか
>-データベースの定期ダンプ
>-複雑な画像処理 ImageMagick

これ全部やりたいってことなら、GAEじゃ無理だね。
データベースの定期ダンプとか無理だろ。
頑張ってMySQLをスケーリングするか、memcachedを使いたおせ。
06086022009/12/02(水) 15:51:49ID:???
>>607
これから要件を洗い出すのですが、それ全部必要なわけではないです。
私の知識の範囲でGAEで出来ないことリストです。
GAE地雷リスト?

>>603
PV課金だからってことですね。EC2なら工夫次第でPV単価安くできる。

>>605
ありがとうございます。
(追加)
- SSLを自由に使えない
- 使えるドメインに制限あり(naked url)

>>604
"Amazon Relational Database Service"ってのを見つけました。
mysqlのおもりをお任せ出来ちゃうのかもしれません。
0609nobodyさん2009/12/02(水) 17:29:01ID:???
>>605
セキュリティ的に回避できちゃ困る領域に見えるけど
SSL証明書どうすりゃいいんだ?
0610nobodyさん2009/12/03(木) 00:14:17ID:???
*.example.com
0611nobodyさん2009/12/03(木) 04:30:44ID:???
>>605
xxx.appspot.com で使ってたけど
SSL にも色々変な制限あるみたいで
xls を出力するプログラム(hogehoge)をうpしたら
http://xxx.appspot.com/hogehoge はダウンロード出来たのに
https://xxx.appspot.com/hogehoge ではダウンロード出来なかったり
SSL の意味無いやんって
GAE 使うのやめたよ
0612nobodyさん2009/12/03(木) 06:32:27ID:???
えっ、マジSSLだめのか、GAE。それだめだろ・・・

ログインページはSSLでないと信用できない、という場面もある。
仕事のシステム作るような場合だと、さすがにSSL必須だし。(SSLなくても大丈夫って顧客だますの?)

回避策ないかね。
0613nobodyさん2009/12/03(木) 06:33:25ID:???
てか、ネットで業務でGAEつかってる会社をたまに見かけるんだけど、
この辺どうやってんだろ、気になるな
06146112009/12/03(木) 07:31:10ID:???
>>612
いや、ログインページだけなら SSL に出来るんだ
http://xxx.appspot.com/fugafuga.gif
https://xxx.appspot.com/fugafuga.gif
なんかも問題ないし
HTML だけ出力するプログラム
http://xxx.appspot.com/mogamoga
https://xxx.appspot.com/mogamoga
とかも問題なかったのに
>>611
の条件だけダメだったりするんだ
0615nobodyさん2009/12/03(木) 07:33:45ID:???
URLに日本語が入ってるときにUTF-8にした上でurlescapeしてもアクセス出来なかったりするね
0616nobodyさん2009/12/03(木) 12:22:11ID:???
>>605
EC2でexample.org (naked url)で普通に運営してるぞ俺
0617nobodyさん2009/12/03(木) 12:37:37ID:???
apps + app engineの制約だろ
>>610も何が言いたいのかわからん
0618nobodyさん2009/12/03(木) 17:57:10ID:???
naked domain使えるようにならないかなぁ・・
0619nobodyさん2009/12/03(木) 20:55:30ID:???
>>617
ワイルドカードのSSL証明書とれってことじゃないのかな?
0620nobodyさん2009/12/04(金) 09:21:38ID:???
Google、無料DNSサービス「Google Public DNS」発表
http://www.itmedia.co.jp/enterprise/articles/0912/04/news018.html

これでnaked domainを指定のサブドメにリダイレクトできるようにならないかな?
0621nobodyさん2009/12/04(金) 09:55:26ID:???
よく見たらそういうもんじゃなかった fack
0622nobodyさん2009/12/04(金) 10:18:03ID:???
fuckでした
0623nobodyさん2009/12/04(金) 18:55:33ID:???
まとめサイトをwikiでつくりたいです。
GAEにwikiを設置したいんですが、使えるwikiアプリをご存知でしたら教えてください。

・PythonでつくられたwikiでGAEで動くもの
・JavaでつくられたwikiでGAEで動くもの

Quercus(PHP in Java)を使ってGAE上で動くPHPのwikiでもいいです。
Pukiwikiのファイルの書き込み部分を、GAE上ではBigTableに書き込むように改造するのは大変でしょうか?
0624nobodyさん2009/12/04(金) 19:03:47ID:???
>>623
俺も知りたい
自作したがしょぼすぎるんだ
0625nobodyさん2009/12/04(金) 19:08:22ID:???
疑似ファイルシステムつくるか
0626nobodyさん2009/12/04(金) 19:21:43ID:???
wikiなんざ@wikiでも借りたらいいんじゃないかと思うんだが
0627nobodyさん2009/12/04(金) 19:21:43ID:???
擬似RDBでも許す
0628nobodyさん2009/12/04(金) 20:20:21ID:???
>>626
1日100万PVのアクセスがあっても対応できるGAEで、まとめwikiを作りたいんです><

>>625
勉強するんで、作り方教えてください><
・PukiwikiをGAE用に改造する
・Quercus(PHP in Java)で動かす
この改造路線でよろしいでしょうか?
(JavaとPHPは使えます。Pythonはこれから勉強する予定)

ちなみに、改造したコードはどこにおけばいいですか?
よく分からんけど、Google CodeとかGitHubという場所にアップロードすればいいんですかね?
ttp://ja.wikipedia.org/wiki/OSS%E3%83%9B%E3%82%B9%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AE%E6%AF%94%E8%BC%83
0629nobodyさん2009/12/04(金) 20:26:55ID:???
>>628
今ならGitHubだな。
0630nobodyさん2009/12/04(金) 20:29:05ID:???
pythonで有名なwikiってmoinmoinって名前だったっけか
探せばGAEで動くように移植した人とかいるかもね
0631nobodyさん2009/12/04(金) 20:43:43ID:???
>>629 >>630 ありがとうございます。
MionMoinを調べてみます!

<擬似ファイルシステム>
BigTabelに、[AlterFile]というテーブルを用意する。
カラムは、(1) [FileName](=ファイル名を保存する)と、(2) [FileData](=ファイルの中身)がある。
従来のファイル操作関連の関数を、BigTableに書き込む関数でラップするかんじですかね?
0632nobodyさん2009/12/04(金) 22:50:02ID:???
FileSize
FileCTime
FileATime
FileMTime
はあった方が良いだろう
0633nobodyさん2009/12/04(金) 22:51:03ID:???
FileAtribute
FileOwner
なんかもいるんじゃないかな
0634nobodyさん2009/12/05(土) 01:16:34ID:???
ラップしたらそのファイル操作関数は制限されずに呼び出せるの?
0635nobodyさん2009/12/05(土) 03:10:19ID:???
そりゃまぁそういう風に作ればそうなるだろう
0636nobodyさん2009/12/05(土) 08:06:48ID:???
>>628
Pukiwikiは全ファイルなめるような操作あったような気がするから、
記事が1000件超えたらまずそうな気がするw

あと、何するにしても日本語検索を自前で実装しないといけないから注意。
サイトマップ作ってgoogleにindexさせて放り投げてもいいけど
0637nobodyさん2009/12/05(土) 08:10:58ID:???
>>630
feature requestsはでてるみたいね。

FeatureRequests/GoogleAppEngineCompatibility - MoinMoin
http://moinmo.in/FeatureRequests/GoogleAppEngineCompatibility
0638nobodyさん2009/12/06(日) 21:30:52ID:???
Cしか書けない低レベルプログラマだけど

ここ一週間GAE+PYTHONの勉強をがんばって
2chライクの掲示板とか作ってみたけど
なんか疲れた。
もうちっと面白いアイデアがないもんかねえ
0639nobodyさん2009/12/06(日) 21:43:18ID:???
結構何作ったらいいのかとか思い付かないよね。
0640nobodyさん2009/12/06(日) 22:59:48ID:???
Twitterのbotとかも作るのは簡単そうだけど
肝心のしゃべらせる内容が思いつかないw
0641nobodyさん2009/12/06(日) 23:17:48ID:???
勉強会の資料みたけどトランザクションきっちり必要な用途には向かないみたいね。ブログとかは向くだろうな。

適材適所。

0642nobodyさん2009/12/07(月) 01:51:30ID:???
昨日見つけたんだけどこれはどうなんだろう↓
http://eiichirouchiumi.blogspot.com/2009/11/google-app-engine.html

Acid HouseというGAE/Jのフレームワークで、エンティティグループをまたいでの
トランザクション処理ができるらしい
これが使えるとかなり助かるし、結構画期的だと思うんだけど
0643nobodyさん2009/12/07(月) 11:44:19ID:???
Google App Engine Datastore のアトミック・トランザクションで更新できるのは、1エンティティ・グループだけですよね?ご存知の通り、Google App Engine Datastore では、このような「複数エンティティ・グループをアトミックに更新する」方法がありません。
実は、Low-level API なんかをうまく使って対応する方法が色々とあるんですが、Acid House を使うと、このオペレーションを1トランザクションで行うことができるので、すごく楽です。


だってさ。

LowLevelAPIで何とかなるなら標準でなぜサポートされていないんだろ。
0644nobodyさん2009/12/07(月) 12:27:45ID:???
>>640
なるべくボットっぽくないボットを作って、followerを一杯釣るのにいきがいを感じるのはどうだろうか。

はてぶのホッテントリ(http://b.hatena.ne.jp/hotentry)のURLに対して、
適当にこれまたはてぶのコメントからスターがたくさんついたコメを引っ張ってきて、ちょっと改変してつぶやくとかどうだろうか?

また、なるべくボット臭を消すために、たまにはてブ以外のこともつぶやく。

http://buzztter.com/ja 話題をから拾ってきて適当に発言。〜〜わろた、〜〜てなんだこれ?等
http://twitter.com/now_ から拾ってきて、〜〜なうと発言
http://twitter.com/bombtterhttp://twitter.com/bombtter_long から拾ってきて〜〜爆発しろ!

APIや情報ソースとして使えそうなサービスと連携して時事をつぶやけばいいと思う
0645nobodyさん2009/12/07(月) 12:29:03ID:???
>>644
はてぶホッテントリのURLミスった
http://b.hatena.ne.jp/hotentry
0646nobodyさん2009/12/07(月) 14:29:21ID:???
>>644
なんとなく寂しいな
0647nobodyさん2009/12/07(月) 16:26:13ID:???
lowlevelAPIってどうやったら使えるの
0648nobodyさん2009/12/07(月) 18:25:42ID:???
Javadoc見て感覚で書く
0649nobodyさん2009/12/07(月) 20:03:03ID:???
えっ
パイソンじゃ無理なの?
0650nobodyさん2009/12/07(月) 22:09:43ID:???
>>642だけどソースを見たらどうも駄目っぽい
コミットの途中でクラッシュした時のことが考えられてないし、整合性の問題がある
箇所がいくつもあったり、競合が発生した場合のひどいパフォーマンスとか
とにかく問題が多すぎて、たぶん使ったら大変なことになる
0651nobodyさん2009/12/08(火) 03:17:44ID:???
>>650
>のような「複数エンティティ・グループをアトミックに更新する」方法がありません。
>実は、Low-level API なんかをうまく使って対応する方法が色々とある

「ローレベルAPIならアトミックにできる」とも読めてしまうけど、そういうわけではないってこと?
0652nobodyさん2009/12/08(火) 10:24:42ID:???
例えば銀行口座間の送金をトランザクションを利用した実装にするには残高entityをすべて1つのentitygroupにまとめておく必要があるわけですよね。
するとロック範囲も全体なので並列処理できない。スケールしない。

すると出てくる手法はなにがあるのでしょうか。

分散トランザクションとか2フェーズコミットとか?
ジャーナリングファイルシステムみたいにまず入出金イベントentityを作ってあとから各口座に反映させる?

ちなみに銀行アプリのentitygroupは口座ごとに分けて残高entityをrootにして入出金ログentityを子にするので考えています。


■ このスレッドは過去ログ倉庫に格納されています