2006-07-01から1ヶ月間の記事一覧

DIコンテナとデバッグ

DIコンテナ(インターセプションによるAOP機能付き)をメインに据えたシステム開発は、ある種のデバッグを困難にすることがある。その理由はいろいろあるが、DIコンテナに着目した場合 リフレクションを多用している AOPというコードを差込むメカニズムがある …

Visual Studio 2005とCVS

Eclipseに慣れた身には、正直WinCVSは使いづらい。Visual Studio 2005と相性の良いCVSクライアントを物色中。なにか良いものはないだろうか。Improve C# Plugin for EclipseCVSクライアントではなく、Eclipse上でC#を扱うためのプラグインだが、そもそもJava…

メッセージングと匿名(その2)

匿名を一意とする方法を模索していたが、artonさんのアドバイスがドンピシャだったので、実際に試してみた。 古のDDEの手法はどうですか? (というか読んでいてDDEを思い出したわけですが) 利用するのはATOM。GlobalAddAtom(LPCTSTR)で作成、GlobalGetAtom…

Log4netのFileAppenderでファイル名を動的に変更する(リフレイン)

先月書いた、標題のエントリだが、同一アセンブリを起動した場合、問題が発生することが発覚した。同エントリ中、サンプルコードで示したFileAppender.Fileを置き換えて、ActivateOptionsを呼ぶ部分だが fileAppender.File = file.Replace("MyApp", entryAsm…

メッセージングと匿名

過去の日記で書いたが、拙作のフレームワークではアプリケーション間の簡単なデータ交換に、WM_COPYDATAというWindowsMessageを利用したパブリッシャ/サブスクライバ型の通信フレームワークを提供している。[.NET][C#]続 NativeWindowクラス (このエントリを…

LL

"LL"だが、大きいサイズに非ず、"LightWeight Language"の略だ。小さく、学びやすい言語、ということでPerl,Ruby,PHP、Python、更にはSqueak等も含まれるらしいが(あまり普及していない言語も含めるとまだまだあるのだが、割愛する)、どうしてこういう括り…

配布方法に依らないコマンドライン引数の取得

.NET WindowsFormsアプリケーションでコマンドライン引数を取得するには、エントリポイントのMain関数で取得する他に、以下の方法がある。 string[] args = Environment.GetCommandLineArgs(); しかし、これは通常のアプリケーションの話であってClickOnceで…

インスタンス遅延生成の副作用

少し前のエントリに対して、すぎもとさんから言及頂いた。 インスタンスを必要になってから生成するsingletonなモードを新しく追加すれば良いのですが、diconファイルのDTDに変更が必要になってしまいます。そこで手っ取り早く回避する方法ですが、S2コンテ…

アーキテクチャ指向なDIコンテナ

すぎもとさんのところにもちょっと書いたが、.NET スマートクライアント用にDIコンテナを書いて解ったことは、WebアプリケーションのDIコンテナの適用要件と、クライアント(GUI)アプリケーションのDIコンテナのそれは随分と違うということだ。特にリソースの…

ClickOnceと非ClickOnceのアプリケーションを透過に起動する

以前のエントリで、ClickOnceアプリケーションを他から起動する方法を書いたが、今度は対象のパスがClickOnceか、通常のアプリケーションなのかがはっきりしない場合に、透過に起動するメソッドを考えてみた。 private void LaunchFromPath(string path) { P…

AOPの使いどころ

そう言えば先日の MD3 で,萩原さんから「AOP を不具合修正 (パッチあて) に使うのは良くない」というような話があったような.確かに紙一重な部分はあるかもなぁ.〜 AOP とパッチあて - NyaRuRuの日記 これに関して、非常に共感する。AOPに関して、その黎…

プロジェクトテンプレートは使える

拙作のフレームワークではWindowsFormsアプリケーションの開発のために、標準的な機能を持たせたプロジェクトをテンプレートで提供する予定なのだが、その中にはDIコンテナ用の設定ファイルも含まれる。設定ファイル中には、プロジェクトで最低限必要なコン…

StoreAdm

拙作のフレームワークでは、WindowsFormsにおけるFormの表示位置とサイズをいわゆる「分離ストレージ」上に保存し、次回のアプリケーション起動時に表示位置とサイズを復旧する、という処理を行っている。 分離ストレージには、保存の際のスコープ(Scope)と…

IsolatedStorage for Application Scope

.NET Framework 2.0で追加された、この新しい分離ストレージのスコープである"Application"は、どうやらClickOnceアプリケーション限定で使われるスコープらしい。従って、ClickOnceアプリケーションでは無い場合は、Applicationスコープの分離ストレージ自…

MixIn Interfaces Proxy(その3)

コメント欄だと書きにくいので、エントリとして書くことに。 # sugimotokazuya 『1つ問題がありました。Mixinによるプロキシだと実装クラスの型で受け取れない(キャストできない)という制限がありました。』 とのことだが、実装クラスの型でも受け取りたい…

AutoValidate

7/1のエントリで言及したCausesValidationの振る舞いに一貫性が無い件に関して、私はCausesValidationの振る舞いに固執していたが、いろいろと調べてみると、名無しさんのコメントにあるように、FormのAutoValidateプロパティが優先するのが根本の原因のよう…

MixIn Interfaces Proxy

Seasar.DynamicProxyで2回インターセプターが実行される Interfaceを実装している場合は、Interface毎にProxyを作成していたのですが、Interface毎のProxyを作るときに既に拡張されたクラスからProxyを作ろうとしていたためです。DynamicAopProxyAspectWeave…

MixIn Interfaces Proxy(その2)

時間が無いので以下のような、簡単なデモを書いて動かしてみた。 namespace DynamicProxy { public class MixedInProxyTest { [STAThread] static void Main(string args) { IMethodInterceptor interceptor = new TraceInterceptor(); IPointcut pointcut =…

Eclipse 3.2

Eclipse SDK 3.2知らない間に出ていたので、とりあえず自宅のPCにインストールしてみた。おっ、と思ったのは2.1から3.0、更に3.1と移行する際に互換性の無かったプロジェクトやワークスペースが、3.1から3.2だと、互換性が保たれていた所。まさか、3.1を使っ…

CausesValidation

System.Windows.Forms.Control.CausesValidationプロパティは、そのコントロールがフォーカスを得た際にフォーカスを失ったコントロールのValidatingイベントが発生するか、しないかを制御するはずなのだが、 private System.Windows.Forms.TextBox textBox1…