.NET
Monoでコマンドラインパーサーがあったので使ってみた。 .NET 4、コマンドラインパーサー未搭載 http://www.ndesk.org/Options 使い方はこんな感じ string data = null; bool help = false; int verbose = 0; var p = new OptionSet () { { "file=", v => da…
WindowsFormで業務アプリを開発する場合、DataGridViewの様にデータの表示と編集作業を実際のデータソースの種類を問わずに一括してやってくれるコントロールがあると非常に便利である。単純な編集作業ならば、これにデータバインドしてちょこちょこっとコー…
MVPパターンにおける画面遷移のやり方を調べていたが、具体的な情報があまりなく、これだというのが無かったので自分なりに考えてみた。 業務アプリでやるからには極力シンプルで、誰にでもわかるやり方にする必要がある*1。とりあえず考えたのは、下図のよ…
業務アプリケーションを開発するにあたって、最低限守るべき事の一つとして「画面とロジック」の分離が挙げられると思う。 簡単そうに思えて、これが意外と難しい。 一人での開発ならば自分だけでやり方を決めてしまえばそんなに難しくはない。しかし、開発…
今更ながらWCF(Windows Communication Foundation)を始めた。長い間プログラミングから遠ざかっていた*1ので、若干書き方を忘れてきたけど思い出しつつ勉強開始 まずは基本中の基本からやってみる。 概要 イメージとしてはこんな感じ Server側とClient側でCo…
前回の続きです。 タグの一覧を取得 タグの一覧を取得する機能を実装します。まずは「DeliciousTag.vb」というファイル名でクラスファイルを追加します。 DeliciousTag.vb Public Class DeliciousTag Private _name As String Public Property Name() As Str…
前回の続きです。 ブックマークの削除 今回はブックマークの削除機能から実装します。DeliciousクラスにDeleteBookmarkという名前で、引数に削除するブックマークのURLを指定するメソッドを定義します。 Delicious.vb Sub DeleteBookmark(ByVal url As Strin…
前回の続きです。前回でブックマークの一覧を取得できるようにしましたが、あのままではURLがわかってもブラウザで開くという作業が面倒なので、その辺を簡略化できるように与えられたURLを既定のブラウザで開くコマンドレットを作っておきます。「Commands…
前回の続きです。 ブックマーク一覧の取得 - dirコマンドへの対応 まずはブックマーク一覧の取得機能を実装します。操作的には「delicious」ドライブに移動して、dirコマンド(Get-ChildItemコマンドレット)を実行するとブックマークの一覧が表示されるとい…
以前、PowerShellのカスタムプロバイダーという機構を紹介する記事を書きました。 カスタムプロバイダーを作ってみよう その1 この時は具体的なプロバイダーではなく、プロバイダー作成の概要を説明するという形でしたが、今回いい題材を思いついたのでその…
今回はPowerShellを使ってWeb(インターネット)にアクセスする方法を紹介します。PowerShellは.NET Framework(.NET)をベースにして作られているので、.NETに用意されている豊富なライブラリをそのまま使用することができます。Webへのアクセスについても.…
Spring.NETのロギング設定についてメモSpring.NETではロギングに「log4net」やEnterprise Libraryの「Logging Application Block」なんかを使えるんだけど、それらを直接使うんじゃなくて「Common.Logging」というロギングライブラリを挟んで、実際のロガー…
いや、四月から仕事でVB.NET使うようになるから、慣れとこうと思ってちょこちょこ使ってるんですけど、結構とまどうことが多い。まずプロジェクトを作ってソリューションエクスプローラを見ると、参照設定が無い。 すべてのファイルを表示しないと出てこない…
この前の勉強会で聞かれたので調べてみたら、これ「System.AddIn」のやつとは全然関係ないのね。でも、アドインとかの機構を実現させるためのフレームワークというのには違いが無いみたい。どう住み分けるんだろう?で、軽く触ってみたんだけど、これって要…
仕事でVB.NETを使う必要が出てきそうなので最近のVBがどうなっているのかチェックがてらメモしておく。VBは7(.NET 1.0)までしか使っていないので、その後ジェネリックとかがどのように取り込まれたか全く知らないのでそのへんも気になる。 基本的な相違点 …
ネタが無いのでASP.NETとSpring.NETでよくやる事を書いてみる。例えばサーバーサイドで「App_Data」フォルダなんかに置いてある設定ファイルを読み書きする場合、そのファイルのURLを「Server.MapPath」メソッドを使って実際の物理パスに変換するなんて事を…
ここでC# 4.0からdynamicというキーワードが追加されて動的型付けのオブジェクトが使えるようになったと書いたけど、てっきりC# 3.0のvarと同じでローカルスコープでしか使えないと思っていたらそうじゃないのね。なので、こういうことができるようになるん…
さっきの続きまだよくわからんけど、IDynamicObjectというインターフェースを実装すると動的型付けのオブジェクトを作れるみたい。しかもその情報(メソッドとかプロパティとか)をどのように持つかは実装クラスに委ねられる。で、その基本実装を提供するク…
PDC2008のAnders Hejlsbergのセッションをビデオで観てたら、新機能の紹介があったので書いてみる。 The Future of C# | pdc2008 | Channel 9 Dynamically Typed Objects 動的型付けオブジェクト?以前は、以下のようなオブジェクトのメソッド呼び出しを Cal…
前回の続きです。今回はSet−Contentコマンドレットへの対応からはじめます。 Set-Contentコマンドレットへの対応 Set-Contentコマンドレットに対応するには、IContentCmdletProviderインターフェースの以下のメソッドを実装します。 void ClearContent ICont…
前回の続きです。今回はタブ補完から実装します。 タブ補完への対応 タブ補完に対応させるには、以下のメソッドをオーバーライドします。 void GetChildNames(string path, ReturnContainers returnContainers) 実装する前にタブ補完とはどのような機能なの…
前回の続きです。今回はNew-Itemコマンドレットへの対応から始めます。 New-Itemコマンドレットへの対応 New-Itemコマンドレットに対応させるには、以下のメソッドをオーバーライドします。 void NewItem(string path, string itemTypeName, object newItemV…
前回の続きです。今回はまず、自作のプロバイダーでcd ができるようにする、つまりSet-Locationコマンドレットに対応させます。その前にこのプロバイダーをデバッグできるようにしておきましょう。 デバッグの設定 Visual Studioのプロジェクトのプロパティ…
PowerShellの重要な特徴として、ファイルシステムやレジストリ、環境変数など異なるデータソースに対して共通の操作(コマンドレット)が行えるということが挙げられます。例えば、以下のように「C」ドライブ直下に「New-Item」コマンドレットでファイルを作…
先日のSilverlightを囲む会#4でid:kiyokuraさんとASP.NETのObjectDataSourceの話をしていて、きよくらさんがObjectDataSourceを使わないと言っていたに対して自分がObjectDataSourceはSpring.NETと絡めると効果的ですよなんて話をしたので、そのへんの事を書…
以前からこのブログで話しをしていた三重県で開催する.NET勉強会ですが、この度無事開催する運びとなりました。 開催日 2008/11/1 (土) 場所 津アストホール 4F 会議室3 http://www.ust.city.tsu.mie.jp/f_access.htm 参加料 無料 懇親会 三重日本海庄や …
今回はBooでAOP(アスペクト指向プログラミング)的なことをやってみる。Booでアスペクト(のようなもの)をコードに織り込む場合はコンパイラのプロセスに直接干渉してやることになる。 他のAOPライブラリ、例えばPostSharpなんかだとコンパイルした後にIL…
オープンソースの.NET用IDEに「SharpDevelop」というのがあるが、これがBooの開発環境としては何気におすすめだったので紹介しておく。SharpDevelop自体はだいぶ前(1.xのころかな)に触った事があったけど、あまり出来がよくなかったのと既にVisual Studio…
BooはDSLの構築に適しているという評判なので、そのへんの事を確かめてみる。そもそもDSLとはDomain Specific Language(ドメイン固有言語)の略で、C#なんかのプログラミング言語が汎用的なのに対して、特定のドメイン(領域)に特化した言語のことをいう。…
InfoQの以下の記事を読んでBooというCLR上で動作するプログラミング言語に興味を持った。 CLR上でのドメイン特化言語の構築 Boo自体はMonoに付いてくるので名前だけは知っていたけど、実際に触ったことがなかった*1。でもこの記事を読んでPythonベースの言語…