ページ

2004年11月19日金曜日

Avalon CTP on MSDN Subscriber Downloads

Avalon CTP on MSDN Subscriber Downloads より


明日、MSDN Subscriber Downloads に WinFX SDK Community Technology Preview がリリースされる。。。


えっ?まじ?まじっすか?

2004年11月18日木曜日

Spec# (ちょっと追加)

すぐ下 に書いた Spec# ですが、 名無しさん♯ に教えていただいた(どうもです)
http://research.microsoft.com/projects/T5/ppt/SpecSharpShort.ppt
を見ると確かに VS.NET 2003 らしきもので動いてますね。


それと、よくわからないと書いた object invariant ですが、この PPT を見てなんとなくわかりました。


  class T {
    int[] bufferInt;
    bool[] bufferBool;
    invariant bufferInt.Length == bufferBool.Length;


みたいに整合性のチェックを指定できるようです。
ただ、「いったいどのタイミングでチェックするのよ」 という問題があります。複数スレッドから同時アクセスされる可能性まで考慮すると、自動的に適切なタイミングでチェックすることは非常に難しくなります。そこで、expose (o) { . . . } という構文も追加されているということなようです。


なるほどです。method contracts と object invariants をきちんと使用すれば、インスタンスが正常な状態に保たれているかをかなり正確にチェックすることができそうです。むしろ問題は、正確なチェックをするような method contracts や object invariants を書けるかどうかかなぁ(^^;

2004年11月17日水曜日

Spec#

Spec# for Visual Studio .NET 2003 より。


Spec# っていうのは C# のスーパーセットで、



  • non-null type (参照型だけど null にできない。Hoge! hoge; のように宣言)

  • exception のチェック

  • メソッドの contract (Eiffel の表明みたいなやつ)

  • オブジェクトの invariant (不変性?具体的にどういう機能なのかよくわからない)

を追加したものとのことです。
# Spec# 自体は、すでに 名無しさん#さんのところ で既出です。


これは、まだペーパーだけなのかな?Microsoft Research の Download を見てもそれらしいのはないですし。
けど blog のタイトルが "for Visual Studio .NET 2003" とやけに具体的ですし、記事の中にも 「Visual Studio と統合された Spec# コンパイラ」 とか 「test generation と model-based testing のための SpecExplorer tool へのインターフェース」 とかって書かれています。Cω みたいにそのうち preview リリースとかがでるのかもしれませんね。
あと、この SpecExplorer というのもちょっと気になります。ググってみると、どうやら model-based testing のツールらしいんですが。。。


それと、いちおう書いておきますが、この Spec# は Cω (シーオメガ) と同じように Microsoft Research (Microsoft の研究機関) で研究中のものです。この先 Spec# や Cω がどうなるのかはなんともいえません。個別の言語としてリリースされる可能性もあるでしょうし、Spec# や Cω の機能の一部が将来の C# に取り込まれるという形になるかもしれません。ひょっとすると F# のように MS Research で育って、(Visual Studio とは関係なく) いつのまにか version 1.0 がリリースされたりするかもしれません。Spec# や Cω はそういった代物です。

Koders.com

Beyond Google... Koders.com - Open Source Code Search Engine より。


こちらで紹介されている www.koders.com ってなかなかおもしろいです。
いろいろなオープンソースなコードの中を検索することができます。ただ、残念ながら .NET 系のプロジェクトはまだそんなに多くはなさそうなんですが。

2004年11月16日火曜日

Virtual PC Guy はすごいぞ

Virtual PC Guy's WebLog より。


うーん、実に様々なものを Virtual PC で動作させています。気になったものをいくつか紹介。



The other reason why I love Virtual PC
CP/M-86 と Windows 1.01。
うーん、さすがに Win 1.01 は初めて見ました。


More Operating System Nostalgia
Windows 2.03、3.0。
2.03 も初めてです。3.0 は使ってましたけど。


Windows 3.11 on Virtual PC
日本語版が出ることはなかった Windows 3.11 for Workgroups です。


Win32s under Virtual PC
Windows 3.11 上の Win32s v1.3 は動作せず v1.25 なら問題ないとのことです。Win32s を使う場合は注意が必要ですね(って、そんなやついるのか?)
また、この記事のコメントで 「WinG は動作するか?」 との質問が出ていますが、これも問題ないとのことです(いや、だから。。。 しかし WinG とはなつかしいな)


Microsoft BOB lives!
そういや、こんなのも聞いたことあります。これも日本語版は出なかったんですよね?


OS/2 2.11 under Virtual PC
うむぅ、OS/2 は Warp はちょこっとさわったことくらいはありますが、2.11 はさわっこともありません。


ほんとすごいです(^^;
もちろん、他にも Virtual PC に関するちゃんとした記事もあるみたいです。 (私は読んでませんけど(^^; )

MSN Desktop Search

neowin.net Exclusive: MSN Desktop Search Revealed
なんか、MSN Desktop Search なるもののスクリーンショットがあります。


どうやら
http://blogs.msdn.com/msnsearch/archive/2004/11/15/257377.aspx
internal pre-release ビルドらしいです(^^


# リークものに対して、こんな風に Microsoft の人がコメントつけるのも珍しいな。。。

2004年11月15日月曜日

Safari Visual Studio Help Integration (VSHI) Beta

Safari Visual Studio Help Integration (VSHI) Beta より。


Visual Studio 2005 beta のヘルプに Safari の検索などを統合するためのツールの beta みたいです。


って、Safari って何よ?ということなんですが、プログラマや IT プロフェッショナル向けの書籍 1,300冊程度を検索・閲覧できる有料サービスみたいです。
詳しい説明は How Safari Works こちらにあります。
どうやら、検索は自由にできて、数センテンスをプレビューできる、気に入ったら自分の本棚に移動して読む、本棚がいっぱいになったらアップグレードするか要らない本と交換する、という感じでしょうか?(どのみち洋書しかないですし、あんまり詳しく読んでません(^^; )


日本語でもこういうサービスあったらいいなぁ。

2004年11月12日金曜日

PInvoke する DLL を Load/Unload する方法

PInvoke Library Load/Unload Behavior – Freeing Unmanaged Libraries より。


.NET で レガシーな DLL を使うときは PInvoke して使うことになるわけですが、PInvoke では一度 DLL を Load したら二度と Unload することはできません。これを無理やり Unload してしまう方法のようです。
なるほどぉ、PInvoke なメソッドを呼び出す直前に LoadLibrary しておいて、Unload したくなったら GetModuleHandleExA でハンドルを取ってやって FreeLibrary してしまうわけか。そのときに LoadLibrary と辻褄があうように FreeLibrary がゼロを返すまで繰り返し呼んでやると。


って、これはいくらなんでも強引過ぎやしないか?w
元記事でも 「まったくお勧めできない」 と書かれてますので注意w
詳しくは元記事を。






上記の記事からリンクされている Dynamic PInvoke より。


おぉ、.NET Framework 2.0 では Marshal.GetDelegateForFunctionPointer なんていうのが追加されるんですね。
これを使うと、Win32 API の LoadLibrary、GetProcAddress で取得した関数ポインタを delegate に変換できるみたい。なので、上記のような無茶をせずにごく自然に LoadLibrary、FreeLibrary ができるようになるわけか。
あと、元記事に 「今まで DllImport を使って指定してた PreserveSig だとかはいったいどうやって指定するんだ」 というするどい突っ込みがされていますが、これもきちんと UnmanagedFunctionPointerAttribute が追加されるので問題なしとのこと。

MSN Search (beta)

MSN Search (beta)
http://beta.search.msn.com/


Microsoft 製の新しい検索エンジンの beta リリースみたいです。
msnsearch's WebLog で知りました。


なにげに http://beta.search.msn.co.jp/ にアクセスしてみたら、ちゃんと日本語版もありました。けど、 "C#" で検索するとシャープが無視されて "C" で検索したのと同じ結果になっちゃうとか、.com にはある Images が .co.jp にはないとか、どうも日本語版のほうはバージョンが古いような気がします。ちなみに、日本語の検索はどちらも OK みたいです。


MSN Search (beta) のヘルプを見ていて気付いたんですが MSN Sandbox なんてのがあるんですね。なんかいろいろ紹介されています。



  • MSN Search Beta … 今回のやつ

  • Lookout Email Search Tool … ローカルのファイルやメールなどを検索してくれるツール (Google Desktop Search みたいなもの)

  • Newsbot … MSN Search (beta) と同じ検索エンジンを使って 4,000 のソースから自動的にニュースを作りだすサイト ( http://news.google.com/ とほとんど同じ?)

  • MSN Toolbar … ツールバー

  •  … デスクトップに貼り付けておいて、友達と交流するツール (説明が難しいな。リンク先に日本語での説明もありますから気になる人は見てみてください)。内部で MSN Messanger を使っている?

  • NetScan … news group (NNTP) の情報をいろいろできる

  • TerraServer and TerraService … すごいサーバ(笑)。.NET やら SQL Server 2000 やらで作られた 2テラバイトのデータベースとかで動いている。

へぇ、Newsbot なんてのまであるんですね。

2004年11月10日水曜日

Generic タイプパラメータの命名規則

Design Guidelines Update: Names of Generic Type Parameters
によるとタイプパラメータの命名規則が変更になったようです。


タイプパラメータというのは、たとえば、


public class List<T> { … }


の "T" のことです。
この "T" という名前については、以前の命名規則だと "T"、"U" などのように大文字 1文字とすることになっていました。それが、先頭を "T" でつけたわかりやすい名前をつけること、となりました。ただし、わかりやすい名前にする意味がないものは "T" などのままでも OK です (たとえば、上記の List なんかはもともとあらゆる型を受け入れるわけで、わかりやすい名前なんてつけようがないから "T" で OK)。


また、BCL (Base Class Library。.NET Framework に標準で入っているクラスライブラリだと思ってもらえばいいです) に含まれている Generic なクラスについても新ガイドラインにあわせて命名を変更することを検討中とあります。


いちおう、最初のところに "we decided to modify the generic type parameter naming guidelines." とあるので、ガイドラインがこのように変更されることは確定しているようです。
ただし、ガイドライン自体が確定したわけではないので、今後再変更されることも十分ありえると思います。

Paint.NET の新しい URL

以前取り上げた Paint.NET ですが、新しい URL は http://www.eecs.wsu.edu/paint.net/ こちらのようです。


History のところに Paint.NET は Washington Sate University で 2004年春に作られたのが始まりで (Computer Science senior design project というのはゼミかなんかなのかな?)、開発メンバーの 1人である Rick Brewster 氏は今は Microsoft で働いているなんてありますね。


その Rick Brewster 氏の blog はこちらのようです。
http://blogs.msdn.com/rickbrew/

2004年11月1日月曜日

C:\Windows\Temp のアクセス権

Windows XP Professional (Service Pack 2) での話なんですが、いつの間にか C:\Windows\Temp (正確には %WINDIR%\Temp ) のアクセス権が "aspnet_wp" と "NETWORK SERVICE" だけになっちゃってました(すなわち、Administrator ですら読み書きできない)。いつからこうなっていたのかは定かではありませんし、ひょっとすると最初からこうなっていたのかもしれません(けど、最初からっていうことはないと思う)。ただ、こうなっていることに気付いたのは WinXP SP2 を入れた後なので、やっぱり SP2 が怪しいような。。。


実は WinXP SP2 を入れた直後から Windows Update ができなくなってました。
Windows Update のサイトにアクセスすると 「最新バージョンの Windows Update ソフトウェアを確認しています ...」 というのが表示されて ActiveX コントロールをダウンロード・セットアップしようとするんですが、しばらくまったあと 「申し訳ありません」 というメッセージとともに  0x8DD00004 というエラーが表示されてしまっていました。検索してみるといろいろ 「Windows Update が動かない場合の対処方法」 が公開されてますが、これらを参考にどんな対処をおこなっても Windows Update できるようにはなりませんでした。
けど、自動更新は動いているし 「まっ、そのうちなんとかなるだろ」 とあきらめてました。


次に困ったのは MSDN Subscriber Downloads にある SQL Server 2005 CTP - October 2004 - Developer Edition (English) を入れようとしたときです。
まず、SQL Server 2005 CTP Oct 2004 のセットアップ中に MSXML3 がエラーになってセットアップが先に進めなくなってしまいました。セットアップ CD-ROM (実際は iso イメージですが) の中にある MSXML3.MSI を直に実行してみてもやはりエラーになります。msiexec でログを取ってみたりとかいろいろしたんですが、エラーの原因はわかりませんでした。仕方ないので MSXML3.MSI を他のものに置き換えるという荒業を使ってセットアップを進めました( SQL Server 2005 CTP Oct 2004 に含まれる MSXML3 は MSXML 3.0 SP6 らしいんですが、それを Microsoft からダウンロードしてきた MSXML 3.0 SP5 の MSI に置き換えました。もちろんバージョンが違うのでこんなことをしても正常に動く保証はまったくありません)。
こうやって無理やりセットアップを進めたところ、かなり時間がたってからなにやらメッセージが表示されました。曰く 「C:\Windows\Temp の permission を確認しろ」 とかなんとか。。。


さっそく C:\Windows\Temp を Administrators が読み書きできるようにしてみたところ Windows Update も MSXML3.MSI のセットアップ(SQL Server 2005 CTP Oct 2004 のセットアップ) も問題なくできるようになりました。


うーん、まさかこんなところに原因があるとは。というか、いまどきって "C:\Documents and Settings\USERNAME\Local Settings\Temp" のほうを使うべきなんじゃないのかなぁ?