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

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

やってみたら出来たので書いておく。Log4netの設定ファイル(log4net.configなど)に、以下のようなアペンダ定義があったとしよう。 100KBを境にファイル"MyApp.Log"をローリングするRollingFileAppenderの設定だ。 これをテンプレートにして、アペンダの記述…

DynamicAopProxy変更

自分で、DynamicProxyで拡張された型は代入互換性は無いと散々書いた癖に、DynamicAopProxyではそれを考慮していなかった。新しいDynamicAopProxyでは、毎回Interceptorを退避する処理の無駄を省くため、アスペクトのセットアップ時にMethodInfoクラスをキー…

相変わらずDiffgramにはまる

先日のエントリで言及した、生成したDiffgramを読めない問題だが、 Exception: System.Data.DataException Message: diffGram を読み込めません。'sql' ノードが見つかりません。 何故この例外が発生するかが、やっと判明した。 問題のDiffgramをもう一度見…

Woodcrest

PC

メインマシン(PC)も、去年から立て続けに・電源換装 ・TVチューナボードの故障、換装 ・ビデオカードの故障、換装とパーツを交換してきているが、全体的にかなりヘタってきており、来年頃にはいよいよ致命的な故障が出てもおかしくない状態だ。インテルが性…

JavaでDiffgram生成

先日のエントリに対して。 やはりXMLに問題があった。.NET Reflectorで当該メソッドを調べたところ、Diffgramはエラー行(error要素)が存在した場合、そのエラー行のid(id属性)で書かれているのと同じidを持つ、元々のデータセット行が存在していることを「大…

DynamicAopProxy変更

某掲示板で指摘されていた事項に対応。といっても、既に私の公開しているソースとS2.NETで使用しているソースとでは違いがあるので、修正すべきと思われる点のみ言及する。指摘されていた点を整理すると1.DynamicProxyにより拡張されたメソッドもAOPの対象に…

.NET Reflectorさま様

独自に生成したMS-DiffgramをDataSetでReadしているのだが、例外が発生する。 オブジェクト参照がオブジェクト インスタンスに設定されていません。 NullReferenceExceptionなのは解るのだが、この時、頼りになる情報が、DataSet::ReadXmlの中から上がってい…

はてなツールバー

はてなツールバーって、一般的に説明されている以外にこっそりと持っている機能があるのではないか。 統計解析機能 これは言わずもがな。 負荷分散機能 サーバ側で負荷分散する際のファクタの一つにしているとか。 負荷閾値制御 設定した閾値以上の負荷が掛…

そうまでして動的にバインドしたい理由

先日のコード片を見て大体想像はつくかと思うが、やりたかったことはIAction::Runメソッドと、GUI(Form, Control)のイベントのバインドをVisual Studio 2005のデザイナではなく、アノテーションで行うことだ。既に紹介したがIActionインタフェースを実装する…

Controlのイベントに動的に処理をアタッチする その3

DynamicMethodを使っていろいろ試している中で、非常に便利なものがあったので紹介する。同じILGeneratorを使ったMSILの出力でも、動的にアセンブリ、モジュールを生成する方法(AssemblyBuilderやModuleBuilder等のほにゃららBuilder系クラス)の場合、実際に…

anonymous delegate <> System.Delegate

結局は eventInfo.AddEventHandler(control, new EventHandler( delegate(object sender, EventArgs e) { action.Run(); }) ); というコードが、 eventInfo.AddEventHandler(control, delegate(object sender, EventArgs e) { action.Run(); }); と書けない…

Controlのイベントに動的に処理をアタッチする (解決!!!!)

Controlのイベントに動的に処理をアタッチする匿名デリゲート(メソッド)はコンパイラが生成していたクラスなんだよってことは知っていたし、前のエントリにも書いたが、まさかそれ自体を、それも引数をGenericsにして生成してやることまでは考えなかった。驚…

Controlのイベントに動的に処理をアタッチする その2

Clickイベントだとこれで問題無し。しかし、当然ながらイベントの型がEventHandler以外だと例外が発生する。イベントの型はEventInfo::EventTypeで取れるので、この情報を使ってイベントハンドラ自体も生成しないと駄目。 DynamicMethodを使ってEventTypeに…

WindowsForms用のDTO

未だにFormクラス自体をDTOと見なす文化もあるんだが、それはもう御免こうむりたい。かといって毎回DTOを起こすのも面倒なので、自動生成したいと目論んでいる。方法は頭の中にあるんだが、時間が無い。 もっと時間が欲しいな。追記>もっと時間が欲しいな。 …

Controlのイベントに動的に処理をアタッチする

メモ。こんなインタフェースがあったとして、 public interface IAction { void Run(); } このインタフェースのRunメソッドを、任意の名前を持つコントロール(System.Windows.Forms.Control)の、任意の名前を持つイベントに動的にアタッチするメソッドはこん…

ComboBoxとDataGridViewComboBoxColumnを同期させる(その4)(再)

昨日は中途半端にしか書けなかった。 その前の日のエントリで、カスタムオブジェクトであるGenderItemをComboBoxとDataGridViewComboBoxCellに同期して表示させるために、GetFormattedValueメソッドをオーバライドして対応したが、それではまだ問題があった…

クラスダイアグラムの画質

Visual Studio 2005(Express エディションを除く)ではクラスデザイナ機能が使えるが、その機能の中でクラスやインタフェースは、UML風のダイアグラムとして表示することができる。 このUML風のダイアグラムだが、クリップボード経由でイメージをコピーできる…

ComboBoxとDataGridViewComboBoxColumnを同期させる(その4)

今日は忙しいのでこれ以上書けないかもしれないので、メモとして書いておく。GenderItemComboBoxCellは、以下のように書き換える。 public class GenderItemComboBoxCell : DataGridViewComboBoxCell { public override object ParseFormattedValue( object …

ComboBoxとDataGridViewComboBoxColumnを同期させる(その3)

オブジェクトとデータバインディングした、ComboBoxとDataGridViewComboBoxColumnの振る舞いに納得がいかないと書いた。以下、順に解決していこうと思う。 DataGridViewComboBoxColumn上のComboBoxにデータソースが表示されていない GenderDTOのメンバである…

ComboBoxとDataGridViewComboBoxColumnを同期させる(その2)

昨日はリストクラスをそのままバインドしたが、これは現実的ではないので、画面の状態を表しているDTOとしてクラスを書き直してみた。先日のgenderリストはDTOのメンバであり、性別の2値を格納するリストだ。 public class GenderDTO : INotifyPropertyChang…

LazyInstantiation

メモ。instance="prototype"のコンポーネントで構成されているプロジェクトと、instance="singleton"で構成されているプロジェクトで起動時間に差が出ることに気が付いた。DIコンテナに登録するコンポーネントのインスタンスタイプをsingletonとマークした場…

ComboBoxとDataGridViewComboBoxColumnを同期させる

まさか、こんなことがすんなりできないなんて思わなかった。以下、順を追って作業。 ComboBoxとDataGridViewが配置されたFormを用意する ComboBoxはgendersComboBox、DataGridViewはgenderDataGridViewというベタな名前にする。 データ連結に使用するリスト…

GCSettingsクラス

NyaRuRuさんの6/12の日記「.NET GC & Memory (1)」を見ていたときにGC(ガベージコレクション)のアルゴリズムを.configファイルで指定する方法が紹介されていたが、 <configuration> <runtime> <gcServer enabled="true" /> </runtime> </configuration>.NETはJavaとは違い、このようにランタイム外部からGCに触ることはできないと思ってい…

DataGridViewComboBoxColumn

現在は、ドキュメント用にと、DI、AOP、DataBinding(以降、連結と訳す)を使ったサンプルのWindowsFormsアプリケーションを作っているのだが、標題のクラスにめちゃめちゃはまっている。 カスタムオブジェクトを通常のComboBoxやListBoxに連結するのと同様に…

任意のプロパティだけバインディングを無効にしたい

Formクラスで自動バインディングを行うと、FormのAcceptButton, CancelButton, Siteというプロパティに対するコンポーネントが見つかりませんという警告が出力されます。そのため、Formに対しては自動バインディングを行わず、手動でバインディングを行って…

プロジェクトテンプレート出力時に例外が発生する

Visual Studio 2005は自分で用意したプロジェクトを、同IDEで認識できるテンプレートとしてエクスポートできる、非常に便利な機能があるが、この機能のウィザードにはちょっと問題があるようだ。というのも、なんらかの原因で参照が切れたファイルがあるプロ…

DIコンテナにおけるAOP用途プロキシの処理コストと型の違い

5/31のエントリ?に対して、すぎもとさんに言及頂いた。 インスタンスの生成が頻繁に必要で、インスタンス生成時のコストを下げたい場合は、S2Container.NET標準のAopProxyが有利です。逆にインスタンスの生成時のコストがそれほど重要では無い場合は、Aspect…

.NETにおけるSeasar2.4のHotDeploy機能

先日のエントリ「WindowsFormsアプリケーションにおけるDI戦略(まとめ)」に対して、ひがさんからコメントを頂いた。 コンテナの初期化の時間をできるだけ減らすことが重要なら、Seasar2.4のHOT deployのようにオンデマンドでデプロイする方法もあります。HOT…

PowerShellIDE

PowerShellの開発環境(2)- PowerShell Memoで、PowerShellIDEという、WindowsPowerShellの開発環境が紹介されていた。こんなのが出来たらいいな、と思っていたのだが、やはり既に作っている人がいたのだな。(意外にもMS-MVPのサイトだ※)実際にインストー…

DotNetBar

Office2007のUIが先取りされて使われているんだけど、既存のSDKでどうやって実現するのだろう。 どうやらこいつを使っているらしい。 DotNetBar = Professional Applications コントロールビジネス(特に米国)は、未だ健在だ。