<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>tdtshのブログ&#187; Google App Engine</title>
	<atom:link href="http://www.tdtsh.com/blog/archives/category/google-app-engine/feed" rel="self" type="application/rss+xml" />
	<link>http://www.tdtsh.com/blog</link>
	<description>ソーシャルメディアとか スレートとか Google App Engine とかの事の備忘録</description>
	<lastBuildDate>Tue, 07 Feb 2012 05:03:26 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tdtsh.com/blog/archives/category/google-app-engine/feed" />
		<item>
		<title>備忘録 scenic3 のPageクラスのアノテーション達</title>
		<link>http://www.tdtsh.com/blog/archives/1548</link>
		<comments>http://www.tdtsh.com/blog/archives/1548#comments</comments>
		<pubDate>Fri, 02 Dec 2011 13:00:43 +0000</pubDate>
		<dc:creator>tdtsh</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[slim3]]></category>

		<guid isPermaLink="false">http://www.tdtsh.com/blog/?p=1548</guid>
		<description><![CDATA[appengine java + slim3 の開発では、scenic3にお世話になっています。]]></description>
			<content:encoded><![CDATA[<p>appengine java + slim3 の開発では、<a href="http://code.google.com/p/scenic3/" target="_blank">scenic3</a>にお世話になっています。</p>
<blockquote><p>
scenic3は t2 frameworkのようなPageクラスをslim3で実現するslim3の拡張ライブラリです。</p>
<p><a href="https://sites.google.com/site/aboutscenic3/home" target="_blank">scenic3</a>
</p></blockquote>
<p>ページ作るの便利なんで。</p>
<p>そのPageクラスを作るときにアノテーションとか忘れそうになるんでメモしておきます。</p>
<p>@Page リクエストパスの1個目？を指定する<br />
@ActionPath = リクエストパスの2個目以降を指定する</p>
<p>手が覚えるまで迷うのがこれら。</p>
<p>@Var = リクエストパスの中に引数を指定した場合に書く</p>
<p>	私にとってコレが簡単に出来る事がscenic3を使う理由のひとつ。</p>
<p>@RequestParam = リクエストパラメータ（GET引数）を引数にする場合に書く</p>
<p>	勿論メソッド内で request.getParameter(&#8220;xxx&#8221;) とも書けるけど、明示的にメソッドの引数にも出来るってこと。</p>
<p>自然語でメモするとなんかややこしい・・・。</p>
<p>簡単なPageクラスはこんな感じになる。</p>
<pre>
@Page("/path")
public class PathPage extends ScenicPage
{

	@ActionPath("to/{id}")
	public Navigation list_json(
			@Var("id") String id
			, @RequestParam("limit") Integer limit
			, @RequestParam("offset") Integer offset
	)
	{
		// POSTの場合はコッチ
		String hoge = (String) request.getAttribute("hoge");

		....
		return forward("/path/to/page.vm");
	}

}
</pre>
<p>AppUrl.java への追加も忘れずに。</p>
<pre>
public AppUrls()
{
	excludes("/_ah/*");
	excludes("/remote_api");
	add(PathPageMatcher.get());
}
</pre>
<div id="fb-root"></div>
   <script>
   window.fbAsyncInit = function() {
   FB.init({appId: "135970219784621", status: true, cookie: true,
		 xfbml: true});
	};
 (function() {
  var e = document.createElement("script"); e.async = true;
 e.src = document.location.protocol +
   "//connect.facebook.net/jv_ID/all.js";
 document.getElementById("fb-root").appendChild(e);
}());
</script><span class = ""  style = "  "><fb:like href="http://www.tdtsh.com/blog/archives/1548" send = "false" layout="standard" show_faces="false" width="" action="like" colorscheme="light" font="" /></span>]]></content:encoded>
			<wfw:commentRss>http://www.tdtsh.com/blog/archives/1548/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tdtsh.com/blog/archives/1548" />
	</item>
		<item>
		<title>遅ればせながらGAE/J で TaskQueue を試す</title>
		<link>http://www.tdtsh.com/blog/archives/1523</link>
		<comments>http://www.tdtsh.com/blog/archives/1523#comments</comments>
		<pubDate>Mon, 28 Nov 2011 21:30:00 +0000</pubDate>
		<dc:creator>tdtsh</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[slim3]]></category>

		<guid isPermaLink="false">http://www.tdtsh.com/blog/?p=1523</guid>
		<description><![CDATA[遅ればせながらGAE/J で TaskQueue を試す]]></description>
			<content:encoded><![CDATA[<p>&nbsp;<br />
google appengine / javaの話ですけど。</p>
<p>バッチとかなら<a href="http://code.google.com/intl/ja/appengine/docs/java/config/cron.html">cron</a> で何とかなるもんだからいままで曖昧にしてきた訳ですが、そろそろ <a href="http://code.google.com/intl/ja/appengine/docs/java/taskqueue/" target="_blank">TaskQueue</a> を弄っていこうと思います。</p>
<h4>知らんかった事その1</h4>
<p>タスクとははURLを持ったただのサーブレット</p>
<p>使い方というか、Queueの登録の仕方はコチラは大いに参考にさせて頂いています。これ以上説明することがありません。<br />
<a href="http://www.synaesthesia.jp/googleAppEngine/taskQueue2.php" target="_blank">Task Queueの最新情報！【設定ファイル例付き】</a></p>
<h4>知らんかった事その2</h4>
<p>TaskQueue用のサーブレットってSlim3のControllerでもいけるし、素のServletでもいけるけど、戻り値はnullじゃないと延々とリトライされる。<br />
（Exceptionをthrowしてもリトライされる。逆に言うとExceptionをcatchしてしまうとリトライされない）</p>
<p>それもあるから、Datastoreに書いたりするならべき等に実装しなきゃいかん。</p>
<h4>知らんかった事その3</h4>
<p>リトライに関してはqueue.xml でかなり細かく設定できる。</p>
<p><a href="http://elekmole.blogspot.com/2011/02/java-task-queue-configuration.html" target="_blank">今は昔のkonjak翻訳 φ(・ω・? )…: Java Task Queue Configuration</a></p>
<p>色々出来そうですね。<br />
がんばってみます。</p>
<p>個人的には<a href="http://code.google.com/intl/ja/appengine/docs/java/javadoc/com/google/appengine/api/labs/taskqueue/TaskOptions.html#countdownMillis(long)"> .countDownMills(long)</a> が便利だと思う。</p>
<p>5秒後に実行ならcountDownMills(5000L)。</p>
<p>Taskは（ある程度）細かいほどパフォーマンスいいみたい。<br />
例えばどうしてもループの中にDatastore操作が入っちゃうみたいな場合は、TaskQueueの出番かな。</p>
<p>私が知らないだけかもしれませんがちょっと残念なのは、TaskのChainが作れない事です。<br />
Aタスクを実行後Bタスクとかする場合は、Aタスクの中でBタスクを呼び出す様にネストせな仕方ないか。</p>
<p><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=tdtsh-22&#038;o=9&#038;p=8&#038;l=as4&#038;m=amazon&#038;f=ifr&#038;ref=ss_til&#038;asins=4797357606" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p>
<p>Twitterボットでも作ってみようかな。</p>
<div id="fb-root"></div>
   <script>
   window.fbAsyncInit = function() {
   FB.init({appId: "135970219784621", status: true, cookie: true,
		 xfbml: true});
	};
 (function() {
  var e = document.createElement("script"); e.async = true;
 e.src = document.location.protocol +
   "//connect.facebook.net/jv_ID/all.js";
 document.getElementById("fb-root").appendChild(e);
}());
</script><span class = ""  style = "  "><fb:like href="http://www.tdtsh.com/blog/archives/1523" send = "false" layout="standard" show_faces="false" width="" action="like" colorscheme="light" font="" /></span>]]></content:encoded>
			<wfw:commentRss>http://www.tdtsh.com/blog/archives/1523/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tdtsh.com/blog/archives/1523" />
	</item>
		<item>
		<title>appengine の billing history が何かおかしい (おかしくなかった。追記アリ)</title>
		<link>http://www.tdtsh.com/blog/archives/1501</link>
		<comments>http://www.tdtsh.com/blog/archives/1501#comments</comments>
		<pubDate>Fri, 25 Nov 2011 15:30:25 +0000</pubDate>
		<dc:creator>tdtsh</dc:creator>
				<category><![CDATA[Google App Engine]]></category>

		<guid isPermaLink="false">http://www.tdtsh.com/blog/?p=1501</guid>
		<description><![CDATA[下の「Total:(before
clipping to daily budget)」 は $0.00. なのに、上の「Usage Report for 2011-11-23」 の Amount が $1.16 になっています。]]></description>
			<content:encoded><![CDATA[<p>GAEが新料金になってから、Billing Historyをチェックするのが日課になっています。<br />
いや、今までもそうですし、新料金でも充分安いんですけど、個人で払っているもので・・・<br />
会社のプロジェクトとかでも、自腹でちょいちょいっと作るという事が出来るのは、非常に大きいんです。</p>
<p>まあ一日あたり$1に制限していますから、それを超える事はあり得ません。<br />
うっかりQuotaを超えちゃっても、予算以上は請求されません。確認済みです。</p>
<p>・・・アレ？超えてる？<br />
と思って確認したら、詳細は$0になっています。</p>
<p>見えますでしょうか。</p>
<p><a href="http://www.tdtsh.com/blog/wp-content/uploads/2011/11/6879bd70adfe9be1678929a5fd8378ae.jpg"><img src="http://www.tdtsh.com/blog/wp-content/uploads/2011/11/6879bd70adfe9be1678929a5fd8378ae-284x300.jpg" alt="" title="20111125_billinghistoryがおかしい" width="284" height="300" class="aligncenter size-medium wp-image-1500" /></a></p>
<p>下の「Total:(before<br />
clipping to daily budget)」 は $0.00. なのに、上の「Usage Report for 2011-11-23」 の Amount が $1.16 になっています。</p>
<p>なんで！</p>
<p>とりあえず、書いてあるメールアドレスに送っておきました。</p>
<p>2011/11/26 追記<br />
週次のミニマムチャージが $2.1 だからの様です。<br />
Billing Setting の Set Budget の中にめっちゃ書いてました。</p>
<p>今まで1週間に2.1ドル以下な事がなかったので気づかなかっただけでした。</p>
<pre>
The Minimum spend subtotal is in support of our new pricing model.
The new model requires that you spend at least $2.10/week.
This subtotal indicates the value beyond your other spend
that we need to add to your contract.
To make the transition to the new model smoother we are beginning to account
for this minimum when we authorize new budget changes.
Please note that you will not be charged for the minimum spend until our new model takes effect.
</pre>
<p>はずかしいです。</p>
<p>@takawitter さんご指摘ありがとうございました。</p>
<div id="fb-root"></div>
   <script>
   window.fbAsyncInit = function() {
   FB.init({appId: "135970219784621", status: true, cookie: true,
		 xfbml: true});
	};
 (function() {
  var e = document.createElement("script"); e.async = true;
 e.src = document.location.protocol +
   "//connect.facebook.net/jv_ID/all.js";
 document.getElementById("fb-root").appendChild(e);
}());
</script><span class = ""  style = "  "><fb:like href="http://www.tdtsh.com/blog/archives/1501" send = "false" layout="standard" show_faces="false" width="" action="like" colorscheme="light" font="" /></span>]]></content:encoded>
			<wfw:commentRss>http://www.tdtsh.com/blog/archives/1501/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tdtsh.com/blog/archives/1501" />
	</item>
		<item>
		<title>slim3.GlobalTransaction と slim3.Lock がいっぱい</title>
		<link>http://www.tdtsh.com/blog/archives/1476</link>
		<comments>http://www.tdtsh.com/blog/archives/1476#comments</comments>
		<pubDate>Tue, 15 Nov 2011 01:34:22 +0000</pubDate>
		<dc:creator>tdtsh</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[slim3]]></category>

		<guid isPermaLink="false">http://www.tdtsh.com/blog/?p=1476</guid>
		<description><![CDATA[appengineのDatastoreにいつのまにか

slim3.GlobalTransaction
と
slim3.Lock

というEntityが出来ていました。]]></description>
			<content:encoded><![CDATA[<p>appengineのDatastoreにいつのまにか</p>
<p>slim3.GlobalTransaction<br />
と<br />
slim3.Lock</p>
<p>というEntityが出来ていました。とくにslim3.Lockがいっぱい。</p>
<p>Slim3のGlobalTransactionが失敗した形跡があるんで、その残骸なんでしょうか。<br />
暫くしたら消そう。</p>
<div id="fb-root"></div>
   <script>
   window.fbAsyncInit = function() {
   FB.init({appId: "135970219784621", status: true, cookie: true,
		 xfbml: true});
	};
 (function() {
  var e = document.createElement("script"); e.async = true;
 e.src = document.location.protocol +
   "//connect.facebook.net/jv_ID/all.js";
 document.getElementById("fb-root").appendChild(e);
}());
</script><span class = ""  style = "  "><fb:like href="http://www.tdtsh.com/blog/archives/1476" send = "false" layout="standard" show_faces="false" width="" action="like" colorscheme="light" font="" /></span>]]></content:encoded>
			<wfw:commentRss>http://www.tdtsh.com/blog/archives/1476/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tdtsh.com/blog/archives/1476" />
	</item>
		<item>
		<title>409 Conflict No transaction is in progress で appengine にデプロイできない</title>
		<link>http://www.tdtsh.com/blog/archives/1455</link>
		<comments>http://www.tdtsh.com/blog/archives/1455#comments</comments>
		<pubDate>Fri, 11 Nov 2011 04:20:38 +0000</pubDate>
		<dc:creator>tdtsh</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[開発環境]]></category>

		<guid isPermaLink="false">http://www.tdtsh.com/blog/?p=1455</guid>
		<description><![CDATA[今日、GAE/Jでeclipseからデプロイしようとすると、失敗しました。 ダイアログはこんな感じです。 Unable to update app: Error posting to URL: https://appen [...]]]></description>
			<content:encoded><![CDATA[<p>今日、GAE/Jでeclipseからデプロイしようとすると、失敗しました。<br />
ダイアログはこんな感じです。</p>
<pre>
Unable to update app: Error posting to URL: https://appengine.google.com/api/appversion/startserving?app_id=XXXXXXX&#038;version=XXXX&#038;
409 Conflict
No transaction is in progress.
</pre>
<p>前にも何度かやった気がするけどイチイチ忘れるんでメモ。</p>
<p>appengine java sdk がインストールされていればそれを使えばいいんだけど、eclipse の Plugin としてインストールしているなら、eclipse のインストールディレクトリのpluginの中にSDKがそっくり存在します。</p>
<p>私のいまの環境ではこんな感じでした。</p>
<pre>

cd c:\eclipse\plugins
\com.google.appengine.eclipse.sdkbundle_1.5.5.r36v201110112027
\appengine-java-sdk-1.5.5\bin
(実際は1行)

appcfg.cmd rollback c:\git\PROJECTNAME\war
</pre>
<h4>参考にした先人の知恵</h4>
<p><a href="http://blog.tyato.jp/2011/08/gaej-409-conflict.html" target="_blank">一日一歩: GAE/J デプロイにて 409 conflict が出た場合の対処 </a></p>
<div id="fb-root"></div>
   <script>
   window.fbAsyncInit = function() {
   FB.init({appId: "135970219784621", status: true, cookie: true,
		 xfbml: true});
	};
 (function() {
  var e = document.createElement("script"); e.async = true;
 e.src = document.location.protocol +
   "//connect.facebook.net/jv_ID/all.js";
 document.getElementById("fb-root").appendChild(e);
}());
</script><span class = ""  style = "  "><fb:like href="http://www.tdtsh.com/blog/archives/1455" send = "false" layout="standard" show_faces="false" width="" action="like" colorscheme="light" font="" /></span>]]></content:encoded>
			<wfw:commentRss>http://www.tdtsh.com/blog/archives/1455/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tdtsh.com/blog/archives/1455" />
	</item>
		<item>
		<title>appengine 1.5.5 の Cross-Group Transactions は Entity Group が 5つまでしか扱えない</title>
		<link>http://www.tdtsh.com/blog/archives/1448</link>
		<comments>http://www.tdtsh.com/blog/archives/1448#comments</comments>
		<pubDate>Wed, 09 Nov 2011 05:01:28 +0000</pubDate>
		<dc:creator>tdtsh</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[slim3]]></category>

		<guid isPermaLink="false">http://www.tdtsh.com/blog/?p=1448</guid>
		<description><![CDATA[先日 slim3 1.0.14 とグローバルトランザクションについて書きました。 その続編です。 slim3 の Datastore.beginGlobalTransaction() とか deprecated になって [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/blog/archives/1430">先日 slim3 1.0.14 とグローバルトランザクションについて書きました。</a><br />
その続編です。</p>
<p>slim3 の Datastore.beginGlobalTransaction() とか deprecated になってます。<br />
やはりフツーのDatastore.beginTransaction() を使えと言う事ですね。</p>
<p>で、Cross-Group Transactions なんですけど、やはり今のところ 5 entity groups までしか対応していないようです。</p>
<p>確かに複数Entityでも、今までの様に「can’t operate on multiple entity groups in a single transaction.」とか怒られる事が無くなったんですが、いっぱいEntityをぶっこむ（Entity Group が5つ以上）と、「java.lang.IllegalArgumentException: operating on too many entity groups in a single transaction.」とか怒られてしまいます。</p>
<p>沢山のEntity Group を含むトランザクションを扱うシチュエーションでは引き続き slim3 の GlobalTransaction を使う事になりますね。</p>
<div id="fb-root"></div>
   <script>
   window.fbAsyncInit = function() {
   FB.init({appId: "135970219784621", status: true, cookie: true,
		 xfbml: true});
	};
 (function() {
  var e = document.createElement("script"); e.async = true;
 e.src = document.location.protocol +
   "//connect.facebook.net/jv_ID/all.js";
 document.getElementById("fb-root").appendChild(e);
}());
</script><span class = ""  style = "  "><fb:like href="http://www.tdtsh.com/blog/archives/1448" send = "false" layout="standard" show_faces="false" width="" action="like" colorscheme="light" font="" /></span>]]></content:encoded>
			<wfw:commentRss>http://www.tdtsh.com/blog/archives/1448/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tdtsh.com/blog/archives/1448" />
	</item>
		<item>
		<title>Slim3 1.0.14 とCross-Group Transactions</title>
		<link>http://www.tdtsh.com/blog/archives/1430</link>
		<comments>http://www.tdtsh.com/blog/archives/1430#comments</comments>
		<pubDate>Wed, 02 Nov 2011 10:53:24 +0000</pubDate>
		<dc:creator>tdtsh</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[slim3]]></category>
		<category><![CDATA[開発環境]]></category>

		<guid isPermaLink="false">http://www.tdtsh.com/blog/?p=1430</guid>
		<description><![CDATA[Slim3が1.0.14になってる訳ですが、手もとのeclipseを確認したら、slim3-1.0.12.jarじゃないですか。 Slim3 Eclipse Pluginで横着してたんで、気がつきませんでした。 ソフトウ [...]]]></description>
			<content:encoded><![CDATA[<p><a href="https://sites.google.com/site/slim3appengine/release-notes" target="_blank">Slim3が1.0.14に</a>なってる訳ですが、手もとのeclipseを確認したら、slim3-1.0.12.jarじゃないですか。</p>
<p><a href="https://sites.google.com/site/slim3documentja/documents/eclipse-plugin" target="_blank">Slim3 Eclipse Plugin</a>で横着してたんで、気がつきませんでした。</p>
<p>ソフトウェアの更新で出現しないんですけど、勝手にjarを入替えちゃってもいいんですかね。</p>
<p>というかPluginで入れても、<a href="https://sites.google.com/site/slim3documentja/documents/how-to-upgrade" target="_blank">更新は手作業</a>なのかな。 （後日ちゃんとslim3pluginのアップデートが配信されました (2011/11/09 追記)）</p>
<p>やってみた。いけた。</p>
<p>Slim3 1.0.14から、appengine SDK 1.5.5のリリースを受けて、グローバルトランザクション周りが変わっているようです。</p>
<p>Datastore.beginGlobalTransaction() じゃなく、フツーのDatastore.beginTransaction() で、<a href="http://code.google.com/intl/en/appengine/docs/java/datastore/overview.html#Cross_Group_Transactions" target="_blank">Cross-Group Transactions</a>に対応しているとか。</p>
<p>5 entity groupsまでなら、複数Entity Groupをぶっこんでも、問題なく更新とかできる様になっている筈。</p>
<p>今までは複数のEntity Groupをトランザクションに含めると「IllegalArgumentException：can&#8217;t operate on multiple entity groups in a single transaction.」とか怒られたんですが、今回からは 5 Entity Group 以上を含んだ場合出るのかな。</p>
<p>また今度ちゃんと試します。</p>
<p><a href="/blog/archives/1448">試しました (2011/11/09 追記)</a></p>
<p>・・・おそらく<a href="http://d.hatena.ne.jp/higayasuo/20100210/1265781747" target="_blank"> GTXの実装には苦労された事と思う</a>んですが、ひがさんの心中や如何に。</p>
<div id="fb-root"></div>
   <script>
   window.fbAsyncInit = function() {
   FB.init({appId: "135970219784621", status: true, cookie: true,
		 xfbml: true});
	};
 (function() {
  var e = document.createElement("script"); e.async = true;
 e.src = document.location.protocol +
   "//connect.facebook.net/jv_ID/all.js";
 document.getElementById("fb-root").appendChild(e);
}());
</script><span class = ""  style = "  "><fb:like href="http://www.tdtsh.com/blog/archives/1430" send = "false" layout="standard" show_faces="false" width="" action="like" colorscheme="light" font="" /></span>]]></content:encoded>
			<wfw:commentRss>http://www.tdtsh.com/blog/archives/1430/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tdtsh.com/blog/archives/1430" />
	</item>
		<item>
		<title>急にeclipse から appengine にデプロイできなくなりました</title>
		<link>http://www.tdtsh.com/blog/archives/1417</link>
		<comments>http://www.tdtsh.com/blog/archives/1417#comments</comments>
		<pubDate>Fri, 28 Oct 2011 11:25:58 +0000</pubDate>
		<dc:creator>tdtsh</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[eclipse]]></category>

		<guid isPermaLink="false">http://www.tdtsh.com/blog/?p=1417</guid>
		<description><![CDATA[なんの拍子か判らないけど、気がついたら eclipse から appengine へデプロイしようとすると、こんなダイアログが出て失敗する様になりました。 An internal error occurred durin [...]]]></description>
			<content:encoded><![CDATA[<p>なんの拍子か判らないけど、気がついたら eclipse から appengine へデプロイしようとすると、こんなダイアログが出て失敗する様になりました。</p>
<pre>
An internal error occurred during Deploying %APPNAME% to Google NullPointerException
</pre>
<p>理由は判りません。<br />
心当たりがあるとすれば、appengine python sdk のランチャを弄ってた位です。</p>
<p>Windows XP 、eclipse は Helios、appengine java SDK は 1.5.5 です。</p>
<p>取り急ぎは macbook air の開発環境から問題なくdeploy出来るんでいいんですが、そこそこ困ります。</p>
<p>更に、ローカルで実行しようとすると、こんな風に怒られます。</p>
<pre>
java.lang.RuntimeException: Unable to locate the App Engine agent. Please use dev_appserver, KickStart,  or set the jvm flag: "-javaagent:<sdk_root>/lib/agent/appengine-agent.jar"
	at com.google.appengine.tools.development.DevAppServerFactory.testAgentIsInstalled(DevAppServerFactory.java:102)
	at com.google.appengine.tools.development.DevAppServerFactory.createDevAppServer(DevAppServerFactory.java:77)
	at com.google.appengine.tools.development.DevAppServerFactory.createDevAppServer(DevAppServerFactory.java:38)
	at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:154)
	at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
	at com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMain.java:113)
	at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:89)
Caused by: java.lang.NoClassDefFoundError: com/google/appengine/tools/development/agent/AppEngineDevAgent
	at com.google.appengine.tools.development.DevAppServerFactory.testAgentIsInstalled(DevAppServerFactory.java:98)
	... 6 more
Caused by: java.lang.ClassNotFoundException: com.google.appengine.tools.development.agent.AppEngineDevAgent
	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
	... 7 more

</init></sdk_root></pre>
<p>どうやら、VMの引数をちゃんとしろと言っているようです。</p>
<p>プロジェクトを右クリックして、英語の場合は[Run As] &#8211; [Run Configurations] を起動、[(x) = Arguments]タブ （日本語化の場合は[実行] &#8211; [実行の構成...] で[(x)=引数]タブ）で指定できます。</p>
<p>ですが、元々の値が判りませんし入れるのメンドクサイです。</p>
<p>かんたんな対処法は、パッケージエクスプローラ上の「App Engine SDK [App Engine - 1.x.x]を右クリックし、ビルドパスから除去して、プロジェクトのプロパティから再度SDKを指定すれば自動で入りました。</p>
<div id="fb-root"></div>
   <script>
   window.fbAsyncInit = function() {
   FB.init({appId: "135970219784621", status: true, cookie: true,
		 xfbml: true});
	};
 (function() {
  var e = document.createElement("script"); e.async = true;
 e.src = document.location.protocol +
   "//connect.facebook.net/jv_ID/all.js";
 document.getElementById("fb-root").appendChild(e);
}());
</script><span class = ""  style = "  "><fb:like href="http://www.tdtsh.com/blog/archives/1417" send = "false" layout="standard" show_faces="false" width="" action="like" colorscheme="light" font="" /></span>]]></content:encoded>
			<wfw:commentRss>http://www.tdtsh.com/blog/archives/1417/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tdtsh.com/blog/archives/1417" />
	</item>
		<item>
		<title>appengine (java) でEメールを送信するとき、ヘッダの送信日時をGMT+900にしたい</title>
		<link>http://www.tdtsh.com/blog/archives/1406</link>
		<comments>http://www.tdtsh.com/blog/archives/1406#comments</comments>
		<pubDate>Tue, 25 Oct 2011 03:25:14 +0000</pubDate>
		<dc:creator>tdtsh</dc:creator>
				<category><![CDATA[Google App Engine]]></category>

		<guid isPermaLink="false">http://www.tdtsh.com/blog/?p=1406</guid>
		<description><![CDATA[appengine java で 電子メールを送信する際に、ヘッダのDateをJSTにするにはどうすれば・・・。 タイトルそのまんまなんですけど、今のappengineでは出来ないみたいなんです。 GMailとかいまどき [...]]]></description>
			<content:encoded><![CDATA[<p>appengine java で 電子メールを送信する際に、ヘッダのDateをJSTにするにはどうすれば・・・。<br />
タイトルそのまんまなんですけど、今のappengineでは出来ないみたいなんです。</p>
<p>GMailとかいまどきのMUAでは問題ないんですが、Outlookとか根強い人気なんで・・・</p>
<blockquote><p>
appengine sdk java 1.5.4をつかっています。 </p>
<p>当方慣れの問題でLow Level APIでなくjavaMailを使用しております。<br />
受信したメールのヘッダが 1)の様になりますが、2)の様になってほしいです。 </p>
<p>1) Date: Tue, 04 Oct 2011 06:29:38 +0000<br />
2) Date: Tue, 04 Oct 2011 15:29:38 +0900 </p>
<p><a href="https://groups.google.com/forum/?pli=1#!topic/google-app-engine-japan/_OvtkX1QgLw">電子メールを送信(Mail API)するとき、ヘッダの送信日時をGMT+900にしたい &#8211; Google-App-Engine-Japan</a></p>
</blockquote>
<p>&nbsp;<br />
&nbsp;<br />
&nbsp;</p>
<p>一応<strong><a href="http://code.google.com/p/googleappengine/issues/detail?id=6089">issueもあげてみました</a></strong> よかったらスターつけてください。</p>
<p>&nbsp;<br />
&nbsp;</p>
<div id="fb-root"></div>
   <script>
   window.fbAsyncInit = function() {
   FB.init({appId: "135970219784621", status: true, cookie: true,
		 xfbml: true});
	};
 (function() {
  var e = document.createElement("script"); e.async = true;
 e.src = document.location.protocol +
   "//connect.facebook.net/jv_ID/all.js";
 document.getElementById("fb-root").appendChild(e);
}());
</script><span class = ""  style = "  "><fb:like href="http://www.tdtsh.com/blog/archives/1406" send = "false" layout="standard" show_faces="false" width="" action="like" colorscheme="light" font="" /></span>]]></content:encoded>
			<wfw:commentRss>http://www.tdtsh.com/blog/archives/1406/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tdtsh.com/blog/archives/1406" />
	</item>
		<item>
		<title>index が error で appengine にデプロイできないので index を削除</title>
		<link>http://www.tdtsh.com/blog/archives/1384</link>
		<comments>http://www.tdtsh.com/blog/archives/1384#comments</comments>
		<pubDate>Sat, 22 Oct 2011 00:10:11 +0000</pubDate>
		<dc:creator>tdtsh</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[eclipse]]></category>

		<guid isPermaLink="false">http://www.tdtsh.com/blog/?p=1384</guid>
		<description><![CDATA[以前WindowsでGAEのインデックス削除しましがが、Macでもやってみました。 以前Windowsでやった時は （pythonのSDKをインストールすればlancherが入っています。bulkloaderとかも。）、 [...]]]></description>
			<content:encoded><![CDATA[<p>以前<a href="/blog/archives/766">WindowsでGAEのインデックス削除</a>しましがが、Macでもやってみました。</p>
<p>以前Windowsでやった時は （pythonのSDKをインストールすればlancherが入っています。bulkloaderとかも。）、インデックスの削除にかなり時間がかかった記憶がありますが、数分で終わりますね。</p>
<h4>先人の知恵</h4>
<p><a href="http://blog.tyato.jp/2011/10/gaej.html">一日一歩: GAE/Jにてインデックスエラーでデプロイが失敗する場合の対処など</a></p>
<p><a href="http://d.hatena.ne.jp/y-kawaz/20100416/1271401890">GAE/J使いの為のインデックス削除ツール &#8211; y-kawazの日記</a></p>
<div id="fb-root"></div>
   <script>
   window.fbAsyncInit = function() {
   FB.init({appId: "135970219784621", status: true, cookie: true,
		 xfbml: true});
	};
 (function() {
  var e = document.createElement("script"); e.async = true;
 e.src = document.location.protocol +
   "//connect.facebook.net/jv_ID/all.js";
 document.getElementById("fb-root").appendChild(e);
}());
</script><span class = ""  style = "  "><fb:like href="http://www.tdtsh.com/blog/archives/1384" send = "false" layout="standard" show_faces="false" width="" action="like" colorscheme="light" font="" /></span>]]></content:encoded>
			<wfw:commentRss>http://www.tdtsh.com/blog/archives/1384/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tdtsh.com/blog/archives/1384" />
	</item>
	</channel>
</rss>

