<?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>5509</title>
	<atom:link href="http://5509.me/feed" rel="self" type="application/rss+xml" />
	<link>http://5509.me</link>
	<description>JavaScript makes UserInterface more powerful</description>
	<lastBuildDate>Fri, 27 Apr 2012 12:36:46 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>アップル（ストア渋谷店）にがっかりした話の顛末</title>
		<link>http://5509.me/log/gakkari-store</link>
		<comments>http://5509.me/log/gakkari-store#comments</comments>
		<pubDate>Thu, 26 Apr 2012 23:19:17 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[Diary]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[がっかり]]></category>
		<category><![CDATA[アップル]]></category>

		<guid isPermaLink="false">http://5509.me/?p=5666</guid>
		<description><![CDATA[					割とアップルの製品は好きだし、好きだっただけにこんなにがっかりしたことは初めて。
					発端
					ことの発端は仕事で使っているMacBook Airが液晶割れしてしまったことで
					液晶割れって [...]]]></description>
			<content:encoded><![CDATA[					<p>割とアップルの製品は好きだし、好きだっただけにこんなにがっかりしたことは初めて。</p>
					<h2>発端</h2>
					<p>ことの発端は仕事で使っているMacBook Airが液晶割れしてしまったことで<br />
					液晶割れっていくらになるんだろうとか思いながら、アップルストア渋谷店に持っていったところ</p>
					<p>40000円弱ですね、とのこと。<br />
					お金かかるだろうなっていうのは分かってたしそれはまー仕方ないからおいとくとして、スリープから復帰しないっていう別の致命的な不具合もあったのでそれ見てもらった。</p>
					<p>で、こっちは無償で修理しますんでっていうことでお願いして、1週間後くらいに連絡もらって取りに行きました。</p>
					<h2>最初のミス</h2>
					<p>その場で簡単に検証して<br />
					ロジックボード変えたので大丈夫だと思いますみたいなこと聞いて<br />
					まーまた不具合あったら持ってきますわーって言って持って帰ったんですけど<br />
					なんかこのMacBook Air処理が遅い気がする・・・</p>
					<p>で、この時は検証するのもめんどかったから放置してたら<br />
					数日後アップルストア渋谷店から電話がかかってきて</p>
					<p>ロジックボードを間違えて入れてしまったので交換させてください、と。<br />
					言ってる意味がよくわからないんで、詳しくお願いしますと聞くと<br />
					BTOでCore i7にしてたんだけど、間違ってCore i5にしてしまったらしい。。（えっっっ</p>
					<p>もう一度交換するから店に持ってきて、みたいなわけのわからないことを言い出したので、そっちのミスだし面倒くさいから丸ごと交換してよと交渉したところそれでOKが出た。<br />
					（出向いたり、バックアップしたり復帰したりいったいどんだけ時間かかると思ってんの・・・</p>
					<h2>二度目のミス</h2>
					<p>BTOなので発注して届いたら連絡しますと言われ、また待つこと1週間。<br />
					届いたのでご都合いいときに取りにきてくださいと言われたので、即日取りに行って、帰ってMacをひらいたら今度はBTOでUSにしてたキーボードがJISになってるんですけど（ｗｗｗｗｗｗｗｗｗ</p>
					<h2>ひどい対応</h2>
					<p>いよいよイライラしたので翌朝ふざけんなっていうのをサポートに電話したら、案の定たらいまわされて、結局渋谷店に電話することに・・・（ここまで電話始めてから1時間</p>
					<p>アップルストアは電話が繋がらないことで有名で<br />
					やっぱり店舗につながるまで待つこと30分、ようやくつながったので<br />
					無駄に増したイライラをぶつけようと、さっきサポートに伝えた内容をそのまま伝えたら</p>
					<p>アップルストア渋谷「最短で配達お届けが明日の朝になってしまいます」</p>
					<p>自分「持ってこれないならそれなりの補償をお願いします。そもそも、アップルストアのミスのせいで、普通にMacBook Airが使えなくなったり、何回も出向いてるし、電話もしてるし待たされてるし、それはどうしてくれるんですか？」</p>
					<p>アップルストア渋谷「具体的にどうしてほしいんですか？」（本当に言われた</p>
					<p>自分「じゃあもう返金してください。返金というか、そっちのミスですし、できる限りの対応はそっちで考えるのが筋やと思うんですけど、その言い方どうなんですか？あ、返金って言っても端末はもちろん明日の朝までに絶対届けてくださいね。」</p>
					<p>アップルストア渋谷「上司に確認してから折り返します。」</p>
					<p>その後、上司っぽい人から電話がかかってきて</p>
					<p>アップルストア渋谷「今日中にお届けします。」（返金には触れずに電話を切ろうとする</p>
					<p>自分「え、後半伝えたことはどうなってるんですか？お金はアレですけど、せめて家にきて謝るとかあるんじゃないです？めっちゃ迷惑かけてますよね」</p>
					<p>アップルストア渋谷「店舗から出ることはできません。申し訳ございません（ここ声が小さい」</p>
					<p>自分「じゃあ何ができんの」</p>
					<p>アップルストア渋谷「申し訳ございませんということしかできません（全体的に声が小さい」</p>
					<p>ここのやり取り5回くらいループ</p>
					<p>その後2時間かからずに新品のMacBook Airが届いたんですけど、できるんやったら最初からそうしろよって思うのは僕だけですかね。会話はスピーカーでしてて、横で聞いてた妻もありえへんなーがっかりやわ、って言ってた。</p>
					<p>最終的には割れてた液晶は直ってそれはよかったんですけど、ミスといい、対応といい、ほんまにがっかりすぎてアップルストア渋谷店には今後行きたくないです。</p>
					<p>ところでコメントにあったんだけど、BTO云々は一番最初の修理のときに伝えてます。</p>
					<h2>アップルストアのミスで使った時間</h2>
					<p>店舗への移動（4時間）<br />
					電話（2時間）<br />
					バックアップ・復帰（6時間）<br />
					不安と怒り（∞）</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=5666&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/gakkari-store/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>iOS5スタイルのチェックボックス ui.checkSwitch</title>
		<link>http://5509.me/log/ui-checkswitch</link>
		<comments>http://5509.me/log/ui-checkswitch#comments</comments>
		<pubDate>Sun, 08 Apr 2012 13:43:25 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[スイッチ]]></category>
		<category><![CDATA[チェックボックス]]></category>

		<guid isPermaLink="false">http://5509.me/?p=5641</guid>
		<description><![CDATA[					
					チェックボックスをiOS5スタイルのスイッチに置き換えるjQuery非依存のJavaScriptライブラリです。タップ（クリック）に加えてスイッチ上でのスワイプ（ドラッグ）でチェックのオンオフが切り [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2012/04/ui.checkswitch1.png" alt="" title="ui.checkswitch" width="320" class="alignleft size-full wp-image-5654" /></p>
					<p>チェックボックスをiOS5スタイルのスイッチに置き換えるjQuery非依存のJavaScriptライブラリです。タップ（クリック）に加えてスイッチ上でのスワイプ（ドラッグ）でチェックのオンオフが切り替えられます。</p>
					<p>CSSで見た目を書いているので古いIEではデフォルトスタイルはほぼ表示できません。古いIEでも使いたいときは自分で書いてください。モバイルサイト限定で利用が推奨です。Androidはborder-radiusが残念なことになるという仕様なので、border-radiusは残念なことになっていますが、そこは目をつむっていただき・・・あと、端末によってはtouchmoveがうまいこと発火しないので、スワイプも微妙な感じかもしれません。</p>
					<p>ドキュメント・サンプルは以下のリンク先を参考にしてください。</p>
					<ul>
					<li><a href="http://5509.github.com/ui.checkSwitch/">ui.checkSwitch (iOS4以上推奨</a></li>
					</ul>
					<p>えっと、誰かiOS4スタイルとか新しい感じのデザインお願いします。。。</p>
					<p>要望とかバグ報告などはgithubのIssuesへお願いします。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=5641&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/ui-checkswitch/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>チェックボックスとラジオボタンのコントローラとスタイリング jq.ui.checks</title>
		<link>http://5509.me/log/jq-ui-checks</link>
		<comments>http://5509.me/log/jq-ui-checks#comments</comments>
		<pubDate>Tue, 03 Apr 2012 17:44:15 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[フォーム]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://5509.me/?p=5631</guid>
		<description><![CDATA[					jq.carouselに引き続きよくあるシリーズです。（つまり車輪の再開発
					ベースはチェックボックス・ラジオボタンをまとめて操作するようなUIのためのコントローラーで、それのついでにビューになるHTM [...]]]></description>
			<content:encoded><![CDATA[					<p>jq.carouselに引き続きよくあるシリーズです。（つまり車輪の再開発</p>
					<p>ベースはチェックボックス・ラジオボタンをまとめて操作するようなUIのためのコントローラーで、それのついでにビューになるHTMLとinput要素を（見た目上）置きかえる機能がついてます。それだけです。</p>
					<p>ドキュメント・サンプルは以下のリンク先を参考にしてください。（引き続き変な英語ですけども。</p>
					<ul>
					<li><a href="http://5509.github.com/jq.ui.checks/">jq.ui.checks</a></li>
					</ul>
					<p>要望とかバグ報告などはgithubのIssuesへお願いします。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=5631&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jq-ui-checks/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vimeoからビデオをダウンロードできる状態で開くブックマークレット</title>
		<link>http://5509.me/log/bookmarklet-download-videos-from-vimeo</link>
		<comments>http://5509.me/log/bookmarklet-download-videos-from-vimeo#comments</comments>
		<pubDate>Thu, 29 Mar 2012 06:44:13 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Others]]></category>
		<category><![CDATA[Bookmarklet]]></category>
		<category><![CDATA[vimeo]]></category>

		<guid isPermaLink="false">http://5509.me/?p=5624</guid>
		<description><![CDATA[					VimeoはFlashがオフになっていたりするとHTML5のvideo要素でビデオが見れるのですが（ビデオの右下にある「Swith to HTML5 Player」のリンクをクリックしても切り替えられます）、そ [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://vimeo.com">Vimeo</a>はFlashがオフになっていたりするとHTML5のvideo要素でビデオが見れるのですが（ビデオの右下にある「Swith to HTML5 Player」のリンクをクリックしても切り替えられます）、その状態であれば表示しているmp4のファイルを開けばその場で保存ができます。</p>
					<p>というわけで、Vimeoで適当なビデオページを開いて下のブックマークレットを実行するだけです。</p>
					<ul>
					<li><a href="javascript:var vimeo_holder = document.querySelectorAll('.vimeo_holder')[0];var evtObj = document.createEvent('UIEvents');evtObj.initEvent('click', false, true);vimeo_holder.querySelectorAll('.as')[0].dispatchEvent(evtObj);var video = vimeo_holder.querySelectorAll('video')[0];window.open(video.src);">Open vimeo download window</a></li>
					</ul>
					<p>開いたら、名前を付けて保存で、適当な名前に「.mp4」を付けて保存するだけです。</p>
					<p><strong>※IE8以下では使えないです</strong></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=5624&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/bookmarklet-download-videos-from-vimeo/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sassで使うprefixを連想配列ぽいやつで指定して必要なプロパティを吐き出す</title>
		<link>http://5509.me/log/choosing-use-vendor-prefix-or-not-by-like-hash-for-sass</link>
		<comments>http://5509.me/log/choosing-use-vendor-prefix-or-not-by-like-hash-for-sass#comments</comments>
		<pubDate>Tue, 27 Mar 2012 15:39:58 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Sass]]></category>
		<category><![CDATA[prefix]]></category>
		<category><![CDATA[vendor]]></category>

		<guid isPermaLink="false">http://5509.me/?p=5608</guid>
		<description><![CDATA[					タイトルがカオス・・・下みたいな各vendor prefixを使うか使わんかみたいな連想配列ぽい配列を定義しておくと、trueのvendor prefixが付いたプロパティだけを吐き出すようなやつがほしかった
 [...]]]></description>
			<content:encoded><![CDATA[					<p>タイトルがカオス・・・下みたいな各vendor prefixを使うか使わんかみたいな連想配列ぽい配列を定義しておくと、trueのvendor prefixが付いたプロパティだけを吐き出すようなやつがほしかった</p>
					<pre>$use:
  -webkit-, true,
  -moz-, true,
  -o-, true,
  -ms-, true;

// 本当はこうしたいけど
$use: {
  '-webkit-': true,
  '-moz-': true,
  '-o-': true,
  '-ms-': true
}</pre>
					<p>全部trueのときは例えばborder-radiusだと</p>
					<pre>.hoge {
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
  -o-border-radius: 5px;
  -ms-border-radisu: 5px;
  border-radius: 5px;
}</pre>
					<p>みたいな。falseにしたらそれに対応するprefixが出力されなくなる、みたいな。全部のmixinに書けばそれで終わりだけど、そんなの面倒くさいし、vendor prefixを付けたプロパティを出力するmixinみたいなのを書いた。<br />
					<span id="more-5608"></span></p>
					<pre>$use:
  -webkit-, true,
  -moz-, true,
  -o-, true,
  -ms-, true;

@mixin addPrefix($property, $value) {
  $property: unquote($property);
  $value: unquote($value);
  @for $i from 1 through length($use)/2 {
    $n: $i * 2;
    $propIndex: $n - 1;
    @if nth($use, $n) {
      #{nth($use, $propIndex) + $property}: $value;
    }
  }
  #{$property}: $value;
}</pre>
					<p>これはmixinの中で呼ぶmixinで、（そのまま呼んでもいいけど</p>
					<pre>@mixin border-radius($value) {
  @include addPrefix('border-radius', $value);
}</pre>
					<p>こういう風にborder-radiusのmixinを書くと</p>
					<pre>.hoge {
  @include border-radius('5px');
}</pre>
					<p>これが</p>
					<pre>.hoge {
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
  -o-border-radius: 5px;
  -ms-border-radisu: 5px;
  border-radius: 5px;
}</pre>
					<p>こうなる。 </p>
					<p>で、これだけでもよかったけど、プロパティによっては不要なやつ吐き出したくない場合もあるし、ついでにもうひとつ引数用意して、このmixinの中ではデフォルトでverdor prefixをfalseにできるよみたいな!important的なprefix設定を書けるように変える。</p>
					<pre>@mixin border-radius($value) {
  // この部分
  $def:
    -webkit-, false;
  @mixin('border-radius', $value, $def);
}</pre>
					<p>こうすると、-webkit-が消える（あくまでも例</p>
					<pre>.hoge {
  -moz-border-radius: 5px;
  -o-border-radius: 5px;
  -ms-border-radius: 5px;
  border-radius: 5px;
}</pre>
					<p>最後に$defを渡して、それがあればそっちで上書きするように変える</p>
					<pre>$use:
  -webkit-, true,
  -moz-, true,
  -o-, true,
  -ms-, true;

@mixin addPrefix($property, $value, $def: false) {
  $property: unquote($property);
  $value: unquote($value);
  @for $i from 1 through length($use)/2 {
    $n: $i * 2;
    $flg: nth($use, $n);
    $prfx: nth($use, $n - 1);
    @if $def {
      $_index: index($def, $prfx);
      @if $_index {
        $flg: nth($def, $_index + 1);
      }
    }
    @if $flg {
      #{$prfx + $property}: $value;
    }
  }
  #{$property}: $value;
}</pre>
					<p>こうしとけば</p>
					<pre>@mixin box-shadow($value) {
  $def:
    -webkit-, false,
    -ms-, true;
  @include addPrefix('box-shadow', $value, $def);
}

@mixin background-size($value) {
  @include addPrefix('background-size', $value);
}</pre>
					<p>こんなmixinがあったときに（例えです</p>
					<pre>.hoge {
  @include box-shadow('0 0 0 #000');
  @include background-size('12px 12px');
}</pre>
					<p>は</p>
					<pre>.hoge {
  -moz-box-shadow: 0 0 0 #000;
  -o-box-shadow: 0 0 0 #000;
  -ms-box-shadow: 0 0 0 #000;
  box-shadow: 0 0 0 #000;
  -webkit-background-size: 12px 12px;
  -moz-background-size: 12px 12px;
  -o-background-size: 12px 12px;
  background-size: 12px 12px;
}</pre>
					<p>こうなる。サンプルを適当に書きすぎた。。。。</p>
					<p><script src="https://gist.github.com/2217089.js?file=gistfile1.sass"></script></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=5608&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/choosing-use-vendor-prefix-or-not-by-like-hash-for-sass/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jq.carouselっていうカルーセルのjQueryプラグインつくった</title>
		<link>http://5509.me/log/jq-carousel</link>
		<comments>http://5509.me/log/jq-carousel#comments</comments>
		<pubDate>Mon, 19 Mar 2012 14:07:27 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[カルーセル]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://5509.me/?p=5602</guid>
		<description><![CDATA[					githubでちょっと前に公開したやつです。こっちでアナウンスしてなかったので。
					ドキュメント・サンプルは以下のリンク先を参考にしてください。（変な英語ですけど、なんとなく言いたいことは分かると思いま [...]]]></description>
			<content:encoded><![CDATA[					<p>githubでちょっと前に公開したやつです。こっちでアナウンスしてなかったので。</p>
					<p>ドキュメント・サンプルは以下のリンク先を参考にしてください。（変な英語ですけど、なんとなく言いたいことは分かると思います。</p>
					<ul>
					<li><a href="http://5509.github.com/jq.carousel/">jq.carousel</a></li>
					</ul>
					<p>日本語のドキュメントはWebDesigning 4月号のjQuery Labで書きましたので、どうしても日本語ドキュメントじゃないとだめなんだ！っていう方は見てみてください。</p>
					<ul>
					<li><a href="http://www.amazon.co.jp/gp/product/B007GAY1LG?ie=UTF8&#038;tag=norimania-22&#038;linkCode=shr&#038;camp=1207&#038;creative=8411&#038;creativeASIN=B007GAY1LG&#038;ref_=sr_1_1&#038;qid=1332166017&#038;sr=8-1">Web Designing (ウェブデザイニング) 2012年 04月号 [雑誌]</a></li>
					</ul>
					<p>特徴は、色んなことできるようにベースになれるようなAPIのみ提供、タイマーでスライドショーみたいにしたい、とかは自分でsetIntervalとか使って実装してください。サンプルの最後にもタイマー使ったものは入っています。</p>
					<p>要望とかバグ報告などはgithubのIssuesへお願いします。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=5602&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jq-carousel/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>電光掲示板をあのmarqueeとCSS3のグラデーションで</title>
		<link>http://5509.me/log/electronic-billboard-with-marquee-and-css3</link>
		<comments>http://5509.me/log/electronic-billboard-with-marquee-and-css3#comments</comments>
		<pubDate>Sun, 11 Mar 2012 05:50:34 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[gradient]]></category>

		<guid isPermaLink="false">http://5509.me/?p=5575</guid>
		<description><![CDATA[					
					元ネタ
					
					HTML5のCanvasとJavaScriptで電光掲示板のアニメーションを表現する
					
					これおもしろいなーと思って、でもすごい重くて・・・ｗよくよく [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://dl.dropbox.com/u/623486/samples/electronicbillboards/index.html"><img src="http://5509.me/wp-content/uploads/2012/03/Screen-Shot-2012-03-11-at-2.39.47-PM.png" alt="" title="Screen Shot 2012-03-11 at 2.39.47 PM" width="450" height="78" class="alignleft size-full wp-image-5582" /></a></p>
					<p>元ネタ</p>
					<ul>
					<li><a href="http://www.s-arcana.co.jp/tech/2012/03/electric-scoreborad-on-html5-canvas-with-javascript.html">HTML5のCanvasとJavaScriptで電光掲示板のアニメーションを表現する</a></li>
					</ul>
					<p>これおもしろいなーと思って、でもすごい重くて・・・ｗよくよく考えたらみんな大好きmarqueeタグとCSS3のlinear-gradient使えばできるよねとか思ってやったらめっちゃ簡単だった。iPhoneとかでも見れるよ。IEはしらん</p>
					<p>↓ サンプル</p>
					<ul>
					<li><a href="http://dl.dropbox.com/u/623486/samples/electronicbillboards/index.html">Electronic Billboard in CSS3 and marquee</a></li>
					</ul>
					<h3>HTML</h3>
					<p>HTMLは超絶シンプル</p>
					<pre>&lt;marquee&gt;【横須賀線 遅延】&lt;/marquee&gt;</pre>
<h3>CSS</h3>
<p>CSSはほぼlinear-gradient。背景にlinear-gradientで格子状になるよう縦横敷き詰めた擬似要素をmarqueeの上にwidth, height広げて被せる形で</p>
<pre>marquee {
  position: relative;
  color: #ffab00;
  background-color: #0a0600;
  font-size: 40px;
}
marquee:after {
  content: ' ';
  display: block;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background-image: linear-gradient(#0a0600 1px, transparent 0px),
    linear-gradient(0, #0a0600 1px, transparent 1px);
  background-image: -webkit-linear-gradient(#0a0600 1px, transparent 0px),
    -webkit-linear-gradient(0, #0a0600 1px, transparent 1px);
  background-image: -moz-linear-gradient(#0a0600 1px, transparent 0px),
    -moz-linear-gradient(0, #0a0600 1px, transparent 1px);
  background-image: -o-linear-gradient(#0a0600 1px, transparent 0px),
    -o-linear-gradient(0, #0a0600 1px, transparent 1px);
  background-image: -ms-linear-gradient(#0a0600 1px, transparent 0px),
    -ms-linear-gradient(0, #0a0600 1px, transparent 1px);
  background-size: 2px 2px, 2px 2px;
  z-index: 10;
}</pre>
					<p>IEでも見たかったら:afterやめてdivかなんかにして、linear-gradientも背景画像repeatでできるよね。:afterはやめなくてもいいけど</p>
					<p>ところでCSS3 marqueeがなんとなくあるけど、OperaとWebkitだけだし、書き方面倒くさそうだからやめた</p>
					<p>jsdo.itにforkしたやつ置いたのでよければ Fork me on jsdo.it</p>
					<p><script type="text/javascript" src="http://jsdo.it/blogparts/kckr/js?view=design"></script>
					<p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a href="http://jsdo.it/5509/ebwmac3" title="forked: HTML5のCanvasとJSで電光掲示板">forked: HTML5のCanvasとJSで電光掲示板 &#8211; jsdo.it &#8211; share JavaScript, HTML5 and CSS</a></p>
					<p>追記：なんかやっぱり一部環境で重くなるときがあるらしい</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=5575&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/electronic-billboard-with-marquee-and-css3/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>フロントエンドの開発を加速するCodeKit</title>
		<link>http://5509.me/log/codekit</link>
		<comments>http://5509.me/log/codekit#comments</comments>
		<pubDate>Mon, 20 Feb 2012 06:09:03 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[CodeKit]]></category>
		<category><![CDATA[LESS]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Sass]]></category>
		<category><![CDATA[コンパイル]]></category>
		<category><![CDATA[フロントエンド]]></category>

		<guid isPermaLink="false">http://5509.me/?p=5467</guid>
		<description><![CDATA[					また紹介エントリーか。。。Sass布教活動の一貫です。どうも。
					SassとかLESSって使ってますか？書くのがとても億劫なCSS（個人の感想です）を快適に書くことが出来るようになる上に、始めた頃の楽し [...]]]></description>
			<content:encoded><![CDATA[					<p>また紹介エントリーか。。。Sass布教活動の一貫です。どうも。</p>
					<p>SassとかLESSって使ってますか？書くのがとても億劫なCSS（個人の感想です）を快適に書くことが出来るようになる上に、始めた頃の楽しさが戻ります（個人の感想です）。詳しいことは以下のエントリかたがたを見てもらうとして。<strong>Sassの記事が多いのは僕がSass使ってるからです。Sass推しです。</strong></p>
					<ul>
					<li><a href="http://blog.debiru.net/2011/12/02/css-framework-metalang/">CSSとフレームワークとメタ言語</a></li>
					<li><a href="http://hail2u.net/documents/sass-and-sassy-css.html">Sass、そしてSassy CSS (SCSS)</a></li>
					<li><a href="http://tech.naver.jp/blog/?p=885">Sass を今すぐ実務で使おうよ！</a></li>
					<li><a href="http://css-happylife.com/archives/sass/">Sassを覚えよう</a></li>
					<li><a href="http://archiva.jp/web/html-css/less_started.html">LESS初心者向けのナニカ</a></li>
					</ul>
					<p>というか</p>
					<ul>
					<li><a href="http://atnd.org/events/21919">LESS &#038; Sass Advent Calendar 2011</a>（<a href="https://docs.google.com/spreadsheet/ccc?key=0Amasgru6GM0idHRzcmk2SzZQLVVCY09uWTZuOXZKMnc&#038;hl=ja#gid=0">エントリ一覧</a>）</li>
					</ul>
					<p>をみてください。</p>
					<h2>浸透しにくい理由は色々ある気がしますが・・・</h2>
					<h3>コンパイルがめんどい</h3>
					<p>そのとおりです。慣れですけどね。とっつきにくい感をこいつが出してるのはその通りでしょう。</p>
					<h3>黒い画面がちょっと・・・</h3>
					<p>ではSassをインストールしましょう！OS Xの方はターミナルを開いて</p>
					<pre>$ gem install sass</pre>
<p>を入力するとしばらくしてSassがインストールできるので、</p>
<pre>$ mkdir ~/Sites/my-first-sass
$ mkdir ~/Sites/my-first-sass/styles
$ mkdir ~/Sites/my-first-sass/styles/scss
$ cd ~/Sites/my-first-sass/styles
$ touch scss/style.scss
$ sass --watch scss/style.scss:style.css</pre>
					<p>で、まずはコンパイルしてみまｓ・・・</p>
					<p>なるほどですね。特にSassは黒い画面じゃないとだめみたいな先入観があるのではないでしょうか？</p>
					<h2>OS X Lionのみなさんは素晴らしいソリューションがあります</h2>
					<p>それがCodeKitです。</p>
					<ul>
					<li><a href="http://incident57.com/codekit/">CodeKit — THE Mac App For Web Developers</a></li>
					</ul>
					<p>Winのことはよくわからないので、同じような事を誰かが書いてくれるでしょう。フロントエンドの制作でOS Xじゃない方が弊害が多い気がしますけど、個人の感想ですね。<br />
					<span id="more-5467"></span></p>
					<h2>CodeKitのハイライト</h2>
					<p>をキャプチャで紹介してみます。</p>
					<h3>CodeKitを起動したところ</h3>
					<p>左ペインにプロジェクトディレクトリごとドラッグすると、プロジェクト全体を監視できます。</p>
					<p><a href="http://5509.me/wp-content/uploads/2012/02/ck1.png"><img src="http://5509.me/wp-content/uploads/2012/02/ck1.png" alt="" title="ck1" width="450" class="alignleft size-full wp-image-5498" /></a></p>
					<h3>ディレクトリをドラッグしてプロジェクトを監視する</h3>
					<p>ドラッグしたディレクトリは下記みたいになってます。</p>
					<p>my-first-sass<br />
					└ styles<br />
					　└ scss<br />
					　　└ style.scss</p>
					<p>my-first-sassディレクトリをドラッグすると</p>
					<p><a href="http://5509.me/wp-content/uploads/2012/02/ck3.png"><img src="http://5509.me/wp-content/uploads/2012/02/ck3.png" alt="" title="ck3" width="450" class="alignleft size-full wp-image-5539" /></a></p>
					<p>PROJECTS のところに追加されます。</p>
					<p><a href="http://5509.me/wp-content/uploads/2012/02/ck4.png"><img src="http://5509.me/wp-content/uploads/2012/02/ck4.png" alt="" title="ck4" width="190" height="131" class="alignleft size-full wp-image-5501" /></a></p>
					<p>色々ある場合は、All Filesで一覧が表示できて、CSS関連ファイルだけ見たいときは Styles タブで確認できます。</p>
					<p><a href="http://5509.me/wp-content/uploads/2012/02/ck5.png"><img src="http://5509.me/wp-content/uploads/2012/02/ck5-300x123.png" alt="" title="ck5" width="300" height="123" class="alignleft size-medium wp-image-5502" /></a></p>
					<h3>なんか書いてみる</h3>
					<p>scss/styles.scss を開いて何か書いてみましょう。せっかくなので + とか使って保存すると、Growl（が有効なら）でコンパイルしました通知が表示されます。</p>
					<p><a href="http://5509.me/wp-content/uploads/2012/02/ck6.png"><img src="http://5509.me/wp-content/uploads/2012/02/ck6.png" alt="" title="ck6" width="450" class="alignleft size-full wp-image-5515" /></a></p>
					<p>styles ディレクトリに css ディレクトリが追加されて、その中に style.css が入ってます。</p>
					<p><a href="http://5509.me/wp-content/uploads/2012/02/ck7.png"><img src="http://5509.me/wp-content/uploads/2012/02/ck7.png" alt="" title="ck7" width="460" height="119" class="alignleft size-full wp-image-5504" /></a></p>
					<p>style.css を開くとコンパイルされてます。</p>
					<p><a href="http://5509.me/wp-content/uploads/2012/02/ck8.png"><img src="http://5509.me/wp-content/uploads/2012/02/ck8.png" alt="" title="ck8" width="306" height="122" class="alignleft size-full wp-image-5505" /></a></p>
					<h3>コンパイルファイルの吐き出し先</h3>
					<p>Preferenceで変更できます。</p>
					<p><a href="http://5509.me/wp-content/uploads/2012/02/ck9.png"><img src="http://5509.me/wp-content/uploads/2012/02/ck9.png" alt="" title="ck9" width="450" class="alignleft size-full wp-image-5506" /></a></p>
					<h3>圧縮とか</h3>
					<p>の設定もPreferenceでできます。圧縮するぜーとかしないでいいわーとか。</p>
					<p><a href="http://5509.me/wp-content/uploads/2012/02/ck10.png"><img src="http://5509.me/wp-content/uploads/2012/02/ck10.png" alt="" title="ck10" width="450" class="alignleft size-full wp-image-5507" /></a></p>
					<h3>CoffeeScriptもできるよ</h3>
					<p>同じような感じで、プロジェクトに入れてると監視してくれます。</p>
					<p><a href="http://5509.me/wp-content/uploads/2012/02/ck11.png"><img src="http://5509.me/wp-content/uploads/2012/02/ck11.png" alt="" title="ck11" width="450" class="alignleft size-full wp-image-5508" /></a></p>
					<p>エラーがあるときは、ログにエラーが表示されるので分かりやすいですね</p>
					<p><a href="http://5509.me/wp-content/uploads/2012/02/ck12.png"><img src="http://5509.me/wp-content/uploads/2012/02/ck12.png" alt="" title="ck12" width="450" class="alignleft size-full wp-image-5509" /></a></p>
					<p>デフォルトは min ディレクトリに圧縮したファイルを吐き出します。</p>
					<p><a href="http://5509.me/wp-content/uploads/2012/02/ck13.png"><img src="http://5509.me/wp-content/uploads/2012/02/ck13.png" alt="" title="ck13" width="329" height="112" class="alignleft size-full wp-image-5510" /></a></p>
					<h3>画像の最適化</h3>
					<p>一番最後になったけど、もしかしてこれが一番便利かもな、画像最適化もできます。プロジェクトにある画像ファイルを選択すると、「Optimize」のボタンがあるので、これクリックすると</p>
					<p><a href="http://5509.me/wp-content/uploads/2012/02/ck14.png"><img src="http://5509.me/wp-content/uploads/2012/02/ck14-300x181.png" alt="" title="ck14" width="300" height="181" class="alignleft size-medium wp-image-5511" /></a></p>
					<p>いい感じに最適化してくれますよ。僕のアイコンはファイルサイズが50%減りました。</p>
					<p><a href="http://5509.me/wp-content/uploads/2012/02/ck15.png"><img src="http://5509.me/wp-content/uploads/2012/02/ck15.png" alt="" title="ck15" width="189" height="291" class="alignleft size-full wp-image-5512" /></a></p>
					<h2>It&#8217;s like steroids for web developers.</h2>
					<p>CodeKitのキャッチコピー（12年2月現在）に書いてあるのですが、その通りですね。OS X <strong>Lion</strong>の人は入れておいて間違いないでしょう。CodeKitは今βリリースで無料で利用できますが、<del datetime="2012-02-21T02:46:53+00:00">$10</del>$20でApp Storeに並ぶ予定だそうです。にしてもこのGUIと機能で<del datetime="2012-02-21T02:48:45+00:00">$10</del>$20は安<del datetime="2012-02-21T02:48:45+00:00">すぎる</del>いくらいではないでしょうか。</p>
					<p>あ、何が言いたかったかというと、CodeKitみたいなの使えばSassやLESSも簡単に使えますし、まだ触ったことない人はその便利さに触れてみるといいと思いますということでした。</p>
					<p>このエントリで紹介してない機能（ファイルまとめるとか）もあるのでぜひ。<br />
					Snow Leopardの人は引き続きTerminal.appでお楽しみください。（ひどい</p>
					<ul>
					<li><a href="http://incident57.com/codekit/">CodeKit — THE Mac App For Web Developers</a></li>
					</ul>
					<img src="http://5509.me/?ak_action=api_record_view&id=5467&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/codekit/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chromeで超簡単にUser Agentを変える方法</title>
		<link>http://5509.me/log/replacing-chromes-useragent</link>
		<comments>http://5509.me/log/replacing-chromes-useragent#comments</comments>
		<pubDate>Thu, 09 Feb 2012 05:51:55 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[User Agent]]></category>
		<category><![CDATA[ブラウザ]]></category>
		<category><![CDATA[開発]]></category>

		<guid isPermaLink="false">http://5509.me/?p=5438</guid>
		<description><![CDATA[					@hokaccha に言われて便利すぎて脳みそ飛び出るかと思った途中から嘘です
					以下、見たことのある内容が続きます
					全然気がつかなかった・・・いつからだろう・・・ ＞ 17からだそうです
	 [...]]]></description>
			<content:encoded><![CDATA[					<p>@hokaccha に言われて便利すぎて脳みそ飛び出るかと思った途中から嘘です<br />
					以下、見たことのある内容が続きます</p>
					<p>全然気がつかなかった・・・いつからだろう・・・ ＞ 17からだそうです<br />
					Chromeにビルトインされてるのですぐ使えます。</p>
					<p>ちなみに、キャプチャはChromeのdev版なのでstable版は少し違うかもしれません。stable(Macの17.0.963.46)でもOverride User Agentの項目あるのは確認してます。</p>
					<p><a href="http://5509.me/wp-content/uploads/2012/02/cua_1.png"><img src="http://5509.me/wp-content/uploads/2012/02/cua_1-1024x640.png" alt="" title="cua_1" width="480" class="alignleft size-large wp-image-5444" /></a></p>
					<p>通常はもちろんユーザーエージェントはChromeですが、Cmd+Option+I などでインスペクタを開くと</p>
					<p><a href="http://5509.me/wp-content/uploads/2012/02/cua_2.png"><img src="http://5509.me/wp-content/uploads/2012/02/cua_2-1024x640.png" alt="" title="cua_2" width="480" class="alignleft size-large wp-image-5445" /></a></p>
					<p>右下にギアアイコンがあって、そこからインスペクタのSettingが開けます<br />
					すると Override User Agent という項目があるので</p>
					<p><a href="http://5509.me/wp-content/uploads/2012/02/cua_3.png"><img src="http://5509.me/wp-content/uploads/2012/02/cua_3-1024x640.png" alt="" title="cua_3" width="480" class="alignleft size-large wp-image-5446" /></a></p>
					<p>チェックすると、よく使いそうな User Agent 一覧がプルダウンで開きます<br />
					試しに iPhone &#8211; iOS5 を選択してみましょう</p>
					<p><a href="http://5509.me/wp-content/uploads/2012/02/cua_4.png"><img src="http://5509.me/wp-content/uploads/2012/02/cua_4-1024x640.png" alt="" title="cua_4" width="480" class="alignleft size-large wp-image-5447" /></a></p>
					<p>リロードするとUAが変わっているのが分かります（分かるページでやると</p>
					<p><strong>※書き忘れてましたが、インスペクタが開いている状態でのみ有効です</strong></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=5438&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/replacing-chromes-useragent/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>タイプライターっぽいエフェクトを実行できる jq.typewrite</title>
		<link>http://5509.me/log/jq-typewrite</link>
		<comments>http://5509.me/log/jq-typewrite#comments</comments>
		<pubDate>Sun, 22 Jan 2012 15:17:49 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[タイプライター]]></category>

		<guid isPermaLink="false">http://5509.me/?p=5423</guid>
		<description><![CDATA[					今さらなんでもないメソッドですけど、せっかく作ったので記事書いておきます。対象要素内のテキストを一文字ずつ表示するだけです。
					
					jq.typewrite のサンプル
					
					ホ [...]]]></description>
			<content:encoded><![CDATA[					<p>今さらなんでもないメソッドですけど、せっかく作ったので記事書いておきます。対象要素内のテキストを一文字ずつ表示するだけです。</p>
					<ul>
					<li><a href="http://5509.me/sample/jq.typewrite/">jq.typewrite のサンプル</a></li>
					</ul>
					<h2>ホスト / ダウンロード</h2>
					<ul>
					<li><a href="https://github.com/5509/jq.typewrite">5509/jq.typewrite &#8211; GitHub</a></li>
					<li><a href="https://github.com/5509/jq.typewrite/zipball/master">ダウンロード</a></li>
					</ul>
					<h2>使い方</h2>
					<h3>そのままつかう</h3>
					<p>最初に $.typewrite(jQueryオブジェクト) で初期化しておきます。あとは任意のタイミングで .play() メソッドでエフェクトを実行できます。<br />
					.play(4) のように実行時に duration を決めることもできます。</p>
					<p>.play() メソッドは jQuery Deferred オブジェクトを返すので、完了時に何かしたいときは .done() でつなげばOKです。</p>
					<h4>JavaScript</h4>
					<pre>var typewrite1 = $.typewrite($('#typewrite1'));
$('#do_typewrite1').click(function() {
  typewrite1.play();
});</pre>
					<h4>HTML</h4>
					<pre>&lt;p id=&quot;typewrite1&quot;&gt;This is typewrite&lt;/p&gt;
&lt;p&gt;
  &lt;input type=&quot;button&quot; id=&quot;do_typewrite1&quot; value=&quot;Do typewrite 1&quot;&gt;
&lt;/p&gt;</pre>
					<h3>オプションとDeferredも使う</h3>
					<h4>JavaScript</h4>
					<pre>var typewrite2 = $.typewrite($('#typewrite2'), {
  duration: 2,
  hide: false,
  end: '|'
});
$('#do_typewrite2').click(function() {
  typewrite2.play().done(function() {
    alert('completed');
  });
});</pre>
					<h4>HTML</h4>
					<pre>&lt;p id=&quot;typewrite2&quot;&gt;This is typewrite&lt;br&gt;
This is typewrite&lt;/p&gt;
&lt;p&gt;
  &lt;input type=&quot;button&quot; id=&quot;do_typewrite2&quot; value=&quot;Do typewrite 2&quot;&gt;
&lt;/p&gt;</pre>
					<h3>jQuery プラグインとして使う</h3>
					<p>jQuery プラグインとして使う場合は、play() メソッドが typewritePlay() メソッドに変わります。</p>
					<pre>var typewrite4 = $('#typewrite4').typewrite({
    end: '|'
});
$('#do_typewrite4').click(function() {
    typewrite4.typewritePlay(2);
});</pre>
					<h2>オプション</h2>
					<table border="1" class="lftable">
					<tr>
					<th>オプション</th>
					<th>説明</th>
					</tr>
					<tr>
					<td>duration</td>
					<td>エフェクトが始まってから終わるまでの時間。1(s)のように秒で指定 (def 1</td>
					</tr>
					<tr>
					<td>hide</td>
					<td>初期化時にテキストを隠すかどうか (def true</td>
					</tr>
					<tr>
					<td>end</td>
					<td>入力カーソルを指定できます (def _(underscore)</td>
					</tr>
					<tr>
					<td>wait</td>
					<td>ハッシュで対象の文字と待ち時間を渡すとその文字のときに余分に待つ（次の項へ</td>
					</tr>
					</table>
					<h3>wait</h3>
					<p>デフォルトは日本語の4文字だけ指定してるので変えてください</p>
					<table border="1" class="lftable">
					<tr>
					<th>文字列</th>
					<th>待ち時間</th>
					</tr>
					<tr>
					<td>！</td>
					<td>0.1</td>
					</tr>
					<tr>
					<td>？</td>
					<td>0.1</td>
					</tr>
					<tr>
					<td>、</td>
					<td>0.1</td>
					</tr>
					<tr>
					<td>。</td>
					<td>0.1</td>
					</tr>
					</table>
					<p>指定するときはこんな感じで</p>
					<pre>$.typewrite(hoge, {
  wait: {
    ',': 0.3,
    '.': 0.3
  }
});</pre>
					<h2>使うときの注意点</h2>
					<p>対象の要素は、<code>&lt;br&gt;</code>以外のHTML要素を含むことができないので、その辺よろしくおねがいします。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=5423&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jq-typewrite/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>iPhone AppのPathみたいなナビゲーションを実装できる Swpnav.js</title>
		<link>http://5509.me/log/swpnavjs</link>
		<comments>http://5509.me/log/swpnavjs#comments</comments>
		<pubDate>Mon, 19 Dec 2011 07:38:46 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[flipsnap]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Swpnav]]></category>
		<category><![CDATA[スワイプ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=5353</guid>
		<description><![CDATA[					
					PathみたいなナビゲーションをWebページに実装するライブラリです。同じようなのは他にもあると思いますけど、これの特徴は対象に当たっている他のライブラリと干渉しにくいということでしょうか。iScr [...]]]></description>
			<content:encoded><![CDATA[					<p style="text-align: center"><a style="margin-right: 30px;" href="http://5509.me/wp-content/uploads/2011/12/swpnavjs_1.png"><img src="http://5509.me/wp-content/uploads/2011/12/swpnavjs_1.png" alt="" title="swpnavjs_1" width="200" height="300" class="size-full wp-image-5354" /></a><a href="http://5509.me/wp-content/uploads/2011/12/swpnavjs_2.png"><img src="http://5509.me/wp-content/uploads/2011/12/swpnavjs_2.png" alt="" title="swpnavjs_2" width="200" height="300" class="size-full wp-image-5355" /></a></p>
					<p><a href="https://path.com/">Path</a>みたいなナビゲーションをWebページに実装するライブラリです。同じようなのは他にもあると思いますけど、これの特徴は対象に当たっている他のライブラリと干渉しにくいということでしょうか。iScrollみたいなイベントキャンセルが強力なやつはだめだと思います。</p>
					<p>サンプルがまさにそれなんですけど、同僚の@<a href="http://twitter.com/hokaccha">hokaccha</a>が作った <a href="https://github.com/pxgrid/js-flipsnap">flipsnap.js</a>とは共存できます。レイヤー毎にスワイプ判定をしてるので、上位レイヤーで一度キャンセルすると Swpnav が実行されてる下位レイヤーにはイベントが飛ばなくなるような感じで、この Swpnav とか flipsnap のような作り方をしているライブラリとは共存できると思います。</p>
					<ul>
					<li><a href="http://5509.me/sample/Swpnav/">サンプル（Webkitのみ</a></li>
					</ul>
					<p><span id="more-5353"></span></p>
					<h2>ホスト</h2>
					<p>githubにあります</p>
					<ul>
					<li><a href="https://github.com/5509/Swpnav">5509/Swpnav &#8211; GitHub</a></li>
					</ul>
					<h2>使い方</h2>
					<p><a href="https://github.com/5509/Swpnav/zipball/master">ソースコードをダウンロード</a>して、任意の場所に swpnav.js を置き、読み込みます。</p>
					<pre>&lt;script src="swpnav.js"&gt;&lt;/script&gt;</pre>
<p>jQueryプラグインではないのでjQueryは不要です。読み込んだら任意の場所かソースコードで実行してください。</p>
<pre>Swpnav('#content', '#nav');</pre>
					<p>実行する際の一つ目の引数に、対象コンテンツID、二つ目の引数に隠すナビゲーションコンテンツのIDを指定します。基本はこれで、次にオプションとAPIを解説しておきます。</p>
					<h2>オプション</h2>
					<p>オプションを指定する際は三つ目の引数で渡します。</p>
					<pre>Swpnav('#content', '#nav', {
    slide: 260,
    duration: '0.2s',
    timingFunction: 'cubic-bezier(0,0,0.25,1)',
    trigger: 30
});</pre>
					<table border="1" class="lftable">
					<tr>
					<th>オプション</th>
					<th>解説</th>
					</tr>
					<tr>
					<td>slide</td>
					<td>どこまでスライドするか、デフォルトは260pxまで</td>
					</tr>
					<tr>
					<td>duration</td>
					<td>スライドにかける時間、デフォルトは0.2s<br />（ここは transition-durationで指定できる形式で）</td>
					</tr>
					<tr>
					<td>timingFunction</td>
					<td>スライドのeasing、デフォルトはcubic-bezier(0,0,0.25,1)<br />（指定するときはtransition-timing-functionで指定できる形式で）</td>
					</tr>
					<tr>
					<td>trigger</td>
					<td>スワイプでコンテンツパネルをずらしていったとき、open()/close()を実行するトリガーになる位置<br />（デフォルトは30pxまでずらすと開く・閉じる）</td>
					</tr>
					</table>
					<h2>API</h2>
					<p>APIを使う場合は、インスタンスを変数に</p>
					<pre>var open = document.getElementById('open'),
    swp = Swpnav('#content', '#nav');

open.addEventListener('click', function(ev) {
    ev.preventDefault();

    if ( swp.getState() ) {
        swp.close();
    } else {
        swp.open();
    }
}, false);</pre>
					<table border="1" class="lftable">
					<tr>
					<th>API</th>
					<th>解説</th>
					</tr>
					<tr>
					<td>open</td>
					<td>パネルを開いてナビゲーションを表示</td>
					</tr>
					<tr>
					<td>close</td>
					<td>パネルを閉じてナビゲーションを非表示</td>
					</tr>
					<tr>
					<td>destroy</td>
					<td>Swpnavを破棄して使えなくする</td>
					</tr>
					<tr>
					<td>getState</td>
					<td>パネルの状態、開いているときはtrue, 閉じているときはfalse</td>
					</tr>
					<tr>
					<td>setSlide</td>
					<td>どこまでスライドするかを動的に変更したいときに（250のような数値を渡す）</td>
					</tr>
					<tr>
					<td>enabled</td>
					<td>Swpnavを有効にする</td>
					</tr>
					<tr>
					<td>disabled</td>
					<td>Swpnavを無効にする（open, closeやスワイプによる開閉が無効になる）</td>
					</tr>
					</table>
					<h2>jQueryプラグインとして使う</h2>
					<p>jQueryプラグインとして使う場合は</p>
					<pre>$('#hoge').swpnav('#nav')</pre>
<ul>
<li><a href="http://5509.me/sample/Swpnav/index_jquery.html">jQueryプラグインとして実行したサンプル</a></li>
</ul>
<p>のようにします。指定できる要素はひとつなので、2つ以上ヒットするようなセレクタで渡さないでください。jQueryオブジェクトが返りますが、jQueryオブジェクトはSwpnavのAPI（メソッド）を呼ぶことができるようになっています。</p>
<p>APIはjQueryのAPIと干渉しないように &#8216;swpnav&#8217; の prefix がついています。 prefix 付きのAPI一覧は下記の通りです。</p>
<table border="1" class="lftable">
<tr>
<th>API</th>
<th>解説</th>
</tr>
<tr>
<td>swpnavOpen</td>
<td>パネルを開いてナビゲーションを表示</td>
</tr>
<tr>
<td>swpnavClose</td>
<td>パネルを閉じてナビゲーションを非表示</td>
</tr>
<tr>
<td>swpnavDestroy</td>
<td>Swpnavを破棄して使えなくする</td>
</tr>
<tr>
<td>swpnavGetState</td>
<td>パネルの状態、開いているときはtrue, 閉じているときはfalse</td>
</tr>
<tr>
<td>swpnavSetSlide</td>
<td>どこまでスライドするかを動的に変更したいときに（250のような数値を渡す）</td>
</tr>
<tr>
<td>swpnavEnabled</td>
<td>Swpnavを有効にする</td>
</tr>
<tr>
<td>swpnavDisabled</td>
<td>Swpnavを無効にする（open, closeやスワイプによる開閉が無効になる）</td>
</tr>
</table>
<pre>var swp = $('#hoge').swpnav('#nav');

// some codes...

swp.swpnavOpen();
swp.swpnavSetSlide(100);</pre>
					<h2>対象端末</h2>
					<ul>
					<li>iPhone3G~4S の iOS3.2~5</li>
					</ul>
					<p>Androidでもなんとなく動くと思いますが、検証全然できてないので、動かない場合は<a href="https://github.com/5509/Swpnav">githubのリポジトリ</a>からフォークしてプルリクエストもらえるとうれしいです。報告だけでも動く動かないをここに掲載できるのでうれしいです。</p>
					<h2>関連ライブラリ</h2>
					<ul>
					<li><a href="https://github.com/pxgrid/js-flipsnap">pxgrid/js-flipsnap &#8211; GitHub</a></li>
					</ul>
					<img src="http://5509.me/?ak_action=api_record_view&id=5353&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/swpnavjs/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Node.jsでLESSファイルを動的にコンパイルする</title>
		<link>http://5509.me/log/less-with-nodejs</link>
		<comments>http://5509.me/log/less-with-nodejs#comments</comments>
		<pubDate>Fri, 09 Dec 2011 01:30:32 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[LESS]]></category>
		<category><![CDATA[Node.js]]></category>

		<guid isPermaLink="false">http://5509.me/?p=5238</guid>
		<description><![CDATA[					「Less &#38; Sass Advent calendar 2011」9日目の@5509です。
					流れをぶった切ってしまってあれなのですが、Node.jsとあわせてLESSファイルを動的にコンパイ [...]]]></description>
			<content:encoded><![CDATA[					<p>「<a href="http://atnd.org/events/21919">Less &amp; Sass Advent calendar 2011</a>」9日目の<a href="http://twitter.com/5509">@5509</a>です。<br />
					流れをぶった切ってしまってあれなのですが、Node.jsとあわせてLESSファイルを動的にコンパイルするようなやつ書きます。</p>
					<p>みなさんご存知の通りLESSはJSで書かれているので、Node.jsを使ったアプリでは動的にLESSファイルをコンパイルできます。</p>
					<p>ところが<a href="http://lesscss.org/">LESSのサイト</a>に書いてある方法は</p>
					<pre>var parser = new(less.Parser);

parser.parse('.class { width: 1 + 1 }', function (err, tree) {
    if (err) { return console.error(err) }
    console.log(tree.toCSS());
});</pre>
					<p>・・・やさしくない！</p>
					<p>まあでも早い話、<code>parse(hoge, func)</code>のhogeにLESSファイルの文字列渡せばtreeに結果が入ってくるってことですね。</p>
					<p>これはLESSの記事というかNode.jsの記事じゃないのとかそういう細かいことはいいじゃないですか・・・</p>
					<p><span id="more-5238"></span></p>
					<h2>LESSファイルをコンパイルできるようになるまで</h2>
					<h3>LESSファイルの場所</h3>
					<p>Expressコマンドで作ったテンプレートを使うことにします。Expressコマンドを実行すると（テンプレエンジンはjqtplにしてます）</p>
					<pre>$ express -t jqtpl less
// less
├ app.js
├ package.json
├ public
│ ├ images
│ ├ javascripts
│ └ stylesheets
├ routes
│ └ index.js
└ views</pre>
					<p>みたいにもろもろ出来ます。肝心のLESSファイルは views ディレクトリに less ディレクトリを作ってそこに入れることにしましょう。</p>
					<pre>// less
├ app.js
├ package.json
├ public
│ ├ images
│ ├ javascripts
│ └ stylesheets
├ routes
│ └ index.js
└ views
  ├ tmpl // ここにjqtplテンプレファイル入れる
  └ less // ここにLESSファイル入れる</pre>
					<p>less ディレクトリに次の内容の styles.less を作って入れておきます。</p>
					<pre>.class {
    width: 1 + 1px;
}

a {
  text-decoration: underline;

  &amp;:hover {
    text-decoration: none;
  }
}</pre>
					<p>ちなみに、今</p>
					<p>http://localhost:3000(ここは環境によります)/less/styles.less</p>
					<p>にアクセスしてみると、当然のように表示できません。</p>
					<h3>LESSのインストール</h3>
					<p>とりあえず最初から順を追っていきます。まずはnpmを使ってLESSをインストールしておきます。</p>
					<pre>$ npm install less@latest</pre>
<h3>LESSをrequireする</h3>
<p>この記事ではJSコードは app.js に書いています。インストールしたらLESSが使えるようになるので、LESSをrequireします。ついでに、今回はpathとfsも使っているので一緒にrequireしておきます。</p>
<p>最後に今回使った app.js をそのまま貼ってるので詳しくはそっち見てください。</p>
<pre>var less = require('less'),
    path = require('path'),
    fs = require('fs');</pre>
					<h3>LESSファイルにアクセスしたときのなんやらを設定</h3>
					<p>まずはファイルにアクセスする前の準備です。</p>
					<pre>app.get(/^\/less\/.+/, function(req, res) {
// less/hoge にアクセスした場合
  var fileRoot = __dirname + '/views/less/', // less ファイルのディレクトリ
      extname = path.extname(req.url), // .less の部分が返る
      basename = path.basename(req.url), // styles.less の部分が返る
      filePath = undefined;

  if ( extname !== '.less' ) {
  // lessファイルじゃなかったら・・・
    console.log('that is not less file');
  }

  filePath = fileRoot + basename; // パスを取得しておく
  // ここに続き書く
});</pre>
					<p>ファイルパスまで準備できたので、次はファイルを読み込みます。ファイルを読み込めたら、一旦LESSをパースしてCSSへ変換、その後変換したCSSをファイルとして返すようにします。</p>
					<pre>app.get(......
  ........

  fs.readFile(filePath, 'utf8', function(err, str) {
  // str で読み込んだ LESSファイルのバッファを受け取る
    var parser = undefined;

    if ( err ) {
    // 読み込み先でエラーがあったら・・・
      console.log('file doesn\'t exist: ' + basename);
    }

    parser = new(less.Parser);
    // LESSのパーサー

    parser.parse(str, function(err, tree) {
    // LESSファイル の文字列部分を渡す
    // tree にパースした LESSのオブジェクトを受け取る
      var css = undefined;

      if ( err ) {
        // パースでエラーがあれば・・・
        console.log('parse error: ' + err.message);
      }

      // toCSS()メソッドを実行するとCSSが返る
      css = tree.toCSS();

      res.writeHead(200, {
        'Content-Type': 'text/css'
      });
      res.end(css, 'utf-8');
      // CSSをファイルとして返す
    });
  });
});</pre>
					<h3>実行して、アクセスしてみる</h3>
					<p>http://localhost:3000/less/styles.less にアクセスしてみましょう。</p>
					<pre>.class {
  width: 2px;
}
a {
  text-decoration: underline;
}
a:hover {
  text-decoration: none;
}</pre>
					<p>完璧っぽい！</p>
					<h3>CSSを圧縮しておきたい場合</h3>
					<p>ちなみに、toCSS()メソッドのオプションで compress 指定をすると圧縮したCSSファイルを返せます。</p>
					<pre>css = tree.toCSS({ compress: true });</pre>
<p>圧縮されたCSSが返ります。ナイス。</p>
<pre>.class{width:2px;}
a{text-decoration:underline;}a:hover{text-decoration:none;}</pre>
					<h2>おわり</h2>
					<p>自分でやってるときはかなり時間かかってしまったんですけど、、、記事にするとかなり短くて凹みました・・・あ、@import とかするとおうふな感じになるので、それはまたどこかで書きます。。</p>
					<h2>付録：今回使った app.js と HTML(jqtpl)/LESSファイル</h2>
					<p>app.js は Expressコマンドで出来るやつをベースに使ってます。</p>
					<h3>app.js</h3>
					<pre>/**
 * Module dependencies.
 */

var express = require('express')
  , jqtpl = require('jqtpl')
  , less = require('less')
  , path = require('path')
  , fs = require('fs')
  , routes = require('./routes')

var app = module.exports = express.createServer();

// Configuration

app.configure(function(){
  app.set('views', __dirname + '/views/tmpl');
  app.set('view engine', 'html');
  app.set('view options', {
    layout: false
  });
  app.register('.html', jqtpl.express);
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

app.configure('production', function(){
  app.use(express.errorHandler());
});

// Routes

app.get('/', routes.index);

app.get(/^\/less\/.+/, function(req, res) {
  var fileRoot = __dirname + '/views/less/',
      extname = path.extname(req.url),
      basename = path.basename(req.url),
      filePath = undefined;

  if ( extname !== '.less' ) {
    console.log('that is not less file');
  }

  filePath = fileRoot + basename;

  fs.readFile(filePath, 'utf8', function(err, str) {
    var parser = undefined;

    if ( err ) {
      console.log('file doesn\'t exist: ' + basename);
    }

    parser = new(less.Parser);

    parser.parse(str, function(err, tree) {
      var css = undefined;

      if ( err ) {
        console.log('parse error: ' + err.message);
      }

      css = tree.toCSS({ compress: true });

      res.writeHead(200, {
        'Content-Type': 'text/css'
      });
      res.end(css, 'utf-8');
    });
  });
});

app.listen(3000);
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);</pre>
					<h3>index.html</h3>
					<p>index.html は views/tmpl/index.html におきます。</p>
					<pre>&lt;!DOCTYPE html&gt;
&lt;html lang="ja"&gt;
&lt;head&gt;
	&lt;meta charset="UTF-8"&gt;
	&lt;title&gt;${title}&lt;/title&gt;
	&lt;link rel="stylesheet" href="/less/styles.less"&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;${title}&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://google.co.jp/"&gt;Google&lt;/a&gt;&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
					<h3>styles.less</h3>
					<p>styles.less は views/less/styles.less におきます。</p>
					<pre>.class {
    width: 1 + 1px;
}

a {
  text-decoration: underline;

  &amp;:hover {
    text-decoration: none;
  }
}</pre>
					<img src="http://5509.me/?ak_action=api_record_view&id=5238&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/less-with-nodejs/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使いやすいセレクトボックスを実装できる jqselectable.js</title>
		<link>http://5509.me/log/jqselectable</link>
		<comments>http://5509.me/log/jqselectable#comments</comments>
		<pubDate>Wed, 07 Dec 2011 12:16:39 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQselectable]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[フォーム]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=5204</guid>
		<description><![CDATA[					
					3年くらい前に最初のバージョンを作ったjQselectableをほぼ全て書き直しました。書きなおす流れで以前のものと互換性がなくなってしまったので、新しいものとして公開します。
					
				 [...]]]></description>
			<content:encoded><![CDATA[					<p><a class="act" href="http://5509.github.com/jQselectable/"><img class="alignnone size-full wp-image-245" title="jqueryselectable" src="http://5509.me/wp-content/uploads/2008/09/jqueryselectable.gif" alt="" width="450" height="187" /></a></p>
					<p>3年くらい前に最初のバージョンを作ったjQselectableをほぼ全て書き直しました。書きなおす流れで以前のものと互換性がなくなってしまったので、新しいものとして公開します。</p>
					<ul>
					<li><a href="http://5509.github.com/jQselectable/">jqselectable のサンプル</a></li>
					<li><a href="http://github.com/5509/jQselectable">5509/jQselectable &#8211; GitHub</a></li>
					</ul>
					<p><span id="more-5204"></span></p>
					<h2>使い方</h2>
					<h3>実行する前に</h3>
					<p>ファイルをgithubから<a href="https://github.com/5509/jQselectable/zipball/master">ダウンロード</a>して、CSS/JSファイルを読み込んでおきます。</p>
					<p>jQueryプラグインなので、jQueryも読みこんでおきます。推奨は一応最新バージョンです。</p>
					<pre>&lt;link rel="stylesheet" href="jqselectable/style/selectable/style.css" /&gt;
&lt;script src="scripts/jquery.js"&gt;&lt;/script&gt;
&lt;script src="jqselectable/jqselectable.js"&gt;&lt;/script&gt;</pre>
					<p>CSSは jqselectable/style の中に</p>
					<ul>
					<li>selectable</li>
					<li>natural</li>
					<li>xp</li>
					</ul>
					<p>と3つ入っているので好きなものを選んでください。自分で書いても大丈夫です。そのときはgithubからpullリクエストください。</p>
					<h3>実行する</h3>
					<p>ready関数は必要に応じて使ってください。</p>
					<pre>jQuery(function($){
    $(selector).jQselectable();
});</pre>
					<p>実行時に渡している<a href="#options">オプションについては次項で解説</a>しています。</p>
					<h2 id="options">オプション</h2>
					<p>オプションを使う場合は、実行時の引数にハッシュで渡します。</p>
					<pre>$(selector).jQselectable({
    show: "fadeIn",
    showDuration: "fast",
    opacity: .9
});</pre>
					<table border="1" class="lftable">
					<tr>
					<th>オプション</th>
					<th>解説</th>
					</tr>
					<tr>
					<td>style</td>
					<td>simple を指定すると普通のプルダウンになります</td>
					</tr>
					<tr>
					<td>show</td>
					<td>表示メソッド: show, fadeIn, slideDown</td>
					</tr>
					<tr>
					<td>hide</td>
					<td>非表示メソッド: hide, fadeOut, slideUp</td>
					</tr>
					<tr>
					<td>showDuration</td>
					<td>表示メソッドがshow以外のときにかける時間</td>
					</tr>
					<tr>
					<td>hideDuration</td>
					<td>非表示メソッドがhide以外のときにかける時間</td>
					</tr>
					<tr>
					<td>height</td>
					<td>styleがsimpleのときに高さを指定する（px不要）</td>
					</tr>
					<tr>
					<td>opacity</td>
					<td>プルダウンの透過度</td>
					</tr>
					</table>
					<h2>API</h2>
					<p>APIを使う場合は、jQselectable実行時の引数を任意の変数から参照できるようにしておきます。また、この場合、適用する要素はひとつにしてください。2つ以上ある場合はちょっと面倒くさいです。以下ひとつのものベースに解説しています。</p>
					<pre>var jqs = $(selector).jQselectable();</pre>
<p>変数から参照できる状態であれば、いつでもAPIを利用できます。とりあえずAPI一覧は以下の通りです。</p>
<table border="1" class="lftable">
<tr>
<th>API</th>
<th>解説</th>
</tr>
<tr>
<td>enable</td>
<td>実行した要素を利用可能にする</td>
</tr>
<tr>
<td>disable</td>
<td>実行した要素を利用不可にする</td>
</tr>
<tr>
<td>refresh</td>
<td>実行した要素のオプションが増減した場合など、refreshメソッドを実行すると中身をリロードできます。動的に何かする際に使ってください</td>
</tr>
<tr>
<td>destroy</td>
<td>jQselectableを破棄します</td>
</tr>
</table>
<h3>enable, disable, destroy</h3>
<p>サンプルコードままですが、ボタンをクリックすると使えるようにしたり使えなくします。</p>
<pre>var $jqs = $("#triggerbind").jQselectable({
    style: "simple",
    height: 150,
    opacity: .9
});

$('#disabled').click(function() { $jqs.jQselectable('disable'); });
$('#enabled').click(function() { $jqs.jQselectable('enable'); });
$('#destroy').click(function() { $jqs.jQselectable('destroy'); });</pre>
					<h3>refresh</h3>
					<p>これもサンプルコードままですが、addボタンをクリックすると元のselect要素にoptionを追加して、その変更をjQselectableへ反映します。</p>
					<pre>// 実行部分は省略

$('#add').click(function() {
    $('#refresh').append('&lt;option value="value_' + num + '"&gt;value_' + (num++) + '&lt;/option&gt;');
    $jqs.jQselectable('refresh');
});</pre>
					<h2>jQselectable.change イベント</h2>
					<p>以前はコールバック関数を呼べるようにしていたのですが、廃止して、イベントから呼べるように変更しました。</p>
					<pre>var $jqs = $("#triggerbind").jQselectable({
    style: "simple",
    height: 150,
    opacity: .9
});

// trigger bind
$jqs.bind('jQselectable.change', function(ev, data) {
    location.href = data.value;
});</pre>
					<p>オプションのvalueを元にページ遷移などしたい場合は、この方法で行います。jQselectableオブジェクトに jQselectable.change イベントを bind すると任意の処理を行えます。サンプルに書いていますが、2つ目の引数(data)に value というプロパティがあり、ここに選択した項目の value が入っています。</p>
					<h2>何かあれば</h2>
					<p><a href="https://github.com/5509/jQselectable">github からフォークしてください</a>。</p>
					<p>それにしても3年ってそんなに経ってしまったんですね・・・</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=5204&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jqselectable/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>フロントエンドの開発効率が3倍に…！？デバッギングプロキシCharlesの使い方</title>
		<link>http://5509.me/log/charles-proxy</link>
		<comments>http://5509.me/log/charles-proxy#comments</comments>
		<pubDate>Mon, 21 Nov 2011 03:27:30 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[プロキシ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=5092</guid>
		<description><![CDATA[					
					タイトルは釣りかとおもいきや僕は普通にあるのとないのとで3倍くらい差があるので、界王拳アプリのひとつです。特にWebアプリとか大きめの規模のサイト開発でとても役に立ちます。
					
					C [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2011/11/charles.png" alt="" title="charles" width="450" class="alignnone size-full wp-image-5173" /></p>
					<p>タイトルは釣りかとおもいきや僕は普通にあるのとないのとで3倍くらい差があるので、界王拳アプリのひとつです。特にWebアプリとか大きめの規模のサイト開発でとても役に立ちます。</p>
					<ul>
					<li><a href="http://www.charlesproxy.com/">Charles</a></li>
					</ul>
					<p><span id="more-5092"></span></p>
					<h2>こんなことができます（目次）</h2>
					<ul>
					<li><a href="#overivew">いちいちサーバーへファイル転送なんかしてられない</a></li>
					<li><a href="#install">Charlesのインストールとライセンス</a></li>
					<li><a href="#map-local">Map Local（指定URLのリクエストをローカルへ向ける</a></li>
					<li><a href="#map-remote">Map Remote（指定URLのリクエストを別のURLへ向ける</li>
					<li><a href="#chaching-off">常にキャッシュをオフに</a>
					<ul>
					<li><a href="#locations">Locations 設定の流れ（ほとんど全部共通）</a></li>
					</ul>
					</li>
					<li><a href="#throttling">Throttling で回線速度をシミュレート</a></li>
					<li><a href="#request-overview">リクエストが丸裸</a>
					<ul>
					<li><a href="#xmlhttprequest">例えばXMLHTTPRequestの場合</li>
					</ul>
					</li>
					<li><a href="#recording">ログの設定はRecording Settingsから</a></li>
					</ul>
					<p>紹介してる以外にも Reverse Proxy を設定できたり、 Break Points で指定リクエストのパラメータを変えて再POSTできる等、なんせ便利なので、一度だまされたと思って使ってみてください <img src='http://5509.me/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
					<h2 id="overivew">いちいちサーバーへファイル転送なんかしてられない</h2>
					<p>規模が大きかったりすると、サーバーへファイルを転送しつつ確認とかいうことが簡単にできなくなりますよね。そういうときはCharlesのようなプロキシアプリを使って、指定したURLに本来行くはずのリクエストを、ローカルや違うサーバーへ向けてそっちのファイルを参照させます。</p>
					<p>例えば</p>
					<pre>http://hoge.com/css/*</pre>
<p>にリクエストした場合</p>
<pre>file://localhost/Users/username/hoge/css/*</pre>
					<p>のファイルを見せることができます。つまり、ローカルで編集したファイルをサーバーへあげなくても、例えば本番環境にファイルを上げたみたいな挙動をするってことです。</p>
					<p>まだ？？？になっている人もいるかもなので、もっと簡潔に言うと、<strong>Charlesを起動しているときは、いちいちSFTP等でサーバーへファイルを転送しなくていい</strong>ってことです。大きいサイトとかだと、サーバーへファイルを転送するのもなかなか面倒くさかったりしますよね。</p>
					<p>あとは、もろもろの理由でローカルが立てられないときとか・・・あるあるじゃないですか・・・そういうときに超便利です。</p>
					<p>そんな感じで、最低限設定しておくとよさそうな箇所やここが便利だよっていうところをざっくり書いておきます。まーみんな買ったほうがいいですよ。Charlesじゃなくてもいいけど。</p>
					<h2 id="install">Charlesのインストールとライセンス</h2>
					<p><a href="http://www.charlesproxy.com/">Charles</a>のサイトからダウンロードしてインストールするだけで</p>
					<ul>
					<li>Win 32bit/64bit</li>
					<li>Mac OS X</li>
					<li>Linux/Unix</li>
					</ul>
					<p>とOSのカバー範囲も広くて色々な環境で使えます。</p>
					<p>ライセンスを購入していないときは、基本的に全ての機能を使えるけれど以下2つの制約があります。</p>
					<ul>
					<li><strong>起動するとき10秒待たないといけない</strong></li>
					<li><strong>30分経つとCharlesが自動終了する</strong>（アラートとかないです</li>
					</ul>
					<p>で、このままでも1日中の開発続けられるぜっていう場合は、特に買わなくてもいいかもですね。ちなみに<strong>1ライセンス $50 で、いまだと3700円くらい</strong>ですね。</p>
					<h2 id="map-local">Map Local（指定URLのリクエストをローカルへ向ける</h2>
					<p>Tools &gt; Map Local から、Enable Map Local にチェックを入れて Add をクリックすると Edit Mapping という画面が出てくるのでここで Mapping（このURLのリクエストはローカルのどこそこ見せますみたいなの） の設定をします。</p>
					<p>打つのは面倒くさいと思うので、実際にページ表示してURLをコピーしてそれを Host の箇所にペーストしてタブか何かで別の Inputエリアに移動すると自動的に Protocol, Host, Port が補完されます。こういう細かい気づかい必要です。さらっとやってくれるようなやつ。</p>
					<p>で、例えば</p>
					<pre>http://5509.me/js/*</pre>
<p>こういうような場合、つまり 5509.me の jsディレクトリ配下は全てローカルを見せる場合</p>
<p>Path は /js/* と * で全部指定します。</p>
<p>まーこの辺はダイジョウブですよね。<br />
で、Map To のところにどこ見せるかっていうディレクトリを、これは Choose ボタンからブラウズで選択します。こっちは * が必要ないので注意してくださいまし。</p>
<p><a href="http://5509.me/wp-content/uploads/2011/11/charles17.png"><img src="http://5509.me/wp-content/uploads/2011/11/charles17.png" alt="" title="Map Local" width="450" class="alignnone size-full wp-image-5168" /></a></p>
<h2 id="map-remote">Map Remote（指定URLのリクエストを別のURLへ向ける</h2>
<p>Map Remote では、ローカルではなく指定したURLへ向けることができます。指定方法は Map Local と同じですね。</p>
<h2 id="chaching-off">常にキャッシュをオフに</h2>
<p>Tools > No Caching をチェックするだけ</p>
<p>Only for selected locations をチェックすると指定した Locations でだけキャッシュをオフにします。Locations 設定の流れは以下全て同じなので、先に書いておきます。</p>
<h3 id="locations">Locations 設定の流れ（ほとんど全部共通）</h3>
<h4>Add をクリック</h4>
<p><a href="http://5509.me/wp-content/uploads/2011/11/charles10.png"><img src="http://5509.me/wp-content/uploads/2011/11/charles10.png" alt="" title="Locations設定の流れ 1" width="450" class="alignnone size-full wp-image-5155" /></a></p>
<h4>Edit Locationパネルが開く</h4>
<p><a href="http://5509.me/wp-content/uploads/2011/11/charles11.png"><img src="http://5509.me/wp-content/uploads/2011/11/charles11.png" alt="" title="Locations設定の流れ 2" width="382" height="283" class="alignnone size-full wp-image-5156" /></a></p>
<h4>指定したいURLを Host へペースト</h4>
<p><a href="http://5509.me/wp-content/uploads/2011/11/charles12.png"><img src="http://5509.me/wp-content/uploads/2011/11/charles12.png" alt="" title="Locations設定の流れ 3" width="381" height="282" class="alignnone size-full wp-image-5157" /></a></p>
<h4>Tabキーを押すと補完される</h4>
<p><a href="http://5509.me/wp-content/uploads/2011/11/charles13.png"><img src="http://5509.me/wp-content/uploads/2011/11/charles13.png" alt="" title="Locations設定の流れ 4" width="380" height="280" class="alignnone size-full wp-image-5158" /></a></p>
<h4>サイト内全ての場合は Path に * を追加する</h4>
<p><a href="http://5509.me/wp-content/uploads/2011/11/charles14.png"><img src="http://5509.me/wp-content/uploads/2011/11/charles14.png" alt="" title="Locations設定の流れ 5" width="379" height="280" class="alignnone size-full wp-image-5159" /></a><br />
パスを指定したい場合は、入力するか、指定パスまでを含んだURLを Host にペーストすればよいです。</p>
<h4>OK すると Locations に追加される</h4>
<p><a href="http://5509.me/wp-content/uploads/2011/11/charles15.png"><img src="http://5509.me/wp-content/uploads/2011/11/charles15.png" alt="" title="Locations設定の流れ 5" width="229" height="132" class="alignnone size-full wp-image-5160" /></a></p>
<h2 id="throttling">Throttling で回線速度をシミュレート</h2>
<p>みんな早い回線使ってるなんてそんなわけないんだよ・・・</p>
<p>Throttling を使えば回線速度をシミュレートできます。あくまでシミュレートですけどね。遅い回線環境でのチェックも規模が大きい場合は重要になってきますし。</p>
<p><a href="http://5509.me/wp-content/uploads/2011/11/charles16.png"><img src="http://5509.me/wp-content/uploads/2011/11/charles16.png" alt="" title="Throttling" width="450" class="alignnone size-full wp-image-5165" /></a></p>
<p>Throttling Settingsを開いて Enable Throttling をチェックして、Throttle Preset から登録されてる項目を選択するとそれくらいの速度の回線で見てるような感じになります。試しに 28.8kbps を選んで OK してみてください。</p>
<p>Only for selected hosts にチェックを入れると 下の Hosts に追加したとこでだけ有効になるとかそういうのは他のではあるので、覚えておくと便利ですね。</p>
<h2 id="request-overview">リクエストが丸裸</h2>
<p><a href="http://5509.me/wp-content/uploads/2011/11/charles1.png"><img src="http://5509.me/wp-content/uploads/2011/11/charles1.png" alt="" title="リクエストが丸裸" width="450" class="alignnone size-full wp-image-5099" /></a></p>
<p>単純にCharlesを起動して、Shift+Cmd+P（Mac OS Proxyをオンに）を押した後にこのブログを開いただけです。何も設定をしていない状態では、全てのリクエストを拾ってログをSequenceタブに表示していきます。</p>
<p>キャプチャにあるようにログにはタブがついていて</p>
<ul>
<li>Overview</li>
<li>Request</li>
<li>Response</li>
<li>Summary</li>
<li>Chart</li>
<li>Notes</li>
</ul>
<p>リクエストが丸裸に・・・</p>
<h3 id="xmlhttprequest">例えばXMLHTTPRequestの場合</h3>
<p><a href="http://5509.me/wp-content/uploads/2011/11/charles2.png"><img src="http://5509.me/wp-content/uploads/2011/11/charles2.png" alt="" title="Ajaxのリクエストも" width="450" class="alignnone size-full wp-image-5101" /></a></p>
<p>JSからのリクエストはアイコンが「J」になって</p>
<p><a href="http://5509.me/wp-content/uploads/2011/11/charles5.png"><img src="http://5509.me/wp-content/uploads/2011/11/charles5.png" alt="" title="GETの場合はQuery Stringが一覧で" width="450" class="alignnone size-full wp-image-5105" /></a></p>
<p>当然のようにRequest内容が見れます。GETリクエストの場合はQuery Stringも見れます。</p>
<p><a href="http://5509.me/wp-content/uploads/2011/11/charles3.png"><img src="http://5509.me/wp-content/uploads/2011/11/charles3.png" alt="" title="リクエスト結果" width="450" class="alignnone size-full wp-image-5102" /></a></p>
<p>リクエスト結果はResponseタブで確認できます</p>
<p><a href="http://5509.me/wp-content/uploads/2011/11/charles4.png"><img src="http://5509.me/wp-content/uploads/2011/11/charles4.png" alt="" title="JSONならこんな具合に" width="450" class="alignnone size-full wp-image-5103" /></a></p>
<p>JSONなら超見やすい具合に整理されて表示できます</p>
<p>すでに便利なんですけど、何も設定しないとどうでもいいログまでバンバン記録されていくので、設定で要らないログは記録しないようにします。</p>
<h2 id="recording">ログの設定はRecording Settingsから</h2>
<p><a href="http://5509.me/wp-content/uploads/2011/11/charles6.png"><img src="http://5509.me/wp-content/uploads/2011/11/charles6.png" alt="" title="Recording Settings" width="278" height="198" class="alignnone size-full wp-image-5108" /></a></p>
<p>そのままだとログの記録だけでMacBook Airのファンがフィンフィンうるさいレベルになるので、これはやっておいたほうがよいでしょう。まー画像とかのログみてもアレですし。いや必要なときはありますけどね。そのときは外せばいいだけですし。</p>
<p>Recording Settingsを開くと</p>
<ul>
<li>Options &#8211; ログを記録する上限を設定できる</li>
<li>Include &#8211; ログを記録するURLやファイル・ディレクトリを指定（これ設定すると設定したURLでしかログを記録しなくなります</li>
<li>Exclude &#8211; ログを記録しないURLやファイル・ディレクトリを指定</li>
</ul>
<p>とりあえず、静的なファイルは記録しても意味ない（僕は）のでそれらをExcludeするように設定します。</p>
<p>AddをクリックするとEdit Locationが表示されるので、そこに「*.gif」と入力すると、全てのgifファイルといった指定にできます。ここで全部指定できたらいいんですけど、それはできないようなので、同じように.js・.cssなどを指定していきます。</p>
<p><a href="http://5509.me/wp-content/uploads/2011/11/charles9.png"><img src="http://5509.me/wp-content/uploads/2011/11/charles9.png" alt="" title="除外ファイルの追加" width="384" height="286" class="alignnone size-full wp-image-5113" /></a></p>
<p><a href="http://5509.me/wp-content/uploads/2011/11/charles8.png"><img src="http://5509.me/wp-content/uploads/2011/11/charles8.png" alt="" title="除外するファイルなど" width="469" height="207" class="alignnone size-full wp-image-5110" /></a></p>
<p>これで、ログに表示されるのはXMLHTTPRequestとかだけになるので、ちょっとはスッキリ。</p>
<h2>いかがでしたか</h2>
<p>ざっくりとしか説明してませんが、とりあえずインストールして Map Local とか リクエスト見てみる などしてみてください。開発速度が3倍くらいになるようなならないような・・・</p>
<p>僕はえどさんのエントリで知りました。</p>
<ul>
<li><a href="http://css-eblog.com/tools/charles.html">本番環境でテスト？！ Charlesを使った簡単サイト修正</a></li>
</ul>
<h2>他のプロキシアプリ</h2>
<p>僕は使ってないので比較できませんが、他にもCocProxyやFiddlerが有名です。</p>
<ul>
<li><a href="http://coderepos.org/share/wiki/CocProxy">CocProxy</a></li>
<li><a href="http://www.fiddler2.com/fiddler2/">Fiddler</a></li>
</ul>
<img src="http://5509.me/?ak_action=api_record_view&id=5092&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/charles-proxy/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OS X LionでApacheの設定をする</title>
		<link>http://5509.me/log/apache-with-lion</link>
		<comments>http://5509.me/log/apache-with-lion#comments</comments>
		<pubDate>Wed, 09 Nov 2011 06:04:47 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[OS X Lion]]></category>

		<guid isPermaLink="false">http://5509.me/?p=5029</guid>
		<description><![CDATA[					MAMPとかXAMPPは使わないでやります。
					標準でApacheが入っているので、前準備はなしでだいじょぶです。
					# ターミナル初めての人向け
					$ で始まってるやつはターミナルから [...]]]></description>
			<content:encoded><![CDATA[					<p>MAMPとかXAMPPは使わないでやります。<br />
					標準でApacheが入っているので、前準備はなしでだいじょぶです。</p>
					<p># ターミナル初めての人向け<br />
					<strong>$ で始まってるやつはターミナルから入力します。また sudo はroot権限で実行します。通常ファイルやディレクトリにはPermissionが設定されていて、ユーザーディレクトリより上位階層のファイル・ディレクトリはroot権限がないと変更できません。</strong></p>
					<h2>ゴール</h2>
					<p>ゴールはローカルのhogeディレクトリに<br />
					ブラウザから「http://ho.ge/」でアクセスできるようにすることにします。<br />
					<span id="more-5029"></span></p>
					<p><a href="http://5509.me/wp-content/uploads/2011/11/apache_2.png"><img src="http://5509.me/wp-content/uploads/2011/11/apache_2.png" alt="" title="表示したいディレクトリ" width="500" class="alignnone size-full wp-image-5035" /></a></p>
					<p>ちなみに index.html の中身は</p>
					<pre>&lt;!DOCTYPE html&gt;
&lt;html lang="ja"&gt;
&lt;head&gt;
&lt;title&gt;hoge&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;p&gt;This is HOGE&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
					<p>になってます。これは表示確認ができればなんでもいいです。</p>
					<p>これから[ユーザー名]っていう箇所が出てくるんですけど、これは赤線で囲った部分の文字が入ります。</p>
					<p><a href="http://5509.me/wp-content/uploads/2011/11/apache_5.png"><img src="http://5509.me/wp-content/uploads/2011/11/apache_5.png" alt="" title="[ユーザー名]" width="500" class="alignnone size-full wp-image-5061" /></a></p>
					<h3>サイドバーにない場合・・・</h3>
					<p><a href="http://5509.me/wp-content/uploads/2011/11/apache_6.png"><img src="http://5509.me/wp-content/uploads/2011/11/apache_6.png" alt="" title="Get Info" width="500" class="alignnone size-full wp-image-5064" /></a></p>
					<p>hogeディレクトリにある index.html のコンテキストメニューから「情報を見る（Get Info）」を選択すると</p>
					<p><a href="http://5509.me/wp-content/uploads/2011/11/apache_7.png"><img src="http://5509.me/wp-content/uploads/2011/11/apache_7.png" alt="" title="[ユーザー名] 2" width="343" height="266" class="alignnone size-full wp-image-5065" /></a></p>
					<p>[ユーザー名] が分かります。</p>
					<h3>http://ho.ge/ にアクセスしてみる</h3>
					<p>とりあえず http://ho.ge/ にアクセスしてみると</p>
					<p><a href="http://5509.me/wp-content/uploads/2011/11/apache_3.png"><img src="http://5509.me/wp-content/uploads/2011/11/apache_3.png" alt="" title="アクセスできない" width="500" class="alignnone size-full wp-image-5037" /></a></p>
					<p>当然アクセスできません。<strong>osho.ge</strong>とか<strong>oho.ge</strong>が気になるけどスルーだオショゲ。</p>
					<h2>Web共有がオンにできるか確認する</h2>
					<p><strong>システム環境設定 → 共有 にあるWeb共有</strong>の項目をチェックしてONにできるか確認します。</p>
					<p><a href="http://5509.me/wp-content/uploads/2011/11/apache_1.png"><img src="http://5509.me/wp-content/uploads/2011/11/apache_1.png" alt="" title="Web共有がオンにできるか確認" width="500" class="alignnone size-full wp-image-5030" /></a></p>
					<p>とりあえず最初からやるという前提で、もしオンにできないときはhttpd.confをデフォルトの状態に戻しておきます。</p>
					<pre>$ sudo cp /etc/apache2/httpd.conf.default /etc/apache2/httpd.conf</pre>
<h2>VirtualHostを設定する</h2>
<p>VirtualHostの設定は、/etc/apache2/extra/httpd-vhosts.conf に書くのが一般的なようで、httpd.confの623行目あたりにある</p>
<pre># Virtual hosts
#Include /private/etc/apache2/extra/httpd-vhosts.conf</pre>
					<p>↓ Includeの前の # をトル</p>
					<pre># Virtual hosts
Include /private/etc/apache2/extra/httpd-vhosts.conf</pre>
					<p>コメントアウトを外す方法でやってたんですけど<br />
					どうにもhttpd-vhosts.confが読み込まれないとかいうので3時間はまったので、httpd-vhosts.confを /etc/apache2/other に作る方法にしました。</p>
					<p>なので<strong>上の # をトルはやらなくてだいじょぶです。</strong></p>
					<p>デフォルトで <strong>/etc/apache2/other の conf拡張子ファイルは全て読み込まれるようになっているので other ディレクトリに httpd-vhosts.conf ファイルを作るだけで使えるようになります</strong>。</p>
					<h3>httpd-vhosts.confを作る</h3>
					<pre>$ sudo vim /etc/apache2/other/httpd-vhosts.conf</pre>
<p>これで vim が起動するので以下を入力します。</p>
<p># vim初めて触る人向け<br />
i を押したあとに以下を入力して<br />
esc → :wq! で保存し vim を閉じます</p>
<pre>NameVirtualHost *:80

# ho.ge
&lt;VirtualHost *:80&gt;
    DocumentRoot /Users/[ユーザー名]/hoge
    ServerName ho.ge
&lt;/VirtualHost&gt;

&lt;Directory /Users/[ユーザー名]/hoge&gt;
    AllowOverride All
    Allow from All
&lt;/Directory&gt;</pre>
					<h2>hostsファイルの設定</h2>
					<p>以下を入力してhostsファイルを開きます。</p>
					<pre>$ sudo vim /etc/hosts</pre>
<p>さっきと同じ要領で以下の行を追加します。</p>
<pre>127.0.0.1 ho.ge</pre>
					<p><img src="http://5509.me/wp-content/uploads/2011/11/apache_4.png" alt="" title="hostsに追加する" width="252" height="170" class="alignnone size-full wp-image-5057" /></p>
					<p>（スペースは気にしないでください）</p>
					<p>ここまで出来たら</p>
					<pre>$ httpd -S</pre>
<p>で設定ファイル（httpd-vhosts.conf）に問題がないか確認します。<br />
問題がない場合は</p>
<pre>httpd: Could not reliably determine the server's fully qualified domain name, using ***** for ServerName
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server ho.ge (/etc/apache2/other/httpd-vhosts.conf:4)
         port 80 namevhost ho.ge (/etc/apache2/other/httpd-vhosts.conf:16)
Syntax OK</pre>
					<p>のように表示されます。VirtualHost configurationのところに設定した ho.ge と Syntax OK が出ていれば設定できているのでだいじょぶです。</p>
					<p>記述に間違いがあるときは</p>
					<pre>Syntax error on line 1 of /etc/apache2/other/httpd-vhosts.conf:
Invalid command 'hogehogehgoe', perhaps misspelled or defined by a module not included in the server configuration</pre>
					<p>のように表示されるので、該当箇所を確認してください。</p>
					<h2>Web共有を再起動する（Apacheの再起動）</h2>
					<p>Web共有のチェックを一旦外して、もう一度チェックするとApacheが再起動して、設定が有効になります。</p>
					<p>Apacheの再起動は</p>
					<pre>$ sudo apachectl restart</pre>
<p>でもできます。</p>
<h2>ho.ge にアクセス</h2>
<p>アクセスできましたか？できたら終わりです。</p>
<p><img src="http://5509.me/wp-content/uploads/2011/11/apache_8.png" alt="" title="ho.ge" width="186" height="78" class="alignnone size-full wp-image-5078" /></p>
<h2>ちなみに</h2>
<p>上までちゃんとやってて httpd -S も大丈夫そうなのにアクセスできない場合は、Macを再起動すると大丈夫になるかも。</p>
<p>僕はそれでさらに1時間はまりました^ω^</p>
<img src="http://5509.me/?ak_action=api_record_view&id=5029&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/apache-with-lion/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>カスタムイベントとイベントの発火</title>
		<link>http://5509.me/log/custom-event</link>
		<comments>http://5509.me/log/custom-event#comments</comments>
		<pubDate>Mon, 10 Oct 2011 17:13:12 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[attachEvent]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[カスタムイベント]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4971</guid>
		<description><![CDATA[					IE8以下以外は普通にaddEventListenerするだけなんだけど、IE8以下はaddEventListenerが使えないのと、イベントハンドラには既に予約されてるonhogehogeしか使えないので、o [...]]]></description>
			<content:encoded><![CDATA[					<p>IE8以下以外は普通にaddEventListenerするだけなんだけど、IE8以下はaddEventListenerが使えないのと、イベントハンドラには既に予約されてるonhogehogeしか使えないので、<em>ondataavailable（※）</em>に全て登録しておいてeventオブジェクトに処理を保存しておく。triggerする際は、evtObj.nameをキーに処理を引き出してhogehogeする。</p>
					<p>※ なんかサイ本みたらondataavailableに登録するみたいなことが書いてあったからそうした。</p>
					<p><iframe style="width: 98%; height: 300px" src="http://jsfiddle.net/Ntv4k/4/embedded/"></iframe></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4971&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/custom-event/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chromeのキャッシュをオフにする方法</title>
		<link>http://5509.me/log/disable-chrome-cache</link>
		<comments>http://5509.me/log/disable-chrome-cache#comments</comments>
		<pubDate>Wed, 05 Oct 2011 03:30:32 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[キャッシュ]]></category>
		<category><![CDATA[ブラウザ]]></category>
		<category><![CDATA[開発]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4953</guid>
		<description><![CDATA[					全然気がつかなかった・・・いつからだろう・・・
					Chromeにビルトインされてるのですぐ使えます。
					ちなみに、キャプチャはChromeのdev版なのでstable版は少し違うかもしれません。 [...]]]></description>
			<content:encoded><![CDATA[					<p>全然気がつかなかった・・・いつからだろう・・・<br />
					Chromeにビルトインされてるのですぐ使えます。</p>
					<p>ちなみに、キャプチャはChromeのdev版なのでstable版は少し違うかもしれません。stableでもcacheの項目あるのは確認してます。</p>
					<p><a href="http://5509.me/wp-content/uploads/2011/10/chrome_cache1.png"><img src="http://5509.me/wp-content/uploads/2011/10/chrome_cache1-1024x640.png" alt="" title="chrome_cache1" width="480" class="alignnone size-medium wp-image-4954" /></a></p>
					<p>通常、キャッシュがあればそっちを見に行くので304になりますが</p>
					<p><a href="http://5509.me/wp-content/uploads/2011/10/chrome_cache2.png"><img src="http://5509.me/wp-content/uploads/2011/10/chrome_cache2-1024x640.png" alt="" title="chrome_cache2" width="480" class="alignnone size-medium wp-image-4955" /></a></p>
					<p>右下にギアアイコンがあって、そこからインスペクタのSettingが開けます</p>
					<p><a href="http://5509.me/wp-content/uploads/2011/10/chrome_cache3.png"><img src="http://5509.me/wp-content/uploads/2011/10/chrome_cache3-1024x640.png" alt="" title="chrome_cache3" width="480" class="alignnone size-medium wp-image-4956" /></a></p>
					<p>Disable cacheにチェックを入れておくと</p>
					<p><a href="http://5509.me/wp-content/uploads/2011/10/chrome_cache4.png"><img src="http://5509.me/wp-content/uploads/2011/10/chrome_cache4-1024x640.png" alt="" title="chrome_cache4" width="480" class="alignnone size-medium wp-image-4957" /></a></p>
					<p>Cacheが常にオフになり</p>
					<p><a href="http://5509.me/wp-content/uploads/2011/10/chrome_cache5.png"><img src="http://5509.me/wp-content/uploads/2011/10/chrome_cache5-1024x640.png" alt="" title="chrome_cache5" width="480" class="alignnone size-medium wp-image-4958" /></a></p>
					<p>常に200、キャッシュを見にいかなくなります</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4953&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/disable-chrome-cache/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>exValidationにチェックボックスで必須をトグルにできるやつを実装しました</title>
		<link>http://5509.me/log/check-if-exvalidation</link>
		<comments>http://5509.me/log/check-if-exvalidation#comments</comments>
		<pubDate>Fri, 30 Sep 2011 16:15:15 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[exValidation]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[アップデート]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4945</guid>
		<description><![CDATA[					exValidation（jQuery.validation.js含め）で今まで一番要望が多かったのですが、汎用的にするのは微妙かなぁと思って実装していませんでした。以前WebDesigningで連載しているj [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/log/exvalidation">exValidation</a>（jQuery.validation.js含め）で今まで一番要望が多かったのですが、汎用的にするのは微妙かなぁと思って実装していませんでした。以前<a href="http://www.amazon.co.jp/gp/product/B004YDXVI2?ie=UTF8&#038;tag=norimania-22&#038;linkCode=shr&#038;camp=1207&#038;creative=8411&#038;creativeASIN=B004YDXVI2">WebDesigningで連載しているjQuery Labで実装方法を書いた</a>ものを、もう面倒なので組み込みました。これで割と簡単に使えるんじゃないでしょうか。表示非表示とかはできません、あくまで必須をトグルにできるだけです。表示非表示も実装したい場合はがんばってアドオンしてください。（アドオンは割と簡単にできます）</p>
					<p><a href="http://5509.me/sample/exvalidation/index8.html">チェックボックスで必須をトグルにできるやつのサンプル</a></p>
					<h3>実装方法</h3>
					<p>実装方法はサンプルに尽きるのですが、ポイントは<strong>トグルにしたい要素はルールを書くときにchkrequiredを必ず含めてください</strong>。</p>
					<pre>&lt;tr&gt;
  &lt;th&gt;Favorite&lt;span&gt;*&lt;/span&gt;&lt;/th&gt;
  &lt;td&gt;
    &lt;span id=&quot;fav&quot;&gt;
      &lt;label for=&quot;f1&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;f1&quot; name=&quot;fav[]&quot; value=&quot;f1&quot;&gt;books&lt;/label&gt;
      &lt;label for=&quot;f2&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;f2&quot; name=&quot;fav[]&quot; value=&quot;f2&quot;&gt;music&lt;/label&gt;
      &lt;label for=&quot;f3&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;f3&quot; name=&quot;fav[]&quot; value=&quot;f3&quot;&gt;game&lt;/label&gt;
      &lt;label for=&quot;f4&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;f4&quot; name=&quot;fav[]&quot; value=&quot;f4&quot;&gt;study&lt;/label&gt;
      &lt;label for=&quot;f5&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;f5&quot; name=&quot;fav[]&quot; value=&quot;f5&quot;&gt;fishing&lt;/label&gt;
      &lt;label for=&quot;f6&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;f6&quot; name=&quot;fav[]&quot; value=&quot;f6&quot;&gt;other&lt;/label&gt;
    &lt;/span&gt;
  &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;th&gt;Favorite Other&lt;/th&gt;
  &lt;td&gt;
    &lt;input type=&quot;text&quot; id=&quot;favOther&quot; name=&quot;favOther&quot; value=&quot;&quot;&gt;
  &lt;/td&gt;
&lt;/tr&gt;</pre>
					<p>で、チェックボックスを含むグループには<strong>chktoggle_hoge_fuga</strong>のように</p>
					<ul>
					<li>hoge: トグルを発火させるためのチェックボックスのID</li>
					<li>fuga: チェックボックスの状態によって必須をトグルさせるinputのID</li>
					</ul>
					<p>ルールを入れておきます。これだけです。</p>
					<pre>$("form")
  .exValidation({
    rules: {
      fav: "chkgroup chktoggle_f6_favOther",
      favOther: "chkrequired"
    },
    stepValidation: true
  });</pre>
					<p>そんなわけで、実装しましたのでよければ使ってください。</p>
					<p><a href="http://5509.me/sample/exvalidation/index8.html">チェックボックスで必須をトグルにできるやつのサンプル</a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4945&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/check-if-exvalidation/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>いつappendされるか分からないDOMノードを監視して何かする</title>
		<link>http://5509.me/log/do-something-when-node-was-appended</link>
		<comments>http://5509.me/log/do-something-when-node-was-appended#comments</comments>
		<pubDate>Wed, 28 Sep 2011 02:20:04 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[append]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4936</guid>
		<description><![CDATA[					最後の手段として使える場合があります。最後の手段です。
					プラグインとか使いまくってると（そもそも挙動を理解していないプラグインを使いまくるのはよくないので、注意したほうがいいです）、「プラグインで生成 [...]]]></description>
			<content:encoded><![CDATA[					<p>最後の手段として使える場合があります。最後の手段です。<br />
					プラグインとか使いまくってると（そもそも挙動を理解していないプラグインを使いまくるのはよくないので、注意したほうがいいです）、「プラグインで生成したノードがDOMツリーに追加された後なんかしたい」みたいなときがあったりするかもしれないですが、そういうときになんとかする方法です。</p>
					<p>jQuery使ってないときは$(&#8220;object&#8221;)をquerySelectorとかに変えます。</p>
					<pre>var object = undefined;
(function() {
    object = $("object");
    if ( object &#038;&#038; object.length &gt; 0 ) {
        // ここに処理書く
        return;
    }
    setTimeout(arguments.callee, 30);
}());</pre>
					<p>上の例だと、objectを監視し続けてほしい個数分取れたときに何かするっていう感じです。取れないときは取れるまでループし続けるので、アレですアレ。。前もって、コンソールからほしい要素が最終的に挿入されてるかどうか見てからにしましょう。</p>
					<p>自分で書いたコードならカスタムイベント入れとくと、後で使うときに楽ですね。つまりプラグイン使うとノードの生成タイミングとか自分で把握できなくなるので、気をつけたほうがいいです。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4936&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/do-something-when-node-was-appended/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>jQueryのappendパターン</title>
		<link>http://5509.me/log/jquery-append-pattern</link>
		<comments>http://5509.me/log/jquery-append-pattern#comments</comments>
		<pubDate>Tue, 30 Aug 2011 14:53:34 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[まとめ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4908</guid>
		<description><![CDATA[					appendで追加するあれやこれのパターン。別に珍しいことないですよくある光景です。appendだけじゃなくてhtmlとかafterとかそゆのでも使えます。まあ何で使えるかっていうのはjQueryのドキュメント [...]]]></description>
			<content:encoded><![CDATA[					<p>appendで追加するあれやこれのパターン。別に珍しいことないですよくある光景です。appendだけじゃなくてhtmlとかafterとかそゆのでも使えます。まあ何で使えるかっていうのは<a href="http://docs.jquery.com/Main_Page">jQueryのドキュメント</a>見てください</p>
					<h3>jQueryオブジェクト</h3>
					<p>まあ普通はこれですよ。</p>
					<pre>var hoge = $("#hoge");
$("#fuga").append(hoge);</pre>
					<p>とか極端な例だけど</p>
					<pre>$(&quot;#hoge&quot;).append(
  $(&quot;&lt;div&gt;&lt;/div&gt;&quot;)
    .append(
      $(&quot;&lt;a&gt;&lt;/a&gt;&quot;)
        .attr(&quot;href&quot;, fuga)
        .text(piyo)
    )
);</pre>
					<p>みたいなの</p>
					<h3>HTML要素</h3>
					<p>これもあるある。</p>
					<pre>$("#hoge").append(
  "&lt;div&gt;fugafuga&lt;/div&gt;"
);</pre>
					<h3>HTML要素少し多い場合</h3>
					<p>ちょっと見にくい。</p>
					<pre>$("#hoge").append(
  &quot;&lt;div class='fuga'&gt;\
    &lt;h3&gt;piyo&lt;/h3&gt;\
    &lt;p&gt;fungaaaaaaa&lt;/p&gt;\
  &lt;/div&gt;&quot;
);</pre>
					<h3>上のパターンを配列で</h3>
					<p>割とみやすい。</p>
					<pre>$("#hoge").append([
  &quot;&lt;div class='fuga'&gt;&quot;,
    &quot;&lt;h3&gt;piyo&lt;/h3&gt;&quot;,
    &quot;&lt;p&gt;fungaaaaaaa&lt;/p&gt;&quot;,
  &quot;&lt;/div&gt;&quot;
].join(""));</pre>
					<h3>functionで要素を返す</h3>
					<p>これあんまり使ってないと思いますけど超便利なんですよ。<br />
					中でたくさん作ってまとめて返したり、条件分岐で返したり夢が広がります。</p>
					<pre>$(&quot;#hoge&quot;).append(function() {
  var elm = $(&quot;&lt;ul&gt;&lt;/ul&gt;&quot;), li = [];
  for ( var i = 0; i &lt; l; i++ ) {
    li.push(
      "&lt;li&gt;" + fuga + "&lt;/li&gt;"
    );
  }
  return elm.append(li.join(""));
});</pre>
					<h2>そんな感じで</h2>
					<p>最後のやつも積極的に使うといいと思います。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4908&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jquery-append-pattern/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Edit in placeエディタを実装するEIP</title>
		<link>http://5509.me/log/eip</link>
		<comments>http://5509.me/log/eip#comments</comments>
		<pubDate>Mon, 01 Aug 2011 06:56:31 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[Edit in place]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4857</guid>
		<description><![CDATA[					
					シンプルで使いやすいEdit in placeエディタを。
					EIPは指定の要素にEdit in placeエディタ機能を付加します。データの保持はカスタムデータ属性で行い、コールバック関数 [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/EIP/"><img src="http://5509.me/wp-content/uploads/2011/08/eip1.png" alt="" title="EIPのサンプルキャプチャ" width="290" height="93" class="alignnone size-full wp-image-4862" /></a></p>
					<p>シンプルで使いやすいEdit in placeエディタを。</p>
					<p>EIPは指定の要素にEdit in placeエディタ機能を付加します。データの保持はカスタムデータ属性で行い、コールバック関数を呼べるためある程度自由にデータのやりとりができます。</p>
					<ul>
					<li><a href="http://5509.me/sample/EIP/">EIPのサンプル</a></li>
					</ul>
					<p><span id="more-4857"></span></p>
					<h2>ダウンロード</h2>
					<p><a href="https://github.com/5509/EIP">Github</a>から</p>
					<h2>使い方</h2>
					<p>jQueryとeip.js、eip.cssを読み込みます。</p>
					<pre>&lt;link rel="stylesheet" href="/css/eip.css"&gt;
&lt;script src=&quot;common/js/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;/js/eip.js&quot;&gt;&lt;/script&gt;</pre>
					<p>次にHTMLを用意します。このとき、HTMLには<strong>data-eip</strong>が必須です。実行対象はdivでもspanというか何でも大丈夫ですが、display: block指定がされているか、ブロック要素がいいと思います。（※data-eipについては後述</p>
					<pre>&lt;div class="eip"
  data-eip-name="name"
  data-eip="text"
&gt;sample&lt;/div&gt;</pre>
					<p>実行する際にEIPだけではデータに対して何もできないので、onsubmitオプションが必須です。（※詳しくは後述</p>
					<pre>&lt;script&gt;
  jQuery(function($) {
    $("div.eip").eip({
      onsubmit: function(name, val) {
        $("input[name=" + name + "]").val(val)
      }
    });
  });
&lt;/script&gt;</pre>
					<h2>EIPのカスタムデータ属性</h2>
					<h3>data-eip</h3>
					<p>EIPの形式を指定できます</p>
					<table border="1" class="lftable">
					<tr>
					<th>形式</th>
					<th>説明</th>
					</tr>
					<tr>
					<td>text</td>
					<td>1行テキスト編集</td>
					</tr>
					<tr>
					<td>textarea</td>
					<td>複数行テキスト編集</td>
					</tr>
					<tr>
					<td>select</td>
					<td>セレクトボックスから選択</td>
					</tr>
					</table>
					<h4>textareaを指定した場合</h4>
					<p><img src="http://5509.me/wp-content/uploads/2011/08/eip3.png" alt="" title="data-eip: textarea" width="299" height="228" class="alignnone size-full wp-image-4864" /></p>
					<p>data-eip-rowsで置き換えた後のtextareaにrowsを指定できます</p>
					<pre>&lt;div class="eip"
  data-eip-name="introduce"
  data-eip="textarea"
  data-eip-rows="10"
&gt;自己紹介がはいるよ&lt;/div&gt;</pre>
					<h4>selectを指定した場合</h4>
					<p><img src="http://5509.me/wp-content/uploads/2011/08/eip2.png" alt="" title="data-eip: select" width="288" height="92" class="alignnone size-full wp-image-4863" /></p>
					<p>data-eip-optionでselect要素のoptionを生成できます</p>
					<pre>&lt;div class="eip"
  data-eip-name="select"
  data-eip="select"
  data-eip-option="[&quot;A&quot;,&quot;B&quot;,&quot;C&quot;,&quot;D&quot;]"
&gt;A&lt;/div&gt;</pre>
					<p>data-eip-optionはArrayかJSON形式で指定します</p>
					<h4>Array</h4>
					<pre>[&quot;A&quot;,&quot;B&quot;,&quot;C&quot;,&quot;D&quot;]</pre>
<h4>JSON</h4>
<pre>{&quot;A&quot;:&quot;data-A&quot;,&quot;B&quot;:&quot;data-B&quot;}</pre>
					<h3>data-eip-name</h3>
					<p>data-eip-nameを指定しておくとコールバックでデータを引き抜くときに便利です</p>
					<h3>data-eip-value</h3>
					<p>data-valueはエディタから置き換えられた後に置き換えた値が代入されます</p>
					<h3>data-eip-default</h3>
					<p>何もない場合に表示されるラベルを個別に指定できます<br />
					まとめて指定したい場合はオプションから指定できます</p>
					<h2>オプション</h2>
					<table border="1" class="lftable">
					<tr>
					<th>プロパティ</th>
					<th>デフォルト</th>
					</tr>
					<tr>
					<td>defaultLabel</td>
					<td>&#8220;Click here to edit&#8221; 何もない状態のときに表示する</td>
					</tr>
					<tr>
					<td>buttons</td>
					<td>true EIPのボタンを表示する</td>
					</tr>
					<tr>
					<td>submitLabel</td>
					<td>&#8220;Save&#8221; 保存ボタンのラベル</td>
					</tr>
					<tr>
					<td>cancelLabel</td>
					<td>&#8220;Cancel&#8221; キャンセルボタンのラベル</td>
					</tr>
					<tr>
					<td>onsubmit</td>
					<td>null コールバック関数, function(name, val) {}</td>
					</tr>
					</table>
					<p>onsubmitでは data-eip-nameとdata-eip-valueを受取ります。</p>
					<h2>DOCTYPE・・・</h2>
					<p>カスタムデータ属性を使っているので、XHTMLだとinvalidになるので気になる場合は、DOCTYPEだけでもHTML5にしておくとよいです</p>
					<h2>というわけで</h2>
					<p>何かあれば<a href="https://github.com/5509/EIP">Github</a>からフォークしてください</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4857&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/eip/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skroll.jsのマイナーアップデート</title>
		<link>http://5509.me/log/updated-skroll-083</link>
		<comments>http://5509.me/log/updated-skroll-083#comments</comments>
		<pubDate>Mon, 01 Aug 2011 06:24:00 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[skroll]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4870</guid>
		<description><![CDATA[					OS X Lionぽいスクロールバーを実装できてiOSにも対応した Skroll.js
					アップデート項目
					
					added: refresh()メソッドの実装
					added:  [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/log/skroll">OS X Lionぽいスクロールバーを実装できてiOSにも対応した Skroll.js</a></p>
					<h2>アップデート項目</h2>
					<ul>
					<li>added: refresh()メソッドの実装</li>
					<li>added: スクロールバーの背景を表示する</li>
					<li>bugfix: スクロールバーの高さ</li>
					<li>bugfix: スクロール量</li>
					<li>bugfix: スクロールコンテンツが少し余る</li>
					<li>modifed: iOSでのモーメンタムスクロールのスクロール量、easingの調整</li>
					</ul>
					<p>使い方などは<a href="http://5509.me/log/skroll">Skrollのアーカイブ</a>に追記してます。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4870&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/updated-skroll-083/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OS X Lionぽいスクロールバーを実装できてiOSにも対応した Skroll.js</title>
		<link>http://5509.me/log/skroll</link>
		<comments>http://5509.me/log/skroll#comments</comments>
		<pubDate>Tue, 12 Jul 2011 01:30:21 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Lion]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[スクロールバー]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4822</guid>
		<description><![CDATA[					
					前略そんなわけでスクロールバー作りました。
					
					一応目指していたところは、PCベースのサイトを作ったときにiOSで見てもスクロールバー実装したとこいい感じになるよ！っていうのです。 [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/skroll/ioskroll.html"><img src="http://5509.me/wp-content/uploads/2011/07/skroll2.png" alt="" title="skroll2" height="320" class="alignnone size-full wp-image-4854" /></a></p>
					<p>前略そんなわけでスクロールバー作りました。<br />
					<span id="more-4822"></span></p>
					<p>一応目指していたところは、PCベースのサイトを作ったときにiOSで見てもスクロールバー実装したとこいい感じになるよ！っていうのです。</p>
					<p>PCでLionぽいスクロールバー作りたいなと思って会社の合宿中に始めたのですけど、なんかいつの間にかiOSにも対応することになってて、動きにこだわり始めたら収集つかなくなってめちゃめちゃ時間かかりました・・・</p>
					<p>対象バージョンはある程度絞ってあるんですけど、結構納得いく動きにできたかなーと思います。動きはとりあえずPCとiOS（4.2以上）で見てください。</p>
					<p>タイトルにないですけど、これは<strong>jQueryプラグインとして動作します（jQuery mobileは必要ないです）</strong>。自分で使う機会が多ければjQuery外してiOSに特化してもいいかなとかそういうノリなので、もし使う人がいればフィードバックください。</p>
					<p>iOS用のスクローラーライブラリでiScrollとかScrollabilityがあるのですが</p>
					<h3>とりあえずiScrollとかとの違いを</h3>
					<ul>
					<li>PCベースで対応（iOSはサブ扱い、半分くらいiOSのコードだけど</li>
					<li>PCとiOSでは動作が違う、それぞれ使いやすいように最適化</li>
					</ul>
					<h2>サンプル</h2>
					<ul>
					<li><a href="http://5509.me/sample/skroll/">PCブラウザとiOSで動作が違います</a></li>
					<li><a href="http://5509.me/sample/skroll/ioskroll.html">refreshメソッドのサンプル</a> &#8211; iOS向けによくあるヘッダフッタの固定</li>
					</ul>
					<p>二つ目のサンプルはウィンドウの幅を変えてみてください。refresh()メソッドを使うことで、スクロールバーの長さがコンテンツの幅が変わるのに合わせて変わります</p>
					<h2>ダウンロード</h2>
					<p><a href="https://github.com/5509/Skroll">Github</a>から</p>
					<h2>使い方</h2>
					<p>jQueryとskroll.jsを読み込んで実行するだけです。実行する対象はいつもoverflow: auto;にしてる要素です。autoにしておいて、skroll()メソッドを実行すればスクロールバーが置き換わります。このときwidthの指定がある場合は（auto以外の場合）オプションでwidthをしてください。</p>
					<p><strong>※ スクロールバーは縦のスクロールバーしか実装できません。</strong></p>
					<pre>&lt;script src=&quot;common/js/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;skroll/skroll.js&quot;&gt;&lt;/script&gt;
&lt;script&gt;
  jQuery(function($) {
    $(&quot;div.txt&quot;).skroll({
      width: 300
    });
  });
&lt;/script&gt;</pre>
					<h2>オプション</h2>
					<p>あまり役に立たないオプションが多いかも・・・</p>
					<table border="1" class="lftable">
					<tr>
					<th>プロパティ</th>
					<th>デフォルト</th>
					</tr>
					<tr>
					<td>margin</td>
					<td>0 元の要素のmarginがある場合は指定しておく</td>
					</tr>
					<tr>
					<td>width</td>
					<td>置き換えた後のコンテンツ幅、元の幅と同じ</td>
					</tr>
					<tr>
					<td>height</td>
					<td>置き換えた後のコンテンツ高、元の高さと同じ</td>
					</tr>
					<tr>
					<td>inSpeed</td>
					<td>50 スクロールバーが表示される速度</td>
					</tr>
					<tr>
					<td>outSpeed</td>
					<td>200 スクロールバーが非表示になる速度</td>
					</tr>
					<tr>
					<td>delayTime</td>
					<td>200 最初に表示されて消えるまでの速度</td>
					</tr>
					<tr>
					<td>scrollBarWidth</td>
					<td>6 スクロールバーの幅</td>
					</tr>
					<tr>
					<td>scrollBarSpace</td>
					<td>3 スクロールバーとコンテンツのスペース</td>
					</tr>
					<tr>
					<td>scrollBarColor</td>
					<td>&#8220;#000&#8243; スクロールバーの色</td>
					</tr>
					<tr>
					<td>scrollBarZIndex</td>
					<td>100 スクロールバーのzIndex</td>
					</tr>
					<tr>
					<td>opacity</td>
					<td>0.5 スクロールバーの透明度</td>
					</tr>
					<tr>
					<td>scrollBarBg</td>
					<td>false スクロールバーの背景を表示する</td>
					</tr>
					<tr>
					<td>scrollBarBgColor</td>
					<td>&#8220;#666&#8243; スクロールバー背景の色</td>
					</tr>
					<tr>
					<td>scrollBarBgOpacity</td>
					<td>0.5 スクロールバー背景の透明度</td>
					</tr>
					<tr>
					<td>scrollBarGrowth</td>
					<td>&#8220;0 0 2px #fff&#8221; スクロールバーのboxShadow</td>
					</tr>
					<tr>
					<td>cursor.grab</td>
					<td>スクロールバーのカーソル：のせたとき、手のアイコン（PC</td>
					</tr>
					<tr>
					<td>cursor.grabbing</td>
					<td>スクロールバーのカーソル：掴んだとき、掴んだ手のアイコン（PC</td>
					</tr>
					<tr>
					<td>scrollCancel</td>
					<td>80 スクロールをキャンセルするまでの時間（iOS</td>
					</tr>
					<tr>
					<td>cubicBezier</td>
					<td>&#8220;&#8221;cubic-bezier(0.20,0.71,0.30,0.87)&#8221; バウンス以外のeasing（iOS</td>
					</tr>
					<tr>
					<td>cubicBezierBounce</td>
					<td>&#8220;cubic-bezier(0.11,0.74,0.15,0.80)&#8221; バウンス時のeasing（iOS</td>
					</tr>
					<tr>
					<td>cubicBezierBar</td>
					<td>&#8220;cubic-bazier(0.42,0,1,1)&#8221; スクロールバーのeasing</td>
					</tr>
					<tr>
					<td>scrollBarHide</td>
					<td>true スクロールバーを自動的に非表示にするかどうか</td>
					</tr>
					</table>
					<h2>メソッド</h2>
					<p>メソッドを利用する場合は、jQueryオブジェクトに対してskroll()を実行せずに、jQuery.skroll()を実行します。</p>
					<table border="1" class="lftable">
					<tr>
					<th>メソッド名</th>
					<th>説明</th>
					</tr>
					<tr>
					<td>refresh</td>
					<td>スクロールバー領域を再描画する</td>
					</tr>
					</table>
					<pre>var skroll = $.skroll("div.body", {
  scrollBarBg: true
}); // 要素、オプションの順

skroll.refresh(); // 任意のタイミングで</pre>
					<ul>
					<li><a href="http://5509.me/sample/skroll/ioskroll.html">refresh()メソッドのサンプル</a>
					</li>
					</ul>
					<h2>iOSの対応バージョンについて</h2>
					<p>手元のiOS4.3（iPad2, iPhone4）から見てますが、どちらも普通に使う分には問題ないです。</p>
					<p>CPUもしくはGPUが非力なiPhone3Gや3GSではCSS3 Transitionsが綺麗に動作しない可能性があります。TransitionsにはGPUハードウェアアクセラレータを利用しているため、この部分で滲んだりボヤケたりするかもしれません。</p>
					<h2>というわけで</h2>
					<p><strong>何かあれば<a href="https://github.com/5509/Skroll">Github</a>からフォークしてください</strong>！</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4822&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/skroll/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>GPUアクセラレーターが使える環境で強制的に有効にできるCSSの指定方法</title>
		<link>http://5509.me/log/gpu-accelerator-with-css</link>
		<comments>http://5509.me/log/gpu-accelerator-with-css#comments</comments>
		<pubDate>Tue, 05 Jul 2011 01:55:25 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[GPU]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Transitions]]></category>
		<category><![CDATA[アニメーション]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4798</guid>
		<description><![CDATA[					CSS Transitions Module Level 3ではCSSプロパティの数値を変化させ、その結果アニメーションなどの効果を表現することができますが、iOSなどの非力なモバイル端末ではどうしてもカクカク [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://www.w3.org/TR/css3-transitions/">CSS Transitions Module Level 3</a>ではCSSプロパティの数値を変化させ、その結果アニメーションなどの効果を表現することができますが、iOSなどの非力なモバイル端末ではどうしてもカクカクしてしまう場合が多いです。</p>
					<p>特に要素の位置を動かすなどの処理はコストが高く、よくカクカクするというか、スムーズにアニメーションしてくれないときが多いです。</p>
					<p>iOSではCSS3によるGPUアクセラレーターの利用ができ、GPUアクセラレーターをONにすると、今までカクカクしていたCSSによるアニメーション効果もかなりスムーズになります。</p>
					<p>基本的には3D処理をさせている場合に有効になりますが、<strong>GPUアクセラレーターによるアニメーション処理を行う際、プロパティの指定方法によってはiOSでチラつくことがありまして、、このチラつきはGPUアクセラレーターのON/OFFが切り替わったタイミングで発生している</strong>ようで、GPUアクセラレーターを利用したい場合は、常に3D処理をさせる（常にONにしておく）のがよさそうです。</p>
					<p>3D処理のスイッチ（便宜上スイッチと呼びますが）については@<a href="http://twitter.com/Takazudo">Takazudo</a>さんのハマログに書かれてる以下の記述でも出来るのですが</p>
					<pre>target { -webkit-transform: translate3d(0, 0, 0); }</pre>
<p><a href="http://hamalog.tumblr.com/post/5011193654/ios-css">iOSでCSSアニメーション使うとなんかチカチカする</a></p>
<p>transformプロパティを使いたくない場合もあるので、transformプロパティを利用しない方法として</p>
<pre>target { -webkit-transform-style: preserve-3d; }</pre>
					<p>このようにtransform-styleにpreserve-3dを指定すると、その要素のアニメーション処理にはGPUアクセラレーターが利用されるようになります。</p>
					<h3>指摘もらったので追記、ちょっとわかりにくかったかも</h3>
					<p>transform-style: preserve-3d はGPUアクセラレーターをONにするためのプロパティではありません。3D処理を行うと指定すると、iOSでGPUアクセラレーターがONになるというだけです。</p>
					<p><a href="http://dev.w3.org/csswg/css3-3d-transforms/#transform-style-property">http://dev.w3.org/csswg/css3-3d-transforms/#transform-style-property</a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4798&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/gpu-accelerator-with-css/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CSSでアニメーションするときはtiming-functionを効果的に使うといい感じになる</title>
		<link>http://5509.me/log/css-animation-with-timing-funtion</link>
		<comments>http://5509.me/log/css-animation-with-timing-funtion#comments</comments>
		<pubDate>Mon, 04 Jul 2011 10:14:23 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[timing-function]]></category>
		<category><![CDATA[Transitions]]></category>
		<category><![CDATA[アニメーション]]></category>
		<category><![CDATA[関西弁]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4784</guid>
		<description><![CDATA[					※ 今日はフランクな関西弁全開で書いてます
					timing-functionってJSで言うてたところのeasingやねん。timing-functionは規定値で
					
					ease
			 [...]]]></description>
			<content:encoded><![CDATA[					<p>※ 今日はフランクな関西弁全開で書いてます</p>
					<p>timing-functionってJSで言うてたところのeasingやねん。timing-functionは規定値で</p>
					<ul>
					<li>ease</li>
					<li>ease-in</li>
					<li>ease-out</li>
					<li>ease-in-out</li>
					<li>linear</li>
					</ul>
					<p>の5つが用意されとるんやけど、それだけでも結構きれいな数値の変化になるねん。でもカスタム値のcubic-bezierっていうので動きを詳細に決めることができて、これ使うと好きな動きにできるんやで。</p>
					<h3>linearの動き</h3>
					<p>例えばlinearの動きはこんな感じに表せるんやけど・・・まだよくわからんよね。</p>
					<p><a href="http://5509.me/wp-content/uploads/2011/07/timing-linear.png"><img src="http://5509.me/wp-content/uploads/2011/07/timing-linear.png" alt="" title="timing-linear" width="431" height="431" class="alignnone size-full wp-image-4791" /></a></p>
					<h3>参考</h3>
					<dl>
					<dt>CSS Transitions Module Level 3</dt>
					<dd><a href="http://www.w3.org/TR/css3-transitions/">http://www.w3.org/TR/css3-transitions/</a></dd>
					<dt>The ‘transition-timing-function’ Property</dt>
					<dd><a href="http://www.w3.org/TR/css3-transitions/#transition-timing-function_tag">http://www.w3.org/TR/css3-transitions/#transition-timing-function_tag</a></dd>
					</dl>
					<p>で、このcubic-bezierの指定方法なんやけど、いちいち計算なんかしてられへんから、ツール使ったほうがええよね。とりあえずコレ使ってたらええよっていうのはこれな。</p>
					<ul>
					<li><a href="http://www.roblaplaca.com/examples/bezierBuilder/">CSS cubic-bezier Builder</a></li>
					</ul>
					<p>つまみが2つあって、それ動かすと好きなように曲線を変えれるねん。曲線が数値の変化にどう影響するんかってうのは次の図に書いてみたで。動きの比較もできるようになってるから、「Click Here」のとこクリックしてみてや。どんな変化になるんかっていう目安には十分なるから、好きな動きにできると思うで。</p>
					<p><a href="http://5509.me/wp-content/uploads/2011/07/timing-desc.png"><img src="http://5509.me/wp-content/uploads/2011/07/timing-desc.png" alt="" title="timing-desc" width="432" height="431" class="alignnone size-full wp-image-4790" /></a></p>
					<p>あ、そうそう、Y軸は数値の変化、X軸は時間の変化になってるから、それに合わせて考えて曲線動かしてな。ところでJSとかASのeasingにあったbounceとかelasticとかそういう複雑な動きはでけへんから注意しといてや。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4784&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/css-animation-with-timing-funtion/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>$(fuga).wrap($boga)した後$bogaに何かしても反映されない</title>
		<link>http://5509.me/log/wrap-method</link>
		<comments>http://5509.me/log/wrap-method#comments</comments>
		<pubDate>Mon, 27 Jun 2011 02:21:05 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[wrap]]></category>
		<category><![CDATA[うっかり]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4763</guid>
		<description><![CDATA[					タイトルだけやとよくわからんですが・・・
					wrap()メソッドは全然使ったことがなくて、なんとなく使ってみたらうっかりはまった例です。よくよく考えたらその通りなのでただのうっかりです・・・
					 [...]]]></description>
			<content:encoded><![CDATA[					<p>タイトルだけやとよくわからんですが・・・</p>
					<p>wrap()メソッドは全然使ったことがなくて、なんとなく使ってみたらうっかりはまった例です。よくよく考えたらその通りなのでただのうっかりです・・・</p>
					<h2>wrap()メソッドについて</h2>
					<p>一応ふれておくとwrap()メソッドを使うと、対象のjQueryオブジェクトを指定したタグか要素で包めます。</p>
					<pre>$(boga).wrap("&lt;div&gt;&lt;/div&gt;");</pre>
<p>とかすると</p>
<pre>&lt;div&gt;boga&lt;/div&gt;</pre>
					<p>になります。このwrapする要素はタグではなくてjQueryオブジェクトでも大丈夫なんですけど、</p>
					<h2>何がだめなのか</h2>
					<pre>var $boga = $("&lt;div&gt;&lt;/div&gt;");
// これは大丈夫
$boga.method(/* something */);

$(fuga).wrap($boga);

// これはだめ
$boga.method(/* something */);</pre>
					<p>結論から言うと、次みたいに$hogeを再取得しないとだめです。（そもそもreplaceWithとかのほうがいいかもとかは置いといて）</p>
					<pre>var $boga = $("&lt;div&gt;&lt;/div&gt;");
// これは大丈夫
$boga.method(/* something */);

// wrapした後、親に移動してそれを $hoge に返す
// つまり元の$hogeを再取得する
$boga = $(fuga).wrap($boga).parent();

// これも当然大丈夫
$boga.method(/* something */);</pre>
					<h2>何がどうなってるの</h2>
					<p>wrap()メソッド自体はほぼそのままwrapAllに渡してるだけなんですけど</p>
					<pre>wrap: function( html ) {
    return this.each(function() {
        jQuery( this ).wrapAll( html );
    });
}</pre>
					<p>下にコメントで書いたように、wrapAll()メソッドでwrapする要素はclone()メソッドで複製したものなので、元の$bogaにあれやこれやしようとしても、そもそも$bogaでwrapされているわけではないのでどうしようもない、ということでした。</p>
					<pre>wrapAll: function( html ) {
    // 略

    if ( this[0] ) {
        // The elements to wrap the target around
        var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
        // ↑ 実際に追加されるのは html ではなく html を複製したもの

        if ( this[0].parentNode ) {
            wrap.insertBefore( this[0] );
            // ↑ 複製したものを追加している
        }

        wrap.map(function() {
            // 略
        }).append( this );
    }

    return this;
}</pre>
					<h2>カレー</h2>
					<p>たべたい</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4763&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/wrap-method/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>コンテンツにheight属性のない画像が含まれていると正しい高さが取れない</title>
		<link>http://5509.me/log/contents-height</link>
		<comments>http://5509.me/log/contents-height#comments</comments>
		<pubDate>Thu, 23 Jun 2011 15:43:00 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[memo]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4756</guid>
		<description><![CDATA[					画像がロードされるのを待って、高さを更新しないとだめです。ってどうしても毎回忘れててうっかり計算あわへんとかで時間潰してしまう・・・
					下のようなHTMLがあって、
					&#60;div class [...]]]></description>
			<content:encoded><![CDATA[					<p>画像がロードされるのを待って、高さを更新しないとだめです。ってどうしても毎回忘れててうっかり計算あわへんとかで時間潰してしまう・・・</p>
					<p>下のようなHTMLがあって、</p>
					<pre>&lt;div class=&quot;txt&quot;&gt;
    &lt;p class=&quot;photo left&quot;&gt;
        &lt;a href=&quot;http://farm6.static.flickr.com/5297/5428556190_6b17a2dddc_m.jpg&quot;&gt;
            &lt;img src=&quot;http://farm6.static.flickr.com/5297/5428556190_6b17a2dddc_t.jpg&quot;&gt;
        &lt;/a&gt;
        &lt;span class=&quot;caption&quot;&gt;
            Photo by &lt;a href=&quot;http://www.flickr.com/photos/kwerfeldein/5428556190/&quot;&gt;Martin Gommel&lt;/a&gt;
        &lt;/span&gt;
    &lt;/p&gt;
    &lt;p&gt;&quot;Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?&quot;&lt;/p&gt;
&lt;/div&gt;</pre>
					<p>コンテンツの高さを取得するには例えば</p>
					<pre>jQuery(function($) {
    var contentsHeight = $("div.txt").get(0).offsetHeight;
});</pre>
					<p>とかで取れるんですけど、画像にheight属性がないので、画像がロードされるとコンテンツの高さが変わってしまうんですね。なので、画像がある場合には、画像がロードされるのを待ってからもう一度取得しないとだめです。</p>
					<p>画像のロード完了はnew Image().completeを使うんですけど、そこの説明ははしょって<a href="https://github.com/5509/m5plugins/blob/master/m5ImgLoad/source/m5imgload.js">m5ImgLoad</a>っていうの使ってます。ちょっと前に$(&#8220;img&#8221;).load()（img.onloadも同じ）だと画像の読み込み完了が取れないみたいなエントリを書いてやっぱり必要なかったとか書いてたのですけど、やはりIEだと取れないので、これ使ってます。</p>
					<pre>jQuery(function($) {
    var $txt = $("div.txt"),
        contentsHeight = $txt.get(0).offsetHeight,
        $images = $("img", $txt),
        imgLength = 0,
        imgLoaded = 0;

    if ( $images.length ) {
        imgLength = $images.length;
        $images.each(function() {
            $(this).m5ImgLoad(function() {
                imgLoaded += 1;
            })
        });

        (function() {
            if ( imgLoaded === imgLength ) {
                contentsHeight = $txt.get(0).offsetHeight;
                return;
            }
            setTimeout(arguments.callee, 30);
        }());
    }
});</pre>
					<p>なんか長くなりましたけど、height属性がない場合も多いので面倒ですけど気にしておかないとはまります・・・</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4756&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/contents-height/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>jQuery1.6以降でattr(&#8220;offsetHeight&#8221;)、attr(&#8220;offsetWidth&#8221;)が取れない</title>
		<link>http://5509.me/log/jquery16s-attr</link>
		<comments>http://5509.me/log/jquery16s-attr#comments</comments>
		<pubDate>Wed, 22 Jun 2011 13:52:09 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[bug]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4748</guid>
		<description><![CDATA[					attr(&#8220;offsetWidth&#8221;)も。詳しい話は置いておいて、1.6からattr周りの仕様が変わって、prop(&#8220;offsetHeight&#8221;)とかやれってこと [...]]]></description>
			<content:encoded><![CDATA[					<p>attr(&#8220;offsetWidth&#8221;)も。詳しい話は置いておいて、1.6からattr周りの仕様が変わって、prop(&#8220;offsetHeight&#8221;)とかやれってことなんでしょうかとか思ったら、後方互換の問題が当然発生してしまうので、やっぱり1.6.1で元に戻したよとか、そういう話になってたはずなのにattr(&#8220;offsetHeight&#8221;)は取れないのです。</p>
					<p>たとえ以降のバージョンで直ったとしても、1.6と1.6.1でだめならなんかもう色々面倒なことになる気がする・・・exValidationとかjQselectableで、というか色んな場面でattr(&#8220;offsetHeight&#8221;)を乱用？してたのでこの仕様変更（バグ？）は結構辛いのです。</p>
					<p>こういう人他にもいないですかね。propと併用するよりは、ピンポイントな話なので、</p>
					<pre>$(hoge).attr("offsetHeight")
$(hoge).attr("offsetWidth")</pre>
					<p>とかやってた箇所を</p>
					<pre>$(hoge).get(0).offsetHeight
$(hoge).get(0).offsetWidth</pre>
					<p>というように、DOMから参照するように置き換えると1.6以降でも動作するようになります。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4748&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jquery16s-attr/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使いやすいマルチプルセレクトへの道のり（セレクトボックスとチェックボックスについて）</title>
		<link>http://5509.me/log/for-graceful-multiple-select</link>
		<comments>http://5509.me/log/for-graceful-multiple-select#comments</comments>
		<pubDate>Fri, 10 Jun 2011 10:18:42 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQselectable]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[マルチプルセレクト]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4701</guid>
		<description><![CDATA[					jQselectableの拡張で、しっくりきて使いやすい、控えめなマルチプルセレクト（複数選択可能なセレクトボックス）を模索中、、つまり考察だけだす
					おさらい
					※ 仕様ではなくて、認識です
 [...]]]></description>
			<content:encoded><![CDATA[					<p>jQselectableの拡張で、しっくりきて使いやすい、控えめなマルチプルセレクト（複数選択可能なセレクトボックス）を模索中、、つまり考察だけだす</p>
					<h2>おさらい</h2>
					<p>※ 仕様ではなくて、認識です</p>
					<dl>
					<dt>セレクトボックス</dt>
					<dd>一覧の中からひとつを選択させるもの（そもそも）</dd>
					<dt>チェックボックス</dt>
					<dd>基本的には一覧である必要はなくて、複数ある項目の中から指定する項目を選択させるというもの</dd>
					</dl>
					<h3>セレクトボックスのmultiple属性</h3>
					<p>どちらもそもそもの使い方が全然違うけど、セレクトボックスにはmultiple属性があって、trueにすると（multiple属性を追加するだけやけど）、PCではShiftかCtrl(Cmd)を押しながらクリックすると複数項目が選択できる</p>
					<p><script type="text/javascript" src="http://jsdo.it/blogparts/qdPw/js?view=design"></script>
					<p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a href="http://jsdo.it/5509/qdPw" title="ただのmultiple select">ただのmultiple select &#8211; jsdo.it &#8211; share JavaScript, HTML5 and CSS</a></p>
					<p>この「<strong>ShiftかCtrl(Cmd)を押しながら</strong>」というのはかなり嫌な実装で、普通に見てそれが複数選択可能かなんて分からへんし、「<strong>Shift or Ctrl(Cmd)+クリック</strong>」をエンドユーザーが認識してる割合は超低い（自分周り調べ）</p>
					<p>そもそもエクスプローラーとかFinderの仕様に沿ってるのかもしれないですけど、それできるのって普通知らないですよね</p>
					<p>フォームでは複数項目選択可の場合って、だいたい「複数選択可」みたいなテキストをラベル付近に入れると思うけど、ていうか入れてほしいけど、この補助テキストがあったとしてもきっとよくわからん。マルチプルセレクトの場合。</p>
					<p><script type="text/javascript" src="http://jsdo.it/blogparts/oFWj/js?view=design"></script>
					<p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a href="http://jsdo.it/5509/oFWj" title="forked: ただのmultiple select">forked: ただのmultiple select &#8211; jsdo.it &#8211; share JavaScript, HTML5 and CSS</a></p>
					<p>（どうやんの？）</p>
					<p>ほんだら、補助テキストを詳しく書いたりするんでしょーか</p>
					<p><script type="text/javascript" src="http://jsdo.it/blogparts/xcGb/js?view=design"></script>
					<p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a href="http://jsdo.it/5509/xcGb" title="forked: ただのmultiple select">forked: ただのmultiple select &#8211; jsdo.it &#8211; share JavaScript, HTML5 and CSS</a></p>
					<p>うーん、こんなごちゃごちゃうるさいフォームは美しくない（デザインではなくて手法が）</p>
					<p>ここまでで分かることはセレクトボックスは複数選択に全くもって向いていないということ</p>
					<p>ただし、iPhoneとAndroidでマルチプルセレクトを見ると、結構みやすいし使いやすい</p>
					<p style="text-align: center"><a style="margin-right: .5em" href="http://5509.me/wp-content/uploads/2011/06/multiple-select-iphone.png"><img src="http://5509.me/wp-content/uploads/2011/06/multiple-select-iphone-200x300.png" alt="" title="マルチプルセレクト on iPhoneのキャプチャ" width="200" height="300" class="alignnone size-medium wp-image-4716" /></a> <a href="http://5509.me/wp-content/uploads/2011/06/multiple-select-android.png"><img src="http://5509.me/wp-content/uploads/2011/06/multiple-select-android-180x300.png" alt="" title="multiple-select-android" width="180" height="300" class="alignnone size-medium wp-image-4732" /></a></p>
					<p>ただし一覧性は低いのでたくさんある場合は一度一番下までスクロールして確認してから、選択という流れになりそう</p>
					<h3>チェックボックス</h3>
					<p>一方チェックボックスは複数選択に適していて、たくさん項目があってもチェックを付けていく間隔から「あ、これは複数選択できるんだな」ということが分かるし、使い方もクリックしてチェックするだけ</p>
					<p><script type="text/javascript" src="http://jsdo.it/blogparts/fJzn/js?view=design"></script>
					<p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a href="http://jsdo.it/5509/fJzn" title="ただのチェックボックス">ただのチェックボックス &#8211; jsdo.it &#8211; share JavaScript, HTML5 and CSS</a></p>
					<h2>つまりー</h2>
					<p>どうしたいかというと、jQselectableのいいところは「<strong>一覧性が高く、目標に到達しやすい</strong>」ということで、これをマルチプルセレクトに対応させる場合、「<strong>一覧性が高く、目標に到達しやすい上に複数選択が可能であることが見てすぐ分かる</strong>」ということ</p>
					<p>でまぁ、そもそも使いにくいセレクトボックスの更に使いにくいマルチプルセレクトなもんで、どうしようかなーというところで、とりあえず思ったこと書きだしただけです</p>
					<p>個人的にはセレクトボックスにチェックボックスをあわせたものが見やすいとは思ってて、iPhoneのやつもチェックが入ってるから複数選択できることが分かるんですね</p>
					<p style="text-align: center"><img src="http://5509.me/wp-content/uploads/2011/06/multiple-select-jquery-ui.png" alt="" title="multiple-select-jquery-ui" width="240" height="247" class="alignnone size-full wp-image-4724" /></p>
					<p>ただまぁ、非常におださい感じになってしまうので（※個人の感想です）、チェックボックス組み合わせるのはナシやなぁとかなんとか。色々見てはいるものの、こんなの使いやすかったよとかそゆのあれば教えてほしいです</p>
					<p>あと、jQselectableはWeb界隈の人たちにはご好評いただいているものの、どこまでのエンドユーザーに対してやさしいかっていうのは、把握できてないですし、もしかしたら使いにくいかもしれませんし。自分周り調べでは、結構普通に選択してはりましたけど</p>
					<p>むー</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4701&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/for-graceful-multiple-select/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ピクセルグリッドに入社しました</title>
		<link>http://5509.me/log/join-the-pixelgrid</link>
		<comments>http://5509.me/log/join-the-pixelgrid#comments</comments>
		<pubDate>Sat, 04 Jun 2011 12:16:09 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[Diary]]></category>
		<category><![CDATA[memo]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4677</guid>
		<description><![CDATA[					先月までばたばたしていて、アーカイブの穴がまた空いてしまったのですが、、それはおいておいて、5月いっぱいでマインドフリーを退職し、6月からは居住地を東京に移し、ピクセルグリッドで働いています。
					（pi [...]]]></description>
			<content:encoded><![CDATA[					<p>先月までばたばたしていて、アーカイブの穴がまた空いてしまったのですが、、それはおいておいて、5月いっぱいで<a href="http://mindfree.jp/">マインドフリー</a>を退職し、6月からは居住地を東京に移し、<a href="http://pxgrid.com/">ピクセルグリッド</a>で働いています。</p>
					<p>（pixelgrid.push(&#8220;5509&#8243;) とかしようと思ったけど意味違ってくるかと思ってやめました）</p>
					<p>色んな意味で刺激的すぎて毎日鼻血出っぱなしです。血が足りない。</p>
					<p>ディレクターからフロントエンジニアになり、いや以前もディレクターと言いつつ開発ばっかりしてましたけどｗ、UIをもっともっとアレしたいなぁと思ってるアレです。アレはソレとかコレで補完してください。</p>
					<p>関東はこれで三度目なので特にこれといって不便とかないですが、まぁ・・・車が多いし道混みすぎてますね。大体バイク移動なのですいすいです。</p>
					<p>そんなわけでせっかく東京に来たので、色々参加していこうと思ってるので、<strong>おもろいこと全然言われへん大阪人ですけど</strong>、こちらの方はよろしくです。今日Sugamo.cssに初参加して<span style="display:none">えどさんのおかげで</span>逆にやる気なくなったり、とかしてないです、恐ろしい集まりやで・・・</p>
					<p>とりあえず、雑貨屋たくさん探そー。いいとこ知ってる方教えてください:)</p>
					<p>あれ、なんか色々書こうと思ったのにいざ書いたら書いたでめっちゃ短い・・・</p>
					<h2>どうでもいいこと</h2>
					<p>直接関係ないですけどFacebookのEmployerのところ変更したら</p>
					<p><img src="http://5509.me/wp-content/uploads/2011/06/facebook_profile.png" alt="" title="facebook_profile" width="451" height="125" class="alignnone size-full wp-image-4679" /></p>
					<p>こういう表記になって、気がきいてるなぁとか思ったのでした。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4677&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/join-the-pixelgrid/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>スマートフォンで使えるフォーム入力内容を消す×ボタンを実装するJSライブラリ</title>
		<link>http://5509.me/log/deletevalue</link>
		<comments>http://5509.me/log/deletevalue#comments</comments>
		<pubDate>Mon, 25 Apr 2011 06:14:20 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[スマートフォン]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4633</guid>
		<description><![CDATA[					
					タイトルが長い・・・入力テキストを消去するUIは検索ボックス（type=search）にだけ有効で、他の（type=textなど）では使えないんですね。でもこの×ボタンの使いやすさは間違いないので。 [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2011/04/iphone_form_.png" alt="×ボタンで入力内容を消すUI" title="×ボタンで入力内容を消すUI" width="320" height="480" class="alignnone size-full wp-image-4638" /></p>
					<p>タイトルが長い・・・入力テキストを消去するUIは検索ボックス（type=search）にだけ有効で、他の（type=textなど）では使えないんですね。でもこの×ボタンの使いやすさは間違いないので。。</p>
					<p>1ヶ月くらい前に作ったのにサンプルを作るのを面倒くさがって公開してなかったものを、サンプルキレイにして公開しておきます。</p>
					<p><a href="http://5509.me/sample/deletevalue">Delete Valueのサンプル</a><br />
					サンプルはiOSとAndroid（<a href="http://5509.me/log/deletevalue#problem_issue0">※1</a>）でしか動作しません。。</p>
					<p>問題点もあるのですが、それは後述。<br />
					<span id="more-4633"></span></p>
					<h2>使い方</h2>
					<h3>ダウンロード</h3>
					<p>ファイルを<a href="https://github.com/5509/deleteValue/archives/master">Githubからダウンロードして</a>ください</p>
					<h3>ファイルの読み込みと実行</h3>
					<p>必要なファイルは<a href="https://github.com/5509/deleteValue/blob/master/source/deleteValue.js">deleteValue.js</a>だけです。<strong>jQueryは必要ありません。</strong>実行はsmartDeleteValueメソッドを実行するだけです。実行対象はjQueryでお馴染みCSSセレクタで指定します</p>
					<pre>&lt;script src="source/deleteValue.js"&gt;&lt;/script&gt;
&lt;script&gt;
&nbsp;&nbsp;GG.smartDeleteValue("#elms input");
&lt;/script&gt;
</pre>
					<h3>オプション</h3>
					<p>実行時の第二引数でオプションを指定できます。</p>
					<pre>GG.smartDeleteValue("#elms input", {
&nbsp;&nbsp;borderRadius    : "10px",
&nbsp;&nbsp;width           : "20px",
&nbsp;&nbsp;height          : "20px",
&nbsp;&nbsp;fontSize        : "20px",
&nbsp;&nbsp;color           : "#efefef",
&nbsp;&nbsp;backgroundColor : "#666",
&nbsp;&nbsp;topAdj          : 2,
&nbsp;&nbsp;leftAdj         : -3,
&nbsp;&nbsp;opacity         : .8,
&nbsp;&nbsp;closeLabel      : "&times;"
});</pre>
					<h4>対応項目一覧</h4>
					<p>以下の値を取れます</p>
					<table border="1" class="lftable">
					<tr>
					<th>borderRadius</th>
					<td>ボタンの角丸の大きさ (def &#8211; &#8220;10px&#8221;</td>
					</tr>
					<tr>
					<th>width</th>
					<td>ボタンの幅 (def &#8211; &#8220;20px&#8221;</td>
					</tr>
					<tr>
					<th>height</th>
					<td>ボタンの高さ (def &#8211; &#8220;20px&#8221;</td>
					</tr>
					<tr>
					<th>fontSize</th>
					<td>ボタンのフォントサイズ (def &#8211; &#8220;20px&#8221;</td>
					</tr>
					<tr>
					<th>color</th>
					<td>ボタンのテキストカラー (def &#8211; &#8220;#efefef&#8221;</td>
					</tr>
					<tr>
					<th>backgroundColor</th>
					<td>ボタンの背景色 (def &#8211; &#8220;#666&#8243;</td>
					</tr>
					<tr>
					<th>topAdj</th>
					<td>ボタンの位置調整上 (def &#8211; &#8220;2&#8243;</td>
					</tr>
					<tr>
					<th>leftAdj</th>
					<td>ボタンの位置調整左 (def &#8211; &#8220;-3&#8243;</td>
					</tr>
					<tr>
					<th>opacity</th>
					<td>ボタンの透過 (def &#8211; &#8220;.8&#8243;</td>
					</tr>
					<tr>
					<th>closeLabel</th>
					<td>ボタンのテキスト (def &#8211; &#8220;&times;&#8221;</td>
					</tr>
					</table>
					<h2>Problem Issues</h2>
					<p>分かる人教えてほしいです。<strong id="problem_issue0">そもそもAndroid端末を持ってないのでAndroidは正式に対応してないです</strong>。一応Galaxy Sでだけ確認しました</p>
					<ul>
					<li>input要素にフォーカスしてるときにorientationchangeが発動しないので、例えばサンプルのようなリキッドレイアウトにしている場合、×ボタンの位置が移動しない</li>
					<li>Androidだとフォーカスしてるinputの×ボタンのtouchstartが取れない（レイヤーが下にきてるような感じ）</li>
					</ul>
					<img src="http://5509.me/?ak_action=api_record_view&id=4633&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/deletevalue/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YUI 3のCSS Fontsを使っている場合のフォントサイズ対応表をCSSのコメントに書いておくと便利ですよね</title>
		<link>http://5509.me/log/yui-fonts-px-table</link>
		<comments>http://5509.me/log/yui-fonts-px-table#comments</comments>
		<pubDate>Sat, 23 Apr 2011 14:36:49 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Font]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4612</guid>
		<description><![CDATA[					CSSでフォントサイズの指定って何でしてますか？っていうのは何年も前からある話題で最近は全然見ないですけど、特にそういう議論をしたいわけじゃなくて。
					僕はYUI 3のCSS Fontsを使っていますが [...]]]></description>
			<content:encoded><![CDATA[					<p>CSSでフォントサイズの指定って何でしてますか？っていうのは何年も前からある話題で最近は全然見ないですけど、特にそういう議論をしたいわけじゃなくて。</p>
					<p>僕は<a href="http://yui.yahooapis.com/3.3.0/build/cssfonts/fonts.css">YUI 3のCSS Fonts</a>を使っていますが、%指定になるので実際何pxになるのかCSSだけでは分かりにくいときもあるので、共通CSSに下記のようなコメントでpx対応テーブルを書いておくとすぐに指定できてわかりやすいと思いますが、皆さんどうしてますか？<br />
					<span id="more-4612"></span></p>
					<p><a href="http://developer.yahoo.com/yui/3/cssfonts/#fontsize">フォントサイズのpx対応表</a>はYUI 3のページから持ってきて使ってますが、26pxまでしかないのがたまに不便かもですね。普通のサイト作ってるときは26px以上ってあまり使わないので困らないですけど。</p>
					<h3>共通CSSに記載するpx対応テーブル</h3>
					<pre>/*-----------------------------------------------------------
 hoge.css

 フォントサイズの指定はYUI Fontsに基づき
 下記テーブルで指定します

 &#124;px&#124;%&#124;
 &#124;10&#124;77&#124;
 &#124;11&#124;85&#124;
 &#124;12&#124;93&#124;
 &#124;13&#124;100&#124;
 &#124;14&#124;108&#124;
 &#124;15&#124;116&#124;
 &#124;16&#124;123.1&#124;
 &#124;17&#124;131&#124;
 &#124;18&#124;138.5&#124;
 &#124;19&#124;146.5&#124;
 &#124;20&#124;153.9&#124;
 &#124;21&#124;161.6&#124;
 &#124;22&#124;167&#124;
 &#124;23&#124;174&#124;
 &#124;24&#124;182&#124;
 &#124;25&#124;189&#124;
 &#124;26&#124;197&#124;

 ex) 12px
 element {
 	font-size: 93%;
 }
 ------------------------------------------------------------*/</pre>
					<p>あとは共通CSSで</p>
					<pre>div.main {
&nbsp;&nbsp;font-size: 93%; /* 12px */
}</pre>
					<p>とかにしたら、モジュールとか個別CSSでは最初のコメントにそれ書いておくと分かりやすいですね。</p>
					<h3>リンク</h3>
					<ul>
					<li><a href="http://yui.yahooapis.com/3.3.0/build/cssfonts/fonts.css">YUI 3: CSS Fonts</a></li>
					<li><a href="http://developer.yahoo.com/yui/3/cssfonts/#fontsize">http://developer.yahoo.com/yui/3/cssfonts/#fontsize</a></li>
					</ul>
					<img src="http://5509.me/?ak_action=api_record_view&id=4612&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/yui-fonts-px-table/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>WebStormのシンタックスハイライトのトワイライトっぽいテーマ共有しときます</title>
		<link>http://5509.me/log/webstorm-syntax-highlight</link>
		<comments>http://5509.me/log/webstorm-syntax-highlight#comments</comments>
		<pubDate>Wed, 20 Apr 2011 16:41:55 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[WebStorm]]></category>
		<category><![CDATA[シンタックスハイライト]]></category>
		<category><![CDATA[テーマ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4601</guid>
		<description><![CDATA[					
					タイトルままです。白いのはアレなのでダークなやつを。CodaをベースにちょっとVimのやつも取り入れつつ。HTML/CSS/JavaScriptはいい感じになるかもしれないけど、JSがちょっと項目多 [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2011/04/webstorm.png" alt="WebStormのシンタックスハイライトテーマ" title="WebStormのシンタックスハイライトテーマ" width="450" class="alignnone size-full wp-image-4603" /></p>
					<p>タイトルままです。白いのはアレなのでダークなやつを。CodaをベースにちょっとVimのやつも取り入れつつ。HTML/CSS/JavaScriptはいい感じになるかもしれないけど、JSがちょっと項目多すぎて断念した・・・これからまた変わっていくかも。誰かきれいなやつあったらください・・・</p>
					<p><a href="/data/09.zip" onclick="_gaq.push(['_trackEvent', 'Download', 'WebStorm Syntax'])">09.zip</a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4601&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/webstorm-syntax-highlight/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ブログのおれ最適化パート2: アクセスキー</title>
		<link>http://5509.me/log/blog-self-optimization-part2-access-key</link>
		<comments>http://5509.me/log/blog-self-optimization-part2-access-key#comments</comments>
		<pubDate>Tue, 19 Apr 2011 07:07:11 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[アクセシビリティ]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4585</guid>
		<description><![CDATA[					パート1は前回の「めくる感覚で行き来できるページナビゲーションをCSSで実装する」です。
					アクセスキーなんか別段目新しいことなんかないですけども以下のキーで怠惰な気分になれます。絶賛実験中なのでタイミ [...]]]></description>
			<content:encoded><![CDATA[					<p>パート1は前回の「<a href="http://5509.me/log/single-column-pagenavigation">めくる感覚で行き来できるページナビゲーションをCSSで実装する</a>」です。</p>
					<p>アクセスキーなんか別段目新しいことなんかないですけども以下のキーで怠惰な気分になれます。絶賛実験中なのでタイミングと僕の気分で割り当ては変わります。<br />
					<span id="more-4585"></span></p>
					<h3>index.php</h3>
					<ul>
					<li><kbd>h</kbd>: ページトップへ移動</li>
					<li><kbd>j</kbd>: ひとつ新しい記事を先頭に</li>
					<li><kbd>k</kbd>: ひとつ古い記事を先頭に<a href="#accesskey_note1">*1</a>）</li>
					<li><kbd>u</kbd>: j,kで送った現在の記事のパーマリンクへ遷移</li>
					<li><kbd>l</kbd>: ページ一番下へ移動</li>
					</ul>
					<p class="note" id="accesskey_note1">*1 ) 最後までいくとautopagerize、但しページャー左の■をクリックして本にしておく必要あり</p>
					<p class="note">indexとsingleで<kbd>j</kbd>と<kbd>k</kbd>の動作が逆になってるけど、今のところはこれで</p>
					<h3>single.phpなど</h3>
					<ul>
					<li><kbd>h</kbd>: ページトップへ移動</li>
					<li><kbd>j</kbd>: ひとつ古い記事のパーマリンクへ遷移</li>
					<li><kbd>k</kbd>: ひとつ新しい記事のパーマリンクへ遷移</li>
					<li><kbd>u</kbd>: コメント入力欄まで移動</li>
					<li><kbd>l</kbd>: ページ一番下へ移動</li>
					</ul>
					<h3>現状のソースコード</h3>
					<pre>$(window)
&nbsp;&nbsp;// Firefoxだとalertが表示されたときにフォーカスがずれて
&nbsp;&nbsp;// 以降ドキュメントを一度クリックしないとキーコントロールが効かないので
&nbsp;&nbsp;// なんかダイアログなのをどこかで実装しないとだめっぽい
&nbsp;&nbsp;.keyup(function(e) {
&nbsp;&nbsp;&nbsp;&nbsp;var key = e.keyCode, b = $("body");
&nbsp;&nbsp;&nbsp;&nbsp;switch( key ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// h
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 72:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.scroll(0, 0);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// j
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 74:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( !b.hasClass("home") ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( !$("#prev").length ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//alert("今見ている記事が一番古い記事です");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;location.href = $("#prev a")[0].href;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( currentArticle === 0 ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//alert("これ以上記事がありません");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.scroll(0, articles.eq(--currentArticle).offset().top - 40);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// k
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 75:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( !b.hasClass("home") ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( !$("#next").length ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//alert("今見ている記事が最新です");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;location.href = $("#next a")[0].href;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( !articles.eq(++currentArticle).length ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//alert("続きを読み込み中・・・ずっとこれが表示されたらもう記事がないです");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentArticle--;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( ( currentArticle + 1 ) === articles.length ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loadingNextPage();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.scroll(0, articles.eq(currentArticle).offset().top - 40);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// l
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 76:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.scroll(0, $("html").attr("scrollHeight"));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// u
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 85:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( !b.hasClass("home") ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( !$("#respond").length ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//alert("コメントは記事詳細で確認できます");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.scroll(0, $("#respond").offset().top - 50);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;location.href = articles.eq(currentArticle).find("header").find("a:first").attr("href");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;});
$("input, textarea").keyup(function(e) {
&nbsp;&nbsp;e.stopPropagation();
});</pre>
					<img src="http://5509.me/?ak_action=api_record_view&id=4585&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/blog-self-optimization-part2-access-key/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>めくる感覚で行き来できるページナビゲーションをCSSで実装する</title>
		<link>http://5509.me/log/single-column-pagenavigation</link>
		<comments>http://5509.me/log/single-column-pagenavigation#comments</comments>
		<pubDate>Thu, 07 Apr 2011 06:21:29 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[ナビゲーション]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4542</guid>
		<description><![CDATA[					
					要らないものを削った結果、記事が縦に長くなってしまうもんで、ページナビゲーション（前の記事、次の記事リンク）をどうしようかなぁとか思ってた。
					ちょうど、シロさん(]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2011/04/pagenav1.png" alt="ページナビゲーションが表示された状態のキャプチャ" title="ページナビゲーションが表示された状態のキャプチャ" width="550" height="232" class="alignnone size-full wp-image-4551" /></p>
					<p>要らないものを削った結果、記事が縦に長くなってしまうもんで、ページナビゲーション（前の記事、次の記事リンク）をどうしようかなぁとか思ってた。</p>
					<p>ちょうど、シロさん(<a href="href="http://twitter.com/___shiro_">@___shiro_</a>)が<a href="http://twitter.com/___shiro_/status/55500005473132544">大胆なナビゲーション云々とTweetしてた</a>のを見て、なーるほどと思い実装してみた。</p>
					<p>こういったレイアウトのアーカイブのナビゲーションで、元のHTMLを一切触らずCSSだけで飛躍的に（？）ユーザビリティを高められるいい例になったかなぁ。どうやろ。その辺は要検証ということで。少なくとも自分で使う分には超使いやすいからこれはこれでオッケーなんですけども。<br />
					<span id="more-4542"></span></p>
					<h2>配置を決める</h2>
					<p>真ん中にでーんとコンテンツがあるので、横の余った位置に戻るとか進むとかつけます。</p>
					<p>構成とかは以下みたいにすればたぶんいけそうという感じで配置してます。</p>
					<p><img src="http://5509.me/wp-content/uploads/2011/04/pagenav3.png" alt="ナビゲーションとコンテンツの位置関係1"  width="550" height="356" class="alignnone size-full wp-image-4554" /></p>
					<p>ナビゲーションを50%:50%でprev:nextをposition: fixedで配置しておき、その上にコンテンツをかぶせる。青い部分がprev、赤い部分がnextです。</p>
					<p><img src="http://5509.me/wp-content/uploads/2011/04/pagenav2.png" alt="ナビゲーションとコンテンツの位置関係2" width="550" height="356" class="alignnone size-full wp-image-4553" /></p>
					<h2>実装コード</h2>
					<h3>HTML</h3>
					<p>諸々端折ってるんですけど、HTMLは以下みたいな感じ。</p>
					<pre>&lt;header/&gt;
&lt;div class=&quot;pagebody&quot;&gt;
&nbsp;&nbsp;&lt;article&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- hogehoge --&gt;
&nbsp;&nbsp;&lt;/article&gt;
&nbsp;&nbsp;&lt;!--//Entry --&gt;
&nbsp;&nbsp;&lt;p id=&quot;pageNavigation&quot;&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;span id=&quot;prev&quot; title=&quot;&#21069;&#12398;&#12456;&#12531;&#12488;&#12522;&#12540;&#12408;&quot;&gt;%link&lt;/span&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;span id=&quot;next&quot; title=&quot;&#27425;&#12398;&#12456;&#12531;&#12488;&#12522;&#12540;&#12408;&quot;&gt;%link&lt;/span&gt;
&nbsp;&nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sub&quot;/&gt;
&lt;footer/&gt;</pre>
					<h3>CSS（コンテンツ部分）</h3>
					<p>ページナビゲーションはコンテンツの下に配置する必要があるので、z-index: -1;を与えて下へ。コンテンツ部分は1とかそういう感じで。</p>
					<pre>header {
&nbsp;&nbsp;position: relative;
&nbsp;&nbsp;z-index: 10;
&nbsp;&nbsp;background: #fff;
}
div.pagebody,
div.sub,
body > footer {
&nbsp;&nbsp;position: relative;
&nbsp;&nbsp;z-index: 1;
&nbsp;&nbsp;background: #fff;
}</pre>
					<p>headerだけ10なのは覆いかぶさるレイヤーがあるからです。なければ1で。</p>
					<h3>CSS（ナビゲーション）</h3>
					<p>ナビゲーションのところはCSSを利用して本来のテキストは非表示にする代わりに、:afterにcontent: &#8220;<"と">&#8220;を入れてオフのときでもよく分からなくならないように配慮したり。</p>
					<p>あとは:afterで追加される要素をspan#prev(next)のposition: relativeに対して、absoluteとネガティブマージンでいい位置にくるように調整してます。</p>
					<p>:afterで追加する要素はa要素よりも上に位置するので、これにも-1を与えてa要素より下に配置してます。そこにカーソルがのったときにリンク使えない、じゃ話にならんですしお寿司。</p>
					<pre>div.pagebody #pageNavigation {
&nbsp;&nbsp;margin: 0;
&nbsp;&nbsp;position: relative;
&nbsp;&nbsp;z-index: -1;
&nbsp;&nbsp;font-size: 100%;
}

&nbsp;&nbsp;div.pagebody #pageNavigation span {
&nbsp;&nbsp;&nbsp;&nbsp;width: 50%;
&nbsp;&nbsp;&nbsp;&nbsp;height: 100%;
&nbsp;&nbsp;&nbsp;&nbsp;position: fixed;
&nbsp;&nbsp;&nbsp;&nbsp;top: 0;
&nbsp;&nbsp;}
&nbsp;&nbsp;div.pagebody #pageNavigation #prev {
&nbsp;&nbsp;&nbsp;&nbsp;left: 0;
&nbsp;&nbsp;}
&nbsp;&nbsp;div.pagebody #pageNavigation #next {
&nbsp;&nbsp;&nbsp;&nbsp;right: 0;
&nbsp;&nbsp;}
&nbsp;&nbsp;div.pagebody #pageNavigation span:after {
&nbsp;&nbsp;&nbsp;&nbsp;margin-top: -90px;
&nbsp;&nbsp;&nbsp;&nbsp;display: block;
&nbsp;&nbsp;&nbsp;&nbsp;position: absolute;
&nbsp;&nbsp;&nbsp;&nbsp;top: 50%;
&nbsp;&nbsp;&nbsp;&nbsp;color: #888;
&nbsp;&nbsp;&nbsp;&nbsp;font-size: 100px;
&nbsp;&nbsp;&nbsp;&nbsp;font-weight: bold;
&nbsp;&nbsp;&nbsp;&nbsp;font-family: Helvetica, Verdana, sans-serif;
&nbsp;&nbsp;&nbsp;&nbsp;z-index: -1;
&nbsp;&nbsp;}
&nbsp;&nbsp;div.pagebody #pageNavigation span#prev:after {
&nbsp;&nbsp;&nbsp;&nbsp;margin-left: -50px;
&nbsp;&nbsp;&nbsp;&nbsp;content: &quot;&lt;&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;left: 20%;
&nbsp;&nbsp;}
&nbsp;&nbsp;div.pagebody #pageNavigation span#next:after {
&nbsp;&nbsp;&nbsp;&nbsp;margin-right: -50px;
&nbsp;&nbsp;&nbsp;&nbsp;content: &quot;&gt;&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;right: 20%;
&nbsp;&nbsp;}
&nbsp;&nbsp;div.pagebody #pageNavigation span:hover:after {
&nbsp;&nbsp;&nbsp;&nbsp;color: #f3e720;
&nbsp;&nbsp;}
&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;div.pagebody #pageNavigation span a {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display: block;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height: 100%;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;position: relative;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text-indent: -1000em;
&nbsp;&nbsp;&nbsp;&nbsp;}</pre>
					<h2>そんなわけで</h2>
					<p>:afterとかcontentプロパティはCSSオン環境でより使いやすさを向上させるためにあるんだなーとかいうのを再認識した次第です。</p>
					<p>えっと、予想してると思いますけど、IE6と7は非対応です。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4542&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/single-column-pagenavigation/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQueryのbind、unbindみたいにnamespace使ってaddEventとかremoveEventできるやつ</title>
		<link>http://5509.me/log/bind-and-unbind-funcs</link>
		<comments>http://5509.me/log/bind-and-unbind-funcs#comments</comments>
		<pubDate>Tue, 05 Apr 2011 17:47:23 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[addEvent]]></category>
		<category><![CDATA[namespace]]></category>
		<category><![CDATA[removeEvent]]></category>
		<category><![CDATA[名前空間]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4518</guid>
		<description><![CDATA[					jQueryのbindとunbindは超便利やなぁと思って、arguments.calleeじゃなくてもremoveEventできるようなやつ書いた。addEventListenerとremoveEventLi [...]]]></description>
			<content:encoded><![CDATA[					<p>jQueryのbindとunbindは超便利やなぁと思って、arguments.calleeじゃなくてもremoveEventできるようなやつ書いた。addEventListenerとremoveEventLisetenerにnamespace渡して管理できる的な。iOSで動けばいいからattachEventとdetachEventは入れてないです。</p>
					<p>結局思いついたやり方でやって、jQueryちゃんと読んでないけど、やり方はこんな感じ？つまり絶賛勉強中。。</p>
					<p class="note">巡り巡ってElement.prototypeを断念、、<del datetime="2011-04-06T03:47:52+00:00">ソース修正した。どうせならこっちの方が使いやすいかも。Elementのprototypeに差し込んだ</del></p>
					<p>revision: <a href="https://gist.github.com/904063">gist: 904063</a><br />
					<span id="more-4518"></span></p>
					<h2>bindの使い方</h2>
					<h3>一番ベーシック</h3>
					<p>普通のaddEventListenerと同じ</p>
					<pre>bind(hoge, type, func);</pre>
<h3>名前空間</h3>
<p>名前空間使ってaddEventする（unbind用）</p>
<pre>bind(hoge, type.namespace, func);</pre>
					<h3>一括addEvent</h3>
					<p>複数のイベントを一括でaddEvent</p>
					<pre>bind(hoge, {
&nbsp;&nbsp;"click": func,
&nbsp;&nbsp;"dblclick": func
});</pre>
					<h2>unbindの使い方</h2>
					<h3>全てのイベントを解除</h3>
					<p>全部消える</p>
					<pre>unbind(hoge);</pre>
<h3>指定したtypeのイベントを解除</h3>
<p>&#8220;click&#8221;にひもづいてるイベントが全部消える</p>
<pre>unbind(hoge, type);</pre>
					<h3>指定したtype.namespaceのイベントを解除</h3>
					<p>&#8220;click.unko&#8221;のイベントのみ消える</p>
					<pre>unbind(hoge, type.namespace);</pre>
<p><del datetime="2011-04-06T02:32:44+00:00">なんかでも中途半端でところどころうまく動いてないかも。</del></p>
<pre>/*
 * bind, unbind
 *
 * @author    : nori(norimania@gmail.com)
 * @copyright : 5509(http://5509.me/)
 * @license   : The MIT License
 * @modified  : 2011-04-06 13:00
 *
 * HOW TO USE
 * bind event          : bind(elm, type, func) or bind(elm, {})
 * bind event.name     : bind(elm, type.name, func)
 * unbind all events   : unbind(elm)
 * unbind events(type) : unbind(elm, type)
 * unbind event.name   : unbind(elm, type.name)
 */
YOURNAMESPACE.bind = function() {
&nbsp;&nbsp;var i, _a = arguments;
&nbsp;&nbsp;// 一括登録
&nbsp;&nbsp;if ( typeof _a[1] === "object" ) {
&nbsp;&nbsp;&nbsp;&nbsp;for ( i in _a[1] ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bindFunc(i, _a[1][i]);
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;// 単体登録
&nbsp;&nbsp;} else {
&nbsp;&nbsp;&nbsp;&nbsp;bindFunc(_a[1], _a[2]);
&nbsp;&nbsp;}
&nbsp;&nbsp;function bindFunc(type, func) {
&nbsp;&nbsp;&nbsp;&nbsp;var i;
&nbsp;&nbsp;&nbsp;&nbsp;type = type.split(" ");
&nbsp;&nbsp;&nbsp;&nbsp;for ( i = 0, l = type.length; i < l; i++ ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 名前空間の指定がある場合
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( type[i].indexOf(".") !== -1 ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type[i] = type[i].split(".");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_a[0]["bindedNamed"] = _a[0]["bindedNamed"] || {};
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_a[0]["bindedNamed"][type[i][0]] = _a[0]["bindedNamed"][type[i][0]] || {};
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_a[0]["bindedNamed"][type[i][0]][type[i][1]] = func;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_a[0].addEventListener(type[i][0], func, false);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 名前空間の指定がない場合
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_a[0]["binded"] = _a[0]["binded"] || {};
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_a[0]["binded"][type] = _a[0]["binded"][type] || [];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_a[0]["binded"][type][_a[0]["binded"][type].length] = func;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_a[0].addEventListener(type[i], func, false);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;}
}
YOURNAMESPACE.unbind = function(elm, type) {
&nbsp;&nbsp;var i = 0, c, d, bindedTypes, bindedEvents, bindedNamedEvents;
&nbsp;&nbsp;// typeがない場合は全削除
&nbsp;&nbsp;if ( !type ) {
&nbsp;&nbsp;&nbsp;&nbsp;// 名前空間無しのイベントを削除
&nbsp;&nbsp;&nbsp;&nbsp;if ( elm["binded"] ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bindedTypes = elm["binded"];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ( c in bindedTypes ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bindedEvents = bindedTypes[c];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while ( bindedEvents[i] ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elm.removeEventListener(c, bindedEvents[i], false);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bindedEvents.splice(i, i + 1);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;// 名前空間有りのイベントを削除
&nbsp;&nbsp;&nbsp;&nbsp;if ( !elm["bindedNamed"] ) return false;
&nbsp;&nbsp;&nbsp;&nbsp;bindedNamedEvents = elm["bindedNamed"];
&nbsp;&nbsp;&nbsp;&nbsp;for ( c in bindedNamedEvents ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ( d in bindedNamedEvents[c] ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elm.removeEventListener(c, bindedNamedEvents[c][d], false);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete bindedNamedEvents[c];
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;} else
&nbsp;&nbsp;// namespaceの指定がある場合は単体削除
&nbsp;&nbsp;if ( type.indexOf(".") !== -1 ) {
&nbsp;&nbsp;&nbsp;&nbsp;type = type.split(".");
&nbsp;&nbsp;&nbsp;&nbsp;elm.removeEventListener(type[0], elm["bindedNamed"][type[0]][type[1]], false);
&nbsp;&nbsp;// typeはあるけど名前空間の指定がない場合はtypeだけ削除
&nbsp;&nbsp;} else {
&nbsp;&nbsp;&nbsp;&nbsp;// 名前空間無しのイベントを削除
&nbsp;&nbsp;&nbsp;&nbsp;if ( elm["binded"] &#038;&#038; elm["binded"][type] ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bindedEvents = elm["binded"][type];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while ( bindedEvents[i] ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elm.removeEventListener(type, bindedEvents[i], false);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bindedEvents.splice(i, i + 1);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;// 名前空間有りのイベントを削除
&nbsp;&nbsp;&nbsp;&nbsp;if ( !elm["bindedNamed"] || !elm["bindedNamed"][type] ) return false;
&nbsp;&nbsp;&nbsp;&nbsp;bindedNamedEvents = elm["bindedNamed"][type];
&nbsp;&nbsp;&nbsp;&nbsp;for ( c in bindedNamedEvents ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elm.removeEventListener(type, bindedNamedEvents[c], false);
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;delete bindedNamedEvents;
&nbsp;&nbsp;}
}</pre>
					<img src="http://5509.me/?ak_action=api_record_view&id=4518&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/bind-and-unbind-funcs/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQueryでWordPressにAjax検索を実装する</title>
		<link>http://5509.me/log/making-ajax-search</link>
		<comments>http://5509.me/log/making-ajax-search#comments</comments>
		<pubDate>Mon, 04 Apr 2011 14:16:20 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[カスタマイズ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4497</guid>
		<description><![CDATA[					ナビゲーション改善のために検索をAjaxにしてリアルタイムにできるようにしました。WordPressなら楽々実装できます。本当は誰でも簡単に使えるようにコピペできるような内容にしようと思ったりもしたんですけど、 [...]]]></description>
			<content:encoded><![CDATA[					<p>ナビゲーション改善のために検索をAjaxにしてリアルタイムにできるようにしました。WordPressなら楽々実装できます。本当は誰でも簡単に使えるようにコピペできるような内容にしようと思ったりもしたんですけど、残念ながら面倒くさくなったので、僕がこのブログに実装したコードを貼るだけにします。そうです、これが手抜きです。<br />
					<span id="more-4497"></span></p>
					<h2>search.phpをXHR対応にする（JSONで返すようにする）</h2>
					<p>下のソースコードをsearch.phpの頭にペタっと。あ、テンプレート名とか書いてあるコメントの下です。</p>
					<pre>&lt;?php
if (isset($_SERVER['HTTP_X_REQUESTED_WITH'])) {
    header('Content-Type: application/json');
    query_posts($query_string . '&#038;posts_per_page=100');
    $response = array(
        'posts' =&gt; array()
    );
    while (have_posts()) {
        the_post();
        $response['posts'][] = array(
            'title' =&gt; the_title(&quot;&quot;,&quot;&quot;,false),
            'link' =&gt; get_permalink() // descriptionとか色々追加できる
        );
    }
    echo json_encode($response);
    exit(0);
}
?&gt;</pre>
					<p>これでXHRでリクエストするとこんな感じのJSONが返ってきます。</p>
					<pre>{"posts":[{"title":"2010\u5e74\u306e\u4eba\u6c17\u30a8\u30f3\u30c8\u30ea\u30fc\u307e\u3068\u3081\u307e\u3057\u305f\u3093\uff01","link":"http:\/\/5509.me\/log\/popular-entries"},{"title":"\u30c6\u30ad\u30b9\u30c8\u30dc\u30c3\u30af\u30b9\u306e\u6b8b\u308a\u5165\u529b\u6587\u5b57\u6570\u3092\u30b7\u30f3\u30d7\u30eb\u306b\u8868\u793a\u3059\u308bjQuery\u30d7\u30e9\u30b0\u30a4\u30f3 m5simpleTextCount","link":"http:\/\/5509.me\/log\/m5simpletextcount"}....]}</pre>
<h2>JSソース</h2>
<p>トリガーは検索ボックスに何か入力したときにしています。エンター押したときでもいいです。そのときは.submit()に$.ajax()を書くだけなのでもっと簡単です。とりあえずブログの検索はβなので、もしかするとsubmitタイプに変えるかもしれないです。</p>
<pre>var xhr,
    keyword = $(&quot;#s&quot;),
    searchResult = $(&quot;#searchResult&quot;).hide(),
    searchResultList = $(&quot;#searchResultList&quot;),
    searchLoading = $(&quot;#searchLoading&quot;),
    typeTimer;

keyword
    .click(function() {
        var _txt = this.value;
        if ( _txt || _txt.length !== 0 ) {
            searchResult.show();
        }
    })
    .keyup(function() {
        var _txt = this.value;
        // valueがなければ何もしないよ
        if ( !_txt || _txt.length === 0 ) {
            searchResult.hide();
            return false;
        }
        // &#38291;&#12434;&#32622;&#12363;&#12378;&#12395;&#20837;&#21147;&#12375;&#12390;&#12356;&#12427;&#22580;&#21512;&#12399;&#12461;&#12517;&#12540;&#12434;&#21066;&#38500;&#12377;&#12427;
        if ( typeTimer ) {
            clearTimeout(typeTimer);
        }
        if ( xhr ) {
            xhr.abort();
        }
        // typeTimerでkeyupのする度にリクエストするのではなくて
        // 350ミリセカンド以上間があいた場合にリクエストする
        typeTimer = setTimeout(function() {
            searchResultList.html(&quot;&quot;).hide();
            searchLoading.show();
            searchResult.show();
            xhr = $.ajax({
                // search.phpではなくて / に投げる（WPの検索仕様
                url: &quot;/&quot;,
                // 検索クエリを投げる
                data: {
                    s: _txt
                },
                // GETでいいねん
                type: &quot;GET&quot;,
                // jsonで投げるねん
                dataType: &quot;json&quot;,
                error: function() {
                    // errorのときのsomething
                },
                success: function(json) {
                    searchLoading.hide();
                    var _posts = json.posts,
                        _postsLen = _posts.length,
                        i;
                    if ( !_posts || _postsLen === 0 ) {
                        searchResultList.append(&quot;&lt;li&gt;&#12394;&#12395;&#12418;&#12397;&#12540;&#12431;&lt;/li&gt;&quot;);
                    } else {
                        for ( i = 0; i &lt; _postsLen; i++ ) {
                            searchResultList.append(
                                &quot;&lt;li&gt;&lt;a href=\&quot;&quot; + _posts[i].link + &quot;\&quot;&gt;&quot; + _posts[i].title + &quot;&lt;/a&gt;&lt;/li&gt;&quot;
                            );
                        }
                    }
                    searchResultList.show();
                }
            });
        }, 350)
    });</pre>
					<p>なんとこれだけで実装できたっていう話でしたー。本文めっちゃ短い！手抜きの記事ですなぁ。おかしいなぁ、本当なら見た人みんながあれ！簡単！実装してみたい！っていうような内容になるはずやったのに・・・と思ってコメントを少し入れておきました。。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4497&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/making-ajax-search/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ブログのテンプレートを変えました</title>
		<link>http://5509.me/log/5509-ver-3</link>
		<comments>http://5509.me/log/5509-ver-3#comments</comments>
		<pubDate>Fri, 01 Apr 2011 04:18:36 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[Others]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[お知らせ]]></category>
		<category><![CDATA[情報設計]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4471</guid>
		<description><![CDATA[					このブログも初めてもうすぐ4年な気がします。どうも気分屋な僕です、なのにこれだけ続いてるのはすごいなぁとか思いながら、テンプレートを変えました。気分屋でした。
					思いたったのが4月1日のAM1時過ぎ、今 [...]]]></description>
			<content:encoded><![CDATA[					<p>このブログも初めてもうすぐ4年な気がします。どうも気分屋な僕です、なのにこれだけ続いてるのはすごいなぁとか思いながら、テンプレートを変えました。気分屋でした。</p>
					<p>思いたったのが4月1日のAM1時過ぎ、今の状態になったのは4月1日のAM3時前くらいです。</p>
					<p>今回は以下のポイントを重要と考えました。</p>
					<ul>
					<li>文字は大きく</li>
					<li>記事だけに集中できる</li>
					<li>シンプルイズゴールデン</li>
					<li>基本的に記事を読むにあたってブログ側で提供するUIは必要ない</li>
					<li>無駄な待ち時間は発生させない（外部サービスは使わない）</li>
					<li>元のHTMLは極力そのまま使う（時間をかけたくなかったため）</li>
					</ul>
					<p><span id="more-4471"></span></p>
					<p>きれいなデザインのブログには憧れたりするわけですけども、デザインスキルなんか皆無に等しいわけで、僕に出来ることは、「出来る限りムダな情報がない読みやすい」アーカイブを設計することだけでした。</p>
					<p>諸々端折ってまとめると、<strong>「色々なブログを毎日見てるけど、その時に生まれた不満を全部解消した形にしました（ただし自分の中で）。」</strong></p>
					<p>サイトを訪れてくれているユーザーの事も考えないといけないかもしれないですが、自分のブログの一番のユーザーってやっぱり自分自身なんですね(<a href="#cap1">*1</a>)。だから自分で一番読みやすい形にしようと。</p>
					<p>そういう流れから、ソーシャルサービスへのリンクとかカウンタも全部取ってしまいました。</p>
					<p>とは言え、各記事へのアクセシビリティは現段階で最低なので、それはなんとかしたいですけども。あとやってることは全部エクスペリメントなので、もっと読みやすい形式みたいなものがあれば躊躇なく移行すると思います;)</p>
					<p><span id="cap1">*1) </span> 俺の方がヘビーユーザーだぜ！という方がいたらごめんなさい</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4471&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/5509-ver-3/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skype の開催するチャットスタイルコンテストで配布されてるサンプルデータが超便利</title>
		<link>http://5509.me/log/skype-chatstyle-contest-for-mac</link>
		<comments>http://5509.me/log/skype-chatstyle-contest-for-mac#comments</comments>
		<pubDate>Fri, 25 Mar 2011 04:38:47 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Skype]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4444</guid>
		<description><![CDATA[					
					http://macthemes.skype.com/
					Mac限定なんですけど、カスタムチャットスタイルを作って応募すればMacBook AirとかiPadとかもらえるで！っていう内容です [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2011/03/skype-contest.jpg" alt="" title="スカイプが開催するカスタムスタイルコンテストについて" width="500" height="223" class="alignnone size-full wp-image-4445" /></p>
					<p><a href="http://macthemes.skype.com/">http://macthemes.skype.com/</a></p>
					<p>Mac限定なんですけど、カスタムチャットスタイルを作って応募すればMacBook AirとかiPadとかもらえるで！っていう内容です。<br />
					<span id="more-4444"></span></p>
					<p>で、そこはどうでもよくて！</p>
					<p><a href="http://macthemes.skype.com/start" class="active"><img src="http://5509.me/wp-content/uploads/2011/03/skepe-contest2.png" alt="" title="リソースのダウンロードボタンキャプチャ" width="301" height="237" class="alignnone size-full wp-image-4447" /></a></p>
					<p>このコンテストで<a href="http://macthemes.skype.com/start">ダウンロードできるファイル</a>に、シミュレータが入ってるんですね。</p>
					<p><img src="http://5509.me/wp-content/uploads/2011/03/skype-contest3.png" alt="" title="シミュレータのHTMLファイル" width="403" height="242" class="alignnone size-full wp-image-4450" /></p>
					<p>これが超便利で、スカイプのチャットスタイル作るのには必須な感じなので、このページがいつまであるか分からないですけど、早いうちにダウンロードしておいたほうがいいと思います。</p>
					<p><img src="http://5509.me/wp-content/uploads/2011/03/skype-contest4.jpg" alt="" title="シミュレータのキャプチャ" width="500" height="318" class="alignnone size-full wp-image-4452" /><br />
					↑こういうのが入ってる</p>
					<p>SkypeのスタイルはHTML5、CSS3とJavaScriptが使える環境なので、結構面白いです。</p>
					<p>あと、14日くらいしかないみたいですけど、ちょっと触れば割と面白いことに気づくはずなので、いいのが出来たら応募してみればいいんじゃないでしょーか。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4444&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/skype-chatstyle-contest-for-mac/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ページ内の画像がどっしり構えるjQueryプラグイン NiohRoad</title>
		<link>http://5509.me/log/niohroad</link>
		<comments>http://5509.me/log/niohroad#comments</comments>
		<pubDate>Wed, 09 Mar 2011 07:33:33 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[ネタ]]></category>
		<category><![CDATA[誰得]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4397</guid>
		<description><![CDATA[					この前のLazyLoadの話で、LazyDisplayっていうのも作ったりしましたけど・・・
					.bbpBox45369648044195840 {background:url(http://a2.tw [...]]]></description>
			<content:encoded><![CDATA[					<p>この前のLazyLoadの話で、LazyDisplayっていうのも作ったりしましたけど・・・</p>
					<style type='text/css'>.bbpBox45369648044195840 {background:url(http://a2.twimg.com/a/1298664727/images/themes/theme14/bg.gif) #131516;padding:20px;} p.bbpTweet{background:#fff;padding:10px 12px 10px 12px;margin:0;min-height:48px;color:#000;font-size:18px !important;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px} p.bbpTweet span.metadata{display:block;width:100%;clear:both;margin-top:8px;padding-top:12px;height:40px;border-top:1px solid #fff;border-top:1px solid #e6e6e6} p.bbpTweet span.metadata span.author{line-height:19px} p.bbpTweet span.metadata span.author img{float:left;margin:0 7px 0 0px;width:38px;height:38px} p.bbpTweet a:hover{text-decoration:underline}p.bbpTweet span.timestamp{font-size:12px;display:block}</style>
					<div class='bbpBox45369648044195840'>
					<p class='bbpTweet' style="margin: 0">フワッと出てくる時にイラッとするから止めて欲しいな。文章中の画像表示にエフェクト要らない派なんで、スクロールしたら落ち着いてどっしりそこに構えてて欲しいな。<span class='timestamp'><a title='Wed Mar 09 06:25:41 +0000 2011' href='http://twitter.com/rewish/status/45369648044195840'>less than a minute ago</a> via <a href="http://sites.google.com/site/yorufukurou/" rel="nofollow">YoruFukurou</a></span><span class='metadata'><span class='author'><strong><a href='http://twitter.com/rewish'>Hiroshi Hoaki</a></strong><br/>rewish</span></span></p>
					</div>
					<p> <!-- end of tweet --></p>
					<p>なるほど把握しました。こういうことですか？（某GAZINEから拝借）</p>
					<p><a href="http://5509.me/wp-content/uploads/2011/03/ss_gigazine_nihoroad.png"><img src="http://5509.me/wp-content/uploads/2011/03/ss_gigazine_nihoroad-300x297.png" alt="" title="ss_gigazine_nihoroad" width="300" height="297" class="alignnone size-medium wp-image-4416" /></a></p>
					<p>というわけで例によって<a href="http://5509.me/sample/niohroad/">プラグインにしました</a>。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4397&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/niohroad/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>チェックボックスとかラジオボタンにはlabelを・・・</title>
		<link>http://5509.me/log/checkboxes-and-radios-label</link>
		<comments>http://5509.me/log/checkboxes-and-radios-label#comments</comments>
		<pubDate>Mon, 07 Mar 2011 17:46:35 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[フォーム]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4382</guid>
		<description><![CDATA[					labelでwrapされてないチェックボックスとかラジオボタンが多い気がするんですけど（たまたまかもしれないけど）、これってそんなに面倒くさいことですかね・・・いやいやこの記事読んでくれてる人にはいないと思うん [...]]]></description>
			<content:encoded><![CDATA[					<p>labelでwrapされてないチェックボックスとかラジオボタンが多い気がするんですけど（たまたまかもしれないけど）、これってそんなに面倒くさいことですかね・・・いやいやこの記事読んでくれてる人にはいないと思うんですけど。</p>
					<input type="checkbox" name="" value=""> チェックしやすいのはどっち <label><br />
					<input type="checkbox" name="" value=""> チェックしやすいのはどっち</label></p>
					<pre>&lt;input type="checkbox" name="checkbox[]" value="hoge"&gt;hoge
&lt;input type="radio" name="radio[]" value="fuga"&gt;fuga</pre>
					<p>これをlabel要素で囲って</p>
					<pre>&lt;label&gt;&lt;input type="checkbox" name="checkbox[]" value="hoge"&gt;hoge&lt;/label&gt;
&lt;label&gt;&lt;input type="radio" name="radio[]" value="fuga"&gt;fuga&lt;/label&gt;</pre>
					<p>ってするだけですよね。チェックボックスのラベルっぽいところをクリックして文字選択になったときのあの感じ・・・！</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4382&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/checkboxes-and-radios-label/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>画像に遅延表示っぽいエフェクトを与えるだけのm5LazyDisplay</title>
		<link>http://5509.me/log/m5lazydisplay</link>
		<comments>http://5509.me/log/m5lazydisplay#comments</comments>
		<pubDate>Sun, 06 Mar 2011 16:55:52 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[エフェクト]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4369</guid>
		<description><![CDATA[					スクロールしていくとフェードインで表示していくだけのプラグインです。本当にそれだけ。HTTPリクエスト減らすとか、ページロード早くなるとか一切ないです。スクロールしていったときにふわっと表示されるだけです。ちょ [...]]]></description>
			<content:encoded><![CDATA[					<p>スクロールしていくとフェードインで表示していくだけのプラグインです。本当にそれだけ。HTTPリクエスト減らすとか、ページロード早くなるとか一切ないです。スクロールしていったときにふわっと表示されるだけです。ちょっと注目ひきたいときに。</p>
					<p><a href="http://5509.me/sample/m5LazyDisplay/">サンプル</a>見てもらえば何となく伝わると思います</p>
					<p>下記のエントリも併せてどうぞ（セットになってます）<br />
					<a href="http://5509.me/log/lazyload">スクロールするまで画像を読み込まない（はずの）Lazy Loadについて</a></p>
					<h2>ダウンロード</h2>
					<p>ダウンロードは<a href="https://github.com/5509/m5plugins/tree/master/m5LazyDisplay">github</a>から</p>
					<h2>使い方とかをざっくりと</h2>
					<p>対象にしたい画像に実行するだけです。</p>
					<pre>$("img").m5LazyDisplay();</pre>
<h2>本当に</h2>
<p>ただのエフェクトだけなんで</p>
<img src="http://5509.me/?ak_action=api_record_view&id=4369&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/m5lazydisplay/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>スクロールするまで画像を読み込まない（はずの）Lazy Loadについて</title>
		<link>http://5509.me/log/lazyload</link>
		<comments>http://5509.me/log/lazyload#comments</comments>
		<pubDate>Sun, 06 Mar 2011 16:53:52 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[HTTPリクエスト]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[パフォーマンス]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4321</guid>
		<description><![CDATA[					Webパフォーマンスを考える上で重要なことのひとつにHTTPリクエストを減らすというのがありますが・・・
					HTTPリクエストを減らすために、画像の遅延読み込みをすると噂のLazy Loadっていうプラ [...]]]></description>
			<content:encoded><![CDATA[					<p>Webパフォーマンスを考える上で重要なことのひとつにHTTPリクエストを減らすというのがありますが・・・</p>
					<p>HTTPリクエストを減らすために、画像の遅延読み込みをすると噂の<a href="http://www.appelsiini.net/projects/lazyload">Lazy Load</a>っていうプラグインがあって、結構色んなサイトで使われているのを見るので、一言言っとくか的な感じで書こうとしたらいつからか<del datetime="2012-01-10T04:27:24+00:00">プラグインページに以下の注意書きが追加されてた</del>。</p>
					<div class="note">2012-01-10 追記：仕様変更して対応されたようです。とは言え、微妙な感じですが<br />
					<a href="http://www.appelsiini.net/projects/lazyload">http://www.appelsiini.net/projects/lazyload</a>
					</div>
					<blockquote><p>Lazy Load is currently not usable. It does not work with the latest browsers as expected. I have currently no time updating the code myself. Patches are always welcome. If you find a solution just fork and send a pull request. Thanks!</p>
					<p><cite>via: <a href="http://www.appelsiini.net/projects/lazyload">Lazy Load Plugin for jQuery</a></cite></p></blockquote>
					<p>新しいブラウザだと期待した通りの動きをしない、というか遅延読み込みが出来ないから使う意味がないっていう感じです。むしろHTTPリクエストを実質減らせないどころか増やすので今現在使うのはとても微妙な感じです。増やすって言っても表示後にリクエストするんで、ちょっと違いますけど。</p>
					<p>というか昔はできてたんかな・・・その辺まで調べきれてないのでアレです。。<br />
					<span id="more-4321"></span></p>
					<h2>何がどうなっているか</h2>
					<p>とりあえず現状ChromeとFirefoxは以下キャプチャのように2回リクエストしよります。</p>
					<h3>初回リクエスト</h3>
					<p>遅延表示をするはずの画像も全て読み込んでいる</p>
					<p><a href="http://5509.me/wp-content/uploads/2011/03/lazyload_fx1.png"><img src="http://5509.me/wp-content/uploads/2011/03/lazyload_fx1-300x136.png" alt="Lazy Loadのリクエストキャプチャ1 (Firefox)" title="Lazy Loadのリクエストキャプチャ1 (Firefox)" width="300" height="136" class="alignnone size-medium wp-image-4338" /></a></p>
					<h3>キャッシュをオフにしているときにページ下部までスクロール</h3>
					<p>対象全ての画像をもう一度リクエストをしている（キャッシュがないので200）</p>
					<p><a href="http://5509.me/wp-content/uploads/2011/03/lazyload_fx2.png"><img src="http://5509.me/wp-content/uploads/2011/03/lazyload_fx2-300x136.png" alt="Lazy Loadのリクエストキャプチャ2 (Firefox)" title="Lazy Loadのリクエストキャプチャ2 (Firefox)" width="300" height="136" class="alignnone size-medium wp-image-4339" /></a></p>
					<h3>キャッシュがオンでページ下部までスクロール</h3>
					<p>こっちは304やけど表示には時間がかかる</p>
					<p><a href="http://5509.me/wp-content/uploads/2011/03/lazyload_fx3.png"><img src="http://5509.me/wp-content/uploads/2011/03/lazyload_fx3-300x136.png" alt="Lazy Loadのリクエストキャプチャ3 (Firefox)" title="Lazy Loadのリクエストキャプチャ3 (Firefox)" width="300" height="136" class="alignnone size-medium wp-image-4340" /></a></p>
					<h2>原因は？</h2>
					<p>Lazy Loadのアイデアは<a href="http://developer.yahoo.com/yui/3/imageloader/">YUIのImageLoder</a>に相当しますが、そもそもこれらが何をしているかと言うと、例えばこんな画像がHTMLにあったとして</p>
					<pre>&lt;img src=&quot;./images/hoge.jpg&quot; alt=&quot;hogemage&quot;&gt;</pre>
<p>ページをロードしたときに、表示エリアになければsrc属性を空にして表示しないっていうのをやってます。</p>
<pre>&lt;img src=&quot;&quot; alt=&quot;hogemage&quot;&gt;</pre>
					<p>早い話、<strong>DOM Readyの時点で画像のリクエストは走っているので、その後src属性を空にしてもとき既にお寿司で、スクロールして表示したときにsrc属性をつっこんだらまたリクエスト</strong>がっていう流れ。</p>
					<p>ちなみにソース(<a href="http://www.appelsiini.net/download/jquery.lazyload.js">jquery.lazyload.js</a>)は下の部分</p>
					<h3>src属性の削除</h3>
					<pre>if (settings.placeholder) {
&nbsp;&nbsp;$(self).attr("src", settings.placeholder);
} else {
&nbsp;&nbsp;$(self).removeAttr("src");
}</pre>
					<h3>src属性の復帰と表示</h3>
					<pre>$(self).one("appear", function() {
&nbsp;&nbsp;if (!this.loaded) {
&nbsp;&nbsp;&nbsp;&nbsp;$("&lt;img /&gt;")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.bind("load", function() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(self)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.hide()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.attr("src", $(self).attr("original"))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[settings.effect](settings.effectspeed);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.loaded = true;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.attr("src", $(self).attr("original"));
&nbsp;&nbsp;&nbsp;&nbsp;};
});</pre>
					<h2>というわけで</h2>
					<p>Lazy Loadの作者も言ってますけど、現状使う意味はない、というか無駄が多くなるので、無駄がないプラグインを作りました。</p>
					<p><a href="http://5509.me/log/m5lazydisplay">画像の遅延表示エフェクトを与えるだけのm5LazyDisplay</a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4321&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/lazyload/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>HTML5で追加されるclassList APIについてのメモ</title>
		<link>http://5509.me/log/classlist-api</link>
		<comments>http://5509.me/log/classlist-api#comments</comments>
		<pubDate>Fri, 04 Mar 2011 04:56:39 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[classapi dom html5 jquery]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4295</guid>
		<description><![CDATA[					一部嘘を付いていたので修正しました。has ⇛ contains
					WHATWGのリンク先も修正しました。ありがとうございます＞＜
					簡単に調べたメモ。特に進展はないよ。
					早い話jQu [...]]]></description>
			<content:encoded><![CDATA[					<p class="note"><strong>一部嘘を付いていたので修正しました。has ⇛ contains<br />
					WHATWGのリンク先も修正しました。ありがとうございます＞＜</strong></p>
					<p>簡単に調べたメモ。特に進展はないよ。</p>
					<p>早い話jQueryのaddClassやremoveClass、hasClassっていうメソッドをネイティブに実装するからみんな楽朕っていうやつです。</p>
					<ul>
					<li><a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/urls.html#domtokenlist-0">WHATWG &#8211; HTML5 &#8211; 2.8.3 DOMTokenList</a>（リンク先修正しました</li>
					<li><a href="http://davidwalsh.name/classlist">HTML5 classList API</a></li>
					<li><a href="http://standards.mitsue.co.jp/archives/001479.html">classList (DOMTokenList) の実装状況</a></li>
					</ul>
					<p><span id="more-4295"></span></p>
					<h2>何が出来るの</h2>
					<pre>var div = document.getElementById("unk0");

div.classList.add("kusai"); // classにkusaiを追加
div.classList.remove("kusai"); // classからkusaiを削除

div.classList.toggle("kusai"); // kusaiを付けたり取ったり

if ( div.classList.contains("kusai") ) { // classにkusaiがあればtrue、逆はfalse
&nbsp;&nbsp;// くさければ
} else {
&nbsp;&nbsp;// くさくなければ
}</pre>
					<p>今まではめんどくさいけど、一旦取得して正規表現で判定してとか、replaceで削除してとかそういった手間が一切なくなるっていうやつです。</p>
					<h2>実装状況</h2>
					<p>IE9はちょっと手元になかったので見れてないですけど</p>
					<ul>
					<li>Firefox3.6以降</li>
					<li>Chrome10.0.648.126 (Win</li>
					<li>Chrome9.0.597.107（Mac</li>
					</ul>
					<p>で使えるっぽいです。つまりまだちょっと早い。Mobile Safari（iOS4.2）も当然まだ使えないです。</p>
					<p><a href="http://dl.dropbox.com/u/623486/classList/index.html">一応作ったサンプル置いときます</a><br />
					使えるブラウザは上のやつです。なんかどれくらい差があるんやろー思ってそういう感じにしたんですけど、よくわからんすね</p>
					<h2>classListとjQueryのメソッドの比較</h2>
					<p>jQueryだと実装されてるので、まあそういう感じだということで把握しました。もちろんjQueryはネイティブで本来やる流れを吸収してくれてるので、classListのほうが早いよね、便利やでっていうことです。</p>
					<p>あと大きな違いは、classListはひとつのDOMにしか使えないのに対してjQueryのメソッド（hasClass除く）は複数のjQueryオブジェクトに使えるっていうことですね。吸収してくれる</p>
					<h3>classList</h3>
					<pre>var div = document.getElementById("unk0");

div.classList.add("kusai"); // classにkusaiを追加
div.classList.remove("kusai"); // classからkusaiを削除

div.classList.toggle("kusai"); // kusaiを付けたり取ったり

if ( div.classList.contains("kusai") ) { // classにkusaiがあればtrue、逆はfalse
&nbsp;&nbsp;// くさければ
} else {
&nbsp;&nbsp;// くさくなければ
}</pre>
					<h3>jQuery</h3>
					<pre>var div = $("#unk0");

div.addClass("kusai"); // classにkusaiを追加
div.removeClass("kusai"); // classからkusaiを削除

div.toggleClass("kusai"); // kusaiを付けたり取ったり

if ( div.hasClass("kusai") ) { // classにkusaiがあればtrue、逆はfalse
&nbsp;&nbsp;// くさければ
} else {
&nbsp;&nbsp;// くさくなければ
}</pre>
					<img src="http://5509.me/?ak_action=api_record_view&id=4295&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/classlist-api/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQueryをmootoolsなどの他のライブラリと干渉しないようにする方法まとめ</title>
		<link>http://5509.me/log/using-jquery-safely</link>
		<comments>http://5509.me/log/using-jquery-safely#comments</comments>
		<pubDate>Wed, 02 Mar 2011 09:06:16 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[まとめ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4268</guid>
		<description><![CDATA[					ブログとかのプラグインでよく分からず使ってる人もいるみたいですし。結論は一番上のやつやってればいいんですけど、というか、プラグインソースは全部こうなってないとだめなんですけど、古いソースコードはそうなっていない [...]]]></description>
			<content:encoded><![CDATA[					<p>ブログとかのプラグインでよく分からず使ってる人もいるみたいですし。結論は一番上のやつやってればいいんですけど、というか、プラグインソースは全部こうなってないとだめなんですけど、古いソースコードはそうなっていないものもあったりして（thickboxとか）、思いつく方法全部書き出します。<br />
					<span id="more-4268"></span></p>
					<ul>
					<li><a href="#s1">カプセル化する（これだけやればOK</a></li>
					<li><a href="#s2">jQuery.noConflictを使う</a></li>
					<li><a href="#s3">$をjQueryに置き換える</a></li>
					<li><a href="#s4">jQueryを使わない</a></li>
					<li><a href="#s5">jQueryだけを使う</a></li>
					</ul>
					<h2 id="s1">カプセル化する（これだけやればOK</h2>
					<p>プラグインソースを</p>
					<pre>(function($) {
&nbsp;&nbsp;// hogehoge
})(jQuery);</pre>
					<p>で囲むだけ。ソースコードは // hogehoge のところに入れてください。これは簡単に言うと、(function($) { })(jQuery); に囲まれた中では $ = jQuery として扱われるのですね。この中はソースコードの隠蔽が行われていて外からはよく見えなくなっているので、他のライブラリと干渉することもありません。</p>
					<p>あとクラス振るとか、しましまテーブルとかそういう簡単なやつは自分で書いてると思いますが</p>
					<pre>$(function() {
&nbsp;&nbsp;// hogehoge
});</pre>
					<p>こんなやつの中に書いてると思いますけど</p>
					<pre>jQuery(function($) {
&nbsp;&nbsp;// hogehoge
});</pre>
					<p>こっちに変えてください。こっちは以前紹介したと思いますけど、そもそも</p>
					<pre>$(function() { });</pre>
<p>っていうのは</p>
<pre>$(document).ready(function() { });</pre>
					<p>の簡易版になってて（ソースコードが短くてすむ）、これの$をjQueryに置き換えたものが</p>
					<pre>jQuery(document).ready(function($) { });</pre>
<p>でさらに短く戻して</p>
<pre>jQuery(function($) { });</pre>
					<p>になるというわけです。</p>
					<h2 id="s2">jQuery.noConflictを使う</h2>
					<p>jQueryが出た当初はこれがよく使われてましたなぁ</p>
					<pre>var $j = jQuery.noConflict();
$j("hoge").addClass("hage");</pre>
					<p>つまり$を$jと置き換えるんですね。</p>
					<h2 id="s3">$をjQueryに置き換える</h2>
					<p>超手間がかかりますが $ を jQuery に置き換えていきます。え？一括置換すればいいやん、とか思ってる人はちょっと気をつけてください。正規表現とかjQueryの属性マッチングでも$は使われています。</p>
					<p>一括置換したら動かなくなった、っていうのはよくありがちな話っぽいですよ。</p>
					<h2 id="s4">jQueryを使わない</h2>
					<p>なんてことはないです。つまりjQueryを使わなければ干渉する心配もないのです。</p>
					<h2 id="s5">jQueryだけを使う</h2>
					<p>その逆もその通りｄ（ｒｙ</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4268&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/using-jquery-safely/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JSファイルを含むページをAjaxロードしたときにJSを実行しないさせないしたくない</title>
		<link>http://5509.me/log/ajax-load-and-not-to-execute-scripts</link>
		<comments>http://5509.me/log/ajax-load-and-not-to-execute-scripts#comments</comments>
		<pubDate>Mon, 28 Feb 2011 06:32:30 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4255</guid>
		<description><![CDATA[					この前ちょっと聞かれたので、メモっときます。
					AjaxでJS含んだページをそのままロードするとDOMに追加した時点で実行しよるんで、それを回避するためのやつです。Autopagerizeを参考にしたと [...]]]></description>
			<content:encoded><![CDATA[					<p>この前ちょっと聞かれたので、メモっときます。</p>
					<p>AjaxでJS含んだページをそのままロードするとDOMに追加した時点で実行しよるんで、それを回避するためのやつです。Autopagerizeを参考にしたと思います。</p>
					<p>ついでに取得したHTMLの走査方法ですが、そのまま$(html)とかにすると、一番上のwrapperとかそういうdivだったりする要素が取得できないので、一旦divをかませておきます。</p>
					<h3>Ajax部分のソースコード</h3>
					<pre>$.ajax({
&nbsp;&nbsp;url: "hoge.html",
&nbsp;&nbsp;type: "GET",
&nbsp;&nbsp;success: function(html) {
&nbsp;&nbsp;&nbsp;&nbsp;// 文字列で取得したデータを整理する
&nbsp;&nbsp;&nbsp;&nbsp;html = html.replace(/&lt;script(?:[ \t\r\n][^&gt;]*)?&gt;[\S\s]*?&lt;\/script[ \t\r\n]*&gt;|&lt;\/?(?:i?frame|html|script|object)(?:[ \t\r\n][^&lt;&gt;]*)?&gt;/gi, "");
&nbsp;&nbsp;&nbsp;&nbsp;var _div = $("&lt;div&gt;" + html + "&lt;/div&gt;");
&nbsp;&nbsp;&nbsp;&nbsp;// 取得したHTMLの走査は_div.find("a")のようにする
&nbsp;&nbsp;&nbsp;&nbsp;// hogehoge
&nbsp;&nbsp;}
});</pre>
					<h3>コピペ用</h3>
					<pre>html = html.replace(/&lt;script(?:[ \t\r\n][^&gt;]*)?&gt;[\S\s]*?&lt;\/script[ \t\r\n]*&gt;|&lt;\/?(?:i?frame|html|script|object)(?:[ \t\r\n][^&lt;&gt;]*)?&gt;/gi, "");</pre>
<img src="http://5509.me/?ak_action=api_record_view&id=4255&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/ajax-load-and-not-to-execute-scripts/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>要素のブラウザ上での位置を9ブロックの中から数値で返す m5GetElementPos</title>
		<link>http://5509.me/log/m5getelementpos</link>
		<comments>http://5509.me/log/m5getelementpos#comments</comments>
		<pubDate>Fri, 25 Feb 2011 06:44:17 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4245</guid>
		<description><![CDATA[					よくわからんと思いますけど、サンプルを見ればなんとなく伝わるような。。
					指定した要素のブラウザがその時表示している位置を以下のテーブルの数値で返します。
					┏━┳━┳━┓
					┃０┃１┃ [...]]]></description>
			<content:encoded><![CDATA[					<p>よくわからんと思いますけど、サンプルを見ればなんとなく伝わるような。。<br />
					指定した要素のブラウザがその時表示している位置を以下のテーブルの数値で返します。</p>
					<p>┏━┳━┳━┓<br />
					┃０┃１┃２┃<br />
					┣━╋━╋━┫<br />
					┃３┃４┃５┃<br />
					┣━╋━╋━┫<br />
					┃６┃７┃８┃<br />
					┗━┻━┻━┛</p>
					<p><a href="http://5509.me/sample/m5GetElementPos/">m5GetElementPosのサンプル</a></p>
					<p>返す数値は、実際returnで返ってくるわけじゃないんです。指定した要素にjQuery.dataで&#8221;ElementPos&#8221;というプロパティに書きこんでます。</p>
					<h2>ダウンロード</h2>
					<p>ダウンロードは<a href="https://github.com/5509/m5GetElementPos/">github</a>からどぞー</p>
					<h2>使い方とかをざっくりと</h2>
					<p>こんな感じで取れます。</p>
					<pre>$(target)
&nbsp;&nbsp;.m5GetElementPos()
&nbsp;&nbsp;.click(function() {
&nbsp;&nbsp;&nbsp;&nbsp;alert($.data($(this), "ElementPos"));
&nbsp;&nbsp;&nbsp;&nbsp;return false;
&nbsp;&nbsp;});</pre>
					<p>または、コールバックでも使えます。</p>
					<pre>$(target).click(function() {
&nbsp;&nbsp;$(this).m5GetElementPos({
&nbsp;&nbsp;&nbsp;&nbsp;returnNumber: false,
&nbsp;&nbsp;&nbsp;&nbsp;callback: function() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert($.data(this, "ElementPos"));
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;});
&nbsp;&nbsp;return false;
});</pre>
					<p>コールバック関数ではcallback.callしているので、thisはm5GetElementPosを実行した要素になります。</p>
					<h2>オプション</h2>
					<table border="1" class="lftable">
					<tr>
					<td>returnNumber</td>
					<td>数値で返すか、文字で返すか。デフォルトは数値でtrue</td>
					</tr>
					<tr>
					<td>returnCancel</td>
					<td>falseを指定するとthisを返さないので、メソッドチェーンができなくなります</td>
					</tr>
					<tr>
					<td>callback</td>
					<td>コールバック関数</td>
					</tr>
					</table>
					<h2>そんな感じで</h2>
					<p>バグとかあれば教えてください</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4245&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/m5getelementpos/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQselectableにdisabled、enabledオプションを追加しました</title>
		<link>http://5509.me/log/jqselectable-has-been-updated-2</link>
		<comments>http://5509.me/log/jqselectable-has-been-updated-2#comments</comments>
		<pubDate>Thu, 24 Feb 2011 06:10:02 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQselectable]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[アップデート]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4237</guid>
		<description><![CDATA[					
					jQselectableにdisabled・enabledメソッドを追加しました。
					ただし利用できるのは、対象selectable要素ひとつに対してです。複数個ある場合、任意に指定して利用 [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/jQselectable/#callbacks"><img src="http://5509.me/wp-content/uploads/2011/02/jqselectabledisabled.gif" alt="disabled、enabledのサンプルキャプチャ" title="disabledとenabledが使えるようになりました" width="300" height="151" class="alignnone size-full wp-image-4238" /></a></p>
					<p><a href="http://5509.me/log/jqueryselectable">jQselectable</a>にdisabled・enabledメソッドを追加しました。<br />
					ただし利用できるのは、対象selectable要素ひとつに対してです。複数個ある場合、任意に指定して利用します。<br />
					<span id="more-4237"></span></p>
					<h3>基本はひとつのselectableに実行できます</h3>
					<pre>var unko = $("#unko").jQselectable();
$("#unkoBtnDisabled").click(function() { unko.disabled(); });
$("#unkoBtnEnabled").click(function() { unko.enabled(); });</pre>
					<h3>複数のselectボックスにselectableをまとめて実行している場合</h3>
					<p>複数個のときは面倒くさいですけど、disabled・enabledにしたい要素を指定します。</p>
					<pre>var unko = $(".unko").jQselectable();
$("#unkoBtnDisabled").click(function() { unko[1].disabled(); });
$("#unkoBtnEnabled").click(function() { unko[1].enabled(); });</pre>
					<img src="http://5509.me/?ak_action=api_record_view&id=4237&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jqselectable-has-been-updated-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>大友克洋風のイラストを描いてもらった</title>
		<link>http://5509.me/log/5509-illustration</link>
		<comments>http://5509.me/log/5509-illustration#comments</comments>
		<pubDate>Wed, 23 Feb 2011 02:20:40 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[Diary]]></category>
		<category><![CDATA[イラスト]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4200</guid>
		<description><![CDATA[					
					僕はマンガがめっちゃ好きなわけなんですけど、イラストレーターの友だちと大友克洋ネタで盛り上がって、大友風の似顔絵描いてって言ったら本当に描いてくれたっていう。
					できたの見て超興奮したっすよ [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2011/02/5509_ill_nr.jpg" alt="" title="5509_ill_nr" width="500" height="114" class="alignnone size-full wp-image-4233" /></p>
					<p>僕はマンガがめっちゃ好きなわけなんですけど、イラストレーターの友だちと大友克洋ネタで盛り上がって、大友風の似顔絵描いてって言ったら本当に描いてくれたっていう。</p>
					<p>できたの見て超興奮したっすよ。まだ興奮してるけど。。</p>
					<p>背景で力尽きたらしくｗ白かったのでなんかそれっぽい背景と影足してiPhone壁紙サイズにしました。気にしなければ超かっこいい壁紙として使えるです。（ただしおれ）</p>
					<p><a href="http://5509.me/wp-content/uploads/2011/02/nori_wp2.jpg"><img src="http://5509.me/wp-content/uploads/2011/02/nori_wp2-200x300.jpg" alt="" title="nori_wp2" width="200" height="300" class="alignnone size-medium wp-image-4201" /></a> <a href="http://5509.me/wp-content/uploads/2011/02/photo.png"><img src="http://5509.me/wp-content/uploads/2011/02/photo-200x300.png" alt="iPhoneの壁紙に最適・・・！" title="iPhoneの壁紙に最適・・・！" width="200" height="300" class="alignnone size-medium wp-image-4214" /></a></p>
					<p>それにしてもかっこいいわー・・・（イラストが）</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4200&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/5509-illustration/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS3アニメーションのおさらいとローディングアイコン</title>
		<link>http://5509.me/log/css3-animation</link>
		<comments>http://5509.me/log/css3-animation#comments</comments>
		<pubDate>Tue, 22 Feb 2011 04:42:00 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[アニメーション]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4157</guid>
		<description><![CDATA[					「CSS3でつくるローディングアイコン」っていうのを何も考えずに作ったんですけど、同じこと考える人なんかたくさんいるので、1年くらい前から色々存在してました・・・でもせっかくつくったので、もうありますけど、公開 [...]]]></description>
			<content:encoded><![CDATA[					<p><strong>「CSS3でつくるローディングアイコン」</strong>っていうのを何も考えずに作ったんですけど、同じこと考える人なんかたくさんいるので、1年くらい前から色々存在してました・・・でもせっかくつくったので、もうありますけど、公開しておきます。</p>
					<p><a href="http://5509.me/sample/cssloading">くるくる</a> と <a href="http://5509.me/sample/cssloading/bound.html">ぼいんぼいん</a></p>
					<p>あ、せっかくなのでCSS3アニメーションをおさらいしましょう！（今おもいついたから強引につかったとこだけ）<br />
					<span id="more-4157"></span></p>
					<h2>CSS3アニメーションのおさらい</h2>
					<p>ご存知の通り、アニメーションは今のところWebkitだけで実装されいるので、サンプルはWebkit系ブラウザでみてください。</p>
					<p>ざっくり書いたので、説明していない項目もあるし、間違いあるかも。あると思います。指摘してください。草稿しっかり読めっていう話なんですけど・・・ざっくりしか読んでません <img src='http://5509.me/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
					<p>W3CのWorkingDraft &#8211; <a href="http://www.w3.org/TR/css3-animations/">CSS Animations Module Level 3</a></p>
					<p>草稿にはもちろん<strong>prefixの&#8221;@-webkit-&#8221;は含まれてません</strong>。</p>
					<h3>Keyframes</h3>
					<p>基本的にWebkit用に&#8221;@-webkit-&#8221;のprefixを付けます。</p>
					<pre>@-webkit-keyframes hoge {
}</pre>
					<p>のように、hogeのところにアニメーション名を入れて定義します。Keyframesの指定方法は</p>
					<pre>@-webkit-keyframes hogefuga {
&nbsp;&nbsp;0% { hoge }
&nbsp;&nbsp;50% { fuga }
&nbsp;&nbsp;100% { piyo }
}</pre>
					<p>みたいに、アニメーションを細かく%で指定する方法や</p>
					<pre>@-webkit-keyframes hogepiyo {
&nbsp;&nbsp;from { hoge }
&nbsp;&nbsp;to { fuga }
}</pre>
					<p>みたいに、fromとtoで指定する2つの方法があります。</p>
					<p>Keyframesは、下記のように&#8221;-webkit-transform&#8221;やopacity、top、leftなど数値を伴うCSSプロパティが使えます。background-colorなどの色も可。</p>
					<pre>@-webkit-keyframes rotate {
&nbsp;&nbsp;0% { -webkit-transform: rotate(0); }
&nbsp;&nbsp;100% { -webkit-transform: rotate(360deg); }
}

@-webkit-keyframes fade {
&nbsp;&nbsp;0% { opacity: 1; }
&nbsp;&nbsp;50% { opacity: .2; }
&nbsp;&nbsp;100% { opacity: 1; }
}</pre>
					<h3>Animation behavior</h3>
					<p>どういうアニメーションをするかをKeyframesで指定しておいたので、実行する環境を用意します。</p>
					<p>いくつかあるのですが、ここでは&#8221;duration&#8221;, &#8220;timing-function&#8221;, &#8220;count&#8221;, &#8220;name&#8221;の指定方法だけ解説しておきます。対象要素にbehaviorプロパティを割り振ります。</p>
					<h4>duration</h4>
					<p>durationは&#8221;○s&#8221;で指定、1以下は0.8や.8のように秒で指定します。デフォルトは0。</p>
					<pre>webkit-animation-duration: .8s; </pre>
<h4>timing-function</h4>
<p>jQueryの.animate()メソッドで言うところの<strong>easing</strong>です。</p>
<blockquote><p>ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier(<number>, <number>, <number>, <number>)</p>
<p><cite>via: <a href="http://www.w3.org/TR/css3-animations/#animation-timing-function_tag">The ‘animation-timing-function’ Property</a></cite></p></blockquote>
<p>の6つが利用できます。デフォルトはease。</p>
<pre>-webkit-animation-timing-function: linear;</pre>
					<h4>iteration-count</h4>
					<p>実行回数を指定できます。単純に数字で指定でき、リピートしたい場合は、<strong>infinite</strong>を指定します。デフォルトは1。</p>
					<pre>-webkit-animation-iteration-count: infinite;</pre>
<h4>name</h4>
<p>実行するKeyframe名を指定します。これが指定されているとアニメーションが実行されます。</p>
<pre>div.cssloading.justLoading {
&nbsp;&nbsp;-webkit-animation-name: fade, rotate;
}</pre>
					<h2>CSS3 Loading</h2>
					<p>さらっとおさらいしたところで、ローディングアイコンを書いてみましょう。本当はこっちメインだったのに、もう手抜き。説明はソース見てくださいまし。</p>
					<h3>Circular</h3>
					<p>まずは超ベーシックはくるくる回転タイプ。</p>
					<p><script type="text/javascript" src="http://jsdo.it/blogparts/y4En/js"></script>
					<p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a href="http://jsdo.it/5509/cssloader1" title="CSS loader - kurukuru -">CSS loader &#8211; kurukuru &#8211; - jsdo.it &#8211; share JavaScript, HTML5 and CSS</a></p>
					<h4>アニメーション以外</h4>
					<pre style="height: 150px">div.cssloading {
&nbsp;&nbsp;width: 48px;
&nbsp;&nbsp;height: 48px;
&nbsp;&nbsp;position: relative;
}

&nbsp;&nbsp;div.cssloading span {
&nbsp;&nbsp;&nbsp;&nbsp;border-radius: 5px;
&nbsp;&nbsp;&nbsp;&nbsp;-webkit-border-radius: 5px;
&nbsp;&nbsp;&nbsp;&nbsp;display: block;
&nbsp;&nbsp;&nbsp;&nbsp;width: 10px;
&nbsp;&nbsp;&nbsp;&nbsp;height: 10px;
&nbsp;&nbsp;&nbsp;&nbsp;position: absolute;
&nbsp;&nbsp;}
&nbsp;&nbsp;div.cssloading span.loadingCircle1 {
&nbsp;&nbsp;&nbsp;&nbsp;top: 3px;
&nbsp;&nbsp;&nbsp;&nbsp;left: 19px;
&nbsp;&nbsp;&nbsp;&nbsp;background: #000;
&nbsp;&nbsp;}
&nbsp;&nbsp;div.cssloading span.loadingCircle2 {
&nbsp;&nbsp;&nbsp;&nbsp;top: 7px;
&nbsp;&nbsp;&nbsp;&nbsp;left: 30px;
&nbsp;&nbsp;}
&nbsp;&nbsp;div.cssloading span.loadingCircle3 {
&nbsp;&nbsp;&nbsp;&nbsp;top: 19px;
&nbsp;&nbsp;&nbsp;&nbsp;left: 35px;
&nbsp;&nbsp;}
&nbsp;&nbsp;div.cssloading span.loadingCircle4 {
&nbsp;&nbsp;&nbsp;&nbsp;top: 30px;
&nbsp;&nbsp;&nbsp;&nbsp;left: 30px;
&nbsp;&nbsp;}
&nbsp;&nbsp;div.cssloading span.loadingCircle5 {
&nbsp;&nbsp;&nbsp;&nbsp;top: 35px;
&nbsp;&nbsp;&nbsp;&nbsp;left: 19px;
&nbsp;&nbsp;&nbsp;&nbsp;background: #CACACA;
&nbsp;&nbsp;}
&nbsp;&nbsp;div.cssloading span.loadingCircle6 {
&nbsp;&nbsp;&nbsp;&nbsp;top: 30px;
&nbsp;&nbsp;&nbsp;&nbsp;left: 8px;
&nbsp;&nbsp;&nbsp;&nbsp;background: #979797;
&nbsp;&nbsp;}
&nbsp;&nbsp;div.cssloading span.loadingCircle7 {
&nbsp;&nbsp;&nbsp;&nbsp;top: 19px;
&nbsp;&nbsp;&nbsp;&nbsp;left: 3px;
&nbsp;&nbsp;&nbsp;&nbsp;background: #676767;
&nbsp;&nbsp;}
&nbsp;&nbsp;div.cssloading span.loadingCircle8 {
&nbsp;&nbsp;&nbsp;&nbsp;top: 7px;
&nbsp;&nbsp;&nbsp;&nbsp;left: 8px;
&nbsp;&nbsp;&nbsp;&nbsp;background: #343434;
&nbsp;&nbsp;}</pre>
					<h4>アニメーション該当箇所のみ</h4>
					<pre>/* 回転する name: rotate */
@-webkit-keyframes rotate {
&nbsp;&nbsp;0% { -webkit-transform: rotate(0); }
&nbsp;&nbsp;100% { -webkit-transform: rotate(360deg); }
}
/* フェードエフェクト name: fade */
@-webkit-keyframes fade {
&nbsp;&nbsp;0% { opacity: 1; }
&nbsp;&nbsp;50% { opacity: .2; }
&nbsp;&nbsp;100% { opacity: 1; }
}

/* アニメーションプロパティのセット */
div.cssloading {
&nbsp;&nbsp;-webkit-animation-duration: .8s;
&nbsp;&nbsp;-webkit-animation-timing-function: linear;
&nbsp;&nbsp;-webkit-animation-iteration-count: infinite;
}
/* classに"justLoading"が付いているときは
"fade", "rotate"のアニメーションを行う */
div.cssloading.justLoading {
&nbsp;&nbsp;-webkit-animation-name: fade, rotate;
}</pre>
					<h3>Horizontal</h3>
					<p>次は横にぼいんぼいんはねる玉っぽいの</p>
					<p><script type="text/javascript" src="http://jsdo.it/blogparts/ffw7/js"></script>
					<p class="ttlBpJsdoit" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a href="http://jsdo.it/5509/cssloader2" title="CSS loader - boinboin -">CSS loader &#8211; boinboin &#8211; - jsdo.it &#8211; share JavaScript, HTML5 and CSS</a></p>
					<h4>アニメーション以外</h4>
					<pre style="height: 150px">div.cssloading {
&nbsp;&nbsp;width: 200px;
&nbsp;&nbsp;height: 40px;
&nbsp;&nbsp;position: relative;
&nbsp;&nbsp;-webkit-animation-duration: 1s;
&nbsp;&nbsp;-webkit-animation-timing-function: ease-in;
&nbsp;&nbsp;-webkit-animation-iteration-count: infinite;
}
div.cssloading.justLoading {
&nbsp;&nbsp;-webkit-animation-name: move, bound, fade;
}

&nbsp;&nbsp;div.cssloading span {
&nbsp;&nbsp;&nbsp;&nbsp;border-radius: 20px;
&nbsp;&nbsp;&nbsp;&nbsp;-webkit-border-radius: 20px;
&nbsp;&nbsp;&nbsp;&nbsp;-moz-border-radius: 20px;
&nbsp;&nbsp;&nbsp;&nbsp;display: block;
&nbsp;&nbsp;&nbsp;&nbsp;width: 40px;
&nbsp;&nbsp;&nbsp;&nbsp;height: 40px;
&nbsp;&nbsp;&nbsp;&nbsp;position: absolute;
&nbsp;&nbsp;&nbsp;&nbsp;left: 80px;
&nbsp;&nbsp;&nbsp;&nbsp;background: #000;
&nbsp;&nbsp;}</pre>
					<h4>アニメーション該当箇所のみ</h4>
					<pre>/* ぼいんぼいん name: bound */
@-webkit-keyframes bound {
&nbsp;&nbsp;0% { -webkit-transform: scale(1.5, .5); }
&nbsp;&nbsp;10% { -webkit-transform: scale(1, 1); }
&nbsp;&nbsp;25% { -webkit-transform: scale(.5, 1); }
&nbsp;&nbsp;50% { -webkit-transform: scale(1.5, .5); }
&nbsp;&nbsp;60% { -webkit-transform: scale(1, 1); }
&nbsp;&nbsp;75% { -webkit-transform: scale(.5, 1); }
&nbsp;&nbsp;100% { -webkit-transform: scale(1.5, .5); }
}

/* 横移動 name: move */
@-webkit-keyframes move {
&nbsp;&nbsp;0% { left: 0px; }
&nbsp;&nbsp;10% { left: 70px; }
&nbsp;&nbsp;25% { left: 80px; }
&nbsp;&nbsp;35% { left: 70px; }
&nbsp;&nbsp;50% { left: 0px; }
&nbsp;&nbsp;60% { left: -70px; }
&nbsp;&nbsp;75% { left: -80px; }
&nbsp;&nbsp;85% { left: -70px; }
&nbsp;&nbsp;100% { left: 0px; }
}

/* アニメーションプロパティのセット */
&nbsp;&nbsp;div.cssloading {
&nbsp;&nbsp;-webkit-animation-duration: 1s;
&nbsp;&nbsp;-webkit-animation-timing-function: ease-in;
&nbsp;&nbsp;-webkit-animation-iteration-count: infinite;
}
/* classに"justLoading"が付いているときは
"fade", "rotate"のアニメーションを行う */
div.cssloading.justLoading {
&nbsp;&nbsp;-webkit-animation-name: move, bound, fade;
}</pre>
					<h2>そんなわけで</h2>
					<p>ローディングアイコンメインのはずが、かぶったからおさらいメインになったという話。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4157&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/css3-animation/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScriptのconsoleをちょっと拡張して快適なデバッグ環境にする</title>
		<link>http://5509.me/log/extend-console-log</link>
		<comments>http://5509.me/log/extend-console-log#comments</comments>
		<pubDate>Thu, 17 Feb 2011 06:37:07 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[デバッグ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4146</guid>
		<description><![CDATA[					どこかで元ネタを見たんやけど、忘れた・・・
					console.logとかdebugって開発してるとき便利ですけど、納品時に消すのを忘れたりして、うっかりconsoleに
					unko
とか表示され [...]]]></description>
			<content:encoded><![CDATA[					<p>どこかで元ネタを見たんやけど、忘れた・・・</p>
					<p>console.logとかdebugって開発してるとき便利ですけど、納品時に消すのを忘れたりして、うっかりconsoleに</p>
					<pre>unko</pre>
<p>とか表示されたら死ぬしかないですよね。</p>
<p>消したやつ納品して後で改修とかになったとき、前のconsoleは当然ないわけで、面倒くさいなと思って。<br />
<span id="more-4146"></span></p>
<p>下記のコードをソースファイルの頭に貼り付けておいて<br />
頭の「window.console.debugMode」を「true」にすればconsole.logが動きます。それだけです。これなら、元のコードも変更せず、debugModeを切り替えるだけで楽々デバッグ。</p>
<pre>// デバグモードの切り替え
window.console.debugMode = false;
// console.logのプチ整形
window.console._log = window.console.log;
window.console.log = function(log) {
&nbsp;&nbsp;if ( window.console.debugMode &#038;&#038; window.console )
&nbsp;&nbsp;&nbsp;&nbsp;console._log.apply(this, arguments);
}</pre>
					<p>ところで、普段はconsole.debugを使ってるのですが、debugだと当然行番号が、拡張したとこになってしまいまして・・・debugでも使えるコード、ご存知の方いれば教えてください＞＜</p>
					<h2>追記</h2>
					<p>Twitterで<a href="http://twitter.com/azu_re">@azu_re</a>さんにFirebugでの対応方法を教えてもらいました。</p>
					<pre>// http://d.hatena.ne.jp/javascripter/20080825/1219686109
window.console.debugMode = true;
// console.debug
window.console._debug = window.console.debug;
window.console.debug = function(log) {
&nbsp;&nbsp;if (window.console.debugMode &#038;&#038; window.console) {
&nbsp;&nbsp;&nbsp;&nbsp;// Firebugだけ
&nbsp;&nbsp;&nbsp;&nbsp;window.console.notifyFirebug(arguments, "debug", "firebugAppendConsole");
&nbsp;&nbsp;}
};</pre>
					<p>&#8211; <a href="http://jsfiddle.net/daAGM/">http://jsfiddle.net/daAGM/</a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4146&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/extend-console-log/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPressでOpen Graph Protocolを実装したい</title>
		<link>http://5509.me/log/wordpress-with-ogp</link>
		<comments>http://5509.me/log/wordpress-with-ogp#comments</comments>
		<pubDate>Mon, 14 Feb 2011 09:15:51 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[OGP]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4135</guid>
		<description><![CDATA[					Custom Field GUI Utilityを使ってサイトに話題のOGPを入れようなメモ。Facebookとかなんかその辺にも最適化したほうがいい流れですし。
					
					対象はトップページ等と記 [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://www.tinybeans.net/blog/download/wp-plugin/cfg-utility-3.html">Custom Field GUI Utility</a>を使ってサイトに<del datetime="2011-02-14T08:03:15+00:00">話題の</del>OGPを入れようなメモ。Facebookとかなんかその辺にも最適化したほうがいい流れですし。<br />
					<span id="more-4135"></span></p>
					<p><strong>対象はトップページ等と記事に表示するOGPの切り分け</strong>。Custom Field GUI Utilityの使い方も超簡単に書いときます。情報足りないかもやけど。</p>
					<p>概要としては、記事投稿ページにカスタムフィールド</p>
					<ul>
					<li>meta description（og:descriptionと共通）</li>
					<li>meta keywords</li>
					<li>meta og:image</li>
					</ul>
					<p>を追加します。記事ページでは追加したカスタムフィールドに入力されたテキスト・URLにしたがって下記のようなmeta要素がはきだされます。他のページはデフォルトの内容が表示されます。</p>
					<pre>&lt;meta property="og:type" content="article"&gt;
&lt;meta property="og:site_name" content="hogehoge"&gt;
&lt;meta name="keywords" content="hogehoge"&gt;
&lt;meta name="description" content="hogehoge"&gt;
&lt;meta property="og:title" content="hogehoge"&gt;
&lt;meta property="og:url" content="記事のURL"&gt;
&lt;meta property="og:description" content="hogehoge"&gt;
&lt;meta property="og:image" content="画像パス"&gt;</pre>
					<h2>Custom Field GUI Utilityのダウンロードとインストールまで</h2>
					<p><a href="http://www.tinybeans.net/blog/download/wp-plugin/cfg-utility-3.html">Custom Field GUI Utility</a>からプラグインソースをダウンロード、解凍すると中に入っている</p>
					<ul>
					<li>conf-common.ini</li>
					<li>conf-page.ini</li>
					</ul>
					<p>は今回使わないので、中身全部削除しておいてください。<br />
					編集するのは、<strong>conf-post.ini</strong>です。</p>
					<p>conf-post.iniの内容を以下に書き換え、WPのプラグインディレクトリにプラグインフォルダごとアップロードしたのち、Custom Field GUI Utilityを有効化しておきます。</p>
					<pre>[cf_keywords]
fieldname = Keywords
type = textfield
size = 60
sample = jQuery,WordPress,Plugin
must = 1

[cf_description]
fieldname = Description
type = textfield
size = 60
sample = input the example or the caption
must = 1

[cf_ogimage]
fieldname = OGP用画像
type = imagefield
class = post page
size = 35
sample = 画像パス（abspath）をメディアダイアログかURLで指定する</pre>
					<p>ここまでやると、記事作成画面に下図のようなカスタムフィールドが表示されます。</p>
					<p><a href="http://5509.me/wp-content/uploads/2011/02/ogp_cfu1.jpg"><img src="http://5509.me/wp-content/uploads/2011/02/ogp_cfu1.jpg" alt="" title="表示されるカスタムフィールド" width="450" height="372" class="alignnone size-full wp-image-4137" /></a></p>
					<h2>header.phpに追加する</h2>
					<p>次に、header.phpを編集、以下のソースをぺたっと。All in One SEO Packとか使ってないので分かりません。これやるときは使うのやめて、Custom Field GUI Utility一本にしてくださいｗ</p>
					<pre>&lt;?php /* typeとsite_nameは共通で入れておく */ ?&gt;
&lt;meta property="og:type" content="blog"&gt;
&lt;meta property="og:site_name" content="&lt;?php bloginfo('name'); ?&gt;"&gt;

&lt;?php /* ここから下記事 */ ?&gt;
&lt;?php if ( is_singular() &#038;&#038; have_posts() ) : while ( have_posts() ) : the_post(); ?&gt;

&nbsp;&nbsp;&lt;?php /* ただのmeta keywordsとdescription */ ?&gt;
&nbsp;&nbsp;&lt;meta name="keywords" content="&lt;?php echo post_custom('cf_keywords'); ?&gt;"&gt;
&nbsp;&nbsp;&lt;meta name="description" content="&lt;?php echo post_custom('cf_description'); ?&gt;"&gt;

&nbsp;&nbsp;&lt;?php /* ここからmeta ogp */ ?&gt;
&nbsp;&nbsp;&lt;meta property="og:title" content="&lt;?php wp_title('', true); ?&gt;"&gt;
&nbsp;&nbsp;&lt;meta property="og:url" content="&lt;?php the_permalink() ?&gt;"&gt;
&nbsp;&nbsp;&lt;?php /* og:descriptionはdescriptionと同じものを使う */ ?&gt;
&nbsp;&nbsp;&lt;meta property="og:description" content="&lt;?php echo post_custom('cf_description'); ?&gt;"&gt;
&nbsp;&nbsp;&lt;?php /* og:imageがカスタムフィールドで指定されている場合だけ下記入る */ ?&gt;
&nbsp;&nbsp;&lt;?php if ( post_custom('cf_ogimage') ) { ?&gt;&lt;meta property="og:image" content="&lt;?php echo post_custom('cf_ogimage'); ?&gt;"&gt;&lt;?php } ?&gt;
&nbsp;&nbsp;
&lt;?php /* ここから下記事以外（トップページなど） */ ?&gt;
&lt;?php endwhile; else: ?&gt;

&nbsp;&nbsp;&lt;?php /* ただのmeta keywordsとdescription */ ?&gt;
&nbsp;&nbsp;&lt;meta name="keywords" content="デフォルトキーワード"&gt;
&nbsp;&nbsp;&lt;meta name="description" content="&lt;?php bloginfo('description'); ?&gt;"&gt;

&nbsp;&nbsp;&lt;?php /* ここからmeta ogp */ ?&gt;
&nbsp;&nbsp;&lt;meta property="og:title" content="&lt;?php wp_title('', true); ?&gt;"&gt;
&nbsp;&nbsp;&lt;meta property="og:url" content="&lt;?php the_permalink() ?&gt;"&gt;
&nbsp;&nbsp;&lt;meta property="og:description" content="&lt;?php bloginfo('description'); ?&gt;"&gt;
&nbsp;&nbsp;&lt;meta property="og:image" content="デフォルトOG画像がある場合はなんかいれとく"&gt;
&lt;?php endif; ?&gt;</pre>
					<p>というわけで、これだけです。このブログは実装してないんですけど・・・！</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4135&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/wordpress-with-ogp/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>携帯（ガラケー）動画の各社仕様とエンコードツールまとめ</title>
		<link>http://5509.me/log/mobile-movies-encoding</link>
		<comments>http://5509.me/log/mobile-movies-encoding#comments</comments>
		<pubDate>Thu, 10 Feb 2011 02:47:49 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[エンコード]]></category>
		<category><![CDATA[ガラケー]]></category>
		<category><![CDATA[動画]]></category>
		<category><![CDATA[無料ツール]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4117</guid>
		<description><![CDATA[					色々調べたのでオレオレメモ。ストリーミングできたりできなかったりガラケーは大変すなぁ。
					一応、幅広く対応できるんかな的な感じです。詳しいことはわかってないので、もっといい方法あればコメントで教えてくだ [...]]]></description>
			<content:encoded><![CDATA[					<p>色々調べたのでオレオレメモ。ストリーミングできたりできなかったりガラケーは大変すなぁ。</p>
					<p>一応、幅広く対応できるんかな的な感じです。詳しいことはわかってないので、もっといい方法あればコメントで教えてください。</p>
					<h2>各社の技術仕様</h2>
					<dl>
					<dt>ドコモ（3gp、音声はAAC</dt>
					<dd><a href="http://www.nttdocomo.co.jp/service/imode/make/content/imotion/mp4/about/">MP4対応iモーションコンテンツ仕様</a></dd>
					<dt>AU（3gp,3g2、音声はAAC、ファイル容量1.5MBまで</dt>
					<dd><a href="http://www.au.kddi.com/ezfactory/tec/spec/ezmovie01.html">EZムービー</a></dd>
					<dt>ソフトバンク（3gp、ファイル容量300KB以内、音声はAMR</dt>
					<dd><a href="http://creation.mb.softbank.jp/doc_tool/movie.html">ムービー　技術資料</a></dd>
					</dl>
					<p class="memo">※ さらにAUの動画はparam要素で実際のデータサイズを入れないとだめ。</p>
					<h2>エンコードのソフト</h2>
					<p>無料のツールで試したところ、ドコモ用とAU用は<a href="http://www.vector.co.jp/soft/win95/net/se442862.html">どこでも！ケータイ動画</a>というソフトでいけたけど、音声のAMR出力ができなかったもんで、ソフトバンクがだめだった。</p>
					<p>探してたら<a href="http://www.woopiedesktop.com/">Woopie Desktop</a>の動画変換ツールを使えばなんでも対応できるっぽい雰囲気だった。Woopie最強説</p>
					<h2>HTMLの書き方の例</h2>
					<h3>ドコモ</h3>
					<pre>&lt;object declare id="ID" data="動画のURL" type="video/3gpp"&gt;
&lt;param name="count" value="0" valuetype="data" /&gt;
&lt;/object&gt;
&lt;a href="#ID"&gt;動画のタイトル&lt;/a&gt;</pre>
					<h3>AU</h3>
					<pre>&lt;object data="動画のURL" type="video/3gpp2" copyright="no" standby="動画のタイトル"&gt;
&lt;param name="disposition" value="devmpzz" valuetype="data" /&gt;
&lt;param name="size" value="動画のデータサイズ（バイト）" valuetype="data" /&gt;
&lt;param name="title" value="動画のタイトル" valuetype="data" /&gt;</pre>
					<h3>ソフトバンク</h3>
					<pre>&lt;a href="動画のURL"&gt;動画のタイトル&lt;/a&gt;</pre>
<img src="http://5509.me/?ak_action=api_record_view&id=4117&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/mobile-movies-encoding/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>超シンプルなjQueryのイメージビューアプラグイン m5ImageViewer</title>
		<link>http://5509.me/log/m5imageviewer</link>
		<comments>http://5509.me/log/m5imageviewer#comments</comments>
		<pubDate>Wed, 09 Feb 2011 01:30:10 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4098</guid>
		<description><![CDATA[					
					色々オプション付けてもいいけど、とりあえず公開時は全部とったろーと思いまして。最小構成のイメージビューアなjQueryプラグインです。その場でチラッと見せたいときに使えるかも。
					高機能なや [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/m5ImageViewer/"><img src="http://5509.me/wp-content/uploads/2011/02/m5imageviewer.png" alt="" title="m5imageviewer" width="460" class="alignnone size-full wp-image-4100" /></a></p>
					<p>色々オプション付けてもいいけど、とりあえず公開時は全部とったろーと思いまして。最小構成のイメージビューアなjQueryプラグインです。その場でチラッと見せたいときに使えるかも。</p>
					<p>高機能なやつは探せばいくらでも出ると思うので、たくさん機能ほしい人はそっち使えばいいと思います。</p>
					<p><a href="http://5509.me/sample/m5ImageViewer/">サンプル</a><br />
					<span id="more-4098"></span></p>
					<h2>ダウンロード</h2>
					<p>ダウンロードは<a href="https://github.com/5509/m5ImageViewer/archives/master">github</a>からどぞー</p>
					<h2>必要なファイルを読み込む</h2>
					<p>jQueryと<a href="https://github.com/5509/m5ImageViewer/blob/master/m5ImageViewer/js/m5imageviewer.js" onclick="_gaq.push(['_trackEvent', 'js', this.href])">m5ImageViewer.js</a>、<a href="https://github.com/5509/m5ImageViewer/blob/master/m5ImageViewer/css/m5imageviewer.css">m5ImageViewer.css</a>を読み込みます。</p>
					<pre>&lt;link rel="stylesheet" href="m5ImageViewer/css/m5ImageViewer.css"&gt;
&lt;script src=&quot;js/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;js/m5ImageViewer.js&quot;&gt;&lt;/script&gt;</pre>
					<h2>任意の要素に対して実行する</h2>
					<p>画像を指定したa要素にimg要素が入っている要素に対して実行します。<strong>これ以外の要素構成は想定していません。</strong></p>
					<h3>HTML</h3>
					<pre>&lt;a class="m5ImageViewer" href=&quot;http://farm6.static.flickr.com/5297/5428556190_6b17a2dddc_m.jpg&quot;&gt;
&nbsp;&nbsp;&lt;img src=&quot;http://farm6.static.flickr.com/5297/5428556190_6b17a2dddc_t.jpg&quot;&gt;
&lt;/a&gt;</pre>
					<h3>JS</h3>
					<pre>jQuery(function($) {
&nbsp;&nbsp;$("a.m5ImageViewer").m5ImageViewer();
});</pre>
					<h2>オプション</h2>
					<p>いまのところオプションは画像拡大時のdurationだけです。コールバックすらありませんよ</p>
					<table border="1" class="lftable">
					<tr>
					<th>項目</th>
					<th>値</th>
					</tr>
					<tr>
					<td>duration</td>
					<td>(def &#8211; 200</td>
					</tr>
					</table>
					<h2>捕捉</h2>
					<p>特に特別な機能があるわけでもないし、便利かっていうとそうでもないんですけどね。。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4098&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/m5imageviewer/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQueryのセレクタを自作して遊ぶ</title>
		<link>http://5509.me/log/playing-with-jquery-custom-selector</link>
		<comments>http://5509.me/log/playing-with-jquery-custom-selector#comments</comments>
		<pubDate>Thu, 03 Feb 2011 16:23:28 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[unko]]></category>
		<category><![CDATA[カスタムセレクタ]]></category>
		<category><![CDATA[ネタ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4083</guid>
		<description><![CDATA[					jQuery("div:unkomorimori").css("background", "#89640d");
「:unkomorimori」っていうセレクタを作ってみようっていうそういう話です。簡単です。ま [...]]]></description>
			<content:encoded><![CDATA[					<pre>jQuery("div:unkomorimori").css("background", "#89640d");</pre>
<p>「:unkomorimori」っていうセレクタを作ってみようっていうそういう話です。簡単です。まあunkomorimoriなんてふざけたセレクタなんで、きっと中身はunkoでいっぱいなんでしょう。</p>
<p><script type="text/javascript" src="http://jsdo.it/blogparts/oihC/js"></script></p>
<p>結局やってることってfilterと同じような感じなんですけど</p>
<pre>&lt;div&gt;
&nbsp;&nbsp;&lt;p&gt;&#12358;&#12435;&#12371;&#12358;&#12435;&#12371;&#12358;&#12435;&#12371;&#12358;&#12435;&#12371;&#12358;&#12435;&#12371;&#12358;&#12435;&#12371;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&nbsp;&nbsp;&lt;p&gt;&#12358;&#12435;&#12371;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&nbsp;&nbsp;&lt;p&gt;&#12358;&#12435;&#12371;&#12358;&#12435;&#12371;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&nbsp;&nbsp;&lt;p&gt;&#12358;&#12435;&#12371;&lt;/p&gt;
&lt;/div&gt;</pre>
					<p>なんかうんこって書いてあるdivがたくさんありました、と。後から気づいたんですけど、これdiv要らないですね。pだけでいい・・・でJSとしてはセレクタの記述をのぞけば</p>
					<pre>jQuery("div:unkomorimori").css("background", "#89640d");</pre>
<p>これだけです。:unkomorimoriの基準は対象要素内で「うんこ」が3回以上出てくるかどうかです。出てきた要素だけを返します。ちなみにfilterでやった場合はこんな感じ。</p>
<p><script type="text/javascript" src="http://jsdo.it/blogparts/c6Id/js"></script></p>
<p>カスタムセレクタを使う利点は、何回も同じfilter書くときとか、めんどいんでじゃあセレクタでやりましょうか、ってなる感じですね。気をつけないといけないのは、今回の書き方は全てのdiv要素の中身を文字列で取得した上で、正規表現使って「うんこ」を探してるんですけど、処理的にはうんこだけにくそ重いっていう点ですね。うまく落ちたところで、あ、うんこだけに落ちたところで、この辺で。</p>
<img src="http://5509.me/?ak_action=api_record_view&id=4083&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/playing-with-jquery-custom-selector/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【必要なかった】動的に読み込んだ画像の高さ・幅が取得できるタイミングでコールバックを実行するm5ImgLoad</title>
		<link>http://5509.me/log/m5imgload</link>
		<comments>http://5509.me/log/m5imgload#comments</comments>
		<pubDate>Tue, 01 Feb 2011 08:47:53 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4067</guid>
		<description><![CDATA[					追記：うーん、なんか色々あかんっぽい。わかる人以外はとりあえず放置してくださいーそもそも必要なかった感じでした
					$("&#60;img src='hogehoge.jpg' /&#62;").load(f [...]]]></description>
			<content:encoded><![CDATA[					<p><strong>追記：<del datetime="2011-02-01T11:56:31+00:00">うーん、なんか色々あかんっぽい。わかる人以外はとりあえず放置してくださいー</del>そもそも必要なかった感じでした</strong></p>
					<pre>$("&lt;img src='hogehoge.jpg' /&gt;").load(function() {
&nbsp;&nbsp;alert("width: " + $(this).width() + "\nheight: " + $(this).height());
});</pre>
					<p><del datetime="2011-02-01T11:56:31+00:00">とかやると高さと幅を取得できたりできなかったりするので、.load()に置き換わるようなやつ書いといた。単純に置き換えるだけ使えるはずー</del>だめだった</p>
					<pre>$("&lt;img src='hogehoge.jpg' /&gt;").m5ImgLoad(function() {
&nbsp;&nbsp;alert("width: " + $(this).width() + "\nheight: " + $(this).height());
});</pre>
					<h3>結局のところ、.load()メソッドで取れてた</h3>
					<pre>$("&lt;img src='hogehoge.jpg' /&gt;").load(function() {
&nbsp;&nbsp;alert("width: " + $(this).width() + "\nheight: " + $(this).height());
});</pre>
					<p>↑これみたいに、width()、height()メソッドを使うと動的に呼び出した画像に対しては0で返されるので、、、</p>
					<pre>$("&lt;img src='hogehoge.jpg' /&gt;").load(function() {
&nbsp;&nbsp;alert("width: " + $(this).attr("width") + "\nheight: " + $(this).attr("height"));
});</pre>
					<p>↑画像の属性から取ればいける感じです。これはどんな場合でもいけるんかなぁー</p>
					<h3>動作サンプル</h3>
					<p><del datetime="2011-02-01T11:56:31+00:00">サンプル</del><br />
					<del datetime="2011-02-01T11:56:31+00:00">左のボタンはただの.load()メソッドでこれだと高さと幅が取れないけど、右の.m5ImgLoad()メソッドを使えば高さと幅がとれとりますね</del></p>
					<p><del datetime="2011-02-01T11:56:31+00:00">img.completeを使ってみたっすよ。</del></p>
					<h3>ダウンロードとか</h3>
					<p><del datetime="2011-02-01T11:56:31+00:00">ダウンロードとかソースコードはgithubからどぞー</del></p>
					<p>https://github.com/5509/m5ImgLoad</p>
					<h3>対応ブラウザ</h3>
					<p><del datetime="2011-02-01T11:56:31+00:00">クロスブラウザ的なのはどうでしょう。手元のIE6～8、Safari5、Fx3、Chrome9、Opera10は問題なかったけど・・・<strong>バグとかあったらフォークして教えてください</strong>^ω^</del></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4067&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/m5imgload/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>第5回リクリセミナー「明日からjQueryがもっと好きになる。」が開催されます</title>
		<link>http://5509.me/log/recreators-seminar-5</link>
		<comments>http://5509.me/log/recreators-seminar-5#comments</comments>
		<pubDate>Wed, 12 Jan 2011 05:21:22 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[セミナー]]></category>
		<category><![CDATA[リクリ]]></category>
		<category><![CDATA[告知]]></category>

		<guid isPermaLink="false">http://5509.me/?p=4023</guid>
		<description><![CDATA[					12月に出版されたjQuery逆引きマニュアル著書の西畑さん、中村さんとセミナーを行います。お二人のお話が同時に聞けるセミナーはなかなかないので関西圏の方はぜひ参加を・・・！（僕のセッションはトイレ休憩に行くと [...]]]></description>
			<content:encoded><![CDATA[					<p>12月に出版された<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844329618/norimania-22/ref=nosim/">jQuery逆引きマニュアル</a>著書の<a href="http://blog.webcreativepark.net/">西畑さん</a>、<a href="http://kyosuke.jp/">中村さん</a>とセミナーを行います。<strong>お二人のお話が同時に聞けるセミナーはなかなかない</strong>ので関西圏の方はぜひ参加を・・・！<del datetime="2011-01-12T01:57:51+00:00">（僕のセッションはトイレ休憩に行くとか寝るなど有意義におすごしください）</del></p>
					<p>冗談はさておき、僕のセッションでは<strong>UIの設計からjQueryでの実装まで</strong>をフローとコードで解説しようと思っています。対象は中級者くらいになると思いますが、なるべくわかりやすく説明しますので、よろしくお願いします <img src='http://5509.me/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
					<p><a class="act" href="http://www.re-creators.jp/vol5"><img src="http://www.re-creators.jp/vol5/banner_resem_05.png" alt="明日からjQueryがもっと好きになる。jQuery セミナー - 第5回リクリセミナー" width="160" height="160" /></a></p>
					<blockquote><dl class="vevent">
					<dt>&lt;イベント名&gt;</dt>
					<dd class="summary"><a href="http://www.re-creators.jp/vol5/">第5回リクリセミナー 『明日からjQueryがもっと好きになる。』</a></dd>
					<dt>&lt;日時&gt;</dt>
					<dd><abbr class="dtstart" title="2011-02-20T15:0000">2/20（日） 15:00</abbr>〜<abbr class="dtend" title="2011-02-20T18:0000">18:00</abbr></dd>
					<dt>&lt;場所&gt;</dt>
					<dd class="location">デジタルハリウッド大阪校 地下セミナールーム<br />
					（大阪市北区西天満6-5-17 デジタルエイトビル地下1F）</dd>
					<dt>&lt;参加費&gt;</dt>
					<dd>一般：4,000円<br />
					デジハリ生：無料（※学生証をお持ちください。）</p>
					<p>※スポンサーの協賛、参加者の人数に応じてディスカウント予定です。<br />
					講師陣の書籍、『jQuery逆引きマニュアル』を持参し、受付で提示していただきますと<span style="color: #ff0000;"><strong>500円割引</strong></span>をいたします。<br />
					※対象は<strong>一般の参加者のみ</strong>となります。
					</dd>
					<dt>&lt;定員&gt;</dt>
					<dd>80名</dd>
					<dt>&lt;参加方法&gt;</dt>
					<dd><a href="http://www.re-creators.jp/vol5/">セミナー特設ページから参加表明して下さい</a></p>
					<p>URL：<a href="http://www.re-creators.jp/vol5/">http://www.re-creators.jp/vol5/</a></dd>
					<dt>&lt;懇親会&gt;</dt>
					<dd>セミナー終了後、18:30から開催予定。</dd>
					</dl>
					<p><cite>via: <a href="http://www.re-creators.jp/seminar/2011/01/12_655.html">2/20（日）第5回リクリセミナー「明日からjQueryがもっと好きになる。」参加受付開始！</a></cite></p></blockquote>
					<img src="http://5509.me/?ak_action=api_record_view&id=4023&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/recreators-seminar-5/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>YouTube(HTML5で表示しているもの)から動画をダウンロードするためのブックマークレット</title>
		<link>http://5509.me/log/download-a-video-from-youtube</link>
		<comments>http://5509.me/log/download-a-video-from-youtube#comments</comments>
		<pubDate>Sun, 09 Jan 2011 10:20:51 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[YouTube]]></category>
		<category><![CDATA[ダウンロード]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3995</guid>
		<description><![CDATA[					HTML5（というかvideo要素）で表示されている場合は簡単に閲覧可能な動画をダウンロードすることができます。
					この辺Flashだとflvだったりして再生しにくかったりするのが、HTML5だとmp4 [...]]]></description>
			<content:encoded><![CDATA[					<p>HTML5（というかvideo要素）で表示されている場合は簡単に閲覧可能な動画をダウンロードすることができます。</p>
					<p>この辺Flashだとflvだったりして再生しにくかったりするのが、HTML5だとmp4とか割と再生しやすいファイルになるので便利かも。ChromeとかSafariで実行するのがおすすめです。</p>
					<h3>ブックマークレット</h3>
					<p><strong>以下のリンクをブックマークバーにドラッグして、YouTubeのサイトでクリックするだけです。</strong>クリックすると動画ファイルそのものが表示されるので、名前を付けて保存的なアクションで保存できます。</p>
					<p>動画のファイル名は常に「videoplayback」になるので適当に変更したほうがよさそう。<strong>「WEBM」バッジがついている動画は形式がWEBMになっているのですがそのまま拡張子なしでダウンロードすると再生できないので、「.webm」の拡張子をつけるといいみたい</strong>です。.webmで保存するとVLCで再生できます。</p>
					<p>ブックマークレット：<a href="javascript:location.href = document.getElementById('video-player').getElementsByTagName('video')[0].src;">HTML5動画からダウンロード</a><br />
					<span id="more-3995"></span></p>
					<h3>ためしに</h3>
					<p>バッジが表示されているときだけブックマークレットが有効です。以下の動画ページで実行してみてください。（<strong>要HTML5 試用版の設定：<a href="#setting-for-html5">設定していない人は下に説明あります</a>）</strong></p>
					<p><a href="http://www.youtube.com/watch?v=2-owTwP1l7k">http://www.youtube.com/watch?v=2-owTwP1l7k</a></p>
					<h4>HD(高画質動画)動画をダウンロードするには？</h4>
					<p>720のサイズで再生している状態でブックマークレットを実行すれば高画質動画をダウンロードできます。</p>
					<h3 id="setting-for-html5">HTML5 試用版未設定の人</h3>
					<p>いちおう書いておきます。HTML5で表示するにはまず</p>
					<p><a href="http://www.youtube.com/html5">http://www.youtube.com/html5</a></p>
					<p>にアクセスして「<strong>HTML5 試用版を有効にする</strong>」をクリックします。</p>
					<p><img src="http://5509.me/wp-content/uploads/2011/01/youtube1.png" alt="" title="YouTubeの設定でHTML5を有効にする 1" width="252" height="46" class="alignnone size-full wp-image-3998" /></p>
					<p>表記が「HTML5 試用版が有効になっています。」に変わります。</p>
					<p><img src="http://5509.me/wp-content/uploads/2011/01/youtube2.png" alt="" title="YouTubeの設定でHTML5を有効にする 2" width="251" height="47" class="alignnone size-full wp-image-3999" /></p>
					<p>表示できるものとできないものがあり、できるものの場合は動画ページを表示したとき以下の画像のように <strong>HTML5</strong> のバッジが表示されます。</p>
					<p><a href="http://5509.me/wp-content/uploads/2011/01/youtube3.png"><img src="http://5509.me/wp-content/uploads/2011/01/youtube3-300x232.png" alt="" title="HTML5 試用版で表示された動画" width="300" height="232" class="alignnone size-medium wp-image-4000" /></a></p>
					<h3>それにしても・・・</h3>
					<p>ちろるがかわいい・・・じゃなかった、ソースも解説がいらないレベル・・・</p>
					<pre>javascript:location.href = document.getElementById('video-player').getElementsByTagName('video')[0].src;</pre>
<img src="http://5509.me/?ak_action=api_record_view&id=3995&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/download-a-video-from-youtube/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery逆引きマニュアルのモニターを募集しています</title>
		<link>http://5509.me/log/call-for-monitor-of-jquery-reference</link>
		<comments>http://5509.me/log/call-for-monitor-of-jquery-reference#comments</comments>
		<pubDate>Thu, 06 Jan 2011 12:42:44 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[お知らせ]]></category>
		<category><![CDATA[著書]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3981</guid>
		<description><![CDATA[					先日出版された「jQuery逆引きマニュアル」ですが、出版元のインプレスジャパンさんで読者モニターを募集しています。
					なんと書籍ではなく、PDFの電子書籍です。電子書籍は非売品なので、興味のある方はよ [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844329618/norimania-22/ref=nosim/" id="book" style="float: left; background: none; padding: none; font-size: 0px;" onclick="_gaq.push(['_trackEvent', 'Books', 'book'])"><img src="http://ecx.images-amazon.com/images/I/51QAqthVkYL._SL160_.jpg" alt="jQuery逆引きマニュアル Webデザインの現場で役立つ基本と実践" border="0"></a>先日出版された「<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844329618/norimania-22/ref=nosim/" onclick="_gaq.push(['_trackEvent', 'Books', 'text'])">jQuery逆引きマニュアル</a>」ですが、出版元のインプレスジャパンさんで読者モニターを募集しています。<br />
					なんと書籍ではなく、PDFの電子書籍です。電子書籍は非売品なので、興味のある方はよければ応募してみてください <img src='http://5509.me/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
					<p><a href="http://www.impressjapan.jp/readers/2010/12/web-1.html">申し込みページ（申し込みは終了しました）</a></p>
					<blockquote style="clear: left"><p>＜モニター応募要項＞<br />
					●応募受付期間：2010年12月28日（火）～2011年1月11日（火）<br />
					●募集予定人数：最大30名（モニター事務局での選考とさせていただきます）<br />
					●応募方法：<br />
					最下部の「応募する」ボタンよりエントリーください。<br />
					モニター当選の方へは、応募受付終了後別途メールにて詳細をご連絡します。<br />
					●モニター実施予定期間：2011年1月14日（金）～2011年2月28日（月）（約1ヶ月間半）<br />
					●モニター品：『jQuery逆引きマニュアル　Webデザインの現場で役立つ基本と実践』電子書籍版（PDF形式。本文のテキストコピー不可。サンプルコードはネット上で公開中 <a href="http://www.impressjapan.jp/support/aftercare/2961">http://www.impressjapan.jp/support/aftercare/2961</a>）<br />
					●モニター期間中のお願い：<br />
					ブログやツイッターなどで以下のような感想・コメントを書いていただき、ぜひ読者の皆様でjQueryについての情報を共有しましょう！<br />
					◎本書のこの記事は試してみたい！<br />
					◎本書の内容をこんな風に試してみた<br />
					◎本書のこの記事は役に立ちそう<br />
					◎本書の内容をこんな風に応用した！<br />
					◎jQueryでこんなことがしたい！<br />
					◎jQueryでこんなことができた！<br />
					◎jQueryについてこんな新しい発見があった　などなど<br />
					情報共有がスムーズに行えるように、本書専用のツイッターアカウント<a href="http://twitter.com/jQuery_Manual">@jQuery_Manual</a>を設置しました。<br />
					ツイッターをご利用されている方は、ぜひこちらのアカウントのフォローをお願いいたします。<br />
					たくさんのご応募をお待ちしております！</p></blockquote>
					<img src="http://5509.me/?ak_action=api_record_view&id=3981&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/call-for-monitor-of-jquery-reference/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>動的にvideo要素の動画を入れ替えるときに気をつけること</title>
		<link>http://5509.me/log/notification-of-using-video-element</link>
		<comments>http://5509.me/log/notification-of-using-video-element#comments</comments>
		<pubDate>Wed, 05 Jan 2011 12:54:43 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3957</guid>
		<description><![CDATA[					HTML5ではvideo要素で（手軽に？）動画を再生できますが、枠だけ書き出しておいて（別にHTML直書きでいいですが）、動画を入れ替える場合は少し注意が必要です。たぶん。
					現状で動画フォーマットがい [...]]]></description>
			<content:encoded><![CDATA[					<p>HTML5ではvideo要素で（手軽に？）動画を再生できますが、枠だけ書き出しておいて（別にHTML直書きでいいですが）、動画を入れ替える場合は少し注意が必要です。たぶん。</p>
					<p>現状で動画フォーマットがいくつか存在しますが、複数のフォーマットをサポートしたい場合は以下のように書きます。</p>
					<pre>&lt;video controls="controls" width="352" height="198" preload="none" id="videoElm"&gt;
&nbsp;&nbsp;&lt;source src="hoge.mp4" type="video/mp4" id="mp4" /&gt;
&nbsp;&nbsp;&lt;source src="hoge.ogg" type="video/ogg" id="ogg" /&gt;
&lt;/video&gt;</pre>
					<p>動的に書き換えるので、次のような関数用意して再生したい動画のURLを入れればよさげです。</p>
					<pre>function playMovie(mp4, ogg) {
&nbsp;&nbsp;$('#videoElm')
&nbsp;&nbsp;&nbsp;&nbsp;.html([ // ソースファイルをつっこむ
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&lt;source src="' + mp4 + '" type="video/mp4" id="mp4" /&gt;',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&lt;source src="' + ogg + '" type="video/ogg" id="ogg" /&gt;'
&nbsp;&nbsp;&nbsp;&nbsp;].join(''));
}

playMovie(piyo.mp4, piyo.ogg);</pre>
					<p>で結局何に注意しないとあかんかっていうのは、<strong>このままだとiOSで再生ができない</strong>んですね。iOSはmp4ファイル等で再生す<br />
					るんですけど、source要素を動的につっこんでもだめな様子。。</p>
					<div class="note"><strong>追記：</strong>内容が曖昧すぎたので追記します。<br />
					iOSで再生ができない<br />
					↓<br />
					iOSで<strong>入れ替えた動画が読み込まれず</strong>再生できない</div>
					<p>なので以下のようになりました。<br />
					source要素を動的につっこむのではなく、素直にsrc属性に入れてるだけです。</p>
					<pre>function playMovie(mp4, ogg) {
&nbsp;&nbsp;if ( /AppleWebKit/.test(navigator.userAgent) ) {
&nbsp;&nbsp;// iOSのとき
&nbsp;&nbsp;&nbsp;&nbsp;$('#videoElm')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.attr('src', mp4); // 素直にsrc属性に書く
&nbsp;&nbsp;} else {
&nbsp;&nbsp;// iOS以外
&nbsp;&nbsp;&nbsp;&nbsp;$('#videoElm')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.html([
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&lt;source src="' + mp4 + '" type="video/mp4" id="mp4" /&gt;',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&lt;source src="' + ogg + '" type="video/ogg" id="ogg" /&gt;'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;].join(''));
&nbsp;&nbsp;}
}</pre>
					<p><strong>※ UA判定はもっと良い方法あったらそっち使ってください。</strong></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=3957&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/notification-of-using-video-element/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>まだまだ間に合うCanvasでアニメーション入門（まとめと実践）</title>
		<link>http://5509.me/log/animation-with-canvas</link>
		<comments>http://5509.me/log/animation-with-canvas#comments</comments>
		<pubDate>Wed, 22 Dec 2010 01:35:13 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[tuts]]></category>
		<category><![CDATA[まとめ]]></category>
		<category><![CDATA[アニメーション]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3886</guid>
		<description><![CDATA[					JavaScript Advent Calendar 2010も22日目！あと3日ですよ。僕はちょうど学んだばかりのCanvasをアウトプットもかねて、まとめと実践を書いてみます。知ることと行うことは同一である [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://atnd.org/events/10497">JavaScript Advent Calendar 2010</a>も22日目！あと3日ですよ。僕はちょうど学んだばかりのCanvasをアウトプットもかねて、<strong>まとめと実践</strong>を書いてみます。知ることと行うことは同一である、最近行ったセミナーでも言ってました。</p>
					<p><a href="http://jsdo.it/">jsdo.it</a>にはほんまにこれCanvasなん？なサンプルいっぱいありますね。あーいうの書けるようになりたいなぁとか思いつつ、jQueryばっかりさわってた僕は.animate()メソッドの便利さに取り憑かれていたので、Canvasの絵もまだ上下左右で動かすくらいしかできません。慣れが必要です。。</p>
					<p>どうでもいい情報としてCanvasの読み方なんですけど、<del datetime="2010-12-22T17:31:51+00:00">「キャンバス」じゃなくて「カンバス」が正しいようです。</del>キャンバス・カンバスどっちでもよさげ。僕はキャンバスって読んでました<del datetime="2010-12-22T17:31:51+00:00">。</del>けどカンバスにします。</p>
					<p>前置きはこれくらいにして、今回は次のようなカラフルな箱が延々と落ちていくっていうのを書いてみます。今回のサンプルはすべてCanvasなのでIE8以下だと見れないと思います。あと<strong>jsdo.itのサンプルをいくつか貼っているのでRSSだと表示されません</strong>。</p>
					<p><script type="text/javascript" src="http://jsdo.it/blogparts/qaAo/js"></script></p>
					<p>先に参考サイト紹介してますが、いらない人は<a href="http://5509.me/log/animation-with-canvas#canv">飛ばしてください</a>。レッツカンバス！<br />
					<span id="more-3886"></span></p>
					<h2>参考サイトなど</h2>
					<p>動かす前に、そもそもCanvas自体さわったことがなかったので色々調べもってやってみました。とりあえずこれから始める人も多いと思うのでお世話になったサイトあげておきますね。あーこんな風にね的な。</p>
					<h3><a href="http://www.html5.jp/canvas/">HTML5.jpのCanvasページ</a></h3>
					<p>Canvasの超基本。メソッドの<a href="http://www.html5.jp/canvas/ref.html">リファレンスはこっち</a></p>
					<h3><a href="http://tech.kayac.com/archive/canvas-tutorial.html">今更聞けないcanvasの基礎の基礎</a></h3>
					<p>とりあえず見とくエントリー。ボールが弾むやつとか全然理解できませんでしたけどね！</p>
					<h3><a href="http://tech.kayac.com/archive/canvas_background.html">canvasでキラキラした背景を作る方法</a></h3>
					<p>アイデアって大事ですよね</p>
					<h3>なかにしさんのサンプルは最初に見るのにちょうどいい</h3>
					<p>canvasで遊んでみたい【<a href="http://factory.yusukenakanishi.com/html/html5/canvas/001/">その1</a>、<a href="http://factory.yusukenakanishi.com/html/html5/canvas/002/">その2</a>、<a href="http://factory.yusukenakanishi.com/html/html5/canvas/003/">その3</a>、<a href="http://factory.yusukenakanishi.com/html/html5/canvas/004/">その4</a>、<a href="http://factory.yusukenakanishi.com/html/html5/canvas/005/">その5</a>】まであります<br />
					とりあえず星空描いてみましょうか</p>
					<h3><a href="http://blog.wonder-boys.net/?p=315">canvasでアニメーションする時のコツ</a></h3>
					<p>僕がアニメーションやるっていうときに最初に見たんですけどさっぱりでした。後からみて納得</p>
					<h3><a href="http://blog.wonder-boys.net/?p=436">JS + Canvas = 3D しました</a></h3>
					<p>3Dもできるようになりたいです・・・</p>
					<h3><a href="http://web-mugen.com/canvas/bgcolorfulroundsizeanime/">Canvasで実現するカラフルな円が小さくなったり大きくなったりする背景</a></h3>
					<p>これも超参考にしました。重なるとことかどうなってるんかなーとか。</p>
					<h3><a href="http://1ka2ka.com/archives/201006/16_092531.html">[HTML5 canvas] 簡単な 3D アニメーション</a></h3>
					<p>こんな感じにXYZ座標をあやつりたい・・・</p>
					<h3><a href="http://d.hatena.ne.jp/mindcat/20100815/1281877127">HTML5 Canvasのブラウザによって異なる微妙な振る舞いについてまとめてみた。</a></h3>
					<p>ブラウザによって描画され方がちがうらしいです。気にしておかないとだめですね。</p>
					<h3><a href="http://d.hatena.ne.jp/sandai/20101211/p1">canvasが手軽にウェブで試せるアプリFirstCanvasを作ったよ</a></h3>
					<p>Canvasだけならjsdo.itよりもお手軽に試せます</p>
					<h2 id="canv">実際になんか書いてみる</h2>
					<p>参考サイト見てテンションがあがったところで、早速実践です。</p>
					<p>HTMLで用意するのはこれだけです。今回ソースコードの表示とサンプルにjsdo.itを利用してるので、フォークしたりできます。</p>
					<pre>&lt;canvas id="canvas" width="300" height="300"&gt;&lt;/canvas&gt;</pre>
<h3>まずはかく</h3>
<p>さーさーなんか書いてみましょう！お約束の矩形描画です。これは簡単。</p>
<p><script type="text/javascript" src="http://jsdo.it/blogparts/b6Sd/js"></script></p>
<h3>とりあえずうごかす</h3>
<p>次は描いた矩形を少し動かしてみましょう。最初は簡単にsetTimeoutでいいでしょう。<strong>最初の矩形を描いたあとに、Canvas全体を塗りつぶし、その後位置をずらしてもう一度矩形を描画しているだけ</strong>です。</p>
<p><script type="text/javascript" src="http://jsdo.it/blogparts/dIHO/js"></script></p>
<h3>くりかえしうごかす</h3>
<p>つまりこれを繰り返せば動くんじゃ・・・的な発想ですね！間違ってないと思います。上から下まで動かしてみましょう。</p>
<p><script type="text/javascript" src="http://jsdo.it/blogparts/6xxC/js"></script></p>
<p>アニメーションできた・・・！これがアニメーションといえるのかどうか・・・でも動いてるからいいでしょ。最初はこんなもんです。</p>
<h3>アニメーションのポイント</h3>
<p>アニメーション自体はsetIntervalで繰り返すことでも行えますが、ここでは</p>
<pre>(function() {
&nbsp;&nbsp;// hogehoge
&nbsp;&nbsp;setTimeout(arguments.callee, 1000 / rate);
})();</pre>
					<p>というような書き方で実行しています。これをsetIntervalで書き直すとこんな感じ</p>
					<pre>setInterval(function() {
&nbsp;&nbsp;// hogehoge
}, 1000 / rate);</pre>
					<p>無名関数で実行するときは、// hogehoge の部分が終わってからsetTimeoutが呼ばれるのに対して<br />
					setIntervalは // hogehoge が終わっていなくても 1000 / rateミリ秒後にもう一度 // hogehoge が実行されます。</p>
					<p>もうひとつの違いはタイマーのクリア方法です。無名関数は関数内でreturn false;するだけなのに対して、setIntervalはタイマー変数をclearIntervalする必要があります。</p>
					<h4>無名関数</h4>
					<pre>(function() {
&nbsp;&nbsp;if ( fuga ) return false;
&nbsp;&nbsp;// hogehoge
&nbsp;&nbsp;setTimeout(arguments.callee, 1000 / rate);
})();</pre>
					<h4>setInterval</h4>
					<pre>var timer = setInterval(function() {
&nbsp;&nbsp;if ( fuga ) clearInterval(timer);
&nbsp;&nbsp;// hogehoge
}, 1000 / rate);</pre>
					<p>ここはその内僕が書くかもしれないし、誰かが書いてくれるかもしれないし、難しいことは考えずにとりあえずはどちらでもよいでしょう。</p>
					<h3>つづき：アニメーションのループ</h3>
					<p>次は下まで降りていったらまた上からでてくるようにしてみましょう。簡単です。</p>
					<p><script type="text/javascript" src="http://jsdo.it/blogparts/dRCd/js"></script></p>
					<h3>複数同時にうごかす</h3>
					<p>なんか上から下まで落ちるブロックみたいなんできました。数を増やして色もランダムにしてみましょう。難易度がいきなりあがる感じです。とりあえず同じタイミングで矩形を10個描いて落下させます。</p>
					<p><script type="text/javascript" src="http://jsdo.it/blogparts/h6fF/js"></script></p>
					<h3>複数個の矩形を描いて動かす</h3>
					<p>矩形がひとつと複数個あるでは対応の仕方が全然違います。ひとつの場合は、fillRectが一回だけでよかったのに対して複数個描画する場合は、その個数回fillRectする必要がありますし、個数分の矩形情報が必要です。</p>
					<p>矩形情報の生成に Box()という関数を用意しました。</p>
					<pre>// 新しい矩形を生成する
var Box = function() {
  // サイズ、移動速度、横座標の位置、色はランダム
  this.size = randomNum(20, 10);
  this.speed = randomNum(5, 2);
  this.color = 'rgba(' + randomNum(255) + ',' + randomNum(255) + ',' + randomNum(255) + ',' + .6 + ')';
  this.basePos = {
    x: randomNum(300),
    y: 0
  }
}</pre>
					<p>ちなみにランダムな数を返す関数を作っておくと便利に使えます。</p>
					<pre>// 最小〜最大の間でランダムな数値を返す
// 最小値を省くと1〜最大値の間でランダムな数値
function randomNum(maxInt, minInt) {
&nbsp;&nbsp;var ran = Math.random();
&nbsp;&nbsp;if ( minInt ) {
&nbsp;&nbsp;&nbsp;&nbsp;if (Math.floor(ran * maxInt) < minInt ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return minInt;
&nbsp;&nbsp;&nbsp;&nbsp;} else {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return Math.floor(ran * maxInt);
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;} else {
&nbsp;&nbsp;&nbsp;&nbsp;return Math.floor(ran * maxInt) + 1;
&nbsp;&nbsp;}
}</pre>
					<p>いままではひとつだけの矩形でしたが、10個の矩形を扱います。単純にboxPoolという配列を用意して、そこに矩形の情報をつめこんでおきます。</p>
					<pre>// 矩形を生成しておく（描画はまだ
for ( var i=0; i&lt;boxNum; i++ ) {
&nbsp;&nbsp;boxPool[i] = new Box();
}</pre>
					<p>あとは矩形の個数回fillRectするだけです。</p>
					<pre>// 矩形毎に描画していく
for ( var i=0; i&lt;boxNum; i++ ) {
&nbsp;&nbsp;ctx.fillStyle = boxPool[i].color;
&nbsp;&nbsp;ctx.fillRect(
&nbsp;&nbsp;&nbsp;&nbsp;boxPool[i].basePos.x,
&nbsp;&nbsp;&nbsp;&nbsp;boxPool[i].basePos.y,
&nbsp;&nbsp;&nbsp;&nbsp;boxPool[i].size,
&nbsp;&nbsp;&nbsp;&nbsp;boxPool[i].size
&nbsp;&nbsp;);

&nbsp;&nbsp;// この矩形の次の位置を決めておく
&nbsp;&nbsp;boxPool[i].basePos.y = boxPool[i].basePos.y + boxPool[i].speed;
}</pre>
					<h3>完成：複数の矩形を動かしてループ</h3>
					<p>落ちるだけだったので、最後にループさせて完成っぽいですね。仕組みは、さっきのループを応用します。矩形がcanvas外に出たら外にでた矩形を削除して、新しく矩形を生成します。つまりこれを繰り返し行うだけです。56行目〜80行目が追加・修正した部分です。</p>
					<p><script type="text/javascript" src="http://jsdo.it/blogparts/qaAo/js"></script></p>
					<p>特に重要なのは56〜61行目、canvas外に出た矩形情報を取り除くところ</p>
					<pre>// 矩形がcanvas外に出たら一旦削除する
if ( thisBox.basePos.y &gt; canvas.height ) {
&nbsp;&nbsp;boxPool.splice(i--, 1);
&nbsp;&nbsp;boxLen--;
&nbsp;&nbsp;continue;
}</pre>
					<p>76〜80行目の10個以下になった場合は矩形情報を新規で追加するところでしょう。</p>
					<pre>// 矩形の数が10個以下であれば
// 新しい矩形を生成する
if ( boxPool.length &lt; 10 ) {
&nbsp;&nbsp;boxPool.push(new Box());
}</pre>
					<h2>おわり</h2>
					<p>ちょっと駆け足でしたが、Canvasを使ったアニメーションが書けました。なんでもやってみることが重要です。やってみないことには先に進まないので、少しずつでもやってみてバリエーションが増えてくれば、そのうちぐりぐり動かせるようになるんじゃないでしょうか。インプットの先のアウトプットまでできればなおいいですね。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=3886&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/animation-with-canvas/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>deliciousライクでシンプルなSBMサービス「Pinboard.in」の使い方</title>
		<link>http://5509.me/log/how-to-use-the-pinborard</link>
		<comments>http://5509.me/log/how-to-use-the-pinborard#comments</comments>
		<pubDate>Sat, 18 Dec 2010 06:15:48 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[delicious]]></category>
		<category><![CDATA[pinboard]]></category>
		<category><![CDATA[socialbookmark]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3821</guid>
		<description><![CDATA[					
					閉鎖するとか存続するとか話題のdeliciousですが、delicious（というかYahoo）に嫌気がさしたファウンダーが運営している（らしい）Pinboardを使い方も含めて簡単に紹介します。
 [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2010/12/pinboard.png" alt="" title="pinboard" width="274" height="131" class="alignnone size-full wp-image-3823" /></p>
					<p><a href="http://jp.techcrunch.com/archives/20101216is-yahoo-shutting-down-del-icio-us/">閉鎖する</a>とか<a href="http://jp.techcrunch.com/archives/20101217yahoo-trying-to-sell-del-icio-us-not-to-shut-it-down/">存続するとか</a>話題の<a href="http://www.delicious.com/">delicious</a>ですが、delicious（というかYahoo）に嫌気がさしたファウンダーが運営している（らしい）<a href="http://pinboard.in/">Pinboard</a>を使い方も含めて簡単に紹介します。<br />
					<span id="more-3821"></span></p>
					<h2>deliciousと違うところ</h2>
					<h3>無料じゃない</h3>
					<p>サインアップフィーが必要です。（<a href="#signup">後述</a>）</p>
					<h3>超絶シンプル</h3>
					<p>無駄な装飾はなにもないです・・・</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/12/pinboard9.png" alt="" title="インポートできた" width="490" class="alignnone size-full wp-image-3859" /></p>
					<h3>あとで読む</h3>
					<p>あとで読むための一時ブックマークがあります。何気に便利。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/12/pinboard12.png" alt="" title="あとでよむ機能" width="490" class="alignnone size-full wp-image-3867" /></p>
					<h3>スター</h3>
					<p>重要なブックマークにはスターを。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/12/pinboard13.png" alt="" title="スター機能" width="301" height="29" class="alignnone size-full wp-image-3868" /></p>
					<h2 id="signup">Pinboardのサインアップ</h2>
					<p><strong>Pinboardは無料のサービスではなく</strong>、<a href="http://pinboard.in/help/fee/">サインアップフィーが必要</a>です。サインアップフィーについてはフィーのページにもある通り</p>
					<p><strong>登録ユーザー数 * $0.001</strong></p>
					<p>です。早く登録したユーザーのほうが安くいいから早く登録しちゃえよ！的な。Yahooのレイオフ騒動のおかげでフィーがあがってきています・・・ｗ記事を書いてるタイミング（18日の14時過ぎ）では<strong>$8.49</strong>、僕が登録したとき（17日の23時くらい）は<strong>$7.44</strong>、レイオフ記事が発表されたときはたしか$7弱くらいでした。<strong>登録を考えてる人はお早めに</strong>。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/12/pinboard2.png" alt="" title="pinboardのサインアップ" width="490" class="alignnone size-full wp-image-3833" /></p>
					<p>サインアップ時にBasic account（サインアップ時にフィーが必要）かArchival account（年間$25必要）を選択します。<strong>deliciousと同じように使うならBasicで十分</strong>です。Archivalはブックマークしたページをアーカイブ化してローカル環境でも見れるようにできる？ぽいです。</p>
					<p>有料なので、サインアップフォームの後に支払いフォームがあります。日本から使うならPaypalのほうですかね。</p>
					<h2>delicousからのインポート</h2>
					<p>インポートは超簡単です。もちろん<strong>個別プライベート設定もそのままインポートできます</strong>。</p>
					<p>とりあえずdeliciousに登録しているブックマークをエクスポートしましょう。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/12/pinboard3.png" alt="" title="deliciousのブックマークをエクスポート1" width="225" height="261" class="alignnone size-full wp-image-3844" /></p>
					<p>Exportページへ</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/12/pinboard4.png" alt="" title="deliciousのブックマークをエクスポート2" width="240" height="308" class="alignnone size-full wp-image-3845" /></p>
					<p>赤枠のチェックボックスはチェックを入れて、「Export」ボタンを押すてエクスポートファイルをダウンロードします。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/12/pinboard5.png" alt="" title="エクスポートされたファイル" width="224" height="48" class="alignnone size-full wp-image-3847" /></p>
					<p>次はPinboardでインポートします</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/12/pinboard6.png" alt="" title="インポート" width="182" height="76" class="alignnone size-full wp-image-3849" /></p>
					<p>インポートするファイルを選択してUploadします</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/12/pinboard7.png" alt="" title="インポート2" width="490" class="alignnone size-full wp-image-3850" /></p>
					<p>インポートが完了したら完了しましたステータスになります。なんか今混んでるみたいで（ｗ）ちょっと時間かかるかもしれないですね。そのときはステータスが「<strong>Pending</strong>」になります。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/12/pinboard81.png" alt="" title="インポート完了" width="339" height="118" class="alignnone size-full wp-image-3852" /></p>
					<p>インポートできた！</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/12/pinboard9.png" alt="" title="インポートできた" width="490" class="alignnone size-full wp-image-3859" /></p>
					<h2>ブックマークレット</h2>
					<p><a href="http://pinboard.in/howto/">ブックマークレット</a>も当然あります。いつものポップアップのやつとか同じページで移動するやつとか。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/12/pinboard11.png" alt="" title="Pinboardのブックマークレット" width="426" height="367" class="alignnone size-full wp-image-3864" /></p>
					<p>「popup with tags」と「Read later」がメインでしょうね。でもだいたいの人は下で書いてるChromeエクステンション使ったほうがいいと思います。キーボードショートカット使えますし。</p>
					<h2>ブックマーク以外の機能</h2>
					<p>まー基本的にはdeliciousと似たような感じです。<del datetime="2010-12-18T07:25:06+00:00">Twitterに投稿したり。</del>あ、deliciousに投稿されたブックマークをSyncする機能もありますよ。（これいるの？）</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/12/pinboard10.png" alt="" title="機能とか" width="387" height="393" class="alignnone size-full wp-image-3861" /></p>
					<h2>ブラウザのエクステンション・アドオン</h2>
					<p>現状Chromeなら割と便利に使えます。</p>
					<dl>
					<dt><a href="https://chrome.google.com/extensions/detail/nfccdohlgojifgadgnbjoejdfaalaehn?hl=ja">Pinboard by Jacob Buck</a></dt>
					<dd>ブラウザショートカットキーにアサインできるのが便利。Cmd+Shift+Eにブックマーク、Cmd+Shift+Lにあとでよむをあてて使ってます</dd>
					</dl>
					<p>インストールするとアイコンがでます</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/12/pinboard14.png" alt="" title="Chromeエクステンション" width="158" height="53" class="alignnone size-full wp-image-3878" /></p>
					<p>Keyboard ShortcutsをEnabledにして、ショートカットをアサインすると便利！</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/12/pinboard16.png" alt="" title="エクステンションの設定" width="262" height="321" class="alignnone size-full wp-image-3882" /></p>
					<p>Cmd+Shift+Eでブックマークウィンドウをひらく</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/12/pinboard151.png" alt="" title="Chromeエクステンション2" width="490" class="alignnone size-full wp-image-3880" /></p>
					<h2>お早めに（フィーがあがるまえに）</h2>
					<p>というわけで登録を考えてる人はお早めに！</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=3821&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/how-to-use-the-pinborard/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2010年の人気エントリーまとめましたん！</title>
		<link>http://5509.me/log/popular-entries</link>
		<comments>http://5509.me/log/popular-entries#comments</comments>
		<pubDate>Fri, 17 Dec 2010 01:33:42 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[まとめ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3805</guid>
		<description><![CDATA[					2010年の人気エントリーまとめました! &#8211; MOLに触発されて（まねじゃない）振り返りもかねて僕も書きますです。
					でも5月にドメインを変えたので5月からの集計です。それ以前も統合するのは [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://t32k.com/mol/2010/12/popular-entries/">2010年の人気エントリーまとめました! &#8211; MOL</a>に触発されて（まねじゃない）振り返りもかねて僕も書きますです。</p>
					<p>でも5月にドメインを変えたので5月からの集計です。それ以前も統合するのは主にめんどくさい的な理由でやりたくないです・・・アクセス数も全然多くないですけど、今年は初めてから今までで一番記事書いた気がする。特に12月に入ってからは14日以外の平日は毎日更新した・・・！どこかで誰かの役にたてばうれしいです<br />
					<span id="more-3805"></span></p>
					<p><img src="http://5509.me/wp-content/uploads/2010/12/access.png" alt="" title="accessしゅーけー" width="416" height="295" class="alignnone size-full wp-image-3807 round" /><br />
					5月からの上位こんてんつ（セッション数）</p>
					<h3>1位: <a href="http://5509.me/log/jqueryselectable">selectボックスをシンプルなプルダウンに拡張するjQselectable</a></h3>
					<p>jQselectableとしてGooglecodeで公開したタイミングでPHP SPOTさんで紹介してもらって爆発しました。<strong>いやこれ本当におすすめなんで使ったことない方はぜひ。一番おすすめです。</strong></p>
					<h3>2位: <a href="http://5509.me/log/realtimeformvalidation">リアルタイムフォームバリデーション jQuery.validation.js</a></h3>
					<p>公開したのって2008年の8月なんで・・・もう2年以上経ってるんですよ。もうexValidationを公開した関係でサポートはしていませんが、色んなところで使われてるのを見ましたね。うれしかったっす。</p>
					<h3>3位: <a href="http://5509.me/log/using-wordpress-as-cms">CMSとしてのWordPressでサイト構築をするときに便利な13のプラグイン</a></h3>
					<p>これも結構古い記事なんですけどねー。今でもブックマーク数が増え続ける人気エントリーですね<strong>。でも僕はこの記事を書きなおしたい・・・All in One SEO Packとか使ってないし。。。</strong></p>
					<h3>4位: <a href="http://5509.me/log/page-scrolling-with-jqueryeasing">ひと味違ったページ内スクロールをjQuery Easingプラグインで実装する jQuery.easing.scroll.js</a></h3>
					<p>jQueryのアニメーションはほんまに便利ですなー</p>
					<h3>5位: <a href="/log/jqueryplugins-i-have-used">これまでに使った20のjQueryプラグイン</a></h3>
					<p>最近はプラグインって決まったやつばっかりで前ほど使ってないですが、、自分で書くほうが楽しいですよ。なによりも<strong>ちゃんと仕様を理解して使うっていうのは重要</strong>です。</p>
					<h3>6位: <a href="http://5509.me/log/exvalidation">どんなフォームにも使えるjQueryのフォームバリデーション exValidation</a></h3>
					<p>これはかなりいいと思うんですけど・・・<strong>jQselectableと併用できるっていうのがポイント</strong>です。併用するのって僕くらいしかいないんですけど</p>
					<h3>7位: <a href="http://5509.me/log/jqueryslidescrolljs">スライドスクロールページ内リンク jQuery.slideScroll.js</a></h3>
					<p>なぜこれが・・・ページトップに移動するだけなら<a href="http://5509.me/log/snipets-2010#sn1">スニペット</a>で十分やし、これ使うくらいなら上にもある<a href="http://5509.me/log/page-scrolling-with-jqueryeasing">jQuery.easing.scroll.js</a>つかったほうがいいですｗ</p>
					<h3>8位: <a href="http://5509.me/log/jquery-with-animation">jQueryのアニメーション関連いろいろまとめ</a></h3>
					<p>簡単に使える分いろいろ方法を知ってると色んな動きを実装できて楽しいですね！</p>
					<h3>9位: <a href="http://5509.me/log/10-worthless-jquery-plugins">誰が使うの？何の役にも立たないjQueryプラグイン10選</a></h3>
					<p>なんでこれ1位じゃないの？これ<strong>一番がんばった</strong>んやで・・・みんなにも手伝ってもらって・・・TwitterのTLはだいぶ汚しましたけど・・・ｗ</p>
					<h3>10位: <a href="http://5509.me/log/jdtrunaway">クリックさせないリンク jdtRunAway.js</a></h3>
					<p>まさか単身くいこんでくるなんて・・・idea*ideaパワーですね。また来年も誰得ぷるぎんの続きやりますきっと。<a href="http://prog.re-d.net/?page_id=698">kamiyam</a>さんがひとりで続けてくれてますし・・・ｗ</p>
					<p>来年はjQuery以外でがんばりたい（｀・ω・´）</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=3805&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/popular-entries/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>個人的に使うことが多い9つのjQuery・JavaScriptスニペット</title>
		<link>http://5509.me/log/snipets-2010</link>
		<comments>http://5509.me/log/snipets-2010#comments</comments>
		<pubDate>Thu, 16 Dec 2010 02:13:24 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[スニペット]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3760</guid>
		<description><![CDATA[					プラグインだけど公開してないものだったり、いつも使ってるプラグインとの組み合わせだったり、ショートコードとかなんだか色々。どれもCodaにスニペットで登録してて一発変換で使ってます。
					コードはアレなん [...]]]></description>
			<content:encoded><![CDATA[					<p>プラグインだけど公開してないものだったり、いつも使ってるプラグインとの組み合わせだったり、ショートコードとかなんだか色々。どれもCodaにスニペットで登録してて一発変換で使ってます。</p>
					<p>コードはアレなんですけど、ひょっとしてひょっとすると誰かの役に立つかもしれないので恥ずかしながら公開します。対象はちょっとだけJS書けるとかそういう人ですかねたぶん。書ける人はもっとキレイなやつ使ってるでしょうし。（もっときれいに書けとか何そのコードとかも歓迎）</p>
					<h3>紹介してるスニペットたち</h3>
					<ul>
					<li><a href="#sn1">ページトップにスクロールするだけ</a></li>
					<li><a href="#sn2">テキストボックスにラベル表示するやつ</a></li>
					<li><a href="#sn3">要素のサイズを取得するやつ</a></li>
					<li><a href="#sn4">タブきりかえるやつ</a></li>
					<li><a href="#sn5">IEで透過pngをフェードしたときに黒くなるやつ対策のshow()とhide()</a></li>
					<li><a href="#sn6">Google Analyticsのトラックイベント一括bind</a></li>
					<li><a href="#sn7">Ajaxサイトにするときに使うリンク置き換えプラグイン</a></li>
					<li><a href="#sn8">スクロール位置を取得する</a></li>
					<li><a href="#sn9">表示領域のサイズを得る</a></li>
					</ul>
					<h3>まとめたやつのファイル</h3>
					<p>今回紹介した原文コードをまとめたものと、圧縮したものを置いておきます。</p>
					<ul>
					<li><a href="/sample/snipets.js">snipets.js</a></li>
					<li><a href="/sample/snipets_min.js">snipets_min.js</a></li>
					</ul>
					<h3>ライセンス（が気になる人へ）</h3>
					<p><a href="http://ja.wikipedia.org/wiki/WTFPL">WTFPL</a>ライセンスにしておくので好きなようにつかってください<br />
					<span id="more-3760"></span></p>
					<h2 id="sn1">ページトップにスクロールするだけ</h2>
					<p>#pageTop&gt;aみたいな要素に適用するだけならこれコピって使うほうがいいですね。easingは使わないならswingとかに変えてください。</p>
					<h3>ソースコード</h3>
					<pre>function pageScroll() {
&nbsp;&nbsp;$('html, body').animate({
&nbsp;&nbsp;&nbsp;&nbsp;scrollTop: 0
&nbsp;&nbsp;}, {
&nbsp;&nbsp;&nbsp;&nbsp;easing: 'easeInOutCirc',
&nbsp;&nbsp;&nbsp;&nbsp;duration: 500
&nbsp;&nbsp;});
}
$('#pageTop&gt;a').click(function() {
&nbsp;&nbsp;pageScroll();
&nbsp;&nbsp;return false;
});</pre>
					<h2 id="sn2">テキストボックスにラベル表示するやつ</h2>
					<p><img src="http://5509.me/wp-content/uploads/2010/12/sni_label.png" alt="" title="inputlabel" width="209" height="140" class="alignnone size-full wp-image-3763" /><br />
					↑こういう具合にラベル表示するやつ</p>
					<p>引数にどの属性からひっぱるか指定して使います。僕はtitleを指定することが多いです</p>
					<h3>ソースコード</h3>
					<pre style="height: 150px">$.fn.inputLabel = function(attr){
&nbsp;&nbsp;var formElms = $(this);
&nbsp;&nbsp;for(var i=0;i&lt;formElms.length;i++){
&nbsp;&nbsp;&nbsp;&nbsp;var self = formElms[i];
&nbsp;&nbsp;&nbsp;&nbsp;var parent = $(self).parent();
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;if($(self).attr(attr) &amp;&#038; $(self).attr(attr).length&gt;0){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent.css('position','relative')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var label = $(self).attr(attr);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var pos = $(self).position();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(self).removeAttr('title');
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var insertLabel = $('&lt;span/&gt;')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.attr('id','label_'+self.id)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.append(label)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.addClass('label')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.css({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;position: 'absolute',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;top: pos.top + 6,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;left: pos.left + 7,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zIndex: 100,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: '#666'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent.append(insertLabel);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(self.value &amp;&#038; self.value.length&gt;0){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insertLabel.hide();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insertLabel.click(function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var relationInputId = this.id.replace('label_','');
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).hide();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$('#'+relationInputId).focus();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(self).focus(function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$('#label_'+this.id).hide();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}).blur(function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(this.value.length&lt;1){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$('#label_'+this.id).show();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;}
&nbsp;&nbsp;return this;
}</pre>
					<h3>実行例</h3>
					<pre>$(hoge).inputLabel('title');</pre>
<h2 id="sn3">要素のサイズを取得するやつ</h2>
<p>非表示の要素とかいちいちshow()して取得してhide()してとかめんどい</p>
<p>任意のタイミングで</p>
<pre>$(hoge).m5getSize()</pre>
					<p>ってしたら</p>
					<pre>$.data(hoge, 'boxSize')</pre>
<p>で色んなサイズが取れます</p>
<h3>ソースコード</h3>
<pre>$.fn.m5getSize = function(options) {
&nbsp;&nbsp;$(this).each(function() {
&nbsp;&nbsp;&nbsp;&nbsp;var $this = $(this),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prevBoxStyle = $this.css('display');
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;$this.show();
&nbsp;&nbsp;&nbsp;&nbsp;$.data($this, 'boxSize', {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width: $this.width(),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height: $this.height(),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;offsetWidth: $this.attr('offsetWidth'),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;offsetHeight: $this.attr('offsetHeight'),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clientWidth: $this.attr('clientWidth'),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clientHeight: $this.attr('clientHeight'),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scrollWidth: $this.attr('scrollWidth'),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scrollHeight: $this.attr('scrollHeight'),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;top: $this.offset().top,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;left: $this.offset().left
&nbsp;&nbsp;&nbsp;&nbsp;});
&nbsp;&nbsp;&nbsp;&nbsp;$this.css('display', prevBoxStyle);
&nbsp;&nbsp;});
&nbsp;&nbsp;return this;
}</pre>
					<h2 id="sn4">タブきりかえるやつ</h2>
					<p>なんか結局自分で作ったやつが一番使いやすいっていうか、いつも同じHTML書いてればいいし楽ですよね。</p>
					<h3>HTML</h3>
					<p>こんなHTMLを用意してtabSwitchを実行するだけです。</p>
					<pre>&lt;div class=&quot;tabArea&quot;&gt;
&nbsp;&nbsp;&lt;ul class=&quot;tab&quot;&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#hoge&quot; class=&quot;active&quot;&gt;hoge&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#fuga&quot;&gt;fuga&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#piyo&quot;&gt;piyo&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&lt;/ul&gt;
&nbsp;&nbsp;
&nbsp;&nbsp;&lt;div id=&quot;hoge&quot;&gt;hogehoge&lt;/div&gt;
&nbsp;&nbsp;&lt;div id=&quot;fuga&quot;&gt;fugafuga&lt;/div&gt;
&nbsp;&nbsp;&lt;div id=&quot;piyo&quot;&gt;piyopiyp&lt;/div&gt;
&lt;/div&gt;</pre>
					<h3>ソースコード</h3>
					<pre style="height: 150px">$.fn.tabSwitch = function(options){
&nbsp;&nbsp;
&nbsp;&nbsp;var c = $.extend({
&nbsp;&nbsp;&nbsp;&nbsp;defaultCondition: true,
&nbsp;&nbsp;&nbsp;&nbsp;effect: false,
&nbsp;&nbsp;},options);
&nbsp;&nbsp;
&nbsp;&nbsp;var switchEffect = {
&nbsp;&nbsp;&nbsp;&nbsp;show: function(o){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(c.effect) $(o).fadeIn(&quot;normal&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else $(o).show();
&nbsp;&nbsp;&nbsp;&nbsp;},
&nbsp;&nbsp;&nbsp;&nbsp;hide: function(o){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(c.effect) $(o).fadeOut(&quot;fast&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else $(o).hide();
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;}
&nbsp;&nbsp;
&nbsp;&nbsp;function tabHide(o,flag){
&nbsp;&nbsp;&nbsp;&nbsp;if(flag || !c.defaultCondition){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(o).each(function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switchEffect.hide(this.hash);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});
&nbsp;&nbsp;&nbsp;&nbsp;}else{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($(o).hasClass(&quot;active&quot;)){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(o).each(function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!$(this).hasClass(&quot;active&quot;))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switchEffect.hide(this.hash);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(var i=0;i&lt;o.length;i++){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i==0) $(o[i]).addClass(&quot;active&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else switchEffect.hide(o[i].hash);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;}
&nbsp;&nbsp;
&nbsp;&nbsp;function tabSet(o){
&nbsp;&nbsp;&nbsp;&nbsp;$(o).each(function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var anchor = $(&quot;ul.tab a&quot;,this).filter(function(){return this.hash;});
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(var j=0;j&lt;anchor.length;j++){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tabHide(anchor,false);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(anchor[j]).click(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tabHide(anchor,true);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(anchor).not(this).removeClass(&quot;active&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switchEffect.show(this.hash);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).addClass(&quot;active&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).blur();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(location.hash &amp;&#038; $(location.hash,this).length&gt;0){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.scroll(0,0);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tabHide(anchor,true);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(anchor).removeClass(&quot;active&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switchEffect.show(location.hash);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;a[href*='&quot;+location.hash+&quot;']&quot;,&quot;ul.tab&quot;).addClass(&quot;active&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;});
&nbsp;&nbsp;}
&nbsp;&nbsp;
&nbsp;&nbsp;$(this).each(function(){ tabSet(this);});
&nbsp;&nbsp;
&nbsp;&nbsp;return this;
}</pre>
					<h3>実行例</h3>
					<pre>$("div.tabArea").tabSwitch();</pre>
<h2 id="sn5">IEで透過pngをfadeしたときに黒くなるやつ対策のshow()とhide()</h2>
<p>あの黒くなるのなんとかなりませんかね！単純にIEにはフェードじゃなくてshow()hide()にするだけで、使い方はfadeIn(), fadeOut()と置き換えるだけです。IE9だと黒くならないかも。そのへん未検証</p>
<h3>ソースコード</h3>
<pre>$.fn.exShow = function(duration, callback) {
&nbsp;&nbsp;if (!$.support.opacity) {
&nbsp;&nbsp;&nbsp;&nbsp;$(this).show();
&nbsp;&nbsp;&nbsp;&nbsp;if (callback &amp;&#038; typeof callback == 'function') {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;callback.call(this);
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;} else {
&nbsp;&nbsp;&nbsp;&nbsp;$(this).fadeIn(duration, callback);
&nbsp;&nbsp;}
&nbsp;&nbsp;return this;
}
$.fn.exHide = function(duration, callback) {
&nbsp;&nbsp;if (!$.support.opacity) {
&nbsp;&nbsp;&nbsp;&nbsp;$(this).hide();
&nbsp;&nbsp;&nbsp;&nbsp;if (callback &amp;&#038; typeof callback == 'function') {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;callback.call(this);
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;} else {
&nbsp;&nbsp;&nbsp;&nbsp;$(this).fadeOut(duration, callback);
&nbsp;&nbsp;}
&nbsp;&nbsp;return this;
}</pre>
					<h2 id="sn6">Google Analyticsのトラックイベント一括bind</h2>
					<p>トップページ全部のリンクに・・・とかめんどくさくてやってられません！classにgaTrackEvent、idにテキトーなやつ入れておけば自動で集計してくれます。自動なんで目安はURLなんですけど・・・</p>
					<h3>ソースコード</h3>
					<p>ところで、ひとつ前の非同期じゃないやつなんで非同期の人は_gaq.pushに置き換えてください。</p>
					<pre>$('div.gaTrackEvent').each(function() {
&nbsp;&nbsp;var _thisId = $(this).attr('id'),
&nbsp;&nbsp;&nbsp;&nbsp;_thisChildAnchors = $('a', this);
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;_thisChildAnchors.each(function() {
&nbsp;&nbsp;&nbsp;&nbsp;var _thisHref = $(this).attr('href');
&nbsp;&nbsp;&nbsp;&nbsp;if ( pageTracker ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).click(function() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pageTracker._trackEvent('hogehoge', _thisId, _thisHref);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;});
});</pre>
					<h2 id="sn7">Ajaxサイトにするときに使うリンク置き換えプラグイン</h2>
					<p>任意のリンクに対して実行するだけで</p>
					<pre>http://hoge.com/hogehoge/hoge2/</pre>
<p>みたいな普通のリンクを</p>
<pre>http://hoge.com/#/hogehoge/hoge2/</pre>
					<p>みたいにハッシュフラグメントリンクに置き換えます</p>
					<h3>ソースコード</h3>
					<pre>$.fn.ggReplaceHrefs = function() {
&nbsp;&nbsp;var elms = $(this);
&nbsp;&nbsp;elms.each(function() {
&nbsp;&nbsp;&nbsp;&nbsp;$(this)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.filter(function() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return this.href.indexOf(domain) != -1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.attr('href', $(this).attr('href').match(/^\./)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;? $(this).attr('href')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.replace(domain, '')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.replace(/^\./, '#')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: '#' + $(this).attr('href').replace(domain, ''))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.click(function() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;location.hash = this.hash;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});
&nbsp;&nbsp;});
}</pre>
					<h2 id="sn8">スクロール位置を取得する</h2>
					<p>スニペットにすると楽です。要素の位置を計算するときがよくあるんですけど、windowのリサイズに対応したり色々めんどうですよね。。</p>
					<p>ちなみにサイズ取得関連は何回お世話になってるか分からないcyokodogさんの記事をいつも見てます<br />
					<a href="http://d.hatena.ne.jp/cyokodog/20090224/jQueryPosSet01">jQuery の位置・サイズ関連メソッドまとめ &#8211; cyokodog</a></p>
					<h3>ソースコード</h3>
					<pre>var returnScrollTop = function() {
&nbsp;&nbsp;return {
&nbsp;&nbsp;&nbsp;&nbsp;y: document.body.scrollTop || document.documentElement.scrollTop,
&nbsp;&nbsp;&nbsp;&nbsp;x: document.body.scrollLeft || document.documentElement.scrollLeft
&nbsp;&nbsp;}
}</pre>
					<h2 id="sn9">表示領域のサイズを得る</h2>
					<p>要はHTMLドキュメントの高さと幅に当たるところです。これもスニペットで</p>
					<h3>ソースコード</h3>
					<pre>var returnClientSize = function() {
&nbsp;&nbsp;return {
&nbsp;&nbsp;&nbsp;&nbsp;x: document.body.clientWidth || document.documentElement.clientWidth,
&nbsp;&nbsp;&nbsp;&nbsp;y: document.body.clientHeight || document.documentElement.clientHeight
&nbsp;&nbsp;}
}</pre>
					<h2>というわけで</h2>
					<p>便利なスニペットコードあれば教えてください！</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=3760&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/snipets-2010/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ブログ・サイトに貼る主要ソーシャルサービスのボタンソースジェネレータ</title>
		<link>http://5509.me/log/social-service-buttons-generator</link>
		<comments>http://5509.me/log/social-service-buttons-generator#comments</comments>
		<pubDate>Wed, 15 Dec 2010 01:40:20 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[MovableType]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[いいね]]></category>
		<category><![CDATA[ジェネレータ]]></category>
		<category><![CDATA[ソーシャルサービス]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3706</guid>
		<description><![CDATA[					
					はてなブックマークとかTwitterのつぶやくボタンはブログやサイトにあると便利ですよね。でも作るときにいちいちソース探すのも手間やし、一括一発でソースコピれるやつがあったら便利かなと思ったので一発 [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2010/12/sbm_c.png" alt="" title="ソーシャルサービスのボタン" width="450" height="88" class="alignnone size-full wp-image-3753" /></p>
					<p>はてなブックマークとかTwitterのつぶやくボタンはブログやサイトにあると便利ですよね。でも作るときにいちいちソース探すのも手間やし、一括一発でソースコピれるやつがあったら便利かなと思ったので一発でソース生成するやつ作りました。</p>
					<p>URLとタイトル入れて「これでつくる」ボタンクリックでソースが表示されるのでコピって使えると思います。<br />
					<span id="more-3706"></span></p>
					<p>今のところ対応してるのは</p>
					<ul>
					<li>はてなブックマーク</li>
					<li>Twitter</li>
					<li>Facebookのいいね</li>
					<li>Evernoteのクリップ</li>
					<li>mixiチェック</li>
					<li>mixiイイネ</li>
					</ul>
					<p>です。必要なやつだけコピって使ってください。mixiが要るのかはアレです・・・</p>
					<h3>使い方など</h3>
					<ol>
					<li>用途を選ぶ。WPとMTの場合はURLとタイトル必要ないです。出てきたソースをループの中に入れるだけですね</li>
					<li><strong>はてブ・Twitter・Facebookのボタンは大きいサイズも選べます</strong>（プレビューはずれるけど気にしない）</li>
					<li>mixiのボタンを利用する場合は、<strong>チェックキーを取得して入力</strong>してください<br />チェックキーの取得は西畑さんの記事を参考にしてください : <a href="http://blog.webcreativepark.net/2010/09/11-042911.html">チェックキーの取得について &#8211; to-R</a></li>
					<li><strong>「これでつくる」</strong>ボタンをクリックする</li>
					<li>生成されるボタンのプレビューがみれます</li>
					<li>表示されたソースコードをコピーペーストする。タブクリックすると個別のソースコードでコピーできます</li>
					</ol>
					<p>※ Evernoteも入れたかったけど項目が多くてあきらめました・・・</p>
					<h3>ジェネレータ</h3>
					<p><iframe src="/sbm/" width="500" height="980" frameborder="0"></iframe><br />
					※ iframeで表示しているのでRSSで読んでる方は<a href="http://5509.me/log/social-service-buttons-generator">記事で見てください</a>　:)</p>
					<p>ジェネレータのボタンは<a href="http://www.css-lecture.com/log/css3/css3-button-sample.html">CSS3 でボタンを作る為のテクニック、サンプル集 &#8211; CSS Lecture</a>のサンプルボタンをそのまま使わせてもらいました・・・ｗ</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=3706&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/social-service-buttons-generator/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>HTML5でコーディングしたページでjQueryを使うときに気をつけること</title>
		<link>http://5509.me/log/notification-of-using-jquery-with-html5</link>
		<comments>http://5509.me/log/notification-of-using-jquery-with-html5#comments</comments>
		<pubDate>Mon, 13 Dec 2010 01:30:01 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[memo]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3682</guid>
		<description><![CDATA[					そろそろHTML5でコーディングする機会も増えてきたりするかもしれませんが、どうしてもブラウザ対応はしておきたいもの。jQueryで（※）要素をごにょごにょする際にちょっとはまったので一応書いておきます。
		 [...]]]></description>
			<content:encoded><![CDATA[					<p>そろそろHTML5でコーディングする機会も増えてきたりするかもしれませんが、どうしてもブラウザ対応はしておきたいもの。jQueryで（※）要素をごにょごにょする際にちょっとはまったので一応書いておきます。<br />
					<span id="more-3682"></span></p>
					<p>IE8以下での話ですが、IE8以下でHTML5を利用するときはHTML5の要素にCSSが適用されないので、<a href="http://remysharp.com/2009/01/07/html5-enabling-script/">html5.js</a>のようなスクリプトを<strong>ヘッダで</strong>読み込ませたりすると思います。</p>
					<pre>&lt;!--[if lt IE 9]&gt;
&lt;script src="http://html5shim.googlecode.com/svn/trunk/html5.js"&gt;&lt;/script&gt;
&lt;![endif]--&gt;</pre>
					<p>ちなみに僕はわざわざ読み込むのもアレなので、以下のものを毎回貼ってます。</p>
					<pre>&lt;!--[if lt IE 9]&gt;
&lt;script&gt;
var html5 = ['header', 'footer', 'section', 'article', 'aside', 'time', 'hgroup'];
// ↑使う要素を配列に入れておく
for ( var i=0, j=html5.length; i&lt;j; i++ ) {
&nbsp;&nbsp;document.createElement(html5[i]);
}
&lt;/script&gt;
&lt;![endif]--&gt;</pre>
					<p>こんな感じでJavaScriptのcreateElementメソッドでHTML5の要素を追加すれば、CSSが使えるようになって見た目もだいたいばっちりになるんですけど・・・</p>
					<p>jQueryで</p>
					<pre>$(hoge).append('&lt;section&gt;セクション&lt;/section&gt;')</pre>
<p>とか</p>
<pre>$(hoge).append([
&nbsp;&nbsp;'&lt;section&gt;',
&nbsp;&nbsp;&nbsp;&nbsp;'&lt;header&gt;',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&lt;hgroup&gt;',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&lt;h1&gt;&#12479;&#12452;&#12488;&#12523;&lt;/h1&gt;',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&lt;h2&gt;&#12469;&#12502;&#12479;&#12452;&#12488;&#12523;&lt;/h2&gt;',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&lt;/hgroup&gt;',
&nbsp;&nbsp;&nbsp;&nbsp;'&lt;/header&gt;',
&nbsp;&nbsp;&nbsp;&nbsp;// hogehoge
&nbsp;&nbsp;&nbsp;&nbsp;'&lt;footer&gt;',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&lt;time datetime=&quot;hogehoge&quot;&gt;hogehoge&lt;/time&gt;'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// hogehogehoge
&nbsp;&nbsp;&nbsp;&nbsp;'&lt;/footer&gt;',
&nbsp;&nbsp;'&lt;/section&gt;'
].join(''));</pre>
					<p>とか</p>
					<pre>&lt;header id="hoge"&gt;hogehogehoge&lt;/header&gt;</pre>
<p>を</p>
<pre>var hogeClone = $('#hoge');
$('body').append(hogeClone);</pre>
					<p>とか（コードの内容に意味はないです）するとCSSが適用されない訳ですよ。つまり<strong>ページロード時にはcreateElementで要素を作ってるんだけど、それ以降に新しく追加されたりしたHTML5の要素にはcreateElementしてたやつは効果がない</strong>っぽい。</p>
					<p>単純に上に書いたようなDOM操作なら、ちょっとめんどいけど</p>
					<pre>$(hoge).append(document.createElement('section'))</pre>
<p>みたいにすればよさそう。でもAjaxでとってきたページにHTML5の要素が含まれててそいつらを追加すると、なんかどうやってもうまくいかなかった。</p>
<p>そんなわけでAjax使うところはHTML5の要素を入れなかったりしてます。でもAjaxなくても毎回createElementとかあほらしいし、そういう処理使う場合はHTML5の要素は使わない方がいいんじゃないですかね。<br />
とか言いながら使いまわせるメソッドとかスニペットとかあればそれでいいのかも。</p>
<h3>20101213 11:43 追記</h3>
<p>対応方法と原因を曖昧にしていた（だめっぽいとかいけるっぽいとか・・・）ので、Webtech Walkerさんの記事へのリンクを追記します。<br />
<a href="http://webtech-walker.com/archive/2010/07/01155948.html">HTML5の新要素をjQueryでappendとかするとバグる件 &#8211; Webtech Walker</a></p>
<p>jQueryのappend、after等の要素追加メソッドで使うときは<a href="http://jdbartlett.github.com/innershiv/">innershiv.js</a>を利用すればだいたい大丈夫です。</p>
<h3>まとめ</h3>
<p>つまり何が言いたかったかというと<br />
jQueryぷるぎんって要素をclone()メソッドでコピーしたりなんか色々DOM要素をごにょごにょしたりするやつもあったりするので（僕が作ったやつにもあるんですけど・・・）何気なく使ってる人はそういうこともあるっていう事を知っておかないと、CSSあたらへんねん！意味わからん！とかになったりしそうなので気をつけておかないとなぁーっていうことです。</p>
<p>これくらいはjQueryでネイティブに対応してほしいですね。。</p>
<p><strong>※）jQueryというかJavaScriptですが</strong></p>
<img src="http://5509.me/?ak_action=api_record_view&id=3682&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/notification-of-using-jquery-with-html5/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>iPhoneの索引一覧みたいにタイトルがついてくるUIを実装できるjQueryプラグイン m5elementFollow</title>
		<link>http://5509.me/log/m5elementfollow</link>
		<comments>http://5509.me/log/m5elementfollow#comments</comments>
		<pubDate>Fri, 10 Dec 2010 02:20:35 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3644</guid>
		<description><![CDATA[					
					画像はiPhoneのiPodでアーティストを探しているところですが、同じようなUIを実装したいと思っていて、簡単に言うとスクロールに追従してくる感じなんですけど、複数要素の対応だったり、索引一覧みた [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/wp-content/uploads/2010/12/m5elementfollow.jpg"><img src="http://5509.me/wp-content/uploads/2010/12/m5elementfollow-200x300.jpg" alt="" title="m5elementfollow" width="200" height="300" class="alignright size-medium wp-image-3666" /></a></p>
					<p>画像はiPhoneのiPodでアーティストを探しているところですが、同じようなUIを実装したいと思っていて、簡単に言うとスクロールに追従してくる感じなんですけど、複数要素の対応だったり、索引一覧みたいにひっかかった場合に次のタイトルがついてくる的な動きがほしかったのでつくってみました。</p>
					<p>サンプルを見たほうが早いと思いますが、このブログのトップのようにタイトルをついてこさせたり、記事ページのようにソーシャルサービスへのリンクやメタ情報などの要素を固定できます。</p>
					<p>このブログにも試験的に取り入れていますので確認できますが、HTML5の要素を利用しているためIE8以下では確認することができません。IE8以下での確認は一番上のサンプルでみてください。</p>
					<ul>
					<li><a href="http://5509.me/sample/m5elementFollow/">動作サンプル（IE6以外で動作)</a></li>
					<li><a href="http://5509.me/">いくつもタイトルがある場合（このブログのトップ）</a></li>
					<li><strong>指定要素を表示しておきたい場合（今見ているページ）</strong></li>
					</ul>
					<p><span id="more-3644"></span></p>
					<h2>必要なファイルを読み込む</h2>
					<p>jQueryと<a href="http://5509.me/sample/m5elementFollow/js/m5elementFollow.js" onclick="_gaq.push(['_trackEvent', 'js', this.href])">m5elementFollow.js</a>を読み込みます。</p>
					<pre>&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/m5elementFollow.js&quot;&gt;&lt;/script&gt;</pre>
					<h2>任意の要素に対して実行する</h2>
					<p>実行した要素はスクロールについてきているとき「<strong>following</strong>」というクラスが付与されます。</p>
					<h3>JS</h3>
					<pre>jQuery(function($) {
&nbsp;&nbsp;// 指定したい要素の親要素に対して実行する
&nbsp;&nbsp;$('article.entry').m5elementFollow({
&nbsp;&nbsp;&nbsp;&nbsp;// ついてこさせる要素は親要素内にある物を指定できる
&nbsp;&nbsp;&nbsp;&nbsp;follow: 'header, footer'
&nbsp;&nbsp;});
});</pre>
					<h2>オプション</h2>
					<p>トップから少し下にずらすこともできます。</p>
					<table border="1" class="lftable">
					<tr>
					<th>項目</th>
					<th>値</th>
					</tr>
					<tr>
					<td>follow</td>
					<td>追従させる要素 (def &#8211; &#8216;.title&#8217;</td>
					</tr>
					<tr>
					<td>top</td>
					<td>トップから指定ピクセル分下にずらせます (def &#8211; 0</td>
					</tr>
					</table>
					<p><strong>いまのところIE6は非対応です。</strong></p>
					<ul>
					<li><a href="http://5509.me/sample/m5elementFollow/">動作サンプル（IE6以外で動作)</a></li>
					<li><a href="http://5509.me/">いくつもタイトルがある場合（このブログのトップ）</a></li>
					<li><a href="http://5509.me/log/m5noticedisplay">指定要素を表示しておきたい場合（このブログの記事詳細）</a></li>
					</ul>
					<img src="http://5509.me/?ak_action=api_record_view&id=3644&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/m5elementfollow/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>マウスホバー時にボックスをくるっとひっくり返すようなエフェクトで中身を切り替えるjQueryプラグイン m5flipElement</title>
		<link>http://5509.me/log/m5flipelement</link>
		<comments>http://5509.me/log/m5flipelement#comments</comments>
		<pubDate>Thu, 09 Dec 2010 01:07:19 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[エフェクト]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3643</guid>
		<description><![CDATA[					
					マウスオーバーしたときにくるっとひっくり返す（ような）エフェクトで目をひけるかもしれないjQueryプラグインです。ちょっと今日は・・・自信ないですｗぷるぎんのくせに使い方がややこしくなってしまった [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2010/12/m5flipelement.png" alt="" title="m5flipelementの動作解説" width="500" height="131" class="alignright size-full wp-image-3659" /></p>
					<p>マウスオーバーしたときにくるっとひっくり返す（ような）エフェクトで目をひけるかもしれないjQueryプラグインです<del datetime="2010-12-08T23:07:17+00:00">。ちょっと今日は・・・自信ないですｗ</del>ぷるぎんのくせに使い方がややこしくなってしまったんですけど反省はしてません。最低限必要やったんやで・・・</p>
					<ul>
					<li><a href="http://5509.me/sample/m5flipElement">動作サンプル</a></li>
					</ul>
					<p><span id="more-3643"></span></p>
					<h2>必要なファイルを読み込む</h2>
					<p>jQueryと<a href="http://5509.me/sample/m5flipElement/js/m5flipElement.js" onclick="_gaq.push(['_trackEvent', 'js', this.href])">m5flipElement.js</a>を読み込みます。</p>
					<pre>&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/m5flipElement.js&quot;&gt;&lt;/script&gt;</pre>
					<h2>任意の要素に対して実行する</h2>
					<p>元のHTMLとCSSの書き方などに制約が多いところがややこしいので、それぞれポイントを書いてます。</p>
					<h3>HTML</h3>
					<ul>
					<li>要素の中身はなんでもよくて以下の2つを含んでいるとよさげ</li>
					<li><strong>class: flipDefault</strong> は初期表示要素</li>
					<li><strong>class: flipHide</strong> はフリップ後に表示される要素</li>
					<li><strong>フリップ後は_boxの要素にclass: flipped が追加</strong>されます</li>
					</ul>
					<pre>&lt;div class="flipElement"&gt;
&nbsp;&nbsp;&lt;h2&gt;フリップエレメント&lt;/h2&gt;
&nbsp;&nbsp;&lt;p class="flipDefault"&gt;カーソルをあわせると・・・&lt;/p&gt;
&nbsp;&nbsp;&lt;p class="flipHide"&gt;コメントコメントコメントコメントコメントコメントコメントコメントコメントコメントコメントコメントコメントコメントコメント&lt;/p&gt;
&lt;/div&gt;</pre>
					<p>JavaScriptを実行すると元のHTMLが下記のように置き換わります。元の要素にclassがある場合classを、classがなくてidしかない場合はidをそれぞれ継承して_container、_boxを付与したものでwrapされます。（ややこしい）</p>
					<pre>&lt;div class="flipElement_container flip_container"&gt;
&nbsp;&nbsp;&lt;div class="flipElement_box flip_box"&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;div class="flipElement flip_elem"&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;h2&gt;フリップエレメント&lt;/h2&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p class="flipDefault"&gt;カーソルをあわせると・・・&lt;/p&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p class="flipHide"&gt;コメントコメントコメントコメントコメントコメントコメントコメントコメントコメントコメントコメントコメントコメントコメント&lt;/p&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;
&nbsp;&nbsp;&lt;/div&gt;
&lt;/dd&gt;</pre>
					<h3>CSS</h3>
					<ul>
					<li><strong>div.flipElement_container</strong>は、floatやmarginなど配置を決定するプロパティを指定します</li>
					<li><strong>div.flieElement_box</strong>は、元の要素でborderを指定している場合同じborderを指定します</li>
					<li>.flipped でスタイルをがらりと変えたほうが効果的な気がします</li>
					</ul>
					<pre>/* ここからJSで生成する要素 */
div.flipElement_container {
&nbsp;&nbsp;margin-right: 10px;
&nbsp;&nbsp;margin-bottom: 10px;
&nbsp;&nbsp;display: inline-block;
&nbsp;&nbsp;/display: inline;
&nbsp;&nbsp;/zoom: 1;
}
div.flipElement_box {
&nbsp;&nbsp;border: solid #ddd 1px;
}
/* ここまで */
div.flipElement {
&nbsp;&nbsp;margin-right: 10px;
&nbsp;&nbsp;margin-bottom: 10px;
&nbsp;&nbsp;border: solid #ddd 1px;
&nbsp;&nbsp;display: inline-block;
&nbsp;&nbsp;/display: inline;
&nbsp;&nbsp;/zoom: 1;
&nbsp;&nbsp;width: 250px;
&nbsp;&nbsp;height: 100px;
}
/* フリップ後 */
div.flipped {
&nbsp;&nbsp;background: #000;
}

div.flipElement h2 {
&nbsp;&nbsp;margin: 0 auto;
&nbsp;&nbsp;padding: 5px;
&nbsp;&nbsp;background: #eee;
&nbsp;&nbsp;text-align: center;
}

div.flipElement p {
&nbsp;&nbsp;padding: 5px 10px;
&nbsp;&nbsp;line-height: 1.4;
}
/* フリップ後 */
div.flipped p {
&nbsp;&nbsp;color: #fff;
}
&nbsp;&nbsp;
/* デフォルトは非表示 */
.flipHide {
&nbsp;&nbsp;display: none !important;
}</pre>
					<h3>JS</h3>
					<p>元の要素がborderを含んでいる場合はboxBorderAdjustプロパティで左右のボーダー幅を渡すときれいになります。（ややこしい）</p>
					<pre>jQuery(function($) {
&nbsp;&nbsp;$('.flipElement').m5flipElement({
&nbsp;&nbsp;&nbsp;&nbsp;boxBorderAdjust: 1
&nbsp;&nbsp;});
});</pre>
					<h2>オプション</h2>
					<p>おきまりのeasingなど</p>
					<table border="1" class="lftable">
					<tr>
					<th>項目</th>
					<th>値</th>
					</tr>
					<tr>
					<td>boxBorderAdjust</td>
					<td>元の要素にボーダーがある場合その幅を指定（左右のみ）<br />(def &#8211; 150</td>
					</tr>
					<tr>
					<td>easing</td>
					<td>フリップアニメーションのeasing (def &#8211; &#8216;swing&#8217;</td>
					</tr>
					<tr>
					<td>duration</td>
					<td>フリップアニメーションの速度 (def &#8211; 300</td>
					</tr>
					<tr>
					<td>callback</td>
					<td>コールバック function() {}</td>
					</tr>
					</table>
					<ul>
					<li><a href="http://5509.me/sample/m5flipElement">動作サンプル</a></li>
					</ul>
					<img src="http://5509.me/?ak_action=api_record_view&id=3643&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/m5flipelement/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ちょっとは入力しやすくなるかも？選択中のテキストエリアを拡大して見易くするjQueryプラグイン m5enlargeInput</title>
		<link>http://5509.me/log/m5enlargeinput</link>
		<comments>http://5509.me/log/m5enlargeinput#comments</comments>
		<pubDate>Wed, 08 Dec 2010 01:20:11 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[pluign]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3621</guid>
		<description><![CDATA[					
					テキスト入力エリア（input, textarea）にフォーカスすると入力エリアを拡大して見やすく表示することができるプラグインです。クラスを付与するためフォントサイズもあわせて大きくすることができ [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2010/12/m5enlargeinput.png" alt="" title="m5enlargeinputの解説画像" width="500" height="166" class="alignright size-full wp-image-3624 round" /></p>
					<p>テキスト入力エリア（input, textarea）にフォーカスすると入力エリアを拡大して見やすく表示することができるプラグインです。クラスを付与するためフォントサイズもあわせて大きくすることができます。</p>
					<ul>
					<li><a href="http://5509.me/sample/m5enlargeInput">動作サンプル</a></li>
					</ul>
					<p><span id="more-3621"></span></p>
					<h2>必要なファイルを読み込む</h2>
					<p>jQueryと<a href="http://5509.me/sample/m5enlargeInput/js/m5enlargeInput.js" onclick="_gaq.push(['_trackEvent', 'js', this.href])">m5enlargeInput.js</a>を読み込みます。</p>
					<pre>&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/m5enlargeInput.js&quot;&gt;&lt;/script&gt;</pre>
					<h2>任意の要素に対して実行する</h2>
					<p>input、textarea要素に対して実行します。（以下はサンプルのHTMLです。）</p>
					<h3>HTML</h3>
					<pre>&lt;dl&gt;
&nbsp;&nbsp;&lt;dt&gt;input (single)&lt;/dt&gt;
&nbsp;&nbsp;&lt;dd&gt;&lt;input type=&quot;text&quot; id=&quot;text&quot; class=&quot;enlargeInput&quot; value=&quot;&quot; /&gt;&lt;/dd&gt;
&nbsp;&nbsp;&lt;dt&gt;input (double)&lt;/dt&gt;
&nbsp;&nbsp;&lt;dd&gt;&lt;input type=&quot;text&quot; class=&quot;enlargeInput&quot; value=&quot;&quot; /&gt;
&nbsp;&nbsp;&lt;input type=&quot;text&quot; class=&quot;enlargeInput&quot; value=&quot;&quot; /&gt;&lt;/dd&gt;
&nbsp;&nbsp;&lt;dt&gt;textarea (with custom options)&lt;/dt&gt;
&nbsp;&nbsp;&lt;dd&gt;&lt;textarea id=&quot;area&quot; cols=&quot;5&quot; rows=&quot;5&quot;&gt;&lt;/textarea&gt;&lt;/dd&gt;
&lt;/dl&gt;
</pre>
					<h3>JS</h3>
					<pre>jQuery(function($) {
&nbsp;&nbsp;$('.enlargeInput').m5enlargeInput();
});</pre>
					<h2>オプション</h2>
					<p>ホバー効果や拡大時のセンタリング（元の位置に対して真ん中にくるように上と左を別個設定可）などを設定できます。</p>
					<table border="1" class="lftable">
					<tr>
					<th>項目</th>
					<th>値</th>
					</tr>
					<tr>
					<td>enlargeRatioWidth</td>
					<td>拡大時の幅（元に対して%指定）<br />(def &#8211; 150</td>
					</tr>
					<tr>
					<td>enlargeRatioHeight</td>
					<td>拡大時の高さ（元に対して%指定）<br />(def &#8211; 200</td>
					</tr>
					<tr>
					<td>hoverEnlarge</td>
					<td>ホバー効果のオンオフ (def &#8211; true</td>
					</tr>
					<tr>
					<td>hoverEnlargeRatioWidth</td>
					<td>ホバー時の幅（元に対して%指定）<br />(def &#8211; 110</td>
					</tr>
					<tr>
					<td>hoverEnlargeRatioHeight</td>
					<td>ホバー時の高さ（元に対して%指定）<br />(def &#8211; 120</td>
					</tr>
					<tr>
					<td>hoverClass</td>
					<td>ホバーしたときに付与するクラス<br />(def &#8211; &#8216;enlargedHover&#8217;</td>
					</tr>
					<tr>
					<td>movingTop</td>
					<td>拡大時にtopを(拡大した高さ/2)戻すか<br />(def &#8211; false</td>
					</tr>
					<tr>
					<td>movingLeft</td>
					<td>拡大時にleftを(拡大した幅/2)戻すか<br />(def &#8211; false</td>
					</tr>
					<tr>
					<td>enlargeClass</td>
					<td>拡大時に付与するクラス (def &#8211; &#8216;enlarged&#8217;</td>
					</tr>
					<tr>
					<td>zIndex</td>
					<td>拡大時のzIndex (def &#8211; 100</td>
					</tr>
					<tr>
					<td>easing</td>
					<td>拡大アニメーションのeasing (def &#8211; &#8216;swing&#8217;</td>
					</tr>
					<tr>
					<td>duration</td>
					<td>拡大アニメーションの速度 (def &#8211; 300</td>
					</tr>
					<tr>
					<td>callback</td>
					<td>コールバック function() {}</td>
					</tr>
					</table>
					<h3>サンプル最後の指定例</h3>
					<p>拡大するときに左上を軸にしないで、要素の真ん中を軸にして広がります。こっちのほうが使いやすそうな気がする</p>
					<pre>$('#area').m5enlargeInput({
&nbsp;&nbsp;enlargeRatioWidth: '200',
&nbsp;&nbsp;enlargeRatioHeight: '150',
&nbsp;&nbsp;hoverEnlarge: true,
&nbsp;&nbsp;hoverEnlargeRatioWidth: '110',
&nbsp;&nbsp;hoverEnlargeRatioHeight: '120',
&nbsp;&nbsp;movingTop: false,
&nbsp;&nbsp;movingLeft: true
});</pre>
					<ul>
					<li><a href="http://5509.me/sample/m5enlargeInput">動作サンプル</a></li>
					</ul>
					<img src="http://5509.me/?ak_action=api_record_view&id=3621&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/m5enlargeinput/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>指定位置までスクロールするとレイヤーをにょきっと表示して注意を引くjQueryプラグイン m5noticeDisplay</title>
		<link>http://5509.me/log/m5noticedisplay</link>
		<comments>http://5509.me/log/m5noticedisplay#comments</comments>
		<pubDate>Tue, 07 Dec 2010 01:47:22 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3580</guid>
		<description><![CDATA[					
					指定位置までスクロールしたときにレイヤーを表示させることができます。
					ブログを読み終わったあとに注意を引きたいレイヤーを表示して、ソーシャルサービス等への投稿などを促す効果も簡単に実装でき [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2010/12/m5noticedisplay_4.png" alt="" title="m5noticeDisplayの動作解説" width="500" height="194" class="alignright size-full wp-image-3619 round" /></p>
					<p>指定位置までスクロールしたときにレイヤーを表示させることができます。</p>
					<p>ブログを読み終わったあとに注意を引きたいレイヤーを表示して、ソーシャルサービス等への投稿などを促す効果も簡単に実装できます。（レイヤーの中身は別途必要です）</p>
					<p>元ネタは、長谷川恭久さんの<a href="http://www.yasuhisa.com/could/">could</a>から。「いかがでしたか？」というレイヤーが出てくるのですが同じような効果を簡単に実装できます。</p>
					<p>上からにょきっと表示する以外にも、指定レイヤーをフェードやスライドで表示させたりできます。</p>
					<ul>
					<li><a href="http://5509.me/sample/m5noticeDisplay">動作サンプル a (上からにょきっと</a></li>
					<li><a href="http://5509.me/sample/m5noticeDisplay/index2.html">動作サンプル b (フェード</a></li>
					</ul>
					<p><span id="more-3580"></span></p>
					<h2>必要なファイルを読み込む</h2>
					<p>jQueryと<a href="http://5509.me/sample/m5noticeDisplay/js/m5noticeDisplay.js" onclick="_gaq.push(['_trackEvent', 'js', this.href])">m5noticeDisplay.js</a>を読み込みます。</p>
					<pre>&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/m5noticeDisplay.js&quot;&gt;&lt;/script&gt;</pre>
					<h2>任意の要素に対して実行する</h2>
					<p>トリガーとする要素に対して実行します。トリガーとなる要素が画面内に入る直前あたりで注目させたいレイヤーを表示します。</p>
					<h3>HTML</h3>
					<pre>&lt;cite id=&quot;notice&quot;&gt;&lt;a href=&quot;http://ja.wikipedia.org/wiki/Www&quot;&gt;via: World Wide Web - Wikipedia&lt;/a&gt;&lt;/cite&gt;
&lt;!-- ↑トリガー --&gt;
~ (中略
&lt;div id=&quot;noticeBlock&quot;&gt;
&nbsp;&nbsp;&lt;h2&gt;Thanks for your reading! &lt;/h2&gt;
&nbsp;&nbsp;&lt;a href=&quot;http://b.hatena.ne.jp/entry/http://5509.me/log/m5noticedisplay&quot; class=&quot;hatena-bookmark-button&quot; data-hatena-bookmark-title=&quot;noticeDisplay&quot; data-hatena-bookmark-layout=&quot;standard&quot; title=&quot;&#12371;&#12398;&#12456;&#12531;&#12488;&#12522;&#12540;&#12434;&#12399;&#12390;&#12394;&#12502;&#12483;&#12463;&#12510;&#12540;&#12463;&#12395;&#36861;&#21152;&quot;&gt;&lt;img src=&quot;http://b.st-hatena.com/images/entry-button/button-only.gif&quot; alt=&quot;&#12371;&#12398;&#12456;&#12531;&#12488;&#12522;&#12540;&#12434;&#12399;&#12390;&#12394;&#12502;&#12483;&#12463;&#12510;&#12540;&#12463;&#12395;&#36861;&#21152;&quot; width=&quot;20&quot; height=&quot;20&quot; style=&quot;border: none;&quot; /&gt;&lt;/a&gt;&lt;script type=&quot;text/javascript&quot; src=&quot;http://b.st-hatena.com/js/bookmark_button.js&quot; charset=&quot;utf-8&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
&nbsp;&nbsp;&lt;a href=&quot;http://twitter.com/share&quot; class=&quot;twitter-share-button&quot; data-url=&quot;http://5509.me/log/m5noticedisplay&quot; data-text=&quot;指定位置までスクロールするとレイヤーをにょきっと表示して注意を引くjQueryプラグイン m5noticeDisplay&quot; data-count=&quot;horizontal&quot; data-via=&quot;5509&quot;&gt;Tweet&lt;/a&gt;&lt;script type=&quot;text/javascript&quot; src=&quot;http://platform.twitter.com/widgets.js&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;!-- ↑これを表示する --&gt; </pre>
					<h3>JS</h3>
					<pre>jQuery(function($) {
&nbsp;&nbsp;// トリガーに対して実行する
&nbsp;&nbsp;$('#notice').m5noticeDisplay({
&nbsp;&nbsp;&nbsp;&nbsp;// noticeBlockで表示するレイヤーを指定する(CSSセレクタで指定できます
&nbsp;&nbsp;&nbsp;&nbsp;noticeBlock: '#noticeBlock'
&nbsp;&nbsp;});
});</pre>
					<h2>オプション</h2>
					<p>表示するレイヤー、アニメーションタイプなどを設定できます。</p>
					<table border="1" class="lftable">
					<tr>
					<th>項目</th>
					<th>値</th>
					</tr>
					<tr>
					<td>noticeBlock</td>
					<td>表示するレイヤー（ID推奨) (def &#8211; &#8216;#noticeBlock&#8217;</td>
					</tr>
					<tr>
					<td>animateIn</td>
					<td>表示アニメーション slide, slideDown, fadeInの中から<br />（※後述）</td>
					</tr>
					<tr>
					<td>animateOut</td>
					<td>非表示アニメーション slide, slideUp, fadeOutの中から<br />（※後述）</td>
					</tr>
					<tr>
					<td>duration</td>
					<td>アニメーションの速度 (def &#8211; 300</td>
					</tr>
					<tr>
					<td>easing</td>
					<td>好きなeasingを指定できます (def &#8211; &#8216;swing&#8217;</td>
					</tr>
					<tr>
					<td>callback</td>
					<td>表示後のコールバック関数</td>
					</tr>
					</table>
					<h3>noticeBlockの指定要素について</h3>
					<p>JavaScriptが実行されるタイミングで非表示になりますが、チラつくのが気になる場合はCSS側でdisplay: none;にしておいてください。</p>
					<h3>animateInとanimateOutについて</h3>
					<p>slideDownとfadeInに関してはそのままの効果ですが、「<strong>slide</strong>」という値がデフォルトになっています。slideが指定されている場合は、noticeBlock要素は画面上部にposition: fixedで固定されているものとします。</p>
					<p>例えばサンプルは以下のようにCSSで指定した#noticeBlockに対してm5noticeDisplayを実行しています。</p>
					<pre>#noticeBlock {
&nbsp;&nbsp;position: fixed;
&nbsp;&nbsp;top: 0;
&nbsp;&nbsp;left: 0;
&nbsp;&nbsp;width: 100%;
&nbsp;&nbsp;height: 50px;
&nbsp;&nbsp;color: #fff;
&nbsp;&nbsp;background: #000;
&nbsp;&nbsp;opacity: .9;
&nbsp;&nbsp;line-height: 50px;
&nbsp;&nbsp;text-align: center;
}</pre>
					<p><strong>というわけでサンプルはどちらもIE6はCSS的に非対応です。</strong></p>
					<ul>
					<li><a href="http://5509.me/sample/m5noticeDisplay">動作サンプル a (上からにょきっと</a></li>
					<li><a href="http://5509.me/sample/m5noticeDisplay/index2.html">動作サンプル b (フェード</a></li>
					</ul>
					<img src="http://5509.me/?ak_action=api_record_view&id=3580&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/m5noticedisplay/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>テキストボックスの残り入力文字数をシンプルに表示するjQueryプラグイン m5simpleTextCount</title>
		<link>http://5509.me/log/m5simpletextcount</link>
		<comments>http://5509.me/log/m5simpletextcount#comments</comments>
		<pubDate>Mon, 06 Dec 2010 02:20:43 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[イライラ解消]]></category>
		<category><![CDATA[フォーム]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3543</guid>
		<description><![CDATA[					
					テキスト入力エリアなどの残り入力文字数をシンプルに表示するjQueryプラグインです。使い方も簡単で、指定要素に入力文字数と一緒に実行するだけです。
					動作サンプル
					
					必 [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2010/12/simpletextcount.png" alt="" title="simpleTextCountの動作画面サンプルキャプチャ" width="241" height="228" class="alignright size-full wp-image-3552" /></p>
					<p>テキスト入力エリアなどの残り入力文字数をシンプルに表示するjQueryプラグインです。使い方も簡単で、指定要素に入力文字数と一緒に実行するだけです。</p>
					<p><a href="http://5509.me/sample/m5simpleTextCount/" onclick="_gaq.push(['_trackEvent', 'sample', this.href])">動作サンプル</a><br />
					<span id="more-3543"></span></p>
					<h2>必要なファイルを読み込む</h2>
					<p>jQueryと<a href="http://5509.me/sample/m5simpleTextCount/js/m5simpleTextCount.js" onclick="_gaq.push(['_trackEvent', 'js', this.href])">m5simpleTextCount.js</a>を読み込みます。</p>
					<pre>&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/simpletextcount.js&quot;&gt;&lt;/script&gt;</pre>
					<h2>任意の要素に対して実行する</h2>
					<p>任意のinput, textareaに対して実行します。</p>
					<h3>HTML</h3>
					<pre>&lt;input type=&quot;password&quot; class=&quot;simpleTextCount&quot; value=&quot;&quot; /&gt;
&lt;textarea class=&quot;simpleTextCount&quot; cols=&quot;5&quot; rows=&quot;5&quot;&gt;&lt;/textarea&gt;</pre>
					<h3>JS</h3>
					<pre>jQuery(function($) {
&nbsp;&nbsp;$('.simpleTextCount').simpleTextCount({
&nbsp;&nbsp;&nbsp;&nbsp;maxLength: 12
&nbsp;&nbsp;});
});</pre>
					<p>ちなみにm5simpleTextCountを実行したinput要素はpaddingRight、textarea要素はpaddingRight, paddingBottomに適当な数値を当てたほうがいいと思いますよ！(そこは手動やねんで・・・</p>
					<h2>オプション</h2>
					<p>オプションを指定するデフォルトの文字・背景色、残り文字数が少なくなったときの文字・背景色などを任意に指定できます。全て残り文字数を表示する要素が対象です。</p>
					<pre>$('.simpleTextCount').simpleTextCount({
&nbsp;&nbsp;atColor: '#fff',
&nbsp;&nbsp;atBackground: '#000',
&nbsp;&nbsp;alertLength: 5,
&nbsp;&nbsp;maxLength: 12
});</pre>
					<table border="1" class="lftable">
					<tr>
					<th>name</th>
					<th>value</th>
					</tr>
					<tr>
					<td>focusDisplay</td>
					<td>trueを指定するとフォーカスしたときだけ残り文字数を表示する (def &#8211; false</td>
					</tr>
					<tr>
					<td>padding</td>
					<td>padding (def &#8211; &#8217;3px&#8217;</td>
					</tr>
					<tr>
					<td>color</td>
					<td>文字色 (def &#8211; &#8216;#000&#8242;</td>
					</tr>
					<tr>
					<td>background</td>
					<td>背景色 (def &#8211; &#8216;#eee&#8217;</td>
					</tr>
					<tr>
					<td>fontWeight</td>
					<td>文字の太さ (def &#8211; &#8216;normal&#8217;</td>
					</tr>
					<tr>
					<td>atColor</td>
					<td>少なくなったときの文字色 (def &#8211; &#8216;#f00&#8242;</td>
					</tr>
					<tr>
					<td>atBackground</td>
					<td>少なくなったときの背景色 (def &#8211; &#8216;#eee&#8217;</td>
					</tr>
					<tr>
					<td>atFontWeight</td>
					<td>少なくなったときの文字の太さ (def &#8211; &#8216;bold&#8217;</td>
					</tr>
					<tr>
					<td>opacity</td>
					<td>透過度 (def &#8211; .8</td>
					</tr>
					<tr>
					<td>alertLength</td>
					<td>スタイルを変える文字数 (def &#8211; 0</td>
					</tr>
					<tr>
					<td>maxLength</td>
					<td>残り入力文字数 (def &#8211; 10</td>
					</tr>
					</table>
					<h2>ひとりごと</h2>
					<p><a href="http://5509.me/log/exvalidation">exValidation</a>の文字数制限バリデーションと併用したくて作ったので、併用するといい気がします。機能をモジュールにしたほうがいい気もしてきた</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=3543&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/m5simpletextcount/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>AjaxコンテンツとGooglebot、インデックスの話</title>
		<link>http://5509.me/log/ikenkudasai</link>
		<comments>http://5509.me/log/ikenkudasai#comments</comments>
		<pubDate>Fri, 03 Dec 2010 03:40:50 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[アクセシビリティ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3527</guid>
		<description><![CDATA[					最近しつこいAjaxシリーズですが、今日は実際にAjaxをほぼ全てのコンテンツで実装した際にGoogleにインデックスされるかどうかの話を。
					結論から言うと、されるようです（結論のくせに曖昧ですけど！ [...]]]></description>
			<content:encoded><![CDATA[					<p>最近しつこいAjaxシリーズですが、今日は実際に<strong>Ajaxをほぼ全てのコンテンツで実装した際にGoogleにインデックスされるかどうか</strong>の話を。</p>
					<p>結論から言うと、<strong>されるようです</strong>（結論のくせに曖昧ですけど！）。</p>
					<p>今回は結局のところ、<strong>制作者の人たちはフルAjaxサイト（ってこの言葉使うの嫌なんですけど）をどうやって実装してるのかなーっていう、実例とか意見くださいエントリーです。意見ください！</strong><br />
					<span id="more-3527"></span></p>
					<p>ちょうど遷移にAjaxを利用したサイトを2つ作りまして</p>
					<ul>
					<li><a href="http://mindfree.jp/">マインドフリー株式会社</a> : デザイン以外を担当</li>
					<li><a href="http://m-clinic.net/">松本クリニック</a> : JSの実装のみ担当</li>
					</ul>
					<p>どちらも仕組みは同じで（動きが違うだけなんですけど）、配慮した点に関しては<a href="http://5509.me/log/to-make-ajax-contents">SEOやJSオフ環境にも配慮したAjaxコンテンツを制作するためにできること</a>で書いたように、WordPressを利用していてJavaScriptオフでも見られるようにベースを作ってて、JavaScriptでリンクをAjax用に置き換えてます。なのでどちらもJavaScriptを切った状態で閲覧すると、普通のサイトになります。</p>
					<h3>サイト内リンクとインデックス</h3>
					<p>以前も書いたようにJavaScriptがオフの状態ではサイト内のリンクURLは</p>
					<pre>http://hogehoge.com/piyo</pre>
<p>JavaScriptがオンの状態では</p>
<pre>http://hogehoge.com/#/piyo</pre>
					<p>のようになります。</p>
					<blockquote><p>検索エンジンでは、URL のパラメータは理解されますが、フラグメントは無視されることが多いため、これは重要です。</p>
					<p><cite>via: <a href="http://www.google.com/support/webmasters/bin/answer.py?hl=jp&#038;answer=81766">ウェブマスター ツール ヘルプ：ウェブサイトと Google の関係</a></cite></p></blockquote>
					<p>上記のように正しくインデックスされないことが多いようなので、Googleにインデックスされるためには、サイト内リンクであるとかサイトマップであるとかが重要になると思います。この辺は辺り前というか、広く知られたことだと思いますが、この最低ラインはJavaScriptオフでも見られるように作ることでクリアできますね。（つまり静的なHTML、代替コンテンツを用意する）</p>
					<h3>インデックス状況</h3>
					<p>そんな感じで実装したサイトですが、以下でインデックス状況を見てみると</p>
					<ul>
					<li><a href="http://www.google.co.jp/search?q=site%3Amindfree.jp&#038;ie=utf-8&#038;oe=utf-8&#038;aq=t&#038;rls=org.mozilla:ja-JP:official&#038;hl=ja&#038;client=firefox-a">site:mindfree.jp</a></li>
					<li><a href="http://www.google.co.jp/search?q=site%3Am-clinic.net&#038;ie=utf-8&#038;oe=utf-8&#038;aq=t&#038;rls=org.mozilla:ja-JP:official&#038;hl=ja&#038;client=firefox-a">site:m-clinic.net</a></li>
					</ul>
					<p><img src="http://5509.me/wp-content/uploads/2010/12/googleajax.png" alt="" title="インデックスされたコンテンツ" width="343" height="482" class="alignright size-full wp-image-3536" /></p>
					<p>しっかりと<strong>元のURL</strong>でインデックスされています。</p>
					<h3>（今のところ）Ajax用にリンクを置き換えるという処理は見ていない</h3>
					<p>結局のところGoogleがどこまでJavaScriptを確認することができるのか、っていうところが把握できていないところだったので、少なくとも<strong>Ajax用にリンクを置き換えるという処理は見ていない</strong>ということが分かりました。これ重要です。</p>
					<p>ただし、以下の記述にもあるように、よりブラウザに近い動作をするように、とされているため、その内JavaScriptでリンクを置き換えるところも認識されるようになってしまうかもしれませんが・・・</p>
					<blockquote><p>Google では、Googlebot がよりブラウザに近い動作をするよう対応を続けています。サイトで必要な機能は実装されているため、特に何もしなくても Googlebot によってページが適切にインデックスに登録される可能性はあります。</p>
					<p><cite>via: <a href="http://www.google.com/support/webmasters/bin/answer.py?hl=jp&#038;answer=174993">ウェブマスター ツール ヘルプ：AJAX: よくある質問</a></cite></p></blockquote>
					<h3>皆さんの対応方法が知りたいです</h3>
					<p>フルでAjaxを利用したコンテンツはまだまだ少ないような気がするのですが、そのときのSEOやJSオフ環境の対応ってみなさんどうしてるんでしょうか。その辺知りたいのでコメントとかTwitterで広がるとうれしいなぁ・・・</p>
					<p>HTMLsnapshotを利用して作ったフルAjaxサイト（ってこの言葉使うの嫌なんですけど）ってあるのかなー（Twitter以外</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=3527&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/ikenkudasai/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>これでますます便利！jQselectableをアップデートしました</title>
		<link>http://5509.me/log/jqselectable-has-been-updated</link>
		<comments>http://5509.me/log/jqselectable-has-been-updated#comments</comments>
		<pubDate>Thu, 02 Dec 2010 06:52:33 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3520</guid>
		<description><![CDATA[					
					キャプチャ画像のように、selectボックスがウィンドウの下方にあるときプルダウンを上部に表示するようにしました。
					slideDownを選択している場合は上ににょきっとはえるようなアニメー [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://jqselectable.googlecode.com/svn/trunk/index.html"><img src="http://5509.me/wp-content/uploads/2010/12/jqselectable132.png" alt="" title="jqselectable132" width="450" height="187" class="alignright size-full wp-image-3522" /></a></p>
					<p>キャプチャ画像のように、selectボックスがウィンドウの下方にあるときプルダウンを上部に表示するようにしました。</p>
					<p>slideDownを選択している場合は上ににょきっとはえるようなアニメーションになってちょっと気持ちいいですｗ</p>
					<ul>
					<li><a href="http://jqselectable.googlecode.com/files/jqselectable.1.3.2.zip" onclick="_gaq.push(['_trackEvent', 'jQselectable-updated', '1.3.2'])">jQselectable 1.3.2をダウンロードする</a></li>
					<li><a href="http://5509.me/log/jqueryselectable">jQselectableの詳細・使い方など</a></li>
					</ul>
					<img src="http://5509.me/?ak_action=api_record_view&id=3520&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jqselectable-has-been-updated/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>共著「jQuery逆引きマニュアル Webデザインの現場で役立つ基本と実践」が発売されます</title>
		<link>http://5509.me/log/jquery-manual-is-pre-ordered</link>
		<comments>http://5509.me/log/jquery-manual-is-pre-ordered#comments</comments>
		<pubDate>Wed, 01 Dec 2010 15:28:35 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[著書]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3485</guid>
		<description><![CDATA[					トゥーアールの西畑さん、ピクセルグリッドの中村さんとの共著「jQuery逆引きマニュアル Webデザインの現場で役立つ基本と実践」が12月17日に発売されます！
					お二人は僕がJavaScriptを始め [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://to-r.net/">トゥーアール</a>の<a href="http://blog.webcreativepark.net/">西畑さん</a>、<a href="http://www.pxgrid.com/">ピクセルグリッド</a>の<a href="http://kyosuke.jp/">中村さん</a>との共著<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844329618/norimania-22/ref=nosim/" onclick="_gaq.push(['_trackEvent', 'Books', 'text'])">「jQuery逆引きマニュアル Webデザインの現場で役立つ基本と実践」</a>が12月17日に発売されます！</p>
					<p>お二人は僕がJavaScriptを始めるきっかけになった大先生なもんで、、とてもうれしいです・・・（いまうっすら涙しながら書いてます）</p>
					<p>ちなみに僕はいつものフォームバリデーションをはじめ、25項目ほどお手伝いさせてもらいました。</p>
					<table  border="0" cellpadding="5" class="amazon" style="margin-top: 0;">
					<tr>
					<td colspan="2"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844329618/norimania-22/ref=nosim/" onclick="_gaq.push(['_trackEvent', 'Books', 'title'])">jQuery逆引きマニュアル Webデザインの現場で役立つ基本と実践</a></td>
					</tr>
					<tr>
					<td valign="top" width="130" style="padding-right: 0"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844329618/norimania-22/ref=nosim/" onclick="_gaq.push(['_trackEvent', 'Books', 'image'])"><img src="http://ecx.images-amazon.com/images/I/51QAqthVkYL._SL160_.jpg" border="0" alt="jQuery逆引きマニュアル Webデザインの現場で役立つ基本と実践" /></a></td>
					<td valign="top"><font size="-1">西畑一馬 中村享介 徳田和規 </p>
					<p>インプレスジャパン  2010-12-17<br />売り上げランキング : 106533</p>
					<p><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844329618/norimania-22/ref=nosim/" onclick="_gaq.push(['_trackEvent', 'Books', 'detail'])">Amazonで詳しく見る</a></font><font size="-2"> by <a href="http://www.goodpic.com/mt/aws/index.html" >G-Tools</a></font></td>
					</tr>
					</table>
					<p>jQueryをより便利に扱うためのJavaScriptの基礎から一般的なUIの実装コード、TwitterやFlickrとの連携方法、Visual Studioでの扱い方など幅広い内容でお手元に一冊あると便利ですよきっと！</p>
					<p>興味ある方はぜひに！</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=3485&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jquery-manual-is-pre-ordered/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SEOやJSオフ環境にも配慮したAjaxコンテンツを制作するためにできること</title>
		<link>http://5509.me/log/to-make-ajax-contents</link>
		<comments>http://5509.me/log/to-make-ajax-contents#comments</comments>
		<pubDate>Wed, 01 Dec 2010 04:59:35 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3453</guid>
		<description><![CDATA[					Ajaxを利用したコンテンツは、ユーザビリティを向上したりリッチなサイトを制作するために一役かってくれたりします。その反面Ajaxだけの視点で実装するとページ内を動的に書き換えていくため、SEOができなかったり [...]]]></description>
			<content:encoded><![CDATA[					<p>Ajaxを利用したコンテンツは、ユーザビリティを向上したりリッチなサイトを制作するために一役かってくれたりします。その反面Ajaxだけの視点で実装するとページ内を動的に書き換えていくため、SEOができなかったり、JSオフ環境だと閲覧できないというジレンマがあります。</p>
					<p>解決方法を少しあげてみましょう。（以下主に全ページAjaxで構成されているようなサイトを前提にしています）<br />
					<span id="more-3453"></span></p>
					<h2>1. HTMLsnapshotを利用する</h2>
					<p><a href="http://5509.me/log/making-crawrable-contents-with-ajax">SEOにも強いクローラブルなAJAXコンテンツを作成するために</a>という翻訳記事を先日書きましたが、Googleが対応している、というよりもGoogleにインデックスしてもらうための対応策ですかね。Twitterで導入されていますが、ユーザーが切り替えない限りはまだ旧サイトに飛んでいるはずなので、効果は分かりません。</p>
					<ul>
					<li>システムの対応が必須</li>
					<li>クエリをHTMLsnapshotに対応しないといけない</li>
					<li>結局bot向けに同じ内容のページを用意するくらいなら全ユーザーが利用できるほうがいいのでは？</li>
					</ul>
					<p>など、こちらの対応をするならはじめから静的なページを用意したほうが無難な気がします。（ページ数が膨大な）Webアプリケーション等はこちらのほうがいいんですかね。</p>
					<h2>2. JSオフでも閲覧可能なページ（HTML）を用意する</h2>
					<p>今のところ現実的なのはこれでしょうか。ポイントはサイトをJSオフでも見られるように設計しておいて、JS側でリンクをハッシュリンクに書き換えるという感じですね。</p>
					<p>この方法の要点は以下のとおりです。</p>
					<ul>
					<li>全てのページを作成する（いつも通り）</li>
					<li>リンクはJSでフラグメントハッシュリンクに置き換える</li>
					<li>Ajaxでページを読み込み必要なところだけ置き換える</li>
					</ul>
					<p>実装方法の詳細はまた別に<del datetime="2010-12-01T04:37:07+00:00">書くと思いますが、</del>書きますが、一例をあげるとページロード時に、以下のようなスクリプトを実行して各a要素のhref属性を書き換えてしまいます。サイト自体がJSオフ環境でも見ることができるため、サイトのSEOも従来通り。インデックスも元のURLでされます。</p>
					<pre>$('a').each(function() {
&nbsp;&nbsp;$(this)
&nbsp;&nbsp;&nbsp;&nbsp;.filter(function() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return this.href.indexOf(domain) != -1;
&nbsp;&nbsp;&nbsp;&nbsp;})
&nbsp;&nbsp;&nbsp;&nbsp;.attr('href', $(this).attr('href').match(/^\./)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;? $(this).attr('href')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.replace(domain, '')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.replace(/^\./, '#')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: '#' + $(this).attr('href').replace(domain, ''))
});</pre>
					<p>これを実行するとhrefの中身が</p>
					<pre>&lt;a href="/about/"&gt;</pre>
<p>から</p>
<pre>&lt;a href="#/about/"&gt;</pre>
					<p>へ変わります。</p>
					<p>クリックするとURLのフラグメントハッシュが変わり、ハッシュチェンジイベントが呼び出されるので、それにあわせてコンテンツを変更するようにします。</p>
					<p>ハッシュチェンジイベントは「<a href="http://5509.me/log/jquery-hash-change-event">jQuery hashchange event</a>」を利用すると簡単に実装することができます。</p>
					<p>ただしデメリットも当然あり、ハッシュリンクのせいでトップページURLが</p>
					<pre>http://hoge.com/</pre>
<p>と</p>
<pre>http://hoge.com/#</pre>
					<p>のように2つできてしまい、例えばソーシャルブックマークのブックマークが分かれてしまったりします。そのために使えるであろうcanonicalもまだ対応されていないことが多いのでなんとも。。はてなは対応しているはずですが、分かりにくいですね。</p>
					<p>あとはページ全体をAjaxで呼び出しがちなので、その辺りはサーバーサイドでAjaxリクエストだった場合はこのデータだけ、のような仕組みで利用したほうがエコっぽいです。</p>
					<h3>pushStateとreplaceState</h3>
					<p>hashchangeイベントの微妙なところはWHATWGで用意されている「pushState」「replaceState」を使えば解消されるような感じです。</p>
					<blockquote><p><strong>window . history . pushState(data, title [, url ] )</strong><br />
					Pushes the given data onto the session history, with the given title, and, if provided, the given URL.</p>
					<p><strong>window . history . replaceState(data, title [, url ] )</strong><br />
					Updates the current entry in the session history to have the given data, title, and, if provided, URL.</p>
					<p><cite>via: <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html">HTML5 (including next generation additions still in development) &#8211; 6.4 Session history and navigation</a></cite></p></blockquote>
					<p>hashchangeイベントがlocation.hashを利用するのに対してpushState・replaceStateはhistoryのメソッドになり、URLそのもの（location.pathname）を書き換えることができるようです。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=3453&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/to-make-ajax-contents/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MacBookのTrackpadを超便利にするBetterTouchTool（Magic Mouseでも使えるよ！）</title>
		<link>http://5509.me/log/bettertouchtool</link>
		<comments>http://5509.me/log/bettertouchtool#comments</comments>
		<pubDate>Thu, 25 Nov 2010 01:40:39 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[BetterTouchTool]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3400</guid>
		<description><![CDATA[					
					ブラウザでCmd+Clickとか使いませんか？BetterTouchToolを使ってCmd+WとかCmd+Qとかよく使うショートカットをトラックパッドのジェスチャーにアサインすると普段の操作便利にな [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2010/11/btt2.png" alt="" title="btt" width="500" class="alignnone size-full wp-image-3410" /></p>
					<p>ブラウザでCmd+Clickとか使いませんか？BetterTouchToolを使ってCmd+WとかCmd+Qとかよく使うショートカットをトラックパッドのジェスチャーにアサインすると普段の操作便利になって業務効率もアップするかも・・・！</p>
					<p>（キーボード派の人には・・・あれですけど・・・<br />
					<span id="more-3400"></span></p>
					<h2>BetterTouchTool</h2>
					<p>BetterTouchToolはキーボードショートカットに、<strong>Magic Mouseのマルチタッチジェスチャ</strong>や<strong>Trackpadのマルチタッチジェスチャ</strong>をアサインすることができたりする超便利ツールです。</p>
					<p>なんだか色々機能がありすぎて僕は使いこなせてないんですけど・・・<br />
					MacBookの人はTrackpadジェスチャをちょっとアサインするだけでもかなり便利になります。Magic Mouseのジェスチャアサインは・・・あのせまいところで指動かすのは正直アレですけど、それなりに使いやすくはなるでしょう。</p>
					<h2>ダウンロードとインストール</h2>
					<p>ダウンロードは以下のリンクから</p>
					<p>ダウンロードとか：<a href="http://boastr.net/">http://boastr.net/</a><br />
					ドキュメント・ビデオとか：<a href="http://blog.boastr.net/?page_id=1619">http://blog.boastr.net/?page_id=1619</a></p>
					<p>インストールはいつものように楽々ですね。インストールしたらとりあえず以下の設定でMacを起動したときに同時にBTTが起動するようにしておきましょう。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/11/btt_task.png" alt="" title="btt_task" width="382" height="244" class="alignnone size-full wp-image-3417" /><br />
					タスクバーからPreferenceを選択する</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/11/btt_task2.png" alt="" title="btt_task2" width="356" height="195" class="alignnone size-full wp-image-3419" /><br />
					<strong>Launch BetterTouchTool on startupにチェック</strong>を入れる</p>
					<h2>ジェスチャのアサイン</h2>
					<p>ここからは正直好みなんですけど、最初はよくわからないと思うのでとりあえず僕と同じように設定して使ってみてください。</p>
					<h3>ジェスチャをショートカットにアサインする</h3>
					<p>たとえば、Three Finger Tap（3本指タップ）を<strong>Cmd+Click</strong>に指定すると、ブラウザでリンクを3本指タップCmd+Clickになります。わざわざCmdを押しながらタップしなくていいなんて便利ですね。</p>
					<p>同じようによく使うキーボードショートカットは</p>
					<ul>
					<li>Cmd+W（タブを閉じる）</li>
					<li>Cmd+Q（アプリを終了する）</li>
					<li>Cmd+↑（ページ上部へ）</li>
					<li>Cmd+↓（ページ下部へ）</li>
					<li>^+Tab（タブ送り）</li>
					<li>^+Shift+Tab（タブ戻し）</li>
					</ul>
					<p>のような感じであるので、それぞれをTrackpadジェスチャにアサインしてみます。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/11/btt_gesture.png" alt="" title="btt_gesture" width="500" class="alignnone size-full wp-image-3424" /><br />
					Preference画面のGesturesタブ内、Trackpadを選択する</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/11/btt_global.png" alt="" title="btt_global" width="163" height="82" class="alignnone size-full wp-image-3440" /><br />
					ジェスチャをアサインするアプリを細かく指定できますが、ここではGlobal（Finderを含む全てに適用）を選択します</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/11/btt_add.png" alt="" title="btt_add" width="204" height="73" class="alignnone size-full wp-image-3425" /><br />
					<strong>Add New Gestures</strong>からジェスチャーを登録する</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/11/btt_asign.png" alt="" title="btt_asign" width="500" class="alignnone size-full wp-image-3426" /><br />
					任意のジェスチャーに対して任意のアクションをアサインする</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/11/btt_setting_1.png" alt="" title="btt_setting_1" width="494" height="201" class="alignnone size-full wp-image-3421" /><br />
					これを繰り返して上記のようにしてみます</p>
					<p>ただ初期設定だとTip TapやRorateのブロックタイムがけっこう長いので短くしておくと使いやすくなります。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/11/btt_setting2.png" alt="" title="btt_setting2" width="500" class="alignnone size-full wp-image-3436" /><br />
					Tip Tapの感度を少しさげると使いやすいかも</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/11/btt_setting3.png" alt="" title="btt_setting3" width="500" class="alignnone size-full wp-image-3437" /><br />
					Rotateのブロックタイムとdegreeを短く、ちょっとの角度でいいように設定しておきます</p>
					<p>上で割り当てたジェスチャーを動画で撮ってみました。ちょっときもいんですけど、こんな感じでジェスチャーするとキーボードショートカットが実行されます。</p>
					<h3>Rotate Left</h3>
					<p><iframe title="YouTube video player" class="youtube-player" type="text/html" width="500" height="311" src="http://www.youtube.com/embed/CsusPnKFbE0" frameborder="0"></iframe></p>
					<h3>Rotate Right</h3>
					<p><iframe title="YouTube video player" class="youtube-player" type="text/html" width="500" height="311" src="http://www.youtube.com/embed/75VhXveH0iU" frameborder="0"></iframe></p>
					<h3>Three Finger Tap</h3>
					<p><iframe title="YouTube video player" class="youtube-player" type="text/html" width="500" height="311" src="http://www.youtube.com/embed/81H4sBHRREM?rel=0" frameborder="0"></iframe></p>
					<h3>Tip Tap Left</h3>
					<p><iframe title="YouTube video player" class="youtube-player" type="text/html" width="500" height="311" src="http://www.youtube.com/embed/kDCz242xGfs" frameborder="0"></iframe></p>
					<h3>Tip Tap Right</h3>
					<p><iframe title="YouTube video player" class="youtube-player" type="text/html" width="500" height="311" src="http://www.youtube.com/embed/m51pSmuM20w" frameborder="0"></iframe></p>
					<h2>慣れてきたら好きなジェスチャでアサインを</h2>
					<p>認識するジェスチャもかなりの種類が用意されていて、キーボードショートカットやさまざまなアクションにアサインすることができるため設定次第ではかなり便利に使うことができるでしょう。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=3400&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/bettertouchtool/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ajaxやタブ切替には必須かも？ブラウザの「戻る」「進む」を有効にするjQueryのhashchangeプラグイン</title>
		<link>http://5509.me/log/jquery-hash-change-event</link>
		<comments>http://5509.me/log/jquery-hash-change-event#comments</comments>
		<pubDate>Fri, 19 Nov 2010 02:09:42 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3109</guid>
		<description><![CDATA[					Ajaxやタブクリックなどのイベントでもブラウザの「戻る」「進む」を有効にすることができるjQueryのhashchange eventというプラグインを紹介します。同じような効果を得られるスクリプトより断然使 [...]]]></description>
			<content:encoded><![CDATA[					<p>Ajaxやタブクリックなどのイベントでもブラウザの「戻る」「進む」を有効にすることができるjQueryのhashchange eventというプラグインを紹介します。同じような効果を得られるスクリプトより断然使いやすいのでおすすめです。<br />
					<span id="more-3109"></span></p>
					<p>使い方はとても簡単で<br />
					<strong>windowにhashchangeイベントをbindするだけ</strong>です。</p>
					<pre>$(window)
&nbsp;&nbsp;.hashchange(function() {
&nbsp;&nbsp;&nbsp;&nbsp;Hoge(location.hash.replace('#', ''));
&nbsp;&nbsp;}); // ハッシュフラグメントが変わったときにHoge()を実行する

$(window).hashchange(); // Windowロード時に実行できる</pre>
					<p><a href="http://benalman.com/projects/jquery-hashchange-plugin/">Ben Alman &raquo; jQuery hashchange event</a><br />
					<a href="http://benalman.com/code/projects/jquery-hashchange/examples/hashchange/">jQuery hashchange eventのデモ</a></p>
					<p><strong>実際にhashchange eventプラグインを利用して作ったサイト</strong><br />
					<a href="http://m-clinic.net">松本クリニック</a></p>
					<p>hashchangeイベントというのは</p>
					<pre>&lt;a href="./#fugafuga"&gt;fugafuga&lt;/a&gt;</pre>
<p>のようなハッシュフラグメントリンクをクリックしたときにURLが</p>
<pre>http://hogehoge.com/</pre>
					<p>から</p>
					<pre>http://hogehoge.com/#fugafuga</pre>
<p>のように変わるタイミングで実行されるイベントです。</p>
<p>「戻る」「進む」が使えないと何度もクリックして中身が切り替わってるのに、いきなりだいぶ前のページに戻ってしまうのでユーザーを迷わせてしまいがちです。ユーザーがコンテンツを便利に閲覧できるようにhashchangeプラグインのようなものの利用はぜひ検討すべきでしょう。</p>
<p><del datetime="2011-01-20T12:15:30+00:00">具体的な使い方については次回の記事に続きます。</del>続きませんでした・・・が、<a href="http://5509.me/log/to-make-ajax-contents">トリガーになるリンクの話など少し書きました</a>。</p>
<img src="http://5509.me/?ak_action=api_record_view&id=3109&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jquery-hash-change-event/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SEOにも強いクローラブルなAJAXコンテンツを作成するために</title>
		<link>http://5509.me/log/making-crawrable-contents-with-ajax</link>
		<comments>http://5509.me/log/making-crawrable-contents-with-ajax#comments</comments>
		<pubDate>Wed, 17 Nov 2010 01:40:33 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[クローラー]]></category>
		<category><![CDATA[翻訳]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3304</guid>
		<description><![CDATA[					AJAXコンテンツが増えるにつれて問題になるのは、SEOというか、検索エンジンにどうクローリング、インデックスさせるのか、という点ですよね。
					この前JavaScriptの実装を担当した松本クリニックは [...]]]></description>
			<content:encoded><![CDATA[					<p>AJAXコンテンツが増えるにつれて問題になるのは、<strong>SEOというか、検索エンジンにどうクローリング、インデックスさせるのか</strong>、という点ですよね。</p>
					<p>この前JavaScriptの実装を担当した<a href="http://m-clinic.net/">松本クリニック</a>は、<strong>AJAXでほぼ全てのページを切り替える</strong>っていうのが最大のポイントなんですけど、これの良いところはWordPressで全てのページを生成してて、JSオンでもオフでも見られるんですね。つまり、クローラはオフのコンテンツを見るような作りにしてあります。</p>
					<p>で、こういうのって小規模～中規模なサイトならまだいいと思いますけど、大規模なサイトになってきたりするとページは存在しないでデータだけが存在したりする（ハンドラにリクエストをかけてJSONだけを返してもらって内容を入れ替える、など・・・）わけで、実現が難しくなるんですね。</p>
					<p>この問題に対してGoogleが現在公表している方法は、<strong>HTML snapshotという代替ページをサーバーから返すようにして、クエリなどを含んだイケてないugly URLと#!を含むクールなpretty URLを用意しろ</strong>、というものです。いやー言ってることは分かるんですけどね、これってめんｄ（ｒｙ</p>
					<p>HTML snapshotの作り方も書いてあるんですけど、それはそれで置いておいて、とりあえずGetting Startedのページを見てみましょう。</p>
					<div class="note">原文 : <a href="http://code.google.com/intl/ja/web/ajaxcrawling/docs/getting-started.html">Making AJAX Applications Crawlable &#8211; Getting Started</a></div>
					<p>✄－－－－－－－－－－－－ 翻訳ここから －－－－－－－－－－－－✄</p>
					<h2>概要</h2>
					<p>簡単にまとめると、クローラが仕様に沿ったAJAX URL（ハッシュフラグメント#!を含んだもの）を見つけると、クローラはAJAXコンテンツではなくHTML Snapshotをリクエストし、ページを解析した上でAJAX URLを検索結果ページに表示します。</p>
					<p><a href="http://5509.me/wp-content/uploads/2010/11/crawlerserver2.png"><img src="http://5509.me/wp-content/uploads/2010/11/crawlerserver2.png" alt="" title="クローラとサーバー" width="490" class="alignnone size-full wp-image-3324" /></a><br />
					<span id="more-3304"></span></p>
					<h2>Step-by-stepガイド</h2>
					<h3>1. サイトがAJAXクローリングスキームに対応していることをクローラに伝える</h3>
					<p>AJAXサイトがインデックスされるための初めのステップは、クローラにサイトがAJAXクローリングスキームをサポートしていることを示すことです。</p>
					<p>このはステップを踏むには、特別なトークンをハッシュセグメント（ハッシュセグメント：URLのなかの#サイン以降の全て）内で使います。つまりハッシュセグメントはエクスクラメーションマーク（!）で始めなければなりません。</p>
					<p>つまり、AJAXアプリケーションがこのようなURLなら</p>
					<pre>www.example.com/ajax.html#key=value</pre>
<p>以下のようにします。</p>
<pre>www.example.com/ajax.html#!key=value</pre>
					<p>このスキームを使えば、サイトが”<strong>AJAXクローリングが可能である</strong>”と判断されます。クローラがもしHTML snapshotを使っていればアプリケーションのコンテンツを確認可能になります。</p>
					<h3>2. サーバーを_escaped_fragment_を含んだURLのリクエストをハンドル出来るように設定してください。</h3>
					<p>例えば“ www.example.com/index.html#!key=value”をインデックスされたいなら、このURLのHTML snapshotをクローラに提供することが必要になります。HTML snapshotを用意することで、クローラがコンテンツをみることができるわけです。ではサーバーはどうやってレギュラーページ（AJAXコンテンツ）を返すのとHTML snapshotを返すときを見分けるのでしょう。答えはクローラからリクエストされたURLにあります。クローラはそれぞれの下記のようなAJAX URL(<strong>pretty URL</strong>)を</p>
					<pre>www.example.com/ajax.html#!key=value</pre>
<p>一時的に下記のように書き換えます(<strong>ugly URL</strong>)。</p>
<pre>www.example.com/ajax.html?_escaped_fragment_=key=value</pre>
					<p>なぜこんな面倒くさいことをさせるのかというと、ここで重要なポイントは2つあります。</p>
					<ul>
					<li><strong>ハッシュセグメントは（仕様として）HTTPリクエストの一部としてサーバーに送られることはありません</strong>。つまり、<strong>クローラはどうにかしてサーバーに www.example.com/ajax.html#!key=value のコンテンツがほしいということを伝える方法が必要</strong>なのです。（www.example.com/ajax.htmlのようなURLの比較として）</li>
					<li><strong>一方でサーバーはブラウザーに送るノーマルなページ（ここで言うノーマルなページはAJAXコンテンツ）ではなくて、HTML snapshotを返す必要があることを知らなければなりません</strong>。HTML snapshotはJavaScriptが実行された後のページに表示されるコンテンツ全てであることを覚えておいてください。最終的に、あなたのサーバーはHTML snapshot www.example.com/index.html#!key=value (オリジナルのURL)をクローラに返すことが必要というわけです。</li>
					</ul>
					<div class="note">注意：<strong>クローラは、変換時にフラグメントで一定のキャラクターをエスケープします。オリジナルのフラグメントを改修するには、フラグメントの中の全ての%XX文字をエスケープしない</strong>ように気をつけてください。もっと具体的にいうと<strong>%26は&#038;で%20はスペース、%23 sは #, %25は %にするなど</strong>です。</div>
					<p>オリジナルのURLとクローラがどのようなコンテンツをリクエストしているかがわかったらHTML snapshotをつくる必要があります。HTML snapshotの作成方法は色々あります。いくつか紹介します。</p>
					<ul>
					<li>コンテンツの多くがJavaScriptで生成されていれば、HTML snapshotを取得するために<a href="http://htmlunit.sourceforge.net/">HtmlUnit</a>のようなヘッドレスブラウザーを使ったほうがいいかもしれません。また、 <a href="http://crawljax.com/">crawljax</a>や<a href="http://watij.com/">watij.com</a>のようなツールを使うこともできます。</li>
					<li><strong>コンテンツがPHPやASP.NETのようなサーバーサイドの技術を使って作られているのなら、すでに存在するコードを使って、JavaScriptの部分をStaticなものか、サーバーサイドで作ったHTMLに置き換えてください</strong>。（つまりWordPressでページを生成しておくようなものですね。）</li>
					<li><strong>現行方式のようにオフラインでstaticなページをつくることもできます</strong>。たとえば、多くのアプリケーションはデータベースからコンテンツを引っ張ってきてブラウザーにレンダリングします。それではなくて、それぞれのAJAXURLにつき別々のHTMLページを作ります。（つまり自力で静的ページを作れという意味ですよ）</li>
					</ul>
					<p>HTML snapshotのメカニズムを使ってみることを強く推薦します。ヘッドレスブラウザーが確実にあなたのコンテンツのアプリ件の状態を正確にレンダーしているか確認することが大切です。クローラに実際どのように見えているのかを知るのは、小さなテストアプリケーションをつくって、どのようになるのか見ることもできるし、<a href="http://www.googlelabs.com/show_details?app_key=agtnbGFiczIwLXd3d3IUCxIMTGFic0FwcE1vZGVsGJukUgw">Fetch as Googlebot</a>のようなツールを使って試すこともできます。</p>
					<p>まとめると、下記のことがサーバーで動いていることを確認して下さい。</p>
					<ul>
					<li><strong>www.example.com/ajax.html?_escaped_fragment_=key=value のような形のURLがオリジナルのwww.example.com/ajax.html#!key=valueへマッピングされている</strong>こと。</li>
					<li>トークンはエスケープされていないURLであること。一番簡単な方法は、スタンダードURLでコーディングを行うこと。例えばJAVAでは下記のようにできます。</li>
					</ul>
					<pre>mydecodedfragment = URLDecoder.decode(myencodedfragment, "UTF-8");</pre>
<ul>
<li>理想的にはページの上部にある主なリンクと一緒にHTML snapshotがもどってきたら、エンドユーザーがエラーで_escaped_fragment_ URLへアクセスしたことを知らせることです。（<strong>_escaped_fragment_ URLはクローラによりのみアクセスできるURLであることを忘れてはいけません。</strong>）_escaped_fragment_ が無い全てのリクエストに対して、サーバーはコンテンツを返します。</li>
</ul>
<h3>3. ハッシュフラグメントなしにページを扱う。</h3>
<p>あなたのページの一部はハッシュフラグメントが無いかもしれません。例えばホームページのURLをwww.example.com#!homeより www.example.comにしたい場合です。この理由により、ハッシュフラグメントの無いページ用に特別な方法を用意しました。<strong>ハッシュフラグメントの無いページをクローラがアクセスできるようにするには、ページのトップ部分に特別なメタタグを追加しないといけません</strong>。</p>
<p>そのメタタグはこのようになります。</p>
<pre>&lt;meta name="fragment" content="!"&gt;</pre>
					<p>これはクローラに対して、このugly URLをクロールするべきだと指示しています。これらにより、クローラは一時的にugly URLに相当するpretty URLをマップします。言い換えると、もしwww.example.comへ&lt;meta name=&#8221;fragment&#8221; content=&#8221;!&#8221;&gt;を設置すると、クローラが一時的にwww.example.com?_escaped_fragment_= をマッピングし、サーバーへリクエストします。そうすると、サーバーがwww.example.comに相当するHTML snapshotを返します。このメタタグを使うに当たって大切な制限があります。それは、唯一の有効なコンテンツは“！（エクスクラメーションマーク）”です。つまり、このメタタグはいつも正確なフォーム<meta name="fragment" content="!">を必要とします。<strong>このタグは空のハッシュフラグメントだが、AJAXコンテンツを含んだページであることを指します。</strong></p>
					<h3>4. 新しいAJAX URLをリストするためにサイトマップの更新を考える。</h3>
					<p>クローラは発見したクロールを補足するためにサイトマップを使います。サイトマップは検索結果で表示されたいURLを含んだバージョンであるべきです。大体の場合pretty URLつまり</p>
					<pre>http://example.com/ajax.html#!key=value</pre>
<p>になります。サイトマップには</p>
<pre>http://example.com/ajax.html?_escaped_fragment_=key=value</pre>
					<p>のようなugly URLはふくめないこと。Googlebotは<strong>_escaped_fragment_</strong>を含んだリンクを（サイトマップURLとしては）理解しません。</p>
					<p>たとえば、下のようなバージョンを検索結果に表示させたいのであれば</p>
					<pre>http://example.com/</pre>
<p>下記を含めましょう。</p>
<pre>http://example.com/</pre>
					<p>そうしてHTMLドキュメントのヘッダーに<meta name="fragment" content="!">を含めましょう。これについてもっと知りたい場合はSitemapsで追加のドキュメントを確認して下さい。</p>
					<div class="note">最後のところ原文でもURLが同じになっててちょっとよく分からなかった</div>
					<h3>5.オプションでも重要なアプリケーションのクローリング可否テスト：&#8221;Fetch as Googlebot&#8221;でクローラがみているものをみる</h3>
					<p>Googleではクローラが実際に見ているコンテンツを確認できる<a href="http://www.googlelabs.com/show_details?app_key=agtnbGFiczIwLXd3d3IUCxIMTGFic0FwcE1vZGVsGJukUgw">Fetch as Googlebot</a>を提供しているので、正しく実装されているか確認しておきましょう。また、サイトがクローキングしていないことを確かめるためにもこのツールを使うことが重要になります。</p>
					<p>✄－－－－－－－－－－－－ 翻訳ここまで －－－－－－－－－－－－✄</p>
					<h2>おまけ</h2>
					<p>けっこう長かったのですけど、早い話、概要の図につきると思います。</p>
					<p><a href="http://5509.me/wp-content/uploads/2010/11/crawlerserver2.png"><img src="http://5509.me/wp-content/uploads/2010/11/crawlerserver2.png" alt="" title="クローラとサーバー" width="490" class="alignnone size-full wp-image-3324" /></a></p>
					<p>結局AJAXコンテンツはそのままのURLではクローリングされないので、それ用の施策と代替コンテンツを用意しろとそういうわけですね。。。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=3304&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/making-crawrable-contents-with-ajax/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>いまさらjQueryのLightboxぽいプラグインいろいろ</title>
		<link>http://5509.me/log/some-lightbox-plugins</link>
		<comments>http://5509.me/log/some-lightbox-plugins#comments</comments>
		<pubDate>Fri, 12 Nov 2010 01:55:22 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[memo]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[誰得]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3243</guid>
		<description><![CDATA[					最近あまり見なくなってきたし、個人的にも使う機会も減ったLightbox系のプラグインを久しぶりに探したついでにメモ。またいつか使うときのために・・・ライセンス形態と対応メディアも付けたのでそれなりに見やすいか [...]]]></description>
			<content:encoded><![CDATA[					<p>最近あまり見なくなってきたし、個人的にも使う機会も減ったLightbox系のプラグインを久しぶりに探したついでにメモ。またいつか使うときのために・・・ライセンス形態と対応メディアも付けたのでそれなりに見やすいかもかもかも。</p>
					<p>（デモもつけようと思ったけどめんどくさいからやめた・・・</p>
					<h2>jQuery LightBox plugin</h2>
					<p><img src="http://5509.me/wp-content/uploads/2010/11/lightbox.png" alt="" title="lightbox" class="alignnone size-full wp-image-3259" /></p>
					<p>いつものLightbox。お世話になった人も多そう。</p>
					<table border="1" class="lftable">
					<tr>
					<th>ページ</th>
					<td><a href="http://leandrovieira.com/projects/jquery/lightbox/">アーカイブ・デモ</a></td>
					</tr>
					<tr>
					<th>対応メディア</th>
					<td>画像</td>
					</tr>
					<tr>
					<th>ライセンス</th>
					<td>MITライセンス</td>
					</tr>
					<tr>
					<th>その他</th>
					<td>ふつーのLightbox</td>
					</tr>
					</table>
					<h2>ThickBox 3.1</h2>
					<p><img src="http://5509.me/wp-content/uploads/2010/11/thickbox.png" width="500" alt="" title="thickbox" class="alignnone size-medium wp-image-3263"></p>
					<p>jQueryと言えばのThickbox。当初iframeが使えたのはこれだけだったもんで色々表示してた記憶があります。</p>
					<table border="1" class="lftable">
					<tr>
					<th>ページ</th>
					<td><a href="http://jquery.com/demo/thickbox/">アーカイブ</a><br /><a href="http://jquery.com/demo/thickbox/#examplesTitle">デモ</a></td>
					</tr>
					<tr>
					<th>対応メディア</th>
					<td>画像・iframe・Inline・Ajax・Youtubeとかも可</td>
					</tr>
					<tr>
					<th>ライセンス</th>
					<td>MITライセンス</td>
					</tr>
					<tr>
					<th>その他</th>
					<td>よく使われていたプラグインな印象</td>
					</tr>
					</table>
					<h2>PrettyPhoto</h2>
					<p><img src="http://5509.me/wp-content/uploads/2010/11/prettyphoto.png" width="500" alt="" title="prettyphoto" class="alignnone size-medium wp-image-3261"></p>
					<p>角丸スタイルと拡大ボタンなどちょっとリッチなLightboxみたいなの。</p>
					<table border="1" class="lftable">
					<tr>
					<th>ページ</th>
					<td><a href="http://www.no-margin-for-errors.com/projects/prettyphoto-jquery-lightbox-clone/">アーカイブ・デモ</a></td>
					</tr>
					<tr>
					<th>対応メディア</th>
					<td>画像・SWF・Youtube・Vimeo・MOV・iframe・Inline</td>
					</tr>
					<tr>
					<th>ライセンス</th>
					<td>Creative Commons Attribution 2.5</td>
					</tr>
					<tr>
					<th>その他</th>
					<td>ギャラリー・スライドショー</td>
					</tr>
					</table>
					<h2>jQuery.popeye 2.0</h2>
					<p><img src="http://5509.me/wp-content/uploads/2010/11/popeye.jpg" width="500" alt="" title="popeye" class="alignnone size-medium wp-image-3260"></p>
					<p>Lightboxみたいな効果を画像にインラインで埋め込めるかなり素敵プラグインやけどまだ使ったことないなー。。あ、WordPressプラグインで使ってみればいいのかも。</p>
					<table border="1" class="lftable">
					<tr>
					<th>ページ</th>
					<td><a href="http://dev.herr-schuessler.de/jquery/popeye/">アーカイブデモ</a><br /><a href="http://dev.herr-schuessler.de/jquery/popeye/demo.html">デモ</a></td>
					</tr>
					<tr>
					<th>対応メディア</th>
					<td>画像</td>
					</tr>
					<tr>
					<th>ライセンス</th>
					<td>GPL 2.0</td>
					</tr>
					<tr>
					<th>その他</th>
					<td>WordPressプラグインもあるよ</td>
					</tr>
					</table>
					<h2>Shadowbox.js</h2>
					<p><img src="http://5509.me/wp-content/uploads/2010/11/shadowbox" width="500" alt="" title="shadowbox" class="alignnone size-medium wp-image-3262"></p>
					<p>商用は有償なだけあって多機能なやつ。</p>
					<table border="1" class="lftable">
					<tr>
					<th>ページ</th>
					<td><a href="http://www.shadowbox-js.com/index.html">アーカイブ・デモ</a></td>
					</tr>
					<tr>
					<th>対応メディア</th>
					<td>画像・SWF・Youtube・MOV・Vimeo・FLV</td>
					</tr>
					<tr>
					<th>ライセンス</th>
					<td><strong>Shadowbox.js License</strong>（商用$20～）</td>
					</tr>
					<tr>
					<th>その他</th>
					<td>jQuery以外の多数のフレームワークで動く</td>
					</tr>
					</table>
					<h2>YoxView</h2>
					<p><img src="http://5509.me/wp-content/uploads/2010/11/yoxview.jpg" width="500" alt="" title="yoxview" class="alignnone size-medium wp-image-3264"></p>
					<p>表示が割ときれい。テーマをきれいにすればちょうどよくなりそうな気もする。。</p>
					<table border="1" class="lftable">
					<tr>
					<th>ページ</th>
					<td><a href="http://www.yoxigen.com/yoxview/">アーカイブ・デモ</a></td>
					</tr>
					<tr>
					<th>対応メディア</th>
					<td>画像</td>
					</tr>
					<tr>
					<th>ライセンス</th>
					<td>MITライセンス</td>
					</tr>
					<tr>
					<th>その他</th>
					<td>多言語サポート</td>
					</tr>
					</table>
					<h2>fancybox</h2>
					<p><img src="http://5509.me/wp-content/uploads/2010/11/fancybox.png" width="500" alt="" title="fancybox" class="alignnone size-medium wp-image-3258"></p>
					<p>スッキリしててみやすいさすがファンシー。</p>
					<table border="1" class="lftable">
					<tr>
					<th>ページ</th>
					<td><a href="http://fancybox.net/">アーカイブ・デモ</a></td>
					</tr>
					<tr>
					<th>対応メディア</th>
					<td>画像</td>
					</tr>
					<tr>
					<th>ライセンス</th>
					<td>MITとGPLのデュアルライセンス</td>
					</tr>
					<tr>
					<th>その他</th>
					<td>個人的にこのみ</td>
					</tr>
					</table>
					<h2>ColorBox</h2>
					<p><img src="http://5509.me/wp-content/uploads/2010/11/colorbox.png" width="500" alt="" title="colorbox" class="alignnone size-medium wp-image-3257"></p>
					<p>なにやら人気っぽいColorBox（<a href="http://www.xmarks.com/topic/lightbox?sid=ggeeyxbq&#038;product=xmarks&#038;featured=147983550&#038;xplat=SearchBoost001:C&#038;cid=serp.shmear.rating&#038;mid=g32b452s">Xmarks調べ</a>）。テーマが5つ用意されていて簡単に見た目を変えられます。スライドショーとかギャラリーっぽい機能も。</p>
					<table border="1" class="lftable">
					<tr>
					<th>ページ</th>
					<td><a href="http://colorpowered.com/colorbox/">アーカイブ</a><br /><a href="http://colorpowered.com/colorbox/core/example1/index.html">デモ1</a>・<a href="http://colorpowered.com/colorbox/core/example2/index.html">デモ2</a>・<a href="http://colorpowered.com/colorbox/core/example3/index.html">デモ3</a>・<a href="http://colorpowered.com/colorbox/core/example4/index.html">デモ4</a>・<a href="http://colorpowered.com/colorbox/core/example5/index.html">デモ5</a><br />（デモによってスタイルが違う）</td>
					</tr>
					<tr>
					<th>対応メディア</th>
					<td>画像</td>
					</tr>
					<tr>
					<th>ライセンス</th>
					<td>MITライセンス</td>
					</tr>
					<tr>
					<th>その他</th>
					<td>オプションが豊富</td>
					</tr>
					</table>
					<p>使うならfancyboxかColorBoxかな。。。おれおれLightboxを汎用的にして公開する手もあるけど・・・おれおれと言えば「<a href="http://5509.me/log/jdtlightbox">これからの新標準LightBox jDTLightBox.js</a>」何の役にも立たへんLightboxもあるで・・・</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=3243&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/some-lightbox-plugins/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skype 5.0 Beta for Macを最適な環境に変更するチャットスタイル</title>
		<link>http://5509.me/log/customizing-skype-5beta-for-mac</link>
		<comments>http://5509.me/log/customizing-skype-5beta-for-mac#comments</comments>
		<pubDate>Wed, 10 Nov 2010 04:58:55 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[Others]]></category>
		<category><![CDATA[Skype]]></category>
		<category><![CDATA[チャットスタイル]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3201</guid>
		<description><![CDATA[					
					Skype for Macの5.0beta(5.0 betaが見れない方はSkypeのブログから)が公開されてUIが新しくなりましたね。Macのインターフェースならでは？の気持よさがいいです。なんか [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2010/11/skype5_1.png" alt="Skype 5.0 Beta for Mac" title="" width="500" height="80" class="alignnone size-full wp-image-3227" /></p>
					<p><a href="http://www.skype.com/intl/en/get-skype/on-your-computer/macosx/beta/">Skype for Macの5.0beta</a>(5.0 betaが見れない方は<a href="http://blogs.skype.com/garage/2010/11/skype_50_beta_for_mac.html">Skypeのブログ</a>から)が公開されてUIが新しくなりましたね。Macのインターフェースならでは？の気持よさがいいです。なんかでも全体的にでかいねん。ほんで自分のアイコンでーへんの寂しいねん。</p>
					<h3>でかいねん</h3>
					<p><a href="http://5509.me/wp-content/uploads/2010/11/skype5default.png"><img src="http://5509.me/wp-content/uploads/2010/11/skype5default.png" alt="でかいやろ" width="480" class="alignnone size-full wp-image-3212" /></a></p>
					<p>全体的にでかいやろ・・・<br />
					<span id="more-3201"></span></p>
					<h3>そんなわけで</h3>
					<p><a href="http://www.miekd.com/">miekd</a>で配布されている素敵スタイル<a href="http://www.miekd.com/articles/presenting-skype-simple-skypechatstyle/">Simple.skypeChatStyle</a>をちょろちょろカスタマイズしたものを使っているのですが、作者の方に配布許可をもらいましたので、公開しておきます。Thanks to <a href="http://twitter.com/miekd">@miekd</a>!!!</p>
					<h3>ダウンロードとキャプチャ</h3>
					<p>ダウンロード : <a href="http://5509.me/data/SkypeSimple55.zip">Skype Simple 55</a></p>
					<p><a href="http://5509.me/wp-content/uploads/2010/11/skype5simple.png"><img src="http://5509.me/wp-content/uploads/2010/11/skype5simple.png" alt="Simple.skypeChatStyle edited" title="" width="480" class="alignnone size-full wp-image-3220" /></a></p>
					<p>すっきり！</p>
					<h3>チャットスタイルの変更方法</h3>
					<p>一応書いておきます。</p>
					<p><strong>/ユーザー/ライブラリ/Application Support/Skype/</strong></p>
					<p>に「ChatStyles」というディレクトリを作ってダウンロード解凍して出てくる「Skype Simple 55.SkypeChatStyle」を入れ、Skypeを再起動する。<br />
					「設定＞チャット＞形式のプルダウン」から「Skype Simple 55」を選択する。</p>
					<p>選択後新規で開いた会話ウィンドウにチャットスタイルが適用されます。</p>
					<h3>SkypeのチャットスタイルはHTML5+CSS3+JavaScriptで書かれている</h3>
					<p>全然知らなかったのですが、SkypeのチャットスタイルHTMLなんですねー。SkypeはWebkitベースっぽいです。ちなみにJSはjQueryが使われてました。。</p>
					<p>ということは誰でもチャットスタイルを作れるんじゃないですか！触ってて結構面白かったです。メンドイけど。興味ある方はチャットスタイルファイルのコンテキストメニューから<strong>「パッケージの内容を表示」</strong>してみてください <img src='http://5509.me/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
					<img src="http://5509.me/?ak_action=api_record_view&id=3201&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/customizing-skype-5beta-for-mac/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pocket WifiをUSB接続して給電しながらモデムとして使う(Mac)</title>
		<link>http://5509.me/log/using-pocketwifi-as-a-modem</link>
		<comments>http://5509.me/log/using-pocketwifi-as-a-modem#comments</comments>
		<pubDate>Mon, 08 Nov 2010 01:30:41 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[Gadget]]></category>
		<category><![CDATA[Pocket Wifi]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3163</guid>
		<description><![CDATA[					
					超いまさら感のあるPocket Wifiネタなんですけど、Pocket WifiをUSBで繋いで給電（充電じゃない）しながらモデムとして使う方法ってあんまり知られてないんですかね。
					※ 追 [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2010/11/12.jpg" alt="" title="1" width="500" height="250" class="alignnone size-full wp-image-3168" /></p>
					<p>超いまさら感のあるPocket Wifiネタなんですけど、Pocket Wifiを<strong>USBで繋いで給電（充電じゃない）しながらモデムとして使う方法</strong>ってあんまり知られてないんですかね。</p>
					<p><strong>※ 追記：設定しなくても繋がる人もいるようです。<br />
					何が原因なんでしょう？？？</strong></p>
					<p>確かにどこにも載ってない気もする・・・少なくとも僕の検索方法が悪いのか見当たらないし、知り合いも店員にそれは出来ません的なことを言われたとか言ってた。</p>
					<p>そんなわけで誰かの検索にひっかかるように記事にしておきます。簡単だよ！<br />
					この記事はE-mobileのPocket Wifiについて書いているので、Softbankのやつはちょっと違うと思います。（アカウントとかパスとか）<br />
					<span id="more-3163"></span></p>
					<h2>USIMカードの電話番号を確認する</h2>
					<p>超重要です。Pocket Wifiは電話できないんですけど、<strong>USIMカードには電話番号が書いてあります</strong>。あとで使うので用意しておきます。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/11/2.jpg" alt="" title="2" width="500" height="250" class="alignnone size-full wp-image-3175" /><br />
					USIMカードがついてたやつ</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/11/3.jpg" alt="" title="3" width="500" height="250" class="alignnone size-full wp-image-3176" /><br />
					電話番号が書いてある</p>
					<h2>ドライバをインストールする</h2>
					<p>たぶんこれは普通にインストールしてると思うんですけど、下の画像のやつですね。USBでつないだらSDカード認識できるようになるアレです。インストール済みの人はパスで。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/11/1.png" alt="" title="1" width="186" height="145" class="alignnone size-full wp-image-3173" /></p>
					<h2>ネットワークの設定</h2>
					<p>ドライバをインストールしたときに</p>
					<ul>
					<li>HUAWEIMobile-Pcui</li>
					<li>HUAWEI Mobile Connect</li>
					</ul>
					<p>の2つの項目がネットワークに追加されるのですが「<strong>HUAWEIMobile-Pcui</strong>」のほうを設定します。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/11/4.png" alt="" title="4" width="191" height="145" class="alignnone size-full wp-image-3178" /><br />
					電話マークがついてるほう</p>
					<p>選択すると右のペインに下のような画面が表示されるので、項目を埋めます。</p>
					<ul>
					<li>電話番号：<strong>さっき調べておいた番号（ハイフンなし）</strong></li>
					<li>アカウント名：<strong>em</strong></li>
					<li>パスワード：<strong>em</strong></li>
					</ul>
					<p>上記を入力したら、その下にある「接続」ボタンを押すだけです。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/11/5.jpg" alt="" title="5" width="414" height="175" class="alignnone size-full wp-image-3179" /></p>
					<p>エラーとか出ても気にせずキャンセルだかOKだかを押しておきます。接続できたらネットワークの項目が入れ替わって「HUAWEI Mobile Connect」が一番上にきてモデムとして使えるようになります。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/11/6.png" alt="" title="6" width="187" height="144" class="alignnone size-full wp-image-3181" /></p>
					<p>一度設定したら次回からはUSBでつなぐだけで勝手にネットワークにつながるので便利ですね！</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=3163&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/using-pocketwifi-as-a-modem/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>コピペで実装する「ユーザーに優しいドロップダウンメニュー」</title>
		<link>http://5509.me/log/dropdownmenu-with-delay</link>
		<comments>http://5509.me/log/dropdownmenu-with-delay#comments</comments>
		<pubDate>Mon, 08 Nov 2010 01:30:35 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3141</guid>
		<description><![CDATA[					
					ドロップダウンメニューが便利な場合もありますが、ドロップダウンしてるエリアからカーソルが離れた際の素っ気なさときたら・・・
					とりあえずサンプル2つ用意したので比較してみてください。
			 [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2010/11/dmd.png" alt="" title="dmd" width="330" height="186" class="alignnone size-full wp-image-3154" /></p>
					<p>ドロップダウンメニューが便利な場合もありますが、<em>ドロップダウンしてるエリアからカーソルが離れた際の素っ気なさ</em>ときたら・・・<br />
					とりあえずサンプル2つ用意したので比較してみてください。</p>
					<h3>比較用サンプル</h3>
					<p><a href="http://5509.me/sample/dropdownmenuwithdelay/index2.html">素っ気ないドロップダウンメニュー</a><br />
					<a href="http://5509.me/sample/dropdownmenuwithdelay/">優しいドロップダウンメニュー</a></p>
					<h3>ちょっとした気遣いで優しいUIに</h3>
					<p>彼女（彼）とバイバイしたあと見えなくなるまで見守ったりしませんか？名残惜しい的なのでもいいです。振り返ったとき既にいないとか寂しいじゃないですか。そういう気持ちって重要じゃないですか。</p>
					<p>UIにもそういう小さな優しさというか思いやりを持たせてあげましょう。普通のことですけどね。<strong>カーソルが離れてもすぐ消えずにちょっと待ってくれるドロップダウンメニュー</strong>を簡単に実装できるコードを用意したので、ちょっとした優しさを持ってコピペで使ってやってください。<br />
					<span id="more-3141"></span></p>
					<h2>こっからコード</h2>
					<h3>HTML</h3>
					<pre>&lt;ul id=&quot;nav&quot;&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Photo&lt;/a&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2008&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2007&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2006&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2005&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2004&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Archive&lt;/a&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2008&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2007&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2006&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2005&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;&#32771;&#12360;&#12427;&#12398;&#12513;&#12531;&#12489;&#12452;&lt;/a&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;#&quot;&gt;&#12513;&#12531;&#12489;&#12452;&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;#&quot;&gt;&#12513;&#12531;&#12489;&#12452;&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;#&quot;&gt;&#12513;&#12531;&#12489;&#12452;&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;&#32771;&#12360;&#12427;&#12398;&#12513;&#12531;&#12489;&#12452;&lt;/a&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;#&quot;&gt;&#12513;&#12531;&#12489;&#12452;&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;#&quot;&gt;&#12513;&#12531;&#12489;&#12452;&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Contact Me&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</pre>
					<h3>CSS</h3>
					<pre>ul#nav {
    margin: 2em 0 0 2em;
    float: left;
    border: solid #ccc 1px;
    border-right: none;
    height: 40px;
}

    ul#nav li {
        float: left;
        border-right: solid #ccc 1px;
        height: 40px;
        width: 120px;
        text-align: center;
        line-height: 40px;
    }
    ul#nav li.hover {
        background: #eee;
    }

        ul#nav li a {
            display: block;
            color: #252525;
            text-decoration: none;
        }

        ul#nav li ul {
            border: none;
            display: none;
            background: #666;
            overflow: hidden;
            opacity: .9;
            filter: alpha(opacity=90);
        }

            ul#nav li ul li {
                border: none;
            }
            ul#nav li ul li.hover {
                background: #777;
            }

                ul#nav li ul li a {
                    color: #efefef;
                }</pre>
					<h3>JavaScript</h3>
					<pre>jQuery(function($) {
    // Global menu
    $('#nav li').hover(function() {
        $(this).addClass('hover');
    }, function() {
        $(this).removeClass('hover');
    });

    var eachTimeout = [],
        target = $('#nav ul');

    target.each(function(i) {
        var $this = $(this);
        $this.parent().hover(function() {
            target.hide();
            for ( var i=0; i&lt;eachTimeout.length; i++ ) {
                clearTimeout(eachTimeout[i]);
            }
            $this.show();
        }, function() {
            eachTimeout[i] = setTimeout(function() {
                $this.hide();
            }, 300); // ここの300を大きくすると消えるまでの待ち時間が増える
        });
    });
});</pre>
					<img src="http://5509.me/?ak_action=api_record_view&id=3141&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/dropdownmenu-with-delay/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ドットコーダーセッション5 「ワイワイガヤガヤアクセシビリティ」</title>
		<link>http://5509.me/log/dotcoder5</link>
		<comments>http://5509.me/log/dotcoder5#comments</comments>
		<pubDate>Thu, 30 Sep 2010 03:41:20 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[dotcoder]]></category>
		<category><![CDATA[お知らせ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3085</guid>
		<description><![CDATA[					
					最初に言っておきます。「アクセシビリティ」と聞くとどうも固そうなイメージがある方が多いと思うのですが、ドットコーダーの基本方針はゆるふわやで・・・気軽にどぞー
					3月に始めたドットコーダー勉 [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://tweetvite.com/event/dotcoder_s5"><img src="http://5509.me/img/docoda5.png" alt="ワイワイガヤガヤアクセシビリティ"></a></p>
					<p><strong>最初に言っておきます。<br />「アクセシビリティ」と聞くとどうも固そうなイメージがある方が多いと思うのですが、ドットコーダーの基本方針はゆるふわやで・・・気軽にどぞー</strong></p>
					<p>3月に始めたドットコーダー勉強会も10月で5回目になりました。月替わりでテーマを変えていて、10月のテーマは「アクセシビリティ」です。</p>
					<p>今回もゲストをお呼びしてますが、セミナー形式だけでなく、<br />
					みんなでワイワイガヤガヤしながら アクセシビリティのことを考えてみましょう。 </p>
					<ul>
					<li>音声読み上げブラウザで読み上げるとどうなるの？</li>
					<li>動画はアクセシビリティ的にどうなの？</li>
					<li>alt属性の良い書き方って？</li>
					<li>JIS改訂ってあったけど何に気をつければいいの？</li>
					<li>そもそもアクセシビリティって？</li>
					</ul>
					<p>アクセシビリティは全然わからない、なんか対応した方がいいような気がするけど、どうすればいいかわからない、そんなコーダー・デザイナー・ディレクターなど、どんな方でも気軽にご参加ください。 </p>
					<h3>日時</h3>
					<p>2010/10/16 15:00～18:00</p>
					<h3>場所</h3>
					<p>大阪研修センター<br />
					<a href="http://maps.google.co.jp/maps?hl=ja&#038;q=%E5%A4%A7%E9%98%AA%E5%B8%82%E6%B7%80%E5%B7%9D%E5%8C%BA%E5%8D%81%E4%B8%89%E6%9C%AC%E7%94%BA1-12-15&#038;ie=UTF8&#038;hq=&#038;hnear=%E5%A4%A7%E9%98%AA%E5%BA%9C%E5%A4%A7%E9%98%AA%E5%B8%82%E6%B7%80%E5%B7%9D%E5%8C%BA%E5%8D%81%E4%B8%89%E6%9C%AC%E7%94%BA%EF%BC%91%E4%B8%81%E7%9B%AE%EF%BC%91%EF%BC%92&#038;gl=jp&#038;ei=bgakTM-QA4imcJPHnK0I&#038;ved=0CBYQ8gEwAA&#038;z=14&#038;brcurrent=3,0x6000e5cf95fe29f3:0x9b972eceb3c5dc4d,0">大阪市淀川区十三本町1-12-15 ドルチェヴィータファースト3</a></p>
					<h3>概要 </h3>
					<p>ショートプレゼン、質疑応答・ディスカッション</p>
					<h3>対象</h3>
					<p>フロント関連の方、ディレクター、デザイナー、むしろ興味ある方</p>
					<h3>出演者 </h3>
					<ul>
					<li>アルファサード 持田 徹 さん（<a href="http://twitter.com/motchie">@motchie</a>） </li>
					<li>NPO法人しゃらく 小嶋 新 さん（<a href="http://twitter.com/aratakojima">@aratakojima</a>） </li>
					<li>みるく さん（<a href="http://twitter.com/milk54">@milk54</a>） <br />
					「<strong>優しく　楽しく　幸せに　アクセシビリティ</strong>」 <br />
					アクセシビリティをもっと身近に感じていただけるよう、音声読上げのデモ等を体感していただきます。そして、「これだけは実践しよう！」という基本中の基本をお話します。 </li>
					</ul>
					<h3>参加費</h3>
					<p>1000円</p>
					<h3>参加表明</h3>
					<p><a href="http://tweetvite.com/event/dotcoder_s5">Tweetviteからどうぞー</a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=3085&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/dotcoder5/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Analyticsでサブドメインのトラッキングを行う</title>
		<link>http://5509.me/log/tracking-subdomain-by-google-analytics</link>
		<comments>http://5509.me/log/tracking-subdomain-by-google-analytics#comments</comments>
		<pubDate>Thu, 09 Sep 2010 08:21:16 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[memo]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3051</guid>
		<description><![CDATA[					
					サブドメインのトラッキングなんて基本の基本で、いまさらなんですけど、いつも忘れるもんで…記事にすれば忘れないんじゃないかとかそういう感じです。
					埋め込みコードの修正
					
					 [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2010/09/ga.png" alt="" title="google analytics" width="231" height="54" class="alignnone size-full wp-image-3055" /></p>
					<p>サブドメインのトラッキングなんて基本の基本で、いまさらなんですけど、いつも忘れるもんで…記事にすれば忘れないんじゃないかとかそういう感じです。</p>
					<h2>埋め込みコードの修正</h2>
					<p><img src="http://5509.me/wp-content/uploads/2010/09/ga2.png" alt="" title="ga2" width="254" height="210" class="alignnone size-full wp-image-3057" /></p>
					<p>コードの発行のときに「複数のサブドメインがある １ つのドメイン」を選択するか下記のコメント部分を追加します。</p>
					<pre>&lt;script type=&quot;text/javascript&quot;&gt;
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXXXX-X']);
  _gaq.push(['_setDomainName', '.example.com']); // これを追加
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
&lt;/script&gt;</pre>
					<h2>フィルタの作成と適用</h2>
					<p>ふつうは新しくプロファイルを作ると思うので、新しいプロファイルを同じドメインで作成して下図のようなフィルタを作成して適用します。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/09/gasubdomain.png" alt="サブドメインフィルタの設定" title="gasubdomain" width="491" height="369" class="alignnone size-full wp-image-3053" /></p>
					<p>これでもう忘れることはないでしょう。。きっと。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=3051&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/tracking-subdomain-by-google-analytics/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQueryでbackgroundPositionを取得するときの注意</title>
		<link>http://5509.me/log/get-css-background-position-with-jquer</link>
		<comments>http://5509.me/log/get-css-background-position-with-jquer#comments</comments>
		<pubDate>Mon, 23 Aug 2010 07:41:08 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[memo]]></category>

		<guid isPermaLink="false">http://5509.me/?p=3040</guid>
		<description><![CDATA[					$(&#8216;hoge&#8217;).css(&#8216;backgroundPosition&#8217;)だとIEで値が取れないんですね、不便か。
					XとYを別々に取得したい
					値の [...]]]></description>
			<content:encoded><![CDATA[					<p><strong>$(&#8216;hoge&#8217;).css(&#8216;backgroundPosition&#8217;)</strong>だとIEで値が取れないんですね、不便か。</p>
					<h2>XとYを別々に取得したい</h2>
					<h3>値の検証</h3>
					<pre>var bgPosDef = $('#hoge').css('backgroundPosition');</pre>
<h4>IE8まで（9は未検証）</h4>
<pre>console: null（空）</pre>
					<h4>Firefox, Chrome, Safari, Operaなど</h4>
					<pre>console: 50px 50px</pre>
<p>IEは返されるデータがない！こういうところがみんなが嫌いな所以ですかね。IEはbackgroundPositionではなくて、<strong>backgroundPositionXのようにXかYを指定</strong>して個別に引き抜きます。</p>
<pre>var bgPosX = $('#hoge').css('backgroundPositionX');
var bgPosY = $('#hoge').css('backgroundPositionY');</pre>
					<h3>XとYを取得する</h3>
					<p>計算を行う場合は、数値にしておく必要があるのでついでに。</p>
					<pre>var bgPos = bgPosDef.split(' '), // 半スペで分ける
  // bgPos[0] == X, bgPos[1] == Y
  bgPosX = 0,
  bgPosY = 0;
bgPosX = bgPos[0].replace('px', '');
bgPosY = bgPos[1].replace('px', '');
// pxを削除する</pre>
					<p>IEはpxを削るだけです。</p>
					<pre>bgPosX = $('#hoge').css('backgroundPositionX').replace('px', '');
bgPosY = $('#hoge').css('backgroundPositionY').replace('px', '');</pre>
					<h3>条件分岐で分ける</h3>
					<pre>var bgPosDef = $('#hoge').css('backgroundPosition'),
&nbsp;&nbsp;bgPosX = bgPosY = 0;
if ( bgPosDef ) { // backgroundPositionの値が取れた場合
&nbsp;&nbsp;var bgPos = bgPosDef.split(' '),
&nbsp;&nbsp;bgPosX = bgPos[0].replace('px', '');
&nbsp;&nbsp;bgPosY = bgPos[1].replace('px', '');
} else { // 取れなかった場合
&nbsp;&nbsp;bgPosX = $('#hoge').css('backgroundPositionX').replace('px', '');
&nbsp;&nbsp;bgPosY = $('#hoge').css('backgroundPositionY').replace('px', '');
}</pre>
					<p>これくらいはjQueryで対応してくれてもいいような気がしないでもない。。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=3040&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/get-css-background-position-with-jquer/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Twitterの@Anywhereを使ってつぶやけるだけのクライアントを作る</title>
		<link>http://5509.me/log/creating-twitter-client-with-anywhere</link>
		<comments>http://5509.me/log/creating-twitter-client-with-anywhere#comments</comments>
		<pubDate>Thu, 19 Aug 2010 01:20:33 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[tuts]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://5509.me/?p=2998</guid>
		<description><![CDATA[					
					どんだけ話題に乗り遅れてるねんっていう話なんですけど、いまさら@Anywhereを使ってみました。
					つぶやけるだけのTwitterクライアント &#8211; Only tweet
			 [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://onlytweet.5509.me/"><img src="http://5509.me/wp-content/uploads/2010/08/onlytweet.png" alt="" title="onlytweet" width="450" class="alignnone size-full wp-image-3001" /></a></p>
					<p>どんだけ話題に乗り遅れてるねんっていう話なんですけど、いまさら<a href="http://dev.twitter.com/anywhere">@Anywhere</a>を使ってみました。</p>
					<p><a href="http://onlytweet.5509.me/">つぶやけるだけのTwitterクライアント &#8211; Only tweet</a></p>
					<p>きっかけは、つぶやけるだけの俺俺クライアントがほしくて、<a href="http://rewish.org/javascript/twitter_anywhere">Twitterの機能をJSで簡単に導入できる「@Anywhere」の使い方メモ &#8211; Rewish</a>でなんとなく出来ることは読んでいた@Anywhereで十分やんじゃあつくれるな、という理由です。</p>
					<p>はっきり言ってChrome(Windowsだけ)のアプリケーション登録がないとまったく使えないしょうもないやつです。でもアプリケーション登録すればキャプチャみたいに使えます。結構便利。</p>
					<p>JavaScriptだけで作れるので、JavaScriptしかわからないけどちょっとやってみたい人にはちょうどいい感じかもです。<br />
					<span id="more-2998"></span></p>
					<h2>開発環境を整える</h2>
					<p>開発と言っても@AnywhereはJavaScriptだけで使えるので、用意するものは、テキストエディタとTwitterのAPIキーだけです。</p>
					<p>APIキーの発行と、読み込むソースまでは、Rewishの<a href="http://rewish.org/javascript/twitter_anywhere"><br />
					Twitterの機能をJSで簡単に導入できる「@Anywhere」の使い方メモ &#8211; Rewish</a>を見てもらえば分かると思いますし、<del datetime="2010-08-19T01:22:47+00:00">面倒くさいので</del>省略します。</p>
					<p>アクセス権限については、<a href="http://dev.twitter.com/apps">http://dev.twitter.com/apps</a>で変更できるようになってるので、Read &#038; Writeにしておきます。</p>
					<h2>@Anywhereの基礎知識</h2>
					<pre>twttr.anywhere(function(twitter) {
&nbsp;&nbsp;// 引数のtwitterがデータを持っているため
&nbsp;&nbsp;// ここで@Anywhereの機能が使える
});</pre>
					<p>@Anywhereの機能を使いたいときは上記のように<strong>twttr.anywhere(function(twitter){ });</strong>の中に記述します。</p>
					<h2>サインインとサインアウトなど機能の実装</h2>
					<h3>サインイン</h3>
					<pre>twitter.signIn()</pre>
<p>を使うかRewishでも紹介されている</p>
<pre>connectButton()</pre>
					<p>を使います。connectButtonは以下のように引数でオプションを指定することができます。</p>
					<pre>twitter("#hoge").connectButton({
&nbsp;&nbsp;authComplete: function() {
&nbsp;&nbsp;&nbsp;&nbsp;// 認証が完了した後の処理
&nbsp;&nbsp;},
&nbsp;&nbsp;signOut: function() {
&nbsp;&nbsp;&nbsp;&nbsp;// サインアウトした後の処理
&nbsp;&nbsp;}
});</pre>
					<p>が、今回はtwitter.signIn()を利用しました。一番簡単な方法は指定した要素のonclickで実行するだけです。超簡単ですね。</p>
					<pre>document.getElementById("signIn").onclick = function() {
&nbsp;&nbsp;twitter.signIn();
&nbsp;&nbsp;return false;
}</pre>
					<p>signIn()を実行すると、TwitterのOAuthウィンドウが開いてそちらで認証後に元のアプリケーションに返されます。返ってきたときに何か実行したい場合は、authCompleteというトリガーを使います。</p>
					<p>↓のようにjQueryみたいにトリガーをbindすることができます。トリガーにbindするfunctionは2つ引数を持っていて、イベントハンドラのeと、@Anywhereから渡されるuserです。userには、サインインしたユーザーの情報が入っているので、2つ目の引数は必ず受け取りましょう。</p>
					<pre>twitter.bind("authComplete", function(e, user) {
&nbsp;&nbsp;// hogehoge
});</pre>
					<p>Only Tweetでは、サインイン後に</p>
					<ul>
					<li>ユーザー名を表示</li>
					<li>ユーザー名の後ろにサインアウトリンクを表示</li>
					<li>使い方をTweetボックスに置き換え</li>
					</ul>
					<p>というように置き換えています。</p>
					<h4>受け取ったuserの使い方</h4>
					<p>user.data(プロパティ)でscreen_nameやアイコン画像などを表示できます。</p>
					<pre>sign.innerHTML = [
&nbsp;&nbsp;'&lt;p&gt;Logged in as : &lt;a href="http://twitter.com/' + user.data('screen_name') + '"&gt;',
&nbsp;&nbsp;&nbsp;&nbsp;user.data('screen_name'),
&nbsp;&nbsp;'&lt;/a&gt; (&lt;a href="javascript:void(0)" onclick="twttr.anywhere.signOut();"&gt;Sign out&lt;/a&gt;)&lt;/p&gt;',
].join('');</pre>
					<h3>サインアウト</h3>
					<p>サインアウトアクション自体は任意の要素でtwttr.anywhere.signOut()を実行するだけです。HTMLに入れる場合は、アンカーのonclickにでも入れておけばいいと思います。</p>
					<pre>&lt;a href="javascript:void(0)" onclick="twttr.anywhere.signOut();"&gt;Sign out&lt;/a&gt;</pre>
<p>サインアウト後に何か実行したいときはautoCompleteと同じように、signOutというトリガーにfunctionをbindします。</p>
<pre>twitter.bind("signOut", function(e) {
&nbsp;&nbsp;// hogehoge
});</pre>
					<h3>アクセス時のサインイン判定</h3>
					<p>アプリケーションにアクセスしたときに、すでにサインインしているかどうかで表示する内容を変えたい場合</p>
					<pre>twitter.isConnected()</pre>
<p>を利用します。既にサインインしていればtrue、そうでない場合はfalseが返されます。</p>
<pre>if ( twitter.isConnected() ) {
&nbsp;&nbsp;// サインインしている場合
} else {
&nbsp;&nbsp;// サインインしていない場合
}</pre>
					<h3>Tweetボックス（つぶやくやつ）の表示</h3>
					<p>サインインしているとき、指定したIDの要素にTweetボックスを表示します。これには文字数カウントやらつぶやくボタンやら含まれているので、表示すればそのままつぶやくことができます。ただしこのTweetボックスはiframeで書き出されるので動作の微調整とかは行えません。むーん不便。。</p>
					<pre>twitter("hoge").tweetBox({
&nbsp;&nbsp;label: /* いまなにしてる？のところ */,
&nbsp;&nbsp;defaultContent: /* 予め表示しておく文言 */,
&nbsp;&nbsp;onTweet: function(e) { // Tweet後のコールバック
&nbsp;&nbsp;&nbsp;&nbsp; // hogeking
&nbsp;&nbsp;}
});</pre>
					<h2>つぶやけるだけのTwitterクライアントの実装</h2>
					<p>サインイン前<br />
					<img src="http://5509.me/wp-content/uploads/2010/08/onlytweet3-e1282179789539.png" alt="" title="onlytweet3" width="450" height="271" class="alignnone size-full wp-image-3003" /></p>
					<p>サインイン後<br />
					<img src="http://5509.me/wp-content/uploads/2010/08/onlytweet.png" alt="" title="onlytweet" width="450" class="alignnone size-full wp-image-3001" /></p>
					<p>CSSは置いておくとして、用意したHTMLはこんなのです。</p>
					<pre>&lt;div id=&quot;wrap&quot;&gt;
&nbsp;&nbsp;&lt;div id=&quot;header&quot;&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;h1&gt;&lt;a href=&quot;./&quot;&gt;Only tweet&lt;/a&gt;&lt;/h1&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;p id=&quot;sign&quot;&gt;&lt;/p&gt;
&nbsp;&nbsp;&lt;/div&gt;
&nbsp;&nbsp;&lt;p class=&quot;desc&quot;&gt;つぶやけるだけのTwitterクライアント&lt;/p&gt;
&nbsp;&nbsp;&lt;div id=&quot;tweetBox&quot;&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;ol id=&quot;step&quot;&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;em&gt;HOP&lt;/em&gt;: Connect with Twitterボタンを押す&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;em&gt;STEP&lt;/em&gt;: OAuth認証画面でconnectを押す&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;em&gt;JUMP&lt;/em&gt;: つぶやく&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ol&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;p id=&quot;attention&quot;&gt;Tweeted&lt;/p&gt;
&nbsp;&nbsp;&lt;/div&gt;

&nbsp;&nbsp;&lt;div id=&quot;footer&quot;&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;small&gt;Powered by &lt;a href=&quot;http://twitter.com/&quot;&gt;Twitter&lt;/a&gt;. | &lt;a href=&quot;./about.html&quot;&gt;about&lt;/a&gt; | &lt;a href=&quot;http://twitter.com/5509&quot;&gt;5509&lt;/a&gt;&lt;/small&gt;
&nbsp;&nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;loadingBg&quot;&gt;&lt;/div&gt;
&lt;div id=&quot;loading&quot;&gt;&lt;p&gt;Connecting @anywhere...&lt;/p&gt;&lt;/div&gt;</pre>
					<p>なんかソース的に微妙なところもあると思いますけど、俺俺クライアントなので放っておきましょう。JSで追加すればいいやんなところも書いてあったりしますし。</p>
					<h3>仕様を決める</h3>
					<ul>
					<li>authCompleteでp#signをSigned inに書き換え、div#tweetBoxもつぶやけるように書き換え</li>
					<li>アクセス時にサインインしていなければ、p#signはサインインボタンを表示</li>
					<li>アクセス時にサインインしていれば、authCompleteと同じ状態にする</li>
					<li>待ち時間が発生するような箇所ではローディングのくるくるを表示</li>
					<li>Tweetが成功したら、成功したよ！的な文言を表示する</li>
					</ul>
					<h3>使いそうなものを変数に、機能を関数にしておく</h3>
					<pre>var d = document;
var $d = function(id) { return d.getElementById(id); };
var sign = $d("sign");
var tweetBox = $d("tweetBox");
var step = $d("step");
var loadingBg = $d("loadingBg");
var loading = $d("loading");
var attention = $d("attention");</pre>
					<p>だいたい2回以上使うようなものは変数にいれときます。使ってなくても気にしない。</p>
					<pre>// ローディングの表示
function showLoading() {
&nbsp;&nbsp;loadingBg.style.display = "block";
&nbsp;&nbsp;loading.style.display = "block";
}
// ローディングの非表示
function hideLoading() {
&nbsp;&nbsp;loadingBg.style.display = "none";
&nbsp;&nbsp;loading.style.display = "none";
}
// サインインの表示、サインインクリック時は一旦ローディングを表示する
function addConnect(T) {
&nbsp;&nbsp;sign.innerHTML = &quot;&lt;a href='javascript:void(0);' id='signIn'&gt;&lt;img src='img/connect.gif' alt='Connect with Twitter'&gt;&lt;/a&gt;&quot;;
&nbsp;&nbsp;d.getElementById(&quot;signIn&quot;).onclick = function() {
&nbsp;&nbsp;&nbsp;&nbsp;showLoading();
&nbsp;&nbsp;&nbsp;&nbsp;T.signIn();
&nbsp;&nbsp;&nbsp;&nbsp;return false;
&nbsp;&nbsp;}
&nbsp;&nbsp;hideLoading();
}</pre>
					<p>やっぱり2回以上使いそうなものはfunctionにしておきます。使ってなくても気にならない。</p>
					<h3>@Anywhereを利用して実装する</h3>
					<pre>twttr.anywhere(function(twitter) {
&nbsp;&nbsp;// 基本的に処理はここに書く
});</pre>
					<p>サインイン時にHTMLを入れ替えるfunctionを定義しておく。</p>
					<pre>var addHTML = function(User) {
&nbsp;&nbsp;sign.innerHTML = [
&nbsp;&nbsp;&nbsp;&nbsp;'&lt;p&gt;Logged in as : &lt;a href=&quot;http://twitter.com/' + User.data('screen_name') + '&quot;&gt;',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User.data('screen_name'),
&nbsp;&nbsp;&nbsp;&nbsp;'&lt;/a&gt; (&lt;a href=&quot;javascript:void(0)&quot; onclick=&quot;twttr.anywhere.signOut();&quot;&gt;Sign out&lt;/a&gt;)&lt;/p&gt;',
&nbsp;&nbsp;].join('');
&nbsp;&nbsp;
&nbsp;&nbsp;twitter("#tweetBox").tweetBox({
&nbsp;&nbsp;&nbsp;&nbsp;label: "Tweet, tweet, tweet, tweet and tweet",
&nbsp;&nbsp;&nbsp;&nbsp;defaultContent: "",
&nbsp;&nbsp;&nbsp;&nbsp;onTweet: function(e) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attention.style.display = "block";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setTimeout(function() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attention.style.display = "none";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}, 2000);
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;});
&nbsp;&nbsp;hideLoading();
}</pre>
					<p>アクセスしたときにサインインしているか、いないかで行う処理を変える</p>
					<pre>if ( !twitter.isConnected() ) {
&nbsp;&nbsp;// サインインしていない場合は、addConnectでサインインリンクを表示
&nbsp;&nbsp;addConnect(twitter);
} else {
&nbsp;&nbsp;// サインインしている場合はstepを非表示にして、tweetBoxを表示する
&nbsp;&nbsp;var User = twitter.currentUser;
&nbsp;&nbsp;step.style.display = "none";
&nbsp;&nbsp;addHTML(User);
&nbsp;&nbsp;hideLoading();
}</pre>
					<p>最後にauthCompleteとsignOut時にコールバックをbindする。</p>
					<pre>twitter.bind("authComplete", function(e, user) {
&nbsp;&nbsp;// ステップを非表示にしてtweetBoxを表示後ローディングを隠す
&nbsp;&nbsp;step.style.display = "none";
&nbsp;&nbsp;addHTML(user);
&nbsp;&nbsp;hideLoading();
});
twitter.bind("signOut", function(e) {
&nbsp;&nbsp;// サインアウトが完了するまでローディングを表示する
&nbsp;&nbsp;// #signを空にして、tweetBoxを削除して、addConnectを実行する
&nbsp;&nbsp;showLoading();
&nbsp;&nbsp;sign.innerHTML = "";
&nbsp;&nbsp;tweetBox.removeChild(tweetBox.getElementsByTagName("iframe")[0]);
&nbsp;&nbsp;addConnect(twitter);
&nbsp;&nbsp;step.style.display = "block";
});</pre>
					<h2>完成ソースコード</h2>
					<p>ちなみにJavaScriptは全て&lt;/body&gt;直前に書いてるので、window.onload的なやつは必要ないです。そのまま実行しましょう。</p>
					<pre>&lt;script src=&quot;http://platform.twitter.com/anywhere.js?id=r3awJe8TS1nZhH4hUxtk4w&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;//&lt;![CDATA[
var d = document;
var $d = function(id) { return d.getElementById(id); };
var sign = $d(&quot;sign&quot;);
var tweetBox = $d(&quot;tweetBox&quot;);
var step = $d(&quot;step&quot;);
var loadingBg = $d(&quot;loadingBg&quot;);
var loading = $d(&quot;loading&quot;);
var attention = $d(&quot;attention&quot;);

function showLoading() {
&nbsp;&nbsp;loadingBg.style.display = &quot;block&quot;;
&nbsp;&nbsp;loading.style.display = &quot;block&quot;;
}
function hideLoading() {
&nbsp;&nbsp;loadingBg.style.display = &quot;none&quot;;
&nbsp;&nbsp;loading.style.display = &quot;none&quot;;
}
function addConnect(T) {
&nbsp;&nbsp;sign.innerHTML = &quot;&lt;a href='javascript:void(0);' id='signIn'&gt;&lt;img src='img/connect.gif' alt='Connect with Twitter'&gt;&lt;/a&gt;&quot;;
&nbsp;&nbsp;d.getElementById(&quot;signIn&quot;).onclick = function() {
&nbsp;&nbsp;&nbsp;&nbsp;showLoading();
&nbsp;&nbsp;&nbsp;&nbsp;T.signIn();
&nbsp;&nbsp;&nbsp;&nbsp;return false;
&nbsp;&nbsp;}
&nbsp;&nbsp;hideLoading();
}
twttr.anywhere(function(twitter) {
&nbsp;&nbsp;//addConnect(twitter);
&nbsp;&nbsp;var addHTML = function(User) {
&nbsp;&nbsp;&nbsp;&nbsp;sign.innerHTML = [
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&lt;p&gt;Logged in as : &lt;a href=&quot;http://twitter.com/' + User.data('screen_name') + '&quot;&gt;',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User.data('screen_name'),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&lt;/a&gt; (&lt;a href=&quot;javascript:void(0)&quot; onclick=&quot;twttr.anywhere.signOut();&quot;&gt;Sign out&lt;/a&gt;)&lt;/p&gt;',
&nbsp;&nbsp;&nbsp;&nbsp;].join('');
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;twitter(&quot;#tweetBox&quot;).tweetBox({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label: &quot;Tweet, tweet, tweet, tweet and tweet&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;defaultContent: &quot;&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onTweet: function(e) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attention.style.display = &quot;block&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setTimeout(function() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attention.style.display = &quot;none&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}, 2000);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;});
&nbsp;&nbsp;&nbsp;&nbsp;hideLoading();
&nbsp;&nbsp;}
&nbsp;&nbsp;if ( !twitter.isConnected() ) {
&nbsp;&nbsp;&nbsp;&nbsp;addConnect(twitter);
&nbsp;&nbsp;} else {
&nbsp;&nbsp;&nbsp;&nbsp;var User = twitter.currentUser;
&nbsp;&nbsp;&nbsp;&nbsp;step.style.display = &quot;none&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;addHTML(User);
&nbsp;&nbsp;&nbsp;&nbsp;hideLoading();
&nbsp;&nbsp;}
&nbsp;&nbsp;twitter.bind(&quot;authComplete&quot;, function(e, user) {
&nbsp;&nbsp;&nbsp;&nbsp;step.style.display = &quot;none&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;addHTML(user);
&nbsp;&nbsp;&nbsp;&nbsp;hideLoading();
&nbsp;&nbsp;});
&nbsp;&nbsp;twitter.bind(&quot;signOut&quot;, function(e) {
&nbsp;&nbsp;&nbsp;&nbsp;showLoading();
&nbsp;&nbsp;&nbsp;&nbsp;sign.innerHTML = &quot;&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;tweetBox.removeChild(tweetBox.getElementsByTagName(&quot;iframe&quot;)[0]);
&nbsp;&nbsp;&nbsp;&nbsp;addConnect(twitter);
&nbsp;&nbsp;&nbsp;&nbsp;step.style.display = &quot;block&quot;;
&nbsp;&nbsp;});
});
//]]&gt;&lt;/script&gt;</pre>
					<p><a href="http://onlytweet.5509.me/">つぶやけるだけのTwitterクライアント &#8211; Only tweet</a></p>
					<p>あとはTwitter APIのJSONPからscreen_nameでTLとか取得すればなんとなくTwitterっぽいのもできるので、興味がある人はぜひ。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2998&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/creating-twitter-client-with-anywhere/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>今までに公開したjQueryプラグイン</title>
		<link>http://5509.me/log/jquery-plugins-have-been-published</link>
		<comments>http://5509.me/log/jquery-plugins-have-been-published#comments</comments>
		<pubDate>Thu, 12 Aug 2010 04:48:41 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[memo]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://5509.me/?p=2945</guid>
		<description><![CDATA[					
					はじめに、この記事は役に立つリンク集ではないです。
					ブログを初めて2年ちょっとが過ぎ、半年くらいやるやる言ってやらなかったexValidationもようやく公開できたのもあって、自分の中で [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2010/08/jquery.png" alt="" title="jquery" width="400" height="150" class="alignnone size-full wp-image-2986" /></p>
					<p>はじめに、この記事は役に立つリンク集ではないです。</p>
					<p>ブログを初めて2年ちょっとが過ぎ、半年くらいやるやる言ってやらなかったexValidationもようやく公開できたのもあって、自分の中で一段落したので、今まで公開したプラグインの振り返り等も兼ねて書きました。</p>
					<p>そもそもは誰かの役に立てばいいなと思って始めたブログなので（ほとんど役に立たないものだと思いますけど）もしかするともしかしてどこかで誰かの役に立てるものもあるかもしれません。</p>
					<p>ところで最初のプラグインを公開したときは、（JavaScript的な意味で）それはもう何も知りませんでした。そんな感じで今でも恥ずかしいコードなんですけど、最初の頃はもっと恥ずかしいコードなんですね。だから見ないで…<br />
					<span id="more-2945"></span></p>
					<h2>いままで公開したjQueryぷるぎんたち</h2>
					<h3><a href="http://5509.me/log/datesupport">プルダウンで日付を入力(選択)するイライラを解消するDateSupport.js</a></h3>
					<p><img src="http://5509.me/wp-content/uploads/2010/08/datesupport.png" alt="" title="datesupport" width="400" height="150" class="alignnone size-full wp-image-2965" /></p>
					<p><a href="http://5509.me/sample/dateSupport/index.html">サンプル</a></p>
					<p>この頃は些細な生年月日の日付選択にもイライラしてました。。そんなことはさておいて、ただのしがないコーダーだったこの頃の僕にとってjQueryの存在はかなり大きかったです。</p>
					<p>JavaScriptというよりプログラミングの基礎知識も何もなしに、とりあえずやってみよう的な感じで始めて最初にできたプラグインがこのDateSupportでした。記念すべき（？）最初のプラグインなのにまったく懐かしくないのはなぜだろう…</p>
					<h3><a href="http://5509.me/log/prefsupport">プルダウンで都道府県などを入力(選択)するイライラを解消するPrefSupport.js</a></h3>
					<p><img src="http://5509.me/wp-content/uploads/2010/08/prefsupport.png" alt="" title="prefsupport" width="400" height="150" class="alignnone size-full wp-image-2967" /></p>
					<p><a href="http://5509.me/sample/prefSupport/index.html">サンプル</a></p>
					<p>DateSupportでHTMLを取得してDOMを操る技術（？）を身につけて（？）調子に乗った（！）のか、あの鬱陶しい都道府県のプルダウンも展開しました。</p>
					<p>今思えばどうしてタイトルに「jQuery」「プラグイン」の2つが入っていないのか。。これもやっぱり懐かしく思えないのはなぜ…</p>
					<h3><a href="http://5509.me/log/realtimeformvalidation">リアルタイムフォームバリデーション jQuery.validation.js</a></h3>
					<p><img src="http://5509.me/wp-content/uploads/2010/08/jqueryvalidation.png" alt="" title="jqueryvalidation" width="400" height="150" class="alignnone size-full wp-image-2969" /></p>
					<p><a href="http://5509.me/sample/validation/">サンプル</a></p>
					<p><span style="display: none">確か国産のバリデーションプラグインがなかった、という理由で作ったjquery.validation.jsですが、正直実装方法が全く分からず、正規表現やcallback、書き方などその他もろもろ色々勉強になったやつですこいつ。最初に叩きで書いたバリデーションエンジンを<a href="http://twitter.com/akkun_choi">@akkun_choi</a>に書き直してもらって、今でも基盤として使ってます。書き直してもらったコードは当時全く意味が分かりませんでした。ありがとう…</span>このプラグインは利用してくれた方のコメント（要望）を元に、徐々にバージョンアップして最終的に色んなバリデーションを行えるようになりました。最終バージョンでは開発当初は絶対書けなかったようなことまで書けるようになってました。</p>
					<p>このプラグインは人生を少なからず変えた重要なやつかもしれないです。</p>
					<h3><a href="http://5509.me/log/jqueryselectable">selectボックスをシンプルなプルダウンに拡張するjQselectable(jQuery.selectable.js)</a></h3>
					<p><img src="http://5509.me/wp-content/uploads/2010/08/selectable.png" alt="" title="selectable" width="400" height="150" class="alignnone size-full wp-image-2970" /></p>
					<p><a href="http://jqselectable.googlecode.com/svn/trunk/index.html">サンプル</a></p>
					<p>何ヶ月か前に作ったDateSupportとPrefSupportを元に作りなおしたのがこのselectableでした。今は書き直して色々仕様も変わったりしていますが、公開当初はそれはもう色々ひどかったような気がします。</p>
					<p>個人的には最高のユーザー体験じゃろ、って思ってるんですけどね。どうなんでしょう。</p>
					<h3><a href="http://5509.me/log/jqueryslidescrolljs">スライドスクロールページ内リンク jQuery.slideScroll.js</a></h3>
					<p><a href="http://5509.me/sample/slidescroll/">サンプル</a></p>
					<p>JavaScriptを始めたきっかけはするんするんスクロールだったので、ちゃんと内容を理解してこれを書けたっていうのはなんだか前へ進めた気がしてうれしかったですね。</p>
					<h3><a href="http://5509.me/log/page-scrolling-with-jqueryeasing">ひと味違ったページ内スクロールをjQuery Easingプラグインで実装する jQuery.easing.scroll.js</a></h3>
					<p><a href="http://5509.me/sample/easingScroll/">サンプル</a></p>
					<p>せっかくするするスクロールを書いたのに、jQueryを使うと数行でもっとすごい動きを実装できるといういい例でした。easing使ったほうがきれいにスクロールするんです。これは使わなくていいので、easingを使いましょうよ。</p>
					<h3><a href="http://5509.me/log/preview_default_url_shorten_by_bitly">bit.lyで短縮された元のURLをプレビューする jQueryプラグイン</a></h3>
					<p><img src="http://5509.me/wp-content/uploads/2009/05/prebitly.gif"></p>
					<p><a href="http://5509.me/sample/prebitly/">サンプル</a></p>
					<p>思い入れが全然ないなこれ…</p>
					<h3><a href="http://5509.me/log/tangohokanjs">入力補助でユーザーの負担を減らそう 予約語を表示するtangoHokan.js</a></h3>
					<p><img src="http://5509.me/wp-content/uploads/2010/08/tangohokan.png" alt="" title="tangohokan" width="399" height="150" class="alignnone size-full wp-image-2973" /></p>
					<p><a href="http://5509.me/sample/tangohokan/">サンプル</a></p>
					<p>たしかこの辺は管理画面を使いやすくしたくて作ってました。</p>
					<h3><a href="http://5509.me/log/editableselect">セレクトボックスに新しいオプションを追加していけるスクリプト</a></h3>
					<p><img src="http://5509.me/wp-content/uploads/2010/08/editable.png" alt="" title="editable" width="400" height="150" class="alignnone size-full wp-image-2974" /></p>
					<p><a href="http://5509.me/sample/editableselect/">サンプル</a></p>
					<p>なんかちょっと斬新なことがしたくて、作ってみたものの使いどころはまったくありませんでした。一番微妙なやつですねこいつは。</p>
					<h3><a href="http://5509.me/log/hintmask">パスワード入力欄の最後の文字列をヒントとして表示するjQueryプラグイン</a></h3>
					<p><img src="http://5509.me/wp-content/uploads/2010/08/hint.png" alt="" title="hint" width="401" height="151" class="alignnone size-full wp-image-2975" /></p>
					<p><a href="http://5509.me/sample/hintmask/">サンプル</a><br />
					iPhoneのUIみたいなのが作りたくて、でもロジックが分からなくて逃げたらこういう形になりました。公開したら、まさにiPhoneのやつみたいなのを海外で公開した人がいて、ロジックみたら僕には無理やったなっていう結果でした。</p>
					<h3><a href="http://5509.me/log/twitter-float-tip">TwitterのHover Cardを実装するjQueryプラグイン twttrFloatTip</a></h3>
					<p><img src="http://5509.me/wp-content/uploads/2010/08/hovercard.png" alt="" title="hovercard" width="400" height="148" class="alignnone size-full wp-image-2976" /></p>
					<p><a href="http://twitter-float-tip.googlecode.com/svn/trunk/index.html">サンプル</a></p>
					<p>@anywhereが公開されるちょっと前くらいに、HoverCardを使いたいなと思って書いたんですけど、数ヵ月後に案の定@anywhereでHoverCardが実装できるようになったので、不要になったかわいそうなやつです。</p>
					<h3><a href="http://5509.me/log/whatinout">ありそうでなかった？要素をふわっと表示させるjQueryプラグイン whatInOut</a></h3>
					<p><a href="http://5509.me/sample/whatinout/">サンプル</a></p>
					<p>斬新なタイトルで注目を集めた（嘘）whatInOutはWindows7のウィンドウを開くときみたいな、ふんわりとしたアニメーションがほしくて書きました。今さらというか、今だからというか、whatInとwhatOutはほとんど使い物にならなくて、whatSlideInとwhatSlideOutがいい感じですね。</p>
					<h3><a href="http://5509.me/log/exvalidation">どんなフォームにも使えるjQueryのフォームバリデーション exValidation</a></h3>
					<p><img src="http://5509.me/wp-content/uploads/2010/08/exvalidation.png" alt="" title="exvalidation" width="400" height="150" class="alignnone size-full wp-image-2977" /></p>
					<p><a href="http://ex-validation.googlecode.com/svn/trunk/index.html">サンプル</a></p>
					<p>ずっと書き直したかったjQuery.validation.jsを仕様変更などして書き直したものです。やりたいようにやっていったら「<a href="http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/">jquery Inline Form Validation Engine</a>」にかなり近いものになってしまったのですけど、jQselectableと一緒に使えるとかexValidationにしかないようなオプションとかもあるしこれでいいか、で公開しました。</p>
					<h2>ふりかえり</h2>
					<p>僕は別にJavaScriptの知識が豊富なわけでもないし、すごいコードを書けるわけでもないですが、その時できる範囲内でたまに出来ないことが必要になったりして、聞いたりしてちょっとずつ理解して今ではなーんとなく理解できるようになりました。</p>
					<p>本当にしがないコーダーだった頃に比べると、できることは増えていて、それもこれもjQueryのおかげだったりするんですけど、jQueryにばっかり頼っていてもできることは増えないのでJavaScriptはもっと理解したい。</p>
					<p>プラグインとかは特に誰に向けて書いてるわけではないですけど、コメントとかTwitterで反応があるとうれしいです。コメントの返事さぼったりしてすみません。これからもさぼったりすると思いますけど、コメント本当にうれしいです。</p>
					<p>そんなわけで、これからもぼちぼち書いていけたらいいなとか思いながらも、そろそろ次のステップに進まないとなぁと思っているわけで、次の言語をどうしようと重たい腰が一向にあがらない毎日です。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2945&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jquery-plugins-have-been-published/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>どんなフォームにも使えるjQueryのフォームバリデーション exValidation</title>
		<link>http://5509.me/log/exvalidation</link>
		<comments>http://5509.me/log/exvalidation#comments</comments>
		<pubDate>Fri, 06 Aug 2010 01:15:12 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[validation]]></category>
		<category><![CDATA[フォーム]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=2864</guid>
		<description><![CDATA[					
					jquery.validation.jsというフォームバリデーションプラグインを公開していますが、使える場面が割と限定されてしまうような作りだったので、より幅広く使えるようにexValidation [...]]]></description>
			<content:encoded><![CDATA[					<p><a class="act" href="http://5509.me/sample/exvalidation/"><img class="alignnone size-full wp-image-2872" title="validation" src="http://5509.me/wp-content/uploads/2010/08/validation.png" alt="" width="450" height="202" /></a></p>
					<p><a href="http://5509.me/log/realtimeformvalidation">jquery.validation.js</a>というフォームバリデーションプラグインを公開していますが、使える場面が割と限定されてしまうような作りだったので、<strong>より幅広く使えるようにexValidationという名前で新しいjQueryプラグインとして作り直しました。</strong>伴って仕様や使い方が異なる部分も多いので、ドキュメントとして書いておきます。ただし前半のバリデーションルール周りは同じエンジンを使ってるので、ほぼ同じです。ちなみにすごい長いです。。</p>
					<p class="note">ルールを割り当てる際の<strong>class名がhogeからchkhogeに代わりました</strong>。アップデートして使う場合は注意してください。</p>
					<ul>
					<li><a href="http://5509.me/sample/exvalidation/">サンプル1: エラーを右上に表示</a></li>
					<li><a href="http://5509.me/sample/exvalidation/index2.html">サンプル2: エラーを下に表示</a></li>
					</ul>
					<p><span id="more-2864"></span></p>
					<h2>トピックス</h2>
					<ul>
					<li><a href="#download">ダウンロード</a></li>
					<li><a href="#install">使い方</a>
					<ul>
					<li><a href="#install1">1. JSファイルを読み込む</a></li>
					<li><a href="#install2">2. 基本バリデーションルール</a></li>
					<li><a href="#install3">3. select, checkbox、radio、複数項目の場合</a></li>
					<li><a href="#install4">4. select要素を対象にする場合</a></li>
					<li><a href="#install5">5. 再入力をチェックする場合</a></li>
					<li><a href="#install6">6. 入力文字数をチェックする場合</a></li>
					<li><a href="#install7">7. チェックボックスで対象inputの必須をトグルする</a></li>
					<li><a href="#install8">8. アクティベート</a></li>
					<li><a href="#install9">9. アクティベート（ここでルールを指定する場合）</a></li>
					</ul>
					</li>
					<li><a href="#options">オプション</a>
					<ul>
					<li><a href="#sample1">サンプル1のパターンで実行する</a></li>
					<li><a href="#sample2">サンプル2のパターンで実行する</a></li>
					<li><a href="#errfocus">errFocusを使う</a></li>
					<li><a href="#ajaxpost">Ajaxでポストする</a></li>
					<li><a href="#custombind">任意の要素にバリデーションをbindする</a></li>
					<li><a href="#customError">エラー時に関数を実行する、エラーがない場合に関数を実行する、スクロール位置を固定する</a>
					<ul>
					<li><a href="#customAddError">エラー時に関数を実行する</a></li>
					<li><a href="#customClearError">エラーがない場合に関数を実行する</a></li>
					<li><a href="#customScrollAdjust">スクロール位置を固定する</a></li>
					</ul>
					</li>
					</ul>
					</li>
					<li><a href="#api">API</a>
					<ul>
					<li><a href="#selectable">jQselectableとの併用</a></li>
					</ul>
					</li>
					<li><a href="#reg">バリデーションルール</a></li>
					<li><a href="#license">ライセンス</a></li>
					<li><a href="#other">その他</a></li>
					</ul>
					<h2 id="download">ダウンロード</h2>
					<dl>
					<dt>バリデーションエンジン </dt>
					<dd><a href="https://github.com/5509/exValidation/blob/master/js/exvalidation.js">exValidation.js</a></dd>
					<dt>バリデーションルール</dt>
					<dd><a href="https://github.com/5509/exValidation/blob/master/js/exchecker-ja.js">exChecker-ja.js</a></dd>
					<dt>サンプルファイル</dt>
					<dd><a href="https://github.com/5509/exValidation/archives/master">exValidation.zip</a></dd>
					</dl>
					<h2 id="install">使い方</h2>
					<h3 id="install1">1. JS・CSSファイルを読み込む</h3>
					<p>exValidaitonに必要なファイルは<strong>「exvalidation.css」「jQuery」「exvalidation.js」「exchecker-ja.js」</strong>の4つです。</p>
					<pre>&lt;link type="text/css" rel="stylesheet" href="css/exvalidation.css" /&gt;
&lt;script type="text/javascript" src="http://www.google.com/jsapi"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;google.load("jquery", "1.4.2");&lt;/script&gt;
&lt;script type="text/javascript" src="js/exvalidation.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="js/exchecker-ja.js"&gt;&lt;/script&gt;</pre>
					<p>「exchecker-ja.js」は基本的なバリデーションルールを記述したファイルなので、これを読み込むことで以下に記述する最低限のバリデーションを行うことができます。</p>
					<h3 id="install2">2. 基本バリデーションルール</h3>
					<p>exchecker-ja.jsに基本のバリデーションルールを記述しています。下記のclassをフォーム要素（グループの場合はspanなどの要素）に割り振るか実行時にrulesというプロパティで指定すること（実行時のプロパティでバリデーションルールを指定する）でルールを決めることができます。</p>
					<ul>
					<li>chkrequired &#8211; 必須項目</li>
					<li>chkselect &#8211; select要素用の必須項目</li>
					<li>chkradio &#8211; radioボタン（いずれかひとつ、グループ分けの親要素必須</li>
					<li>chkcheckbox &#8211; checkbox（いずれかひとつ、グループ分けの親要素必須</li>
					<li>chkgroup &#8211; 複数の項目をまとめる場合（詳しくは後述</li>
					<li>chkretype-対象にするID &#8211; 再入力チェック</li>
					<li>chkemail &#8211; メールアドレスチェック（*@*.*）</li>
					<li>chkhankaku &#8211; 全角禁止</li>
					<li>chkzenkaku &#8211; 全角のみ</li>
					<li>chkhiragana &#8211; ひらがなのみ</li>
					<li>chkkatakana &#8211; カタカナのみ</li>
					<li>chkfurigana &#8211; ふりがな（ひらがな、数字、アルファベット、〜、ー、()）</li>
					<li>chktel &#8211; 電話番号(形式チェックはなし)</li>
					<li>chknumonly &#8211; 数字のみ</li>
					<li>chknocaps &#8211; 英数字（小文字）のみ</li>
					<li>chkzip &#8211; 郵便番号(形式チェックはなし)</li>
					<li>chkurl &#8211; URL（http(s)://）</li>
					<li>chkminX &#8211; X文字以下</li>
					<li>chkmaxX &#8211; X文字以上</li>
					<li>chkfile &#8211; type=&#8221;file&#8221;のチェック、chkrequiredは不要</li>
					</ul>
					<p>また、適用させる項目はchkrequiredとchkhankakuは他の項目と同時に含めることが出来ます。例えば下記のようにクラスにchkemail, chkhankaku, chkrequiredを指定した場合は</p>
					<pre>&lt;input type="text" name="mail" id="mail" value="" class="chkemail chkhankaku chkrequired" /&gt;</pre>
<p>必須項目・メールアドレスチェック・全角禁止になります。またクラスに記述する順序は任意で構いません。ところでバリデーションを行う<strong>input要素には固有のidが必須</strong>になります。</p>
<h4>特殊なタイプのチェック形式は以下のようになります。カッコ内はあってもなくても可</h4>
<p>メールアドレス：*@*.*<br />
電話番号：*(-)*(-)*<br />
郵便番号：***(-)****</p>
<h3 id="install3">3. checkbox、radio、複数項目のバリデーション</h3>
<p>checkbox、radio、複数項目をチェックする場合は<br />
<strong>spanなどのインライン要素<a href="#note1">(*1)</a>でグループを明示した上で</strong>ここではspan要素としますが span要素にid、classを割り当てます。</p>
<p>例えば、メールアドレスを@前と後で分ける場合は</p>
<pre>&lt;input type="text" name="mail2" id="mail2" value="" class="" /&gt;
@
&lt;input type="text" name="mai3" id="mail3" value="" class="" /&gt;</pre>
					<p>といったように分けるのが一般的なのでこれをチェックする場合は以下のようになります。</p>
					<pre>&lt;span class="chkgroup chkrequired chkhankaku chkemail" id="groupmail"&gt;&lt;input type="text" name="mail3" id="mail3" value="" class="" /&gt;
@
&lt;input type="text" name="mail2" id="mail2" value="" class="" /&gt;&lt;/span&gt;</pre>
					<p>ポイントは上にも記述していますが、<strong>複数のinput要素をまとめるspanを用意してそのspan要素にid、classを割り当てます</strong>。</p>
					<p><strong>classはgroupが必須になり、あとはinput単体で指定するものが使えます</strong>。なので今回の場合はclassには <strong>chkgroup, chkrequired, chkhankaku, chkemail</strong> が入ることになります。</p>
					<p>以下はradioボタンの例です。</p>
					<pre>&lt;ul class="chkradio" id="radioarray"&gt;
&nbsp;&nbsp;&lt;li&gt;&lt;label for="radio1"&gt;&lt;input type="radio" name="radio" id="radio1" value="" /&gt; 男&lt;/label&gt;&lt;/li&gt;
&nbsp;&nbsp;&lt;li&gt;&lt;label for="radio2"&gt;&lt;input type="radio" name="radio" id="radio2" value="" /&gt; 女&lt;/label&gt;&lt;/li&gt;
&lt;/ul&gt;</pre>
					<p>radio、checkboxは例外になり、必須項目としてしかチェック出来ないので<strong>classにchkrequiredは必要ありません</strong>。</p>
					<p>上記の例ではグループ化がspan要素ではなくul要素になっていますがCSSでinline指定<a href="#note1">(*1)</a>すれば大丈夫です。要はdisplayプロパティがinline(inline-blockでも可)であればなんでも大丈夫です。</p>
					<p id="note1" class="attention"><strong>*1) 幅を持たせたブロック要素でも可ブロック要素は幅初期値が親に対して100%になるので エラーチップが画面から見切れることがあります。</strong></p>
					<h3 id="install4">4. select要素を対象にする場合</h3>
					<p>select要素を対象にする場合は</p>
					<pre>&lt;select name="sex" id="sex" class="chkselect"&gt;
&nbsp;&nbsp;&lt;option value="" selected="selected"&gt;選択してください&lt;/option&gt;
&nbsp;&nbsp;&lt;option value="male"&gt;男&lt;/option&gt;
&nbsp;&nbsp;&lt;option value="female"&gt;女&lt;/option&gt;
&lt;/select&gt;</pre>
					<p>のようにvalueが空のoption要素を含めます。value属性を指定しないとvalidationは行われません。初期値には<strong>必ず空のvalue属性を指定してください</strong>。(初期値にはselected属性を指定することが<a href="http://w3g.jp/xhtml/dic/option#selected">推奨</a>されています)<br />
					select要素は選択されているoptionが変わった場合にvalidationが行われます。</p>
					<h3 id="install5">5. 再入力をチェックする場合</h3>
					<p>メールアドレスやパスワードなど再入力を促す項目がある場合、それもvalidationの対象にすることができます。たとえば、</p>
					<pre>&lt;input type="text" id="mail" name="mail" value="" class="chkemail chkhankaku chkrequired" /&gt;</pre>
<p>の後に</p>
<pre>&lt;input type="text" id="remail" name="remail" value="" class="" /&gt;</pre>
					<p>といった再入力項目があるとします。この項目は<strong>先のメールアドレス入力項目 input#mail と同じものを入力してもらう</strong>ので</p>
					<pre>&lt;input type="text" id="remail" name="remail" value="" class="chkretype-mail chkrequired" /&gt;</pre>
<p>のようにクラスに <strong>chkretype-対象にする項目のID</strong> を含めます。今回は<strong>対象にする項目(メールアドレス入力項目)のIDはmailとなっているので chkretype-mail</strong> としています。</p>
<p>再入力チェックは複数項目の場合も有効で、単純に3と組み合わせるだけです。</p>
<pre>&lt;span class="chkgroup chkrequired chkhankaku chkemail" id="groupmail"&gt;&lt;input type="text" name="mail2" id="mail2" value="" class="" /&gt;
@
&lt;input type="text" name="mail3" id="mail3" value="" class="" /&gt;&lt;/span&gt;</pre>
					<p>の再入力項目は</p>
					<pre>&lt;span class="chkgroup chkrequired chkretype-groupmail" id="regroupmail"&gt;&lt;input type="text" name="remail2" id="remail3" value="" class="" /&gt;
@
&lt;input type="text" name="remail3" id="remail3" value="" class="" /&gt;&lt;/span&gt;</pre>
					<p>となります。</p>
					<h3 id="install6">6. 入力文字数をチェックする場合</h3>
					<p>パスワードなどの項目に入力文字数の制限をかけたいときは</p>
					<pre>&lt;input type="password" id="pass" name="pass" value="" class="chkrequired chkmin6 chkmax12" /&gt;</pre>
<p>のようにclassに</p>
<ul>
<li>minX</li>
<li>maxX (Xはともに任意の数字)</li>
</ul>
<p>を含ませます。もちろんmin・maxどちらか一方だけを指定でき、また他のすべてのチェックと併用することができます。<br />
ただし複数項目のメールアドレスは 文字列に@を含めるので1文字多く数えられます。(メールアドレスに入力文字数制限を使うことはないと思うのでそのままにしてます。)</p>
<h3 id="install7">7. チェックボックスで対象inputの必須をトグルする</h3>
<p>以下該当部分の抜粋コードです。ポイントは<strong>トグルにしたい要素はルールを書くときにchkrequiredを必ず含めてください</strong>。</p>
<pre>&lt;tr&gt;
  &lt;th&gt;Favorite&lt;span&gt;*&lt;/span&gt;&lt;/th&gt;
  &lt;td&gt;
    &lt;span id=&quot;fav&quot;&gt;
      &lt;label for=&quot;f1&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;f1&quot; name=&quot;fav[]&quot; value=&quot;f1&quot;&gt;books&lt;/label&gt;
      &lt;label for=&quot;f2&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;f2&quot; name=&quot;fav[]&quot; value=&quot;f2&quot;&gt;music&lt;/label&gt;
      &lt;label for=&quot;f3&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;f3&quot; name=&quot;fav[]&quot; value=&quot;f3&quot;&gt;game&lt;/label&gt;
      &lt;label for=&quot;f4&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;f4&quot; name=&quot;fav[]&quot; value=&quot;f4&quot;&gt;study&lt;/label&gt;
      &lt;label for=&quot;f5&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;f5&quot; name=&quot;fav[]&quot; value=&quot;f5&quot;&gt;fishing&lt;/label&gt;
      &lt;label for=&quot;f6&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;f6&quot; name=&quot;fav[]&quot; value=&quot;f6&quot;&gt;other&lt;/label&gt;
    &lt;/span&gt;
  &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;th&gt;Favorite Other&lt;/th&gt;
  &lt;td&gt;
    &lt;input type=&quot;text&quot; id=&quot;favOther&quot; name=&quot;favOther&quot; value=&quot;&quot;&gt;
  &lt;/td&gt;
&lt;/tr&gt;</pre>
					<p>で、チェックボックスを含むグループには<strong>chktoggle_hoge_fuga</strong>のように</p>
					<ul>
					<li>hoge: トグルを発火させるためのチェックボックスのID</li>
					<li>fuga: チェックボックスの状態によって必須をトグルさせるinputのID</li>
					</ul>
					<p>この後説明しているアクティベート時にトグルを行うためのルールを入れておきます。これだけです。</p>
					<pre>$("form")
  .exValidation({
    rules: {
      fav: "chkgroup chktoggle_f6_favOther", // chktoggle_f6_favOther の部分
      favOther: "chkrequired"
    },
    stepValidation: true
  });</pre>
					<h3 id="install8">8. アクティベート</h3>
					<p>最後に任意のJSファイルで以下のように実行します。</p>
					<pre>$(function(){
&nbsp;&nbsp;$("form").validation();
});</pre>
					<h3 id="install9">9. アクティベート（ここでルールを指定する場合）</h3>
					<p>input要素に直接ルール（class）を指定しなくても、実行時に指定することができます。<strong>この方法のほうがHTMLを極力汚さないのでおすすめ</strong>です。（ちょっとだけ処理遅いですが）</p>
					<pre>$("form")
&nbsp;&nbsp;.exValidation({
&nbsp;&nbsp;&nbsp;&nbsp;rules: {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name: "chkrequired",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kana: "chkrequired chkkatakana",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;email: "chkrequired chkemail chkhankaku chkgroup",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pass: "chkrequired chkmin6 chkmax12",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;repass: "chkrequired chkretype-pass",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;radio: "chkradio",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkbox: "chkcheckbox"
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;});</pre>
					<p>上記のように、rulesというオプションで指定します。値はそれぞれ [id: rules] となります。</p>
					<h2 id="options">オプション</h2>
					<p>exValidationは汎用性を持たせるために色々なオプションがあります。</p>
					<table border="1" class="lftable">
					<tr>
					<th>オプション項目</th>
					<th>値</th>
					</tr>
					<tr>
					<td>rules</td>
					<td>classではなく、実行時に指定する場合 rules: { id, rules, &#8230; }</td>
					</tr>
					<tr>
					<td>errInsertPos</td>
					<td>エラーの挿入位置。デフォルトはbody直下、他に対象要素の前(before)と後ろ(after)</td>
					</tr>
					<tr>
					<td>err</td>
					<td>エラー時に実行するカスタム処理 function(target, id, message) {}</td>
					</tr>
					<tr>
					<td>ok</td>
					<td>処理が通ったときに実行するカスタム処理 funtion(target, id) {}</td>
					</tr>
					<tr>
					<td>errFocus</td>
					<td>エラーが表示されているとき、そのinput要素にfocusすると他のエラーにfadeOutというclassを付与する。デフォルトはfalse</td>
					</tr>
					<tr>
					<td>errHoverHide</td>
					<td>エラーにカーソルを乗せると非表示にする</td>
					</tr>
					<tr>
					<td>stepValidation</td>
					<td>複数個のエラーがある場合、ひとつひとつ処理する。デフォルトはfalse</td>
					</tr>
					<tr>
					<td>scrollToErr</td>
					<td>エラーがある場合、画面一番上のエラーまでスクロールする。デフォルトはtrue</td>
					</tr>
					<tr>
					<td>scrollDuration</td>
					<td>スクロールのduration</td>
					</tr>
					<tr>
					<td>scrollAdjust</td>
					<td>スクロール量の微調整。デフォルトは-10</td>
					</tr>
					<tr>
					<td>customScrollAdjust</td>
					<td>スクロール位置の指定。デフォルトはfalseで、<strong>数値または数値を返すfunctionを指定</strong></td>
					</tr>
					<tr>
					<td>errPosition</td>
					<td>errInsertPosがbodyならabsolute、before(after)ならfixedを指定する。デフォルトはabsolute</td>
					</tr>
					<tr>
					<td>errTipPos</td>
					<td>エラーの表示位置。errPositionがabsoluteのときのみ。左か右か。デフォルトはright</td>
					</tr>
					<tr>
					<td>errTipCloseBtn</td>
					<td>エラーに閉じるボタンを表示するかしないか。デフォルトはtrue</td>
					</tr>
					<tr>
					<td>errTipCloseLabel</td>
					<td>閉じるボタンのラベル。</td>
					</tr>
					<tr>
					<td>errZIndex</td>
					<td>エラーのzIndex。指定があるときのみ。デフォルトは500</td>
					</tr>
					<tr>
					<td>errMsgPrefix</td>
					<td>エラーメッセージの頭に付ける文字</td>
					</tr>
					<tr>
					<td>customAddError</td>
					<td>エラーがあるとき、スクロール前に実行する関数</td>
					</tr>
					<tr>
					<td>customClearError</td>
					<td>エラーがないとき、Submit前に実行する関数</td>
					</tr>
					<tr>
					<td>customSubmit</td>
					<td>デフォルトのポストバックをキャンセルして実行する。Ajaxで通信を行う場合は、ここで指定する</td>
					</tr>
					<tr>
					<td>customListener</td>
					<td>input要素などにbindするlistenerを変更できる</td>
					</tr>
					<tr>
					<td>customBind</td>
					<td>2つのボタンにbindする場合、もう一方はこちらで指定 { object: $(), listener: &#8216;hoge&#8217;, callback: function }</td>
					</tr>
					<tr>
					<td>customGetErrHeight</td>
					<td>その内追記します</td>
					</tr>
					<tr>
					<td>firstValidate</td>
					<td>デフォルトはfalseで、送信ボタンを押すまで実行しない。trueにすると、入力毎にバリデーションを行う</td>
					</tr>
					</table>
					<p>使い方は見てるだけだと分からないと思うので、具体的なサンプルを2つ用意してます。</p>
					<ul>
					<li><a href="http://5509.me/sample/exvalidation/">サンプル1: エラーを右上に表示</a></li>
					<li><a href="http://5509.me/sample/exvalidation/index2.html">サンプル2: エラーを下に表示</a></li>
					</ul>
					<h3 id="sample1">サンプルのパターン1</h3>
					<p><img class="alignnone size-full wp-image-2872" title="validation" src="http://5509.me/wp-content/uploads/2010/08/validation.png" alt="" width="450" height="202" /></p>
					<p><a href="http://5509.me/sample/exvalidation/">サンプル1</a>の形式で実行する場合は以下のようにします。（サンプルではrulesをオプションで指定しています）</p>
					<pre>$("form")
&nbsp;&nbsp;.exValidation({
&nbsp;&nbsp;&nbsp;&nbsp;rules: {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 略
&nbsp;&nbsp;&nbsp;&nbsp;},
&nbsp;&nbsp;&nbsp;&nbsp;stepValidation: true
&nbsp;&nbsp;});</pre>
					<h3 id="sample2">サンプルのパターン2</h3>
					<p><img class="alignnone size-full wp-image-2935" title="validation2" src="http://5509.me/wp-content/uploads/2010/08/validation21.png" alt="" width="450" height="201" /></p>
					<p><a href="http://5509.me/sample/exvalidation/index2.html">サンプル2</a>の形式で実行する場合は以下の通りです。errInsertPosとerrPositionを指定することでサンプル2のような形のエラー表示にすることができます。</p>
					<pre>$("form")
&nbsp;&nbsp;.exValidation({
&nbsp;&nbsp;&nbsp;&nbsp;rules: {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 略
&nbsp;&nbsp;&nbsp;&nbsp;},
&nbsp;&nbsp;&nbsp;&nbsp;errInsertPos: 'after',
&nbsp;&nbsp;&nbsp;&nbsp;errPosition: 'fixed'
&nbsp;&nbsp;});</pre>
					<h3 id="errfocus">errFocusを使う</h3>
					<p>errFocusを使うとエラーが出ている状態で対象要素にフォーカスすると、エラーチップ以外に[<strong>fadeOut</strong>]というclassを付与します。デフォルトでは<strong> .fadeOut { opacity: .2 } </strong>を指定しているので他のエラーが透ける感じですね。(ただしIEでは動作しません。。)</p>
					<p><img class="alignnone size-full wp-image-2936" title="validation3" src="http://5509.me/wp-content/uploads/2010/08/validation3.png" alt="" width="450" height="200" /></p>
					<p><a href="http://5509.me/sample/exvalidation/index4.html">errFocusのサンプル</a></p>
					<h3 id="ajaxpost">Ajaxでポストする</h3>
					<p>exValidationでは<strong>通常のポストバックに加え、customSubmitというオプションを使うことでAjaxによるポストや、その他独自のポストを行うことができます</strong>。customSubmit実行時は通常のポストバックはキャンセルされます。</p>
					<pre>$("form")
&nbsp;&nbsp;.exValidation({
&nbsp;&nbsp;&nbsp;&nbsp;customSubmit: function() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.ajax({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url: "data.php",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type: "POST",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataType: "json",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data: {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name: $("#name").val()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;success: function(data) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(data);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;});</pre>
					<p>下記のサンプルで、エラーがない状態でポストすると、コンソールログにObjectが表示されます。（コンソールがある環境で確認してください）</p>
					<p><a href="http://5509.media-track.biz/project/validation/">Ajaxポストのサンプル</a></p>
					<h3 id="custombind">任意の要素にバリデーションをbindする</h3>
					<p>customBindを使うと<strong>任意のボタンぽい要素（例えばアンカーとか）にポスト時のバリデーションを付加</strong>することができます。ポスト内容はcallbackで設定します。</p>
					<pre>customBind: {
&nbsp;&nbsp;object: $(任意のhoge),
&nbsp;&nbsp;listener: '任意のpiyo',
&nbsp;&nbsp;callback: function() { /*実行したいfuga*/ }
}</pre>
					<p>例えば、日記を書くフォームがあったとして、<strong>通常のボタンに通常Ajaxポスト、プレビューボタンにはcustomBindでAjaxポスト、などのように使うことができます</strong>。</p>
					<pre>$("form")
&nbsp;&nbsp;.exValidation({
&nbsp;&nbsp;&nbsp;&nbsp;customBind: {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;object: $('#submit'),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listener: 'click',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;callback: function() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert('Fake POST');
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;});</pre>
					<p>サンプルではただのアンカー要素にcustomBindしています。</p>
					<p><a href="http://5509.me/sample/exvalidation/index5.html">customBindのサンプル</a></p>
					<h3 id="customError">エラー時に関数を実行する、エラーがない場合に関数を実行する、スクロール位置を固定する</h3>
					<h4 id="customAddError">エラー時に関数を実行する</h4>
					<p>エラーがあったときに関数を実行したい場合は<strong>customAddError</strong>を指定します。指定した関数はスクロール前に実行されます。</p>
					<h4 id="customClearError">エラーがない場合に関数を実行する</h4>
					<p>エラーがないときに関数を実行した場合は<strong>customClearError</strong>を指定します。指定した関数はsubmitやcustomSubmit前に実行されます。</p>
					<h4 id="customScrollAdjust">スクロール位置を固定する</h4>
					<p>スクロール位置を固定したい場合は、<strong>customScrollAdjust</strong>を指定します。customScrollAdjustはデフォルトはfalseになっていますが、<strong>数値または数値を返す関数を指定</strong>できます。</p>
					<p>この3つを一連の流れで実装したサンプルがありますので確認してください。</p>
					<pre>var validation = $("form")
&nbsp;&nbsp;.exValidation({
&nbsp;&nbsp;&nbsp;&nbsp;rules: {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 略
&nbsp;&nbsp;&nbsp;&nbsp;},
&nbsp;&nbsp;&nbsp;&nbsp;errInsertPos: 'after',
&nbsp;&nbsp;&nbsp;&nbsp;errPosition: 'fixed',
&nbsp;&nbsp;&nbsp;&nbsp;customAddError: function() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( $("#alert").length&lt;1 ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$("p.attention").before("&lt;div id=\"alert\"&gt;&lt;strong&gt;入力内容に誤りがあります。&lt;/strong&gt;&lt;/div&gt;");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;},
&nbsp;&nbsp;&nbsp;&nbsp;customClearError: function() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$("#alert").remove();
&nbsp;&nbsp;&nbsp;&nbsp;},
&nbsp;&nbsp;&nbsp;&nbsp;customScrollAdjust: function() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $("#alert").offset().top;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;});</pre>
					<p>ポイントは<strong>customScrollAdjustではcustomAddErrorで表示した追加エラー分のポジションを取得して返している</strong>ところでしょう。</p>
					<p><a href="http://5509.me/sample/exvalidation/index6.html">スクロール位置の固定やエラー時の追加関数のサンプル</a></p>
					<h2 id="api">API</h2>
					<p>実行時にインスタンスを指定しておくと、APIを利用することができます。</p>
					<pre>var validation = $('form').exValidation();</pre>
<table border="1" class="lftable">
<tr>
<td>API</td>
<td>値</td>
</tr>
<tr>
<td>laterCall</td>
<td>function(id) {} 任意のinput要素に対してバリデーションを任意のタイミングで行う</td>
</tr>
</table>
<h3>laterCall</h3>
<p>laterCallを使うと<strong>任意のタイミングで指定したフォーム要素をバリデーション</strong>できます。</p>
<pre>var validation = $('form').exValidation();
$('#button').click(function() {
&nbsp;&nbsp;validation.laterCall('#name');
});</pre>
					<p><a href="http://5509.me/sample/exvalidation/index3.html">laterCallのサンプル</a></p>
					<h3 id="selectable">jQselectableとの併用</h3>
					<p>laterCallを利用すると<a href="http://5509.me/log/jqueryselectable">jQselectable</a>と併用することができます。具体例は<a href="http://5509.me/sample/exvalidation/index.html">サンプル</a>を確認してください。</p>
					<pre>var validation = $("form").exValidation();
var selectable = $('#pref').selectable({
&nbsp;&nbsp;callback: function() {
&nbsp;&nbsp;&nbsp;&nbsp;validation.laterCall('#pref');
&nbsp;&nbsp;}
});</pre>
					<h2 id="reg">バリデーションルール</h2>
					<p><a href="https://github.com/5509/exValidation/blob/master/js/exchecker-ja.js">exChecker-ja.js</a>を読みこめば基本的なバリデーションは行えますが、独自のルールを使いたいときは、exChecker-ja.jsを修正、追記するか、新しいバリデーションルールを書いたファイルを読み込みます。バリデーションルールは以下のように定義します。</p>
					<pre>(function($) {
&nbsp;&nbsp;// Extend validation rules
&nbsp;&nbsp;$.extend(validationRules, {
&nbsp;&nbsp;&nbsp;&nbsp;chkretype: [
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'入力内容が異なります',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function(txt, t) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var elm = $('#'+$(t).attr('class').split('retype\-')[1].split(/\b/)[0]);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( elm.hasClass('group') ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var chktxt = $('input', elm), txt = $('input', t);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ( var i=0, flag=false; i&lt;chktxt.length; i++ ) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( chktxt[i].value==txt[i].value ) flag = true;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else flag = false;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( flag ) return true;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return elm.val() == txt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;],
&nbsp;&nbsp;&nbsp;&nbsp;email: [
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'正しいメールアドレスの形式を入力してください',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/^[^\@]+?@[A-Za-z0-9_\.\-]+\.+[A-Za-z\.\-\_]+$/
&nbsp;&nbsp;&nbsp;&nbsp;]
&nbsp;&nbsp;});
})(jQuery);</pre>
					<p><strong>$.validationRules</strong>をextendする形でルールを記述します。バリデーションはclass名で行うので</p>
					<pre>class: [
&nbsp;&nbsp;"エラーメッセージ",
&nbsp;&nbsp;/RegExp/ or function(txt, t) {}
]</pre>
					<p>のようにハッシュのプロパティの中にメッセージとルールを配列として記述します。単純に正規表現だけでチェックするときは、<strong>Array[1]には/RegExp/</strong>、その中でさらに分岐などの条件を含む複雑なバリデーションルールの場合は、<strong>Array[1]にfunction(受け取るテキスト, 対象フォーム要素のid: 省略可) {}</strong>で記述します。</p>
					<h2 id="license">ライセンス</h2>
					<p>MITライセンスなので、ライセンス部分を改変しない限り個人商用問わず利用することができます。<br />
					ただし、不具合など発生しても作者は責任を負いませんのでご了承ください。</p>
					<h2 id="other">その他</h2>
					<p>バグや要望などは<a href="https://github.com/5509/exvalidation/issues">githubのIssues</a>にください。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2864&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/exvalidation/feed</wfw:commentRss>
		<slash:comments>163</slash:comments>
		</item>
		<item>
		<title>[訂正:間違い] formのaction先が異なる文字コードのときに文字化けさせない</title>
		<link>http://5509.me/log/form-encoding</link>
		<comments>http://5509.me/log/form-encoding#comments</comments>
		<pubDate>Mon, 02 Aug 2010 12:10:00 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[memo]]></category>
		<category><![CDATA[文字コード]]></category>
		<category><![CDATA[文字化け]]></category>

		<guid isPermaLink="false">http://5509.me/?p=2847</guid>
		<description><![CDATA[					10.08.03追記：この記事を見てくれた方へごめんなさい、以下の内容は検索エンジン側が &#038;charset=UTF-8 でパラメータを受け付けるときのみに有効な方法でした。つまり間違いです。
				 [...]]]></description>
			<content:encoded><![CDATA[					<p class="attention" style="border: 2px solid rgb(226, 154, 27); padding: 5px 10px; background: none repeat scroll 0% 0% rgb(255, 255, 255);"><strong>10.08.03追記：この記事を見てくれた方へ</strong><br />ごめんなさい、以下の内容は<em>検索エンジン側が &#038;charset=UTF-8 でパラメータを受け付けるときのみに有効</em>な方法でした。つまり間違いです。</p>
					<p>サイトの検索で外部検索エンジンを使うときなど、<strong>サイトはUTF-8なのに用意された検索エンジンはShift_JIS、、のようにサイトと検索エンジン側の文字コードが違う</strong>、というのはよくある話で、そうすると文字化けを起こします。</p>
					<h2>hiddenパラメータで文字コードを送る</h2>
					<p>そういうときはhiddenパラメータで<strong>サイト側の文字コード</strong>を埋め込んでおくといいです。</p>
					<pre>&lt;input type="hidden" name="charset" value="UTF-8" /&gt;</pre>
<p>以下のようにform要素に入れておきます。</p>
<pre>&lt;form action="hogehoge"&gt;
&nbsp;&nbsp;&lt;input type="hidden" name="charset" value="UTF-8" /&gt;
&nbsp;&nbsp;&lt;input type="text" name"text" value="" /&gt;
&nbsp;&nbsp;&lt;input type="submit" value="submit" /&gt;
&lt;/form&gt;</pre>
					<h2>accept-charset属性</h2>
					<p>formのaccept-charsetという属性で<strong>検索エンジン側の文字コードを指定する</strong>ことでも回避できるようですが、IEが未対応なようで、実用的ではないです。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2847&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/form-encoding/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>リンクが一斉に捕まえてごらーんな状態になるブックマークレット</title>
		<link>http://5509.me/log/runaway-bookmarklet</link>
		<comments>http://5509.me/log/runaway-bookmarklet#comments</comments>
		<pubDate>Thu, 01 Jul 2010 03:49:55 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Bookmarklet]]></category>
		<category><![CDATA[dt]]></category>
		<category><![CDATA[ネタ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=2820</guid>
		<description><![CDATA[					先日公開したリンクが逃げ回るjDTRunAwayをブックマークレットにしました。ブログやサイトの地雷リンクにいかがですか？鬱陶しいこと間違いないです。
					
					概要など
					リンクがマウスカ [...]]]></description>
			<content:encoded><![CDATA[					<p>先日公開したリンクが逃げ回る<a href="http://5509.me/log/jdtrunaway">jDTRunAway</a>をブックマークレットにしました。<strong>ブログやサイトの地雷リンクにいかがですか？</strong>鬱陶しいこと間違いないです。<br />
					<span id="more-2820"></span></p>
					<h2>概要など</h2>
					<p>リンクがマウスカーソルから逃げ回ります。それだけです。</p>
					<h3>注意とか</h3>
					<ul>
					<li>捕まえにくいやつもいれば簡単に捕まえられるやつもいます</li>
					<li>小さいやつは逃げ足が速いです注意。</li>
					<li>リンクが多ければ多いほど重くなります。</li>
					<li>IEだとだいたい重いです。</li>
					<li>Chromeでさくさく。</li>
					</ul>
					<h3>使い方</h3>
					<p>以下のリンクをブックマークバーにドラッグして、ブックマークバーからクリックするだけです。また、サイトのリンクに埋め込むことで、自分のサイトで使うこともできます。</p>
					<p><a href="javascript:(function(){var s=document.createElement('script');s.charset='UTF-8';s.src='http://5509.me/sample/bookmarklet/runaway.js'; document.body.appendChild(s)})();">つかまえてごらーん</a></p>
					<p>どんなものか分からない方は、とりあえず上のリンクをクリックしてみるといいです。</p>
					<h3>ブックマークレットのソース</h3>
					<pre>javascript:(function(){var s=document.createElement('script');s.charset='UTF-8';s.src='http://5509.me/sample/bookmarklet/runaway.js'; document.body.appendChild(s)})();</pre>
<h3>ソースコード</h3>
<p><a href="http://5509.me/sample/bookmarklet/runaway.js">RunAway.js</a></p>
<h2>うーん</h2>
<p>誰得プラグインシリーズは大体ブックマークレットのほうが面白かったのかもしれないとか思ったり思わなかったり。</p>
<h2>Thanks</h2>
<p>アニメーション部分のソースは<a href="http://twitter.com/hisasann">hisasann</a>さんが以下の記事で作成していたものを、許可を得て転用しています。</p>
<p><a href="http://hisasann.com/housetect/2009/04/jqueryrunawayfrommouse_part2.html">jQueryでマウスから逃げるRunAwayFromMouse書いてみた Part2 | HouseTect, JavaScript Blog </a></p>
<img src="http://5509.me/?ak_action=api_record_view&id=2820&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/runaway-bookmarklet/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ブログ記事でよく見られている箇所とかユーザーの動きを晒してみる</title>
		<link>http://5509.me/log/userheat-summary-math</link>
		<comments>http://5509.me/log/userheat-summary-math#comments</comments>
		<pubDate>Wed, 30 Jun 2010 01:36:39 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[UserHeat]]></category>
		<category><![CDATA[まとめ]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=2755</guid>
		<description><![CDATA[					
					ユーザーローカルさんのUserHeatというサービスを使っているのですが、マウスの動き・よくクリックされている箇所・どこがよく見られている等が一目で分かるので、ナビゲーションや記事の書き方の改善など [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2010/06/5509validation.png" alt="" title="5509validation" width="450" height="273" class="alignnone size-full wp-image-2764" /></p>
					<p><a href="http://www.userlocal.jp/">ユーザーローカル</a>さんの<a href="http://userheat.com/">UserHeat</a>というサービスを使っているのですが、マウスの動き・よくクリックされている箇所・どこがよく見られている等が一目で分かるので、ナビゲーションや記事の書き方の改善などに役立てることができますね。（<strong>全然役立てれてませんけど</strong>）<br />
					<span id="more-2755"></span></p>
					<h2>どこが見られてるの？</h2>
					<p>個人的に全然役に立てられていないこのUserHeatでの集計結果ですが、ひょっとしてひょっとすると誰かの役に立つかもしれないので晒して共有します。ただページが長くて全部入りきってないものがほとんどですけど…その辺は想像でカバーですね！</p>
					<p>ちなみにサムネイルは<strong>左から順にマウストラック、クリックマップ、ヒートマップ</strong>です。サムネイルクリックでフルサイズのキャプチャを開きます。</p>
					<p>あ、どなたか解析してくれる人募集してます。。</p>
					<h3>リアルタイムフォームバリデーション jQuery.validation.js</h3>
					<p><a href="http://5509.me/wp-content/uploads/2010/06/5509validation_mouse.jpg"><img src="http://5509.me/wp-content/uploads/2010/06/5509validation_mouse-150x150.jpg" alt="" title="5509validation_mouse" width="150" height="150" class="alignnone size-thumbnail wp-image-2759" /></a> <a href="http://5509.me/wp-content/uploads/2010/06/5509validation_click.jpg"><img src="http://5509.me/wp-content/uploads/2010/06/5509validation_click-150x150.jpg" alt="" title="5509validation_click" width="150" height="150" class="alignnone size-thumbnail wp-image-2757" /></a> <a href="http://5509.me/wp-content/uploads/2010/06/5509validation_heat.jpg"><img src="http://5509.me/wp-content/uploads/2010/06/5509validation_heat-150x150.jpg" alt="" title="5509validation_heat" width="150" height="150" class="alignnone size-thumbnail wp-image-2758" /></a></p>
					<p>自作プラグインの紹介ページで、ページ上部にダウンロードインストールなど主要セクションがあり、中盤以下は細かい使い方になってます。ありがたいことにダウンロードに集中してますね。ほんとありがとうございます。</p>
					<ul>
					<li><a href="http://5509.me/log/realtimeformvalidation">リアルタイムフォームバリデーションのアーカイブ</a></li>
					</ul>
					<h3>CMSとしてのWordPressでサイト構築をするときに便利な13のプラグイン</h3>
					<p><a href="http://5509.me/wp-content/uploads/2010/06/5509wp_mouse.jpeg"><img src="http://5509.me/wp-content/uploads/2010/06/5509wp_mouse-150x150.jpg" alt="" title="5509wp_mouse" width="150" height="150" class="alignnone size-thumbnail wp-image-2794" /></a> <a href="http://5509.me/wp-content/uploads/2010/06/5509wp_click.jpeg"><img src="http://5509.me/wp-content/uploads/2010/06/5509wp_click-150x150.jpg" alt="" title="5509wp_click" width="150" height="150" class="alignnone size-thumbnail wp-image-2792" /></a> <a href="http://5509.me/wp-content/uploads/2010/06/5509wp_heat.jpeg"><img src="http://5509.me/wp-content/uploads/2010/06/5509wp_heat-150x150.jpg" alt="" title="5509wp_heat" width="150" height="150" class="alignnone size-thumbnail wp-image-2793" /></a></p>
					<p>よくあるプラグインまとめページです。上の方からざっと見てブックマークして離脱、という行動パターンが多そうです。これは一番紹介したかった<a href="http://www.tinybeans.net/blog/download/wp-plugin/cfg-utility-100.html">Custom Field GUI Utility</a>にクリックが集中してるのでよかったパターンですね。</p>
					<ul>
					<li><a href="http://5509.me/log/using-wordpress-as-cms">CMSとして使うWordPressプラグインのアーカイブ</a></li>
					</ul>
					<h3>jQueryを使ったスライド開閉メニューをCookieでコントロールする</h3>
					<p><a href="http://5509.me/wp-content/uploads/2010/06/5509ctrl_mouse.jpeg"><img src="http://5509.me/wp-content/uploads/2010/06/5509ctrl_mouse-150x150.jpg" alt="" title="5509ctrl_mouse" width="150" height="150" class="alignnone size-thumbnail wp-image-2799" /></a> <a href="http://5509.me/wp-content/uploads/2010/06/5509ctrl_click.jpeg"><img src="http://5509.me/wp-content/uploads/2010/06/5509ctrl_click-150x150.jpg" alt="" title="5509ctrl_click" width="150" height="150" class="alignnone size-thumbnail wp-image-2797" /></a> <a href="http://5509.me/wp-content/uploads/2010/06/5509ctrl_heat.jpeg"><img src="http://5509.me/wp-content/uploads/2010/06/5509ctrl_heat-150x150.jpg" alt="" title="5509ctrl_heat" width="150" height="150" class="alignnone size-thumbnail wp-image-2798" /></a></p>
					<p>チュートリアル系の記事です。比較的下のほうまで見られてますね。ソースコード部分に集中してそうな感じなので、もっと補足コメント入れたほうがいいのかも。</p>
					<ul>
					<li><a href="http://5509.me/log/control-slide-navigation-with-jquery-cookie">アコーディオンナビゲーションのコントロールのアーカイブ</a></li>
					</ul>
					<h3>じわじわ便利なjQuery1.4で追加された機能いろいろ+α</h3>
					<p><a href="http://5509.me/wp-content/uploads/2010/06/5509jquery_mouse.jpeg"><img src="http://5509.me/wp-content/uploads/2010/06/5509jquery_mouse-150x150.jpg" alt="" title="5509jquery_mouse" width="150" height="150" class="alignnone size-thumbnail wp-image-2805" /></a> <a href="http://5509.me/wp-content/uploads/2010/06/5509jquery_click.jpeg"><img src="http://5509.me/wp-content/uploads/2010/06/5509jquery_click-150x150.jpg" alt="" title="5509jquery_click" width="150" height="150" class="alignnone size-thumbnail wp-image-2803" /></a> <a href="http://5509.me/wp-content/uploads/2010/06/5509jquery_heat.jpeg"><img src="http://5509.me/wp-content/uploads/2010/06/5509jquery_heat-150x150.jpg" alt="" title="5509jquery_heat" width="150" height="150" class="alignnone size-thumbnail wp-image-2804" /></a></p>
					<p>むしろ1.4の新機能よりも伝えたかったjQueryの機能部分が全然見られてないYO。。やっぱりおまけはおまけでしかない感じですね。書き方が悪いのか。。</p>
					<ul>
					<li><a href="http://5509.me/log/jquery1-4-plus-alpha">jQuery1.4の新機能とあんまり知られてない機能のアーカイブ</a></li>
					</ul>
					<h2>まとめ</h2>
					<p>はてなスターが面白いほど認知されてないｗ<br />
					たしかにデザインというか色味的にみえにくいですし。。それか左の記事メタ部分にその辺（SBM、Twitter含め）置いて、スクロールに付いてきたほうがクリックされそう。</p>
					<p>広告がもっと入ってるブログとか、実際のサイトの結果で見たらもっとおもしろいかもしれませんね。</p>
					<p>ちなみに<a href="http://userheat.com/">UserHeat</a>のトップページ下部にはサンプルとして、登録されているサイトの集計結果を一部見ることができる（そもそも集計結果のページはURLさえあれば誰でも見れます）ので、参考になりますよ。<a href="http://userheat.com/map/7219687d3c31843d35a44b2c_100032/heatmap/">nanapi</a>とか<a href="http://userheat.com/map/b26d2fa8f16d1902359059d2_100027/heatmap/">百式</a>の集計結果など参考になりそうです。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2755&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/userheat-summary-math/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>知っておくべきjQueryオブジェクトの扱い</title>
		<link>http://5509.me/log/jquery-and-dom-object</link>
		<comments>http://5509.me/log/jquery-and-dom-object#comments</comments>
		<pubDate>Tue, 29 Jun 2010 05:48:09 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[memo]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://5509.me/?p=2735</guid>
		<description><![CDATA[					
					jQueryオブジェクトからDOM要素にアクセスする方法やメソッドで渡されるjQueryオブジェクトの扱いなど基本といえば基本ですが、再認識メモです。なので、タイトルは自分に覚えとけよってことです。 [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2010/06/jquerydom.png" alt="" title="jquerydom" width="327" height="246" class="alignnone size-full wp-image-2743" /></p>
					<p>jQueryオブジェクトからDOM要素にアクセスする方法やメソッドで渡されるjQueryオブジェクトの扱いなど基本といえば基本ですが、再認識メモです。なので、タイトルは自分に覚えとけよってことです。。<br />
					<span id="more-2735"></span></p>
					<h2>jQueryオブジェクトからDOMにアクセスする</h2>
					<p>$(&#8216;#id&#8217;)にすれば#idを取得できますが、この状態だとDOM要素を選らんでいる状態ではないので、DOM要素のプロパティにはアクセスできません。</p>
					<pre>$('#link').href
// これは無理</pre>
					<h3>1-1. $()[0]</h3>
					<p>要素を引数にしたjQueryオブジェクトはDOM要素が配列で格納されている状態なので</p>
					<pre>$('#link')[0]
// DOM要素の参照になる

console.debug($('#link')[0]);
// 評価結果 - DOM要素
// &lt;a id="link" href="llink.html"&gt;</pre>
					<p>とすることで配列の中からDOM要素を指定することができるので、プロパティにアクセスすることができます。</p>
					<pre>var href = $('#link')[0].href;
<del datetime="2010-06-29T07:01:49+00:00">// 以下と同じですけどね</del>
var href = $('#link').attr('href');</pre>
					<p><strong>※ 追記 10.06.29</strong><br />
					コメントいただきましたので追記します。上記は同じ値ではないようなので注意が必要です。（僕が注意します）</p>
					<blockquote><p>this.hrefはDOM上の記述に寄らずhttp://からのパスが返りますが、$(this).attr(&#8216;href&#8217;)はDOM上の記述に沿った内容が返ります。</p>
					<p>via: <a href="http://tech.kayac.com/archive/jquery-first-questions.html">jQueryを使い始めたときに感じる 13の疑問</a></p></blockquote>
					<h3>1-2. $().get(0)</h3>
					<p>そもそも配列だけを抜きたいときは.get()メソッドを使いますが.get(0)というように引数に0(index)を入れると上記と同じ効果が得られます。</p>
					<pre>$('#link')[0]
// ↑と↓は同じ意味
$('#link').get(0)

console.debug($('#link').get(0));
// 評価結果 - DOM要素
// &lt;a id="link" href="llink.html"&gt;</pre>
					<h2>jQueryオブジェクトに対してメソッドで渡されるthisの扱い</h2>
					<p>DOM要素の取得方法は上記の通りですが、$().each(function() {});のようにjQueryがもっているメソッドを実行する際、メソッド内で実行対象を受け取ることができます。ただ、この受け取れるthisについても補足しておくと、、</p>
					<h3>2-1. eachとかclickなどのjQueryメソッド内でのthis</h3>
					<p>これはちょっと肝なのですが、eachメソッドやclickメソッドなどのjQueryがもともと持っているメソッド内で渡されるthisはjQueryオブジェクトではないんですね。DOM要素になっています。要素が複数ある場合は配列として渡されます。</p>
					<pre>$('#link').each(function() {
    console.debug(this);
});

// 評価結果 - DOM要素になっている
// &lt;a id="link" href="llink.html"&gt;</pre>
					<p>※ 単一のjQueryオブジェクトに対してeach使うの気持ち悪いですけど、例ってことで。。</p>
					<h3>2-2. 自作メソッド内でのthis</h3>
					<p>2-1に対して、jQueryがもともと持っているメソッドに対して自作メソッド（プラグイン関数など）で渡されるthisはjQueryオブジェクトになっています。</p>
					<pre>$.fn.myMethod = function() {
    console.debug(this);
}
$('#link').myMethod();

// 評価結果 - jQueryオブジェクトとして渡される
// jQuery(a#link llink.html)</pre>
					<h2>つまり。。。</h2>
					<p>基礎はちゃんと押さえておかないと後で面倒くさいってことです。。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2735&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jquery-and-dom-object/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>HootSuiteユーザは必須？(非)公式RTを超簡単に切り替えるGreasemonkey</title>
		<link>http://5509.me/log/hootsuite-rt-userscript</link>
		<comments>http://5509.me/log/hootsuite-rt-userscript#comments</comments>
		<pubDate>Mon, 28 Jun 2010 01:30:37 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[HootSuite]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[UserScript]]></category>

		<guid isPermaLink="false">http://5509.me/?p=2699</guid>
		<description><![CDATA[					
					先日のHootSuiteバージョンアップで公式RTと引用する形のRTを切り替えられるようになりましたね。今までは引用する形のRTしか使えなかったので少し不便でしたが、これで両方を使い分けられるように [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2010/06/hootsuite2.png" alt="" title="hootsuite" width="483" height="170" class="alignnone size-full wp-image-2715" /></p>
					<p>先日の<a href="http://hootsuite.com/">HootSuite</a>バージョンアップで<strong>公式RTと引用する形のRT</strong>を切り替えられるようになりましたね。今<strong>までは引用する形のRTしか使えなかった</strong>ので少し不便でしたが、これで両方を使い分けられるようになりました。なったんですけど、いちいち切り替えるのがかなり面倒くさくて、毎回同じことなんかやってられないです。</p>
					<p>そこで探していたところ<a href="http://twitter.com/h_kurosawa">@h_kurosawa</a>さんが<a href="http://tweet-code.appspot.com/code/20001">Bookmarklet</a>を公開してくれていたので、UserScript化させてもらいました。ChromeとFirefoxで動作確認してます。<br />
					<span id="more-2699"></span></p>
					<h2>インストール</h2>
					<p><strong>This script for Chrome and Firefox with Greasemonkey</strong></p>
					<ul>
					<li><a href="http://userscripts.org/scripts/source/80179.user.js">Install UserScript</a></li>
					</ul>
					<h2>使い方</h2>
					<p>インストールした状態でHootSuiteを開くとフッターに以下のようなチェックボックスが追加されています。引用する形のRTを「<strong>Web Retweet</strong>」、公式RTは「<strong>Official RT</strong>」の表記にしています。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/06/hootsuite_footer1.png" alt="" title="hootsuite_footer" width="215" height="49" class="alignnone size-full wp-image-2716" /></p>
					<p>これをクリックすることで公式RTに切り替えることができます。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/06/hootsuite_footer2.png" alt="" title="hootsuite_footer2" width="227" height="45" class="alignnone size-full wp-image-2719" /></p>
					<p>チェックした状態としてない状態でRTを試してみてください。簡単ですね！</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2699&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/hootsuite-rt-userscript/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>マウスホバーでスムーズにjQueryのアニメーションをコントロールする方法</title>
		<link>http://5509.me/log/jquery-animate-que-tips</link>
		<comments>http://5509.me/log/jquery-animate-que-tips#comments</comments>
		<pubDate>Thu, 24 Jun 2010 01:45:52 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[アニメーション]]></category>

		<guid isPermaLink="false">http://5509.me/?p=2661</guid>
		<description><![CDATA[					
					jQueryを使えば超簡単にアニメーションもできますし、フェード効果の実装も楽々できますね。簡単に実装できるので結構使ってるサイトを見ますが、カーソルを素早く乗せたり外したりするとチラチラすることが [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/animationque/"><img src="http://5509.me/wp-content/uploads/2010/06/animation.png" alt="" title="animation" width="333" height="138" class="alignnone size-full wp-image-2669" /></a></p>
					<p>jQueryを使えば超簡単にアニメーションもできますし、フェード効果の実装も楽々できますね。簡単に実装できるので結構使ってるサイトを見ますが、カーソルを素早く乗せたり外したりするとチラチラすることが多いんですよね。</p>
					<p>何言ってるか文章だと伝わりにくいので、<a href="http://5509.me/sample/animationque/">サンプル1</a>を確認してみてください。</p>
					<p>どうでもいいっちゃどうでもいいのかも知れないですけど、こういう小さなこだわりって結構重要なんじゃないでしょうか。</p>
					<p>で、このチラチラ、簡単に解決できるので知らなかった人は覚えておくといいかもです。<br />
					<span id="more-2661"></span></p>
					<p>結論は簡単で</p>
					<ul>
					<li><strong>.stop(true, false)を.animate()の前に入れる</strong></li>
					<li><strong>.animate()メソッドのオプション部分でqueue: falseを指定する</strong></li>
					</ul>
					<p>のいずれかです。</p>
					<p>このときに.stop()メソッドを利用するのですが、.stop()メソッドには2つ引数を指定できて、引数の値で動作もちょっと変わったりします。実際に動作を見てもらったほうが早いのでサンプルを用意しました。</p>
					<p>サンプルと同じように順番に見ていきましょう。</p>
					<h2>1. そのまま</h2>
					<p><a href="http://5509.me/sample/animationque/#s2">サンプル1のボックス</a>に連続してホバーしてください。チラチラしますよね。</p>
					<h3>ソースコード</h3>
					<pre>$('#s1 div.box')
&nbsp;&nbsp;&nbsp;&nbsp;.hover(function()&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).animate({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opacity:&nbsp;.5
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;duration:&nbsp;200
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})
&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;function()&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).animate({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opacity:&nbsp;1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;duration:&nbsp;200
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})
&nbsp;&nbsp;&nbsp;&nbsp;});</pre>
					<h2>2. .stop(true, true)</h2>
					<p><a href="http://5509.me/sample/animationque/#s1">サンプル2のボックス</a>に連続してホバーすると、ぴかぴかしますね！</p>
					<h3>ソースコード</h3>
					<pre>$('#s2 div.box')
&nbsp;&nbsp;&nbsp;&nbsp;.hover(function()&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).stop(true,&nbsp;true).animate({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opacity:&nbsp;.5
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;duration:&nbsp;200
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})
&nbsp;&nbsp;&nbsp;&nbsp;},function()&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).stop(true,&nbsp;true).animate({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opacity:&nbsp;1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;duration:&nbsp;200
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})
&nbsp;&nbsp;&nbsp;&nbsp;});</pre>
					<h2>3. .stop(true, false)</h2>
					<p><a href="http://5509.me/sample/animationque/#s3">サンプル3のボックス</a>にキューがたまっている状態で他のブロックにホバーすると、キャンセルします。たぶん一番自然。</p>
					<h3>ソースコード</h3>
					<pre>$('#s3 div.box')
&nbsp;&nbsp;&nbsp;&nbsp;.hover(function()&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).stop(true,&nbsp;false).animate({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opacity:&nbsp;.5
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;duration:&nbsp;200
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})
&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;function()&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).stop(true,&nbsp;false).animate({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opacity:&nbsp;1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;duration:&nbsp;200
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})
&nbsp;&nbsp;&nbsp;&nbsp;});</pre>
					<h2>4. queue: false</h2>
					<p><a href="http://5509.me/sample/animationque/#s4">サンプル4のボックス</a>にキューがたまっている状態で他のブロックにホバーすると、キャンセルします。.stop(true, false)と同じ効果。これも自然。</p>
					<h3>ソースコード</h3>
					<pre>$('#s4 div.box')
&nbsp;&nbsp;&nbsp;&nbsp;.hover(function()&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).animate({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opacity:&nbsp;.5
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;duration:&nbsp;200,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;queue:&nbsp;false
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})
&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;function()&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).animate({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opacity:&nbsp;1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;duration:&nbsp;200,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;queue:&nbsp;false
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})
&nbsp;&nbsp;&nbsp;&nbsp;});</pre>
					<h2>簡単にチラチラを回避できるのでぜひ覚えておきましょう！</h2>
					<p>以下のどちらかですね！今回は.animate()メソッドで紹介してますが、.<strong>stop(true, false)はfadeIn(), fadeOut(), fadeTo()にも使えますよ！</strong></p>
					<ul>
					<li><strong>.stop(true, false)を.animate()の前に入れる</strong></li>
					<li><strong>.animate()メソッドのオプション部分でqueue: falseを指定する</strong></li>
					</ul>
					<ul>
					<li><a href="http://5509.me/sample/animationque/">動作サンプル</a></li>
					</ul>
					<img src="http://5509.me/?ak_action=api_record_view&id=2661&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jquery-animate-que-tips/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQueryを無効化する jDTNoQuery</title>
		<link>http://5509.me/log/jdtnoquery</link>
		<comments>http://5509.me/log/jdtnoquery#comments</comments>
		<pubDate>Wed, 23 Jun 2010 01:28:46 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[dt]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://5509.me/?p=2645</guid>
		<description><![CDATA[					
					【番外編】
					番外編にして最もクール。
					jQueryが他のライブラリと干渉してプラグインが動かない！なんてことありませんでしたか？干渉するなら無効化すればいいですよ。このプラグイン [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2010/06/noquery.png" alt="" title="noquery" width="208" height="125" class="alignnone size-full wp-image-2659" /></p>
					<p><strong>【番外編】</strong></p>
					<p>番外編にして最もクール。</p>
					<p>jQueryが他のライブラリと干渉してプラグインが動かない！なんてことありませんでしたか？干渉するなら無効化すればいいですよ。このプラグインでね！<br />
					<span id="more-2645"></span></p>
					<p class="link"><a href="http://jdtplugins.googlecode.com/svn/trunk/jdtnoquery/index.html" class="sample">Live demo (コンソールとかで見てください)</a></p>
					<ul>
					<li><a href="http://jdtplugins.googlecode.com/svn/trunk/jdtnoquery/js/jdtnoquery.js">jdtNoQuery.js</a></li>
					</ul>
					<h2>使い方</h2>
					<p><strong>jQueryのあとに</strong><a href="http://jdtplugins.googlecode.com/svn/trunk/jdtnoquery/js/jdtnoquery.js">jdtNoQuery.js</a>を読み込むだけです。ここ重要です。</p>
					<pre>&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.com/jsapi&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;google.load(&quot;jquery&quot;, '1.4');&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jdtnoquery.js&quot;&gt;&lt;/script&gt;</pre>
					<h2>注意</h2>
					<p><strong>プラグインちゃうやん</strong>っていうツッコミはコメント等で受け付けてます。</p>
					<h2>本当に最後</h2>
					<p>昨日公開した「<a href="http://5509.me/log/10-worthless-jquery-plugins">誰が使うの？何の役にも立たないjQueryプラグイン10選</a>」の番外編というか総集編というか、もう総力戦というか。ようはオチです。ありがとうございました。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2645&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jdtnoquery/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>誰が使うの？何の役にも立たないjQueryプラグイン10選</title>
		<link>http://5509.me/log/10-worthless-jquery-plugins</link>
		<comments>http://5509.me/log/10-worthless-jquery-plugins#comments</comments>
		<pubDate>Tue, 22 Jun 2010 01:30:01 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[プラグイン]]></category>
		<category><![CDATA[誰得]]></category>

		<guid isPermaLink="false">http://5509.me/?p=2606</guid>
		<description><![CDATA[					jQueryプラグインなにそれおいしいの？役に立つプラグインばっかりで面白くない！ぼくらはもっと面白くて役に立たないものを求めてるんだ！あまのじゃくな人たちのために（面白いかどうかは別として）何の役にも立たない [...]]]></description>
			<content:encoded><![CDATA[					<p>jQueryプラグインなにそれおいしいの？役に立つプラグインばっかりで面白くない！ぼくらはもっと面白くて役に立たないものを求めてるんだ！あまのじゃくな人たちのために（面白いかどうかは別として）何の役にも立たないプラグインを集めました。全力で行きます。全力で。<br />
					<span id="more-2606"></span></p>
					<h3><a href="http://5509.me/log/jdtreverseliquid">Windowを広げると逆にカラムを縮めるプラグイン jDTreverseLiquid</a></h3>
					<p><a href="http://5509.me/log/jdtreverseliquid"><img src="http://5509.me/wp-content/uploads/2010/06/jdt2.png" alt="" title="jdt2" width="300" class="alignnone size-full wp-image-2615" /></a></p>
					<p>リキッドレイアウトはテキストメインのサイトで見やすさを発揮しますね。でもそんなの当たり前です。Window幅に反比例してカラムサイズが変わるのがこれからの主流ですね！</p>
					<h3><a href="http://5509.me/log/jdtneverclick">右クリックどころかクリックすらも禁止するjQueryプラグイン jDTNeverClick</a></h3>
					<p><a href="http://5509.me/log/jdtneverclick"><img src="http://5509.me/wp-content/uploads/2010/06/jdt3.png" alt="" title="jdt3" width="300" class="alignnone size-full wp-image-2617" /></a></p>
					<p>右クリック禁止のサイトあるじゃないですか。あれ本当に最低のユーザビリティだと思ってたんですけど、違いますね。クリックまで禁止して始めて最悪のユーザビリティが生まれるんです。これからはクリックも禁止の時代です。</p>
					<h3><a href="http://rewish.org/javascript/jdtscroll">スムーズにスクロールしないjQueryプラグイン「jDTScroll」</a></h3>
					<p><a href="http://rewish.org/javascript/jdtscroll"><img src="http://5509.me/wp-content/uploads/2010/06/jdt1.png" alt="" title="jdt1" width="300" class="alignnone size-full wp-image-2613" /></a></p>
					<p>スムーズにスクロールすることが当たり前だと思ってる現代人にはぴったりのプラグインですね。スクロールバーだってやる気があるときないときあるんです。わかってあげてよ。。</p>
					<h3><a href="http://5509.me/log/jdtsynergycheckbox">チェックボックスがはんぱない結束力を発揮する jDTSynergyCheckbox</a></h3>
					<p><a href="http://5509.me/log/jdtsynergycheckbox"><img src="http://5509.me/wp-content/uploads/2010/06/jdt4.png" alt="" title="jdt4" width="300" class="alignnone size-full wp-image-2619" /></a></p>
					<p>チェックボックスってユーザに決められ通の動作しかできないんですよ。かわいそうじゃないですか？チェックボックスにも意思があると思うんですよね。そう、こんな風に…</p>
					<h3><a href="http://5509.me/log/jdttabs">うっかりタブの中身を盗まれるjQueryタブプラグイン jDTTabs.js</a></h3>
					<p><a href="http://5509.me/log/jdttabs"><img src="http://5509.me/wp-content/uploads/2010/06/jdt5.png" alt="" title="jdt5" width="300" class="alignnone size-full wp-image-2622" /></a></p>
					<p>大切なタブの中身も天下の大泥棒の手にかかればほらこの通り。</p>
					<h3><a href="http://labs.yusukenakanishi.com/2010/06/16/jdtgnokyouhu/">人の嫌がることを進んで出来るプラグイン jDTGnoKyouhu.js【グロ注意】</a></h3>
					<p><a href="http://labs.yusukenakanishi.com/2010/06/16/jdtgnokyouhu/"><img src="http://5509.me/wp-content/uploads/2010/06/jdt6-300x181.png" alt="" title="jdt6" width="300" height="181" class="alignnone size-medium wp-image-2623" /></a></p>
					<p>嫌だと言われると余計意地悪をしたくなってしまうのが人間の性。Gは大多数の人が嫌悪感を持つということは、、Gを大量に表示させればみんな嫌がるんじゃ…！（サンプルは念のためモザイクをかけてます）</p>
					<h3><a href="http://5509.me/log/jdtlightbox">これからの新標準 jDTLightBox</a></h3>
					<p><a href="http://5509.me/log/jdtlightbox"><img src="http://5509.me/wp-content/uploads/2010/06/jdt7-300x184.png" alt="" title="jdt7" width="300" height="184" class="alignnone size-medium wp-image-2625" /></a></p>
					<p>フツーのLightboxに飽きていた、みんなとは違うLightboxを実装したい、と思っていたあなた。僕が作りました。この新感覚Lightboxをぜひお試しください。</p>
					<h3><a href="http://5509.me/log/jdtrunaway">クリックさせないリンク jDTRunAway</a></h3>
					<p><a href="http://5509.me/log/jdtrunaway"><img src="http://5509.me/wp-content/uploads/2010/06/jdt8-300x153.png" alt="" title="jdt8" width="300" height="153" class="alignnone size-medium wp-image-2627" /></a></p>
					<p>リンクはクリックできるものだと思っていませんか？クリックできない・させないリンクもいるんです。意地の悪いやつらですね。</p>
					<h3><a href="http://rewish.org/javascript/jdtrollover">ものすごい勢いでロールオーバーするjQueryプラグイン「jDTRollover」</a></h3>
					<p><a href="http://rewish.org/javascript/jdtrollover"><img src="http://5509.me/wp-content/uploads/2010/06/jdt9-300x138.png" alt="" title="jdt9" width="300" height="138" class="alignnone size-medium wp-image-2629" /></a></p>
					<p>ロールオーバー。それはロル男の人生そのもの。</p>
					<h3><a href="http://5509.me/log/jdtgirigirimosaic">大切なところは見ちゃいや… jDTGirigiriMosaic.js</a></h3>
					<p><a href="http://5509.me/log/jdtgirigirimosaic"><img src="http://5509.me/wp-content/uploads/2010/06/jdt10-300x163.png" alt="" title="jdt10" width="300" height="163" class="alignnone size-medium wp-image-2630" /></a></p>
					<p>え？サイトの画像をそのまま表示してる？だめですよ…そんな卑猥なものを生で表示するなんて…いやらしい…</p>
					<h2>おまけ</h2>
					<p>これらの<a href="http://code.google.com/p/jdtplugins/">プラグインはGooglecode</a>にあります。（ドキュメントはありませんが…）実はどんな案があってっていうのはこの<a href="http://code.google.com/p/jdtplugins/wiki/plugins">GooglecodeのWikiに集約</a>されてました。</p>
					<p>もし興味のある奇特な方がいれば、参考になるかわかりませんが、ぜひ実装して（作って）教えてください！</p>
					<h2>あとがき的な</h2>
					<p>世の中には役に立つプラグインはあっても役に立たないプラグインは(あまり)ないんじゃないか、的な発想から生まれたこのしょうもない企画。そもそもの発端は僕がこのまとめ記事「<strong>誰が使うの？何の役にも立たないjQueryプラグイン10選</strong>」を書きたいと言ったことでした…まさか本当にやるなんて…</p>
					<p>参加メンバー（アイデア出しと実装など）もまさか本当にやるとは思ってなかったでしょう。実装してくれた<a href="http://twitter.com/rewish">Rewishさん</a>と<a href="http://twitter.com/hogenishi">YusukeNakanishi</a>さんありがとう！一番しょうもない案をばんばん出してくれた<a href="http://twitter.com/hiloki">hilokiさん</a>もありがとう！</p>
					<p>十分ふざけたので次は真面目なの作ります。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2606&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/10-worthless-jquery-plugins/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>大切なところは見ちゃいや… jDTGirigiriMosaic.js</title>
		<link>http://5509.me/log/jdtgirigirimosaic</link>
		<comments>http://5509.me/log/jdtgirigirimosaic#comments</comments>
		<pubDate>Fri, 18 Jun 2010 05:09:26 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[dt]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://5509.me/?p=2592</guid>
		<description><![CDATA[					画像とか…そんな卑猥なもの表示しちゃだめですよ…ちゃんと隠さないと…
					Live demo
					Download demo files
					
					導入方法
					1. jQuery [...]]]></description>
			<content:encoded><![CDATA[					<p>画像とか…そんな卑猥なもの表示しちゃだめですよ…ちゃんと隠さないと…</p>
					<p class="link"><a href="http://jdtplugins.googlecode.com/svn/trunk/jdtgirigirimosaic/index.html" class="sample">Live demo</a><br />
					<a href="http://jdtplugins.googlecode.com/files/jdtgirigirimosaic.zip" class="download">Download demo files</a></p>
					<p><span id="more-2592"></span></p>
					<h2>導入方法</h2>
					<h3>1. jQueryとｊDTGirigiriMosaicを読み込む</h3>
					<pre>&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jdtgirigirimosaic.js&quot;&gt;&lt;/script&gt;</pre>
					<h3>3. 実行する</h3>
					<p>$()で対象にする画像を指定します。</p>
					<pre>jQuery(function($) {
  $('img').jdtGirigiriMosaic();
});</pre>
					<h2>オプション</h2>
					<p>薄いほうが卑猥…</p>
					<table border="1" class="lftable">
					<tr>
					<th>オプション項目</th>
					<th>内容</th>
					</tr>
					<tr>
					<td>size</td>
					<td>小さいほうが薄い感じになったりします。もともと薄いですけど。（デフォルトは3）</td>
					</tr>
					</table>
					<p class="link"><a href="http://jdtplugins.googlecode.com/svn/trunk/jdtgirigirimosaic/index.html" class="sample">Live demo</a><br />
					<a href="http://jdtplugins.googlecode.com/files/jdtgirigirimosaic.zip" class="download">Download demo files</a></p>
					<h2>注意</h2>
					<p>薄くするなんて卑猥！！！！！！</p>
					<h2>IE</h2>
					<p>はcanvas使えないので別途使えるようにする何かをつかってください…</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2592&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jdtgirigirimosaic/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>クリックさせないリンク jdtRunAway.js</title>
		<link>http://5509.me/log/jdtrunaway</link>
		<comments>http://5509.me/log/jdtrunaway#comments</comments>
		<pubDate>Thu, 17 Jun 2010 05:40:06 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[dt]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://5509.me/?p=2586</guid>
		<description><![CDATA[					Webサイトに欠かせないものといえば、何を思いつきますか？やはりリンクじゃないでしょうか。そもそもリンクがなければ他のページに移動することもできませんし。
					リンクがクリックしにくかったら…まあうざいで [...]]]></description>
			<content:encoded><![CDATA[					<p>Webサイトに欠かせないものといえば、何を思いつきますか？やはりリンクじゃないでしょうか。そもそもリンクがなければ他のページに移動することもできませんし。</p>
					<p>リンクがクリックしにくかったら…まあうざいでしょうね。<br />
					そんな素敵なプラグインをつくってみました。</p>
					<p class="link"><a href="http://jdtplugins.googlecode.com/svn/trunk/jdtrunaway/index.html" class="sample">Live demo</a><br />
					<a href="http://jdtplugins.googlecode.com/files/jdtrunaway.zip" class="download">Download demo files</a></p>
					<p><span id="more-2586"></span></p>
					<h2>導入方法</h2>
					<h3>1. jQueryとjDTLightBoxを読み込む</h3>
					<pre>&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jdtlightbox.js&quot;&gt;&lt;/script&gt;</pre>
					<h3>3. 実行する</h3>
					<p>$()で対象にする要素を指定します。（サンプルではアンカーに適用していますが、きっとなんにでも使えるはず）</p>
					<pre>jQuery(function($) {
  $('a').jdtRunAway();
});</pre>
					<h2>オプション</h2>
					<p>やりすぎると大体重くなる</p>
					<table border="1" class="lftable">
					<tr>
					<th>オプション項目</th>
					<th>内容</th>
					</tr>
					<tr>
					<td>rate</td>
					<td>アニメーションフレームみたいなもの。増やすとなめらかになる反面重くなります</td>
					</tr>
					<tr>
					<td>instance</td>
					<td>反発する距離みたいなもの。大きくするとすぐ逃げます</td>
					</tr>
					</table>
					<p class="link"><a href="http://jdtplugins.googlecode.com/svn/trunk/jdtrunaway/index.html" class="sample">Live demo</a><br />
					<a href="http://jdtplugins.googlecode.com/files/jdtrunaway.zip" class="download">Download demo files</a></p>
					<h2>注意</h2>
					<p>ｱﾊﾊﾊﾊ つかまえてごらーん</p>
					<h2>Thanks</h2>
					<p>アニメーション部分のソースは<a href="http://twitter.com/hisasann">hisasann</a>さんが以下の記事で作成していたものを、許可を得て転用しています。こんなばかなプラグインのために、、快諾していただきありがとうございます。</p>
					<p><a href="http://hisasann.com/housetect/2009/04/jqueryrunawayfrommouse_part2.html">jQueryでマウスから逃げるRunAwayFromMouse書いてみた Part2 | HouseTect, JavaScript Blog </a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2586&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jdtrunaway/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>これからの新標準LightBox jDTLightBox.js</title>
		<link>http://5509.me/log/jdtlightbox</link>
		<comments>http://5509.me/log/jdtlightbox#comments</comments>
		<pubDate>Wed, 16 Jun 2010 05:30:23 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[dt]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://5509.me/?p=2580</guid>
		<description><![CDATA[					LightBoxって知ってますよね？にゅっと画像とかが出る例のアレです。2年くらい前に流行りましたね。今では標準になってるのか分からないですが色々なサイトで普通に使われますが、でも嫌いっていう人もいたりしますね [...]]]></description>
			<content:encoded><![CDATA[					<p>LightBoxって知ってますよね？にゅっと画像とかが出る例のアレです。2年くらい前に流行りましたね。今では標準になってるのか分からないですが色々なサイトで普通に使われますが、でも嫌いっていう人もいたりしますね。なんで嫌いなんでしょう。</p>
					<p>ユーモアが足りないからじゃないですかね。</p>
					<p>というわけでユーモアたっぷりかどうかはアレですが、これからのWebサイトをひっぱっていくであろう新標準LightBoxをつくりました。1から作りました。</p>
					<p class="link"><a href="http://jdtplugins.googlecode.com/svn/trunk/jdtlightbox/index.html" class="sample">Live demo</a><br />
					<a href="http://jdtplugins.googlecode.com/files/jdtlightbox.zip" class="download">Download demo files</a></p>
					<p><span id="more-2580"></span></p>
					<h2>導入方法</h2>
					<h3>1. jQueryとjDTLightBoxを読み込む</h3>
					<pre>&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jdtlightbox.js&quot;&gt;&lt;/script&gt;</pre>
					<h3>3. 実行する</h3>
					<p>$()で対象にする要素を指定します。（アンカーに適用します。）</p>
					<pre>jQuery(function($) {
  $('#lightbox a').jdtLightBox();
});</pre>
					<h2>オプション</h2>
					<p>期待を裏切れます。</p>
					<table border="1" class="lftable">
					<tr>
					<th>オプション項目</th>
					<th>内容</th>
					</tr>
					<tr>
					<td>defaultSize</td>
					<td>最初のサイズ<br />{ width: x, height: y }</td>
					</tr>
					<tr>
					<td>animateTo</td>
					<td>最後のサイズ<br />画像サイズに対するパーセント(20など)</td>
					</tr>
					<tr>
					<td>closeImgSrc</td>
					<td>閉じるボタンのソース</td>
					</tr>
					<tr>
					<td>bgLayerOpacity</td>
					<td>背景レイヤーの透明度</td>
					</tr>
					</table>
					<p class="link"><a href="http://jdtplugins.googlecode.com/svn/trunk/jdtlightbox/index.html" class="sample">Live demo</a><br />
					<a href="http://jdtplugins.googlecode.com/files/jdtlightbox.zip" class="download">Download demo files</a></p>
					<h2>注意</h2>
					<p>え？余計見にくい？見にくいなら閉じろ！</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2580&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jdtlightbox/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>うっかりタブの中身を盗まれるjQueryタブプラグイン jDTTabs.js</title>
		<link>http://5509.me/log/jdttabs</link>
		<comments>http://5509.me/log/jdttabs#comments</comments>
		<pubDate>Tue, 15 Jun 2010 01:50:14 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[dt]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://5509.me/?p=2572</guid>
		<description><![CDATA[					みなさん、ルパンは好きですか？もちろんルパンⅢ世です。嫌いな人はいないと思います。そんなルパンにタブの中身を盗まれてみませんか？とっつぁんもついてくるよ。
					Live demo
					Downloa [...]]]></description>
			<content:encoded><![CDATA[					<p>みなさん、ルパンは好きですか？もちろんルパンⅢ世です。嫌いな人はいないと思います。そんなルパンにタブの中身を盗まれてみませんか？とっつぁんもついてくるよ。</p>
					<p class="link"><a href="http://jdtplugins.googlecode.com/svn/trunk/jdttabs/index.html" class="sample">Live demo</a><br />
					<a href="http://jdtplugins.googlecode.com/files/jdttabs.zip" class="download">Download demo files</a></p>
					<p><span id="more-2572"></span></p>
					<h2>導入方法</h2>
					<h3>1. jQueryとjDTTabsを読み込む</h3>
					<pre>&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jdttabs.js&quot;&gt;&lt;/script&gt;</pre>
					<h3>2. タブのHTMLを用意する</h3>
					<p>タブのHTMLは以下のようにします。</p>
					<pre>&lt;div id=&quot;jdtTabs&quot;&gt;
&nbsp;&nbsp;&lt;ul class=&quot;tab&quot;&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#tab1&quot;&gt;tab1&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#tab2&quot;&gt;tab2&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#tab3&quot;&gt;tab3&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#tab4&quot;&gt;tab4&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#tab5&quot;&gt;tab5&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&lt;/ul&gt;
&nbsp;&nbsp;
&nbsp;&nbsp;&lt;div id=&quot;tab1&quot;&gt;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&lt;br /&gt;
&nbsp;&nbsp;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&lt;br /&gt;
&nbsp;&nbsp;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&lt;br /&gt;
&nbsp;&nbsp;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&lt;br /&gt;
&nbsp;&nbsp;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&lt;/div&gt;
&nbsp;&nbsp;&lt;div id=&quot;tab2&quot;&gt;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb&lt;br /&gt;
&nbsp;&nbsp;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb&lt;br /&gt;
&nbsp;&nbsp;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb&lt;br /&gt;
&nbsp;&nbsp;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb&lt;br /&gt;
&nbsp;&nbsp;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb&lt;/div&gt;
&nbsp;&nbsp;&lt;div id=&quot;tab3&quot;&gt;ccccccccccccccccccccccccccccccccccccccccccccccccc&lt;br /&gt;
&nbsp;&nbsp;ccccccccccccccccccccccccccccccccccccccccccccccccc&lt;br /&gt;
&nbsp;&nbsp;ccccccccccccccccccccccccccccccccccccccccccccccccc&lt;br /&gt;
&nbsp;&nbsp;ccccccccccccccccccccccccccccccccccccccccccccccccc&lt;br /&gt;
&nbsp;&nbsp;ccccccccccccccccccccccccccccccccccccccccccccccccc&lt;/div&gt;
&nbsp;&nbsp;&lt;div id=&quot;tab4&quot;&gt;ddddddddddddddddddddddddddddddddddddddddddddddddd&lt;br /&gt;
&nbsp;&nbsp;ddddddddddddddddddddddddddddddddddddddddddddddddd&lt;br /&gt;
&nbsp;&nbsp;ddddddddddddddddddddddddddddddddddddddddddddddddd&lt;br /&gt;
&nbsp;&nbsp;ddddddddddddddddddddddddddddddddddddddddddddddddd&lt;br /&gt;
&nbsp;&nbsp;ddddddddddddddddddddddddddddddddddddddddddddddddd&lt;/div&gt;
&nbsp;&nbsp;&lt;div id=&quot;tab5&quot;&gt;eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee&lt;br /&gt;
&nbsp;&nbsp;eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee&lt;br /&gt;
&nbsp;&nbsp;eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee&lt;br /&gt;
&nbsp;&nbsp;eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee&lt;br /&gt;
&nbsp;&nbsp;eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee&lt;/div&gt;
&lt;/div&gt;</pre>
					<h3>3. 実行する</h3>
					<p>$()で対象にする要素を指定します。</p>
					<pre>jQuery(function($) {
  $('#jdtTabs').jdtTabs();
});</pre>
					<h2>オプション</h2>
					<p>やってやった感を演出。</p>
					<table border="1" class="lftable">
					<tr>
					<th>オプション項目</th>
					<th>内容</th>
					</tr>
					<tr>
					<td>steal</td>
					<td>クールに決めよう。</td>
					</tr>
					<tr>
					<td>stole</td>
					<td>悔しがろう。</td>
					</tr>
					</table>
					<p class="link"><a href="http://jdtplugins.googlecode.com/svn/trunk/jdttabs/index.html" class="sample">Live demo</a><br />
					<a href="http://jdtplugins.googlecode.com/files/jdttabs.zip" class="download">Download demo files</a></p>
					<h2>注意</h2>
					<p>俺に盗めないものなんてないんだぜ？</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2572&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jdttabs/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>チェックボックスがはんぱない結束力を発揮する  jDTSynergyCheckbox</title>
		<link>http://5509.me/log/jdtsynergycheckbox</link>
		<comments>http://5509.me/log/jdtsynergycheckbox#comments</comments>
		<pubDate>Mon, 14 Jun 2010 05:46:43 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[dt]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://5509.me/?p=2559</guid>
		<description><![CDATA[					卵かけご飯は最近TKGって言うらしいですが、TKGを食べるときに白身だけつるんって全部口の中に入ることないですか？あと、ご飯もりもりにしたときに白身が茶碗からつるんっていくときないですか？
					結束力大事 [...]]]></description>
			<content:encoded><![CDATA[					<p>卵かけご飯は最近TKGって言うらしいですが、TKGを食べるときに白身だけつるんって全部口の中に入ることないですか？あと、ご飯もりもりにしたときに白身が茶碗からつるんっていくときないですか？</p>
					<p>結束力大事ということでチェックボックスに某倶楽部並の結束力を与えてみました。<br />
					オプションを使えば違う意味でのシナジーを発揮します。</p>
					<p class="link"><a href="http://jdtplugins.googlecode.com/svn/trunk/jdtsynergycheckbox/index.html" class="sample">Live demo</a><br />
					<a href="http://jdtplugins.googlecode.com/files/jdtsynergycheckbox.zip" class="download">Download demo files</a></p>
					<p><span id="more-2559"></span></p>
					<h2>導入方法</h2>
					<h3>1. jQueryとjDTSynergyCheckboxを読み込む</h3>
					<pre>&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jdtsynergycheckbox.js&quot;&gt;&lt;/script&gt;</pre>
					<h3>2. 実行する</h3>
					<p>$()で対象にする要素を指定します。</p>
					<pre>jQuery(function($) {
  $('input').jdtSynergyCheckbox();
});</pre>
					<h2>オプション</h2>
					<p>チェックボックスたちの不満の声。</p>
					<table border="1" class="lftable">
					<tr>
					<th>オプション項目</th>
					<th>内容</th>
					</tr>
					<tr>
					<td>special</td>
					<td>違う意味でのシナジーを発揮します。</td>
					</tr>
					<tr>
					<td>message</td>
					<td>specialがtrueのときのみ。配列で複数入れるとランダムで不満を言います。</td>
					</tr>
					</table>
					<p class="link"><a href="http://jdtplugins.googlecode.com/svn/trunk/jdtsynergycheckbox/index.html" class="sample">Live demo</a><br />
					<a href="http://jdtplugins.googlecode.com/files/jdtsynergycheckbox.zip" class="download">Download demo files</a></p>
					<h2>注意</h2>
					<p>チェックボックスだって不満はあるんです。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2559&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jdtsynergycheckbox/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>右クリックどころかクリックすらも禁止するjQueryプラグイン jDTNeverClick</title>
		<link>http://5509.me/log/jdtneverclick</link>
		<comments>http://5509.me/log/jdtneverclick#comments</comments>
		<pubDate>Fri, 11 Jun 2010 01:24:35 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[dt]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[ネタ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=2553</guid>
		<description><![CDATA[					右クリックを禁止してるサイトありますよね？あれのうざさは僕が言うまでもないと思いますが、クリック・ダブルクリックまで禁止されてたらどうでしょう。考えただけで鬱陶しいですね。
					ユーザーのうざがってる顔が [...]]]></description>
			<content:encoded><![CDATA[					<p>右クリックを禁止してるサイトありますよね？あれのうざさは僕が言うまでもないと思いますが、クリック・ダブルクリックまで禁止されてたらどうでしょう。考えただけで鬱陶しいですね。</p>
					<p>ユーザーのうざがってる顔が見たいという鬼畜なあなたのために、右クリックどころかクリック・ダブルクリックすら禁止するjQueryプラグイン作りました。</p>
					<p class="link"><a href="http://jdtplugins.googlecode.com/svn/trunk/jdtneverclick/index.html" class="sample">Live demo</a><br />
					<a href="http://jdtplugins.googlecode.com/files/jdtneverclick.zip" class="download">Download demo files</a></p>
					<p><span id="more-2553"></span></p>
					<h2>導入方法</h2>
					<h3>1. jQueryとjDTNeverClickを読み込む</h3>
					<pre>&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jdtreverseliquid.js&quot;&gt;&lt;/script&gt;</pre>
					<h3>2. 実行する</h3>
					<p>$()で対象にする要素を指定します。</p>
					<pre>jQuery(function($) {
  $(document).jdtNeverClick();
});</pre>
					<h2>オプション</h2>
					<p>オプションを使えば、割り当てるlistenerとアラートの表示非表示・文章を変更できます。</p>
					<table border="1" class="lftable">
					<tr>
					<th>オプション項目</th>
					<th>内容</th>
					</tr>
					<tr>
					<td>listener</td>
					<td>割り当てたいlistener。デフォルトは&#8217;click dblclick contextmenu&#8217;</td>
					</tr>
					<tr>
					<td>dialog</td>
					<td>表示・非表示：true・false</td>
					</tr>
					<tr>
					<td>message</td>
					<td>できる限り鬱陶しい文章を入れましょう。</td>
					</tr>
					</table>
					<p class="link"><a href="http://jdtplugins.googlecode.com/svn/trunk/jdtneverclick/index.html" class="sample">Live demo</a><br />
					<a href="http://jdtplugins.googlecode.com/files/jdtneverclick.zip" class="download">Download demo files</a></p>
					<h2>注意</h2>
					<p>わかってますよね？</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2553&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jdtneverclick/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windowを広げると逆にカラムを縮めるプラグイン jDTreverseLiquid</title>
		<link>http://5509.me/log/jdtreverseliquid</link>
		<comments>http://5509.me/log/jdtreverseliquid#comments</comments>
		<pubDate>Thu, 10 Jun 2010 02:09:39 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[dt]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://5509.me/?p=2543</guid>
		<description><![CDATA[					リキッドレイアウトってありますよね？Windowサイズにあわせてカラムが広がるレイアウトですね。でも、Windowサイズにあわせて広がるとか、普通すぎませんか？
					普通じゃ嫌・みんなと同じは嫌なあなたの [...]]]></description>
			<content:encoded><![CDATA[					<p>リキッドレイアウトってありますよね？Windowサイズにあわせてカラムが広がるレイアウトですね。でも、Windowサイズにあわせて広がるとか、普通すぎませんか？</p>
					<p>普通じゃ嫌・みんなと同じは嫌なあなたのために「<strong>Windowを広げると縮む・縮めると広がるプラグイン</strong>」を作りました。</p>
					<p class="link"><a href="http://jdtreverseliquid.googlecode.com/svn/trunk/index.html" class="sample">Live demo</a><br />
					<a href="http://jdtreverseliquid.googlecode.com/files/jdtreverseLiquid.zip" class="download">Download demo files</a></p>
					<p><span id="more-2543"></span></p>
					<h2>導入方法</h2>
					<h3>1. jQueryとjDTreverseLiquidを読み込む</h3>
					<pre>&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jdtreverseliquid.js&quot;&gt;&lt;/script&gt;</pre>
					<h3>3. 実行する</h3>
					<p>$()で対象にする要素を指定します。</p>
					<pre>jQuery(function($) {
  $('＃contents').dtReverseLiquid();
});</pre>
					<h2>オプション</h2>
					<p>オプションを使えば、広がる割合の設定、コールバック関数を使うことができます。</p>
					<table border="1" class="lftable">
					<tr>
					<th>オプション項目</th>
					<th>内容</th>
					</tr>
					<tr>
					<td>ratio</td>
					<td>デフォルトは2倍です。大きくするとその分早く縮み・広がります。</td>
					</tr>
					<tr>
					<td>callback</td>
					<td>コールバック関数<br />function(){ handler }</td>
					</tr>
					</table>
					<p class="link"><a href="http://jdtreverseliquid.googlecode.com/svn/trunk/index.html" class="sample">Live demo</a><br />
					<a href="http://jdtreverseliquid.googlecode.com/files/jdtreverseLiquid.zip" class="download">Download demo files</a></p>
					<h2>注意</h2>
					<p>ネタです。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2543&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jdtreverseliquid/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPressでAutoPagerizeを有効にする、WP-AutoPagerizeプラグイン</title>
		<link>http://5509.me/log/wpautopagerize</link>
		<comments>http://5509.me/log/wpautopagerize#comments</comments>
		<pubDate>Tue, 01 Jun 2010 01:30:41 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://5509.me/?p=2510</guid>
		<description><![CDATA[					
					以前に作ったWordPressプラグイン「WP-AutoPagerize」ほぼ書き直して作り直したので、新しいものとして公開します。変更点を書いても仕方がないので主な要件を書いておきます。けっこう色 [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2010/05/wpa1.gif" alt="WP-AutoPagerizeキャプチャ" width="222" height="100" class="alignnone size-full wp-image-2511" /></p>
					<p>以前に作ったWordPressプラグイン「WP-AutoPagerize」ほぼ書き直して作り直したので、新しいものとして公開します。変更点を書いても仕方がないので主な要件を書いておきます。けっこう色んな環境で使えるようにしたつもりです。</p>
					<ul>
					<li>jQuery不要</li>
					<li>管理画面からオプションの変更ができる</li>
					<li>自動読み込みに加え、ボタン（リンク）クリックで読み込むオプション</li>
					<li>ページ番号を追加しないオプション</li>
					<li>ページ読み込み前の処理をJSで追加できるようにした</li>
					<li>ページ読み込み後の処理（コールバック）をJSで追加できるようにした</li>
					</ul>
					<p><a href="http://sample.5509.me">動作サンプル</a>もあります。<br />
					<span id="more-2510"></span></p>
					<h2>ダウンロード</h2>
					<ul>
					<li><a href="http://downloads.wordpress.org/plugin/wp-autopagerize.zip">WP-AutoPagerize</a> (<a href="http://wordpress.org/extend/plugins/wp-autopagerize/">WordPress Plugin Direcory</a>)</li>
					</ul>
					<h2>インストール</h2>
					<ol>
					<li>WP-AutoPagerizeディレクトリをpluginsディレクトリにコピー</li>
					<li>管理画面のプラグインからアクティベート</li>
					</ol>
					<p>テンプレートに</p>
					<pre>&lt;?php wp_head(); ?&gt;</pre>
<p>と</p>
<pre>&lt;?php wp_footer(); ?&gt;</pre>
					<p>がないと動作しないので、確認しておいてください。</p>
					<p>ページャーを含んでいるので、ページャーを表示させたい箇所に以下のコードを入れて下さい。またコードは、記事ループの直後においてください。（でない場合は、要素の挿入位置オプションを利用して、追加記事の位置を指定してください)</p>
					<pre>&lt;?php if(function_exists('wp_autopagerize')) { wp_autopagerize(); } ?&gt;</pre>
<p>この<a href="http://5509.me/">ブログにも入れてみました</a>。GreasemonkeyのAutoPagerizeは動作しなくなりました。</p>
<p><img src="http://5509.me/wp-content/uploads/2010/06/hu398hga.png" alt="" title="hu398hga" width="292" height="114" class="alignnone size-full wp-image-2526" /></p>
<p>↑こんな感じになってます。個人的にローディング画像など変えてみました。</p>
<h2>オプション</h2>
<p>オプションは全てプラグイン管理画面から行います。WP-AutoPagerizeをインストールしてアクティベートすると、WordPress管理画面の設定の項目に「WP-AutoPagerize」が表示されますので、こちらから変更します。</p>
<table border="1" class="lftable">
<tr>
<th>オプション項目</th>
<th>内容</th>
</tr>
<tr>
<td>取得対象</td>
<td>取得対象の要素をdiv.postのようにクラスセレクタで指定します。指定できるセレクタはひとつです。</td>
</tr>
<tr>
<td>要素の挿入位置</td>
<td>デフォルトではページャーの直前になっていますが、ページャーの直前が記事要素でない場合に、IDで指定します</td>
</tr>
<tr>
<td>ページ番号</td>
<td>ページ番号を表示するかしないか選択できます</td>
</tr>
<tr>
<td>タイプ</td>
<td>AutoPagerizeかButtonPagerizeどちらかを選択できます</td>
</tr>
<tr>
<td>初期設定</td>
<td>AutoPagerizeのときに有効<br />初期設定で自動読み込みにするかしないか<br />しない場合は、リロードすると毎回オフになります</td>
</tr>
<tr>
<td>読み込みボタンテキスト</td>
<td>ButtonPagerizeのときに有効<br />追加読み込みボタンのテキスト</td>
</tr>
<tr>
<td>次ページ</td>
<td>ページャーの「次ページ」部分のテキスト</td>
</tr>
<tr>
<td>前ページ</td>
<td>ページャーの「前ページ」部分のテキスト</td>
</tr>
<tr>
<td>要素追加前の処理</td>
<td>ページ読み込み前の実行関数<br />function(){}</td>
</tr>
<tr>
<td>コールバック</td>
<td>コールバック関数<br />function(){}</td>
</tr>
</table>
<h2>Thanks</h2>
<p>完全にPHPをコードを書いてもらったrewさんと、ずっと使い続けてくれたシロさんに感謝です。</p>
<ul>
<li><a href="http://twitter.com/rewish">rew</a> @ <a href="http://rewish.org">Rewish</a></li>
<li><a href="http://twitter.com/shiroutoSEO">シロ</a> @ <a href="http://kachibito.net">かちびと.net</a></li>
</ul>
<img src="http://5509.me/?ak_action=api_record_view&id=2510&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/wpautopagerize/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ドメインを5509.meに移転したので、WordPress・リダイレクトの設定メモなど</title>
		<link>http://5509.me/log/5509_had_moved</link>
		<comments>http://5509.me/log/5509_had_moved#comments</comments>
		<pubDate>Thu, 06 May 2010 01:30:18 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[memo]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[ドメイン移転]]></category>
		<category><![CDATA[バックアップ]]></category>

		<guid isPermaLink="false">http://5509.me/?p=2454</guid>
		<description><![CDATA[					
					ようやくドメインを http://moto-mono.net/ から http://5509.me/ に移転しました。ドメインの移転ということで、念のため前のデータは全て残しつつ、htaccessで [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2010/05/a0002_002274_m.jpg" alt="" title="ドメインひっこしました" width="500" height="240" class="alignnone size-full wp-image-2497" /></p>
					<p>ようやくドメインを <strong>http://moto-mono.net/</strong> から <strong>http://5509.me/</strong> に移転しました。ドメインの移転ということで、念のため前のデータは全て残しつつ、htaccessで新しいドメインにリダイレクトしています。その辺のメモ。色々キャプチャ取り忘れたので、画像が全然なくて意味わからないかもしれないです。タイトルにもある通り、WordPressでのデータ移転も含めて書きました。</p>
					<h2>準備</h2>
					<h3>1. 新しいドメイン（ディレクトリ）にWordPressをインストールしておく</h3>
					<p>そのままなんですけど、先にインストールしておきます。プレフィクス（テーブル接頭語）は基本的に以前のブログと同じもので大丈夫ですが、同じDBを使う場合はあとあと置換するプレフィクスにしておきます。ここでは<strong>gogo09_</strong>。</p>
					<h3>2. wp-contentをコピーしておく</h3>
					<p>テーマとかプラグイン、アップロードした画像ファイルなどもろもろ入っているのでこれもアップロードしておきます。</p>
					<h3>3. データをまるっとバックアップ</h3>
					<p>データのエクスポートは<a href="http://ilfilosofo.com/blog/wp-db-backup/">WordPress Database Backup</a>で。<br />
					<a href="http://urbangiraffe.com/plugins/redirection/">Redirection</a>も使っているのですが、このRedirectionのログがあほみたいに容量（6MB強）が大きかったのでこれだけチェック外しました。</p>
					<p><a href="http://5509.me/wp-content/uploads/2010/05/55_1.png"><img src="http://5509.me/wp-content/uploads/2010/05/55_1.png" alt="" title="ログのやつ" width="172" height="35" class="alignnone size-full wp-image-2461" /></a></p>
					<h3>4. プレフィクスを置換する</h3>
					<p>そもそも違うDBを使う場合はそのままで問題ないですが、今回は同じDBを使っているので、プレフィクスを置換しました。ダウンロードしたバックアップSQLデータをテキストエディタで開いて（シンタックスハイライトはオフにしないと大変なことになります）、一発置換でいいです。</p>
					<p>&#8220;next_&#8221; >> &#8220;gogo09_&#8221;</p>
					<h2>データの取り込みからWordPressへの適用</h2>
					<h3>1. バックアップデータをインポートする</h3>
					<p>プレフィクス置換済みのものをインポートします。インポートはphpMyAdminのImportから行いました。</p>
					<h3>2. ドメインを書き換える</h3>
					<p>設定が古いドメインのままになっているので、まずはDBを書き換えます。ドメイン設定は、<strong>プレフィクス_options</strong>に含まれています。</p>
					<p><a href="http://5509.me/wp-content/uploads/2010/05/55_2.png"><img src="http://5509.me/wp-content/uploads/2010/05/55_2.png" alt="" title="options" width="92" height="26" class="alignnone size-full wp-image-2465" /></a></p>
					<p>Browseから一覧を表示してsiteurlの項目の値を新しいドメインに書き換えます。</p>
					<p><a href="http://5509.me/wp-content/uploads/2010/05/55_3.png"><img src="http://5509.me/wp-content/uploads/2010/05/55_3-300x12.png" alt="" title="site_url" width="480" class="alignnone size-medium wp-image-2467" /></a></p>
					<h3>3. WordPressにアクセスする</h3>
					<p>http://新しいドメイン/wp-admin からWordPressにアクセスします。するとデータが更新されて、中身盛りだくさんなブログになっているはずです。</p>
					<h4>3-1. 基本設定のWordPressの場所を変更する</h4>
					<p><a href="http://5509.me/wp-content/uploads/2010/05/55_4.png"><img src="http://5509.me/wp-content/uploads/2010/05/55_4.png" alt="" title="WordPressの場所" width="403" height="76" class="alignnone size-full wp-image-2475" /></a></p>
					<p>上のほうですね。新しいドメインに変えます。</p>
					<h4>3-2. アップロードファイルを変更する</h4>
					<p><a href="http://5509.me/wp-content/uploads/2010/05/55_5.png"><img src="http://5509.me/wp-content/uploads/2010/05/55_5-300x24.png" alt="" title="画像のアップロード先" width="300" height="24" class="alignnone size-medium wp-image-2477" /></a></p>
					<p>これも新しいディレクトリに変えておきます。</p>
					<h3>4. 記事などに含まれる古いドメインを新しいドメインに書き換える</h3>
					<p>これは<a href="http://urbangiraffe.com/plugins/search-regex">Search Regex</a>というプラグインを使うと簡単に書き換えることができます。</p>
					<p><a href="http://5509.me/wp-content/uploads/2010/05/55_6.png"><img src="http://5509.me/wp-content/uploads/2010/05/55_6-300x209.png" alt="" title="Search Regex" width="300" height="209" class="alignnone size-medium wp-image-2480" /></a></p>
					<p>検索するとずらっと出てくるので、<strong>Search pattern</strong>に検索語、<strong>Replace pattern</strong>に置換するものを入れて<strong>Replate &#038; Save</strong>ボタンをクリックすることで一発置換できます。</p>
					<p>ここまでで、新しいドメイン上で今までのデータを持ったブログができました。</p>
					<h3>(5.) パーマリンクの変更</h3>
					<p>ドメインを変えたことにあわせて、記事のパーマリンクも変更しました。なんせ長かった･･･</p>
					<p>今までのパーマリンク：<strong>/%year%/%month%/%day%/%postname%.html</strong><br />
					新しいパーマリンク：<strong>/log/%postname%</strong></p>
					<p>だいぶすっきり！</p>
					<h2>mod_rewriteを使ったリダイレクトの設定</h2>
					<p>このままだと諸々登録されている古いブログのほうにアクセスが集まってしまうので、新しいブログへリダイレクトを設定します。htaccessでmod_rewriteの指定を行います。ドメインが変わるので、恒久的なリダイレクトになり、<a href="http://www.asahi-net.or.jp/~ax2s-kmtn/ref/status.html">ステータスコードは301</a>を使います。</p>
					<p>mod_rewriteの指定方法は「<a href="http://webtech.akijapan.com/htaccess/rewrite.phtml">URLの書き換え Rewrite</a>」を参考にしてください。</p>
					<pre>RewriteRule ([^\/\.]+)\.html$ http://5509.me/log/$1 [R=301,L]
RewriteRule index.php http://5509.me/ [R=301,L]
RewriteRule ^(feed|about|labs)$ http://5509.me/$1 [R=301,L]
RewriteRule ^(tag|category)(\/.*)$ http://5509.me/$1$2 [R=301,L]
RewriteRule ^([0-9]+)(\/[0-9]+)? http://5509.me/log/$1$2 [R=301,L]</pre>
					<p>1行目は、旧記事URLから新しいURLへのリダイレクト。<br />
					2行目は、トップページのリダイレクト。<br />
					3行目は、ページとfeedのリダイレクト。<br />
					4行目は、タグとカテゴリページのリダイレクト。<br />
					5行目は、アーカイブページのリダイレクト。</p>
					<h3>記事URLのリダイレクト</h3>
					<p>重要なのは1行目なので、そこだけ解説しておきます。たとえば、要素をふわっと表示させる〜のURLは</p>
					<p>http://5509.me/2010/04/30/<strong>whatinout</strong>.html</p>
					<p>ですが、新しいURLのルールは</p>
					<p>http://5509.me/log/<strong>whatinout</strong></p>
					<p>に変わります。共通する箇所は太字になっているところなので、この部分を正規表現で取得します。正規表現は</p>
					<p><strong>([^\/\.]+)\.html$</strong></p>
					<p>になり、（）で取得した部分を<strong>$1</strong>で取得できるのでリダイレクトのURLは</p>
					<p><strong>http://5509.me/log/$1</strong></p>
					<p>となります。</p>
					<p>にそれぞれなっています。基本的に正規表現が使えるはずですが、<strong>チカッパはapacheのバージョンが1.3.xx系だった</strong>ので <strong>\d{2} とかが使えません</strong>でした。</p>
					<h2>Google Analyticsなど使っているサービスのドメイン変更など</h2>
					<p>最後に、使っているサービスのドメインを変更しておきます。これが結構多くて大変でしたね。。</p>
					<h2>それにしても</h2>
					<p>全部の数字が0とか新鮮ですね･･･なんとなく記念にキャプチャした。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/05/55_8.png" alt="" title="55_8" width="381" height="277" class="alignnone size-full wp-image-2501" /></p>
					<p><img src="http://5509.me/wp-content/uploads/2010/05/55_7.png" alt="" title="55_7" width="281" height="346" class="alignnone size-full wp-image-2502" /></p>
					<p>さみしくなんかないよ･･･！</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2454&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/5509_had_moved/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>新しい名刺ができました</title>
		<link>http://5509.me/log/newcard</link>
		<comments>http://5509.me/log/newcard#comments</comments>
		<pubDate>Mon, 03 May 2010 07:10:42 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[Diary]]></category>
		<category><![CDATA[ロゴ]]></category>
		<category><![CDATA[名刺]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=2432</guid>
		<description><![CDATA[					4月中ごろに友だちのデザイナーに新しい名刺を作ってもらいました。僕のイメージでお願いしたのですが、かなりかわいい名刺になってだいぶ満足してます。次の4月まではこの名刺で、通称たぬきカードです。よろしくです。
	 [...]]]></description>
			<content:encoded><![CDATA[					<p>4月中ごろに友だちのデザイナーに新しい名刺を作ってもらいました。僕のイメージでお願いしたのですが、かなりかわいい名刺になってだいぶ満足してます。次の4月まではこの名刺で、通称<strong>たぬきカード</strong>です。よろしくです。</p>
					<p>で、名刺と一緒にロゴとパターンも作ってもらって、ブログのロゴと背景をそれに置き換えました。ロゴは<a href="http://u2.5509.me/log/249">ゆに</a>をモチーフにしたものだそうでこれまたかわいい･･･</p>
					<p>ちなみに裏のかえるは自分で貼ったステッカーなので、お渡ししてる分にはかえるはいないです。でも貼ったらますますかわいくなったので、なにか貼りたいなー。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/05/5509card.jpg" alt="5509 card" title="5509 card" width="500" height="333" class="alignnone size-full wp-image-2433" /></p>
					<h2>5509の読み方</h2>
					<p>「ごーごーぜろきゅー」が正しい読み方らしいですけど、「ごじゅうごおく」っていう読み方もあります。もう「ごーごー」でいいんじゃないですかね（投げやり</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2432&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/newcard/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ありそうでなかった？要素をふわっと表示させるjQueryプラグイン whatInOut</title>
		<link>http://5509.me/log/whatinout</link>
		<comments>http://5509.me/log/whatinout#comments</comments>
		<pubDate>Fri, 30 Apr 2010 01:45:49 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=2412</guid>
		<description><![CDATA[					Windows7のウィンドウのようにふわっと表示・非表示させることができます。ふわっとと、whatをかけ･･･（ｒｙ
					色々な環境で試せてないので、バグというか予期しない動きは多いかもしれないです。tw [...]]]></description>
			<content:encoded><![CDATA[					<p>Windows7のウィンドウのようにふわっと表示・非表示させることができます。ふわっとと、whatをかけ･･･（ｒｙ<br />
					色々な環境で試せてないので、バグというか予期しない動きは多いかもしれないです。twitterかコメントで報告もらえれば対応できる範囲で対応します。</p>
					<p>ふわっとするためだけにeasingが必要になるいけてない仕様なんですけど、easingを別のところでも使ってカバーしてください（！）それかeasing関数を書いてもらえると･･･</p>
					<p class="link"><a href="http://5509.me/sample/whatinout/" class="sample">Live demo</a><br />
					<a href="http://5509.me/sample/archive/whatinout.zip" class="download">Download demo files</a></p>
					<p><span id="more-2412"></span></p>
					<h2>導入方法</h2>
					<h3>1. jQueryとeasingプラグイン、whatinoutを読み込む。</h3>
					<pre>&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/easing.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/whatinout.js&quot;&gt;&lt;/script&gt;</pre>
					<h3>3. 実行する</h3>
					<p>$()で対象にする要素を指定します。実際に使う場合は、ふわっと表示させたいときにwhatIn()、ふわっと消したいときにwhatOut()、ふわっとスライドインしたいときにwhatSlideIn()、ふわっとスライドアウトしたいときにwhatSlideOut()を実行します。この辺はshow()やhide()、fadeIn()やfadeOut()と使い方がよく似ているので問題はないでしょう。</p>
					<pre>jQuery(function($) {
	$('.whatInOut').whatIn({
		sizeFrom: 95,
		duration: 500
	});
	$('.whatInOut').whatOut({
		sizeTo: 95,
		duration: 500
	});
	$('.whatInOut').whatSlideIn();
	$('.whatInOut').whatSlideOut();
});</pre>
					<h2>オプション</h2>
					<p>実行時の引数にオプションを与えることで、設定をある程度変えることができます。使うことが出来るオプションは以下の通りです。</p>
					<p>whatIn()とwhatOut()、whatSlideIn()とwhatSlideOut()ではそれぞれオプション項目の名前がちょっと違います。</p>
					<h3>whatIn()</h3>
					<table border="1" class="lftable">
					<tr>
					<th>オプション項目</th>
					<th>内容</th>
					</tr>
					<tr>
					<td>easing</td>
					<td>好きなeasingを指定できます。デフォルトはeaseInOutCircでeasingプラグインを読んでない場合はswing</td>
					</tr>
					<tr>
					<td>duration</td>
					<td>表示するまでの時間。ミリセカンドかslow, normal, fast</td>
					</tr>
					<tr>
					<td>sizeFrom</td>
					<td>元の大きさの何%の大きさからアニメーションを始めるか。%ですが、指定は数値のみ</td>
					</tr>
					<tr>
					<td>callback</td>
					<td>コールバック関数<br />function(){ handler }</td>
					</tr>
					</table>
					<h3>whatOut()</h3>
					<table border="1" class="lftable">
					<tr>
					<th>オプション項目</th>
					<th>内容</th>
					</tr>
					<tr>
					<td>easing</td>
					<td>好きなeasingを指定できます。デフォルトはeaseInOutCircでeasingプラグインを読んでない場合はswing</td>
					</tr>
					<tr>
					<td>duration</td>
					<td>表示するまでの時間。ミリセカンドかslow, normal, fast</td>
					</tr>
					<tr>
					<td>sizeTo</td>
					<td>元の大きさの何%の大きさまでアニメーションを行うか。%ですが、指定は数値のみ</td>
					</tr>
					<tr>
					<td>callback</td>
					<td>コールバック関数<br />function(){ handler }</td>
					</tr>
					</table>
					<h3>whatSlideIn()</h3>
					<table border="1" class="lftable">
					<tr>
					<th>オプション項目</th>
					<th>内容</th>
					</tr>
					<tr>
					<td>easing</td>
					<td>好きなeasingを指定できます。デフォルトはeaseInOutCircでeasingプラグインを読んでない場合はswing</td>
					</tr>
					<tr>
					<td>duration</td>
					<td>表示するまでの時間。ミリセカンドかslow, normal, fast</td>
					</tr>
					<tr>
					<td>posIn</td>
					<td>元の位置からどれだけずらした状態から表示するか。下から表示する場合正の値、上から表示する場合負の値（&#8217;-20&#8242;などのように)を指定</td>
					</tr>
					<tr>
					<td>callback</td>
					<td>コールバック関数<br />function(){ handler }</td>
					</tr>
					</table>
					<h3>whatSlideOut()</h3>
					<table border="1" class="lftable">
					<tr>
					<th>オプション項目</th>
					<th>内容</th>
					</tr>
					<tr>
					<td>easing</td>
					<td>好きなeasingを指定できます。デフォルトはeaseInOutCircでeasingプラグインを読んでない場合はswing</td>
					</tr>
					<tr>
					<td>duration</td>
					<td>表示するまでの時間。ミリセカンドかslow, normal, fast</td>
					</tr>
					<tr>
					<td>posOut</td>
					<td>元の位置からどれだけずらした状態で非表示するか。下にずらして非表示する場合正の値、上にずらして非表示する場合負の値（&#8217;-20&#8242;などのように)を指定</td>
					</tr>
					<tr>
					<td>callback</td>
					<td>コールバック関数<br />function(){ handler }</td>
					</tr>
					</table>
					<p class="link"><a href="http://5509.me/sample/whatinout/" class="sample">Live demo</a><br />
					<a href="http://5509.me/sample/archive/whatinout.zip" class="download">Download demo files</a></p>
					<h2>仕様</h2>
					<ul>
					<li>インラインな要素には適用できないっぽいです（改善中かも</li>
					<li>連続して実行してもたぶん大丈夫</li>
					<li>クロスブラウザ</li>
					</ul>
					<h2>Special Thanks</h2>
					<p>mukimukiメンバ、<a href="http://twitter.com/yunozy/">@yunozy</a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2412&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/whatinout/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Nite LP, Disk 9「Coder&#8217;s Higher」で講演しました</title>
		<link>http://5509.me/log/lp9-2</link>
		<comments>http://5509.me/log/lp9-2#comments</comments>
		<pubDate>Wed, 21 Apr 2010 10:30:43 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[Diary]]></category>
		<category><![CDATA[memo]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=2378</guid>
		<description><![CDATA[					
					［撮影：おかだよういち］
					CSS Nite LP, Disk 9「Coder&#8217;s Higher」で「Coding with jQuery」というタイトルのお話をさせていただきま [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2010/04/dsc3000_1.jpg" alt="LP9_jQuery_tokuda" title="LP9_jQuery_tokuda" width="500" height="332" class="alignnone size-full wp-image-2390" /><br />
					<span class="caption">［撮影：<a href="http://s-style-arts.info/">おかだよういち</a>］</span></p>
					<p><a href="http://lp9.cssnite.jp">CSS Nite LP, Disk 9「Coder&#8217;s Higher」</a>で「<strong>Coding with jQuery</strong>」というタイトルのお話をさせていただきました。</p>
					<p>出演させていただいたことはもちろん、ずっとお話したかった方々にお会いできたり、<a href="http://twitter.com/rewish/mukimuki">muki</a>オフだったりとても楽しい1日でした。出演者のみなさま、聞いてくれたみなさま、スタッフのみなさま、本当にありがとうございました。</p>
					<p>どれくらい緊張したのかっていうのは、写真の顔のてかり具合を見れいただければ･･･汗がはんぱなかったです。終わったあとは髪型が60%くらい変わってましたね。</p>
					<p>本当はもっと突っ込んだところとかも話したかったのですが、結構流し気味だったので。。ともあれ、今回一番伝えたかったことは、jQueryもっと使ってみようよ！っていうことで、少しでもやってみよう！という気持ちになっていただけたのならうれしいです。</p>
					<p>あ、あとたぬきも人気だったようでなによりです。たぬきかわいいねんで。</p>
					<h2>紹介した本</h2>
					<p>この2つはかなりの良著で、JSを始めたいと思っているコーダー・Webデザイナーの方には最適です。JSの基礎もあったりするのですが、とりあえずはこの2つを読んでみて、突っ込んだところが必要になってきてからでいいと思います。</p>
					<table  border="0" cellpadding="5" class="amazon">
					<tr>
					<td colspan="2"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4048684116/norimania-22/" target="_blank">Web制作の現場で使う jQueryデザイン入門 (WEB PROFESSIONAL)</a></td>
					</tr>
					<tr>
					<td valign="top"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4048684116/norimania-22/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/519BkKhFUWL._SL160_.jpg" border="0" alt="Web制作の現場で使う jQueryデザイン入門 (WEB PROFESSIONAL)" /></a></td>
					<td valign="top"><font size="-1">西畑一馬</p>
					<p>アスキー・メディアワークス  2010-02-12<br />売り上げランキング : 41463</p>
					<p><strong>おすすめ平均  </strong><img src="http://g-images.amazon.com/images/G/01/detail/stars-5-0.gif" alt="star" /><br /><img src="http://g-images.amazon.com/images/G/01/detail/stars-5-0.gif" alt="star" />プログラム初心者にお勧め<br /><img src="http://g-images.amazon.com/images/G/01/detail/stars-5-0.gif" alt="star" />自分でJavascript操作したい人にお勧め</p>
					<p><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4048684116/norimania-22/" target="_blank">Amazonで詳しく見る</a></font><font size="-2"> by <a href="http://www.goodpic.com/mt/aws/index.html" >G-Tools</a></font></td>
					</tr>
					</table>
					<p>追記： DOM Scripting標準ガイドブックは絶版なようで、Amazonでもマーケットプレイスでしか買うことができません。現在ジュンク堂であれば、在庫が少しあるようなので、予定がある人はお早めにどうぞ。</p>
					<p><a href="http://www.junkudo.co.jp/detail.jsp?ID=0107952153">http://www.junkudo.co.jp/detail.jsp?ID=0107952153</a></p>
					<table  border="0" cellpadding="5" class="amazon">
					<tr>
					<td colspan="2"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4839922373/norimania-22/" target="_blank">DOM Scripting 標準ガイドブック ~やさしく学ぶ、JavaScriptとDOMによるWebデザイン~ (Web Designing BOOKS)</a></td>
					</tr>
					<tr>
					<td valign="top"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4839922373/norimania-22/" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41ER9SJujTL._SL160_.jpg" border="0" alt="DOM Scripting 標準ガイドブック ~やさしく学ぶ、JavaScriptとDOMによるWebデザイン~ (Web Designing BOOKS)" /></a></td>
					<td valign="top"><font size="-1">Jeremy Keith (著), 中村 享介 (監修), 吉川 典秀 (翻訳)</p>
					<p>毎日コミュニケーションズ  2007-06-21<br />売り上げランキング : 18058</p>
					<p><strong>おすすめ平均  </strong><img src="http://g-images.amazon.com/images/G/01/detail/stars-4-5.gif" alt="star" /><br /><img src="http://g-images.amazon.com/images/G/01/detail/stars-5-0.gif" alt="star" />これからのWEBデザインには必須の本<br /><img src="http://g-images.amazon.com/images/G/01/detail/stars-1-0.gif" alt="star" />初心者にはおすすめできません。<br /><img src="http://g-images.amazon.com/images/G/01/detail/stars-5-0.gif" alt="star" />デザイナに役立つ良書です</p>
					<p><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4839922373/norimania-22/" target="_blank">Amazonで詳しく見る</a></font><font size="-2"> by <a href="http://www.goodpic.com/mt/aws/index.html" >G-Tools</a></font></td>
					</tr>
					</table>
					<img src="http://5509.me/?ak_action=api_record_view&id=2378&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/lp9-2/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>たった1行でブラウザにFlashがインストールされているか判定するJSコード</title>
		<link>http://5509.me/log/isflashinstalled</link>
		<comments>http://5509.me/log/isflashinstalled#comments</comments>
		<pubDate>Fri, 09 Apr 2010 05:35:19 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=2351</guid>
		<description><![CDATA[					1行っていうのはアレですが、、
					下記のisFlashInstalledを宣言しておいて
					var isFlashInstalled=function(){if(navigator.plugin [...]]]></description>
			<content:encoded><![CDATA[					<p>1行っていうのはアレですが、、<br />
					下記の<strong>isFlashInstalled</strong>を宣言しておいて</p>
					<pre>var isFlashInstalled=function(){if(navigator.plugins["Shockwave Flash"]){return true;}try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash");return true;}catch(a){return false;}}();</pre>
<p>if文で使えます</p>
<pre>if ( isFlashInstalled ) {
&nbsp;&nbsp;alert('Flash Player is installed');
} else {
&nbsp;&nbsp;alert('Flash Player is not installed');
}</pre>
					<p class="link"><a href="http://5509.me/sample/isFlashInstalled">実行サンプル</a></p>
					<p><span id="more-2351"></span></p>
					<p>圧縮前のソースはこんなんです。</p>
					<pre>var isFlashInstalled = function() {
&nbsp;&nbsp;if ( navigator.plugins['Shockwave Flash'] ) {
&nbsp;&nbsp;&nbsp;&nbsp;return true;
&nbsp;&nbsp;}
&nbsp;&nbsp;try {
&nbsp;&nbsp;&nbsp;&nbsp;new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
&nbsp;&nbsp;&nbsp;&nbsp;return true;
&nbsp;&nbsp;} catch (e) {
&nbsp;&nbsp;&nbsp;&nbsp;return false;
&nbsp;&nbsp;}
}();</pre>
					<p>ソース見てもらえば分かると思うんですけど、本当は</p>
					<pre>!!navigator.plugins['Shockwave Flash']</pre>
<p>これだけでいけるんですよね。IEのせいで超ムダに長くなってますw</p>
<img src="http://5509.me/?ak_action=api_record_view&id=2351&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/isflashinstalled/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Urchin6のUTMとGoogle Analytics(urchin.js, ga.js)を併用するとき</title>
		<link>http://5509.me/log/urchin-utm-with-googleanalytics</link>
		<comments>http://5509.me/log/urchin-utm-with-googleanalytics#comments</comments>
		<pubDate>Fri, 02 Apr 2010 03:38:07 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[memo]]></category>
		<category><![CDATA[Urchin]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=2345</guid>
		<description><![CDATA[					備忘として。。
					Urchin6のUTMとGoogle Analytics(以下ga)を併用するときはUrchin側の導入コードが少し変わります。
					1. 必要なファイルの準備
					 「_ [...]]]></description>
			<content:encoded><![CDATA[					<p>備忘として。。</p>
					<p>Urchin6のUTMとGoogle Analytics(以下ga)を併用するときはUrchin側の導入コードが少し変わります。</p>
					<h2>1. 必要なファイルの準備</h2>
					<p> 「__utm.gif」をサーバー（ドメイン）ルートにコピー。</p>
					<h2>2. UTMを利用するためにgaのコードに追加</h2>
					<h3>urchin.jsを使っている場合</h3>
					<pre>&lt;script type="text/javascript"&gt;
_userv=2; // ここを追加
_uacct="UA-XXXXXXX-Y";
urchinTracker();
&lt;/script&gt;</pre>
					<h3>ga.jsを使っている場合</h3>
					<pre>&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-xxxxxx-x");
pageTracker._setLocalRemoteServerMode(); // ここを追加
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;</pre>
					<p>どちらもローカル サーバー モードの変更で、デフォルトではGAのサーバーのみに送信しているので、これをローカルサーバー（Urchinのサーバー）にも送信するように設定できます。</p>
					<p>参考： <a href="http://www.google.com/support/googleanalytics/bin/answer.py?hl=jp&#038;answer=76305">http://www.google.com/support/googleanalytics/bin/answer.py?hl=jp&#038;answer=76305</a></p>
					<p>ドキュメントを見てると、「__utm.gif」はルートじゃなくてもよさそう。その場合は</p>
					<pre>_ugifpath = 'newLocalGifPath'; // urchin.jsの場合
pageTracker._setLocalGifPath(newLocalGifPath); // ga.jsの場合</pre>
					<p>でそれぞれ指定してあげればよさそう。<br />
					あ、Urchinの取得タイプをUTMに変更するのを忘れずに･･･</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2345&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/urchin-utm-with-googleanalytics/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TwitterのHover Cardを実装するjQueryプラグイン twttrFloatTip</title>
		<link>http://5509.me/log/twitter-float-tip</link>
		<comments>http://5509.me/log/twitter-float-tip#comments</comments>
		<pubDate>Wed, 17 Mar 2010 04:34:14 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=2305</guid>
		<description><![CDATA[					
					100317 16:28 追記：
					Twitterの言語が日本語になっている場合、Hover Cardは表示されないようです。Englishにすれば表示されるので、オフィシャルのものとあわせ [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2010/03/twttrfloattip1.png" alt="twttrfloattip1" title="twttrfloattip1" width="336" height="296" class="alignnone size-full wp-image-2309" /></p>
					<p class="note"><strong>100317 16:28 追記：<br />
					Twitterの言語が日本語になっている場合、Hover Cardは表示されないようです。Englishにすれば表示されるので、オフィシャルのものとあわせて確認してみてください <img src='http://5509.me/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong>
					<p>最近Twitterに実装された、HoverCard（@screen_name リンクにカーソルをのせるとユーザー情報が表示されるやつ）を実装できるjQueryプラグインです。</p>
					<p>デザインがちょっと違う・listsがfavouritesになっている、など違う点もあるのですが、基本的には同じように実装できるようにしました。インラインは現時点で未実装ですが、要望がそれなりにあれば実装しようかと思っています。</p>
					<p class="link"><a href="http://twitter-float-tip.googlecode.com/svn/trunk/index.html" class="sample">Live demo</a><br />
					<a href="http://twitter-float-tip.googlecode.com/files/twttrFloatTip1.4.zip" class="download">Download demo files</a></p>
					<p><span id="more-2305"></span></p>
					<h2>導入方法</h2>
					<h3>1.twttrFloatTip.css、 jQueryとtwttrFloatTip.jsを読み込む。</h3>
					<pre name="code" class="html">

&lt;link type=&quot;text/css&quot; rel=&quot;stylesheet&quot; href=&quot;css/twttrFloatTip.css&quot; /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.com/jsapi&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;google.load(&#039;jquery&#039;,&#039;1.4.2&#039;);&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/twttrFloatTip.js&quot;&gt;&lt;/script&gt;
</pre>
					<h3>2. 適用する要素を決める</h3>
					<p>サンプルでは <strong>a.tw</strong>に適用しています。要素のテキストをTwitterのscreen_nameとして情報を取得します。</p>
					<pre name="code" class="html">

&lt;a href=&quot;http://twitter.com/dotcoder&quot; class=&quot;tw&quot;&gt;dotcoder&lt;/a&gt;
</pre>
					<h3>3. 実行する</h3>
					<p>$()で対象にする要素を指定します。</p>
					<pre name="code" class="js">

jQuery(function($){
&nbsp;&nbsp;$(&#039;a.tw&#039;).twttrFloatTip();
});
</pre>
					<h2>使い方？</h2>
					<p>ソースを読んで適用したら、対象要素にカーソルをのせるとカートが表示されます。要素が表示領域の半分よりも上にあれば、要素の下に、半分よりも下にあれば、要素の上にカードが表示されます。</p>
					<h3>上に表示されるキャプチャ</h3>
					<p><img src="http://5509.me/wp-content/uploads/2010/03/twttrfloattip1.png" alt="twttrfloattip1" title="twttrfloattip1" width="336" height="296" class="alignnone size-full wp-image-2309" /></p>
					<h3>下に表示されるキャプチャ</h3>
					<p><img src="http://5509.me/wp-content/uploads/2010/03/twttrfloattip2.png" alt="twttrfloattip2" title="twttrfloattip2" width="324" height="288" class="alignnone size-full wp-image-2310" /></p>
					<p>実際の動き等はデモを見てください。</p>
					<h2>オプション</h2>
					<p>実行時の引数にオプションを与えることで、設定をある程度変えることができます。使うことが出来るオプションは以下の通りです。</p>
					<table border="1" class="lftable">
					<tr>
					<th>オプション項目</th>
					<th>内容</th>
					</tr>
					<tr>
					<td>user_name</td>
					<td>ユーザー名を取得する対象<br />text, href, attr<br />デフォルトはtextで対象要素のテキスト</td>
					</tr>
					<tr>
					<td>attr</td>
					<td>user_nameでattrを指定した際の属性</td>
					</tr>
					<tr>
					<td>href</td>
					<td>対象要素をaにしてかつ、user_nameをhrefにした際、スクリーン名を取得するためにカットするURLの部分</td>
					</tr>
					<tr>
					<td>loadingText</td>
					<td>ロード時に表示するテキスト</td>
					</tr>
					<tr>
					<td>hideDuration</td>
					<td>TwttrFloatTipからカーソルが離れたときにTipが消えるまでの間隔</td>
					</tr>
					<tr>
					<td>spaceFix</td>
					<td>カーソルからTwttrFloatTipまでの距離</td>
					</tr>
					<tr>
					<td>temp</td>
					<td>テンプレート（後述）<br />function(data) {}</td>
					</tr>
					<tr>
					<td>loading</td>
					<td>ローディング時のテンプレート（後述）<br />function() {}</td>
					</tr>
					</table>
					<h3>テンプレート（temp）</h3>
					<p>引数のdataからパラメータを取得できるので、自由にテンプレートを変更できます。使えるパラメータは以下の通りです。</p>
					<table border="1" class="lftable">
					<tr>
					<th>パラメータ</th>
					<th>取得出来る値</th>
					</tr>
					<tr>
					<td>profile_image_url</td>
					<td>ユーザーのアイコンのソース</td>
					</tr>
					<tr>
					<td>name</td>
					<td>ユーザー名</td>
					</tr>
					<tr>
					<td>screen_name</td>
					<td>スクリーン名</td>
					</tr>
					<tr>
					<td>location</td>
					<td>場所</td>
					</tr>
					<tr>
					<td>url</td>
					<td>TwitterURL</td>
					</tr>
					<tr>
					<td>description</td>
					<td>紹介文</td>
					</tr>
					<tr>
					<td>latest_tweet</td>
					<td>最新のつぶやき</td>
					</tr>
					<tr>
					<td>statuses_count</td>
					<td>つぶやき数</td>
					</tr>
					<tr>
					<td>friends_count</td>
					<td>フォロー数</td>
					</tr>
					<tr>
					<td>followers_count</td>
					<td>フォロワー数</td>
					</tr>
					<tr>
					<td>favourites_count</td>
					<td>お気に入り数</td>
					</tr>
					</table>
					<h4>テンプレートの書き方</h4>
					<p>テンプレートは以下のように、function(data) {} の中でreturnで返すようにします。</p>
					<pre>jQuery(function($){
&nbsp;&nbsp;$('a.tw').twttrFloatTip({
&nbsp;&nbsp;&nbsp;&nbsp;temp: function(data) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return [
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&lt;div&gt;',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data['user_name'],
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&lt;/div&gt;'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;].join('');
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;});
});</pre>
					<h3>テンプレート（loading）</h3>
					<p>ローディングテンプレートの中では、ローディングテキストのみ利用できます。ローディングテキストは「this.loadingText」です。</p>
					<h3>オプション利用時のサンプルコード</h3>
					<pre>jQuery(function($){
&nbsp;&nbsp;$('a.tw').twttrFloatTip({
&nbsp;&nbsp;&nbsp;&nbsp;user_name: 'href',
&nbsp;&nbsp;&nbsp;&nbsp;href: 'http://hogehoge.com/',
&nbsp;&nbsp;&nbsp;&nbsp;loadingText: 'hogeding',
&nbsp;&nbsp;&nbsp;&nbsp;hideDuration: 100,
&nbsp;&nbsp;&nbsp;&nbsp;temp: function(data) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return [
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&lt;div&gt;',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data['user_name'],
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&lt;/div&gt;'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;].join('');
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;});
});</pre>
					<p class="link"><a href="http://twitter-float-tip.googlecode.com/svn/trunk/index.html" class="sample">Live demo</a><br />
					<a href="http://twitter-float-tip.googlecode.com/files/twttrFloatTip1.4.zip" class="download">Download demo files</a></p>
					<h2>仕様</h2>
					<p><strong>*</strong> の項目はオプション等で変更できるようになる予定です。</p>
					<ul>
					<li>データの受信にはJSONPを使ってます</li>
					<li>一度受信したデータはページを遷移するまでキャッシュされます</li>
					<li><strong>*</strong> インラインのHover Cardは現在未実装</li>
					<li>受信しているデータの関係で、オフィシャルで lists になっている項目は favourites になってます</li>
					<li><strong>*</strong> Lates Tweet で @で始まるユーザ名やリンクがある場合は、アンカーを貼る仕様にしています</li>
					<li>要素からカーソルを外して500ミリセカンド後にCardが消えるようになっています</li>
					</ul>
					<h2>Special Thanks</h2>
					<p><a href="http://twitter.com/rewish">@rew</a> @ <a href="http://rewish.org">rewish</a><br />
					割と強引に色々見てもらいました。</p>
					<h2>更新履歴</h2>
					<dl>
					<dt>2010.03.31</dt>
					<dd>横の判定も追加して、右寄りのときは左に表示するように</dd>
					<dt>2010.03.29</dt>
					<dd>オプション項目を追加</dd>
					</dl>
					<img src="http://5509.me/?ak_action=api_record_view&id=2305&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/twitter-float-tip/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jQueryライクなDOMにスタイルを適用する関数</title>
		<link>http://5509.me/log/set-styles-like-jquery-css-method</link>
		<comments>http://5509.me/log/set-styles-like-jquery-css-method#comments</comments>
		<pubDate>Sun, 14 Mar 2010 16:13:14 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=2293</guid>
		<description><![CDATA[					jQueryは.css()を使えば、まるでCSSを書いているかのようにスタイルを適用できて便利ですよね。jQueryを使わない場合でも同じように書けるととても便利なので、いつも以下みたいな関数を用意してます。
 [...]]]></description>
			<content:encoded><![CDATA[					<p>jQueryは.css()を使えば、まるでCSSを書いているかのようにスタイルを適用できて便利ですよね。jQueryを使わない場合でも同じように書けるととても便利なので、いつも以下みたいな関数を用意してます。</p>
					<pre>// Set Styles
function set_styles(elm, hash) {
&nbsp;&nbsp;for( var c in hash ) {
&nbsp;&nbsp;&nbsp;&nbsp;elm.style[c] = hash[c];
&nbsp;&nbsp;}
}</pre>
					<p>これさえあれば、あとは簡単</p>
					<pre>set_styles(element, {
&nbsp;&nbsp;margin: '5px 0 5px 5px',
&nbsp;&nbsp;width: '100px',
&nbsp;&nbsp;height: '100px',
&nbsp;&nbsp;fontSize: '14px'
});</pre>
					<p>こんな感じにjQueryの.css()と同じように（ちょっと違うけど）書けます。便利。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2293&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/set-styles-like-jquery-css-method/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Google Analyticsのurchin.js(古いやつ)でhttp・httpsどちらにも対応させる</title>
		<link>http://5509.me/log/using-urchin-js-with-both-http-and-https-protocol</link>
		<comments>http://5509.me/log/using-urchin-js-with-both-http-and-https-protocol#comments</comments>
		<pubDate>Wed, 10 Mar 2010 05:49:25 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[memo]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=2269</guid>
		<description><![CDATA[					
					普段Google Analyticsを利用するとき、デフォルトでga.jsで利用するようになっていますし、基本的にurchin.js（古いやつ）はUrchinと併用するときくらいしか使わないと思いま [...]]]></description>
			<content:encoded><![CDATA[					<p><img src="http://5509.me/wp-content/uploads/2010/03/ga11.png" alt="ga1" title="ga1" width="313" height="50" class="alignnone size-full wp-image-2274" /></p>
					<p>普段Google Analyticsを利用するとき、デフォルトでga.jsで利用するようになっていますし、基本的にurchin.js（古いやつ）は<a href="http://www.runexy.co.jp/enterprise/urchin/outline/">Urchin</a>と併用するときくらいしか使わないと思いますが、、</p>
					<p>gaはデフォルトでhttp・httpsに対応したコードを生成するので問題ないですが、上記のリンクから古いコードを選ぶと、最初に指定したドメインに対してしかコードを生成しません。</p>
					<p>たとえば http://5509.me に対してurchin.jsのコードを生成すると以下のようになります。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/03/ga21.png" alt="ga2" title="ga2" width="450" class="alignnone size-full wp-image-2288" /></p>
					<p>これをhttp・httpsが混在するCMSなどで利用すると、IEではhttpsのページで以下のようなセキュリティ警告が表示されます。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/03/ga3.gif" alt="ga3" title="ga3" width="431" height="125" class="alignnone size-full wp-image-2276" /></p>
					<p>解決するには、ga.jsの生成コードのようにURLのprotocolによって読み込み先を変える必要があります。</p>
					<p>この部分を･･･</p>
					<pre>&#60;&#115;&#99;&#114;&#105;&#112;&#116;&#32;&#115;&#114;&#99;&#61;&#34;&#104;&#116;&#116;&#112;&#115;&#58;&#47;&#47;&#115;&#115;&#108;&#46;&#103;&#111;&#111;&#103;&#108;&#101;&#45;&#97;&#110;&#97;&#108;&#121;&#116;&#105;&#99;&#115;&#46;&#99;&#111;&#109;&#47;&#117;&#114;&#99;&#104;&#105;&#110;&#46;&#106;&#115;&#34;&#32;&#116;&#121;&#112;&#101;&#61;&#34;&#116;&#101;&#120;&#116;&#47;&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#34;&#62;&#60;&#47;&#115;&#99;&#114;&#105;&#112;&#116;&#62;</pre>
<p>以下のコードに修正する</p>
<pre>&#60;&#115;&#99;&#114;&#105;&#112;&#116;&#32;&#116;&#121;&#112;&#101;&#61;&#34;&#116;&#101;&#120;&#116;&#47;&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#34;&#62;&#10;&#118;&#97;&#114;&#32;&#103;&#97;&#74;&#115;&#72;&#111;&#115;&#116;&#32;&#61;&#32;&#40;&#40;&#34;&#104;&#116;&#116;&#112;&#115;&#58;&#34;&#32;&#61;&#61;&#32;&#100;&#111;&#99;&#117;&#109;&#101;&#110;&#116;&#46;&#108;&#111;&#99;&#97;&#116;&#105;&#111;&#110;&#46;&#112;&#114;&#111;&#116;&#111;&#99;&#111;&#108;&#41;&#32;&#63;&#32;&#34;&#104;&#116;&#116;&#112;&#115;&#58;&#47;&#47;&#115;&#115;&#108;&#46;&#34;&#32;&#58;&#32;&#34;&#104;&#116;&#116;&#112;&#58;&#47;&#47;&#119;&#119;&#119;&#46;&#34;&#41;&#59;&#10;&#100;&#111;&#99;&#117;&#109;&#101;&#110;&#116;&#46;&#119;&#114;&#105;&#116;&#101;&#40;&#117;&#110;&#101;&#115;&#99;&#97;&#112;&#101;&#40;&#34;&#37;&#51;&#67;&#115;&#99;&#114;&#105;&#112;&#116;&#32;&#115;&#114;&#99;&#61;&#39;&#34;&#32;&#43;&#32;&#103;&#97;&#74;&#115;&#72;&#111;&#115;&#116;&#32;&#43;&#32;&#34;&#103;&#111;&#111;&#103;&#108;&#101;&#45;&#97;&#110;&#97;&#108;&#121;&#116;&#105;&#99;&#115;&#46;&#99;&#111;&#109;&#47;&#117;&#114;&#99;&#104;&#105;&#110;&#46;&#106;&#115;&#39;&#32;&#116;&#121;&#112;&#101;&#61;&#39;&#116;&#101;&#120;&#116;&#47;&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#39;&#37;&#51;&#69;&#37;&#51;&#67;&#47;&#115;&#99;&#114;&#105;&#112;&#116;&#37;&#51;&#69;&#34;&#41;&#41;&#59;&#10;&#60;&#47;&#115;&#99;&#114;&#105;&#112;&#116;&#62;</pre>
					<p>これでセキュリティ警告が出ることもなくなります。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2269&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/using-urchin-js-with-both-http-and-https-protocol/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>じわじわ便利なjQuery1.4で追加された機能いろいろ+α</title>
		<link>http://5509.me/log/jquery1-4-plus-alpha</link>
		<comments>http://5509.me/log/jquery1-4-plus-alpha#comments</comments>
		<pubDate>Tue, 09 Mar 2010 01:22:44 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[memo]]></category>
		<category><![CDATA[まとめ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=2222</guid>
		<description><![CDATA[					1月14日にjQuery1.4がリリースされましたが、なかなか手をつけられずにいること早2ヶ月･･･。ようやくちゃんと使ってみようということで色々見てると、それにしても痒いところに手が届くというかなんというか、 [...]]]></description>
			<content:encoded><![CDATA[					<p>1月14日にjQuery1.4がリリースされましたが、なかなか手をつけられずにいること早2ヶ月･･･。ようやくちゃんと使ってみようということで色々見てると、それにしても痒いところに手が届くというかなんというか、すばらしいですね。</p>
					<p>いまさら感満載なので、みなさん既に知ってると思いますがいくつかメモしておくのと、もしかしたらあんまり知られてないかも知れないjQueryの機能も少し紹介しておきます。<br />
					<span id="more-2222"></span></p>
					<h2>トピックス</h2>
					<ul>
					<li><a href="#point1">属性などをまとめて指定+ついでにイベントなどもまとめて指定</a></li>
					<li><a href="#point2">複数イベントをまとめてbind</a></li>
					<li><a href="#point3">個別にeasing指定</a></li>
					<li><a href="#point4">アニメーションを指定時間待機させる.delay()</a></li>
					<li><a href="#point5">DOMオブジェクトを丸ごと配列に入れる.toArray()</a></li>
					<li><a href="#point6">.offset()で値を書き込めるようになった</a></li>
					<li><a href="#point7">1.4じゃないけど、もしかしたらあんまり知られていない機能</a>
					<ul>
					<li><a href="#point7-1">.append()メソッドで複数個のオブジェクトをappendする</a></li>
					</li>
					<li><a href="#point7-2">jQueryのメソッドのアクセス方法</a></li>
					</li>
					<li><a href="#point7-3">.hover()の真相</a></li>
					</li>
					</ul>
					</li>
					</ul>
					<h2 id="point1">属性などをまとめて指定+ついでにイベントなどもまとめて指定</h2>
					<p>これかなり便利というか、すっきり書けます。</p>
					<p>今までも属性はまとめて指定できたのですが、テキストとかイベントとかCSSとかはチェーンで繋いで書いてましたよね。こんな感じに。分かりやすいと言えば分かりやすいけど、やっぱりどうしても読みにくいですね。</p>
					<pre>$('&lt;a/&gt;')
&nbsp;&nbsp;.attr({
&nbsp;&nbsp;&nbsp;&nbsp;id: 'sample',
&nbsp;&nbsp;&nbsp;&nbsp;name: 'sample',
&nbsp;&nbsp;&nbsp;&nbsp;href: 'http://5509.me'
&nbsp;&nbsp;})
&nbsp;&nbsp;.click(function() {
&nbsp;&nbsp;&nbsp;&nbsp;alert('clicked');
&nbsp;&nbsp;})
&nbsp;&nbsp;.css({
&nbsp;&nbsp;&nbsp;&nbsp;paddingBottom: '2.5em',
&nbsp;&nbsp;&nbsp;&nbsp;fontSize: '14px'
&nbsp;&nbsp;})
&nbsp;&nbsp;.text('click me!');</pre>
					<p>1.4ではこう書けます。。</p>
					<pre>$('&lt;a/&gt;', {
&nbsp;&nbsp;id: 'sample',
&nbsp;&nbsp;name: 'sample',
&nbsp;&nbsp;href: 'http://5509.me',
&nbsp;&nbsp;click: function() {
&nbsp;&nbsp;&nbsp;&nbsp;alert('clicked');
&nbsp;&nbsp;},
&nbsp;&nbsp;css: {
&nbsp;&nbsp;&nbsp;&nbsp;paddingBottom: '2.5em',
&nbsp;&nbsp;&nbsp;&nbsp;fontSize: '14px'
&nbsp;&nbsp;},
&nbsp;&nbsp;text: 'click me!'
});</pre>
					<p>すっきり！みやすくなりました。</p>
					<h2 id="point2">複数イベントをまとめてbind</h2>
					<p>そうそう、イベントも何回もチェーンで繋ぐと見にくくなって仕方なかったんですよね。下記のようにチェーンを使わずまとめて指定できます。</p>
					<pre>$('#box').bind({
&nbsp;&nbsp;click: function() {
&nbsp;&nbsp;&nbsp;&nbsp;alert('clicked!!');
&nbsp;&nbsp;},
&nbsp;&nbsp;mouseover: function() {
&nbsp;&nbsp;&nbsp;&nbsp;alert('over!!');
&nbsp;&nbsp;},
&nbsp;&nbsp;mousemove: function() {
&nbsp;&nbsp;&nbsp;&nbsp;alert('move!!');
&nbsp;&nbsp;}
});</pre>
					<p>ちなみに1.4ではないですけれど、イベントのhandlerが同じならまとめて指定できますね。</p>
					<pre>$('#box').bind('click focus blur', function(){
&nbsp;&nbsp;alert('matometa!');
});</pre>
					<h2 id="point3">個別にeasing指定</h2>
					<p>え･･･？縦横バラバラにeasing指定できるんですか･･･</p>
					<pre>$('#box').animate({
&nbsp;&nbsp;top: 300,
&nbsp;&nbsp;left: 300
},{
&nbsp;&nbsp;duration: 1000,
&nbsp;&nbsp;specialEasing: {
&nbsp;&nbsp;&nbsp;&nbsp;top: 'easeInOutCirc',
&nbsp;&nbsp;&nbsp;&nbsp;left: 'easeOutBounce'
&nbsp;&nbsp;}
});</pre>
					<p>ただし、scrollTopとscrollLeftには使えないようです。それはそうか。</p>
					<h2 id="point4">アニメーションを指定時間待機させる.delay()</h2>
					<p>setTimeout()とか使わなくていいんですよ。これまたすっきり書けます。<br />
					たとえば、fadeOut()後500ミリセカンド待ってからもう一度fadeIn()させたいときはこんな感じに書けます。</p>
					<pre>$('#box')
&nbsp;&nbsp;.fadeOut(400)
&nbsp;&nbsp;.delay(500)
&nbsp;&nbsp;.fadeIn(400);</pre>
					<h2 id="point5">DOMオブジェクトを丸ごと配列に入れる.toArray()</h2>
					<p>いちいちpushとかする必要ないんです。.toArray()するだけです。</p>
					<pre>&lt;ul&gt;
&lt;li&gt;1&lt;/li&gt;
&lt;li&gt;2&lt;/li&gt;
&lt;li&gt;3&lt;/li&gt;
&lt;li&gt;4&lt;/li&gt;
&lt;/ul&gt;</pre>
					<pre>$('ul>li').toArray();</pre>
<p>↓このように配列になります。</p>
<pre>['&lt;li&gt;1&lt;/li&gt;','&lt;li&gt;2&lt;/li&gt;','&lt;li&gt;3&lt;/li&gt;','&lt;li&gt;4&lt;/li&gt;']</pre>
					<h2 id="point6">.offset()で値を書き込めるようになった</h2>
					<p>うん、これはそうでもないか･･･</p>
					<pre>$('#box').offset({
&nbsp;&nbsp;top: '10px',
&nbsp;&nbsp;left: '25px'
});</pre>
					<h2 id="point7">1.4じゃないけど、もしかしたらあんまり知られていない機能</h2>
					<h3 id="point7-1">.append()メソッドで複数個のオブジェクトをappendする</h3>
					<p>.append()はDOMでもjQueryオブジェクトでも何でもつっこめて便利なのですが、これカンマで区切ると複数個入れることができます。</p>
					<pre>$('#box').append(
&nbsp;&nbsp;'&lt;a href=&quot;#&quot;&gt;1&lt;/a&gt;',
&nbsp;&nbsp;'&lt;a href=&quot;#&quot;&gt;2&lt;/a&gt;',
&nbsp;&nbsp;'&lt;a href=&quot;#&quot;&gt;3&lt;/a&gt;'
);</pre>
					<p>ちなみに、.after()と.before()でも同じようにカンマ区切りで複数の要素を追加できます。</p>
					<pre>$('#box').after( // .before
&nbsp;&nbsp;'&lt;a href=&quot;#&quot;&gt;1&lt;/a&gt;',
&nbsp;&nbsp;'&lt;a href=&quot;#&quot;&gt;2&lt;/a&gt;',
&nbsp;&nbsp;'&lt;a href=&quot;#&quot;&gt;3&lt;/a&gt;'
);</pre>
					<h3 id="point7-2">jQueryのメソッドのアクセス方法</h3>
					<p>一般的に.(ドット)で繋いでいきますが、プロパティと同じなので当然、[methodName]でも呼び出せます。</p>
					<pre>$('#box').click(function() {
&nbsp;&nbsp;alert('clicked');
});</pre>
					<pre>$('#box')['click'](function() {
&nbsp;&nbsp;alert('clicked');
});</pre>
					<h3 id="point7-3">追記： .hover()の真相</h3>
					<p>なにかありそうなタイトルにしましたが･･･<br />
					.hover()メソッドでは下記のように、マウスオーバーとマウスアウト時のイベントをまとめて指定できて便利ですよね。</p>
					<pre>$('div').hover(
&nbsp;&nbsp;function() {
&nbsp;&nbsp;&nbsp;&nbsp;alert('on');
&nbsp;&nbsp;},
&nbsp;&nbsp;function() {
&nbsp;&nbsp;&nbsp;&nbsp;alert('off');
&nbsp;&nbsp;}
);</pre>
					<p>マウスオーバーとマウスアウトと書きましたが、実は.hover()は<strong>.mouseover() / .mouseout() のショートカットではなく、.mouseenter() / .mouseleave() のショートカットです</strong>。これらの違いについてはjQuery APIのサンプルを見てもらうのが一番早いと思います。</p>
					<p><a href="http://api.jquery.com/mouseover/">http://api.jquery.com/mouseover/</a> &#8211; ページ真ん中らへんにDemoがあります。</p>
					<p>一度領域に入ってしまえば、enterで、領域から出ない限りleaveにはなりません。何気なく使っていても、特に問題はないところですが、挙動がおかしいと思ったときなどに知っていれば、対処方に辿り着きやすいかもしれません。</p>
					<h2>まとめ</h2>
					<p>jQueryを使えば、クロスブラウザも（ある程度は）簡単に対応できるし、やりたいこともたった数行で実現できてしまうので、速度の面とかはとりあえず置いておいて、どんどん色んなことをやってみればいいんだと思います。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2222&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jquery1-4-plus-alpha/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>コーダー向け勉強会「.coder」の開催が決定しました</title>
		<link>http://5509.me/log/dotcoder_session1</link>
		<comments>http://5509.me/log/dotcoder_session1#comments</comments>
		<pubDate>Mon, 22 Feb 2010 10:24:34 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=2205</guid>
		<description><![CDATA[					.coderから丸々転載します。
					&#8212;&#8212;&#8212;ここから&#8212;&#8212;&#8212;
					コーダー・Webデザイナー向けの勉強会「.coder（どっとこ [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://dotcoder.net">.coder</a>から丸々転載します。<br />
					&#8212;&#8212;&#8212;ここから&#8212;&#8212;&#8212;</p>
					<p>コーダー・Webデザイナー向けの勉強会「<strong>.coder（どっとこーだー）</strong>」 を大阪で行います。</p>
					<p>とりあえず決まっていることを以下にまとめておきます。調整中項目などは決まれば随時追加していきます。参加表明は<a href="http://atnd.org/events/3315">ATND</a>から行ってください。</p>
					<p>何か話したい！とかあればATNDかこちらのコメントにお願いします。</p>
					<h2>お知らせとか</h2>
					<p>このブログでも行いますが、連絡用Twitterアカウントを用意したので、こっちもフォローしてください。</p>
					<p><a href="http://twitter.com/dotcoder">http://twitter.com/dotcoder</a></p>
					<h2>第1回の概要</h2>
					<dl>
					<dt>テーマ</dt>
					<dd>JavaScript。主にjQuery関連が多いと思います。</dd>
					<dt>対象</dt>
					<dd><strong>JSを少しでも触ったことのある</strong>コーダー・Webデザイナー。（またはJSに興味があり、これから使っていきたいと思っている人。）</dd>
					<dt>形式</dt>
					<dd>一人3分〜10分程度の持ち時間でJS関連の話題で話すライトニングトーク形式。参加者全員が話すの必須じゃないですが、出来れば何かしら話してもらいたいです。今のところ5人くらい話す人が決まってます。</dd>
					<dt>スタンス</dt>
					<dd>ゆるく、楽しく。</dd>
					<dt>募集人数</dt>
					<dd>18人</dd>
					<dt>場所</dt>
					<dd>エル・おおさか（大阪府立労働センター） （大阪市中央区北浜東3-14）</dd>
					<dt>日時</dt>
					<dd>3月20日 18時～21時</dd>
					<dt>会費</dt>
					<dd>たぶん500円くらい</dd>
					</dl>
					<h2>参加表明</h2>
					<p><a href="http://atnd.org/events/3315">ATND</a>のページから行ってください</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2205&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/dotcoder_session1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress等の投稿もZen-Codingで楽々編集できるJSライブラリ Zen Coding for &lt;textarea&gt;</title>
		<link>http://5509.me/log/zen-coding-for-textarea</link>
		<comments>http://5509.me/log/zen-coding-for-textarea#comments</comments>
		<pubDate>Tue, 16 Feb 2010 01:15:15 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[memo]]></category>
		<category><![CDATA[Zen-Coding]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=2145</guid>
		<description><![CDATA[					15日のvol.01 ノンプログラマのためのPHP入門はPHPを始めようとしている僕にはとても有意義なものだったのですが、さらに衝撃だったのは、Zen-Codingでした。
					
					前々から存在は [...]]]></description>
			<content:encoded><![CDATA[					<p>15日の<a href="http://www.ustream.tv/recorded/4721906">vol.01 ノンプログラマのためのPHP入門</a>はPHPを始めようとしている僕にはとても有意義なものだったのですが、さらに衝撃だったのは、<a href="http://code.google.com/p/zen-coding/">Zen-Coding</a>でした。</p>
					<p><a href="http://code.google.com/p/zen-coding/"><img src="http://5509.me/wp-content/uploads/2010/02/zen-wordpress0.png" alt="zen-wordpress0" title="zen-wordpress0" width="365" height="64" class="alignnone size-full wp-image-2175" /></a></p>
					<p>前々から存在は知ってましたが、使ったことはありませんでした。使ってみたところこれが超快適･･･！確かにコーディングが3倍速くなるかも知れない。これを知らなかったなんて僕のコーディング人生は何だったんでしょうか。</p>
					<p>で、わざわざZen-Codingのよさについて書いたところで意味がないので、Zen-Codingについては以下のエントリ等が参考になると思います。</p>
					<ul>
					<li><a href="http://blog.gaspanik.com/coding-with-textmate-and-zencoding">TextMate+Zen-Codingで超速コーディング？</a></li>
					<li><a href="http://h2o-space.com/blog/1929">HTMLコーディングが3倍速くなる？「Zen-Coding」</a></li>
					<li><a href="http://p15.jp/2009/07/19/145308">Coda で Zen-Coding を使う</a></li>
					</ul>
					<h2>ブログ記事をHTMLで書いている人に<del datetime="2010-02-15T18:56:31+00:00">超</del>きっとおすすめ</h2>
					<p>WordPressの記事をZen-Codingで編集したいなとか話してたんですが、どうやらtextareaでZen-Codingを可能にするライブラリが公式であるんですね･･･そしてこれが素晴らしい出来でブログ記事を書く速さも<del datetime="2010-02-15T18:58:57+00:00">3倍</del>1.5倍くらいになりそうです。特に技術系のブログを書いてる人には手放せないツールになるんじゃないでしょうか。</p>
					<p>以下WordPressに適用して編集した際のキャプチャです。<a href="http://zen-coding.ru/textarea/">公式サンプル</a>そのまんまで申し訳ないですがそういうことです。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/02/zen-wordpress1.png" alt="zen-wordpress1" title="zen-wordpress1" width="322" height="97" class="alignnone size-full wp-image-2156" /></p>
					<p>この状態でCmd+E(Ctrl+E)で･･･</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/02/zen-wordpress2.png" alt="zen-wordpress2" title="zen-wordpress2" width="284" height="448" class="alignnone size-full wp-image-2157" /></p>
					<p>このように展開できます。</p>
					<h2>WordPressに導入する方法</h2>
					<p>僕はWPユーザーなので、WordPressに導入する方法を書いておきます。ちなみに、ビジュアルエディタは邪魔なのでオフにしておきます。（どちらでもいいですが）</p>
					<h3>プラグインを使って導入する</h3>
					<p>【追記】<a href="http://rewish.org">rewさん</a>がプラグイン化してくれました。なかなか登録が完了しないようです･･･</p>
					<ul>
					<li><a href="http://rewish.org/wp/zen_coding">WordPressにZen Codingを導入するプラグイン「WP Zen-Coding」</a></li>
					</ul>
					<p>以下は古い内容です。WordPressのバージョンアップに伴って消えるのでプラグインを使ったほうがいいですね。</p>
					<h3>Zen Coding for &lt;textarea&gt;のダウンロード</h3>
					<p>まずはソースコードをダウンロードします。</p>
					<dl>
					<dt>ダウンロード</dt>
					<dd><a href="http://code.google.com/p/zen-coding/downloads/detail?name=Zen.Coding-textarea.v0.5.zip">Download: Zen Coding for &lt;textarea&gt;</a></dd>
					<dt>公式サンプル</dt>
					<dd><a href="http://zen-coding.ru/textarea/">Zen Coding for &lt;textarea&gt; Sample</a></dd>
					</dl>
					<h3>WordPressの管理画面で読み込む</h3>
					<p>ダウンロードしたら解凍して出てくる「zen_textarea.js」か「zen_textarea.min.js」を適当なフォルダにコピーして</p>
					<ul>
					<li>/wp-admin/admin-header.php</li>
					</ul>
					<p>を開いてたぶん69行目辺りが&lt;/head&gt;のすぐ上なので、そこで読み込ませます。</p>
					<p><img src="http://5509.me/wp-content/uploads/2010/02/zen-wordpress3.png" alt="zen-wordpress3" title="zen-wordpress3" width="450"  class="alignnone size-full wp-image-2169" /></p>
					<p>わずか2ステップで実装できてしまいました。ただこの方法だと記事編集画面以外のテキストエリアにも適用されてしまうので、それが嫌な人は&lt;?php if(){} ?&gt;か何かで編集画面でのみ適用するようにするといいでしょう。</p>
					<h2>タグをあまり使わないWordPressユーザーにははてな記法プラグイン</h2>
					<p>そんなにタグばっかり使わない人には<a href="http://rewish.org">rewish</a>さん作の<a href="http://rewish.org/wp/hatena_notation_plugin">はてな記法プラグイン</a>がちょうどいいと思います。テーブルなどもどんどん使えますし、こちらもかなり便利です。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2145&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/zen-coding-for-textarea/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>今さら聞けないjQuery実行パターンまとめ</title>
		<link>http://5509.me/log/jquery-execution-pattern</link>
		<comments>http://5509.me/log/jquery-execution-pattern#comments</comments>
		<pubDate>Mon, 15 Feb 2010 01:30:54 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[memo]]></category>
		<category><![CDATA[まとめ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=2079</guid>
		<description><![CDATA[					なんとなく使っているだろう.ready()メソッドについて詳細に見てみましょう。
					.ready()メソッド
					.ready()メソッドという呼び方がパッとしない人もいると思います。こういうので [...]]]></description>
			<content:encoded><![CDATA[					<p>なんとなく使っているだろう.ready()メソッドについて詳細に見てみましょう。</p>
					<h2>.ready()メソッド</h2>
					<p>.ready()メソッドという呼び方がパッとしない人もいると思います。こういうのです↓</p>
					<pre>$(function(){
&nbsp;&nbsp;// .ready()が呼び出されたときに実行されるハンドラ
});</pre>
					<p>jQueryを実行する際のおまじないみたいなものですね。これの中にjQueryコードを書いていくとページロード時（Documentの読み込みが完了時）に実行してくれます。</p>
					<p>何気なく使ってる人も多いと思いますが、実際のところこれは何？ということで、少し掘り下げてみましょう。<br />
					<span id="more-2079"></span></p>
					<h3>.ready()を使う際の形式</h3>
					<p><a href="http://api.jquery.com/ready/">jQuery API</a>によれば、以下の3つが.ready()として同じように使えるようです。</p>
					<ol>
					<li>$(document).ready(handler)</li>
					<li>$().ready(handler) <strong>(推奨されていない使い方)</strong></li>
					<li>$(handler)</li>
					</ol>
					<dl>
					<dt><strong>handler</strong></dt>
					<dd>DOM Readyの時点で実行されるfunction<br />
					無名関数function(){}がこれに当たります</dd>
					</dl>
					<p>つまり、それぞれを実際に使う場合は</p>
					<h4>1. の場合</h4>
					<pre>$(document).ready(function(){
&nbsp;&nbsp;// 実行する命令
});</pre>
					<p>見て分かる通り、Documentがreadyになったら、つまりDocumentの読み込みが完了したら実行します。</p>
					<h4>2. の場合（使えるが推奨はされていない）</h4>
					<pre>$().ready(function(){
&nbsp;&nbsp;// 実行する命令
});</pre>
					<p>1.のdocumentを省略した状態。ただし公式ドキュメントでも注意書きがある通り、この形式では使わないほうがよさそうです。</p>
					<h4>3. の場合</h4>
					<pre>$(function(){
&nbsp;&nbsp;// 実行する命令
});</pre>
					<p>こちらは、一番よく見る例のアレですね。$(document).readyを$と省略した形です。一番文字数が少なくて済むのでよく使われています。</p>
					<h3>$ = jQuery</h3>
					<p>jQueryを使っていると<strong>$</strong>という文字をたくさん使いますが、これは<strong>jQueryのエイリアス</strong>になっています。つまり以下のコードは同じことを意味します。</p>
					<pre>$('a').click(function(){});
jQuery('a').click(function(){});
</pre>
					<p>よく知られているところでは、Prototype.jsも同じように$を使っていて、jQueryと同時に使うと$の衝突が起こります。この場合、$.noConflict()を使って</p>
					<pre>var $j = jQuery.noConflict();</pre>
<p>のようにして、$の代わりに$jをjQueryとして使うことで回避したりします。</p>
<h3>強制的に$をjQueryとして使う場合</h3>
<p>より安全に、.ready()の中だけは$をjQueryのエイリアスとして使う場合、次のように実行します。</p>
<pre>jQuery(document).ready(function($){
&nbsp;&nbsp;// この中では$はjQueryとして扱われる
});</pre>
					<p>コメントに書いたように、この書き方だと、Prototypeなどの$を使っているライブラリを同時にロードしていても、.ready()の中だけは$をjQueryとして扱うことができます。ただし、Prototypeの$は当然使うことは出来ないです。</p>
					<p>さらに省略形と合わせることもできます。このほうが使いやすいでしょう。</p>
					<pre>jQuery(function($){
&nbsp;&nbsp;// この中では$はjQueryとして扱われる
});</pre>
					<h2>実行パターンまとめ</h2>
					<p>というわけで推奨されていない物以外をまとめると以下の4つになります。どれを使っても実行結果は同じなので、好みになると思いますがおすすめはトラブルが少なそうな4.ですね。</p>
					<h3>1. 基本のパターン</h3>
					<pre>$(document).ready(function(){
&nbsp;&nbsp;// 実行する命令
});</pre>
					<h3>2. よく使われているパターン</h3>
					<pre>$(function(){
&nbsp;&nbsp;// 実行する命令
});</pre>
					<h3>3. 他のライブラリも使うことを考慮した場合のパターン</h3>
					<pre>jQuery(document).ready(function($){
&nbsp;&nbsp;// 実行する命令
});</pre>
					<h3>4. 2と3を組み合わせたパターン</h3>
					<pre>jQuery(function($){
&nbsp;&nbsp;// 実行する命令
});</pre>
					<h2>ちょっと補足</h2>
					<p><a href="http://h2ham.seesaa.net/">THE HAM MEDIA</a>の<a href="http://twitter.com/h2ham">ハムさん</a>が補足を書いてくれましたので、こちらもあわせて読むとさらに理解が深まると思います。</p>
					<ul>
					<li><a href="http://h2ham.seesaa.net/article/141226477.html">Re: 今さら聞けないjQuery実行パターンまとめ【実行のタイミングって？ちょっとした補足】</a></li>
					</ul>
					<h2>参考</h2>
					<dl>
					<dt>.ready() &#8211; jQuery API</dt>
					<dd><a href="http://api.jquery.com/ready/">http://api.jquery.com/ready/</a></dd>
					</dl>
					<img src="http://5509.me/?ak_action=api_record_view&id=2079&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jquery-execution-pattern/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Goolge BuzzのBuzz Itボタンをブログに実装する</title>
		<link>http://5509.me/log/add-google-buzz-button</link>
		<comments>http://5509.me/log/add-google-buzz-button#comments</comments>
		<pubDate>Fri, 12 Feb 2010 01:15:47 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[Google Buzz]]></category>
		<category><![CDATA[memo]]></category>
		<category><![CDATA[ブログ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=2047</guid>
		<description><![CDATA[					
					先日公開されたGoogle Buzzですが、流行るとか流行らないは別としてとりあえずサイトにBuzzを投稿するためのボタンを実装してみましょう。と思ってAPIを見てたんですが、まだその辺については公 [...]]]></description>
			<content:encoded><![CDATA[					<p><img class="alignnone size-full wp-image-2059" title="buzz1" src="http://5509.me/wp-content/uploads/2010/02/buzz1.png" alt="buzz1" width="178" height="67" /></p>
					<p>先日公開されたGoogle Buzzですが、流行るとか流行らないは別としてとりあえずサイトにBuzzを投稿するためのボタンを実装してみましょう。と思って<a href="http://code.google.com/intl/ja/apis/buzz/">API</a>を見てたんですが、まだその辺については公開されてないのか見あたりませんでした。そもそもBuzzするって何て言うんですかね。Buzzる？なんか変。。</p>
					<p>今のところ便利そうなのは以下の、Google Readerのブックマークレットを使う方法でしょうか。</p>
					<ul>
					<li><span><a title="Reload this Page" href="http://buzzusers.com/showthread.php?33-Add-a-Buzz-It-button-to-your-Website-Blog-or-Forum">Add a &#8220;Buzz It&#8221; button to your Website, Blog  or Forum</a></span></li>
					</ul>
					<p>超簡単に実装できます。<br />
					<span id="more-2047"></span></p>
					<h2>実装方法</h2>
					<p>アイコンを<a href="http://buzzusers.com/images/buzzicon.png">http://buzzusers.com/images/buzzicon.png</a>か<a href="http://buzzusers.com/images/gbuzz.png">http://buzzusers.com/images/gbuzz.png</a>から保存して、ボタンを追加したい位置に下記のコードを貼るだけです。（アイコンのsrcは変えてください）Google ReaderがURLとタイトルを取得するのでどのページにも下記のコードで実装できますが、この方法では一覧ページには実装できません。一覧ページにも実装したい場合は、<a href="http://techcrunch.com/2010/02/10/google-buzz-button/">Tech Crunchのように</a>個別にURLからタイトルやURLを渡す必要があります。</p>
					<pre>&lt;a href="javascript:var%20b=document.body;var%20GR________bookmarklet_domain=&amp;quot;http://www.google.com&amp;quot;;if(b&amp;amp;&amp;amp;!document.xmlVersion){void(z=document.createElement(&amp;quot;script&amp;quot;));void(z.src=&amp;quot;http://www.google.com/reader/ui/link-bookmarklet.js&amp;quot;);void(b.appendChild(z));}else{}"&gt;&lt;img src="ここはアイコンのURL" alt="Buzz It"/&gt; Buzz It&lt;/a&gt;</pre>
<h3><strong>サンプルということで、このブログにも実装してみました</strong></h3>
<p><strong><strong>…使わないでしょうけど。</strong></strong></p>
<p><img class="alignnone size-full wp-image-2059" title="buzz1" src="http://5509.me/wp-content/uploads/2010/02/buzz1.png" alt="buzz1" width="178" height="67" /></p>
<p>クリックするとGoogle Readerのブックマークレットが画面右上に表示されるのでそこからBuzzへ投稿できます。画面の遷移がないので投稿しやすいです。</p>
<p><a href="http://5509.me/wp-content/uploads/2010/02/buzz21.png"><img class="alignnone size-medium wp-image-2068" title="buzz2" src="http://5509.me/wp-content/uploads/2010/02/buzz21-300x214.png" alt="buzz2" width="300" height="214" /></a></p>
<p>この方法で実装するところの問題といえば、<strong>Google ReaderのブックマークレットがページのタイトルとURLを取ってくるため、一覧ページには使えない</strong>ところでしょうか。</p>
<h2>おまけ</h2>
<p>一覧ページにも実装する場合は以下のリンクで実装できます。[URL][タイトル][サマリー]のところに対応する値を渡してください。</p>
<pre>&lt;a href="http://www.google.com/reader/link?url=[URL]&amp;title=[タイトル]&amp;snippet=[サマリー]"&gt;Buzz It&lt;/a&gt;</pre>
					<img src="http://5509.me/?ak_action=api_record_view&id=2047&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/add-google-buzz-button/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQueryのアニメーション関連いろいろまとめ</title>
		<link>http://5509.me/log/jquery-with-animation</link>
		<comments>http://5509.me/log/jquery-with-animation#comments</comments>
		<pubDate>Tue, 09 Feb 2010 01:15:20 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[まとめ]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=2006</guid>
		<description><![CDATA[					
					jQueryを使えば単体でもフェードやスライドなどのアニメーションを誰でも簡単に使えますが、animateメソッドを使うとより便利に凝ったアニメーションを実行することができます。animateメソッ [...]]]></description>
			<content:encoded><![CDATA[					<p><img class="alignnone size-full wp-image-2032" title="jQueryのアニメーション関連いろいろまとめ" src="http://5509.me/wp-content/uploads/2010/02/jquery_anim.png" alt="jQueryのアニメーション関連いろいろまとめ" width="296" height="218" /></p>
					<p><a href="http://jquery.com/">jQuery</a>を使えば単体でもフェードやスライドなどのアニメーションを誰でも簡単に使えますが、animateメソッドを使うとより便利に凝ったアニメーションを実行することができます。animateメソッドを使って何かを作るときに役立ちそうなチュートリアルと、すぐ使いたい人向けのプラグインを集めました。</p>
					<p><span id="more-2006"></span></p>
					<ul>
					<li><a href="#tips">TIPS/チュートリアル</a></li>
					<li><a href="#plugin">プラグイン/animateメソッドの拡張など</a></li>
					<li><a href="#plugin2">プラグイン/単体で使えるものなど</a></li>
					<li><a href="#plugin3">プラグイン/スクロール系</a></li>
					</ul>
					<h2 id="tips">TIPS/チュートリアル</h2>
					<h3><strong>animate(params, options)</strong></h3>
					<p><a href="http://semooh.jp/jquery/api/effects/animate/params,+options/">http://semooh.jp/jquery/api/effects/animate/params,+options/</a><br />
					まずはjQuery animateの基本を押さえましょう。</p>
					<h3><strong>Using jQuery Stop<br />
					</strong></h3>
					<p><a href="http://css-tricks.com/examples/jQueryStop/">http://css-tricks.com/examples/jQueryStop/</a><br />
					アニメーションのキューをコントロールする。これを押さえれば結構なんでもできますたぶん。hoverで色々したい場合などは<strong>stop(true,true)</strong>が 便利です。</p>
					<h3><strong>Start/Stop Slider</strong></h3>
					<p><a href="http://css-tricks.com/startstop-slider/">http://css-tricks.com/startstop-slider/</a><br />
					もうひとつCSS-Tricksから、スライダーの作り方。</p>
					<h3><strong>Sliding Boxes and Captions with jQuery</strong></h3>
					<p><a href="http://buildinternet.com/2009/03/sliding-boxes-and-captions-with-jquery/">http://buildinternet.com/2009/03/sliding-boxes-and-captions-with-jquery/</a><br />
					マウスオーバーでキャプションがスライドしてくる。</p>
					<h3><strong>Create  a Thumbnail with Fading Caption Using jQuery</strong></h3>
					<p><a href="http://www.queness.com/post/844/create-a-thumbnail-with-fading-caption-using-jquery">http://www.queness.com/post/844/create-a-thumbnail-with-fading-caption-using-jquery</a><br />
					キャプションを前面に表示するんですけど、サムネイルのアニメーションとの組み合わせがきれい。</p>
					<h3><strong>Create a jQuery Popup Bubble</strong></h3>
					<p><a href="http://www.dvq.co.nz/web-design/create-a-jquery-popup-bubble-effect/">http://www.dvq.co.nz/web-design/create-a-jquery-popup-bubble-effect/</a><br />
					ツールチップも表示方法を変えるだけでかわいくなりますね。実装も簡単です。</p>
					<h3><strong>Animate validation feedback using jQuery</strong></h3>
					<p><a href="http://www.jankoatwarpspeed.com/post/2009/09/16/Animate-validation-feedback-using-jQuery.aspx">http://www.jankoatwarpspeed.com/post/2009/09/16/Animate-validation-feedback-using-jQuery.aspx</a><br />
					フォームの未入力必須項目を揺らす。↓で紹介しているプラグインと組み合わせると点滅などできますね。</p>
					<h2 id="plugin">プラグイン/animateメソッドの拡張など</h2>
					<h3><strong>GX<br />
					</strong></h3>
					<p><a href="http://gx.riccardodegni.net/">http://gx.riccardodegni.net/</a><br />
					アニメーションに特化した拡張プラグイン。色を変えたり、キューを利用したシームレスなアニメーションなどを行えます。</p>
					<h3><strong>COLOR ANIMATIONS</strong></h3>
					<p><a href="http://plugins.jquery.com/project/color">http://plugins.jquery.com/project/color<br />
					</a>こちらはjQuery作者のJohn Resig氏がつくったカラーアニメーションプラグイン。</p>
					<h3><strong>Background-Position Animations<br />
					</strong></h3>
					<p><a href="http://plugins.jquery.com/project/backgroundPosition-Effect">http://plugins.jquery.com/project/backgroundPosition-Effect</a><br />
					background-positionをアニメーションできるようになります。</p>
					<p>応用すると<br />
					<a href="http://snook.ca/archives/javascript/jquery-bg-image-animations/">http://snook.ca/archives/javascript/jquery-bg-image-animations/</a><br />
					こんな感じに楽しげなナビゲーションがつくれます。</p>
					<h3 id="logo" style="display: block;"><strong>addCommand<span>.js<br />
					</span></strong></h3>
					<p style="display: block;"><a href="http://lab.hisasann.com/addCommand/">http://lab.hisasann.com/addCommand/</a><br />
					連続するアニメーションをネストせずに書いていけるプラグイン。複雑なアニメーションをする場合などに便利です。</p>
					<h3><strong>jQuery Easing Plugin</strong></h3>
					<p><a href="http://gsgd.co.uk/sandbox/jquery/easing/">http://gsgd.co.uk/sandbox/jquery/easing/</a><br />
					Easingと言えばこれ。jQueryのanimateメソッド内で指定するだけで色んな動きが使えます。</p>
					<h2 id="plugin2" style="display: block;">プラグイン/単体で使えるものとか</h2>
					<h3><strong>Flip!</strong></h3>
					<p><a href="http://lab.smashup.it/flip/">http://lab.smashup.it/flip/</a><br />
					表示要素をくるっと回転させるエフェクトで切り替える。アイデアが面白いですね。</p>
					<h3><strong>Roundabout for jQuery</strong></h3>
					<p><a href="http://fredhq.com/projects/roundabout/">http://fredhq.com/projects/roundabout/</a><br />
					3Dの回転を実現するプラグイン。ドラッグできたらもっといいんですけどね。</p>
					<h3><strong>LavaLamp  for jQuery lovers!</strong></h3>
					<p><a href="http://www.gmarwaha.com/blog/2007/08/23/lavalamp-for-jquery-lovers/">http://www.gmarwaha.com/blog/2007/08/23/lavalamp-for-jquery-lovers/</a><br />
					元々mootoolsプラグインだったLavaLampをjQueryで実現するプラグイン。装飾のないグローバルナビゲーションもこれひとつでちょっと目を引くナビゲーションになります。</p>
					<h3><strong>可変レイアウトグリッドjQueryプラグイン</strong></h3>
					<p><a href="http://blog.xlune.com/2009/09/jqueryvgrid.html">http://blog.xlune.com/2009/09/jqueryvgrid.html</a><br />
					グリッド系は色々ありますが、こちらが一番きれいに動きますね。</p>
					<h3><strong>jQuery Approach</strong></h3>
					<p><a href="http://srobbin.com/jquery-plugins/jquery-approach/">http://srobbin.com/jquery-plugins/jquery-approach/</a><br />
					カーソルが対象要素に近づくにつれてに文字サイズを小さくしたり透過度を上げたり･･･durationではなくカーソルの位置に合わせてanimateメソッドを実行しているような感じ。結構面白いです。</p>
					<h2 id="plugin3">プラグイン/スクロール系</h2>
					<h3><strong>jQuery Scroll Follow</strong></h3>
					<p><a href="http://kitchen.net-perspective.com/open-source/scroll-follow/">http://kitchen.net-perspective.com/open-source/scroll-follow/</a><br />
					スクロールに合わせて要素がついてくる。ナビゲーション等に使うのが一般的ですかね。</p>
					<h3><strong>LOCALSCROLL</strong></h3>
					<p><a href="http://plugins.jquery.com/project/LocalScroll">http://plugins.jquery.com/project/LocalScroll</a><br />
					内部の要素をスクロールで移動させてページ切り替えのようにみせる。</p>
					<h3><strong>Easingスクロールプラグイン</strong></h3>
					<p><a href="http://5509.me/2009/05/18/page-scrolling-with-jqueryeasing.html">http://5509.me/2009/05/18/page-scrolling-with-jqueryeasing.html</a><br />
					Easingプラグインを利用したするするスムーズスクロールプラグイン。スクロールの動きを選べます。</p>
					<h2>他にも･･･</h2>
					<p>jQuery関連のプラグインはほとんどがアニメーション絡みだったりするので、紹介した以外にもまだまだ山ほどあります。Flashと比べるのはそもそもあれですが、JSだけでも動きのあるサイトは作れますので、ピンポイントにでも実装してみてはいかがでしょうか。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=2006&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jquery-with-animation/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>大阪でコーダー向け(JavaScript)勉強会を行います</title>
		<link>http://5509.me/log/notification-of-dotcoder</link>
		<comments>http://5509.me/log/notification-of-dotcoder#comments</comments>
		<pubDate>Sat, 06 Feb 2010 17:34:59 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[Notification]]></category>
		<category><![CDATA[イベント]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1983</guid>
		<description><![CDATA[					コーダー・Webデザイナー向けの(JavaScript)勉強会「.coder（どっとこーだー）」 を大阪で行います。なんせ人が集まらなすぎてもあれだったので、Twitterで募集してみたら意外にもたくさんのリプ [...]]]></description>
			<content:encoded><![CDATA[					<p>コーダー・Webデザイナー向けの(JavaScript)勉強会「<strong>.coder（どっとこーだー）</strong>」 を大阪で行います。なんせ人が集まらなすぎてもあれだったので、<a href="http://twitter.com/5509/status/8659425065">Twitterで募集</a>してみたら意外にもたくさんのリプライもらいまして･･･ありがとうございます。</p>
					<p>で、なんだか誤解が生じているかも知れないので先に言っておくと、<strong>セミナー形式ではなく、みんなで5分10分ずつでもしゃべっていく形</strong>で考えています。LTみたいな感じですね。本気でやるぜ！ってなったら色々と気張ってしまうし、持続もしないでしょうし、ゆるい感じで進めていきたいです。</p>
					<p>(JavaScript)勉強会としているのは、今後も継続して行い、回によって扱うテーマを変えることも想定しているためです。目的としては、関西（主に大阪）のコーダー・Webデザイナーなどフロントエンドの人たちの交流、情報の共有です。僕が色んな人と話をしたいというのが一番の目的とかなんとか･･･でも早い話が、<a href="http://archiva.jp/web/sugamo_css/sugamo_css.html">Sugamo.css</a>の真似ですよね。すみません。</p>
					<p>とりあえず決まっていることを以下にまとめておきます。調整中項目などは決まれば随時追加していきます。参加表明などは<a href="http://rewish.org">rewさん</a>が調整してくれているので、そちらについてもまたお知らせします。</p>
					<p>とりあえず興味あるよ！何か話したい！とかあればコメントにお願いします。</p>
					<h2>お知らせとか</h2>
					<p>このブログでも行いますが、連絡用Twitterアカウントを用意したので、こっちもフォローしてください。</p>
					<p><a href="http://twitter.com/dotcoder">http://twitter.com/dotcoder</a></p>
					<h2>第1回の概要</h2>
					<h3>テーマ</h3>
					<p>JavaScript。主にjQuery関連が多いと思います。</p>
					<h3>対象</h3>
					<p><strong>JSを少しでも触ったことのある</strong>コーダー・Webデザイナー。（またはJSに興味があり、これから使っていきたいと思っている人。）</p>
					<h3>形式</h3>
					<p>一人3分〜10分程度の持ち時間でJS関連の話題で話すライトニングトーク形式。参加者全員が話すの必須じゃないですが、出来れば何かしら話してもらいたいです。今のところ5人くらい話す人が決まってます。</p>
					<h3>スタンス</h3>
					<p>ゆるく、楽しく。</p>
					<h3>募集人数</h3>
					<p>最大25人まで。25人も集まった場合、僕がどうしていいか分からなくなると思いますが、数字については完全にアタリです。集まらなくても最低人数で開催します。</p>
					<h3>場所</h3>
					<p>調整中。</p>
					<h3>日時</h3>
					<p>調整中。3月20〜22日のいずれかで考えていますが、会場の都合もあるので、4月になるかもしれません。</p>
					<h3>会費</h3>
					<p>調整中。たぶん500円くらい必要になるかと思います。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1983&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/notification-of-dotcoder/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>CSS Nite LP, Disk 9「Coder&#8217;s Higher」に出演します</title>
		<link>http://5509.me/log/lp9</link>
		<comments>http://5509.me/log/lp9#comments</comments>
		<pubDate>Mon, 01 Feb 2010 10:24:07 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1970</guid>
		<description><![CDATA[					
					2010年も早いもので1ヶ月が終わりもう2月ですね。唐突ですが、4月に開催されるCSS Nite LP, Disk 9「Coder&#8217;s Higher」に出演させていただきます。LPといえ [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://lp9.cssnite.jp/"><img src="http://cssnite.jp/images/CSSNiteLP9_banner.gif" alt="CSS Nite LP, Disk 9「Coder's Higher」" /></a></p>
					<p>2010年も早いもので1ヶ月が終わりもう2月ですね。唐突ですが、4月に開催される<a href="http://lp9.cssnite.jp/">CSS Nite LP, Disk 9「Coder&#8217;s Higher」</a>に出演させていただきます。LPといえば東京ですね。僕は大阪なので、Twitterから伝わってくる東京のイベントの盛り上がりに、いつか参加できればなんて思っていたのですが、思わぬ展開で参加できることになりました。</p>
					<p>僕のセッションでは<strong>jQuery</strong>を扱いますが、Coder&#8217;s Higherだけに<strong>HTML5やCSS3</strong>、<strong>スピードコーディング</strong>などコーダーの方にはわくわくが止まらない内容になっています。色々な人に会えるのが今から楽しみで仕方ないです。。東京の皆さまよろしくお願いします！</p>
					<p>ところで、現在gihyo.jpで一緒に執筆している<a href="http://twitter.com/rewish/mukimuki">mukimukist</a>の一人、<a href="http://h2ham.seesaa.net/">THE HAM MEDIAのハムさん</a>も出演します･･･！</p>
					<p>このブログでは今までプライベートな話題を書いていなかったので、なんとなく避けていましたが昨年9月に転職し、現在はディレクターとして働いています。<a href="http://gihyo.jp/design/serial/01/jquery-site-production">gihyoさんで連載させていただいている</a>のもあり、記事数もめっきり減っていますが、新感覚のUIを求めて毎日を過ごしていますので、またその内新しいプラグインでも作りたいです。また週4記事更新とかやりたいですｗ</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1970&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/lp9/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery.selectable.jsを構成し直したjQselectableを公開し(て)ました</title>
		<link>http://5509.me/log/selectable-is-rebuilt-as-jqselectable</link>
		<comments>http://5509.me/log/selectable-is-rebuilt-as-jqselectable#comments</comments>
		<pubDate>Tue, 12 Jan 2010 15:42:43 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[note]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1828</guid>
		<description><![CDATA[					順番がかなり前後していますが、先日jQselectableをAjaxZip2と併用するという記事を書いたので、jQselectable公開時に公開するはずだったこのページもついでに公開しておきます。（前後したつ [...]]]></description>
			<content:encoded><![CDATA[					<p>順番がかなり前後していますが、先日<a href="http://5509.me/2010/01/10/jqselectable-with-using-ajaxzip2.html">jQselectableをAjaxZip2と併用する</a>という記事を書いたので、jQselectable公開時に<span style="text-decoration: underline;">公開するはずだった</span>このページもついでに公開しておきます。（前後したついでに先に言っておくと、当のアーカイブは未だに更新できてません。）</p>
					<p><span id="more-1828"></span></p>
					<p>jQselectableのプロジェクトページはGooglecodeになります。<br />
					<a href="http://code.google.com/p/jqselectable/">jQselectable: http://code.google.com/p/jqselectable/</a></p>
					<p>名前がselectableからjQselectableに変わったのですが、これは<a href="http://jqueryui.com/demos/selectable/">jQuery UIにselectableという便利なプラグインが存在する</a>ためです。</p>
					<p>実際にUI selectableを使う人はほとんどいないと思いますが、せっかくなのでメソッド名も変えました。ただ変わったと言っても実際にはselectableからも呼び出せますので、特に何も気にすることはありません。<br />
					前もってUI selectableをロードしてるときは今までのselectableメソッドが無効になります。<br />
					ただ併用する場合はUI selectableを先にロードさせる必要があります。この辺はprototypeとjQueryのそれと同じような感じです。</p>
					<pre>$.fn.selectable = $.fn.jQselectable;

$(elm).selectable();
$(elm).jQselectable();
// どちらでもいい</pre>
					<p>使う人にとってはコードなんかどうでもいい所ですが、書き直したことで<strong>jQselectableを実行した後に、JSやAJAXを使って動的に内容が書き変わっても、rebuildメソッドを実行することでjQselectableの内容を最新に更新することができます</strong>。</p>
					<p><span style="text-decoration: line-through;">selectableのページを新しくしたので詳しい使い方などはそちらを見てもらうとして、</span>ここではrebuildメソッドの使い方を簡単に説明します。</p>
					<pre>var selectable = $(elm).jQselectable(); // 実行
selectable.rebuild(); // 再構築</pre>
					<p>上記のような再構築が必要ない場合は、今まで通り</p>
					<pre>$(elm).jQselectable();</pre>
<p>だけです。</p>
<img src="http://5509.me/?ak_action=api_record_view&id=1828&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/selectable-is-rebuilt-as-jqselectable/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQselectable(jQuery.selectable.js)とAjaxZip2を併用する</title>
		<link>http://5509.me/log/jqselectable-with-using-ajaxzip2</link>
		<comments>http://5509.me/log/jqselectable-with-using-ajaxzip2#comments</comments>
		<pubDate>Sun, 10 Jan 2010 14:04:21 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[プラグイン]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1936</guid>
		<description><![CDATA[					コメントでいただいたので記事にします。AjaxZip2を実行したときに都道府県が補完されますが、都道府県にselectableを適用している場合、補完されても表示が切り替わりません。これの対応方法です。
			 [...]]]></description>
			<content:encoded><![CDATA[					<p>コメントでいただいたので記事にします。<a href="http://www.kawa.net/works/ajax/ajaxzip2/ajaxzip2.html">AjaxZip2</a>を実行したときに都道府県が補完されますが、都道府県にselectableを適用している場合、補完されても表示が切り替わりません。これの対応方法です。</p>
					<p>昨年11月に<a href="http://5509.me/2008/09/14/jqueryselectable.html">jQuery.selectable.js</a>をアップデートした<a href="http://code.google.com/p/jqselectable/">jQselectable</a>というプラグインをGoogle Codeで公開しました。公開直後に<a href="http://twitter.com/">Twitter</a>から広がり、<a href="http://phpspot.org/blog/archives/2009/11/select_jqselect.html">PHPSPOTさんでも紹介された</a>り、jQselectableは色々な方に見ていただけましたが、肝心のドキュメントがありません。。基本的に使い方はjQuery.selectable.jsと同じで、今回説明する<strong>rebuild</strong>というメソッドを追加しました。</p>
					<p>まずはサンプルをご覧ください。</p>
					<p class="link"><a href="http://jqselectable.googlecode.com/svn/trunk/withzipsample.html">View the Demo</a><br />
					<a href="http://jqselectable.googlecode.com/files/jQselectable_zip.zip">Download sample files</a></p>
					<p class="link"><span id="more-1936"></span></p>
					<h2>必要ファイルの読み込み</h2>
					<p>jQueryをGoogleのJSAPIから読んでいますが、ローカルでもいいです。</p>
					<pre>&lt;script type="text/javascript" src="http://www.google.com/jsapi"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;google.load("jquery", "1.3.2");&lt;/script&gt;
&lt;script type="text/javascript" src="js/jQselectable.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="js/ajaxzip2.js"&gt;&lt;/script&gt;</pre>
					<h2>実行手順</h2>
					<h3>jQselectableの実行</h3>
					<p>ここはjQuery.selectable.jsと同じです。</p>
					<pre>var pref = $("#pref").jQselectable({
  set: "fadeIn",
  setDuration: "fast",
  opacity: .9
});</pre>
					<p>が、ひとつだけ違うところがあって</p>
					<pre>var pref = $("#pref").jQselectable({</pre>
<p>実行したものを変数に入れておきます。</p>
<h3>AjaxZip2を実行するためにハンドラをバインドする</h3>
<p>AjaxZip2の使い方は分かっているものと仮定して進めますので、初めてな方は<a href="http://www.kawa.net/works/ajax/ajaxzip2/ajaxzip2.html">AjaxZip2の配布ページ</a>を確認してください。</p>
<pre>$("#zip").keyup(function(){
 // AjaxZip2
 AjaxZip2.zip2addr(this,"pref","addr");
});</pre>
					<h3>補完後にselectableをrebuildする</h3>
					<p>補完後に、フォーカスが住所の最後に移動しますがこのとき発生する、blurを利用します。</p>
					<pre>$("#zip").blur(function(){
 // rebuilds target jQselectable element
 pref.rebuild();
});</pre>
					<p>これでAjaxZip2実行後に、selectableの見た目部分が構成し直され、補完された都道府県が表示されます。</p>
					<p class="link"><a href="http://jqselectable.googlecode.com/svn/trunk/withzipsample.html">View the Demo</a><br />
					<a href="http://jqselectable.googlecode.com/files/jQselectable_zip.zip">Download sample files</a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1936&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jqselectable-with-using-ajaxzip2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VMWareの仮想OS内のVM共有フォルダ以外のフォルダにMacから接続する</title>
		<link>http://5509.me/log/connecting-vm-windows-directory</link>
		<comments>http://5509.me/log/connecting-vm-windows-directory#comments</comments>
		<pubDate>Thu, 05 Nov 2009 18:23:46 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[memo]]></category>
		<category><![CDATA[vmwarefusion]]></category>
		<category><![CDATA[windows7]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1907</guid>
		<description><![CDATA[					VMWare Fusion3(2)を使ってインストールしたWindowsにはデフォルトでVMWare共有フォルダがあり、どちらのOSからでも同じようにアクセスできるようになっていますが、MacからWindows [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://www.act2.com/products/fusion3.html">VMWare Fusion3</a>(2)を使ってインストールしたWindowsにはデフォルトでVMWare共有フォルダがあり、どちらのOSからでも同じようにアクセスできるようになっていますが、<strong>MacからWindows内のフォルダ・ファイルを直接操作する方法は、VMWare自体には用意されていません（たぶん）</strong>。</p>
					<p>用意はされていませんが、<strong>仮想OSとはローカルでファイル共有サーバーにMacから接続ができる</strong>ため、権限さえ適切に用意されていれば、Macから自由に変更することができるので、その方法を紹介します。（ただし共有できるディレクトリはWindows7ではUsers以下に限る）</p>
					<p><span id="more-1907"></span></p>
					<h2>Macから接続するまでの流れ</h2>
					<p>以下はWindows7で話を進めます。</p>
					<h3>Windowsでユーザーアカウントにパスワードを設定しておく</h3>
					<p>コントロールパネルからパスワードの設定を行ってください。</p>
					<p>ユーザーアカウントのユーザーに対して、<strong>Users/ユーザーアカウント ディレクトリ以下のファイルにしか、変更・書き込み権限はなく、その他のディレクトリ・ファイルは読み取り専用</strong>となります。また<strong>Macから接続できるのは、Usersディレクトリ以下</strong>になります。Usersディレクトリ以下のUsers/ユーザーアカウント 以外のディレクトリのファイルを変更などする場合は、変更・書き込み権限を与えておく必要があります。</p>
					<p>上記に関してはあまりないと思うので、今回は省略して、次に進みます。というよりも、そもそもVMWareの共有フォルダで十分ですかね。。</p>
					<h3>ローカルIPアドレスを確認する</h3>
					<p>Windows内でCommand+Rで「<strong>ファイル名を指定して実行</strong>」窓を開き、「cmd」と入力して実行します。</p>
					<p><a href="http://5509.me/wp-content/uploads/2009/11/fig1.png"><img class="alignnone size-medium wp-image-1912" title="fig1" src="http://5509.me/wp-content/uploads/2009/11/fig1-300x181.png" alt="fig1" width="300" height="181" /></a></p>
					<p>コマンドプロンプトが表示されるので、<strong>ipconfigと入力し、実行します。IPv4アドレスに表示されているIPアドレスを覚えておいてください</strong>。</p>
					<p><a href="http://5509.me/wp-content/uploads/2009/11/fig21.png"><img class="alignnone size-medium wp-image-1918" title="fig2" src="http://5509.me/wp-content/uploads/2009/11/fig21-300x154.png" alt="fig2" width="300" height="154" /></a></p>
					<h3>Macから接続する</h3>
					<p>Finderを選択した状態でCommand+Kを押して、接続画面を開きます。<br />
					サーバアドレス入力欄に、「<strong>smb://IPアドレス</strong>」を入力して接続をクリックします。</p>
					<p><a href="http://5509.me/wp-content/uploads/2009/11/fig3.png"><img class="alignnone size-medium wp-image-1914" title="fig3" src="http://5509.me/wp-content/uploads/2009/11/fig3-300x66.png" alt="fig3" width="300" height="66" /></a></p>
					<p>するとこんな感じで名前とパスワードを聞かれるので、<strong>Windowsのユーザとパスワードを入力して、接続をクリック</strong>します。</p>
					<p><a href="http://5509.me/wp-content/uploads/2009/11/fig4.png"><img class="alignnone size-medium wp-image-1915" title="fig4" src="http://5509.me/wp-content/uploads/2009/11/fig4-300x195.png" alt="fig4" width="300" height="195" /></a></p>
					<p>どれをマウントするか聞かれるので、<strong>Usersを選択してOKをクリック</strong>します。</p>
					<p><a href="http://5509.me/wp-content/uploads/2009/11/fig5.png"><img class="alignnone size-medium wp-image-1916" title="fig5" src="http://5509.me/wp-content/uploads/2009/11/fig5-300x204.png" alt="fig5" width="300" height="204" /></a></p>
					<p>マウントされ、Finderのサイドバーに表示されました。<br />
					デスクトップにもショートカットが表示されていると思います。</p>
					<p><a href="http://5509.me/wp-content/uploads/2009/11/fig6.png"><img class="alignnone size-full wp-image-1917" title="fig6" src="http://5509.me/wp-content/uploads/2009/11/fig6.png" alt="fig6" width="173" height="90" /></a></p>
					<p>あとは、マウントしたサーバからファイルを編集したりすることができます。</p>
					<p>SVNやExcelは結局のところ、Windowsの方が色々都合がよかったりするのでWindowsメインで作業しています。<br />
					SVNがWindowsにあるけど、作業自体は、Macで行いたいときなどに有用ではないでしょうか。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1907&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/connecting-vm-windows-directory/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VMWare Fusion3にWindows7をインストールしたのでメモなど</title>
		<link>http://5509.me/log/install-windows7-to-mac-with-vmwarefusion3</link>
		<comments>http://5509.me/log/install-windows7-to-mac-with-vmwarefusion3#comments</comments>
		<pubDate>Sun, 01 Nov 2009 23:00:59 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[memo]]></category>
		<category><![CDATA[vmwarefusion]]></category>
		<category><![CDATA[windows7]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1877</guid>
		<description><![CDATA[					
					Windows7をVMWare Fusion3にインストールしたときのメモ。
					今までFusion2とXPを使っていたのですが、どうもSpacesを使ってMacからWindowsに移動すると [...]]]></description>
			<content:encoded><![CDATA[					<p><img title="s6" src="http://5509.me/wp-content/uploads/2009/11/s6.jpg" alt="s6" width="350" /></p>
					<p><a href="http://www.microsoft.com/japan/windows/windows-7/default.aspx">Windows7</a>を<a href="http://www.act2.com/products/fusion3.html">VMWare Fusion3</a>にインストールしたときのメモ。<br />
					今までFusion2とXPを使っていたのですが、どうもSpacesを使ってMacからWindowsに移動するときにひっかかるし、プチフリーズ的なものが多発していました。原因はFusion2だったので、Fusion3はその辺の改善もされているということで一緒にアップグレードしてみました。なので面倒くさいので、Fusion2にWindows7を入れたりするような実験はしてみてません。</p>
					<p class="note">※ ちょうど<a href="http://ascii.jp/elem/000/000/472/472854/?mail">ASCII.jpで詳しめの解説記事が公開</a>されてました。</p>
					<p class="note"><span id="more-1877"></span></p>
					<h2>簡単にFusion3の改善点など</h2>
					<ul>
					<li><strong>Aeroが使える</strong></li>
					<li>Macへの負担減 (*1</li>
					<li><strong>64bit版OSへの対応</strong></li>
					</ul>
					<p>その他いろいろあるみたいですが、僕が使う上で主なものはこれくらいです。Windows7に関してはAeroを利用することで使いやすくなるので、Fusion3へのアップグレードは必須と言えるでしょう。言えないかも。</p>
					<p>*1) フルスクリーンモードで使用している際に、Spacesなどで移動したときのプチフリーズ的なものが多発していたのですが、ほとんど気にならない状態になりました。</p>
					<h2>Windows7をVMWare Fusion3にインストールするときの注意点</h2>
					<ul>
					<li><a href="http://www.act2.com/support/faq/index/id/519/">XPからのアップグレードは基本的にはできない</a> (*2</li>
					<li><a href="http://www.act2.com/support/faq/index/id/513/">Aeroを使う場合は、メモリ割当2GBあったほうがいい</a></li>
					<li>（当然）ひとつのライセンスでひとつの仮想環境にしかインストールできない</li>
					</ul>
					<p>*2) XPを使っている場合、アップグレード版からはインストールできないとのことなので、購入を考えている方は気をつけたほうがよさそうです。する方法もあるようですが。</p>
					<h2>利用環境</h2>
					<p>以下の2つの環境にインストールしました。当然ですが、iMacの方が快適に使えますね。</p>
					<h3>MacBook</h3>
					<ul>
					<li>アルミなのにキーボードのバックライトもないMacBook Proになれなかった悲しいやつ</li>
					<li>Core2Duo 2GHz</li>
					<li>4GBRAM</li>
					<li>Geforce 9400M</li>
					</ul>
					<h3>iMac</h3>
					<ul>
					<li>Core2Duo 2.66GHz</li>
					<li>4GBRAM</li>
					<li>Geforce 9400</li>
					</ul>
					<p>でどちらもメモリ割当は2GBにしています。</p>
					<h2>インストールからの簡単な流れ</h2>
					<h3>まずはインストール</h3>
					<p>別になんてことはないそのままなのですが、</p>
					<ol>
					<li>VMWare Fusionの手順に従ってインストール</li>
					<li>プロダクトキーのアクティベート</li>
					<li><strong>VMWare Toolsのインストール</strong></li>
					</ol>
					<p>このとき、元々XPなどのOSをインストールしている場合は、XP等登録されているOSが既定のOSになっていると、VMWare Fusionを起動すると自動でOSまで立ち上がります。</p>
					<p><img class="alignnone size-full wp-image-1887" title="s3" src="http://5509.me/wp-content/uploads/2009/11/s3.jpg" alt="s3" width="281" height="179" /></p>
					<p>DockにVMWareが入っている場合は、副ボタンから仮想マシンのライブラリを選択すると次のような画面になるので</p>
					<p><a href="http://5509.me/wp-content/uploads/2009/11/s5.jpg"><img class="alignnone size-medium wp-image-1888" title="s5" src="http://5509.me/wp-content/uploads/2009/11/s5-300x165.jpg" alt="s5" width="200" /></a> <a href="http://5509.me/wp-content/uploads/2009/11/s4.jpg"><img title="s4" src="http://5509.me/wp-content/uploads/2009/11/s4.jpg" alt="s4" width="200" /></a></p>
					<p>★をクリックして既定のOSから外しておきます。</p>
					<p>最後のVMWare Toolsのインストールがたぶん一番重要で、<strong>これをしないとAeroが使えるようになりません</strong>。こんなところで迷う人はあんまりいないと思いますが、僕は30分くらい迷ってました…</p>
					<p><a href="http://5509.me/wp-content/uploads/2009/11/s2.jpg"><img class="alignnone size-medium wp-image-1886" title="s2" src="http://5509.me/wp-content/uploads/2009/11/s2-300x235.jpg" alt="s2" width="300" height="235" /></a></p>
					<p>Aeroを利用できる環境で、VMWare Toolsをインストールして、再起動後<br />
					デスクトップ→副ボタン→個人設定からAeroテーマを選ぶことでAeroが有効になります。</p>
					<p><a href="http://5509.me/wp-content/uploads/2009/11/s7.jpg"><img title="s7" src="http://5509.me/wp-content/uploads/2009/11/s7-300x188.jpg" alt="s7" width="300" height="188" /></a></p>
					<h3>インストール後</h3>
					<p>デフォルトでUserのトップが共有フォルダに設定されていますが、ネットワーク上にあるファイルなどを扱うには別途共有フォルダの設定が必要です。</p>
					<p><a href="http://5509.me/wp-content/uploads/2009/11/s1.jpg"><img class="alignnone size-medium wp-image-1885" title="s1" src="http://5509.me/wp-content/uploads/2009/11/s1-300x213.jpg" alt="s1" width="300" height="213" /></a></p>
					<p>共有フォルダの追加から追加したいフォルダを選択すればOKです。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1877&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/install-windows7-to-mac-with-vmwarefusion3/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodaとGoogle Codeで始めるプロジェクトのバージョン管理</title>
		<link>http://5509.me/log/start-the-management-of-projects-with-coda-and-googlecode</link>
		<comments>http://5509.me/log/start-the-management-of-projects-with-coda-and-googlecode#comments</comments>
		<pubDate>Mon, 12 Oct 2009 19:02:05 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[Coda]]></category>
		<category><![CDATA[googlecode]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1846</guid>
		<description><![CDATA[					主な開発環境にMac専用クライアントのCodaを使っていますがCodaはサイト(プロジェクト)毎に、Subversion(*1)リポジトリが設定できるようになっています。バージョン管理はシステム開発などを行って [...]]]></description>
			<content:encoded><![CDATA[					<p>主な開発環境にMac専用クライアントの<a href="http://www.panic.com/jp/coda/">Coda</a>を使っていますがCodaはサイト(プロジェクト)毎に、Subversion(*1)リポジトリが設定できるようになっています。バージョン管理はシステム開発などを行っている人などにはおなじみだと思いますが、デザイナーやコーダーにはあまり馴染みが深くないかも知れません。実際僕もそうでした。この記事ではバージョン管理自体には触れませんが(*1)、jQueryライブラリの管理を<a href="http://code.google.com/">Google Code</a>の<a href="http://code.google.com/hosting/">Project Hosting</a>で行うようにしたので過程を紹介しておきます。</p>
					<p>1) Subversionについては説明すると長くなるので以下の記事などを参考にしてください。</p>
					<ul>
					<li><a href="http://www.thinkit.co.jp/free/article/0611/2/2/">第２回：Subversionによるバージョン管理（前編）</a></li>
					<li><a href="http://www.02.246.ne.jp/~torutk/subversion/intro.html">Subversionでバージョン管理</a></li>
					</ul>
					<p><span id="more-1846"></span></p>
					<h2>Google Codeでプロジェクト立ち上げる</h2>
					<p>Google codeはオープンソースライセンスのプロジェクトのホスティングサービスです。なので当然ですが、仕事案件などの管理はできないです。自作プラグインとかそういう感じのオープンソースなプロジェクトの管理で使うと便利です。</p>
					<h3>Googleアカウントがない人は…</h3>
					<p>まずはGoogleアカウントがないと何も始まらないので、ない人はGoogleアカウントを取得してください。</p>
					<p><img class="alignnone size-full wp-image-1848" title="Googleアカウント作成" src="http://5509.me/wp-content/uploads/2009/10/fig1.png" alt="Googleアカウント作成" height="200" /></p>
					<h3>新規プロジェクトを作成する</h3>
					<p>アカウントが発行されたら<a href="http://code.google.com/hosting/">Project Hosting</a>から早速新規プロジェクトを作成してみましょう。</p>
					<p><img class="alignnone size-full wp-image-1851" title="新規プロジェクト" src="http://5509.me/wp-content/uploads/2009/10/fig2.png" alt="新規プロジェクト" width="400" height="160" /></p>
					<p>Contribute Open Sourceのリンクからプロジェクトのドキュメントに移動します。</p>
					<p><img class="alignnone size-full wp-image-1852" title="新規プロジェクト作成リンク" src="http://5509.me/wp-content/uploads/2009/10/fig3.png" alt="新規プロジェクト作成リンク" width="339" height="189" /></p>
					<p>Create Projectのリンクからプロジェクト作成ページに移動します。</p>
					<p><img class="alignnone size-full wp-image-1855" title="プロジェクトの概要入力" src="http://5509.me/wp-content/uploads/2009/10/fig4.png" alt="プロジェクトの概要入力" width="364" height="400" /></p>
					<p>必要な箇所を入力していきます。</p>
					<ul>
					<li><strong>Project name</strong>: プロジェクト名、ディレクトリ名になります。小文字のみ。</li>
					<li><strong>Project summary</strong>: そのままサマリー。英語でも日本語でも。</li>
					<li><strong>Project description</strong>: 概要。英語でも日本語でも。</li>
					<li><strong>Version control system</strong>: <strong>Subversion</strong>を選択。</li>
					<li><strong>Source code license</strong>: 適用するライセンスを選択。</li>
					<li><strong>Project labels</strong>: タグみたいな感じ。</li>
					</ul>
					<p>最初に説明した通り、Google codeはオープンソースライセンスのプロジェクトのホスティングサービスです。ライセンスはオープンソース系のライセンスからしか選べず、プロジェクトは誰でも閲覧できる状態になります。</p>
					<p>入力ができたらCreate projectでプロジェクトを作成します。</p>
					<p><img class="alignnone size-full wp-image-1858" title="プロジェクトができた" src="http://5509.me/wp-content/uploads/2009/10/fig5.png" alt="プロジェクトができた" width="400" /></p>
					<p>作成したプロジェクトには</p>
					<p>http://projectname.googlecode.com</p>
					<p>(http://code.google.com/p/projectname)</p>
					<p>でアクセスできます。Subversionのリポジトリは</p>
					<p>https://projectname.googlecode.com/svn/trunk (httpではなく、<strong>https</strong>です)</p>
					<p>ここまで準備ができたら次はCodaの設定に移りますが、その前にGoogle code用のパスワードが必要になります。画面右上のProfileから遷移した先のページのSettingタブの中にパスワードがあります。</p>
					<p><img class="alignnone size-full wp-image-1856" title="プロフィールからパスワードを確認できる" src="http://5509.me/wp-content/uploads/2009/10/fig6.png" alt="プロフィールからパスワードを確認できる" width="300" /></p>
					<p><img class="alignnone size-full wp-image-1857" title="このパスワードをこの後使う" src="http://5509.me/wp-content/uploads/2009/10/fig7.png" alt="このパスワードをこの後使う" width="300" /></p>
					<h2>Codaの設定</h2>
					<h3>サイトの追加、リポジトリの設定</h3>
					<p>Codaを起動して、サイトを作成します。入力が必要な箇所はとりあえず名前、トップページURLとローカルルートです。トップページURLは http://projectname.googlecode.com を入力しておきます。</p>
					<p><img class="alignnone size-full wp-image-1860" title="Codaで新規サイトを作成する" src="http://5509.me/wp-content/uploads/2009/10/fig8.png" alt="Codaで新規サイトを作成する" width="400" height="229" /></p>
					<p>ローカルルートを入力したら、一番下にある「ソースをチェックアウト」を実行します。</p>
					<p><img class="alignnone size-full wp-image-1861" title="ソースコードのチェックアウト" src="http://5509.me/wp-content/uploads/2009/10/fig9.png" alt="ソースコードのチェックアウト" width="400" /></p>
					<p>実行すると、指定したローカルルートに.svnディレクトリが作成されて、ソース管理に入力項目が出てきます。</p>
					<p><img class="alignnone size-full wp-image-1863" title="SVNの情報を入力" src="http://5509.me/wp-content/uploads/2009/10/fig11.png" alt="SVNの情報を入力" width="400" /></p>
					<ul>
					<li>リポジトリURL: <strong>https://projectname.googlecode.com/svn/trunk</strong></li>
					<li>ユーザ名: <strong>Googleアカウント</strong></li>
					<li>パスワード: <strong>GoogleCode.com Password</strong></li>
					</ul>
					<p>をそれぞれ入力して準備完了です。</p>
					<h3>プロジェクトファイルの追加</h3>
					<p>準備ができたら、何かファイルを入れてみましょう。ディレクトリ・ファイルの右に？マークが出てると思います。</p>
					<p><img class="alignnone size-full wp-image-1864" title="SVNにディレクトリ・ファイルを追加" src="http://5509.me/wp-content/uploads/2009/10/fig12.png" alt="SVNにディレクトリ・ファイルを追加" width="389" height="98" /></p>
					<p>この？をクリックすると、ディレクトリをバージョン管理することができるようになります。</p>
					<h3>プロジェクトファイルのコミット</h3>
					<p>追加を行うと今度は、Aマークが出てきます。Aマークが出ているときは、ディレクトリ・ファイルに変更があったという状態です。</p>
					<p><img class="alignnone size-full wp-image-1865" title="コミット" src="http://5509.me/wp-content/uploads/2009/10/fig13.png" alt="コミット" width="400" /></p>
					<p>Aマークをクリックすると、ディレクトリ・ファイルをコミットすることができます。適当なコメントを入力して(空でも可)コミットします。</p>
					<p>コミットができたら、Google codeにコミットできているか確認してみましょう。プロジェクトのページのUpdatesから更新履歴画面に移動すると、下のようになっていることが確認できれば、コミットできています。r2というのはrevision2という意味です。</p>
					<p><img class="alignnone size-full wp-image-1866" title="コミットできてるか確認" src="http://5509.me/wp-content/uploads/2009/10/fig14.png" alt="コミットできてるか確認" width="377" height="63" /></p>
					<p>とりあえず、コミットまでを説明しましたが、Codaではその他にアップデート、比較、ロールバックなどをGUIから行うことができます。他の場所からコミットした場合などは作業に入る前に最新リビジョンにアップデートしておきましょう。</p>
					<p>バージョン管理自体の説明を端折ったので、何だかわからない人もいるかもしれませんが、きっと<a href="http://rewish.org">rewish.org</a>のrewさんが説明してくれるはずです <img src='http://5509.me/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1846&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/start-the-management-of-projects-with-coda-and-googlecode/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>gihyo.jpでWeb連載「もっと便利に！jQueryでラクラクサイト制作（実践サンプル付き）」を開始しました</title>
		<link>http://5509.me/log/start-serialization-of-jquery-archives</link>
		<comments>http://5509.me/log/start-serialization-of-jquery-archives#comments</comments>
		<pubDate>Fri, 02 Oct 2009 06:28:06 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[連載]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1842</guid>
		<description><![CDATA[					gihyo.jpで「もっと便利に！jQueryでラクラクサイト制作（実践サンプル付き）」という連載をTHE HAM MEDIAのハムさんと共著で始めました。
					http://gihyo.jp/desig [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://gihyo.jp/">gihyo.jp</a>で「<a href="http://gihyo.jp/design/serial/01/jquery-site-production/">もっと便利に！jQueryでラクラクサイト制作（実践サンプル付き）</a>」という連載を<a href="http://h2ham.seesaa.net/">THE HAM MEDIA</a>のハムさんと共著で始めました。</p>
					<p><a href="http://gihyo.jp/design/serial/01/jquery-site-production">http://gihyo.jp/design/serial/01/jquery-site-production</a></p>
					<p>記事の対象は主に「jQueryって便利そうだけど、JavaScriptとか難しそう…」というように考えているデザイナーやコーダーの方です。実際jQueryに触り出すと、簡単なスクリプトならどんどん書けるようになっていきます。その1歩を踏み出せるような記事を目指して連載していきますので、使おうか迷っている人はぜひ1歩を踏み出して使ってみてください。</p>
					<p>第1回目は「jQueryにふれる」です。</p>
					<p><a href="http://gihyo.jp/design/serial/01/jquery-site-production/0001">http://gihyo.jp/design/serial/01/jquery-site-production/0001</a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1842&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/start-serialization-of-jquery-archives/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>デスマなう for Twitter</title>
		<link>http://5509.me/log/deathmanow</link>
		<comments>http://5509.me/log/deathmanow#comments</comments>
		<pubDate>Tue, 15 Sep 2009 21:38:06 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1813</guid>
		<description><![CDATA[					
					Twitterに「デスマなう」を投稿するボタンを追加するGreasemonkeyです。
					それだけです…
					使い方
					下記リンクからGreasemonkeyスクリプトをインス [...]]]></description>
			<content:encoded><![CDATA[					<p><img class="alignnone size-full wp-image-1823" title="デスマなう スクリーンショット" src="http://5509.me/wp-content/uploads/2009/09/スクリーンショット（2009-09-16-1.24.01-AM）.png" alt="デスマなう スクリーンショット" width="450" /></p>
					<p>Twitterに「デスマなう」を投稿するボタンを追加するGreasemonkeyです。<br />
					それだけです…</p>
					<h2>使い方</h2>
					<p>下記リンクからGreasemonkeyスクリプトをインストールします。</p>
					<p class="link"><a href="http://5509.me/sample/archive/deathmanow.user.js">Install DeathMaNow</a></p>
					<p class="link">TwitterのUpdateボタンの左に「デスマなう」ボタンが追加されます。<br />
					<strong>クリックすれば「デスマなう #deathmanow」が投稿されます</strong>。</p>
					<p class="link">そもそもデスマって何という方は<a href="http://e0166.blog89.fc2.com/blog-entry-429.html">ネタ帳さんの記事</a>辺りを参考にどうぞ。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1813&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/deathmanow/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>画像などのファイルを新しいウィンドウ・タブで開くGreasemonkey</title>
		<link>http://5509.me/log/ofbnw</link>
		<comments>http://5509.me/log/ofbnw#comments</comments>
		<pubDate>Thu, 03 Sep 2009 05:27:36 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[memo]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1779</guid>
		<description><![CDATA[					Greasemonkeyばっかりですが… 単純に作業するにあたって作ったものをあげてます。
					タイトルそのままで、画像などのリンクを新しいウィンドウ・タブで開くためにtarget=&#8221;_bla [...]]]></description>
			<content:encoded><![CDATA[					<p>Greasemonkeyばっかりですが… 単純に作業するにあたって作ったものをあげてます。</p>
					<p>タイトルそのままで、画像などのリンクを新しいウィンドウ・タブで開くためにtarget=&#8221;_blank&#8221;を追加します。</p>
					<p>毎回Ctrl/Commandを押すのが面倒くさくて…中クリックも忘れることが多いし…<br />
					間違えてタブを閉じることが多いのでいっそのことということで書きました。</p>
					<p>target=&#8221;_blank&#8221;について色々と議論はあるようですが、自分で使うだけなので気にしないことにします。またonclickとかでイベントを上書きするとLightboxなどのスクリプトに干渉したりしそうなので、あえてtarget=&#8221;_blank&#8221;にしました。</p>
					<p>デフォルトでは自分の用途に合わせて、jpg・gif・png画像とPDFをtarget=&#8221;_blank&#8221;で開くようにしています。 追加したい場合は、var filetypesに追加してください。</p>
					<pre>var filetypes = /\.jpg|\.jpeg|\.gif|\.png|\.pdf$/i;</pre>
<p class="link"><a href="http://5509.me/sample/userjs/ofbnw.user.js">Install this script</a></p>
<img src="http://5509.me/?ak_action=api_record_view&id=1779&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/ofbnw/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yahooアクセス解析で縮小されるURLを開くGreasemonkey</title>
		<link>http://5509.me/log/expand_url_on_ya</link>
		<comments>http://5509.me/log/expand_url_on_ya#comments</comments>
		<pubDate>Fri, 07 Aug 2009 08:35:49 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[Yahooアクセス解析]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1757</guid>
		<description><![CDATA[					実験的にYahooアクセス解析を導入していますが、先日のコンバージョン計測導入時に参照元URLとかページビューランキングのURLが短縮されるようになってしまいました。
					見にくい
					
					 [...]]]></description>
			<content:encoded><![CDATA[					<p>実験的に<a href="http://analytics.yahoo.co.jp/">Yahooアクセス解析</a>を導入していますが、先日のコンバージョン計測導入時に<strong>参照元URLとかページビューランキングのURLが短縮されるようになってしまいました</strong>。</p>
					<h3>見にくい</h3>
					<p><img class="alignnone size-full wp-image-1761" title="短縮されたURL" src="http://5509.me/wp-content/uploads/2009/08/ex_ya_a1.gif" alt="短縮されたURL" width="450" height="109" /><br />
					↑このように短縮される。いや…見にくいから…</p>
					<h3>以前の状態に戻す</h3>
					<p>これは見にくい…！ていうかこんなんで何がわかるんやろう…クリックするまでわからないこと面倒くささ。(Firebugで見れますが)とても使いにくいので、取り急ぎ短縮されたURLを開くGreasemonkey書きました。</p>
					<p><img class="alignnone size-full wp-image-1762" title="開いたURL" src="http://5509.me/wp-content/uploads/2009/08/ex_ya_b1.gif" alt="開いたURL" width="450" height="109" /><br />
					↑開いてついでにデコードします。</p>
					<p>文字数が増えるとテーブルが崩れ出すので、とりあえず70文字制限にしました。70文字を超えるURLは&#8230;のようになります。<br />
					YAはまだまだ実験要素が多いようなので、また戻るかもしれません。というか戻してくれるといいですね。</p>
					<p class="link"><a href="http://5509.me/sample/exuoya/expand_url_on_ya.user.js">Install Expand URL on YA</a></p>
					<h2 class="link">更新履歴とか</h2>
					<ul>
					<li>2009-08-10 bugfix, ツールチップでフルURLを確認できるように変更</li>
					</ul>
					<img src="http://5509.me/?ak_action=api_record_view&id=1757&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/expand_url_on_ya/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>入力したパスワードを表示するGreasemonkey</title>
		<link>http://5509.me/log/chkpasswduserjs</link>
		<comments>http://5509.me/log/chkpasswduserjs#comments</comments>
		<pubDate>Mon, 03 Aug 2009 04:00:49 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1709</guid>
		<description><![CDATA[					
					通常入力したパスワードは、アスタリスクで*****のように隠れてしまいますが、うっかりキーを押しすぎたときとか、何を打ったかわからなくなるときないですか？
					いちいち全部消して、、打ちなおし [...]]]></description>
			<content:encoded><![CDATA[					<p><img class="alignnone size-full wp-image-1716" title="ChkPasswd.user.js" src="http://5509.me/wp-content/uploads/2009/08/ピクチャ-13.png" alt="ChkPasswd.user.js" width="237" height="142" /></p>
					<p>通常入力したパスワードは、アスタリスクで*****のように隠れてしまいますが、うっかりキーを押しすぎたときとか、何を打ったかわからなくなるときないですか？</p>
					<p>いちいち全部消して、、打ちなおして、、また間違えて…よくやりますｗ</p>
					<p>常に表示されるとセキュリティ面で不安も残るかも知れないので、チェックボックスをチェックしてるときだけ表示されるGreasemonkeyを書きました。簡単に言えばこの前書いた<a href="http://5509.me/2009/07/02/hintmask.html">hintmask</a>のGreasemonkey版です。</p>
					<p>それなりに使えると思うのでFirefoxの方は試しにインストールしてみてください。</p>
					<p><span id="more-1709"></span></p>
					<h2 class="link">インストール</h2>
					<h3>Greasemonkeyをインストール済みの方</h3>
					<p>下記リンクからインストールできます。</p>
					<p class="link"><a href="http://5509.me/sample/chkpasswd/chkpasswd.user.js">Install ChkPasswd</a></p>
					<h3 class="link">Greasemonkeyをインストールしていない方</h3>
					<p><a href="https://addons.mozilla.org/ja/firefox/addon/748">Greasemonkey: Firefox Add-on</a>からGreasemonkeyをインストール後、下記リンクからインストールできます。</p>
					<p class="link"><a href="http://5509.me/sample/chkpasswd/chkpasswd.user.js">Install ChkPasswd</a></p>
					<h2 class="link">使い方</h2>
					<p>Chkpasswdをインストールすると</p>
					<ol>
					<li><strong>パスワード入力欄(input[type="password"])の右にチェックボックスが表示</strong>されるようになります<a href="#com1">(*1)</a>。</li>
					<li>これを<strong>チェックすると入力パスワードがパスワード入力欄の下に表示</strong>されます<a href="#com2">(*2)</a>。</li>
					<li>未入力の場合は何も表示されません。</li>
					</ol>
					<h3>注意</h3>
					<ol>
					<li>チェックを入れると当然<strong>パスワードが丸見えになります</strong>。</li>
					<li><strong>周囲に人の気配を感じたらチェックを外してください</strong>。</li>
					<li><strong>共有のPCにはインストールしないほうがいい</strong>かもしれません。</li>
					<li>ボックスの影はFirefox3.5以上で有効です。</li>
					</ol>
					<h2>バグなど</h2>
					<ol>
					<li id="com1">パスワード入力欄が<strong>予め表示されていないような場合は、画面左上のほうに表示</strong>されます。<br />
					また、パスワード入力欄の右に予めテキストまたは他の要素がある場合は、それらにかぶさってチェックボックスが表示されます。</li>
					<li id="com2">1と同じく、予めパスワード入力欄が表示されていないような場合は、画面左上のほうに表示されます。</li>
					<li id="com2">WordPressの管理ログイン画面でなんかずれてます。</li>
					<li id="com2">なんだか他にもありそうなので上記以外のバグはコメントなどで教えてください。。(解決できるかわかりませんが…)</li>
					</ol>
					<h2>メモ</h2>
					<p>CSS3プロパティのFirefox先攻拡張</p>
					<ul>
					<li>-moz-border-radius</li>
					<li>-moz-box-shadow</li>
					</ul>
					<p>はDOM Level1の</p>
					<pre>elm.style.***** = xxxxx;</pre>
<h3 id="e090805">修正しました</h3>
<pre>elm.style.MozBorderRadius</pre>
					<p>のように-(ハイフン)の後ろの文字を大文字にするルールに従うだけでした。<br />
					コメントありがとうございます:)</p>
					<p><span style="text-decoration: line-through;">では、うまくいかなかったのですが(というより頭文字のハイフンの扱い方も分からないし、書き方もわからない)</span><a href="#e090805"><strong>修正済*090805</strong></a>、<a href="http://blog.wonder-boys.net/">wonderさん</a>に<strong>setAttributeメソッドから直接書き込めばできるよ</strong>、と教えてもらいその方法で回避しました。</p>
					<pre>elm.setAttribute('style','-moz-border-radius: 5px');</pre>
<p>ただ、<strong>他にもstyleを指定している場合は、setAttributeを先に指定しておかないと、全て上書きしてしまいます</strong>。<strong>先にsetAttributeを指定しておけば</strong>、elm.style.****の分は後から追加されるので問題ないです。</p>
<h3>ダメ</h3>
<p><strong>setAttributeはstyle属性の値を更新する</strong>。</p>
<pre>elm.style.border = 'solid #006FFF 1px';
elm.style.padding = '5px';
elm.style.display = 'none';
elm.style.color = '#fff';
elm.style.backgroundColor = '#73adff' ;

elm.setAttribute('style','-moz-border-radius: 5px');</pre>
					<h3>イイ</h3>
					<p><strong>先にstyle属性を更新しておけばいい</strong>。</p>
					<pre>elm.setAttribute('style','-moz-border-radius: 5px');

elm.style.border = 'solid #006FFF 1px';
elm.style.padding = '5px';
elm.style.display = 'none';
elm.style.color = '#fff';
elm.style.backgroundColor = '#73adff' ;</pre>
					<p>今回は</p>
					<ul>
					<li>-moz-border-radius</li>
					<li>-moz-box-shadow</li>
					</ul>
					<p>を使っているのでこれらは1回のsetAttributeでまとめて記述する必要があります。</p>
					<pre>elm.setAttribute('style','-moz-border-radius: 5px; -moz-box-shadow: 3px 3px 3px #666');</pre>
<p>ところで、-moz-box-shadowはFirefox3.5でのプレフィクスなので3.5以上じゃないと適用されないです。ちょうど、3ping.orgのwuさんも<a href="http://3ping.org/2009/08/01/1259">CSSの実装状況で変わるボックスのデザイン方法</a>でCSS2,CSS3のプロパティ・セレクタを使って色んなdiv要素の見せ方を提示されてますが、CSS3までのプロパティ・セレクタが使えるようになると、CSSだけでもデザインの幅がかなり広がりますね。</p>
<img src="http://5509.me/?ak_action=api_record_view&id=1709&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/chkpasswduserjs/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>リニューアルのポイントまとめ(WordPressプラグイン、HTML5など)</title>
		<link>http://5509.me/log/renewal-memo</link>
		<comments>http://5509.me/log/renewal-memo#comments</comments>
		<pubDate>Mon, 20 Jul 2009 15:45:48 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[memo]]></category>
		<category><![CDATA[まとめ]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1647</guid>
		<description><![CDATA[					色々と構成やら使ってるプラグインやらを変えたので一応メモ。今回のリニューアルでは実験要素を多く含んでいるので全てのブラウザーをサポートできていません(HTML,CSS的な意味で)。
					
					Wor [...]]]></description>
			<content:encoded><![CDATA[					<p>色々と構成やら使ってるプラグインやらを変えたので一応メモ。今回のリニューアルでは実験要素を多く含んでいるので<strong>全てのブラウザーをサポートできていません</strong>(HTML,CSS的な意味で)。</p>
					<p><span id="more-1647"></span></p>
					<h2>WordPress</h2>
					<h3>2.8.1</h3>
					<p>ちょうどいい機会なので2.7.1から<strong>2.8.1</strong>にアップグレード、というかインストールし直しました。と思ったら2.8.2が…</p>
					<h3>使ったWordPressプラグイン</h3>
					<p>をリストで挙げようと思ったんですけれど、<a href="/2009/04/16/using-wordpress-as-cms.html">CMSとしてのWordPressでサイト構築をするときに便利な13のプラグイン</a>で紹介したものとほぼ被りなのでやめます。</p>
					<p>ただ<a rel="nofollow" href="http://www.tinybeans.net/blog/2009/07/13-061303.html">Custom Field GUI Utility 2.0.0</a>は本当に便利なのでみなさん使ったほうがいいです。使うべきです。今回は一番ベタな使い方でアレですが、keywordsとdescriptionとして記事ページのmetaに出力させてます。<strong>All in One SEO Packがないと始まらないとか書いてた手前</strong>なんなんですが、出力されるHTMLソースが気に入らないし、wp_head()を入れたくなかったので<strong>使用をやめて</strong>、<a rel="nofollow" href="http://www.tinybeans.net/blog/2009/07/13-061303.html">Custom Field GUI Utility 2.0.0</a>で対応しました。使い方次第でどんな具合にも出来るので、他でも色々と使わせてもらってます。</p>
					<p>(過去記事のmeta移行はまだやってないので、空になってますね。地道にやるつもりですが、その辺うまいことひっぱれたら…)</p>
					<p>配布元の<a href="http://www.tinybeans.net/blog/">かたつむりくんのWWW</a>の<a href="http://www.tinybeans.net/blog/2009/07/13-061303.html">記事</a>を見れば分かることですが一応メモ。</p>
					<h3>Custom Field GUI Utility 2.0.0の設定メモ</h3>
					<p>使うものだけ表示させればいいので、conf-post.iniの中身を全部削除して</p>
					<pre>[cf_keywords]
fieldname = Keywords
type = textfield
size = 60
sample = jQuery,WordPress,Plugin
must = 1

[cf_description]
fieldname = Description
type = textfield
size = 60
sample = input the example or the caption
must = 1</pre>
					<p>だけに。他のconf-common.iniとconf-page.iniは削除(コメントアウトでも可)。<br />
					準備ができたら記事投稿ページに下のように表示されます。</p>
					<p><img class="alignnone size-full wp-image-1670" title="Custom Field GUI Utility" src="http://5509.me/wp-content/uploads/2009/07/cfguiu.gif" alt="Custom Field GUI Utility" width="400" height="196" /></p>
					<p>次はmetaで出力する方法ですが、カスタムフィールドの値は<strong>post_custom(key)で取得</strong>できます。またconf-post.iniで記述した<strong>[]内の値がkeyになる</strong>ので、例えばKeywordsを取得する場合は</p>
					<pre>post_custom('cf_keywords');</pre>
<p>になります。また<strong>カスタムフィールドの値はWordPressループの中でしか使えない</strong>ことも覚えておいてください。これらを踏まえて記事とページのみに表示させたい場合は、header.phpのmetaを以下のようにします。</p>
<pre>&lt;?php if (is_singular() &amp;&amp; have_posts() ) : while ( have_posts() ) : the_post(); ?&gt;
 &lt;meta name="keywords" content="&lt;?php echo post_custom('cf_keywords'); ?&gt;"&gt;
 &lt;meta name="description" content="&lt;?php echo post_custom('cf_description'); ?&gt;"&gt;
&lt;?php endwhile; else: ?&gt;
 &lt;meta name="keywords" content="jQuery,プラグイン,plugin,WordPress"&gt;
 &lt;meta name="description" content="jQueryとか気になったことなど"&gt;
&lt;?php endif; ?&gt;</pre>
					<p>(これだけならデフォルトのカスタムフィールドでも出来ますが、他にも使う予定があるので:) )</p>
					<h3>Commentの返信</h3>
					<p><strong>WordPressに実装されてるReplyを使えるように</strong>しました。ただJSは自分で書きました。<strong>OperaとIEではJSが機能しない</strong>ようになってます。でもReply自体はできるので別にいいですよね…</p>
					<p>実装方法は色々と紹介されてるので、下記リンクなどを参考にすればいいと思います。<br />
					(JSは自分で書いてるのでちょっと違います)</p>
					<ul>
					<li><a href="http://dogmap.jp/2009/02/17/wordpress_comment_thread/">WordPress コメントをスレッド対応にする : dogmap.jp</a></li>
					<li><a href="http://www.hide10.com/?p=12154">WordPress、vicuna CMSテーマのコメント欄をスレッド表示に対応させた &#8211; Hinemosu</a></li>
					</ul>
					<h2>HTML5</h2>
					<p><img class="alignnone size-full wp-image-1676" title="html5" src="http://5509.me/wp-content/uploads/2009/07/html5.gif" alt="html5" width="400" height="260" /></p>
					<p>ちょうど<a href="http://rewish.org/etc/transition">1ヶ月くらい前にHTML5でリニューアルしたrewish.org</a>にインスパイア？されて<strong>HTML5</strong>にしてみました。とりあえず現段階でわかってる情報だけでやってます。なので正しいのかどうかはわからないですが、楽しいですね新しいことは。そんなわけで<strong>IEは残念な結果になります</strong>。むしろIEが残念です。</p>
					<h2>CSS</h2>
					<h3>角丸</h3>
					<p><img class="alignnone size-full wp-image-1677" title="Rounded Corner" src="http://5509.me/wp-content/uploads/2009/07/ピクチャ-10.png" alt="Rounded Corner" width="121" height="70" /></p>
					<p>rounded-cornerプロパティをブラウザがネイティブでサポートしてる<strong>FirefoxとWebkitだけ</strong>に使ってます。OperaとIEはJSで対応しようと思ったけど、案の定調整が必要でやめました。</p>
					<p>とりあえず、<strong>-moz-border-radius</strong>は素晴らしいですね！</p>
					<h3>CSS Sprite</h3>
					<p><img class="alignnone size-full wp-image-1678" title="CSS Sprite" src="http://5509.me/wp-content/uploads/2009/07/ピクチャ-11.png" alt="CSS Sprite" width="32" height="119" /></p>
					<p>これはいまさらです。いまさらすぎて言うこともありません。。<br />
					ただ配置方法をしきつめすぎてて、文字サイズを大きくするとなんか見えたりします。</p>
					<h2>その他</h2>
					<h3>AutoPagerize</h3>
					<p>自作のを入れてたんですけど、GreasemonkeyのAutoPagerize対応に切り替えました。</p>
					<h3>Blogパーツ</h3>
					<p>パフォーマンスが落ちるのと、なんせ見た目がアレなのでとりあえず外しました。</p>
					<h3>SBMカウンタ</h3>
					<p><img class="alignnone size-full wp-image-1659" title="SBM Counter" src="http://5509.me/wp-content/uploads/2009/07/ピクチャ-5.png" alt="SBM Counter" width="175" height="53" /></p>
					<p>僕は毛の生えた程度しかPHPを触れないのですが、<a href="http://rewish.org/">rewish.org</a>のrewさんに<strong>SBMサービスから登録者数を取得</strong>するシンプルなAPIを書いてもらいました。近いうちにWordPressのプラグインになるかも…？サイドバーで使うと読み込み時間が2倍くらいになったので使ってないのですが、もともと使ってた<strong>はてなのブクマカウンタ画像も遅延の原因になってた</strong>ので、やめてしまいました。でも目安がないとちょっとわかりにくいですね。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1647&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/renewal-memo/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>iframe内のコンテンツを親からスクロールさせる</title>
		<link>http://5509.me/log/scroll-content-is-contained-in-iframe</link>
		<comments>http://5509.me/log/scroll-content-is-contained-in-iframe#comments</comments>
		<pubDate>Fri, 10 Jul 2009 04:25:02 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[iframe]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[memo]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1600</guid>
		<description><![CDATA[					iframe内コンテンツのスクロールを親のボタンから操作する方法です。
					普通にWeb制作をしている上でiframeを使う事はあまりないと思うので実用的かどうかは…。
					Demo
					Do [...]]]></description>
			<content:encoded><![CDATA[					<p>iframe内コンテンツのスクロールを親のボタンから操作する方法です。<br />
					普通にWeb制作をしている上でiframeを使う事はあまりないと思うので実用的かどうかは…。</p>
					<p class="link"><a href="http://5509.me/sample/frameslider">Demo</a><br />
					<a href="http://5509.me/sample/archive/frameslider.zip">Download demo files</a></p>
					<p><span id="more-1600"></span></p>
					<p>今回は、iframe内コンテンツでfunctionを作っておいて、それを親から実行することで実現させてます。<br />
					なのでiframe内に表示するコンテンツは外部のサイトとかはだめです。自分で作ったやつだけです。<br />
					以降面倒なので、親コンテンツは「親」、iframe内コンテンツを「子」とします。</p>
					<p>ところで、例によってjQueryを使っているので親・子共にjQueryを読ませておきます。<br />
					サンプルでは一番上にきたら↑が押せなくなったり、下にきたら↓が押せなくなったりしますがそれは考えないでおきましょう。それが気になる人はサンプルのソースを見てください。</p>
					<h2>用意するHTML</h2>
					<p>input#up, input#downを押したときにスクロールできるようにします。</p>
					<pre id="line84">&lt;iframe id="frame" src="sample.html" scrolling="no"&gt;インラインフレーム&lt;/iframe&gt;

&lt;p&gt;&lt;input type="button" id="down" value="↑" /&gt;
&lt;input type="button" id="up" value="↓" /&gt;&lt;/p&gt;</pre>
					<h2>子で記述しておくスクリプト</h2>
					<p>これ自体はとてもシンプルでeasingScrollで使ったように、コンテンツをスクロールさせるスクリプトを記述してます。親から実行するときに動作を決めるために、引数を2つ取るようにしてます。</p>
					<p>condは&#8217;starter&#8217;, &#8216;up&#8217;, &#8216;down&#8217;、optionsは下の通りdurationとか決めれます。<br />
					starterは開始時にずれてたら一番上にスクロールさせるための指定です。</p>
					<p>ちなみに親から参照する関係で、(function($){})(jQuery);内に記述できないので$はjQueryとしました。</p>
					<pre>function frameScroll(cond,options){

	// オプション - 呼び出し元で指定
	var c = jQuery.extend({
		duration: 200,
		easing: 'swing',
		step: 300
	},options || {});

	// frameScroll内で使う変数
	var d = document,
		content = jQuery.support.boxModel ? navigator.appName.match(/Opera/) ? 'html' : 'html,body' : 'body',
		scrollPos = d.body.scrollTop || d.documentElement.scrollTop;

	// starterなら一番上、upなら上へ、downなら下へ
	this.scrollTop = cond.match(/starter/) ? 0 : cond.match(/up/) ? scrollPos+c.step : scrollPos-c.step;

	// すくろおおおる
	jQuery(content).animate(
		{
			scrollTop: this.scrollTop
		},
		{
			duration: c.duration,
			easing: c.easing,
			queue: false
		}
	);
}</pre>
					<h2>親に記述するスクリプト</h2>
					<p>親からiframe内のスクリプトを実行する、と冒頭で書きましたが実行方法など含めて<a href="http://d.hatena.ne.jp/cyokodog/20090616/iframe01">iframe関連処理はcyokodogさんがまとめてくれてます</a>。</p>
					<pre>$('iframe')[0].contentWindow</pre>
<p>でiframe内のオブジェクトを参照できるので、iframe内で書かれたfunctionは</p>
<pre>$('iframe')[0].contentWindow.func()</pre>
					<p>で実行できます。さっきのframeScrollを実行するときは</p>
					<pre>$('iframe')[0].contentWindow.frameScroll('up',{
	step: 400
});</pre>
					<p>のように実行できます。これらをふまえると</p>
					<pre id="line1">jQuery(function($){

	// iframe内のドキュメントの読み込み完了時
	$('#frame').load(function(){
		// iframe内のドキュメントがスクロールした状態であれば一番上に移動させる
		$('#frame')[0].contentWindow.frameScroll('starter');
	});

	// #upをクリック
	$('#up').click(function(){
		// スクロールさせる
		$('#frame')[0].contentWindow.frameScroll('up');
	});

	// #downをクリック(処理は↑と同じ
	$('#down').click(function(){
		$('#frame')[0].contentWindow.frameScroll('down');
	});

	$('#up,#down').hover(function(){
		$(this).addClass('hover');
	},function(){
		$(this).removeClass('hover');
	});

});</pre>
					<p>こっちも説明の必要がないくらいかなりシンプルに書けました。<br />
					親では読み込み時に実行してしまえばいいので、jQuery(function($){});内に記述しています。</p>
					<p>実際のサンプルではこれに加えて、一番上・一番下に移動したらボタンを押せなくするという処理を加えています。あと横に移動させたいときはanimateのscrollTopをscrollLeftにしたりして対応できます。</p>
					<p>忘れてた、、今回使ってないですが、スクロールにanimateを使っているのでeasingプロパティでeasingが使えます。easeOutBounceでぼよんぼよんしてください。</p>
					<p class="link"><a href="http://5509.me/sample/frameslider">Demo</a><br />
					<a href="http://5509.me/sample/archive/frameslider.zip">Download demo files</a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1600&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/scroll-content-is-contained-in-iframe/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Codaのプラグイン ConvertKanaが便利</title>
		<link>http://5509.me/log/convertkana</link>
		<comments>http://5509.me/log/convertkana#comments</comments>
		<pubDate>Wed, 08 Jul 2009 04:34:31 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[Coda]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1586</guid>
		<description><![CDATA[					
					クライアントからもらったデータの全角率になんとも言えない感情を覚えたことはないですか？
					Mac専用のCodaをメインにコーディングしている人には
					ProveさんのLABで公開され [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://www.prove-wsc.com/lab.html"><img class="alignnone size-full wp-image-1587" title="convertkana" src="http://5509.me/wp-content/uploads/2009/07/convertkana.gif" alt="convertkana" width="376" height="190" /></a></p>
					<p>クライアントからもらったデータの全角率になんとも言えない感情を覚えたことはないですか？<br />
					Mac専用の<a href="http://www.panic.com/jp/coda/">Coda</a>をメインにコーディングしている人には<a href="http://www.prove-wsc.com/"><br />
					Prove</a>さんのLABで公開されてるプラグイン <a href="http://www.prove-wsc.com/lab.html">ConvertKana</a>が便利です。</p>
					<blockquote><p>Mac用Web制作ソフト「<a href="http://www.panic.com/jp/coda/">Coda</a>」のプラグイン。<br />
					選択された文字列を指定文字列に変換します。<br />
					英数字、カタカナ、数字、英文字の全角、半角を相互に変換します。</p>
					<p><cite>via: <a href="http://www.prove-wsc.com/lab.html">http://www.prove-wsc.com/lab.html</a></cite></p></blockquote>
					<p>Codaはそれなりに強力な検索・置換エンジンを持っているので<br />
					正規表現でも検索・置換もできますが、ConvertKanaを使えばあっという間に変換できます。</p>
					<p>Codaは一度使うと手放せないくらい使い心地がいいんですけど<br />
					まだまだCodaのマニュアルとか記事が少ないですね。。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1586&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/convertkana/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>これまでに使った20のjQueryプラグイン</title>
		<link>http://5509.me/log/jqueryplugins-i-have-used</link>
		<comments>http://5509.me/log/jqueryplugins-i-have-used#comments</comments>
		<pubDate>Tue, 07 Jul 2009 04:35:23 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[まとめ]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1545</guid>
		<description><![CDATA[					delicious(nori_17/tagged:jquery)から実際に使ったものをメモ。
					順番はたぶん登録が古い順なはず。たまに自作がまじってます。自作のは5509って振ってます。
					de [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://delicious.com/nori_17/jquery">delicious(nori_17/tagged:jquery)</a>から実際に使ったものをメモ。<br />
					順番はたぶん登録が古い順なはず。たまに自作がまじってます。自作のは5509って振ってます。<br />
					deliciousからのみ抜き出したので使ったけど入ってないのがたくさんありそう。20なはずがない…</p>
					<p><span id="more-1545"></span></p>
					<h3><strong>Galleria</strong></h3>
					<p><a href="http://devkick.com/lab/galleria/"><img class="alignnone size-full wp-image-1560" title="Galleria" src="http://5509.me/wp-content/uploads/2009/07/m-l-ga.jpg" alt="m-l-ga" width="300" height="129" /></a><br />
					<a href="http://devkick.com/lab/galleria/">http://devkick.com/lab/galleria/</a><br />
					画像ギャラリープラグイン。これはきれいですよね。でもちょっと重い。</p>
					<h3><strong>FancyBox</strong></h3>
					<p><a href="http://fancy.klade.lv/"><img class="alignnone size-full wp-image-1559" title="FancyBox" src="http://5509.me/wp-content/uploads/2009/07/m-l-fan.jpg" alt="FancyBox" width="300" height="129" /></a><br />
					<a href="http://fancy.klade.lv/">http://fancy.klade.lv/</a><br />
					確か商用でも使えるhighslideみたいなのを探してた気がする。</p>
					<h3><strong>tablesorter</strong></h3>
					<p><a href="http://tablesorter.com/docs/"><img class="alignnone size-full wp-image-1567" title="tablesorter" src="http://5509.me/wp-content/uploads/2009/07/m-l-tabsrt.jpg" alt="tablesorter" width="300" height="129" /></a><br />
					<a href="http://tablesorter.com/docs/">http://tablesorter.com/docs/</a><br />
					シンプルにデータ並び替え。管理画面には欠かせないですね。</p>
					<h3><strong>prettyPhoto</strong></h3>
					<p><a href="http://www.no-margin-for-errors.com/projects/prettyPhoto-jquery-lightbox-clone/"><img class="alignnone size-full wp-image-1563" title="PrettyPhoto" src="http://5509.me/wp-content/uploads/2009/07/m-l-prepho.jpg" alt="PrettyPhoto" width="300" height="129" /></a><br />
					<a href="http://www.no-margin-for-errors.com/projects/prettyPhoto-jquery-lightbox-clone/">http://www.no-margin-for-errors.com/projects/prettyPhoto-jquery-lightbox-clone/</a><br />
					角丸がかわいいLightboxクローン。</p>
					<h3><strong>AjaxZip2</strong></h3>
					<p><a href="http://www.kawa.net/works/ajax/ajaxzip2/ajaxzip2.html"><img class="alignnone size-full wp-image-1561" title="AjaxZip2" src="http://5509.me/wp-content/uploads/2009/07/ml-l-2zip.jpg" alt="Ajax2Zip" width="300" height="129" /></a><br />
					<a href="http://www.kawa.net/works/ajax/ajaxzip2/ajaxzip2.html">http://www.kawa.net/works/ajax/ajaxzip2/ajaxzip2.html</a><br />
					これはもう本当に便利ですよね。</p>
					<h3><strong>ColorPicker</strong></h3>
					<p><a href="http://eyecon.ro/colorpicker/"><img class="alignnone size-full wp-image-1555" title="ColorPicker" src="http://5509.me/wp-content/uploads/2009/07/m-l-color.jpg" alt="ColorPicker" width="300" height="129" /></a><br />
					<a href="http://eyecon.ro/colorpicker/">http://eyecon.ro/colorpicker/</a><br />
					管理画面に使いました。クオリティが素晴らしいです。</p>
					<h3><strong>Masked Input</strong></h3>
					<p><a href="http://digitalbush.com/projects/masked-input-plugin/"><img class="alignnone size-full wp-image-1562" title="Masked Input" src="http://5509.me/wp-content/uploads/2009/07/m-l-mask.jpg" alt="Masked Input" width="300" height="129" /></a><br />
					<a href="http://digitalbush.com/projects/masked-input-plugin/">http://digitalbush.com/projects/masked-input-plugin/</a><br />
					入力文字の制御。こういう処理はユーザーに気にさせず行うのがベストですね。</p>
					<h3><strong>[</strong><strong>5509</strong><strong>] jQuery.validation.js</strong></h3>
					<p><a href="http://5509.me/2008/08/22/realtimeformvalidation.html"><img class="alignnone size-full wp-image-1551" title="jQuery.validation.js" src="http://5509.me/wp-content/uploads/2009/07/m-l-vali.jpg" alt="jQuery.validation.js" width="300" height="129" /></a><br />
					<a href="http://5509.me/2008/08/22/realtimeformvalidation.html">http://5509.me/2008/08/22/realtimeformvalidation.html</a><br />
					フォームバリデーション。割と高機能らしいです。</p>
					<h3><strong>Anti-aliased Rounded corners</strong></h3>
					<p><a href="http://blue-anvil.com/archives/anti-aliased-rounded-corners-with-jquery"><img class="alignnone size-full wp-image-1556" title="Anti-aliased Rounded corners" src="http://5509.me/wp-content/uploads/2009/07/m-l-cor2.jpg" alt="Anti-aliased Rounded corners" width="300" height="129" /></a><br />
					<a href="http://blue-anvil.com/archives/anti-aliased-rounded-corners-with-jquery">http://blue-anvil.com/archives/anti-aliased-rounded-corners-with-jquery</a><br />
					アンチエイリアス付きでしかも軽量角丸プラグイン。</p>
					<h3><strong>jFeed</strong></h3>
					<p><a href="http://www.hovinne.com/blog/index.php/2007/07/15/132-jfeed-jquery-rss-atom-feed-parser-plugin">http://www.hovinne.com/blog/index.php/2007/07/15/132-jfeed-jquery-rss-atom-feed-parser-plugin</a><br />
					今なら自分で書きますね。</p>
					<h3><strong>jCarousel</strong></h3>
					<p><a href="http://sorgalla.com/jcarousel/"><img class="alignnone size-full wp-image-1554" title="jCarousel" src="http://5509.me/wp-content/uploads/2009/07/m-l-carou.jpg" alt="jCarousel" width="300" height="129" /></a><br />
					<a href="http://sorgalla.com/jcarousel/">http://sorgalla.com/jcarousel/</a><br />
					色々なところで使ったような気がする。</p>
					<h3><strong>[</strong><strong>5509</strong><strong>] jQuery.selectable.js</strong></h3>
					<p><a href="http://5509.me/2008/09/14/jqueryselectable.html"><img class="alignnone size-full wp-image-1565" title="jQuery.selectable.js" src="http://5509.me/wp-content/uploads/2009/07/m-l-sele.jpg" alt="jQuery.selectable.js" width="300" height="129" /></a><br />
					<a href="http://5509.me/2008/09/14/jqueryselectable.html"> http://5509.me/2008/09/14/jqueryselectable.html</a><br />
					セレクトボックスを拡張する。これは見やすいですね！</p>
					<h3><strong>Using Progressive Enhancement to Convert a Select&#8230;<br />
					</strong></h3>
					<p><a href="http://www.filamentgroup.com/lab/progressive_enhancement_convert_select_box_to_accessible_jquery_ui_slider/"><img class="alignnone size-full wp-image-1566" title="Using Progressive Enhancement to Convert a Select Box Into an Accessible jQuery UI Slider" src="http://5509.me/wp-content/uploads/2009/07/m-l-slid.jpg" alt="Using Progressive Enhancement to Convert a Select Box Into an Accessible jQuery UI Slider" width="300" height="129" /></a><br />
					<a href="http://www.filamentgroup.com/lab/progressive_enhancement_convert_select_box_to_accessible_jquery_ui_slider/">http://www.filamentgroup.com/lab/progressive_enhancement_convert_select_box_to_accessible_jquery_ui_slider/</a><br />
					セレクトボックスをスライダーに置き換え。タイトルもURLもとても長いですが、これは便利です。<br />
					(Using Progressive Enhancement to Convert a Select Box Into an Accessible jQuery UI Slider)</p>
					<h3><strong>seekAttention</strong></h3>
					<p><a href="http://enhance.qd-creative.co.uk/demo/seekAttention/"><img class="alignnone size-full wp-image-1553" title="seekAttention" src="http://5509.me/wp-content/uploads/2009/07/m-l-atte.jpg" alt="seekAttention" width="300" height="129" /></a><br />
					<a href="http://enhance.qd-creative.co.uk/demo/seekAttention/">http://enhance.qd-creative.co.uk/demo/seekAttention/</a><br />
					指定した要素をハイライト。こういう配慮って大切ですよね。</p>
					<h3><strong>history plugin</strong></h3>
					<p><a href="http://www.mikage.to/jquery/jquery_history.html">http://www.mikage.to/jquery/jquery_history.html</a><br />
					Ajax遷移を記憶させる。</p>
					<h3><strong>jQuery Alert Dialogs</strong></h3>
					<p><a href="http://abeautifulsite.net/notebook/87"><img class="alignnone size-medium wp-image-1552" title="jQuery Alert Dialogs" src="http://5509.me/wp-content/uploads/2009/07/m-l-alert.jpg" alt="m-l-alert" width="300" height="129" /></a><br />
					<a href="http://abeautifulsite.net/notebook/87">http://abeautifulsite.net/notebook/87</a><br />
					色々できるアラートダイアログ。</p>
					<h3><strong>jQuery pageSlide</strong></h3>
					<p><a href="http://srobbin.com/blog/jquery-pageslide/"><img class="alignnone size-full wp-image-1564" title="jQuery Pageslide" src="http://5509.me/wp-content/uploads/2009/07/m-l-pslilde.jpg" alt="jQuery Pageslide" width="300" height="129" /></a><br />
					<a href="http://srobbin.com/blog/jquery-pageslide/">http://srobbin.com/blog/jquery-pageslide/</a><br />
					横から出てくるやつです。発想がいいですね！</p>
					<h3><strong>Scroll Follow</strong></h3>
					<p><a href="http://kitchen.net-perspective.com/open-source/scroll-follow/">http://kitchen.net-perspective.com/open-source/scroll-follow/</a><br />
					wrapscrollみたいなやつですね。easingを使えば鬱陶しさがなくなりますよ！</p>
					<h3><strong>Uploadify</strong></h3>
					<p><a href="http://www.uploadify.com/"><img class="alignnone size-full wp-image-1568" title="Uploadify" src="http://5509.me/wp-content/uploads/2009/07/m-l-upl.jpg" alt="m-l-upl" width="300" height="129" /></a><br />
					<a href="http://www.uploadify.com/">http://www.uploadify.com/</a><br />
					複数アップロードに対応したアップローダー。UIもとてもわかりやすいです。</p>
					<h3><strong>[5509] easingScroll</strong></h3>
					<p><a href="http://5509.me/2009/05/18/page-scrolling-with-jqueryeasing.html"><img class="alignnone size-full wp-image-1558" title="easingScroll" src="http://5509.me/wp-content/uploads/2009/07/m-l-eas.jpg" alt="easingScroll" width="300" height="129" /></a><br />
					<a href="http://5509.me/2009/05/18/page-scrolling-with-jqueryeasing.html">http</a><a href="http://5509.me/2009/05/18/page-scrolling-with-jqueryeasing.html">://5509.me/2009/05/18/page-scrolling-with-jqueryeasing.html</a><br />
					ページスクロールをeasingで。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1545&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jqueryplugins-i-have-used/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Thickboxをドラッグ可能にしてユーザビリティを向上させる</title>
		<link>http://5509.me/log/make-thickbox-draggable</link>
		<comments>http://5509.me/log/make-thickbox-draggable#comments</comments>
		<pubDate>Mon, 06 Jul 2009 04:10:56 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1526</guid>
		<description><![CDATA[					
					ThickboxとかLightboxでコンテンツや写真を表示するとすっきり見えていいですよね。
					でもあのボックス自体が邪魔なときないですか？ちょうど比較したいコンテンツの上に表示されたり… [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/draggable-thickbox"><img class="alignnone size-full wp-image-1535" title="draggablethickbox" src="http://5509.me/wp-content/uploads/2009/07/draggablethickbox.gif" alt="draggablethickbox" width="450" height="194" /></a></p>
					<p><a href="http://jquery.com/demo/thickbox/">Thickbox</a>とかLightboxでコンテンツや写真を表示するとすっきり見えていいですよね。<br />
					でもあのボックス自体が邪魔なときないですか？ちょうど比較したいコンテンツの上に表示されたり…<a href="http://docs.jquery.com/UI/API/1.7.1/Draggable"><br />
					jQuery UI Draggable</a>を使ってドラッグできるようにしてしまいましょう。</p>
					<p>これだけのためにわざわざDraggableを…とかそういうのは抜きにしてドラッグできると結構便利です。<br />
					しかもUI Draggableを使えばあっという間にドラッグできるようになります。</p>
					<p>…便利じゃないですか？(今回はThickboxを対象にしてます)</p>
					<p><a href="http://5509.me/sample/draggable-thickbox">サンプル</a><br />
					<a href="http://5509.me/sample/archive/draggable-thickbox.zip">サンプルファイルのダウンロード</a></p>
					<p><span id="more-1526"></span></p>
					<h2>Thickboxをダウンロードする</h2>
					<p><a href="http://jquery.com/demo/thickbox/">http://jquery.com/demo/thickbox/</a></p>
					<p>から一式をダウンロードするか、<a href="http://5509.me/sample/archive/draggable-thickbox.zip">サンプルファイルに全て入ってるのでそれをダウンロード</a>します。</p>
					<h2>jQuery UI Draggableをダウンロードする</h2>
					<p><a href="http://jqueryui.com/download">http://jqueryui.com/download</a></p>
					<p>からUI CoreとDraggableを選択してダウンロードするか、<a href="http://5509.me/sample/archive/draggable-thickbox.zip">サンプルファイルに全て入ってるのでそれをダウンロード</a>します。</p>
					<h2>必要なファイルを読み込む</h2>
					<pre>&lt;link type="text/css" rel="stylesheet" href="css/thickbox.css" /&gt;
&lt;script type="text/javascript" src="js/lib/jquery.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="js/lib/jquery.ui.draggable.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="js/lib/thickbox.js"&gt;&lt;/script&gt;</pre>
					<h2>thickbox.jsにソースを追加する</h2>
					<p>thickbox.jsの19～35行目</p>
					<pre>//add thickbox to href &amp; area elements that have a class of .thickbox
function tb_init(domChunk){
    $(domChunk).click(function(){
    var t = this.title || this.name || null;
    var a = this.href || this.alt;
    var g = this.rel || false;
    tb_show(t,a,g);
    this.blur();
    return false;
    });
}</pre>
					<p>の tb_show(t,a,g); の後辺りに</p>
					<pre>// Make TB Draggable
$('#TB_window').draggable({
	handle: '#TB_title'
});</pre>
					<p>を追加するだけです。<br />
					オプションのhandleでドラッグのハンドル(掴める要素)を決めてます。サンプルでは#TB_titleにしていますが、たとえばハンドル指定をなくすと、#TB_window自体がハンドルになってどこを掴んでもドラッグできるようになります。スクロールバーを動かすときにちょっと不便になるので、ここでは#TB_titleをハンドルに指定しています。ハンドル指定ができる要素はdraggableにする要素の子要素なら何でも、です。</p>
					<p>追加したソースは以下になります。</p>
					<pre>//add thickbox to href &amp; area elements that have a class of .thickbox
function tb_init(domChunk){
    $(domChunk).click(function(){
    var t = this.title || this.name || null;
    var a = this.href || this.alt;
    var g = this.rel || false;
    tb_show(t,a,g);

    // Make TB Draggable
    $('#TB_window').draggable({
        handle: '#TB_title'
    });

    this.blur();
    return false;
    });
}</pre>
					<p>あとはドラッグできることがわかるように、ハンドルのカーソルを変えましょう。</p>
					<h2>thickbox.cssにソースを追加する</h2>
					<p>thickbox.cssの103～106行目に#TB_titleがあるので<br />
					これにcursor: move; を追加します。</p>
					<pre>#TB_title{
    background-color:#e8e8e8;
    height:27px;
    cursor: move;
}</pre>
					<p>ちなみに今回の例では、AjaxコンテンツかInlineコンテンツのようにタイトルを含んだThickboxを対象にしています。タイトルを含まない場合は、draggableオプションのhandle指定をなくすとかハンドル自体を変えればいいです。</p>
					<p><a href="http://5509.me/sample/draggable-thickbox">サンプル</a><br />
					<a href="http://5509.me/sample/archive/draggable-thickbox.zip">サンプルファイルのダウンロード</a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1526&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/make-thickbox-draggable/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>データを扱うテーブルなどにインクリメンタルサーチをjQueryを利用して実装する</title>
		<link>http://5509.me/log/incremental-search-with-jquery</link>
		<comments>http://5509.me/log/incremental-search-with-jquery#comments</comments>
		<pubDate>Fri, 03 Jul 2009 02:26:46 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[tuts]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1494</guid>
		<description><![CDATA[					
					返ってくる結果が膨大になりがちな検索結果(特に管理画面など)などでは、そこからさらにデータを絞り込みを行いたい場合もあるかと思います。毎回ページの遷移があったのではユーザーの負担になりがちです。
	 [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/incrementalsearch"><img class="alignnone size-full wp-image-1517" title="インクリメンタルサーチ" src="http://5509.me/wp-content/uploads/2009/07/e38394e382afe38381e383a3-3.png" alt="インクリメンタルサーチ" width="396" height="203" /></a></p>
					<p>返ってくる結果が膨大になりがちな検索結果(特に管理画面など)などでは、そこからさらにデータを絞り込みを行いたい場合もあるかと思います。毎回ページの遷移があったのではユーザーの負担になりがちです。</p>
					<p>そこでjQueryを利用してインクリメンタルサーチを実装する方法をメモもかねて紹介します。</p>
					<p><a href="http://5509.me/sample/incrementalsearch">サンプル<br />
					</a><a href="http://5509.me/sample/archive/incrementalsearch.zip">サンプルファイルのダウンロード</a><a href="/sample/incrementalsearch"></a></p>
					<p><span id="more-1494"></span></p>
					<h2>テーブルのデータでインクリメンタルサーチを行う</h2>
					<h3>考え方</h3>
					<p>今回は「A B C D &#8230;.」のように単語を半スペースで区切ることを前提に考えます。</p>
					<p>考え方は簡単で、</p>
					<ol>
					<li>半スペースで区切られた単語を配列(value=[])に保存する。</li>
					<li>まず最初の単語(value[0])が含まれているTDをmatchで検索する。</li>
					<li>含んでいない場合は親のTRを非表示にする。</li>
					<li>さらに2つ目以降の単語(value[1〜x])が存在すれば<br />
					value[1]からvalue[x]までを順番にmatchで検索する。</li>
					<li>含んでいないTDの親TRを非表示にする。</li>
					</ol>
					<p>で実装できます。</p>
					<h3>スクリプト</h3>
					<p>上の項目をスクリプトで記述すると以下のようになります。<br />
					対象にする項目、テキストを変えればテーブル以外でも使えるので試してみてください。</p>
					<pre id="line1">var tr = $('tr','#item_table'); // TRを保存する

// 単語が入力される度に評価する
$('#incrementalSearch').keyup(function(){

	// 1. 入力された単語を配列に保存する
	var value = this.value.split(" ");

	// 全てのTRで処理を行う
	for(var i=0;i&lt;tr.length;i++){

		// 対象にするTDのテキストを一時保存
		var itemName = $('td:nth-child(3)',tr[i]).text();

		// 2. テキストが最初の単語(value[0])を含んでいるかどうか
		// RegExpの第二引数iはアルファベットの大文字小文字を区別しない
		if(itemName.match(new RegExp(value[0]),'i')){

			// 表示しておく(前回の検索結果で非表示の場合もあるので)
			$(tr[i]).show();

			// 4. さらに単語が2つ以上入力されている場合
			if(value.length&gt;1){

				// 4. 2つ目以降の単語が含まれていなければ順番に非表示にしていく
				for(var j=1;j&lt;value.length;j++){
					// 5. マッチングで検索してfalseなら非表示
					if(!itemName.match(new RegExp(value[j]),'i')){
						$(tr[i]).hide();
					}
				}
			}
		// 3. 含んでいない場合は非表示にする
		}else{
			$(tr[i]).hide();
		}
	}
});</pre>
					<p><a href="/sample/incrementalsearch">サンプル<br />
					</a><a href="/sample/archive/incrementalsearch.zip">サンプルファイルのダウンロード</a><a href="/sample/incrementalsearch"><br />
					</a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1494&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/incremental-search-with-jquery/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>パスワード入力欄の最後の文字列をヒントとして表示するjQueryプラグイン</title>
		<link>http://5509.me/log/hintmask</link>
		<comments>http://5509.me/log/hintmask#comments</comments>
		<pubDate>Wed, 01 Jul 2009 23:50:10 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[プラグイン]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/2009/07/02/hintmaskjs.html</guid>
		<description><![CDATA[					
					IT Mediaの記事でパスワードの「****」は不要…という記事(以下参照)がありましたが、ブコメにiPhone UIが〜〜というのがあったので、じゃあということでついカッとなってjQueryプラ [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/editableselect"></a><a href="http://5509.me/sample/hintmask"><img class="alignnone size-full wp-image-1480" title="hintmask" src="http://5509.me/wp-content/uploads/2009/07/e38394e382afe38381e383a3-1.png" alt="hintmask" width="177" height="83" /></a></p>
					<p>IT Mediaの記事でパスワードの「****」は不要…という記事(以下参照)がありましたが、<a href="http://b.hatena.ne.jp/entry/http://www.itmedia.co.jp/news/articles/0907/01/news033.html">ブコメにiPhone UIが〜〜</a>というのがあったので、じゃあということでついカッとなってjQueryプラグインを書いた。</p>
					<blockquote><p>Webサイトなどでパスワードを入力する際、「****」を使って入力した文字が見えないようにする必要はないのではないか——。そんな提案をめぐり、研究者が賛否両論を展開している。</p>
					<p><cite>via: <a href="http://www.itmedia.co.jp/enterprise/articles/0907/01/news033.html">パスワード入力の「****」は不要？　研究者の間で激しい論議</a></cite></p></blockquote>
					<p>パスワード入力は僕もよくタイプミスをして全部打ち直します。どうにかしてください本当に。<br />
					それにしてもiPhoneのUIはとてもよくできてますね。使っていて本当に気持ちがいいです。<br />
					使っていて気持ちがいいサイト設計というのは簡単なようでとても難しいものなので、小さなことからでもユーザーの負担を減らしていければいいですね。</p>
					<p><a href="http://5509.me/sample/hintmask">サンプル</a><br />
					<a href="http://5509.me/sample/archive/hintmask.zip">サンプルファイルのダウンロード</a></p>
					<p><span id="more-1479"></span></p>
					<h2>導入方法</h2>
					<h3>1.<a href="http://5509.me/sample/hintmask/css/hintmask.css">CSS</a>、 jQueryと<a href="http://5509.me/sample/hintmask/js/hintmask.js">hintmask.js</a>を読み込む。</h3>
					<pre name="code" class="html">

&lt;link type=&quot;text/css&quot; rel=&quot;stylesheet&quot; href=&quot;css/hintmask.css&quot; /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/hintmask.js&quot;&gt;&lt;/script&gt;
</pre>
					<h3>2. パスワード入力欄を用意する。</h3>
					<p>CLASSはなんでもいいです。あとで実行するときに指定するためのものなので、IDでも大丈夫です。</p>
					<pre name="code" class="html">

&lt;input type=&quot;password&quot; id=&quot;&quot; name=&quot;&quot; class=&quot;hintmask&quot; /&gt;
</pre>
					<h3>3. 実行する</h3>
					<p>$()で対象にする要素を指定します。</p>
					<pre name="code" class="js">

$(function(){
&nbsp;&nbsp;$(&#039;.hintmask&#039;).hintmask();
});
</pre>
					<h2>オプション</h2>
					<p>オプションでマスクの文字、ヒント位置の調整を指定できます。</p>
					<pre name="code" class="js">

$(function(){
&nbsp;&nbsp;$(&#039;.hintmask&#039;).hintmask({
&nbsp;&nbsp;&nbsp;&nbsp;mask: &#039;*&#039;,
&nbsp;&nbsp;&nbsp;&nbsp;top: 5,
&nbsp;&nbsp;&nbsp;&nbsp;left: 0
&nbsp;&nbsp;});
});
</pre>
					<p>本当にどうでもいいことですが mask の値を ＼(^O^)／ とかにするととてもうざくなるので注意が必要です。</p>
					<p>カッとなった勢いで<a href="http://5509.me/sample/hintmask/sample2.html">うざすぎるサンプル</a>も用意しました。</p>
					<p><a href="http://5509.me/sample/hintmask">サンプル</a><br />
					<a href="http://5509.me/sample/archive/hintmask.zip">サンプルファイルのダウンロード</a></p>
					<p><a href="http://5509.me/sample/archive/editableselect.zip"></a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1479&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/hintmask/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>セレクトボックスに新しいオプションを追加していけるスクリプト</title>
		<link>http://5509.me/log/editableselect</link>
		<comments>http://5509.me/log/editableselect#comments</comments>
		<pubDate>Wed, 17 Jun 2009 22:00:28 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[フォーム]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1452</guid>
		<description><![CDATA[					
					セレクトボックスの(value)を選択すると、セレクトボックスが消えて代わりにINPUT要素が選択状態で表示されるので、追加する単語を入力してドキュメント上の適当な箇所をクリックするか、return [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/editableselect"><a href="http://5509.me/sample/editableselect"><img class="alignnone size-full wp-image-1475" title="セレクトボックスに新しいオプションを追加していけるスクリプト" src="http://5509.me/wp-content/uploads/2009/06/editableselect1.gif" alt="セレクトボックスに新しいオプションを追加していけるスクリプト" width="450" height="190" /></a></a></p>
					<p>セレクトボックスの(value)を選択すると、セレクトボックスが消えて代わりにINPUT要素が選択状態で表示されるので、追加する単語を入力してドキュメント上の適当な箇所をクリックするか、returnキーで決定することで入力項目をセレクトボックスに新しく追加できるスクリプトです。説明がなにやらややこしい感じなので、実際に<a href="http://5509.me/sample/editableselect">サンプル</a>を見てもらったほうが早いと思います。</p>
					<p>先日のtangoHokanと同じような感じなので、使いどころは微妙ですが。<br />
					そもそも、それができる、ということを補足説明などでユーザに伝える必要があると思いますが、ひとつの選択肢としてあればそのうち使う日がくるかもしれません。。</p>
					<p><a href="http://5509.me/sample/editableselect">サンプル</a><br />
					<a href="http://5509.me/sample/archive/editableselect.zip">サンプルファイルのダウンロード</a></p>
					<p><span id="more-1452"></span></p>
					<h2>導入</h2>
					<h3>1. jQueryと<a href="http://5509.me/sample/editableselect/js/editableselect.js">editableselect</a>を読み込む。</h3>
					<pre name="code" class="html">

&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/editableselect.js&quot;&gt;&lt;/script&gt;
</pre>
					<h3>2. SELECT要素にIDを用意しておく。</h3>
					<pre name="code" class="html">

&lt;select id=&quot;select1&quot; name=&quot;select1&quot;&gt;
&nbsp;&nbsp;&lt;option value=&quot;1&quot;&gt;1&lt;/option&gt;
&nbsp;&nbsp;&lt;option value=&quot;2&quot;&gt;2&lt;/option&gt;
&nbsp;&nbsp;&lt;option value=&quot;3&quot;&gt;3&lt;/option&gt;
&nbsp;&nbsp;&lt;option value=&quot;4&quot;&gt;4&lt;/option&gt;
&nbsp;&nbsp;&lt;option value=&quot;5&quot;&gt;5&lt;/option&gt;
&lt;/select&gt;
</pre>
					<h3>3. 実行する</h3>
					<pre name="code" class="js">

$(function(){
&nbsp;&nbsp;$(&#039;select&#039;).editableSelect();
});
</pre>
					<h2>オプション追加のテキストを変える</h2>
					<p>editableSelectのvalueプロパティから変更することができます。</p>
					<pre name="code" class="js">

$(function(){
&nbsp;&nbsp;$(&#039;select&#039;).editableSelect({
&nbsp;&nbsp;&nbsp;&nbsp;value: &#039;ここをクリックするとテキストを編集できます&#039;
&nbsp;&nbsp;});
});
</pre>
					<p><a href="http://5509.me/sample/editableselect">サンプル</a><br />
					<a href="http://5509.me/sample/archive/editableselect.zip">サンプルファイルのダウンロード</a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1452&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/editableselect/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPressの複数アップロード機能が便利すぎる件</title>
		<link>http://5509.me/log/wordpress-multiple-upload</link>
		<comments>http://5509.me/log/wordpress-multiple-upload#comments</comments>
		<pubDate>Sun, 14 Jun 2009 09:13:09 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[memo]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1424</guid>
		<description><![CDATA[					Skypeで話をしてて、WordPressの複数アップロードが便利すぎるって言うのを聞いたのですが、、、
					そうなんです。この複数アップロード機能がかなり強力で、いくつまで同時にアップロードできるのかは [...]]]></description>
			<content:encoded><![CDATA[					<p>Skypeで話をしてて、<strong>WordPressの複数アップロードが便利すぎる</strong>って言うのを聞いたのですが、、、</p>
					<p>そうなんです。この複数アップロード機能がかなり強力で、いくつまで同時にアップロードできるのかはちょっと試していませんが、20くらいはいけたはずです。確かバージョン2.5のFlash Uploaderから実装されてるんですけど、どうやら知らない人も多いのかも？と思ったので、紹介しておきます。</p>
					<p>と思ってたらちょうどいい動画がありました。動画は2.5のものですが、それ以降のバージョンでも同じ方法です。もちろん最新の2.8でも使えます。フォトログなどやってる人にはかなり便利だと思いますのでぜひ。</p>
					<p><object width="400" height="225" data="http://vimeo.com/moogaloop.swf?clip_id=857821&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=857821&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /></object></p>
					<p><a href="http://vimeo.com/857821">Multiple Image Upload</a> from <a href="http://vimeo.com/user425593">Len Kutchma</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1424&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/wordpress-multiple-upload/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[メモ]ワクワクマウスオーバー</title>
		<link>http://5509.me/log/wakuwakumouseover</link>
		<comments>http://5509.me/log/wakuwakumouseover#comments</comments>
		<pubDate>Thu, 11 Jun 2009 04:48:00 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[memo]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1411</guid>
		<description><![CDATA[					
					ワクワクマウスオーバー
					ウィンドウ内に散りばめた●にマウスオーバーするとびよんと拡大します(PNG使ってるのでIE6は見れません）。でかい丸に囲まれたかわいそうなちび丸を拡大できたときの気 [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/wakuwakumouseover/"><img class="alignnone size-full wp-image-1412" title="wakuwaku" src="http://5509.me/wp-content/uploads/2009/06/wakuwaku.gif" alt="wakuwaku" width="450" /></a></p>
					<p><a href="http://5509.me/sample/wakuwakumouseover/">ワクワクマウスオーバー</a></p>
					<p>ウィンドウ内に散りばめた●にマウスオーバーするとびよんと拡大します(PNG使ってるのでIE6は見れません）。でかい丸に囲まれたかわいそうなちび丸を拡大できたときの気持ちよさは…。一応言っておきますけど、Flashじゃないです。あと、別にタイトルなんかどうでもよくて、なにかできそうな感じなので自分用のメモです。周りではワクワクよりもムキムキが流行ってるみたいですね！</p>
					<p><span id="more-1411"></span></p>
					<p>サンプルは画像使ってますけど、Canvasでやったらもっと自由にできそう。<br />
					やっぱりeasing便利おもしろい！</p>
					<pre name="code" class="js">

$(function(){

&nbsp;&nbsp;// ブラウザのレンダリング部分の幅と高さを得る
&nbsp;&nbsp;var d = document,
&nbsp;&nbsp;&nbsp;&nbsp;client = {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height: d.documentElement.clientHeight,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width: d.documentElement.clientWidth
&nbsp;&nbsp;&nbsp;&nbsp;};

&nbsp;&nbsp;// 円を配置していく とりあえず150個
&nbsp;&nbsp;for(var i=0;i&lt;150;i++){
&nbsp;&nbsp;&nbsp;&nbsp;var nImg = document.createElement(&quot;img&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;// wakuwaku0.png か wakuwaku1.png
&nbsp;&nbsp;&nbsp;&nbsp;nImg.src = &quot;img/wakuwaku&quot;+Math.round(Math.random(1))+&quot;.png&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;body&quot;).append(nImg);

&nbsp;&nbsp;}

&nbsp;&nbsp;$(&quot;img&quot;).each(function(){

&nbsp;&nbsp;&nbsp;&nbsp;// それぞれの画像のサイズをランダムで決める 0 ～ 100 の間
&nbsp;&nbsp;&nbsp;&nbsp;var size = Math.random()*100;
&nbsp;&nbsp;&nbsp;&nbsp;// 最大サイズ ここは画像のサイズに準拠しておく
&nbsp;&nbsp;&nbsp;&nbsp;var maxSize = 256;
&nbsp;&nbsp;&nbsp;&nbsp;// 画像に対して(0,0)で拡大するので
&nbsp;&nbsp;&nbsp;&nbsp;// 中央から広がるように(-mPos,-mPos)にずらすための値
&nbsp;&nbsp;&nbsp;&nbsp;var mPos = (maxSize-size)/2;
&nbsp;&nbsp;&nbsp;&nbsp;var self = $(this);

&nbsp;&nbsp;&nbsp;&nbsp;// サイズと位置を取得済みの乱数で配置
&nbsp;&nbsp;&nbsp;&nbsp;self.css({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;position: &quot;absolute&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;top: Math.random()*client.height,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;left: Math.random()*client.width,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width: size,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height: size
&nbsp;&nbsp;&nbsp;&nbsp;});

&nbsp;&nbsp;&nbsp;&nbsp;// ホバー
&nbsp;&nbsp;&nbsp;&nbsp;self.hover(function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// マウスオーバーで最前面にする
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.css(&quot;zIndex&quot;,100).animate(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 中央から広がるように(-mPos,-mPos)にずらす
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;marginTop: &quot;-&quot;+mPos,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;marginLeft: &quot;-&quot;+mPos,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width: maxSize,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height: maxSize
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;duration: 300,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// びよよん
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;easing: &quot;easeOutBounce&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Queueを保存しない
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;queue: false
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);
&nbsp;&nbsp;&nbsp;&nbsp;},function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// マウスアウトで戻す
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.css(&quot;zIndex&quot;,1).animate(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;marginTop: 0,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;marginLeft: 0,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width: size,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height: size
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;duration: 300,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;easing: &quot;easeOutBounce&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;queue: false
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);
&nbsp;&nbsp;&nbsp;&nbsp;});

&nbsp;&nbsp;});

});
</pre>
					<img src="http://5509.me/?ak_action=api_record_view&id=1411&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/wakuwakumouseover/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Safari独自実装のinput type=&#8221;search&#8221;のような検索窓を実装する</title>
		<link>http://5509.me/log/using-type-search</link>
		<comments>http://5509.me/log/using-type-search#comments</comments>
		<pubDate>Tue, 09 Jun 2009 19:04:34 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[tuts]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1392</guid>
		<description><![CDATA[					
					先日、iPhone風のテキストボックスの文字を消去するボタンを実装するチュートリアルを書いたのですが、どうやらSafariの独自実装でinput type=&#8221;search&#8221;と [...]]]></description>
			<content:encoded><![CDATA[					<p><img class="alignnone size-full wp-image-1393" title="inputSearch" src="http://5509.me/wp-content/uploads/2009/06/e38394e382afe38381e383a3-61.png" alt="inputSearch" width="172" height="35" /></p>
					<p>先日、<a class="first-child" title="iPhone風のテキストボックスの文字を消去するボタンを実装するチュートリアル" href="http://5509.me/2009/06/04/turorial-using-iphone-like-input-delete-button.html">iPhone風のテキストボックスの文字を消去するボタンを実装するチュートリアル</a>を書いたのですが、どうやら<a href="http://developer.apple.com/documentation/AppleApplications/Reference/SafariHTMLRef/Articles/Attributes.html">Safariの独自実装でinput type=&#8221;search&#8221;</a>というのがあるんですね。全然知らなかった…じゃあいっそのことplaceholderも付けてinput type=&#8221;search&#8221;っぽくしてみようということで、delval.jsをちょちょっと変えてinput type=&#8221;search&#8221;ぽい検索窓を実装してみます。これもかなり簡単にできるので、じゃあチュートリアル…？？</p>
					<p><img class="alignnone size-full wp-image-1393" title="inputSearch" src="http://5509.me/wp-content/uploads/2009/06/e38394e382afe38381e383a3-61.png" alt="inputSearch" width="172" height="35" /><img class="alignnone size-full wp-image-1394" title="こっちはSafari独自実装のtype=&quot;search&quot;" src="http://5509.me/wp-content/uploads/2009/06/e38394e382afe38381e383a3-71.png" alt="こっちはSafari独自実装のtype=&quot;search&quot;" width="172" height="35" /><br />
					左が今回作ったサンプルで、右がSafari独自実装のinput type=&#8221;search&#8221;。そっくり！</p>
					<p><a href="http://5509.me/sample/inputsearch">サンプル</a> &#8211; サンプルの下にあるINPUTをSafariで見ると…！<br />
					<a href="http://5509.me/sample/archive/inputsearch.zip">サンプルファイルのダウンロード</a></p>
					<p><span id="more-1392"></span></p>
					<h2>delval.jsとの違いをふまえてHTMLをマークアップする</h2>
					<p>delval.jsとの違いは</p>
					<ul>
					<li>optionでplaceholderのテキスト変更できる</li>
					<li>placeholderを追加</li>
					<li>わかりやすいようにID、CLASSをdelvalからinputSearchにした</li>
					</ul>
					<p>です。見た目はCSSでうまいことやればきれいにいけますので、それを採用してます。また検索窓なので、必然的にFORM要素の中に入れる必要があると思います。これをふまえて検索窓をマークアップすると以下のようになります。</p>
					<pre name="code" class="html">

&lt;form&gt; ^&lt;fieldset&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;legend&gt;Site Search&lt;/legend&gt;
&nbsp;&nbsp;&nbsp;&nbsp;

&lt;input id=&quot;s&quot; name=&quot;s&quot; type=&quot;text&quot; /&gt; ^&lt;/fieldset&gt;
&lt;/form&gt;
</pre>
					<h2>delval.jsにplaceholder機能を追加する</h2>
					<p>次はJS部分ですが、主にdelval.jsと同じです。jQueryで拡張したfunctionに追記していきますので、前もってjQueryを読み込んでおいてください。(サンプルに入ってます）9割delval.jsと同じなのでかぶってるところは割愛しますが、大きく違うのはplaceholderがあるかないかということです。placeholderの機能は</p>
					<ul>
					<li>INPUTのVALUEが空ならテキストを表示</li>
					<li>INPUTにfocus()でplaceholderを消去</li>
					</ul>
					<p>くらいでしょうか。<br />
					変更点にはコメントを加えているのでdelval.jsと比較してみてください。</p>
					<pre name="code" class="js">

$.fn.inputSearch = function(options){

&nbsp;&nbsp;// placeholderのテキストを変えるオプション
&nbsp;&nbsp;var c = $.extend({
&nbsp;&nbsp;&nbsp;&nbsp;placeholder: &quot;search...&quot;
&nbsp;&nbsp;},options);

&nbsp;&nbsp;$(this).each(function(i){

&nbsp;&nbsp;&nbsp;&nbsp;var self = $(this);

&nbsp;&nbsp;&nbsp;&nbsp;self.wrap(&quot;&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;span#inputSearch-&quot;+i)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.append(&quot;&quot;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// グループにplaceholderを追加しておく
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.append(&quot;&lt;span class=&quot;placeholder&quot;&gt;&quot;+c.placeholder+&quot;&lt;/span&gt;&quot;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.addClass(&quot;inputSearch-group&quot;);

&nbsp;&nbsp;&nbsp;&nbsp;var group = $(&quot;span#inputSearch-&quot;+i).css(&quot;height&quot;,self.attr(&quot;offsetHeight&quot;)),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btn = $(&quot;span.inputSearch&quot;,group).css(&quot;height&quot;,group.height()),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// あとで何回か使うので変数にしておく
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;placeholder = $(&quot;span.placeholder&quot;,&quot;#inputSearch-&quot;+i);

&nbsp;&nbsp;&nbsp;&nbsp;if(self.val().length&amp;lt;1){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btn.hide();
&nbsp;&nbsp;&nbsp;&nbsp;}else{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// selfに文字列がある場合は隠す
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;placeholder.hide();
&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;self.focus(function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// focus()で隠す
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;placeholder.hide();
&nbsp;&nbsp;&nbsp;&nbsp;}).blur(function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// blur()時に文字列がなければ表示する
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(self.val().length&amp;lt;1) placeholder.show();
&nbsp;&nbsp;&nbsp;&nbsp;});

&nbsp;&nbsp;&nbsp;&nbsp;// placeholderをクリックしたらselfにfocus()する
&nbsp;&nbsp;&nbsp;&nbsp;placeholder.click(function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.focus();
&nbsp;&nbsp;&nbsp;&nbsp;});

&nbsp;&nbsp;&nbsp;&nbsp;self.keyup(function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(self.val().length&amp;gt;0) btn.show();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else btn.hide();
&nbsp;&nbsp;&nbsp;&nbsp;});

&nbsp;&nbsp;&nbsp;&nbsp;btn.click(function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.val(&quot;&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btn.hide();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.focus();
&nbsp;&nbsp;&nbsp;&nbsp;});

&nbsp;&nbsp;});
}
</pre>
					<p>placeholderの実装原理は結局のところdeleteボタンと同じで、INPUT要素に重ねて表示しておいてINPUTにfocus()だとかその辺のイベントが発生したときに隠す、ということです。</p>
					<h2>背景などをCSSで定義する</h2>
					<p>最後に今までの実装方法をふまえてCSSをさらっと書きます。というか、ほとんどdelval.jsのときと同じです。背景に画像をしいて、placeholderの位置を追加しただけです。簡単です。Safariが実装しているtype=&#8221;search&#8221;が高さ、幅の指定を実装していなかったのでこれも高さと幅は可変じゃないです。// 幅も高さも固定なのでフォントサイズもptで固定したほうがいいかもしれません。</p>
					<pre name="code" class="css">

/* form要素自体に背景を表示させる */
form {
&nbsp;&nbsp;width: 148px;
&nbsp;&nbsp;height: 19px;
&nbsp;&nbsp;background: url(../img/input_search.gif) no-repeat;
}

&nbsp;&nbsp;/* legendは不要なので非表示にする */
&nbsp;&nbsp;form legend {
&nbsp;&nbsp;&nbsp;&nbsp;display: none;
&nbsp;&nbsp;}

/* これはJSがオフの場合 */
&nbsp;&nbsp;form input {
&nbsp;&nbsp;&nbsp;&nbsp;margin-left: 23px;
&nbsp;&nbsp;&nbsp;&nbsp;border: none;
&nbsp;&nbsp;&nbsp;&nbsp;padding: .1em 0;
&nbsp;&nbsp;&nbsp;&nbsp;width: 125px;
&nbsp;&nbsp;&nbsp;&nbsp;background: none;
&nbsp;&nbsp;}

/* ここから下はdelval.jsのときと同じ */
&nbsp;&nbsp;form span.inputSearch-group {
&nbsp;&nbsp;&nbsp;&nbsp;position: relative;
&nbsp;&nbsp;&nbsp;&nbsp;display: inline-block;
&nbsp;&nbsp;&nbsp;&nbsp;*display: inline;
&nbsp;&nbsp;&nbsp;&nbsp;zoom: 1;
&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;form span.inputSearch-group input {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;padding-right: 25px;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width: 100px;
&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;form span.inputSearch-group span.inputSearch {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width: 17px;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;position: absolute;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;right: 2px;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;top: 1px;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background: url(../img/delval.gif) no-repeat left center;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cursor: pointer;
&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;/* 新しくplaceholderのスタイルを追加 */
&nbsp;&nbsp;&nbsp;&nbsp;form span.inputSearch-group span.placeholder {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;position: absolute;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;top: 2px;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;left: 23px;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: #888;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;font-size: 93%;
&nbsp;&nbsp;&nbsp;&nbsp;}
</pre>
					<h2>実行とオプション</h2>
					<p>あとは好きなところで実行してください。</p>
					<pre name="code" class="js">

$(function(){
&nbsp;&nbsp;$(&quot;input#s&quot;).inputSearch();
});
</pre>
					<p>以下のようにすればplaceholderのテキストを変更できます。</p>
					<pre name="code" class="js">

$(function(){
&nbsp;&nbsp;$(&quot;input#s&quot;).inputSearch(
&nbsp;&nbsp;&nbsp;&nbsp;placeholder: &quot;検索窓やでここは&quot;
&nbsp;&nbsp;);
});
</pre>
					<p>というわけで、とても簡単に実装できましたね。ここまで作って気がつきましたが、Safariのは検索履歴が見れるんですね。なるほどー。tangoHokan.jsを使えば同じようなことできるなーとも思いながら面倒になったのでやめておきます…</p>
					<p><a href="http://5509.me/sample/inputsearch">サンプル</a> &#8211; サンプルの下にあるINPUTをSafariで見ると…！<br />
					<a href="http://5509.me/sample/archive/inputsearch.zip">サンプルファイルのダウンロード</a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1392&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/using-type-search/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TITLE属性を利用した簡単ツールチップの作り方 jQuery編</title>
		<link>http://5509.me/log/how-to-make-tooltip-using-jquery</link>
		<comments>http://5509.me/log/how-to-make-tooltip-using-jquery#comments</comments>
		<pubDate>Sun, 07 Jun 2009 23:00:31 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1368</guid>
		<description><![CDATA[					
					散々既出な気がするネタシリーズ。TITLE属性をツールチップで表示させるやつです。簡単なヘルプとか表示してあげるとユーザビリティを向上させることができる場合がありますよね。jQueryを使うととても [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/makingtooltip"><img class="alignnone size-full wp-image-1370" title="title属性を利用した簡単ツールチップの作り方 jQuery編" src="http://5509.me/wp-content/uploads/2009/06/e38394e382afe38381e383a3-7.png" alt="title属性を利用した簡単ツールチップの作り方 jQuery編" width="326" height="46" /></a></p>
					<p>散々既出な気がするネタシリーズ。TITLE属性をツールチップで表示させるやつです。簡単なヘルプとか表示してあげるとユーザビリティを向上させることができる場合がありますよね。jQueryを使うととても簡単につくれます。というよりも、使いたいときにさらっとコピってすぐ使えると思うので頭の片隅にでも置いておくと便利かもしれません。</p>
					<p class="link"><a href="http://5509.me/sample/makingtooltip/">Demo</a><br />
					<a href="http://5509.me/sample/archive/makingtooltip.zip">Download demo files</a></p>
					<p><span id="more-1368"></span></p>
					<p>ポイントは</p>
					<ul>
					<li>TITLE属性を持っている要素にイベントを設定する ( *1</li>
					<li>mouseover()でツールチップを生成する ( *2</li>
					<li>mouseout()でツールチップを消去する ( *3</li>
					<li>mousemove()でツールチップの位置を変える ( *4</li>
					</ul>
					<p>です。今回はmouseout()で消去するにしてますが、別にいちいち消さなくてもいいです。textを変えればいいだけですから。上の項目をJSソースにすると以下のような感じになります。細かくはコメントを参照してください。</p>
					<p class="note">追記: mouseover時にTITLEがブラウザデフォルトのチップで表示されるので、一時的にTITLE属性を空にしてみました。</p>
					<pre name="code" class="js">

jQuery(function($){

&nbsp;&nbsp;// 全要素をからTITLE属性を持っている要素だけに絞る - *1
&nbsp;&nbsp;$(&quot;body *&quot;).filter(function(){
&nbsp;&nbsp;&nbsp;&nbsp;return this.title ＆＆ this.title.length&gt;0; // ＆は半角に打ち直してください。。
&nbsp;&nbsp;}).each(function(){
&nbsp;&nbsp;// TITLE属性を持っている要素に適用する

&nbsp;&nbsp;&nbsp;&nbsp;// あとで使う
&nbsp;&nbsp;&nbsp;&nbsp;var self = $(this), title = self.attr(&quot;title&quot;);

&nbsp;&nbsp;&nbsp;&nbsp;// TITLE属性を持っている要素にhover()で
&nbsp;&nbsp;&nbsp;&nbsp;self.hover(

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// mouseover - *2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function(e){ // このeはevent自体を意味する

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// TITLEがあるとブラウザのチップが出るので一時的に空にしておく
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.attr(&quot;title&quot;,&quot;&quot;);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// とりあえず表示するtip要素を生成しておく
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;body&quot;).append(&quot;&lt;div id=&#039;title-tip&#039;&gt;&quot;+title+&quot;&lt;/div&gt;&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;#title-tip&quot;).css({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;position: &quot;absolute&quot;,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// e.pageX(Y)でカーソルが要素に乗った時点でのX(Y)座標を取得する
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;top: e.pageY+(-15), // カーソルと表示したtipが重なるとチラつくので少しずらす
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;left: e.pageX+15
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// mouseout
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function(){

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// mouseoverで空にしたTITLEを戻す
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.attr(&quot;title&quot;,title);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 要素から離れた場合はtipを非表示にして削除しておく - *3
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;#title-tip&quot;).hide().remove();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;);

&nbsp;&nbsp;&nbsp;&nbsp;// 要素上でカーソルが移動した場合は、逐一tipの位置を変える - *4
&nbsp;&nbsp;&nbsp;&nbsp;self.mousemove(function(e){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;#title-tip&quot;).css({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;top: e.pageY+(-15),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;left: e.pageX+15
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});
&nbsp;&nbsp;&nbsp;&nbsp;});
&nbsp;&nbsp;});

});
</pre>
					<p>全要素から絞り込んでいく方法は要素の量によって処理に時間がかかるので、できれば$(&#8220;a&#8221;).filter(などのように対象要素を決めてしまったほうがいいです。これでツールチップの表示と移動はできたので後は、CSSで見た目を整えるだけです。例えばサンプルのツールチップは以下のようなスタイルで定義してます。-moz(-webkit)-border-radiusでFirefoxとSafariではツールチップを角丸にしてます。CSSは単純なので問題はないと思います。</p>
					<pre name="code" class="css">

div#title-tip {
&nbsp;&nbsp;margin: 0 1em 0 0;
&nbsp;&nbsp;border: solid #ccc 1px;
&nbsp;&nbsp;-moz-border-radius: 4px;
&nbsp;&nbsp;-webkit-border-radius: 4px;
&nbsp;&nbsp;padding: .3em .5em;
&nbsp;&nbsp;background: #fff;
&nbsp;&nbsp;opacity: .8;
&nbsp;&nbsp;filter: alpha(opacity=80);
&nbsp;&nbsp;font-size: 86%;
}
</pre>
					<p>あとは背景をちょっと吹き出し風にするとか、色々遊べますので試してみてください。例えば</p>
					<pre name="code" class="js">

// とりあえず表示するtip要素を生成しておく
$(&quot;body&quot;).append(&quot;&lt;div id=&#039;title-tip&#039;&gt;&lt;div class=&#039;tip-right&#039;&gt;&quot;+title+&quot;&lt;/div&gt;&lt;/div&gt;&quot;);
</pre>
					<p>のようにDIV要素を入れ子にすることで縦横可変の角丸ツールチップとかできるようになります。</p>
					<p class="link"><a href="http://5509.me/sample/makingtooltip/">Demo</a><br />
					<a href="http://5509.me/sample/archive/makingtooltip.zip">Download demo files</a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1368&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/how-to-make-tooltip-using-jquery/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jQuery.validation.jsを使ったフォームでチェックによって必須項目の分岐を行う</title>
		<link>http://5509.me/log/checkifvalidation</link>
		<comments>http://5509.me/log/checkifvalidation#comments</comments>
		<pubDate>Thu, 04 Jun 2009 04:40:56 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[memo]]></category>
		<category><![CDATA[フォーム]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1346</guid>
		<description><![CDATA[					たとえばチェックボックスAがcheckedの時に、テキストエリアXを必須にする、というようなフォーム間の依存関係なんかは定義できるのでしょうか？
					via: http://5509.me/2008/08 [...]]]></description>
			<content:encoded><![CDATA[					<blockquote><p>たとえばチェックボックスAがcheckedの時に、テキストエリアXを必須にする、というようなフォーム間の依存関係なんかは定義できるのでしょうか？</p>
					<p><cite>via: <a href="http://5509.me/2008/08/22/realtimeformvalidation.html#comments">http://5509.me/2008/08/22/realtimeformvalidation.html#comments</a></cite></p></blockquote>
					<p>コメントをもらったので対応方法をメモしておきます。</p>
					<p><a href="http://5509.me/sample/validation_if">完成サンプル</a></p>
					<p><span id="more-1346"></span></p>
					<p>普通に実行する場合は以下のようになるのですが</p>
					<pre name="code" class="js">

$(&quot;.validate&quot;).validation({
&nbsp;&nbsp;msgs: {
&nbsp;&nbsp;&nbsp;&nbsp;email: &quot;正しいEメールアドレスを入力してください&lt;br /&gt;例：info@5509.me&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;submit: &quot;入力が完了していない&lt;strong&gt;必須項目&lt;/strong&gt;があります。&lt;br /&gt;&lt;strong&gt;必須項目は全て入力&lt;/strong&gt;してください。&quot;
&nbsp;&nbsp;},
&nbsp;&nbsp;dialog: {
&nbsp;&nbsp;&nbsp;&nbsp;dialogOpacity: .8
&nbsp;&nbsp;}
});
</pre>
					<p>これは指定のFORM要素に対してvalidationを実行するということなので（そのままですけどｗ<br />
					たとえばチェックボックス &#8211; 今回はラジオボタンBにしておきますが &#8211; がチェックされたときに<br />
					テキストボックスAを必須にしたい場合</p>
					<ol>
					<li>ラジオBがチェックされる</li>
					<li>テキストボックスBにaddClass(&#8220;required&#8221;)する</li>
					<li>validationを実行する際に生成されている要素div.validationTip, div#dlgmat, div#dlgを削除する</li>
					<li>validationを再実行する</li>
					</ol>
					<p>の順番で実行していけば、できるようになります。</p>
					<pre name="code" class="js">

// 再実行する必要があるので、何度も書かなくていいように変数にしておく
var validateFunc = function(){
&nbsp;&nbsp;$(&quot;.validate&quot;).validation({
&nbsp;&nbsp;&nbsp;&nbsp;msgs: {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;email: &quot;正しいEメールアドレスを入力してください&lt;br /&gt;例：info@5509.me&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;submit: &quot;入力が完了していない&lt;strong&gt;必須項目&lt;/strong&gt;があります。&lt;br /&gt;&lt;strong&gt;必須項目は全て入力&lt;/strong&gt;してください。&quot;
&nbsp;&nbsp;&nbsp;&nbsp;},
&nbsp;&nbsp;&nbsp;&nbsp;dialog: {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dialogOpacity: .8
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;});
}
// 読み込み時の実行
validateFunc();

// ここからが本題
$(&quot;input[name=&#039;radio&#039;]&quot;).click(function(){

// ラジオボタンがクリックされたときに、それが$(&quot;#radio2&quot;)なら、指定のテキストボックスにaddClass(&quot;required&quot;)
&nbsp;&nbsp;if($(&quot;#radio2&quot;).is(&quot;:checked&quot;)) $(&quot;#other&quot;).addClass(&quot;required&quot;);

// じゃない場合はremoveClass(&quot;required&quot;)
&nbsp;&nbsp;else $(&quot;#other&quot;).removeClass(&quot;required&quot;);

// validationを実行する前に初回読み込み時に生成された要素をすべて削除(かぶるため
&nbsp;&nbsp;$(&quot;div.validationTip,div#dlgmat,div#dlg&quot;).each(function(){ $(this).remove(); });

// validationを実行する
&nbsp;&nbsp;validateFunc();

});
</pre>
					<p><a href="http://5509.me/sample/validation_if">完成サンプル</a><br />
					<a href="http://5509.me/sample/archive/validation_if.zip">サンプルファイルのダウンロード</a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1346&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/checkifvalidation/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>iPhone風のテキストボックスの文字を消去するボタンを実装するチュートリアル</title>
		<link>http://5509.me/log/turorial-using-iphone-like-input-delete-button</link>
		<comments>http://5509.me/log/turorial-using-iphone-like-input-delete-button#comments</comments>
		<pubDate>Wed, 03 Jun 2009 22:00:25 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[フォーム]]></category>
		<category><![CDATA[プラグイン]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/2009/06/04/turorial-iphone-like-input-delete-button.html</guid>
		<description><![CDATA[					iPhoneユーザーにはお馴染みこのボタン
					
					いつのまにかYahoo検索でも採用されてました同じようなボタン
					
					ちょっとした配慮で少しでも入力する手間を軽減できるいい例で [...]]]></description>
			<content:encoded><![CDATA[					<p>iPhoneユーザーにはお馴染みこのボタン</p>
					<p><a href="http://5509.me/wp-content/uploads/2009/06/delval-iphone.gif"><img class="alignnone size-full wp-image-1309" title="iPhoneキャプチャ" src="http://5509.me/wp-content/uploads/2009/06/delval-iphone.gif" alt="iPhoneキャプチャ" width="150" /></a></p>
					<p>いつのまにか<a href="http://search.yahoo.co.jp/search?p=yahoo&amp;ei=UTF-8&amp;fr=moz2&amp;rls=org.mozilla:ja-JP:official">Yahoo検索</a>でも採用されてました同じようなボタン</p>
					<p><img class="alignnone size-full wp-image-1311" title="Yahoo検索キャプチャ" src="http://5509.me/wp-content/uploads/2009/06/delval-yahoo1.gif" alt="Yahoo検索キャプチャ" width="396" height="77" /></p>
					<p>ちょっとした配慮で少しでも入力する手間を軽減できるいい例ですね。<br />
					お問い合わせなどのフォームではあんまり役に立たないかもしれませんが<br />
					検索窓のテキストボックスなどでは割と使えるかも…？</p>
					<p>というわけでこの<strong>テキストボックスの中身を消去するボタンを実装する方法</strong>を紹介します。<br />
					最終的にjQueryプラグインにしているのでサンプルはプラグイン版です。</p>
					<p><span id="more-1337"></span></p>
					<p>チュートリアルなんかいらない人は<a href="#plugin">プラグインの項目にどうぞ</a>。</p>
					<p><a href="http://5509.me/sample/delval"><img class="alignnone size-full wp-image-1312" title="delval実装キャプチャ" src="http://5509.me/wp-content/uploads/2009/06/delval.gif" alt="delval実装キャプチャ" width="190" height="36" /></a></p>
					<p><a href="http://5509.me/sample/delval">サンプル</a><br />
					<a href="http://5509.me/sample/archive/delval.zip">サンプルファイルのダウンロード</a></p>
					<h2>iPhoneのようなテキストボックスの中身を消去するボタンを実装するチュートリアル</h2>
					<h3>まずはINPUT要素を用意します</h3>
					<pre name="code" class="html">

&lt;input type=&quot;text&quot; id=&quot;search&quot; name=&quot;search&quot; value=&quot;&quot; class=&quot;delval&quot; /&gt;
</pre>
					<p>わかりやすいようにIDにはsearch、CLASSにはdelvalを指定しています。</p>
					<h3>次は削除ボタンを表示しているときを考えます</h3>
					<p>削除ボタンを表示した状態を考えると</p>
					<p><img class="alignnone size-full wp-image-1312" title="delval実装キャプチャ" src="http://5509.me/wp-content/uploads/2009/06/delval.gif" alt="delval実装キャプチャ" width="190" height="36" /></p>
					<p>のようになると思いますが<br />
					INPUT要素に削除ボタンが重なっています。<br />
					これを実現するためには、INPUT要素と削除ボタンを親要素でくくって<br />
					親要素をposition: relativeにした上で削除ボタンを右側に絶対配置すればよさそうです。</p>
					<p><img class="alignnone size-full wp-image-1326" title="delval-s1" src="http://5509.me/wp-content/uploads/2009/06/delval-s1.gif" alt="delval-s1" width="227" height="88" /><br />
					これをHTMLとCSSでマークアップすると</p>
					<pre name="code" class="html">

&lt;span class=&quot;delval-group&quot;&gt;
&nbsp;&nbsp;&lt;input type=&quot;text&quot; id=&quot;search&quot; name=&quot;search&quot; value=&quot;&quot; class=&quot;delval&quot; /&gt;
&nbsp;&nbsp;&lt;span class=&quot;delval&quot; /&gt;
&lt;/span&gt;
</pre>
					<pre name="code" class="css">

span.delval-group {
&nbsp;&nbsp;height: 23px;
&nbsp;&nbsp;position: relative;
&nbsp;&nbsp;display: inline-block;
&nbsp;&nbsp;*display: inline;
&nbsp;&nbsp;zoom: 1;
}

&nbsp;&nbsp;span.delval-group input {
&nbsp;&nbsp;&nbsp;&nbsp;padding-right: 20px;
&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;span.delval-group span.delval {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width: 17px;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height: 23px;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;position: absolute;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;right: 2px;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;top: 1px;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background: url(../img/delval.png) no-repeat left center;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cursor: pointer;
&nbsp;&nbsp;&nbsp;&nbsp;}
</pre>
					<p>display: inline-blockを使っていますが、floatでも構いません。<br />
					親要素がblock要素の場合、幅がその親に対して100%になってしまうので<br />
					どちらにしても、floatかinline-blockにする必要があります。</p>
					<p><a href="http://5509.me/sample/delval/rev.html">ここまでのサンプル</a></p>
					<h3>JSで置き換えるようにする</h3>
					<p>これで削除ボタンを表示しているときを実装できました。<br />
					できたましたが、結局これはJSが使えないと意味がないので<br />
					JSで実装させてしまいましょう。</p>
					<p>上で変更したHTMLに元のHTMLからDOM操作で変更します。</p>
					<pre name="code" class="js">

$(&quot;input.delval&quot;).each(function(i){
&nbsp;&nbsp;var self = $(this);

&nbsp;&nbsp;self.replaceWith(&quot;&lt;span id=&#039;delval-&quot;+i+&quot;&#039;&gt;&lt;/span&gt;&quot;);
&nbsp;&nbsp;$(&quot;span#delval-&quot;+i)
&nbsp;&nbsp;&nbsp;&nbsp;.append(self)
&nbsp;&nbsp;&nbsp;&nbsp;.append(&quot;&lt;span class=&#039;delval&#039;&gt;&lt;/span&gt;&quot;)
&nbsp;&nbsp;&nbsp;&nbsp;.addClass(&quot;delval-group&quot;);
});
</pre>
					<p>ここまでです。<br />
					複数に対応できるようにeach関数を使って各要素にIDを割り当てています。</p>
					<h3>高さもJSまとめて取得・指定する</h3>
					<p>さらにCSSで親要素のSPAN要素とボタンに高さを与えていましたが<br />
					これもその要素によって変わるしいちいち設定するのは面倒なので<br />
					JSでまとめて設定してしまいましょう。</p>
					<p>あとあと指定する必要が出てくるので<br />
					変数に入れるついでに高さを指定することにします。</p>
					<pre name="code" class="js">

var group = $(&quot;span#delval-&quot;+i).css(&quot;height&quot;,self.attr(&quot;offsetHeight&quot;)),
&nbsp;&nbsp;btn = $(&quot;span.delval&quot;,group).css(&quot;height&quot;,group.height());
</pre>
					<p>offsetHeightはpadding, borderも含めた要素の高さです。<br />
					詳しくは<a class="taggedlink" rel="nofollow" href="http://d.hatena.ne.jp/cyokodog/20090224/jQueryPosSet01" target="_blank">jQuery の位置・サイズ関連メソッドまとめ &#8211; Cyokodog::Diary</a><span class="taggedlink">に書かれています。</span></p>
					<h3><span class="taggedlink">消去ボタンを押したときの動作<br />
					</span></h3>
					<p>あとは</p>
					<ul>
					<li>INPUT要素が空ならボタンは表示しない</li>
					<li>INPUT要素に文字が1文字でも入力されたらボタンを表示</li>
					<li>削除ボタンをクリックでINPUT要素を空にして、ボタンを非表示にする</li>
					</ul>
					<p>で、実装できそうです。<br />
					どれも非常に簡単なのでまとめてしまうと</p>
					<pre name="code" class="js">

if(self.val().length&lt;1) btn.hide();

self.keyup(function(){
&nbsp;&nbsp;if(self.val().length&gt;0) btn.show();
&nbsp;&nbsp;else btn.hide();
});

btn.click(function(){
&nbsp;&nbsp;self.val(&quot;&quot;);
&nbsp;&nbsp;btn.hide();
&nbsp;&nbsp;self.focus();
});
</pre>
					<p>となるので、JSソースをすべてまとめると</p>
					<h3>ここまでのまとめ</h3>
					<pre name="code" class="js">

$(&quot;input.delval&quot;).each(function(i){
&nbsp;&nbsp;var self = $(this);

// 消去ボタンを実装するためにHTMLを改変
&nbsp;&nbsp;self.replaceWith(&quot;&lt;span id=&#039;delval-&quot;+i+&quot;&#039;&gt;&lt;/span&gt;&quot;);
&nbsp;&nbsp;$(&quot;span#delval-&quot;+i)
&nbsp;&nbsp;&nbsp;&nbsp;.append(self)
&nbsp;&nbsp;&nbsp;&nbsp;.append(&quot;&lt;span class=&#039;delval&#039;&gt;&lt;/span&gt;&quot;)
&nbsp;&nbsp;&nbsp;&nbsp;.addClass(&quot;delval-group&quot;);

// 変数に入れるついでに高さを指定
&nbsp;&nbsp;var group = $(&quot;span#delval-&quot;+i).css(&quot;height&quot;,self.attr(&quot;offsetHeight&quot;)),
&nbsp;&nbsp;&nbsp;&nbsp;btn = $(&quot;span.delval&quot;,group).css(&quot;height&quot;,group.height());

// INPUT要素が空なら消去ボタンを隠す
&nbsp;&nbsp;if(self.val().length&lt;1) btn.hide();

// keyupイベント時にINPUT要素の文字列を見て表示非表示
&nbsp;&nbsp;self.keyup(function(){
&nbsp;&nbsp;&nbsp;&nbsp;if(self.val().length&gt;0) btn.show();
&nbsp;&nbsp;&nbsp;&nbsp;else btn.hide();
&nbsp;&nbsp;});

// 消去ボタンを押したらINPUT要素を空にしてフォーカスしておく
&nbsp;&nbsp;btn.click(function(){
&nbsp;&nbsp;&nbsp;&nbsp;self.val(&quot;&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;btn.hide();
&nbsp;&nbsp;&nbsp;&nbsp;self.focus();
&nbsp;&nbsp;});
});
</pre>
					<p>になって完成です。<a href="http://5509.me/sample/delval/rev2.html">ここまでのサンプル</a></p>
					<h2 id="plugin">プラグイン</h2>
					<p>上で作成したものを一応プラグインにしておきました。</p>
					<h3>必要ファイルを読み込む</h3>
					<pre name="code" class="html">

&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/delval.css&quot; /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/delval.js&quot;&gt;&lt;/script&gt;
</pre>
					<h3>対象にしたいINPUT要素に対して実行する</h3>
					<pre name="code" class="html">

&lt;script type=&quot;text/javascript&quot;&gt;
&nbsp;&nbsp;$(function(){
&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;input.delval&quot;).delval();
&nbsp;&nbsp;});
&lt;/script&gt;
</pre>
					<p>だけです。</p>
					<p><a href="http://5509.me/sample/delval">サンプル</a><br />
					<a href="http://5509.me/sample/archive/delval.zip">サンプルファイルのダウンロード</a></p>
					<h2>動作確認済ブラウザ</h2>
					<p>IE6〜8, Firefox3, Opera9.6, Safari3, Chrome2</p>
					<p>でもOperaが…IMEがONの場合Enterキーを押しても<br />
					次にBackSpaceなどを押さない限り動作しません。</p>
					<p>IMEとOperaの問題なのでMacでは問題ないです。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1337&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/turorial-using-iphone-like-input-delete-button/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>入力補助でユーザーの負担を減らそう 予約語を表示するtangoHokan.js</title>
		<link>http://5509.me/log/tangohokanjs</link>
		<comments>http://5509.me/log/tangohokanjs#comments</comments>
		<pubDate>Mon, 01 Jun 2009 23:50:08 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[フォーム]]></category>
		<category><![CDATA[プラグイン]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1292</guid>
		<description><![CDATA[					
					どんな場面でもフォームの項目入力はどうしても面倒くさいもの。
					ある程度決まった単語が入力されるとわかっているなら
					よく使う単語を表示して選べれば便利ですよね。
					tang [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/tangohokan"><img class="alignnone size-full wp-image-1294" title="登録後から入力補完ができるjQueryプラグイン" src="http://5509.me/wp-content/uploads/2009/06/e38394e382afe38381e383a3-1.png" alt="登録後から入力補完ができるjQueryプラグイン" width="209" height="185" /></a></p>
					<p>どんな場面でもフォームの項目入力はどうしても面倒くさいもの。</p>
					<p>ある程度決まった単語が入力されるとわかっているなら<br />
					よく使う単語を表示して選べれば便利ですよね。</p>
					<p>tangoHokanはINPUT入力時に予約語を表示して<br />
					少しでもユーザーの負担を減らすための補助スクリプトです。<br />
					また入力文字に応じて予約語から絞り込みができます。</p>
					<p>Google検索のような予測ではないですが<br />
					使い方次第ではシステム連携でそれらしいこともできると思います。</p>
					<p><a href="http://5509.me/sample/tangohokan">サンプルを見る</a><br />
					<a href="http://5509.me/sample/archive/tangohokan.zip">サンプルファイルをダウンロードする</a></p>
					<p><span id="more-1292"></span></p>
					<h2>導入方法</h2>
					<h3>tangohokan.cssとjQuery、tangohokan.jsをHTMLヘッダで読み込む</h3>
					<pre name="code" class="html">

&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/tangohokan.css&quot; /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/tangohokan.js&quot;&gt;&lt;/script&gt;
</pre>
					<h3>HTMLを記述しておく</h3>
					<p>例えば以下のような入力項目を用意します。<br />
					各INPUT要素には<strong>IDが必須</strong>になります。<br />
					さらに<strong>IDは予約語を引っ張る際のキーになるので半角英数字(頭文字は数字不可)にします</strong>。<br />
					結局実行する要素は指定するのでCLASSは別になくても構いません。<br />
					わかりやすいようにCLASSを指定しているだけです。</p>
					<pre name="code" class="html">

&lt;dl&gt;
&nbsp;&nbsp;&lt;dt&gt;趣味&lt;/dt&gt;
&nbsp;&nbsp;&lt;dd&gt;&lt;input type=&quot;text&quot; id=&quot;hobby&quot; name=&quot;hobby&quot; value=&quot;&quot; class=&quot;tangoHokan&quot; /&gt;&lt;/dd&gt;
&nbsp;&nbsp;&lt;dt&gt;乗っているバイク&lt;/dt&gt;
&nbsp;&nbsp;&lt;dd&gt;&lt;input type=&quot;text&quot; id=&quot;bike&quot; name=&quot;bike&quot; value=&quot;&quot; class=&quot;tangoHokan&quot; /&gt;&lt;/dd&gt;
&nbsp;&nbsp;&lt;dt&gt;使っているブラウザ&lt;/dt&gt;
&nbsp;&nbsp;&lt;dd&gt;&lt;input type=&quot;text&quot; id=&quot;browser&quot; name=&quot;browser&quot; value=&quot;&quot; class=&quot;tangoHokan&quot; /&gt;&lt;/dd&gt;
&lt;/dl&gt;
</pre>
					<h3>予約語を決める</h3>
					<p>予約語はJSONファイルに記述します。<br />
					JSONってなに？という方は<a href="http://www.thinkit.co.jp/article/70/1/">Think ITの記事</a>を参考にしてください。<br />
					今回の場合は特にJSONが何かわかってなくても使えるようになってるので<br />
					そんなに気にしなくても大丈夫です。</p>
					<p>サンプルファイルで使っている<a href="http://5509.me/sample/tangohokan/data.json">JSONファイル</a>を見てください。</p>
					<pre name="code" class="js">

({
&nbsp;&nbsp;&quot;hobby&quot;: [
&nbsp;&nbsp;&nbsp;&nbsp;&quot;ちろると散歩&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&quot;ちろると公園で遊ぶ&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&quot;ちろると寝る&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&quot;ちろると一緒にランニング&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&quot;ゆにと散歩&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&quot;ゆにと公園で遊ぶ&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&quot;ゆにと寝る&quot;
&nbsp;&nbsp;],
&nbsp;&nbsp;&quot;bike&quot;: [
&nbsp;&nbsp;&nbsp;&nbsp;&quot;SR400&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&quot;Estrella&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&quot;250TR&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&quot;Grass Tracker&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&quot;ST250&quot;
&nbsp;&nbsp;],
&nbsp;&nbsp;&quot;browser&quot;: [
&nbsp;&nbsp;&nbsp;&nbsp;&quot;IE6&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&quot;IE7&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&quot;IE8&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&quot;Firefox3&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&quot;Opera9&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&quot;Safari3&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&quot;Chrome2&quot;
&nbsp;&nbsp;]
})
</pre>
					<p>&#8220;hobby&#8221;, &#8220;bike&#8221;, &#8220;browser&#8221;がそれぞれ予約語に対する見出しのようなものです。<br />
					この<strong>見出しはデータを引っ張る際のキーになるので半角英数字(頭文字は数字不可)にします</strong>。<br />
					要は<strong>HTML側のIDとJSONの見出し部分が同じ項目の予約語がそれぞれ表示</strong>されます。</p>
					<p>予約語の種類を増やしたい場合は、カンマで区切って追加していきます。</p>
					<p>サンプルではこのJSONデータはHTMLファイルと同じディレクトリにあることを想定しています。<br />
					違う場所に置きたい場合は、オプションから指定できます。</p>
					<h3>tangoHokanを実行したいINPUT要素を指定して実行する</h3>
					<p>以下をHTMLヘッダか任意のJSファイルで記述します。</p>
					<pre name="code" class="js">

$(function(){
&nbsp;&nbsp;$(&quot;input.tangoHokan&quot;).tangoHokan();
});
</pre>
					<h2>オプション項目</h2>
					<p>オプション指定で</p>
					<p>JSONファイルの場所/補完単語表示の位置/<br />
					予約語がない場合の文章/閉じるボタンのタイトル</p>
					<p>を変更できます。デフォルトは以下になってます。</p>
					<pre name="code" class="js">

$(function(){
&nbsp;&nbsp;$(&quot;input.tangoHokan&quot;).tangoHokan({
&nbsp;&nbsp;&nbsp;&nbsp;json: &quot;data.json&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;top: 2,
&nbsp;&nbsp;&nbsp;&nbsp;left: 0,
&nbsp;&nbsp;&nbsp;&nbsp;noResult: &quot;No word matched.&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;close: &quot;Close&quot;
&nbsp;&nbsp;});
});
</pre>
					<h2>動作確認済ブラウザ</h2>
					<p>IE6〜8, Firefox3, Opera9.6, Safari3, Chrome2</p>
					<h2>今回何となく見送ったものとかその他のこと</h2>
					<ul>
					<li>項目が多すぎる際の処理 (上位10件を表示して、絞り込みの際に再表示にするつもり</li>
					<li>ドキュメントクリックでプルダウンを閉じたい</li>
					<li>対象ユーザーによっては逆にユーザビリティを低下させるかもしれない</li>
					<li>それを言い出したら全部そうかも。。</li>
					</ul>
					<img src="http://5509.me/?ak_action=api_record_view&id=1292&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/tangohokanjs/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>JSとCookieを使った新規ユーザーのみに表示するコンテンツで心を掴もう</title>
		<link>http://5509.me/log/attracting-new-visitor-with-cookie</link>
		<comments>http://5509.me/log/attracting-new-visitor-with-cookie#comments</comments>
		<pubDate>Thu, 28 May 2009 04:23:03 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[LPO]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1275</guid>
		<description><![CDATA[					
					サイト運営において
					目標はそれぞれ異なると思いますが、そもそも目標を達成するためにはどうすればいいでしょうか。
					LPOもそれなりに浸透してきましたが
					新規ユーザーの心を [...]]]></description>
			<content:encoded><![CDATA[					<p><img class="alignnone size-full wp-image-1284" title="contentfornewvisitors" src="http://5509.me/wp-content/uploads/2009/05/contentfornewvisitors.gif" alt="contentfornewvisitors" width="364" height="149" /></p>
					<p>サイト運営において<br />
					目標はそれぞれ異なると思いますが、そもそも目標を達成するためにはどうすればいいでしょうか。</p>
					<p>LPOもそれなりに浸透してきましたが<br />
					<strong>新規ユーザーの心を掴めるかどうか（ユーザーの目的に合った情報を提示してあげること）</strong><br />
					が重要になってくると思います。</p>
					<p>注目を惹くための手段は色々とあると思いますが</p>
					<ul>
					<li><strong>新規ユーザーのみに提示するようなコンテンツを表示してあげる</strong></li>
					</ul>
					<p>というのもひとつの手段になります。<br />
					今回は<strong>JavaScript</strong>と<strong>Cookie</strong>を使って表示する情報をコントロールする方法を紹介します。<br />
					この方法は<strong>とても簡単に導入できるので覚えておいて損はないと思います</strong>。</p>
					<p>まずは<a href="http://5509.me/sample/contents-for-new-visitors/">何もしていない状態のサンプルを見てください</a>。<br />
					では次に<a href="http://5509.me/sample/contents-for-new-visitors/sample1.html">新規ユーザーのみに提示するようなコンテンツを表示してあげるサンプルを見てください</a>。</p>
					<p class="note">サンプルをもう一度見たい場合は<br />
					タイトルの下の <strong>新規ユーザーに戻る リンクをクリックしてください</strong>。</p>
					<p>一度表示されたらF5を押してページを更新してみてください。<br />
					こうするだけで印象が違いませんか？</p>
					<p>やっていることは簡単で<br />
					Cookieを使って一度訪れたことがあるユーザーかどうかを判別して<br />
					そうでなければ（新規ユーザーなら）指定の要素を表示している、だけです。</p>
					<p><span id="more-1275"></span></p>
					<h2>導入方法</h2>
					<p>まずは、<a href="http://5509.me/sample/contents-for-new-visitors/js/lib/cookie.js">cookie.jsをダウンロード</a>して読み込みます。</p>
					<p class="note">このcookie.jsは<a href="http://plugins.jquery.com/project/cookie">jQuery Cookieプラグイン</a>を<br />
					<a href="http://d.hatena.ne.jp/monjudoh/20080724/1216871110">JavaScriptでcookieを操作する時はjquery.cookie.jsを使おう &#8211; 文殊堂<br />
					</a>を参考にjQueryなしで使えるように書き換えたものです。</p>
					<pre name="code" class="html">

&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/cookie.js&quot;&gt;&lt;/script&gt;
</pre>
					<p>今回は以下のような要素を新規ユーザーに表示することにします。</p>
					<pre name="code" class="html">

&lt;div id=&quot;welcome&quot;&gt;
&nbsp;&nbsp;&lt;p&gt;ようこそ！はじめての方は以下のエントリーがおすすめです。&lt;/p&gt;
&nbsp;&nbsp;&lt;p id=&quot;close&quot;&gt;閉じる&lt;/p&gt;
&nbsp;&nbsp;&lt;ul&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;http://5509.me/2009/04/16/using-wordpress-as-cms.html&quot;&gt;CMSとしてのWordPressでサイト構築をするときに便利な13のプラグイン
&nbsp;&nbsp;&nbsp;&nbsp;&lt;img src=&quot;http://b.hatena.ne.jp/entry/image/http://5509.me/2009/04/16/using-wordpress-as-cms.html&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;http://5509.me/2008/08/22/realtimeformvalidation.html&quot;&gt;リアルタイムフォームバリデーション jQuery.validation.js&lt;/a&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;img src=&quot;http://b.hatena.ne.jp/entry/image/http://5509.me/2008/08/22/realtimeformvalidation.html&quot; /&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;http://5509.me/2008/09/14/jqueryselectable.html&quot;&gt;selectボックスをシンプルなプルダウンに拡張するjQuery.selectable.js
&nbsp;&nbsp;&nbsp;&nbsp;&lt;img src=&quot;http://b.hatena.ne.jp/entry/image/http://5509.me/2008/09/14/jqueryselectable.html&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&lt;/ul&gt;
&lt;/div&gt;
</pre>
					<p>まずはＣＳＳで↑の要素(p#welcome)を非表示にしておきます。</p>
					<pre name="code" class="css">

div#welcome {
&nbsp;&nbsp;display: none;
}
</pre>
					<p>次に、JSとCookieを使って新規ユーザーにのみ表示するスクリプトを加えます。<br />
					サンプルではHTMLのHEAD内に書いています。</p>
					<pre name="code" class="js">

window.onload = function(){
&nbsp;&nbsp;// Cookieに値が保存されているか
&nbsp;&nbsp;var visited = cookie(&quot;visited&quot;) ＆＆ cookie(&quot;visited&quot;)!=null ? false : true;

&nbsp;&nbsp;// Cookieが空の場合（新規ユーザー）p#welcome を表示する
&nbsp;&nbsp;if(visited){
&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(&quot;welcome&quot;).style.display = &quot;block&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;cookie(&quot;visited&quot;,&quot;visited&quot;); // Cookieに値を保存して以降はリピーター扱いにする
&nbsp;&nbsp;}
}
</pre>
					<p><strong>＆だけ半角に打ちなおしてください。。</strong></p>
					<p>JSがわからない人はそのまま貼って、<br />
					getElementById(&#8220;welcome&#8221;)の<strong>welcome部分を表示したい要素のIDに</strong>すれば大丈夫です。</p>
					<h2>jQueryを使えば…</h2>
					<p><a href="http://5509.me/sample/contents-for-new-visitors/sample2.html">jQueryを使って表示方法を変えたサンプル</a></p>
					<p>表示方法ちょっと変えるだけで印象も全然違いますね。<br />
					jQueryを使えば簡単にできますので、興味がある人は試してみてください <img src='http://5509.me/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
					<h2>サンプルファイルのダウンロード</h2>
					<dl>
					<dt>JSのみ</dt>
					<dd><a href="http://5509.me/sample/contents-for-new-visitors/js/lib/cookie.js">cookie.js</a>(1KB) &#8211; オリジナルソース <a href="http://plugins.jquery.com/project/cookie">jQuery Cookieプラグイン</a> </dd>
					<dt>サンプルファイル</dt>
					<dd><a href="http://5509.me/sample/archive/contents-for-new-visitors.zip">contents-for-new-visitors.zip</a></dd>
					</dl>
					<img src="http://5509.me/?ak_action=api_record_view&id=1275&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/attracting-new-visitor-with-cookie/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bit.lyで短縮された元のURLをプレビューする jQueryプラグイン</title>
		<link>http://5509.me/log/preview_default_url_shorten_by_bitly</link>
		<comments>http://5509.me/log/preview_default_url_shorten_by_bitly#comments</comments>
		<pubDate>Mon, 25 May 2009 22:21:15 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[bit.ly]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[アクセシビリティ]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1245</guid>
		<description><![CDATA[					
					prebitlyの動作サンプル
					prebitlyのサンプルファイルダウンロード
					自分のサイト、ブログでbit.ly（短縮URL）を使いたいけど
					ユーザー目線で考えると目 [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/prebitly"><img class="alignnone size-full wp-image-1254" title="prebitlyキャプチャ" src="http://5509.me/wp-content/uploads/2009/05/prebitly.gif" alt="prebitlyキャプチャ" width="309" height="171" /></a></p>
					<p><a href="http://5509.me/sample/prebitly">prebitlyの動作サンプル</a><br />
					<a href="http://5509.me/sample/archive/prebitly.zip">prebitlyのサンプルファイルダウンロード</a></p>
					<p>自分のサイト、ブログで<a href="http://bit.ly/">bit.ly</a>（短縮URL）を使いたいけど<br />
					ユーザー目線で考えると目的地がはっきりしないURLは不安じゃないですか？</p>
					<p>短縮URLで飛ばした先でウイルス感染…とかもあるみたいですし。<br />
					慣れてる人はFirefoxのアドオンとか、Greasemonkeyを使えばいいんですけど<br />
					それだけじゃだめですよね。</p>
					<p>prebitlyプラグインを導入すれば、bit.lyを使った短縮URLでも<br />
					プレビューチップで元のURLを表示するので、みんなが安心してリンクをクリックできます。<br />
					（さすがに、音声ブラウザまでは無理です…）</p>
					<p><span id="more-1245"></span></p>
					<h2>トピックス</h2>
					<ul>
					<li><a href="#download">ダウンロード</a></li>
					<li><a href="#install">導入方法</a></li>
					<li><a href="#setting">設定</a></li>
					<li><a href="http://5509.me/sample/prebitly">サンプル</a></li>
					<li><a href="#spec">動作環境</a></li>
					</ul>
					<h2 id="#download">ダウンロード</h2>
					<dl>
					<dt>JSのみ</dt>
					<dd><a href="http://5509.me/sample/prebitly/js/prebitly.js">prebitly.js(1KB)</a></dd>
					<dt>サンプルファイル</dt>
					<dd><a href="http://5509.me/sample/archive/prebitly.zip">prebitly.zip</a></dd>
					</dl>
					<h2 id="install">導入方法</h2>
					<p>prebitlyプラグインを使うには、<strong>bit.lyのアカウントとAPIキーが必要</strong>です。<br />
					作成、取得は非常に簡単です。</p>
					<h3>bit.lyのアカウントを作成する</h3>
					<p><a href="http://bit.ly/account/register?rd=/">このページ</a>左の<strong>Create a Free bit.ly Account</strong>から項目に入力して<strong>Sign Up</strong>します。</p>
					<h3>AccountのページからAPIキーを取得する</h3>
					<p><img class="alignnone size-full wp-image-1263" title="e38394e382afe38381e383a3-11" src="http://5509.me/wp-content/uploads/2009/05/e38394e382afe38381e383a3-11.png" alt="e38394e382afe38381e383a3-11" width="128" height="51" /></p>
					<p>右上のリンクから移動します。<br />
					そうすると左側に↓のように「API Login」「API Key」が表示されています。</p>
					<p><img class="alignnone size-full wp-image-1264" title="e38394e382afe38381e383a3-2" src="http://5509.me/wp-content/uploads/2009/05/e38394e382afe38381e383a3-2.png" alt="e38394e382afe38381e383a3-2" width="137" height="111" /></p>
					<h3>ファイルを読み込む</h3>
					<p>prebitly.jsを読み込む前に、Login IDとAPI KeyでAPIにアクセスできる状態にします。<br />
					login= /ここにAPI Login<br />
					apiKey= /ここにAPI Key</p>
					<pre name="code" class="html">

&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/prebitly.css&quot; /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://bit.ly/javascript-api.js?version=latest&amp;amp;login=norinorinori&amp;amp;apiKey=R_e3f7b535791f579489b605e30356993b&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/prebitly.js&quot;&gt;&lt;/script&gt;
</pre>
					<p>デザインを変える場合はCSSファイルから行ってください。<br />
					最後に実行します。</p>
					<pre name="code" class="html">

&lt;script type=&quot;text/javascript&quot;&gt;
&nbsp;&nbsp;$(function(){
&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;a[href*=&#039;http://bit.ly&#039;]&quot;).prebitly();
&nbsp;&nbsp;});
&lt;/script&gt;
</pre>
					<p>これだけで bit.ly で短縮されたURLにマウスカーソルが乗ったときに<br />
					プレビューが表示されるようになります。</p>
					<h2 id="setting">設定</h2>
					<p>チップ表示位置の微調整、読み込み中の文言を変えることができます。<br />
					変更するときは以下のように記述します。</p>
					<pre name="code" class="html">

&lt;script type=&quot;text/javascript&quot;&gt;
&nbsp;&nbsp;$(function(){
&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;a[href*=&#039;http://bit.ly&#039;]&quot;).prebitly({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;top: -40,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;left: 5,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loadingText: &quot;loading...&quot;
&nbsp;&nbsp;&nbsp;&nbsp;});
&nbsp;&nbsp;});
&lt;/script&gt;
</pre>
					<p><a href="http://5509.me/sample/prebitly">prebitlyの動作サンプル</a><br />
					<a href="http://5509.me/sample/archive/prebitly.zip">prebitlyのサンプルファイルダウンロード</a></p>
					<h2 id="spec">動作環境</h2>
					<ul>
					<li>IE6（後方互換モードは未確認）</li>
					<li>IE7</li>
					<li>Firefox3</li>
					<li>Opera9.5</li>
					<li>Safari3</li>
					<li>Chrome</li>
					</ul>
					<h2>ちなみに…</h2>
					<p>プレビューにサムネイルなど<br />
					もっと拡張した機能がほしい場合は <a href="http://code.google.com/p/bitly/">bitly</a> というプラグインがあります。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1245&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/preview_default_url_shorten_by_bitly/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>角丸幅可変ボタンでクロスフェードをする</title>
		<link>http://5509.me/log/cross-fade-with-rounded-corner-button</link>
		<comments>http://5509.me/log/cross-fade-with-rounded-corner-button#comments</comments>
		<pubDate>Thu, 21 May 2009 21:00:29 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[memo]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1225</guid>
		<description><![CDATA[					
					角丸の幅可変ボタンを作ろうと思うと割と面倒くさいんですけど
					さらにクロスフェードさせたい（実質クロスフェードではないんですが）
					という欲望に負けてやってみました。
					完成 [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/cross-fade-with-css-sprite/"><img class="alignnone size-full wp-image-1234" title="角丸幅可変ボタン" src="http://5509.me/wp-content/uploads/2009/05/e38394e382afe38381e383a3-1.png" alt="角丸幅可変ボタン" width="130" height="54" /></a></p>
					<p>角丸の幅可変ボタンを作ろうと思うと割と面倒くさいんですけど<br />
					さらにクロスフェードさせたい（実質クロスフェードではないんですが）<br />
					という欲望に負けてやってみました。</p>
					<p><a href="http://5509.me/sample/cross-fade-with-css-sprite/">完成サンプル</a><br />
					<a href="http://5509.me/sample/archive/cross-fade-with-css-sprite.zip">サンプルファイルのダウンロード</a></p>
					<p><span id="more-1225"></span></p>
					<p class="note"><span style="text-decoration: line-through;">とりあえずMacでしか確認してないのでIEとかどうなるかわかりません。<br />
					</span><strong>IE6で崩れてたのでCSSを修正しました。</strong></p>
					<h2>角丸可変ボタンのHTML</h2>
					<p>そもそも角丸幅可変のボタンを作ろうと思うと要素の入れ子は避けられません。<br />
					下のような感じになります。</p>
					<pre name="code" class="html">

&lt;a href=&quot;#&quot;&gt;&lt;span&gt;SUBMIT&lt;/span&gt;&lt;/a&gt;
</pre>
					<p>ムダな要素はJSで…<br />
					でもいいですけど、ここはデザインに直接影響するところなので<br />
					HTML+CSSだけでやったほうがいいです。<br />
					中のSPANはあきらめてください。僕は気にしてません。</p>
					<h2>角丸可変ボタンのCSS</h2>
					<p>これにCSSを書いていくと<br />
					たぶん以下みたいな感じになると思います。<br />
					ボタンは2つ以上並ぶ事も想定します。</p>
					<p>使う画像は次の2つです。</p>
					<p><img src="http://5509.me/sample/cross-fade-with-css-sprite/img/btn_left.gif" alt="ボタン左" width="5" height="70" /> <img src="http://5509.me/sample/cross-fade-with-css-sprite/img/btn_right.gif" alt="ボタン右" width="303" height="70" /></p>
					<pre name="code" class="css">

p.btn {
&nbsp;&nbsp;overflow: hidden;
}

&nbsp;&nbsp;p.btn a {
&nbsp;&nbsp;&nbsp;&nbsp;float: left;
&nbsp;&nbsp;&nbsp;&nbsp;padding-left: 5px;
&nbsp;&nbsp;&nbsp;&nbsp;color: #fff;
&nbsp;&nbsp;&nbsp;&nbsp;background: url(../../img/btn_left.gif) no-repeat left top;
&nbsp;&nbsp;&nbsp;&nbsp;text-decoration: none;
&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;p.btn a span {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;padding: 0 20px 0 15px;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display: block;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height: 35px;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background: url(../../img/btn_right.gif) no-repeat right top;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line-height: 35px;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cursor: pointer; /* for IE */
&nbsp;&nbsp;&nbsp;&nbsp;}
</pre>
					<p><span style="text-decoration: line-through;">最近は結構普通にinline-block使ってます。</span><br />
					floatで書きなおしました。</p>
					<h2>クロスフェードを実現するには</h2>
					<p>問題はここからですが<br />
					クロスフェードをさせるとなると、背景画像を2枚重ねていないとできません。<br />
					背景画像を入れ替えれば…CSS Spriteを使ってたらそういうわけにもいきません。</p>
					<p>元々あるボタンの下にフェード後のボタンを配置して<br />
					mouseover時に上のボタンをフェードアウトさせればうまくいきそうです。</p>
					<p>構造としては<br />
					- フェード後のボタン<br />
					- 元々あるボタン<br />
					を並列に並べて、<br />
					フェード後のボタンが元々あるボタンの下にくるようにする必要があるので<br />
					2つのボタンをグループ化して、<br />
					フェード後のボタンを絶対配置でグループの左上に配置します。</p>
					<p>具体的には下のHTMLのようになります。</p>
					<pre name="code" class="html">

&lt;span class=&quot;cfGroup&quot;&gt;&lt;!-- ボタンを重ねるのでグループ化する --&gt;
&nbsp;&nbsp;&lt;span class=&quot;cfGM&quot;&gt;&lt;!-- これが下に敷いておくボタン --&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;span class=&quot;cfGLeft&quot;&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;span class=&quot;cfGRight&quot;&gt;SUBMIT&lt;/span&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/span&gt;
&nbsp;&nbsp;&lt;/span&gt;
&nbsp;&nbsp;&lt;a href=&quot;#&quot;&gt;&lt;!-- こっちが元々あるボタン --&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;span&gt;SUBMIT&lt;/span&gt;
&nbsp;&nbsp;&lt;/a&gt;
&lt;/span&gt;
</pre>
					<h3>jQueryを使って構造を変える</h3>
					<p>さすがにこれは汚いので、jQueryで構造を変更しましょう。<br />
					グループを識別するためにidを割り当ててます。</p>
					<pre name="code" class="js">

$(&quot;a&quot;,&quot;p.btn&quot;).each(function(){
&nbsp;&nbsp;$(this).replaceWith(&quot;&lt;span id=&#039;cfG&quot;+i+&quot;&#039; class=&#039;cfGroup&#039;&gt;&lt;/span&gt;&quot;);
&nbsp;&nbsp;// 既存のボタンをグループと置き換える
&nbsp;&nbsp;$(&quot;span#cfG&quot;+i)
&nbsp;&nbsp;&nbsp;&nbsp;.append(&quot;&lt;span class=&#039;cfGM&#039;&gt;&lt;span class=&#039;cfGLeft&#039;&gt;&lt;span class=&#039;cfGRight&#039;&gt;&quot;+$(this).text()+&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&quot;)
&nbsp;&nbsp;&nbsp;&nbsp;.append($(this).clone());
&nbsp;&nbsp;&nbsp;&nbsp;// フェード後のボタンを追加したのち
&nbsp;&nbsp;&nbsp;&nbsp;// 既存のボタンをその後ろに追加する
});
</pre>
					<h3>CSSを追記する</h3>
					<p>さらにCSSを追記します。</p>
					<pre name="code" class="css">

p.btn span.cfGroup {
&nbsp;&nbsp;float: left;
&nbsp;&nbsp;position: relative;
}

&nbsp;&nbsp;p.btn span.cfGroup span.cfGM {
&nbsp;&nbsp;&nbsp;&nbsp;position: absolute;
&nbsp;&nbsp;&nbsp;&nbsp;top: 0;
&nbsp;&nbsp;&nbsp;&nbsp;left: 0;
&nbsp;&nbsp;&nbsp;&nbsp;z-index: 10;
&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;p.btn span.cfGroup span.cfGLeft {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float: left;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;padding-left: 5px;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color: #fff;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background: url(../../img/btn_left.gif) no-repeat left -35px;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text-decoration: none;
&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.btn span.cfGroup span.cfGLeft span.cfGRight {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;padding: 0 20px 0 15px;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display: block;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height: 35px;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background: url(../../img/btn_right.gif) no-repeat right -35px;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line-height: 35px;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
</pre>
					<p>さらにこのままだと、<br />
					既存のボタンとフェード後のボタンの重なりが逆になるので<br />
					z-indexを大きい数値にしておきます。<br />
					z-indexを使う場合は、position: relativeにする必要があります。</p>
					<pre name="code" class="css">

p.btn a {
&nbsp;&nbsp;float: left;
&nbsp;&nbsp;padding-left: 5px;
&nbsp;&nbsp;position: relative;
&nbsp;&nbsp;z-index: 100;
&nbsp;&nbsp;color: #fff;
&nbsp;&nbsp;background: url(../../img/btn_left.gif) no-repeat left top;
&nbsp;&nbsp;text-decoration: none;
}
</pre>
					<h3>上のボタンをフェードさせて実現する</h3>
					<p>ここまでくればあとは、<br />
					hover時に上に乗ってるボタンをフェードアウトさせるだけです。</p>
					<pre name="code" class="js">

$(&quot;a&quot;,&quot;p.btn&quot;).each(function(){
&nbsp;&nbsp;$(this).replaceWith(&quot;&lt;span id=&#039;cfG&quot;+i+&quot;&#039; class=&#039;cfGroup&#039;&gt;&lt;/span&gt;&quot;);
&nbsp;&nbsp;$(&quot;span#cfG&quot;+i)
&nbsp;&nbsp;&nbsp;&nbsp;.append(&quot;&lt;span class=&#039;cfGM&#039;&gt;&lt;span class=&#039;cfGLeft&#039;&gt;&lt;span class=&#039;cfGRight&#039;&gt;&quot;+$(this).text()+&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&quot;)
&nbsp;&nbsp;&nbsp;&nbsp;.append($(this).clone());

&nbsp;&nbsp;// ここから下がフェード
&nbsp;&nbsp;$(&quot;a&quot;,&quot;span#cfG&quot;+i).hover(function(){
&nbsp;&nbsp;&nbsp;&nbsp;$(this).fadeTo(&quot;normal&quot;,0);
&nbsp;&nbsp;},function(){
&nbsp;&nbsp;&nbsp;&nbsp;$(this).fadeTo(&quot;normal&quot;,1);
&nbsp;&nbsp;});
});
</pre>
					<h3>ポイント</h3>
					<p>フェードさせるときの注意がひとつだけあって<br />
					fadeOutにすると、最終的にdisplay: noneになるので<br />
					グループの幅と高さがなくなって、下にある要素が上に詰まります。<br />
					なので、ここではfadeToでOpacityのみを操作しています。</p>
					<p><a href="http://5509.me/sample/cross-fade-with-css-sprite/rev1.html">ここまでのサンプル</a></p>
					<h3>連続でホバーさせたときに動作が…</h3>
					<p>A要素にhoverするとfadeToが呼び出されて<br />
					フェードアニメーションが実行されますが連続でhoverさせると<br />
					アニメーションキューがたまっていって、ぴかぴかします。</p>
					<p>これを解決するにはfade実行時に<br />
					直前のアニメーションキューを削除すればいいので</p>
					<pre name="code" class="js">

// ここから下がフェード
$(&quot;a&quot;,&quot;span#cfG&quot;+i).hover(function(){
&nbsp;&nbsp;$(this).queue([]).fadeTo(&quot;normal&quot;,0);
},function(){
&nbsp;&nbsp;$(this).queue([]).fadeTo(&quot;normal&quot;,1);
});
</pre>
					<p>queue([])でアニメーションキューを空にすればぴかぴかしなくなります。</p>
					<p><a href="http://5509.me/sample/cross-fade-with-css-sprite/">完成サンプル<br />
					</a><a href="http://5509.me/sample/archive/cross-fade-with-css-sprite.zip">サンプルファイルのダウンロード</a></p>
					<h2>あ、、</h2>
					<p>このサンプルなら画像を2つに分ける必要はなかったですね…</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1225&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/cross-fade-with-rounded-corner-button/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jQueryを使ったスライド開閉メニューをCookieでコントロールする</title>
		<link>http://5509.me/log/control-slide-navigation-with-jquery-cookie</link>
		<comments>http://5509.me/log/control-slide-navigation-with-jquery-cookie#comments</comments>
		<pubDate>Wed, 20 May 2009 23:40:47 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[memo]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1196</guid>
		<description><![CDATA[					
					サンプル
					サンプルファイルのダウンロード
					ちょっと前に流行った？アコーディオンメニューの開閉状態を
					Cookieで保存する方法をメモをかねて紹介します。
					
	 [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/slidenav-with-cookie/"><img class="alignnone size-full wp-image-1204" title="jQueryを使った開閉メニューをCookieでコントロールする" src="http://5509.me/wp-content/uploads/2009/05/slidenav-with-cookie.gif" alt="jQueryを使った開閉メニューをCookieでコントロールする" width="192" height="153" /></a></p>
					<p><a href="http://5509.me/sample/slidenav-with-cookie/">サンプル</a><br />
					<a href="http://5509.me/sample/archive/slidenav-with-cookie.zip">サンプルファイルのダウンロード</a></p>
					<p>ちょっと前に流行った？アコーディオンメニューの開閉状態を<br />
					Cookieで保存する方法をメモをかねて紹介します。</p>
					<p><span id="more-1196"></span></p>
					<h2>必要なファイルを集める</h2>
					<p>面倒だと思うのでサンプルにまとめました。<br />
					サンプルファイルをダウンロードして新しいHTMLでJSファイルを読み込んでください。</p>
					<p><a href="http://5509.me/sample/archive/slidenav-with-cookie.zip">サンプルファイルのダウンロード</a></p>
					<h2>HTMLを用意する</h2>
					<h3>CSSファイルを読み込む</h3>
					<p>この記事でCSSの解説はしてません。。</p>
					<pre name="code" class="html">

&lt;link type=&quot;text/css&quot; rel=&quot;stylesheet&quot; href=&quot;css/style.css&quot; /&gt;
</pre>
					<h3>JSファイルを読み込む</h3>
					<pre name="code" class="html">

&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jquery.easing.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jquery.cookie.js&quot;&gt;&lt;/script&gt;
</pre>
					<h3>HTMLをマークアップする</h3>
					<pre name="code" class="html">

&lt;div id=&quot;sub&quot;&gt;
&nbsp;&nbsp;&lt;div class=&quot;section nav&quot;&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;h2 class=&quot;sub_nav_heading toggle&quot;&gt;A&lt;/h2&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;ul class=&quot;sub_nav&quot;&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;&quot;&gt;A-1&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;&quot;&gt;A-2&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;&quot;&gt;A-3&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;&quot;&gt;A-4&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;&quot;&gt;A-5&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;&quot;&gt;A-6&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;&quot;&gt;A-7&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ul&gt;
&nbsp;&nbsp;&lt;/div&gt;
&nbsp;&nbsp;&lt;!--//Section--&gt;

&nbsp;&nbsp;&lt;div class=&quot;section nav&quot;&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;h2 class=&quot;sub_nav_heading toggle&quot;&gt;B&lt;/h2&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;ul class=&quot;sub_nav&quot;&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;&quot;&gt;B-1&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;&quot;&gt;B-2&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;&quot;&gt;B-3&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;&quot;&gt;B-4&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;&quot;&gt;B-5&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;&quot;&gt;B-6&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;&quot;&gt;B-7&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ul&gt;
&nbsp;&nbsp;&lt;/div&gt;
&nbsp;&nbsp;&lt;!--//Section--&gt;
&lt;/div&gt;
&lt;!--//Sub--&gt;
</pre>
					<p>HTMLがちょっと気持ち悪いと思う人もいるかもしれませんが<br />
					今回はこんな感じでマークアップしてます。</p>
					<h2>JSを書く</h2>
					<h3>普通にアコーディオンメニューにする</h3>
					<p>今回は特にアコーディオン部分の記述にはふれませんが<br />
					以下の記述でアコーディオンになります。</p>
					<p>jQuery Easingプラグインを使ってちょっと動きを変えてます。<br />
					何気ないアコーディオンもこういう動きなら面白いかもしれないですね。<br />
					単純に鬱陶しいだけにもなり得ますけど…</p>
					<p>ちなみに、前回のエントリ<a href="http://5509.me/easingScroll">jQuery.easingscroll.js</a>はEasingプラグインを<br />
					含んでいるので併せて使うと楽しい動き(≠うざい動き)のサイトになりますね！</p>
					<pre name="code" class="js">

/*
* @ スライドナビゲーション
*/
$(&quot;ul.sub_nav&quot;,&quot;div#sub&quot;).each(function(i){
// 開閉ナビで使う変数定義
&nbsp;&nbsp;var me = $(this),
&nbsp;&nbsp;&nbsp;&nbsp;box = me.parent(), // 親要素のdiv.nav
&nbsp;&nbsp;&nbsp;&nbsp;heading = me.prev().append(&quot;&lt;span class=&#039;toggle&#039;&gt;&lt;/span&gt;&quot;),
&nbsp;&nbsp;&nbsp;&nbsp;// 兄要素のh2にspan.toggleを追加して変数に保存
&nbsp;&nbsp;&nbsp;&nbsp;toggle = $(&quot;span.toggle&quot;,heading);// Toggle

&nbsp;&nbsp;// 下層ナビとToggleボタンを隠す
&nbsp;&nbsp;me.hide();
&nbsp;&nbsp;toggle.hide();

&nbsp;&nbsp;// Toggleボタンの表示非表示
&nbsp;&nbsp;heading.hover(function(){
&nbsp;&nbsp;&nbsp;&nbsp;toggle.show();
&nbsp;&nbsp;},function(){
&nbsp;&nbsp;&nbsp;&nbsp;// h2.openedの場合はToggleを表示したままにする
&nbsp;&nbsp;&nbsp;&nbsp;if(!heading.hasClass(&quot;opened&quot;)) toggle.hide();
&nbsp;&nbsp;});

&nbsp;&nbsp;// Toggleクリック時の動作
&nbsp;&nbsp;toggle.click(function(){
&nbsp;&nbsp;&nbsp;&nbsp;heading.toggleClass(&quot;opened&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;if(!box.hasClass(&quot;opened&quot;)) box.addClass(&quot;opened&quot;);

&nbsp;&nbsp;&nbsp;&nbsp;// アニメーション設定
&nbsp;&nbsp;&nbsp;&nbsp;me.animate({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height: &quot;toggle&quot;
&nbsp;&nbsp;&nbsp;&nbsp;},{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;easing: &quot;easeOutBounce&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// jQuery Easingを使って開閉時に跳ねるようにしてみる
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;duration: 400,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;complete: function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!heading.hasClass(&quot;opened&quot;)) box.removeClass(&quot;opened&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;});
&nbsp;&nbsp;});
});
</pre>
					<h3>jQuery Cookieを使うのでちょっと紹介</h3>
					<p><a href="http://plugins.jquery.com/project/Cookie">jQuery.cookieプラグイン</a>を使ってます。<br />
					jQueryを使う場合はこれが一番わかりやすく、簡単にCookieを扱えます。</p>
					<p>いちおう説明しておくと</p>
					<pre name="code" class="js">

$.cookie(&quot;Cookieの名前&quot;, &quot;Cookieの値&quot;); // 保存
$.cookie(&quot;Cookieの名前&quot;); // 値の読み出し
</pre>
					<p>という具合で使えます。<br />
					保存時、第3引数でオプションを指定することで保存日数などを指定できます。</p>
					<pre name="code" class="js">

$.cookie(&quot;Cookieの名前&quot;, &quot;Cookieの値&quot; { expires: 7, path: &quot;/&quot;, domain: &quot;jquery.com&quot;, secure: true });
</pre>
					<p>また、値にnullを入れることでCookieを削除することができます。</p>
					<pre name="code" class="js">

$.cookie(&quot;Cookieの名前&quot;, null); // Cookieの削除
</pre>
					<h3>Cookieを使うタイミング</h3>
					<p>開閉状態を保存する場合Cookieを扱う箇所が3つあって</p>
					<ul>
					<li>Toggleをクリックしたとき(開けるとき) &#8211; Cookieを保存</li>
					<li>Toggleをクリックしたとき(閉じるとき) &#8211; Cookieを保存</li>
					<li>ページをロードしたとき &#8211; Cookieを読み出す</li>
					</ul>
					<p>この3つのタイミングでCookieを保存したり、読み出すことで開閉状態を保存できます。</p>
					<h3>Cookieの保存方法をどうするのか</h3>
					<p>全てのアコーディオンでCookieを保存するのはきれいなやり方ではないので<br />
					開いた状態を記憶するためにCookieには[i]という値を保存していくことにします。</p>
					<p>例えば、1つめのパネルが開いた場合、Cookieには[0]が保存されることになります。<br />
					さらに、2つめも開いた場合、[0][1]という値が保存されます。</p>
					<p>閉じる場合には逆で[i]を取り除くことで元の状態になります。<br />
					これらの値はパネルが開いた順に保存されていくので<br />
					3-2-4という順番で開いた場合、[2][1][3]といったように保存されますが<br />
					値の削除時にはreplace関数を使うので、この順番は特に問題ありません。</p>
					<p>ちなみに[]を使う理由はパネル数が10を超える場合に<br />
					0と1〜9の区別がつかなくなるのを防ぐためです。</p>
					<h3>とりあえずCookieを使って保存していく</h3>
					<p>まずはCookieの値を変数に保存しておきます。<br />
					これはページロードのタイミングで行います。</p>
					<pre name="code" class="js">

var cookie = ($.cookie(&quot;menu&quot;) ＆＆ $.cookie(&quot;menu&quot;)!=null) ? $.cookie(&quot;menu&quot;) : &quot;&quot;;
</pre>
					<p>Cookieの名前はmenuにしています。<br />
					Cookiに値がある場合はcookieに値を保存<br />
					それ以外の場合は空の値を渡しておきます。</p>
					<p>あとCookieに保存する・識別用の値を宣言しておきます。</p>
					<pre name="code" class="js">

// 開閉ナビで使う変数定義に追記する
var pos = &quot;[&quot;+i+&quot;]&quot;; // Cookieに保存する
</pre>
					<p>この i はeach関数でループ時に得られる引数を使います。<br />
					準備ができたらClick時に保存するように記述します。</p>
					<pre name="code" class="js">

if(!box.hasClass(&quot;opened&quot;)){ // 開くとき
&nbsp;&nbsp;box.addClass(&quot;opened&quot;);
&nbsp;&nbsp;cookie += pos; // このパネルの識別用の値をCookieの値に追記
&nbsp;&nbsp;$.cookie(&quot;menu&quot;,cookie); // Cookieの値をCookie[&quot;menu&quot;]に保存する
}else{ // 閉じるとき
&nbsp;&nbsp;cookie = cookie.replace(pos,&quot;&quot;); // このパネルの識別用の値をCookieの値から削除する
&nbsp;&nbsp;$.cookie(&quot;menu&quot;,cookie.length==0 ? null : cookie);
&nbsp;&nbsp;// Cookieの値をCookie[&quot;menu&quot;]に保存する
&nbsp;&nbsp;// このとき値が空になったらCookie[&quot;menu&quot;]を削除する
}
</pre>
					<p>あとは初期表示パネルを最初に保存したCookieの値から決めます。<br />
					cookie.match(new RegExp(pos))の部分で判別してます。</p>
					<pre name="code" class="js">

// クッキーに[i]がある場合はナビを表示する
if($.cookie(&quot;menu&quot;)==null
|| cookie.indexOf(pos)==-1){
&nbsp;&nbsp;me.hide();
&nbsp;&nbsp;toggle.hide();
}else{
&nbsp;&nbsp;box.addClass(&quot;opened&quot;);
&nbsp;&nbsp;heading.addClass(&quot;opened&quot;);
}
</pre>
					<p>これらのソースコードを追記した完成版が以下になります。</p>
					<pre name="code" class="js">

/*
* @ スライドナビゲーション
* @ Cookieを使って開閉をコントロール
*/
// ナビゲーションで使うCookieを読みこんでおく
var cookie = ($.cookie(&quot;menu&quot;) ＆＆ $.cookie(&quot;menu&quot;)!=null) ? $.cookie(&quot;menu&quot;) : &quot;&quot;;
$(&quot;ul.sub_nav&quot;,&quot;div#sub&quot;).each(function(i){
&nbsp;&nbsp;// 開閉ナビで使う変数定義
&nbsp;&nbsp;var me = $(this),
&nbsp;&nbsp;&nbsp;&nbsp;box = me.parent(), // 親要素のdiv.nav
&nbsp;&nbsp;&nbsp;&nbsp;heading = me.prev().append(&quot;&quot;),
&nbsp;&nbsp;&nbsp;&nbsp;// 兄要素のh2にspan.toggleを追加して変数に保存
&nbsp;&nbsp;&nbsp;&nbsp;toggle = $(&quot;span.toggle&quot;,heading), // Toggle
&nbsp;&nbsp;&nbsp;&nbsp;pos = &quot;[&quot;+i+&quot;]&quot;; // Cookieに保存する

&nbsp;&nbsp;// クッキーに[i]がある場合はナビを表示する
&nbsp;&nbsp;if($.cookie(&quot;menu&quot;)==null
&nbsp;&nbsp;|| cookie.indexOf(pos)==-1){
&nbsp;&nbsp;&nbsp;&nbsp;me.hide();
&nbsp;&nbsp;&nbsp;&nbsp;toggle.hide();
&nbsp;&nbsp;}else{
&nbsp;&nbsp;&nbsp;&nbsp;box.addClass(&quot;opened&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;heading.addClass(&quot;opened&quot;);
&nbsp;&nbsp;}

&nbsp;&nbsp;// Toggleボタンの表示非表示
&nbsp;&nbsp;heading.hover(function(){
&nbsp;&nbsp;&nbsp;&nbsp;toggle.show();
&nbsp;&nbsp;},function(){
&nbsp;&nbsp;&nbsp;&nbsp;// h2.openedの場合はToggleを表示したままにする
&nbsp;&nbsp;&nbsp;&nbsp;if(!heading.hasClass(&quot;opened&quot;)) toggle.hide();
&nbsp;&nbsp;});

&nbsp;&nbsp;// Toggleクリック時の動作
&nbsp;&nbsp;toggle.click(function(){
&nbsp;&nbsp;&nbsp;&nbsp;heading.toggleClass(&quot;opened&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;if(!box.hasClass(&quot;opened&quot;)){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;box.addClass(&quot;opened&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cookie += pos;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.cookie(&quot;menu&quot;,cookie);
&nbsp;&nbsp;&nbsp;&nbsp;}else{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cookie = cookie.replace(pos,&quot;&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.cookie(&quot;menu&quot;,cookie.length==0 ? null : cookie);
&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;// アニメーション設定
&nbsp;&nbsp;&nbsp;&nbsp;me.animate({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height: &quot;toggle&quot;
&nbsp;&nbsp;&nbsp;&nbsp;},{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;easing: &quot;easeOutBounce&quot;, // jQuery Easing
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;duration: 400,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;complete: function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!heading.hasClass(&quot;opened&quot;)) box.removeClass(&quot;opened&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;});
&nbsp;&nbsp;});
});
</pre>
					<p><a href="http://5509.me/sample/slidenav-with-cookie/">完成サンプルを見る</a></p>
					<h2>というわけで</h2>
					<p>肝心のCookieはかなり簡単に使えるということが伝わったでしょうか。<br />
					Cookieの保存方法は色々考えられるので試してみると楽しいです。</p>
					<p><a title="jQueryとjquery.cookie.jsを使って開閉を保持するメニューを作ってみる" href="http://blog.caraldo.net/2009/03/jqcookiemenu.php">jQueryとjquery.cookie.jsを使って開閉を保持するメニューを作ってみる &#8211; caraldo.net</a><br />
					<a href="http://blog.caraldo.net/2009/03/newjqqookiemenu.php">jQueryを使用したCookie開閉保持メニューをよりjQueryっぽく書き直す &#8211; caraldo.net</a></p>
					<p>同じHTMLで2通りのやり方とか。後の記事の方がCookieがすっきりします。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1196&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/control-slide-navigation-with-jquery-cookie/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>ひと味違ったページ内スクロールをjQuery Easingプラグインで実装する jQuery.easing.scroll.js</title>
		<link>http://5509.me/log/page-scrolling-with-jqueryeasing</link>
		<comments>http://5509.me/log/page-scrolling-with-jqueryeasing#comments</comments>
		<pubDate>Mon, 18 May 2009 01:10:00 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://moto-mono.net/2009/05/18/page-scrolling-with-jqueryeasing.html</guid>
		<description><![CDATA[					
					サンプルを見る (IE6では確認できません
					jQueryを使うとかなり簡単にページ内スクロールが実装できるのですが、さらにjQuery Easingプラグインと合わせるとなかなか面白い動き [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/easingScroll/"><img class="alignnone size-full wp-image-1130" title="EasingScrollイメージ" src="http://5509.me/wp-content/uploads/2009/05/easingscroll.gif" alt="EasingScrollイメージ" width="256" height="141" /></a></p>
					<p><a href="http://5509.me/sample/easingScroll/">サンプルを見る (IE6では確認できません</a></p>
					<p>jQueryを使うとかなり簡単にページ内スクロールが実装できるのですが、さらに<a href="http://gsgd.co.uk/sandbox/jquery/easing/">jQuery Easingプラグイン</a>と合わせるとなかなか面白い動きができたりします。</p>
					<p>というわけで誰でも簡単に導入できるようにプラグインにしました。以前に<a href="http://5509.me/2008/12/25/slidescrolljs.html">slideScroll.js</a>(<a href="http://5509.me/2008/12/23/jqueryslidescrolljs.html">jQueryプラグイン版</a>）というページ内スクロールの記事を書きましたが、悲しいことに断然こちらのほうがおすすめです。動きが滑らか…そして自分の好きな動きから選べます。</p>
					<p>今回は<a href="#explanation">ソースの解説</a>もしてるので、興味のある人は見てみてください。</p>
					<p>ページ内スクロールプラグインなのに、7KBもあるのはEasingプラグインの容量が5KBだから…これを機に他のアニメーション部分でもEasingプラグインも使うと一石二鳥になったりしますのでぜひ。</p>
					<p>サンプルのセレクトボックスでEasingを選んで右の入力欄にDurationを入れて確認できます。<br />
					そもそもEasingが何かわからない人も、とりあえず左のセレクトボックスの値を変えて、右のテキストボックスには800あたりを入力して、中央のナビゲーションリンクをクリックしてみてください。</p>
					<p>おすすめをちょっとあげてみます。（右の数字はDuration）</p>
					<ul>
					<li>easeOutBounce, 800</li>
					<li>easeInOutExpo, 600</li>
					<li>easeOutElastic, 800</li>
					</ul>
					<p>具体的な動きの違いは<a href="http://semooh.jp/jquery/">jQuery日本語リファレンス</a>の<a href="http://semooh.jp/jquery/cont/doc/easing/">Easingページ</a>で確認できます。</p>
					<p><span id="more-1165"></span></p>
					<h2>トピックス</h2>
					<ul>
					<li><a href="#download">ダウンロード</a></li>
					<li><a href="#install">導入方法</a></li>
					<li><a href="#setting">設定</a></li>
					<li><a title="jQuery.seletable.jsサンプルへのリンク" href="http://5509.me/sample/easingScroll/">サンプル</a></li>
					<li><a href="#method">仕様など</a></li>
					<li><a href="#browser">動作環境</a></li>
					<li><a href="#explanation">ソース解説</a></li>
					</ul>
					<h2 id="download">ダウンロード</h2>
					<dl>
					<dt>JSのみ</dt>
					<dd><a href="http://5509.me/sample/easingScroll/js/jquery.easingscroll.js">jquery.easingscroll.js</a>(7KB)</dd>
					<dt>サンプルファイル</dt>
					<dd><a href="http://5509.me/sample/archive/easingScroll.zip">easingScroll.zip</a>(26KB)</dd>
					</dl>
					<h2 id="install">導入方法</h2>
					<pre name="code" class="html">

&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.easingscroll.js&quot;&gt;&lt;/script&gt;
</pre>
					<p>HEAD内でスクリプトファイルを読み込んで、そのあと</p>
					<pre name="code" class="html">

&lt;script type=&quot;text/javascript&quot;&gt;
$(function(){
&nbsp;&nbsp;$(&quot;a[href*=&#039;#&#039;]&quot;).easingScroll();
});
&lt;/script&gt;
</pre>
					<p>というように実行します。</p>
					<h2 id="setting">設定</h2>
					<p>実行時のプロパティではEasingとDurationが設定できます。また<a href="http://gsgd.co.uk/sandbox/jquery/easing/">jQuery Easingプラグイン</a>を内包しているので、<a href="#easingPp">さまざまなEasing</a>を利用できます。</p>
					<p>Easingは動き、Durationはアニメーションが始まって終わるまでの時間（ミリセカンド==msec）です。durationには&#8221;slow&#8221;(610msec), &#8220;normal&#8221;(410msec), &#8220;fast&#8221;(210msec)も指定できます。</p>
					<pre name="code" class="js">

$(&quot;a[href=&#039;#&#039;]&quot;).easingScroll({
&nbsp;&nbsp;easing: &quot;easeInQuad&quot;,
&nbsp;&nbsp;duration: 700
});
</pre>
					<h3 id="easingPp">指定できるEasing</h3>
					<p>linear, swing, jswing<br />
					easeInQuad, easeOutQuad, easeInOutQuad<br />
					easeInCubic, easeOutCubic, easeInOutCubic<br />
					easeInQuart, easeOutQuart, easeInOutQuart<br />
					easeInSine, easeOutSine, easeInOutSine<br />
					easeInExpo, easeOutExpo, easeInOutExpo<br />
					easeInCirc, easeOutCirc, easeInOutCirc<br />
					easeInElastic, easeOutElastic, easeInOutElastic<br />
					easeInBack, easeOutBack, easeInOutBack<br />
					easeInBounce, easeOutBounce, easeInOutBounce</p>
					<p>どういう動きかは<a href="http://semooh.jp/jquery/cont/doc/easing/">jQuery日本語リファレンスEasingページ</a>か<a href="http://5509.me/sample/easingScroll/">サンプル</a>で確認できます。</p>
					<p>easeIn~は始まりに~のエフェクトが入り、easeOut~はその逆で終わりにエフェクトがかかります。easeInBounceなら始まりに跳ねて、easeOutBounceは終わりに跳ねます。easeInOutBounceは文字通り両方に跳ねます。</p>
					<h2 id="method">仕様など</h2>
					<ul>
					<li>アニメーション時にドキュメントをクリックするとアニメーションが止まります。</li>
					<li>jQuery1.3.xから後方互換モードに正式に非対応になったため、後方互換モードには対応してません。</li>
					</ul>
					<h2 id="browser">動作環境</h2>
					<ul>
					<li>IE6（後方互換モードは未確認）（サンプルは確認できませんが動作はします）</li>
					<li>IE7</li>
					<li>Firefox3</li>
					<li>Opera9.5</li>
					<li>Safari3</li>
					<li>Chrome1.0</li>
					</ul>
					<h2 id="explanation">ソース解説</h2>
					<p>jQueryでページ内スクロールを実装する事自体はとても簡単で、HREF属性に&#8221;#&#8221;を持ったA要素をクリック</p>
					<pre name="code" class="js">

$(&quot;a[href*=&#039;#&#039;]&quot;).click(function(){});
</pre>
					<p>したときにまず</p>
					<pre name="code" class="js">

var c = $(this.hash).offset();
</pre>
					<p>で、ドキュメント内$(&#8220;#ID&#8221;)のOffsetを取得して、その後は単純にanimate関数を使って</p>
					<pre name="code" class="js">

$(&quot;html,body&quot;).animate({
&nbsp;&nbsp;scrollTop: c.top,
&nbsp;&nbsp;scrollLeft: c.left
},{
&nbsp;&nbsp;easing: &quot;linear&quot;,
&nbsp;&nbsp;duration: 400
});
</pre>
					<p>ドキュメントの見えている部分を動かしているだけです。jQueryのanimate関数を使えばブラウザの高さ(幅)や現在位置の取得などが必要なく、目的位置をscrollTop(scrollLeft)で指定するだけです。</p>
					<p>ただ、boxModelによって実装が違うみたいでたとえば、後方互換モードは&#8221;body&#8221;、標準準拠モードは&#8221;html&#8221;の指定にするようです。なので一般的には&#8221;html,body&#8221;をまとめて指定することで解決できそうですが、Operaは&#8221;html,body&#8221;の両方指定にすると、不具合が出るので結局</p>
					<pre name="code" class="js">

var t = $.support.boxModel ? navigator.appName.match(/Opera/) ? &quot;html&quot; : &quot;html,body&quot; : &quot;body&quot;;
</pre>
					<p>というように、boxModelで分けて、さらにOperaの場合だけは&#8221;html&#8221;のみの指定としています。</p>
					<p>クリック判定の箇所などはドキュメント内に&#8221;#ID&#8221;を持った要素が存在しているか等を一度each関数でループさせてその中のifで判断して、残ったものだけにclick関数でイベント登録しています。</p>
					<p>さらにそのままだと連続して&#8221;#ID&#8221;を含むA要素をクリックしたときに、アニメーションキューがたまっていってラグが発生するので、A要素クリック時には</p>
					<pre name="code" class="js">

$(&quot;html,body&quot;).queue([]).stop();
</pre>
					<p>でアニメーションキューを削除して、現在のアニメーションをストップさせてます。fadeIn(Out)などでもキューはたまっていくので動きが鬱陶しい感じになった場合はfadeを登録した要素に</p>
					<pre name="code" class="js">

$(elm).queue([]).stop();
</pre>
					<p>してみるとすっきりするかもしれません。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1165&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/page-scrolling-with-jqueryeasing/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>CSS Nite in OSAKA, Vol.14に参加させて頂きました。</title>
		<link>http://5509.me/log/css-nite-in-osaka-14-over</link>
		<comments>http://5509.me/log/css-nite-in-osaka-14-over#comments</comments>
		<pubDate>Mon, 20 Apr 2009 09:16:36 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[Diary]]></category>
		<category><![CDATA[note]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1109</guid>
		<description><![CDATA[					
					もう先週の火曜日になるのですが、CSS Nite in OSAKA, vol.14に参加させていただきました。
					そうです、この記事、今更感がいなめません…WordPressの記事を書く前に [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://cssnite.jp/archives/post_1492.html"><img src="http://pencil-jp.net/weblog/data/090316/icon_cssnite_osaka14.jpg" alt="CSS Nite in OSAKA, Vol.14のバナー" /></a></p>
					<p>もう先週の火曜日になるのですが、CSS Nite in OSAKA, vol.14に参加させていただきました。<br />
					そうです、この記事、今更感がいなめません…WordPressの記事を書く前にこっちを書けよという声が…</p>
					<p>言い訳としては、WordPressの記事、あれは2日くらい前からの予約投稿だったんですね。<br />
					あ、こっちを予約しとけよ、という話ですかｗ</p>
					<p>とにかくスタッフの皆様、僕のセッションを見てくださった方、お疲れ様でした・ありがとうございました！<br />
					反省する点もいろいろとありましたが、非常にいい機会になりました。なにより楽しかったです。</p>
					<p>淡々と話をしているように見えたかもしれませんが、僕の中では色々な盛り上がりなどがあったんですｗ<br />
					その後の懇親会では印象が違いますね、と言われたりもしました…まったくそのとおりです笑</p>
					<p><a href="http://cssnite.jp/archives/post_1492.html">CSS Niteのフォローアップ記事</a>からも見れますが、当日のスライドのリンクを残しておきます。</p>
					<ul>
					<li><a href="http://5509.me/cssnite14/">jQueryプラグインを利用してユーザーフレンドリーなフォームを設計しよう</a></li>
					</ul>
					<p>ついでにjQuery.validation.jsの記事も…</p>
					<ul>
					<li><a href="http://5509.me/2008/08/22/realtimeformvalidation.html">jQuery.validation.js</a></li>
					</ul>
					<img src="http://5509.me/?ak_action=api_record_view&id=1109&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/css-nite-in-osaka-14-over/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery.validation.jsのアップデート</title>
		<link>http://5509.me/log/jqueryvalidationjs-updated4</link>
		<comments>http://5509.me/log/jqueryvalidationjs-updated4#comments</comments>
		<pubDate>Mon, 20 Apr 2009 05:26:53 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[note]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1104</guid>
		<description><![CDATA[					jQuery.validation.js
					一部対応が遅くなってしまいましたが、修正・更新をしました。
					前回まではjQuery1.2.6を同梱してましたが、今回から1.3.2を同梱してます。
 [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/2008/08/22/realtimeformvalidation.html">jQuery.validation.js</a></p>
					<p>一部対応が遅くなってしまいましたが、修正・更新をしました。<br />
					前回まではjQuery1.2.6を同梱してましたが、今回から1.3.2を同梱してます。<br />
					主な修正・更新箇所は以下になります。</p>
					<ul>
					<li>AjaxZip2の指定方法を間違っていたので修正しました。</li>
					<li>Dialogを使わずにSUBMITボタンをDISABLEDにするオプションを追加しました。</li>
					<li>Safariで必須チェックが一番上にきていなかったので修正しました。</li>
					<li>Webkit系でdocumentを一度クリックするまで固まる不具合がありましたが、jQueryを1.3以降に更新することで解消されます。</li>
					</ul>
					<img src="http://5509.me/?ak_action=api_record_view&id=1104&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jqueryvalidationjs-updated4/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CMSとしてのWordPressでサイト構築をするときに便利な13のプラグイン</title>
		<link>http://5509.me/log/using-wordpress-as-cms</link>
		<comments>http://5509.me/log/using-wordpress-as-cms#comments</comments>
		<pubDate>Wed, 15 Apr 2009 21:23:35 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[まとめ]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1018</guid>
		<description><![CDATA[					MTをサイト構築に採用するケースは非常に多いと思いますが、WordPressをサイト構築に採用するケースは少ないんじゃないでしょうか？
					確かにWordPress単体ではCMSとしてはちょっと足りない機 [...]]]></description>
			<content:encoded><![CDATA[					<p>MTをサイト構築に採用するケースは非常に多いと思いますが、WordPressをサイト構築に採用するケースは少ないんじゃないでしょうか？</p>
					<p>確かにWordPress単体ではCMSとしてはちょっと足りない機能が多いです。そこでWordPressをブログではなくCMSとしてサイトを構築をするときに便利なプラグインを紹介します。（というかただの個人的なまとめです。）</p>
					<p><span id="more-1018"></span></p>
					<h3><a href="http://www.tinybeans.net/blog/download/wp-plugin/cfg-utility-100.html">Custom Field GUI Utility</a></h3>
					<p><a href="http://www.tinybeans.net/blog/download/wp-plugin/cfg-utility-100.html"><img class="alignnone size-full wp-image-1060" title="Custom Field GUI Utility" src="http://5509.me/wp-content/uploads/2009/04/uw_03.gif" alt="Custom Field GUI Utilityキャプチャ" width="450" height="207" /></a></p>
					<p>カスタムフィールドを便利に使うプラグイン。</p>
					<p>これはかなりおすすめというかCMSとして使う場合は必須と言えるくらい便利。<br />
					MTにはカスタムフィールドという便利なものがあります。<br />
					WordPressにも一応あるにはあるんですがこれが使いにくい…<br />
					そんな不満を解決してくれるプラグイン。</p>
					<h3><a href="http://hello.lumiere-couleur.com/light_formatter/">Light Formatter</a></h3>
					<p><a href="http://hello.lumiere-couleur.com/light_formatter/"><img class="alignnone size-full wp-image-1064" title="Light Formatter" src="http://5509.me/wp-content/uploads/2009/04/uw_04.gif" alt="Light Formatter" width="450" height="207" /></a></p>
					<p>テーブルをPukiWiki記法のように書くことができるようになるプラグイン。<br />
					会社概要などの簡単なテーブルを使うときに便利。</p>
					<h3><a href="http://wordpress.org/extend/plugins/duplicate-post/">Duplicate-Post</a></h3>
					<p><a href="http://wordpress.org/extend/plugins/duplicate-post/"><img class="alignnone size-full wp-image-1073" title="Duplicate-Post" src="http://5509.me/wp-content/uploads/2009/04/uw_111.gif" alt="Duplicate-Post" width="450" height="207" /></a></p>
					<p>記事やページのコピーを作成するプラグイン。<br />
					同じ形式の記事やページを書くときに。</p>
					<h3><a href="http://www.laptoptips.ca/projects/tinymce-advanced/">TinyMCE Advanced</a></h3>
					<p><a href="http://www.laptoptips.ca/projects/tinymce-advanced/"><img class="alignnone size-full wp-image-1074" title="TinyMCE Advanced" src="http://5509.me/wp-content/uploads/2009/04/uw_12.gif" alt="TinyMCE Advanced" width="450" height="207" /></a></p>
					<p>記事（ページ）を書く時のエディタ（TinyMCE）をカスタマイズするプラグイン。<br />
					サイト更新に必要な項目だけを表示しておけば、きっとクライアントも更新しやすくなります。</p>
					<h3><a href="http://wp.uberdose.com/2007/03/24/all-in-one-seo-pack/">All in One SEO Pack</a></h3>
					<p><a href="http://wp.uberdose.com/2007/03/24/all-in-one-seo-pack/"><img class="alignnone size-full wp-image-1065" title="All in One SEO Pack" src="http://5509.me/wp-content/uploads/2009/04/uw_05.gif" alt="All in One SEO Packキャプチャ" width="450" height="207" /></a></p>
					<p>これなしにはWordPressが始まらないAll in One SEO Pack。<br />
					タイトル、各メタなどを最適化します。</p>
					<h3><a href="http://urbangiraffe.com/plugins/redirection/">Redirection</a></h3>
					<p><a href="http://urbangiraffe.com/plugins/redirection/"><img class="alignnone size-full wp-image-1054" title="Redirection" src="http://5509.me/wp-content/uploads/2009/04/uw_01.gif" alt="Redirectionキャプチャ" width="450" height="207" /></a></p>
					<p>指定したURIへのアクセスを任意のURIにリダイレクトするプラグイン。<br />
					サイトをリニューアルした際などに、ディレクトリ構成と一緒にURIが変わってしまうことがありますよね？<br />
					そういう場合に便利です。</p>
					<h3><a href="http://wordpress.org/extend/plugins/nice-trailingslashit/">Nice Trailingslashit</a></h3>
					<p><a href="http://wordpress.org/extend/plugins/nice-trailingslashit/"><img class="alignnone size-full wp-image-1061" title="Nice Trailingslashit" src="http://5509.me/wp-content/uploads/2009/04/uw_021.gif" alt="Nice Trailingslashitキャプチャ" width="450" height="207" /></a></p>
					<p>WordPressではページURIはデフォルトで http://5509.me/about  というようになるのですが<br />
					末尾にスラッシュを付加するプラグイン。スラッシュがないと気持ち悪いという人向け。</p>
					<h3><a href="http://wordpress.org/extend/plugins/stats/">WordPress.com Stats</a></h3>
					<p><a href="http://wordpress.org/extend/plugins/stats/"><img class="alignnone size-full wp-image-1067" title="WordPress.com Stats" src="http://5509.me/wp-content/uploads/2009/04/uw_06.gif" alt="WordPress.com Stats" width="450" height="207" /></a></p>
					<p>アクセス解析はGoogle Analyticsを使っていますが<br />
					Statsを使えば管理画面内に解析結果を表示することができます。</p>
					<p class="note">追記：StatsはGAとは別のアクセス解析です。ややこしくしてしまってすいません。。</p>
					<h3><a href="http://ocaoimh.ie/wp-super-cache/">WP Super Cache</a></h3>
					<p><a href="http://ocaoimh.ie/wp-super-cache/"><img class="alignnone size-full wp-image-1068" title="WP Super Cache" src="http://5509.me/wp-content/uploads/2009/04/uw_07.gif" alt="WP Super Cache" width="450" height="207" /></a></p>
					<p>全てのページをキャッシュ（静的HTML）としてサーバに保存しておき<br />
					アクセス時のレスポンス向上、サーバへの負荷を軽減するプラグイン。</p>
					<h3><a href="http://sw-guide.de/wordpress/plugins/maintenance-mode/">Maintenance Mode Plugin</a></h3>
					<p><a href="http://sw-guide.de/wordpress/plugins/maintenance-mode/"><img class="alignnone size-full wp-image-1071" title="Maintenance Mode" src="http://5509.me/wp-content/uploads/2009/04/uw_10.gif" alt="Maintenance Mode" width="450" height="207" /></a></p>
					<p>メンテナンス中を表示するプラグイン。<br />
					ログインしている場合は表示されずにサイトの確認ができます。</p>
					<h3><a href="http://www.dagondesign.com/articles/sitemap-generator-plugin-for-wordpress/">Sitemap Generator Plugin</a></h3>
					<p><a href="http://www.dagondesign.com/articles/sitemap-generator-plugin-for-wordpress/"><img class="alignnone size-full wp-image-1069" title="Dagon Design Sitemap Generator" src="http://5509.me/wp-content/uploads/2009/04/uw_08.gif" alt="Dagon Design Sitemap Generator" width="450" height="207" /></a></p>
					<p>投稿記事やページからサイトマップページを生成するプラグイン。</p>
					<h3><a href="http://www.arnebrachhold.de/2005/06/05/google-sitemaps-generator-v2-final">Google Sitemap Generator</a></h3>
					<p><a href="http://www.arnebrachhold.de/2005/06/05/google-sitemaps-generator-v2-final"><img class="alignnone size-full wp-image-1070" title="Google Sitemap Generator" src="http://5509.me/wp-content/uploads/2009/04/uw_09.gif" alt="Google Sitemap Generator" width="450" height="207" /></a></p>
					<p>こちらはGoogle Webmaster Centralなどを利用する際に必要なsitemap.xmlを生成するプラグイン。</p>
					<h3><a href="http://www.ilfilosofo.com/blog/wp-db-backup">WP-DB-Backup</a></h3>
					<p><a href="http://www.ilfilosofo.com/blog/wp-db-backup"><img class="alignnone size-full wp-image-1075" title="WP-DB-Backup" src="http://5509.me/wp-content/uploads/2009/04/uw_13.gif" alt="WP-DB-Backup" width="450" height="207" /></a></p>
					<p>最後は記事などのバックアップを取るプラグインです。<br />
					定期的にバックアップを指定メールアドレスに送ったりできます。</p>
					<p>他にも外せないプラグインなどあれば教えてください <img src='http://5509.me/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1018&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/using-wordpress-as-cms/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>シンプルなインターフェースで実装するHTMLのスライド simpleSlide.js</title>
		<link>http://5509.me/log/simpleslidejs</link>
		<comments>http://5509.me/log/simpleslidejs#comments</comments>
		<pubDate>Tue, 14 Apr 2009 10:00:07 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=1030</guid>
		<description><![CDATA[					
					simpleSlideを使えば誰でも簡単にHTMLスライドを導入できます。
					ファイルをダウンロードする
					
					simpleSlide.zip(23KB)
					
			 [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/simpleslide/"><img class="alignnone size-full wp-image-1032" title="simpleslide" src="http://5509.me/wp-content/uploads/2009/04/simpleslide.gif" alt="simpleslide" width="216" height="150" /></a></p>
					<p>simpleSlideを使えば誰でも簡単にHTMLスライドを導入できます。</p>
					<h2>ファイルをダウンロードする</h2>
					<ul>
					<li><a href="http://5509.me/sample/archive/simpleslide.zip">simpleSlide.zip(23KB)</a></li>
					</ul>
					<h2>要素をマークアップする</h2>
					<p>simpleSlideではマークアップに決まりがありますが非常に単純です。</p>
					<h3>ページを分ける</h3>
					<p>1つのdiv.sectionが1つのスライドページに相当します。</p>
					<pre name="code" class="html">

&lt;div class=&quot;section&quot;&gt;
&lt;/div&gt;
</pre>
					<h3>ページにタイトルを付ける</h3>
					<p>スライドページには必ずひとつのタイトルが必要です。<br />
					div.section直下の子要素はHN要素にします。</p>
					<pre name="code" class="html">

&lt;div class=&quot;section&quot;&gt;
&nbsp;&nbsp;&lt;h2&gt;これがタイトルになる&lt;/h2&gt;
&lt;/div&gt;
</pre>
					<p class="note">HN要素じゃなくてもいいんですが<br />
					とりあえずdiv.section &gt; * のテキストがタイトルとして扱われます。</p>
					<p>あとは適当に要素を入れていきます。<br />
					blockquoteとかpreとかその辺のスタイルは指定してないので<br />
					使う場合はCSSに追加してください。</p>
					<pre name="code" class="html">

&lt;div class=&quot;section&quot;&gt;
&nbsp;&nbsp;&lt;h2&gt;これがタイトルになる&lt;/h2&gt;
&nbsp;&nbsp;&lt;p&gt;テキストテキスト&lt;/p&gt;
&nbsp;&nbsp;&lt;ul&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;リストリスト&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;リストリスト&lt;/li&gt;
&nbsp;&nbsp;&lt;/ul&gt;
&lt;/div&gt;
</pre>
					<h2>必要なファイルを読み込む</h2>
					<pre name="code" class="html">

&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/simpleslide.css&quot; /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/simpleslide.js&quot;&gt;&lt;/script&gt;
</pre>
					<h2>だけです。</h2>
					<p><a href="http://5509.me/sample/simpleslide/">こんな感じになります。</a></p>
					<h2>操作方法など</h2>
					<p>これまた簡単です。<br />
					ドキュメント上をクリックするとスライドを進めたり戻したりできます。<br />
					また矢印キーやスワイプでも操作できます。</p>
					<ul>
					<li> クリックはドキュメントの右半分なら進む、左なら戻る。</li>
					<li>矢印キーは↑・←は戻る、→・↓は進む。</li>
					<li>Macの場合は上スワイプは戻る、下スワイプは進む。</li>
					<li>メニューをクリックするとタイトル一覧が表示されて好きなスライドに移動できます。</li>
					<li>Back To Titleからいつでもタイトルスライドに戻れます。</li>
					</ul>
					<p>細かいところでは</p>
					<ul>
					<li>タイトルスライドは #slide-0 で数字部分が増えていきます。</li>
					<li>#slide-X をURI末尾に付けて呼び出すと対象のスライドで開けます。</li>
					<li>#slide-X の Xは(下部に表示されているスライドページナンバー -1)になります。</li>
					<li>タイトルはスライドのタイトルを付加したものに書き換えられます。</li>
					</ul>
					<h2>対応ブラウザ</h2>
					<p>IEには対応してません。。。<br />
					CSSのround-borderプロパティを使ってるので正式な対応ブラウザは以下だけです。</p>
					<ul>
					<li>Firefox3</li>
					<li>Safari3</li>
					</ul>
					<img src="http://5509.me/?ak_action=api_record_view&id=1030&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/simpleslidejs/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CSS Nite in OSAKA, Vol.14に出演させて頂くことになりました</title>
		<link>http://5509.me/log/css-nite-osaka-14</link>
		<comments>http://5509.me/log/css-nite-osaka-14#comments</comments>
		<pubDate>Fri, 20 Mar 2009 03:43:32 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[Diary]]></category>
		<category><![CDATA[note]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=994</guid>
		<description><![CDATA[					
					自分でも実感が湧かないのですが、、、
					CSS Nite in OSAKAに出演させていただくことになりました。
					（先月から決まっていたのですけれど報告が遅れてしまいました。）
	 [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://cssnite.jp/osaka/vol14/"><img src="http://pencil-jp.net/weblog/data/090316/icon_cssnite_osaka14.jpg" alt="CSS Nite in OSAKA, Vol.14のバナー" /></a></p>
					<p>自分でも実感が湧かないのですが、、、<br />
					CSS Nite in OSAKAに出演させていただくことになりました。<br />
					（先月から決まっていたのですけれど報告が遅れてしまいました。）</p>
					<p>予定している内容は<br />
					<strong> 「jQueryプラグインを使って使いやすいフォームを設計しよう」</strong>です。</p>
					<p>jQueryプラグインと言ってますが<br />
					一般的に使いやすいフォームを作るためのマークアップから<br />
					プラグインの使い方までを紹介できればと思っています。<strong><br />
					</strong></p>
					<p>ちなみに人前で喋る、とかそういった類いのことをほとんどしたことがなくて<br />
					すでにガチガチに緊張してます…</p>
					<p>そういえば結婚式後にあった親族会食の挨拶で盛大に噛んだなぁ…<br />
					一度噛むとその後はもう噛みの連鎖でそれはもうすごいことに…笑</p>
					<p><strong>落ち着いてゆっくり喋り</strong>、というアドバイスを妻からもらいました。<br />
					まさにその通り…いや分かってはいるんやけど興奮すると。。</p>
					<p>こんな滑舌の悪い僕ですが、よければ応援にきてください:D</p>
					<div class="note">
					<p><strong>CSS Nite in OSAKA, Vol. 14</strong><br />
					4月14日（火）、19:00-20:30、アップルストア心斎橋2F<br />
					<a href="http://cssnite.jp/osaka/vol14/">http://cssnite.jp/osaka/vol14/</a></p>
					<p>参加表明はmixiコミュニティから：<br />
					<a href="http://mixi.jp/view_event.pl?id=39225485&amp;comment_count=19&amp;comm_id=1118970">http://mixi.jp/view_event.pl?id=39225485&amp;comment_count=19&amp;comm_id=1118970</a></div>
					<img src="http://5509.me/?ak_action=api_record_view&id=994&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/css-nite-osaka-14/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>jQueryを使ってNews Tickerプラグインを作ってみよう[後編]</title>
		<link>http://5509.me/log/newsticker2</link>
		<comments>http://5509.me/log/newsticker2#comments</comments>
		<pubDate>Sun, 15 Mar 2009 16:46:40 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[tuts]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=957</guid>
		<description><![CDATA[					前編でニュースティッカーができたので 後編ではjQueryプラグインにしてみましょう。
					jQueryを使ってNews Tickerプラグインを作ってみよう[前編]
					
					jQueryを [...]]]></description>
			<content:encoded><![CDATA[					<h2>前編でニュースティッカーができたので 後編ではjQueryプラグインにしてみましょう。</h2>
					<h3><strong>jQueryを使ってNews Tickerプラグインを作ってみよう[前編]</strong></h3>
					<ul>
					<li><a title="jQueryを使ってNews Tickerプラグインを作ってみよう[前編][1]" href="../2009/03/09/newsticker1-1.html">jQueryを使ってNews Tickerプラグインを作ってみよう[前編][1]</a></li>
					<li><a title="jQueryを使ってNews Tickerプラグインを作ってみよう[前編][2]" href="../2009/03/10/newsticker1-2.html">jQueryを使ってNews Tickerプラグインを作ってみよう[前編][2]</a></li>
					</ul>
					<p>jQueryプラグインのメリットは</p>
					<ul>
					<li>要素をjQueryのメソッドチェーンで繋いで実行できる</li>
					<li>オプション項目の指定が簡単にできる</li>
					</ul>
					<p>といったところでしょうか。</p>
					<p><span id="more-957"></span></p>
					<h2>前回作成したnewsFaderメソッドをより汎用的なものにする</h2>
					<p>前回、前々回で以下のnewsFaderメソッドを作成しました。</p>
					<p class="note">ところでnewsFaderとnewsTickerを間違えて記述していたので<br />
					プラグインはnewsTickerにして作成します。</p>
					<pre name="code" class="js">

function newsFader(){
&nbsp;&nbsp;if($(&quot;li&quot;,&quot;div#newsTicker ul&quot;).length==1) return false;

&nbsp;&nbsp;$(&quot;li&quot;,&quot;div#newsTicker ul&quot;).each(function(i){
&nbsp;&nbsp;&nbsp;&nbsp;$(this).attr(&quot;id&quot;,&quot;news-&quot;+i);
&nbsp;&nbsp;&nbsp;&nbsp;if(i!=0) $(this).hide();
&nbsp;&nbsp;});

&nbsp;&nbsp;var start = count = 0,
&nbsp;&nbsp;&nbsp;&nbsp;end = $(&quot;li&quot;,&quot;div#newsTicker ul&quot;).length-1,
&nbsp;&nbsp;&nbsp;&nbsp;interval = 1500,
&nbsp;&nbsp;&nbsp;&nbsp;fadeTimer = setInterval(function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;li#news-&quot;+(start==1 ? count==0 ? end : count-1 : count)).hide();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;#news-&quot;+(start==1 ? (++count)-1 : ++count)).fadeIn(&quot;slow&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(start==0 ＆＆ count&gt;=end){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count = 0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start = 1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else if(start==1 ＆＆ count&gt;end){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count = 0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;},interval);
}
newsFader();
</pre>
					<h3>汎用性を持たせる</h3>
					<p>まずは newsFaderメソッドに記述している<br />
					<strong>要素$(&#8220;li&#8221;,&#8221;div#newsTicker ul&#8221;)</strong>、<strong>切り替えの間隔interval</strong>、<strong>フェードアウトの速度&#8221;slow&#8221;</strong><br />
					を引数指定で実行時できるようにします。</p>
					<p class="note"><strong>$(&#8220;li&#8221;,&#8221;div#newsTicker ul&#8221;) は $(&#8220;div#newsTicker ul li&#8221;) と同じ意味</strong>です。<br />
					どの要素を指定しているか分かりやすくするために前者のように記述しています。</p>
					<pre name="code" class="js">

function newsFader(elm,fadeSpeed,fadeInterval){
&nbsp;&nbsp;if(elm.length==1) return false;

&nbsp;&nbsp;elm.each(function(i){
&nbsp;&nbsp;&nbsp;&nbsp;$(this).attr(&quot;id&quot;,&quot;news-&quot;+i);
&nbsp;&nbsp;&nbsp;&nbsp;if(i!=0) $(this).hide();
&nbsp;&nbsp;});

&nbsp;&nbsp;var start = count = 0,
&nbsp;&nbsp;&nbsp;&nbsp;end = elm.length-1,
&nbsp;&nbsp;&nbsp;&nbsp;fadeTimer = setInterval(function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;#news-&quot;+(start==1 ? count==0 ? end : count-1 : count)).hide();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;#news-&quot;+(start==1 ? (++count)-1 : ++count)).fadeIn(fadeSpeed);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(start==0 ＆＆ count&gt;=end){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count = 0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start = 1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else if(start==1 ＆＆ count&gt;end){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count = 0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;},fadeInterval);
}
</pre>
					<p>上記のように書き換えることで <strong>3つの項目を実行時に引数で指定できる</strong>ようになりました。</p>
					<p class="note">fadeTimer の最初の行で li#news- となっていましたが<br />
					li が入っていると LI要素にしか適用できないので、汎用性を持たせるために li を消去しています。</p>
					<pre name="code" class="js">

newsFader($(&quot;li&quot;,&quot;div#newsTicker ul&quot;),&quot;fast&quot;,1000);
</pre>
					<p>のように実行できます。<br />
					ここまでを前回の記事に含めればよかった…</p>
					<p><a href="http://5509.me/sample/newsTicker/rev5.html">サンプル（引数指定）</a></p>
					<h2>メソッドチェーン</h2>
					<p>jQueryではメソッドチェーンでメソッドを繋いでいくようにコードを書いて行きますが<br />
					ところでメソッドチェーンとは何でしょうか。</p>
					<blockquote><p>これは、それぞれのjQueryオブジェクトのメソッドの戻り値の多くがjQueryオブジェクトになっているからです。 つまり、使いたいメソッドを「.」でつないでいくだけで、まるでレゴを組み立てるようにプログラムが書きあがるというわけです。</p>
					<p>これは、メソッドチェーンと呼ばれている仕組みです。</p>
					<p><cite>via: All About &#8211; <a href="http://allabout.co.jp/internet/javascript/closeup/CU20071020A/">jQueryの魔法</a></cite></p></blockquote>
					<p>まずjQueryプラグインを作るにあたって<br />
					指定の要素にメソッドチェーンで繋ぐことができる状態をつくります。</p>
					<pre name="code" class="js">

$.fn.メソッド = function(){}
</pre>
					<p>上記のように $.fn.メソッド とすることで任意の$()で渡した要素に対して<br />
					メソッドを実行できるようになります。</p>
					<p>具体的には $() の要素をメソッド内で<br />
					<strong>this</strong> として扱うことができるようになります。</p>
					<p>下のような拡張メソッドを作成して実際に実行してみましょう。</p>
					<pre name="code" class="js">

$.fn.sampleChain = function(){
&nbsp;&nbsp;alert(this.length);
}
</pre>
					<p>最初なので単純に渡した要素の長さをアラートで表示するだけのものです。<br />
					これを実行してみます。</p>
					<p>jQueryのメソッドを実行するときは</p>
					<pre name="code" class="js">

$(function(){});
</pre>
					<p>の中に記述すればいいだけなので</p>
					<pre name="code" class="js">

$(function(){
&nbsp;&nbsp;$(&quot;p&quot;).sampleChain();
});
</pre>
					<p>で実行できます。<br />
					<a href="http://5509.me/sample/newsTicker/rev6.html">サンプル（メソッドチェーンサンプル）</a></p>
					<p>サンプルHTMLにはP要素は3つ含まれているので<br />
					<strong>アラートの中には 3 と表示されます。</strong></p>
					<h2>プラグインにする</h2>
					<p>メソッドチェーンでは親になっている要素をthisとして渡すことができるので</p>
					<h3>これにもとづいて newsFaderメソッドを $.fn.newsTickerメソッドに書き換えると…</h3>
					<pre name="code" class="js">

$.fn.newsTicker(fadeSpeed,fadeInterval){
&nbsp;&nbsp;if(this.length==1) return false;

&nbsp;&nbsp;this.each(function(i){
&nbsp;&nbsp;&nbsp;&nbsp;$(this).attr(&quot;id&quot;,&quot;news-&quot;+i);
&nbsp;&nbsp;&nbsp;&nbsp;if(i!=0) $(this).hide();
&nbsp;&nbsp;});

&nbsp;&nbsp;var start = count = 0,
&nbsp;&nbsp;&nbsp;&nbsp;end = this.length-1,
&nbsp;&nbsp;&nbsp;&nbsp;fadeTimer = setInterval(function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;#news-&quot;+(start==1 ? count==0 ? end : count-1 : count)).hide();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;#news-&quot;+(start==1 ? (++count)-1 : ++count)).fadeIn(fadeSpeed);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(start==0 ＆＆ count&gt;=end){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count = 0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start = 1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else if(start==1 ＆＆ count&gt;end){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count = 0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;},interval);
}
</pre>
					<p>となります。<strong>引数で渡していたelmがthisとして渡せる</strong>ようになっています。<br />
					これを実行する場合は</p>
					<pre name="code" class="js">

$(&quot;li&quot;,&quot;div#newsTicker ul&quot;).newsTicker(&quot;fast&quot;,1000);
</pre>
					<p><a href="http://5509.me/sample/newsTicker/rev7.html">サンプル（プラグイン化）</a></p>
					<p>となります。jQueryらしくなってきました。</p>
					<h3>次は残りの変数をオプションとして扱えるようにしてみましょう。</h3>
					<p>上のメソッドでは fadeSpeed、fadeIntervalを指定しない限りエラーを返すので<br />
					指定しない場合は何かデフォルトの値が入っているようにしてみます。</p>
					<pre name="code" class="js">

$.fn.newsTicker(options){

&nbsp;&nbsp;var c = $.extend({
&nbsp;&nbsp;&nbsp;&nbsp;interval: 3500,
&nbsp;&nbsp;&nbsp;&nbsp;fade: 1000
&nbsp;&nbsp;},options);
</pre>
					<p>他の箇所は省いていますが、上記のようにすることで<br />
					デフォルトの値を設定することができます。</p>
					<p>これらの変数は c.interval、c.fadeのように変数cのプロパティとして参照できます。<br />
					また</p>
					<pre name="code" class="js">

$(&quot;li&quot;,&quot;div#newsTicker ul&quot;).newsTicker({
&nbsp;&nbsp;interval: 1500,
&nbsp;&nbsp;fade: &quot;slow&quot;
});
</pre>
					<p>のように実行時にnewsTickerメソッドの引数にハッシュで値を渡すことで<br />
					任意の値で実行することができます。</p>
					<p>fadeはjQueryのfadeInメソッドを使っているので<br />
					値にはミリセカンド、&#8221;slow&#8221;、&#8221;normal&#8221;、&#8221;fast&#8221;をとることができます。</p>
					<h3>以下が完成したnewsTickerメソッドです。</h3>
					<pre name="code" class="js">

$.fn.newsTicker = function(options){

&nbsp;&nbsp;var c = $.extend({
&nbsp;&nbsp;&nbsp;&nbsp;interval: 3500,
&nbsp;&nbsp;&nbsp;&nbsp;fade: 1000
&nbsp;&nbsp;},options);

&nbsp;&nbsp;if(this.length==1) return false;
&nbsp;&nbsp;this.each(function(i){
&nbsp;&nbsp;&nbsp;&nbsp;$(this).attr(&quot;id&quot;,&quot;newsFader-&quot;+i);
&nbsp;&nbsp;&nbsp;&nbsp;if(i!=0) $(this).hide();
&nbsp;&nbsp;});

&nbsp;&nbsp;var count = 0,
&nbsp;&nbsp;&nbsp;&nbsp;end = this.length-1,
&nbsp;&nbsp;&nbsp;&nbsp;fadeTimer = setInterval(function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;#news-&quot;+(start==1 ? count==0 ? end : count-1 : count)).hide();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;#news-&quot;+(start==1 ? (++count)-1 : ++count)).fadeIn(c.fade);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(count&gt;end) count = 0;
&nbsp;&nbsp;&nbsp;&nbsp;},c.interval);
}
</pre>
					<p>さっそく実行してみましょう。</p>
					<pre name="code" class="js">

$(&quot;li&quot;,&quot;div#news ul&quot;).newsTicker();
</pre>
					<p><a href="http://5509.me/sample/newsTicker/rev8.html">サンプル（完成）</a></p>
					<h2>応用</h2>
					<p>ところで気付いている人もいるかもしれませんが<br />
					このnewsTickerメソッドはニュースティッカー以外にも使えます。</p>
					<h3>スライドショーに使ってみる</h3>
					<p>たとえば</p>
					<pre name="code" class="xhtml">

&lt;div id=&quot;image&quot;&gt;
&nbsp;&nbsp;&lt;img src=&quot;slideImage01.jpg&quot; alt=&quot;&quot; /&gt;
&nbsp;&nbsp;&lt;img src=&quot;slideImage02.jpg&quot; alt=&quot;&quot; /&gt;
&nbsp;&nbsp;&lt;img src=&quot;slideImage03.jpg&quot; alt=&quot;&quot; /&gt;
&nbsp;&nbsp;&lt;img src=&quot;slideImage04.jpg&quot; alt=&quot;&quot; /&gt;
&lt;/div&gt;
</pre>
					<pre name="code" class="css">

div#image {
&nbsp;&nbsp;width: 500px;
&nbsp;&nbsp;height: 333px;
&nbsp;&nbsp;position: relative;
}
&nbsp;&nbsp;div#image img {
&nbsp;&nbsp;&nbsp;&nbsp;position: absolute;
&nbsp;&nbsp;&nbsp;&nbsp;top: 0;
&nbsp;&nbsp;&nbsp;&nbsp;left: 0;
&nbsp;&nbsp;}
</pre>
					<pre name="code" class="js">

$(&quot;img&quot;,&quot;div#image&quot;).newsTicker();
</pre>
					<p>のようにすれば 簡単にスライドショーを作ることができます。<br />
					実用性はアレですけど…</p>
					<p><a href="http://5509.me/sample/newsTicker/image.html">サンプル（スライドショー）</a></p>
					<h3>スライドショーに使ってみる2</h3>
					<p>このままだと 画像が切り替わるときに チラっと白くなるので<br />
					前の画像を非表示にするところに fadeOut を使うときれいに切り替わるようになります。</p>
					<p>hideをfadeOutに書き換えて、fadeOutの速度もオプションに追加します。</p>
					<pre name="code" class="js">

$.fn.newsTicker = function(options){

&nbsp;&nbsp;var c = $.extend({
&nbsp;&nbsp;&nbsp;&nbsp;interval: 3500,
&nbsp;&nbsp;&nbsp;&nbsp;out: 1000,
&nbsp;&nbsp;&nbsp;&nbsp;set: 1000
&nbsp;&nbsp;},options);

&nbsp;&nbsp;if(this.length==1) return false;
&nbsp;&nbsp;this.each(function(i){
&nbsp;&nbsp;&nbsp;&nbsp;$(this).attr(&quot;id&quot;,&quot;newsFader-&quot;+i);
&nbsp;&nbsp;&nbsp;&nbsp;if(i!=0) $(this).hide();
&nbsp;&nbsp;});

&nbsp;&nbsp;var count = 0,
&nbsp;&nbsp;&nbsp;&nbsp;end = this.length-1,
&nbsp;&nbsp;&nbsp;&nbsp;fadeTimer = setInterval(function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;#news-&quot;+(start==1 ? count==0 ? end : count-1 : count)).fadeOut(c.out);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;#news-&quot;+(start==1 ? (++count)-1 : ++count)).fadeIn(c.set);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(count&gt;end) count = 0;
&nbsp;&nbsp;&nbsp;&nbsp;},c.interval);
}
</pre>
					<p>これできれいに切り替わるようになりましたね。<br />
					<a href="http://5509.me/sample/newsTicker/image2.html">サンプル（スライドショー完成）</a></p>
					<p>ちなみに写真のワンコはうちのかわいい ゆに です。<br />
					誕生日にケーキをあげたら 口のまわりをクリームまみれになるくらい必死に食べてました。<br />
					かわいい…</p>
					<h2>まとめとサンプルファイルのzip</h2>
					<p>こんな感じでnewsTickerプラグインは他にも色々と応用できるかもしれないです。</p>
					<p>それはさておき 「<strong>jQueryプラグインの作成方法は結構簡単</strong>」<br />
					ということを伝えたかったのですが、いかがだったでしょうか？？？</p>
					<p>間違いなどあればコメント等で指摘していただけると助かります。</p>
					<p>今回のサンプルファイルをまとめたものをあげておきますので必要な方は自由に使ってください。<br />
					作成したプラグインもライセンスなしで自由に使えます。</p>
					<p><a href="http://5509.me/sample/archive/newsTicker.zip">newsTicker.zip(33KB)</a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=957&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/newsticker2/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>jQueryを使ってNews Tickerプラグインを作ってみよう[前編][2]</title>
		<link>http://5509.me/log/newsticker1-2</link>
		<comments>http://5509.me/log/newsticker1-2#comments</comments>
		<pubDate>Mon, 09 Mar 2009 18:00:26 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[tuts]]></category>

		<guid isPermaLink="false">http://moto-mono.net/2009/03/10/newsticker1-2.html</guid>
		<description><![CDATA[					前回までのおさらい。
					前回の記事
					まずは前回最後のサンプルを見てください。
					ここまでのサンプル（フェードを実行）
					サンプルを見ればわかるように
					ニュースティッカ [...]]]></description>
			<content:encoded><![CDATA[					<h2>前回までのおさらい。</h2>
					<p><a href="http://5509.me/2009/03/09/newsticker1-1.html">前回の記事</a></p>
					<p>まずは前回最後のサンプルを見てください。</p>
					<p><a href="http://5509.me/sample/newsTicker/rev3.html">ここまでのサンプル（フェードを実行）</a></p>
					<p>サンプルを見ればわかるように<br />
					ニュースティッカーの実装まではできましたが不具合があるようです。</p>
					<ul>
					<li>最後のニュースが表示された後に何も表示されない</li>
					</ul>
					<p>よくあるパターンは最後が表示されると最初に戻る というものです。<br />
					これを実装してみようと思います。</p>
					<p><span id="more-931"></span></p>
					<h2>JSソースを書く 3</h2>
					<h3>どうすればいいか考える</h3>
					<p>最後のニュースを表示したあとに 最初のニュースに戻るにはどうすればよいのか<br />
					とりあえず順を追って考えてみることにしましょう。<br />
					僕の全然プログラマではない思考でやってみます。</p>
					<ol>
					<li>count&gt;=end なら count = 0 にしたのち li#news-(end) を非表示にして</li>
					<li>li#news-(count) を表示</li>
					</ol>
					<p>count&gt;=end になった後をどう判別するかが必要になりますので 新しく<br />
					var start = 0; を追記します。それもふまえて実装してみましょう。</p>
					<pre name="code" class="js">

var start = count = 0,
end = $(&quot;li&quot;,&quot;div#newsTicker ul&quot;).length-1,
interval = 1500,
fadeTimer = setInterval(function(){
&nbsp;&nbsp;$(&quot;li#news-&quot;+(start==1 ? end : count)).hide();
&nbsp;&nbsp;$(&quot;li#news-&quot;+(start==1 ? count++ : ++count)).fadeIn(&quot;slow&quot;);

&nbsp;&nbsp;if(count&gt;=end{
&nbsp;&nbsp;&nbsp;&nbsp;count = 0;
&nbsp;&nbsp;&nbsp;&nbsp;start = 1;
&nbsp;&nbsp;}

},interval);
</pre>
					<p>実行してみましたか？<br />
					<a href="http://5509.me/sample/newsTicker/rev4.html">ここまでのサンプル</a></p>
					<p>最後のニュースから最初のニュースに戻るようにはなりましたが<br />
					そのあとがだめですね。</p>
					<p>ちなみに</p>
					<pre name="code" class="js">

a ? b : c;
</pre>
					<p>は a を判別してtrue を返せば b, falseなら c になります。</p>
					<pre name="code" class="js">

if(a){
&nbsp;&nbsp;return b;
}else{
&nbsp;&nbsp;return c;
}
</pre>
					<p>と同じような意味になります。<br />
					たとえば上の例では</p>
					<pre name="code" class="js">

start==1 ? end : count
</pre>
					<p>は start==1 なら end、それ以外なら（0なら）count</p>
					<pre name="code" class="js">

start==1 ? count++ : ++count
</pre>
					<p>も同じように start==1 なら count++、それ以外なら ++count<br />
					がそれぞれ入ることになります。</p>
					<h3>結局どうしたらいいのか</h3>
					<p>順を追って解決していこうと思ってたんですけれど<br />
					次が結構ややこしくなってしまって…結論から言うと</p>
					<pre name="code" class="js">

$(&quot;li#news-&quot;+(start==1 ? count==0 ? end : count-1 : count)).hide();
$(&quot;li#news-&quot;+(start==1 ? (++count)-1 : ++count)).fadeIn(&quot;slow&quot;);
if(start==0 ＆＆ count&gt;=end){
&nbsp;&nbsp;count = 0;
&nbsp;&nbsp;start = 1;
}else if(start==1 ＆＆ count&gt;end){
&nbsp;&nbsp;count = 0;
}
</pre>
					<p>となります。<br />
					見た感じ非常にややこしくなってしまったので 順番に説明していきます。</p>
					<ol>
					<li>1週目と2週目以降は count の動きが変わるので それを判別する 変数startを用意する。</li>
					<li>start == 0 なら1週目、start == 1 なら2週目以降</li>
					<li>start==1 ? は2週目以降かどうか</li>
					<li>count==0 ? は最後のニュースから最初のニュースにもどるときがどうか</li>
					<li>1週目は 非表示：li#news-count、表示：li#news-(++count)</li>
					<li>2週目以降は 非表示：li#news-(count==0 ? end : count-1)、表示：li#news-((++count)-1)</li>
					<li>つまり、li#news-endが表示される → count = 0 → 非表示にするのは li#news-end</li>
					<li>さらに li#news-endが非表示になる → li#news-(++count &#8211; 1)(ようはli#news-0) を表示</li>
					<li>この -1 のずれを戻すために 非表示にする方にも count-1 を</li>
					<li>最初の週の終わりには count = 0; start = 1;にする。</li>
					<li>次週以降の終わりには count = 0; にする。</li>
					</ol>
					<pre name="code" class="js">

start==1 ? count==0 ? end : count-1 : count
</pre>
					<p>は start==1 &amp;&amp; count==0 なら end、start==1 &amp;&amp; count!=0 なら count-1<br />
					start!=1 なら count ということです。</p>
					<p>説明すればするほど難解になっているような気もしますが…;;;<br />
					もっとキレイに説明したいんですけれど…<br />
					そんなことよりももっとスマートな書き方がきっとあるはずです。。。</p>
					<p>というわけで、完成したスクリプトは以下になります。</p>
					<pre name="code" class="js">

$(function(){
&nbsp;&nbsp;function newsFader(){
&nbsp;&nbsp;&nbsp;&nbsp;if($(&quot;li&quot;,&quot;div#newsTicker ul&quot;).length==1) return false;

&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;li&quot;,&quot;div#newsTicker ul&quot;).each(function(i){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).attr(&quot;id&quot;,&quot;news-&quot;+i);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i!=0) $(this).hide();
&nbsp;&nbsp;&nbsp;&nbsp;});

&nbsp;&nbsp;&nbsp;&nbsp;var start = count = 0,
&nbsp;&nbsp;&nbsp;&nbsp;end = $(&quot;li&quot;,&quot;div#newsTicker ul&quot;).length-1,
&nbsp;&nbsp;&nbsp;&nbsp;interval = 1500,
&nbsp;&nbsp;&nbsp;&nbsp;fadeTimer = setInterval(function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;li#news-&quot;+(start==1 ? count==0 ? end : count-1 : count)).hide();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;#news-&quot;+(start==1 ? (++count)-1 : ++count)).fadeIn(&quot;slow&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(start==0 ＆＆ count&gt;=end){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count = 0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start = 1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else if(start==1 ＆＆ count&gt;end){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count = 0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;},interval);
&nbsp;&nbsp;}
&nbsp;&nbsp;newsFader();
});
</pre>
					<p class="note">＆は半角に直してください。</p>
					<p>では実行してみましょう。<br />
					<a href="http://5509.me/sample/newsTicker/">サンプル（完成）</a></p>
					<p>後半の流れが若干（結構）アヤシイ感じもしますけど<br />
					とりあえずはこれでニュースティッカーが完成しました。</p>
					<h2>次回は…</h2>
					<p>次回はこのファンクションを利用してjQueryのプラグインにしてみましょう。<br />
					たとえば interval、フェードの速度をオプションで設定できるようになります。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=931&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/newsticker1-2/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>jQueryを使ってNews Tickerプラグインを作ってみよう[前編][1]</title>
		<link>http://5509.me/log/newsticker1-1</link>
		<comments>http://5509.me/log/newsticker1-1#comments</comments>
		<pubDate>Sun, 08 Mar 2009 18:10:28 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[tuts]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=894</guid>
		<description><![CDATA[					
					まずは今回つくるものをご覧ください。
					ニュースティッカー1（完成）
					jQueryプラグインでも見たことがあるような よくあるフェードで切り替えるやつです。
					これを作って [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/newsTicker/"><img class="alignnone size-full wp-image-927" title="newsticker" src="http://5509.me/wp-content/uploads/2009/03/newsticker.gif" alt="newsticker" width="404" height="57" /></a></p>
					<p>まずは今回つくるものをご覧ください。</p>
					<p><a href="http://5509.me/sample/newsTicker/">ニュースティッカー1（完成）</a></p>
					<p>jQueryプラグインでも見たことがあるような よくあるフェードで切り替えるやつです。<br />
					これを作ってみましょう。</p>
					<p>前編では ニュースティッカーを実装するところまで<br />
					後編では 前編で作成したニュースティッカースクリプトをjQueryのプラグインにしていく予定です。<br />
					結構長いので数回に分けて投稿していきます。。。</p>
					<p>JavaScriptとjQueryがちょっとわかる人なら理解できる…はずです。</p>
					<p><span id="more-894"></span></p>
					<h2>用意するもの</h2>
					<ul>
					<li>jQuery &#8211; 公式でもいいですし、<a href="http://5509.me/sample/newsTicker/js/lib/jquery.js">僕がつくったサンプルに含まれてるやつ</a>でも大丈夫です。</li>
					<li><a href="http://mozilla.jp/firefox/">Firefox</a>と<a href="https://addons.mozilla.org/ja/firefox/addon/1843">Firebug</a></li>
					</ul>
					<p>だけです。<br />
					FirefoxとFirebugは開発に必須のツールなので 特に説明してません。</p>
					<h2>とりあえず…</h2>
					<p>jQueryを読み込んで…</p>
					<pre name="code" class="xhtml">

&lt;script type=&quot;text/javascript&quot; src=&quot;js/lib/jquery.js&quot;&gt;&lt;/script&gt;
</pre>
					<p>要素をマークアップしましょう。</p>
					<pre name="code" class="xhtml">

&lt;div id=&quot;newsTicker&quot;&gt;
&nbsp;&nbsp;&lt;ul&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot;&gt;ニュースティッカーサンプル1&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;ニュースティッカーサンプル2&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot;&gt;ニュースティッカーサンプル3&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;ニュースティッカーサンプル4&lt;/li&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;&lt;a href=&quot;#&quot;&gt;ニュースティッカーサンプル5&lt;/a&gt;&lt;/li&gt;
&nbsp;&nbsp;&lt;/ul&gt;
&lt;/div&gt;
</pre>
					<p>こんな感じでリストなっているニュース一覧を切り替えることにします。</p>
					<h2>CSSでデザインを決める</h2>
					<p>枠になる画像を用意して<br />
					その中に1行で表示されるようにします。</p>
					<p>画像を用意するのが面倒な場合は↓の画像をどうぞ。<br />
					borderでもなんでもいいです。</p>
					<p><img src="http://5509.me/sample/newsTicker/img/bg_ticker.gif" alt="" /></p>
					<p>ちなみに今回のニュースティッカーの前提として<br />
					ニュースの文章は 枠内に1行で表示できる文字数であることとします。</p>
					<pre name="code" class="xhtml">

div#newsTicker {
&nbsp;&nbsp;width: 579px;
&nbsp;&nbsp;height: 35px;
&nbsp;&nbsp;background: url(../img/bg_ticker.gif) no-repeat;
&nbsp;&nbsp;overflow: hidden;
}
&nbsp;&nbsp;&nbsp;&nbsp;div#newsTicker ul {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;padding: 0 1em;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;div#newsTicker ul li {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line-height: 35px;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
</pre>
					<p>ここまでニュースが切り替わらない1行ニュースができたと思います。</p>
					<p><a href="http://5509.me/sample/newsTicker/rev1.html">ここまでのサンプル（切り替わらない1行ニュース）</a></p>
					<h2>JSソースを書く 1</h2>
					<p>ようやく準備ができたので 次はスクリプトを書いて実際に動かしていきます。</p>
					<h3>まずは newsTicker というfunctionをつくります。</h3>
					<pre name="code" class="js">

function newsTicker(){
}
</pre>
					<p>以降とくに指定がない限りこのfunction内に記述していきます。<br />
					まずは ニュースがひとつしかない場合は動かせるものがないので</p>
					<pre name="code" class="js">

if($(&quot;li&quot;,&quot;div#newsTicker ul&quot;).length&lt;=1) return false;
</pre>
					<p>というように LI要素がひとつ（またはそれ以下）の場合は<br />
					何もしないで終了するようにしておきます。<br />
					（これでCMSの自動吐き出しにも対応できるようになりました。）</p>
					<h3>次は識別しやすいように すべてのLI要素のIDを当てていきます。</h3>
					<p>今回は news-*（*は連番）というようにします。</p>
					<p>ひとつひとつやっていくのは面倒なので<br />
					each関数を使って楽をしたいと思います。</p>
					<p>jQueryのeach関数はforと同じように使うことができます。<br />
					たとえば</p>
					<pre name="code" class="js">

for(var i=0;i&lt;x.length;i++){
&nbsp;&nbsp;alert(i);
}
</pre>
					<p>は</p>
					<pre name="code" class="js">

$(x).each(function(i){
&nbsp;&nbsp;alert(i)
});
</pre>
					<p>のように書くことができます。<br />
					ではeach関数を利用して<br />
					「すべてのLI要素のID：news-*（*は連番）を割り当てる」<br />
					コードを記述してみましょう。</p>
					<pre name="code" class="js">

$(&quot;li&quot;,&quot;div#newsTicker ul&quot;).each(function(i){
&nbsp;&nbsp;$(this).attr(&quot;id&quot;,&quot;news-&quot;+i);
});
</pre>
					<p>ついでに 最初のLI要素以外をdisplay: noneにしておきます。</p>
					<pre name="code" class="js">

$(&quot;li&quot;,&quot;div#newsTicker ul&quot;).each(function(i){
&nbsp;&nbsp;$(this).attr(&quot;id&quot;,&quot;news-&quot;+i);
&nbsp;&nbsp;if(i!=0) $(this).hide();
});
</pre>
					<h3>試しにここまでのスクリプトを実行してみましょう。</h3>
					<p>ページ読み込み時にスクリプトを実行する場合</p>
					<pre name="code" class="js">

window.onload = function(){}
</pre>
					<p>とかaddEventListenerに登録したりしますが<br />
					jQueryでは</p>
					<pre name="code" class="js">

$(function(){
});
</pre>
					<p>の中で実行するだけです。<br />
					厳密に言うとwindow.onloadのタイミングではなく<br />
					DOM構築後のタイミングで実行されることになります。</p>
					<pre name="code" class="js">

$(function(){
&nbsp;&nbsp;function newsFader(){
&nbsp;&nbsp;&nbsp;&nbsp;if($(&quot;li&quot;,&quot;div#newsTicker ul&quot;).length&lt;=1) return false;
&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;li&quot;,&quot;div#newsTicker ul&quot;).each(function(i){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).attr(&quot;id&quot;,&quot;news-&quot;+i);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i!=0) $(this).hide();
&nbsp;&nbsp;&nbsp;&nbsp;});
&nbsp;&nbsp;}
&nbsp;&nbsp;newsFader();
});
</pre>
					<p><a href="http://5509.me/sample/newsTicker/rev2.html">ここまでのサンプル（IDを割り当てて最初のLI要素以外を非表示）<br />
					</a>- ひとつ前のサンプルと同じに見えますがFirebugで要素を確認すると状態が分かります。</p>
					<h2>JSソースを書く 2</h2>
					<p>LI要素にIDを割り当てて、最初のLI要素以外はdisplay: noneにしたので<br />
					フェードで入れ替える部分を作ります。</p>
					<h3>まずは最初のIDと終わりのIDを決めておきます。</h3>
					<p>現在表示しているニュースの番号は count という変数に入れることにします。<br />
					始まりは news-0 で終わりは news-4 ですが<br />
					終わりの数字を決めてしまうと 要素が増えたときにいちいち面倒くさいので<br />
					LI要素の数（ニュースの数）を取得して、それから-1したものを終わりの数字にします。<br />
					（JSでは数は0始まりなので終わりの数字は配列の長さ-1になります）</p>
					<pre name="code" class="js">

var count = 0,
end = $(&quot;li&quot;,&quot;div#newsTicker ul&quot;).length-1;
</pre>
					<h3>ニュースが入れ替わるまでの時間を決めます。</h3>
					<pre name="code" class="js">

var interval = 1500;
</pre>
					<p>特に指定はないですが、ある程度効果が分かるように1500ミリセカンドにします。</p>
					<h3>1500ミリセカンド毎にニュースを入れ替える。</h3>
					<p>ニュースの入れ替えは簡単に書くと<br />
					<strong>現在表示されてるニュースを非表示にして 次のニュースをフェードイン</strong><br />
					でできそうな気がしませんか？</p>
					<p>現在表示されているニュースは 例えば一番最初に表示されているのは<br />
					li#news-0 になるので 次のニュースは li#news-1 ですね。</p>
					<p>ということは手順としては</p>
					<ol>
					<li>li#news-(count) を非表示にする</li>
					<li>countに1を加える</li>
					<li>li#news-(count) をフェードインさせる</li>
					</ol>
					<p>これをスクリプトにするとこうなります。</p>
					<pre name="code" class="js">

$(&quot;li#news-&quot;+count).hide();
$(&quot;li#news-&quot;+(++count)).fadeIn(&quot;slow&quot;);
</pre>
					<p>とても簡単ですね。これをさっき決めたinterval毎に切り替えるには</p>
					<p><strong>setInterval</strong>という関数を使います。<br />
					setIntervalは</p>
					<pre name="code" class="js">

setInterval(function(){},interval);
</pre>
					<p>のように記述して、intervalの間隔毎にfunctionを実行します。<br />
					functionはあらかじめ定義した変数でも可。</p>
					<p>今回は特に タイマーを解除する必要がないので変数にしなくてもいいのですが<br />
					いつものくせで変数に入れています。</p>
					<pre name="code" class="js">

var fadeTimer = setInterval(function(){
&nbsp;&nbsp;$(&quot;li#news-&quot;+count).hide();
&nbsp;&nbsp;$(&quot;li#news-&quot;+(++count)).fadeIn(&quot;slow&quot;);
},interval)
</pre>
					<p>上記の記述で interval の間隔で setInterval の内容を実行するようになりました。<br />
					ここまでのスクリプトは以下になります。</p>
					<pre name="code" class="js">

$(function(){
&nbsp;&nbsp;function newsFader(){
&nbsp;&nbsp;&nbsp;&nbsp;if($(&quot;li&quot;,&quot;div#newsTicker ul&quot;).length&lt;=1) return false;

&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;li&quot;,&quot;div#newsTicker ul&quot;).each(function(i){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).attr(&quot;id&quot;,&quot;news-&quot;+i);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i!=0) $(this).hide();
&nbsp;&nbsp;&nbsp;&nbsp;});

&nbsp;&nbsp;&nbsp;&nbsp;var count = 0,
&nbsp;&nbsp;&nbsp;&nbsp;end = $(&quot;li&quot;,&quot;div#newsTicker ul&quot;).length-1,
&nbsp;&nbsp;&nbsp;&nbsp;interval = 1500,
&nbsp;&nbsp;&nbsp;&nbsp;fadeTimer = setInterval(function(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;li#news-&quot;+count).hide();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&quot;li#news-&quot;+(++count)).fadeIn(&quot;slow&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;},interval)

&nbsp;&nbsp;}
&nbsp;&nbsp;newsFader();
});
</pre>
					<p>ではここまでのスクリプトを実行してみましょう。<br />
					<a href="http://5509.me/sample/newsTicker/rev3.html">ここまでのサンプル（フェードを実行）</a></p>
					<p>サンプルを見てもらうと分かりますが 入れ替えは実装されましたが<br />
					このままでは<strong>最後のニュースを表示した後に何も表示しなくなってしまいます</strong>。</p>
					<p>次回は以上の不具合を修正していくことにします。<br />
					続く。。→<a href="http://5509.me/2009/03/10/newsticker1-2.html">http://5509.me/2009/03/10/newsticker1-2.html</a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=894&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/newsticker1-1/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FeedBurnerのアカウントをGoogleに移行しました</title>
		<link>http://5509.me/log/feedburneracountismoved</link>
		<comments>http://5509.me/log/feedburneracountismoved#comments</comments>
		<pubDate>Sat, 28 Feb 2009 14:23:08 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[note]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=884</guid>
		<description><![CDATA[					すっかり忘れてたのですが
					FeedBurnerのアカウントをGoogleに移行しました。
					それに伴ってFeedBurnerのURIが変わりました。
					ブログのFeedに設定しているの [...]]]></description>
			<content:encoded><![CDATA[					<p>すっかり忘れてたのですが<br />
					FeedBurnerのアカウントをGoogleに移行しました。</p>
					<p>それに伴ってFeedBurnerのURIが変わりました。</p>
					<p>ブログのFeedに設定しているのはWordPressが生成するXMLで<br />
					http://5509.me/feed にアクセスした際に<br />
					リダイレクトするようにしててなんかややこしい感じなんですが…</p>
					<p>FeedBurnerのURIを購読に設定している方も<br />
					feedburner.jpが存在する限りリダイレクトされるようなので問題ないはずです。</p>
					<p>ブログFeed URI</p>
					<p>http://5509.me/feed</p>
					<p>前のFeedBurnerのURI</p>
					<p>http://feeds.feedburner.jp/mtmo</p>
					<p>新しいFeedBurnerのURI<br />
					<a href="http://feeds2.feedburner.com/mtmo">http://feeds2.feedburner.com/mtmo</a></p>
					<p>上のどれにアクセスしても 新しいFeedBurnerのURIにリダイレクトされます。</p>
					<p>説明すればするほどややこしくなっていきますが<br />
					ようは特に何もしなくても大丈夫ということです。<br />
					念のためのアナウンスでした:)</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=884&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/feedburneracountismoved/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery.validation.jsとAjax Username Checkerを組み合わせて使う</title>
		<link>http://5509.me/log/jqueryvalidationjs-with-ajaxusernamecheck</link>
		<comments>http://5509.me/log/jqueryvalidationjs-with-ajaxusernamecheck#comments</comments>
		<pubDate>Wed, 04 Feb 2009 15:00:38 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=850</guid>
		<description><![CDATA[					
					Ajax Username Checker &#8211; Ajax Username Checkerのサンプル
					&#8211; jQuery、PHP、CSVを組み合わせて、入力したユーザ [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/validation_alpha/"><img class="alignnone size-full wp-image-851" title="checkusername" src="http://5509.me/wp-content/uploads/2009/02/checkusername.gif" alt="checkusername" width="203" height="68" /></a></p>
					<p><a href="http://www.shawngo.com/2008/04/ajax-username-checker-update/">Ajax Username Checker</a> &#8211; <a href="http://www.shawngo.com/gafyd/index.html">Ajax Username Checkerのサンプル</a><br />
					&#8211; jQuery、PHP、CSVを組み合わせて、入力したユーザネームが利用できるかどうかをチェックできるよ！</p>
					<p>というのがあるんですが<a href="http://okwave.jp/qa4684538.html">OKWave（と教えてgoo）からリファラーがきてて</a><br />
					みたら <a href="http://5509.me/2008/08/22/realtimeformvalidation.html">jQuery.validation.js</a>とAjax Username Checkerを一緒に使えないか みたいな感じでした。</p>
					<p>で 面白いのでjQuery.validation.jsで使えるようにソースを修正してみました。</p>
					<p><a href="http://5509.me/sample/validation_alpha/">実際に動作してるサンプル</a></p>
					<p><span id="more-850"></span></p>
					<h2>同時に使う（チップにユーザチェックの結果を表示する）には</h2>
					<h3>まずはcheck.phpを少し変えます</h3>
					<pre name="code" class="php">

&lt;?
$username = $_POST[&#039;username&#039;]; // get the username
$username = trim(htmlentities($username)); // strip some crap out of it
$file = &#039;/home/js4hire/public_html/gafyd/data.csv&#039;; // Here&#039;s the file. Notice the full path.

echo check_username($file,$username); // call the check_username function and echo the results.

function check_username($file_in,$username){
$username=strtolower($username);
$file = file($file_in);
foreach ($file as $line_num =&gt; $line) {
$line = explode(&#039;,&#039;,$line);
$user = trim(str_replace(&#039;&quot;&#039;,&#039;&#039;,$line[0]));
if($username == strtolower($user)){
return &#039;&lt;span style=&quot;color:#f00&quot;&gt;Username Unavailable&lt;/span&gt;&#039;; // ここを変える
}
}
return &#039;&lt;span style=&quot;color:#0c0&quot;&gt;Username Available&lt;/span&gt;&#039;; // ここを変える
}
?&gt;
</pre>
					<p>上記ソースの<strong>ここを変える部分をそれぞれ true と false に</strong>。<br />
					PHPには判定だけしてもらって表示するテキストはJS側で操作することにします。</p>
					<p>変更後のソースが↓です。<br />
					<strong>CSVはサイトパスが必要なんですがサイトパス部分は表記してないです。<br />
					使うサーバとCSVの場所に合わせて変えてください。</strong></p>
					<pre name="code" class="php">

&lt;?
$username = $_POST[&#039;username&#039;]; // get the username
$username = trim(htmlentities($username)); // strip some crap out of it
$file = &#039;(sitepath)/data.csv&#039;; // Here&#039;s the file. Notice the full path.

echo check_username($file,$username); // call the check_username function and echo the results.

function check_username($file_in,$username){
$username=strtolower($username);
$file = file($file_in);
foreach ($file as $line_num =&gt; $line) {
$line = explode(&#039;,&#039;,$line);
$user = trim(str_replace(&#039;&quot;&#039;,&#039;&#039;,$line[0]));
if($username == strtolower($user)){
return &#039;false&#039;;
}
}
return &#039;true&#039;;
}
?&gt;
</pre>
					<p>PHPの修正が終わったら次はJSソースの修正です。</p>
					<h3>まずは普通にアクティベート</h3>
					<pre name="code" class="js">

$(function(){
$(&quot;.validate&quot;).validation({
msgs: {
email: &quot;正しいEメールアドレスを入力してください&lt;br /&gt;例：info@5509.me&quot;,
submit: &quot;入力が完了していない&lt;strong&gt;必須項目&lt;/strong&gt;があります。&lt;br /&gt;&lt;strong&gt;必須項目は全て入力&lt;/strong&gt;してください。&quot;
},
dialog: {
dialogOpacity: .8
}
});
//ここに①を追記
});
//ここに②を追記
</pre>
					<p>上記ソースの <strong>//ここに①（②）を追記</strong> 部分に必要なところを足していくことにします</p>
					<h3>まずは画像のプリロード</h3>
					<p>ローディング画像は先日人気になってた<a href="http://www.preloaders.net/">Preloaders.net</a>などからダウンロードして<br />
					以下のソースでプリロードしておきます。これをしないと初回の読み込み時によくないことが起こります。</p>
					<pre name="code" class="js">

// ローディング画像のプリロード
var loading = new Image();
loading.src = &quot;img/indicator.gif&quot;; // パスは適宜変えてください
</pre>
					<h3>ユーザチェックのためにイベントを関連付ける</h3>
					<p>これより以下で出てくる <strong>$.tip</strong> はjQuery.validationで定義してるものです。<br />
					一応解説しておきます。</p>
					<h4>$.tip.msg(id,msg)</h4>
					<p>チップにメッセージを表示させる。<br />
					<strong>対象チップに対応するinput要素のID</strong>をidに、対象チップに表示させる<strong>HTMLタグが使える文字列</strong>をmsgにそれぞれ引数として指定します。</p>
					<h4>$.tip.fadeIn(id)</h4>
					<p>非表示のチップを表示（フェードイン）させる。<br />
					idには<strong>対象チップに対応するinput要素のID</strong>を引数として指定します。</p>
					<pre name="code" class="js">

$(&#039;#name&#039;).blur(function(){
if($(this).val().length&lt;1) return false;
$.post(&quot;check.php&quot;,{
username: $(&#039;#name&#039;).val() // 参照する値がcsvデータとの比較
},function(response){ // response : csvにデータがあった場合は&quot;true&quot;、ない場合は&quot;false&quot;が返ってくる
$.tip.msg(&quot;name&quot;,&quot;&lt;img src=&#039;img/indicator.gif&#039; alt=&#039;Loading...&#039; /&gt;&quot;); // チップの中身をローディング画像にする
$.tip.fadeIn(&quot;name&quot;); // チップを表示
setTimeout(&quot;finishAjax(&#039;name&#039;, &#039;&quot;+escape(response)+&quot;&#039;)&quot;, 1000); // 1000ミリ秒後に finishAjaxを実行する
});
return false;
});
</pre>
					<p>上記でたびたび出てくる &#8220;#name&#8221; とか &#8220;name&#8221; は<br />
					<strong>ユーザネームチェックをするinput要素のID</strong>を入れます。</p>
					<p><strong>$.tip.msg()と$.tip.fadeIn()の中は#が必要ないです。</strong></p>
					<p><strong>&#8212;上記2つは①に追記します</strong></p>
					<h3>表示するテキストを決めるfunctionを作る</h3>
					<pre name="code" class="js">

function finishAjax(id, response){
// OKな場合とダメな場合のテキスト
var txt = {
ok: &quot;&lt;span style=&#039;color: #0c0&#039;&gt;Username Available&lt;/span&gt;&quot;,
bad: &quot;&lt;span style=&#039;color: #f00&#039;&gt;Username Unavailabe&lt;/span&gt;&quot;
}
// responseの値でflagを作る
var flag = unescape(response)==&quot;true&quot; ? true : false;
// flagがtrueかfalseで表示するテキストを変える
if(flag){
$.tip.msg(id,txt.ok); // テキストの表示
// trueの場合はチップから必須クラスを取り除く（あるとsubmitでエラーを返すため
$(&quot;#&quot;+id+&quot;_tip&quot;).removeClass(&quot;requiredTip&quot;);
}else{
$.tip.msg(id,txt.bad);
// falseの場合はチップに必須クラスを付加する
$(&quot;#&quot;+id+&quot;_tip&quot;).addClass(&quot;requiredTip&quot;);
}
}
</pre>
					<p>表示するテキストは txt.ok, txt.bad の値を変えるだけです。<br />
					タグが使えるのでそれなりに自由に表示できます。<br />
					チップ自体もタテ・ヨコに広がるので制限はほとんどないです。</p>
					<p>上の例はめんどくさがりな人がAjax Username Checkerのソースをそのまま貼り付けただけなので<br />
					span要素のstyle属性が指定されてますが、style属性は使わずにclassで指定しましょう…</p>
					<p><strong>&#8212;上記は②に追記します</strong></p>
					<h2><strong>これだけ</strong></h2>
					<p>以上でjQuery.validation.jsとAjax Username Checkerが併用できるようになります。<br />
					<a href="http://5509.me/sample/validation_alpha/">サンプルのようにUsername Checkerも動作しています。</a></p>
					<p>名前入力後 1文字以上ならユーザネームのチェックをします。<br />
					CSVは手を加えずにAjax Username Checkerと同じものを使ってるので<br />
					john、username などでエラーが表示されると思います。</p>
					<h2><strong>サンプルファイルのダウンロード</strong></h2>
					<p><a href="http://5509.me/sample/archive/validation_alpha.zip">validation_alpha.zip(41KB)</a></p>
					<p class="note">*注意）check.php内 $file = &#8216;(sitepath)/data.csv&#8217;; の (sitepath) は適宜変える必要があります。<strong><br />
					</strong></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=850&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jqueryvalidationjs-with-ajaxusernamecheck/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>AutoPagerizeをWordPressで WP-AutoPagerizeプラグイン</title>
		<link>http://5509.me/log/wp-autopagerize</link>
		<comments>http://5509.me/log/wp-autopagerize#comments</comments>
		<pubDate>Sun, 25 Jan 2009 15:00:25 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[イライラ解消]]></category>
		<category><![CDATA[プラグイン]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=827</guid>
		<description><![CDATA[					新しいバージョンを公開しました
					
					先日試した自分のサイトでAutoPagerizeを使うからの延長で
					自分のWordPressにAutoPagerizeを手軽に導入できるプラグイン [...]]]></description>
			<content:encoded><![CDATA[					<div class="note"><a href="http://5509.me/log/wpautopagerize">新しいバージョン</a>を公開しました</div>
					<p><a href="http://sample.5509.me/"><img class="alignnone size-full wp-image-828" title="wp-autopagerize" src="http://5509.me/wp-content/uploads/2009/01/wp-autopagerize.gif" alt="wp-autopagerize" width="194" height="81" /></a></p>
					<p>先日試した<a href="http://5509.me/2009/01/08/autopagerize.html">自分のサイトでAutoPagerizeを使う</a>からの延長で<br />
					自分のWordPressにAutoPagerizeを手軽に導入できるプラグインを作りました。</p>
					<p>色々と方法はあったんですけれど<br />
					とりあえずは、Pagenavi付き・jQuery使用になってます。<br />
					（上記の2点は好みが分かれそうですね…</p>
					<p><a href="http://sample.5509.me/">サンプルとして実際に動作している環境のWordPressを用意しました。</a></p>
					<p><span id="more-827"></span></p>
					<h2>トピックス</h2>
					<ul>
					<li><a href="#download">ダウンロード</a></li>
					<li><a href="#install">導入方法</a></li>
					<li><a href="#setting">設定</a></li>
					<li><a title="jQuery.seletable.jsサンプルへのリンク" href="http://sample.5509.me/">サンプル</a></li>
					<li><a href="#edited">追記・更新履歴</a></li>
					<li><a href="#spec">動作環境</a></li>
					</ul>
					<h2 id="download">ダウンロード</h2>
					<dl>
					<dt>プラグインファイル</dt>
					<dd><a href="/sample/archive/wp-autopagerize.zip">wp-autopagerize.zip(22KB)</a></dd>
					</dl>
					<h2 id="install">導入方法</h2>
					<p>ファイルをDL解凍後、<br />
					WordPressのプラグインフォルダにアップロードしてアクティベートしてください。</p>
					<p>アクティベートしたら、任意のテンプレートファイルに下記のソースを貼り付けます。</p>
					<pre name="code" class="php">

&lt;?php if(function_exists(&#039;wp_autopagerize&#039;)) { wp_autopagerize(&quot;div.post&quot;,true,1,&quot;Prev&quot;,&quot;Next&quot;); } ?&gt;
</pre>
					<p>以上で<strong>AutoPagerizeの機能が付属したページナビゲーションが追加</strong>されます。<br />
					<strong>ページナビゲーションも追加するのでWP-Pagenaviなどを使っている人は機能が重複します</strong>。</p>
					<p><strong>ページナビゲーションの一番左の四角（デフォルトで）をクリックすると<br />
					AutoPagerizeのON/OFFが切り替わります。</strong>（Cookie付き）</p>
					<p>HTMLの構造が複雑な場合はうまく動作しないかもしれません。<br />
					その場合はコメントかメールにて教えてもらえると対処できるかもしれません。</p>
					<h2 id="setting">設定</h2>
					<h3>AutoPagerizeで追加する要素</h3>
					<p>追加する要素はwp_autopagerize関数の第一引数で指定します。<br />
					たとえば、div.entryを指定する場合は以下のようになります。</p>
					<pre name="code" class="php">

wp_autopagerize(&quot;div.entry&quot;,true,1,&quot;Prev&quot;,&quot;Next&quot;);
</pre>
					<p>複数指定ができます。複数の要素を指定する場合はカンマで区切るだけです。</p>
					<pre name="code" class="php">

wp_autopagerize(&quot;div.entry,div.post&quot;,true,1,&quot;Prev&quot;,&quot;Next&quot;);
</pre>
					<p>指定方法はjQueryのセレクタと同じです。</p>
					<h3>jQueryを読み込むかどうか</h3>
					<p>WP-AutoPagerizeではjQueryを使っています。<br />
					jQueryを読み込むかどうかを第二引数で指定します。</p>
					<p>WP-AutoPagerizeを導入するWordPressで既にjQueryを使っている場合は<br />
					<strong>false を指定</strong>します。</p>
					<pre name="code" class="php">

wp_autopagerize(&quot;div.entry,div.post&quot;,false,1,&quot;Prev&quot;,&quot;Next&quot;);
</pre>
					<p><strong>使っていない場合は true を指定</strong>します。</p>
					<pre name="code" class="php">

wp_autopagerize(&quot;div.entry,div.post&quot;,true,1,&quot;Prev&quot;,&quot;Next&quot;);
</pre>
					<p>ここは書き直す必要があるかもしれませんが<br />
					最近はjQueryもだいぶひろまってきてますので…</p>
					<h3>デフォルトの動作（AutoPagerizeを有効にするか無効にするか）</h3>
					<p>有効にしておくか無効にしておくかは、第三引数で指定します。<br />
					有効にする場合は 1 、無効にする場合は 0 を指定します。</p>
					<pre name="code" class="php">

wp_autopagerize(&quot;div.entry,div.post&quot;,true,0,&quot;Prev&quot;,&quot;Next&quot;);
</pre>
					<p><strong>有効にしておけば、最初にON/OFFボタンをクリックしなくても<br />
					AutoPagerizeでページを読み込み追加します。</strong></p>
					<h3>prev, nextの文字を変える場合</h3>
					<p>prevは第四引数、nextは第五引数でそれぞれ指定できます。</p>
					<pre name="code" class="php">

wp_autopagerize(&quot;div.entry,div.post&quot;,true,0,&quot;前へ&quot;,&quot;次へ&quot;);
</pre>
					<h2>参考サイト</h2>
					<p>ページナビゲーション部分で以下のサイトを参考にさせていただきました。</p>
					<ul>
					<li><a href="http://www.yuriko.net/arc/2008/07/26/navigation/">Yuriko.net(WP-PageNaviを使わずにナビゲーション表示)</a></li>
					<li><a href="http://www.rusica.net/heft/first-steps-after-a-fresh-wordpress-install">der Gegenwart(私がWordPressをインストールしたとき最初にすること)</a></li>
					</ul>
					<dl id="spec">
					<dt>動作環境</dt>
					<dd>Windows: IE7, Firefox3, Opera9.5, Safari3, Chromeで確認</dd>
					</dl>
					<img src="http://5509.me/?ak_action=api_record_view&id=827&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/wp-autopagerize/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>jQuery.selectable.jsのアップデート</title>
		<link>http://5509.me/log/jqueryselectablejs-updated</link>
		<comments>http://5509.me/log/jqueryselectablejs-updated#comments</comments>
		<pubDate>Tue, 20 Jan 2009 18:39:16 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[イライラ解消]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=819</guid>
		<description><![CDATA[					
					変更項目は、
					
					select置き換えをやめて表示部分はa+span要素に構成変更
					選択時のフォーカス
					デザインをスキンで簡単に変更できるようにした
					 [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/jQueryselectable/"><img class="alignnone size-full wp-image-820" title="selectable_update" src="http://5509.me/wp-content/uploads/2009/01/selectable_update.gif" alt="selectable_update" width="284" height="149" /></a></p>
					<p>変更項目は、<strong></strong></p>
					<ul>
					<li><strong>select置き換えをやめて表示部分はa+span要素に構成変更</strong></li>
					<li><strong>選択時のフォーカス</strong></li>
					<li><strong></strong><strong>デザインをスキンで簡単に変更できる</strong>ようにした</li>
					</ul>
					<p>です。</p>
					<p><a href="http://5509.me/2008/09/14/jqueryselectable.html">jQuery.selectable.jsの記事にも追記</a>してます。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=819&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jqueryselectablejs-updated/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>deliciousとFlickr</title>
		<link>http://5509.me/log/deliciousflickr</link>
		<comments>http://5509.me/log/deliciousflickr#comments</comments>
		<pubDate>Fri, 16 Jan 2009 11:08:22 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[delicous]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[memo]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=797</guid>
		<description><![CDATA[					
					些細で周知な事でなんでしょうけど。。。
					deliciousとFlickrはおおまかにいうとどちらも米Yahooの便利なサービスですが
					deliciousでFlickrの個別ページ [...]]]></description>
			<content:encoded><![CDATA[					<p><img class="alignnone size-full wp-image-798" title="deliciousflickr" src="http://5509.me/wp-content/uploads/2009/01/deliciousflickr.gif" alt="deliciousflickr" width="529" height="131" /></p>
					<p>些細で周知な事でなんでしょうけど。。。</p>
					<p><a href="http://delicious.com/">delicious</a>と<a href="http://flickr.com/">Flickr</a>はおおまかにいうとどちらも米Yahooの便利なサービスですが<br />
					deliciousでFlickrの個別ページ（たとえば<a href="http://flickr.com/photos/nori_17/2615047058/">これみたいな</a>）をブックマークすると<br />
					写真（画像）のサムネイルが表示されるんですね…</p>
					<p>知らなかった…</p>
					<p>関係ないですがdeliciousと言えばドメインが前のリニューアル時<br />
					del.icio.us から delicious.com<br />
					に変わったのは残念でした…</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=797&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/deliciousflickr/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[未完成] スライダーから時間を選択する</title>
		<link>http://5509.me/log/timeslide</link>
		<comments>http://5509.me/log/timeslide#comments</comments>
		<pubDate>Sun, 11 Jan 2009 17:14:26 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ユーザビリティ]]></category>
		<category><![CDATA[未完成]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=782</guid>
		<description><![CDATA[					せっかくの勉強のログなので未完成・ボツネタも公開しておきます。
					スライダーから時間を選択する
					経緯
					ある案件で時間をスライダから選択できるものがほしい
					と言われ、UI S [...]]]></description>
			<content:encoded><![CDATA[					<p>せっかくの勉強のログなので未完成・ボツネタも公開しておきます。</p>
					<h2>スライダーから時間を選択する</h2>
					<h3>経緯</h3>
					<p>ある案件で<strong>時間をスライダから選択できるもの</strong>がほしい<br />
					と言われ、UI Sliderの勉強も兼ねてなんとなく作っていたところ</p>
					<p><a href="http://www.filamentgroup.com/lab/progressive_enhancement_convert_select_box_to_accessible_jquery_ui_slider/">資料集めてる途中で断然使いやすいものを見つけてしまい</a>なんとなく折れてしまいました。</p>
					<h3>中途半端な出来。。。</h3>
					<p>僕が<a href="http://5509.me/sample/timeslide/">作りかけていたものはこれ</a>。。。<br />
					中途半端な感じですけど やりたかったのはこんな感じ。</p>
					<p>select要素からスライダ作成して イベント繋げて っていう<a href="http://5509.me/2008/09/14/jqueryselectable.html">selectable</a>みたいなやつです。<br />
					UI Sliderの使い方は一通り理解できたのでこれはこれでよかったかなぁ。</p>
					<p>とりあえず近いうちにUI Sliderの使い方でも解説してみます。</p>
					<p>と思ったら<a href="http://journal.mycom.co.jp/articles/2008/07/03/jqueryui/index.html">マイコミのハウツー</a>にあった…笑</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=782&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/timeslide/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPressのホームに表示する画像をランダムで変える</title>
		<link>http://5509.me/log/wp-random-image</link>
		<comments>http://5509.me/log/wp-random-image#comments</comments>
		<pubDate>Fri, 09 Jan 2009 17:19:47 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[memo]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=764</guid>
		<description><![CDATA[					ていうのをリニューアルしたときからしてるんですが（て言っても2枚だけ。。。）
					WP Super Cacheのキャッシュ機能で一定時間毎しか更新されないので 全然意味がない…
					Smashing [...]]]></description>
			<content:encoded><![CDATA[					<p>ていうのをリニューアルしたときからしてるんですが（て言っても2枚だけ。。。）<br />
					<a href="http://ocaoimh.ie/wp-super-cache/">WP Super Cache</a>のキャッシュ機能で一定時間毎しか更新されないので 全然意味がない…</p>
					<p><a href="http://www.smashingmagazine.com/2009/01/07/10-killer-wordpress-hacks/">Smashing Magazineでちょうど紹介されてた</a>ので（ちょっと違うけど）ソースでも。</p>
					<h2>アクセス毎にランダムで画像を切り替える</h2>
					<p>前もって</p>
					<ul>
					<li>/img/share/img00.jpg</li>
					<li>/img/share/img01.jpg</li>
					</ul>
					<p>といった具合に画像を用意しておいて以下をheader.phpなどに記述するだけです。</p>
					<pre name="code" class="php">

&lt;div id=&quot;img&quot;&gt;&lt;?php if(is_home()){ // homeだけしか画像は表示しない
$num = rand(0,1); // 画像の枚数分 2枚を切り替える場合は 0か1だけ
echo &#039;&lt;img src=&quot;/img/share/img0&#039; . $num . &#039;.jpg&quot; alt=&quot;&quot; /&gt;&#039;; // 画像を表示
} ?&gt;&lt;/div&gt;
&lt;!--//Image--&gt;
</pre>
					<p>Smashing Magazineはヘッダの背景に読ませてますね。<br />
					どっちにしろ最初に書いたようにWP Super Cacheを使ってる場合はあんまり意味ないです…</p>
					<p>それよりもスライドでもなんでもギャラリーを作りたいなぁ 勉強用に。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=764&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/wp-random-image/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery.validation.jsのアップデート（入力文字数制限）</title>
		<link>http://5509.me/log/jqueryvalidationjs-updated3</link>
		<comments>http://5509.me/log/jqueryvalidationjs-updated3#comments</comments>
		<pubDate>Fri, 09 Jan 2009 12:37:00 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[イライラ解消]]></category>
		<category><![CDATA[フォーム]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=754</guid>
		<description><![CDATA[					
					要望のあった文字数チェックを追加したので使い方の抜粋を載せておきます。
					詳しくはjQuery.validation.jsの記事を参照してください。
					入力文字数をチェックする場合
 [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/validation/"><img class="alignnone size-full wp-image-759" title="jQuery.validation.jsアップデートキャプチャ" src="http://5509.me/wp-content/uploads/2009/01/jqueryvalidationjsupdate3.gif" alt="jQuery.validation.jsアップデートキャプチャ" width="349" height="61" /></a></p>
					<p>要望のあった文字数チェックを追加したので使い方の抜粋を載せておきます。<br />
					詳しくは<a href="http://5509.me/2008/08/22/realtimeformvalidation.html">jQuery.validation.js</a>の記事を参照してください。</p>
					<h3 id="install6">入力文字数をチェックする場合</h3>
					<p>パスワードなどの項目に入力文字数の制限をかけたいときは</p>
					<pre name="code" class="xhtml">

&lt;input type=&quot;password&quot; id=&quot;pass&quot; name=&quot;pass&quot; value=&quot;&quot; class=&quot;required min6 max12&quot; /&gt;
</pre>
					<p>のようにclassに</p>
					<ul>
					<li>minX</li>
					<li>maxX (Xはともに任意の数字)</li>
					</ul>
					<p>を含ませます。もちろんmin・maxどちらか一方だけを指定でき、<br />
					また他のすべてのチェックと併用することができます。<br />
					ただし複数項目のメールアドレスは 文字列に@を含めるので1文字多く数えられます。<br />
					(メールアドレスに入力文字数制限を使うことはないと思うのでそのままにしてます。)</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=754&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jqueryvalidationjs-updated3/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AutoPagerize</title>
		<link>http://5509.me/log/autopagerize</link>
		<comments>http://5509.me/log/autopagerize#comments</comments>
		<pubDate>Thu, 08 Jan 2009 11:41:15 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=727</guid>
		<description><![CDATA[					
					*WordPressプラグインもあります
					Greasemonkeyで有名なAutoPagerize、最近ははてなブックマークでも取り入れられて
					機能としてサイト側でやるものかどう [...]]]></description>
			<content:encoded><![CDATA[					<p><img class="alignnone size-full wp-image-748" title="autopagerize" src="http://5509.me/wp-content/uploads/2009/01/autopagerize.gif" alt="autopagerize" width="399" height="235" /></p>
					<p class="note">*<a href="http://5509.me/2009/01/26/wp-autopagerize.html">WordPressプラグインもあります</a></p>
					<p>Greasemonkeyで有名な<a href="http://userscripts.org/scripts/show/8551">AutoPagerize</a>、最近ははてなブックマークでも取り入れられて<br />
					機能としてサイト側でやるものかどうかっていう話も聞いたりしました。</p>
					<p>AutoPagerizeは一度使ったらもう手放せないくらい便利ですけど<br />
					これを自分でやってみました。</p>
					<p><span id="more-727"></span></p>
					<p>使い方は簡単、<br />
					5509内 <a href="http://5509.me/">ホーム</a>・カテゴリ・タグ・検索のいずれかのページで、ページナビゲーションがある場合<br />
					ページナビゲーションにカーソルが近付くと自動で次のページを読み込んで下に追加表示します。</p>
					<p><span style="text-decoration: line-through;">ひとつだけ出来なかったところがあって<br />
					AutoPagerizeで読み込んだ部分は<a href="http://code.google.com/p/syntaxhighlighter/">Syntaxhighlighter</a>が適用できてないです。。</span><a href="#syntax">解決、追記しました</a></p>
					<h2>ソース（ログ）</h2>
					<pre name="code" class="js">

// AutoPagerize
if($(&quot;div.wp-pagenavi&quot;,&quot;#main&quot;).length&gt;0){
// WP-PageNaviで生成される div.wp-pagenavi を取得して基準にする
var pageNav = $(&quot;div.wp-pagenavi&quot;,&quot;#main&quot;);

// 後でフラグエリアを決めるためドキュメントとウィンドウの高さを得る
var dE = document.documentElement;
var h = dE.clientHeight;
var maxH = dE.scrollHeight;

// 初期ページ
var page = 1;

// URIに page/\d+ を含んでいる場合は \d+ に +1 したものを返す
var loc = function(page){
return this.uri = location.href.match(/(\w+:\/\/[\w-.]+[\/\w\d-_]*)(\/*page\/)(\d+)/) ? RegExp.$1+RegExp.$2+(parseInt(RegExp.$3)+page) : (location.href.match(/\/$/) ? location.href : location.href+&quot;/&quot;)+&quot;page/&quot;+(page+1);
}

// ローディング画像を表示するためにDivを生成して非表示にしておく
$(&quot;body&quot;).append(&quot;&lt;div id=&#039;pageLoading&#039;&gt;&lt;/div&gt;&quot;);
var pageLoading = $(&quot;#pageLoading&quot;);
pageLoading.hide();

// PageRize
var pageRize = function(){
pageLoading.show();

// 次のページを取得して 追加する
$.ajax({
url: loc(page),
success: function(html){

// #notFound がある場合はエラーなので何もしない
if($(&quot;#notFound&quot;,html).length&lt;1){
page++;

// Page: 2 みたいなのを追加
pageNav.before(&quot;&lt;p id=&#039;page-&quot;+page+&quot;&#039;&gt;Page: &lt;a href=&#039;&quot;+loc(page-1)+&quot;&#039;&gt;&quot;+page+&quot;&lt;/a&gt;&lt;/p&gt;&quot;);

// 取得したページの #main直下の要素(div.entryのみ)を追加する
pageNav.before($(&quot;#main&gt;*&quot;,html).filter(function(){return !$(this).hasClass(&quot;wp-pagenavi&quot;)}));

// 追加したdiv.entryを含めたすべてのdiv.entryにSBMボタンと左のガイドを追加する
$(&quot;div.entry&quot;).each(function(){
$(&quot;ul.entryGuide&gt;li&quot;,this).remove();
$(this).addEntryGuide();
$(this).addBookmarksInit();
});

// Opera以外にslideScrollを適用する - 調査中
if(!$.browser.opera) $(&quot;a[href*=&#039;#&#039;]&quot;).slideScroll();

// ドキュメントの高さを更新する
maxH = dE.scrollHeight;

// SyntaxHighlighterを実行
dp.SyntaxHighlighter.ClipboardSwf = &#039;clipboard.swfへのパス/clipboard.swf&#039;;
dp.SyntaxHighlighter.HighlightAll(&quot;code&quot;);

// addPageRizeを実行して ドキュメント下にフラグエリアを作る
addPageRize();
}

pageLoading.hide();
},
// エラーの場合はローディングを非表示にして何もしない
error: function(){
pageLoading.hide();
}
});
}

// ドキュメント下にフラグエリアを作る
function addPageRize(){

// マウスカーソルが maxH-h の位置にきたらpageRize()を実行する
$(document).mousemove(function(e){
if(e.pageY&lt;(maxH-h)) return false;
pageRize();

// 何度も実行しないように一度実行したらイベントを解除する
$(this).unbind(&quot;mousemove&quot;);
});
}
addPageRize(); // initialize;
}
</pre>
					<h2 id="syntax">dp.SyntaxHighlighter.HighlightAll(&#8220;code&#8221;)実行時の注意</h2>
					<p>pre[name='code'], textarea[name='code']にSyntaxHighlighterを適用するのが</p>
					<p>dp.SyntaxHighlighter.HighlightAll(&#8220;code&#8221;)</p>
					<p>なんですが、このまま実行するとHTML中に存在する<br />
					pre[name='code'], textarea[name='code']全てに適用してしまってAutoPagerizeで追加する前の<br />
					すでに適用されてる要素にまで適用されてソースコードが2つ並んでしまいます。</p>
					<p><strong>SyntaxHighlighterの仕様は元のpre, textareaをdisplay:noneにしてからその前に追加する</strong><br />
					ので、<strong>すでに適用されたdisplay: noneのコードには追加しないようにする必要があります</strong>。</p>
					<p>SyntaxHighlighterのソースコードは圧縮されていて修正もしにくいので<br />
					<a href="http://elfz.laacz.lv/beautify/">Online Beautifier for JavaScript</a>などで読みやすい形にすれば修正しやすくなります。</p>
					<pre name="code" class="js">

function FindTagsByName(list, name, tagName) {
var tags = document.getElementsByTagName(tagName);
for (var i = 0; i &lt; tags.length; i++)
if (tags[i].getAttribute(&#039;name&#039;) == name) list.push(tags[i]);
}
</pre>
					<p>というところを探して</p>
					<pre name="code" class="js">

function FindTagsByName(list, name, tagName) {
var tags = document.getElementsByTagName(tagName);
for (var i = 0; i &lt; tags.length; i++)
if (tags[i].getAttribute(&#039;name&#039;) == name &amp;&amp; tags[i].style.display != &quot;none&quot;) list.push(tags[i]);
}
</pre>
					<p>にすればうまくいくようになります。（4行目を修正）</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=727&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/autopagerize/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>5509</title>
		<link>http://5509.me/log/5509</link>
		<comments>http://5509.me/log/5509#comments</comments>
		<pubDate>Sat, 03 Jan 2009 21:20:44 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[design]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=677</guid>
		<description><![CDATA[					ようやく 始めたころからずっとやりたかったデザインリニューアルをしました。
					タイトルもなんとなく決めたものだったので デザインにあわせてやっぱりなんとなく変えました。
					ドメインはなんとなく決 [...]]]></description>
			<content:encoded><![CDATA[					<p>ようやく 始めたころからずっとやりたかったデザインリニューアルをしました。<br />
					タイトルもなんとなく決めたものだったので デザインにあわせてやっぱりなんとなく変えました。<br />
					ドメインはなんとなく決めた前のやつを引き継ぎます。。。</p>
					<p>moto-mono 改め <a href="http://5509.me/">5509</a> です。<br />
					やることは今まで通り勉強のログとバイク（全然ないけど）に加えて<br />
					WordPressのテーマなんかも作ってみたいし<br />
					リソースが英語しかないWordPress・jQueryプラグインの解説も出来たらいいなぁ。。。</p>
					<h2>直すべきところ(IE6)</h2>
					<ul>
					<li>SyntaxHighLighter内のソースが1行ずれてる</li>
					<li>SyntaxHighLighterとの併用で？jQuery.valildation.jsでエラーが出る？</li>
					</ul>
					<img src="http://5509.me/?ak_action=api_record_view&id=677&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/5509/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>スライドスクロールページ内リンク slideScroll.js (jQuery非依存)</title>
		<link>http://5509.me/log/slidescrolljs</link>
		<comments>http://5509.me/log/slidescrolljs#comments</comments>
		<pubDate>Wed, 24 Dec 2008 16:50:52 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[ナビゲーション]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/2008/12/25/slidescrolljs.html</guid>
		<description><![CDATA[					先日のjQuery.slideScroll.jsでjQuery無しでも動くようにしてほしいと要望があったので
					jQueryなしの単体で動作するように微妙に書きなおしました。
					こちらはアンカー [...]]]></description>
			<content:encoded><![CDATA[					<p>先日の<a href="http://5509.me/2008/12/23/jqueryslidescrolljs.html">jQuery.slideScroll.js</a>でjQuery無しでも動くようにしてほしいと要望があったので<br />
					jQueryなしの単体で動作するように微妙に書きなおしました。</p>
					<p>こちらはアンカーの指定は出来ずにすべてのページ内リンクに対して動作しますので<br />
					タブとかがあるとそこの動きはおかしくなります。タブも使う場合は<a href="http://5509.me/2008/12/23/jqueryslidescrolljs.html">jQuery依存のほうを使ってください</a>…</p>
					<p><a href="/sample/slidescroll2/">slideScroll.jsのサンプルを見る<br />
					</a></p>
					<p><span id="more-660"></span></p>
					<h2>トピックス</h2>
					<ul>
					<li><a href="#download">ダウンロード</a></li>
					<li><a href="#install">導入方法</a></li>
					<li><a href="#setting">設定</a></li>
					<li><a title="jQuery.seletable.jsサンプルへのリンク" href="/sample/jqueryslidescroll/">サンプル</a></li>
					<li><a href="#edited">追記・更新履歴</a></li>
					<li><a href="#spec">動作環境</a></li>
					</ul>
					<h2 id="download">ダウンロード</h2>
					<dl>
					<dt>JSファイル</dt>
					<dd><a href="/sample/slidescroll2/js/slidescroll.js">slidescroll.js(1.6KB)</a></dd>
					<dt>サンプルファイル</dt>
					<dd><a href="/sample/archive/slidescroll2.zip">slidescroll2.zip(4KB)</a></dd>
					</dl>
					<h2 id="install">導入方法</h2>
					<p>スクリプトファイルを以下のように読み込むだけです。</p>
					<pre name="code" class="xhtml">

&lt;script type=&quot;text/javascript&quot; src=&quot;/js/slidescroll.js&quot;&gt;&lt;/script&gt;
</pre>
					<p>読み込むだけで全てのページ内リンクに適用します。</p>
					<h2 id="setting">設定</h2>
					<h3>実行速度とスクロール量</h3>
					<p>スクロールの実行速度とスクロール量の微調整が出来ます。<br />
					slidescroll.jsスクリプトファイル内の17・18行目を変更します。</p>
					<pre name="code" class="js">

var interval = 20;
var easing = 0.6;
</pre>
					<p>interval: 10、easing: 1.5とかだと 下りのときに最後カクってなります。。。<br />
					こちらも横移動に対応してます。</p>
					<h3>外部ハッシュリンク</h3>
					<p>外部ハッシュリンクにも対応してますが、Webkit(SafariとChrome)でうまく動かないです。。。<br />
					正式実装にはなってないので、オプションにしてます。<br />
					使いたい場合は、スクリプトファイル内19行目を以下のように変更します。</p>
					<pre name="code" class="js">

var comeLink = true;
</pre>
					<h3>その他のこと</h3>
					<p><strong>下りのeaseOut(ブラウザ表示最大高・幅～ブラウザ最大高・幅-</strong><strong>表示高・幅にリンクがある場合)</strong><strong>に対応してます</strong>。<br />
					むしろウリはここくらいか…笑 もしスクロール先の微調整がほしい人がいれば機能追加します。</p>
					<h2 id="edited">更新履歴・追記</h2>
					<dl>
					<dt>2008.12.25</dt>
					<dd>ドキュメントはほとんどjQuery依存のと変わらないですけど。。</dd>
					</dl>
					<dl id="spec">
					<dt>動作環境</dt>
					<dd>Windows: IE6, IE7, Firefox3, Opera9.5, Safari3, Chrome(Webkitは一部バグあり)で確認</dd>
					</dl>
					<img src="http://5509.me/?ak_action=api_record_view&id=660&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/slidescrolljs/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>スライドスクロールページ内リンク jQuery.slideScroll.js</title>
		<link>http://5509.me/log/jqueryslidescrolljs</link>
		<comments>http://5509.me/log/jqueryslidescrolljs#comments</comments>
		<pubDate>Mon, 22 Dec 2008 16:07:22 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ナビゲーション]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/2008/12/23/jqueryslidescrolljs.html</guid>
		<description><![CDATA[					memo: Easingプラグインで実現するスクロールの方がきれいにスクロールできるのでおすすめです。
					jQuery.slideScroll.jsはよくあるページ内リンクをスクロールさせるやつです。
 [...]]]></description>
			<content:encoded><![CDATA[					<p class="memo">memo: <a href="http://5509.me/2009/05/18/page-scrolling-with-jqueryeasing.html">Easingプラグインで実現するスクロール</a>の方がきれいにスクロールできるのでおすすめです。</p>
					<p>jQuery.slideScroll.jsはよくあるページ内リンクをスクロールさせるやつです。<br />
					スクリプト内でjQueryはほとんど使ってなくてjQueryプラグインな必要もあんまりない感じですが<br />
					アンカーの指定がし易いのと僕がjQueryを99％使ってるのとでjQueryプラグインになってます<a href="#add081225">(*1</a>。</p>
					<p><a href="http://5509.me/2008/12/25/slidescrolljs.html"><strong id="add081225">*1) jQuery非依存版もあります</strong></a></p>
					<p>スクロール型のページ内リンクは<br />
					僕がJavaScriptをやってみようと思ったきっかけでもあって いつか自作できたらいいなぁと思ってたのでした。</p>
					<p><a href="/sample/slidescroll/">jQuery.slideScroll.jsのサンプルを見る<br />
					</a><span style="text-decoration: line-through;">5509でも読み込むようにしたのでサイト中のページ内リンクでも確認できます。<br />
					(トピックスがページ内リンクになってるのでそこで確認できます。)<br />
					</span><a href="http://5509.me/2009/05/18/page-scrolling-with-jqueryeasing.html">現在はeasingScrollを使っています。</a><span style="text-decoration: line-through;"></span></p>
					<p><span id="more-629"></span></p>
					<h2>トピックス</h2>
					<ul>
					<li><a href="#download">ダウンロード</a></li>
					<li><a href="#install">導入方法</a></li>
					<li><a href="#setting">設定</a></li>
					<li><a title="jQuery.seletable.jsサンプルへのリンク" href="/sample/slidescroll/">サンプル</a></li>
					<li><a href="#edited">追記・更新履歴</a></li>
					<li><a href="#spec">動作環境</a></li>
					</ul>
					<h2 id="download">ダウンロード</h2>
					<p>jQuery.slidescroll.jsはjQuery1.2.6が必要になります。(サンプルファイルには含まれています。)<br />
					jQuery非依存は<a href="http://5509.me/2008/12/25/slidescrolljs.html">slidescroll.jsの記事</a>に書きました。</p>
					<dl>
					<dt>JSファイル</dt>
					<dd><a href="/sample/slidescroll/js/jquery.slidescroll.js">jquery.slidescroll.js(3KB)</a></dd>
					<dt>サンプルファイル</dt>
					<dd><a href="/sample/archive/slidescroll.zip">jqueryslidescroll.zip(21KB)</a></dd>
					</dl>
					<h2 id="install">導入方法</h2>
					<p>スクリプトファイルを以下のように読み込み、</p>
					<pre name="code" class="xhtml">

&lt;script type=&quot;text/javascript&quot; src=&quot;/js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;/js/jquery.slidescroll.js&quot;&gt;&lt;/script&gt;
</pre>
					<p>head内か任意のJSファイルで以下のようにアンカーに適用します。<br />
					ちなみにa[href*='#'] でhref属性に#(ハッシュ)を含むアンカーと絞れます。<br />
					([href*='#']部分は別になくても動くんですが)</p>
					<pre name="code" class="xhtml">

&lt;script type=&quot;text/javascript&quot;&gt;
$(function(){
$(&quot;a[href*=&#039;#&#039;]&quot;).slideScroll();
});
&lt;/script&gt;
</pre>
					<p>タブスクリプトと併用する場合は、うまくいかなくなると思うんですけど<br />
					例えば下みたいなタブのアンカーを除外したい時は、</p>
					<pre name="code" class="xhtml">

&lt;ul class=&quot;tab&quot;&gt;
&lt;li&gt;&lt;a href=&quot;#tab1&quot;&gt;tab1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#tab2&quot;&gt;tab2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</pre>
					<p>適用するアンカーをfilterで絞ります。</p>
					<pre name="code" class="js">

$(function(){
$(&quot;a[href*=&#039;#&#039;]&quot;).filter(function(){
return !$(this).parent().parent().hasClass(&quot;tab&quot;);
}).slideScroll();
});
</pre>
					<p>上記の場合は、<strong>a要素の親の親(ul要素)のクラスにtabがある場合は除外</strong> ということになってます。<br />
					自分で作ったタブスクリプトならfilterもなしでいいんですけど、一般的にはこんな感じです。</p>
					<h2 id="setting">設定</h2>
					<h3>実行速度とスクロール量</h3>
					<p>スクロールの実行速度とスクロール量の微調整が出来ます。</p>
					<pre name="code" class="js">

$(&quot;a[href*=&#039;#&#039;]&quot;).slideScroll({
interval: 20, // 10～20あたり
easing: 0.6 // 0.4～2.0くらいまで
});
</pre>
					<p>interval: 10、easing: 1.5とかだと 下りのときに最後カクってなります。。。</p>
					<p>サンプルはないんですが、横移動も対応してます。</p>
					<h3>外部ハッシュリンク</h3>
					<p>外部ハッシュリンクにも対応してますが、Webkit(SafariとChrome)でうまく動かないです。。。<br />
					正式実装にはなってないので、オプションにしてます。<br />
					使いたい場合は、以下で有効にできます。それにしても微妙な動き…</p>
					<pre name="code" class="js">

$(&quot;a[href*=&#039;#&#039;]&quot;).slideScroll({
comeLink: true
});
</pre>
					<h3>その他のこと</h3>
					<p><strong>下りのeaseOut(ブラウザ表示最大高・幅～ブラウザ最大高・幅-</strong><strong>表示高・幅にリンクがある場合)</strong><strong>に対応してます</strong>。<br />
					むしろウリはここくらいか…笑 もしスクロール先の微調整がほしい人がいれば機能追加します。</p>
					<h2 id="edited">更新履歴・追記</h2>
					<dl>
					<dt>2008.12.26</dt>
					<dd>別ページへのリンクでハッシュがあり、かつそのハッシュのIDを含む要素がページ内に存在する場合にリンクが無効になっていたので修正しました。 </dd>
					<dt>2008.12.25</dt>
					<dd><a href="http://5509.me/2008/12/25/slidescrolljs.html">jQuery非依存版も作りました。</a></dd>
					<dt>2008.12.24</dt>
					<dd>サンプルにタブの例を追加、外部ハッシュリンクをオプションにしました。</dd>
					</dl>
					<dl id="spec">
					<dt>動作環境</dt>
					<dd>Windows: IE6, IE7, Firefox3, Opera9.5, Safari3, Chrome(Webkitは一部バグあり)で確認</dd>
					</dl>
					<img src="http://5509.me/?ak_action=api_record_view&id=629&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jqueryslidescrolljs/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>validation.jsをアップデートしました 2</title>
		<link>http://5509.me/log/validationjs-updated2</link>
		<comments>http://5509.me/log/validationjs-updated2#comments</comments>
		<pubDate>Sat, 13 Dec 2008 13:11:09 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[イライラ解消]]></category>
		<category><![CDATA[フォーム]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=600</guid>
		<description><![CDATA[					
					今回のアップデートで
					
					複数項目
					チェックボックス
					ラジオボタン
					
					をvalidation項目として含むことができるようになり
					 [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/validation/"><img class="alignnone size-full wp-image-602" title="validation.jsのアップデート画面キャプチャ" src="http://5509.me/wp-content/uploads/2008/12/validationupdate2.gif" alt="validation.jsのアップデート画面キャプチャ" width="450" height="216" /></a></p>
					<p>今回のアップデートで</p>
					<ul>
					<li>複数項目</li>
					<li>チェックボックス</li>
					<li>ラジオボタン</li>
					</ul>
					<p>をvalidation項目として含むことができるようになり<br />
					これによって大体のフォーム項目はカバーできるようになったと思います。</p>
					<p>使い方は<a href="http://5509.me/2008/08/22/realtimeformvalidation.html">jQuery.validation.js</a>の記事に追記しています。<br />
					ついでに名前がvalidation.jsからわかりやすいようにjQuery.validation.jsになりました。</p>
					<p>ところでRSSを一部配信から全文配信に変えました。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=600&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/validationjs-updated2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQueryを使ってdisplay: inline-blockを使うときのFirefox2への対処を考える</title>
		<link>http://5509.me/log/inline-block</link>
		<comments>http://5509.me/log/inline-block#comments</comments>
		<pubDate>Wed, 03 Dec 2008 14:35:00 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[memo]]></category>
		<category><![CDATA[tuts]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=567</guid>
		<description><![CDATA[					display: inline-block が便利すぎてなんとか普通に使えないかと考えてみました。
					これが使えるとコーディングでメンドイところがかなり減る感じ。
					
					display: [...]]]></description>
			<content:encoded><![CDATA[					<p>display: inline-block が便利すぎてなんとか普通に使えないかと考えてみました。<br />
					これが使えるとコーディングでメンドイところがかなり減る感じ。</p>
					<p><span id="more-567"></span></p>
					<p>display: inline-block については<br />
					<a href="http://www.yomotsu.net/">ヨモツネットさん</a>が解説と使い方をわかりやすくまとめてくれてますので<br />
					以下のリンクでどれだけ便利かわかると思います。</p>
					<ul>
					<li><a href="http://www.yomotsu.net/wp/?p=390">http://www.yomotsu.net/wp/?p=390</a><a href="http://www.yomotsu.net/wp/?p=390"><br />
					</a></li>
					<li><a href="http://yomotsu.net/works/081016cssnite/">http://yomotsu.net/works/081016cssnite/</a></li>
					</ul>
					<p>IEではハックを併用して使うので<br />
					inline-block を使う事は現時点で推奨されないんでしょうけど…<br />
					それでも使いたい！</p>
					<p>ということで</p>
					<h2>Firefox2以下以外のブラウザに適用するには。。。</h2>
					<p>現時点でCSSだけで対処できないのは Firefoxの2以下です。<br />
					Firefox2以下以外は下記のソースで使えます。(IEに関しては同じような動作をしてるだけ)</p>
					<pre name="code" class="css">

.inline-block {
display: inline-block;
*display: inline;
zoom: 1;
}
</pre>
					<p>肝心のFirefox2以下は inline-block を適用する要素に<br />
					div(これはなんでもいいんですが)を噛ませた上で CSSで</p>
					<pre name="code" class="css">

.inline-block {
display: -moz-inline-box;
}

.inline-block div {
display: block; /* ここはinline要素のときだけでよさげ */
width: 親要素の幅;
}
</pre>
					<p>とする必要があり 必要ない要素(div)が出てきて<br />
					<strong>inline-block を使う際のささやかな壁</strong>になってます、たぶん。</p>
					<p>というわけで Firefox2を使ってる人向けには<br />
					JavaScript(jQuery)で必要なところを補ってあげようということをやってみます。</p>
					<h2>Firefox2以下に適用するとき楽をしたい</h2>
					<h3>対象にする要素が決まってる場合</h3>
					<p>まずは inline-blockのCSSを定義します。</p>
					<pre name="code" class="css">

.inline-block {
display: inline-block;
*display: inline;
zoom: 1;
}
</pre>
					<p>次に以下のスクリプトソースをヘッダか任意のJSファイルで実行します。</p>
					<pre name="code" class="js">

$(function(){
var UA = navigator.userAgent;
var version = UA.replace(/.+Firefox/([d.]+$)/,&quot;$1&quot;); // 追記参照
if(UA.match(/Firefox/) &amp;&amp; version.match(/[12].[d.]+/)){
$(&quot;.inline-block&quot;).each(function(){
$(this).css(&quot;display&quot;,&quot;-moz-inline-box&quot;).html(&quot;&lt;div style=&#039;display: block; width: &quot;+$(this).width()+&quot;px;&#039;&gt;&quot;+$(this).html()+&quot;&lt;/div&gt;&quot;);
});
}
});
</pre>
					<p>これだけで大丈夫です。</p>
					<h3>対象にする要素を決めない場合 (いろんな要素がinline-blockを指定されてる場合など</h3>
					<p>inline-blockは使いはじめると便利さが沁みるようにわかるんですけど<br />
					こうなってくると対象をいちいち指定なんかしていられない！</p>
					<p>上の例の場合は、.inline-blockにしか適用できないので<br />
					いちいちそれを指定するのも面倒くさい、inline-blockの要素にはまとめて適用したい場合は<br />
					下記のようにちょっと変えます。</p>
					<p>まず <strong>li要素のdisplayプロパティ初期値はlist-item</strong>(IEはblock)なので blockにしておいて<br />
					inline-blockにしたい要素にさっきのスタイルを適用します。</p>
					<p><strong>この方法は ページ内に list-item がある場合は使えません。</strong>(強制的に -moz-inline-box にしてしまうので</p>
					<pre name="code" class="css">

li {
display: block;
}

.className {
display: inline-block;
*display: inline;
zoom: 1;
}
</pre>
					<p>CSSでinline-blockを指定してもFirefox2以下ではlist-itemになってしまうので<br />
					display が list-itemの要素に display: -moz-inline-box を適用します。</p>
					<pre name="code" class="js">

$(function(){
var UA = navigator.userAgent;
var version = UA.replace(/.+Firefox/([d.]+$)/,&quot;$1&quot;); // 追記参照
if(UA.match(/Firefox/) &amp;&amp; version.match(/[12].[d.]+/)){
$(&quot;body *&quot;).each(function(){
if($(this).css(&quot;display&quot;).match(/list-item/)) // 追加したところ
$(this).css(&quot;display&quot;,&quot;-moz-inline-box&quot;).html(&quot;&lt;div style=&#039;display: block; width: &quot;+$(this).width()+&quot;px;&#039;&gt;&quot;+$(this).html()+&quot;&lt;/div&gt;&quot;);
});
}
});
</pre>
					<p>ただこの方法だと 一度全部の要素をチェックするので<br />
					当然 <strong>実行速度はだいぶ遅くなります</strong>。</p>
					<p>その辺考えると inline-block にしてるクラスを全部指定したほうが よさげです。</p>
					<h2>結局のところ。。。</h2>
					<p>書きながらこうやっても<span style="text-decoration: line-through;">意外と</span>全然壁低くなってないと思ったとか思わんとか。。。</p>
					<h2>追記</h2>
					<p>Firefox3.05になってからUAがちょっとかわって</p>
					<pre name="code" class="js">

var version = UA.replace(/.+Firefox/([d.]+$)/,&quot;$1&quot;);
</pre>
					<p>だとversion取得が出来ないので</p>
					<pre name="code" class="js">

var version = UA.replace(/.+Firefox/([d.]+)/,&quot;$1&quot;);
</pre>
					<p>とすれば正常にversion取得が出来ます。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=567&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/inline-block/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>validation.js をアップデートしました</title>
		<link>http://5509.me/log/validationjs-updated</link>
		<comments>http://5509.me/log/validationjs-updated#comments</comments>
		<pubDate>Fri, 14 Nov 2008 12:22:41 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[note]]></category>
		<category><![CDATA[フォーム]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=544</guid>
		<description><![CDATA[					
					要望のあった
					
					select要素のチェック
					再入力項目のチェック
					
					を追加しました。サンプルで確認できます。
					併せて メールアドレスチェッ [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/validation/"><img class="alignnone size-full wp-image-557" title="validation.jsサンプルキャプチャ" src="http://5509.me/wp-content/uploads/2008/11/validationupdate1.gif" alt="" width="450" height="193" /></a></p>
					<p>要望のあった</p>
					<ul>
					<li>select要素のチェック</li>
					<li>再入力項目のチェック</li>
					</ul>
					<p>を追加しました。<a href="http://5509.me/sample/validation/index.html">サンプル</a>で確認できます。</p>
					<p>併せて メールアドレスチェックで指定するクラスが <strong>mail から email に変わりました</strong>。<br />
					詳しくは<a href="http://5509.me/2008/08/22/realtimeformvalidation.html">validation.jsの記事</a>に追記してるので興味のある人は確認してみてください。</p>
					<p>あとは チェックボックスと文字列の長さチェックがあれば…<br />
					<a href="http://5509.me/2008/09/14/jqueryselectable.html">selectable.js</a>との併用もそのうち…</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=544&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/validationjs-updated/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>スムーズに流れてくるナビゲーション jQuery.floatnav.js</title>
		<link>http://5509.me/log/jqueryfloatnav</link>
		<comments>http://5509.me/log/jqueryfloatnav#comments</comments>
		<pubDate>Wed, 12 Nov 2008 13:34:03 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ナビゲーション]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=476</guid>
		<description><![CDATA[					
					jQuery.floatnav.jsはナビゲーション(ただし上部に位置するものに限る)
					の下層ページリンクなどの部分をスライドアニメーションによって表示させることができるようになるjQue [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/jqueryfloatnav/"><img class="alignnone size-medium wp-image-477" title="jQuery.floatnav.js" src="http://5509.me/wp-content/uploads/2008/11/jqueryfloatnav-300x112.gif" alt="" width="300" height="112" /></a></p>
					<p>jQuery.floatnav.jsは<strong>ナビゲーション(ただし上部に位置するものに限る)<br />
					の下層ページリンクなどの部分をスライドアニメーションによって表示させることができる</strong>ようになるjQueryプラグインです。</p>
					<p>HTMLの構造を崩さずに導入することができます。</p>
					<p><a href="/sample/jqueryfloatnav/">jQuery.floatnav.jsのサンプルを見る</a></p>
					<p><span id="more-476"></span></p>
					<h2>トピックス</h2>
					<ul>
					<li><a href="#download">ダウンロード</a></li>
					<li><a href="#install">導入方法</a></li>
					<li><a href="#setting">設定</a></li>
					<li><a title="jQuery.seletable.jsサンプルへのリンク" href="/sample/jqueryfloatnav/">サンプル</a></li>
					<li><a href="#spec">動作環境</a></li>
					</ul>
					<h2 id="download">ダウンロード</h2>
					<p>jQuery.floatnav.jsはjQuery1.2.6が必要になります。(サンプルファイルには含まれています。)</p>
					<dl>
					<dt>JSファイル</dt>
					<dd><a href="/sample/jqueryfloatnav/js/jquery.floatnav.js">jquery.floatnav.js(1KB)</a></dd>
					<dt>サンプルファイル</dt>
					<dd><a href="/sample/archive/jqueryfloatnav.zip">jQueryselectable.zip(26KB)</a></dd>
					</dl>
					<h2 id="install">導入方法</h2>
					<p>CSSファイルとスクリプトファイルを以下のように読み込み、</p>
					<pre name="code" class="xhtml">

&lt;link type=&quot;text/css&quot; rel=&quot;styleshee&quot; href=&quot;/css/jqueryfloatnav.css&quot; /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;/js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;/js/jquery.floatnav.js&quot;&gt;&lt;/script&gt;
</pre>
					<p>ナビゲーション部分のHTMLを用意します。<br />
					入れ子になってるul要素がfloatnavのメイン部分になります。<br />
					HTML読み込み後 クラスに floatNav が割り当てられます。</p>
					<pre name="code" class="xhtml">

&lt;ul id=&quot;gNav&quot;&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;ほーむ&lt;/a&gt;&lt;/li&gt;&lt;!--
--&gt;&lt;li&gt;&lt;a href=&quot;#&quot;&gt;さーびす&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;うぇぶさいとこーちく&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;しーえむえすでざいん&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;&lt;!--
--&gt;&lt;li&gt;&lt;a href=&quot;#&quot;&gt;あばうと&lt;/a&gt;&lt;/li&gt;&lt;!--
--&gt;&lt;li&gt;&lt;a href=&quot;#&quot;&gt;とぴっくす&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;2008&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;2007&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;2006&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;2005&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;2004&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;&lt;!--
--&gt;&lt;li&gt;&lt;a href=&quot;#&quot;&gt;せいさくじれい&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;うぇぶさいと&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;span&gt;うぇぶさいと (しーえむえす&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;こーでぃんぐ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;ぶろぐ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;&lt;!--
--&gt;&lt;li class=&quot;last-child&quot;&gt;&lt;a href=&quot;#&quot;&gt;おといあわせ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!--//gNav--&gt;
</pre>
					<p><strong>＊#gNav&gt;li はinline-block(IEではinline)を指定しているので コメントアウトで隙間をなくしています。<br />
					他のスタイル指定は試してないので 同じようにCSSを指定するのが確実かも。。。</strong></p>
					<p>用意ができたら floatnav を以下のコードで適用します。<br />
					$(&#8220;#gNav&#8221;)部分は適用するナビゲーションを指定します。</p>
					<pre name="code" class="xhtml">

&lt;script type=&quot;text/javascript&quot;&gt;
$(function(){
$(&quot;#gNav&quot;).floatNav({
pos: &quot;25px&quot;,
width: &quot;30em&quot;,
opacity: .8
});
});
&lt;/script&gt;
</pre>
					<h2 id="setting">設定</h2>
					<p>floatnavの開始位置、親ナビゲーションからの位置、<br />
					floatnav自身の幅、移動の速さ、easing、透明度、時間差フェードアウトが指定できます。</p>
					<p>floatnav 内で指定できるプロパティは</p>
					<pre name="code" class="js">

left: &quot;-70em&quot;, // 開始位置
pos: &quot;0&quot;, // floatnavの位置 親ナビゲーションの高さを入れるとちょうどいい感じです
width: &quot;auto&quot;, // floatnavの幅
duration: &quot;fast&quot;, // 移動の速さ 他には &quot;slow&quot;、&quot;normal&quot; または ミリセカンド で指定できます
easing: &quot;swing&quot;, // easing &quot;linear&quot;も指定できます
opacity: 1, // floatnavの透明度
timer: 0 // マウスアウト時にフェードアウトしますが 時間差をつける場合 ミリセカンドで指定します
</pre>
					<p>サンプルは以下のようになっていて</p>
					<pre name="code" class="js">

$(function(){
$(&quot;#gNav&quot;).floatNav({
pos: &quot;25px&quot;,
width: &quot;30em&quot;,
opacity: .8
});
});
</pre>
					<p>floatnavの位置に 25px、幅を30em、透明度を.8にそれぞれ指定しています。<br />
					floatnavの位置の微調整はjqueryfloatnav.css内</p>
					<pre name="code" class="css">

ul.floatNav {
margin: 0 !important;
border: none !important;
padding: .5em 0 0 0 !important;
position: absolute !important;
left: 0;
background: url(../img/blank.gif) repeat !important;
}
</pre>
					<p>のpaddingで調整します。</p>
					<dl id="spec">
					<dt>動作環境</dt>
					<dd>Windows: IE6, IE7, Firefox3, Opera9.5, Safari3, Chromeで確認</dd>
					</dl>
					<img src="http://5509.me/?ak_action=api_record_view&id=476&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jqueryfloatnav/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>jQuery.selectable.jsご利用時の注意です</title>
		<link>http://5509.me/log/jqueryselectablejs-note</link>
		<comments>http://5509.me/log/jqueryselectablejs-note#comments</comments>
		<pubDate>Wed, 29 Oct 2008 08:04:06 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[note]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=457</guid>
		<description><![CDATA[					僕の注意・説明不足ですいません。
					jQuery.selectable.js のサンプルファイルのソースコード中の下記部分
					(10.29以降のサンプルファイル index.html
					 [...]]]></description>
			<content:encoded><![CDATA[					<p>僕の注意・説明不足ですいません。<br />
					<a href="http://5509.me/2008/09/14/jqueryselectable.html">jQuery.selectable.js</a> の<a href="http://5509.me/sample/jQueryselectable/">サンプルファイル</a>のソースコード中の下記部分<br />
					(10.29以降のサンプルファイル index.html</p>
					<pre name="code" class="xhtml">

&lt;!-- ▼これはjQuery.selectable.jsとは関係のないファイルです 移動または消去する可能性があるので読み込まないでください --&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://5509.me/js/jquery.tab.js&quot;&gt;&lt;/script&gt;
&lt;!-- ▲これはjQuery.selectable.jsとは関係のないファイルです --&gt;
</pre>
					<p>または (10.29以前のサンプルファイル index.html</p>
					<pre name="code" class="xhtml">

&lt;script type=&quot;text/javascript&quot; src=&quot;http://5509.me/js/jquery.tab.js&quot;&gt;&lt;/script&gt;
</pre>
					<p>はサンプル中のタブ機能に使用しているもので(僕が作ったしょぼいタブスクリプトです)<br />
					<strong>jQuery.selectable.jsとは関連のないファイル</strong>になります。<br />
					<strong>移動または消去する可能性があるので読み込まないでください</strong>。</p>
					<p>というのも、最近 http://5509.me/js/jquery.tab.js の参照が多く<br />
					どうやら僕の作ったしょぼいタブスクリプトまで読みこんでしまっているようです…<br />
					直接 制作者さんに伝えられればいいんですけど、それが難しいのでこういった形をとりました。</p>
					<p>注意書きは <a href="http://5509.me/2008/09/14/jqueryselectable.html#add081029">jQuery.selectable.js の記事にも追記</a>しています。</p>
					<p>兎にも角にも 使ってもらえてうれしい限りです。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=457&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jqueryselectablejs-note/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EC-CUBEのインストール</title>
		<link>http://5509.me/log/eccube-install</link>
		<comments>http://5509.me/log/eccube-install#comments</comments>
		<pubDate>Tue, 28 Oct 2008 08:53:10 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[EC-CUBE]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[memo]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=411</guid>
		<description><![CDATA[					EC-CUBEという便利なオープンソースソフトウェアのインストール方法のメモです。
					
					下準備
					用意するもの
					
					FFFTP
					
					EC-CUBE  [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://www.ec-cube.net/">EC-CUBE</a>という便利なオープンソースソフトウェアのインストール方法のメモです。</p>
					<p><span id="more-411"></span></p>
					<h2>下準備</h2>
					<h3>用意するもの</h3>
					<ul>
					<li><a href="http://www2.biglobe.ne.jp/~sota/ffftp.html">FFFTP<br />
					</a></li>
					<li>EC-CUBE Ver2</li>
					<li><a href="http://www.ec-cube.net/product/system.php">システム要件</a>に適したサーバ</li>
					<li>DBサーバ、DB名、ユーザ名・パス</li>
					</ul>
					<p><a href="http://www.ec-cube.net/download/index.php">EC-CUBEダウンロードページ</a>から<span class="blackst">EC-CUBE Ver2をダウンロードして、適当な解凍ソフトで解凍します。<br />
					</span>また、この記事ではEC-CUBEを http://www.pre-shop.org/ の直下にインストールすることを前提とします。</p>
					<p>ちなみにサーバによって属性とかディレクトリ構造とか当然変わってくるわけで<br />
					その辺はサーバに合わせてということで。。。</p>
					<h2>/html/define.php の書き換え</h2>
					<p>このままインストールするとサイトパスが http://www.pre-shop.org/html/ になってしまうので<br />
					define.phpを書き換えることでサイトパスを http://www.pre-shop.org/ にできます。<br />
					(<a href="#sitepath">サイトパスを決めるところ</a>はあるけどそのまましてもうまくいかない。)</p>
					<pre name="code" class="php">

define(&quot;HTML2DATA_DIR&quot;,&quot;/../data/&quot;);
</pre>
					<p>部分を</p>
					<pre name="code" class="php">

define(&quot;HTML2DATA_DIR&quot;,&quot;/data/&quot;);
</pre>
					<p>にするだけ。</p>
					<h2>FFFTPで転送する</h2>
					<ul>
					<li>datadディレクトリ</li>
					<li>htmlディレクトリ</li>
					<li>COPYING</li>
					</ul>
					<p>のうち</p>
					<ul>
					<li>dataディレクトリ</li>
					<li>COPYING</li>
					</ul>
					<p>を http://www.pre-shop.org/ 直下に転送して</p>
					<ul>
					<li>htmlディレクトリ</li>
					</ul>
					<p>はそのまま転送せずに、<strong>中身だけを http://www.pre-shop.org/ 直下に転送</strong>しますが<br />
					インストールするときに鬼のような量の属性変更を強いられるので<br />
					<strong>属性を転送時に設定しておく</strong>と一瞬で終わります。FFFTP→オプション→転送3で</p>
					<ul>
					<li>*.php</li>
					<li>*.tpl</li>
					<li>*.csv</li>
					<li>*.css</li>
					<li>*.jpg</li>
					<li>*.gif</li>
					<li>*.png</li>
					<li>*.js</li>
					<li>*.sql</li>
					</ul>
					<p>の<strong>属性を606(666)に指定</strong>して<br />
					アップロード時に作成するフォルダの<strong>属性を707(777)</strong>にチェック</p>
					<p><a href="http://5509.me/wp-content/uploads/2008/10/eccube-install1.gif"><img id="note1" class="alignnone size-full wp-image-413" title="FFFTPの設定" src="http://5509.me/wp-content/uploads/2008/10/eccube-install1.gif" alt="" width="350" /></a></p>
					<h2>インストールする</h2>
					<p><img class="alignnone size-full wp-image-415" title="EC-CUBEのインストール1" src="http://5509.me/wp-content/uploads/2008/10/eccube-install2.gif" alt="" width="350" height="142" /></p>
					<p>http://www.pre-shop.org/install にアクセスしてインストールを開始します。<br />
					上記の設定が出来ていれば インストール開始画面が表示されるはずです。</p>
					<p><img class="alignnone size-full wp-image-416" title="EC-CUBEのインストール2" src="http://5509.me/wp-content/uploads/2008/10/eccube-install3.gif" alt="" width="350" height="159" /></p>
					<p>最初にアクセス権限のチェックがありますが<br />
					転送する際に設定しているので 何もする必要はありません。<br />
					転送設定をしていないと、ここでやる気がなくなる位大量のディレクトリ・ファイル属性変更が待ってます。<br />
					転送設定を忘れたら、一度全部消して転送し直したほうがいいです絶対。</p>
					<p><img id="sitepath" class="alignnone size-full wp-image-417" title="EC-CUBEのインストール3" src="http://5509.me/wp-content/uploads/2008/10/eccube-install4.gif" alt="" width="350" height="384" /></p>
					<p>ECサイトの設定に必要事項を入力して 次へ進みます。<br />
					Webサーバの設定は必要に応じて 変更します。<br />
					ありえないですけど今回はSSLを使用しない前提で進みます。</p>
					<p><img class="alignnone size-full wp-image-418" title="EC-CUBEのインストール4" src="http://5509.me/wp-content/uploads/2008/10/eccube-install5.gif" alt="" width="350" height="269" /></p>
					<p>次は用意しておいたDB情報を入力します。<br />
					今回はMySQLにしました。</p>
					<p><img class="alignnone size-full wp-image-419" title="EC-CUBEのインストール5" src="http://5509.me/wp-content/uploads/2008/10/eccube-install6.gif" alt="" width="350" height="167" /></p>
					<p>そんなこんなで次へ進んでいくと インストール完了です。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=411&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/eccube-install/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQueryとCSSでつくるiPodのカレンダーのようなカレンダー</title>
		<link>http://5509.me/log/icalendar</link>
		<comments>http://5509.me/log/icalendar#comments</comments>
		<pubDate>Fri, 10 Oct 2008 13:00:21 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=339</guid>
		<description><![CDATA[					
					iPod(30GBとかの普通のやつ)に入ってるような
					四隅が角丸のカレンダーを文字サイズ可変で作ってみました。
					もちろん縦にも横にも広がります。
					
					カレンダー [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/icalendar"><img class="alignnone size-full wp-image-341" title="icalendar1" src="http://5509.me/wp-content/uploads/2008/10/icalendar1.gif" alt="" width="300" height="211" /></a></p>
					<p>iPod(30GBとかの普通のやつ)に入ってるような<br />
					四隅が角丸のカレンダーを文字サイズ可変で作ってみました。<br />
					もちろん縦にも横にも広がります。</p>
					<p><span id="more-339"></span></p>
					<h2>カレンダーのHTMLを用意する</h2>
					<p>まずはカレンダーのHTMLを用意します。<br />
					曜日の関係もあるのでtableを使ってマークアップします。<br />
					この辺はよくある感じです。</p>
					<p>前月・次月は当月と区別するためにclassにgrayを割り当てました。<br />
					本当はprevとかnextがいいかも。まぁoffとかでも…適当でいいです。</p>
					<pre name="code" class="xhtml">

&lt;table summary=&quot;カレンダー&quot; class=&quot;icalendar&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;td&gt;Sun&lt;/td&gt;
&lt;td&gt;Mon&lt;/td&gt;
&lt;td&gt;Tue&lt;/td&gt;
&lt;td&gt;Wed&lt;/td&gt;
&lt;td&gt;Thu&lt;/td&gt;
&lt;td&gt;Fri&lt;/td&gt;
&lt;td&gt;Sat&lt;/td&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;gray&quot;&gt;25&lt;/td&gt;
&lt;td class=&quot;gray&quot;&gt;26&lt;/td&gt;
&lt;td class=&quot;gray&quot;&gt;27&lt;/td&gt;
&lt;td class=&quot;gray&quot;&gt;28&lt;/td&gt;
&lt;td class=&quot;gray&quot;&gt;29&lt;/td&gt;
&lt;td class=&quot;gray&quot;&gt;30&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td class=&quot;gray&quot;&gt;1&lt;/td&gt;
&lt;td class=&quot;gray&quot;&gt;2&lt;/td&gt;
&lt;td class=&quot;gray&quot;&gt;3&lt;/td&gt;
&lt;td class=&quot;gray&quot;&gt;4&lt;/td&gt;
&lt;td class=&quot;gray&quot;&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
</pre>
					<h2>デザインにあわせてマークアップしてみる</h2>
					<p><img class="alignnone size-full wp-image-346" title="icalendar_2" src="http://5509.me/wp-content/uploads/2008/10/icalendar_2.gif" alt="" width="124" height="32" /></p>
					<p>iPodのカレンダーを見ると↑のようなデザインになってます。<br />
					左が選択中、真ん中が当月、右が前月・次月です。<br />
					(なんとなくで作ってるので色味とか違ったりしますけど)</p>
					<p>最初に書いたように角丸かつフォントサイズ可変でつくるので<br />
					上のデザインを実現するには無駄なspan要素を大量に使う必要があります。</p>
					<p>具体的には↓のコードで角丸サイズ可変が実現できます。</p>
					<pre name="code" class="xhtml">

&lt;td&gt;&lt;span class=&quot;lt&quot;&gt;&lt;span class=&quot;rt&quot;&gt;1&lt;span class=&quot;lb&quot;&gt;&lt;/span&gt;&lt;span class=&quot;rb&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
</pre>
					<p>全部のtdにこれを入れるのは面倒くさいので省略しますが…<br />
					見ればわかるとおり何の意味ももたない無駄なspanが大量に入ってます。<br />
					とりあえずそこは無視してスタイルをあてます。</p>
					<pre name="code" class="css">

table.icalendar {
margin-top: 1em;
border-collapse: separate;
font-size: 80%;
}

table.icalendar tbody td {
width: 3.8em;
height: 2.8em;
}

table.icalendar thead td {
font-weight: bold;
text-align: center;
}
</pre>
					<p>まずはtableとtdにスタイルを指定します。<br />
					tdは上下隣り合うtdと離れているのでborder-collapseプロパティの値をseparateに指定します。</p>
					<p>また今回はデザインに併せてある程度の幅と高さを持たせるために<br />
					tdにwidth: 3.8em, height: 2.8emを指定しています。</p>
					<p><img src="/sample/icalendar/img/td_bg_off.gif" alt="カレンダーの背景画像" width="67" height="44" /> <img src="/sample/icalendar/img/td_bg_gray.gif" alt="カレンダーの背景画像" width="67" height="44" /> <img src="/sample/icalendar/img/td_bg_on.gif" alt="カレンダーの背景画像" width="67" height="44" /></p>
					<p>↑の画像をspanの背景に指定していきます。大きめの画像のほうが拡大に耐えられます。<br />
					説明はソース見たほうが早いと思うので…</p>
					<pre name="code" class="css">

table.icalendar tbody td span.lt {
padding-left: .4em;
display: block;
height: 2.8em;
position: relative;
font-weight: bold;
overflow: hidden;
}
table.icalendar tbody td span { background: #FFF url(../img/td_bg_off.gif) no-repeat left top }

table.icalendar tbody td span span.rt {
padding-top: .2em;
display: block;
height: 3.8em;
background-position: right top;
}

table.icalendar tbody td span span.lb,
table.icalendar tbody td span span.rb {
display: block;
width: 5px;
height: 5px;
position: absolute;
bottom: 0;
}

table.icalendar tbody td span span.lb {
width: 4.2em;
left: 0;
background-position: left bottom;
}

table.icalendar tbody td span span.rb {
right: 0;
background-position: right bottom;
}
</pre>
					<p>span.lbとspan.rbは親のspanに対して絶対配置でそれぞれ右下と左下に配置するんですが<br />
					下のborder部分を表示するためにspan.lbのwidthを親のtdと同じに指定します。</p>
					<h2>IEで背景がずれる</h2>
					<p>IE6では絶対配置のspanがright: 0, bottom: 0に配置されず1px隙間ができるので</p>
					<pre name="code" class="css">

* html table.icalendar tbody td span span.lb {
margin-bottom: -1px;
}

* html table.icalendar tbody td span span.rb {
margin: 0 -1px -1px 0;
}
</pre>
					<p>で隙間をなくします。<br />
					もっといい方法ないのかな…</p>
					<p>灰色部分とホバー部分は下記のように上書きします。</p>
					<pre name="code" class="css">

table.icalendar tbody td.gray span { color: #555; background-image: url(../img/td_bg_gray.gif) }
table.icalendar tbody td.hover span { color: #FFF; background-image: url(../img/td_bg_on.gif) }
</pre>
					<h2>jQueryを使ってtd:hoverに対応させる</h2>
					<p>例によってIE6がtd:hoverに対応していないので<br />
					jQueryを使ってtd:hover時にクラスをあてます。</p>
					<pre name="code" class="javascript">

$(function(){
$(&quot;table.icalendar tbody td&quot;).hover(function(){
$(this).addClass(&quot;hover&quot;);
},function(){
$(this).removeClass(&quot;hover&quot;);
});
});
</pre>
					<p>これをHTMLファイルのheadか任意の外部JSファイルに記述します。</p>
					<h2>デザインのためだけのspan要素をJSで書き出す</h2>
					<p>ここまでで一通り完成なんですけど<br />
					当然ながら、無意味なspanをようさん使うのはイヤ、という考えの人が大半やと思います。<br />
					というよりもいちいち全部にspanとか入れるのがまず面倒くさいし…</p>
					<p>僕もそうですけど、HTMLで無駄なdiv要素とかspan要素とか入れるのはイヤやけど<br />
					JSで追加するのは許せるという人は(角丸スクリプトの人気を見る限り)多いと思います。</p>
					<p>そんなわけでさっきの</p>
					<pre name="code" class="xhtml">

&lt;td&gt;&lt;span class=&quot;lt&quot;&gt;&lt;span class=&quot;rt&quot;&gt;1&lt;span class=&quot;lb&quot;&gt;&lt;/span&gt;&lt;span class=&quot;rb&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
</pre>
					<p>をjQueryを使って実現します。<br />
					ここまでで、もしほんまに全部のtdの中身を↑に書き換えてる人がいたらほんまにすいません。全部</p>
					<pre name="code" class="xhtml">

&lt;td&gt;1&lt;/td&gt;
</pre>
					<p>に戻してください…</p>
					<pre name="code" class="javascript">

$(&quot;table.icalendar tbody td&quot;).each(function(){
$(this).html(&quot;&lt;span class=&#039;lt&#039;&gt;&lt;span class=&#039;rt&#039;&gt;&quot;+$(this).html()+&quot;&lt;span class=&#039;lb&#039;&gt;&lt;/span&gt;&lt;span class=&#039;rb&#039;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&quot;);
});
</pre>
					<p>実に簡単で分かりやすいです…<br />
					これをさっきのhoverの部分とあわせて</p>
					<pre name="code" class="javascript">

$(function(){
$(&quot;table.icalendar tbody td&quot;).each(function(){
$(this).html(&quot;&lt;span class=&#039;lt&#039;&gt;&lt;span class=&#039;rt&#039;&gt;&quot;+$(this).html()+&quot;&lt;span class=&#039;lb&#039;&gt;&lt;/span&gt;&lt;span class=&#039;rb&#039;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&quot;);
}).hover(function(){
$(this).addClass(&quot;hover&quot;);
},function(){
$(this).removeClass(&quot;hover&quot;);
});
});
</pre>
					<p>として、HTMLファイルのheadか任意の外部JSファイルに記述すれば完成です。</p>
					<h2>hover画像のプリロード</h2>
					<p>ところで、このままいくとhover時の画像はtdにカーソルがのるまで読みこまれず<br />
					最初に乗せたときに案の定チラっと白くなります。<br />
					そこまで気にする人は以下のコードでプリロードすればいいです。</p>
					<pre name="code" class="javascript">

$(function(){
var hoverImg = new Image();
hoverImg.src= &quot;img/td_bg_on.gif&quot;;
});
</pre>
					<p>iPodのカレンダー見てこれいいなぁと思いながら作ったものの<br />
					正直なんや微妙な大きさで使いどころはないんですけど…</p>
					<h2>完成</h2>
					<p><a href="http://5509.me/sample/icalendar">サンプル</a></p>
					<p>一応CSSファイルを置いておきます <a href="http://5509.me/sample/icalendar/css/style.css">style.css<br />
					</a>あ、画像はテキトーに右クリック保存とかでどうぞ。</p>
					<dl id="spec">
					<dt>動作環境</dt>
					<dd>Windows: IE6, IE7, Firefox3, Opera9.5, Safari3, Chromeで確認</dd>
					</dl>
					<img src="http://5509.me/?ak_action=api_record_view&id=339&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/icalendar/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPressでユーザ名を表示する</title>
		<link>http://5509.me/log/display_wp_the_user_name</link>
		<comments>http://5509.me/log/display_wp_the_user_name#comments</comments>
		<pubDate>Mon, 06 Oct 2008 15:00:58 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[memo]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=322</guid>
		<description><![CDATA[					index.php、archive.php、page.phpみたいな
					インクルードする側のファイルなら単純に
					

&#60;?php echo $user_identity ?&#62;

		 [...]]]></description>
			<content:encoded><![CDATA[					<p>index.php、archive.php、page.phpみたいな<br />
					インクルードする側のファイルなら単純に</p>
					<pre name="code" class="php">

&lt;?php echo $user_identity ?&gt;
</pre>
					<p>でいけるけどheader.php、sidebar.php、footer.phpのような<br />
					インクルードされる側のファイルは</p>
					<p>$user_identity</p>
					<p>を参照(言い方わからない勉強不足)できない(ユーザー情報周りは$user_IDのみ参照できる)ので<br />
					先に宣言する必要がある</p>
					<pre name="code" class="php">

&lt;?php
global $user_identity;
echo $user_identity;
?&gt;
</pre>
					<img src="http://5509.me/?ak_action=api_record_view&id=322&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/display_wp_the_user_name/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPressでログイン状態によって表示を分ける</title>
		<link>http://5509.me/log/wp-loggedin</link>
		<comments>http://5509.me/log/wp-loggedin#comments</comments>
		<pubDate>Mon, 06 Oct 2008 07:19:44 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[memo]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=313</guid>
		<description><![CDATA[					is_user_logged_in()を使うか
					

&#60;?php if(is_user_logged_in()){ ?&#62;
&#60;p&#62;ログインしています&#60;/p&#62;
&#60;? [...]]]></description>
			<content:encoded><![CDATA[					<p>is_user_logged_in()を使うか</p>
					<pre name="code" class="php">

&lt;?php if(is_user_logged_in()){ ?&gt;
&lt;p&gt;ログインしています&lt;/p&gt;
&lt;?php }else{ ?&gt;
&lt;p&gt;ログインしていません&lt;/p&gt;
&lt;?php } ?&gt;
</pre>
					<p>もしくは</p>
					<pre name="code" class="php">

&lt;?php if($user_ID) : ?&gt;
&lt;p&gt;ログインしています&lt;/p&gt;
&lt;?php else : ?&gt;
&lt;p&gt;ログインしていません&lt;/p&gt;
&lt;?php endif; ?&gt;
</pre>
					<img src="http://5509.me/?ak_action=api_record_view&id=313&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/wp-loggedin/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>tableの列を選択する</title>
		<link>http://5509.me/log/tablecol</link>
		<comments>http://5509.me/log/tablecol#comments</comments>
		<pubDate>Thu, 02 Oct 2008 12:24:31 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[memo]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=310</guid>
		<description><![CDATA[					
					行はtrがあるけど列はない…
					なんかcolとか、scopeとかあるからそれで出来ひんのやろうか…
					いつものjQueryを使って列を取得してみた。
					
					とりあえず [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/tablecol/"><img class="alignnone size-medium wp-image-329" title="tableの列を選択する" src="http://5509.me/wp-content/uploads/2008/10/tablecol-300x108.gif" alt="" width="300" height="108" /></a></p>
					<p>行はtrがあるけど列はない…<br />
					なんかcolとか、scopeとかあるからそれで出来ひんのやろうか…<br />
					いつものjQueryを使って列を取得してみた。</p>
					<p><span id="more-310"></span></p>
					<p>とりあえず</p>
					<pre name="code" class="js">

/* get Col */
function getCol(cell,table){
var td = [];
var index = $(&quot;td&quot;,$(cell).parent()).index(cell);
var tr = $(&quot;tr&quot;,table);
for(var i=0;i&lt;tr.length;i++){
td.push($(&quot;td:nth-child(&quot;+(index+1)+&quot;)&quot;,tr[i]));
}
return td;
}
</pre>
					<p>で列を取得した。<br />
					セルが結合してるときはこれやと無理やけど<br />
					とりあえず今回は結合セルなかったからこれで。次それやろう…</p>
					<p>これを利用してmouseoverでセルが属する列全体にクラスを当てるようにするには</p>
					<pre name="code" class="js">

$(&quot;table td&quot;).each(function(){
var td = getCol(this,&quot;table&quot;);
$(this).hover(function(){
$(td).each(function(){
$(this).addClass(&quot;hover&quot;);
});
},function(){
$(td).each(function(){
$(this).removeClass(&quot;hover&quot;);
});
});
});
</pre>
					<p><a href="http://5509.me/sample/tablecol/">サンプル</a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=310&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/tablecol/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>お手軽ドロップシャドウテキスト jQdrop.js</title>
		<link>http://5509.me/log/jqdrop</link>
		<comments>http://5509.me/log/jqdrop#comments</comments>
		<pubDate>Fri, 19 Sep 2008 12:01:35 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[memo]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=283</guid>
		<description><![CDATA[					
					ドロップシャドウが必要になったので勉強も兼ねて。
					さすがjQuery先生…わずか900Bで実現できました。
					サンプル
					
					特徴
					
					超お手軽導 [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/jQdrop/"><img class="alignnone size-medium wp-image-294" title="jQdropキャプチャ" src="http://5509.me/wp-content/uploads/2008/09/jqdrop1.gif" alt="" width="200" height="50" /></a></p>
					<p>ドロップシャドウが必要になったので勉強も兼ねて。<br />
					さすがjQuery先生…わずか900Bで実現できました。</p>
					<p><a href="http://5509.me/sample/jQdrop/">サンプル</a></p>
					<p><span id="more-283"></span></p>
					<h2 id="features">特徴</h2>
					<ul>
					<li>超お手軽導入</li>
					<li>それなりにフレキシブルに使えそう(そもそも使う機会ないけど)</li>
					</ul>
					<h2>ダウンロード</h2>
					<p>jQuery1.2.6が必要になります。</p>
					<dl>
					<dt>JSファイル</dt>
					<dd><a href="/sample/jQdrop/js/jQdrop.js">jQdrop.js(１KB)</a></dd>
					</dl>
					<h2 id="install">導入方法</h2>
					<p>スクリプトファイルを以下のように読み込み</p>
					<pre name="code" class="xhtml">

&lt;script type=&quot;text/javascript&quot; src=&quot;/js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;/js/jQdrop.js&quot;&gt;&lt;/script&gt;
</pre>
					<p>以下のようなHTMLの場合</p>
					<pre name="code" class="xhtml">

&lt;p class=&quot;drop&quot;&gt;ドロップシャドウテキスト&lt;/p&gt;
</pre>
					<p>次のコードで適用します。</p>
					<pre name="code" class="xhtml">

&lt;script type=&quot;text/javascript&quot;&gt;
$(function(){
$(&quot;.drop&quot;).jQdrop();
});
&lt;/script&gt;
</pre>
					<h2 id="extensions">拡張</h2>
					<p>ドロップシャドウの色、位置、ウェイトを決められます。</p>
					<pre name="code" class="js">

$(&quot;.drop&quot;).jQdrop({
color: &quot;#BBB&quot;,
top: 2,
left: 2,
weight: &quot;bold&quot;
});
</pre>
					<p>以下のプロパティを使えます。(カッコ内は初期値)</p>
					<ul>
					<li>color: &#8220;カラーコード&#8221; (&#8220;#000&#8243;)</li>
					<li>top: 数値 (1)</li>
					<li>left: 数値 (1)</li>
					<li>weight: &#8220;bold&#8221; (&#8220;normal&#8221;)</li>
					</ul>
					<h2>注意</h2>
					<ul>
					<li>ドロップシャドウを当てるテキストの直親に適用しないとうまく動作しません。</li>
					<li>display: none があたっている要素ではうまく動作しません。先に適用してからscriptでnoneにします。</li>
					<li>テキストの可変に対応できなかった…</li>
					</ul>
					<p><a href="http://5509.me/sample/jQdrop/">サンプル</a></p>
					<dl id="spec">
					<dt>動作環境</dt>
					<dd>Windows: IE6, IE7, Firefox3, Opera9.5, Safari3, Chromeで確認</dd>
					</dl>
					<img src="http://5509.me/?ak_action=api_record_view&id=283&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jqdrop/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>気分転換にはてなブックマークのスキンを作った</title>
		<link>http://5509.me/log/hatebskin</link>
		<comments>http://5509.me/log/hatebskin#comments</comments>
		<pubDate>Thu, 18 Sep 2008 13:00:21 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[はてな]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=263</guid>
		<description><![CDATA[					
					そもそもはてブ自体あんまり使わんけど 気分転換にスキンでも作った
					完全に自分用でヘッダとかない…可読性は別に重視せんからピクセル指定のとこあり…
					
					サンプルは僕のはてブからどうぞ。
					もしかしたらもの好きな人もいるかもしれないので
					ソース置いときます。コピーしてスタイルシートのとこに貼り付けてください。
					基本テーマ・白ヘッダ用です。
					あ、コレクションは僕が使ってないので なんもしてないです。
					IE…そんなブラウザ聞いたことないです。(IEでみたらゲストのときにメニューのとこ崩れます)
					テーブルなんか使うから…
					

.main:after{content:&#34;.&#34;;display:block;height:0;clear:both;visibility:hidden;}.main{display:inline-block}.main{*height:1%;display:block;}a{overflow:hidden;}body{font-family:Verdana, Helvetica;font-size:90%;text-align:center;}body *{text-align:left;}div#banner{border:none;display:none;width:900px;position:relative;margin:0 auto;}form.searchform{float:none;border:none;width:900px;position:static;background:url(http://5509.me/hatena/img/srch_text.gif) no-repeat 719px center;text-align:right;margin:.5em auto 0;}form.searchform input.searchword{border:none;width:145px;height:26px;background:none;margin:10px 31px 0 0;}div#bannerSub{border:none;width:900px;margin:.5em auto 0;}div#bannersub table{border-collapse:collapse;}div#bannersub td{font-size:11px;padding:0;}div#bannersub td:first-child{background:none;}div#bannersub td a{margin-left:.5em;border:solid #DFDFDF 1px;border-bottom:none;display:block;background:#F0F0F0;padding:3px 7px;}div#bannersub td a:hover{background:#FAFAFA;}div#bannersub td a.username,div#bannersub td:first-child a{border:none;display:inline;background:url(http://b.hatena.ne.jp/images/by.gif) no-repeat left center;text-decoration:none;margin:0 .5em;padding:0 0 0 1.2em;}div#bannersub td a.username:hover,div#bannersub td:first-child a:hover{background:url(http://b.hatena.ne.jp/images/by.gif) no-repeat left center;}div.body{border:solid #DFDFDF 1px;width:898px;*width:900px;color:#000;margin:0 auto;}div.header{border:none;background:#FAFAFA;text-align:center;margin:0;padding:.5em 0;}div.header h2{color:#93bc37;background:none;font-size:100%;letter-spacing:.1em;margin:0;padding:0;}div.header ul.bookmarkinfo{margin:0;padding:0;}div.header ul.bookmarkinfo li img{position:relative;top:1px;}div.header ul.bookmarkinfo [...]]]></description>
			<content:encoded><![CDATA[					<p><img class="alignnone size-medium wp-image-264" title="はてブスキンキャプチャ" src="http://5509.me/wp-content/uploads/2008/09/hatena-300x78.gif" alt="" width="300" height="78" /></p>
					<p>そもそもはてブ自体あんまり使わんけど 気分転換にスキンでも作った<br />
					完全に自分用でヘッダとかない…可読性は別に重視せんからピクセル指定のとこあり…</p>
					<p><span id="more-263"></span></p>
					<p>サンプルは<a href="http://b.hatena.ne.jp/nori_17/">僕のはてブ</a>からどうぞ。</p>
					<p>もしかしたらもの好きな人もいるかもしれないので<br />
					ソース置いときます。コピーしてスタイルシートのとこに貼り付けてください。<br />
					基本テーマ・白ヘッダ用です。</p>
					<p>あ、コレクションは僕が使ってないので なんもしてないです。<br />
					IE…そんなブラウザ聞いたことないです。(IEでみたらゲストのときにメニューのとこ崩れます)<br />
					テーブルなんか使うから…</p>
					<pre name="code" class="css">

.main:after{content:&quot;.&quot;;display:block;height:0;clear:both;visibility:hidden;}.main{display:inline-block}.main{*height:1%;display:block;}a{overflow:hidden;}body{font-family:Verdana, Helvetica;font-size:90%;text-align:center;}body *{text-align:left;}div#banner{border:none;display:none;width:900px;position:relative;margin:0 auto;}form.searchform{float:none;border:none;width:900px;position:static;background:url(http://5509.me/hatena/img/srch_text.gif) no-repeat 719px center;text-align:right;margin:.5em auto 0;}form.searchform input.searchword{border:none;width:145px;height:26px;background:none;margin:10px 31px 0 0;}div#bannerSub{border:none;width:900px;margin:.5em auto 0;}div#bannersub table{border-collapse:collapse;}div#bannersub td{font-size:11px;padding:0;}div#bannersub td:first-child{background:none;}div#bannersub td a{margin-left:.5em;border:solid #DFDFDF 1px;border-bottom:none;display:block;background:#F0F0F0;padding:3px 7px;}div#bannersub td a:hover{background:#FAFAFA;}div#bannersub td a.username,div#bannersub td:first-child a{border:none;display:inline;background:url(http://b.hatena.ne.jp/images/by.gif) no-repeat left center;text-decoration:none;margin:0 .5em;padding:0 0 0 1.2em;}div#bannersub td a.username:hover,div#bannersub td:first-child a:hover{background:url(http://b.hatena.ne.jp/images/by.gif) no-repeat left center;}div.body{border:solid #DFDFDF 1px;width:898px;*width:900px;color:#000;margin:0 auto;}div.header{border:none;background:#FAFAFA;text-align:center;margin:0;padding:.5em 0;}div.header h2{color:#93bc37;background:none;font-size:100%;letter-spacing:.1em;margin:0;padding:0;}div.header ul.bookmarkinfo{margin:0;padding:0;}div.header ul.bookmarkinfo li img{position:relative;top:1px;}div.header ul.bookmarkinfo li a img{top:.1em;}div.body a{border:none;color:#282828;}div.body a:hover{color:#666;text-decoration:none;}div.body div.breadcrumbs p{margin-top:0;color:#666;text-align:right;font-size:10px;padding:.5em .5em 0;}form.hatena-usersearch{text-align:right;margin:.5em 0 0;padding:0 .5em;}form.hatena-usersearch input{border:none;border-bottom:dotted #DFDFDF 1px;background:#FFF;}div.body div.main div.pager{margin:-10px 0 0;padding:0;}div.body div.main div.pager p{font-size:12px;font-weight:700;margin:0;padding:.5em 0 0 1em;}div.body div.main div.pager p a{font-size:10px;font-weight:400;}div.body div.main div.taglist{width:250px;margin:1em 10px 0;padding:0;}div.body div.main div.taglist h3{color:#93bc37;margin:0 0 .5em;}div.body div.main input#tag_search{border:none;border-bottom:dotted #DFDFDF 1px;}div.body div.main div.taglist div.taglist-widget{margin-bottom:.5em;}div.body div.main div.taglist div.taglist-widget h3{padding-bottom:.5em;margin:0;}div.body div.main div.taglist p.tagcrumbs{margin:0;padding:0 0 .5em;}div.body div.main div.taglist ul#related-taglist{border:dotted #DFDFDF 1px;background:#EEE;padding:.5em;}ul#taglist{border:dotted #DFDFDF 1px;background:#EEE;padding:.2em .5em;}div.body div.main dl.bookmarklist{margin-left:10px;border:solid #DFDFDF 1px;width:610px;}div.body div.main dl.bookmarklist dt.bookmark{border-bottom:dotted #DFDFDF 1px;background:#EEE;margin:0 0 .5em;padding:.3em .5em;}div.body div.main dl.bookmarklist dd{xmargin:0;}div.body div.main dl.bookmarklist dd dt img{position:relative;top:.1em;}div.body div.main dl.bookmarklist dd.comment{color:#333;padding:.5em 0;}div.body div.main dl.bookmarklist dd.comment span.tag{margin-right:.3em;color:#333;}div.body div.main dl.bookmarklist dd.comment a{color:#333;margin:0 .1em;}div.body div.main dl.bookmarklist dd.content{border-top:dotted #DFDFDF 1px;margin:0 1em;padding:.5em 0;}div.body div.main dl.bookmarklist dd dd.users strong,div.body div.main dl.bookmarklist dd dd.users em{background:#FFF;}ul.taglist a.tag-latest{color:#282828;}ul.taglist a.tag-later{color:#888;}div.body div.main div.favoritelist{width:250px;background:#FFF;border-color:#DFDFDF;margin:1em 10px 0;}div.body div.main div.favoritelist h3{border-bottom:dotted #DFDFDF 1px;color:#93bc37;background:#FAFAFA;margin:0;padding:.3em .5em;}div.body div.main div.favoritelist ul{margin:0;padding:.2em .5em;}div.body div.main div.favoritelist ul li{line-height:1.5;}div.body div.main div.favoritelist ul li a{text-decoration:none;}div.body div.main div.favoritelist form.favorite{margin:0;padding:.2em .5em .5em;}form.searchform input.searchbutton,div.body div.main dl.bookmarklist dd.comment img.comment_img{display:none;}div.body div.breadcrumbs p a,ul.taglist a.tag-earlier{color:#666;}div.body div.main div.taglist div.taglist-widget h3 input,div.body div.main div.favoritelist form.favorite input{border:none;border-bottom:dotted #DFDFDF 1px;background:none;}ul#taglist li a.currenttag,div.body div.main dl.bookmarklist dd dd.users strong a,div.body div.main dl.bookmarklist dd dd.users em a{color:#93bc37;}
</pre>
					<dl id="spec">
					<dt>確認環境</dt>
					<dd>Windows: Firefox3, Opera9.5, Safari3, Chrome<br />
					IE6,7は非ログイン時にメニューがくずれます(:first-childセレクタが使えないため)</dd>
					</dl>
					<img src="http://5509.me/?ak_action=api_record_view&id=263&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/hatebskin/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>selectボックスをシンプルなプルダウンに拡張するjQselectable(jQuery.selectable.js)</title>
		<link>http://5509.me/log/jqueryselectable</link>
		<comments>http://5509.me/log/jqueryselectable#comments</comments>
		<pubDate>Sat, 13 Sep 2008 19:13:28 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[イライラ解消]]></category>
		<category><![CDATA[フォーム]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/2008/09/14/jqueryselectable.html</guid>
		<description><![CDATA[					この記事は古くなりました。初めて見た方は 新しい jqselectable の記事へ移動してください。
					
					セレクトボックスのユーザビリティを劇的に向上できるかもしれないjQueryプラグイン [...]]]></description>
			<content:encoded><![CDATA[					<div class="note">この記事は古くなりました。初めて見た方は 新しい <a href="http://5509.me/log/jqselectable">jqselectable</a> の記事へ移動してください。</div>
					<p><a class="act" href="http://5509.me/sample/jQselectable1.3/"><img class="alignnone size-full wp-image-245" title="jqueryselectable" src="http://5509.me/wp-content/uploads/2008/09/jqueryselectable.gif" alt="" width="450" height="187" /></a></p>
					<p>セレクトボックスのユーザビリティを劇的に向上できるかもしれないjQueryプラグインです。バージョンアップでjQuery.selectable.jsから<strong>jQselectable</strong>に名前が変わりました。</p>
					<p><a href="http://5509.me/sample/jQselectable1.3/">サンプルを見てみる</a><br />
					<span id="more-196"></span></p>
					<h2>トピックス</h2>
					<ul>
					<li><a href="#features">特徴</a></li>
					<li><a href="#download">ダウンロード</a></li>
					<li><a href="#install">導入方法</a>
					<ul>
					<li><a href="#skin">スタイル</a></li>
					</ul>
					</li>
					<li><a href="#extensions">拡張</a>
					<ul>
					<li><a href="#style">表示形式</a>
					<ul>
					<li><a href="#selectable">selectable</a></li>
					<li><a href="#simpleBox">simpleBox</a></li>
					</ul>
					</li>
					<li><a href="#effect">エフェクト</a></li>
					<li><a href="#opacity">透明度</a></li>
					<li><a href="#pos">プルダウン位置の調整(少し高度な設定)</a></li>
					<li><a href="#height">プルダウンの高さ</a></li>
					</ul>
					</li>
					<li><a href="#customize">カスタマイズ</a>
					<ul>
					<li><a href="#customize1">独自のselectボックスに適用させる</a></li>
					<li><a href="#customize2">id、classの引継ぎ</a></li>
					</ul>
					</li>
					<li><a href="#date">日付で使う</a></li>
					<li><a href="#callback">Callback関数を使う</a></li>
					<li><a href="#rebuild">動的にselect要素のDOMを書き換える場合（rebuildメソッド）</a></li>
					<li><a title="jQuery.seletable.jsサンプルへのリンク" href="http://5509.me/sample/jQselectable1.3/">サンプル</a></li>
					<li><a href="#edited">更新履歴・追記</a></li>
					<li><a href="#spec">動作環境</a></li>
					</ul>
					<h2 id="features">特徴</h2>
					<p>selectボックスの選択ってイライラしないですか？jQselectabeを使えば解決できるかもしれません。以下が主な特徴になります。</p>
					<ul>
					<li><strong>セレクトボックスの鬱陶しいプルダウンを視覚的にわかりやすく</strong>表示。</li>
					<li>セレクトボックス、プルダウンのデザインもスタイリッシュに。</li>
					<li>単純にセレクトボックスのデザインを変えるためだけにも使えます。<br />
					(CSSを使って<strong>セレクトボックスをシンプルで操作しやすいプルダウンに</strong>。)</li>
					<li><strong>読み込むCSSを変えるだけで簡単にデザインを変更できる</strong>。</li>
					</ul>
					<h2 id="download">ダウンロード</h2>
					<p>jQselectableはjQueryが必要になります。</p>
					<dl>
					<dt>jQselectableのダウンロード</dt>
					<dd><a href="https://github.com/5509/jQselectable1.3/zipball/v1.3">jQselectable.zip</a></dd>
					</dl>
					<h2 id="install">導入方法</h2>
					<p>CSSとスクリプトファイルを以下のように読み込み、(以下はselectableスタイル<a href="#skin">(?)</a>を適用)</p>
					<pre name="code" class="xhtml">

&lt;link type=&quot;text/css&quot; rel=&quot;stylesheet&quot; href=&quot;skin/selectable/style.css&quot; /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.com/jsapi&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;google.load(&quot;jquery&quot;, &quot;1.4.1&quot;);&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/jQselectable.js&quot;&gt;&lt;/script&gt;
</pre>
					<p>下記のようなselect要素を用意します。<strong>(id(とname)は必須)</strong></p>
					<p id="disabledattr" class="note">2011-04-21 追記：optionのdisabled属性をサポートしました。disabled属性を持つoptionはselectableへ展開したときに選択できません。</p>
					<pre name="code" class="xhtml">

&lt;select id=&quot;pref&quot; name=&quot;pref&quot;&gt;
&lt;optgroup label=&quot;北海道&quot;&gt;
&lt;option value=&quot;01&quot;&gt;北海道&lt;/option&gt;
&lt;/optgroup&gt;
&lt;optgroup label=&quot;東北&quot;&gt;
&lt;option value=&quot;02&quot;&gt;青森県&lt;/option&gt;
&lt;option value=&quot;03&quot;&gt;岩手県&lt;/option&gt;
&lt;option value=&quot;04&quot;&gt;宮城県&lt;/option&gt;
&lt;option value=&quot;05&quot;&gt;秋田県&lt;/option&gt;
&lt;option value=&quot;06&quot;&gt;山形県&lt;/option&gt;
&lt;option value=&quot;07&quot;&gt;福島県&lt;/option&gt;
&lt;/optgroup&gt;
&lt;optgroup label=&quot;関東&quot;&gt;
&lt;option value=&quot;08&quot;&gt;東京都&lt;/option&gt;
&lt;option value=&quot;09&quot;&gt;茨城県&lt;/option&gt;
&lt;option value=&quot;10&quot;&gt;栃木県&lt;/option&gt;
&lt;option value=&quot;11&quot;&gt;群馬県&lt;/option&gt;
&lt;option value=&quot;12&quot;&gt;埼玉県&lt;/option&gt;
&lt;option value=&quot;13&quot;&gt;千葉県&lt;/option&gt;
&lt;option value=&quot;14&quot;&gt;神奈川県&lt;/option&gt;
&lt;/optgroup&gt;
&lt;optgroup label=&quot;北陸&quot;&gt;
&lt;option value=&quot;15&quot;&gt;富山県&lt;/option&gt;
&lt;option value=&quot;16&quot;&gt;石川県&lt;/option&gt;
&lt;option value=&quot;17&quot;&gt;福井県&lt;/option&gt;
&lt;/optgroup&gt;
&lt;optgroup label=&quot;甲信越&quot;&gt;
&lt;option value=&quot;18&quot;&gt;新潟県&lt;/option&gt;
&lt;option value=&quot;19&quot;&gt;山梨県&lt;/option&gt;
&lt;option value=&quot;20&quot;&gt;長野県&lt;/option&gt;
&lt;/optgroup&gt;
&lt;optgroup label=&quot;東海&quot;&gt;
&lt;option value=&quot;21&quot;&gt;岐阜県&lt;/option&gt;
&lt;option value=&quot;22&quot;&gt;静岡県&lt;/option&gt;
&lt;option value=&quot;23&quot;&gt;愛知県&lt;/option&gt;
&lt;option value=&quot;24&quot;&gt;三重県&lt;/option&gt;
&lt;/optgroup&gt;
&lt;optgroup label=&quot;関西&quot;&gt;
&lt;option value=&quot;25&quot;&gt;滋賀県&lt;/option&gt;
&lt;option value=&quot;26&quot;&gt;京都府&lt;/option&gt;
&lt;option value=&quot;27&quot;&gt;大阪府&lt;/option&gt;
&lt;option value=&quot;28&quot;&gt;兵庫県&lt;/option&gt;
&lt;option value=&quot;29&quot;&gt;奈良県&lt;/option&gt;
&lt;option value=&quot;30&quot;&gt;和歌山県&lt;/option&gt;
&lt;/optgroup&gt;
&lt;optgroup label=&quot;中四国&quot;&gt;
&lt;option value=&quot;31&quot;&gt;鳥取県&lt;/option&gt;
&lt;option value=&quot;32&quot;&gt;島根県&lt;/option&gt;
&lt;option value=&quot;33&quot;&gt;岡山県&lt;/option&gt;
&lt;option value=&quot;34&quot;&gt;広島県&lt;/option&gt;
&lt;option value=&quot;35&quot;&gt;山口県&lt;/option&gt;
&lt;option value=&quot;36&quot;&gt;徳島県&lt;/option&gt;
&lt;option value=&quot;37&quot;&gt;香川県&lt;/option&gt;
&lt;option value=&quot;38&quot;&gt;愛媛県&lt;/option&gt;
&lt;option value=&quot;39&quot;&gt;高知県&lt;/option&gt;
&lt;/optgroup&gt;
&lt;optgroup label=&quot;九州&quot;&gt;
&lt;option value=&quot;40&quot;&gt;福岡県&lt;/option&gt;
&lt;option value=&quot;41&quot;&gt;佐賀県&lt;/option&gt;
&lt;option value=&quot;42&quot;&gt;長崎県&lt;/option&gt;
&lt;option value=&quot;43&quot;&gt;熊本県&lt;/option&gt;
&lt;option value=&quot;44&quot;&gt;大分県&lt;/option&gt;
&lt;option value=&quot;45&quot;&gt;宮崎県&lt;/option&gt;
&lt;option value=&quot;46&quot;&gt;鹿児島県&lt;/option&gt;
&lt;/optgroup&gt;
&lt;optgroup label=&quot;沖縄&quot;&gt;
&lt;option value=&quot;47&quot;&gt;沖縄県&lt;/option&gt;
&lt;/optgroup&gt;
&lt;/select&gt;
</pre>
					<p>option要素にはselected属性を使うことができます。<br />
					最後にHTMLヘッド要素の最後か任意のJSファイルで以下のように実行します。（jQuery UI selectableを利用している場合は後者のメソッドで呼び出しができません。）</p>
					<pre name="code" class="js">

jQuery(function($){
&nbsp;&nbsp;$(&quot;select&quot;).jQselectable();
});
// または
jQuery(function($){
&nbsp;&nbsp;$(&quot;select&quot;).selectable();
});
</pre>
					<p>対象にするselect要素は</p>
					<pre name="code" class="js">

$(&quot;対象にするselect要素&quot;).jQselectable();
</pre>
					<p>で決定します。<br />
					select要素全てに適用する場合は</p>
					<pre name="code" class="js">

$(&quot;select&quot;).jQselectable();
</pre>
					<p>classに&#8221;selectable&#8221;を含むselect要素全てに適用する場合は</p>
					<pre name="code" class="js">

$(&quot;.selectable&quot;).jQselectable();
</pre>
					<p>id=&#8221;selectable&#8221;に適用する場合は</p>
					<pre name="code" class="js">

$(&quot;#selectable&quot;).jQselectable();
</pre>
					<p>となります。<br />
					この辺りの指定方法は<a href="http://semooh.jp/jquery/">jQueryのリファレンス</a>をご覧ください。</p>
					<h3 id="skin">スタイル</h3>
					<p><strong>読み込むスタイルを変えることでセレクトボックスのデザインを簡単に変えることができます</strong>。<br />
					<strong>IE以外は</strong><a href="http://5509.me/sample/jQselectable1.3/">サンプル</a>のスタイル入れ替えボタンで確認できます。</p>
					<p>現在は</p>
					<ul>
					<li><img class="alignnone size-full wp-image-814" title="selectable_basic" src="http://5509.me/wp-content/uploads/2009/01/selectable_basic.gif" alt="selectable_basic" width="96" height="28" /> selectable</li>
					<li><img class="alignnone size-full wp-image-813" title="selectable_natural" src="http://5509.me/wp-content/uploads/2009/01/selectable_natural.gif" alt="selectable_natural" width="98" height="29" /> natural</li>
					</ul>
					<p>の2つから選択できます。これは増える予定でしたが、結局ふえてませんね。</p>
					<pre name="code" class="xhtml">

&lt;link type=&quot;text/css&quot; rel=&quot;stylesheet&quot; href=&quot;/skin/natural/style.css&quot; /&gt;
</pre>
					<p>スキンの構成ファイルについては、すごく簡単なんですけど後日追記していきます。</p>
					<h2 id="extensions">拡張</h2>
					<p>プルダウンの表示形式・表示非表示の際のエフェクト・表示速度・不透明度・プルダウン位置の微調整・プルダウンの高さ<br />
					などの拡張があります。</p>
					<h3 id="style">表示形式</h3>
					<p>プルダウンの表示形式を selectable、simpleBox<a href="#simpleBox"> </a>から選択できます。<br />
					サンプルの2～5がselectable、6,7がsimpleBoxです。<br />
					デフォルトは selectable になっているので selectable を使う場合は指定する必要はありません。</p>
					<pre name="code" class="js">

$(&quot;select&quot;).jQselectable({
&nbsp;&nbsp;style: &quot;simpleBox&quot;
});
</pre>
					<h4 id="selectable">selectable</h4>
					<p>selectableが指定された状態(デフォルト)では<br />
					select要素にoptgroup要素が含まれているかいないかでプルダウンの表示方法が若干変わります。</p>
					<p>optgroup要素がある場合 -<br />
					表示されるプルダウンではdl要素として生成され<br />
					optgroup要素がdt、option要素がddの中にa要素としてインラインで配置されます。</p>
					<p>optgroup要素なしの場合 -<br />
					プルダウンに表示される項目(option要素)全てがa要素としてインラインで配置されます。<br />
					なので項目が多い場合、1列に並んでしまい見難くなりますが<br />
					option要素にclass=&#8221;br&#8221;を入れることでその対象要素の後ろで改行させることができます。<br />
					これのサンプルは <a title="jQuery.seletable.jsサンプルへのリンク" href="http://5509.me/sample/jQueryselectable/#selectable">4) を参考に</a>してください。これが一番使い勝手がいいかも。</p>
					<p>ちなみに selectable が指定されている状態では<br />
					optgroup要素が含まれていてもoption要素にclass=&#8221;br&#8221;の指定ができます。<br />
					group内の要素が多い場合は、class=&#8221;br&#8221;で改行することで見易さが改善されます。</p>
					<h4 id="simpleBox">simpleBox</h4>
					<p>simpleBoxが指定されたselect要素は<br />
					selectable とは違い、<strong>デザイン可能なプルダウンに拡張します。</strong>(スクロールバーは環境依存です。)</p>
					<p>simpleBoxが指定されたselect要素は<strong>optgroup要素、class=&#8221;br&#8221;を含むことはできません</strong>。</p>
					<p>simpleBoxで指定するselectボックスは併せて <a href="#height">プルダウンの高さ</a> もご覧ください。</p>
					<h3 id="effect">エフェクト</h3>
					<p>プルダウンを表示する際にフェードイン、スライドダウンをエフェクトとして使用することができます。<br />
					デフォルトはエフェクトなしになります。</p>
					<p>下記の指定で、スライドダウン表示になります。</p>
					<pre name="code" class="js">

$(&quot;select&quot;).jQselectable({
&nbsp;&nbsp;set: &quot;slideDown&quot;
});
</pre>
					<p>フェードインにするときは set: &#8220;fadeIn&#8221;にします。</p>
					<p>また同じようにして<br />
					プルダウンを非表示にする際もスライドアップ、フェードアウトのエフェクトを使用することができ<br />
					こちらはoutプロパティを使います。</p>
					<pre name="code" class="js">

$(&quot;select&quot;).jQselectable({
&nbsp;&nbsp;out: &quot;slideUp&quot;
});
</pre>
					<p>フェードアウトするときは out: &#8220;fadeOut&#8221; とします。</p>
					<p>また表示、非表示時にする際のエフェクトはプルダウンが表示されるまでの速度(Duration)を決めることができ<br />
					下記のように</p>
					<pre name="code" class="js">

$(&quot;select&quot;).jQselectable({
&nbsp;&nbsp;inDuration: &quot;fast&quot;,
&nbsp;&nbsp;outDuration: &quot;fast&quot;
});
</pre>
					<p>表示時の速度は setDuration、非表示時の速度は outDuration でそれぞれ指定します。<br />
					取ることができる値は、&#8221;slow&#8221;、&#8221;normal&#8221;、&#8221;fast&#8221;、ミリセコンド指定(1～)で<br />
					デフォルトは&#8221;normal&#8221;になっています。</p>
					<p>例えば、クラスにdateを持つselect要素の表示にスライドダウン、非表示にフェードアウト<br />
					それぞれの速度をfastとしたいときは以下のようになります。</p>
					<pre name="code" class="js">

$(&quot;.date&quot;).jQselectable({
&nbsp;&nbsp;set: &quot;slideDown&quot;,
&nbsp;&nbsp;out: &quot;fadeOut&quot;,
&nbsp;&nbsp;inDuration: &quot;fast&quot;,
&nbsp;&nbsp;outDuration: &quot;fast&quot;
});
</pre>
					<h3 id="opacity">透明度</h3>
					<p>プルダウンが表示されたときの透明度を決めることができ</p>
					<pre name="code" class="js">

$(&quot;select&quot;).jQselectable({
&nbsp;&nbsp;opacity: .9
});
</pre>
					<p>のように opacity: 値 で指定します。<br />
					CSSプロパティと同じものになるので 0～1の間で指定できます。</p>
					<h3 id="pos">プルダウン位置の調整(少し高度な調整)</h3>
					<p>プルダウンの位置は画面におけるselect要素の位置と<br />
					input要素の置換した際のinput要素の高さから決定しています。</p>
					<p>標準ではinput要素の高さはheightプロパティで指定しているので問題ありませんが<br />
					selectボックスを(実際はinput要素にあたりますが)独自のデザインにした場合などに<br />
					input要素の上下paddingを使った場合、プルダウンの位置がずれて最悪重なる場合があります。</p>
					<p>これを回避するには以下のように posプロパティを使って微調整を行います。</p>
					<pre name="code" class="js">

$(&quot;select&quot;).jQselectable({
&nbsp;&nbsp;pos: 20
});
</pre>
					<p>posプロパティには数値(px)を指定でき、対象select要素のpadding値(上下の合計)を入れるのが一般的でしょう。</p>
					<h3 id="height">プルダウンの高さ</h3>
					<p><a href="#simpleBox">simpleBox</a>を指定したselectボックスにはCSSプロパティのmin-heightで高さを決めますが<br />
					IE6が対応していないのでjQselectableプロパティのheightを使います。</p>
					<pre name="code" class="js">

$(&quot;select&quot;).jQselectable({
&nbsp;&nbsp;style: &quot;simpleBox&quot;,
&nbsp;&nbsp;height: 150
});
</pre>
					<p>上記のようにheightには数値(px)を使うことができます。<br />
					例えばheight: 150にしておけば、プルダウンの高さが150pxを超えるときに<br />
					150pxで固定されスクロールバーが表示されます。</p>
					<h2 id="customize">カスタマイズ</h2>
					<p>サンプルで使っている都道府県、日付以外のselectボックスに適用する場合の説明になります。</p>
					<h3 id="customize1">独自のselectボックスに適用させる</h3>
					<p>jQselectableは指定したselect要素をa+span要素とdiv要素等に置き換えています。<br />
					具体的に以下にようなselect要素に適用した場合は(例はselectable・optgroupありの場合)</p>
					<pre name="code" class="xhtml">

&lt;select id=&quot;pref&quot; name=&quot;pref&quot; class=&quot;selectable&quot;&gt;
&lt;optgroup label=&quot;北海道&quot;&gt;
&lt;option value=&quot;01&quot;&gt;北海道&lt;/option&gt;
&lt;/optgroup&gt;
&lt;optgroup label=&quot;東北&quot;&gt;
&lt;option value=&quot;02&quot;&gt;青森県&lt;/option&gt;
&lt;option value=&quot;03&quot;&gt;岩手県&lt;/option&gt;
&lt;option value=&quot;04&quot;&gt;宮城県&lt;/option&gt;
&lt;option value=&quot;05&quot;&gt;秋田県&lt;/option&gt;
&lt;option value=&quot;06&quot;&gt;山形県&lt;/option&gt;
&lt;option value=&quot;07&quot;&gt;福島県&lt;/option&gt;
&lt;/optgroup&gt;
&lt;optgroup label=&quot;関東&quot;&gt;
&lt;option value=&quot;08&quot;&gt;東京都&lt;/option&gt;
&lt;option value=&quot;09&quot;&gt;茨城県&lt;/option&gt;
&lt;option value=&quot;10&quot;&gt;栃木県&lt;/option&gt;
&lt;option value=&quot;11&quot;&gt;群馬県&lt;/option&gt;
&lt;option value=&quot;12&quot;&gt;埼玉県&lt;/option&gt;
&lt;option value=&quot;13&quot;&gt;千葉県&lt;/option&gt;
&lt;option value=&quot;14&quot;&gt;神奈川県&lt;/option&gt;
&lt;/optgroup&gt;
&lt;optgroup label=&quot;北陸&quot;&gt;
&lt;option value=&quot;15&quot;&gt;富山県&lt;/option&gt;
&lt;option value=&quot;16&quot;&gt;石川県&lt;/option&gt;
&lt;option value=&quot;17&quot;&gt;福井県&lt;/option&gt;
&lt;/optgroup&gt;
&lt;optgroup label=&quot;甲信越&quot;&gt;
&lt;option value=&quot;18&quot;&gt;新潟県&lt;/option&gt;
&lt;option value=&quot;19&quot;&gt;山梨県&lt;/option&gt;
&lt;option value=&quot;20&quot;&gt;長野県&lt;/option&gt;
&lt;/optgroup&gt;
&lt;optgroup label=&quot;東海&quot;&gt;
&lt;option value=&quot;21&quot;&gt;岐阜県&lt;/option&gt;
&lt;option value=&quot;22&quot;&gt;静岡県&lt;/option&gt;
&lt;option value=&quot;23&quot;&gt;愛知県&lt;/option&gt;
&lt;option value=&quot;24&quot;&gt;三重県&lt;/option&gt;
&lt;/optgroup&gt;
&lt;optgroup label=&quot;関西&quot;&gt;
&lt;option value=&quot;25&quot;&gt;滋賀県&lt;/option&gt;
&lt;option value=&quot;26&quot;&gt;京都府&lt;/option&gt;
&lt;option value=&quot;27&quot;&gt;大阪府&lt;/option&gt;
&lt;option value=&quot;28&quot;&gt;兵庫県&lt;/option&gt;
&lt;option value=&quot;29&quot;&gt;奈良県&lt;/option&gt;
&lt;option value=&quot;30&quot;&gt;和歌山県&lt;/option&gt;
&lt;/optgroup&gt;
&lt;optgroup label=&quot;中四国&quot;&gt;
&lt;option value=&quot;31&quot;&gt;鳥取県&lt;/option&gt;
&lt;option value=&quot;32&quot;&gt;島根県&lt;/option&gt;
&lt;option value=&quot;33&quot;&gt;岡山県&lt;/option&gt;
&lt;option value=&quot;34&quot;&gt;広島県&lt;/option&gt;
&lt;option value=&quot;35&quot;&gt;山口県&lt;/option&gt;
&lt;option value=&quot;36&quot;&gt;徳島県&lt;/option&gt;
&lt;option value=&quot;37&quot;&gt;香川県&lt;/option&gt;
&lt;option value=&quot;38&quot;&gt;愛媛県&lt;/option&gt;
&lt;option value=&quot;39&quot;&gt;高知県&lt;/option&gt;
&lt;/optgroup&gt;
&lt;optgroup label=&quot;九州&quot;&gt;
&lt;option value=&quot;40&quot;&gt;福岡県&lt;/option&gt;
&lt;option value=&quot;41&quot;&gt;佐賀県&lt;/option&gt;
&lt;option value=&quot;42&quot;&gt;長崎県&lt;/option&gt;
&lt;option value=&quot;43&quot;&gt;熊本県&lt;/option&gt;
&lt;option value=&quot;44&quot;&gt;大分県&lt;/option&gt;
&lt;option value=&quot;45&quot;&gt;宮崎県&lt;/option&gt;
&lt;option value=&quot;46&quot;&gt;鹿児島県&lt;/option&gt;
&lt;/optgroup&gt;
&lt;optgroup label=&quot;沖縄&quot;&gt;
&lt;option value=&quot;47&quot;&gt;沖縄県&lt;/option&gt;
&lt;/optgroup&gt;
&lt;/select&gt;
</pre>
					<pre name="code" class="xhtml">

&lt;select id=&quot;pref&quot; name=&quot;pref&quot;&gt;~~~&lt;/select&gt;
&lt;a id=&quot;pref_dammy&quot; href=&quot;#&quot; class=&quot;sctble_display sctble selectable&quot;&gt;&lt;span&gt;大阪府&lt;/span&gt;&lt;/a&gt;
</pre>
					<pre name="code" class="xhtml">

&lt;div id=&quot;pref_mat&quot; class=&quot;sctble_mat sctble selectable optg&quot; style=&quot;position: absolute; z-index: 1000; display: none;&quot;&gt;
&lt;dl class=&quot;first-child last-child&quot;&gt;
&lt;dt class=&quot;first-child&quot;&gt;北海道&lt;/dt&gt;
&lt;dd&gt;&lt;a href=&quot;#%E5%8C%97%E6%B5%B7%E9%81%93&quot; name=&quot;01&quot; class=&quot;selected first-child last-child&quot;&gt;北海道&lt;/a&gt;&lt;/dd&gt;
&lt;dt&gt;東北&lt;/dt&gt;
&lt;dd&gt;&lt;a href=&quot;#%E9%9D%92%E6%A3%AE%E7%9C%8C&quot; name=&quot;02&quot; class=&quot;first-child&quot;&gt;青森県&lt;/a&gt;&lt;a href=&quot;#%E5%B2%A9%E6%89%8B%E7%9C%8C&quot; name=&quot;03&quot;&gt;岩手県&lt;/a&gt;&lt;a href=&quot;#%E5%AE%AE%E5%9F%8E%E7%9C%8C&quot; name=&quot;04&quot;&gt;宮城県&lt;/a&gt;&lt;a href=&quot;#%E7%A7%8B%E7%94%B0%E7%9C%8C&quot; name=&quot;05&quot;&gt;秋田県&lt;/a&gt;&lt;a href=&quot;#%E5%B1%B1%E5%BD%A2%E7%9C%8C&quot; name=&quot;06&quot;&gt;山形県&lt;/a&gt;&lt;a href=&quot;#%E7%A6%8F%E5%B3%B6%E7%9C%8C&quot; name=&quot;07&quot; class=&quot;last-child&quot;&gt;福島県&lt;/a&gt;&lt;/dd&gt;
&lt;dt&gt;関東&lt;/dt&gt;
&lt;dd&gt;&lt;a href=&quot;#%E6%9D%B1%E4%BA%AC%E9%83%BD&quot; name=&quot;08&quot; class=&quot;first-child&quot;&gt;東京都&lt;/a&gt;&lt;a href=&quot;#%E8%8C%A8%E5%9F%8E%E7%9C%8C&quot; name=&quot;09&quot;&gt;茨城県&lt;/a&gt;&lt;a href=&quot;#%E6%A0%83%E6%9C%A8%E7%9C%8C&quot; name=&quot;10&quot;&gt;栃木県&lt;/a&gt;&lt;a href=&quot;#%E7%BE%A4%E9%A6%AC%E7%9C%8C&quot; name=&quot;11&quot;&gt;群馬県&lt;/a&gt;&lt;a href=&quot;#%E5%9F%BC%E7%8E%89%E7%9C%8C&quot; name=&quot;12&quot;&gt;埼玉県&lt;/a&gt;&lt;a href=&quot;#%E5%8D%83%E8%91%89%E7%9C%8C&quot; name=&quot;13&quot;&gt;千葉県&lt;/a&gt;&lt;a href=&quot;#%E7%A5%9E%E5%A5%88%E5%B7%9D%E7%9C%8C&quot; name=&quot;14&quot; class=&quot;last-child&quot;&gt;神奈川県&lt;/a&gt;&lt;/dd&gt;
&lt;dt&gt;北陸&lt;/dt&gt;
&lt;dd&gt;&lt;a href=&quot;#%E5%AF%8C%E5%B1%B1%E7%9C%8C&quot; name=&quot;15&quot; class=&quot;first-child&quot;&gt;富山県&lt;/a&gt;&lt;a href=&quot;#%E7%9F%B3%E5%B7%9D%E7%9C%8C&quot; name=&quot;16&quot;&gt;石川県&lt;/a&gt;&lt;a href=&quot;#%E7%A6%8F%E4%BA%95%E7%9C%8C&quot; name=&quot;17&quot; class=&quot;last-child&quot;&gt;福井県&lt;/a&gt;&lt;/dd&gt;
&lt;dt&gt;甲信越&lt;/dt&gt;
&lt;dd&gt;&lt;a href=&quot;#%E6%96%B0%E6%BD%9F%E7%9C%8C&quot; name=&quot;18&quot; class=&quot;first-child&quot;&gt;新潟県&lt;/a&gt;&lt;a href=&quot;#%E5%B1%B1%E6%A2%A8%E7%9C%8C&quot; name=&quot;19&quot;&gt;山梨県&lt;/a&gt;&lt;a href=&quot;#%E9%95%B7%E9%87%8E%E7%9C%8C&quot; name=&quot;20&quot; class=&quot;last-child&quot;&gt;長野県&lt;/a&gt;&lt;/dd&gt;
&lt;dt&gt;東海&lt;/dt&gt;
&lt;dd&gt;&lt;a href=&quot;#%E5%B2%90%E9%98%9C%E7%9C%8C&quot; name=&quot;21&quot; class=&quot;first-child&quot;&gt;岐阜県&lt;/a&gt;&lt;a href=&quot;#%E9%9D%99%E5%B2%A1%E7%9C%8C&quot; name=&quot;22&quot;&gt;静岡県&lt;/a&gt;&lt;a href=&quot;#%E6%84%9B%E7%9F%A5%E7%9C%8C&quot; name=&quot;23&quot;&gt;愛知県&lt;/a&gt;&lt;a href=&quot;#%E4%B8%89%E9%87%8D%E7%9C%8C&quot; name=&quot;24&quot; class=&quot;last-child&quot;&gt;三重県&lt;/a&gt;&lt;/dd&gt;
&lt;dt&gt;関西&lt;/dt&gt;
&lt;dd&gt;&lt;a href=&quot;#%E6%BB%8B%E8%B3%80%E7%9C%8C&quot; name=&quot;25&quot; class=&quot;first-child&quot;&gt;滋賀県&lt;/a&gt;&lt;a href=&quot;#%E4%BA%AC%E9%83%BD%E5%BA%9C&quot; name=&quot;26&quot;&gt;京都府&lt;/a&gt;&lt;a href=&quot;#%E5%A4%A7%E9%98%AA%E5%BA%9C&quot; name=&quot;27&quot;&gt;大阪府&lt;/a&gt;&lt;a href=&quot;#%E5%85%B5%E5%BA%AB%E7%9C%8C&quot; name=&quot;28&quot;&gt;兵庫県&lt;/a&gt;&lt;a href=&quot;#%E5%A5%88%E8%89%AF%E7%9C%8C&quot; name=&quot;29&quot;&gt;奈良県&lt;/a&gt;&lt;a href=&quot;#%E5%92%8C%E6%AD%8C%E5%B1%B1%E7%9C%8C&quot; name=&quot;30&quot; class=&quot;last-child&quot;&gt;和歌山県&lt;/a&gt;&lt;/dd&gt;
&lt;dt&gt;中四国&lt;/dt&gt;
&lt;dd&gt;&lt;a href=&quot;#%E9%B3%A5%E5%8F%96%E7%9C%8C&quot; name=&quot;31&quot; class=&quot;first-child&quot;&gt;鳥取県&lt;/a&gt;&lt;a href=&quot;#%E5%B3%B6%E6%A0%B9%E7%9C%8C&quot; name=&quot;32&quot;&gt;島根県&lt;/a&gt;&lt;a href=&quot;#%E5%B2%A1%E5%B1%B1%E7%9C%8C&quot; name=&quot;33&quot;&gt;岡山県&lt;/a&gt;&lt;a href=&quot;#%E5%BA%83%E5%B3%B6%E7%9C%8C&quot; name=&quot;34&quot;&gt;広島県&lt;/a&gt;&lt;a href=&quot;#%E5%B1%B1%E5%8F%A3%E7%9C%8C&quot; name=&quot;35&quot;&gt;山口県&lt;/a&gt;&lt;a href=&quot;#%E5%BE%B3%E5%B3%B6%E7%9C%8C&quot; name=&quot;36&quot;&gt;徳島県&lt;/a&gt;&lt;a href=&quot;#%E9%A6%99%E5%B7%9D%E7%9C%8C&quot; name=&quot;37&quot;&gt;香川県&lt;/a&gt;&lt;a href=&quot;#%E6%84%9B%E5%AA%9B%E7%9C%8C&quot; name=&quot;38&quot;&gt;愛媛県&lt;/a&gt;&lt;a href=&quot;#%E9%AB%98%E7%9F%A5%E7%9C%8C&quot; name=&quot;39&quot; class=&quot;last-child&quot;&gt;高知県&lt;/a&gt;&lt;/dd&gt;
&lt;dt&gt;九州&lt;/dt&gt;
&lt;dd&gt;&lt;a href=&quot;#%E7%A6%8F%E5%B2%A1%E7%9C%8C&quot; name=&quot;40&quot; class=&quot;first-child&quot;&gt;福岡県&lt;/a&gt;&lt;a href=&quot;#%E4%BD%90%E8%B3%80%E7%9C%8C&quot; name=&quot;41&quot;&gt;佐賀県&lt;/a&gt;&lt;a href=&quot;#%E9%95%B7%E5%B4%8E%E7%9C%8C&quot; name=&quot;42&quot;&gt;長崎県&lt;/a&gt;&lt;a href=&quot;#%E7%86%8A%E6%9C%AC%E7%9C%8C&quot; name=&quot;43&quot;&gt;熊本県&lt;/a&gt;&lt;a href=&quot;#%E5%A4%A7%E5%88%86%E7%9C%8C&quot; name=&quot;44&quot;&gt;大分県&lt;/a&gt;&lt;a href=&quot;#%E5%AE%AE%E5%B4%8E%E7%9C%8C&quot; name=&quot;45&quot;&gt;宮崎県&lt;/a&gt;&lt;a href=&quot;#%E9%B9%BF%E5%85%90%E5%B3%B6%E7%9C%8C&quot; name=&quot;46&quot; class=&quot;last-child&quot;&gt;鹿児島県&lt;/a&gt;&lt;/dd&gt;
&lt;dt&gt;沖縄&lt;/dt&gt;
&lt;dd class=&quot;last-child&quot;&gt;&lt;a href=&quot;#%E6%B2%96%E7%B8%84%E7%9C%8C&quot; name=&quot;47&quot; class=&quot;first-child last-child&quot;&gt;沖縄県&lt;/a&gt;&lt;/dd&gt;
&lt;/dl&gt;
&lt;/div&gt;
</pre>
					<p>といった具合に変換されますが<br />
					変換後のa要素は変換前のselect要素自体の幅は引き継ぎません。<br />
					なのでCSSを使って幅を決めます。</p>
					<h3 id="customize2">id、classの引継ぎ</h3>
					<p>変換後のa要素はのidにはselect要素のid+&#8221;_dammy&#8221;<br />
					classは sctble_display、sctble(sBox)とselect要素のclassが入ります。</p>
					<p>個別に調整する場合は、id+&#8221;_dammy&#8221;で指定<br />
					ある程度まとめて調整する場合はclassを使います。</p>
					<pre name="code" class="css">

a.sctble_display {
&nbsp;&nbsp;display: inline-block;
&nbsp;&nbsp;*display: inline;
&nbsp;&nbsp;zoom: 1;
&nbsp;&nbsp;color: #262626;
&nbsp;&nbsp;text-decoration: none;
&nbsp;&nbsp;cursor: default;
}

a.sctble_display span {
&nbsp;&nbsp;display: block;
&nbsp;&nbsp;width: 5em;
&nbsp;&nbsp;cursor: default;
}
</pre>
					<p>のようにデフォルトのinput要素の幅は7emを指定しているので<br />
					ここを継承値が同じか高いもので上書きすることで幅を変えることができます。</p>
					<p>これを使って日付の幅を変えています。</p>
					<p>同様にプルダウン部分もid、classを引き継ぎます。<br />
					生成されたプルダウンのidにはselect要素のid+&#8221;_mat&#8221;<br />
					classは sctble_mat、sctble(sBox)とselect要素のclassが入ります。</p>
					<p>simpleBox プルダウン部分の幅は</p>
					<pre name="code" class="css">

div.sBox {
&nbsp;&nbsp;border: solid #DFDFDF 1px;
&nbsp;&nbsp;border-left: none;
&nbsp;&nbsp;width: 130px;
&nbsp;&nbsp;overflow: auto;
&nbsp;&nbsp;overflow-x: hidden;
&nbsp;&nbsp;background: #FFF;
}
</pre>
					<p>上記のようにdiv.sBoxで指定しているので<br />
					これを上書きすることでプルダウンの幅を変えることができます。</p>
					<p>※<a href="#height">高さはselectableプロパティで指定します。</a></p>
					<h2 id="date">日付で使う</h2>
					<p>日付で使う場合は、サンプルのように<br />
					selectable の場合は クラスに 年 : m_year、月 : m_month、日 : m_day を入れます。<br />
					同様にsimpleBox の場合は クラスに 年 : s_year、月 : s_month、日 : s_day をそれぞれ入れます。</p>
					<h2 id="callback">Callback関数を使う</h2>
					<p>プルダウンの項目を選択したときにCallback関数を使うことができます。<br />
					Callback関数を使う場合は、以下のようにします。</p>
					<pre name="code" class="js">

$(&quot;select&quot;).jQselectable({
&nbsp;&nbsp;callback: function(){
&nbsp;&nbsp;&nbsp;&nbsp;handler
&nbsp;&nbsp;})
});
</pre>
					<p>例えば、select.onchangeのようにプルダウンの項目を選択したときに<br />
					optionのvalue値のURIに遷移するfunctionを定義するには以下のようにします。サンプル8)を参照</p>
					<pre name="code" class="js">

$(&quot;#callback&quot;).jQselectable({
&nbsp;&nbsp;style: &quot;simpleBox&quot;,
&nbsp;&nbsp;opacity: .9,
&nbsp;&nbsp;callback: function(){
&nbsp;&nbsp;&nbsp;&nbsp;if($(this).val().length&gt;0) window.location = $(this).val();
&nbsp;&nbsp;}
});
</pre>
					<p><strong>渡したjQueryオブジェクトを$(this)で受け取ることができます。</strong></p>
					<h2 id="rebuild">動的にselect要素のDOMを書き換える場合（rebuildメソッド）</h2>
					<p>jQselectableを実行した後に、JSやAJAXを使ってselect要素のDOMが動的に内容が書き換わっても、rebuildメソッドを実行することで jQselectableの内容を最新に更新することができます。</p>
					<p>事例については<a href="/log/jqselectable-with-using-ajaxzip2">jQselectable(jQuery.selectable.js) とAjaxZip2を併用する</a>を確認してください。</p>
					<p>rebuildメソッドを使う場合は、<strong>jQselectable実行時に返されるインスタンスを変数から参照できる状態にしておく必要があります</strong>。</p>
					<p><span><img style="cursor: pointer; margin: 0pt; padding: 0pt; border: medium none; vertical-align: middle; display: none;" title="Comments" src="http://s.hatena.ne.jp/images/comment.gif" alt="Comments" /></span><span> </span></p>
					<pre>var selectable = $(elm).jQselectable(); // 実行時にインスタンスを変数に保存
selectable.rebuild(); // 再構築</pre>
					<p>上記のような再構築が必要ない場合は、今まで通り</p>
					<pre>$(elm).jQselectable();</pre>
<p>だけです。</p>
<h2 id="edited">更新履歴・追記</h2>
<dl>
<dt>2011.04.21</dt>
<dd><a href="#disabledattr">option要素のdisabled属性に対応</a><br />
新しいテーマ「XPスタイル」を追加しました。</dd>
<dt>2011.01.16</dt>
<dd><a href="https://github.com/5509/jQselectable">ソースコードをgithubへ移行</a></dd>
<dt>2010.12.02</dt>
<dd>Windowの高さ半分より下にselectableが存在するときにはプルダウンをselectableの上に表示するように修正しました</dd>
<dd>rebuildメソッドの説明を追加しました。</dd>
<dt>2010.02.11</dt>
<dd>jQselectableとして記事を修正しました。</dd>
<dd>rebuildメソッドの説明を追加しました。</dd>
<dd>callbackで$(this)で受け取れるようにしました。</dd>
<dt>2009.07.30</dt>
<dd>ソースコードを修正しました。(動作など変更はありません)</dd>
<dt>2009.01.21</dt>
<dd>アップデートしました。変更項目は、<strong>select置き換えをやめて表示部分はa+span要素に構成変更</strong>・<strong>選択時のフォーカス</strong>・<strong>デザインをスタイルで簡単に選択できる</strong>ようにしました。 </dd>
<dt>2008.09.16</dt>
<dd><a href="#height">プルダウンの高さ</a>、<a href="#callback">Callback関数を使う</a>を追加</dd>
<dt>2008.09.14</dt>
<dd>select要素のmultiple属性には対応していません。。。。</dd>
</dl>
<dl id="spec">
<dt>動作環境</dt>
<dd>Windows: IE6, IE7, Firefox3, Opera9.5, Safari3, Chromeで確認</dd>
</dl>
<img src="http://5509.me/?ak_action=api_record_view&id=196&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/jqueryselectable/feed</wfw:commentRss>
		<slash:comments>71</slash:comments>
		</item>
		<item>
		<title>tirolstar has been renewal !!</title>
		<link>http://5509.me/log/tirolstar-has-been-renewal</link>
		<comments>http://5509.me/log/tirolstar-has-been-renewal#comments</comments>
		<pubDate>Fri, 05 Sep 2008 12:48:21 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[フォーム]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=186</guid>
		<description><![CDATA[					
					ちろるとゆにのフォトログ tirolstar をリニューアルしました。
					誰も見てないけど。
					
					
					WordPress2.6.1(現段階で)
					RSSとj [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/wp-content/uploads/2008/09/tirolstar.jpg"><img class="alignnone size-medium wp-image-188" title="tirolstar" src="http://5509.me/wp-content/uploads/2008/09/tirolstar-300x273.jpg" alt="" width="300" height="273" /></a></p>
					<p><a href="http://tirolstar.org">ちろるとゆにのフォトログ tirolstar</a> をリニューアルしました。<br />
					誰も見てないけど。</p>
					<p><span id="more-186"></span></p>
					<ul>
					<li>WordPress2.6.1(現段階で)</li>
					<li><a href="http://tirolstar.org/feed">RSS</a>と<a href="http://sorgalla.com/jcarousel/">jCarousel</a>を使って100件まで(何件でもいいねんけど)のサムネイルギャラリーをトップページに<br />
					これもっといい方法ないかな…Feedをロードした時点で含まれる画像を全部読み込むのがほんまいらん<br />
					結局それの80*80の画像しか表示してないのに…かなりの無駄です わかってます。<br />
					画像をとってこれたらFeedなんか使わんとPHPのほうがいいなぁ。<br />
					ちなみにRSSはFeedBurnerを使うと取得がメンドイからわけた ← FeedBurner feed smithが使えなかった。</li>
					<li>更新履歴をTwitterで(ロゴみたいなやつの右上にあるフキダシっぽいの)</li>
					<li>画像の拡大は実験も兼ねて<a href="http://www.cabel.name/2008/02/fancyzoom-10.html">FancyZoom</a>を使ってみた(でも<a href="http://fancy.klade.lv/">FancyBox</a>のほうがいいかも)</li>
					<li>コメントフォームに<a href="http://5509.me/2008/08/22/realtimeformvalidation.html">validation.js</a>を使ってみた</li>
					<li>なんかその他も細かいことをしてます</li>
					<li>おもにjQuery</li>
					<li><a href="http://tirolstar.org/2008/04/peron.html">ちろる</a>はかわいい</li>
					<li><a href="http://tirolstar.org/2008/08/ilovesnack.html">ゆに</a>はかわいい</li>
					<li>デザインもっとかわいくしたい できない なんかムダが多い気がする もっと勉強するです…</li>
					</ul>
					<p>いつでも構わずけっこうな頻度で見てにやついてます。<br />
					もっといろんな人に見てほしいけど(かわいいから)、どうやって…？ブログランキングとか参加する気ないしな…</p>
					<p>そんな感じです。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=186&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/tirolstar-has-been-renewal/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>リアルタイムフォームバリデーション jQuery.validation.js</title>
		<link>http://5509.me/log/realtimeformvalidation</link>
		<comments>http://5509.me/log/realtimeformvalidation#comments</comments>
		<pubDate>Fri, 22 Aug 2008 09:05:02 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[イライラ解消]]></category>
		<category><![CDATA[フォーム]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/2008/08/22/realtimeformvalidation.html</guid>
		<description><![CDATA[					お知らせ（10.08.06）： jQuery.validation.jsはアップデート・修正対応などを終了しました。仕様などを変更したバリデーションプラグインを公開したので、そちらの方を参考にしてください。（v [...]]]></description>
			<content:encoded><![CDATA[					<p class="attention" style="border: solid #e29a1b 2px; padding: 5px 10px; background: #fff;"><strong>お知らせ（10.08.06）： </strong><br />jQuery.validation.jsはアップデート・修正対応などを終了しました。<br />仕様などを変更したバリデーションプラグインを公開したので、そちらの方を参考にしてください。（validation.jsにはあるのにexValidationでは実装していない機能もありますが、基本的に実装は行いません）<br />
					<a href="http://5509.me/log/exvalidation">どんなフォームにも使えるjQueryのフォームバリデーションプラグイン:  exValidation</a></p>
					<p><a href="http://5509.me/sample/validation/"><img class="size-full wp-image-38" title="validation.jsサンプル" src="http://5509.me/wp-content/uploads/2008/08/validation_thum.gif" alt="validation.jsサンプル" width="350" height="156" /></a></p>
					<p>jQuery.validation.jsはフォーム入力のイライラを軽減して、Webブラウジングとかショッピングをもっと快適にするための<strong>jQueryプラグイン</strong>です。<strong>(もちろんサーバサイドでのチェックは必須ですが…)</strong></p>
					<p><a title="validation.jsサンプルへのリンク" href="http://5509.me/sample/validation/">jQuery.validation.jsのサンプルを見てみる</a></p>
					<p><span id="more-152"></span></p>
					<h2>トピックス</h2>
					<ul>
					<li><a href="#features">特徴</a></li>
					<li><a href="#download">ダウンロード</a></li>
					<li><a href="#install">導入方法</a>
					<ul>
					<li><a href="#install1">1.JSファイルを読み込む</a></li>
					<li><a href="#install2">2.input要素にクラスを割り振る(checkbox、radio、複数項目以外)</a></li>
					<li><a href="#install3">3.checkbox、radio、複数項目の場合</a></li>
					<li><a href="#install4">4.select要素を対象にする場合</a></li>
					<li><a href="#install5">5.再入力をチェックする場合</a></li>
					<li><a href="#install6">6.入力文字数をチェックする場合</a></li>
					<li><a href="#install7">7.アクティベート</a></li>
					</ul>
					</li>
					<li><a href="#extensions">拡張</a>
					<ul>
					<li><a href="#messages">表示メッセージを変更する</a></li>
					<li><a href="#tip">チップの位置を変更する</a></li>
					<li><a href="#ajaxzip2">AjaxZip2.0を使う</a></li>
					<li><a href="#dialog">ダイアログの設定</a></li>
					<li><a href="#settinglots">複数項目を同時に設定する</a></li>
					<li><a href="#resetdata">フォームの項目をリセットする</a></li>
					</ul>
					</li>
					<li><a href="/sample/validation/index.html">サンプル</a></li>
					<li><a href="#edited">更新履歴・追記</a></li>
					<li><a href="#spec">動作環境</a></li>
					</ul>
					<h2 id="features">特徴</h2>
					<p>フォームバリデーションのライブラリはたくさん存在しますが<br />
					jQuery.validation.jsの特徴として</p>
					<ul>
					<li>リアルタイムでエラーを表示することで間違いを少なくする</li>
					<li>クリーンなHTMLで使える</li>
					<li>フォームのデザイン(HTMLの構成)に依存しない</li>
					<li>エラーチップのデザイン・位置を変更できる</li>
					<li>エラー文、ダイアログに表示する文章を変更できる</li>
					<li>複数のフォームがある場合 フォーム毎に設定を変更できる</li>
					<li>ダイアログと透明レイヤーの透過度を変更できる</li>
					<li><a href="http://www.kawa.net/works/ajax/ajaxzip2/ajaxzip2.html">AjaxZip2.0</a>と併用できる</li>
					</ul>
					<p>などがあります。(詳細は<a href="#install">導入方法</a>・<a href="#extensions">拡張</a>に記述。)</p>
					<h2 id="download">ダウンロード</h2>
					<p>jQuery.validation.jsはjQueryのプラグインなので<br />
					<a href="http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js">jQuery1.2.6</a>以上が必要になります。(サンプルファイルにはjQuery1.4が含まれています。)</p>
					<dl>
					<dt>ソース単体 </dt>
					<dd><a href="/sample/validation/js/jquery.validation.js">jQuery.validation.js</a><br />
					<a href="/sample/validation/js/jquery.validation.min.js">jQuery.validation.min.js</a></dd>
					<dt>サンプルファイル(AjaxZip2.0同梱)</dt>
					<dd><a href="/sample/archive/validation.zip">validation.zip</a></dd>
					</dl>
					<h2 id="install">導入方法</h2>
					<h3 title="install1">1.JSファイルを読み込む</h3>
					<pre name="code" class="xhtml">

&lt;script type=&quot;text/javascript&quot; src=&quot;/js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;/js/jquery.validation.js&quot;&gt;&lt;/script&gt;
</pre>
					<h3 title="install2">2.input要素にクラスを割り振る(checkbox、radio、複数項目以外)</h3>
					<p>HTMLファイルのinput要素に以下のクラスを割り振ることで<br />
					適用する項目を決めることができます。</p>
					<ul>
					<li>required &#8211; 必須項目</li>
					<li>retype-対象にするID &#8211; 再入力チェック</li>
					<li><strong>email</strong> &#8211; メールアドレスチェック (*081114 <strong>mail から email に変わりました</strong></li>
					<li>hankaku &#8211; 全角禁止</li>
					<li>tel &#8211; 電話番号(形式チェックはなし)</li>
					<li>numonly &#8211; 数字のみ</li>
					<li>zip &#8211; 郵便番号(形式チェックはなし)</li>
					</ul>
					<p>また、適用させる項目はrequiredとhankakuは他の項目と同時に含めることが出来ます。<br />
					例えば下記のようにクラスにemail, hankaku, requiredを指定した場合は</p>
					<pre name="code" class="xhtml">

&lt;input type=&quot;text&quot; name=&quot;mail&quot; id=&quot;mail&quot; value=&quot;&quot; class=&quot;email hankaku required&quot; /&gt;
</pre>
					<p>必須項目・メールアドレスチェック・全角禁止になります。<br />
					またクラスに記述する順序は任意で構いません。<br />
					ところでjQuery.validation.jsを導入する場合、<strong>input要素には固有のidが必須</strong>になります。<br />
					また<strong>value属性も必須</strong>になります。</p>
					<h4>特殊なタイプのチェック形式は以下のようになります。カッコ内はあってもなくても可</h4>
					<p>メールアドレス：*@*.*<br />
					電話番号：*(-)*(-)*<br />
					郵便番号：***(-)****</p>
					<p>電話番号…微妙なんですよね…</p>
					<h3 title="install3">3.checkbox、radio、複数項目の場合</h3>
					<p>checkbox、radio、複数項目をチェックする場合は<br />
					<strong>spanなどのインライン要素<a href="#note1">(*1)</a>でグループを明示した上で</strong><br />
					ここではspan要素としますが span要素にid、classを割り当てます。</p>
					<ul>
					<li>group &#8211; 複数項目のチェック</li>
					<li>check &#8211; checkbox ひとつ以上が選択されるとクリア</li>
					<li>radio &#8211; radio いずれかが選択されるとクリア</li>
					</ul>
					<p>例えば、メールアドレスを@前と後で分ける場合は</p>
					<pre name="code" class="xhtml">

&lt;input type=&quot;text&quot; name=&quot;mail2&quot; id=&quot;mail2&quot; value=&quot;&quot; class=&quot;&quot; /&gt;
@
&lt;input type=&quot;text&quot; name=&quot;mai3&quot; id=&quot;mail3&quot; value=&quot;&quot; class=&quot;&quot; /&gt;
</pre>
					<p>といったように分けるのが一般的なので<br />
					これをチェックする場合は以下のようになります。</p>
					<pre name="code" class="xhtml">

&lt;span class=&quot;group required hankaku email&quot; id=&quot;groupmail&quot;&gt;&lt;input type=&quot;text&quot; name=&quot;mail3&quot; id=&quot;mail3&quot; value=&quot;&quot; class=&quot;&quot; /&gt;
@
&lt;input type=&quot;text&quot; name=&quot;mail2&quot; id=&quot;mail2&quot; value=&quot;&quot; class=&quot;&quot; /&gt;&lt;/span&gt;
</pre>
					<p>ポイントは上にも記述していますが、<br />
					<strong>複数のinput要素をまとめるspanを用意してそのspan要素にid、classを割り当てます</strong>。</p>
					<p><strong>classはgroupが必須になり、あとはinput単体で指定するものが使えます</strong>。<br />
					なので今回の場合はclassには <strong>group, required, hankaku, email</strong> が入ることになります。</p>
					<p>以下はradioボタンの例です。</p>
					<pre name="code" class="xhtml">

&lt;ul class=&quot;radio&quot; id=&quot;radioarray&quot;&gt;
&nbsp;&nbsp;&lt;li&gt;&lt;label for=&quot;radio1&quot;&gt;&lt;input type=&quot;radio&quot; name=&quot;radio&quot; id=&quot;radio1&quot; value=&quot;&quot; /&gt; 男&lt;/label&gt;&lt;/li&gt;
&nbsp;&nbsp;&lt;li&gt;&lt;label for=&quot;radio2&quot;&gt;&lt;input type=&quot;radio&quot; name=&quot;radio&quot; id=&quot;radio2&quot; value=&quot;&quot; /&gt; 女&lt;/label&gt;&lt;/li&gt;
&lt;/ul&gt;
</pre>
					<p>radio、checkboxは例外になり<br />
					必須項目としてしかチェック出来ないので<strong>classにrequiredは必要ありません</strong>。</p>
					<p>上記の例ではグループ化がspan要素ではなくul要素になっていますが<br />
					CSSでinline指定<a href="#note1">(*1)</a>すれば大丈夫です。<br />
					要はdisplayプロパティがinline(inline-blockでも可)であればなんでも大丈夫です。</p>
					<p id="note1" class="note"><strong>*1) 幅を持たせたブロック要素でも可<br />
					ブロック要素は幅初期値が親に対して100%になるので エラーチップが画面から見切れます。</strong></p>
					<h3 id="install4">4.select要素を対象にする場合</h3>
					<p>select要素を対象にする場合は</p>
					<pre name="code" class="xhtml">

&lt;select name=&quot;sex&quot; id=&quot;sex&quot; class=&quot;required&quot;&gt;
&nbsp;&nbsp;&lt;option value=&quot;&quot; selected=&quot;selected&quot;&gt;選択してください&lt;/option&gt;
&nbsp;&nbsp;&lt;option value=&quot;male&quot;&gt;男&lt;/option&gt;
&nbsp;&nbsp;&lt;option value=&quot;female&quot;&gt;女&lt;/option&gt;
&lt;/select&gt;
</pre>
					<p>のようにvalueが空のoption要素を含めます。value属性を指定しないとvalidationは行われません。<br />
					初期値には<strong>必ず空のvalue属性を指定してください</strong>。(初期値にはselected属性を指定することが<a href="http://w3g.jp/xhtml/dic/option#selected">推奨</a>されています)<br />
					select要素は選択されているoptionが変わった場合にvalidationが行われます。</p>
					<h3 id="install5">5.再入力をチェックする場合</h3>
					<p>メールアドレスやパスワードなど<br />
					再入力を促す項目がある場合、それもvalidationの対象にすることができます。<br />
					たとえば、</p>
					<pre name="code" class="xhtml">

&lt;input type=&quot;text&quot; id=&quot;mail&quot; name=&quot;mail&quot; value=&quot;&quot; class=&quot;email hankaku required&quot; /&gt;
</pre>
					<p>の後に</p>
					<pre name="code" class="xhtml">

&lt;input type=&quot;text&quot; id=&quot;remail&quot; name=&quot;remail&quot; value=&quot;&quot; class=&quot;&quot; /&gt;
</pre>
					<p>といった再入力項目があるとします。<br />
					この項目は<strong>先のメールアドレス入力項目 input#mail と同じものを入力してもらう</strong>ので</p>
					<pre name="code" class="xhtml">

&lt;input type=&quot;text&quot; id=&quot;remail&quot; name=&quot;remail&quot; value=&quot;&quot; class=&quot;retype-mail required&quot; /&gt;
</pre>
					<p>のようにクラスに <strong>retype-対象にする項目のID</strong> を含めます。<br />
					今回は<strong>対象にする項目(メールアドレス入力項目)のIDはmailとなっているので retype-mail</strong> としています。</p>
					<p>再入力チェックは複数項目の場合も有効で、<br />
					単純に3と組み合わせるだけです。</p>
					<pre name="code" class="xhtml">

&lt;span class=&quot;group required hankaku email&quot; id=&quot;groupmail&quot;&gt;&lt;input type=&quot;text&quot; name=&quot;mail2&quot; id=&quot;mail2&quot; value=&quot;&quot; class=&quot;&quot; /&gt;
@
&lt;input type=&quot;text&quot; name=&quot;mail3&quot; id=&quot;mail3&quot; value=&quot;&quot; class=&quot;&quot; /&gt;&lt;/span&gt;
</pre>
					<p>の再入力項目は</p>
					<pre name="code" class="xhtml">

&lt;span class=&quot;group required retype-groupmail&quot; id=&quot;regroupmail&quot;&gt;&lt;input type=&quot;text&quot; name=&quot;remail2&quot; id=&quot;remail3&quot; value=&quot;&quot; class=&quot;&quot; /&gt;
@
&lt;input type=&quot;text&quot; name=&quot;remail3&quot; id=&quot;remail3&quot; value=&quot;&quot; class=&quot;&quot; /&gt;&lt;/span&gt;
</pre>
					<p>となります。</p>
					<h3 id="install6">6.入力文字数をチェックする場合</h3>
					<p>パスワードなどの項目に入力文字数の制限をかけたいときは</p>
					<pre name="code" class="xhtml">

&lt;input type=&quot;password&quot; id=&quot;pass&quot; name=&quot;pass&quot; value=&quot;&quot; class=&quot;required min6 max12&quot; /&gt;
</pre>
					<p>のようにclassに</p>
					<ul>
					<li>minX</li>
					<li>maxX (Xはともに任意の数字)</li>
					</ul>
					<p>を含ませます。もちろんmin・maxどちらか一方だけを指定でき、<br />
					また他のすべてのチェックと併用することができます。<br />
					ただし複数項目のメールアドレスは 文字列に@を含めるので1文字多く数えられます。<br />
					(メールアドレスに入力文字数制限を使うことはないと思うのでそのままにしてます。)</p>
					<h3 id="install7">7.アクティベート</h3>
					<p>最後に任意のJSファイルで以下のように実行します。</p>
					<pre name="code" class="js">

$(function(){
&nbsp;&nbsp;$(&quot;.validate&quot;).validation();
});
</pre>
					<p>対象にするform要素は</p>
					<pre name="code" class="js">

$(&quot;対象にするform要素&quot;).validation();
</pre>
					<p>で決定します。<br />
					form要素全てに適用する場合は</p>
					<pre name="code" class="js">

$(&quot;form&quot;).validation();
</pre>
					<p>classに&#8221;validation&#8221;を含むform要素全てに適用する場合は</p>
					<pre name="code" class="js">

$(&quot;.validation&quot;).validation();
</pre>
					<p>idに&#8221;validation&#8221;を含むform要素のみに適用する場合は</p>
					<pre name="code" class="js">

$(&quot;#validation&quot;).validation();
</pre>
					<p>となります。</p>
					<h2 id="extensions">拡張</h2>
					<p>特徴でも記述したようにjQuery.validation.jsはなるべく汎用性を持たせるために<br />
					さまざまな拡張プロパティがあります。</p>
					<h3 id="messages">表示メッセージを変更する場合</h3>
					<p>たとえば、必須項目とメールアドレスチェックの文章を変えたいときは</p>
					<pre name="code" class="js">

$(&quot;.validate&quot;).validation({
&nbsp;&nbsp;msgs: {
&nbsp;&nbsp;&nbsp;&nbsp;required: &quot;This field is required&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;mail: &quot;Enter the valid E-mail address&quot;
&nbsp;&nbsp;}
});
</pre>
					<p>とします。<br />
					msgsが持つプロパティの初期値は</p>
					<ul>
					<li>required: &#8220;必須項目です&#8221;</li>
					<li>retype: &#8220;直前の項目と同じ内容を入力してください&#8221;</li>
					<li><strong>email</strong>: &#8220;正しいEメールアドレスを入力してください&#8221; (*081114 <strong>mail から email に変わりました</strong></li>
					<li>hankaku: &#8220;全角文字は使えません&#8221;</li>
					<li>tel: &#8220;数字と&#8217;-'(ハイフン)以外は使えません&#8221;</li>
					<li>numonly: &#8220;数字のみで入力してください&#8221;</li>
					<li>zip: &#8220;正しい郵便番号を入力してください&#8221;</li>
					<li>check: &#8220;ひとつ以上を選択してください&#8221;</li>
					<li>radio: &#8220;いずれかを選択してください&#8221;</li>
					<li>min: &#8220;文字以上で入力してください&#8221;</li>
					<li>max: &#8220;文字以内で入力してください&#8221;</li>
					<li>submit: &#8220;必須項目を正しく入力してください&#8221;</li>
					</ul>
					<p>です。実際に記述するときは順不同で構いません。<br />
					このうちrequiredからzipはエラーチップに表示される文章で<br />
					submitのみダイアログに表示される文章となっています。<br />
					これらのプロパティに含まれる文章にはHTMLタグを使うことが出来ます。</p>
					<p>サンプルではダイアログのメッセージ(msgs.submit)に</p>
					<pre name="code" class="js">

$(&quot;.validate&quot;).validation({
&nbsp;&nbsp;msgs: {
&nbsp;&nbsp;&nbsp;&nbsp;submit: &quot;入力が完了していない&lt;strong&gt;必須項目&lt;/strong&gt;があります。&lt;br /&gt;&lt;strong&gt;必須項目は全て入力&lt;/strong&gt;してください。&quot;
&nbsp;&nbsp;}
});
</pre>
					<p>といったようにstrongタグと改行を含ませています。</p>
					<h3 id="tip">チップの位置を変更する</h3>
					<p>チップは各input要素を基準にして表示位置が決定されます。<br />
					初期設定でチップはinput要素の右に表示されるようになっていますが<br />
					初期位置を</p>
					<ul>
					<li>上: &#8220;top&#8221;</li>
					<li>右: &#8220;right&#8221;</li>
					<li>下: &#8220;bottom&#8221;</li>
					</ul>
					<p>から選択することができ、初期値からの位置を細かく指定することができます。<br />
					例えば、チップをinput要素の下、さらに10px下方へ配置する場合は以下のようにします。</p>
					<pre name="code" class="js">

$(&quot;.validate&quot;).validation({
&nbsp;&nbsp;extension: {
&nbsp;&nbsp;&nbsp;&nbsp;position: &quot;bottom&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;top: 10,(&quot;10px&quot;)
&nbsp;&nbsp;&nbsp;&nbsp;left: 0
&nbsp;&nbsp;}
});
</pre>
					<p>ここで注意するのは、inputの幅と高さはpaddingとborderを含まない点です。</p>
					<pre name="code" class="css">

input {
&nbsp;&nbsp;border: solid #DFDFDF 3px;
&nbsp;&nbsp;padding: 3px;
&nbsp;&nbsp;width: 200px;
&nbsp;&nbsp;height: 20px;
}
</pre>
					<p>といった指定がされている場合、チップはinput要素に12px分重なることになります。<br />
					チップ位置の初期値はそれぞれ</p>
					<ul>
					<li>position: &#8220;right&#8221;</li>
					<li>top: 0</li>
					<li>left: 15(px)</li>
					</ul>
					<p>になります。</p>
					<h3 id="ajaxzip2"><a href="http://www.kawa.net/works/ajax/ajaxzip2/ajaxzip2.html">AjaxZip2.0</a>を使う</h3>
					<p>AjaxZip2.0を使う場合は以下のようjquery.jsとjQuery.validation.jsの間でAjaxZip2.jsを読み込み</p>
					<pre name="code" class="xhtml">

&lt;script type=&quot;text/javascript&quot; src=&quot;/js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;/js/lib/ajaxzip2.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;/js/validation.js&quot;&gt;&lt;/script&gt;
</pre>
					<p>チップと同じextension内に</p>
					<pre name="code" class="js">

$(&quot;.validate&quot;).validation({
&nbsp;&nbsp;extension: {
&nbsp;&nbsp;&nbsp;&nbsp;AjaxZip2: true
&nbsp;&nbsp;}
});
</pre>
					<p>とします。<br />
					AjaxZip2.0の詳しい使い方・設定などは<a href="http://www.kawa.net/works/ajax/ajaxzip2/ajaxzip2.html">Kawa.net</a>のページを参照してもらいたいのですが<br />
					対象にするinputの<span style="text-decoration: line-through;">id</span> <strong>name属性</strong>を同じextension内で指定します。</p>
					<pre name="code" class="js">

$(&quot;.validate&quot;).validation({
&nbsp;&nbsp;extension: {
&nbsp;&nbsp;&nbsp;&nbsp;AjaxZip2: true,
&nbsp;&nbsp;&nbsp;&nbsp;zip: &quot;zip&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;zip2: &quot;zip2&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;pref: &quot;pref&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;addr1: &quot;addr&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;addr2: &quot;addr2&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;addr3: &quot;addr3&quot; (strtに相当)
&nbsp;&nbsp;}
});
</pre>
					<p>それぞれの初期値は</p>
					<ul>
					<li>AjaxZip2: false</li>
					<li>zip: &#8220;zip&#8221;</li>
					<li>zip2: null</li>
					<li>pref: &#8220;pref&#8221;</li>
					<li>addr1: &#8220;addr&#8221;</li>
					<li>addr2: null</li>
					<li>addr3: null</li>
					</ul>
					<p>になりますので、構成要素が以下のような</p>
					<pre name="code" class="xhtml">

&lt;input type=&quot;text&quot; name=&quot;zip&quot; id=&quot;zip&quot; class=&quot;zip hankaku required&quot; /&gt;
&lt;input type=&quot;text&quot; name=&quot;pref&quot; id=&quot;pref&quot; class=&quot;required&quot; /&gt;
&lt;input type=&quot;text&quot; name=&quot;addr&quot; id=&quot;addr&quot; class=&quot;required&quot; /&gt;
</pre>
					<p><strong>郵便番号・都道府県・都道府県以下の住所</strong>の場合はzip～addr3の設定は必要ありません。</p>
					<h3 id="dialog">ダイアログの設定</h3>
					<p>必須項目が未入力または正しく記入されていないまま(エラーチップが表示されている状態)で<br />
					submitボタンを押すとダイアログが表示されますが(必須項目でなければダイアログは表示されません)</p>
					<ul>
					<li>matOpacity: グレーアウトのレイヤーの透過度</li>
					<li>dialogOpacity: ダイアログの透過度</li>
					<li>duration: 表示する速さ</li>
					<li>closeTitle: 閉じるボタンのtitle属性</li>
					</ul>
					<p>を変更することができます。これらを変更するには、</p>
					<pre name="code" class="js">

$(&quot;.validate&quot;).validation({
&nbsp;&nbsp;dialog: {
&nbsp;&nbsp;&nbsp;&nbsp;duration: &quot;fast&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;matOpacity: 0.6,
&nbsp;&nbsp;&nbsp;&nbsp;dialogOpacity: 0.9,
&nbsp;&nbsp;&nbsp;&nbsp;closeTitle: &quot;このメッセージを閉じる&quot;
&nbsp;&nbsp;}
});
</pre>
					<p>のように記述します。上記が初期値になります。<br />
					ちなみにcloseボタンはマウスホバー時に&#8221;hover&#8221;がクラスに追加されるので<br />
					CSSを使ってロールオーバーイメージを指定することができます。(<a href="/sample/validation/">サンプル</a>では指定済み)</p>
					<h3>ダイアログを使わずにSUBMITボタンを押せなくする</h3>
					<p>ダイアログを使いたくない場合は</p>
					<pre name="code" class="js">

$(&quot;.validate&quot;).validation({
&nbsp;&nbsp;extension: {
&nbsp;&nbsp;&nbsp;&nbsp;dialog: false,
&nbsp;&nbsp;&nbsp;&nbsp;submit: &quot;#submit&quot;
&nbsp;&nbsp;}
});
</pre>
					<p>のように extension のプロパティで指定することで<br />
					エラーチップが表示されている場合は、SUBMITボタンをDISABLEDにできます。</p>
					<p>submitプロパティではSUBMITボタンを指定します。<br />
					FORM要素内で使っているSUBMITボタンのIDが&#8221;SUBMIT&#8221;なら<br />
					上記のように、submit: &#8220;#submit&#8221; で指定できます。</p>
					<p>jQueryの要素指定と同じ方法で指定できるので</p>
					<pre name="code" class="js">

submit: &quot;input[type=&#039;submit&#039;]&quot;
</pre>
					<p>や</p>
					<pre name="code" class="js">

submit: &quot;input[type=&#039;submit&#039;],input[type=&#039;image&#039;]&quot;
</pre>
					<p>などのようにも指定できます。</p>
					<h3 id="settinglots">上記複数の項目を同時に指定する場合</h3>
					<p>メッセージ、チップ・AjaxZip2.0、ダイアログを同時に設定する場合は<br />
					以下のようにそれぞれをカンマで区切って記述します。</p>
					<pre name="code" class="js">

$(&quot;.validate&quot;).validation({
&nbsp;&nbsp;msgs: {
&nbsp;&nbsp;&nbsp;&nbsp;submit: &quot;&lt;span&gt;入力が完了していない&lt;strong&gt;必須項目&lt;/strong&gt;があります。&lt;br /&gt;&lt;strong&gt;必須項目は全て入力&lt;/strong&gt;してください。&lt;/span&gt;&quot;
&nbsp;&nbsp;},
&nbsp;&nbsp;extension: {
&nbsp;&nbsp;&nbsp;&nbsp;position: &quot;bottom&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;top: 15,
&nbsp;&nbsp;&nbsp;&nbsp;left: 0,
&nbsp;&nbsp;&nbsp;&nbsp;AjaxZip2: true,
&nbsp;&nbsp;&nbsp;&nbsp;zip: &quot;zip&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;zip2: &quot;zip2&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;pref: &quot;pref&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;addr1: &quot;addr&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;addr2: &quot;addr2&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;addr3: &quot;addr3&quot;
&nbsp;&nbsp;},
&nbsp;&nbsp;dialog: {
&nbsp;&nbsp;&nbsp;&nbsp;duration: &quot;fast&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;matOpacity: 0.6,
&nbsp;&nbsp;&nbsp;&nbsp;dialogOpacity: 0.9,
&nbsp;&nbsp;&nbsp;&nbsp;closeTitle: &quot;このメッセージを閉じる&quot;
&nbsp;&nbsp;}
});
</pre>
					<h3 id="resetdata">フォームの項目をリセットする</h3>
					<p>入力したデータをリセットする場合は、通常通り</p>
					<pre name="code" class="html">

&lt;input type=&quot;reset&quot; value=&quot;リセット&quot; /&gt;
</pre>
					<p>という項目をform要素に含めればよいのですが、a要素などのclickイベントにresetをバインドしている場合は、validationがうまく動作しないので、<strong>$.validationResetFuncメソッド</strong>を使います。</p>
					<pre name="code" class="js">

$(&#039;a#reset&#039;).click(function(){
&nbsp;&nbsp;$.validationResetFunc();
&nbsp;&nbsp;return false;
});
</pre>
					<h2 id="edited">更新履歴・追記</h2>
					<dl>
					<dt>10.03.08</dt>
					<dd>画面読込時に一度クリックしないと色々できないバグを修正しました。</dd>
					<dt>10.01.24</dt>
					<dd>リセットボタンの処理を追加しました。</dd>
					<dd>email、zipの正規表現を修正しました。</dd>
					<dt>09.04.20</dt>
					<dd>dialogを使わずにsubmitボタンがdisabledになるだけのオプションを追加しました。</dd>
					<dd>AjaxZip2の実装でトリガーになる属性をNAMEではなくIDにしてしまっていたところを修正しました。</dd>
					<dd>Safariで必須項目の表示が最初に表示されていなかったので修正しました。</dd>
					<dd>Webkit系で読み込み後、一度クリックしないとフォームの要素が反応しないバグはjQueryをアップデートすることで解消されます。 </dd>
					<dt>09.02.03</dt>
					<dd>select要素のグループ化に対応しました。</dd>
					<dt>09.01.09</dt>
					<dd>入力文字数をチェックできるようになりました。</dd>
					<dt>08.12.16</dt>
					<dd>郵便番号を分割した際にAjaxZip2が使えなくなってたので修正しました。<br />
					郵便番号のチェックを***(-)****にしました。(日本はこの形式しかないし。。どうでしょう…)<br />
					どうでもいいことですけど、未圧縮JSファイルのコメントを削るのをやめました。</dd>
					<dt>08.12.13</dt>
					<dd>checkbox、radio、複数項目を対象に含むことができるようになりました。<br />
					IE6でエラーダイアログを表示したときにselect・object要素が前面にくる現象に対処しました。</dd>
					<dt>08.11.14</dt>
					<dd>再入力項目をvalidation対象に含むことができるようになりました。 </dd>
					<dt>08.11.13</dt>
					<dd>select要素をvalidation対象に含むことができるようになりました。</dd>
					<dt>08.08.28</dt>
					<dd>input[type="hidden"]を対象に含めてたのが原因でした。。</dd>
					<dt>08.08.28</dt>
					<dd><span style="text-decoration: line-through;">一定条件下(主にかも)でtextareaのoffset.leftが取得できずにエラーが発生するバグがあります。。。</span><strong>修正済(@08.08.28)</strong></dd>
					</dl>
					<dl id="spec">
					<dt>動作環境</dt>
					<dd>Windows: IE6, IE7, Firefox3, Opera9.5, Safari3, Chromeで確認</dd>
					</dl>
					<img src="http://5509.me/?ak_action=api_record_view&id=152&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/realtimeformvalidation/feed</wfw:commentRss>
		<slash:comments>106</slash:comments>
		</item>
		<item>
		<title>validation.jsの記事は移動しました。</title>
		<link>http://5509.me/log/validation</link>
		<comments>http://5509.me/log/validation#comments</comments>
		<pubDate>Thu, 21 Aug 2008 07:23:43 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WebDev]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=114</guid>
		<description><![CDATA[					validation.jsは
					http://5509.me/2008/08/22/realtimeformvalidation.html
					に移動しました。
]]></description>
			<content:encoded><![CDATA[					<p>validation.jsは</p>
					<p><a href="http://5509.me/2008/08/22/realtimeformvalidation.html">http://5509.me/2008/08/22/realtimeformvalidation.html</a></p>
					<p>に移動しました。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=114&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/validation/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>メールアドレスを暗号化した上でDOMエレメントとして扱うmailConverter.js</title>
		<link>http://5509.me/log/mailconverter</link>
		<comments>http://5509.me/log/mailconverter#comments</comments>
		<pubDate>Tue, 12 Aug 2008 10:16:26 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=18</guid>
		<description><![CDATA[					メールアドレスをWebサイト上に載せてしまうと、
					スパムがどしどしやってくるのは基本中の基本で
					せやけど
					
					画像化はイチイチ面倒くさいしアドレスを入力する必要がある
		 [...]]]></description>
			<content:encoded><![CDATA[					<p>メールアドレスをWebサイト上に載せてしまうと、<br />
					スパムがどしどしやってくるのは基本中の基本で<br />
					せやけど</p>
					<ul>
					<li>画像化はイチイチ面倒くさいしアドレスを入力する必要がある</li>
					<li>よく知らない人としてはmailtoがあったほうがいいに決まってる</li>
					<li>JavaScriptで吐き出しても、<br />
					書き換えられた後href属性に&#8221;mailto:アドレス&#8221;がうっすら入るのすら嫌</li>
					</ul>
					<p>とかいう僕のわがままで考えた結果</p>
					<p><span id="more-18"></span></p>
					<ul>
					<li>テキストにメールアドレスの&#8221;@&#8221;を変えたものを入れておけば、、</li>
					<li>hrefには&#8221;mailto:&#8221;のみを入れとく(JavaScriptがOFFの環境でもメーラーが立ち上がる)</li>
					<li>&#8220;@&#8221;が変わったアドレス(nori[at]5509.meのような)を暗号化してa要素のプロパティに含ませる(属性としては扱わない)</li>
					<li>a要素がクリックされたときだけ暗号を復号してhref属性に入れる</li>
					</ul>
					<p>なんやろ、、暗号化とか必要ない気がしてきた…<br />
					これでスパムがこなくなればいいけど どうなんやろう 使い方は</p>
					<pre name="code" class="html">

&lt;script type=&quot;text/javascript&quot; src=&quot;/js/mailConverter.js&quot;&gt;&lt;/script&gt;
</pre>
					<p>でスクリプトファイルを読み込むだけ。<br />
					この場合、適用させるメールアドレス部分は</p>
					<pre name="code" class="html">

&lt;a href=&quot;mailto:&quot;&gt;nori[at]5509.me&gt;&lt;/a&gt;
</pre>
					<p>とする。[at]のところは塊として扱えるものならなんでも可。aとかbとかは無理。<br />
					たとえば</p>
					<pre name="code" class="html">

&lt;a href=&quot;mailto:&quot;&gt;nori★5509.me&lt;/a&gt;
</pre>
					<p>とか。。。[at]から変えた場合はmailConverter.js11行目の</p>
					<pre name="code" class="js">

var atmark = &quot;\[at\]&quot;;
</pre>
					<p>の\[at\]を★に変えるだけ。半角記号を含む場合は\でエスケープする。</p>
					<pre name="code" class="js">

var atmark = &quot;★&quot;;&lt;/pre&gt;
</pre>
					<p>JavaScriptがOFFの環境には別途説明文を表示してDOM操作で消してしまえばいい感じ。</p>
					<p><a href="/sample/mailConverter/index.html">Demo</a></p>
					<h2>ダウンロード</h2>
					<p><a href="/sample/mailConverter/js/mailConverter.js">mailConverter.js(2KB)</a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=18&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/mailconverter/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ずらずら並んだリストを指定した件数毎に表示するnewsPager.js</title>
		<link>http://5509.me/log/newspager</link>
		<comments>http://5509.me/log/newspager#comments</comments>
		<pubDate>Fri, 01 Aug 2008 10:49:11 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=16</guid>
		<description><![CDATA[					
					新着一覧とかのリストは(SEOとかあるし)たくさん入れたいけど
					デザインの関係もあるし全部表示されるのはちょっと…
					とかいう場合がたまにあったりなかったりするわけですが
				 [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/newsPager/index.html"><img class="alignnone size-medium wp-image-17" title="newsPagerサンプルページへ" src="http://5509.me/wp-content/uploads/2008/08/newspager.gif" alt="newsPagerキャプチャ画像" width="292" height="199" /></a></p>
					<p>新着一覧とかのリストは(SEOとかあるし)たくさん入れたいけど<br />
					デザインの関係もあるし全部表示されるのはちょっと…</p>
					<p>とかいう場合がたまにあったりなかったりするわけですが<br />
					そんなときはこれを使えば<strong>指定した件数だけを表示</strong>します。</p>
					<p><span id="more-16"></span></p>
					<p>切り替えのボタン付き。id、class指定可でデザインも自由にどうぞ。<br />
					そんな感じのnewsPager.js。今回は<strong>jQuery不要</strong>。</p>
					<p>導入は死ぬほど簡単。以下のように必要ファイルを読み込み、</p>
					<pre name="code" class="html">

&lt;script type=&quot;text/javascript&quot; src=&quot;/js/newsPager.js&quot;&gt;&lt;/script&gt;
</pre>
					<p>適用させたいリスト(ulだかol)に任意のidを振る。<br />
					デフォルトはnewsPager。</p>
					<p>次にnewsPager.jsを開いて、15～25行目を適当に変えて出来上がり。<br />
					コメントアウトで書いてあります。</p>
					<p>前の～件と次の～件みたいなナビゲーション(ボタン)は<br />
					アンカーじゃなしに、li要素でホバー時にclass=&#8221;hover&#8221;が追加される仕様。</p>
					<p><a href="/sample/newsPager/index.html">Demo</a></p>
					<h2>ダウンロード</h2>
					<p><a href="/sample/archive/newsPager.zip">newsPager.zip(4KB)</a> うち<a href="/sample/newsPager/js/newsPager.js">newsPager.jsは4KB</a>(圧縮済)</p>
					<dl>
					<dt>動作環境</dt>
					<dd>Windows: IE6, IE7, Firefox2,3, Opera9.5, Safari3で確認</dd>
					</dl>
					<img src="http://5509.me/?ak_action=api_record_view&id=16&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/newspager/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thickboxを表示したときにFlashオブジェクトを表示しないようにする</title>
		<link>http://5509.me/log/when_thickbox_is_displayed_hide_flash_obejects</link>
		<comments>http://5509.me/log/when_thickbox_is_displayed_hide_flash_obejects#comments</comments>
		<pubDate>Wed, 30 Jul 2008 12:15:12 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[tuts]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=14</guid>
		<description><![CDATA[					
					タイトルまま。
					
					Thickbox.jsのソースコード20行目に
					

function tb_init(domChunk){
$(domChunk).click(fun [...]]]></description>
			<content:encoded><![CDATA[					<p><img class="alignnone size-medium wp-image-15" title="Thickboxを表示したときにFlashオブジェクトを表示しないようにする" src="http://5509.me/wp-content/uploads/2008/07/thickbox-300x175.gif" alt="Thickboxを表示したときにFlashオブジェクトを表示しないようにする" width="300" height="175" /></p>
					<p>タイトルまま。</p>
					<p><span id="more-14"></span></p>
					<p>Thickbox.jsのソースコード20行目に</p>
					<pre name="code" class="js">

function tb_init(domChunk){
$(domChunk).click(function(){
var t = this.title || this.name || null;
var a = this.href || this.alt;
var g = this.rel || false;
tb_show(t,a,g);
this.blur();
return false;
});
}
</pre>
					<p>とあるので、Objectを非表示にする</p>
					<pre name="code" class="js">

$(&quot;object&quot;).css(&quot;visibility&quot;,&quot;hidden&quot;);
</pre>
					<p>を追加。追加後のソースは、</p>
					<pre name="code" class="js">

function tb_init(domChunk){
$(domChunk).click(function(){
$(&quot;object&quot;).css(&quot;visibility&quot;,&quot;hidden&quot;); // ココ
var t = this.title || this.name || null;
var a = this.href || this.alt;
var g = this.rel || false;
tb_show(t,a,g);
this.blur();
return false;
});
}
</pre>
					<p>他のObjectも消えるけど、メンドイしこれで。<br />
					ちなみに追加するのは.click以降return以前ならどこでも。<br />
					あとは、Thickboxが非表示になったときにObjectを表示にするために、<br />
					ソースコード269行目から始まる</p>
					<pre name="code" class="js">

function tb_remove() {
$(&quot;#TB_imageOff&quot;).unbind(&quot;click&quot;);
$(&quot;#TB_closeWindowButton&quot;).unbind(&quot;click&quot;);
$(&quot;#TB_window&quot;).fadeOut(&quot;fast&quot;,function(){$(&#039;#TB_window,#TB_overlay,#TB_HideSelect&#039;).trigger(&quot;unload&quot;).unbind().remove();});
$(&quot;#TB_load&quot;).remove();
if (typeof document.body.style.maxHeight == &quot;undefined&quot;) {//if IE 6
$(&quot;body&quot;,&quot;html&quot;).css({height: &quot;auto&quot;, width: &quot;auto&quot;});
$(&quot;html&quot;).css(&quot;overflow&quot;,&quot;&quot;);
}
document.onkeydown = &quot;&quot;;
document.onkeyup = &quot;&quot;;
return false;
}
</pre>
					<p>のreturn falseの前に</p>
					<pre name="code" class="js">

setTimeout(function(){
$(&quot;object&quot;).css(&quot;visibility&quot;,&quot;visible&quot;);
},500);
</pre>
					<p>を追加。追加後のソースは、</p>
					<pre name="code" class="js">

function tb_remove() {
$(&quot;#TB_imageOff&quot;).unbind(&quot;click&quot;);
$(&quot;#TB_closeWindowButton&quot;).unbind(&quot;click&quot;);
$(&quot;#TB_window&quot;).fadeOut(&quot;fast&quot;,function(){$(&#039;#TB_window,#TB_overlay,#TB_HideSelect&#039;).trigger(&quot;unload&quot;).unbind().remove();});
$(&quot;#TB_load&quot;).remove();
if (typeof document.body.style.maxHeight == &quot;undefined&quot;) {//if IE 6
$(&quot;body&quot;,&quot;html&quot;).css({height: &quot;auto&quot;, width: &quot;auto&quot;});
$(&quot;html&quot;).css(&quot;overflow&quot;,&quot;&quot;);
}
document.onkeydown = &quot;&quot;;
document.onkeyup = &quot;&quot;;
setTimeout(function(){ // ココ
$(&quot;object&quot;).css(&quot;visibility&quot;,&quot;visible&quot;); // ココ
},500); // ココ
return false;
}
</pre>
					<p>同時に消えるとなんか変なのでsetTimeoutで500ミリ秒後に消えるように。</p>
					<p>めんどくさがりの僕のための<br />
					ソース改変(と言えるほどのものでもないけど)をしたThickbox.jsダウンロードリンクは以下。</p>
					<h2>ダウンロード</h2>
					<p><a href="/sample/archive/thickbox.js">thickbox.js(12KB)</a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=14&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/when_thickbox_is_displayed_hide_flash_obejects/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>プルダウンで都道府県などを入力(選択)するイライラを解消するPrefSupport.js</title>
		<link>http://5509.me/log/prefsupport</link>
		<comments>http://5509.me/log/prefsupport#comments</comments>
		<pubDate>Fri, 18 Jul 2008 15:55:55 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[イライラ解消]]></category>
		<category><![CDATA[フォーム]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=10</guid>
		<description><![CDATA[					
					※) prefSupport内のoptgroupの使い方は間違っています。すいません。
					修正版はjQuery.selectable.jsとして書き直しました。jQuery.selectab [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="/sample/prefSupport/index.html"><img class="alignnone size-full wp-image-11" title="prefsupport" src="http://5509.me/wp-content/uploads/2008/07/prefsupport.gif" alt="prefsupport" width="400" /></a></p>
					<p><strong class="note">※) prefSupport内のoptgroupの使い方は間違っています。すいません。</strong><br />
					修正版は<a href="http://5509.me/2008/09/14/jqueryselectable.html">jQuery.selectable.js</a>として書き直しました。jQuery.selectable.jsをごらんください。</p>
					<p><span class="achiveNum">イライラ解消シリーズ第2弾(これは続きそう)。</span><br />
					先日の<a href="/2008/07/16/datesupport.html">DateSupport.js</a>に続いて今度はselect拡張を。<br />
					<strong>要jQuery</strong>(古いの 1.1.2あたりの で動くかは微妙)。。用途は主に都道府県選択かなぁ。。<br />
					都道府県選択のプルダウンはとにかくうざい、消えてほしい。<br />
					そもそも項目多いくせにoptgroup要素がないプルダウンが多すぎる！選びにくいわ！→登録断念。<br />
					そんな僕の要望に応えるためにプルダウンのうざいスクロールをなんとかするためのもの。<br />
					ついでにoptgroupをもっと使うようになってほしい。</p>
					<p><span id="more-10"></span><br />
					単純に作るだけやとアレなので今回のポイントはもともとある<strong>select要素を拡張する</strong>ところにあります。<br />
					そもそもselect要素は選択出来るものを限定するところにあるはず。<br />
					そんな感じで<strong>JavaScriptがOFFの環境ではselectを表示</strong>。<br />
					使える環境では<strong>うざいプルダウン(select)じゃないスッキリとしたプルダウンを表示</strong>。<br />
					ただselect要素をdl要素に変換するので<strong>optgroup要素必須</strong>。<br />
					というかoptgroupがあれば都道府県じゃなくても使えます。</p>
					<p>以下のように必要ファイルを読み込み、(追記@08.07.20)</p>
					<pre name="code" class="xhtml">

&lt;link type=&quot;text/css&quot; rel=&quot;stylesheet&quot; href=&quot;/css/prefSupport.css&quot; /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;/js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;/js/prefSupport.js&quot;&gt;&lt;/script&gt;
</pre>
					<p>適用させたいselect要素に適当なid、name(値は同じもの)を割り振り、<br />
					classに<strong>prefSupport</strong>を。<br />
					<strong>selected属性があればselected属性も</strong>(追記@08.07.20)。</p>
					<p><strong>※) 下記のoptgroupの使い方は間違っています。すいません。</strong><br />
					修正版は<a href="http://5509.me/2008/09/14/jqueryselectable.html">jQuery.selectable.js</a>として書き直しました。</p>
					<pre name="code" class="xhtml">

&lt;select id=&quot;id&quot; name=&quot;id&quot; class=&quot;prefSupport&quot;&gt;
&lt;optgroup label=&quot;北海道&quot;&gt;北海道&lt;/optgroup&gt;
&lt;option value=&quot;01&quot;&gt;北海道&lt;/option&gt;
&lt;optgroup label=&quot;東北&quot;&gt;東北&lt;/optgroup&gt;
&lt;option value=&quot;02&quot;&gt;青森県&lt;/option&gt;
&lt;option value=&quot;03&quot;&gt;岩手県&lt;/option&gt;
&lt;option value=&quot;04&quot;&gt;宮城県&lt;/option&gt;
&lt;option value=&quot;05&quot;&gt;秋田県&lt;/option&gt;
&lt;option value=&quot;06&quot;&gt;山形県&lt;/option&gt;
&lt;option value=&quot;07&quot;&gt;福島県&lt;/option&gt;
～
</pre>
					<p>を</p>
					<pre name="code" class="xhtml">

&lt;input id=&quot;id&quot; name=&quot;id&quot; type=&quot;hidden&quot; value=&quot;&quot; /&gt;
&lt;input id=&quot;id_dammy&quot; name=&quot;id_dammy&quot; class=&quot;prefSupport&quot; type=&quot;text&quot; value=&quot;&quot; /&gt;
</pre>
					<pre name="code" class="xhtml">

&lt;dl id=&quot;id_mat&quot; class=&quot;prefSupport&quot;&gt;
&lt;dt&gt;北海道&lt;/dt&gt;
&lt;dd&gt;&lt;a href=&quot;#北海道&quot; name=&quot;01&quot;&gt;北海道&lt;/a&gt;&lt;/dd&gt;
&lt;dt&gt;東北&lt;/dt&gt;
&lt;dd&gt;
&lt;a href=&quot;#青森県&quot; name=&quot;02&quot;&gt;青森県&lt;/a&gt;
&lt;a href=&quot;#岩手県&quot; name=&quot;03&quot;&gt;岩手県&lt;/a&gt;
～
</pre>
					<p>に書き換えて、選択された都道府県のnameをhiddenのvalueに、hrefをtextのvalueに挿入。<br />
					なのでプログラムにもばっちり対応のはず。プログラムに対応出来ひんかったらただのうんこやなこれ。。。<br />
					UIはDateSupport.jsよりも使いやすくなってるはず。。たぶん。</p>
					<p><a href="/sample/prefSupport/index.html">Demo</a></p>
					<p>閉じる、キャンセルのボタンあったほうがいいんかな。。<br />
					<span style="text-decoration: line-through;">あとinput.prefSupportで入力できないようにしたほうがいいのかもしらん。</span>(修正した@08.07.20)</p>
					<h2>追記</h2>
					<dl>
					<dt>08.07.23</dt>
					<dd><strong>dl要素で生成されるプルダウンにはクラスprefSupportとidに元になるselect要素のid+_matが付加</strong>されるので、<br />
					dt要素の幅などを個々に決めたいときは<strong>dl#id+_matでスタイルを指定できる</strong>。<br />
					ex) select#pref の場合 dl#pref_mat になる。</dd>
					<dd>ついでに、<strong>元になるselect要素のクラスを生成されるinput[type="text"](dammyのほう)が継承する</strong>ので<br />
					表示されるinputの幅を決めたい、とかの場合は<br />
					ex) select.prefSupport.short とかにしておけば input[type="text"].prefSupport.short になって<br />
					スタイルを当てやすいかも。 </dd>
					<dt>08.07.20 &#8211; 3 </dt>
					<dd>要jQueryを明記してなかった。。</dd>
					<dt>08.07.20 &#8211; 2 </dt>
					<dd>こうなってくると、タブでのfocusにも対応したほうがいいのかも…？<br />
					それすごいメンドイ。どうなんやろう。。<br />
					ていうかタブで移動してきたらいろいろ難儀やなー。</dd>
					<dt>08.07.20</dt>
					<dd>システム連携などを考えてinputを選択時にdisabledに。<br />
					selected属性に対応。この2つ結構重要やったかも。<br />
					select.prefSupportが複数個ある場合の動作バグを修正。<br />
					Demoをちょっと修正。</dd>
					<dd><span style="text-decoration: line-through;">ラベルからのfocusに対応してないっぽい。。。うっかりしてた。。</span>(修正した@0807.20)</dd>
					</dl>
					<h2>ダウンロード</h2>
					<p><strong class="note">※) prefSupport内のoptgroupの使い方は間違っています。</strong><br />
					修正版は<a href="http://5509.me/2008/09/14/jqueryselectable.html">jQuery.selectable.js</a>として書き直しました。<a href="http://5509.me/2008/09/14/jqueryselectable.html">jQuery.selectable.jsをごらんください。</a></p>
					<p><span style="text-decoration: line-through;">prefSupport.zip(24KB) うちprefSupport.jsは4KB (minは3KB)</span></p>
					<dl>
					<dt>動作環境</dt>
					<dd>Windows: IE6, IE7, Firefox3, Opera9.5, Safari3で確認</dd>
					</dl>
					<img src="http://5509.me/?ak_action=api_record_view&id=10&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/prefsupport/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>プルダウンで日付を入力(選択)するイライラを解消するDateSupport.js</title>
		<link>http://5509.me/log/datesupport</link>
		<comments>http://5509.me/log/datesupport#comments</comments>
		<pubDate>Wed, 16 Jul 2008 11:50:27 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[tuts]]></category>
		<category><![CDATA[イライラ解消]]></category>
		<category><![CDATA[フォーム]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=8</guid>
		<description><![CDATA[					
					※) 最新版をprefSupport.jsとあわせてjQuery.selectable.jsにまとめました。
					jQuery.selectable.jsをごらんください。
					フォーム [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="/sample/dateSupport/index.html"><img class="alignnone size-full wp-image-9" title="datesupport" src="http://5509.me/wp-content/uploads/2008/07/datesupport.gif" alt="datesupport" width="378" height="334" /></a></p>
					<p><strong>※) 最新版をprefSupport.jsとあわせて<a href="http://5509.me/2008/09/14/jqueryselectable.html">jQuery.selectable.js</a>にまとめました。</strong><br />
					jQuery.selectable.jsをごらんください。</p>
					<p>フォームで西暦とか月、日付入力がselectだったりすると…<br />
					1984年…スクロール…あ、、ずれた、、<br />
					みたいにすごい勢いでイライラする人多いはず。</p>
					<p><span id="more-8"></span></p>
					<p>カレンダーから入力出来るライブラリもあるけど<br />
					あれやと西暦だけ選択、とか月だけ選択が出来ないので<br />
					それ単体でも使えるようなのが欲しいなー。と思って作った。<br />
					会員登録とかそういうとこで西暦だけ選択が多い。。。</p>
					<p>そういえば<a href="http://jsmap.cognitom.com/">都道府県選択</a>のやつ便利やなぁ。<br />
					→追記@08.07.21 <a href="/2008/07/19/prefsupport.html">都道府県の選択はselect拡張で作りました。</a></p>
					<p>導入は超簡単。<br />
					データを<a href="/sample/archive/dateSupport.zip">ダウンロード(20KB)</a>、解凍とかテキトーに保存してヘッダでCSSとスクリプトを読み込んで、</p>
					<pre name="code" class="xhtml">

&lt;link type=&quot;text/css&quot; rel=&quot;stylesheet&quot; href=&quot;/css/dateSupport.css&quot; /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;/js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;/js/dateSupport.js&quot;&gt;&lt;/script&gt;
</pre>
					<p>適用したいinputのクラスにyearとかmonth、dayを当てるだけです。</p>
					<pre name="code" class="xhtml">

&lt;input type=&quot;text&quot; id=&quot;text1&quot; name=&quot;text1&quot; value=&quot;&quot; class=&quot;year&quot; /&gt;
&lt;input type=&quot;text&quot; id=&quot;text2&quot; name=&quot;text2&quot; value=&quot;&quot; class=&quot;month&quot; /&gt;
&lt;input type=&quot;text&quot; id=&quot;text3&quot; name=&quot;text3&quot; value=&quot;&quot; class=&quot;day&quot; /&gt;
</pre>
					<p>ところでinputにはidが必須です。<br />
					ソースが微妙な感じがするのはまだまだ勉強が足りないため。<br />
					そのうちキレイになるはずです…</p>
					<p><a href="/sample/dateSupport/index.html">Demo</a></p>
					<p>選択出来る西暦の範囲を変えたいときは、</p>
					<pre name="code" class="js">

year: {
start: 1900,
end: dateObj.getFullYear()+20
},
</pre>
					<p>このstartとendを変えるだけです。<br />
					endはとりあえず現在の西暦+20年にしてます。</p>
					<h2>ダウンロード</h2>
					<p><a href="/sample/archive/dateSupport.zip">dateSupport.zip(20KB)</a> うち<a href="/sample/dateSupport/js/dateSupport.js">dateSupport.js</a>は3KB</p>
					<dl>
					<dt>動作環境</dt>
					<dd>Windows: IE6, IE7, Firefox3, Opera9.5, Safari3で確認</dd>
					</dl>
					<img src="http://5509.me/?ak_action=api_record_view&id=8&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/datesupport/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>クリーンなHTML、CSSとjQueryで作るFlickrみたいなメニュー</title>
		<link>http://5509.me/log/creating_flickr_like_menu</link>
		<comments>http://5509.me/log/creating_flickr_like_menu#comments</comments>
		<pubDate>Fri, 04 Jul 2008 08:24:31 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[tuts]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=5</guid>
		<description><![CDATA[					
					タイトルまま。用意するもの。
					
					jQuery(テストは1.2.3) →下のzipから一括でDL可。(同梱のjQueryは1.2.6)
					
					まずはHTMLから。
 [...]]]></description>
			<content:encoded><![CDATA[					<p><a href="http://5509.me/sample/creating_flickr_like_menu/index.html"><img class="alignnone size-medium wp-image-12" title="Flickrみたいなメニューサンプル" src="http://5509.me/wp-content/uploads/2008/07/flickr_menu-300x180.gif" alt="FlickrみたいなメニューDemo" width="300" height="180" /></a></p>
					<p>タイトルまま。用意するもの。</p>
					<ul>
					<li><a href="http://docs.jquery.com/Downloading_jQuery">jQuery</a>(テストは1.2.3) →<a title="ダウンロードリンク" href="/2008/07/04/creating_flickr_like_menu.html#dl">下のzipから一括でDL可。(同梱のjQueryは1.2.6)</a></li>
					</ul>
					<p>まずはHTMLから。</p>
					<p><span id="more-5"></span></p>
					<pre name="code" class="xhtml">

&lt;div id=&quot;header&quot;&gt;
 &lt;h1 class=&quot;title&quot;&gt;&lt;a href=&quot;/&quot;&gt;moto-mono&lt;/a&gt;&lt;/h1&gt;

 &lt;ul id=&quot;gNav&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Photo&lt;/a&gt;&lt;img src=&quot;img/menu_toggle_off.gif&quot; alt=&quot;Option&quot; /&gt;
   &lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2008&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2007&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2006&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2005&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2004&lt;/a&gt;&lt;/li&gt;
   &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Archive&lt;/a&gt;&lt;img src=&quot;img/menu_toggle_off.gif&quot; alt=&quot;Option&quot; /&gt;
   &lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2008&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2007&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2006&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;2005&lt;/a&gt;&lt;/li&gt;
   &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#&quot;&gt;考えるのメンドイ&lt;/a&gt;&lt;img src=&quot;img/menu_toggle_off.gif&quot; alt=&quot;Option&quot; /&gt;
   &lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;メンドイ&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;メンドイ&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;メンドイ&lt;/a&gt;&lt;/li&gt;
   &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#&quot;&gt;考えるのメンドイ&lt;/a&gt;&lt;img src=&quot;img/menu_toggle_off.gif&quot; alt=&quot;Option&quot; /&gt;
   &lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;メンドイ&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#&quot;&gt;メンドイ&lt;/a&gt;&lt;/li&gt;
   &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Contact Me&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

&lt;/div&gt;
&lt;!--//Header--&gt;
</pre>
					<p>いたってシンプル。<br />
					この辺は出来る限りクリーンを目指すのでspan要素とか要らないものはいれません。<br />
					次はスクリプトを。</p>
					<p>li要素にhoverしたときスタイルを指定したいので、本当はli:hoverをCSSで使いたいけど<br />
					IEが対応してないのでスクリプトで拡張。</p>
					<pre name="code" class="js">

$(&quot;#gNav &gt; li &gt; img&quot;).parent().hover(function(){
 $(this).addClass(&quot;hover&quot;);
},function(){
 $(this).removeClass(&quot;hover&quot;);
});
</pre>
					<p>ちょっと注意するのは、toggleイメージがあるときのみ親要素にclass=&#8221;hover&#8221;を適用させること。</p>
					<pre>$("#gNav &gt; li &gt; img").parent().hover(function(){</pre>
<p>上記の記述でtoggleイメージがあるli要素にhoverしたとき、class=&#8221;hover&#8221;が適用される。<br />
全部に適用するとCSSの記述がメンドくなる。メンドいのはダルイ。</p>
<p>次はtoggleをクリックしたときの動作を設定。<br />
の前に</p>
<pre name="code" class="js">

$(&quot;#gNav li ul&quot;).hide();
</pre>
					<p>でプルダウンを消しておく(隠しておく)。<br />
					クリック時の動作設定は、</p>
					<pre name="code" class="js">

$(&quot;#gNav li img&quot;).click(function(){
 var parent = $(this).parent();
 if(parent.hasClass(&quot;active&quot;)){ // 親のli要素がclass=&quot;active&quot;を持っていれば
  parent.removeClass(&quot;active&quot;); // class=&quot;active&quot;を取り除く
  $(&quot;#gNav li ul:visible&quot;).hide(); // 表示されているプルダウンを隠す。
 }else{
  $(&quot;#gNav li.active&quot;).removeClass(&quot;active&quot;);
  // それ以外の場合は、class=&quot;active&quot;を持っているli要素からclass=&quot;active&quot;を取り除き
  parent.addClass(&quot;active&quot;); // クリックしたtoggleの親要素(li)にclass=&quot;active&quot;を適用
  $(&quot;#gNav li ul:visible&quot;).hide(); // 表示されている他のプルダウンを消した上で(あれば)
  $(this).next().show(); // クリックしたtoggleの次の要素(プルダウン)を表示。
 }
});
</pre>
					<p>ul要素のプルダウンはjQueryのtoggle()で出来るけど、<br />
					他にも指定することはあるのでclickで設定。</p>
					<p>このままでもいいけど、<br />
					toggle以外のエリアをクリックしたときにプルダウンが表示されていればそれを消す、みたいな事をしたい。<br />
					Flickrはそうなってるし。</p>
					<pre name="code" class="js">

$(&quot;body&quot;).click(function(){
 $(&quot;#gNav li.active&quot;).removeClass(&quot;active&quot;);
 $(&quot;#gNav li ul:visible&quot;).hide();
});
</pre>
					<p>ただし、上記のままやとさっき書いた効果と干渉してプルダウンが表示されないので<br />
					イベントの適用範囲をstopPropagation()で設定する。<br />
					書きなおしたのが以下。</p>
					<pre name="code" class="js">

$(&quot;body&quot;).click(function(event){
 $(&quot;#gNav li.active&quot;).removeClass(&quot;active&quot;);
 $(&quot;#gNav li ul:visible&quot;).hide();
});
$(&quot;#gNav li img&quot;).click(function(event){
 var parent = $(this).parent();
 if(parent.hasClass(&quot;active&quot;)){
  parent.removeClass(&quot;active&quot;);
  $(&quot;#gNav li ul:visible&quot;).hide();
  event.stopPropagation();
 }else{
  $(&quot;#gNav li.active&quot;).removeClass(&quot;active&quot;);
  parent.addClass(&quot;active&quot;);
  $(&quot;#gNav li ul:visible&quot;).hide();
  $(this).next().show();
  event.stopPropagation();
 }
});
</pre>
					<p>CSSを書くときの注意点は</p>
					<ul>
					<li>li:hover時に(実際はクラスが適用されたとき)toggleイメージの表示をopacity(visibilityでも可)で指定する。</li>
					<li>li.hoverの背景画像にhover,activeのtoggleイメージを含める</li>
					<li>文字の可変を考えて画像を長めに切り出す</li>
					</ul>
					<p><img class="alignnone size-medium wp-image-6" title="li要素の背景" src="http://5509.me/wp-content/uploads/2008/07/menu_bg_right.gif" alt="li要素の背景" width="225" height="50" /><br />
					画像の切り出しはこんな感じにする。</p>
					<pre name="code" class="css">

ul#gNav li {
 float: left;
 margin-right: .5em;
 border-left: solid #FFF 1px;
 padding: 0 5px;
 height: 24px;
 position: relative;
 background: url(../img/menu_bg_right.gif) no-repeat right 25px;
 line-height: 24px;
}

ul#gNav li.hover,
ul#gNav li.active {
 border-left: solid #F0F0F0 1px;
 background: url(../img/menu_bg_right.gif) no-repeat right top;
}

ul#gNav li.active {
 background: url(../img/menu_bg_right.gif) no-repeat right -25px;
}

 ul#gNav li a {
  margin-right: 5px;
  font-weight: bold;
  text-decoration: none;
 }

 ul#gNav li a:hover {
  text-decoration: underline;
 }

 ul#gNav li img {
  position: relative;
  top: 1px; /* IE7 */
  cursor: pointer;
 }

 * html ul#gNav li img {
  top: 4px; /* IE6 */
 }

 html&gt;/**/body ul#gNav li img {
  top: 4px; /* modern browser */
 }

 ul#gNav li.hover img,
 ul#gNav li.active img {
  opacity: 0;
  filter: alpha(opacity=0);
 }

 ul#gNav ul {
  border: solid #666 1px;
  border-top: none;
  border-left-color: #F0F0F0;
  padding: 0 5px 3px;
  width: 11em;
  position: absolute;
  top: 24px;
  left: -1px;
  background: #FFF;
 }

 ul#gNav li.last-child ul {
  width: 16em;
 }

  ul#gNav ul li {
   float: none;
   padding-right: 0;
   width: auto;
   height: auto;
   font-size: 90%;
   line-height: 2;
  }

  ul#gNav ul li.first-child {
   border: none;
  }

   ul#gNav ul li a {
    border-top: solid #F0F0F0 1px;
    padding-top: 2px;
    display: block;
    width: 100%;
    font-weight: normal;
   }

   ul#gNav ul li.first-child a {
    border: none;
   }
</pre>
					<p>プルダウンのul要素はwidthを与えてあげないといけないので適当な幅を。<br />
					完成サンプルは以下。</p>
					<p><a href="/sample/creating_flickr_like_menu/index.html">Demo</a></p>
					<h2>追記</h2>
					<dl>
					<dt>08.08.12</dt>
					<dd>ソースを修正。</dd>
					<dt>08.07.21</dt>
					<dd>サンプルのDL用zipを追加。</dd>
					</dl>
					<h2 id="dl">ダウンロード</h2>
					<p><a href="/sample/archive/creating_flickr_like_menu.zip">creating_flickr_like_menu.zip(23KB)</a></p>
					<dl>
					<dt>動作環境</dt>
					<dd>Windows: IE6, IE7, Firefox3, Opera9.5, Safari3で確認</dd>
					</dl>
					<img src="http://5509.me/?ak_action=api_record_view&id=5&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/creating_flickr_like_menu/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>別のウィンドウ(タブ)で開くリンクをリンクテキストの後ろに追加するExternallink.js</title>
		<link>http://5509.me/log/externallink</link>
		<comments>http://5509.me/log/externallink#comments</comments>
		<pubDate>Thu, 26 Jun 2008 05:22:24 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[tuts]]></category>
		<category><![CDATA[ユーザビリティ]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=4</guid>
		<description><![CDATA[					最近流行ってる(？)新しいウィンドウで開くアイコンみたいなのに便乗して
					新しいウィンドウで開くリンクをリンクテキストの後ろに追加するスクリプトを書いた。
					新しく開くとわかっててもやっぱり開き [...]]]></description>
			<content:encoded><![CDATA[					<p>最近流行ってる(？)新しいウィンドウで開くアイコンみたいなのに便乗して<br />
					新しいウィンドウで開くリンクをリンクテキストの後ろに追加するスクリプトを書いた。<br />
					新しく開くとわかっててもやっぱり開きたくないときとかもあるし、<br />
					正味真ん中クリックで開けば新しいタブで開けるけど大体の人はそんなこと知らないわけで。<br />
					最近<a href="http://docs.jquery.com/Downloading_jQuery">jQuery</a>をよく使うのでjQuery用で。</p>
					<p><span id="more-4"></span></p>
					<p><a href="http://5509.me/js/externallink.js">externallink.js</a>をDL保存して、<br />
					JSファイルの13～19行目を適当に編集し、<br />
					適用したいHTMLで</p>
					<pre name="code" class="html">

&lt;script type=&quot;type/javascript&quot; src=&quot;/js/lib/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;type/javascript&quot; src=&quot;/js/externallink.js&quot;&gt;&lt;/script&gt;
</pre>
					<p>上記のようにJSファイルを読み込むだけ。<br />
					ちなみに画像リンクには追加しない仕様。</p>
					<p><a href="http://5509.me/sample/externallink_sample.html">Demo</a></p>
					<img src="http://5509.me/?ak_action=api_record_view&id=4&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/externallink/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPressのカテゴリとアーカイブの件数</title>
		<link>http://5509.me/log/wp_cats_and_archive</link>
		<comments>http://5509.me/log/wp_cats_and_archive#comments</comments>
		<pubDate>Mon, 02 Jun 2008 13:49:20 +0000</pubDate>
		<dc:creator>nori</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[memo]]></category>
		<category><![CDATA[tuts]]></category>

		<guid isPermaLink="false">http://moto-mono.net/?p=3</guid>
		<description><![CDATA[					カテゴリ一覧表示の件数をa要素に含める
					/wp-include/classes.phpの656-657行を切り取り
					626行目
					

$link .= $cat_name . &#0 [...]]]></description>
			<content:encoded><![CDATA[					<h2>カテゴリ一覧表示の件数をa要素に含める</h2>
					<p>/wp-include/classes.phpの656-657行を切り取り<br />
					626行目</p>
					<pre name="code" class="php">

$link .= $cat_name . &#039;&lt;/a&gt;&#039;;
</pre>
					<p>を</p>
					<pre name="code" class="php">

$link .= $cat_name;
</pre>
					<p>として627行目に切り取った部分を貼り付け。<br />
					その後ろ629行目に</p>
					<pre name="code" class="php">

$link .= &#039;&lt;/a&gt;&#039;;
</pre>
					<p>を追加。</p>
					<h2>アーカイブ一覧表示の件数をa要素に含める</h2>
					<p>general-template.phpの350行目</p>
					<pre name="code" class="php">

return &quot;\t&lt;li&gt;$before&lt;a href=&#039;$url&#039; title=&#039;$title_text&#039;&gt;$text&lt;/a&gt;$after&lt;/li&gt;\n&quot;;
</pre>
					<p>を</p>
					<pre name="code" class="php">

return &quot;\t&lt;li&gt;$before&lt;a href=&#039;$url&#039; title=&#039;$title_text&#039;&gt;$text$after&lt;/a&gt;&lt;/li&gt;\n&quot;;
</pre>
					<p>に変更する。</p>
					<img src="http://5509.me/?ak_action=api_record_view&id=1628&type=feed" alt="" />
]]></content:encoded>
			<wfw:commentRss>http://5509.me/log/wp_cats_and_archive/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

