<?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>zudolog</title>
	<atom:link href="http://zudolab.net/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://zudolab.net/blog</link>
	<description>Takazudoがうだうだ書くドキュメント</description>
	<lastBuildDate>Sat, 24 Jul 2010 14:30:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>$.ui.sectionToggler</title>
		<link>http://zudolab.net/blog/?p=315</link>
		<comments>http://zudolab.net/blog/?p=315#comments</comments>
		<pubDate>Sat, 24 Jul 2010 14:15:32 +0000</pubDate>
		<dc:creator>Takazudo</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://zudolab.net/blog/?p=315</guid>
		<description><![CDATA[本書いてたと思ったらアウトライナーっぽいものを書いていた…


GoogleCode &#8211; jquery-sectiontoggler

見出しをクリックしたらそのセクションを閉じたりとかして、cookieに保存されるのでリロードしても表示非表示が保存されてたりします。コードは手で書くだけです。自分はよくこういうのHTMLでとりあえず書いたりするのでとりあえずプロジェクト化してみた。
]]></description>
			<content:encoded><![CDATA[<p>本書いてたと思ったらアウトライナーっぽいものを書いていた…</p>
<p><span class="morePoint" id="more-315"></span></p>
<ul>
<li><a href="http://code.google.com/p/jquery-sectiontoggler/">GoogleCode &#8211; jquery-sectiontoggler</a>
</ul>
<p>見出しをクリックしたらそのセクションを閉じたりとかして、cookieに保存されるのでリロードしても表示非表示が保存されてたりします。コードは手で書くだけです。自分はよくこういうのHTMLでとりあえず書いたりするのでとりあえずプロジェクト化してみた。</p>
]]></content:encoded>
			<wfw:commentRss>http://zudolab.net/blog/?feed=rss2&amp;p=315</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing jQuery</title>
		<link>http://zudolab.net/blog/?p=308</link>
		<comments>http://zudolab.net/blog/?p=308#comments</comments>
		<pubDate>Sat, 19 Jun 2010 14:56:09 +0000</pubDate>
		<dc:creator>Takazudo</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[presentations]]></category>

		<guid isPermaLink="false">http://zudolab.net/blog/?p=308</guid>
		<description><![CDATA[第1回jstudy &#8211; javascript勉強会 - でやったプレゼンのスライドです。

Introducing jQuery



jQueryを全く知らん人が、JavaScript入門するためにみたいな内容です。
矢印キー等で進んだりできます。Google Chromeで見ると最も幸せになれます。
VLゴシックとかパソコンに入ってるともっと幸せになれます。

お手製HTMLプレゼンのやつ↓

$.presentation

]]></description>
			<content:encoded><![CDATA[<p><a href="http://atnd.org/events/4757">第1回jstudy &#8211; javascript勉強会 -</a> でやったプレゼンのスライドです。</p>
<ul>
<li><a href="http://dl.dropbox.com/u/268240/presentations/introducingJQuery/index.html">Introducing jQuery</a></li>
</ul>
<p><span class="morePoint" id="more-308"></span></p>
<p>
jQueryを全く知らん人が、JavaScript入門するためにみたいな内容です。<br />
矢印キー等で進んだりできます。Google Chromeで見ると最も幸せになれます。<br />
<a href="http://dicey.org/vlgothic/">VLゴシック</a>とかパソコンに入ってるともっと幸せになれます。
</p>
<p>お手製HTMLプレゼンのやつ↓</p>
<ul>
<li><a href="http://zudolab.net/blog/?p=282">$.presentation</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://zudolab.net/blog/?feed=rss2&amp;p=308</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HTML+CSS Templating</title>
		<link>http://zudolab.net/blog/?p=306</link>
		<comments>http://zudolab.net/blog/?p=306#comments</comments>
		<pubDate>Sat, 12 Jun 2010 10:26:29 +0000</pubDate>
		<dc:creator>Takazudo</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[presentations]]></category>

		<guid isPermaLink="false">http://zudolab.net/blog/?p=306</guid>
		<description><![CDATA[第17回Sugamo.cssで発表したプレゼンのスライドです。

HTML+CSS Templating



HTMLのテンプレってこう組んでおけばいいんじゃね？と言うような内容です。
スライドはGoogle Chromeで見ると最も幸せになれます。
似たようなことを知りたい人はOOCSSのプレゼンを頑張ってみるべし。
]]></description>
			<content:encoded><![CDATA[<p>第17回Sugamo.cssで発表したプレゼンのスライドです。</p>
<ul>
<li><a href="http://dl.dropbox.com/u/268240/presentations/htmlCssTemplating/index.html">HTML+CSS Templating</a></li>
</ul>
<p><span class="morePoint" id="more-306"></span></p>
<p>
HTMLのテンプレってこう組んでおけばいいんじゃね？と言うような内容です。<br />
スライドはGoogle Chromeで見ると最も幸せになれます。<br />
似たようなことを知りたい人は<a href="http://fronteers.nl/congres/2009/sessions/object-oriented-css">OOCSSのプレゼン</a>を頑張ってみるべし。</p>
]]></content:encoded>
			<wfw:commentRss>http://zudolab.net/blog/?feed=rss2&amp;p=306</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MindNode for iPad が素敵</title>
		<link>http://zudolab.net/blog/?p=301</link>
		<comments>http://zudolab.net/blog/?p=301#comments</comments>
		<pubDate>Sun, 06 Jun 2010 13:37:47 +0000</pubDate>
		<dc:creator>Takazudo</dc:creator>
				<category><![CDATA[雑多]]></category>

		<guid isPermaLink="false">http://zudolab.net/blog/?p=301</guid>
		<description><![CDATA[2個前のエントリにも書いたんですけど、自分は、本読む以外のiPadの使用について、「帯に短したすきに長し」感がありました。でも、このMindNodeってアプリは、まさにiPadで最適って思いました。今のところベストオブiPadアプリです自分の中で。

MindNode (iTunes)


まず、これは何なのかって言うと、マインドマップを作るためのソフトです。そんで、そのマインドマップっていうのは何かって言うと、ググってもらうと色々出てくるんですが、アウトラインでテキストを組み立てるのを、ビジュアルで行うようなものなんです。
たとえば自分の場合、本を書くというミッションがあったとして、うーんどうしようかなーこう言う構成であーでこーでっていうのを何でやるかって言うと、人によると思うんですが、自分の場合、vimか秀丸でやってました。インデントつけて階層を表して初めに概観しながらやるんです。それで問題無いといえば無いんですが、スクロールしたり上いったり下いったり、あれをこっちに移してみてインデント変えたりとか、そーいう作業が発生しますよね。そーいうのを直感的にできるのがこのマインドマップってやつなんです。
それでまー、マインドマップって、いくつかPC,Macでもソフトがあるんですが、それらは自分、使ったこと無かったです。でも、このiPadに、このMindNodeは最高にフィットしているアプリだと思いますよ。iPadが「帯に短したすきに長し」となぜ感じるかと言うと、まず、テキスト打つのが苦痛だからです。許せる範囲ではあるが、長文はかけないです自分はiPadで。それならPCでやります。しかし、PCは、直感的ではないです。マインドマップのソフトを他に使ったことは無いですけれども、例えばPhotoshopを使うような、vimでコマンドを覚えるような、中間の翻訳作業が必要になるはずです。
iPhoneなりAndroid携帯持ってて、「Twitterはスマートフォンと相性がいい」と思ってる人は多いんじゃないかと思うんですが、「ブログ投稿はスマートフォンと相性がいい」と思う人は少ないんじゃないでしょうか。そーいうヘビーな作業には向いてないんですそーいうiPhoneとかiPadってきっと。色々出てる音楽ソフトについてもそう思います自分は。いじる楽しさの面ではいけてるけど、それでガッツリ作ろうとは思わない。めんどいし手間がかかる。
iPadでのマインドマップ作成は、「本番の文章＝ブログ」「構成のアウトライン＝Twitter」と置き換えて考えられるほどに相性がいいと感じてます。つまんで動かしたり拡大したり縮小したりするのが、ほんとに直感的なんです。マインドマップではいっぱいテキスト打つ必要無いし。そんで、完成したらPCの横にiPadでマインドマップ表示させながら本番を書くんです。これってすごい良くない？と一人で盛り上がっています。昨日MindNode買ったばっかりなんですけど。
]]></description>
			<content:encoded><![CDATA[<p>2個前のエントリにも書いたんですけど、自分は、本読む以外のiPadの使用について、「帯に短したすきに長し」感がありました。でも、このMindNodeってアプリは、まさにiPadで最適って思いました。今のところベストオブiPadアプリです自分の中で。</p>
<ul>
<li><a href="http://itunes.apple.com/jp/app/mindnode/id312220102?mt=8">MindNode (iTunes)</a></li>
</ul>
<p><span class="morePoint" id="more-301"></span></p>
<p>まず、これは何なのかって言うと、マインドマップを作るためのソフトです。そんで、そのマインドマップっていうのは何かって言うと、<a href="http://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%A4%E3%83%B3%E3%83%89%E3%83%9E%E3%83%83%E3%83%97">ググってもらうと色々出てくる</a>んですが、アウトラインでテキストを組み立てるのを、ビジュアルで行うようなものなんです。</p>
<p>たとえば自分の場合、本を書くというミッションがあったとして、うーんどうしようかなーこう言う構成であーでこーでっていうのを何でやるかって言うと、人によると思うんですが、自分の場合、vimか秀丸でやってました。インデントつけて階層を表して初めに概観しながらやるんです。それで問題無いといえば無いんですが、スクロールしたり上いったり下いったり、あれをこっちに移してみてインデント変えたりとか、そーいう作業が発生しますよね。そーいうのを直感的にできるのがこのマインドマップってやつなんです。</p>
<p>それでまー、マインドマップって、いくつかPC,Macでもソフトがあるんですが、それらは自分、使ったこと無かったです。でも、このiPadに、このMindNodeは最高にフィットしているアプリだと思いますよ。iPadが「帯に短したすきに長し」となぜ感じるかと言うと、まず、テキスト打つのが苦痛だからです。許せる範囲ではあるが、長文はかけないです自分はiPadで。それならPCでやります。しかし、PCは、直感的ではないです。マインドマップのソフトを他に使ったことは無いですけれども、例えばPhotoshopを使うような、vimでコマンドを覚えるような、中間の翻訳作業が必要になるはずです。</p>
<p>iPhoneなりAndroid携帯持ってて、「Twitterはスマートフォンと相性がいい」と思ってる人は多いんじゃないかと思うんですが、「ブログ投稿はスマートフォンと相性がいい」と思う人は少ないんじゃないでしょうか。そーいうヘビーな作業には向いてないんですそーいうiPhoneとかiPadってきっと。色々出てる音楽ソフトについてもそう思います自分は。いじる楽しさの面ではいけてるけど、それでガッツリ作ろうとは思わない。めんどいし手間がかかる。</p>
<p>iPadでのマインドマップ作成は、「本番の文章＝ブログ」「構成のアウトライン＝Twitter」と置き換えて考えられるほどに相性がいいと感じてます。つまんで動かしたり拡大したり縮小したりするのが、ほんとに直感的なんです。マインドマップではいっぱいテキスト打つ必要無いし。そんで、完成したらPCの横にiPadでマインドマップ表示させながら本番を書くんです。これってすごい良くない？と一人で盛り上がっています。昨日MindNode買ったばっかりなんですけど。</p>
]]></content:encoded>
			<wfw:commentRss>http://zudolab.net/blog/?feed=rss2&amp;p=301</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>$.widgetと継承</title>
		<link>http://zudolab.net/blog/?p=291</link>
		<comments>http://zudolab.net/blog/?p=291#comments</comments>
		<pubDate>Sat, 29 May 2010 20:37:30 +0000</pubDate>
		<dc:creator>Takazudo</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://zudolab.net/blog/?p=291</guid>
		<description><![CDATA[最近jQuery UIの$.widgetを、ページを構成するコンポーネントそれぞれを管理するClassとして使ってみた。
そんでまー$.widgetは他のwidgetを継承できるんです。
こんなかんじ。

/*
    superHoge widget comes first.
    This constructor is $.zudo.superHoge
*/
$.widget('zudo.superHoge', {
    _create: function(){
        alert('zudoSuperHoge');
    }
});

/*
    $.zudo.hoge extends $.zudo.superHoge.
    Wow how easy isn't this?
*/
$.widget('zudo.hoge', $.zudo.superHoge, {
    myMethod: function(){
 [...]]]></description>
			<content:encoded><![CDATA[<p>最近jQuery UIの$.widgetを、ページを構成するコンポーネントそれぞれを管理するClassとして使ってみた。<br />
そんでまー$.widgetは他のwidgetを継承できるんです。<br />
こんなかんじ。</p>
<p><span class="morePoint" id="more-291"></span></p>
<pre class="prettyprint">/*
    superHoge widget comes first.
    This constructor is $.zudo.superHoge
*/
$.widget('zudo.superHoge', {
    _create: function(){
        alert('zudoSuperHoge');
    }
});

/*
    $.zudo.hoge extends $.zudo.superHoge.
    Wow how easy isn't this?
*/
$.widget('zudo.hoge', $.zudo.superHoge, {
    myMethod: function(){
        alert('zudoHoge');
    }
});

var superHoge = new $.zudo.superHoge;
superHoge._create(); // zudoSuperHoge

var hoge = new $.zudo.hoge;
hoge._create(); // zudoSuperHoge
hoge.myMethod(); // zudoHoge</pre>
<p>でも、あーこれ$.zudo.hogeの中で別に_create定義したい場合、それしちゃうと$.zudo.superHogeの_createを上書きしちゃうからどーすればいいんだ。$.zudo.superHogeの_createも呼びたいんだけどーと思ってたらこんな風にしたらできたっぽい。下の例は、newでインスタンス作ったらoptions.template_containerからelementを作るってのをしている。そんで、$.zudo.hogeは、_createを上書きしていて、その中で$.zudo.superHogeの_createを呼んでる。</p>
<pre class="prettyprint">$.widget('zudo.superHoge', {
    options: {
        template_container: '&lt;ul /&gt;',
        template_child: '&lt;li /&gt;'
    },
    _create: function(){
        // if widget was created via $(dom).superHoge(),
        // don't make element from template
        if(this.element){ return this; }
        this.element = $(this.options.template_container);
        return this;
    },
    add: function(val){
        $(this.options.template_child)
            .text(val)
            .appendTo(this.element);
        return this;
    }
});

$.widget('zudo.hoge', $.zudo.superHoge, {
    options: {
        _super: $.zudo.superHoge
    },
    _create: function(){
        this.options._super.prototype._create.apply(this, arguments);
        this.element.addClass('childUl');
        return this;
    }
});

$(function(){

    /*
        create superHoge's instance.
        the element would be created in '_create'.
        the src is defined in options.
    */
    var superHogeInstance = (new $.zudo.superHoge)._create();
    superHogeInstance.element.appendTo('body');
    superHogeInstance
        .add('foo')
        .add('bar')
        .add('moge');

    /*
        create hoge's instance.
        hoge extends superHoge and
        hoge has its own '_create' method.
        This method overrides superHoge's '_create',
        so using 'apply' to call superHoge's '_create'.
    */
    var hogeInstance = (new $.zudo.hoge)._create();
    hogeInstance.element.appendTo('body');
    hogeInstance
        .add('foo')
        .add('bar')
        .add('moge');

});</pre>
<ul>
<li><a href="http://dl.dropbox.com/u/268240/zudologFiles/widgetInheritance/index.html">サンプル</a></li>
</ul>
<p>なんかcallとかapplyとかようわからなかったけど最近それがなんだかちょっと分かってきた気がする。あと、なんかうまくもうちょいできる気がする。というより$.widget使わなくて良くない？とか思ってきた。</p>
]]></content:encoded>
			<wfw:commentRss>http://zudolab.net/blog/?feed=rss2&amp;p=291</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPad買った</title>
		<link>http://zudolab.net/blog/?p=284</link>
		<comments>http://zudolab.net/blog/?p=284#comments</comments>
		<pubDate>Sat, 29 May 2010 16:07:45 +0000</pubDate>
		<dc:creator>Takazudo</dc:creator>
				<category><![CDATA[雑多]]></category>

		<guid isPermaLink="false">http://zudolab.net/blog/?p=284</guid>
		<description><![CDATA[なんか使ってみて感想。iPhoneを愛用してる人です。Apple信者ではないです。


動作が軽い。iPhone3Gだとまじで重いものとかもすいすい。
Twitterクライアントとかつけっぱで横に置いておいたりするといいかも
iBooksへぼい。へぼすぎてガッカリする。削除するレベル。
青空文庫リーダーみたいなものはよさげだけど僕は読まない。
Kindle（アプリ）でJavaScript本（洋書）を何冊か買った。でも、洋書でもラインナップは万能ではない。
膝に置くとか何かをiPadの背にしてないと手が疲れる。疲れすぎる。
ブラウザ三国志やりやすくてやばい
充電全然切れない。一日中ファミレスでいじってても切れないレベル
iElectribeおもろい。普通のElectribeもってたけど、遜色ないしむしろ操作性よくなってる風かも
産経新聞HDすごい。iPhoneの時もすごいと思いつつ全然使わなかったけど、これならでかい新聞広げるより圧倒的に見やすい気が（でも多分あんま使わない）
Mirro&#8217;s Edgeっていうゲームやった。まぁそこそこおもろい。
Kamehameha (iTunes)やるとやばい
キーボードはiPhoneより圧倒的に打ちやすいけど当然ブラインドタッチとかはできない。自分は、「サクサクいけてすごい！キーボードなんてなくていいね！」ってレベルのものじゃないと思った。
自分はノートパソコンが生活の中心なので、そこまで自分にインパクトを与えるものじゃないと思った。外付けキーボードを付ける状態でiPad使うならノートパソコンを開きますな。
iPhoneで使ってたカレンダー、ToDo、RSSリーダー等が、これで使えるとすごくいいと思う。特にRSSリーダーはこれで見たい。でもそために3Gを契約して毎月うんぜんえん払う気にはなれないなぁ。
でもメモ帳をカバンの中に入れておくといつもぐちゃぐちゃになっているので代わりにiPadを持ちあるこうかと思う。
小さいお子さんがいるお父さんお母さん向けに、これはすごいと思う。キラーデバイスだと思う。音がコロコロ鳴ったりとかそういうどうでもいいおもちゃアプリはなんだかすごい。面白い。

自分が買う前、これで何すんだってのは、具体的には、うーん、洋書とか読むか？JSとかの。ってぐらいで、それは試してみたのですが、これは非常によかったです。こういう、本を持たないのに外で本が読めると言うのは素晴らしいと思う。勉強がてらこれは続けたいと思ってます。でも、残念なのはそのラインナップの少なさ。日本語の本で、これ読みたいなーとか思うものがあったとしても、それをこれで読むのはちょっと現時点だといつになるやらって感じですね。裁断機とスキャナ買って取り込むとかは、かったるすぎて自分はやってられないと思います。
そんな感じで、自分はこれ、勉強がてら洋書読む用と、メモ帳代わり、あとはなんか面白そうなゲームでたらやるか、ごく稀にトラック作るときのサンプリングネタ用、寝起き時専用ブラウザ三国志マシンって感じでした。日本語で本屋に売ってるような本が普通にワンクリックで買えて読めたらほんと理想だと思いますねーこれで。未来的にはそれが目指すものなんでしょうけど、現時点ではそれができないので、なんか面白パッドなおもちゃって感じです自分の印象としては。あったらおもしろいけど別に無くても何も困ることは無いって感じです。ノートパソコン持ち歩いてる身としては。
あとはHTML/CSS/JavaScript書く仕事的には、おもしろくて未来が開けそうなモノではあります。多分なんかしら作ってみたりはすると思う。今までと違った画面領域でやれることも増えたりはわくわくしますなー
]]></description>
			<content:encoded><![CDATA[<p>なんか使ってみて感想。iPhoneを愛用してる人です。Apple信者ではないです。</p>
<p><span class="morePoint" id="more-284"></span></p>
<ul>
<li>動作が軽い。iPhone3Gだとまじで重いものとかもすいすい。</li>
<li>Twitterクライアントとかつけっぱで横に置いておいたりするといいかも</li>
<li>iBooksへぼい。へぼすぎてガッカリする。削除するレベル。</li>
<li>青空文庫リーダーみたいなものはよさげだけど僕は読まない。</li>
<li>Kindle（アプリ）でJavaScript本（洋書）を何冊か買った。でも、洋書でもラインナップは万能ではない。</li>
<li>膝に置くとか何かをiPadの背にしてないと手が疲れる。疲れすぎる。</li>
<li>ブラウザ三国志やりやすくてやばい</li>
<li>充電全然切れない。一日中ファミレスでいじってても切れないレベル</li>
<li>iElectribeおもろい。普通のElectribeもってたけど、遜色ないしむしろ操作性よくなってる風かも</li>
<li>産経新聞HDすごい。iPhoneの時もすごいと思いつつ全然使わなかったけど、これならでかい新聞広げるより圧倒的に見やすい気が（でも多分あんま使わない）</li>
<li><a href="http://taisyo.seesaa.net/article/145606377.html">Mirro&#8217;s Edge</a>っていうゲームやった。まぁそこそこおもろい。</li>
<li><a href="http://itunes.apple.com/app/kamehameha/id293554503?mt=8">Kamehameha (iTunes)</a>やるとやばい</li>
<li>キーボードはiPhoneより圧倒的に打ちやすいけど当然ブラインドタッチとかはできない。自分は、「サクサクいけてすごい！キーボードなんてなくていいね！」ってレベルのものじゃないと思った。</li>
<li>自分はノートパソコンが生活の中心なので、そこまで自分にインパクトを与えるものじゃないと思った。外付けキーボードを付ける状態でiPad使うならノートパソコンを開きますな。</li>
<li>iPhoneで使ってたカレンダー、ToDo、RSSリーダー等が、これで使えるとすごくいいと思う。特にRSSリーダーはこれで見たい。でもそために3Gを契約して毎月うんぜんえん払う気にはなれないなぁ。</li>
<li>でもメモ帳をカバンの中に入れておくといつもぐちゃぐちゃになっているので代わりにiPadを持ちあるこうかと思う。</li>
<li>小さいお子さんがいるお父さんお母さん向けに、これはすごいと思う。キラーデバイスだと思う。音がコロコロ鳴ったりとかそういうどうでもいいおもちゃアプリはなんだかすごい。面白い。</li>
</ul>
<p>自分が買う前、これで何すんだってのは、具体的には、うーん、洋書とか読むか？JSとかの。ってぐらいで、それは試してみたのですが、これは非常によかったです。こういう、本を持たないのに外で本が読めると言うのは素晴らしいと思う。勉強がてらこれは続けたいと思ってます。でも、残念なのはそのラインナップの少なさ。日本語の本で、これ読みたいなーとか思うものがあったとしても、それをこれで読むのはちょっと現時点だといつになるやらって感じですね。裁断機とスキャナ買って取り込むとかは、かったるすぎて自分はやってられないと思います。</p>
<p>そんな感じで、自分はこれ、勉強がてら洋書読む用と、メモ帳代わり、あとはなんか面白そうなゲームでたらやるか、ごく稀にトラック作るときのサンプリングネタ用、寝起き時専用ブラウザ三国志マシンって感じでした。日本語で本屋に売ってるような本が普通にワンクリックで買えて読めたらほんと理想だと思いますねーこれで。未来的にはそれが目指すものなんでしょうけど、現時点ではそれができないので、なんか面白パッドなおもちゃって感じです自分の印象としては。あったらおもしろいけど別に無くても何も困ることは無いって感じです。ノートパソコン持ち歩いてる身としては。</p>
<p>あとはHTML/CSS/JavaScript書く仕事的には、おもしろくて未来が開けそうなモノではあります。<br />多分なんかしら作ってみたりはすると思う。<br />今までと違った画面領域でやれることも増えたりはわくわくしますなー</p>
]]></content:encoded>
			<wfw:commentRss>http://zudolab.net/blog/?feed=rss2&amp;p=284</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>$.presentation</title>
		<link>http://zudolab.net/blog/?p=282</link>
		<comments>http://zudolab.net/blog/?p=282#comments</comments>
		<pubDate>Sun, 23 May 2010 14:52:30 +0000</pubDate>
		<dc:creator>Takazudo</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://zudolab.net/blog/?p=282</guid>
		<description><![CDATA[
プレゼンのスライドのやつ。
CSS Niteやpgcafeでプレゼンしたときに作ったのを整理しました。
webkitでアニメーションします。CSS3 Transitions です。
webkit以外でもそれなりに見えるようにしました。（IE6,7以外）



jquery-presentation (Google Code)
demo (webkitで見ると素敵)

]]></description>
			<content:encoded><![CDATA[<p>
プレゼンのスライドのやつ。<br />
CSS Niteやpgcafeでプレゼンしたときに作ったのを整理しました。<br />
webkitでアニメーションします。CSS3 Transitions です。<br />
webkit以外でもそれなりに見えるようにしました。（IE6,7以外）
</p>
<p><span class="morePoint" id="more-282"></span></p>
<ul>
<li><a href="http://code.google.com/p/jquery-presentation/">jquery-presentation (Google Code)</a></li>
<li><a href="http://dl.dropbox.com/u/268240/googleCode/jquery-presentation/index.html">demo (webkitで見ると素敵)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://zudolab.net/blog/?feed=rss2&amp;p=282</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>$.ui.msgNotifier</title>
		<link>http://zudolab.net/blog/?p=278</link>
		<comments>http://zudolab.net/blog/?p=278#comments</comments>
		<pubDate>Sat, 15 May 2010 16:34:53 +0000</pubDate>
		<dc:creator>Takazudo</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://zudolab.net/blog/?p=278</guid>
		<description><![CDATA[なんかぴょこぴょこメッセージが出るやつ作った。
jQuery UI の $.widget で作ってみた。
Google Codeにあげてみました。

jquery-ui-msg-notifier (Google Code)
demo


テストも書いてみた。

tests

jQuery UIの$.widgetがマイブーム
呼び方はjGrowlを参考にしています。
]]></description>
			<content:encoded><![CDATA[<p>なんかぴょこぴょこメッセージが出るやつ作った。<br />
jQuery UI の $.widget で作ってみた。<br />
Google Codeにあげてみました。</p>
<ul>
<li><a href="http://code.google.com/p/jquery-ui-msg-notifier/">jquery-ui-msg-notifier (Google Code)</a></li>
<li><a href="http://dl.dropbox.com/u/268240/googleCode/jquery-ui-msg-notifier/example_basic.html">demo</a></li>
</ul>
<p><span class="morePoint" id="more-278"></span></p>
<p>テストも書いてみた。</p>
<ul>
<li><a href="http://dl.dropbox.com/u/268240/googleCode/jquery-ui-msg-notifier/test/index.html">tests</a></li>
</ul>
<p>jQuery UIの$.widgetがマイブーム<br />
呼び方は<a href="http://stanlemon.net/projects/jgrowl.html">jGrowl</a>を参考にしています。</p>
]]></content:encoded>
			<wfw:commentRss>http://zudolab.net/blog/?feed=rss2&amp;p=278</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Best Practices in Javascript Library Design 2007/8/18 by John Resig のメモ</title>
		<link>http://zudolab.net/blog/?p=267</link>
		<comments>http://zudolab.net/blog/?p=267#comments</comments>
		<pubDate>Mon, 03 May 2010 09:19:30 +0000</pubDate>
		<dc:creator>Takazudo</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://zudolab.net/blog/?p=267</guid>
		<description><![CDATA[2007年のJohn Resig先生の講演を動画で見てグダグダメモったのでポスト。以下のテキストはTakazudoフィルタがかかっている可能性があるのでご注意を。

Best Practices in Javascript Library Design (YouTube)
Building a javascript library (slideshare)



jQueryはすげー短く書けることにフォーカスしてる
jQueryはプラグイン設計だ。
コアな部分は取り込み、オプショナルな機能はプラグインとして使えるようになっとる
jQueryは「何かを探してきて」「そいつになんかする」
少なくてしっかりしたAPIを作るのが重要
たくさんメソッドがある、複雑なメソッドがあるそりゃ最悪
コードなんてあっという間にめちゃくちゃになる
全オブジェクトが同じメソッド持ってるこれって超簡単
短いコードはメンテナンス性に優れてるよ
共通の、根っこの部分まで簡潔にする.eq(0), .gt(3), lt(2) は slice(0,1) .slice(1,4) より簡単
ネーミングが想像できるようにする.click か .onclick か？ .onclick&#8217; だったらonClickにするか悩むっしょ
共通のルールにのっとってAPIを設計してるよ

.method(options, arg1, arg2,.... callback);
   optionsはkey valのobject、最後がコールバック。
.method(function(){
   // here, this is always DOMElment
})
大体中身ではthisがDOMElementになるようにしてる

JSだとなんでも参照だからOOしやすい。
Functional Programming

(function(){
   // do somehting
   reutrn something;
})();
//とかカプセル化マジ便利
(function(){
   var test = false;
  [...]]]></description>
			<content:encoded><![CDATA[<p>2007年のJohn Resig先生の講演を動画で見てグダグダメモったのでポスト。<br />以下のテキストはTakazudoフィルタがかかっている可能性があるのでご注意を。</p>
<ul>
<li><a href="http://www.youtube.com/watch?v=0LKDImgRfrg">Best Practices in Javascript Library Design (YouTube)</a></li>
<li><a href="http://www.slideshare.net/jeresig/building-a-javascript-library">Building a javascript library (slideshare)</a></li>
</ul>
<p><span class="morePoint" id="more-267"></span></p>
<ul>
<li>jQueryはすげー短く書けることにフォーカスしてる</li>
<li>jQueryはプラグイン設計だ。</li>
<li>コアな部分は取り込み、<br />オプショナルな機能はプラグインとして使えるようになっとる</li>
<li>jQueryは「何かを探してきて」「そいつになんかする」</li>
<li>少なくてしっかりしたAPIを作るのが重要</li>
<li>たくさんメソッドがある、複雑なメソッドがあるそりゃ最悪</li>
<li>コードなんてあっという間にめちゃくちゃになる</li>
<li>全オブジェクトが同じメソッド持ってるこれって超簡単</li>
<li>短いコードはメンテナンス性に優れてるよ</li>
<li>共通の、根っこの部分まで簡潔にする<br />.eq(0), .gt(3), lt(2) は slice(0,1) .slice(1,4) より簡単</li>
<li>ネーミングが想像できるようにする<br />.click か .onclick か？ .onclick&#8217; だったらonClickにするか悩むっしょ</li>
<li>共通のルールにのっとってAPIを設計してるよ</li>
</ul>
<pre class="prettyprint">.method(options, arg1, arg2,.... callback);
   optionsはkey valのobject、最後がコールバック。
.method(function(){
   // here, this is always DOMElment
})
大体中身ではthisがDOMElementになるようにしてる</pre>
<ul>
<li>JSだとなんでも参照だからOOしやすい。</li>
<li>Functional Programming</li>
</ul>
<pre class="prettyprint">(function(){
   // do somehting
   reutrn something;
})();
//とかカプセル化マジ便利</pre>
<pre class="prettyprint">(function(){
   var test = false;
   this.method(function(){
      return test;
   });
}).call(this);
//とかそんな感じででthis変えられる。</pre>
<ul>
<li>ローカルスコープでインスタンスにアクセスだ</li>
<li>カプセル化やばい。漏れない。</li>
<li>Namespacingしてよい市民 (good citizen) にすんだ</li>
<li>Object.prototypeを拡張するのはまじであほ</li>
<li>例えばgetElementsByClassNameとかをObject.prototypeとかに生やすのはやめろ</li>
<li>ネイティブコード上書きするよ</li>
<li>array.forEach, .map, filterとかなんとかも。</li>
<li>ユーザーのエラーを許容する作り<br /> .css(Number) →.css(Number + &#8216;px&#8217;)</li>
<li>コンストラクタいじってみるべ</li>
</ul>
<pre class="prettyprint">function jQuery(str, con){
   if(window == this)
      return new jQuery(str,con)
}
new jQuery('#foo')
jQuery('#foo')</pre>
<ul>
<li>try{&#8230;}catch(e){} はだめ。どこでエラー起こったかとか後で見てわからなくなる。</li>
<li>拡張性を考慮</li>
<li>Extensibility</li>
</ul>
<pre class="prettyprint">Method:
   jQuery.fn.method = fn;
   $(...).method();
Selectors:
   jQuery.expr[':'].foo = "...";
   $(':foo')
</pre>
<ul>
<li>OOなコードは一つの答えだ（と同時に一つの答えでしか無い）</li>
<li>Constructor → new → object</li>
<li>JavaScript2にはClassがある。まじでcool。</li>
<li>オブジェクト同士がメッセージを受け渡し合うのは複雑になるのでカスタムイベントはいいよ。</li>
<li>Dojoはカスタムイベント使ってる。まじでcool。</li>
<li>構造化されたドキュメント書くのは重要</li>
<li>scirptDoc</li>
<li>JSDoc</li>
<li>とりあえずwikiつけるのおすすめ。</li>
<li>ドキュメントのコアをXMLとかで公開しておけば、誰でもドキュメントを見るための仕組みを作れる</li>
<li>完全に全部の引数とかにドキュメントを付けるのなんて無理。コールバック関数とかもらう場合とか、そう単純に示せないことも多い。</li>
<li>User-centric API<br /> Plugin authoring<br /> Docs on writing docs<br /> Advanced plugin authoring<br />って優先度で作ってる</li>
<li>テストが無いコードは信頼できない</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://zudolab.net/blog/?feed=rss2&amp;p=267</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jQuery UIの$.widgetがOOPしてた</title>
		<link>http://zudolab.net/blog/?p=240</link>
		<comments>http://zudolab.net/blog/?p=240#comments</comments>
		<pubDate>Sun, 02 May 2010 15:06:47 +0000</pubDate>
		<dc:creator>Takazudo</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://zudolab.net/blog/?p=240</guid>
		<description><![CDATA[jQuery UIは、こっそりOOPをやっているということに気付いた。
それを裏で支えているのが、jQuery widget UI factoryというもの。
jQuery UI ダウンロードしたら入ってる$.widgetです。
これが巧妙に、classというものを意識させずに、OOPをやってくれている。
まず、こんなのを書いた。

commentBox without $.widget

jQuery and OOP &#8211; classic

&#60;script&#62;
/**
 * CommentBox
 * @param {jQueryObject} You are my UI
 */
var CommentBox = function(element){
   this.element = element;
   this.input = element.find('input[type=text]');
   this.button = element.find('button');
   this.ul = element.find('ul');
   this.items = [];
   this.button.click($.proxy(this, 'updateHighlight'));
};
CommentBox.prototype [...]]]></description>
			<content:encoded><![CDATA[<p>jQuery UIは、こっそりOOPをやっているということに気付いた。<br />
それを裏で支えているのが、jQuery widget UI factoryというもの。<br />
jQuery UI ダウンロードしたら入ってる$.widgetです。<br />
これが巧妙に、classというものを意識させずに、OOPをやってくれている。<br />
まず、こんなのを書いた。</p>
<p><span class="morePoint" id="more-240"></span></p>
<h3>commentBox without $.widget</h3>
<ul>
<li><a href="http://dl.dropbox.com/u/268240/zudologFiles/jQueryAndOOP/index.html">jQuery and OOP &#8211; classic</a></li>
</ul>
<pre class="prettyprint">&lt;script&gt;
/**
 * CommentBox
 * @param {jQueryObject} You are my UI
 */
var CommentBox = function(element){
   this.element = element;
   this.input = element.find('input[type=text]');
   this.button = element.find('button');
   this.ul = element.find('ul');
   this.items = [];
   this.button.click($.proxy(this, 'updateHighlight'));
};
CommentBox.prototype = {
   updateHighlight: function(event){
      $.each(this.items, function(i, item){
         item.unHighlight();
      });
      var item = this.find(this.input.val());
      if(!item){ return; }
      item.highlight();
   },
   addItem: function(data){
      if(this.find(data.id)){
         return;
      };
      var item = new Comment(data);
      item.element.appendTo(this.ul);
      this.items.push(item);
   },
   addItems: function(dataArray){
      var that = this;
      $.each(dataArray, function(i,data){
         that.addItem(data);
      });
   },
   find: function(num){
      var res = null;
      $.each(this.items, function(){
         if(this.id==num){ res = this; }
      });
      return res;
   }
};

/**
 * Comment
 * @param {Object} key val data object
 */
var Comment = function(data){
   this.element = $('&lt;li /&gt;').text(
      data.id + ' | ' +
      data.content + ' | ' +
      data.author
   );
   $.extend(this,data);
};
Comment.prototype = {
   highlight: function(){
      this.element.addClass('highlight');
   },
   unHighlight: function(){
      this.element.removeClass('highlight');
   }
};

/* declare as global */
var commentBox;

$(function(){

   /* initialize first */
   commentBox = new CommentBox($('#commentBox'));

   var comments = [
      { id:100, content: 'hogehoge fugafuga', author: 'takazudo' },
      { id:101, content: 'foofoo barbar', author: 'hogezudo' },
      { id:102, content: 'moomoo mewmew', author: 'mogezudo' },
      { id:103, content: 'gogogogogogogo', author: 'fugazudo' }
   ];
   commentBox.addItems(comments);

   /* these may be done after pageload */

   $('#addSome1').click(function(){
      var comments = [
         { id:101, content: 'foofoo barbar', author: 'hogezudo' },
         { id:345, content: 'moomoo mewmew', author: 'mogezudo' },
         { id:346, content: 'gogogogogogogo', author: 'fugazudo' }
      ];
      commentBox.addItems(comments);
   });

   $('#addSome2').click(function(){
      var comments = [
         { id:777, content: 'bahbahbah', author: 'mogezudo' },
         { id:888, content: 'momomomo', author: 'fugazudo' }
      ];
      commentBox.addItems(comments);
   });

});
&lt;/script&gt;

&lt;div id=&quot;commentBox&quot;&gt;
   &lt;input type=&quot;text&quot; value=&quot;102&quot; /&gt; &lt;button&gt;highlight specified id's comment&lt;/button&gt;
   &lt;ul&gt;&lt;/ul&gt;
&lt;/div&gt;

&lt;div class=&quot;additional&quot;&gt;
   &lt;button id=&quot;addSome1&quot;&gt;hey add me&lt;/button&gt;
   &lt;button id=&quot;addSome2&quot;&gt;hey add me too!&lt;/button&gt;
&lt;/div&gt;</pre>
<p>これは、コメントの一覧を出すーみたいのをclassっぽく書いたもの。<br />
こんな書き方は、jQueryを使っていると、あんまししない。<br />
jQuery的には、$.fn.hogeでjQueryのメソッドを足し、「ほら$(fuga).hoge();したらできちゃったよ！」という書き方を守り、返されるのはjQueryオブジェクト、プラグインの使い方を知っていればだれでもすぐ使えるってのがフツーの使い方だから。みんな同じメソッドを持っていたらすげー楽じゃないか、使いやすいじゃないかというのがjQueryの基本的な考え方です。</p>
<p>でもでも、じゃあ上みたいな場合ってどうやって書けばいいのかね。CommentBoxクラスを作って、そこにデータのarrayを渡したら追加するようにしたい。別にページロードしたときに出すだけじゃなくて、後でも足される可能性があるから、CommentBoxのインスタンスをグローバルオブジェクトとして置いておいて、addItemsしたいんだよー。jQueryちゃんはjQueryオブジェクトを返してくれないと&#8221;chainが切れる&#8221;ってゴネるのかもしれないけど、別なインスタンスが欲しいときだってあるんだから！</p>
<p>こーいうふうに、準備しておいて後で必要な時に呼ぶみたいな方法を、&#8221;stateful&#8221;であると言うみたい。</p>
<p>じゃあじゃあ、なんかめんどくさいことしてるみたいだけど、$.fn.prepareCommentBox() で準備して、$.fn.addComments() で足すとかはどう？これならjQueryルールじゃない？あれ？そのインスタンスってどうするんだっけ？なんだかよくわかんなくなってきた…。気分的には$.fn.commentBox.addItemsなのか？というかもうjQueryがどうとかやめるか。この込み入った状況を解決するには、CommentBoxクラスを用意して、そのメソッドを呼ぶと言うのがスマートではありませんか？もうjQueryルールじゃないところでやるしかないんですってば。</p>
<p>上の例だと、このとき、CommentBoxクラスのインスタンス、commentBoxは、ふわふわした存在になってグローバルに浮いていることになる。これはスマートではない。スマートではないというか、まぁ普通なんですけど、もう完全にjQueryの書き方ではない。どうすればいいか。じゃあ、そのインスタンス、$().dataで持っておけばよくない？と言うことをしてくれるのが$.widget。以下が、$.widgetを使って書き変えてみた例。</p>
<h3>commentBox with $.widget</h3>
<ul>
<li><a href="http://dl.dropbox.com/u/268240/zudologFiles/jQueryAndOOP/ui.html">jQuery and OOP &#8211; $.widget</a></li>
</ul>
<pre class="prettyprint">&lt;script&gt;
$.widget('ui.commentBox',{
   /*
      _init is the constructor.
      automatically executed if $().fn.commentBox was called.
      in this scope, 'this' refers the widget instance object.
      created instance can be referred via $().data('commentBox')
   */
   _init: function(){
      this.input = this.element.find('input[type=text]');
      this.button = this.element.find('button');
      this.ul = this.element.find('ul');
      this.items = [];
      this.button.click($.proxy(this, 'updateHighlight'));
   },
   /*
      followings are all protoype methods of $.ui.commentBox
   */
   updateHighlight: function(event){
      $.each(this.items, function(i, item){
         item.unHighlight();
      });
      var item = this.find(this.input.val());
      if(!item){ return; }
      item.highlight();
   },
   addItem: function(data){
      if(this.find(data.id)){
         return;
      };
      var item = new $.ui.comment(data);
      item._init();
      item.element.appendTo(this.ul);
      this.items.push(item);
   },
   addItems: function(dataArray){
      var that = this;
      $.each(dataArray, function(i,data){
         that.addItem(data);
      });
   },
   find: function(num){
      var res = null;
      $.each(this.items, function(i, item){
         if(item.option('id')==num){ res = item; }
      });
      return res;
   }
});

$.widget('ui.comment',{
   _init: function(){
      this.element = $('&lt;li /&gt;').text(
         this.options.id + ' | ' +
         this.options.content + ' | ' +
         this.options.author
      );
   },
   highlight: function(){
      this.element.addClass('highlight');
   },
   unHighlight: function(){
      this.element.removeClass('highlight');
   }
});

$(function(){

   var box = $('#commentBox');

   /* attach widget */
   box.commentBox();

   var comments = [
      { id:100, content: 'hogehoge fugafuga', author: 'takazudo' },
      { id:101, content: 'foofoo barbar', author: 'hogezudo' },
      { id:102, content: 'moomoo mewmew', author: 'mogezudo' },
      { id:103, content: 'gogogogogogogo', author: 'fugazudo' }
   ];
   box.commentBox('addItems',comments);

   $('#addSome1').click(function(){
      var comments = [
         { id:101, content: 'foofoo barbar', author: 'hogezudo' },
         { id:345, content: 'moomoo mewmew', author: 'mogezudo' },
         { id:346, content: 'gogogogogogogo', author: 'fugazudo' }
      ];
      box.commentBox('addItems',comments);
   });

   $('#addSome2').click(function(){
      var comments = [
         { id:777, content: 'bahbahbah', author: 'mogezudo' },
         { id:888, content: 'momomomo', author: 'fugazudo' }
      ];
      box.commentBox('addItems',comments);
   });

});
&lt;/script&gt;

&lt;div id=&quot;commentBox&quot;&gt;
   &lt;input type=&quot;text&quot; value=&quot;102&quot; /&gt; &lt;button&gt;highlight specified id's comment&lt;/button&gt;
   &lt;ul&gt;&lt;/ul&gt;
&lt;/div&gt;

&lt;div class=&quot;additional&quot;&gt;
   &lt;button id=&quot;addSome1&quot;&gt;hey add me&lt;/button&gt;
   &lt;button id=&quot;addSome2&quot;&gt;hey add me too!&lt;/button&gt;
&lt;/div&gt;</pre>
<p>上で、$.widget(&#8217;ui.commentBox&#8230;内で起こっている具体的な流れは、以下のようなかんじ。</p>
<ul>
<li>コンストラクタ、$.ui.commentBoxができる。</li>
<li>こいつに、prototypeで_init、updateHighlight、addItem、addItems、findが生える。</li>
<li>$.fn.commentBoxが生える。</li>
</ul>
<p>そして…</p>
<ul>
<li>$(&#8217;#commentBox&#8217;).commentBox();をすると、<br />
var instance = new $.ui.commentBox($(&#8217;#commentBox&#8217;));<br />
instance.element = $(&#8217;#commentBox&#8217;);<br />
instance._init();<br />
$(&#8217;#commentBox&#8217;).data(&#8217;commentBox&#8217;, instance)される。</li>
<li>あとでこのインスタンスが欲しければ、以下のようにすれば参照可能。<br />
$(&#8217;#commentBox&#8217;).data(&#8217;commentBox&#8217;);</li>
<li>他に色々widget機能が足される。例えば、インスタンスのメソッドは、<br />
$(&#8217;#commentBox&#8217;).data(&#8217;commentBox&#8217;, methodName);<br />
という具合に呼べたりする。</li>
</ul>
<p>こうすると、はたからはクラスなんて使っているように見えないけど、実は使っていてそれでしたいことが実現できる。$.fn.の下でクラスが作れるっていうか、名前空間が付いているというか、そんなイメージなのですが、なんとも説明すると超絶にややこしいですね…。全てのjQuery UIの各widgetは、こんな風にできているっぽいです。たとえばダイアログは、$(hoge).dialog({ autoOpen: false }); して準備したあとに $(hoge).dialog(&#8217;open&#8217;) です。そして、$.widgetは、jQueryルールを守っています。$(hoge).dialog()としても、返ってくるのはjQueryオブジェクトだし、オプションの指定の仕方は$(hoge).dialog({key:val, key:val})推奨です。おそるべし$.widget。</p>
<p>今までOOPするためにjQueryらしからぬ書き方をしていたけど、$.widgetを使うのは一つの方法かもしんない。</p>
<h3>参考</h3>
<ul>
<li><a href="http://jqueryui.com/home">jQuery UI</a></li>
<li><a href="http://nemikor.com/presentations/jQuery-UI-Widget-Factory.pdf">jQuery widget Factory (PDF)</a></li>
<li><a href="http://d.hatena.ne.jp/cyokodog/20091221/define_plugin03">Cyokodog :: Diary &#8211; jQuery UI の プラグイン定義関数 $.widget を使ってみる</a></li>
<li><a href="http://www.erichynds.com/jquery/tips-for-developing-jquery-ui-widgets/">Tips for Developing jQuery UI 1.8 Widgets</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://zudolab.net/blog/?feed=rss2&amp;p=240</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
