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

WindowsFormsアプリケーションにおけるDI戦略(まとめ)

ここ一ヶ月位、WinwodowsFormsアプリケーション上でDIコンテナを使う際に考慮しなくてはならない点に関して言及してきたが、やることはやった感がある。そこで、このテーマの最後として、何を行ったかをまとめておこうと思う。 DynamicProxyによるAOP実装 .N…

ライブラリィを見る視点

System.ComponentModel はすでに死んだ、IDisposableも死につつある私はTableAdaptorは使わないので、同クラスに特に感想はない。というかTableAdaptorはおろか、データセット(DataSet)も含めて、Visual Studio 2005のデザイナで生成されたコードにはできる…

リファクタリングツール

Visual Studio 2005のリファクタリングツールだが、名前空間の変更、移動がサポートされていないのが我慢できん。 ReSharperでも買おうかな、でも$199という中途半端な価格設定が手を引っ込めさせる。これが$100だと飛びつくのだが(当たり前だ)。

一時PEソースファイル?

Visual Studio 2005で複数のプロジェクトを持つソリューションを開いて編集中に、C#のソースコードファイル(〜.cs)を別なフォルダに移動しようとすると以下のダイアログが出ることがある。 意味不明だ。プロジェクトによって発生したりしなかったりだし、移…

全然降らない

今日は雨が降るって言ってたのに。週間予報ならまだしも、一日前に発表された予報すら当たらないということはどういうことだ。新型の予報衛星、コンピュータの処理能力向上、予報士の増加など、インフラは整ったはずだが10年前と比較して、一日後の天気予報…

DIにおけるリフレクション情報のキャッシュ (3

.NETのDIコンテナにおいては、リフレクション情報のキャッシュが有効か、無効なのかに関して、そろそろ決着をつけようと思う。前回の日記ではキャッシュの有無によりアプリケーション起動まで、つまりDIコンテナの生成〜初期化の時間に有意な差は発生しなか…

全然晴れない

今日は晴れるって言ってたのに。 天気予報は科学の進歩により百発百中になると子供の頃からずっと思っていたが、最近は逆に天気予報が的中しなくなってきているような気がしてならない。それが異常気象のせいなのか(予報というからには、「過去にこういう気…

PDF Open Parameters

PDFを開く際に、AcrobatReaderをコントロールするためのパラメタを外側から指定できる。PDF Open Parameters (PDF: 154k)Readerを起動する際のパラメタの他に、URLでPDFを指定した際にクエリとしてパラメタを渡すこともできる。 http://example.org/doc.pdf#…

コンテナの終焉

.NET Framework、WindowsForms用のフレームワークを書いているが、肝は結局のところForm(System.Windows.Forms.Formクラス)の扱いをどうするかにかかっていると感じている。あとは、サーバサイドのフレームワークとあまり変わらない。(変えたくない) VisualB…

DIにおけるリフレクション情報のキャッシュ(1

ここしばらくは、.NETスマートクライアントでDIコンテナを使う際の省力化、効率化、性能向上を目的としたエントリをテーマにしていたが、先日のAOPネタ他でそれも大体は目処がついた。以下、ネタにしてきた内容の一覧だ。 Castle.DynamicProxyを用いたAOPの…

DIにおけるリフレクション情報のキャッシュ(2

.NETのリフレクション情報の取得処理は元々軽いので、キャッシュしても有意差はでない キャッシュのメリットがデメリットに相殺されている ここ最近、Javaと.NETをいったりきたりしていたのですっかり忘れていたのだが、.NETは型に対してのメタデータをモジ…

ToolStripManager.VisualStylesEnabled

WindowsForms2.0における新しいToolStripコントロールを使っていると、ツールバー(ToolStrip)の背景色や、メニュー(ToolStripMenu)の選択色、反転色などの微妙な部分がVisualStudio 2005や他の一般的なWindowsアプリケーションと違っていることに気が付くは…

DIコンテナで生成するオブジェクトを拡張する

Kazzzの「JとNの狭間で」- DynamicProxyとリフレクションのエントリに関して、すぎもとかずやさんから早速言及頂いた。 CreateProxyの方は、DIコンテナで作成したインスタンスをそのまま拡張してくれるので、想定通りの動きをするのですが、CreateClassProxy…

DynamicAopProxy変更

今日のエントリを書いていて、ふと思うところがあって修正。(暫定なので問題があれば戻すかも)Seasar.Framework.Aop.DynamicProxy.DynamicAopProxy.cs 自身のインスタンスを生成したタイミングで、拡張した型を生成するように変更している。そのためにプロパ…

DynamicAopProxy 更に変更

拙作の実装をベースにして更に標題のクラスを見直した。現在の実装には効率上の弱点がある。それはメソッドをインターセプトする度に、毎回Aspectをセットアップしていることだ。一度や二度ならばさほど気にならないかもしれないが、例えば1000回呼ばれるよ…

プロパティインジェクションのためのアノテーション位置を拡張する

日記でも何度か紹介しているが、Seasar2と同様のプロパティインジェクションで用いるアノテーション(カスタム属性)の宣言は、拙作の.NET用DIコンテナでも同様に、以下のように記述する。 public class HatenaUser { [Binding(BindingType = BindingType.MUST…

プラネットアース

プラネットアース/NHKスペシャル5/7にNHKで放映された同名の番組のハイビジョン特集を見た。最近のTVで本当に凄いと感じる映像など、まずお目にかかることなど無かったのだが、正直この番組には驚いた。なにに驚いたかって、高空から衛星、又は飛行機、その…

DynamicProxyとリフレクション

拙作の.NET Framework2.0用DIコンテナ(Seasar2.4クローン)のAOP機能でも採用しており、ここの日記でも何度か紹介しているDynamicProxy(Castle.DynamicProxy)だが、DynamicProxyにより拡張された型から、リフレクションによりメンバ情報を取り出すときには注…

カスタム属性を用いたデータバインディングの省力化(INotifyPropertyChanged実装編)

カスタム属性を用いたデータバインディングの省力化に関しては、期待した実装、つまりはユーザが定義したオブジェクトとコントロールの双方向のバインディングを全て実現できたのだが、実は今までのエントリでは敢えて触れていない部分がある。.NET Framewor…

C#とVB.NETのソース相互変換

.NETは複数の言語で開発が可能という特徴があるが、それが却って災い?することがある。それは.NET開発者向けのサイトに掲載されている、サンプルコードの実装も複数存在しいることだ。MSDNであれば全ての言語でのサンプルをを見ることができるが、個人サイト…

カスタム属性を用いたデータバインディングの省力化(BindingSource編)

中断してしまったのでおさらいになるが、5/13の日記ではリスト形式の項目をバインドするカスタム属性を用意したが、宿題が残っていた。 どうせ.NET Framework2.0を使用しているのであればやはりBindingSourceクラスを使わない手は無いと思うので、今後はBind…

今日のような天気

をどれほど待っていたことか。 昨日までは、このまま梅雨に入ってしまうんじゃないかと思っていたよ。 北海道育ちなんで、梅雨の時期が嫌い。今日みたいに乾燥している日が大好き。

コメントSPAM

継続的にSPAMがポストされているので、はてなの拒否IPの範囲をかなり広くした。申し訳ないが、これによってコメント出来ない方が出てしまうかもしれない。あまり酷いようなら以前に書いたように、はてなユーザ以外のコメントを禁止するしかないが、それはし…

戦場のアリア(サントラ)

映画は見てないが、先日仕事で出張の際にANAの旅客機内で聴いて、ちょっといいなと思って調べたら、吹き替えがロランド・ヴィラゾン(テノール)とナタリー・デセイ(ソプラノ)なのね。デセイは勿論いいけど、特にヴィラゾンの声が印象的だった。買うかも。(で…

プログラミング C# 第4版

第3版は持っているので買う気は無かったのだが、近所の本屋で手にとって見ると改訂版といいながらも、かなりのページ増になっているので買ってしまった。過去にここで紹介してきた良著はあるが、.NETを対象とした良い技術書が、Javaに比べて圧倒的に少ないの…

期待する、しないこと

OOP

L'eclat des jours(2006-05-19) タイムリーだったし、我々は提供者と利用者のどちらの立場にもなり得るので興味深い。artonさんが列挙したものは全て同意。他にあるかな。 利用者に期待しない ソースコードが読まれることを期待しない フィードバックを期待…

WebBrowserコントロールとTextプロパティ

フォームに貼り付けたコントロールのTextプロパティをチェックして、書き換え可能であれば書き換えてしまうコードがあったとして、たまたま、対象がSystem.Windows.Forms.WebBrowserコントロールだったとしよう。 PropertyInfo info = form1.ActiveControl.G…

WebBrowserコントロールとTextプロパティ(その2)

やまきさんに言及頂いた。 Yuya Yamaki’s blog 最初は私も何か変わったことをしているのではないか、と思ったのだが、恐らくはSystem.Windows.Forms.WebBrowserBase#Textプロパティが以下のように実装されているだけではないだろうか。 [EditorBrowsableAttr…

体調不良

で書く気無し。久しぶりにネタ無しで終わる本日でした。

PowerShellにはまる

これまでの流れで週末からWindows PowerShellについて、いろいろと調べているのだが、これは非常に面白い。例えばCmdLet(コマンドレット)という機能があって、以下のようなC#で書いたクラス(勿論VBでも良いが)から自分だけのコマンドが作れるのだ。 using Sy…