Google App Engine for java
■ このスレッドは過去ログ倉庫に格納されています
初歩的なことだと思うんですけどサンプルが見つからなくて進まなくなってしまいました…助けてください
Task Queue 機能を使おうと思って
Queue queue = QueueFactory.getDefaultQueue();
やら
queue.add(Builder.withUrl("/.."))
みたいなコードを書いて、実際にタスクは実行できてるのですが
queueにアクセスして内容を取得する方法がどうにもわかりません。
管理ツールにはちゃんとTask Queuesに全部載ってるのに、自分のコードでアクセスできないのです…
iterator() や toArray() がアクセスするメソッドなのかなと思いましたが、キャストしないと無理とEclipseに言われ
手当たり次第にキャストしてみましたがClassCastException
インターフェイス関係の理屈がわかってないのは間違いないのですが、何とか先に進みたいのです。
お知恵を貸してください。 >114
Queueの結果は受け取れんよ
DatastoreかMemcacheを経由しなされ >>115
デフォルトキューから実行前のタスクを取得してパラメータを一覧で表示させたいのですが、
そういった操作はQueueクラスの性質から制限がかかるということでしょうか?
それがダメなので、実行前のタスクを閲覧したいなら、Datastoreで管理して、
そこからデフォルトキューにaddしていくべきということでしょうか。難しいですね… >115
Queseの性質っていうか、Googleが容易してないか制限してるかどっちかだと思う
(どこかにあったらすまんが、見たことないな)
Queusに入れたのは自分で分かってるから後で取得するってのは普通思わんよね 久しぶりに何か作ろうと思っていろいろ見てたら、料金の値上げがすさまじいな。
GAEベースで業務システム作ったところとか悲惨だな。
10倍ぐらいいってるんじゃね? 業務システムだとDBの正規化がしっかりしてるだろうから、
DatastoreWriteで死ねるだろうな ちょっとぐらい重くても文句言わないから、激安料金プラン出してくれないかなー。
データストアの冗長化とか後でやっといてくれればいいから。
>>123
激安用に新規開発しろって言ってるに等しいだろ。 >>124
>>123ではないが、需要があるという事を言っているに過ぎない。
需要をくんで開発するかしないかはgoogle次第。
結局のところ、企業というのは対価を動力源に需要を満足させる装置に過ぎない。 ここらが底値っぽいね
VPSもこれ以上安くならんだろう
もうすでに自宅にサーバ構えるより、安いんだし もっと露骨にgoogleロックインして、googleの広告等を使いやすくすることで
google側の広告収入が増えるなら、さらに安くできるんじゃないかな。 やっぱ別事業の雲行きが怪しくなると本業の方まで波及するんだな
俺も早めに見切ってよかった いや、なんというかGoogle Labのデスクトップサーチとかあったけど
お金になりそうに無いとわかったらばっさりサポート打ち切りとか
そういうのはあるからね…これに関してはもうちょい続きそうな雰囲気はあるのかもしれんけど まぁ、googleが有名な巨大企業になるにつれてバカもいっぱい吸収したから、
元々効率よかった企業だったのが非効率になって余裕がなくなってきてるんだろ。 ロックインが怖いがDAOパターンで作ればそんなに依存しないし
模範的なプログラムを書いてる分には引っ越しも問題無さそうだな。
無料枠でぜんぜん足りないなら月1000円以内の国内VPS/クラウドに逃げればいいし
保守性を犠牲にした最適化でGAEにしがみつく必要もなさそうだ それ、DAOパターンっていうのか。
そうするのが普通だと思っていたが、
むしろロジックの中にSQLを直接発行するようなコードが入ってるのが普通なの? だからDAOが標準的な造りだっての。お前のいう普通って何? 俺が社畜やってた時代だと外注レベルでは規模が小さい所はやってなかったな。
例えばページ(リクエスト)単位で個々のプログラマに一任してるとこもあるし、
単一の定数クラスにSQLをガリガリ書いて寄越す所もある。
後者は構造が統一されてる分、まだ見通しが良くてマシだな。 >132
データが13Gあるよ・・・
DAOが標準うんぬんより、生産性・保守性・プログラマのスキルを
考慮して決めるってのが普通だよ
寿命が短いアプリを凝っても意味がない +15minルールが無料厨にはきつい制約になってるけど
それでも月に最低112回は呼び出せるサービスにはなるから個人用途としては十分だな
勉強がてら何か作ろうかな あら、もしかして月じゃなくて日に28インスタンス時間か?
小さなリクエストなら一日中付けっぱなしでいいじゃない DB読み書きしなければ、インスタンス立ち上げっぱなしで処理は可能だよ GAE Javaってちょっと前まで(3月?)、複数リクエストが来た時にスレッドじゃなく
別インスタンス立ち上げて振ってたって知ってすげー驚いた。
スケールアウトとか言う前にそこやってなかったのかよって感じ。 ゲームサーバでも無い限りMin Pending LatencyをAutomaticにするのは自殺行為な気がするw DBは読みはmemcacheとかあるからなんとかなるけど、
書きが多いのは向かないんだよな。
だからデータ更新が少ないものなら余裕で無料枠行ける。
どこかのHPのバックにだけGAE使うとか、
画像は画像サービス使うとかすれば、帯域もほとんど食わない。 >どこかのHPのバックにだけGAE使うとか
これ規約で禁止されてるんだよな ゲームを作って、スコアの記録をGAEでってのは大丈夫だよね? 無料枠でビジネスしちゃあかんのか?
まぁ課金モードにしても無料枠は残るし問題ないだろうけど >>144
規約変わってたのか。昔はOKだったよな。 無料枠を圧迫して有料枠安くしろよ
Googleと有料ユーザが儲からなきゃ共倒れ >>144
これのソースどこ?
このやり方しろってよく紹介されてるよな low level apiでわからない点があるため、質問させてください。
主キーを1,2,3,4・・・と一ずつ増えるlong値にして、
エンティティをデータストアに保存したいと考えています。
新たにエンティティをデータストアに保存する歳には、
主キーの値を「現在データストアに格納しているエンティティ数」に
1を足したものとしたいのですが、
「現在データストアに格納しているエンティティ数」を取得する方法で悩んでおります。
「現在データストアに格納しているエンティティ数」をデータストアに保存しておき
トランザクションを使って、この値をカウントアップしていく方法があると思います。
他にも何か巧妙な方法があるのでしょうか?
JDOの主キーがどうのようにセットされているのかも想像がつきません・・・
教えれいただけるとありがたいです。 >153
1.データストアにカウント数を保存する
2.Entity数を都度カウントする
(件数分 SmallDatastoreOpsを食う、一番最悪な方法)
3.カウントアップするIndex用のPropetyを作り、
OrderBy Descで最初の1件だけ取得し、そのIndexの値+1を使う
昔いろいろ考えたけど、3パターンしかないと思う
最終的に俺は、一番コストが安い3を使った 質問です。
slim3でデータストア操作したいときに、filterにおいて、startsWithを使うと、HotReloadingRuntimeExeptionがでます。filterInMemoryでcontainsをつかっても同じです。
なぜかわかる方いませんか?
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での解決方法ってないのでしょうか? com.google.appengine.repackaged.com.google.common.util.Base64を使わなければいいじゃん >>158
Jakarta Commons Codecじゃだめ? >>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がコピーされ、
問題なく利用できる状況に見えるのですが、実際には使えません。
ご存知の方がいらしたら、お教えいただけると助かります。 >>162
申し訳ない、エラーメッセージは以下のデータしか得られないのです。
Use of com.google.appengine.repackaged may result in your app breaking without warning.
で、結局com.google.appengine.repackagedが不正だよ的な情報しか得られないのです。
ネットで検索もして見ましたが、解決策が見つからず、Eclipseの問題なのか、GAEの問題なのか
切り分けもできていないので、ご存知の方がいたらお教えいただきたかったのです。 formで入力された情報を保存し、HTMLで返す場合に
XSS対策で<>等をエスケープすると思いますが・・・
http://atmarkplant-dj.blogspot.com/2011/04/java-htmlxss.html
appengineではどこで実装するのが適切ですか? 俺ならdatastore.get後で、memcacheに入れる前かなー。 JSPでfn:escapeXml(string) 一択じゃね? >>168
velocityで使えますか?
エスケープする最速のコードってどんな感じですかね? >169
JSTLだからVelocityだと使えないんじゃね?
最速のコードがどうかの前に、最速のコードが必要なのか?
最速が必要だったらJava自体辞めれば?って話になるぞ >>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;
} >171
最速求めるんだったら、あらかじめ置換しとけば?
置換するのに時間食うんだったらCron使えば?
て言い出したらきりないよ
性能、環境、実装の制限等が分からん限り、何が最速のコードになるかわからんよ
真面目にシリアライズするのが面倒でObjectOutputStreamとZipOutputStreamでser.zipとして
BLOBに保存してるが、得に不満はなかった。 >>171
Stringをbyte[]にして低レベルな操作するのが早い。
特に\n => <br/>みたいに文字数が長くなる場合に
バッファの確保を1回で終わらせるのが良い。 GAEのEC2に対する利点って窓口が開き続けていて、アクセス頻度が低ければ無料という点にあると思う。
Low Level APIは実は罠で、最初からJPAあたりで移植性を重視すれば未だにスモールスタートの雄なんじゃないかと。
つまり最初はGAEとIaaSで動くように開発して、ビジネスになったらEC2なりで好きに継続開発すればいい。 遊びでやってる程度だが、制約なんて基本的にはJOINが出来ないのと不等号条件が同時に複数の列で使えないくらいだろ いやいや() ですって
お前が使いこなせないだけだろ 最近デプロイがやたら遅いし固まるんですけど何か対策ありますか?
20分間隔のキューを10本走らせてますが…それにぶつかると重くなるんでしょうか
使ってないバックエンドはデプロイしないようにしてます DIってシステムプロパティに書けば良かったんだなって最近気付いた >>173
これ作った人すごいね。
このコードじゃなくてslim3全体ね。
何者なんだろう。 たまには『寄生・不正・捏造・自作自演・買収・なりすまし・脅し』なしで、
正々堂々と勝負してきて下さい韓国人のみなさん。
>【国際】スイーツの世界大会で韓国が日本に対して妨害行為 「我々は日本だけには負けたくないんだよ」
>韓国人が世界中の図書館行って地図の「日本海」の上に「東海」シールを貼ってる件
>海外で悪いことする時は日本人のフリをする。韓国人
>外国人「日本の動画にはいつも韓国人の汚いコメントがある」
>【K-POP】たった80人で「欧州でも大人気」?…K-POPのブーム捏造
>【韓流】東方神起、オリコンチャートの真実?〜「買いつなぎ?順位操作疑惑」
>"金大中のノーベル平和賞受賞は工作、北朝鮮に5億ドルを不法送金" 暴露した元情報員、米国に亡命
>【サムスン】「市場開拓のため、日本人になりすましカタログだけで奥地へ」
>【韓国】日本の技術を盗み世界一になった現代重工業・・自力で盗んだのだから中国とは根本的に違う
>【また偽装】ヒュンダイを日本企業だと思わせる為に米国で相撲力士の写真を使い広告キャンペーン開始
>【韓国イチゴ】日本から盗んだ品種同士を掛け合わせて「国産品種」詭弁でロイヤリティ支払いから逃げる韓国
>【韓国/サッカー】 韓国vsイタリア戦でわいろを受け取った疑惑のモレノ氏、ヘロイン大量所持で逮捕
>【韓国】キム・ヨナのIOC推挙騒動、呼び掛け人の自称オーストリア人トーマス氏は韓国人と判明
>【韓国】韓国女性登山家の14座制覇にねつ造疑惑、再び論争ぼっ発 こんなものをこんなところに貼らないといけないほど日本は追い詰められてるのか? >>188
追い詰められているというか、完全に出遅れている。
スタートラインのはるか後方で走者の実況TV見てるような感じ。 Slim3の本また出たんだね
執筆開始は値上げ前かもしれないけど
残念だったね Amazon web services や Google app engine 凄いですね
ホスティングとかやってる業者全滅しちゃうんじゃないでしょうか
GAEは超絶値上げでオワコン
GAEにはまった人って
Googleが安く提供できる特別な技術を持っているとか
慈善事業をやっているとでも勘違いしたんだろうな 慈善事業とは思ってなかったけど、何かGoogleの独自技術で安くできてるんだとは正直思ってた >>196
広告入れられないからな。
まあこれは他社でも同じ事だが。 >197
その割には全文検索とか出来なくて
なんか変だとは思ってた >>201
googleが広告入れるかわりに
無料で使えるってこと
よくある無料鯖みたいなもん GAEが出たころは
Googleの技術すげーみたいな風潮があったからな ド素人な質問ですいません。
現在、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}とそのまま出ている状況です。
何かお心当たりあればお教え願えないでしょうか?
>>195
なにが情弱なのか教えていただきたいですね
これからのアプリケーションはクラウド化、スケーラブル化が必要
信頼性の高いデータストア機構が必須
High Replication Datastore に類する機能が他のクラウドサービスに
なければ、工夫して実装するしかありませんがおそらく google に勝る
ものは作れないでしょう。
機能の充実度、信頼性を考えたら、他のクラウドサービスを比較するとむしろ割安。
■ このスレッドは過去ログ倉庫に格納されています