<?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; C#</title>
	<atom:link href="http://www.mkamo.org/blog/category/dev/c/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, 13 Jul 2010 12:07:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>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をインストー [...]]]></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>.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>log4netの導入</title>
		<link>http://www.mkamo.org/blog/20080418/30.html</link>
		<comments>http://www.mkamo.org/blog/20080418/30.html#comments</comments>
		<pubDate>Fri, 18 Apr 2008 05:33:21 +0000</pubDate>
		<dc:creator>mkamo</dc:creator>
				<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://www.mkamo.org/blog/20080418/30.html</guid>
		<description><![CDATA[log4netを使ってとりあえずログ出力をする方法は以下のとおり．



参照の設定

[ソリューションエクスプローラ]で[参照設定]を右クリックして[参照を追加]を選択する
[参照]タブでlog4net.dllを選択す [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://logging.apache.org/log4net/">log4net</a>を使ってとりあえずログ出力をする方法は以下のとおり．</p>
</p>
<p><span id="more-30"></span></p>
<ol>
<li>参照の設定
<ol>
<li>[ソリューションエクスプローラ]で[参照設定]を右クリックして[参照を追加]を選択する
<li>[参照]タブでlog4net.dllを選択する </li>
</ol>
<li>AssemblyInfo.csの編集
<ol>
<li>AssemblyInfo.csに以下の一行を追加する<br />&nbsp;
<div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:6ddf685a-fff8-4942-8971-77cd9714748d" 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">[assembly: log4net.Config.XmlConfigurator(Watch=true)]  </pre>
</div>
</li>
</ol>
<li>構成ファイルの追加
<ol>
<li>[ソリューション エクスプローラ]でプロジェクトを右クリックして[追加]&gt;[新しい項目]を選択する
<li>[アプリケーション構成ファイル]を選択し，&#8221;app.config&#8221;ファイルを作成する
<li>[ソリューション エクスプローラ]で作成したファイルを右クリックして[プロパティ]を選択する
<li>[プロパティ]の[詳細]&gt;[出力ディレクトリにコピー]を&#8221;新しい場合はコピーする&#8221;に設定する
<li>作成したファイルを以下のように編集する 
<div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:cad61c3a-4408-4b18-800e-9c702ee6f378" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre name="code" class="xml:nogutter:nocontrols">&lt;?xml version="1.0" encoding="utf-8" ?&gt;
&lt;configuration&gt;
  &lt;configSections&gt;
    &lt;section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /&gt;
  &lt;/configSections&gt;
  &lt;log4net&gt;
    &lt;appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"&gt;
      &lt;layout type="log4net.Layout.PatternLayout"&gt;
        &lt;param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" /&gt;
      &lt;/layout&gt;
    &lt;/appender&gt;
    &lt;root&gt;
      &lt;level value="ALL" /&gt;
      &lt;appender-ref ref="ConsoleAppender" /&gt;
    &lt;/root&gt;
  &lt;/log4net&gt;
&lt;/configuration&gt;
</pre>
</div>
</li>
</ol>
<li>ロギングコードの追加
<ol>
<li>loggerの取得のためのコードは以下のとおり．ログ出力をするクラスのstaticフィールドとして宣言しておく．GetLogger()のパラメタはtypeof(型名)と同じ結果になるが，どの型が対象でも同じコードになるようにリフレクションを使う．また，usingを追加しなくてよいようにクラスはFQNで指定する 
<div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:15c3e59f-5c7c-4fe5-aeb1-5943de5e7f89" 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">private static readonly log4net.ILog LOGGER =
    log4net.LogManager.GetLogger(
        System.Reflection.MethodBase.GetCurrentMethod().DeclaringType
    );
</pre>
</div>
<li>ログ出力のためのコードは以下のとおり
<div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:a3bbe662-f25b-4a51-bdff-3baaf8dfd256" 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">LOGGER.Fatal("fatal message");
LOGGER.Error("error message");
LOGGER.Warn("warn message");
LOGGER.Info("info message");
LOGGER.Debug("debug message");
</pre>
</div>
</li>
</ol>
<li>デバッグ実行すると[出力]ウィンドウに以下のようなログが出力される
<pre class="console">2008-04-18 14:50:01,656 [10] FATAL WindowsFormsApplication1.Form1 [(null)] - fatal message
2008-04-18 14:50:01,656 [10] ERROR WindowsFormsApplication1.Form1 [(null)] - error message
2008-04-18 14:50:01,656 [10] WARN  WindowsFormsApplication1.Form1 [(null)] - warn message
2008-04-18 14:50:01,656 [10] INFO  WindowsFormsApplication1.Form1 [(null)] - info message
2008-04-18 14:50:01,656 [10] DEBUG WindowsFormsApplication1.Form1 [(null)] - debug message</pre>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.mkamo.org/blog/20080418/30.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>丸め処理と割り算</title>
		<link>http://www.mkamo.org/blog/20080413/12.html</link>
		<comments>http://www.mkamo.org/blog/20080413/12.html#comments</comments>
		<pubDate>Sun, 13 Apr 2008 12:59:04 +0000</pubDate>
		<dc:creator>mkamo</dc:creator>
				<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://www.mkamo.org/blog/?p=12</guid>
		<description><![CDATA[丸め処理と割り算について，ちょくちょく忘れるのでまとめておく．
 浮動小数点数から整数への丸め処理は以下のとおり．




処理
結果


intでキャスト
0方向の最も近い整数を返す


Math.Trancate(d [...]]]></description>
			<content:encoded><![CDATA[<p>丸め処理と割り算について，ちょくちょく忘れるのでまとめておく．</p>
<p> <span id="more-12"></span>浮動小数点数から整数への丸め処理は以下のとおり．
</p>
<table border="0" cellspacing="0" cellpadding="2" width="519">
<tbody>
<tr>
<th valign="top" width="204">処理</th>
<th valign="top" width="313">結果</th>
</tr>
<tr>
<td valign="top" width="204">intでキャスト</td>
<td valign="top" width="313">0方向の最も近い整数を返す</td>
</tr>
<tr>
<td valign="top" width="204">Math.Trancate(double)</td>
<td valign="top" width="313">0方向の最も近い整数部を返す</td>
</tr>
<tr>
<td valign="top" width="204">Math.Ceiling(double)</td>
<td valign="top" width="313">正の無限大方向の最も近い整数部を返す</td>
</tr>
<tr>
<td valign="top" width="204">Math.Floor(double)</td>
<td valign="top" width="313">負の無限大方向の最も近い整数部を返す</td>
</tr>
<tr>
<td valign="top" width="204">Math.Round(double)         <br />または          <br />Math.Round(          <br />double,          <br />MidpointRounding.ToEven          <br />)</td>
<td valign="top" width="313">最も近い整数部を返す．ただし，二つの整数の中間の場合は偶数側の整数部を返す</td>
</tr>
<tr>
<td valign="top" width="204">Math.Round(         <br />double,          <br />MidpointRounding.AwayFromZero          <br />)</td>
<td valign="top" width="313">最も近い整数部を返す．ただし，二つの整数の中間の場合は0から遠い方の整数部を返す</td>
</tr>
</tbody>
</table>
<p>Math.Round(double)は俗に言う四捨五入ではないことに注意．MidpointRounding.ToEvenのときの丸め処理は0.5を加算・減算するときの対象性のため．(<a href="http://homepage1.nifty.com/s_miyake/hp/jisround.htm">ＪＩＳ丸めとは？</a>)</p>
<p>あと，割り算でint / intの結果はdouble / doubleの結果をintでキャストしたときと同じ結果になる．浮動小数点数の結果が欲しければ，どちらかのintをfloatかdoubleに明示的にキャストしておく必要がある．
<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:52ea89de-8c8d-4ccb-8e87-518ee8fb5adf" class="wlWriterEditableSmartContent">
<pre name="code" class="c#:nogutter:nocontrols">int i = 1, j = 2;
Console.WriteLine(i / j);          // =&gt; 0
Console.WriteLine((double) i / j); // =&gt; 0.5</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.mkamo.org/blog/20080413/12.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WPFデータバインディング</title>
		<link>http://www.mkamo.org/blog/20080412/11.html</link>
		<comments>http://www.mkamo.org/blog/20080412/11.html#comments</comments>
		<pubDate>Sat, 12 Apr 2008 09:32:20 +0000</pubDate>
		<dc:creator>mkamo</dc:creator>
				<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://www.mkamo.org/blog/?p=11</guid>
		<description><![CDATA[WPFのデータバインディングの紹介ページへのリンク．

データ バインディングの概要 
Windows Presentation Foundation データ バインディング: パート 1 
Windows Presen [...]]]></description>
			<content:encoded><![CDATA[<p>WPFのデータバインディングの紹介ページへのリンク．</p>
<ul>
<li><a title="データ バインディングの概要" href="http://msdn2.microsoft.com/ja-jp/library/ms752347(VS.80).aspx">データ バインディングの概要</a> </li>
<li><a href="http://www.microsoft.com/japan/msdn/windowsvista/general/WPFDataBinding_Pt1.aspx">Windows Presentation Foundation データ バインディング: パート 1</a> </li>
<li><a href="http://www.microsoft.com/japan/msdn/windowsvista/general/WPFDataBinding_Pt2.aspx">Windows Presentation Foundation のデータ バインディング: パート 2</a> </li>
<li><a title="http://msdn2.microsoft.com/ja-jp/magazine/cc163299.aspx" href="http://msdn2.microsoft.com/ja-jp/magazine/cc163299.aspx">WPF でのデータ バインド</a> </li>
</ul>
<p>データバインディングを使うと，UIコントロールと.NETオブジェクト，XMLデータ，DBなどのデータソースを宣言的な記法で組み合わせることができる．</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mkamo.org/blog/20080412/11.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
