<?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>みかんブログ</title>
	<atom:link href="http://studiomikan.net/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://studiomikan.net/blog</link>
	<description>同人ゲームサークル スタジオ蜜柑</description>
	<lastBuildDate>Sat, 19 May 2012 03:20:00 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://studiomikan.net/blog/" />
		<item>
		<title>jQuery + Firefox での offsetX, offsetY</title>
		<link>http://studiomikan.net/blog/?p=708&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=jquery-firefox-%25e3%2581%25a7%25e3%2581%25ae-offsetx-offsety</link>
		<comments>http://studiomikan.net/blog/?p=708#comments</comments>
		<pubDate>Sat, 19 May 2012 03:20:00 +0000</pubDate>
		<dc:creator>おかゆ</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://studiomikan.net/blog/?p=708</guid>
		<description><![CDATA[jQuery の click は、以下のようにしてイベントを受け取れる。 $(hoge).click(function(event){ // 色々やる }); で、このときの event は jQuery.Event オ [...]]]></description>
			<content:encoded><![CDATA[<p>jQuery の click は、以下のようにしてイベントを受け取れる。</p>
<pre class="brush: javascript; gutter: true; first-line: 1; highlight: []; html-script: false">
$(hoge).click(function(event){
	// 色々やる
});
</pre>
<p>で、このときの event は jQuery.Event オブジェクトで、マウスの座標とか取得できる……んだけど、jQuery 的に保証してるのは event.pageX と event.pageY だけで、event.clientX とかはブラウザ標準のイベントが追加されているから入ってるだけらしい。<br />
とくに event.offsetX は Firefox では undefined で取得できない。要素内での座標って結構欲しいと思うんだけどなぁ……</p>
<p>ということで、要素内部での座標が欲しいときは以下の様にしちゃう。</p>
<pre class="brush: javascript; gutter: true; first-line: 1; highlight: []; html-script: false">
$(hoge).click(function(event){
	var offset = $(event.target).offset();
	var offsetX = event.pageX - offset.left;
	var offsetY = event.pageY - offset.top;
});
</pre>
<p>他に良い方法があったら教えてください。</p>
]]></content:encoded>
			<wfw:commentRss>http://studiomikan.net/blog/?feed=rss2&#038;p=708</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://studiomikan.net/blog/?p=708" />
	</item>
		<item>
		<title>プログラミング生放送勉強会 第13回＠愛媛に行ってきました</title>
		<link>http://studiomikan.net/blog/?p=693&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e3%2583%2597%25e3%2583%25ad%25e3%2582%25b0%25e3%2583%25a9%25e3%2583%259f%25e3%2583%25b3%25e3%2582%25b0%25e7%2594%259f%25e6%2594%25be%25e9%2580%2581%25e5%258b%2589%25e5%25bc%25b7%25e4%25bc%259a-%25e7%25ac%25ac13%25e5%259b%259e%25ef%25bc%25a0%25e6%2584%259b%25e5%25aa%259b%25e3%2581%25ab%25e8%25a1%258c%25e3%2581%25a3</link>
		<comments>http://studiomikan.net/blog/?p=693#comments</comments>
		<pubDate>Fri, 06 Apr 2012 10:34:07 +0000</pubDate>
		<dc:creator>おかゆ</dc:creator>
				<category><![CDATA[日記]]></category>

		<guid isPermaLink="false">http://studiomikan.net/blog/?p=693</guid>
		<description><![CDATA[プログラミング生放送勉強会 第13回＠愛媛に参加してきました！ 公式さいとはココ(http://kokucheese.com/event/index/28709/)とかココ(http://pronama.wordpres [...]]]></description>
			<content:encoded><![CDATA[<p>プログラミング生放送勉強会 第13回＠愛媛に参加してきました！<br />
公式さいとはココ(<a href="http://kokucheese.com/event/index/28709/" target="_blank">http://kokucheese.com/event/index/28709/</a>)とかココ(<a href="http://pronama.wordpress.com/2012/02/24/pronama-13-at-ehime/" target="_blank">http://pronama.wordpress.com/2012/02/24/pronama-13-at-ehime/</a>)<br />
別に発表したりするつもりは無くて、ただなんとなく楽しそうだったから行きました。</p>
<p>会場に着くとミクさんがお出迎え。</p>
<p><a href="http://studiomikan.net/blog/wp-content/uploads/2012/04/DSC_2515.jpg"><img src="http://studiomikan.net/blog/wp-content/uploads/2012/04/DSC_2515-1024x680.jpg" alt="" title="プロ生だよ！　みっくみくにしてやんよ！" width="630" height="418" class="alignnone size-large wp-image-694" /></a></p>
<p>始まってすぐ、お菓子食べていーよと言われる。</p>
<p><a href="http://studiomikan.net/blog/wp-content/uploads/2012/04/P1030460.jpg"><img src="http://studiomikan.net/blog/wp-content/uploads/2012/04/P1030460-1024x768.jpg" alt="" title="うひょー！" width="630" height="472" class="alignnone size-large wp-image-696" /></a></p>
<p>うひょー！</p>
<p><a href="http://studiomikan.net/blog/wp-content/uploads/2012/04/P1030529.jpg"><img src="http://studiomikan.net/blog/wp-content/uploads/2012/04/P1030529-1024x768.jpg" alt="" title="うわああああああああ" width="630" height="472" class="alignnone size-large wp-image-702" /></a></p>
<p>気をつけましょう。</p>
<p>当日のセッションは以下の通り。タイトルとかはよく覚えてないので適当です、すみません。</p>
<ul>
<li>Mercurial 入門</li>
<li>C# でパーサコンビネータ作った</li>
<li>i18n のはなし</li>
<li>CoffeeScript のはなし</li>
<li>OAuth と SkyDrive とか</li>
</ul>
<p>どの話も凄くおもしろかったです。「自分にはあんまり関係ないな、あんまり興味ないな」なんて思っていた話でも、セッションが始まって話を聞いているとだんだんと興味が湧いてきて、最後には「帰ったらやってみようかな」なんて思うようになりました。こういうのが勉強会の醍醐味の一つだと思います。単純に視野が広がるんですよね、やっぱり。</p>
<p>Mercurial とか、<strong><span style="color: #ff00ff">俺ってば Git 使ってるし関係ないかな</span></strong>とか思ってました。でも話を聞いてると、<span style="color: #ff00ff"><strong>うわ Git より Mercurial の方がよくね？</strong></span>　なんて思ったり。Mercurial 自体がいいアプリなのも間違いないですが、プレゼンの仕方とか見習いたいですね。あと Mercurial カワイイ。</p>
<p>カワイイと言えば、<strong>プロ生ちゃん！</strong></p>
<p><a href="http://studiomikan.net/blog/wp-content/uploads/2012/04/P1030514_2.jpg"><img src="http://studiomikan.net/blog/wp-content/uploads/2012/04/P1030514_2-1024x962.jpg" alt="" title="プロ生ちゃん！" width="630" height="591" class="alignnone size-large wp-image-703" /></a></p>
<p>ステッカーもらいました。わーい＾＾</p>
<p>セッションが全部終わり、ライトニングトークも終わって、閉会。</p>
<p>そのあとは懇親会！　写真無い……</p>
<p>飲みました。しゃべりました。懇親会は勉強会の醍醐味の一つだと思います。というか懇親会がメインだよね。<br />
いろいろな県、色々な会社の方が来ていらしたので、なかなか聞けない話も聞けたりして楽しかったです。ただちょっと就活就活言い過ぎたと反省。すみません。</p>
<p>行ってみて思いましたが、ニコ生で放送するということ以外は普通の勉強会と同じような感じで、むしろオタクな自分としては過ごしやすい会でした。遠隔でも話が聞けるというのも素晴らしいですよね。</p>
<p>こういう会にもっと早くから行くようにしてればなーとホント切に思います。大学に入ったばかりとかから興味もって参加してれば、今よりもっともっと力ついてたのになーと。大学の後輩とかにも行くように勧めたいですね。</p>
<p>大学にいると、どうしても考えが大学の中だけで完結しちゃうというか、授業以外の知識って吸収しづらい気がします。外の空気も適度に取り入れた方が、大学の勉強に対するモチベーションも上がりやすいようにも思います。</p>
<p>話がそれましたけど、とにかくとても楽しい時間が過ごせました。主催者の方々は本当にお疲れ様でした。また愛媛に来てくれたら、その時は絶対顔出したいと思います。あと広島とかなら日帰りでなんとか行けるかもなぁ。</p>
<p>最後に</p>
<p><a href="http://studiomikan.net/blog/wp-content/uploads/2012/04/P1030654.jpg"><img src="http://studiomikan.net/blog/wp-content/uploads/2012/04/P1030654-1024x768.jpg" alt="" title="C#といえばLINQ" width="630" height="472" class="alignnone size-large wp-image-704" /></a></p>
<p>LINQ 星人だー！！</p>
]]></content:encoded>
			<wfw:commentRss>http://studiomikan.net/blog/?feed=rss2&#038;p=693</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://studiomikan.net/blog/?p=693" />
	</item>
		<item>
		<title>Lua の C プログラムへの組み込み</title>
		<link>http://studiomikan.net/blog/?p=685&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=lua-%25e3%2581%25ae-c-%25e3%2583%2597%25e3%2583%25ad%25e3%2582%25b0%25e3%2583%25a9%25e3%2583%25a0%25e3%2581%25b8%25e3%2581%25ae%25e7%25b5%2584%25e3%2581%25bf%25e8%25be%25bc%25e3%2581%25bf</link>
		<comments>http://studiomikan.net/blog/?p=685#comments</comments>
		<pubDate>Wed, 28 Mar 2012 08:44:04 +0000</pubDate>
		<dc:creator>おかゆ</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Lua]]></category>

		<guid isPermaLink="false">http://studiomikan.net/blog/?p=685</guid>
		<description><![CDATA[自作の言語も良いけど、既存の言語を組み込むのもやってみないとね。 ということで、組み込み用のスクリプト言語は数あれど、とりあえずは Lua かなーということで。 かんきょー Win7 64bit 上の Visual C+ [...]]]></description>
			<content:encoded><![CDATA[<p>自作の言語も良いけど、既存の言語を組み込むのもやってみないとね。<br />
ということで、組み込み用のスクリプト言語は数あれど、とりあえずは Lua かなーということで。</p>
<h3>かんきょー</h3>
<p>Win7 64bit 上の Visual C++ 2010 Express で。Visual C++ 使うの結構久しぶりかも。</p>
<h3>Lua 落としてくる</h3>
<p><a href="http://luabinaries.sourceforge.net/" target="_blank">このへん（http://luabinaries.sourceforge.net/）</a>から Windows 用のバイナリを拾ってくる。今回は組み込みが目的なのでライブラリになってるのを落としてくる。<br />
今回は lua-5.2_Win32_vc10_lib.zip をだうんろーど。</p>
<h3>中身をプロジェクトに足す</h3>
<p>VC++ の設定でフォルダを指定してもいいけど、よそへ持って行った時にいちいち設定し直すのが面倒なので、そのまま全ファイルをプロジェクトにぶっ込んだ。<br />
今回は C のプログラムから呼ぶので lua.hpp は不要。</p>
<h3>基本</h3>
<p>とりあえず外部の Lua スクリプトを呼んでみる。</p>
<pre class="brush: c; gutter: true; first-line: 1; highlight: []; html-script: false">
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;

#define LUA_COMPAT_ALL

#include &quot;lua.h&quot;
#include &quot;luaconf.h&quot;
#include &quot;lualib.h&quot;
#include &quot;lauxlib.h&quot;

int main(int argc, char *argv[])
{
	// Lua の環境を開く
	lua_State* L = luaL_newstate();
	// Lua の標準関数を使う
	luaL_openlibs(L);
	// 外部の Lua スクリプトを読み込む
	if(luaL_loadfile(L, &quot;sample.lua&quot;) || lua_pcall(L, 0, 0, 0))
		perror(lua_tostring(L, -1));
	// 環境を閉じる
	lua_close(L);

	return 0;
}
</pre>
<p>sample.lua はこれだけ。</p>
<pre class="brush: pascal; gutter: true; first-line: 1; highlight: []; html-script: false">
print(&quot;Hello Lua&quot;)
</pre>
<p>実行すんぜ！</p>
<pre>Hello Lua</pre>
<p>わーい(^^)</p>
<h3>Lua の関数とかグローバル変数にアクセスする</h3>
<p>Lua の実行環境はスタックマシンらしい。 C との連携はスタックを経由して行う。<br />
こんな感じ。</p>
<pre class="brush: c; gutter: true; first-line: 1; highlight: []; html-script: false">
/* 関数 hogefunc を C から呼ぶ */
lua_getglobal(L, &quot;hogefunc&quot;);
if(lua_pcall(L, 0, 0, 0)) /* 引数 0 個、戻り値あり、エラー関数なしで実行 */

/* グローバル変数 hogestr を C から参照する */
lua_getglobal(L, &quot;hogestr&quot;);
if(lua_isstring(L, 1)) {
    printf(&quot;hogestr = %s\n&quot;, lua_tostring(L, 1));
}
</pre>
<p>ちょびっとめんどくさいかも……</p>
<h3>で、なに作るの</h3>
<p>ノープラン＼(^o^)／<br />
ただまぁ Lua 組み込みくらいやったことないとなぁと思ってやってみた。<br />
なんか作りたいけど忙しいよう。</p>
]]></content:encoded>
			<wfw:commentRss>http://studiomikan.net/blog/?feed=rss2&#038;p=685</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://studiomikan.net/blog/?p=685" />
	</item>
		<item>
		<title>【メモ】GAE で Unable to restore the previous TimeZone</title>
		<link>http://studiomikan.net/blog/?p=681&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e3%2580%2590%25e3%2583%25a1%25e3%2583%25a2%25e3%2580%2591gae-%25e3%2581%25a7-unable-to-restore-the-previous-timezone</link>
		<comments>http://studiomikan.net/blog/?p=681#comments</comments>
		<pubDate>Thu, 22 Mar 2012 01:42:42 +0000</pubDate>
		<dc:creator>おかゆ</dc:creator>
				<category><![CDATA[Google App Engine]]></category>

		<guid isPermaLink="false">http://studiomikan.net/blog/?p=681</guid>
		<description><![CDATA[なんか Unable to restore the previous TimeZone とかいうエラーが発生して実行できないとき。 Eclipse の起動設定から VM のオプションに以下のオプションを追加する。 -Da [...]]]></description>
			<content:encoded><![CDATA[<p>なんか Unable to restore the previous TimeZone とかいうエラーが発生して実行できないとき。<br />
Eclipse の起動設定から VM のオプションに以下のオプションを追加する。</p>
<pre>-Dappengine.user.timezone=JST</pre>
<p>これで動いた。</p>
]]></content:encoded>
			<wfw:commentRss>http://studiomikan.net/blog/?feed=rss2&#038;p=681</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://studiomikan.net/blog/?p=681" />
	</item>
		<item>
		<title>Android の画像表示で色が変わる現象</title>
		<link>http://studiomikan.net/blog/?p=670&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=android-%25e3%2581%25ae%25e7%2594%25bb%25e5%2583%258f%25e8%25a1%25a8%25e7%25a4%25ba%25e3%2581%25a7%25e8%2589%25b2%25e3%2581%258c%25e5%25a4%2589%25e3%2582%258f%25e3%2582%258b%25e7%258f%25be%25e8%25b1%25a1</link>
		<comments>http://studiomikan.net/blog/?p=670#comments</comments>
		<pubDate>Tue, 13 Mar 2012 14:00:09 +0000</pubDate>
		<dc:creator>おかゆ</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://studiomikan.net/blog/?p=670</guid>
		<description><![CDATA[KAS の画面を眺めていて、ふと「ディザってないか？」と気がつく。調べてみると、いや確かに色数が減っていた。 とりあえず、内部でバッファ的に使っていた Bitmap を ARGB_8888 にした。 それから、Bitma [...]]]></description>
			<content:encoded><![CDATA[<p>KAS の画面を眺めていて、ふと「ディザってないか？」と気がつく。調べてみると、いや確かに色数が減っていた。<br />
とりあえず、内部でバッファ的に使っていた Bitmap を ARGB_8888 にした。<br />
それから、Bitmap を読み込むときに BitmapFactory.Options を指定して読み込む様に変更する。</p>
<pre class="brush: java; gutter: true; first-line: 1; highlight: []; html-script: false">
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inScaled = false;
opt.inDither = false;
opt.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap image = BitmapFactory.decodeStream(fis, null, opt);
</pre>
<p>こんな感じ。<br />
で、これにて一件落着かと思いきや、なーんか色味が違って見える。ディスプレイの違いかと思ったけど、検証してみると明らかに違っていた。</p>
<p><a href="http://studiomikan.net/blog/wp-content/uploads/2012/03/8be63e96f99e24bf999aa128cba08b5d.png"><img src="http://studiomikan.net/blog/wp-content/uploads/2012/03/8be63e96f99e24bf999aa128cba08b5d-1024x1024.png" alt="KAS画像表示検証" title="KAS画像表示検証" width="580" height="580" class="alignnone size-large wp-image-671" /></a></p>
<p>遠目に見るとほとんどわからないんだけど、画像編集して色の差分を取ると微妙に差異があることが判明。<br />
（ちなみに背景が JPEG で立ち絵が PNG です）<br />
ううむなぜだ、もしやハードウェアデコードの差なのかと思い、とりあえず ImageView に JPEG 画像を表示させて検証してみた。</p>
<p><a href="http://studiomikan.net/blog/wp-content/uploads/2012/03/ceea6fea306a2107f29e4ba89e289665.png"><img src="http://studiomikan.net/blog/wp-content/uploads/2012/03/ceea6fea306a2107f29e4ba89e289665.png" alt="KAS画像表示検証2" title="KAS画像表示検証2" width="580" height="255" class="alignnone size-full wp-image-673" /></a></p>
<p>おお、やっぱ微妙に違う。<br />
リファレンスを見ていると、 API Level 10 から BitmapFactory.Options.inPreferQualityOverSpeed というのが追加されてて、これを true にすると処理速度を犠牲にして「正しい JPEG デコード」を行うらしい。でも KAS ってば API Level 4 なのよね。だめじゃん。</p>
<p>じゃあハードのせいなんだからどうしようもないのかなと思いつつ、一応 PNG 画像も同じように検証してみる。<span style="color:#ff009e"><strong>が！　なんと PNG は正しく表示できてしまった。ぎゃーす！</strong></span><br />
うーん、何が原因なんだろう。</p>
]]></content:encoded>
			<wfw:commentRss>http://studiomikan.net/blog/?feed=rss2&#038;p=670</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://studiomikan.net/blog/?p=670" />
	</item>
		<item>
		<title>（メモ）KAG 同梱のシステムボタン改変</title>
		<link>http://studiomikan.net/blog/?p=659&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25ef%25bc%2588%25e3%2583%25a1%25e3%2583%25a2%25ef%25bc%2589kag-%25e5%2590%258c%25e6%25a2%25b1%25e3%2581%25ae%25e3%2582%25b7%25e3%2582%25b9%25e3%2583%2586%25e3%2583%25a0%25e3%2583%259c%25e3%2582%25bf%25e3%2583%25b3%25e6%2594%25b9%25e5%25a4%2589</link>
		<comments>http://studiomikan.net/blog/?p=659#comments</comments>
		<pubDate>Wed, 07 Mar 2012 08:25:39 +0000</pubDate>
		<dc:creator>おかゆ</dc:creator>
				<category><![CDATA[吉里吉里／KAG]]></category>

		<guid isPermaLink="false">http://studiomikan.net/blog/?p=659</guid>
		<description><![CDATA[KAG に同梱されてるシステムボタンプラグイン（systembutton.ks）って、なんでかわかんないけど tempload に対応してないのよね。 なもんで、普通に使ってるとセーブ画面やロード画面を作ってる時に「なん [...]]]></description>
			<content:encoded><![CDATA[<p>KAG に同梱されてるシステムボタンプラグイン（systembutton.ks）って、なんでかわかんないけど tempload に対応してないのよね。<br />
なもんで、普通に使ってるとセーブ画面やロード画面を作ってる時に「なんじゃこりゃ！」ってなる。<br />
具体的には tempsave したのを tempload backlay=true したのに普通に表画面にロードしやがる。<br />
回避策は二つ。</p>
<ul>
<li>tempsave の前にシステムボタンを裏表共に消しておく</li>
<li>プラグインを tempload に対応させる</li>
</ul>
<p>改変するなら以下の様に。間違ってても責任は取れないです！</p>
<pre class="brush: javascript; gutter: true; first-line: 1; highlight: []; html-script: false">
function onRestore(f, clear, elm)
{
    // 栞を読み出すとき
    var dic = f.systemButtons;
    if(dic === void)
    {
        // systemButtons の情報が栞に保存されていない
        setObjProp(foreButtons, &#039;visible&#039;, foreSeen = false);
        setObjProp(backButtons, &#039;visible&#039;, backSeen = false);
    }
    else
    {
        // systemButtons の情報が栞に保存されている
        // オプションを設定
        if(elm != void &amp;&amp; elm.backlay)    // tempload で裏画面
            setOptions(%[ forevisible : dic.backVisible, backvisible : dic.foreVisible, left : dic.left, top : dic.top]);
        else
            setOptions(%[ forevisible : dic.foreVisible, backvisible : dic.backVisible, left : dic.left, top : dic.top]);
    }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://studiomikan.net/blog/?feed=rss2&#038;p=659</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://studiomikan.net/blog/?p=659" />
	</item>
		<item>
		<title>Google App Engine for Java 始めますか</title>
		<link>http://studiomikan.net/blog/?p=645&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=google-app-engine-for-java-%25e5%25a7%258b%25e3%2582%2581%25e3%2581%25be%25e3%2581%2599%25e3%2581%258b</link>
		<comments>http://studiomikan.net/blog/?p=645#comments</comments>
		<pubDate>Mon, 20 Feb 2012 06:36:36 +0000</pubDate>
		<dc:creator>おかゆ</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://studiomikan.net/blog/?p=645</guid>
		<description><![CDATA[色々あって Google App Engine をやることになったので、勉強メモとして残すことにします。 これまで Web 系の勉強はほとんどしたことがなくて、基本的なところから全然わかってないです。 なので、間違いとか [...]]]></description>
			<content:encoded><![CDATA[<p>色々あって Google App Engine をやることになったので、勉強メモとして残すことにします。</p>
<p>これまで Web 系の勉強はほとんどしたことがなくて、基本的なところから全然わかってないです。<br />
なので、間違いとか勘違いとか恥ずかしい説明とか死んだほうがいいコードとかあっても生暖かい目で蔑んでください。</p>
<p>あと殆どメモ書きなのであんま参考にはならないかもです。</p>
<h3>基本</h3>
<p>GAE for Java は基本的にサーブレット + JSP らしい。<span style="color: #ff00ff;">そもそもやったことがないがな……</span>がんばろう。<br />
エディタと Ant でも開発できるようにされてるらしいけど、素直に Eclipse 使ったほうが賢明か。</p>
<p>必要なのは App Engine SDK。<br />
で、 Eclipse 用のプラグイン Google Plugin for Eclipse に App Engine SDK が含まれてるので、こっちをインストールすればいいだけ。<br />
Tomcat とかも入れなくていいっぽい。</p>
<h3>サーブレット基本</h3>
<p>サーブレット作るときは、 javax.servlet.HttpServlet を継承したクラスを作る。<br />
一つのサーブレットが一つのページに対応するような感じにするのが基本。そうじゃないこともあるっぽいけど。<br />
で、 doGet とか doPost とかの doHOGE メソッドをオーバーライドして、各リクエストに対する処理を記述する。</p>
<p>そのままでは「どのクラスがどのページに対応するのか」がわからないので、サーブレットの定義を web.xml に記述する。</p>
<h3>JSTL</h3>
<p>JSTL(JSP Standard Tag Library) は、 JSP の中で使われることを想定したカスタムタグのライブラリ、らしい。<br />
使うためには JSP の先頭での宣言が必要。</p>
<pre class="brush: html; gutter: true; first-line: 1; highlight: []; html-script: false">
&lt;%-- JSTL の利用を宣言 --%&gt;
&lt;%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jsp/jstl/core&quot; %&gt;
</pre>
<p>こんな感じ。<br />
色々機能はあるみたいだけど、とりあえず &lt;c:out&gt; タグを使った。このタグは特殊文字をエスケープしてくれる = クロスサイトスクリプティングの防止になるのでなるべく使うべき。 JSP 標準の &lt;%= %&gt; タグでも表示自体はできるが、エスケープはしてくれない。あぶない。</p>
<h3>JSP でのリダイレクト</h3>
<pre class="brush: html; gutter: true; first-line: 1; highlight: []; html-script: false">
&lt;% response.sendRedirect(&quot;/index&quot;); %&gt;
</pre>
<h3>文字化け対策</h3>
<p>Web アプリでも当然文字化けは起こる。回避するには、サーブレットフィルタを用いると良い。<br />
サーブレットフィルタとは、サーブレットが呼び出される前にブラウザから送信されたデータを加工するための Javaの機能。<br />
javax.servlet.Filter を実装したクラスを用意して、web.xml で登録する。<br />
詳しくは Web で（ぇ</p>
<h3>所感</h3>
<p>Web 系ってこう、ちょっとでも知らないことがあるとユーザーを危険に晒すからちょっと怖いんですよね。<br />
でも今の流行というかスタンダードというか、もう「あって当たり前」みたいになってきてるので、ちょっとは知っとかないとヤバイぜよってことで勉強しときます。<br />
最終的にはソシャゲっぽいものも作ってみたい。</p>
]]></content:encoded>
			<wfw:commentRss>http://studiomikan.net/blog/?feed=rss2&#038;p=645</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://studiomikan.net/blog/?p=645" />
	</item>
		<item>
		<title>Android タブレット（TF101）をテキスト編集に使う</title>
		<link>http://studiomikan.net/blog/?p=615&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=android-%25e3%2582%25bf%25e3%2583%2596%25e3%2583%25ac%25e3%2583%2583%25e3%2583%2588%25ef%25bc%2588tf101%25ef%25bc%2589%25e3%2582%2592%25e3%2583%2586%25e3%2582%25ad%25e3%2582%25b9%25e3%2583%2588%25e7%25b7%25a8%25e9%259b%2586%25e3%2581%25ab%25e4%25bd%25bf%25e3%2581%2586</link>
		<comments>http://studiomikan.net/blog/?p=615#comments</comments>
		<pubDate>Sat, 04 Feb 2012 10:34:41 +0000</pubDate>
		<dc:creator>おかゆ</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://studiomikan.net/blog/?p=615</guid>
		<description><![CDATA[TF101 でシナリオとか書いてやるぞー！　というもくろみ。 きっかけ 今回 TF101 を買った理由の一つに、先日買ったポケモンタイピングDS のキーボードが想像以上に良かったというのがあります。 Bluetooth  [...]]]></description>
			<content:encoded><![CDATA[<p>TF101 でシナリオとか書いてやるぞー！　というもくろみ。</p>
<h3>きっかけ</h3>
<p>今回 TF101 を買った理由の一つに、先日買ったポケモンタイピングDS のキーボードが想像以上に良かったというのがあります。<br />
Bluetooth + Galaxy S でもそこそこテキストが打てたので、じゃあタブレットなら完璧じゃないの？　と思ったわけです。</p>
<p>それから『NOeSIS～嘘を吐いた記憶の物語～』という超面白いゲームがあるわけですが、クリア後のオマケモードで<br />
「この話は IS03 のメール機能を使ってちょこちょこ書きためました」<br />
的なことが書いてあって、ええええ嘘だろ！？　と。おいおいと。マジかよと。弘法筆を選ばないにもほどがあるだろうと。<br />
じゃあ僕も！　と思ったわけですが、さすがに SP モードメール＆キーボード無しはキツイので、できるだけ快適な環境を整えよう、<br />
とまぁ、そういう経緯なわけです。</p>
<h3>エディタの選択</h3>
<p>少し前までは gEditor を使っていたのですが、最近 Jota Text Editor に乗り換えました。<br />
基本的なエディタとしての機能は押さえていて、個人的には黒背景にできるのがナイスです。<br />
とりあえず今は Jota Text Editor 一択なんじゃないでしょうか。</p>
<h3>日本語 IME の選択</h3>
<p>エディタは Jota でいいとして、問題は IME。<br />
Android の 日本語 IME は色々と乱立していて、皆さん好みの IME があることと思います。<br />
ちなみに僕は普段は ATOK です。Bluetooth キーボードを使う時は何がいいの？<br />
ってことで、いくつか試してみました。</p>
<div id="attachment_623" class="wp-caption alignnone" style="width: 640px"><a href="http://studiomikan.net/blog/wp-content/uploads/2012/02/P20120201211911.png"><img src="http://studiomikan.net/blog/wp-content/uploads/2012/02/P20120201211911-1024x640.png" alt="ATOK" title="ATOK" width="630" height="393" class="size-large wp-image-623" /></a><p class="wp-caption-text">ATOK</p></div>
<div id="attachment_622" class="wp-caption alignnone" style="width: 640px"><a href="http://studiomikan.net/blog/wp-content/uploads/2012/02/P20120201210356.png"><img src="http://studiomikan.net/blog/wp-content/uploads/2012/02/P20120201210356-1024x640.png" alt="Simeji" title="Simeji" width="630" height="393" class="size-large wp-image-622" /></a><p class="wp-caption-text">Simeji</p></div>
<div id="attachment_621" class="wp-caption alignnone" style="width: 640px"><a href="http://studiomikan.net/blog/wp-content/uploads/2012/02/P20120201205944.png"><img src="http://studiomikan.net/blog/wp-content/uploads/2012/02/P20120201205944-1024x640.png" alt="Google 日本語入力" title="Google 日本語入力" width="630" height="393" class="size-large wp-image-621" /></a><p class="wp-caption-text">Google 日本語入力</p></div>
<p>これ以外に Open Wnn もやろうと思ったんですが、なんか面倒くさくなってやりませんでした。<br />
見てもらうとわかりますが、Google 日本語入力 Beta はちょっと残念な感じ。<br />
Simeji は、なんか最近のアップデートで変換候補が随分小さく表示されるようになったらしく、実用的で無い。<br />
ATOK はとっても良い感じ。ステキ。</p>
<p>ということで、 IME は ATOK でいいんじゃないかなーと。<br />
高い？　日本人なら ATOK は買いなよ！　他の何を差し置いても！　特に物書きならな！</p>
<h3>キーボードの選択</h3>
<p>自分は Bluetooth キーボードは一つしか持ってないので選択の余地とか無いんですが、<br />
とりあえずポケモンタイピングDS のキーボードは打ちやすくて良いですよ。安いし。<br />
あとオマケのゲームも面白いし。</p>
<h3>実際に書いてみる</h3>
<p>ちなみに筆者の PC での環境は ATOK + 秀丸エディタです。<br />
で、それと比べるとどうなのかというと、割と違和感なく使える感じ。<br />
変換後の候補選択が上下キーだったり、候補確定が Enter だったり、細かい違いはありますが、そこは慣れ。</p>
<p>あと、Jota Text Editor のおかげなのか、普通にショートカットキーが使えます。<br />
Ctrl + x で切り取り、 Ctrl + c でコピー、 Ctrl + v で貼り付けとか。<br />
あと Ctrl + s で上書き保存も行けます。これ大事。<br />
Galaxy S の時は Ctrl のショートカットキーが使えず、Menu + s とかで保存でした。<br />
普通の Bluetooth キーボードには Menu キーがついてないので F1 でメニューを出して、それから s で保存、という面倒な操作。<br />
慣れ親しんだ Ctrl + s が使えるのはありがたい。</p>
<p>基本的に Jota Text Editor の出来が良く、 ATOK もそこそこなので、僕のようなにわかライターにはちょうど良い感じ。</p>
<h3>ということで</h3>
<p>今書いているシナリオは途中から TF101 で書いてます。告知はいつになるかわかんないけど、おもしろい企画ですよー。<br />
皆さんも Android 端末を持ってるなら、 Bluetooth キーボード＋Jota+ATOK で快適に日本語を書いてみませんか。</p>
]]></content:encoded>
			<wfw:commentRss>http://studiomikan.net/blog/?feed=rss2&#038;p=615</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://studiomikan.net/blog/?p=615" />
	</item>
		<item>
		<title>ASUS Eee Pad Transformer TF101 を買いました</title>
		<link>http://studiomikan.net/blog/?p=604&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=asus-eee-pad-transformer-tf101-%25e3%2582%2592%25e8%25b2%25b7%25e3%2581%2584%25e3%2581%25be%25e3%2581%2597%25e3%2581%259f</link>
		<comments>http://studiomikan.net/blog/?p=604#comments</comments>
		<pubDate>Wed, 01 Feb 2012 09:34:38 +0000</pubDate>
		<dc:creator>おかゆ</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://studiomikan.net/blog/?p=604</guid>
		<description><![CDATA[TF201 という後継機が出ていることを知りつつ、前モデルである TF101 を購入しました。 なにげに初タブレット＆初 ASUS 端末＆初 Android 3.x です。 タブレットたのしー！ 今まで Galaxy S [...]]]></description>
			<content:encoded><![CDATA[<p>TF201 という後継機が出ていることを知りつつ、前モデルである TF101 を購入しました。<br />
なにげに初タブレット＆初 ASUS 端末＆初 Android 3.x です。</p>
<p><a href="http://studiomikan.net/blog/wp-content/uploads/2012/02/2012-01-30-18.12.39.jpg"><img src="http://studiomikan.net/blog/wp-content/uploads/2012/02/2012-01-30-18.12.39-300x225.jpg" alt="TF101" title="TF101" width="300" height="225" class="alignnone size-medium wp-image-611" /></a></p>
<p>タブレットたのしー！<br />
今まで Galaxy S で色々とやってましたが、ブラウジングやテキスト編集、PDS 閲覧なんかは断然やりやすいです。当然といえば当然なんですが。<br />
ありがたかったのは、普通に使うぶんには Tegra2 で十分だったこと。ボロクソいわれてる Tegra2 ですが、とりあえず動くのでよし。<br />
ただし動画再生だけはさようなら。</p>
<p>とにかく。なけなしの貯蓄で買ったので、色々といじってうまく活用していきたいです。</p>
]]></content:encoded>
			<wfw:commentRss>http://studiomikan.net/blog/?feed=rss2&#038;p=604</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://studiomikan.net/blog/?p=604" />
	</item>
		<item>
		<title>Java のプログラムは自分自身のパスを取得できない？</title>
		<link>http://studiomikan.net/blog/?p=584&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=java-%25e3%2581%25ae%25e3%2583%2597%25e3%2583%25ad%25e3%2582%25b0%25e3%2583%25a9%25e3%2583%25a0%25e3%2581%25af%25e8%2587%25aa%25e5%2588%2586%25e8%2587%25aa%25e8%25ba%25ab%25e3%2581%25ae%25e3%2583%2591%25e3%2582%25b9%25e3%2582%2592%25e5%258f%2596%25e5%25be%2597%25e3%2581%25a7%25e3%2581%258d%25e3%2581%25aa%25e3%2581%2584</link>
		<comments>http://studiomikan.net/blog/?p=584#comments</comments>
		<pubDate>Sun, 29 Jan 2012 07:01:50 +0000</pubDate>
		<dc:creator>おかゆ</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://studiomikan.net/blog/?p=584</guid>
		<description><![CDATA[たとえば以下のようなファイル構成を考える。 hoge/ └─piyo/ ├─KAS4PC.jar └─data/ このとき、KAS4PC.jar から data ディレクトリを参照したい。当然、こんな風にしたくなる。 F [...]]]></description>
			<content:encoded><![CDATA[<p>たとえば以下のようなファイル構成を考える。</p>
<pre>hoge/
└─piyo/
  ├─KAS4PC.jar
  └─data/</pre>
<p>このとき、KAS4PC.jar から data ディレクトリを参照したい。当然、こんな風にしたくなる。</p>
<pre class="brush: java; gutter: true">File file = new File(&quot;./data&quot;);</pre>
<p>一見これでうまく動きそうな感じで、実際、hoge/piyo の位置から以下のように起動すれば正しく動く。</p>
<pre>&gt;java -jar KAS4PC.jar</pre>
<p>だけど、一つ上の hoge ディレクトリから起動するとダメ。</p>
<pre>&gt;java -jar piyo/KAS4PC.jar</pre>
<p>なんでかっていうと、このときの ./ のパスは hoge になってるから。オーマイガ―。いちいちプログラムのある階層まで降りて起動しないと動かないとかないわー。</p>
<h3>Java でがんばってみる</h3>
<p>なんとかならんのかーい！　ということで、 Java でどうにかしようとがんばってみる。</p>
<pre class="brush: java; gutter: true">public class Main
{
	public static void main(String[] args)
	{
		// 自分自身のクラスファイルを取得する
		URL url = Main.class.getResource(&quot;Main.class&quot;);
		File file = new File(url.getPath());
		String path = file.getAbsolutePath();
		System.out.println(path);
	}
}</pre>
<p>と、こんな感じで<span style="color: #ff00ff;">自分自身のクラスファイルをリソースとして取得して、そこを基点にパスを取得してやろう</span>という試み。いいぞ、なんとなくうまくいきそうだ。</p>
<p>うまくいきそうだったのに、プログラムを jar にまとめた状態で起動すると、うまくいかない。 jar にするときになにか工夫すればできるのかもしれないけど、<span style="color: #3366ff;"><strong>僕にはわからなーい！</strong></span><em><strong>　断念！</strong></em></p>
<h3>しょうがないから外から渡す</h3>
<p>「僕には無理だ……」となったので、しょうがないのでプログラムの外からコマンドライン引数で与える方向で考える。いつか勉強しようと思っていたバッチファイルだけど、まぁ知らない。ググる。どうやら %0 が特殊変数で、バッチファイル自身のパスが入っているらしい。なので、こいつに色々と修飾子をつけてやってパスを取得する。</p>
<pre>%0   : バッチファイル自身のパス
%~d0 : %0 をドライブ名だけに展開する
%~p0 : %0 をパスだけに展開する</pre>
<p>ということなので、以下のようにすればパスが取得できる。</p>
<pre>%~d0%~p0</pre>
<p>最終的にはこんな感じ。</p>
<pre>@echo off
java -jar %~d0%~p0KAS4PC.jar %~d0%~p0data
@echo on</pre>
<p>java の存在確認とか全くしてないけど、とりあえず起動自体はできた。よかったよかった。</p>
<p>Windows 用ができたので、Linux/Mac OS X 用のシェルスクリプトも適当に書く。 <strong><span style="color: #ff00ff;">いつか勉強しようと思っていたシェルスクリプトだけど、まぁ知らない。</span></strong> ググって書く。</p>
<p>こんな感じ？</p>
<pre>SCRIPTPATH=`dirname $0`
java -jar ${SCRIPTPATH}/KAS4PC.jar ${SCRIPTPATH}/data</pre>
<p>なんか偉い人に怒られそうな適当なスクリプトだけど、まぁとりあえず動くのでよしとする。</p>
]]></content:encoded>
			<wfw:commentRss>http://studiomikan.net/blog/?feed=rss2&#038;p=584</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://studiomikan.net/blog/?p=584" />
	</item>
	</channel>
</rss>

