<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2japanesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
   <channel>
      <title>HouseTect, JavaScript Blog</title>
      <link>http://hisasann.com/housetect/</link>
      <description>Javascript、Actionscriptあたりをメインに遊んでいるプログラマーのブログです。ちょっぴりアートでオモロ〜なものを作ってます。</description>
      <language>ja</language>
      <copyright>Copyright 2010</copyright>
      <lastBuildDate>Fri, 19 Mar 2010 15:08:12 +0900</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

      
      <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Housetect" /><feedburner:info uri="housetect" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
         <title>HTML5のaudio用jQuery Plugin - jAudio</title>
         <description><![CDATA[たいしたものではないが、最近<strong>HTML5</strong>のaudioタグで遊んでいるので、そのためのプラグインを書いておいた。
audioタグのもつメンバもブラウザによってまちまちだったりするので、完璧ではないがとりあえず動くレベル。

たとえばFirefox3.6では<strong>playbackRate</strong>が動かないが、Chrome5では動くなどなど。


<h2>
	プログラムコード
</h2>

全部のメンバ網羅できてないかもしれないが、だいたいこれぐらいあれば遊べる。
複数のaudioタグを使ってDJなどするときように、<strong>prototype</strong>で実装した。

<textarea class="js" name="code">
// jAudio - jQuery Plugin
(function($) {
	// init
	$.jAudio = function(elem) {
		return new Audio(elem);
	}

	var Audio = function(elem) {
		this.audio = elem.get(0);
	}

	Audio.prototype = {
		audio: null,

		// getter
		isPaused: function() { return this.audio.paused; },
		isEnded: function() { return this.audio.ended; },
		getDuration: function() { return this.audio.duration; },
		getSeeking: function() { return this.audio.seeking; },
		getPlayed: function() { return this.audio.played; },
		get: function() { return this.audio; },

		// properties
		loop: function(b) {
			this.audio.loop = b;
			return this;
		},
		currentTime: function(time) {
			this.audio.currentTime = time;
			return this;
		},
		autobuffer: function(b) {
			// default false
			this.audio.autobuffer = b;
			return this;
		},
		muted: function(b) {
			// default false
			this.audio.muted = b;
			return this;
		},
		volume: function(v) {
			// default 1
			this.audio.volume = v;
			return this;
		},
		playbackRate: function(rate) {
			// default 1	chrome
			this.audio.playbackRate = rate;
			return this;
		},

		// methods
		play: function() {
			this.audio.play();
			return this;
		},
		pause: function() {
			console.log(1);
			this.audio.pause();
			return this;
		},

		// events
		canplay: function(fn) {
			var _this = this;
			$(this.audio).bind("canplay", function() {
				fn.call(_this);
			});
			return this;
		},
		playing: function(fn) {
			var _this = this;
			$(this.audio).bind("playing", function() {
				fn.call(_this);
			});
			return this;
		}
	}
})(jQuery);
</textarea>


<h2>
	サンプルコード
</h2>

jQueryっぽくメソッドチェーン仕様。

<textarea class="js" name="code">
$.jAudio($("#audio"))
	.loop(true)
	.autobuffer(true)
	.muted(false)
	.volume(0.3)
	.canplay(function() {
		this.play();
	})
	.playing(function() {
		var callee = arguments.callee,
			_this = this;

		if(this.isPaused() || this.isEnded())
			return;

		// 何かしらの処理

		setTimeout( function(){
			// 始めに戻る
			_this.currentTime(0);
		}, 10000);
	});
</textarea>

playingの中は<strong>arguments.callee</strong>を使ってループしてますが、これはあくまでもサンプルとしてで、実際には何もしなくてもよい。
上記実装だと10秒後に、また始めから再生する。

低音がなったタイミングとかを取得して、そのタイミングで何かアクションをおこしたりしてみたいんだけど、そんなことできないよな〜。。。

あと、ふと気になったのが、FIrefoxとChromeでデフォルトのボリュームは同じ1なのに、なんかChromeのほうが音量が大きいｗ


<h2>
	ダウンロード
</h2>

<a href="http://gist.github.com/337283" target="_blank">gist: 337283 - GitHub</a>


<h2>
	デモ
</h2>

前に<a href="http://hisasann.com/housetect/2010/03/space_-_html5_css3_demo.html" target="_blank">space - HTML5 & CSS3 DEMO</a>で作ったものをjAudioで置き換えてみました。

FirefoxとChromeで違う背景になります。
<a href="http://lab.hisasann.com/jAudio/" target="_blank">jAudio - HTML5 audio DEMO</a>

■関連リンク
・<a href="http://www.html5.jp/tag/elements/media_elements.html" target="_blank">メディア要素 - 組込コンテンツ - HTML要素 - HTML5 タグリファレンス - HTML5.JP</a>
・<a href="http://kawa.at.webry.info/200905/article_7.html" target="_blank">HTML5.Audio - JavaScriptからMP3再生ライブラリ（HTML5風） Kawa.netブログ（川崎有亮）/ウェブリブログ</a>]]></description>
         <link>http://feedproxy.google.com/~r/Housetect/~3/bqXNXvlIP3A/html5audiojquery_plugin_-_jaud.html</link>
         <guid isPermaLink="false">http://hisasann.com/housetect/2010/03/html5audiojquery_plugin_-_jaud.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">技術</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">CSS3</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">HTML5</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">JavaScript</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">jQuery</category>
        
         <pubDate>Fri, 19 Mar 2010 15:08:12 +0900</pubDate>
      <feedburner:origLink>http://hisasann.com/housetect/2010/03/html5audiojquery_plugin_-_jaud.html</feedburner:origLink></item>
      
      <item>
         <title>jQuery.uniqueのsortOrder関数がかっこいい！！</title>
         <description><![CDATA[配列の中から重複した要素を除去する<strong>jQuery.unique</strong>がかっこいいです。
実際には、

<blockquote>
	document.documentElement.compareDocumentPosition
</blockquote>

<blockquote>
	"sourceIndex" in document.documentElement
</blockquote>

<blockquote>
	document.createRange
</blockquote>

のいずれかを持つブラウザを対象としているようです。

ざっくり抜き出してみたのが以下のコード。

<h2>
	サンプルコード
</h2>

div1とdiv2がいる前提でコードを書いてます。

<textarea class="js" name="code">
(function() {
	// jQuery.unique
	var hasDuplicate = false,
		baseHasDuplicate = true;

	window.UniqueSort = function(results){
		hasDuplicate = baseHasDuplicate;
		results.sort(sortOrder);

		// 重複があった場合
		if ( hasDuplicate ) {
			for ( var i = 1; i < results.length; i++ ) {
				// 隣接する重複要素を除去
				if ( results[i] === results[i-1] ) {
					results.splice(i--, 1);
				}
			}
		}

		return results;
	};

	function sortOrder( a, b ) {
		if ( !a.ownerDocument || !b.ownerDocument ) {
			if ( a == b ) {
				hasDuplicate = true;
			}
			return a.ownerDocument ? -1 : 1;
		}

		var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
		aRange.setStart(a, 0);
		aRange.setEnd(a, 0);
		bRange.setStart(b, 0);
		bRange.setEnd(b, 0);
		// 2つの range の端点の位置を比較します
		var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);

		// 重複があった！
		if ( ret === 0 ) {
			hasDuplicate = true;
		}
		return ret;
	};
})();

// DCL
$(function() {
	var div1 = $("#div1").get(),
		div2 = $("#div2").get(),
		divs = [];
	divs = divs.concat(div1);
	divs = divs.concat(div2);
	// 重複させる
	divs = divs.concat($("div").get());

	// 重複した配列
	console.log(divs);
	//　重複を除去した配列
	console.log(UniqueSort(divs));
});
</textarea>

<strong>sortOrder関数</strong>には<strong>document.createRange</strong>バージョンを設定しています。


<h2>
	解説
</h2>

まず
<blockquote>
	[div#div1, div#div2, div#div1, div#div2]
</blockquote>

という配列をUniqueSort関数に渡して、sortメソッドを呼びます。

すると
<blockquote>
	[div#div1, div#div1, div#div2, div#div2]
</blockquote>
というふうに重複要素が隣接されます。

あとは配列の前後を比較して等値だったら、sliceで取り除いている感じです。

最終的には
<blockquote>
	[div#div1, div#div2]
</blockquote>
と重複要素がなくなっている！！

2つの要素の<strong>ownerDocument.createRange()</strong>で要素の場所を特定して、<strong>compareBoundaryPoints</strong>メソッドで比較しているようなんですが、
compareBoundaryPointsメソッドってoffsetTop、offsetLeftをもとに比較しているのかな？

以下を見てもよくわからなかった。。。
<a href="https://developer.mozilla.org/ja/DOM/range" target="_blank">range - MDC</a>

<strong>Range</strong>オブジェクトを使って並び替えるのはなんか斬新で面白かったです。

■関連リンク
・<a href="http://semooh.jp/jquery/api/utilities/jQuery.unique/array/" target="_blank">jQuery.unique(array) - jQuery 日本語リファレンス</a>
・<a href="https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/Array/sort" target="_blank">sort - MDC</a>]]></description>
         <link>http://feedproxy.google.com/~r/Housetect/~3/YIXYJrd1x08/jqueryuniquesortorder.html</link>
         <guid isPermaLink="false">http://hisasann.com/housetect/2010/03/jqueryuniquesortorder.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">技術</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">JavaScript</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">jQuery</category>
        
         <pubDate>Thu, 18 Mar 2010 13:09:35 +0900</pubDate>
      <feedburner:origLink>http://hisasann.com/housetect/2010/03/jqueryuniquesortorder.html</feedburner:origLink></item>
      
      <item>
         <title>MacOS10.5でMacPortsからSVNを入れる方法</title>
         <description><![CDATA[<h2>SVNのインストール</h2>

まずは<strong>MacPorts</strong>からインストール。
とっても楽チン！！

<blockquote>
sudo port install subversion +mod_dav_svn
</blockquote>

とくにエラーが出なかったですが、結構時間がか掛かりました。


<h2>SVNリポジトリの作成</h2>

ここは僕の場合は以下に作りました。

<blockquote>
/Users/hoge/_/dev/svnroot/repos
</blockquote>

ではまずSVNの<strong>ルートディレクトリ</strong>の作成です。

<blockquote>
cd /Users/hoge/_/dev
sudo mkdir svnroot
</blockquote>

続いて、SVN<strong>リポジトリ</strong>を作成します。

はじめ以下のように実行していたのですが、どうも僕の環境ではエラーが発生してしまってうまくいきませんでした。

<blockquote>
sudo svnadmin create --fs-type fsfs repo
</blockquote>

エラー内容
<blockquote>
d Mar 17 16:52:24 2010] [error] [client 192.168.11.95] (20014)Internal error: Expected FS format '2'; found format '4'
[Wed Mar 17 16:52:24 2010] [error] [client 192.168.11.95] Could not fetch resource information.  [500, #0]
[Wed Mar 17 16:52:24 2010] [error] [client 192.168.11.95] Could not open the requested SVN filesystem  [500, #160043]
[Wed Mar 17 16:52:24 2010] [error] [client 192.168.11.95] Could not open the requested SVN filesystem  [500, #160043]
</blockquote>

なので以下のようにしてみたらうまく動いたのでとりあえずよしとします！

<blockquote>
sudo svnadmin create repos --pre-1.5-compatible
</blockquote>


<h2>Apacheの設定</h2>

まずは<strong>httpd.conf</strong>ファイルを開きます。

<blockquote>
cd /etc/apache2
vim httpd.conf
</blockquote>

LoadModuleが並んでいる箇所の一番下に以下を追加します。

<blockquote>
LoadModule dav_svn_module   libexec/apache2/mod_dav_svn.so
</blockquote>

httpd.confの一番下に以下を追加。

<blockquote>
&lt;Location /repos&gt;
   DAV svn
   SVNPath /Users/hoge/_/dev/svnroot/repos
   AuthType Basic
   AuthName "Subversion"
   AuthUserFile /Users/hoge/_/dev/svnroot/svn_passwd
   Require valid-user
&lt;/Location&gt;
</blockquote>

これにより

<blockquote>
http://localhost/repos
</blockquote>

がSVNリポジトリの「/Users/hoge/_/dev/svnroot/repos」とリンクします。
お試しとしてBasic認証も設定ファイルに記載したので、こちらのパスワードも設定します。


<h2>Basic認証の設定</h2>

以下を入力して実行するとBasic認証のパスワードの入力が要求されるので、2回入力します。

<blockquote>
cd /Users/hoge/_/dev/svnroot/
sudo htpasswd -c svn_passwd hoge
New password: 
Re-type new password: 
Adding password for user hoge
</blockquote>

これでBasic認証の設定は終わり。

追記：
<blockquote>
<p>@<a rel="nofollow" href="http://twitter.com/hisasann" class="tweet-url username">hisasann</a> Basic認証の設定のとこ、2回目以降はhtpasswdに -cオプションいらないので注意</p>
<cite>via: <a href="http://twitter.com/unyu_unya/status/10612552991" target="_blank">Twitter / かわ: @hisasann Basic認証の設定のとこ、2回 ...</a></cite>
</blockquote>

<h2>
	SVNルートディレクトリの権限の設定
</h2>

次に、Webサーバのみがリポジトリを読み取れるようにするために以下のように権限を付与します。

<blockquote>
cd /Users/hoge/_/dev/
sudo chown -R www:www svnroot
sudo chmod 600 svn_passwd
</blockquote>


あとは、システム環境設定の共有で「Web共有」をリブートする。

そして

<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="Revision 0_ _.jpg" src="http://hisasann.com/housetect/2010/03/17/Revision%200_%20_.jpg" width="390" height="120" class="mt-image-none" style="" /></span>

のような画面が開けばうまくいきました！！


■参考リンク
・<a href="http://www.adobe.com/jp/devnet/dreamweaver/articles/using_subversion_pt3.html" target="_blank">Dreamweaver CS4でのSubversionの使用 - パート3: SubversionをサポートするためのApacheの設定 | デベロッパーセンター</a>
・<a href="http://blog.livedoor.jp/unahide/archives/52295722.html" target="_blank">構想雑文 : Mac OS X 10.5(leopard)でSubversionセットアップ　その2 - livedoor Blog（ブログ）</a>
・<a href="http://d.hatena.ne.jp/mtbtaizo/20080618" target="_blank">Mac Ports で Subversionインストール - Get crazy</a>]]></description>
         <link>http://feedproxy.google.com/~r/Housetect/~3/xmw2m2wE59g/macos105macportssvn.html</link>
         <guid isPermaLink="false">http://hisasann.com/housetect/2010/03/macos105macportssvn.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Mac</category>
        
          <category domain="http://www.sixapart.com/ns/types#category">技術</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">Mac</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">MacPorts</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">SVN</category>
        
         <pubDate>Wed, 17 Mar 2010 17:21:30 +0900</pubDate>
      <feedburner:origLink>http://hisasann.com/housetect/2010/03/macos105macportssvn.html</feedburner:origLink></item>
      
      <item>
         <title>space - HTML5 &amp; CSS3 DEMO</title>
         <description><![CDATA[<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="space.jpg" src="http://hisasann.com/housetect/2010/03/13/space.jpg" width="500" height="343" class="mt-image-none" style="" /></span>

画像やFlashはいっさい使わずに何か中心に向かってアニメーションするものを作りたいと思って制作してみました。
今回も<strong>jsDeferrd.js</strong>を使用。

<a href="http://github.com/cho45/jsdeferred" target="_blank">cho45's jsdeferred at master - GitHub</a>

中心に向かって行くということで、何かが中心にないと面白くありません。
なので、疑似的な太陽をCSS3で作り、そこにHTML5の<strong>canvas</strong>が向かって行くという感じになりました。


<h2>サンプルコード - CSS3</h2>

実はまだこのgradientというCSSプロパティが良くわかっていなくて、Firefoxで出来るけど、Safariでどうやるのかな〜という部分を検証中です。
<strong>-moz-radial-gradient</strong>というプロパティを使って太陽を描いているんですが、これをWebkitでどう指定するのかが分からない！

なので、mozとwebkitでは別々の背景にしています。

またbodyタグに-moz-radial-gradientを指定するとなぜかうまく円が描かれなかったです。
divを画面のheight、widthに広げてそこにスタイルを当てるようにして回避しました。

<textarea class="css" name="code">
.radial1 {
	background: -moz-radial-gradient(red, yellow, #1E90FF);
	background: -moz-radial-gradient(#FF0000 5%, #FFFF00 30%, #333333 50%);
	background: -webkit-gradient(linear, left top, left bottom, from(#66ff00), color-stop(0.3, #ffff00), color-stop(0.7, #ff00ff), to(#00aaff));
}

.radial2 {
	background: -moz-radial-gradient(red, yellow, #1E90FF);
	background: -moz-radial-gradient(#FF3535 6%, #F5FF35 30%, #333333 50%);
	background: -webkit-gradient(linear, left top, left bottom, from(#66ff00), color-stop(0.3, #ffff00), color-stop(0.7, #ff00ff), to(#00aaff));
}
</textarea>

あとHTML5の<strong>video</strong>タグも使って音楽を出しています。
使っている曲は、HoldenのA Break in The Clouds - Main Mixです。（怒られたら使用するのやめますw）
宇宙っぽさが演出できる名曲です。


Firefoxで見ていただくのが一番いいです。
Chrome、Safariの場合は円ではなくグラデーションになってます。
以下からどうぞ。
<a href="http://lab.hisasann.com/space/" target="_blank">space - HTML5 & CSS3 DEMO</a>


<h2>プログラムコード</h2>
・<a href="http://gist.github.com/331165" target="_blank">gist: 331165 - GitHub</a>]]></description>
         <link>http://feedproxy.google.com/~r/Housetect/~3/lbfK2HzmeA0/space_-_html5_css3_demo.html</link>
         <guid isPermaLink="false">http://hisasann.com/housetect/2010/03/space_-_html5_css3_demo.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">技術</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">CSS3</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">Firefox</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">HTML5</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">jsDeferred</category>
        
         <pubDate>Sat, 13 Mar 2010 15:35:51 +0900</pubDate>
      <feedburner:origLink>http://hisasann.com/housetect/2010/03/space_-_html5_css3_demo.html</feedburner:origLink></item>
      
      <item>
         <title>squareDeferred</title>
         <description><![CDATA[<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="squareDeferred.jpg" src="http://hisasann.com/housetect/2010/03/13/squareDeferred.jpg" width="500" height="320" class="mt-image-none" style="" /></span>

なんとなく思い立って、jsDeferred.jsでアニメーションのループがしてみたいってなったので作ってみた。
この手のアニメーションを考えるときは、どちらかというと間違ったコードが面白さを生み出す。
つまり、不意に間違って2回ループしたら面白いや、ストーリーの組み直しなどで型にハマらない動きができたりする。

ここ最近は拙作の<a href="http://lab.hisasann.com/addCommand/" target="_blank">addCommand - jQuery Plugin</a>でアニメーションを書いていたんですが、jsDeferredも便利ですね〜。

処理の割り込みや、setTimeoutで待たせるときに使ったりしてましたが、アニメーションでも十分に使いやすい。

<a href="http://github.com/cho45/jsdeferred" target="_blank">cho45's jsdeferred at master - GitHub</a>


<h2>サンプルコード - jsDeferred.js</h2>

ストーリーのループは以下のようにfunctionのcalleeを最後のnextで呼ぶようにしてあげてます。
これで疑似無限ループの完成。

<textarea class="js" name="code">
// jsDeferred
(function() {
	var callee = arguments.callee;
	
	wait(2).
	next(function() {
		return story1();
	}).
	wait(2).
	next(function() {
		return story2();
	}).
	wait(2).
	next(function() {
		callee();
	});
})();
</textarea>


あとjQuery1.4以降の機能でeasingをCSSプロパティ毎に指定できるので、それで少し気持ち悪い動きをくわえてみたりしてます。

Firefoxでも頑張って動いてくれますが、ChromeかSafariのほうが軽快に動作します。
以下からどうぞ。
<a href="http://lab.hisasann.com/squareDeferred/" target="_blank">squareDeferred</a>


<h2>プログラムコード</h2>
・<a href="http://gist.github.com/331150" target="_blank">gist: 331150 - GitHub</a>]]></description>
         <link>http://feedproxy.google.com/~r/Housetect/~3/qX9Giu_tzAI/squaredeferred.html</link>
         <guid isPermaLink="false">http://hisasann.com/housetect/2010/03/squaredeferred.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">技術</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">JavaScript</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">jQuery</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">jsDeferred</category>
        
         <pubDate>Sat, 13 Mar 2010 15:21:25 +0900</pubDate>
      <feedburner:origLink>http://hisasann.com/housetect/2010/03/squaredeferred.html</feedburner:origLink></item>
      
      <item>
         <title>flickrダラ見サイト - flickrer作ってみた</title>
         <description><![CDATA[<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="Flickrer-1.jpg" src="http://hisasann.com/housetect/2010/03/08/Flickrer-1.jpg" width="500" height="321" class="mt-image-none" style="" /></span>

自分がflickrをダラ見することが多いので、それっぽい感じのサイトを自分用に作ってみた。
特に難しいことはしてなくて、

<ul>
	<li>$.jOpening</li>
	<li>$.flickr</li>
	<li>$.fn.jCurtain</li>
</ul>

という<strong>3つのプラグイン</strong>を作って制作してます。
あと、miyagawaさんの<a href="http://github.com/miyagawa/jquery-fitimage" target="_blank">miyagawa's jquery-fitimage at master - GitHub</a>を使って<strong>拡大画像の調整</strong>をしています。

実は単にカーテンのようなスライドを作ってみたくて、何か面白いことできないかな〜と思っていたらflickrでやったらいいかもと思って試しに作ったのがこのサイトになります。
初めのオープニング部分では、左右からラインが伸びてくるのですが、この当たりはFlashを意識して作っています。

今後もうちょい機能増やして、ダラ見しやすくする予定。
autoでスライドしていくとか。

対応ブラウザは以下（試したのが以下w）

<ul>
	<li>IE7</li>
	<li>Safari4</li>
	<li>Firefox3.6</li>
	<li>Chrome5</li>
</ul>


もしよかったら使ってみてくださいな。
<a href="http://hisasann.com/flickrer/" target="_blank">flickrer - flickrダラ見サイト</a>


追記：
<blockquote>
<p>@<a rel="nofollow" href="http://twitter.com/hisasann" class="tweet-url username">hisasann</a> マウスオーバーで画像を読むまでに間が空くのがもったいないので裏で呼んでおいたほうがいいんじゃないかと。</p>
<cite>via: <a href="http://twitter.com/edvakf/status/10133163585" target="_blank">Twitter / edvakf</a></cite>
</blockquote>

との意見をいただいたので、拡大画像部分の画像を先読みするように修正しました。]]></description>
         <link>http://feedproxy.google.com/~r/Housetect/~3/ZY5-GSBI2pk/flickr_-_flickrer.html</link>
         <guid isPermaLink="false">http://hisasann.com/housetect/2010/03/flickr_-_flickrer.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">技術</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">CSS3</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">Flickr</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">Image</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">JavaScript</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">jQuery</category>
        
         <pubDate>Mon, 08 Mar 2010 04:33:49 +0900</pubDate>
      <feedburner:origLink>http://hisasann.com/housetect/2010/03/flickr_-_flickrer.html</feedburner:origLink></item>
      
      <item>
         <title>TextMateにZen-Codingを導入して遊んでみる</title>
         <description><![CDATA[つい最近<a href="http://www.ustream.tv/user/cipher" target="_blank">cipher @ Ustream.TV - こもりです</a>さんがZen-Codingのやり方をustで流していたのが新しいですが、TextMateを使うと簡単にZen-Codingが楽しめるのでその導入方法をまとめときます。（ほぼ自分用ｗ）

Zen-Codingとは<strong>HTML</strong>や<strong>CSS</strong>のコーディング作業を快適に、そして高速におこなうための追加機能のようです。
なので、Editorに追加でプラグインを入れてZenなCoding環境を構築する必要がありそうですね。

では一応<a href="http://macromates.com/" target="_blank">TextMate</a>の日本語化の部分から解説します。


<h2>TextMateを日本語化</h2>

TextMateはデフォルトではマルチバイトに対応していません。
なので、プラグインを入れて日本語を打てるようにする必要があります。

以下のリンクに詳しくまとめてありますので、参考にしてみてください。
<a href="http://hisasann.com/housetect/2008/05/railstextmate.html">Railsに最適なテキストエディター「TextMate」を入れて日本語化してみた</a>


<h2>TextMateにZen-Codingを導入する</h2>

ではZen-Codingを行うためのプラグインを導入してみましょう！

まずは以下のサイトからzipファイルをダウンロードし解凍しときます。

<ul>
	<li>TextMate.Zen.CSS.1.3.1.zip</li>
	<li>TextMate.Zen.HTML.1.3.1.zip</li>
</ul>

<a href="http://code.google.com/p/zen-coding/" target="_blank">zen-coding - Project Hosting on Google Code</a>


<ul>
	<li>Zen.Coding-TextMate.v0.6.zip</li>
</ul>

<a href="http://code.google.com/p/zen-coding/downloads/list" target="_blank">Downloads - zen-coding - Project Hosting on Google Code</a>


そして以下のディレクトリに3つの<strong>tmbundle</strong>ファイルを配置します。

<blockquote>
/Users/hoge/Library/Application Support/TextMate/Bundles
</blockquote>

これでZen-Codingのプラグインの導入はおわりです。


<h2>Zen-Codingしてみる</h2>

まずはTextMateを起動します。
そしてHTMLを入力するので、<strong>Option + Command + h</strong>を押します。

これでZenなHTMLモードになります。

ためしに「<strong>html:4t</strong>」と入力してみます。

すると。。。

<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="textmate1.jpg" src="http://hisasann.com/housetect/2010/03/01/textmate1.jpg" width="500" height="109" class="mt-image-none" style="" /></span>

と<strong>HTML 4.01 Transitional</strong>で展開されます。

また、「<strong>html:5</strong>」と入力すると。。。

<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="textmate2.jpg" src="http://hisasann.com/housetect/2010/03/01/textmate2.jpg" width="500" height="169" class="mt-image-none" style="" /></span>

と<strong>HTML5</strong>モードで展開されます。

実は今までも、メニューから「File -&gt; New From Templete -&gt; HTML」と選択していけば同じようなテンプレートを呼び出せたんですが、
毎回新しいhtmlを作成するときにメニューに行くのは面倒でした。
なので、Zen-Codingでhtmlの雛形を一気に生成できることは、htmlコーダーやJavaScripterの人に大きな恩恵をもたらすと思います。

さらに適当なhtmlを入力してみます。

div#ならid指定、div.ならclass指定の要素が展開されます。

<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="textmate3.jpg" src="http://hisasann.com/housetect/2010/03/01/textmate3.jpg" width="500" height="360" class="mt-image-none" style="" /></span>

なかでもやっぱりうれしいのが、table+やdl+でしょう。
いちいちtableタグを作ってその中にtr作ってとやっていた作業が1パツで展開されます。
グルーピング系のhtmlタグはBlogの記事を書くときにも使うので、非常に楽になるのではないでしょうか。

ちなみに僕はBlogの記事をすべてTextMateで作成しています。
<strong>blockquote</strong>と入力してタブを押せばタグが展開されたり、もう便利なのです！


<h2>
	動画でZen-Codingを体感してみる。
</h2>

こもりさんのブログ<a href="http://blog.gaspanik.com/" target="_blank">gaspanik weblog</a>に動画があり非常に参考になりますので、ここに掲載させていただきます。

<object width="470" height="370"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9067540&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9067540&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" allowfullscreen="true" allowscriptaccess="always" width="470" height="370"></embed></object>

[via]
<a href="http://blog.gaspanik.com/coding-with-textmate-and-zencoding" target="_blank">TextMate+Zen-Codingで超速コーディング？  |  gaspanik weblog</a>
<a href="http://blog.gaspanik.com/textmate-with-zencoding-ext" target="_blank">Zen-Codingでできるあんなことこんなこと  |  gaspanik weblog</a>


<h2>TextMateのcolorについて</h2>

全然関係ないんですが、僕のTextMateのtheme colorは<a href="http://www.monokai.nl/blog/2006/07/15/textmate-color-theme/" target="_blank">Monokai » Blog Archive » Textmate color theme</a>を使っています。

JavaScriptとか結構かっこよく色分けしてくれるので、ずうっとこれ使ってます。

他の色にしたいなら
<a href="http://wiki.macromates.com/Themes/UserSubmittedThemes" target="_blank">Themes / UserSubmittedThemes browse -- TextMate Wiki</a>
がオススメです、すごい量のtheme colorがあるので、自分色を探してみるのもよいかもしれません。

■関連リンク
・<a href="http://hisasann.com/housetect/2010/02/textmategetbundle.html">TextMateのGetBundleがうまくいかないときの対処方法 at HouseTect, JavaScript Blog</a>
・<a href="http://hisasann.com/housetect/2009/04/textmate.html">よく使うTextMateショートカット at HouseTect, JavaScript Blog</a>]]></description>
         <link>http://feedproxy.google.com/~r/Housetect/~3/boyFDmxbheE/textmatezen-coding.html</link>
         <guid isPermaLink="false">http://hisasann.com/housetect/2010/03/textmatezen-coding.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Mac</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">TextMate</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">Zen-Coding</category>
        
         <pubDate>Mon, 01 Mar 2010 12:36:54 +0900</pubDate>
      <feedburner:origLink>http://hisasann.com/housetect/2010/03/textmatezen-coding.html</feedburner:origLink></item>
      
      <item>
         <title>Macで半角カタカナを入力する方法</title>
         <description><![CDATA[入力できないというのは知っていたんですが、半角カタカナを有効にする設定がどこにあるのか分からなかったので、メモメモ。


<h2>
	システム環境設定を開く
</h2>

まずはシステム環境設定を開き、言語環境をクリックします。

<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="システム環境設定.jpg" src="http://hisasann.com/housetect/2010/02/27/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E7%92%B0%E5%A2%83%E8%A8%AD%E5%AE%9A.jpg" width="500" height="255" class="mt-image-none" style="" /></span>


<h2>
	半角カタカナを有効にする
</h2>

入力メニューのタブをクリックして、あとはことえりの設定のところで、半角カタカナにチェックを付けるだけ。

<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="言語環境.jpg" src="http://hisasann.com/housetect/2010/02/27/%E8%A8%80%E8%AA%9E%E7%92%B0%E5%A2%83.jpg" width="500" height="224" class="mt-image-none" style="" /></span>


<h2>
	半角カタカナを入力するとき
</h2>

適当に日本語で文字を打ってから、「<strong>Ctrl + ;</strong>」で半角カタカナに変換できます。
僕はあんまり半角カタカナを使わないんですが、システムのテストで必要になるかもしれません。

[via]
<a href="http://macmac.cocolog-nifty.com/blog/2006/03/mac_16b1.html" target="_blank">macで半角カナ: たなごころ</a>]]></description>
         <link>http://feedproxy.google.com/~r/Housetect/~3/Cvo_fyqxuVU/mac_2.html</link>
         <guid isPermaLink="false">http://hisasann.com/housetect/2010/02/mac_2.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Mac</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">Mac</category>
        
         <pubDate>Sat, 27 Feb 2010 22:47:08 +0900</pubDate>
      <feedburner:origLink>http://hisasann.com/housetect/2010/02/mac_2.html</feedburner:origLink></item>
      
      <item>
         <title>Macに複数MySQLをインストールする方法</title>
         <description><![CDATA[MacPortsでインストールする方法<a href="http://www.fraction.jp/log/archives/2007/10/31/install_mysql_to_leopard" target="_blank">MacPortsでMySQLをインストール -- BONNOH FRACTION 13</a>や、pkgでインストールする方法<a href="http://www.o-hiro.net/blog/2008/03/mac_os_105mysql.html" target="_blank">素晴らしき哉、人生！: Mac OS 10.5にMySQLインストール</a>を見てみたんですが、どうもこれらの方法では複数のMySQLを同居させるのがむずかしそうだったので、ソースからコンパイルして入れてみた。

そしてうまく複数のMySQLが動いたので、そのときのメモメモ。。。


<h2>
	ソースをダウンロードする
</h2>

以下のリンクからtar.gzをダウンロードします。

今回僕は<strong>mysql-5.0.33</strong>をインストールしましたので、適宜自分のバージョンに置き換えて読んでいただけたらと思います。

<a href="http://dev.mysql.com/downloads/mysql/5.1.html#source" target="_blank">MySQL :: Download MySQL Community Server</a>

そして適当なディレクトリに解凍する。

<blockquote>
tar zxvf mysql-5.0.33.tar.gz 
</blockquote>

Macだと基本的にmysql-5.0.33.tar.gzをダブルクリックすれば解凍ソフトが起動するので、ターミナルでなくてもOKだと思います。

今回は<strong>/usr/local/src</strong>ディレクトリに解凍しました。

そしてディレクトリに潜る。

<blockquote>
cd mysql-5.0.33
</blockquote>


<h2>
	コンパイルする
</h2>

まずは<strong>configure</strong>を実行します。
このときのコンパイルオプションは結構重要で、とりあえず以下の感じに落ち着きました。

<strong>--with-mysqld-user=hoge</strong>のところは、<a href="http://blog.bornneet.com/Entry/257/" target="_blank">Macにユーザ権限でmysqlをソースから（あと、DBD::mysqlも） - Born Neet</a>を参考にして、今ログインしているユーザーを記述してみました。

<strong>--prefix=/usr/local/mysql3306</strong>は複数のMySQLを/usr/local/に同居させるので、mysqlの後に僕はport番号をサフィックスとして付与しています。

<blockquote>
./configure --with-charset=utf8 --with-mysqld-user=hoge --with-unix-socket-path=/usr/local/mysql3306/var/mysql.sock --prefix=/usr/local/mysql3306 --with-blackhole-storage-engine --with-federated-storage-engine
</blockquote>

configureがうまくいけば、あとはmakeで終わり。

<blockquote>
make
make install
</blockquote>


<h2>
	データベースを初期化する
</h2>

<blockquote>
/usr/local/mysql3306/bin/mysql_install_db --user=hoge
</blockquote>

もしここで「<strong>unknown option '--skip-federated'</strong>」のようなエラーが出てしまう場合は、

以下のファイルの

<blockquote>
/etc/my.cnf
</blockquote>

この部分をコメントアウトしてください。

<blockquote>
#skip-federated
</blockquote>

[via]
<a href="http://d.hatena.ne.jp/hogem/20090513/1242202292" target="_blank">mysql 5.1のmysql_install_dbがこける - うまい棒blog</a>

初期化が終わるとデータディレクトリのvarが作成されます。

<blockquote>
/usr/local/mysql3306/var/
</blockquote>

そして今回の重要なポイントですが、MySQLを別ポートで複数起動するので、この<strong>my.cnf</strong>が1つだとうまくいきません。
my.cnfに<strong>port</strong>を指定する箇所があるので、別々のMySQLは別々のmy.cnfを見に行って欲しいわけです。

なので、今回は

<blockquote>
cp /etc/my.cnf /usr/local/mysql3306/var
</blockquote>

を実行してmy.cnfをデータディレクトリにコピーしました。
これで順番的に自分自身のmy.cnfを見に行くようになります。
また、<strong>mysql.sock</strong>というMySQLが起動したときに作成されるファイルも別々にしたいので、これもデータディレクトリに作ってねっ！と記述しています。
一般的には<strong>/tmp/mysql.sock</strong>に作成されるようです。

<blockquote>
[client]
default-character-set=utf8
#password       = your_password
port            = 3306
socket          = /usr/local/mysql3306/var/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
port            = 3306
socket          = /usr/local/mysql3306/var/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
</blockquote>


<h2>MySQLを起動する</h2>

起動コマンドは以下のとおり。

<blockquote>
cd /usr/local/mysql3306/bin
./mysqld_safe &
</blockquote>

これでバックグラウンドでMySQLが起動します。

ちょっと教えてもらった操作をメモ。
もし以下のように<strong>&</strong>を付けずに起動した場合、

<blockquote>
./mysqld_safe
</blockquote>

<strong>Ctrl + z</strong>で一旦プロセスを落として、

<blockquote>
bg
</blockquote>

と叩くと

<blockquote>
./mysqld_safe & 
</blockquote>

をしたときと同じ動作になるみたい。

最後に、プロセスが立ち上がっているかを以下で確認する。

<blockquote>
ps ax | grep mysql
</blockquote>


<h2>MySQLを停止する</h2>

以下で止まる。

<blockquote>
./mysqladmin shutdown --socket=/usr/local/mysql3306/var/mysql.sock
</blockquote>


<h2>
	まとめ
</h2>

これで、もうひとつmysqlを作りたい場合は、「<strong>コンパイルする</strong>」の部分から--prefixを変えて実行すればよい。

結構手順としては面倒だが、プロジェクトが複数のMySQLを必要としている場合に、この手順が参考になれば幸いです。

■関連リンク
・<a href="http://dev.mysql.com/doc/refman//5.1/ja/mac-os-x-installation.html" target="_blank">MySQL :: MySQL 5.1 リファレンスマニュアル :: 2.5 Mac OS X に MySQL をインストールする</a>
・<a href="http://www.hi-ho.ne.jp/tsumiki/book_sup2.html" target="_blank">「Can't connect to local MySQL server through socket」エラーについて</a>
・<a href="http://dev.mysql.com/doc/refman/4.1/ja/mysqld-multi.html" target="_blank">MySQL :: MySQL 4.1 リファレンスマニュアル :: 4.8.3 mysqld_multi（複数の MySQL サーバを管理するプログラム）</a>
・<a href="http://www.pleiades.or.jp/misc/mac/MySQL.html" target="_blank">MySQL / Mac OS X</a>
・<a href="http://blog.bornneet.com/Entry/257/" target="_blank">Macにユーザ権限でmysqlをソースから（あと、DBD::mysqlも） - Born Neet</a>
・<a href="http://dev.mysql.com/doc/refman/4.1/ja/mysql-install-db.html" target="_blank">MySQL :: MySQL 4.1 リファレンスマニュアル :: 2.4.1 mysql_install_db の実行に関する問題</a>
・<a href="http://blog.mikuriya.biz/archives/106" target="_blank">1台のサーバに複数のMySQLをインストールしてみた。 | RwJ</a>
・<a href="http://dev.mysql.com/doc/refman/5.1/ja/configure-options.html" target="_blank">MySQL :: MySQL 5.1 リファレンスマニュアル :: 2.9.2 典型的な configure オプション</a>
・<a href="http://dev.mysql.com/doc/refman/4.1/ja/problems-with-mysql-sock.html" target="_blank">MySQL :: MySQL 4.1 リファレンスマニュアル :: A.4.5 MySQL ソケットファイル /tmp/mysql.sock の保護または変更方法</a>]]></description>
         <link>http://feedproxy.google.com/~r/Housetect/~3/pgTd4Nc0n2c/macmysql.html</link>
         <guid isPermaLink="false">http://hisasann.com/housetect/2010/02/macmysql.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Mac</category>
        
          <category domain="http://www.sixapart.com/ns/types#category">技術</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">Mac</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">MySql</category>
        
         <pubDate>Tue, 23 Feb 2010 16:59:43 +0900</pubDate>
      <feedburner:origLink>http://hisasann.com/housetect/2010/02/macmysql.html</feedburner:origLink></item>
      
      <item>
         <title>MacにImageMagickをインストールする方法</title>
         <description><![CDATA[いろいろググッた結果、MacPortsからインストールするのが速そう。
ということでまずはMacPortsのインストールから解説します。

すでに入っているかたは、読み飛ばしてください。


<h2>MacPortsをインストールする</h2>

まずは、Xcode ToolsをMacに付属しているインストールディスクからインストールします。
終わったら、<a href="http://svn.macosforge.org/repository/macports/downloads/" target="_blank">http://svn.macosforge.org/repository/macports/downloads/</a>からバージョンを選んでダウンロードする。

僕のローカルにはすでに、<strong>MacPorts-1.7.1</strong>が入っていたので、このバージョンでも問題ないと思います。

次に環境変数にパスを追加しときます。

<blockquote>
cd
vim .bash_profile

export PATH=/opt/local/bin:/opt/local/sbin/:$PATH
export MANPATH=/opt/local/man:$MANPATH
</blockquote>

一応リフレッシュしとく。

<blockquote>
source .bash_profile
</blockquote>


あとはMacPortsをアップデートしておわり。

<blockquote>
$ sudo port -d selfupdate
$ sudo port -d sync
</blockquote>


[via]
<a href="http://d.hatena.ne.jp/hakobe932/20061208/1165646618" target="_blank">MacPortsでステキなUNIXツールをインストール - はこべにっき#</a>


<h2>ImageMagickをインストールする</h2>

ここまで来るとあとは楽チンで、

<blockquote>
$ sudo port install ImageMagick
</blockquote>

これで終わり！
いろんなものを一緒にインストールするので、だいたい30分くらいはかかるかも。

すでに、MacPortsでインストールされているものを確認するなら、

<blockquote>
$ port installed
</blockquote>

と叩けば、ゾロゾロと表示されます。

[via]
<a href="http://chalow.net/2008-08-15-3.html" target="_blank">[を] Mac に ImageMagick を入れた</a>

■関連リンク
・<a href="http://hisasann.com/housetect/2009/06/macbook_pro_1.html" target="_blank">新しいMacbook Proにインストールしたものメモ</a>
・<a href="http://openlab.dino.co.jp/2008/08/18/220655330.html" target="_blank">MacPortsのコマンド逆引き一覧 -- ディノオープンラボラトリ</a>]]></description>
         <link>http://feedproxy.google.com/~r/Housetect/~3/cQ_EtmyxJ1w/macimagemagick.html</link>
         <guid isPermaLink="false">http://hisasann.com/housetect/2010/02/macimagemagick.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Mac</category>
        
          <category domain="http://www.sixapart.com/ns/types#category">技術</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">Java</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">Mac</category>
        
         <pubDate>Tue, 23 Feb 2010 16:50:28 +0900</pubDate>
      <feedburner:origLink>http://hisasann.com/housetect/2010/02/macimagemagick.html</feedburner:origLink></item>
      
      <item>
         <title>Wordpressの画像アップロードを激的に便利にする方法</title>
         <description><![CDATA[以下の<strong>JavaScript</strong>ファイルに

<blockquote>
wp-admin/js/media-upload.js
</blockquote>

<strong>send_to_editor</strong>という関数があるので、その中の以下の部分を書き換えると<strong>アップロード</strong>後や<strong>投稿に挿入</strong>後に再び画像アップロードのレイヤーが表示される。

<textarea class="js" name="code">
	//tb_remove();
	window.history.back();
</textarea>

これで、

<ul>
	<li>
		複数ファイルをアップロード
	</li>
	<li>
		名前を変更する
	</li>
	<li>
		変更を保存する
	</li>
	<li>
		ひとつずつ画像を投稿に挿入する
	</li>
</ul>

という手順ができるので、激的に作業が速くなる。


Wordpressを使っているとどうしても画像のアップロードのところの面倒くささがあって、記事を書くのが少しおっくうになるが、これで少しでもブログを書くのが楽しくなれば幸いです。

■関連リンク
<a href="http://ja.forums.wordpress.org/topic/1662#post-7107" target="_blank">WordPress › フォーラム » 画像の「投稿に挿入」の効率化</a>]]></description>
         <link>http://feedproxy.google.com/~r/Housetect/~3/IbR_tm453pw/wordpress.html</link>
         <guid isPermaLink="false">http://hisasann.com/housetect/2010/02/wordpress.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">ブログ</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">Blog</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">JavaScript</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">WordPress</category>
        
         <pubDate>Mon, 15 Feb 2010 19:24:06 +0900</pubDate>
      <feedburner:origLink>http://hisasann.com/housetect/2010/02/wordpress.html</feedburner:origLink></item>
      
      <item>
         <title>TextMateのGetBundleがうまくいかないときの対処方法</title>
         <description><![CDATA[<strong>TextMate</strong>を使っていると基本的には<strong>デフォルトのBundle</strong>でことが足りるんですが、<strong>jQueryBundle</strong>入れたり、<strong>MootoolsBundle</strong>入れたりと何かしらBundleを自分でインストールする機会があります。

このときにBundleを簡単にインストールできるGetBundleを使えば、簡単にインストールできるんですが、不調なのかアップデートが必要なのかうまくいかない場合があり、
こんなときはBundleの<strong>svnリポジトリ</strong>から自分でインストールしちゃうと早いです。


<h2>
	Bundlesから選んでインストールする方法
</h2>

以下のリンクから欲しいバンドルリンクをクリックします。

<a href="http://svn.textmate.org/trunk/Bundles/" target="_blank">http://svn.textmate.org/trunk/Bundles/</a>

そのときのURLをコピーして、以下のように直接TextMateのBundlesディレクトリに<strong>チェックアウト</strong>する。

僕は自分のUserの下にTextMateのBundlesを入れているのでこんな感じ。

<textarea class="js" name="code">
cd /Users/hoge/Library/Application Support/TextMate/Bundles
svn co http://svn.textmate.org/trunk/Bundles/JavaScript%20jQuery.tmbundle/
</textarea>


システム全体で共通に使っている人は/Libraryから始めるみたい。

<textarea class="js" name="code">
cd /Library/Application Support/TextMate/Bundles
svn co http://svn.textmate.org/trunk/Bundles/JavaScript%20jQuery.tmbundle/
</textarea>


Bundlesは死ぬほど便利なので、入れまくって使いまくりましょう！！]]></description>
         <link>http://feedproxy.google.com/~r/Housetect/~3/liE4GZirAfw/textmategetbundle.html</link>
         <guid isPermaLink="false">http://hisasann.com/housetect/2010/02/textmategetbundle.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Mac</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">Mac</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">TextMate</category>
        
         <pubDate>Fri, 05 Feb 2010 16:01:16 +0900</pubDate>
      <feedburner:origLink>http://hisasann.com/housetect/2010/02/textmategetbundle.html</feedburner:origLink></item>
      
      <item>
         <title>Apple iPadが欲しくなる映像</title>
         <description><![CDATA[<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="アップル - iPad - デザイン - 革命的なマルチタッチデバイス。-1.jpg" src="http://hisasann.com/housetect/2010/02/04/%E3%82%A2%E3%83%83%E3%83%97%E3%83%AB%20-%20iPad%20-%20%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%20-%20%E9%9D%A9%E5%91%BD%E7%9A%84%E3%81%AA%E3%83%9E%E3%83%AB%E3%83%81%E3%82%BF%E3%83%83%E3%83%81%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%80%82-1.jpg" width="500" height="150" class="mt-image-none" style="" /></span>

始め、いろんな方のエントリーを読んで僕は買わないかな〜と思っていましたが、どうにもこうにも徐々に買いたい欲が湧いてきてしまった。
そもそも<strong>家でもMac</strong>、<strong>職場でもMac</strong>を使って作業をしていて、<strong>ケイタイはiPhone</strong>だしともうMac漬けなので、iPadも欲しくなってしまう。

まずは以下のApple iPadのビデオからどうぞ。
毎回思いますが、この作り手たちの声は卑怯！ｗ

<strong>Apple iPad</strong>
<object width="500" height="325"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9031647&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9031647&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" allowfullscreen="true" allowscriptaccess="always" width="500" height="325"></embed></object>


こちらは実際にiPadに触った人たちのビデオ。
ますます欲しくなります。。

<strong>Apple iPad: iLounge.com's Complete Interface Walkthrough (720p HD)</strong>
<object width="500" height="325"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9037933&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9037933&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" allowfullscreen="true" allowscriptaccess="always" width="500" height="325"></embed></object>

<strong>Apple iPad: Hands On</strong>
<object width="500" height="325"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9028871&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9028871&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" allowfullscreen="true" allowscriptaccess="always" width="500" height="325"></embed></object>

<strong>iPad first impressions</strong>
<object width="500" height="325"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9048681&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9048681&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" allowfullscreen="true" allowscriptaccess="always" width="500" height="325"></embed></object>

いやはや後すこし待ちますかっ！

<a href="http://www.apple.com/jp/ipad/" target="_blank">アップル - iPad - ウェブ、メール、写真を体験する最高の方法。</a>]]></description>
         <link>http://feedproxy.google.com/~r/Housetect/~3/lHjH9V--RBY/apple_ipad.html</link>
         <guid isPermaLink="false">http://hisasann.com/housetect/2010/02/apple_ipad.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Mac</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">Mac</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">iPad</category>
        
         <pubDate>Thu, 04 Feb 2010 12:51:51 +0900</pubDate>
      <feedburner:origLink>http://hisasann.com/housetect/2010/02/apple_ipad.html</feedburner:origLink></item>
      
      <item>
         <title>JavaScript変態複雑化文法最速マスター</title>
         <description><![CDATA[<a href="http://d.hatena.ne.jp/Nagise/20100202/1265131791" target="_blank">Java変態文法最速マスター - プログラマーの脳みそ</a>をリスペクト。
<a href="http://d.hatena.ne.jp/hasegawayosuke/20100203/p1" target="_blank">JavaScript変態文法最速マスター - 葉っぱ日記</a>をリスペクト。

特に技法的なことではないんですが、functionをいろんなところで絡めて<strong>わかりにくくする</strong>ポイントをいくつか紹介。


<h2>if文にfunctionを絡めてみる</h2>

単純なifなはずなのに、条件式に即時実行のfunctionを絡めることによってよりわかりにくくできます。
さらに<strong>クロージャ</strong>をreturnして()で実行し、より複雑にする技法もとりいれてます。

<textarea class="js" name="code">
if (function(a, b) {
	return (function(a, b) {
		return a < b;
	})(1, 2);
}()) {
	console.log(1);
}
</textarea>


<h2>for文にfunctionを絡めてみる</h2>

そもそもfor文の回りにfunctionを絡めてわかりにくくし、for文の条件式にもfunctionを絡めます。
さらに<strong>クロージャ</strong>をreturnして()で実行し、より複雑にする技法もとりいれてます。

「ちなみにここでやっていることは引数の[1, 2, 3]という配列を受け取って、新しい配列にコピーしてreturnしているだけです。」

<textarea class="js" name="code">
var array = (function(arr) {
	return function() {
		var i=0,
			ret = new Array;

		for (; i < function(arr) {return arr.length;}(arr);)(function(object) {
			ret.push(object);

			(function() {++i;})();
		})(arr[i]);

		return ret;
	}
})([1, 2, 3])();
console.log(array);
</textarea>


<h2>出力結果</h2>

<blockqute>
	 [1, 2, 3]
</blockqute>


<h2>
	Objectに上記やり方を絡めてみる
</h2>

aというプロパティはただaを返せば終わりなはずなのに、わざわざfunctionでネストしてわかりにくくしています。
bというプロパティは上記<strong>if文複雑化</strong>と<strong>for文複雑化</strong>を応用して、解読が困難な状態を実現しています。

<textarea class="js" name="code">
var Hoge = {
	a: function() {
		return function() {
			return (function() {
				return "a"
			})();
		}
	},
	
	b: function() {
		if (function(a) {
			return (function(a) {
				return a == "a";
			})("a");
		}()) {
			var array = (function(arr) {
				return function() {
					var i=0,
						ret = new Array;
			
					for (; i < function(arr) {return arr.length;}(arr);)(function(object) {
						ret.push(object);
			
						(function() {++i;})();
					})(arr[i]);
			
					return ret;
				}
			})([1, 2, 3])();
			
			return array;
		}
	}
}
console.log(Hoge.b());
</textarea>


<h2>出力結果</h2>

<blockqute>
	 [1, 2, 3]
</blockqute>


<h2>
	複雑化で気を付ける点
</h2>

iをインクリメントする部分の複雑化で

<textarea class="js" name="code">
(function() {++i;})();
</textarea>

という部分がありますが、ここで

<textarea class="js" name="code">
(function(i) {++i;})(i);
</textarea>

このように引数で渡してはいけません。
外側のスコープにいるiではなく、このfunctionの関数スコープ内のiをインクリメントすることになるので無限ループになります。

これ以外にも<strong>curry化</strong>をうまく使いまくって、複雑にすることができますが、だいたい上記のことが応用できれば特に問題はありません。

<strong>※注意 function絡めは節度と必要度合いを見て実装しましょうね！</strong>]]></description>
         <link>http://feedproxy.google.com/~r/Housetect/~3/t-4r54x3s5k/javascript_12.html</link>
         <guid isPermaLink="false">http://hisasann.com/housetect/2010/02/javascript_12.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">技術</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">JavaScript</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">Program</category>
        
         <pubDate>Wed, 03 Feb 2010 16:20:40 +0900</pubDate>
      <feedburner:origLink>http://hisasann.com/housetect/2010/02/javascript_12.html</feedburner:origLink></item>
      
      <item>
         <title>エラトステネスの篩 - JavaScript版</title>
         <description><![CDATA[<a href="http://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E7%AF%A9" target="_blank">エラトステネスの篩 - Wikipedia</a>

こんな感じなのかな。。


<h2>サンプルコード</h2>

<textarea class="js" name="code">
console.log(makePrime(100));

function makePrime(maxCount) {
	var max = maxCount + 1,
		primes = new Array(max),
		ret = new Array();

	// 一旦すべて素数とする
	for (var i=1; i < max; ++i) { primes[i] = true; };

	// 素数だけ抽出
	for (var i=2; i < max; ++i) {
		if (primes[i]) {
			ret.push(i);
		
			for (var j=i; j*i <= max; ++j) {
				// 素数以外にfalseを入れる
				primes[j*i] = false;
			};
		}
	};
	
	return ret;
}
</textarea>


<h2>
	出力結果
</h2>

<blockquote>
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
</blockquote>

勉強になりました！]]></description>
         <link>http://feedproxy.google.com/~r/Housetect/~3/flgOjfXXiUQ/_-_javascript.html</link>
         <guid isPermaLink="false">http://hisasann.com/housetect/2010/01/_-_javascript.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">技術</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">Algorithm</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">JavaScript</category>
        
         <pubDate>Fri, 29 Jan 2010 11:25:38 +0900</pubDate>
      <feedburner:origLink>http://hisasann.com/housetect/2010/01/_-_javascript.html</feedburner:origLink></item>
      
   </channel>
</rss>
