<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>プログラミング：.NET</title><link>http://blogs.wankuma.com/shannon/category/871.aspx</link><description>プログラミング：.NET</description><managingEditor>シャノン</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>シャノン</dc:creator><title>Web への移植を考えると…</title><link>http://blogs.wankuma.com/shannon/archive/2008/09/05/155695.aspx</link><pubDate>Fri, 05 Sep 2008 19:07:00 GMT</pubDate><guid>http://blogs.wankuma.com/shannon/archive/2008/09/05/155695.aspx</guid><wfw:comment>http://blogs.wankuma.com/shannon/comments/155695.aspx</wfw:comment><comments>http://blogs.wankuma.com/shannon/archive/2008/09/05/155695.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/shannon/comments/commentRss/155695.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/shannon/services/trackbacks/155695.aspx</trackback:ping><description>&lt;P&gt;.NET Framework 3.0 にすっかり乗り遅れてるんですが、ちょいと質問。&lt;BR&gt;「今は exe ファイルの形態をとっているが、将来的には Web アプリに移植したい」っていう要望があるとき、WPF はちょーおすすめの選択肢になり得るでしょうか？&lt;BR&gt;XBAP 化や Silverlight 化するにあたって、例えば Windows Form アプリを ASP.NET や JSP に移植するよりも、すっげー楽、っぽい？&lt;BR&gt;もしそうなら、今期の開発で VS2008 を使わせてもらえる可能性が出てくるので&amp;#8230;もう 2003 で DataGrid と格闘するのは勘弁してほしいのですよぅ。&lt;/P&gt;
&lt;P&gt;ちなみに、Webアプリってのはイントラ環境&amp;#8230;のはず。完全信頼はもともと必要としてないけど、XBAP とか Silverlight って Oracle にアクセスはできる？&lt;BR&gt;あ、「Mac からも見れるように汁！」って言われそうだなぁ&amp;#8230;Silverlight なら Mac でも大丈夫だっけ？&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/shannon/aggbug/155695.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>シャノン</dc:creator><title>Linq の Where って</title><link>http://blogs.wankuma.com/shannon/archive/2008/09/05/155674.aspx</link><pubDate>Fri, 05 Sep 2008 13:31:00 GMT</pubDate><guid>http://blogs.wankuma.com/shannon/archive/2008/09/05/155674.aspx</guid><wfw:comment>http://blogs.wankuma.com/shannon/comments/155674.aspx</wfw:comment><comments>http://blogs.wankuma.com/shannon/archive/2008/09/05/155674.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/shannon/comments/commentRss/155674.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/shannon/services/trackbacks/155674.aspx</trackback:ping><description>&lt;p&gt;なんで条件に Predicate&amp;lt;T&amp;gt; じゃなくて Func&amp;lt;T, bool&amp;gt; を使うの？&lt;br&gt;昔のことは忘れたい主義なの？&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/shannon/aggbug/155674.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>シャノン</dc:creator><title>AuthenticationManager.RegisteredModules</title><link>http://blogs.wankuma.com/shannon/archive/2008/08/04/151705.aspx</link><pubDate>Mon, 04 Aug 2008 16:50:00 GMT</pubDate><guid>http://blogs.wankuma.com/shannon/archive/2008/08/04/151705.aspx</guid><wfw:comment>http://blogs.wankuma.com/shannon/comments/151705.aspx</wfw:comment><comments>http://blogs.wankuma.com/shannon/archive/2008/08/04/151705.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/shannon/comments/commentRss/151705.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/shannon/services/trackbacks/151705.aspx</trackback:ping><description>&lt;p&gt;IEnumerator 型を返すプロパティってはじめて見たなぁ。戻り値に返すメソッドも見たこと無いけどさ。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/shannon/aggbug/151705.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>シャノン</dc:creator><title>コマンドラインパーサ</title><link>http://blogs.wankuma.com/shannon/archive/2008/07/28/150654.aspx</link><pubDate>Mon, 28 Jul 2008 14:32:00 GMT</pubDate><guid>http://blogs.wankuma.com/shannon/archive/2008/07/28/150654.aspx</guid><wfw:comment>http://blogs.wankuma.com/shannon/comments/150654.aspx</wfw:comment><comments>http://blogs.wankuma.com/shannon/archive/2008/07/28/150654.aspx#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://blogs.wankuma.com/shannon/comments/commentRss/150654.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/shannon/services/trackbacks/150654.aspx</trackback:ping><description>&lt;P&gt;ちょっと実用的なコマンドラインパーサを作ろう、と思っているわけです。C# で。&lt;BR&gt;困ったことに、コマンドラインパーサってのはどんなアプリでも利用可能ですから、こういうものを作ろうと思い立ってしまうと、これが出来上がるまで他のどんなアプリも作りたくなくなります。俺の悪い癖です。&lt;/P&gt;
&lt;P&gt;で、悩んでいるのが、&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;既存のアプリのコマンドラインの仕様を変えずに移植できるように柔軟性を持たせるか 
&lt;LI&gt;このパーサライブラリを使う以上は使用可能なコマンドラインの仕様にある程度の制限があるのも止むなしとするか&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;ということ、とか。&lt;BR&gt;まぁほら、後者の方が作るのは簡単なんですけど、前者ができるならそれに越したことは無いじゃない？　みたいな。&lt;/P&gt;
&lt;P&gt;あとは、パラメータを指定するにしても、世の中にはいろんな方式のアプリがあるわけですよ。&lt;BR&gt;例えば、オプション「/foo」にパラメータ「bar」を指定するのでも、&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;/foo bar 
&lt;LI&gt;/foo:bar 
&lt;LI&gt;/foobar&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;なんてのがあります。&lt;BR&gt;2と3は技術的にはあまり違いはありません。見た目的には2の方が好きです。&lt;BR&gt;が、1と2には大きな違いがあります。&lt;BR&gt;コマンドラインは Main に文字列配列として渡されますが、1 は /foo と bar が別の要素になるのに対し、2 は単一の要素になります。&lt;BR&gt;当然、1の方が解析は面倒です。「bar」を処理するときに、その前の要素が「/foo」であるか、そうでないかでは意味が違ってくるからです。&lt;BR&gt;このため、コマンドラインパーサは、簡易な状態遷移機械ということになります。&lt;BR&gt;ちなみに、3つの中では見た目的に1が一番好きです。&lt;/P&gt;
&lt;P&gt;このように、コマンドの順序を意識しなければならないこともあれば、順序はどうでもいい場合もあります。&lt;BR&gt;例えば、オプション /hoge と /hage があるとき、以下の2つは&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;/hoge /hage 
&lt;LI&gt;/hage /hoge&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;どっちでもいいじゃないですか。&lt;/P&gt;
&lt;P&gt;もっと複雑な例になると、/foo:X=1,Y=2,Z=3 なんていう例も考えられます。もちろん、/foo:Z=3,X=1,Y=2でも同じ意味でなければなりません。&lt;BR&gt;正直、こんなのをパースするのは面倒です。&lt;BR&gt;で、正規表現を使っちゃえばいいじゃないか、と思い立ったわけです。キャプチャしてくれますから。&lt;/P&gt;
&lt;P&gt;ただですね、上のは敢えてスペースを詰めて1つの文字列になるように書きましたが、/foo x 1 y 2 z 3 でも同じ意味でいいじゃないかと。&lt;BR&gt;で、そういう場合に、&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;/foo 
&lt;LI&gt;/foo x 
&lt;LI&gt;/foo x 1 y 
&lt;LI&gt;/foo x 1 /bar&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;1～3なんかは不正なコマンドラインなわけですが、正規表現でこれらを不正だと見破るのは面倒くさいです。&lt;BR&gt;4 は正当なコマンドラインですが、「/foo x 1」と「/bar」は別のオプションです。が、正規表現だと、「/foo」と「x」と「1 bar」に分けちゃったりするのです。&lt;BR&gt;一番簡単な方法は、/foo:x=1 /foo:y=2 /foo:z=3 という風に書かせて、可変個引数を認めないことですが、それもかっこ悪いなぁ、と。&lt;/P&gt;
&lt;P&gt;面倒くさいです。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/shannon/aggbug/150654.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>シャノン</dc:creator><title>最近、C# の行末のセミコロンがうっとうし&amp;lt;del&amp;gt;く感じる件について&amp;lt;/del&amp;gt;&amp;lt;ins&amp;gt;い&amp;lt;/ins&amp;gt;。</title><link>http://blogs.wankuma.com/shannon/archive/2008/07/24/150068.aspx</link><pubDate>Thu, 24 Jul 2008 15:44:00 GMT</pubDate><guid>http://blogs.wankuma.com/shannon/archive/2008/07/24/150068.aspx</guid><wfw:comment>http://blogs.wankuma.com/shannon/comments/150068.aspx</wfw:comment><comments>http://blogs.wankuma.com/shannon/archive/2008/07/24/150068.aspx#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://blogs.wankuma.com/shannon/comments/commentRss/150068.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/shannon/services/trackbacks/150068.aspx</trackback:ping><description>邪魔。&lt;img src ="http://blogs.wankuma.com/shannon/aggbug/150068.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>シャノン</dc:creator><title>これでもダメか…っ！</title><link>http://blogs.wankuma.com/shannon/archive/2008/07/23/149919.aspx</link><pubDate>Wed, 23 Jul 2008 15:39:00 GMT</pubDate><guid>http://blogs.wankuma.com/shannon/archive/2008/07/23/149919.aspx</guid><wfw:comment>http://blogs.wankuma.com/shannon/comments/149919.aspx</wfw:comment><comments>http://blogs.wankuma.com/shannon/archive/2008/07/23/149919.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/shannon/comments/commentRss/149919.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/shannon/services/trackbacks/149919.aspx</trackback:ping><description>IVSMDCodeDomProvider を使っても、C# のコードをメソッドの中まではパースしてくんない。うげー。&lt;BR&gt;やはり Colorizer 方面から攻めるしかないか。面倒くせー。&lt;img src ="http://blogs.wankuma.com/shannon/aggbug/149919.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>シャノン</dc:creator><title>インターフェイスの要件は最小であるべきか？</title><link>http://blogs.wankuma.com/shannon/archive/2008/07/17/149365.aspx</link><pubDate>Thu, 17 Jul 2008 16:05:00 GMT</pubDate><guid>http://blogs.wankuma.com/shannon/archive/2008/07/17/149365.aspx</guid><wfw:comment>http://blogs.wankuma.com/shannon/comments/149365.aspx</wfw:comment><comments>http://blogs.wankuma.com/shannon/archive/2008/07/17/149365.aspx#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://blogs.wankuma.com/shannon/comments/commentRss/149365.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/shannon/services/trackbacks/149365.aspx</trackback:ping><description>&lt;P&gt;なんだかぱっとしないタイトル。&lt;BR&gt;ここで言う「インターフェイス」とは、多重継承できるあの interface じゃなくて、もっと一般的な意味でのそれです。約束事、みたいな。&lt;/P&gt;
&lt;P&gt;例えば、メソッドの引数に何かコレクションを受け取るとして、その型はどう宣言すべきか、と。&lt;BR&gt;IEnumerable&amp;lt;T&amp;gt; か、ICollection&amp;lt;T&amp;gt; か、IList&amp;lt;T&amp;gt; か、はたまた T[] か。&lt;/P&gt;
&lt;P&gt;極めて単純無思考には T[] 。&lt;BR&gt;しかし、T[] のほとんどの特性は IList&amp;lt;T&amp;gt; も備えているため、俺は個人的に IList&amp;lt;T&amp;gt; を好む傾向にある。&lt;BR&gt;多次元配列なんかは、もはや配列をそのまんま使うんじゃなくて、何らかのクラスを作ったほうがいいと思う。&lt;/P&gt;
&lt;P&gt;しかし、ランダムアクセスの必要が無ければ、IEnumerable&amp;lt;T&amp;gt; でも十分ではある。&lt;BR&gt;そういう時、IEnumerable&amp;lt;T&amp;gt; とすべきか否か。&lt;/P&gt;
&lt;P&gt;ちょっと引っかかるのは、ICollection&amp;lt;T&amp;gt; や IList&amp;lt;T&amp;gt; は無限リストを許容しないが、IEnumerable&amp;lt;T&amp;gt; は許容するというところ。&lt;BR&gt;ということは、IEnumerable&amp;lt;T&amp;gt; を引数に取るメソッドは、すべからく無限リストに対応すべし、ということになるか？&lt;BR&gt;遅延処理を意図したロジックならいいが、そうでない場合もあるだろう。&lt;BR&gt;IEnumerable&amp;lt;T&amp;gt;.Count() なんかは ICollection&amp;lt;T&amp;gt;.Count でもよかったんじゃないだろうか。無限リストに使ったらオーバーフローしたぞ。&lt;BR&gt;まぁ、ICollection&amp;lt;T&amp;gt; や IList&amp;lt;T&amp;gt; を受け取ったとして、要素数が Int32.MaxValue 個ある場合にちゃんと処理できなければならない、というのもなかなか酷ではあるのだが。&lt;/P&gt;
&lt;P&gt;また、これは感覚的な問題でもあるが、用途としては IEnumerable&amp;lt;T&amp;gt; で十分であっても、IList&amp;lt;T&amp;gt; を使いたいという心情もあると思う。&lt;BR&gt;ちょっと前の var 論争でもあった意見だが、「IEnumerable&amp;lt;T&amp;gt; ではコレクションのような気がしない。IList&amp;lt;T&amp;gt; ならコレクションであるという意図が込められる」みたいな。&lt;/P&gt;
&lt;P&gt;また別問題ではあるが、独自のデータ構造を作るか否かという問題もある。&lt;BR&gt;例えば、Pair&amp;lt;T, U&amp;gt; という既存の型があった場合、あらゆる2値の組み合わせは Pair&amp;lt;T, U&amp;gt; で事足りるか、ということ。&lt;BR&gt;Pair&amp;lt;T, U&amp;gt; は、それぞれの値の意味を理解しないので、.First とか .Second とかいうメンバ名にならざるを得ない。&lt;BR&gt;人の名前を表すのに、FirstName と LastName というメンバを持つクラスを作るか、Pair&amp;lt;string, string&amp;gt; で済ませるか、とか。&lt;BR&gt;独自のデータ型を作らずに既存の型を最大限活用した場合、&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;メンバの意味がわかりにくくなる &lt;/LI&gt;
&lt;LI&gt;ジェネリックの入れ子が深くなる&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;という問題が発生するわけだが、どうよ？　という。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/shannon/aggbug/149365.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>シャノン</dc:creator><title>LinkedList&amp;lt;T&amp;gt; が IList&amp;lt;T&amp;gt; を実装しない件について</title><link>http://blogs.wankuma.com/shannon/archive/2008/07/17/149340.aspx</link><pubDate>Thu, 17 Jul 2008 14:49:00 GMT</pubDate><guid>http://blogs.wankuma.com/shannon/archive/2008/07/17/149340.aspx</guid><wfw:comment>http://blogs.wankuma.com/shannon/comments/149340.aspx</wfw:comment><comments>http://blogs.wankuma.com/shannon/archive/2008/07/17/149340.aspx#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://blogs.wankuma.com/shannon/comments/commentRss/149340.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/shannon/services/trackbacks/149340.aspx</trackback:ping><description>&lt;P&gt;確かに、特性を考えれば妥当だけど（IList&amp;lt;T&amp;gt; は添え字によるランダムアクセスが可能、LinkedList&amp;lt;T&amp;gt; は不可能）、名前がなぁ&amp;#8230;&lt;/P&gt;
&lt;P&gt;IList&amp;lt;T&amp;gt; は IArray&amp;lt;T&amp;gt; とかいう名前の方が良かったんじゃないのか。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/shannon/aggbug/149340.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>シャノン</dc:creator><title>LINQのヴァカ…</title><link>http://blogs.wankuma.com/shannon/archive/2008/07/16/149155.aspx</link><pubDate>Wed, 16 Jul 2008 16:06:00 GMT</pubDate><guid>http://blogs.wankuma.com/shannon/archive/2008/07/16/149155.aspx</guid><wfw:comment>http://blogs.wankuma.com/shannon/comments/149155.aspx</wfw:comment><comments>http://blogs.wankuma.com/shannon/archive/2008/07/16/149155.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/shannon/comments/commentRss/149155.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/shannon/services/trackbacks/149155.aspx</trackback:ping><description>なんで DefaultIfEmpty はデフォルト値を自分で指定できるのに、FirstOrDefault は指定できないのさ&amp;#8230;&lt;BR&gt;作るからいいもん。ふんだ。&lt;img src ="http://blogs.wankuma.com/shannon/aggbug/149155.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>シャノン</dc:creator><title>Outlook 2007のアドインなぞ作ってみる</title><link>http://blogs.wankuma.com/shannon/archive/2008/07/04/147228.aspx</link><pubDate>Fri, 04 Jul 2008 02:37:00 GMT</pubDate><guid>http://blogs.wankuma.com/shannon/archive/2008/07/04/147228.aspx</guid><wfw:comment>http://blogs.wankuma.com/shannon/comments/147228.aspx</wfw:comment><comments>http://blogs.wankuma.com/shannon/archive/2008/07/04/147228.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/shannon/comments/commentRss/147228.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/shannon/services/trackbacks/147228.aspx</trackback:ping><description>あくせんくとうちゅう&amp;#8230;&lt;img src ="http://blogs.wankuma.com/shannon/aggbug/147228.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>