<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Web2.0の道具箱</title>
    <link rel="alternate" type="text/html" href="http://www.yumemaro.com/" />
    <link rel="self" type="application/atom+xml" href="http://www.yumemaro.com/atom.xml" />
   <id>tag:www.yumemaro.com,2006://1</id>
    <link rel="service.post" type="application/atom+xml" href="http://www.yumemaro.com/apps/mt-atom.cgi/weblog/blog_id=1" title="Web2.0の道具箱" />
    <updated>2006-01-09T08:17:35Z</updated>
    <subtitle>MovableType3.2、AJAX、WebサービスなどWeb2.0関連技術の情報満載！</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type  3.2-ja</generator>
 
<entry>
    <title>White Box Enterprise Linux</title>
    <link rel="alternate" type="text/html" href="http://www.yumemaro.com/2006/01/white_box_enterprise_linux.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.yumemaro.com/apps/mt-atom.cgi/weblog/blog_id=1/entry_id=47" title="White Box Enterprise Linux" />
    <id>tag:www.yumemaro.com,2006://1.47</id>
    
    <published>2006-01-09T08:03:29Z</published>
    <updated>2006-01-09T08:17:35Z</updated>
    
    <summary>RedHatが主軸を有償のエンタープライズ版にしてしまった時は少なからず残念でし...</summary>
    <author>
        <name>夢麿</name>
        
    </author>
            <category term="Linux" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.yumemaro.com/">
        <![CDATA[RedHatが主軸を有償のエンタープライズ版にしてしまった時は少なからず残念でした。

Fedoraとか純粋なオープンソースLinuxはありますが、エンタープライズ向けの無償版を出そうというプロジェクトは好感が持てますね。

<a href="http://www.whiteboxlinux.org/">White Box Enterprise Linux</a>

初めてLinuxをインストールしたのはDebianで1998年だったと思う。
ノートPCにインストールしたのですごく苦労しました。

でも、多分その年にLinuxユーザグループが（どこのか忘れましたが）Bestサポート賞をとったのに、
すごく感激したのを覚えています。

もっともっと前に行こう。
オープンソースの未来は明るい！]]>
        
    </content>
</entry>
<entry>
    <title>JavaScriptオブジェクトの継承定義</title>
    <link rel="alternate" type="text/html" href="http://www.yumemaro.com/2005/12/javascript_2.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.yumemaro.com/apps/mt-atom.cgi/weblog/blog_id=1/entry_id=46" title="JavaScriptオブジェクトの継承定義" />
    <id>tag:www.yumemaro.com,2005://1.46</id>
    
    <published>2005-12-07T06:25:50Z</published>
    <updated>2005-12-07T06:31:41Z</updated>
    
    <summary>JavaScriptはプロトタイプベースのオブジェクト指向言語と言われています。...</summary>
    <author>
        <name>夢麿</name>
        
    </author>
            <category term="Javascript" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.yumemaro.com/">
        JavaScriptはプロトタイプベースのオブジェクト指向言語と言われています。prototypeプロパティを使ってコンストラクタに新たなプロパティを追加したり、オブジェクトの継承関係を定義できます。
        <![CDATA[Fooオブジェクトのコンストラクタ関数が以下であるとします。

<pre>
function Foo(){
    // オブジェクトのプロパティ
    this.name='ふ～';
    // メソッド
    this.display=function(){
        document.getElementById('display').innerHTML=this.name;
    }
}
</pre>

Fooオブジェクトにageプロパティを追加したい場合は以下のように書きます。

<pre>
Foo.prototype.age=20;
</pre>

この後、Fooコンストラクタで生成されたオブジェクトはみなageプロパティを持つことになります。

Fooを継承したBarオブジェクトの定義は以下のようになります。

<pre>
function Bar() {
    this.country='日本';
    this.display=function(){
        document.getElementById('display').innerHTML=
　　　　　　　　this.name + "の年齢は" + this.age + 
　　　　　　　　"、国籍は" + this.country + "です";
    }
}
Bar.prototype = new Foo();
</pre>

重要な行はBar.prototype = new Foo();です。BarオブジェクトはベースのFooオブジェクトのプロパティとメソッドを継承することを指定しています。Barオブジェクトではcountryプロパティが追加されており、displayメソッドがオーバーライドされています。

Barオブジェクトを生成して表示するコードは以下です。

<pre>
var bar=new Bar();
bar.display();
</pre>

実行すると、「ふ～の年齢は20、国籍は日本です」が&lt;div id="display"&gt;&lt;/div&gt;部分に表示されます。]]>
    </content>
</entry>
<entry>
    <title>JavaScriptのコンストラクタ関数</title>
    <link rel="alternate" type="text/html" href="http://www.yumemaro.com/2005/11/javascript_1.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.yumemaro.com/apps/mt-atom.cgi/weblog/blog_id=1/entry_id=45" title="JavaScriptのコンストラクタ関数" />
    <id>tag:www.yumemaro.com,2005://1.45</id>
    
    <published>2005-11-30T06:31:25Z</published>
    <updated>2005-12-01T06:21:22Z</updated>
    
    <summary>AJAXが注目される前まで、JavaScriptはウィンドウのポップアップやFl...</summary>
    <author>
        <name>夢麿</name>
        
    </author>
            <category term="Javascript" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.yumemaro.com/">
        AJAXが注目される前まで、JavaScriptはウィンドウのポップアップやFlushの代用などWebページのアクセサリ的な道具として使われてきました。ところがどっこい、充分にオブジェクト指向言語なのです。JavaScriptで独自のオブジェクトを生成し、メソッドやプロパティを定義できます。
        <![CDATA[非常に簡単なサンプルを以下に示します。

<pre>
&lt;html&gt;
&lt;head&gt;
&lt;script type="text/javascript"&gt;
function Foo(name){
    // オブジェクトのプロパティ
    this.name=name;
    // メソッド
    this.display=function(){
        document.getElementById('name').innerHTML=this.name;
    }
}
window.onload = function () {
var foo=new Foo('ばー');
foo.display();
}
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id="name"&gt;&lt;/div&gt;
&lt;/body&gt;&lt;/html&gt;
</pre>

ここで、Foo(name)はJavaScriptでコンストラクタ関数と呼ばれるものです。thisキーワードを用いてオブジェクトのプロパティを定義しています。Javaに親しんでいる人ならピンとくるでしょうが、thisは現在のオブジェクト（インスタンス）への参照に使います。

コンストラクタが定義されれば、newによってオブジェクトはインスタンス化でき、普通にJavaScriptの変数に割り当てられます。当然ながら、プロパティにそれぞれ違う値を持つ複数のオブジェクトが生成可能です。

Fooオブジェクトが持つdisplayプロパティに注目してください。これは公開されたメソッドで、foo.display()のように呼出します。

JavaScriptオブジェクトにはconstructorプロパティがあります。サンプルではalertメソッドでconstructorの定義を出力しています。これでオブジェクトのメソッドとプロパティを確認できます。これは便利そうですね。

<img alt="constructor.JPG" src="http://www.yumemaro.com/images/constructor.JPG" width="395" height="185" />

AJAXを目指すなら、再利用できないグローバルな変数や関数を多用したプログラミングは止めて、オブジェクトを利用すべきですね。]]>
    </content>
</entry>
<entry>
    <title>Apacheの.htaccessによるベーシック認証</title>
    <link rel="alternate" type="text/html" href="http://www.yumemaro.com/2005/11/apachehtaccess_1.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.yumemaro.com/apps/mt-atom.cgi/weblog/blog_id=1/entry_id=44" title="Apacheの.htaccessによるベーシック認証" />
    <id>tag:www.yumemaro.com,2005://1.44</id>
    
    <published>2005-11-25T11:35:19Z</published>
    <updated>2005-11-25T12:10:38Z</updated>
    
    <summary>.htaccessでBasic認証を設定するには以下のようにします。 AuthT...</summary>
    <author>
        <name>夢麿</name>
        
    </author>
            <category term="Apache" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.yumemaro.com/">
        <![CDATA[.htaccessでBasic認証を設定するには以下のようにします。

<pre>
AuthType Basic
AuthUserFile /virtual/foo/public_html/himitsu/.htpasswd
&lt;Limit GET&gt;
require user bar
&lt;/Limit&gt;
</pre>
]]>
        <![CDATA[AuthUserFile には暗号化したパスワードファイル名を指定します。
&lt;Limit&gt;ディレクティブでは認証が必要なリクエストの種類を指定します。GET の他には PUT POSTなどがあります。
require には認証を許すユーザー名を指定します。

パスワードを格納する.htpasswdファイルはtelnetが利用できる環境であれば、以下のコマンドで生成できます。

<pre>
htpasswd -c .htpasswd bar
</pre>

シェルコマンドが利用できない場合は、<a href="http://www.euronet.nl/~arnow/htpasswd/">.htpasswdの生成</a>により暗号化パスワードを生成して.htpasswdファイルをローカルに作りアップロードすれば良いです。

]]>
    </content>
</entry>
<entry>
    <title>Apacheの.htaccessファイル</title>
    <link rel="alternate" type="text/html" href="http://www.yumemaro.com/2005/11/apachehtaccess.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.yumemaro.com/apps/mt-atom.cgi/weblog/blog_id=1/entry_id=43" title="Apacheの.htaccessファイル" />
    <id>tag:www.yumemaro.com,2005://1.43</id>
    
    <published>2005-11-25T11:26:21Z</published>
    <updated>2005-11-25T11:34:31Z</updated>
    
    <summary>Apacheの構成ファイルと言えばhttpd.confですが、レンタルサーバでは...</summary>
    <author>
        <name>夢麿</name>
        
    </author>
            <category term="Apache" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.yumemaro.com/">
        <![CDATA[Apacheの構成ファイルと言えばhttpd.confですが、レンタルサーバでは触ることはまずできないでしょう。.htaccessファイルをディレクトリに置けば、Basic認証などのアクセス制限ができます。

<a href="http://www.shtml.jp/htaccess/">.htaccess実践活用術</a>は親切に解説していますね。]]>
        
    </content>
</entry>
<entry>
    <title>サーバからの応答待ちに画像を表示</title>
    <link rel="alternate" type="text/html" href="http://www.yumemaro.com/2005/11/post_13.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.yumemaro.com/apps/mt-atom.cgi/weblog/blog_id=1/entry_id=42" title="サーバからの応答待ちに画像を表示" />
    <id>tag:www.yumemaro.com,2005://1.42</id>
    
    <published>2005-11-14T07:04:54Z</published>
    <updated>2005-11-14T07:08:37Z</updated>
    
    <summary>AJAX流ではページ全体のロードを行わないため、処理中であることをユーザに示す必...</summary>
    <author>
        <name>夢麿</name>
        
    </author>
            <category term="Javascript" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.yumemaro.com/">
        AJAX流ではページ全体のロードを行わないため、処理中であることをユーザに示す必要がある場合があります。例えば、GMailでは右上隅に赤い背景で「読込み中」とユーザに伝えています。イメージのスタイル属性の変更で処理中であることを示すのは簡単です。
        <![CDATA[あらかじめ用意しておいたGIFアニメを隠しておき、処理中だけ表示させる方法です。テスト用サンプルコードを以下に示します。

<pre>
&lt;html&gt;
&lt;head&gt;
&lt;script type="text/javascript" src="javascript/prototype-1.3.1.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
 function start() {
   $("running").style.visibility = "visible";
 }
 function stop() {
   $("running").style.visibility = "hidden";
 }
 window.onload = function() {
   $("running").style.visibility = "hidden";
 }
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;input type="button" value="開始"onClick="start()" /&gt;
&lt;input type="button" value="終了"onClick="stop()" /&gt;
&lt;img id="running" src="running.gif" /&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>

ここで、running.gifが進行中であることを示すGIFアニメであり、ロード時には　$("running").style.visibility = "hidden";　により隠されています。後は、処理中だけ"visible"にすれば、それなりの視覚効果が得られます。]]>
    </content>
</entry>
<entry>
    <title>prototype.js</title>
    <link rel="alternate" type="text/html" href="http://www.yumemaro.com/2005/11/prototypejs.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.yumemaro.com/apps/mt-atom.cgi/weblog/blog_id=1/entry_id=41" title="prototype.js" />
    <id>tag:www.yumemaro.com,2005://1.41</id>
    
    <published>2005-11-11T05:55:49Z</published>
    <updated>2005-11-11T06:01:46Z</updated>
    
    <summary>もし、JavaScriptのコードで$(&quot;container&quot;).removeC...</summary>
    <author>
        <name>夢麿</name>
        
    </author>
            <category term="Javascript" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.yumemaro.com/">
        もし、JavaScriptのコードで$(&quot;container&quot;).removeChild($(&quot;message&quot;));といった$()表記を見たら、prototype.jsを使っているでしょう。
        <![CDATA[prototype.jsはSam Stephensonによって書かれたJavaScriptのライブラリです。ほぼ標準のように利用されているらしい。
prototype.jsが提供する$()関数は、document.getElementById()という非常によく利用されるDOM関数の置き換えです。$F()というフィールドの値を返す関数もあります。

例えば、以下のようなHTMLがあるとします。

<pre>
&lt;html&gt;
&lt;head&gt;
&lt;script type="text/javascript" src="javascript/prototype-1.3.1.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
function test() {
 alert( $F('blood') );
}
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;select id="blood"  onchange="test()"&gt;
&lt;option value="A"&gt;A型&lt;/option&gt;
&lt;option value="B"&gt;B型&lt;/option&gt;
&lt;option value="O"&gt;O型&lt;/option&gt;
&lt;option value="AB"&gt;AB型&lt;/option&gt;
&lt;/select&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>

血液型を変更するたびにA、Bといった値をアラートで表示してくれます。簡単に書けて便利ですね。
もちろん、XMLHttpRequestをラップしたAjax.Requestクラスもあります。
詳しくは<a href="http://www.sergiopereira.com/articles/prototype.js.html">Using prototype.js v1.3.1</a>を参照して下さい。]]>
    </content>
</entry>
<entry>
    <title>JSON</title>
    <link rel="alternate" type="text/html" href="http://www.yumemaro.com/2005/11/json.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.yumemaro.com/apps/mt-atom.cgi/weblog/blog_id=1/entry_id=40" title="JSON" />
    <id>tag:www.yumemaro.com,2005://1.40</id>
    
    <published>2005-11-07T07:34:33Z</published>
    <updated>2005-11-07T07:41:45Z</updated>
    
    <summary>JSONはJavascript Object Notationの略で、軽量なデー...</summary>
    <author>
        <name>夢麿</name>
        
    </author>
            <category term="Javascript" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.yumemaro.com/">
        JSONはJavascript Object Notationの略で、軽量なデータ交換フォーマットです。データ交換標準と言えばXMLと思いがちですが、軽快に動かしたいAJAXアプリケーションではJSONは有効な選択となります。
        <![CDATA[<a href="http://json.org/">JSON</a>はJavaScript言語のサブセットに基づいた標準です。また、テキスト形式であるため、JavaScriptに限らずPHPなど様々な言語で処理できます。XMLより軽量という意味でWebでのブラウザとサーバ間のデータ交換には理想的かも知れません。

JSONのデータの例を以下に示します。実際には改行はありません。

<pre>
{"電話番号":"012-345-6789",
  "国":"日本",
  "都道府県":"千葉県",
  "郵便番号":"245-333",
 }
</pre>

これを文字列として持っている場合、JavaScriptのオブジェクトに変換するにはevalを使います。

<pre>
 var myObject = eval('(' + jsonText' + ')');
</pre>

ただし、evalはコードを実行できる強力な関数であるため、セキュリティの観点から<a href="http://www.crockford.com/JSON/js.html">Javascript JSONライブラリ</a>を利用するのが良いでしょう。

<pre>
 var myObject =  JSON.parse(jsonText);
</pre>

逆に、オブジェクトをサーバ側に送信するためには文字列に変換します。

<pre>
 var jsonPram = JSON.stringify(myObject);
</pre>

PHPでサーバ側の処理を行う場合には<a href="http://mike.teczno.com/json.html">JSON-PHPライブラリ</a>が利用できます。]]>
    </content>
</entry>
<entry>
    <title>カテゴリーアーカイブのエントリー一覧</title>
    <link rel="alternate" type="text/html" href="http://www.yumemaro.com/2005/11/post_12.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.yumemaro.com/apps/mt-atom.cgi/weblog/blog_id=1/entry_id=39" title="カテゴリーアーカイブのエントリー一覧" />
    <id>tag:www.yumemaro.com,2005://1.39</id>
    
    <published>2005-11-06T08:20:23Z</published>
    <updated>2005-11-06T08:22:03Z</updated>
    
    <summary>カテゴリーアーカイブにエントリーの一覧リストを付けます。MTEntriesタグを...</summary>
    <author>
        <name>夢麿</name>
        
    </author>
            <category term="テンプレート" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.yumemaro.com/">
        カテゴリーアーカイブにエントリーの一覧リストを付けます。MTEntriesタグを理解していれば簡単です。
        <![CDATA[カテゴリ用のテンプレートを編集し、以下の部分を追加します。

<pre>
       &lt;ul&gt;
         &lt;MTEntries sort_order="ascend" sort_by="title"&gt;
          &lt;li&gt;&lt;a href="#a&lt;$MTEntryID pad="1"$&gt;"&gt;
              &lt;b&gt;&lt;$MTEntryTitle$&gt;&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;
         &lt;/MTEntries&gt;
       &lt;/ul&gt;
</pre>

MTEntriesのsort_order="ascend"とsort_by="title"という属性指定により、エントリーをタイトルでソートして昇順に並べています。この例では、アンカータグは元々のテンプレートが付けていたアンカーIDを参照しました。記事が多くなって一覧のみを表示する場合には、パーマリンクにリンクさせると良いでしょう。]]>
    </content>
</entry>
<entry>
    <title>JavaScriptのタイマー</title>
    <link rel="alternate" type="text/html" href="http://www.yumemaro.com/2005/11/javascript.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.yumemaro.com/apps/mt-atom.cgi/weblog/blog_id=1/entry_id=38" title="JavaScriptのタイマー" />
    <id>tag:www.yumemaro.com,2005://1.38</id>
    
    <published>2005-11-06T07:20:37Z</published>
    <updated>2005-11-06T07:27:54Z</updated>
    
    <summary>サーバの応答を繰り返し反映させる方法の一つに、HTTPのMETAタグによるリフレ...</summary>
    <author>
        <name>夢麿</name>
        
    </author>
            <category term="Javascript" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.yumemaro.com/">
        サーバの応答を繰り返し反映させる方法の一つに、HTTPのMETAタグによるリフレッシュがあります。よりスマートな別の方法は、JavaScriptのタイマー機能を利用することです。
        <![CDATA[setTimeout関数はミリ秒で指定した時間だけ関数の実行を遅らせます。例えば以下のように使用します。

<pre>
 setTimeout(myfunc, 5000);
 setTimeout("alert('タイムオーバー！')", 3000);
</pre>

タイマーの設定対象は関数でも文字列でも構いません。
setTimerはタイマーオブジェクトを返しますので、clearTimer関数によりタイマーを解除できます。

<pre>
var myTimer;
   ...
   myTimer = setTimeout(expireFunc, 5000);
   ...
   clearTimeout(myTimer);
</pre>

類似の関数に、一定間隔での実行のためのsetIntervalがあります。いずれを用いても、XMLHttpRequestによるサーバ要求を行い、応答をDOM操作で画面の一部に反映させることによってスマートなデータのリフレッシュが可能となります。]]>
    </content>
</entry>
<entry>
    <title>Web2.0リンク集</title>
    <link rel="alternate" type="text/html" href="http://www.yumemaro.com/2005/11/web20_1.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.yumemaro.com/apps/mt-atom.cgi/weblog/blog_id=1/entry_id=37" title="Web2.0リンク集" />
    <id>tag:www.yumemaro.com,2005://1.37</id>
    
    <published>2005-11-04T02:57:24Z</published>
    <updated>2005-11-17T03:37:19Z</updated>
    
    <summary>Web2.0関連のリンクを集めます。...</summary>
    <author>
        <name>夢麿</name>
        
    </author>
            <category term="Web2.0一般" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.yumemaro.com/">
        Web2.0関連のリンクを集めます。
        <![CDATA[<ul>
<li><a href="http://japan.cnet.com/column/web20/story/0,2000054679,20090039,00.htm?tag=blogger.cr">Web 2.0：次世代ソフトウェアのデザインパターンとビジネスモデル（前編）</a> - CNET Japanの記事</li>
<li><a href="http://japan.cnet.com/column/web20/story/0,2000054679,20090424,00.htm">Web 2.0：次世代ソフトウェアのデザインパターンとビジネスモデル（後編）</a> - CNET Japanの記事</li>
<li><a href="http://japan.cnet.com/column/web20/story/0,2000054679,20090713,00.htm">ベンチャーキャピタリストが見たWeb 2.0カンファレンス</a> - CNET Japanの記事</li>
</ul>]]>
    </content>
</entry>
<entry>
    <title>phpMyAdminによるデータベースのバックアップとリストア</title>
    <link rel="alternate" type="text/html" href="http://www.yumemaro.com/2005/11/phpmyadmin.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.yumemaro.com/apps/mt-atom.cgi/weblog/blog_id=1/entry_id=36" title="phpMyAdminによるデータベースのバックアップとリストア" />
    <id>tag:www.yumemaro.com,2005://1.36</id>
    
    <published>2005-11-03T07:22:48Z</published>
    <updated>2005-11-03T07:44:23Z</updated>
    
    <summary>データベースの管理タスクにバックアップとリストアがあります。MySQLの管理ツー...</summary>
    <author>
        <name>夢麿</name>
        
    </author>
            <category term="MySQL" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.yumemaro.com/">
        データベースの管理タスクにバックアップとリストアがあります。MySQLの管理ツールであるphpMyAdminを使えばこの作業を楽に行えます。

        phpMyAdminからデータベースを選択してエクスポートを選びます。リストアを考慮してタイプはSQLとします。エクスポート形式はINSERTです。「ファイルとして保存」をチェックして20051103-mt.sql等のファイル名を指定します。ファイル名テンプレートは任意なのですが、それらしい名前で日付を含めておくのが良いでしょう。「実行」をクリックするとローカルPCに保存できます。

リストアの場合はデータベースのSQLタブに移り、テキストファイルの場所でエクスポートしたファイルを選択して「実行」することになります。
    </content>
</entry>
<entry>
    <title>サイトURLとサイトパスの変更</title>
    <link rel="alternate" type="text/html" href="http://www.yumemaro.com/2005/11/url.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.yumemaro.com/apps/mt-atom.cgi/weblog/blog_id=1/entry_id=35" title="サイトURLとサイトパスの変更" />
    <id>tag:www.yumemaro.com,2005://1.35</id>
    
    <published>2005-11-03T06:19:33Z</published>
    <updated>2005-11-03T07:08:59Z</updated>
    
    <summary>サイトURLをhttp://www.yumemaro.com/apps/からht...</summary>
    <author>
        <name>夢麿</name>
        
    </author>
            <category term="インストール" />
            <category term="テンプレート" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.yumemaro.com/">
        サイトURLをhttp://www.yumemaro.com/apps/からhttp://www.yumemaro.com/に変更し、index.htmlを置くサイトパスも同時に変更しました。

        <![CDATA[当然ながら、怖くてもサイトの再構築を行わなければなりません。再構築するとindex.htmlはWebのルートディレクトリに生成されましたが、エントリーの表示が消えてしまいました。久しぶりに更新したのでデフォルトの日付ルールによって表示されなくなったんですね。テンプレートを&lt;MTEntries lastn="10"&gt;とlastn属性を追加して、日付に関係なく１０個のエントリーを表示するようにしました。


]]>
    </content>
</entry>
<entry>
    <title>ECS XSLTサービスによるHTML変換</title>
    <link rel="alternate" type="text/html" href="http://www.yumemaro.com/2005/10/ecs_xslthtml.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.yumemaro.com/apps/mt-atom.cgi/weblog/blog_id=1/entry_id=34" title="ECS XSLTサービスによるHTML変換" />
    <id>tag:www.yumemaro.com,2005:/apps//1.34</id>
    
    <published>2005-10-26T05:44:16Z</published>
    <updated>2005-10-26T05:53:20Z</updated>
    
    <summary>XSLT(XSL Transformations)は任意のXML文書をHTMLな...</summary>
    <author>
        <name>夢麿</name>
        
    </author>
            <category term="Amazon" />
            <category term="XML" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.yumemaro.com/">
        XSLT(XSL Transformations)は任意のXML文書をHTMLなどに変換するための言語です。Amazon ECSのXSLTサービスを利用して、REST要求の結果をXMLでなくHTMLで表示させることもできます。
        <![CDATA[リクエストURLは以下のようになります。改行していますが、一行です。

<pre>
http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService
&SubscriptionId=XXXXXXXXXX&AssociateTag=YYYYYYYYY
&Operation=ItemSearch&Version=2005-10-05
&ResponseGroup=Small,ItemAttributes,OfferFull,Images
&Keywords=JavaScript&SearchIndex=Books&ItemPage=1
&ContentType=text/<b>html&Style=http://www.yumemaro.com/style/itemall.xsl</b>
</pre>

Styleパラメータで変換用のXSLファイルを指定しています。このファイルはアクセス可能なWebディレクトリになければなりません。XSLT用の.xslファイルは以下のようになっています。

<pre>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:aws="http://webservices.amazon.com/AWSECommerceService/2005-10-05" 
  exclude-result-prefixes="aws"&gt;
	&lt;xsl:output method="html" standalone="yes" media-type="text/html" 
         doctype-system="http://www.w3.org/TR/html4/strict.dtd "/&gt;
	&lt;xsl:template match="/"&gt;
		&lt;xsl:apply-templates/&gt;
	&lt;/xsl:template&gt;
   ・・・　略
&lt;/xsl:stylesheet&gt;
</pre>

重要なのは、リクエストにあるVersionパラメータとXSLTの名前空間（xmlns:awsの部分）が一致する(この例では2005-10-05)必要があることです。一致していないと全くXSLTが動作しません。

具体的なXSLTの内容については<a href="http://www.awszone.com/xslt/">AmazonのXSLTサンプル集</a>を参考にして下さい。]]>
    </content>
</entry>
<entry>
    <title>RESTによるAmazon ECS4の呼出し</title>
    <link rel="alternate" type="text/html" href="http://www.yumemaro.com/2005/10/restamazon_ecs4.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.yumemaro.com/apps/mt-atom.cgi/weblog/blog_id=1/entry_id=33" title="RESTによるAmazon ECS4の呼出し" />
    <id>tag:www.yumemaro.com,2005:/apps//1.33</id>
    
    <published>2005-10-25T07:34:17Z</published>
    <updated>2005-10-25T07:46:26Z</updated>
    
    <summary>RESTは通常のHTTPを利用したWebサービスです。ECSバージョン４ではリク...</summary>
    <author>
        <name>夢麿</name>
        
    </author>
            <category term="Amazon" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.yumemaro.com/">
        <![CDATA[RESTは通常のHTTPを利用したWebサービスです。ECSバージョン４ではリクエストURLは以下のようになります。改行していますが一行です。

<pre>
http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService
&SubscriptionId=<b>XXXXXXXXXXXXXX</b>&AssociateTag=<b>YYYYYYYYYY</b>
&Operation=ItemSearch&Version=2005-10-05
&ResponseGroup=Small,ItemAttributes,OfferFull,Images
&Keywords=JavaScript&SearchIndex=Books&ItemPage=1
&ContentType=text/xml
</pre>
]]>
        <![CDATA[URLへの追加パラメータXXXXXXXXXXXXXXはAmazon Webサービスへの登録IDでYYYYYYYYYYはアソシエートIDですので置き換える必要があります。他のパラメータの意味については<a href="http://www.itmedia.co.jp/enterprise/articles/0501/17/news004.html">WebサービスをAmazonで知る(ITmediaの記事）</a>等か本家のドキュメントを参照して下さい。

このURLをブラウザのアドレスバーから直接打ち込むと以下のようなXMLが返されます。(右が切れているかも知れませんが）

<pre>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;<b>ItemSearchResponse</b> xmlns="http://webservices.amazon.com/AWSECommerceService/2005-10-05"&gt;
 &lt;<b>OperationRequest</b>&gt;
   &lt;HTTPHeaders&gt;
        &lt;Header Name="UserAgent" Value="Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.10) Gecko/20050717 Firefox/1.0.6"&gt;
        &lt;/Header&gt;
   &lt;/HTTPHeaders&gt;
   &lt;RequestId&gt;0D2G8TDJD1V1MVVWPZWE&lt;/RequestId&gt;
     &lt;Arguments&gt;
      &lt;Argument Name="AssociateTag" Value="YYYYYYYY"&gt;&lt;/Argument&gt;
      &lt;Argument Name="ItemPage" Value="1"&gt;&lt;/Argument&gt;
      &lt;Argument Name="SubscriptionId" Value="XXXXXXXXXXXX"&gt;
      &lt;/Argument&gt;
      &lt;Argument Name="Keywords" Value="JavaScript"&gt;&lt;/Argument&gt;
      &lt;Argument Name="ResponseGroup" Value="Small,ItemAttributes,OfferFull,Images"&gt;&lt;/Argument&gt;
      &lt;Argument Name="Operation" Value="ItemSearch"&gt;&lt;/Argument&gt;
      &lt;Argument Name="Service" Value="AWSECommerceService"&gt;&lt;/Argument&gt;
      &lt;Argument Name="ContentType" Value="text/xml"&gt;&lt;/Argument&gt;
      &lt;Argument Name="SearchIndex" Value="Books"&gt;&lt;/Argument&gt;
      &lt;Argument Name="Version" Value="2005-10-05"&gt;&lt;/Argument&gt;
     &lt;/Arguments&gt;
     &lt;RequestProcessingTime&gt;0.275908946990967&lt;/RequestProcessingTime&gt;
 &lt;/<b>OperationRequest</b>&gt;
 &lt;<b>Items</b>&gt;
  &lt;Request&gt;&lt;IsValid&gt;True&lt;/IsValid&gt;
     &lt;ItemSearchRequest&gt;
        &lt;ItemPage&gt;1&lt;/ItemPage&gt;
        &lt;Keywords&gt;JavaScript&lt;/Keywords&gt;
        &lt;ResponseGroup&gt;OfferFull&lt;/ResponseGroup&gt;
        &lt;ResponseGroup&gt;ItemAttributes&lt;/ResponseGroup&gt;
        &lt;ResponseGroup&gt;Small&lt;/ResponseGroup&gt;
        &lt;ResponseGroup&gt;Images&lt;/ResponseGroup&gt;
        &lt;SearchIndex&gt;Books&lt;/SearchIndex&gt;
     &lt;/ItemSearchRequest&gt;
   &lt;/Request&gt;
   &lt;TotalResults&gt;132&lt;/TotalResults&gt;
   &lt;TotalPages&gt;14&lt;/TotalPages&gt;
   &lt;<b>Item</b>&gt;
    &lt;ASIN&gt;4873111692&lt;/ASIN&gt;
    &lt;DetailPageURL&gt;http://www.amazon.co.jp/exec/obidos/redirect?tag=yumemarocom-22%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.co.jp/gp/redirect.html%253fASIN=4873111692%2526tag=yumemarocom-22%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/4873111692%25253FSubscriptionId=16JZFQWZ2ZABPG6J76G2&lt;/DetailPageURL&gt;
    &lt;SmallImage&gt;
       &lt;URL&gt;http://ec1.images-amazon.com/images/P/4873111692.09._SCTHUMBZZZ_.jpg&lt;/URL&gt;
       &lt;Height Units="pixels"&gt;60&lt;/Height&gt;
       &lt;Width Units="pixels"&gt;47&lt;/Width&gt;
    &lt;/SmallImage&gt;
    &lt;MediumImage&gt;
       &lt;URL&gt;http://ec1.images-amazon.com/images/P/4873111692.09._SCMZZZZZZZ_.jpg&lt;/URL&gt;
       &lt;Height Units="pixels"&gt;140&lt;/Height&gt;
       &lt;Width Units="pixels"&gt;110&lt;/Width&gt;
    &lt;/MediumImage&gt;
    &lt;LargeImage&gt;
       &lt;URL&gt;http://ec1.images-amazon.com/images/P/4873111692.09._SCLZZZZZZZ_.jpg&lt;/URL&gt;
       &lt;Height Units="pixels"&gt;475&lt;/Height&gt;
       &lt;Width Units="pixels"&gt;373&lt;/Width&gt;
    &lt;/LargeImage&gt;
    &lt;ImageSets&gt;
       &lt;ImageSet Category="primary"&gt;
         &lt;SmallImage&gt;
          &lt;URL&gt;http://ec1.images-amazon.com/images/P/4873111692.09._SCTHUMBZZZ_.jpg&lt;/URL&gt;
          &lt;Height Units="pixels"&gt;60&lt;/Height&gt;
          &lt;Width Units="pixels"&gt;47&lt;/Width&gt;
        &lt;/SmallImage&gt;
        &lt;MediumImage&gt;
          &lt;URL&gt;http://ec1.images-amazon.com/images/P/4873111692.09._SCMZZZZZZZ_.jpg&lt;/URL&gt;
          &lt;Height Units="pixels"&gt;140&lt;/Height&gt;
          &lt;Width Units="pixels"&gt;110&lt;/Width&gt;
        &lt;/MediumImage&gt;
        &lt;LargeImage&gt;
          &lt;URL&gt;http://ec1.images-amazon.com/images/P/4873111692.09._SCLZZZZZZZ_.jpg&lt;/URL&gt;
          &lt;Height Units="pixels"&gt;475&lt;/Height&gt;
          &lt;Width Units="pixels"&gt;373&lt;/Width&gt;
         &lt;/LargeImage&gt;
       &lt;/ImageSet&gt;
     &lt;/ImageSets&gt;
     &lt;ItemAttributes&gt;
        &lt;Author&gt;ダニー グッドマン&lt;/Author&gt;
        &lt;Binding&gt;単行本&lt;/Binding&gt;
        &lt;Creator Role="著"&gt;ダニー グッドマン&lt;/Creator&gt;
        &lt;Creator Role="原著"&gt;Danny Goodman&lt;/Creator&gt;
        &lt;Creator Role="翻訳"&gt;村上 列&lt;/Creator&gt;
        &lt;ListPrice&gt;
          &lt;Amount&gt;4830&lt;/Amount&gt;
          &lt;CurrencyCode&gt;JPY&lt;/CurrencyCode&gt;
          &lt;FormattedPrice&gt;￥ 4,830&lt;/FormattedPrice&gt;
        &lt;/ListPrice&gt;
        &lt;NumberOfPages&gt;541&lt;/NumberOfPages&gt;
        &lt;PackageDimensions&gt;
           &lt;Length Units="cm"&gt;24&lt;/Length&gt;
        &lt;/PackageDimensions&gt;
        &lt;ProductGroup&gt;Book&lt;/ProductGroup&gt;
        &lt;PublicationDate&gt;2004-01&lt;/PublicationDate&gt;
        &lt;Publisher&gt;オライリージャパン&lt;/Publisher&gt;
        &lt;Title&gt;JavaScript &amp; DHTMLクックブック―Webエキスパート必携テクニック集&lt;/Title&gt;
      &lt;/ItemAttributes&gt;
      &lt;OfferSummary&gt;
       &lt;LowestNewPrice&gt;
         &lt;Amount&gt;4830&lt;/Amount&gt;&lt;CurrencyCode&gt;JPY&lt;/CurrencyCode&gt;
         &lt;FormattedPrice&gt;￥ 4,830&lt;/FormattedPrice&gt;
       &lt;/LowestNewPrice&gt;
       &lt;LowestUsedPrice&gt;
         &lt;Amount&gt;3700&lt;/Amount&gt;&lt;CurrencyCode&gt;JPY&lt;/CurrencyCode&gt;
         &lt;FormattedPrice&gt;￥ 3,700&lt;/FormattedPrice&gt;
       &lt;/LowestUsedPrice&gt;
       &lt;TotalNew&gt;1&lt;/TotalNew&gt;
       &lt;TotalUsed&gt;2&lt;/TotalUsed&gt;
       &lt;TotalCollectible&gt;0&lt;/TotalCollectible&gt;
       &lt;TotalRefurbished&gt;0&lt;/TotalRefurbished&gt;
      &lt;/OfferSummary&gt;
      &lt;Offers&gt;
        &lt;TotalOffers&gt;1&lt;/TotalOffers&gt;
        &lt;TotalOfferPages&gt;1&lt;/TotalOfferPages&gt;
        &lt;Offer&gt;
           &lt;Merchant&gt;
            &lt;MerchantId&gt;AN1VRQENFRJN5&lt;/MerchantId&gt;
            &lt;Name&gt;Amazon.co.jp&lt;/Name&gt;
           &lt;/Merchant&gt;
           &lt;OfferAttributes&gt;
             &lt;Condition&gt;New&lt;/Condition&gt;
           &lt;/OfferAttributes&gt;
           &lt;OfferListing&gt;
             &lt;OfferListingId&gt;Pak2paqY1zhtjaKxR2%2BNGhDu3O1JBZbIrPPgbCE%2FUkcprr3pjVaocvViDSH69PsDA8RQH%2FvEBsw%3D&lt;/OfferListingId&gt;
             &lt;Price&gt;
               &lt;Amount&gt;4830&lt;/Amount&gt;&lt;CurrencyCode&gt;
JPY&lt;/CurrencyCode&gt;
               &lt;FormattedPrice&gt;￥ 4,830&lt;/FormattedPrice&gt;
             &lt;/Price&gt;
             &lt;Availability&gt;通常24時間以内に発送&lt;/Availability&gt;
            &lt;/OfferListing&gt;
          &lt;/Offer&gt;
       &lt;/Offers&gt;
   &lt;/<b>Item</b>&gt;

　　・・・アイテムがあと９個並ぶ

  &lt;/<b>Items</b>&gt;
&lt;/<b>ItemSearchResponse</b>&gt;
</pre>

Amazon Webサービスでは１０個単位でアイテムを返すようになっています。]]>
    </content>
</entry>

</feed> 

