<?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>kamolog &#187; ソフト開発</title>
	<atom:link href="http://www.mkamo.org/blog/category/dev/feed" rel="self" type="application/rss+xml" />
	<link>http://www.mkamo.org/blog</link>
	<description>mkamo&#039;s blog ．．．．． mkamo&#039;s memo?</description>
	<lastBuildDate>Tue, 22 Feb 2011 15:20:40 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Windows Server 2003 R2にASP.NET MVCアプリを配置</title>
		<link>http://www.mkamo.org/blog/20090930/522.html</link>
		<comments>http://www.mkamo.org/blog/20090930/522.html#comments</comments>
		<pubDate>Wed, 30 Sep 2009 12:24:43 +0000</pubDate>
		<dc:creator>mkamo</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://www.mkamo.org/blog/?p=522</guid>
		<description><![CDATA[Windows Server 2003 R2にASP.NET MVCアプリを配置したときのメモ． IIS 6.0をインストール 管理ツールの[サーバーの役割管理]などを使ってIIS 6.0をインストールする． .NET  [...]]]></description>
			<content:encoded><![CDATA[<ul>
</ul>
<p>Windows Server 2003 R2にASP.NET MVCアプリを配置したときのメモ．</p>
<p> <span id="more-522"></span>
<ol>
<li>IIS 6.0をインストール      <br />管理ツールの[サーバーの役割管理]などを使ってIIS 6.0をインストールする． </li>
<li>.NET Framework 3.5 SP1インストール      <br />確かWindows Updateからインストールできたと思う． </li>
<li>ASP.NET MVCインストール      <br /><a title="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=53289097-73ce-43bf-b6a6-35e00103cb4b" href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=53289097-73ce-43bf-b6a6-35e00103cb4b">http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=53289097-73ce-43bf-b6a6-35e00103cb4b</a>からASP.NET MVC 1.0をダウンロードしてインストール． </li>
<li>MySQLとMySQL Connector/Netインストール      <br />これはASP.NET MVCとは関係ないが，今回私が配置したアプリケーションで使ったのでメモとして書いておく．<a title="http://dev.mysql.com/downloads/" href="http://dev.mysql.com/downloads/">http://dev.mysql.com/downloads/</a>からMySQLとMySQL Connector/Netをダウンロードしてインストール．GUI管理ツールが必要であればMySQL Toolsもインストールしておく． </li>
<li>IIS 6.0設定      <br />管理ツールの[IISマネージャ]を開き，以下の設定をする．
<ul>
<li>[Webサービス拡張]を見てASP.NET v2.0.50727があり，「許可」になっているか確認する．          <br /><a href="http://www.mkamo.org/blog/wp-content/uploads/2009/10/image.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.mkamo.org/blog/wp-content/uploads/2009/10/image_thumb.png" width="499" height="256" /></a>           <br />なっていなければコマンドプロンプトで以下のコマンドを実行してASP.NET 2.0を登録．
<pre class="console">&gt; &quot;%windir%¥Microsoft.NET¥Framework¥v2.0.50727¥aspnet_regiis.exe&quot; -i</pre>
</li>
<li>[Web サイト]の[プロパティ]を開き以下の設定をする．IIS7.0 integrated modeなら不要．
<ul>
<li>[ホーム ディレクトリ]ページの[構成]ボタンを押し，[アプリケーションの構成]画面を表示する． </li>
<li>[ワイルドカード アプリケーション マップ]の[挿入]ボタンを押し，以下のように入力して[OK]ボタンを押す．<br />
            <br /><a href="http://www.mkamo.org/blog/wp-content/uploads/2009/10/image1.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.mkamo.org/blog/wp-content/uploads/2009/10/image_thumb1.png" width="502" height="119" /></a> </p>
<ul>
<li>[実行可能ファイル]を「C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll」に </li>
<li>[ファイルの存在を確認する]をチェックオフに </li>
</ul>
</li>
</ul>
</li>
<li>[Web サイト]&gt;[既定の Web サイト]の[プロパティ]を開き[ASP.NET]ページの[ASP.NET バージョン]を「2.0.50727」に設定する．<br />
        <br /><a href="http://www.mkamo.org/blog/wp-content/uploads/2009/10/image2.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.mkamo.org/blog/wp-content/uploads/2009/10/image_thumb2.png" width="550" height="456" /></a> </li>
</ul>
</li>
<li>ASP.NET MVCアプリケーションでRouteの設定を修正<br />
    <br />Global.asaxファイルを開き，RegisterRoutes()メソッドを以下のように修正する． </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:1c69b883-850d-4264-9209-8a0d9dc44eeb" class="wlWriterEditableSmartContent">
<pre name="code" class="c#:nogutter">public static void RegisterRoutes(RouteCollection routes) {
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Default",
        "{controller}/{action}/{id}",
        new { action = "Index", id = "" }
      );

    routes.MapRoute(
      "Root",
      "",
      new { controller = "Home", action = "Index", id = "" }
    );
}</pre>
</div>
</li>
<li>ASP.NET MVCアプリケーションの配置<br />
    <br />VisualStudio 2008の[ソリューション エクスプローラ]でプロジェクトを右クリックして[発行]したものを既定の Web サイトのホームディレクトリ以下にコピーすればよい．ホームディレクトリはデフォルトでは「c:\inetpub\wwwroot」． </li>
<li>Web ブラウザでこのサーバにアクセスすればASP.NET MVCアプリケーションが見られるはず． </li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.mkamo.org/blog/20090930/522.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>双方向関連の実装</title>
		<link>http://www.mkamo.org/blog/20090905/466.html</link>
		<comments>http://www.mkamo.org/blog/20090905/466.html#comments</comments>
		<pubDate>Sat, 05 Sep 2009 06:35:21 +0000</pubDate>
		<dc:creator>mkamo</dc:creator>
				<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://www.mkamo.org/blog/20090905/466.html</guid>
		<description><![CDATA[自作ライブラリから双方向関連を実装するためのユーティリティを紹介してみる． クラスFooとクラスBar間に1対1の双方向関連があるとき，Fooが参照するBarとBarが参照するFooは，以下の図のようにそれぞれお互いを参 [...]]]></description>
			<content:encoded><![CDATA[<p>自作ライブラリから双方向関連を実装するためのユーティリティを紹介してみる．</p>
<p> <span id="more-466"></span>
<p>クラスFooとクラスBar間に1対1の双方向関連があるとき，Fooが参照するBarとBarが参照するFooは，以下の図のようにそれぞれお互いを参照するような状態になっていなければならない．</p>
<p><a href="http://www.mkamo.org/blog/wp-content/uploads/2009/09/image.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://www.mkamo.org/blog/wp-content/uploads/2009/09/image_thumb.png" width="353" height="68" /></a> </p>
<p>しかしFooとBar間の関連を深く考えずに実装をしてしまうと，以下の図のような「foo1: Fooはbar1: Barを参照しているのに，bar1: Barはfoo1: Fooではなくfoo2: Fooを参照している」といった，双方向関連として整合性の取れていない状況に簡単になってしまう．</p>
<p><a href="http://www.mkamo.org/blog/wp-content/uploads/2009/09/image1.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://www.mkamo.org/blog/wp-content/uploads/2009/09/image_thumb1.png" width="353" height="118" /></a> </p>
<p>この記事では，双方向関連の整合性の取れていない状況になりづらくするためのユーティリティを紹介する．</p>
<p>ユーティリティのソースコードは以下の通り．EnsureAssociation()メソッドが双方向関連を保証する．</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:617747b1-e279-4078-a2a6-a99c7586ba40" class="wlWriterEditableSmartContent">
<pre name="code" class="c#:nogutter:nocontrols">public static class AssociationUtil {
    public enum EnsureResult {
        None, /// 何も行われず，関連は変わらなかった
        Set,  /// 関連が設定された
        Unset, /// 関連が解除された
    }

    public static EnsureResult EnsureAssociation&lt;T&gt;(
        T oldValue,
        T newValue,
        Action&lt;T&gt; fieldSetter,
        Action&lt;T&gt; inverseAssociator,
        Action&lt;T&gt; inverseUnassociator
    )
        where T: class
    {
        if (oldValue == newValue) {
            return EnsureResult.None;
        }

        if (oldValue != null) {
            fieldSetter(null);
            inverseUnassociator(oldValue);
        }

        fieldSetter(newValue);

        if (newValue != null) {
            inverseAssociator(newValue);
            return EnsureResult.Set;
        } else {
            return EnsureResult.Unset;
        }
    }
}</pre>
</div>
<p>使い方は以下のとおり．単純なプロパティのsetterの実装では _bar = value; などとするところをEnsureAssociation()メソッドを呼び出すようにしている．これでBarプロパティやFooプロパティを通して値を設定する限り，必ずFooとBar間の双方向関連の整合性が取れた状態になる．(Fooクラス内で_barの値を直接変更した場合などは整合性が崩れてしまうので，そのようなコードには注意しなければならない．) </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:adc204ee-238b-4fd7-9982-eecf93ced0da" class="wlWriterEditableSmartContent">
<pre name="code" class="c#:nogutter:nocontrols">private class Foo {
    private Bar _bar;
    public Bar Bar {
        get { return _bar; }
        set {
            AssociationUtil.EnsureAssociation(
                _bar,
                value,
                bar =&gt; _bar = bar,
                bar =&gt; bar.Foo = this,
                bar =&gt; bar.Foo = null
            );
        }
    }
}

private class Bar {
    private Foo _foo;
    public Foo Foo {
        get { return _foo; }
        set {
            AssociationUtil.EnsureAssociation(
                _foo,
                value,
                foo =&gt; _foo = foo,
                foo =&gt; foo.Bar = this,
                foo =&gt; foo.Bar = null
            );
        }
    }
}</pre>
</div>
<p>これらのクラスを使ったときの振る舞いを示すテストコードは以下のとおり．FooとBar間の双方向関連の整合性が常に取れていることがわかる． </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:84d87d83-50b3-41ea-aec9-37c3ab113ccc" class="wlWriterEditableSmartContent">
<pre name="code" class="c#:nogutter:nocontrols">[TestMethod]
public void TestEnsureAssociation() {
    var foo1 = new Foo();
    var bar1 = new Bar();
    var bar2 = new Bar();

    Assert.AreEqual(null, foo1.Bar);
    Assert.AreEqual(null, bar1.Foo);
    Assert.AreEqual(null, bar2.Foo);

    foo1.Bar = bar1;
    Assert.AreEqual(bar1, foo1.Bar);
    Assert.AreEqual(foo1, bar1.Foo);

    foo1.Bar = bar2;
    Assert.AreEqual(bar2, foo1.Bar);
    Assert.AreEqual(null, bar1.Foo);
    Assert.AreEqual(foo1, bar2.Foo);

    bar2.Foo = null;
    Assert.AreEqual(null, foo1.Bar);
    Assert.AreEqual(null, bar1.Foo);
    Assert.AreEqual(null, bar2.Foo);
}</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.mkamo.org/blog/20090905/466.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>id値に「.」が含まれている要素をCSSで選択する方法</title>
		<link>http://www.mkamo.org/blog/20090705/416.html</link>
		<comments>http://www.mkamo.org/blog/20090705/416.html#comments</comments>
		<pubDate>Sun, 05 Jul 2009 05:58:52 +0000</pubDate>
		<dc:creator>mkamo</dc:creator>
				<category><![CDATA[HTML, Javascript]]></category>

		<guid isPermaLink="false">http://www.mkamo.org/blog/20090705/416.html</guid>
		<description><![CDATA[HTML要素のid値に「.」が含まれているときに，CSSでその要素を選択する方法のメモ． CSSで次の方法を使う． IDセレクタのid値の指定で「.」を「\」でエスケープさせる 属性セレクタでidを指定する 以下，説明． [...]]]></description>
			<content:encoded><![CDATA[<p>HTML要素のid値に「.」が含まれているときに，CSSでその要素を選択する方法のメモ．</p>
<p> <span id="more-416"></span>
<p>CSSで次の方法を使う．</p>
<ol>
<li>IDセレクタのid値の指定で「.」を「\」でエスケープさせる </li>
<li>属性セレクタでidを指定する </li>
</ol>
<p>以下，説明．</p>
<p>HTML4.01では要素のid属性の値を「アルファベット([A-Za-z])で開始し、任意の数のアルファベット、数字([0-9])、ハイフン(-)、アンダースコア(_)、コロン(:)、ピリオド(.)のみ」で記述できる．なので， </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:16f8360c-46b8-4d3f-b836-6df6af3b3e47" class="wlWriterEditableSmartContent">
<pre name="code" class="xml:nogutter:nocontrols">&lt;div id="foo.bar"&gt;
hoge
&lt;/div&gt;
</pre>
</div>
<p>はHTML4.01のコードとして妥当で，「id属性の値が「foo.bar」であるdiv要素」となる．</p>
</p>
<p>しかし，CSS2.1ではHTMLで使用されるスタイルシートについては「.」はクラスセレクタと定義されている．CSSで上記のdiv要素を選択するつもりで </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:7c34beeb-c336-4df2-89b9-885abeeecf5a" class="wlWriterEditableSmartContent">
<pre name="code" class="css:nogutter:nocontrols">div#foo.bar {
	color: red;
}</pre>
</div>
<p>と指定すると，「id属性の値が「foo」で，class属性の値がスペースで区切ると「bar」と一致するものがあるdiv要素」，すなわち次のような要素の選択になってしまう． </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:1d7f180e-faae-4aee-aa92-20729bc7e19d" class="wlWriterEditableSmartContent">
<pre name="code" class="xml:nogutter:nocontrols">&lt;div id="foo" class="bar baz"&gt;
hoge
&lt;/div&gt;
</pre>
</div>
</p>
<p>CSSで特別な意味を持つ文字を含むid値を持つ要素を選択する方法は以下のとおり．</p>
<ol>
<li>IDセレクタのid値の指定で「.」を「\」でエスケープさせる<br />CSSでは特別な意味を持つ文字を「\」でエスケープできる．「\」を使って「.」をエスケープした例は以下のとおり．
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:46b6b2e6-0ca3-455e-840e-e5fb8445e0da" class="wlWriterEditableSmartContent">
<pre name="code" class="css:nogutter:nocontrols">div#foo\.bar {
	color: red;
}</pre>
</div>
</li>
<li>属性セレクタでidを指定する<br />属性セレクタでid値を指定して要素を選択する．
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:daa6b00a-885d-4eb6-b611-42277b4b3cce" class="wlWriterEditableSmartContent">
<pre name="code" class="css:nogutter:nocontrols">div[id="foo.bar"] {
	color: red;
}
</pre>
</div>
<p>属性セレクタがIDセレクタより優先順位が低いことが問題になる場合は，「!import」を使う． </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:b88d65a4-7dbd-404e-9d9c-d5a4e42f41cb" class="wlWriterEditableSmartContent">
<pre name="code" class="c#:nogutter:nocontrols">div[id="foo.bar"] {
	color: red !important;
}
</pre>
</div>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.mkamo.org/blog/20090705/416.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHPで可変長引数の関数を定義</title>
		<link>http://www.mkamo.org/blog/20090701/404.html</link>
		<comments>http://www.mkamo.org/blog/20090701/404.html#comments</comments>
		<pubDate>Wed, 01 Jul 2009 06:31:56 +0000</pubDate>
		<dc:creator>mkamo</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.mkamo.org/blog/?p=404</guid>
		<description><![CDATA[PHPで可変長引数の関数を定義する方法のメモ． PHP4以降では関数に渡された引数の情報を取得するために以下の関数を使うことができる． func_num_args() 関数に渡された引数の数を返す func_get_ar [...]]]></description>
			<content:encoded><![CDATA[<p>PHPで可変長引数の関数を定義する方法のメモ．</p>
</p>
<p> <span id="more-404"></span>
</p>
<p>PHP4以降では関数に渡された引数の情報を取得するために以下の関数を使うことができる．</p>
<ul>
<li>func_num_args()      <br />関数に渡された引数の数を返す </li>
<li>func_get_arg(int arg_num)      <br />関数に渡された引数のうちarg_num番目のものを返す．arg_numは0から数える整数 </li>
<li>func_get_args()      <br />関数に渡された引数を配列で返す </li>
</ul>
<p>可変長の引数を受け取る関数の例は以下のとおり．必須の引数$msg以外に任意の個数の引数を受け取り，$msg内の「{数字}」の箇所を置換した文字列を返す．この例ではfunc_get_args()だけを使っているが，func_num_args()とfunc_get_arg()を使っても実装できる．
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:531e0485-8e33-4fcb-8a98-e09249dbe703" class="wlWriterEditableSmartContent">
<pre name="code" class="php:nogutter:nocontrols">&lt;?php

function replaceMsg($msg) {
    /// すべての引数を取得
    $args = func_get_args();

    /// $msgを$argsから取り除く
    array_shift($args);

    $replacePairs = array();
    foreach ($args as $i =&gt; $arg) {
        $replacePairs['{'.$i.'}'] = $arg;
    }

    return strtr($msg, $replacePairs);
}

echo replaceMsg('There are {0}, {1} and {2}.', 'foo', 'bar', 'baz'); /// =&gt; There are foo, bar and baz.

?&gt;
</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.mkamo.org/blog/20090701/404.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>オープンソースのJava用CSVライブラリ</title>
		<link>http://www.mkamo.org/blog/20090514/199.html</link>
		<comments>http://www.mkamo.org/blog/20090514/199.html#comments</comments>
		<pubDate>Thu, 14 May 2009 04:16:40 +0000</pubDate>
		<dc:creator>mkamo</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.mkamo.org/blog/20090514/199.html</guid>
		<description><![CDATA[opencsvはオープンソースのJava用CSVライブラリ．quote文字で囲まれたカンマを無視したり，quote文字や区切り文字を自由に設定したり，最初の数行はスキップしたり，といろいろできる． CSVファイルを読むサ [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://opencsv.sourceforge.net/">opencsv</a>はオープンソースのJava用CSVライブラリ．quote文字で囲まれたカンマを無視したり，quote文字や区切り文字を自由に設定したり，最初の数行はスキップしたり，といろいろできる．</p>
<p> <span id="more-199"></span>CSVファイルを読むサンプルコードは以下のとおり．CSVReader#readNext()で1行読み込んで，行を区切った結果をStringの配列で返してくれる．
</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:d396cfde-0b7a-41ec-8fb5-44b1776da020" class="wlWriterEditableSmartContent">
<pre name="code" class="c#:nogutter:nocontrols">CSVReader reader = new CSVReader(new FileReader("hoge.csv"));
String[] line;
while ((line = reader.readNext()) != null) {
    System.out.println(line[0] + line[1] + "etc...");
}</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.mkamo.org/blog/20090514/199.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.NET Framework用チャートコントロール</title>
		<link>http://www.mkamo.org/blog/20090514/183.html</link>
		<comments>http://www.mkamo.org/blog/20090514/183.html#comments</comments>
		<pubDate>Wed, 13 May 2009 19:22:50 +0000</pubDate>
		<dc:creator>mkamo</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://www.mkamo.org/blog/20090514/183.html</guid>
		<description><![CDATA[.NET Framework 3.5SP1用のASP .NETとWindows Formsチャートコントロールを試してみた．いろんな形式のチャートが簡単に表示できてすごい． インストール 以下のファイルをダウンロードして [...]]]></description>
			<content:encoded><![CDATA[<p>.NET Framework 3.5SP1用のASP .NETとWindows Formsチャートコントロールを試してみた．いろんな形式のチャートが簡単に表示できてすごい．</p>
<p><span id="more-183"></span></p>
<ol>
<li>インストール<br />
以下のファイルをダウンロードしてインストールする．</p>
<ul>
<li><a title="http://www.microsoft.com/downloads/details.aspx?FamilyID=130f7986-bf49-4fe5-9ca8-910ae6ea442c&amp;DisplayLang=en" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=130f7986-bf49-4fe5-9ca8-910ae6ea442c&amp;DisplayLang=en">Microsoft Chart Controls for Microsoft .NET Framework 3.5</a><br />
チャートコントロール本体</li>
<li><a title="http://www.microsoft.com/downloads/details.aspx?displaylang=ja&amp;FamilyID=581ff4e3-749f-4454-a5e3-de4c463143bd" href="http://www.microsoft.com/downloads/details.aspx?displaylang=ja&amp;FamilyID=581ff4e3-749f-4454-a5e3-de4c463143bd">Microsoft Chart Controls for Microsoft .NET Framework 3.5 言語パック</a><br />
チャートコントロールのエラーメッセージなどを日本語化</li>
<li><a title="http://www.microsoft.com/downloads/details.aspx?familyid=1D69CE13-E1E5-4315-825C-F14D33A303E9&amp;displaylang=en" href="http://www.microsoft.com/downloads/details.aspx?familyid=1D69CE13-E1E5-4315-825C-F14D33A303E9&amp;displaylang=en">Microsoft Chart Controls Add-on for Microsoft Visual Studio 2008</a><br />
VS 2008用アドオン</li>
<li><a title="http://www.microsoft.com/downloads/details.aspx?FamilyId=EE8F6F35-B087-4324-9DBA-6DD5E844FD9F&amp;displaylang=en" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=EE8F6F35-B087-4324-9DBA-6DD5E844FD9F&amp;displaylang=en">Microsoft Chart Controls for .NET Framework Documentation</a><br />
ヘルプファイル</li>
<li><a title="http://code.msdn.microsoft.com/mschart/Release/ProjectReleases.aspx?ReleaseId=1591" href="http://code.msdn.microsoft.com/mschart/Release/ProjectReleases.aspx?ReleaseId=1591">Samples Environment for Microsoft Chart Controls</a><br />
サンプルプロジェクト</li>
</ul>
</li>
<li>チャートコントロールの追加<br />
Visual Studio 2008を起動すると[ツールボックス]にChartコントロールが登録されているのでFormに追加する．<br />
<a href="http://www.mkamo.org/blog/wp-content/uploads/2009/05/image7.png"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" title="image" src="http://www.mkamo.org/blog/wp-content/uploads/2009/05/image-thumb7.png" border="0" alt="image" width="136" height="59" /></a><br />
ChartAreasプロパティでチャートの表示領域の追加，Seriesプロパティでチャートの表示データを設定できる．<br />
<a href="http://www.mkamo.org/blog/wp-content/uploads/2009/05/image8.png"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" title="image" src="http://www.mkamo.org/blog/wp-content/uploads/2009/05/image-thumb8.png" border="0" alt="image" width="392" height="533" /></a></li>
<li>サンプルプロジェクトの実行<br />
サンプルプロジェクトをVS2008で開いて実行するか，WinFormsChartSamples.exeを直接実行するとチャートコントロールの説明用アプリケーションが起動する．かなり気合いが入ったサンプルアプリで，これをみればチャートコントロールのことがだいぶわかりそうなので，本格的に使うときは一通り見ておいた方がよさそう．<br />
<a href="http://www.mkamo.org/blog/wp-content/uploads/2009/05/image9.png"><img style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" title="image" src="http://www.mkamo.org/blog/wp-content/uploads/2009/05/image-thumb9.png" border="0" alt="image" width="640" height="480" /></a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.mkamo.org/blog/20090514/183.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>イベントをシリアル化しない記述方法</title>
		<link>http://www.mkamo.org/blog/20090508/156.html</link>
		<comments>http://www.mkamo.org/blog/20090508/156.html#comments</comments>
		<pubDate>Thu, 07 May 2009 19:50:32 +0000</pubDate>
		<dc:creator>mkamo</dc:creator>
				<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://www.mkamo.org/blog/20090508/156.html</guid>
		<description><![CDATA[イベントを持つクラスをSerialized指定したけどイベントはシリアル化したくない場合，イベントの前に[field:NonSerialized]と書けばシリアル化対象から除外できる．[NonSerialized]だと文 [...]]]></description>
			<content:encoded><![CDATA[<p>イベントを持つクラスをSerialized指定したけどイベントはシリアル化したくない場合，イベントの前に[field:NonSerialized]と書けばシリアル化対象から除外できる．[NonSerialized]だと文法エラーになってしまうので注意．</p>
</p>
<div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:4b85035a-2079-44fe-bfda-5f13c115b157" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre name="code" class="c#:nogutter:nocontrols">[field:NonSerialized]
public event EventHandler AnEvent;
</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.mkamo.org/blog/20090508/156.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse ClayプラグインでPostgreSQLのリバースエンジニアリング</title>
		<link>http://www.mkamo.org/blog/20090507/154.html</link>
		<comments>http://www.mkamo.org/blog/20090507/154.html#comments</comments>
		<pubDate>Wed, 06 May 2009 15:52:56 +0000</pubDate>
		<dc:creator>mkamo</dc:creator>
				<category><![CDATA[Eclipse]]></category>

		<guid isPermaLink="false">http://www.mkamo.org/blog/20090507/154.html</guid>
		<description><![CDATA[Eclipse Clayプラグインを使ったPostgreSQLのリバースエンジニアの手順のメモ．JDKやEclipseはすでにインストールされているものとする． Clayプラグインのインストール http://www.a [...]]]></description>
			<content:encoded><![CDATA[<p>Eclipse Clayプラグインを使ったPostgreSQLのリバースエンジニアの手順のメモ．JDKやEclipseはすでにインストールされているものとする．</p>
<p><span id="more-154"></span></p>
<ol>
<li>Clayプラグインのインストール<br />
<a title="http://www.azzurri.jp/ja/clay/" href="http://www.azzurri.jp/ja/clay/">http://www.azzurri.jp/ja/clay/</a>を参照してClayプラグインをインストールする．<a title="http://www.azzurri.jp/ja/clay/installation.html" href="http://www.azzurri.jp/ja/clay/installation.html">http://www.azzurri.jp/ja/clay/installation.html</a>に書いてあるように，アーカイブをダウンロードして展開したものをEclipseインストールフォルダにコピーするか，更新マネージャを利用してインストールできる．</li>
<li>PostgreSQL JDBCドライバのダウンロード<br />
<a title="http://jdbc.postgresql.org/download.html" href="http://jdbc.postgresql.org/download.html">http://jdbc.postgresql.org/download.html</a>から最新バージョンのJDBCドライバをダウンロードする．JDBCのバージョンはJDBC4でよい．</li>
<li>ER図(.clayファイル)の作成<br />
Eclipseのメインメニューの[File]&gt;[New]&gt;[Other...]を選んで.clayファイルを作成する．ウィザードで[Database Modeling]&gt;[Clay Database Design Diagram]を選択して[Next]ボタンを押せば.clayファイルを作成できる．<br />
<a href="http://www.mkamo.org/blog/wp-content/uploads/2009/05/image.png"><img style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" title="image" src="http://www.mkamo.org/blog/wp-content/uploads/2009/05/image-thumb.png" border="0" alt="image" width="500" height="383" /></a></li>
<li>ダイアログの表示<br />
.clayファイルを作成したときに開かれたエディタで適当なところを右クリックして[データベースのリバースエンジニア...]を選択すると[データベースをリバースエンジニア]ダイアログが表示される．<br />
<a href="http://www.mkamo.org/blog/wp-content/uploads/2009/05/image1.png"><img style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" title="image" src="http://www.mkamo.org/blog/wp-content/uploads/2009/05/image-thumb1.png" border="0" alt="image" width="457" height="348" /></a></li>
<li>接続の作成<br />
[データベースをリバースエンジニア]ダイアログで[新規追加]ボタンを選択する．[接続設定の修正]ダイアログが開くので，リバースエンジニアしたいデータベースへの接続設定を入力して[OK]ボタンを押す．ドライバの場所にはダウンロードしたJDBCドライバのjarファイルを指定する．<br />
<a href="http://www.mkamo.org/blog/wp-content/uploads/2009/05/image2.png"><img style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" title="image" src="http://www.mkamo.org/blog/wp-content/uploads/2009/05/image-thumb2.png" border="0" alt="image" width="419" height="333" /></a></li>
<li>DBへ接続<br />
作成した接続設定を選択して[Next]ボタンを押す．<br />
<a href="http://www.mkamo.org/blog/wp-content/uploads/2009/05/image3.png"><img style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" title="image" src="http://www.mkamo.org/blog/wp-content/uploads/2009/05/image-thumb3.png" border="0" alt="image" width="510" height="335" /></a></li>
<li>インポートするスキーマの選択<br />
データベースに定義されているスキーマが表示されるので，ER図にインポートしたいテーブルを含むスキーマを選択して[Next]ボタンを押す．<br />
<a href="http://www.mkamo.org/blog/wp-content/uploads/2009/05/image4.png"><img style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" title="image" src="http://www.mkamo.org/blog/wp-content/uploads/2009/05/image-thumb4.png" border="0" alt="image" width="457" height="408" /></a></li>
<li>インポートするテーブルの選択<br />
スキーマに含まれているテーブルが表示されるので，ER図にインポートしたいテーブルを選択して[Finish]ボタンを押す．<br />
<a href="http://www.mkamo.org/blog/wp-content/uploads/2009/05/image5.png"><img style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" title="image" src="http://www.mkamo.org/blog/wp-content/uploads/2009/05/image-thumb5.png" border="0" alt="image" width="492" height="406" /></a></li>
<li>リバースエンジニアの実行<br />
選択されたテーブルがER図に追加される．<a href="http://www.mkamo.org/blog/wp-content/uploads/2009/05/image6.png"><img style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" title="image" src="http://www.mkamo.org/blog/wp-content/uploads/2009/05/image-thumb6.png" border="0" alt="image" width="574" height="259" /></a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.mkamo.org/blog/20090507/154.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse PDT 2.0 + XAMPP Lite 1.7.1 + Zend Debugger</title>
		<link>http://www.mkamo.org/blog/20090403/123.html</link>
		<comments>http://www.mkamo.org/blog/20090403/123.html#comments</comments>
		<pubDate>Fri, 03 Apr 2009 00:32:33 +0000</pubDate>
		<dc:creator>mkamo</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.mkamo.org/blog/20090403/123.html</guid>
		<description><![CDATA[Eclipse PDT 2.0とXAMPP Lite 1.7.1とZend Debuggerを使ってPHPのサーバサイドデバッグ環境を構築する手順を以下に示す． XAMPP Liteの1.7.0と1.7.1とで設定ファイ [...]]]></description>
			<content:encoded><![CDATA[<p>Eclipse PDT 2.0とXAMPP Lite 1.7.1とZend Debuggerを使ってPHPのサーバサイドデバッグ環境を構築する手順を以下に示す．</p>
<p>XAMPP Liteの1.7.0と1.7.1とで設定ファイルの場所が変更されたようなので記事を1.7.1向けにアップデートした．</p>
<p><span id="more-123"></span></p>
<h3 id="toc-xampp-lite">XAMPP Liteのインストール</h3>
<ol>
<li>XAMPP Liteのダウンロード<br />
<a title="http://www.apachefriends.org/en/xampp-windows.html" href="http://www.apachefriends.org/en/xampp-windows.html">http://www.apachefriends.org/en/xampp-windows.html</a>よりXAMPP Liteをダウンロードする．ここではZIPアーカイブ版のXAMPP Liteであるxampplite-win32-x.x.x.zipをダウンロードしたものとする．</li>
<li>XAMPP Liteの展開<br />
ダウンロードしたXAMPP Liteを適当なディレクトリに展開する．ここではd:\opt\xamppliteに展開したものとする．</li>
<li>XAMPP Liteの初期設定<br />
d:\opt\xampplite\setup_xampp.batを実行する．これにより設定ファイルの内容の一部が展開されたディレクトリに書き換えられたりする．</li>
<li>各種サーバの設定<br />
必要ならば各種サーバの独自設定をする</p>
<ul>
<li> Apacheの設定はd:\opt\xampplite\apache\conf\httpd.conf</li>
<li>MySQLの設定はd:\opt\xampplite\mysql\bin\my.ini</li>
<li>PHPの設定はd:\opt\xampplite\php\php.ini</li>
</ul>
<p>自分の場合は，ApacheのDocumentRootをPHP開発用ディレクトリに変更し，MySQLのdataフォルダも開発用MySQLデータディレクトリに変更してある．</li>
</ol>
<h3 id="toc-zend-debugger-web-server-extension">Zend Debugger web server extensionのインストール</h3>
<ol>
<li>Zend Debugger web server extensionのダウンロード<br />
<a title="http://downloads.zend.com/pdt/server-debugger/" href="http://downloads.zend.com/pdt/server-debugger/">http://downloads.zend.com/pdt/server-debugger/</a>で最新版のZend Debugger web server extensionをダウンロードする．Windowsであれば，ZendDebugger-x.x.x-cygwin_nt-i386.zipをダウンロードすればよい．</li>
<li>アーカイブの展開<br />
ダウンロードしたZend Debuggerのアーカイブを適当なディレクトリに展開する．</li>
<li>dummy.phpのコピー<br />
展開してできたファイルうち，dummy.phpをXAMPP LiteのapacheのDocumentRootディレクトリ直下にコピーする．Apacheの設定を特に変更していなければd:\opt\xampplite\htdocs\がDocumentRootに設定されているので，そこにコピーすればよい．</li>
<li>ZendDebugger.dllのコピー<br />
展開したできたファイルから，XAMPP LiteのPHPのバージョンに対応したZendDebuggerをd:\opt\xampplite\php\ディレクトリにコピーする．例えばXAMPP Lite 1.7.1の場合，PHP 5.2.9なので5_2_x_comp\ZendDebugger.dllをコピーする．</li>
<li>php.iniの編集<br />
d:\opt\xampplite\php\php.iniを開き，[Zend]セクションに以下の行を加える．</p>
<pre>zend_extension_ts=d:\opt\xampplite\php\ZendDebugger.dll
zend_debugger.allow_hosts="127.0.0.1, 192.168.1.11, 192.168.1.102"
zend_debugger.expose_remotely=always</pre>
<p>zend_dubugger.allow_hostsにはこのサーバに対してEclipse PDTでデバッグ実行したいマシンのIPをカンマ区切りで記述する．</li>
</ol>
<h3 id="toc-xampp-lite1">XAMPP Liteの実行</h3>
<ol>
<li>XAMPP Control Panelの起動<br />
d:\opt\xampplite\xampp-control.exeを実行する．管理ツールであるXAMPP Control Panelが起動する．</p>
<p><a href="http://www.mkamo.org/blog/wp-content/uploads/2009/04/image1.png"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" title="image" src="http://www.mkamo.org/blog/wp-content/uploads/2009/04/image-thumb1.png" border="0" alt="image" width="450" height="304" /></a></li>
<li>ApacheとMySQLを起動<br />
XAMPP Control Panelの[Modules]の&#8221;Apache&#8221;の右の[Start]ボタンを押すとApacheが起動する．同様に&#8221;MySQL&#8221;の右の[Start]ボタンでMySQLが起動する．</li>
</ol>
<h3 id="toc-eclipse-pdt">Eclipse PDTのインストール</h3>
<ol>
<li>Eclipse PDTのダウンロード<br />
<a title="http://www.eclipse.org/pdt/downloads/" href="http://www.eclipse.org/pdt/downloads/">http://www.eclipse.org/pdt/downloads/</a>から<a title="http://www.zend.com/community/pdt?ecl=EclipseZend" href="http://www.zend.com/community/pdt?ecl=EclipseZend">PDT and Zend Debugger</a>のリンクを選び，zend.comのサイトに行く．ここでAll-in-One Eclipse PDT + Zend Debugger Packageがまとめて入ったアーカイブをダウンロードできる．</li>
<li>アーカイブの展開<br />
ダウンロードしたアーカイブを適当なディレクトリに展開する．ここではd:\opt\に展開したものとする．</li>
</ol>
<h3 id="toc-eclipse-pdt1">Eclipse PDTの実行とデバッグ</h3>
<ol>
<li>Eclipse PDTの実行<br />
d:\opt\eclipse\eclipse.exeを実行する．</li>
<li>ワークスペースの指定<br />
WorkspaceにApacheのDocumentRootで指定されているディレクトリを指定する．httpd.confを書き変えていなければd:\opt\xampplite\htdocsがDocumentRootになっている．</li>
<li>PHPプロジェクトの作成<br />
[File]&gt;[New]&gt;[PHP Project...]でPHPプロジェクトを新規作成する．ここではtestというプロジェクトを作成したものとする．</li>
<li>PHPファイルの作成<br />
[PHP Explorer]でtestプロジェクトを右クリックし，[New]&gt;[PHP File...]を選択する．ここではindex.phpというファイルを作成したものとする．内容はとりあえず以下のようにしておく．</p>
<div id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:e63bfb12-7e70-49fb-a36d-0d69f9bbd633" class="wlWriterSmartContent" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre class="php:nogutter:nocontrols">&lt;?php
    print "hoge";
?&gt;</pre>
</div>
</li>
<li>デバッグ実行<br />
まず，エディタでindex.phpのprint &#8220;hoge&#8221;;の行にブレークポイントを設定する．次に[PHP Explorer]でindex.phpを右クリックし，[Debug As]&gt;[PHP Web Page]を選択する．ブラウザが起動して，Eclipseは[PHP Debug]パースペクティブに切り替わり，print &#8220;hoge&#8221;;の行でブレークした状態になる．</p>
<p>[PHP Debug]パースペクティブでステップ実行したり変数の値を見たりできる．index.phpの実行をすべて終えるとブラウザにindex.phpの内容が表示される．</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.mkamo.org/blog/20090403/123.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>複数のチェックボックスを選択するためのチェックボックス</title>
		<link>http://www.mkamo.org/blog/20090201/98.html</link>
		<comments>http://www.mkamo.org/blog/20090201/98.html#comments</comments>
		<pubDate>Sun, 01 Feb 2009 07:33:25 +0000</pubDate>
		<dc:creator>mkamo</dc:creator>
				<category><![CDATA[HTML, Javascript]]></category>

		<guid isPermaLink="false">http://www.mkamo.org/blog/20090201/98.html</guid>
		<description><![CDATA[複数のチェックボックスのcheckedを一気に更新するHTML &#38; Javascriptのサンプル． チェックボックスのidやnameがばらばらでも大丈夫な例． &#60;script type="text/jav [...]]]></description>
			<content:encoded><![CDATA[<p>複数のチェックボックスのcheckedを一気に更新するHTML &amp; Javascriptのサンプル．</p>
<p> <span id="more-98"></span>
<p>チェックボックスのidやnameがばらばらでも大丈夫な例．</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:d7af5518-af4d-4b62-ae72-45a942853c40" class="wlWriterEditableSmartContent">
<pre name="code" class="xml:nogutter:nocontrols">&lt;script type="text/javascript"&gt;
&lt;!--
    function checkAll(checkbox, targetIds) {
        var checked = checkbox.checked;
        for (i = 0; i &lt; targetIds.length; i++) {
			var target = document.getElementById(targetIds[i]);
	        target.checked = checked;
        }
    }
//--&gt;
&lt;/script&gt;

&lt;input type="checkbox" id="allCheck" onclick='checkAll(this, new Array("foo", "bar", "baz"));' /&gt;
&lt;label for="allCheck"&gt;すべて選択&lt;/label&gt;
&lt;br /&gt;

&lt;input type="checkbox" id="foo" name="foo" value="foo" /&gt;&lt;label for="foo"&gt;foo&lt;/label&gt;&lt;br /&gt;
&lt;input type="checkbox" id="bar" name="bar" value="bar" /&gt;&lt;label for="bar"&gt;bar&lt;/label&gt;&lt;br /&gt;
&lt;input type="checkbox" id="baz" name="baz" value="baz" /&gt;&lt;label for="baz"&gt;baz&lt;/label&gt;&lt;br /&gt;</pre>
</div>
<p>チェックボックスがたくさんあって上記のやり方では面倒な場合は，複数のチェックボックスをdivでくるんでおいてその子供を一気にcheckedを更新するのもありかも．以下はその例．</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:623cdf33-279d-4904-b5df-29cfbda9e035" class="wlWriterEditableSmartContent">
<pre name="code" class="xml:nogutter:nocontrols">&lt;script type="text/javascript"&gt;
&lt;!--
    function checkAll(checkbox, targetId) {
        var checked = checkbox.checked;
        var children = document.getElementById(targetId).childNodes;
        for (i = 0; i &lt; children.length; i++) {
			if (children[i].type == "checkbox") {
	            children[i].checked = checked;
			}
        }
    }
//--&gt;
&lt;/script&gt;

&lt;input type="checkbox" id="allCheck" onclick='checkAll(this, "checkboxes");' /&gt;
&lt;label for="allCheck"&gt;すべて選択&lt;/label&gt;
&lt;br /&gt;

&lt;div id="checkboxes"&gt;
	&lt;input type="checkbox" id="foo" name="foo" value="foo" /&gt;&lt;label for="foo"&gt;foo&lt;/label&gt;&lt;br /&gt;
	&lt;input type="checkbox" id="bar" name="bar" value="bar" /&gt;&lt;label for="bar"&gt;bar&lt;/label&gt;&lt;br /&gt;
	&lt;input type="checkbox" id="baz" name="baz" value="baz" /&gt;&lt;label for="baz"&gt;baz&lt;/label&gt;&lt;br /&gt;
&lt;/div&gt;</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.mkamo.org/blog/20090201/98.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

