<?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/"
	>

<channel>
	<title>OTCHY.NET &#187; javascript</title>
	<atom:link href="http://www.otchy.net/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.otchy.net</link>
	<description>Otchy の技術ネタ。JavaScript 率と Twitter 率がやや高く、他にも PHP/Java/Perl などなど。共通点は Web。</description>
	<lastBuildDate>Wed, 01 Feb 2012 14:39:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>複数のバージョンの jQuery を共存させる方法</title>
		<link>http://www.otchy.net/20111004/multiple-versions-of-jquery/</link>
		<comments>http://www.otchy.net/20111004/multiple-versions-of-jquery/#comments</comments>
		<pubDate>Tue, 04 Oct 2011 02:19:14 +0000</pubDate>
		<dc:creator>Otchy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.otchy.net/?p=1459</guid>
		<description><![CDATA[古いアプリをメンテしてて、元々の jQuery のバージョンが 1.0 だの 1.1 だのだとすごく残念な気持ちになりますね。やっぱり、最新の jQuery でサクサク書きたいものです。
バージョンを上げてしまえればいい [...]]]></description>
			<content:encoded><![CDATA[<p>古いアプリをメンテしてて、元々の jQuery のバージョンが 1.0 だの 1.1 だのだとすごく残念な気持ちになりますね。やっぱり、最新の jQuery でサクサク書きたいものです。<br />
バージョンを上げてしまえればいいんですが、動作確認の手間まで考えると、そこまでやる時間もない。いま、ちょっとこの画面だけ手直し出来ればいいんだけど…という場合は、複数のバージョンの jQuery を共存させてしまいましょう。</p>
<p>jQuery には $ の競合を避けるための jQuery.noConflict という function が用意されていますが、これに引数で true を渡すと、window.jQuery オブジェクトの競合も避けるように動作します。</p>
<p>ですので以下のように書けば、複数のバージョンの jQuery が共存出来ます。<br />
現実的にやる事はないと思いますが、onload を追加する事で、3つでも 4 つでも共存可能という事です。</p>
<pre>
&lt;script&gt;
$(function() {
    var func = function() {
        <span style="color:green">// 実際に動作させたい部分</span>
        var $16 = jQuery.noConflict(<span style="color:blue">true</span>);
        alert($.fn.jquery);  <span style="color:green">// old version</span>
        alert($16.fn.jquery);  <span style="color:green">// ver 1.6</span>
    }
    <span style="color:green">// 使いたいバージョンの jQuery を用意し、load イベントを設定</span>
    var s = $('&lt;script&gt;').attr('src', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js').load(func).get(0);
    <span style="color:green">// IE の場合は script の onload が発生しないので onreadystatechange で検知</span>
    s.onreadystatechange = function() {
        if (this.readyState == 'loaded' || this.readyState == 'complete') {
            func();
        }
    }
    <span style="color:green">// jQuery.append だと load イベントが発生しない(？)ようなので、生 DOM で head に script を追加</span>
    $('head').get(0).appendChild(s);
});
&lt;/script&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.otchy.net/20111004/multiple-versions-of-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TwitMgr Ver.2.0.0 をリリース</title>
		<link>http://www.otchy.net/20110831/twitmgr-ver-200-had-released/</link>
		<comments>http://www.otchy.net/20110831/twitmgr-ver-200-had-released/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 07:57:29 +0000</pubDate>
		<dc:creator>Otchy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.otchy.net/?p=1398</guid>
		<description><![CDATA[Twitter API の仕様変更により動作しなくなっていた TwitMgr をフルスクラッチで書き直して Ver.2.0.0 としてリリースしました。
Ver.2 を名乗る割に、機能的には Ver.1 を踏襲しただけと [...]]]></description>
			<content:encoded><![CDATA[<p>Twitter API の仕様変更により動作しなくなっていた <a href="/twitmgr/" target="_blank">TwitMgr</a> をフルスクラッチで書き直して Ver.2.0.0 としてリリースしました。</p>
<p>Ver.2 を名乗る割に、機能的には Ver.1 を踏襲しただけというのが残念ではありますが、適宜先読みを行ったり、取得したデータをキャッシュする事で、従来版よりキビキビと動くようになっています。<br />
その分、メモリの消費は増えているのですが、昨今のトレンドに沿った修正ですし問題ないと思っています。</p>
<p>デザインに関しては、HTML5 / CSS3 の構成で作っています。最近、個人でサイトを作る時は全力で IE を無視するので、HTML5 / CSS3 の機能を存分に使えて気持ちいいです。</p>
<p>今回、webkit に限ってですが、transition を初めて使ってみました。これ、これまで食わず嫌いで使ってなかったのを後悔しましたよ。「あっても無くても機能には支障ないけど、あるとちょっと嬉しいワンポイントアニメ」とかが、楽に表現出来ます。<br />
散々言われていた事ですが、自分で使ってみて初めて本当に理解するっていう感じです。</p>
<p>それと、CSS3 を使い込んで頑張ってみたのがツールバー＆タブのデザイン。</p>
<p><a href="http://www.otchy.net/wp-content/uploads/2011/08/twitmgr_01.png"><img src="http://www.otchy.net/wp-content/uploads/2011/08/twitmgr_01-300x72.png" alt="" title="ツールバー" width="300" height="72" class="aligncenter size-medium wp-image-1399" /></a></p>
<p>これを画像無しに表現出来るようになるとは驚きです。<br />
ツールバー部分だけを抜き出してみれば、マークアップもシンプルです。</p>
<pre>
&lt;h3 class=&quot;tab selected&quot;&gt;フォローしている&lt;/h3&gt;
&lt;h3 class=&quot;tab &quot;&gt;フォローされている&lt;/h3&gt;
&lt;div class=&quot;toolbar&quot;&gt;&lt;/div&gt;
</pre>
<p>最近の Web デザイン系の記事に触発されて 1px のラインを入れてみたりしてます。<br />
この CSS だけ取り出しても面白いかと思うので、そこはまた別の記事におこします。</p>
<p>最後に、ソーシャル系のボタンとして、はてブ・Twitter・Facebook を付けてみました。<br />
それぞれ公式のスクリプトを生成して貼り付けた感じですが、はてブと Facebook は URL とかページタイトルの指定が固定で入るような形だったので、そこは動的に取るようにしています。</p>
<p>その点、Twitter のボタンはどんなページでも共通のスクリプトを貼り付けるだけでよいので楽ですね。一方、「このサイトのボタンは、どんなページにあってもサイトのトップに対するボタンにしたい」ってのが Twitter だとできないです。<br />
まあ、プロモーション上、サイトのトップにソーシャルのアクセスを集中させたい気持ちは分からないではないんですが、ユーザは「今見てるページ」をブクマしたかったり「いいね！」したかったりすると思うので、そういうのは避けたいです。</p>
<p>さて、せっかく TwitMgr 自体を綺麗に書き直したので、今後は少し機能拡張もやろうと思ってます。<br />
初代 TwitMgr リリース時点では機能が存在していなかったリストへの対応とスパム報告への対応が当面の目標です。<br />
この 2 つは、いま自分で TwitMgr を使うにあたって欲しいと思ってる機能なので、確実に実現させると思います。<br />
その他にも何かフィードバックがあれば、是非教えて下さい。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.otchy.net/20110831/twitmgr-ver-200-had-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TwitAPI.js Ver.0.2.0 リリース／taj-proxy build5 リリース</title>
		<link>http://www.otchy.net/20110826/twitapi-js-ver-020-taj-proxy-build5/</link>
		<comments>http://www.otchy.net/20110826/twitapi-js-ver-020-taj-proxy-build5/#comments</comments>
		<pubDate>Fri, 26 Aug 2011 05:49:31 +0000</pubDate>
		<dc:creator>Otchy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.otchy.net/?p=1395</guid>
		<description><![CDATA[JavaScript から気軽に Twitter API を利用するためのライブラリ、TwitAPI.js の Ver.0.2.0 をリリースしました。
TwitAPI.js はその仕組み上、プロキシサーバを経由して T [...]]]></description>
			<content:encoded><![CDATA[<p>JavaScript から気軽に Twitter API を利用するためのライブラリ、<a href="/javascript/twit-api/">TwitAPI.js</a> の Ver.0.2.0 をリリースしました。<br />
TwitAPI.js はその仕組み上、プロキシサーバを経由して Twitter API にアクセスしているのですが、メソッドが GET で認証不要な API の場合、Twitter API を直接 JSONP で利用する事が出来るので、それを可能にするアップデートです。</p>
<p>また同時に、TwitAPI.js 用プロキシサーバである <a href="http://code.google.com/p/taj-proxy/" target="_blank">taj-proxy</a> も、build 5 を公開しています。<br />
これは、TwitAPI.js 本体の更新とは関係なくて、従来、Twitter API にアクセスする URL として固定で https://twitter.com/&#8230; となっていたのを、現在の正しいドメインである、https://api.twitter.com/&#8230; に変更したという対応です。<br />
これをしないと最新の API が利用出来ずに困った事になっていました。</p>
<p>しばらく放置していたのですが、最近ちょっと時間が出来て <a href="/twitmgr/" target="_blank">TwitMgr</a> のリライトを再開出来たので、それに合わせたアップデートになります。</p>
<p>というわけで次は TwitMgr の新バージョンを報告出来るといいのですが、それはまだ先の話。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.otchy.net/20110826/twitapi-js-ver-020-taj-proxy-build5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Greasemonkey をインストールせずに試すブックマークレット</title>
		<link>http://www.otchy.net/20110822/gm-test-bookmarkle/</link>
		<comments>http://www.otchy.net/20110822/gm-test-bookmarkle/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 07:09:02 +0000</pubDate>
		<dc:creator>Otchy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[bookmarklet]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.otchy.net/?p=1390</guid>
		<description><![CDATA[Gresemonkey (など) のスクリプトをインストールすることなく任意のサイトでちょこっと試すためのブックマークレット。
起動すると、user.js の URL を聞いてくるので、入力すると今開いているページにその [...]]]></description>
			<content:encoded><![CDATA[<p>Gresemonkey (など) のスクリプトをインストールすることなく任意のサイトでちょこっと試すためのブックマークレット。<br />
起動すると、user.js の URL を聞いてくるので、入力すると今開いているページにそのスクリプトを読み込みます。<br />
単にその user.js をそのページに追加するだけの単純な仕組みなので、GM_* 等への対応はありません。</p>
<p>任意のサイトを対象とした user.js を書くにあたって、自分のテストを楽にするために書きました。</p>
<p><a href="javascript:(function(d){var%20a=prompt('Enter%20script%20URL.');if(a){var%20s=d.createElement('script');s.src=a;d.getElementsByTagName('head')[0].appendChild(s);}})(document);">GM Test</a></p>
<pre>
javascript:(function(d){var%20a=prompt('Enter%20script%20URL.');if(a){var%20s=d.createElement('script');s.src=a;d.getElementsByTagName('head')[0].appendChild(s);}})(document);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.otchy.net/20110822/gm-test-bookmarkle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GoogleFloatingForm Ver.1.1.0 を公開</title>
		<link>http://www.otchy.net/20110722/googlefloatingform-110-released/</link>
		<comments>http://www.otchy.net/20110722/googlefloatingform-110-released/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 02:28:20 +0000</pubDate>
		<dc:creator>Otchy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.otchy.net/?p=1377</guid>
		<description><![CDATA[現在の Google の SERPs に対応した GoogleFloatingForm を公開しました。
検索結果をスクロールしても検索窓がついてくるっていう例のアレです。
旧版までは、アニメーションとか使ってそれらしく [...]]]></description>
			<content:encoded><![CDATA[<p>現在の Google の SERPs に対応した <a href="/greasemonkey/googlefloatingform/">GoogleFloatingForm</a> を公開しました。<br />
検索結果をスクロールしても検索窓がついてくるっていう例のアレです。</p>
<p>旧版までは、アニメーションとか使ってそれらしく見せていたんですが、今バージョンからは単に position:fixed で固定しています。Google のデザインがどんどんシンプルになっていくので、それに合わせたというか、ぶっちゃけていうと DOM が大きく変わったのでそれに追随するのが面倒だったというか。</p>
<p>なので実装としては、動的に CSS を追加しているだけなので、そんなんユーザスタイルシートとかでやれよ、ってのはごもっともな指摘ですが、まあ誰でもワンクリックで適用出来るっていうメリットが大きいのでいいのです。</p>
<p>ところで、ずっと Chrome で動作確認していて、使いながらバグを取ってそろそろいいかな、と思ったので公開に踏み切ったわけですが、最後に Firefox で確認してみるとこれが予想以上にぼろぼろでした。<br />
position: fixed の挙動に関して、そんなに違いがあるんでしょうかね？</p>
<p>SERPs の DOM の入れ子の状態が、見た目から予測される入れ子と大きく違っていたせいで、色々と position をいじり倒しているせいかもしれません。<br />
なので、Firefox の方はごめんなさい。上手く動いてません。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.otchy.net/20110722/googlefloatingform-110-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>はてブエントリーページを旧仕様っぽくする Greasemonkey</title>
		<link>http://www.otchy.net/20110608/hatebu-downgrader-101-had-released/</link>
		<comments>http://www.otchy.net/20110608/hatebu-downgrader-101-had-released/#comments</comments>
		<pubDate>Wed, 08 Jun 2011 02:01:00 +0000</pubDate>
		<dc:creator>Otchy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[はてブ]]></category>

		<guid isPermaLink="false">http://www.otchy.net/?p=1337</guid>
		<description><![CDATA[はてブエントリーページを旧仕様っぽくする Greasemonkey である、はてブエントリーページ旧仕様化 を公開しました。
リリース直後から、様々な非難を受けていた現仕様のはてブエントリーページですが、あれほどの反応に [...]]]></description>
			<content:encoded><![CDATA[<p>はてブエントリーページを旧仕様っぽくする Greasemonkey である、<a href="/greasemonkey/hatebu-entry-page-downgrader/"">はてブエントリーページ旧仕様化</a> を公開しました。</p>
<p>リリース直後から、様々な非難を受けていた現仕様のはてブエントリーページですが、あれほどの反応にもかかわらず、リリースから 2 ヶ月経っても、旧仕様を選べるようにするなどの対応は取られていないようです。</p>
<p>個人的な感想で言うと、旧仕様の時もスターの数を頼りに流し読みする事もあったし、完全否定という立場ではないのですが、はてブの伸びを表すグラフとか良く見てたので、それが見れないのと、やはり多くの指摘にあるように、時系列でブコメを追いたい時にいちいち違うページを開くのが面倒という思いがありました。</p>
<p>そして 2 ヶ月。1 クリックごとのフラストレーションが、徐々に溜まり続けました。</p>
<p>2 ヶ月経ってもはてなからは特に動きが無いので、これはもう「こっち (運営) でやる気はないから、どうにかしたいならそっち (ユーザ) で何とかしな！」というはてなからの挑戦だと受け取り、上記のスクリプトを書きました。</p>
<p>単に、「すべてのブックマークを見る」にリダイレクトするのではなく、現状のエントリーページの中に、全てのブックマークをスムーズに統合して、出来る限り (記憶にある限り) 旧仕様に近づけているのが特徴です。<br />
「人気のブックマークコメント」情報はあっても良いかと思ったので、項目自体は残しつつ、不要な時は閉じられるように配慮しています。</p>
<p>当初、もう少し簡単に出来るかなと思っていた部分が、案外難しく、はてブ側のスクリプトの中にまで手を入れて実現している機能とかがあります。<br />
はてなで作って使っている JavaScript のライブラリに妙に詳しくなったりしつつ、試行錯誤を繰り返し、ようやく公開出来るレベルにまでなりました。</p>
<p>現仕様のエントリーページに苦々しい思いを持っている方は、是非おためし下さい。</p>
<h4>はてなの方へ</h4>
<p>上で色々と生意気な事を書きましたが、公式に対応して旧仕様を選べるようにしてもらえるのがベストに決まっています。<br />
公式に対応されればこちらでもアナウンスして、公式機能の利用を促すようにするので、サーバに負荷をかける部分もあって恐縮ですが、公式対応までの間はお目こぼし頂けるととても嬉しいです。</p>
<h4>参考にしたページなど</h4>
<p><a href="http://hatena.g.hatena.ne.jp/hatenabookmark/20110405" target="_blank">2011-04-05 &#8211; はてなブックマーク日記 &#8211; 機能変更、お知らせなど</a><br />
<a href="http://d.hatena.ne.jp/kikinight/20110407/1302178479" target="_blank">はてなブックマークのエントリーページ改良が何を狙っているのか &#8211; 没個性テーマパーク</a><br />
<a href="http://blog.livedoor.jp/manamerit/archives/65471905.html" target="_blank">はてブのエントリーページ“改良”に疑問の声 &#8211; さまざまなめりっと</a><br />
<a href="http://d.hatena.ne.jp/y-kawaz/20110405/1301981589" target="_blank">はてなブックマークのUIが大幅リニューアル(個人的に改悪)な件 &#8211; y-kawazの日記</a><br />
<a href="http://d.hatena.ne.jp/Lhankor_Mhy/20110405/1301998010" target="_blank">新しいはてブが不評と聞いたので、全てのブックマークを見るグリモンスクリプトを作ったよ！（使えるかもしれないものが出来たので追記あり） &#8211; 不動産屋のラノベ読み</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.otchy.net/20110608/hatebu-downgrader-101-had-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Greasemonkey で 超お手軽に jQuery を使うスニペット [Chrome 対応版]</title>
		<link>http://www.otchy.net/20110607/use-jquery-on-greasemonkey-for-chrome/</link>
		<comments>http://www.otchy.net/20110607/use-jquery-on-greasemonkey-for-chrome/#comments</comments>
		<pubDate>Mon, 06 Jun 2011 21:40:39 +0000</pubDate>
		<dc:creator>Otchy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.otchy.net/?p=1328</guid>
		<description><![CDATA[旧版である、Greasemonkey で 超お手軽に jQuery を使うスニペット は Firefox で使用する分には問題ないのですが、Chrome ではセキュリティ上の都合か、Greasemoneky 上における  [...]]]></description>
			<content:encoded><![CDATA[<p>旧版である、<a href="/20091104/use-jquery-on-greasemonkey/">Greasemonkey で 超お手軽に jQuery を使うスニペット</a> は Firefox で使用する分には問題ないのですが、Chrome ではセキュリティ上の都合か、Greasemoneky 上における unsafeWindow が unsafe では無いようで (？) unsafeWindow.jQuery などに Greasemoneky からアクセスすることが出来ません。</p>
<p>そこで、Chrome 対応版のスニペットを用意しました。<br />
ただ、いわば Chrome のセキュリティを回避した書き方になるため、旧版にあった、「該当ページですでに jQuery が読み込まれていればそれを利用」という特徴が失われてしまっています。<br />
逆に言えば、常に自分で指定したバージョンを利用できるので、jQuery の新しい機能を使ったスクリプトを書く場合などは、こちらのほうが優れています。</p>
<h4>スクリプト</h4>
<pre>
(function (d, func) {
    var h = d.getElementsByTagName('head')[0];
    var s1 = d.createElement("script");
    s1.setAttribute("src", "http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js");
    s1.addEventListener('load', function() {
        var s2 = d.createElement("script");
        s2.textContent = "jQuery.noConflict();(" + func.toString() + ")(jQuery);";
        h.appendChild(s2);
    }, false);
    h.appendChild(s1);
})(document, function($) {
    // ここにメインの処理を書く
    $('#button').click(function(){
        alert('clicked!');
    });
});
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.otchy.net/20110607/use-jquery-on-greasemonkey-for-chrome/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>上下の要素をぬるっとスワップする jQuery プラグイン</title>
		<link>http://www.otchy.net/20110218/jquery-smoothswap-js-had-released/</link>
		<comments>http://www.otchy.net/20110218/jquery-smoothswap-js-had-released/#comments</comments>
		<pubDate>Fri, 18 Feb 2011 08:06:16 +0000</pubDate>
		<dc:creator>Otchy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.otchy.net/?p=1290</guid>
		<description><![CDATA[複数のパネルが上下に並んでいるようなデザインで、上下の位置を入れ替える UI はよく見ますが、それをぬるっとアニメーションさせるための jQuery プラグインです。
こんな感じに動きます。


▲▼

    1つめの [...]]]></description>
			<content:encoded><![CDATA[<p>複数のパネルが上下に並んでいるようなデザインで、上下の位置を入れ替える UI はよく見ますが、それをぬるっとアニメーションさせるための jQuery プラグインです。</p>
<p>こんな感じに動きます。</p>
<div id="smoothswap" style="width:400px;padding:10px;border: solid 1px #99f;background-color:#eef;">
<div class="smoothswap-panel" style="margin:10px;padding:10px;border:solid 1px #999;background-color:#fff;">
<div style="text-align:right"><button class="smoothswap-up">▲</button><button class="smoothswap-down">▼</button></div>
<div>
    1つめのパネル。<br />
    1つめのパネル。<br />
    1つめのパネル。<br />
    1つめのパネル。
  </div>
</div>
<div class="smoothswap-panel" style="margin:10px;padding:10px;border:solid 1px #999;background-color:#fff;">
<div style="text-align:right"><button class="smoothswap-up">▲</button><button class="smoothswap-down">▼</button></div>
<div>
    2つめのパネル。
  </div>
</div>
<div class="smoothswap-panel" style="margin:10px;padding:10px;border:solid 1px #999;background-color:#fff;">
<div style="text-align:right"><button class="smoothswap-up">▲</button><button class="smoothswap-down">▼</button></div>
<div>
    3つめのパネル。<br />
    3つめのパネル。<br />
    3つめのパネル。<br />
    3つめのパネル。<br />
    3つめのパネル。<br />
    3つめのパネル。<br />
    3つめのパネル。<br />
    3つめのパネル。
  </div>
</div>
</div>
<p><script src="/js/jquery.smoothswap.js"></script><br />
<script type="text/javascript">// <![CDATA[
$(function(){
  $('#smoothswap').smoothswap({
    'opacity': '0.6',
    'duration': 'normal',
    'marginHeight': 10
  });
});
// ]]&gt;</script></p>
<p>詳細は以下の専用ページよりどうぞー。<br />
<a href="/javascript/smoothswap/">jquery.smoothswap.js</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.otchy.net/20110218/jquery-smoothswap-js-had-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>日本地図ジェネレーター</title>
		<link>http://www.otchy.net/20110217/japan-map-generator/</link>
		<comments>http://www.otchy.net/20110217/japan-map-generator/#comments</comments>
		<pubDate>Thu, 17 Feb 2011 12:37:03 +0000</pubDate>
		<dc:creator>Otchy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.otchy.net/?p=1267</guid>
		<description><![CDATA[[を] Google Chart API で日本の都道府県に自由に色が塗れる！すごい！ っていう記事で、Google Map API で日本地図が作れるらしい事を知ったので、さっそくジェネレータを作ってみました。
色を指 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://chalow.net/2011-02-16-3.html" target="_blank">[を] Google Chart API で日本の都道府県に自由に色が塗れる！すごい！</a> っていう記事で、Google Map API で日本地図が作れるらしい事を知ったので、さっそくジェネレータを作ってみました。</p>
<p>色を指定した都道府県がその色で塗られた地図を、Google Chart API で作り出します。<br />
ざっくりなので適当ですが楽しんで頂ければ。</p>
<p>ちなみにカラーピッカーは、右下の虹色の丸いアイコンで確定です。ちょっと分かりにくいですよねー。</p>
<div id="prefectures">
</div>
<p>それにしても Google Chart API すげーなー。</p>
<link rel="stylesheet" media="screen" type="text/css" href="/colorpicker/css/colorpicker.css" />
<script type="text/javascript" src="/colorpicker/js/colorpicker.js"></script><br />
<script type="text/javascript" src="/js/mapjapan.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.otchy.net/20110217/japan-map-generator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>「数値単位変換」ツール、リリース</title>
		<link>http://www.otchy.net/20110121/number-unit-translator/</link>
		<comments>http://www.otchy.net/20110121/number-unit-translator/#comments</comments>
		<pubDate>Thu, 20 Jan 2011 17:41:34 +0000</pubDate>
		<dc:creator>Otchy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.otchy.net/?p=1258</guid>
		<description><![CDATA[1ミリオンは何万？1ビリオンは何億？
英語で数字を表現する時、当然の事ながら「万」「億」「兆」という単位は使わず、「ミリオン」「ビリオン」などの単位を使いますが、日本語では 4 桁で数字を区切って表現するのに対し、英語で [...]]]></description>
			<content:encoded><![CDATA[<p>1ミリオンは何万？1ビリオンは何億？</p>
<p>英語で数字を表現する時、当然の事ながら「万」「億」「兆」という単位は使わず、「ミリオン」「ビリオン」などの単位を使いますが、日本語では 4 桁で数字を区切って表現するのに対し、英語では 3 桁で区切って表現します。<br />
会計などで金額を扱う際、カンマを打つ時も 3 桁ごとです。<br />
メモリや HDD の容量でおなじみの SI 単位系も、「キロ」「メガ」「ギガ」と、10<sup>3</sup> 区切りです。</p>
<p>これが慣れない。どうしても直感的に変換できない。というかそもそも「直感的」な話ではないですね。<br />
必要になる度に、毎回数字にばらして、桁を数えて…などとしてました。<br />
ですが、いい加減面倒になったので、<a href="/number-unit-translator/" target="_blank">数値単位変換</a> っていうツールを作りました。</p>
<p>「1ミリオン→100万」も、「1兆→1トリリオン」も思いのままに変換できます。<br />
同じ悩みのある諸氏は是非ご活用下さい！</p>
<h4>技術的な話</h4>
<p>とりあえず大きな数を扱うから BigInt だな、という話なんですが、BigInt 同士の演算とか特に不要でしたし、ツールのキモになるのはむしろ「1兆」＝「1,000,000,000,000」というパーサ部分だったので、既存の BigInt ライブラリは特に使わず、独自に実装する事にしました。<br />
効率よりもわかりやすさ重視で、パースしやすいデータ構造を持たせた感じです。</p>
<p>で、肝心のパーサなんですがこれがなかなか大変でした。</p>
<p>「千」だけでも「1,000」ですが、「一千」と書いても「1,000」ですね。<br />
「千百十万」も「1110万」も同じ「11,100,000」です。<br />
さらに、英語の「eleven」はその 1 単語で 2 桁分の「11」を表したりします。</p>
<p>そんなこんなの難問を解決した結果、「<a href="/number-unit-translator/?query=1%E3%83%9F%E3%83%AA%E3%82%AA%E3%83%B3" target="_blank">1ミリオン</a>」でも「<a href="/number-unit-translator/?query=100G" target="_blank">100G</a>」でも「<a href="/number-unit-translator/?query=10000000000000000" target="_blank">10000000000000000</a>」でも「<a href="/number-unit-translator/?query=999%E5%84%849%E4%B8%879000" target="_blank">999億9万9000</a>」でも「<a href="/number-unit-translator/?query=%E5%A3%B1%E5%84%84%E5%BC%90%E4%BB%9F%E5%8F%82%E4%BD%B0%E6%B3%97%E6%8B%BE%E4%BC%8D%E8%90%AC%E9%99%B8%E4%BB%9F%E6%BC%86%E4%BD%B0%E6%8D%8C%E6%8B%BE%E7%8E%96" target="_blank">壱億弐仟参佰泗拾伍萬陸仟漆佰捌拾玖</a>」でも「<a href="/number-unit-translator/?query=fifteen millions and four thousands three hundreds twenty one" target="_blank">fifteen millions and four thousands three hundreds twenty one</a>」でも、正しくパースできるようになりました。</p>
<p>もはや当初の目的を超えて作り込んでしまった感じですが、面白かったので良しとしましょう。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.otchy.net/20110121/number-unit-translator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

