.NET

NDesk.Options(Mono) - コマンドラインパーサー

Monoでコマンドラインパーサーがあったので使ってみた。 .NET 4、コマンドラインパーサー未搭載 http://www.ndesk.org/Options 使い方はこんな感じ string data = null; bool help = false; int verbose = 0; var p = new OptionSet () { { "file=", v => da…

DataGridViewにデータバインドして編集・削除するのに最適な方法は?

WindowsFormで業務アプリを開発する場合、DataGridViewの様にデータの表示と編集作業を実際のデータソースの種類を問わずに一括してやってくれるコントロールがあると非常に便利である。単純な編集作業ならば、これにデータバインドしてちょこちょこっとコー…

MVPパターンを業務アプリに適用する − 画面遷移

MVPパターンにおける画面遷移のやり方を調べていたが、具体的な情報があまりなく、これだというのが無かったので自分なりに考えてみた。 業務アプリでやるからには極力シンプルで、誰にでもわかるやり方にする必要がある*1。とりあえず考えたのは、下図のよ…

MVPパターンを業務アプリに適用する

業務アプリケーションを開発するにあたって、最低限守るべき事の一つとして「画面とロジック」の分離が挙げられると思う。 簡単そうに思えて、これが意外と難しい。 一人での開発ならば自分だけでやり方を決めてしまえばそんなに難しくはない。しかし、開発…

WCF はじめの一歩

今更ながらWCF(Windows Communication Foundation)を始めた。長い間プログラミングから遠ざかっていた*1ので、若干書き方を忘れてきたけど思い出しつつ勉強開始 まずは基本中の基本からやってみる。 概要 イメージとしてはこんな感じ Server側とClient側でCo…

PowerShellで作るdeliciousクライアント ラスト

前回の続きです。 タグの一覧を取得 タグの一覧を取得する機能を実装します。まずは「DeliciousTag.vb」というファイル名でクラスファイルを追加します。 DeliciousTag.vb Public Class DeliciousTag Private _name As String Public Property Name() As Str…

PowerShellで作るdeliciousクライアント その4

前回の続きです。 ブックマークの削除 今回はブックマークの削除機能から実装します。DeliciousクラスにDeleteBookmarkという名前で、引数に削除するブックマークのURLを指定するメソッドを定義します。 Delicious.vb Sub DeleteBookmark(ByVal url As Strin…

PowerShellで作るdeliciousクライアント その3

前回の続きです。前回でブックマークの一覧を取得できるようにしましたが、あのままではURLがわかってもブラウザで開くという作業が面倒なので、その辺を簡略化できるように与えられたURLを既定のブラウザで開くコマンドレットを作っておきます。「Commands…

PowerShellで作るdeliciousクライアント その2

前回の続きです。 ブックマーク一覧の取得 - dirコマンドへの対応 まずはブックマーク一覧の取得機能を実装します。操作的には「delicious」ドライブに移動して、dirコマンド(Get-ChildItemコマンドレット)を実行するとブックマークの一覧が表示されるとい…

PowerShellで作るdeliciousクライアント その1

以前、PowerShellのカスタムプロバイダーという機構を紹介する記事を書きました。 カスタムプロバイダーを作ってみよう その1 この時は具体的なプロバイダーではなく、プロバイダー作成の概要を説明するという形でしたが、今回いい題材を思いついたのでその…

PowerShellでWebにアクセスしてみよう!

今回はPowerShellを使ってWeb(インターネット)にアクセスする方法を紹介します。PowerShellは.NET Framework(.NET)をベースにして作られているので、.NETに用意されている豊富なライブラリをそのまま使用することができます。Webへのアクセスについても.…

Spring.NETのロギング設定

Spring.NETのロギング設定についてメモSpring.NETではロギングに「log4net」やEnterprise Libraryの「Logging Application Block」なんかを使えるんだけど、それらを直接使うんじゃなくて「Common.Logging」というロギングライブラリを挟んで、実際のロガー…

VB.NET には正直とまどう

いや、四月から仕事でVB.NET使うようになるから、慣れとこうと思ってちょこちょこ使ってるんですけど、結構とまどうことが多い。まずプロジェクトを作ってソリューションエクスプローラを見ると、参照設定が無い。 すべてのファイルを表示しないと出てこない…

MEF(Managed Extensibility Framework)はちょっと変わったDIコンテナ

この前の勉強会で聞かれたので調べてみたら、これ「System.AddIn」のやつとは全然関係ないのね。でも、アドインとかの機構を実現させるためのフレームワークというのには違いが無いみたい。どう住み分けるんだろう?で、軽く触ってみたんだけど、これって要…

C#から見たVB.NET

仕事でVB.NETを使う必要が出てきそうなので最近のVBがどうなっているのかチェックがてらメモしておく。VBは7(.NET 1.0)までしか使っていないので、その後ジェネリックとかがどのように取り込まれたか全く知らないのでそのへんも気になる。 基本的な相違点 …

URLを物理パスにマップしてインジェクション

ネタが無いのでASP.NETとSpring.NETでよくやる事を書いてみる。例えばサーバーサイドで「App_Data」フォルダなんかに置いてある設定ファイルを読み書きする場合、そのファイルのURLを「Server.MapPath」メソッドを使って実際の物理パスに変換するなんて事を…

dynamicキーワードで匿名クラスは本領を発揮する!? - C# 4.0の新機能

ここでC# 4.0からdynamicというキーワードが追加されて動的型付けのオブジェクトが使えるようになったと書いたけど、てっきりC# 3.0のvarと同じでローカルスコープでしか使えないと思っていたらそうじゃないのね。なので、こういうことができるようになるん…

IDynamicObject - C# 4.0の新機能

さっきの続きまだよくわからんけど、IDynamicObjectというインターフェースを実装すると動的型付けのオブジェクトを作れるみたい。しかもその情報(メソッドとかプロパティとか)をどのように持つかは実装クラスに委ねられる。で、その基本実装を提供するク…

C# 4.0の新機能

PDC2008のAnders Hejlsbergのセッションをビデオで観てたら、新機能の紹介があったので書いてみる。 The Future of C# | pdc2008 | Channel 9 Dynamically Typed Objects 動的型付けオブジェクト?以前は、以下のようなオブジェクトのメソッド呼び出しを Cal…

カスタムプロバイダーを作ってみよう ラスト

前回の続きです。今回はSet−Contentコマンドレットへの対応からはじめます。 Set-Contentコマンドレットへの対応 Set-Contentコマンドレットに対応するには、IContentCmdletProviderインターフェースの以下のメソッドを実装します。 void ClearContent ICont…

カスタムプロバイダーを作ってみよう その4

前回の続きです。今回はタブ補完から実装します。 タブ補完への対応 タブ補完に対応させるには、以下のメソッドをオーバーライドします。 void GetChildNames(string path, ReturnContainers returnContainers) 実装する前にタブ補完とはどのような機能なの…

カスタムプロバイダーを作ってみよう その3

前回の続きです。今回はNew-Itemコマンドレットへの対応から始めます。 New-Itemコマンドレットへの対応 New-Itemコマンドレットに対応させるには、以下のメソッドをオーバーライドします。 void NewItem(string path, string itemTypeName, object newItemV…

カスタムプロバイダーを作ってみよう その2

前回の続きです。今回はまず、自作のプロバイダーでcd ができるようにする、つまりSet-Locationコマンドレットに対応させます。その前にこのプロバイダーをデバッグできるようにしておきましょう。 デバッグの設定 Visual Studioのプロジェクトのプロパティ…

カスタムプロバイダーを作ってみよう その1

PowerShellの重要な特徴として、ファイルシステムやレジストリ、環境変数など異なるデータソースに対して共通の操作(コマンドレット)が行えるということが挙げられます。例えば、以下のように「C」ドライブ直下に「New-Item」コマンドレットでファイルを作…

ObjectDataSourceの使い道

先日のSilverlightを囲む会#4でid:kiyokuraさんとASP.NETのObjectDataSourceの話をしていて、きよくらさんがObjectDataSourceを使わないと言っていたに対して自分がObjectDataSourceはSpring.NETと絡めると効果的ですよなんて話をしたので、そのへんの事を書…

三重県.NET勉強会 第一回目を開催します

以前からこのブログで話しをしていた三重県で開催する.NET勉強会ですが、この度無事開催する運びとなりました。 開催日 2008/11/1 (土) 場所 津アストホール 4F 会議室3 http://www.ust.city.tsu.mie.jp/f_access.htm 参加料 無料 懇親会 三重日本海庄や …

BooでAOP

今回はBooでAOP(アスペクト指向プログラミング)的なことをやってみる。Booでアスペクト(のようなもの)をコードに織り込む場合はコンパイラのプロセスに直接干渉してやることになる。 他のAOPライブラリ、例えばPostSharpなんかだとコンパイルした後にIL…

Booの開発にはSharpDevelopがオヌヌメ

オープンソースの.NET用IDEに「SharpDevelop」というのがあるが、これがBooの開発環境としては何気におすすめだったので紹介しておく。SharpDevelop自体はだいぶ前(1.xのころかな)に触った事があったけど、あまり出来がよくなかったのと既にVisual Studio…

BooをDIコンテナのDSLとして使う

BooはDSLの構築に適しているという評判なので、そのへんの事を確かめてみる。そもそもDSLとはDomain Specific Language(ドメイン固有言語)の略で、C#なんかのプログラミング言語が汎用的なのに対して、特定のドメイン(領域)に特化した言語のことをいう。…

Booがやば過ぎる件

InfoQの以下の記事を読んでBooというCLR上で動作するプログラミング言語に興味を持った。 CLR上でのドメイン特化言語の構築 Boo自体はMonoに付いてくるので名前だけは知っていたけど、実際に触ったことがなかった*1。でもこの記事を読んでPythonベースの言語…