Google App Engine for java

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2011/10/03(月) 19:55:23.27
無かったので立てた
2011/11/25(金) 20:03:45.68
まぁ、googleが有名な巨大企業になるにつれてバカもいっぱい吸収したから、
元々効率よかった企業だったのが非効率になって余裕がなくなってきてるんだろ。
2011/12/13(火) 06:24:21.19
ロックインが怖いがDAOパターンで作ればそんなに依存しないし
模範的なプログラムを書いてる分には引っ越しも問題無さそうだな。
無料枠でぜんぜん足りないなら月1000円以内の国内VPS/クラウドに逃げればいいし
保守性を犠牲にした最適化でGAEにしがみつく必要もなさそうだ
2011/12/13(火) 14:21:13.04
それ、DAOパターンっていうのか。
そうするのが普通だと思っていたが、
むしろロジックの中にSQLを直接発行するようなコードが入ってるのが普通なの?
2011/12/13(火) 16:16:57.32
だからDAOが標準的な造りだっての。お前のいう普通って何?
2011/12/13(火) 16:34:51.69
>>134
普通=デファクトスタンダード
2011/12/13(火) 17:02:18.29
俺が社畜やってた時代だと外注レベルでは規模が小さい所はやってなかったな。
例えばページ(リクエスト)単位で個々のプログラマに一任してるとこもあるし、
単一の定数クラスにSQLをガリガリ書いて寄越す所もある。
後者は構造が統一されてる分、まだ見通しが良くてマシだな。
2011/12/14(水) 00:34:41.83
>132
データが13Gあるよ・・・

DAOが標準うんぬんより、生産性・保守性・プログラマのスキルを
考慮して決めるってのが普通だよ

寿命が短いアプリを凝っても意味がない
2011/12/18(日) 18:41:59.71
+15minルールが無料厨にはきつい制約になってるけど
それでも月に最低112回は呼び出せるサービスにはなるから個人用途としては十分だな
勉強がてら何か作ろうかな
2011/12/18(日) 18:57:45.38
あら、もしかして月じゃなくて日に28インスタンス時間か?
小さなリクエストなら一日中付けっぱなしでいいじゃない
2011/12/18(日) 21:43:53.93
DB読み書きしなければ、インスタンス立ち上げっぱなしで処理は可能だよ
2011/12/19(月) 23:08:44.11
GAE Javaってちょっと前まで(3月?)、複数リクエストが来た時にスレッドじゃなく
別インスタンス立ち上げて振ってたって知ってすげー驚いた。
スケールアウトとか言う前にそこやってなかったのかよって感じ。
2011/12/20(火) 02:27:29.93
ゲームサーバでも無い限りMin Pending LatencyをAutomaticにするのは自殺行為な気がするw
2011/12/23(金) 15:13:33.89
DBは読みはmemcacheとかあるからなんとかなるけど、
書きが多いのは向かないんだよな。

だからデータ更新が少ないものなら余裕で無料枠行ける。
どこかのHPのバックにだけGAE使うとか、
画像は画像サービス使うとかすれば、帯域もほとんど食わない。
2011/12/23(金) 16:14:51.69
>どこかのHPのバックにだけGAE使うとか

これ規約で禁止されてるんだよな
2011/12/23(金) 19:13:09.25
要するに金払えってことだ
2011/12/23(金) 19:17:14.26
ゲームを作って、スコアの記録をGAEでってのは大丈夫だよね?
2011/12/23(金) 22:07:10.40
無料枠でビジネスしちゃあかんのか?
まぁ課金モードにしても無料枠は残るし問題ないだろうけど
2011/12/23(金) 22:16:25.03
GAEの無料枠なんてみじんこみたいなもん
2011/12/24(土) 16:06:09.15
>>144
規約変わってたのか。昔はOKだったよな。
2011/12/28(水) 22:03:34.15
無料枠を圧迫して有料枠安くしろよ
Googleと有料ユーザが儲からなきゃ共倒れ
2011/12/29(木) 17:40:00.13
安くしたらGoogleが儲からんだろw
2012/01/01(日) 05:48:36.38
>>144
これのソースどこ?
このやり方しろってよく紹介されてるよな
153デフォルトの名無しさん
垢版 |
2012/01/02(月) 18:58:41.47
low level apiでわからない点があるため、質問させてください。

主キーを1,2,3,4・・・と一ずつ増えるlong値にして、
エンティティをデータストアに保存したいと考えています。

新たにエンティティをデータストアに保存する歳には、
主キーの値を「現在データストアに格納しているエンティティ数」に
1を足したものとしたいのですが、
「現在データストアに格納しているエンティティ数」を取得する方法で悩んでおります。

「現在データストアに格納しているエンティティ数」をデータストアに保存しておき
トランザクションを使って、この値をカウントアップしていく方法があると思います。

他にも何か巧妙な方法があるのでしょうか?
JDOの主キーがどうのようにセットされているのかも想像がつきません・・・
教えれいただけるとありがたいです。
2012/01/03(火) 00:19:41.65
>153
1.データストアにカウント数を保存する

2.Entity数を都度カウントする
(件数分 SmallDatastoreOpsを食う、一番最悪な方法)

3.カウントアップするIndex用のPropetyを作り、
OrderBy Descで最初の1件だけ取得し、そのIndexの値+1を使う


昔いろいろ考えたけど、3パターンしかないと思う
最終的に俺は、一番コストが安い3を使った
2012/01/03(火) 01:13:24.53
>>154
3番が最強だとは思うけど、
分散カウンターという方法もあるらしいよ、という独り言
http://www.java-users.jp/contents/events/ccc2009spring/materials/A-3-1.pdf
156デフォルトの名無しさん
垢版 |
2012/01/03(火) 02:52:48.47
【Google App Engine】 レコードのシーケンス番号をカウンタを使わずにつける
http://blog.virtual-tech.net/2009/11/google-app-engine.html
2012/01/03(火) 17:20:58.50
質問です。
slim3でデータストア操作したいときに、filterにおいて、startsWithを使うと、HotReloadingRuntimeExeptionがでます。filterInMemoryでcontainsをつかっても同じです。
なぜかわかる方いませんか?
2012/01/05(木) 17:39:56.02
Eclipseでgoogleappを使って遊んでいるのですが、
com.google.appengine.repackaged.com.google.common.util.Base64をインポートすると
Use of com.google.appengine.repackaged may result in your app breaking without warning.
と出てしまい、エラーになってしまいます。
なんか、sdk1.6.0だと動く的な記述を見るのですが、sdk1.6.1での解決方法ってないのでしょうか?
2012/01/05(木) 19:33:57.79
com.google.appengine.repackaged.com.google.common.util.Base64を使わなければいいじゃん
2012/01/05(木) 19:46:19.54
>>158
Jakarta Commons Codecじゃだめ?
2012/01/06(金) 09:02:50.28
>>159,160
情報ありがとう。
Jakarta Commons Codecを利用してうまく行きました。
やっていたことは、GEAからAmazonクラウドへのアクセスだけだったのですが、
参考にしたサイトが、com.google.appengine.repackaged.com.google.common.util.Base64を
利用していたので、それを参考にしていました。

実装は出来たのですが、問題の参照しようとするとエラーになることについて理解したいです。
eclipseでgoogle sdkがちゃんとエクスプローラーに出てきて、クラスも見えるのに、
com.google.appengine.repackagedを参照しようとするとエラーになるというのがなぜなのか
よく分かりません。通常クラス参照のパスがうまく設定されていないためだと思うのですが、
この場合、eclipseにプラグインをインストールして、プロジェクトのlibフォルダにもjarがコピーされ、
問題なく利用できる状況に見えるのですが、実際には使えません。
ご存知の方がいらしたら、お教えいただけると助かります。
2012/01/06(金) 09:30:02.60
とりあえずエラーメッセージを読めよ
2012/01/06(金) 10:39:22.09
>>162
申し訳ない、エラーメッセージは以下のデータしか得られないのです。
Use of com.google.appengine.repackaged may result in your app breaking without warning.
で、結局com.google.appengine.repackagedが不正だよ的な情報しか得られないのです。
ネットで検索もして見ましたが、解決策が見つからず、Eclipseの問題なのか、GAEの問題なのか
切り分けもできていないので、ご存知の方がいたらお教えいただきたかったのです。
2012/01/06(金) 10:43:53.72
英語のページを貼っても読めなさそうだ…
2012/01/07(土) 01:31:32.67
"repackaged"に依存すべきじゃない。
166デフォルトの名無しさん
垢版 |
2012/01/08(日) 05:01:36.24
formで入力された情報を保存し、HTMLで返す場合に
XSS対策で<>等をエスケープすると思いますが・・・
http://atmarkplant-dj.blogspot.com/2011/04/java-htmlxss.html

appengineではどこで実装するのが適切ですか?
2012/01/08(日) 05:08:36.41
俺ならdatastore.get後で、memcacheに入れる前かなー。
2012/01/08(日) 21:08:06.59
JSPでfn:escapeXml(string) 一択じゃね?
169デフォルトの名無しさん
垢版 |
2012/01/13(金) 21:09:03.41
>>168
velocityで使えますか?
エスケープする最速のコードってどんな感じですかね?
2012/01/13(金) 22:11:07.94
>169
JSTLだからVelocityだと使えないんじゃね?

最速のコードがどうかの前に、最速のコードが必要なのか?
最速が必要だったらJava自体辞めれば?って話になるぞ
171デフォルトの名無しさん
垢版 |
2012/01/13(金) 23:02:14.35
>>170
Javaの範囲だとどういうインプリがいいのかな、と。

自分の場合、ネットから持ってきたんですが
こんなコードです。
public static String htmlspecialchars ( String str )
{
String ret_val = new String(str);

String[] escape = {"&", "<", ">", "\"", "\'", "\n", "\t"};
String[] replace = {"&", "<", ">", """, "'", "<br>", " "};

for ( int i=0; i < escape.length; i++ )
{
ret_val = ret_val.replace(escape[i], replace[i]);
}

return ret_val;
}
2012/01/13(金) 23:06:50.14
>171
最速求めるんだったら、あらかじめ置換しとけば?
置換するのに時間食うんだったらCron使えば?

て言い出したらきりないよ
性能、環境、実装の制限等が分からん限り、何が最速のコードになるかわからんよ
2012/01/13(金) 23:08:16.76
slim3のやつ
http://code.google.com/p/slim3/source/browse/trunk/slim3/src/main/java/org/slim3/util/HtmlUtil.java
2012/01/18(水) 02:02:30.85
真面目にシリアライズするのが面倒でObjectOutputStreamとZipOutputStreamでser.zipとして
BLOBに保存してるが、得に不満はなかった。
2012/01/18(水) 12:02:36.22
それ以外良い方法ないんじゃない?
2012/01/18(水) 13:27:39.80
>>171
Stringをbyte[]にして低レベルな操作するのが早い。
特に\n => <br/>みたいに文字数が長くなる場合に
バッファの確保を1回で終わらせるのが良い。
2012/01/21(土) 02:30:13.83
GAEのEC2に対する利点って窓口が開き続けていて、アクセス頻度が低ければ無料という点にあると思う。
Low Level APIは実は罠で、最初からJPAあたりで移植性を重視すれば未だにスモールスタートの雄なんじゃないかと。
つまり最初はGAEとIaaSで動くように開発して、ビジネスになったらEC2なりで好きに継続開発すればいい。
2012/01/21(土) 03:01:54.19
GAEで開発したことあんの?
2012/01/21(土) 03:31:43.74
遊びでやってる程度だが、制約なんて基本的にはJOINが出来ないのと不等号条件が同時に複数の列で使えないくらいだろ
2012/01/21(土) 07:01:14.56
いやいや()
2012/01/21(土) 07:05:55.18
いやいや() ですって
お前が使いこなせないだけだろ
2012/01/21(土) 07:48:06.52
>>179
嘘を書くな
2012/01/21(土) 21:56:49.60
最近デプロイがやたら遅いし固まるんですけど何か対策ありますか?
20分間隔のキューを10本走らせてますが…それにぶつかると重くなるんでしょうか
使ってないバックエンドはデプロイしないようにしてます
2012/01/23(月) 15:46:32.92
DIってシステムプロパティに書けば良かったんだなって最近気付いた
185デフォルトの名無しさん
垢版 |
2012/01/29(日) 02:30:29.70
>>173
これ作った人すごいね。
このコードじゃなくてslim3全体ね。

何者なんだろう。
2012/01/29(日) 02:34:01.65
2012/01/29(日) 07:21:41.44
たまには『寄生・不正・捏造・自作自演・買収・なりすまし・脅し』なしで、
正々堂々と勝負してきて下さい韓国人のみなさん。

>【国際】スイーツの世界大会で韓国が日本に対して妨害行為 「我々は日本だけには負けたくないんだよ」

>韓国人が世界中の図書館行って地図の「日本海」の上に「東海」シールを貼ってる件

>海外で悪いことする時は日本人のフリをする。韓国人

>外国人「日本の動画にはいつも韓国人の汚いコメントがある」

>【K-POP】たった80人で「欧州でも大人気」?…K-POPのブーム捏造

>【韓流】東方神起、オリコンチャートの真実?〜「買いつなぎ?順位操作疑惑」

>"金大中のノーベル平和賞受賞は工作、北朝鮮に5億ドルを不法送金" 暴露した元情報員、米国に亡命

>【サムスン】「市場開拓のため、日本人になりすましカタログだけで奥地へ」

>【韓国】日本の技術を盗み世界一になった現代重工業・・自力で盗んだのだから中国とは根本的に違う

>【また偽装】ヒュンダイを日本企業だと思わせる為に米国で相撲力士の写真を使い広告キャンペーン開始

>【韓国イチゴ】日本から盗んだ品種同士を掛け合わせて「国産品種」詭弁でロイヤリティ支払いから逃げる韓国

>【韓国/サッカー】 韓国vsイタリア戦でわいろを受け取った疑惑のモレノ氏、ヘロイン大量所持で逮捕

>【韓国】キム・ヨナのIOC推挙騒動、呼び掛け人の自称オーストリア人トーマス氏は韓国人と判明

>【韓国】韓国女性登山家の14座制覇にねつ造疑惑、再び論争ぼっ発
2012/01/31(火) 11:12:02.76
こんなものをこんなところに貼らないといけないほど日本は追い詰められてるのか?
2012/01/31(火) 12:11:12.50
>>188
追い詰められているというか、完全に出遅れている。

スタートラインのはるか後方で走者の実況TV見てるような感じ。
2012/01/31(火) 12:13:15.07
じゃあいっぱいコピペ貼ってうさを晴らすしかないな
2012/02/02(木) 01:46:40.81
Slim3の本また出たんだね
執筆開始は値上げ前かもしれないけど
残念だったね
192デフォルトの名無しさん
垢版 |
2012/02/22(水) 11:28:15.91
ほう
193デフォルトの名無しさん
垢版 |
2012/03/18(日) 12:34:32.28
Amazon web services や Google app engine 凄いですね
ホスティングとかやってる業者全滅しちゃうんじゃないでしょうか
2012/03/18(日) 13:02:25.27
GAEってオワコンだよね
2012/03/18(日) 22:38:00.41
>>193
情弱www
2012/03/18(日) 22:52:27.80
GAEは超絶値上げでオワコン
GAEにはまった人って
Googleが安く提供できる特別な技術を持っているとか
慈善事業をやっているとでも勘違いしたんだろうな
2012/03/19(月) 16:56:07.52
慈善事業とは思ってなかったけど、何かGoogleの独自技術で安くできてるんだとは正直思ってた
2012/03/19(月) 17:02:58.36
Long Tail World: 僕がグーグルを辞めた理由:Why I left Google @docjamesw
http://longtailworld.blogspot.jp/2012/03/why-i-left-google-docjamesw.html
2012/03/19(月) 17:35:44.47
>>196
広告入れられないからな。
まあこれは他社でも同じ事だが。
2012/03/19(月) 18:03:34.13
広告入りで無料なら
人気出るだろうな
2012/03/19(月) 19:24:43.96
え?広告入れちゃいけないってどこに書いてあるの?
2012/03/20(火) 11:05:16.87
>197
その割には全文検索とか出来なくて
なんか変だとは思ってた
2012/03/20(火) 13:18:31.71
>>201
googleが広告入れるかわりに
無料で使えるってこと
よくある無料鯖みたいなもん
2012/03/20(火) 23:09:45.38
じゃあまったく使えないじゃん。
2012/03/21(水) 05:44:39.87
googleじゃなくてもやってけるからなあ
2012/03/21(水) 09:37:45.22
GAEが出たころは
Googleの技術すげーみたいな風潮があったからな
2012/03/21(水) 21:32:55.33
CPU時間で課金とかすげーと思った
2012/03/22(木) 13:22:52.94
馬鹿には無理
2012/03/23(金) 09:39:52.60
パブロン鼻炎カプセルS
2012/03/28(水) 17:36:26.29
ド素人な質問ですいません。
現在、GAEで開発を始めたところなのですが、jspファイルで
c:out value = "${hoge}"
と記述している部分でエクリプスで下記のエラーがでています。
"c:out" (org.apache.taglibs.standard.tag.rt.core.OutTag) のタグ・ハンドラー・クラスが Java ビルド・パスで見つかりませんでした

WEB-INF/libにはjstl.jarとstandard.jarも配置しています。
以下もjspファイルに記述していて、エラーはでていません。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

実行しても${hoge}には期待したデータが表示されず、${hoge}とそのまま出ている状況です。

何かお心当たりあればお教え願えないでしょうか?
2012/03/29(木) 05:28:25.03
馬鹿には無理
2012/04/02(月) 19:44:45.94
GAEの話じゃないな
2012/04/04(水) 12:48:55.20
>>195
なにが情弱なのか教えていただきたいですね
これからのアプリケーションはクラウド化、スケーラブル化が必要
信頼性の高いデータストア機構が必須

High Replication Datastore に類する機能が他のクラウドサービスに
なければ、工夫して実装するしかありませんがおそらく google に勝る
ものは作れないでしょう。

機能の充実度、信頼性を考えたら、他のクラウドサービスを比較するとむしろ割安。
2012/04/04(水) 13:49:47.56
faccbookや2ch級のサービスでもおっぱじめるつもりなら割安と言えるかもな
2012/04/07(土) 01:50:49.24
高いスケーラビリティを必要とするサービスがどれほどあるのか
2012/04/15(日) 03:39:36.67
スケーラビリティの前に、不具合ばっかりなんだがw
2012/04/15(日) 15:05:31.47
登録できねーな糞が
2012/04/15(日) 23:50:11.76
出た当時はWebが根本から変わると息巻いてましたよ、ええ・・・
2012/04/15(日) 23:53:44.25
Google自身がやる気無くしてんじゃね?
2012/04/15(日) 23:57:35.52
webページ関係ないところで利用できるから広告収入がな。
意味のない計算やらして喜んでいる奴いるし。
2012/04/21(土) 09:52:27.88
googleのエンジニアと同じプラットフォームが使えるだけでワクワクするだろ
2012/04/22(日) 10:54:06.46
>googleのエンジニアと同じプラットフォーム

知らないなら黙ってれば良いのに
223デフォルトの名無しさん
垢版 |
2012/04/22(日) 16:35:58.09
GAE/Jでローカルで簡単なアカウント登録/認証したいんですけど、
何か良いサンプルありませんか?
2012/04/27(金) 20:53:15.59
馬鹿には無理
2012/05/02(水) 00:29:33.93
ttp://www1.axfc.net/uploader/H/so/157974
このプロジェクトで
ant compile
ant runserverして
http://localhost:8080/guestbook
をブラウズすると正しく表示されるのですが,
"C:\Program Files\appengine-java-sdk-1.6.4.1\bin\appcfg.cmd" update
"C:\users\tarou\desktop\projectfolder\war"
としてもうまくいきません.
アプリ名は正しくて,正しくアップロードされたと表示されはしますが
Error: Server Errorと出てきます.
どうすればいいでしょうか?
2012/05/02(水) 00:32:43.53
http://www1.axfc.net/uploader/H/so/157974
このファイルを
ant compile
ant runserver
すると正しく動作します.
ですが
"C:\Program Files\appengine-java-sdk-1.6.4.1\bin\appcfg.cmd" update
"C:\Users\tarou\Desktop\projectname\war"
としてもブラウザから
http://projectname.appspot.com/guestbook
へアクセスしても
Error:Server Error
と出ます.どうすればいいでしょうか?
227225
垢版 |
2012/05/02(水) 00:33:43.70
すいません.なんか二回書いてしまいました
2012/05/02(水) 00:33:56.44
窓からPCを投げ捨てる
2012/05/02(水) 10:59:02.76
ちょっとまて、今準備するから
2012/05/02(水) 11:22:55.49
DashboardからLogを確認しろ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況