2005年09月28日

MessageQueue.Create

   このエントリーをはてなブックマークに追加 Clip to Evernote
Microsoft .NET Framework SDK クイック スタート チュートリアルのメッセージキューのところの説明には、

必ずしも既存のキューを参照する必要はありません。このキューが存在しない場合は、自動的に作成されます。

とあります。この文章にだまされました。
いくらやっても、例外が発生して、送信ができません。なぜダメなのかその方法が
わかりません。
Googleで、「MessageQueue」を検索しても、この問題を解決してくれるページになかなかたどり付けません。

結局、解決してくれたのは、MSDNライブラリでした。

System.Messaging.MessageQueue.Create(@"myMachine\MyQueue");

とメッセージキューを明示的に作成しないとダメみたいです。
では、上記のクイック スタート チュートリアルの文章はなんだったんでしょうか。
・.NET Framework V1.0 では、これが正しかった。
・説明の誤り
・僕の文書読解能力の問題
どれなんでしょうか。
  

Posted by gushwell at 21:13Comments(0)TrackBack(0)

2005年09月27日

インターフェースと抽象クラスの使い分けについて

   このエントリーをはてなブックマークに追加 Clip to Evernote
インターフェースと抽象クラスの使い分けについて質問されることがあります。
でも、一口に、「この場合は、インターフェースで、こういった場合は、抽象クラスを使うんだよ」とは言えないところがつらいですね。
「親子関係があって、子供の共通実装部分を定義したい時には、抽象クラスで、親子関係に縛られずに、共通の操作を決めたい時には、インターフェースだよ」、と言っても、じゃあ、自分が今抱えている問題にそれを当てはめようとしたときに、
すぐにこれだ、と思える例が出てこない。フレームワークを作成している人達は、そんなことはないのだろうけれど...

で、ググッてみたら、MSDN library のページ「抽象クラスとインターフェイスに関する推奨事項」にたどり着きました。

http://www.microsoft.com/japan/msdn/library/ja/Vbcon/html/vbconabstractclassesversusinterfaces.asp

そこには、こんな一文がありました。

小さな機能単位をデザインする場合は、インターフェイスを使用します。大きな機能単位をデザインする場合は、抽象クラスを使用します。

なるほどね、と思いました。実際に、.NET Framework はこの指針で設計されていますね。  
Posted by gushwell at 22:09Comments(2)TrackBack(0)

2005年09月26日

IIS6.0でHTTP 404 のエラー

   このエントリーをはてなブックマークに追加 Clip to Evernote
イントラネットで運用しているMovableTypeをWindows2000サーバーから、別マシンのWindows2003サーバーに移行する。
まず、Perl, MySQLをインストール。その後、MovableTypeのデータをフォルダごとコピー。export, importの機能も用意されているようだが、今回は利用していない。
次に、IISで仮想ディレクトリとCGI拡張子の設定をする。
これで、動くと思ったのだが、HTTP 404 のエラーで動いてくれない。
このエラーは、「ページが見つかりません」というエラーだが、フォルダの指定も間違っていないし、おかしいぞ、といろいろ調べていたら、IIS6.0は、デフォルトでは、Perl CGIが動作しない設定になっていることが判明。

セキュリティ対策の一環なのだろうが、ちょっとこのエラーコードは不親切ですね。えっ、この変なメッセージもセキュリティ対策の一環だって???
  
Posted by gushwell at 23:19Comments(0)TrackBack(0)

2005年09月25日

C#プログラミングレッスン 読者数 700名突破

   このエントリーをはてなブックマークに追加 Clip to Evernote
今日、メルマガ「C#プログラミングレッスン」の配信予約をしたのだけれど、読者数が700名を突破しました。
購読者の皆さん、ほんとうにありがとうございます。
このメルマガが、購読してくださる方々の何らかのお役に立てれば、とても光栄です。でも、僕のつたない文章でどこまで正確に伝わっているのか、を考えると、ちょっと不安。
メルマガの感想など、なんでも良いので、メールいただければ嬉しいです。
  
Posted by gushwell at 11:23Comments(2)TrackBack(0)

2005年09月24日

コンピュータのしくみを理解するための10章

   このエントリーをはてなブックマークに追加 Clip to Evernote
昨年の夏だったと思う。宇都宮大学の馬場敬信教授とお話する機会があった。
先生曰く、「これからコンピュータについて勉強しようと考えている人を対象に、本を書いてるんですよ。」
どんな内容かを聞いてみると、0と1の世界から出発してコンピュータのハードウェアとソフトウェアの基礎を平易な文章で分かり易く説明するという内容らしい。
それを聞いて、「それなら先生、ぼくが最近読んだ本で、とても良い本がありますよ。なにかの参考になるんじゃないですか」と Charles Petzold 氏の『CODE コードから見たコンピュータのからくり』(以下『CODE』)という本を紹介した。
...
約1年後に出来上がったのが、技術評論社から出ている『コンピュータのしくみを理解するための10章』という本だ。
手にとって、さらっと目を通しただけだけれど、図も豊富で大学の先生が書いた本としては、親しみやすい内容になっているかな。
コンピュータの仕組みをハードウェアとソフトウェアの両面から勉強したい人には、なかなか良い本なのではと思う。
もちろん、内容が内容だけに、いくらやさしく書いてあっても、読み物のようにすらすら読めるような本ではない。
先生は、一般の人にも読んでもらいたい、という強い希望があるようだが、さすがに、まったくの初心者にはちょっと厳しいかな(^^;

ちなみに、この本の巻末の参考文献には、僕の紹介した『CODE』がしっかりと載っていた。
『CODE』は、馬場先生の本よりもさらに詳細にコンピュータの仕組みを紹介しているので、馬場先生の本を読んでさらに詳細に知りたい方は、『CODE』を読んで見ると良いと思う。
  
Posted by gushwell at 21:26Comments(0)TrackBack(0)

2005年09月20日

Visual Studio 2005 β2 のクラスダイアグラム

   このエントリーをはてなブックマークに追加 Clip to Evernote
Visual Studio 2005 β2 のクラスダイアグラムをさわって見ました。
困ったのは、1対多の関連の線を引こうと思っても引けないことです。いったい、どこで、多重度を指定するのでしょうか。仕方が無いので、ソースコードの画面を開いて、

private List<MyClass> items;

とフィールドを追加。
これなら関連線を引いてくれるだろう、と思ったら、ダイアグラム上は変化なし。
色々とさわって、コンテキストメニューから「コレクションの関連として表示」を選んでやっと、関連線を引くことができた。デフォルトの動作で関連線を引いてくれたほうが絶対に親切だと思うんだけど...

それに、クラス図を書くために、コードを書かないといけないので本末転倒のような気がします。
他に、やり方があるのかな?

たしかに、enum や、 struct と class の違いなどは分かりやすいし、Delegate も表現できるので、ある面では UMLのクラス図にない強みもあると思うけれど、全体的には、UMLのクラス図に比べて表現力が乏しいと思うのは僕だけでしょうか。UMLとは目的が違うと言えばそれまでなのですが...
  
Posted by gushwell at 22:17Comments(0)TrackBack(0)

2005年09月16日

岡山大でソフト不正使用の疑い?

   このエントリーをはてなブックマークに追加 Clip to Evernote
スラッシュドット ジャパン | 岡山大でソフト不正使用の疑い、岡山地裁が証拠保全手続きだそうです。学校関係者には大きな波紋が広がりそうですね。
随分前は、僕の周りにもソフトウェアの不正利用に対する認識が低い人が大勢いましたが、最近はそういった人はいなくなりました。でも一般的にはまだまだなんでしょうね。
  
Posted by gushwell at 20:55Comments(0)TrackBack(0)

2005年09月15日

アセンブリのリダイレクト

   このエントリーをはてなブックマークに追加 Clip to Evernote
構築時とは別のバージョンのアセンブリをロードさせたいときには、アセンブリのリダイレクト機能を使うことになりますが、この動作を確認しようと、以下のようなconfigファイルを書いたのですが、なぜかうまく動いてくれませんでした。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin"/>
<dependentAssembly>
<assemblyIdentity name="MyLibrary"
publicKeyToken="xxxxxxxxxxxxxxxx"
culture="neutral" />
<bindingRedirect oldVersion="1.0.*.*"
newVersion="2.0.1.1"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

bindingRedirectタグのoldVersionの書き方がまずかったようです。
本当は、
<bindingRedirect oldVersion="1.0.0.0"
newVersion="2.0.1.1"/>

のように書かないとダメみたいです。これに気が付かず、永遠と悩んでいました。
それと、
oldVersion="1.0.0.0-1.999.999.999"
のようにバージョンの範囲を指定する書き方もあるようです。
  
Posted by gushwell at 21:58Comments(0)TrackBack(0)