<?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>Play hard, study hard! &#187; プログラム</title>
	<atom:link href="http://blog.pakpak.jp/tag/%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%a0/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.pakpak.jp</link>
	<description></description>
	<lastBuildDate>Sat, 27 Feb 2010 04:30:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ExternalInterface</title>
		<link>http://blog.pakpak.jp/2009/09/12/external-interface-call/</link>
		<comments>http://blog.pakpak.jp/2009/09/12/external-interface-call/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 12:37:29 +0000</pubDate>
		<dc:creator>pakpak</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[プログラム]]></category>

		<guid isPermaLink="false">http://blog.pakpak.jp/?p=158</guid>
		<description><![CDATA[一つ前のエントリで取り上げたlog.asの実装のこの部分。

25
26
27
28
29
30
31
32
33
34
35
36
37
        try &#123;       
          Exte [...]]]></description>
			<content:encoded><![CDATA[<p>一つ前のエントリで取り上げたlog.asの実装のこの部分。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>25
26
27
28
29
30
31
32
33
34
35
36
37
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;">        <span style="color: #0066CC;">try</span> <span style="color: #66cc66;">&#123;</span>       
          ExternalInterface.<span style="color: #0066CC;">call</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&lt;&gt;&lt;!</span><span style="color: #66cc66;">&#91;</span>CDATA<span style="color: #66cc66;">&#91;</span>
              <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>obj, klassName<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
               obj.<span style="color: #0066CC;">toString</span> = <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span> <span style="color: #b1b100;">return</span> klassName <span style="color: #66cc66;">&#125;</span>;
               console.<span style="color: #0066CC;">log</span><span style="color: #66cc66;">&#40;</span>obj<span style="color: #66cc66;">&#41;</span>;
               ;<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>  
              <span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&gt;&lt;/&gt;</span>.<span style="color: #0066CC;">toString</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>,
              ObjectUtil.<span style="color: #006600;">clone</span><span style="color: #66cc66;">&#40;</span>arg<span style="color: #66cc66;">&#41;</span>,
              getQualifiedClassName<span style="color: #66cc66;">&#40;</span>arg<span style="color: #66cc66;">&#41;</span>
              <span style="color: #66cc66;">&#41;</span>;    
        <span style="color: #66cc66;">&#125;</span> <span style="color: #0066CC;">catch</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:<span style="color: #0066CC;">Error</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
          ExternalInterface.<span style="color: #0066CC;">call</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'console.log'</span>, r<span style="color: #66cc66;">&#41;</span>;
        <span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>ExternalInterface.callの第一引数がなんか見慣れない書式。<br />
なんかオブジェクトつくってtoStringしてる？<br />
調べてみた。</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">package <span style="color: #66cc66;">&#123;</span>
  <span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #66cc66;">*</span>;
  <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Hello <span style="color: #0066CC;">extends</span> Sprite <span style="color: #66cc66;">&#123;</span>
    <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> Hello<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">var</span> hoge:<span style="color: #0066CC;">Object</span> = <span style="color: #66cc66;">&lt;&gt;&lt;!</span><span style="color: #66cc66;">&#91;</span>CDATA<span style="color: #66cc66;">&#91;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>obj, klassName<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
         obj.<span style="color: #0066CC;">toString</span> = <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span> <span style="color: #b1b100;">return</span> klassName <span style="color: #66cc66;">&#125;</span>;
         console.<span style="color: #0066CC;">log</span><span style="color: #66cc66;">&#40;</span>obj<span style="color: #66cc66;">&#41;</span>;
         ;<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&gt;&lt;/&gt;</span>;
      <span style="color: #0066CC;">log</span><span style="color: #66cc66;">&#40;</span>hoge<span style="color: #66cc66;">&#41;</span>;
      <span style="color: #0066CC;">log</span><span style="color: #66cc66;">&#40;</span>hoge.<span style="color: #0066CC;">toString</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>; 
    <span style="color: #66cc66;">&#125;</span> 
  <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><a href="http://blog.pakpak.jp/wp-content/uploads/2009/09/d8eddf5329882d76f0b5323c6fd8e79a1.png"><img src="http://blog.pakpak.jp/wp-content/uploads/2009/09/d8eddf5329882d76f0b5323c6fd8e79a1.png" alt="ピクチャ 3" title="ピクチャ 3" width="831" height="180" class="alignleft size-full wp-image-163" /></a><br />
なるほどー。CDATAセクションのみのXMLListオブジェクトつくってtoStringしてるんですね。それにしても変わった書式。</p>
<p>というか、<a href=" http://livedocs.adobe.com/flex/2_jp/langref/flash/external/ExternalInterface.html">ExternalInterface.call</a>の第一引数、evalしたときに関数になってたら何でもokなんすね。<br />
これならjs,flashの連携が楽にできそ。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pakpak.jp/2009/09/12/external-interface-call/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javascript de svm</title>
		<link>http://blog.pakpak.jp/2009/08/23/javascript-de-svm/</link>
		<comments>http://blog.pakpak.jp/2009/08/23/javascript-de-svm/#comments</comments>
		<pubDate>Sat, 22 Aug 2009 19:09:07 +0000</pubDate>
		<dc:creator>pakpak</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[アルゴリズム]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[雑記]]></category>

		<guid isPermaLink="false">http://blog.pakpak.jp/?p=103</guid>
		<description><![CDATA[
紛失した過去記事の中で使っていたプログラムをサルベージ。
javascriptで実装したサポートベクターマシン(Support Vector Machine：SVM)のデモプログラムです。

デモ：
http://pa [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">
<p style="text-align: left;">紛失した過去記事の中で使っていたプログラムをサルベージ。<br />
javascriptで実装したサポートベクターマシン(Support Vector Machine：SVM)のデモプログラムです。</p>
<p style="text-align: left;"><a href="http://pakpak.jp/work/svm_javascript/"><img class="alignright size-full wp-image-104" title="ピクチャ 1" src="http://blog.pakpak.jp/wp-content/uploads/2009/08/427feeba2c3a5b495c286f27ae1fdcc3.png" alt="ピクチャ 1" width="313" height="336" /></a></p>
<p><strong>デモ：</strong></p>
<p style="text-align: left;"><a href="http://pakpak.jp/work/svm_javascript/">http://pakpak.jp/work/svm_javascript/</a></p>
<p style="text-align: left;">平面にプロットされた二種類の点（赤、青）を学習データとし、それら二種類の入力を識別する関数を求め、分離超平面（カーネルトリックってのを使ってるから曲面になる）を可視化しています。</p>
<p style="text-align: left;">正方形のマップ上で左クリックすると点がプロットされます。プロットする点の色は下の「change color」から変更します。「execute svm」をクリックするとそれまでの入力を学習し、識別関数を求めて分離超平面を可視化します。その下にある「parameter」と「kernel」は分離超平面の求め方を制御するためのものです。</p>
<p style="text-align: left;">canvas？何それ？状態な時期につくったもので、マップ表示は全部ただのdivタグですw あと、firefoxでしか動作確認していません。また、条件によって非常に計算量が多くなり、ブラウザが落ちちゃう可能性もありますので、その辺ご理解の上ご覧下さいm(_ _)m</p>
<p style="text-align: left;"><strong>SVM？何それ？</strong></p>
<p style="text-align: left;">って方に。<br />
<a href=" http://www.neuro.sfc.keio.ac.jp/~masato/study/SVM/index.htm">http://www.neuro.sfc.keio.ac.jp/~masato/study/SVM/index.htm</a><br />
もすこしちゃんと勉強したい方はこちらが参考になるかと思います。<a href=" http://www.ism.ac.jp/~fukumizu/ISM_lecture_2006/"><br />
http://www.ism.ac.jp/~fukumizu/ISM_lecture_2006/</a><a href=" http://arx.ee.utsunomiya-u.ac.jp/research/svm/index.html"></p>
<p>http://arx.ee.utsunomiya-u.ac.jp/research/svm/index.html</a></p>
<p><a href="http://ibisforest.org/index.php?SVM">http://ibisforest.org/index.php?SVM</a></p>
<p style="text-align: left;"><strong>自分の理解</strong></p>
<p style="text-align: left;">理論的なところをちゃんと理解した訳じゃないんですが、二種類のグループの間の距離（マージン）を最大化することで分離超平面を求めるという手法（線形SVM）のようです。でも平面だと曲面じゃないと分離できないようなケースに対応できないので、高次元の特徴空間に写像しておいて、そこで二つのグループを分離する超平面をもとめるという手法（非線形SVM）が用いられます。しかし、写像先での分離超平面を求める際に、その空間でのベクトル演算が必要になるのですが、高次元ベクトル演算の計算量は次元数に対して指数的に増大（たぶん）していくのでなるたけ避けたい。そのため、カーネルトリックとよばれる数学的手法が用いられる。これは、写像前のデータによる演算（実際必要なのは内積）をあたかも写像先で行ったかのように扱うことが出来る関数（カーネル関数）を用いる手法だそうです。（なんでそんなことが可能なのか私にはよくわかりません。。）特定の条件を満たす関数であればカーネル関数としてあつかっていいそうで、デモの「kernel」という項目ではそのカーネル関数のうちいくつかを選択することが出来るようになっているという訳です。</p>
<p>と、いつの間にかこんな時間だ。。おやすみなさいzzz</p>
<p style="text-align: left;">
]]></content:encoded>
			<wfw:commentRss>http://blog.pakpak.jp/2009/08/23/javascript-de-svm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pakpakの本棚。</title>
		<link>http://blog.pakpak.jp/2009/08/20/pakpak%e3%81%ae%e6%9c%ac%e6%a3%9a%e3%80%82/</link>
		<comments>http://blog.pakpak.jp/2009/08/20/pakpak%e3%81%ae%e6%9c%ac%e6%a3%9a%e3%80%82/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 14:38:50 +0000</pubDate>
		<dc:creator>pakpak</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[雑記]]></category>

		<guid isPermaLink="false">http://blog.pakpak.jp/?p=78</guid>
		<description><![CDATA[本棚.org的なページが欲しかったので、つくってみた。
http://blog.pakpak.jp/hondana/
wordpressのエントリのうち書評タグがついているものをDBから取得して、エントリ本文をサーバサイ [...]]]></description>
			<content:encoded><![CDATA[<p>本棚.org的なページが欲しかったので、つくってみた。<br />
<a href="http://blog.pakpak.jp/hondana/">http://blog.pakpak.jp/hondana/</a></p>
<p>wordpressのエントリのうち書評タグがついているものをDBから取得して、エントリ本文をサーバサイドでパースして本棚風に加工して表示しようと考えたけどwordpressのphpにうんざりしたのでやめた。<br />
かわりに書評タグがついたfeedをxhrで取得してjavascriptでXMLパースすることに。<br />
なんやかんやで一時間ぐらいはかかりますね。。<br />
cssは徐々にかっちょよくしていく予定（未定）</p>
<p>あ、サイドバーに表示するウィジェットもついでにつくろーっと。<del datetime="2009-08-21T12:55:02+00:00"><br />
うーん、、safariでうまくうごかないorz。ちなみにmac/ff3でしか動作確認してません。。</del></p>
<p>safariのDMParserでgetElemetsByTagNameでcontent:encodedタグが取得できていなかったようです。なんでだろ。。<br />
とりあえず、WebKitのみdom全体をtextContentで取得して正規表現にかけることで対処しました。<br />
こんな感じ。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>54
55
56
57
58
59
60
61
62
63
64
65
66
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">      <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>key <span style="color: #339933;">===</span> <span style="color: #3366CC;">'content:encoded'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> value<span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>Prototype.<span style="color: #660066;">Browser</span>.<span style="color: #660066;">WebKit</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
          value <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">item</span>.<span style="color: #660066;">textContent</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span><span style="color: #000066; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
          value <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">item</span>.<span style="color: #660066;">getElementsByTagName</span><span style="color: #009900;">&#40;</span>key<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">textContent</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #003366; font-weight: bold;">var</span> result <span style="color: #339933;">=</span> value.<span style="color: #660066;">match</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/&quot;(http:\/\/ecx\.images-amazon\.com\/.+\.jpg)&quot;/</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        node<span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'image'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> result<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span><span style="color: #000066; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> value <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">item</span>.<span style="color: #660066;">getElementsByTagName</span><span style="color: #009900;">&#40;</span>key<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">textContent</span><span style="color: #339933;">;</span>
        node<span style="color: #009900;">&#91;</span>key<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> value<span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.pakpak.jp/2009/08/20/pakpak%e3%81%ae%e6%9c%ac%e6%a3%9a%e3%80%82/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>taskpaper.vim</title>
		<link>http://blog.pakpak.jp/2009/05/27/taskpapervim/</link>
		<comments>http://blog.pakpak.jp/2009/05/27/taskpapervim/#comments</comments>
		<pubDate>Wed, 27 May 2009 13:05:03 +0000</pubDate>
		<dc:creator>pakpak</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[VIM]]></category>
		<category><![CDATA[プログラム]]></category>

		<guid isPermaLink="false">http://blog.pakpak.jp/?p=43</guid>
		<description><![CDATA[最近vimをGTDツールとして使っていたのですが、
syntaxハイライトしてほしいなとおもって探したらこんなのありました。
http://www.vim.org/scripts/script.php?script_id [...]]]></description>
			<content:encoded><![CDATA[<p>最近vimをGTDツールとして使っていたのですが、<br />
syntaxハイライトしてほしいなとおもって探したらこんなのありました。<br />
<a href="http://www.vim.org/scripts/script.php?script_id=2027">http://www.vim.org/scripts/script.php?script_id=2027</a></p>
<p>メールで日報を送ったときに終了したタスクがわかりやすいようにフォーマットを修正。<br />
syntax/taskpaper.vim</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="vim" style="font-family:monospace;">syn <span style="color: #25BB4D;">match</span>  taskpaperDone <span style="color: #C5A22D;">&quot;^&amp;gt;.*$&quot;</span></pre></td></tr></table></div>

<p>タスクが終わったらtd！<br />
.vimrc</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="vim" style="font-family:monospace;"><span style="color: #668080;">autocmd</span> FileType taskpaper  <span style="color: #000000;">:</span>nmap td <span style="color: #000000;">:</span>s<span style="color: #000000;">/^/&amp;</span>gt; <span style="color: #000000;">/:</span>nohlsearch
<span style="color: #668080;">autocmd</span> FileType taskpaper  <span style="color: #000000;">:</span>vmap td <span style="color: #000000;">:</span>s<span style="color: #000000;">/^/&amp;</span>gt; <span style="color: #000000;">/:</span>nohlsearch</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.pakpak.jp/2009/05/27/taskpapervim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSDeferred</title>
		<link>http://blog.pakpak.jp/2009/05/08/jsdeferred/</link>
		<comments>http://blog.pakpak.jp/2009/05/08/jsdeferred/#comments</comments>
		<pubDate>Fri, 08 May 2009 02:13:01 +0000</pubDate>
		<dc:creator>pakpak</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[プログラム]]></category>

		<guid isPermaLink="false">http://blog.pakpak.jp/?p=22</guid>
		<description><![CDATA[JSDeferredとは？
JSDeferredはcho45さんがモチキのDeferred機構に影響されて作ったらしいJavascript用の非同期処理ライブラリで、煩雑になりがちな複数の非同期処理間の協調動作を、簡単か [...]]]></description>
			<content:encoded><![CDATA[<h4><a href="http://coderepos.org/share/wiki/JSDeferred">JSDeferred</a>とは？</h4>
<blockquote><p>JSDeferredはcho45さんがモチキのDeferred機構に影響されて作ったらしいJavascript用の非同期処理ライブラリで、煩雑になりがちな複数の非同期処理間の協調動作を、簡単かつ柔軟に記述できるステキングなライブラリ<br />
引用：<a href="http://unsigned.g.hatena.ne.jp/Trapezoid/20080425/1209054401">http://unsigned.g.hatena.ne.jp/Trapezoid/20080425/1209054401</a></p></blockquote>
<p>desu。</p>
<h4>非同期処理</h4>
<p>そもそも非同期処理とはどのようなものかといいますと、XHRリクエストがそのひとつです。<br />
この例では、1,2,3の順に処理が実行されます。なれればなんてことないですが、処理順序が逆転していることがわかります。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;1&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> myAjax <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Ajax.<span style="color: #660066;">Request</span><span style="color: #009900;">&#40;</span>url<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
				method<span style="color: #339933;">:</span> <span style="color: #3366CC;">'get'</span><span style="color: #339933;">,</span>
				onComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>res<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;3&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;2&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>もうすこし複雑な例。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">new</span> Ajax.<span style="color: #660066;">Request</span><span style="color: #009900;">&#40;</span>url<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
  method<span style="color: #339933;">:</span> <span style="color: #3366CC;">'get'</span><span style="color: #339933;">,</span>
  onComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>res<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span>res<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">new</span> Ajax.<span style="color: #660066;">Request</span><span style="color: #009900;">&#40;</span>url2<span style="color: #339933;">,</span><span style="color: #009900;">&#123;</span>
      method<span style="color: #339933;">:</span> <span style="color: #3366CC;">'get'</span><span style="color: #339933;">,</span>
      onComplete<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>res2<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span>res2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>うーん、もう処理順序がぐちゃぐちゃで処理を追いづらいですね。。</p>
<h4>JSDeferredをつかうと。</h4>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">ajax_request<span style="color: #009900;">&#40;</span>url<span style="color: #009900;">&#41;</span>.
<span style="color: #660066;">next</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>res<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
 console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span>res<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ajax_request</span><span style="color: #009900;">&#40;</span>url2<span style="color: #009900;">&#41;</span>.
<span style="color: #660066;">next</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>res2<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
 console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span>res2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
vaf ajax_request <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>url<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> d<span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">new</span> Deferred<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">new</span> Ajax.<span style="color: #660066;">Request</span><span style="color: #009900;">&#40;</span>url<span style="color: #339933;">,</span><span style="color: #009900;">&#123;</span>
      method<span style="color: #339933;">:</span> <span style="color: #3366CC;">'get'</span><span style="color: #339933;">,</span>
      onComplete<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>res<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        d.<span style="color: #660066;">call</span><span style="color: #009900;">&#40;</span>res<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">return</span> d<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
Deferred.<span style="color: #660066;">register</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'ajax_request'</span><span style="color: #339933;">,</span>ajax_request<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>だいたいこんな感じに書けます。(直接ここに書いたので間違ってるかもしれません^^;）<br />
ちゃんと上から順に実行されていくので、処理の流れを理解しやすいですね！</p>
<h4>しくみ</h4>
<p>ソースよんでくらはいｗ<br />
短いですが、javascriptのエッセンスがつまっていてとても勉強になると思います。</p>
<p><strong>参考：</strong></p>
<p>http://d.hatena.ne.jp/amachang/20060910/1157911122</p>
<p>http://labs.gmo.jp/blog/ku/2007/09/firefoxsettimeout.html</p>
<p>http://ido.nu/kuma/2007/11/29/coding-synchronized-asynchronous-processing-intuitively-with-mochikit-async-deferred/</p>
<p>http://d.hatena.ne.jp/amachang/20080303/1204544340</p>
<p>http://d.hatena.ne.jp/amachang/20061129/1164799871</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pakpak.jp/2009/05/08/jsdeferred/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
