ページ

2005年12月15日木曜日

C++/CLI が ECMA で認可

C++/CLI now an International Standard! より


C++/CLI が ECMA で認可されたそうです。また、ECMA から ISO に提出されたそうです。


さがしてみたらありました。
Standard ECMA-372 C++/CLI Language Specification (December 2005)

これですね。

VS2005 RC、beta、CTP のアンインストール上の注意

Visual Studio 2005 のセットアップは以前の RC、beta、CTP などのアンイストールを自動では行ってくれません。手動できっちりアンインストールする必要があります。詳しいことは、


ディベロッパー製品開発統括部 Blog: 「Visual Studio 2005最終リリースバージョンのセットアップの際に


を参照されるといいと思います。


ただ、これだけだと足りないかもしれません。
VS2005  は C:\Documents and Settings の下などにもいろいろとファイルを作ります。ただ、このようなところにあるものは、ユーザの設定値やユーザが作成したファイルなので勝手に消すわけにもいきません。なので、基本的にはアンイストールを行っても削除されません。自動アンインストールツールを作っても削除されません。もし心配ならこれらのファイルも消しておいたほうがいいでしょう。(私は、"Visual Studio 2005" とか "Visual Studio 8" とかっていう 2005 に関連しそうなフォルダをバックアップを取りながら消すようにしてます)


で、きちんとアンインストールしたつもりでも、ツールボックスの内容がおかしかったり、ひどいときは IDE でのキー入力もまともに動かなかったりする場合があるようです。どうやらこれは、
How to resolve errors opening currentsettings.vssettings in the final release of VS 2005
によると "C:\Documents and Settings\USERNAME\My Documents\Visual Studio 2005\Settings\currentsettings.vssettings" が残っているのが原因のようです。そして、これは



  1. Visual Studio IDE のすべてのインスタンスを閉じる。

  2. スタートメニューからコマンドプロンプトを起動する。

  3. そのコマンドプロンプトに
    "%programfiles%\Microsoft Visual Studio 8\Common7\IDE\devenv.exe" /resetuserdata
    (VS2005 がデフォルトのパスにインストールされている場合)
    と入力して devenv.exe を /resetuserdata 付きで実行する。

  4. devenv.exe が終了するまで 1~2分待つ。タスクマネージャで devenv.exe が終了したか確認する。

とすることで解決できるようです。
リファレンスには /resetuserdata というのは載ってなくて、/ResetSettings があります。上記の blog によると /resetuserdata が正しいみたいですが。。。

Visual Studio 2005 日本語版 MSDN Subscriber Download に登場

もうすでに多くの方がお気づきだとは思いますが。。。
MSDN Subscriber Download にて Visual Studio 2005 日本語版の各種 (Express、Standard、Professional、Team Editions、Team Suite など。もちろん MSDN のサブスクリプションレベルによってどこまで見えるかは違うと思いますが) がダウンロードできるようになっているようです。


まだ、 http://www.microsoft.com/japan/msdn/vstudio/express/ こちらは beta2 のままみたいですが、きっと近日中に公開されるんじゃないかと思います。

2005年12月14日水曜日

CSS プロパティウインドウアドイン

CSS Property Window Add-in For VS2005 Released! より


CSS (カスケーディング・スタイル・シート) をプロパティウインドウで確認・編集できるようにする VS2005 用アドインが紹介されています。CSS Properties window, with screenshots では画面イメージ付きで紹介されています。
ただ、VS2005 日本語版でちゃんと動くのかどうかなどは不明です。

2005年12月9日金曜日

Exception の代わりに NotImplementedException を使う

Exception instead of NotImplementedException より


VS2005 では interface を書いたときに出てくるスマートタグでコードを自動生成されると throw new Exception( ... ) という中身のメソッドが追加されます。これを Exception ではなく NotImplementedException に変更する方法が紹介されています。"Program Files\Microsoft Visual Studio 8\VC#\Snippets\1033\Refactoring\" に入っている MethodStubBody.snippet ファイルを書き換えればいいそうです。ちなみに、VS2005 日本語版 RC では 1033 ではなく 1041 でした。あと、MethodStubBody.snippet ではなく MethodStub.snippet みたいです。

Windows Live Local

Windows Live Local が公開されたそうです。けど、あいかわらず日本とかは荒い地図しかありません。
これは、MSN Virtual Earth の新バージョンにあたるみたいです。というか、http://virtualearth.msn.com/ にアクセスすると http://local.live.com/ にリダイレクトされるようになってますね。


Windows Live Local is live!
こちらで Microsoft 本社(シアトル)やビル・ゲイツ宅へのリンクなんかが紹介されています。


Virtual Earth SDK
SDK の Version 2.0 も公開されています。

コードネーム Phoenix (MSResearch)

"Codename: Phoenix" Prerelease is Now Available より


Microsoft Research のコードネーム Phoenix Framework というもののプレリリースがダウンロードできるようになったそうです。
「Phoenix はソフトウエアを最適化したり分析したりするフレームワークのコードネーム。このフレームワークは、すべての将来の Microsoft のコンパイラ技術の基礎である」 とかなんとか。。。よくわかんないけど、なんとなくおもしろそうなのでとりあえずメモ。

2005年11月29日火曜日

シングルインスタンスなアプリ at VS2005 C#

Single-Instance Applications and C# より


Windows.Forms なアプリケーションで、シングルインスタンスのみを許可したい場合があります。ここでいうシングルインスタンスなアプリっていうのは、複数起動を禁止して、すでに自分が起動済みの場合は何もせずに終了したりするようなアプリのことです。
今までは、FindWindow API を使ったり、名前付きの Mutex を使ったりしていました。これが VS2005 では標準でサポートされています。


が、上記の記事によると、この機能って VB チームがデザインして VB ユーザ向けになってるので VB では簡単にプロジェクトの設定でシングルインスタンスに設定できるのに、C# ではできないみたいです。だから、C# では Program.cs に Microsoft.VisualBasic.dll の参照を追加した上でコードを書き換えなくちゃいけないと。書き換え例は上記のリンク先にあります。

SQL Server 2005 Express を自分のアプリといっしょにセットアップする方法の 紹介記事

Embedding SQL Express with your application より


ざっとした訳
もしまだ知らないんだったら、アプリケーションのインストールに SQL Express を組み込む方法についての Rob Walters の記事を見るべし。http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsse/html/EmSQLExCustApp.asp
この記事は、SQL Express のセットアップで使えるコマンドラインパラメータの基本的なところ、SQL Express のインスタンスの検出・列挙・インストールのためのラッパークラスを作る方法、SQL Express を Visual Studio 2005 の ClickOnce でデプロイすることの調査なんかがカバーされている。
(以上、ざっとした訳。もちろん無保証(笑))

xbap ってそういうことだったのか

A Couple of Avalon Express (XBAP) Demos より


WinFX Nov CTP を VS2005 RC 日本語版に入れてみる - 玉砕?」 で書いたように WinFX CTP を入れてみようとしていたときに xbap とかって拡張子を見かけて 「なんだろ?」 と思っていたんです。
上記の記事によると Windows Presentation Foundation (WPF) はスタンドアローンアプリケーションとしてだけではなく、ブラウザアプリケーションとしても実行できて、ブラウザ上で動くときはセキュアであるように WPF のサブセットがサンドボックスで動くことになる。で、この技術が WinFX beta1 のときは "Avalon Express" と呼ばれていて拡張子は .xapp だった。それが Sept CTP のときには "Web Browser Application"、拡張子は .xba と変わり、さらに Nov CTP では "XAML Browser Application"、拡張子は .xbap となったと。xbap っていうのはそういうことだったんですね。(つか、名前変わりすぎ(笑) )


で、ちょっと見たところでは IE が直接 "XAML Browser Application" をサポートするわけではもちろんなく、IE の上に XPSViewer が貼り付いているようです。って、「見た」 んじゃなくて 「玉砕」 のところに書いたように BamlParseException の例外が出ちゃってその例外のスタックトレースを見たら XPSViewer になってたから気づいただけなんですが(^^;
ちなみに、いまだに WPF を動かすことは出来ていません。上記の記事でも 2つの xbap アプリが紹介されていますし、動かしてみたいんですけどねぇ。

link で netmodule をまとめる

Netmodules: Sort of like a lib より


VS2005 の C++ のリンカを使うと C# や VB などで作った別々の netmodule を 1つにまとめて exe にしたりできる、という話が紹介されています。また、この記事によると pdb ファイルについてもリンカが面倒見てくれるようです。

2005年11月21日月曜日

WinFX Nov CTP を VS2005 RC 日本語版に入れてみる - 玉砕?

WinFX Nov CTP を VS2005 RC 日本語版が入っている環境に入れてみました。この VS2005 は RC であって RTM ではありませんが、mscorlib とかのバージョンを見ると 2.0.50727.42 となっていて、英語版の RTM と同じバージョンナンバーになっています。だから WinFX Nov CTP が動くんじゃないかとちょっと期待したんですが。。。


残念ながら今のところまともには動いていません。
WinFX Runtime Component のセットアップは無事完了(文字が化けまくってましたが)。拡張子 XAML のファイルを作ってダブルクリックしてみるとちゃんと IE は立ち上がるけど BamlParseException だとかって例外が出てる。XAML のことがよくわかってないので、ファイルの内容が間違ってるのかも知れないけど、なんとなくそうじゃないような感じ。
いちおう、Windows SDK もセットアップしてみる。これも無事完了。しかし状況変わらず。XAMLPAD もアプリケーションエラーで起動せず。しかし、Monad Shell beta2 は動いている模様(といっても dir くらいしか試してないけど)。Windows SDK に含まれる allsamples.zip を解凍して Windows Presentation Foundation の一番シンプルそうな C# プロジェクトをビルドしてみると、問題なくビルドできる。しかし、実行不可。これもやっぱり BamlParseException の例外。


どなたか WinFX Nov CTP + VS2005 RC 日本語版の環境で WPF が動いた人います?
(もともと動かないものなのか、それとも自分の環境が悪いのかだけでも切り分けたいなぁ)

C# Language Specification 2.0 日本語版

先に書いたとおり Visual Studio 2005 RC 日本語版を入れたので、フォルダの中とかを探検していたら、C:\Program Files\Microsoft Visual Studio 8\VC#\Specifications\1041 に C# Language Specification 2.0.doc という Word ファイルが入ってるのを見つけたんですが、きちんと日本語化されてました。このドキュメントは Generics、Anonymous Method、Iterator、Partial Type、Nullable といった C# 2.0 で増えた部分の仕様書です。

WinFX November CTP (VS2005 RTM 用)

WinFX November CTP Questions & Answers より


VS2005 RTM 用の WinFX CTP が出ています。
今回から WinFX SDK は Windows SDK に統合されたとのこと。

Visual Studio 2005 RC 日本語版を入れてみた

Visual Studio 2005 RC 日本語版を入れてみました。


で、
http://www.ailight.jp/blog/kazuk/archive/2005/11/19/10119.aspx
こちらで報告されているように 「なんか化けてるなぁ」 と思ったんですが、C:\Windows\Microsoft.NET\Framework\v2.0.50727\JA にある XML ファイル (mscorlib.xml とか) を見てみたら。。。なんだこりゃ?encoding は utf-8 となってるんですが、まったく意味不明な文字列です。encoding を間違ってるわけでもなさそう。どうやったらこんな風になるんだろ。これだったら英語のままのほうがまだましだなぁ。うーん。。。

2005年11月17日木曜日

THINK SECURITY

You'll get a kick out of this... より


From Microsoft Japan ってことで日本のマイクロソフトのテレビ CM (?)が紹介されています。


マイクロソフト: 個人ユーザー向けセキュリティ
この関係の CM なようです。実は今までこのページの存在を知らなかったんですが、けっこうよさそうな感じ。

.NET 2.0 で Low Level グローバルフックをかける方法

Low-Level Global Hooks in .NET 2.0 より


SetWindowsHookEx API を使って WH_MOUSE のローカルフックをかける KB、MSDN Magazine の記事の紹介、それと、それらを元に WH_MOUSE_LL をグローバルにかける方法について書かれている、、、のかな?
ちゃんと読んでないけど、とりあえず覚え書き。

"Atlas" のチュートリアルビデオ

Cool ASP.NET "Atlas" tutorial video from Dan Wahlin, MVP より


ASP.NET or XML Web Service の Microsoft MVP である Dan 氏が作成した "Atlas" のチュートリアルビデオが紹介されています。内容は英語ですが、ビデオなので見てるだけでもなんとなくわかります。


"Atlas" ってけっこう便利 and おもしろそう。

Visual Studio Image Library

Visual Studio Image Library より


VS2005 にはかっこいいアイコンや画像がたくさん入ってるんですか?
どうも zip で固めてあるから自分で解凍してくれっていうことみたいです (VS2005 の環境がないからよくわからん)。

登場 Visual Studio 2005!Supported by MVP

英語版の Launch は (日本時間の) 今晩ですが、日本語版の発表もあと 10日となりました。
で、うれしいバナーを頂きましたので貼らせて頂きます。


2005/11/17 更新
いよいよ Launch。というわけで、新バナーに差し替え。


Ready for VS2005


コミュニティエンゲージメント推進部 Blog: 登場 Visual Studio 2005!Supported by MVP

Visual Studio ユーザーグループ (VSUG) オープン

Visual Studio ユーザーグループ (VSUG)
http://vsug.jp


VSUG Logo


ついにオープンです。

2005年11月15日火曜日

Visual Studio 2005 Team Suite Release Candidate (Japanese)

まったく別の用事で MSDN Subscriber Downloads を見ていたら 「Visual Studio 2005 Team Suite Release Candidate (Japanese)」 なんてものが 11/15 付けで公開されていました。

PowerCollections 1.0

PowerCollections for V2.0 RTM より


PowerCollections の 1.0 の .NET 2.0 の RTM 用がリリースされたそうです。
PowerCollections は Generic を使ったコレクションクラスとコレクションを操作するためのアルゴリズム(Algorithms クラス) のライブラリです。

VS2005 で変わったところ

What's New in Visual Studio 2005
MSDN Library の What's New へのリンク


Breaking Changes between .NET Framework 1.1 and 2.0
1.1 と 2.0 との間の相違点

Managed Debug Assistants (MDAs)

Managed Debug Assistants (MDAs) are cool. より


.NET Framework 2.0 には Managed Debug Assistants (MDAs) というのが追加されているそうです。これは Managed と Unmanaged の間を行き来する部分のデバッグに役立つようなものみたいです。レジストリ、環境変数、コンフィグファイル、VS のダイアログ(未確認) なんかでオンにしておくとログを書いてくれる模様。


# 今、試す環境がないのでとりあえずメモ

2005年11月10日木曜日

VirtualPlaces

ASP.NET Atlas より


すべて Atlas で書いたという VirtualPlaces というのが紹介されています。
上の Add a Location のところに地名 (Seattle とか) を入れて Add Location ボタンをクリックするか、Shift キーを押しながら地名のところをクリックします。それから、下の Weather とか Books、Photos なんかをクリックするとそれらの情報が表示されます。
Location Overlays とかはクリックしてみればわかると思います。


やっぱり地図が絡むとおもしろいですねぇ。この VirtualPlaces はデザインもカッコいいし。

Web Deployment Projects

Web deployment projects are live より


なにやら VS2005 のアドオンである Visual Studio 2005 Web Deployment Projects というものが公開されたそうです (まだ Beta Preview と書いてありますが)。
Using Web Deployment Projects with Visual Studio 2005 によると



  • Web Deployment Project は VS2005 のアドインパッケージ。

  • VS2005 に機能を追加したりするものではない。

  • 単純に Web サイトのデプロイの機能を追加するだけ。

であって、機能としては



  • ビルドプロセスの一部として ASP.NET 2.0 のプリコンパイルをする。

  • Web プロジェクトからコンパイルされたアセンブリを柔軟なオプションで生成する。

    • Web サイト全体をシングルアセンブリにする。

    • コンテンツのフォルダごとに 1つのアセンブリにする。

    • すべての UI コンポーネントを 1つのアセンブリにする。

    • Web サイトにファイルそれぞれでコンパイルされたアセンブリを置く。

  • アセンブリにサインするオプション。

  • カスタムプリビルド、ポストビルドアクションを定義できる。

  • ビルドからフォルダを実行できる(exe を起動できるってことかな?意味がよくわからない)

  • web.config を変更できる (<connectionString> とか)。

  • msi の作成をサポート。

なんて感じみたいです。
ASP.NET 2.0 なアプリケーションを丸ごとコンパイルしたアセンブリにできるってのは喜ぶ人が多そう。

Visual Studio 2005 Express Edition は 1年間無料...について

まぁ、激しくいまさらなんですが、サンフランシスコで行われた VS2005 launch event にあわせて、Visual Studio 2005 Express Edition は 1年間無料だと発表されました。
まだ、英語版しかありませんが、
http://msdn.microsoft.com/vstudio/express/
こちらからダウンロードできます。


■ 日本語版は無料になるの?
正確なことは 11月 17日の日本語版の発表を待たないとなんとも言えませんが、
http://msdn.microsoft.com/vstudio/express/support/faq/#pricing
ここの 10 番に 「英語版に続き 2~3ヶ月内に出てくる英語以外のバージョンも同じ販促を適用する予定。それぞれが入手可能になったあと "one full year" 有効になる予定」 とあります。ということは、日本語版も無料で、無料の期間は日本語版がリリースしてから丸 1年間になるってことみたいです。


■ 1年間無料 "free for one year" って?
同じく FAQ の 11 番に 「もともと (英語版は) 49ドルとアナウンスしてたけど、 2006年 11月 6日までの期間限定のプロモーションとして、今は無料で提供している」 なんて感じで書いてあります。


■ じゃ 1年過ぎるとどうなる?
FAQ の 12 番に 「1年を過ぎて使おうと思ったらお金がかかるのか?」 という質問に対して 「いいえ。2006年 11月 7日までにダウンロードさえしておけば、支払いは必要ない」 とあります。ということは、ダウンロードして CD-R なり DVD なりに焼いておけばいいのかな?


■ ところで Express Edition って?
http://www.microsoft.com/japan/msdn/vstudio/2005/productinfo/productline/default.aspx
こちらが、日本語で書かれた各 Edition の違いです。ただ、この表はずいぶん前からあるのでベータとかを元にしてるんじゃないかと思います。
http://msdn.microsoft.com/vstudio/products/compare/default.aspx
こちらが英語版です。この英語の方はリリースにあわせた最終的な内容になってるんじゃないかと思います。日本語の方と見比べると 「レポーティング」 のところが違いますね。


で、大きなところでは Express Edition にはクラスデザイナ、オブジェクトテストベンチがないってところと、ソースコード管理がないってことでしょうか。


■ そういや SQL Server 2005 Express Edition は?
FAQ の 11 番に 「SQL Server 2005 Express Edtion も無料でダウンロードできる。こっちは期限はない」 と書かれてます。そりゃ、まぁ、SQL Server 2005 Express Edition は MSDE の後継なので有料になっちゃうと困るんですが。

2005年11月7日月曜日

Visual Studio 2005 Academic Edition

Visual Studio 2005の教育向け製品 より


学生、教職員の方は VS2005 Standard Edition 相当のものが 4,800円だそうです。


「本日、学生向けの施策について発表」 と書かれてるのは、
ソフトウェアを通して学生の可能性を拡大することを目指し、様々な施策を展開
このプレスリリースのことみたいですね。

Virtual Earth + Amazon.com = なんかすげぇ

Virtual Earth + Amazon.com = Read All About It! より


MSN Virtual Earth 上でクリックされた点の地名に関する書籍を Amazon から検索して表示する、というのが紹介されています。なんかすごいです。ただ、残念ながら日本だとどこをクリックしても "Japan" での検索結果になっちゃうみたいです。アメリカ本土だと Seattle とか Bellevue とかといったレベルで取れるみたいなんですけどね。

もうすぐ VS2005 Launch イベント

英語版 VS2005 の Launch がいよいよもうすぐです。
http://www.microsoft.com/events/2005launchevents/default.mspx


Steve Ballmer のキーノートスピーチはストリーミング中継があるみたいです。
http://www.microsoft.com/emea/steveballmerlive/
http://www.microsoft.com/events/executives/webcasts.mspx

MSDN TV: CLR Method Dispatch Internals

MSDN TV: CLR Method Dispatch Internals より


おもしろそうなのでメモ。

WWF beta1.2

Windows Workflow Foundation Beta 1 for Visual Studio 2005 RTM より


ついさっき 「WinFX Sept CTP は .NET Framework 2.0 RTM とは共存不可」 と書きましたが、Windows Workflow Foundation (WWF) は .NET Framework 2.0 RTM 用の beta 1.2 というのがリリースされているそうです。


Windows® Workflow Foundation Beta 1.2 for Office "12" (Beta 1)

.NET Framework 2.0 RTM と WinFX Sept CTP

Interaction problems between the final release of .NET Framework 2.0 and the WinFX September CTP より


現時点では、WinFX は Sept CTP が最新ですが、これは .NET Framework 2.0 RTM といっしょには入れられないと聞いたことがあります。それに関する記事がありました。


なになに、、、
「.NET Framework 2.0 RTM が入っているマシンに WinFX Sept CTP を入れたいなら以下のような選択肢がある。



  1. .NET Framework 2.0 RTM をアンインストールして、それから WinFX Sept CTP を入れる(WinFX Sept CTP には .NET Framework 2.0 beta2 が含まれる)。

  2. .NET Framework 2.0 RTM とは別のマシンに WinFX Sept CTP を入れる。

  3. .NET Framework 2.0 RTM に対応した WinFX CTP が出るまで待つ。

不自由をおかけして申し訳ない。」


しょぼーん。。。

VS2005 ship party の写真

VS 2005 and .NET Framework 2.0 Ship Party より


とりあえず pictures を見てみるべし(笑)

新しい MSDN Search

http://lab.msdn.microsoft.com/searchbeta/


MSDN だけでなく、CodezoneForum まで一気に検索できます。けど、日本語の MSDN サイトは検索対象になってないような感じです。

DSL Tools の Virtual Lab

Virtual Lab - try DSL Tools without even installing them! より


VSTS の Virtual Lab が公開されているようです。


Welcome to the MSDN Virtual Labs
いつの間にか Windows Workflow Foundation なんてのも増えてます。

Google のいろいろ(覚え書き)

start.com というか live.com というかの Google 版
http://www.google.com/ig
http://www.google.co.jp/ig


Google Reader
http://www.google.com/reader/lens/


Google Base
http://base.google.com/


Google Blog Search
http://blogsearch.google.com/


Google Video
http://video.google.com/

live.com

もうすでにあちこちで紹介されてますが、http://www.live.com/ が公開されました。


ニュースリリース
Microsoft Previews New Windows Live and Office Live Services


Microsoft Gadgets
http://microsoftgadgets.com/
いろんなガジェット(便利ツール)が公開されています。 日本語表示の live.com だと 「コンテンツの追加」-「詳細設定」-「便利ツールを URL で追加」 で追加できます。

2005年10月28日金曜日

LINQ Tech Preview for VS2005 RTM

さて、VS2005 の RTM が出たとなると個人的に気になるのは 「LINQ Tech Preview の RTM 版は?」 ってとこですw


http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=119386
出てました。


というわけで、
http://msdn.microsoft.com/netframework/future/linq/
にちゃんと 「C# LINQ Tech Preview Update for Visual Studio 2005 RTM Release」 があります。

VS2005 and SQL Server 2005 Ship! (英語版)

eWeek: Microsoft RTMs Visual Studio 2005, SQL Server 2005
blogs.mdsn.com にもたくさん 「RTM したよ」 「Ship したよ」 という記事があがっています。


すでに MSDN Subscribers Downloads で Visual Studio 2005、SQL Server 2005 なんかがダウンロードできるようになっているようです。


http://msdn.microsoft.com/netframework/downloads/updates/default.aspx
こちらには各種 .NET Framework 2.0 の再頒布パッケージや SDK などがあります。


日本語版はいつごろかな?

地図上でチャット

Map Chat より


http://www.themidnightcoders.net/examples/messageserver/chat/mapchatajax.htm
こちらの Map Chat が紹介されています。
英語によるチャットなんですが、しゃべった人の場所が Google Maps 上に表示されます。こりゃおもしろい。
Google Maps の日本語が化けてるときはブラウザのエンコーディングを utf-8 にするといいようです。けど、チャットの文字としては日本語は使えないようです。


どうやって場所を調べてるのかと思ったら
http://www.hostip.info/
こちらのサービスを使っているそうです。
うーん、けど、私んとこが Sapporo になってる。直そうと思ったら ("Make a correction" のとこで直せます) PHP でエラーが出ちゃう。掲示板に 「エラーが出ちゃうよ」 って書こうと思ったら掲示板の post でもエラーが出ちゃう(^^;  うーん、どうすりゃいいんだ。

2005年10月27日木曜日

Anonymous Method はクロージャではない その2

Anonymous Method はクロージャではない」 のちょっとした続き。


NyaRuRu さんに
http://lab.msdn.microsoft.com/productfeedback/viewfeedback.aspx?feedbackid=7ab1ab2b-0821-416f-b2c6-da737f8005ea
を教えていただきました。


これは、「Anonymous Method が思ったように動かない。C# 仕様書の 20.8.10 を見ると動くはずでは?」 というような内容です。で、Microsoft からの回答は 「これは仕様書のバグ」 となってます。


http://msdn.microsoft.com/vcsharp/programming/language/ にある C# Language Specification 2.0, March 2005 Draft を見ると


foreach (ElementType element in collection) statement


は、


IEnumerator enumerator = ((IEnumerable)(collection)).GetEnumerator();
try {
while (enumerator.MoveNext()) {
ElementType element = (ElementType)enumerator.Current;
statement;
}
}
finally {
enumerator.Dispose();
}


となると書かれてます。確かにこれだと 「C#: Anonymous methods are not closures」 の正しく動く版のコードとほとんど同じように解釈されることになるので動かないとおかしいはずです。


http://www.ecma-international.org/publications/standards/Ecma-334.htm
こちらの ECMA-334 C# Language Specification 3rd edition (June 2005) だと 「15.8.4 The foreach statement」 が上記の Draft の 20.8.10 に対応すると思います。こちらには


foreach (V v in x) embedded-statement



{
E e = ((C)(x)).GetEnumerator();
try {
V v;
while (e.MoveNext()) {
v = (V)(T)e.Current;
embedded-statement
}
}
finally {
… // Dispose e
}
}


となると書かれています。なるほど、V の宣言がループの外になるのがほんとなんですね。だから動かなくて正解と。


で、仕様書を見て気づいたおまけ。
GetEnumerator() が返ってきたオブジェクトが IDisposable を実装している場合は finally で Dispose() を呼んでくれるんですね。確認してみたら 1.1 でもちゃんとそうなってます。

2005年10月26日水曜日

RTM のビルド番号

Final RTM Build numbers より


RTM のビルド番号は Visual Studio が 8.0.50727.42、.NET Framework が 2.0.50727.42 になるとのことです。それと、「古いバージョンが入ってる場合は RTM を入れる前に消してね」 ということでアンインストールツールにリンクが貼ってあります。

DynamicMethod 用の DebuggerVisualizer

DebuggerVisualizer for DynamicMethod (Show me the IL) より


.NET Framework 2.0 で追加される DynamicMethod クラスによって簡単に、動的にメソッドを生成することができるようになります (まぁ、簡単とは言っても IL を直に書くようなものなのでそれなりの知識が必要ですが)。具体的な例は 「hello, world... LCG (Lightweight Code Gen) style!」 なんかを参照。
動的に生成した内容 (メソッドの内容) は単なるバイト配列なので、デバッグのときなんかにちょっと不便です。「Debugging LCG」 には、windbg を使って DynamicMethod の内容を見る方法が紹介されています。
上記の記事では VS2005 のデバッガ上で ildasm 風のコードで IL を確認できる DebuggerVisualizer が紹介されています。


この記事のコメントにもありますが、「Debugging Dynamically Generated Code (Reflection.Emit)」 で紹介されているように CLR と VS2005 は動的に生成されたコードのデバッグをちゃんとサポートしています。ただ、この記事の下のほうの "One caveat:" に 「2.0 で提供される light-weight-codegen (LCG) はモジュール、アセンブリ、型、メタデータなんかを作らずにお手軽にメソッドを作れる。必要なくなったら GC に回収もされるし。けど、LCG のデバッギングはサポートされてない。これは主にスケジュールの問題。debugging API は主に metadata API の拡張で、メタデータを持たない LCG のデバッギングはこのモデルにあわないんだよね。3.0 では直る予定」 なんて感じのことが書いてあります。なるほどなぁ。

2005年10月25日火曜日

Kid's Programming Language (Coding4Fun)

Kid's Programming Language


Coding4Fun で Kid's Progamming Language (KPL) というのが紹介されています。
KPL はシンプルで読みやすい構造化言語で、IDE も装備しているそうです。しかも freeware とのこと。すごいな。

Anonymous Method はクロージャではない

C#: Anonymous methods are not closures より


わかったような、わかってないような。。。
まだいまいち消化不良気味

RoadToWinFX と WPF 関連の覚え書き

RoadToWinFX
WinFX の情報がいろいろと集まってるとこ。


Windows Presentation Foundation Hands-On-Labs
WPF をお勉強するための PDC Hands-On-Lab。WinFX Sept CPT 用。中身は手順を説明した .doc とコード。


Windows Presentation Foundation on the Web: Web Browser Applications
WPF はちゃんと Web Browser (IE) でホストできるのか。もちろんその場合は Sandbox の中で動くと。Loose XAML ってのは表示だけができるコンパイルされてない XAML。

「私たちはあなたの痛みを共有します」 Microsoft's WSYP (We Share Your Pain)

Microsoft's WSYP (We Share Your Pain) より


# 某所で見た、例のアレが公開されてました


Microsoft の新しい、そして、画期的なフィードバックシステムの紹介ですw
Microsoft's WSYP (We Share Your Pain)...
の右側の 「Watch the entire show」 をクリックして .NET Passport でログインするとビデオを見ることができます。英語ですがぜひ見てみてください。

GotCodeSnippets.NET

http://www.gotcodesnippets.net/


Visual Studio 2005 のコード・スニペットを登録したりダウンロードしたりできるサイトです。こんな感じで便利なコード・スニペットがいろいろと集まっていくと面白いですね。

Microsoft MVP を再受賞

ちょっと報告が遅くなりましたが、Microsoft MVP を再受賞しました。ジャンルは前回と同じく Visual Developer - Visual C# です。


 

Microsoft MVP Global Summit 2005 に参加しました

# ちょっと忙しくて 1ヶ月以上の間この blog も放置状態でしたがぼちぼち復活。


9/28~10/1 に Microsoft の本社 (アメリカのシアトル) で開催された Microsoft MVP Global Summit 2005 に参加してきました。今回で 3回目の Global Summit だったんですが、今までと同様とても楽しかったです。ほんとはちゃんと旅行記でも書きたかったんですが、とりあえずこれだけ。

2005年9月14日水曜日

Atlas も来てた

ずいぶん前 に紹介した http://beta.asp.net/ にいつの間にやら Atlas ってタブが増えてました。ドキュメントや VS2005 beta2 用の ASP.NET "Atlas" Web Site Template といったものがダウンロードできるようです。
(一応書いとくと Atlas は ASP.NET で Ajax しよう、ってやつ)

Visual Studio 2005 Release Candidate はもうすぐ?

下で書いたように C# LINQ Tech Preview が VS2005 の Release Candidate 用とかって書いてあって、「その RC がないじゃん」 と思ったんですが、、、


MSDN Subscriber Download を見てみたら、Visual Studio 2005 - Release Candidate ってツリーがすでにありますね。けど、クリックするとエラーが出てます。どうやら、まだツリーだけで中身が無い模様。


もともと PDC のころに RC をリリースするってことだったし、きっともうすぐなんでしょう。
# 日本語版の RC はいつごろになるんだろう?

LINQ

下に書いたように PDC キーノートスピーチで Don Box 氏と Anders Hejlsberg 氏によって C# のコードの中に var query = from ... と SQL なのか XQuery なのかよくわからないような構文でクエリーが書けるというデモが行われました。


あれだけじゃ、なにがなにやらよくわからないので PDC Bloggers を見てみたら
Linq Resources
という形でまとめてくれている blog を発見。どうやら LINQ (Language Integrated Query) という模様。


って、ええ! VS2005 beta2 用の C# LINQ Technology Preview がダウンロードできるの?
しかも、LINQ のサンプルが 101 個 もあるよw


いろいろ見て回ってたら、すでに
http://msdn.microsoft.com/netframework/future/linq/
こんなサイトがちゃんとあった。
あれ?ここには C# LINQ Tech Preview は VS2005 の release candidate って書いてあるな。って、RC がまだないじゃん。。。

ビル・ゲイツ氏の PDC キーノートスピーチ

http://www.microsoft.com/events/executives/billgates.mspx
こちらでストリーミングされるってことだったので見てみました。


見始めたのは 0時 45分くらい(日本時間) だったので、ほとんど生に近いと思います。時間も時間なので、全部見るつもりはなかったんですが、結局最後まで見ちゃいました(^^;


ちなみに、生放送オンリーってわけじゃなくって今も見れるみたいです。全部で 3時間 30分くらいありますけど。


で、内容は Vista のデモやら Office 12 のデモやらもあって、やっぱりこれらはすごいなぁという感じ。登場人物もビル・ゲイツ氏に続いて、ジム・オールチン、その後に、、、


Don Box きたーーー
Anders Hejlsberg きたーーー
なんか、C# on Visual Studio に var query = from ... とかなんとか SQL なのか XQuery なのかよくわかんないもの入力して実行してるーーー
TableAttribute とか DatabaseAttriburte とか書いてるーーー
いやぁ、なんかすごいw


あと、もちろん ASP.NET と Ajax だとか Indigo (WCF)、Avalon (WPF) とか、なんか頭がくらくらしてきますw


最後のほうで、Project "Max" とかなんとか。アルバムソフト?
http://www.microsoft.com/max/
ここだそうです。WinFX を使ったアプリみたいです(どのバージョンの WinFX かはよくわかんない)。


あと http://windowsmarketplacelabs.com/ こんなところの紹介とか。

2005年9月10日土曜日

Cool な MSN Virtual Earth アプリを作って $1,000 もらおう

Virtual Earth Competition なんてものが開催されてます。
Virtual Earch の API を使ったアプリ (Web でもクライアントサイドでも) のコンテストで、最初の 25 人の応募者には Microsoft Streets & Trips 2005 with GPS がもらえるようです (へぇ、Microsoft ってこんなアプリも作ってたんですね。けど、日本じゃ使えないだろうなぁ)。そして、最優秀賞が $1,000 だそうです。締め切りは 2005年 10月 14日(たぶんシアトル時間)。

もうすぐ PDC

PDC、いよいよ来週です。
http://msdn.microsoft.com/events/pdc/


いや、別に私が行くわけじゃないんですけどね。ただ、http://blogs.msdn.com/ なんかを見てると 「いよいよ来週だ」 とか 「もうすぐだ」 とかって記事がいっぱいあるもので。きっと、PDC のセッションにあわせていろんな情報が出てくるんでしょうねぇ。


で、アジェンダを見てみると、Pre-Conference は 11日、12日の 10時から。日本時間にするには 16時間足せばいいのかな?ということは、12日、13日の 2時からと。


ついでに Anders Hejlsberg 氏のセッションの日本時間は、、、


TLN306 - The .NET Language Integrated Query Framework: An Overview
September 14, 1:45 PM - 3:00 PM
日本時間の 15日の 5時 45分


TLN307 - C#: Future Directions in Language Innovation from Anders Hejlsberg
September 14, 3:15 PM - 4:30 PM
日本時間の 15日の 7時 15分


PNL11 - .NET Language Integrated Query End-to-End
September 16, 1:00 PM - 2:30 PM
日本時間の 17日の 5時 00分
これは Anders Hejlsberg, Dave Remy, Don Box, Erik Meijer, Luca Bolognese, Paul Vick によるパネルディスカッション。

Microsoft Rave を使って WinFS 上のデータを同期

Synchronize your WinFS data with Microsoft Rave より


WinFS の CD にいくつかのアプリケーションが入ってるらしいです。その中のひとつ Microsoft Rave を使うと WinFS 上のデータを複数の PC 間で同期できるようになるらしいです。この Rave というアプリケーションは WinFS Synchronization だとか WinFS Watcher notifications だとかといった WinFS の機能を使って作られてるそうです。

Visual Basic 6.0 から VB.NET へのアップグレードガイド (英語、しかもプレ リリース)

Visual Basic 6.0 to VB.NET Upgrade Guidance - Community Pre-Release より


Patterns and Practices グループで VB6.0 から 2003 か 2005 に移行するためのガイドを作成中で、それのコミュニティプレビューが GotDotNet の CodeGallery で公開されているそうです。(完成したら日本語化してくれるかな)

ダブルバッファリング

Looking at double buffering and the new BufferedGraphics classes より


よく読んでないし、あまり理解もできてないんですが、、、
.NET Framework 1.x の Windows.Forms でも ControlStyles 列挙体 で指定してやると自動的にダブルバッファリングしてくれて描画のちらつきを抑えてくれるようになってました。2.0 では BufferedGraphics クラスなんかが追加されて、よりきめ細かい制御ができるようになったみたいです。

Avalon のビデオ on Channel 9

New Avalon Videos on Channel Nine! より


Windows Presentation Foundation (コード名 Avalon) の 3 本のビデオが紹介されています。


1本目の Introduction to XAML は XAMLPAD を使っての 「XAML ってこんなことができるよ」 という紹介です。この XAMLPAD っておもしろいなぁ。下側に XAML を入力していくと上側にリアルタイムにその結果が表示されます (XAML を入力してるとこは単なるテキストボックスみたい。当然、インテリセンスも何にもない)。ちょっと前まで XAML っていうと msbuild で XAML から C# コードを作って、そいつをコンパイルして、っていう風にデモされてたと思うけど、XAMLPAD はどうやってるのかな?同じことを後ろでやってるのか、それとも動的に XAML を解釈できるようになったのかな?


2本目の Databinding in Windows Presentation Foundation はデータバインディングの紹介です。同じく XAMLPAD を使ってます。XAML でのデータバインディングって初めて見たけど、これはすごいなぁ。データソースを blog の RSS にして、XAML だけで (いっさいコードを書かずに) RSS リーダーが出来上がっちゃってます。


3本目の Arik Cohen - talking about Windows Presentation Foundation は、、、まだ見てない。

2005年9月2日金曜日

VSIDE のファイルのタブってどんなのがいい? in Orcas

Feedback Requested: File Tabs in Orcas より


次期 Visual Studio (Visual Studio 2005 の次) の IDE に関してフィードバックが欲しいということのようです。


あと、これは突っ込まないほうがいいのかもしれませんが。。。
上記の記事のタイトルなんですが、今は 「Feedback Requested: File Tabs in Orcas」 となってるんですが、最初は 「Visual Studio 2007: File Tabs」 でした。

2005年8月25日木曜日

Converting a managed PDB into a XML file

Converting a managed PDB into a XML file. より


C# とか VB.NET のコードをデバッグビルドするとデバッグ用の情報が PDB ファイルに格納されます (C++ とか unmanaged なものでも PDB ファイル自体は同じだと思うけど)。で、その PDB を読み込んで XML に変換するツールが紹介されています。このツール自体は C# で書いてあります(ソースが載っている)。
で、この XML からローカル変数一覧を作ったりする XPath なんかも紹介されています。なるほど、こういった資料なんかが作れるようになるわけか。

Nullable Boxing その3

Nullable Boxing」 「Nullable Boxing その2」 と続いた nullable のデザインチェンジについてのその3。(別に続き物にするつもりはなかったんですが)


The CLR Nullable DCR works!!!!!
デザインチェンジによってどこがどう変わったかサンプルコードによって示してくれています。
ここを見る限り、今までに私が書いたやつで動きとしては正解みたいですね。

2005年8月24日水曜日

Windows SDK のドキュメントが公開

2ch の某スレの 名無しさん♯ さんの書き込みより


Windows SDK のドキュメントが公開されたそうです。
http://windowssdk.msdn.microsoft.com/library/


って、正直 「Windows SDK って何?」 という私なんですが、Target Platforms によると「Windows SDK beta1 は Windows Vista beta1 がターゲット」 とのことです。ほぉ~。


で、


> とりあえずここにリンク。
> ttp://windowssdk.msdn.microsoft.com/library/default.asp?url=/library/en-us/SDKintro/html/aea8d91a-0889-4e48-ba45-91433a191e48.asp
> なぜかスクロールバーが出てこないけど、上下にスクロール可能。
(以上、名無しさん♯ さんの書き込みより引用)


この書き込みがないとスクロールできることに気づかなかった予感(^^;
上からちょこちょこと眺めていくと、、、うーん、新しく追加された Transacational NTFS も unmanaged な API だけみたいな感じ。Shell とか見てみても managed な解説はほとんど見つからないんですが、、、
おっ、一番下に WinFX がちゃんとあるぞ。どれどれ。。。WinFX Software Developer Kit によると 「このリリースには .NET Framework 2.0 とコードネーム Avalon とコードネーム Indigo が含まれている」 やっ、やっぱり WinFX っていうのは 2.0+Avalon+Indigo だけですか?

F# 1.1

A Taste of What's New in F# 1.1 より


F# 1.1 の最初の technology preview が数日中に出るみたいです。そして、その 1.1 で新しくなった点が紹介されています。。。みたいです。正直言って F# や ML ってぜんぜんわかんないので、見てもさっぱりわかりません(^^; 時間があったら勉強してみたいと思ってるんですが。


ちなみに、F# の本拠地は http://research.microsoft.com/projects/ilx/fsharp.aspx
今のバージョンは 1.0.8.6 みたいです。

GotDotNet CodeGallery

New on GotDotNet: CodeGallery より


GotDotNet に CodeGallery っていうのが増えたみたいです。「Workspaces はコードの開発やチェックインなんかに加わるのが主目的。CodeGallery はコードについてはアップロードとダウンロードくらいに制限して、そのかわりにアップロードしてあるコードについてのメンバーからのフィードバックをシェアしたりするのが目的」 という感じみたいです。けど、正直言って CodeGallery と Workspaces ってほとんどおんなじような気がする。。。

CodeKeep.net

Interesting idea... より


CodeKeep という新しいコミュニティが midwest のコミュニティメンバーたちによって始められたそうです。GotDotNet や SourceForge はプロジェクト指向になりがちだけど、CodeKeep はコードの断片(スニペット)を置いておいたり公開したりできる場所、ということなようです。

Team Foundation Server は来年 (追記)

すぐ下に書いた 「Team Foundation Server は来年」 にちょっと追記(というか訂正というか)。


開発部門の副社長である Somasegar 氏の blog にVisual Studio 2005 のリリースについて書かれてました。


Visual Studio 2005 update


どうやら 9月に RC1 (Release Candidate 1) が出て、そのとき同時に Team Foundation Server beta3 (以下 TFS と略) が出て、その時点で TFS の Go Live ライセンスが提供されるということみたいです。また、リアル・ワールドで TFS を使って MSDN Product Feedback Center でフィードバックをちょうだい、といったようなことも書かれてます。


 

2005年8月22日月曜日

Team Foundation Server は来年

eWeek: Microsoft Readies Release Candidate, RTM of Visual Studio 2005 より


「RTM を 11/7 にローンチする」 と書いてあります。まぁ、既報のとおりですね。で、続いて 「その RTM には Team Foundation Server の beta 3 も含まれる予定だ。Team Foundation Server の出荷は 2006 年の第1四半期のつもりだ」 なんてあります。うーん、そうきたかぁって感じ(笑)。まぁ、個人的には Team Foundation Server をすぐに導入する予定はないし、別に構わないと言えば構わないんですが。それに 「Team Foundation Server beta3 では Go Live ライセンスも提供される」 とありますから、まったく使えないわけじゃなくて、beta 3 でよければ導入しようと思えばできるみたいですし。
記事の中ほどには PDC のあたりに Release Candidate を出す予定といったことが書いてあります 。ということは 9月の後半かぁ。August CTP を入れるべきかどうか、やっぱり微妙だなぁ(笑

ASP.NET 2.0 の beta2→RTM の変更点

Changes to ASP.NET 2.0 from Beta2-->RTM より


ASP.NET 2.0 の beta2→RTM の変更点の情報が公開されているそうです(英語)。
Major Changes for Visual Web Developer 2005 and ASP.NET 2.0 from Whidbey Beta 2 to RTM

Visual Studio 2005 Express August CTP

Visual Studio 2005 Express August CTP 英語版が公開されたようです。
http://lab.msdn.microsoft.com/vs2005/get/default.aspx#express


# 日本語版はでるのか?Express 以外の Edition が MSDN Subscriber Download でダウンロードできるようになるのか?などはよくわかりません。


で、例によって以前の beta2 や CTP などをきれいさっぱりアンインストールしてから入れるように、とのことです。
Visual Studio 2005 Express August CTP are available こちらの記事では文字を真っ赤に反転させて強調してます。
アンインストールの仕方については、http://lab.msdn.microsoft.com/vs2005/get/default.aspx このページの最初のところにこれまた赤字でリンクが書いてあります。


で、この August CTP ですが、"Internal RC0" Express SKU's Available! こちらなんかでは Internal RC0 なんていう表現もされてます。おっ、なんか 「MSDN subscribers にリリースする真っ最中」 みたいなことも書いてある? ということは、やっぱり Express 以外の Edition も公開されるのかな?
(私自身は August CTP を入れるかどうかは考え中。nullable のデザインチェンジの件もあるし、入れてみたいとは思ってるんですが。。。)

WHAT IS VIRTUAL EARTH? その2 - 開発者向け情報

ついさっき書いた 「WHAT IS VIRTUAL EARTH?」 についてです。


あのビデオを知ったのは 「More MSN, this time the Virtual Earth video」 で紹介されていたからです。で、リンク先がビデオのページだったので、てっきりあのビデオのタイトルが "WHAT IS VIRTUAL EARTH" なのかと思ってました。けど、あらためてみてみたら http://www.virtualearthinfo.com/ このサイト全体がこういうタイトルみたいですね。


"Links & Features" のところの "This is how Microsoft created Virtual Earth" があのビデオのページへのリンクですね。


で、その下に "Developers should go here to find out how they can create applications that use Virtual Earth" (デベロッパは Virtual Earth を使ったアプリケーションを作る方法を知るためにここに行くべき) なんていうリンクがあるのに気づきました。リンク先は Via Virtual Earth というサイトですが、Virtual Earth の API などが公開されているようです。

WHAT IS VIRTUAL EARTH?

MSN Virtual Earth がビデオで紹介されています。。。のかなぁ?
http://www.virtualearthinfo.com/video.asp


正直、ほとんど聞き取れませんが(泣)、「Virtual Earth を始める。そのために各地域の情報が必要だ。世界中のね」 てな感じで始まってます(と思います)。そして、ユニフォームに身を包み、情報を調べに行くんですが、Virtual Earth の情報ってこうやって集めてたんですね(違


なんていうか、、、こんなのを大真面目に作れる Microsoft ってやっぱりすごいと思います(笑

2005年8月19日金曜日

RSS 3 と Atom 1.0

RSS 3 specs published より
RSS 3 の仕様が公開されたそうです。Slashdot での紹介が引用されていますが、RSS 3 Lite-type Specification の最初のドラフトとのことです。で、この RSS 3 は RSS 2.0 のギャップを埋めたり、不必要な機能を削除したりした手直し版で、完全に後方互換性があるとのことです。


Atom 1.0 specs published より
Atom 1.0 の仕様が公開されたそうです (7月には公開されていたみたいですが)。アナウンスが引用されてますが、それによると 「RFC ナンバーはまだついてないけどオフィシャルなものだよ」 ということらしいです。Atom ってよく知らないんですが、どうも 0.3 と 1.0 では互換性がないみたいですね。


うーん、しかし RSS・Atom っていったい何種類の仕様があるんだ? 

2005年8月18日木曜日

yield のネスト

Nesting C#'s yield より


えーっと、この記事は


  GetValues() が IEnumerable を返すとして
    yield GetValues();
  とは書けないんだよね。
  末尾の再帰として書くとこんなことができる(とサンプルコードを提示)。
  けど、やっぱり、
    yield GetValues(top-1);
  なんて書けるといいのに。このほうが、コンパイラの最適化のチャンスも増えるし。


というようなことが書いてある模様。


うーん、まだ yield の動作がピンとこないなぁ(いちおうわかったつもりになってたんだけど、こんな風にネストしちゃうとすぐにはよくわからないよ。。。)

Nullable Boxing その2

Nullable Boxing」 で書いた nullable のデザインチェンジについてのその2。


Somasegar's WebLog:Nulls not missing anymore
開発部門の副社長である Somasegar 氏 の blog で今回のデザインチェンジについて書かれています。まず、



  • nullable なものを box 化すると null だったときは null に、null でなかったときはそれなりの値になる。

と。これはわかりやすいので OK と。
で、unbox 化のほうですが、私が上の記事で書いたように



  • たとえば int? を box 化すると、それは int でもあり int? でもある。
    だから
      int? i = 1;
      object o = i;
      int x = (int)o;
    と書ける。

というだけでなく、



  • int を box 化したものも、int てもあり int? でもある。
    だから
      int i = 1;
      object o = i;
      int? x = (int?)o;
    と書ける。

ということになるようです。
なるほどなぁ。型システムが nullable を認識しているから、unbox 化する際に nullable を引っぺがすことも、nullable にすることも自由にできるってわけですね。
しかも、
  int? x = 0;
  IComparable ic = x;
というようなこともできると。これは、int? である x から int を取り出して、その int が implements している IComparable を取り出している、ということでいいのかな?


sab39:How to completely screw up a good idea: Nullable types in C# 2.0
こちらの blog は日付 (2005年 4月 19日) から言って、今回のデザインチェンジとは無関係に書かれたものだと思いますが nullable の動作についてとてもわかりやすい表が載ってます。この表は



  • 普通の参照型
  • 理想的 (ideal) な nullable
  • Nint (C# で自分で実装した struct みたいです)
  • C# 2.0 beta2 での nullable

の比較になっているんですが、今回のデザインチェンジの内容からするとほぼ 「ideal な nullable」 の列の動作になったということなような気がします。(int? y = t ? 1 : null; という三項演算子はさすがに無理なような気がする。型システムというより C# コンパイラががんばればできそうな気はするけど)

2005年8月12日金曜日

その後の start.com/3

start.com/3 がバージョンアップ」 でもバージョンアップを紹介した http://www.start.com/3/ ですが、その後もちゃくちゃくとバージョンアップしているようです。


いつの間にか .NET Passport でサインインできるようになってますし、いろいろと機能追加もされてるみたいです。


あと、Startlets とかに入っている MSN Bloggers Map が興味深いです。 MSN Virtual Earth を使って blog を書いている人の場所(Microsoft のビルディングだったりしますが)を表示しています。ってか、MSN Virtual Earth の API って公開されてましたっけ?

RSS Feeder .NET sample

Great .NET Smart Client Blog Aggregator with BSD License より


CodeProject の 「RSS Feed Aggregator and Blogging Smart Client」 という記事が紹介されています。この記事は RSS Feeder という実際に使える RSS リーダーアプリケーションの解説記事なんですが、この RSS Feeder は 「Enterprise Library のアプリケーションブロック、Outlook インテグレーションのデモンストレーション、オフラインキャッシング、非同期コミュニケーション、マルチスレッド UI アップデートロジックなど多くの特徴を持った Windows Forms スマートクライアントアプリのすばらしいサンプル」 とのことです。そしてまた 「Omar 氏は寛大にも BSD ライセンスの元でそれを提供している。だから RSS Feeder をバラバラにしたり、解析したり、あなた自身のコードに断片を組み込むことでさえできる」 とのことです。

2005年8月11日木曜日

TechEd 2005 Yokohama レポート - 8/3(水) 2日目

8/3(水) 2日目


■ キーノートスピーチ
寝坊、というか二日酔いというか、で 30分遅れくらい遅れちゃいました。
VSTS のデモはもうすでに何回も見たことあるような気がする。というか、去年も同じようなデモを見たことがあるような気がしないでもないw
SQL Server のインテグレシーションサービス?のデモ(データマイニング)は、正直意味がよくわからないけど、SQL Server 2005 はすごいということが言いたいってことはわかった(笑)
で、SQL Server 2005 の新機能であるデータベースミラーリングのデモ。。。おいおい、マシンを爆破しちゃったよw しかし、なんかこれは便利そう。クラスタリングみたいに共有ディスクとかなしにクラスタリングと同じようなことができるってこと? しかも、待機系はライセンス不要、ウィットネス(監視するサーバ)は SQL Server Express (もちろん無料)でもいいんだって。
Windows Server 2003 R2 の新機能の ADFS でシングルサインオンが実現できる?これはフォーム認証のときとかも自動的にできるのかな?詳細はよくわからんな。
豆蔵がどうのこうのと。。。なんのことかよくわかんないけど、あとで調べてみようかな?


おぉ、やっぱり発表日の発表が来たー! 11月 17 日 Visual Studio 2005、SQL Server 2005、BizTalk Server 2006 東京にて発表だって。当然、日本語版のことでしょう。えーと、発表というのは発売開始ということなのかな?(BizTalk Server 2006 の発売は来年になるっていうのは発表済みなので、これは別として)。。。あとでマイクロソフトの人に聞いてみたところ 「今のところは 11/17 に発表するということしか言えません」 とのこと。少なくとも今の時点では 11/17 にパッケージが店頭に並ぶという意味ではないみたい。残念。パッケージ(箱物)はあとでもいいから、せめて、MSDN Subscriber Download で製品版がダウンロードできるようになってくれるとうれしいんだけど。


■ T2-318 SQL Server 2005 高可用性ソリューション
キーノートスピーチでもずいぶん楽しそうなことしてたし、SQL Server 2005 のセッションを聞いてみることにした。
へぇ、Standard でもフェールオーバークラスタリング(2台まで)をサポートするって。ほぅ、8ノードクラスタか(SQL Server 2000 は 4ノードまで)。
続いてキーノートスピーチでも取り上げられてたミラーリングの話。なになに、、、



  • 同期モードと非同期モードがあって、自動的にフェイルオーバーするかどうか自分で決められる。

  • 同期モードは若干パフォーマンスが落ちる。けど、金融系なのでいろいろとテストしてるが「そんなに気にするほどじゃないんじゃないかな」という感触らしい。

  • 普通に TCP で通信してるみたいだけど、ちゃんと暗号化されてる。

  • プリンシパルとミラーは決定的なものではなく、プリンシパルがダウンした場合、ミラーがプリンシパルになって、元プリンシパルが復旧後はミラーになる。

  • クライアント側は SDAC が必要らしい。

  • 同じマシンの別インスタンス間でもミラーリングできる。

  • そして、ミラーリングのデモ。設定も簡単みたいだし、こりゃいいかも。

データベーススナップショットもイイ! なるほど、スナップショットっていうのは、ほんとうにデータベースのコピーを取るわけじゃなくて Copy On Write で更新があったページのみスナップショットを取っていくのか。だからそんなにディスクも消費しないし、スナップショット取るのも一瞬であると。バックアップの代わりに使ったり、日次処理や月次処理なんかを走らせる場合にスナップショットに対して実行したりできると。復元するのはバックアップから復元するみたいに restore database でできるのか。ただ、もちろん見かけ上スナップショットを取ってるみたいに見せてるだけだから、ほんとうの意味でのバックアップじゃないんだよ、ってことをわかってない奴が出てくると困るな(データベースが壊れたらスナップショットごと壊れる)。
パーティショニングも便利そうではある。


■ お昼ごはん
MVP な人たちなどと海の見えるレストランで。しかし、二日酔いで調子が悪いぞ(笑)


■ T3-330 64-bit 環境における .NET Framework アプリケーションの開発
64bit の wordpad が 32bit の PowerPoint をちゃんとインプレースアクティベーションできる。ほぉ。
.NET Framework 1.1 を 64bit OS で動かす。。。WOW64 で動く。ただし、IPF では IIS にホストされて動く ASP.NET みたいなのはパフォーマンスが出ないのでお勧めできない。
VS2005 は 32bit アプリケーションだけど 64bit 対応している。64bit OS 上で 32bit、64bit 両方のデバッグもできる。32bit 上の OS からリモートデバッガでデバッグすることもできる。リモートデバッガも 32bit 版、64bit 版の両方がある。64bit OS 上でアプリを動かしてリモートデバッガを起動、32bit OS 上の VS2005 で「プロセスにアタッチ」でデバッグしたいマシンに接続してデバッグ可能。
64bit .NET Framework ではエディット&コンティニューはサポートされてない。けど、64bit OS 上の VS2005 で 32bit アプリとしてデバッグしてるときはエディット&コンティニューできる。なるほどねぇ。よくできてるなぁ。
それに、.NET Framework ベースのアプリケーションは基本的に 32bit だろうが 64bit だろうが問題なく動く様子。どちらで動かしたいのかは PE を書き換えるとか config で指定するとかいろいろと方法はあるらしい。
ただ、P/Invoke とかは気をつけないとだめだろうなぁ。その辺の話は特になし。ほんとはこの辺が一番問題になってくると思うけど。


■ T3-335 スマートクライアントアプリケーションの開発
スマートクライアントの概要とか。
パフォーマンスを上げるためにキャッシュしよう。これは Enterprise Library の Cache Manager なども使える。SOAP ヘッダを使ってキャッシュの有効期限を送ったり。
SoapExtention を使わなくても .NET Framework 2.0 では SOAP の圧縮・解凍をサポートしている?
他にも Application Block (Enterprise Library) を使ったデモ。
やっぱり Enterprise Library をもうちょっと勉強してみないとダメだなぁ。


■ T3-337 Visual Studio 2005 で改善された Windows フォーム
このセッションでは爆発するようなサーバはないんだって。残念w
正直言ってどっかで見たような話だったけど(笑)、それでもあらためて見るとやっぱり .NET Framework 2.0 の Windows.Forms はいい感じだなぁ。


■ Microsoft TechEd 2005 Attendee Party
ゲストはコージー富田。さすが、おもしろいぞ。
抽選会は思いっきりはずれ。残念。しかし、Intel のマザーボードってのも微妙な景品だなぁ。マザーボードだけもらったら Intel の CPU 買わなくちゃいけないじゃん(笑) 最後の締めは XBox 360 だったけど、途中の TechEd 2006 US (Boston) にペアで招待のほうがはるかにいい景品のような。。。(笑) ん? XBox 360 にあたった人ってどっかで見覚えが。。。おぉ、あれは A さん(仕事上でのお知り合い)じゃないか!


■ スペシャルナイト(笑)
パーティ後はロイホで MVP な人なんかと 1時くらいまでおしゃべり。
その後、ホテルの部屋に戻ってさらにおしゃべり。寝たのは 3時くらいだったかなぁ。

Ajax を使った日本語 Full IME

Ajax を使った日本語 Full IME


とりあえず、すごいです。。。
blog はこちら http://chasen.org/~taku/blog/archives/2005/08/ajax_ime_2.html

maplog.jp 地図からの blog 検索

昨日 「FeedMap BlogExplorer!」 で feedmap について書いたからかどうかは知りませんが、偶然に maplog.jp というものを知りました。feedmap は、自分で blog の座標を登録するというものでしたが、maplog.jp はちょっと違います。


maplog.jp は、表示されている地図上に登場するキーワードが含まれている blog 記事を検索してくれるというものです。地図の表示には Google Maps を使っています。

2005年8月10日水曜日

FeedMap BlogExplorer!

feedmap っていうのがあります。これは blog の RSS への URL と場所を登録しておくと、その blog を地図上で表示してくれたり、ご近所の blog を探してくれたりといったサービスです。


で、その beedmap を MSN Virtual Earch と合体してみたそうです。
FeedMap BlogExplorer! 
右クリックして "explorer" するか、"explorer" をクリックするかすると blog を表示します。


おもしろいんだけど、日本語が化けてるんだよなぁ。(っていうか、ASCII 以外は壊滅状態)

TextReader based off C# Yield

TextReader based off C# Yield より


まだ読んでないけど、おもしろそーだったので記録。

TechEd 2005 Orlando の ASP.NET 関連セッションが公開されてます

TechEd 2005 Orlando の ASP.NET 関連セッションが公開されてます。
http://msdn.microsoft.com/asp.net/community/events/teched2005/default.aspx


私は見てませんが (見ても英語が聞き取れませんが(^^; )、ASP.NET だけでなく他のカテゴリもこんな感じで公開してくれるとうれしいなぁ。もっと言うと、このあいだの TechEd 2005 Yokohama のセッションもこんな感じで公開してくれないかなぁ。

PDC 2005 での C# 3.0

PDC 2005 のセッションが公開されていますが、その中で目に付いたもの。


TLN307 - C#: Future Directions in Language Innovation from Anders Hejlsberg
タイトルどおり Anders Hejlsberg 氏による C# 3.0 のセッション。
extension methods、lambda expressions、type inference、anonymous types なんてものが語られる模様。


TLN306 - The .NET Language Integrated Query Framework: An Overview
こちらもスピーカーは Anders Hejlsberg 氏。
Orcas では統一したプログラミングモデル、かつ、C# や VB に統合されたクエリーでもってリレーショナルなテーブル、 XML、メモリ内のオブジェクトなんかを扱えるようにするつもり、ということな模様。


すげーおもしろそう。
# って、PDC になんて行けないんですが。。。
# 行ったとしても英語わかんないですし(^^;

C# で関数型プログラミング カリー編(らしい)

Functional Programming in C# - Currying より


Generics を使って関数型言語で言うところのカリーを書いてみようってことみたいです。
けど、関数型言語はよくわからないし、カリーもよくわかりません(汗) なので、上記の記事を見てもいまいちピンとこなかったりします(^^; もちろん、ソースを見れば 「何をしているのか」 はわかるんですが、「どうしてこういうことがしたいのか」 「こういうことができると何がうれしいのか」 がいまいちわかんないんですよね。けど、ソース自体はとってもおもしろい。


それと、コメントのところを見ていくと Don Box 氏からのトラックバックがあります。
Sriram on Currying in C# 2.0
なんか "Look for the C# 3.0 version in September." なんて書いてあるんですが。。。9月って PDC のことなんだろうなぁ。

Nullable Boxing

TechEd 2005 Yokohama の初日(8月2日)の 「L3-1 C# 2.0 and IDE Tips & Tricks Part1」 のセッションで言われていたことです。スピーカーの波村さんによると 「今日から公開していいと言われた内容です。このデザインチェンジが行われたのは、ここ 1ヵ月半くらいのことです」 ということです。


で、どういったデザインチェンジかというと、
 void Foo<T>(T t)
 {
   Console.WriteLine("Foo<T>: {0}", t == null);
 }
 void Test()
 {
   int? i = null;
   Foo(i);
   Console.WriteLine("i == null: {0}", i == null);
   Console.WriteLine("(object)i == null: {0}", (object)i == null);
 }
これを実行するとどうなるか?という部分です。


実際に beta2 で実行すると
 Foo<T>: False
 i == null: True
 (object)i == null: False
となります。



  • 最初の Foo<T> では T は当然 int? となっています。問題は t == null の部分ですが、この部分の JIT による解釈は 「int? は値型の一種。値型は null には成り得ない。だから常に false」 ということになるそうです (波村さんに聞いたらこんな風におっしゃってたと思います)。int? は Nullable<int> ですし、Nullable<T> は struct ですから、「値型の一種」 というより値型そのものですね。だから null にならないのは当然とも言えます。(と思う。こういう解釈であってるのかな?)

  • 2番目の i == null は C# コンパイラが i.HasValue を呼び出すべきということを判断できます。なので、そのような IL が出力されます(実際に ildasm で見てみると i.HasValue を呼び出しているのがわかります)。

  • 最後の (object)i == null も Foo<T> と同じような感じで i を box 化して null と比較する IL が生成されます。だからこれは常に false です。

これはこれで正しいわけですが、やはりわかりにくいしバグの元でもあるので 「なんとかしようよ」 ということになったそうです。どうなんとかするかと言うと、「nullable を box 化したときに元が null であればちゃんと null になる(null と比較したとき true になる)」 となるようにしたってことでした。これによって、
 Foo<T>: True
 i == null: True
 (object)i == null: True
となることになります。


あと、
  int? i = null;
  object o = i;
  Console.WriteLine("o is int: {0}", o is int);
  Console.WriteLine("o is int?: {0}", o is int?);
の結果が
 o is int: True
 o is int?: True
となるようにも変更されるとのことでした。
beta2 では
  int? i = 1;
  int x = (int)i;
というコードをコンパイルできます。これは C# コンパイラによって
  int x = i.Value;
と解釈されています(IL を見るとそうなってます)。さて、それでは、
  int? i = 1;
  object o = i;
  int x = (int)o;
はどうでしょうか?これは beta2 では実行時エラーが発生します。o に格納されているのは box 化された int? なので int にキャストすることはできません。これを実行可能にするには、
  int x = (int)(int?)o;
のように int? にキャストしてから int にキャストしてやる必要があります。結局、int? を直接 int にキャストすることはできるのに、いったん box 化すると int にキャストすることはできなくなる、というふうに見えることになります。これが上記のように 「int? を box 化したものは int? でもあり int でもある」 となれば問題なく
  int? i = 1;
  object o = i;
  int x = (int)o;
というコードを実行できることになります。。。ということであってるのかなぁ?


まだ実際の処理系がないので、いまいち合ってるのかどうか自信はありませんが、こんなような感じみたいです。

TechEd 2005 Yokohama レポート - 8/5(金) 4日目

8/5(金) 4日目


午前中は MVP 関連の打ち合わせとか雑談とか。
しかし、やっぱり英語は必要だなぁ。ものすごくゆっくりしゃっべってくれてたけど、それでもほとんどわかんなかったよ。


■ Peer Talk Lunch
あれ?今年は 1,500円取られないんだ。去年は 1,500円取られたと思うけど。うーむ、このために 1,500円分の食券を取っておいたんだけど、あまっちゃったよ。
で、おなか減ったし最初にガッとおなかいっぱい食べて、その後、C# のことやらスレッドのことやらいろいろとおしゃべり。


■ T2-314 Web Services Enhancements (WSE) 3.0 の新機能
ASMX って 「アスムエックス」 と発音するの?
ほぅ、WebMethod を TCP で(IIS なしで) ホストできるようになるんだ。
へぇ、DIME とか WS-Attachiments とかなくなって MTOM ってのになったんだ。
SOAP Toolkit Version 3に SOAP の内容をキャプチャして表示するツールが付いてるとのこと。なら、WSE 3.0 にも付けてくれればいいような気がする。


■ T3-407 Visual Studio 2005 Team Foundation Server 詳細
なかなか自分で Foundation Server をセットアップすることはできなさそうだから、このセッションを聞いてみた。
チームビルドってクライアント側の VS2005 からサーバでビルドするように指示ができるんだ。
レポートもいいし、チェックインポリシーもいいなぁ。
ほぅ、デモ・評価用に 1台にすべてを入れることもできるんだ。beta2 では Active Directory は Windows Server 2003 のものが必要。リリースでは 2000 もサポート。Workgroup もサポートする予定で、Workgroup の場合は App Tier と Data Tier は同じマシンにしなくてはいけないなど、若干の制限がある可能性がある。
OS → SP → AD 構築 → IIS → SQL Server の順で入れる必要あり。
Version Control Proxy Service なんてものもあるんだ。離れた拠点で開発する場合、ソース管理のプロキシとなるもの。beta2 には含まれていない。
やっぱり、ワークアイテムとワークフローっていいなぁ。
へぇ、自分でクライアントを作れるくらい、完璧にオブジェクトモデルが公開されてるんだ。もっと深いところでカスタマイズすることもできるように、ちゃんと公開されてるんだ。


■ T2-404 .NET Framework を利用したシステムにおけるスケーラビリティとパフォーマンスへの考慮
「.NET アプリケーションのパフォーマンスとスケーラビリティの向上」 この記事を元にしたセッションでした。正直、私は 「こうすりゃ速くなるぞ」 みたいなガリガリなセッションを期待してたんですが。けど、これはこれでおもしろかったです。スケーラビリティやパフォーマンスは、最初から考えておくべきことであって、あとになってから考えるものじゃないというのはまったくもってそのとおりだと思います (けど、結構軽視されちゃうんだよね)。


■ 晩御飯
何人かの人たちと晩御飯。
その後、新幹線で自宅へ。

TechEd 2005 Yokohama レポート - 8/4(木) 3日目

8/4(木) 3日目


■ T3-325 Visual C++ 2005 の新機能と既存コードの改善・活用
話の中心は C++/CLI と最適化。
うーん、「IL という中間言語を実行する .NET に比べて C++ は理屈の上でもパフォーマンスが高くなる」ってそれは違うような。JIT が十分に高性能であれば同等になるはずだし、むしろ逆に 「理屈の上では」 実行時に最適化することが可能になるので IL を使ったほうがパフォーマンス的には有利になると思うんだけど (あくまで理屈の上ね)。
へぇ、C++/CLI は Microsoft 固有の構文ではないんだって。。。うーん、こういう説明もありなのかもしれないけど、ちょっと誤解を招きそうな気がするなぁ。確かに ECMA に提出されてるし standard になればオープンなものになるけど、その説明じゃ 「Microsoft 以外の誰かが構文を決めた」 みたいに取られちゃうような。。。
/clr には mixed、pure と verifiable があるのか。この辺の区別とかはよくわかってないなぁ。セッションの内容でも具体的になにが違うのかはよくわからんかった。
えっ、/clr でも cl とリンカを通るんだって。C# で作った .netmodule をリンカでリンクすることが可能なんだ。じゃあ、C# と VB.NET で作った .netmodule をリンカでリンクすることもできるんだ。と思ってたら、そのまんまのことをデモで実演してくれた。
やっぱり、最適化はすごいな。リンカでの最適化って VS.NET2002 からあるのか。けど、2005 でかなり良くなったらしい。Microsoft 社内でも広く使われてるって。
Profile Guided Optimization (ガイド付き最適化) はやっぱりすごいな。30% くらい性能がよくなる? これも Microsoft 社内で広く使われてるらしい。しかし、昨日の夜もこの話題で盛り上がったけど、プロファイルを取った内容で最適化するっていうのは、どんなプロファイルを取るかで最適化の結果が変わることになるから、安定した結果が出るのかどうか不安になるよなぁ。
「プログラム全体にわたる最適化などはコンパイラステップとリンカステップに分かれていることが有利に働いている」 みたいなことを言ってたけどほんとかな?コンパイラとリンカに分かれてることは関係ないように思うんだけど。そもそも、こういう最適化って JIT が内部でやろうとしてるようなことを C++ でもやるようになってきたっていう気がしないでもない。
あと、IDE 上の強化点についての紹介。この辺は C# とか VB.NET とかとまったく同じとのこと。


■ T3-331 セキュアなアプリケーション構築のための Visual Studio 2005 における強化点
なるほどなぁ。「1人の侵入者を防ぐためには 1000人規模で 24時間 365日警備する必要があったりする。それくらいセキュアに保つのは大変」 確かに。「セキュアに保ち続けるというモチベーションの維持が大事。銭形警部のように」 ふむふむ。
静的コード分析が重要、これで一定の品質に保つ。PREfast は C/C++ の静的コード分析ツール。FxCop がマネージド向けの静的コード分析ツール。FxCop でチェックする命名規則などももちろんカスタマイズできる。しかし、非常に難解。


■ お昼ごはん
何人かと近くのレストランで。


■ スペシャルセッション
MVP スペシャルセッションに参加しました。内容は C# とかそういったことです。


そこで出た話なんですが、MSDN Product Feedback なんかを使って、もっともっとフィードバックをして欲しいそうです。フィードバックされた内容をどのように扱っているかをちょっと教えていただけましたが、(詳細は書きませんが)ものすごくちゃんとしていると感じました。ここまでやってくれているんだからフィードバックしないともったいないと思うくらいです(笑)。なにかある人はじゃんじゃんフィードバックしちゃいましょう(ちなみに MSDN Product Feedback はページは英語ですが、日本語で書き込んでも問題ありません)。


■ T2-377 SQL Server 2005 SQL CLR と T-SQL の利用と選択
演算処理などは SQLCLR のほうが T-SQL よりはるかに速い。
SQLCLR はどこで使うべきか?T-SQL が苦手とするような処理、作りにくい処理。まずは拡張ストアドプロシージャは SQLCLR にすべき。そもそも拡張ストアドプロシージャはサポートはされるが推奨はされない機能となった。次にユーザ定義関数。ユーザ定義関数は多くの場合演算処理のために作られるので SQLCLR で書くべき候補となる。テーブル値関数を SQLCLR で実装するとインメモリのストリームになるので速い。T-SQL で実装するとtempdb を使用するのでオーバーヘッドが発生する。反対にデータ処理は向いていない。


へぇ、VS2005 のプロジェクトのプロパティにデータベースなんて項目もあるんだ。


alter table hoge
add hogehoge as hogehoge2 persisted
この persisted も SQL Server 2005 の新機能。計算列の計算結果を保存する。


SQL 型と CTS 型は完全にマップされている訳ではない、最大・最小値が違うなどいろいろある。System.Data.SqlTypes を使ったほうがいい。そして null は IsNull でチェックする。。。そういや、このあたりって nullable が使われるようにはならないのかな?


T-SQL → CLR、CLR → T-SQL ともにアクセス許可セットの影響は受けない。なぜなら T-SQL にアクセス許可セットの考え方自体がないから。しかし、CLR(セーフ)→CLR(セーフ以外)の呼び出しなどをする場合は SecurityException が発生する。では、CLR(セーフ)→ T-SQL → CLR(セーフ以外)とした場合は?これも SecurityException が発生する。正しくアクセス許可セットを設定し、きちんと管理する必要がある。


■ Welcome to INETA Japan Event 2005!
ほんと、おもしろかったです。構成もよくできてたし。お客さんもほとんど満席状態でした。


■ スペシャルナイト(笑) その1
マイクロソフトの方々や MVP の方々などと飲み会。


■ スペシャルナイト(笑) その2
その後、また買い出ししてホテルの部屋で飲み(笑)。けど、途中で寝てた。んだけど、なんか聞くところによると、突然起き上がって 「お開きにしましょう」 とか言ってたらしい。で、お開きになったらしい。覚えてないなぁ(笑)

TechEd 2005 Yokohama レポート - 8/2(火) 1日目

今年も TechEd 2005 Yokohama に参加しました。
以下はそのときのメモです。


8/2(火) 1日目 ラーニングディ


朝 6:30 発の新幹線で横浜へ。
TechEd 会場であるパシフィコ横浜に着いたのは 9:30 くらい。すでに最初のセッションは始まってしまってるけど、新横浜に止まる新幹線はこれが始発なのでしょうがない。なので最初のセッションはあきらめてとりあえず MVP ラウンジに行ってみた。濃いぃ人たちとともになぜかそこにはキティちゃんが。。。(笑) キティちゃんと遊んだりして、ちょっと時間をつぶしたあと、さっそく最初のセッションへ。TechEd まで来ていつまでもキティちゃんと遊んでるわけにもいかないですしね(^^;


■ L7-2 Windows Server をインターネット環境に展開する
~ほんとうに大丈夫?どうすればいいの?~ (Part II)
内容はタイトルのとおりでした。「不要なサービスは止めろ」「不要なポートは閉じろ」その他もろもろ、、、と。基本的には「セキュアになるようにちゃんと設定しましょう」ってことでした。常識と言えば常識なのかもしれないけど、(私は IT Pro ではないし)こういうふうにあらためてきちんと筋道立てて説明してもらうと「なるほどなぁ。そりゃそうだよなぁ」という感じで結構おもしろかったです。あと、最後のほうの 5台のデモマシンを使っての ISA Server のデモもおもしろかったです(ISA Server って見るのも初めてだったしw)。
そういや、Windows Server 2003 は SP1 を当てたメディアでセットアップするとポートを閉じた状態で起動するんだって。確かにそうじゃないとなぁ。


■ お昼ごはん
MVP な人たちなどと近くのお店で。私は、お刺身の定食を選択。
今年も 4日間で 6,000円分の食券がついてました。この食券は TechEd 会場となっているパシフィコ横浜の近辺にあるほとんどのお店で使えます。


■ L8 Community Server を使ったビジネスブログサイト構築法
ここの blog は .Text を使ってますし、改造したりするために結構 .Text のソースを見たりもしましたからそれなりには理解できてると思います。で、Community Server (以下 CS)の blog 部分は .Text がベースになってるわけで、いまさらあらためて聞くまでもないような気はしたんですがw。。。なんとなくこのセッションを選んじゃいました(笑)
前半は blog そのものについて。スピーカーの鈴木さん曰く



  • Blog ツールはコンテンツ・マネジメント・システム(CMS)の一種。

  • ブログはインターネットで公開している日記。

で、「日本で言うブログはカタカナのブログなんだと思う」とのこと。ふむ、なるほど、確かにそんな感じはする。
中盤は CS の特徴の紹介。最後のほうは実際に CS をインストール・セットアップしてみるデモ。そか、CS ではユーザのロールとか、blog グループとかができるようになってるんだ。この辺は .Text よりずいぶん進化しているな。んで、時間が足りなくなっちゃってすごく駆け足でインストールするデモが行われたんだけど、なんか .Text でのインストールのわかりにくさが嘘みたいに簡単になってるw


■ L3-1 C# 2.0 and IDE Tips & Tricks Part1
波村さんのセッション。とってもおもしろかった。最終アンケートの 「4日間とおして最もよかったセッション」 にこのセッションを上げました。


C# チームが入ってるビルディングを MSN Virtual Earth の画像で紹介してくれたり、仕様が来るまで待ってられないのでノートが来た時点で実装しちゃうとかなんていういかにも「中の人」ってな感じの話で始まり。


で、C# 2.0 の追加機能の話。最初は Generics。しかし、いくらなんでも説明が速すぎかも(笑)。このスピードだとある程度知識がないとついていけないかもしれませんね。
以下、いろいろ



  • 1.0 と 1.1 ではたとえば int 用のコレクションなんていう感じの特化したクラスを作ってパフォーマンスを上げたりしてた (確かにアクセスするたびに box 化、unbox 化が必要になるのはきついだろうな)。これが 2.0 では Generics にすることによってこういうようなユーティリティクラスが不要になった。

  • Dictionary<string, List<string>> と書ける。C++ のように > > とスペースを入れる必要はない。これは、ちゃんとパーサを変更して解釈してる。

  • 「default(T) を入れました」 なんていう表現がおもしろいなぁ(「○○という機能があります」じゃなくて「入れました」というのは中の人じゃないと言えないよなぁ)。

  • void Foo<T>(T x) {
     int j = (int)(object)x;
    }
    (int)x とは書けない(x が int にキャストできるのかどうかコンパイラには判断不可能なので)。なので (int)(object)x と書く必要あり。こうかいても JIT によって最適化されるので無駄は発生しない。

  • if (x == null)
    x が value type のときは常に false (value type が null になることはありえないので)。この場合も JIT によって最適化されるので無駄は発生しない。

  • public static int Foo(int i) { }
    public static T Foo<T>(T t) { return default(T); }
    public static T Bar<T>(T t) { return Foo(t); }
    このようなオーバーロードには注意。
    Foo(1) と呼び出せば一番近い Foo(int) の呼び出しと解釈される。しかし、Bar(1) と呼ぶと return Foo(t); は Foo(int) ではなく Foo<T> の呼び出しと解釈される。コンパイル時には Bar<T> 内の Foo(t) にシグネチャが最も近いのは Foo<T> になるので当然。当然ではあるか、とてもわかりにくいバグになる可能性が高い。注意すべし。というか、こういうコードは書かないほうがいい。

  • 波村さん曰く「constraint は慣れてくると書かないと気持ち悪い」

続いて Anonymous Methods。



  • 「C# 3.0 になるとますます関数型言語に近づくんですが。。。今回はそれは話せませんので、また、次回に」 うーん、聞きたいぞw

  • 「delegate { MessageBox.Show(...); } という書き方でもλ式に見えないというフィードバッグがあった。C# 3.0 ではなんとかしてみたい」 ほぅ。

  • 「Anonymous Methods をイベントにフックアップしてます」 ふーん、フックアップって言うのか。

次に Nullable。



  • Longhorn (Windows Vista) には 5種類くらいの Nullable の実装があった。それくらい需要があるのになんで標準的にランタイムでサポートしないんだ?という話もあってランタイムと C# コンパイラもサポートすることになった。

  • int? x = i; こんなふうに non nullable から nullable にすることをラッピングというみたい。で、反対に int i = (int)x; をアンラッピングというみたい。

  • Nullable Boxing。今日から公開していいと言われた内容。ここ 1ヶ月半でデザインチェンジが行われて、nullable を box 化に関して動作が変わったらしい。詳細は長くなるので別記事に書きます。

最後に Iterator。



  • 実は Iterator はバグがいくつも見つかってカットするかどうかの議論にもなったらしい。

  • しかし、C# 3.0 でも重要なフィーチャーになるし重要ということで生き残ったらしい。

  • Iterator はあまり注目されないが、とても便利とのこと。


■ L3-2 C# 2.0 and IDE Tips & Tricks Part2
Part1 に続いて 2コマ目。
1コマ目は C# の新しい言語機能の話でしたが、2コマ目は Visual Studio 2005 の新機能の紹介が中心。



  • AppWeek とは?仕事を離れて実際のアプリケーションを書いてみる週。月曜日にデザイン、火~木の 3日間に実装、金曜日にプレゼンという感じ。最近あった AppWeek では 30人で 200くらいのバグを見つけた。

  • VS はソースコードが 20G。HQ だけでも 2000人。ほへぇ。

  • メタデータソースビュー。メタデータを元に C# のソースで表示してくれる。おもしれー。XML ドキュメントのヘルプも見れてる。

  • 「すべての参照の検索」 とかは 2003 では単なる文字列検索。2005 ではちゃんと C# コンパイラと同等のパースツリーから表示している。

  • VS2005 のプロジェクトのプロパティは VB で作られている(だから遅い。。。?)

  • dim スニペットを書こう!(いや、冗談ですw)

  • プロパティの自動生成(コンパイラサポート)、new のときの型の自動判断は 「アンダースがダメだと決定した。『C# は VB じゃないんだ』」

  • ASP.NET にはやっぱりエディット&コンテニューはない?(詳細不明)

■ コミュニティパーティ
MVP、コミュニティリーダー、MCP 上位資格者、そしてマイクロソフトや Microsoft の方々とのパーティ。MVP な人や波村さんなどと C# や Vista の話なんかで盛り上がりました。


■ スペシャルナイト(笑)
MVP な人たちなどとコンビニに買出しに行ってホテルの部屋で飲みました。途中から参加した人たちなんかもいて、多いときは 10人以上くらいいたかな。私は 2時くらいにダウンしました。他の一部の人たちは明け方まで飲んでたらしい(^^;

2005年7月29日金曜日

ECMA-334、335 3rd edition

C# and CLI Become More Powerful のニュースで知りました。


ECMA で標準化されている C# と CLI の仕様ですが、



というように 334、335 いずれも 3rd edition になってます。
内容は見てませんが 334 の PDF の目次を見ると Generics、Anonymous Method、Iterators、Nullable Type なんてのが載ってます。なので、あきらかに C# 2.0、.NET Framework 2.0 相当ですね。

2005年7月27日水曜日

Windows Vista beta1 は今週???

Windows Vista Beta 1 (Longhorn) and VS 2005 より


なんか、Windows Vista Beta1 が this week に出るなんて書いてあります。
マイクロソフトの公式ページ http://www.microsoft.com/japan/windowsvista/default.mspx には 8月 4日(日本時間) と書いてあるんですが、ほんとに今週でるんでしょうか?


それと、上記 blog によると、Windows Vista beta 1 には .NET Framework 2.0 beta 2 が入ってるそうです。なので、Visual Studio 2005 も beta 2 のみがセットアップ可能で、beta 2 以外の CTP などは不可だそうです。

MSN Virtual Earth BETA

MSN Virtual Earth」 で紹介した Virtual Earth がいつの間にか使えるようになってます。


http://virtualearth.msn.com/
# しかし、アメリカ以外の国はぜんぜん拡大できないみたい。。。


また、
http://channel9.msdn.com/ShowPost.aspx?PostID=91714#91714
で Virtual Earth の開発チームへのインタビュービデオが公開されています。

2005年7月26日火曜日

Powered by ASP.NET 2.0 ロゴマーク

Powered by ASP.NET 2.0 logos are here! より


Microsoft 公式ロゴというわけじゃないと思いますが、「Powered by ASP.NET 2.0」 のロゴマークが紹介されています。

2005年7月20日水曜日

start.com/3 がバージョンアップ

july 18th updates on start.com/myw3b より


検索結果がタブで表示されたり、スタイルシートが追加されたり、モジュールを ESC キーで閉じることができるようになったりといくつかのバージョンアップがなされたそうです。

3DS ファイルを XAML に取り込む

New codeproject to convert from 3DS files to 3d XAML. より


「Andrej Benedik 氏が 3DS から 3D XAML への converter を書いた」 そうです。
# ただ私は 「3DS ファイルって何?」 という人なので内容はよくわかりませんが。
# どうやら 3D Studio とかで作るファイルみたいですね。

2005年7月15日金曜日

かっこいいキーボード

I want this keyboard より


うむ、確かにこりゃクールだ>Optimus keyboard


# これはコンセプトデザインみたいなもんで、実際に製品化されてるわけじゃないのかな?
# まぁ、どっちにしろ私にはキーの数が足りなそうなんだが。かな入力なもんで。

2005年7月14日木曜日

Google マップと Google Maps API の文字コード

Google マップ
いつの間にやら日本語版が。衛星写真のほうはあいかわらず東京以外はあまり細かい画像ではありません。けど、地図のほうはかなり詳細になってますし、いろんな検索もできるようになってます。


あと、「Google Maps API」 で書いた
http://www.divakk.co.jp/aoyagi/gmap.htm
ですが、いつの間にか動かなくなってました。
なんでだろうと調べてみたところ、どうやら Google の API (JavaScript のソース) は utf-8 で書かれているようです。私は HTML を Shift_JIS で保存してました。そこで、HTML を utf-8 に変換して、ついでに <head> タグのすぐ下に
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
と書き足してあげました。これでちゃんと動くようになったようです。


 

x86 なメソッドを動的に生成する方法

Dynamically Writing and Executing Native Assembly in C# より


.NET Framework 2.0 では Marshal.GetDelegateForFunctionPointer() っていうのが追加されます。こいつは、「PInvoke する DLL を Load/Unload する方法」 で紹介したみたいに GetProcAddress() API で取得した関数ポインタなんかを .NET な delegate に変換するってのが普通の使い方だと思います。


んが、関数ポインタと言ったって特別なものではなく .NET 的には単なる IntPtr です。そこで、Marshal.AllocCoTaskMem() したメモリに適当なバイト列 (実は x86 コードになってる) を用意しておいて、その先頭アドレスを Marshal.GetDelegateForFunctionPointer() に渡せば delegate にできるってことになります。


っていうのを具体的にサンプルコードで示してるのが上記の blog です。インラインアセンブラならぬインラインマシン語ですね。すんげぇw

2005年7月13日水曜日

Oracle Developer Tools for Visual Studio .NET 2003

ITMedia: 「Oracle、Visual Studio .NET向けの開発ツール公開」 より


VS.NET2003 で Oracle 10g アプリの開発ができるようにする無償のプラグインが公開されたそうです。ただ、これは米のニュースなので、日本語環境のこととかはよくわかりません (そもそも、私は最近 Oracle はさわってないんですが)。


あと、.NET Framework でストアドが作れるようになるという Oracle 10g Release 2 についても書かれてますね。90日以内っていったいいつから 90日以内なんだろう?Oracle の プレスリリース には "Oracle Database 10g Release 2 for Windows is scheduled for availability in the next 90 days." と書かれてます。けど、これでも next がどういう意味なのかよくわかりません。今から 90日以内ということなのかな?しかしそれだと .NET Framework 2.0 より先に Oracle 10g Release 2 が出ることになるし、ということは Oracle Database Extensions for the .NET Framework は .NET Framework 1.1 ベースってこと?うーん、よくわからん。

BizTalk Server 2006 は来年

ITMedia: Microsoftが「BizTalk Server 2006」のベータ準備完了、製品版は来春 より


ええと、「Visual Studio 2005 (英語版) の発売は 11月 7日で決まり?」 で 「Visual Studio 2005、SQL Server 2005、BizTalk Server 2006 は 11月 7日にリリースらしい」 と書きましたが、BizTalk Server 2006 は間違いだったようです。


(と言っても、私は BizTalk Server ってよく知らないんですが)

Avalon/XAML なツール

Adobe Illustrator to Avalon/XAML Export Plug-In
Adobe Illustrator の絵を XAML 形式で出力してくれるプラグインだそうです。


ZAM 3D - 3D XAML Tool
3D な XAML を作るツールだそうです。これは、下記の 3D な Channel 9 guy のところで紹介されてました。


Two Really Cool Avalon 3D Applets より
フォルダツリーを 3D で表示する Avalon なサンプルと、XAML で書いた 3D な Channel 9 guy が紹介されています。

Generic なメソッドを動的に生成する方法

Accessing Dynamic Generic Methods via Interfaces より


MethodInfo.MakeGenericMethod() を使って Generic なメソッドを作り、Reflection.Emit を使って IL を突っ込む、なんていうことをしているコード例です。なるほどねぇ。

2005年7月11日月曜日

Visual Studio Virtual Lab

Visual Studio Virtual Lab now online より


なにやら 「Dotfuscator のフル・プロフェッショナルバージョンが Virtual Lab で使えるようになったよ」 ってな感じのことが書いてあります。
Virtual Lab っていうのは、Microsoft が用意してくれた環境をリモートデスクトップみたいなもの (というかリモートデスクトップそのものなのかもしれませんが) を使って試しに使ってみることができるというサービスです。クライアント側は IE を使うだけなので何もセットアップする必要はありません (と言っても、ActiveX コントロールを入れさせられますが)。


Virtual Lab については Welcome to the Visual Studio Hosted Experience にあります。Visual Studio 2005 の Virtual Lab のページ にはまだ実際の Virtual Lab へのリンクなどが無いみたいですが、他のところ、たとえば SQL Server 2005 の Virtual Lab に行って 「Lab Selection」 すると確かに Visual Studio 2005 beta2 の Virtual Lab がありました。しかし、使ってみようとすると 「the lab you have chosen is currently full.」 とかって言われちゃいます。このメッセージがほんとだとすると人大杉ってことみたいです。

Visual Studio 2005 CTP July 2005

VS 2005 July CTP now available for MSDN subscribers より


VS2005 CTP July 2005 が MSDN Subscribers Download でダウンロードできるようになっているそうです。
# 私はまったくついていけてません(^^;

インストール済みの CLR のバージョンを列挙する方法

Enumerating CLR versions より


インストール済みの CLR のバージョンを列挙する C++ によるサンプルコードが紹介されています。mscoree.dll を使って 1.0、1.1、2.0、どれも入っていない、を調べることができるそうです。

2005年7月8日金曜日

Microsoft CEO スティーブ・バルマー氏のミニインタビュー

Channel 9: Steve Ballmer - Quick chat with Microsoft's CEO


Microsoft CEO スティーブ・バルマー氏のミニインタビュー (10分間くらい) ビデオです。
あいかわらず熱いです(^^ あいかわらず "developers, developers, developers" です(^^ って、まぁ、正直ほとんど聞き取れないんですが、けど熱さは伝わってきます(^^
transcript も公開されてますので読むこともできます (私はまだ読んでませんが)。

VSTS Tools for Eclipse

VSTS Tools for Eclipse 


私は Eclipse は使ったことはないんですが。。。


Visual Studio 2005 Team System で提供されるソースコントロールだとかワークアイテムだとかといった機能を Eclipse で使えるようにするプラグインを開発するプロジェクトです。「私たちの最初のマイルストーンは、最初に必要なことの詳細を得ることと、いろんな人からコメントをもらうこと」 とのことですから、始まったばかりみたい。がんばれ!

InternalsVisibleTo 属性

New InternalsVisibleTo attribute in .NET 2.0 より


.NET Framework 2.0 には InternalsVisibleTo 属性 ってのがあるそうです。どうやら 「指定したアセンブリに対しては私の中身をさらけ出していいよ」 と指定することができるアセンブリレベルの属性みたい。なになに 「私がクールだと思うのは、テストしているアセンブリの中にユニットテストのコードをいっしょに入れなくてよくなるってこと」  なるほど、そりゃいいや。つか、そのために追加された属性なんだろうけど。

はてなマップ

はてなマップ: http://map.hatena.ne.jp/


Google Maps API」 で書いた API を使ったサービスだそうです。
はてなフォトライフとかはてなダイアリーとかの最新キーワードなんかが自動的に表示されるそうです。
# といっても、私は 「はてな」 のいろいろなサービスのことがよくわかってないので、
# この 「はてなマップ」 に表示されているものにどういった意味があるのかが
# いまいちピンと来てないんですけど。。。
# それでも、なんかおもしろそうだという気がとってもする。

2005年7月6日水曜日

Visual Studio 2005 (英語版) の発売は 11月 7日で決まり?

Microsoft prepares for worldwide launch of Visual Studio, SQL Server and BizTalk Server 2006 より


TechEd 2005 Europe で Microsoft 副社長 の Andy Lees 氏がキーノートスピーチで 「Visual Studio 2005、SQL Server 2005、BizTalk Server 2006 をサンフランシスコの 11月 7日(月)にローンチ(出荷)する」 と語ったそうです。以前は 11月 7日の週、という表現だったと思いますが、7日に決まったということなのかな?あと 「11月の間に 50 の国で 90 以上のローンチイベントを開催する」 と公表したそうです。どんなイベントなんだろ。


あと、「SQL Server 2005、Visual Studio 2005、BizTalk Server 2006 のローンチは真のグローバルローンチになるだろう」 なんてことを言ったみたいです。そんなこと言われると 「んじゃ、日本語版はいつ頃なの?」 ってのが気にはなりますね。けど、「サンフランシスコに始まって、ヨーロッパと世界のその他の国々にはその後数日から数週間の間に届くだろう」 と続いてます。これじゃ、「英語版出荷から 90日以内」 とかって表現とたいして変わらないな。

2005年7月5日火曜日

Web Based SQL Server Management Tool

Upcoming at TechED: Web Based SQL Server Management Tool (Shared Source!) より


私は知らなかったんですが、もともと SQL Server Web Data Administrator というのがあったんですね。このページによると 2004/4/15 公開で SQL Server 2000 / MSDE 2000 を Web ベースで管理するツールみたいです。.NET Framework、ASP.NET が使われていて、Cassini で動くバージョンもあるのか。


で、上記の記事はこのツールを



  • 刷新された UI

  • 改善されたナビゲーション

  • 新しいコンポーネントをより簡単に追加するための改善されたアーキテクチャ

  • 完全に ASP.NET 2.0 と SMO ベース

  • SQL Server 2000 と SQL Server 2005 対応

という風にアップデートをした (している?) ということみたいです。Shared Source になるので修正したりもできるようになるって。けど、まだサインアップはできないとか '1.0 Release' に向けて作業中、みたいな感じで書かれてるから、実装作業中という感じなのかな?興味があったら http://microsoftsqltools.com/ を見てみてくれとのこと。

2005年7月2日土曜日

CLR Dynamic languages under the hood

CLR Dynamic languages under the hood (Part 1 of many) より


# 長いし、「Part 1 of maiy (たくさんのうちの第 1回)」 ということなのでまだ読んでない。


CLR 上の dynamic な言語を使ったり、言語そのものを作ったりする人のための記事みたい。dynamic というのはスクリプト言語に代表されるように強い型付けか必要ない言語という意味みたい。

古川 享 ブログ

古川 享 ブログ 「マイクロソフト卒業しました」 より


古川 享さんという個人の方のブログです。職業は自由人でブロッガーだそうです(笑)。(だってプロファールにそうあるんだもんw)
まぁ、元マイクロソフトの古川氏のブログなんですが。。。プロフィールのところに 「元○○○という自己紹介では無く」 とあったのでこんな書き出しにしてみました(^^


久しく更新されていなかったのでこのまま終了なのかと思ってましたが、逆に 「このブログを中心に社会的な接点を形成できればと考えています」 だそうです。やった。しばらくはリフレッシュ期間とのことですが、その後が楽しみ。


それにしても、上記のブログで紹介されている月刊アスキー 1979年 7月号の古川さんのコラムはすごいですね。1979年というと、PC-8001 の発売が 1979年 9月。MZ-80K や Apple II、PET-2001 なんてころです (懐かしいw)。そんな頃にこのコラム。。。すごいというのを通り越して感動すら覚えます。

2005年7月1日金曜日

Google Maps API

Google maps goes legit で知った。


Google Maps API が使えるようになってるそうです。Google Maps API Documentation を見てるだけでも結構面白いです。API とは言ってもクラスライブラリとか DLL とかではなく、どうやらすべてを HTML 上に書かれたクライアントサイドのスクリプトで扱うというものみたいです。


で、さっそくやってみました。
http://www.divakk.co.jp/aoyagi/gmap.htm
ぜんぜんたいしたことはやってないですけど。日本は細かいマップがないからサテライトモードにして、マーカーを表示してみたくらいです。ちなみに、マーカーのおいてある千里中央ってのは、私の自宅からの最寄駅です(^^


この Google Maps 関連で HousingMaps というのを見つけました。たとえば、New York の For Rent とかを選択するとニューヨークで貸しにでてる家(部屋)を地図上で探すことができます。黄色いマーカーをクリックすると部屋や外観の写真を見ることもできます。
なるほど、こりゃすごいな。さらにサテライトと組み合わせたり、Google Earth のほうのビルの 3次元情報と組み合わせたりしたらさらにすごいことになりそうだし。

SQL Server 開発チームのビデオ日記 @ TechEd 2005 Orlando

Video Diary Completed より


SQL Server 開発チームによるビデオ日記@TechEd 2005 Orlando だそうです。


って、最初の Day 0 Tour of the show floor しか見てないんですけど、これだけでも見てみてください。とにかく広いっ!最初のレジストレーションのところから 「なんだこりゃ」 と笑いがでちゃうほど広いっ。2:50 くらいからはパビリオンの設営風景みたいですが、3:08 くらいのところにはなにげに車が走ってますしw

2005年6月29日水曜日

Google Earth

Google Earth is awesome で知った。


Google Earth なんてものがリリースされてるんですね。NASA の WorldWind みたいなソフトです。無料のもありますが、GPS と連動できるとかいった高度な機能を搭載した有料版もあるようです (日本で使えるのかとかはよくわかりませんけど)。


さっそく、無料版をセットアップしてみました。初めて起動したときにデータを取り込んでるのか、地球が表示されるまでちょっと時間がかかりましたが、一度表示されてしまえばスムースに動きます。日本もそれなりに拡大できました。もっと細かい画像があるとより楽しいんですけどねぇ。やっぱり、アメリカ本土ほどは細かくありませんでした (たぶん Google Maps と同じ画像だと思います)。

2005年6月28日火曜日

スパムコメント対策に CAPTCHA を導入

先週末からかなりの数 (1日に400~500くらい) のスパムコメントが書き込まれてます。ただ、ストアドプロシージャを書き換えて、スパムっぽいものは非表示になるようにしてありますから、そのほとんどは表示されていません。表示されちゃったものもストアドをちょっと書き換えれば対処できています。けど、さすがにうっとうしいです。なので、CAPTCHA を導入することにしました。


CAPTCHA っていうのは、機械での読み取りがし難いように加工した画像に書かれている文字を入力してもらうことによって 「相手が機械ではなく人間であること」 を確認しようっていうものです。最近はいろいろなところで使われていますし、ググるとちゃんとした解説もたんさんでてきます。
コメント書き込みに CAPTCHA を使うようにすれば、機械的に POST することによって書き込みを行なっているスパムコメントは防ぐことができるでしょう。けど、普通にコメントを書き込もうって人の手間を増やすことになります。それに、たとえば目が不自由で読み上げソフトを使って Web を閲覧しているような方にとっては、画像に書かれた文字を入力するような CAPTCHA はかなり困った存在になると思います (Hotmail の登録時なんかは、画像だけではなく音声による CAPTCHA も用意してありますね)。


.NET で使える CAPTCHA もいろいろあるとは思いますが、今回は
Clearscreen CAPTCHA Control v1.4 Released with Community Server 1.0 support [UPDATED]
を使わせて頂きました。
このコントロールは、.Text と Community Server 1.0 に対応していますので、とても簡単に導入することができます。ただ、残念ながら画像のみで音声による CAPTCHA などといった機能はありません。


Readme.txt にも書いてありますが .Text への導入は以下の 2点だけで、リビルドも必要ありませんでした。



  1. Clearscreen.SharpHIP.dll を .Text の bin フォルダにコピーする。

  2. .Text のスキン用コントロール (Skins\スキン名\Controls フォルダ) の PostComment.ascx を書き換える。
    まず、
    <%@ Register TagPrefix="cc1" Namespace="Clearscreen.SharpHIP" Assembly="Clearscreen.SharpHIP" %>
    という 1行を追加。これは場所はどこでもいいと思うけど、私は 2行目 (<%@ Control ... %> のすぐ下) に書いています。
    次に、CAPTCHA を表示したい場所に、
    <cc1:HIPControl id="HIPControl1" runat="server" ControlMessage="この絵に表示されている文字列を入力してください (半角で4文字です)" RandomCodeLength="false" CodeLength="4" TextPattern="Percent90" BackgroundPattern="Percent40" FontSize="15" JavascriptURLDetection="false" />
    を追加。

これだけです。
また、上記のように cc1:HIPControl の方はいろいろとパラメータを指定できます。



  • ControlMessage … 画像の横に表示するメッセージ。デフォルトだと "Enter the code you see"。

  • RandamCodeLength … コードの文字数をランダムに決める。デフォルトは true。

  • CodeLength … コードの文字数。(デフォルトは RandamCodeLength が true なのでなし)

  • TextPattern … 画像のテキスト部分の HatchStyle。指定できる値は HatchStyle 列挙体 参照。デフォルトは Weave。

  • BackgroundPattern … 画像の背景部分の HatchStyle。指定できる値は HatchStyle 列挙体 参照。デフォルトは Wave。

  • FontSize … 画像のフォントのサイズ。デフォルトは 15。

  • ImageWidth … 画像の幅。

  • ImageHeight … 画像の高さ。

  • JavascriptURLDetection … 画像の src 属性をクライアントサイドの JavaScript によって指定するか。デフォルトは true。実は、true にしていると URL に #Feedback のように # が含まれているとバグります。対処方法は作者さんの blog の コメント にあります (このコメントにあるように cc1:HIPControl タグの後ろに src 属性を修正するクライアントサイドの JavaScript を埋め込む)。false にしておけば特に対処は必要ありません。

  • TrustAuthenticatedUsers … ログインしているユーザの場合は CAPTCHA を表示しません。デフォルトは true。

ほかにもありますが、とりあえずこんなところで。
(PersistDotTextComments という魅力的なプロパティがあるんだけど、残念ながら実装されていないみたい)

2005年6月27日月曜日

Longhorn Browsing and RSS

Channel 9: Longhorn (heart) RSS


先日アナウンスがあった 「Longhorn に RSS サポートを加える」 という件ですが、これに関するビデオが Channel 9 にありました。Longhorn と IE7 でのデモなども含まれているようです。

2005年6月24日金曜日

Visual Studio のリリースとデバッグの違い

Retail vs Debug settings for C# and VB.NET in Visual Studio より


以下、重要なところを要約。(完全な訳になってるわけではないです。訳が怪しいところもありますし、はしょってるところもあります)


----


Visual Studio の設定をデバッグからリリースに変えると何が変わるの?という件について。
まず、以下のことは C# と VB.NET のプロジェクトに関することである。


IL における主な違いは DebuggableAttribute についてである。v1.1 のこの属性には独立にトグルできる以下の 2つのフラグがある:


TrackDebugInfo:
これは JIT されたコードと IL の間のマッピングを作成することを許可する。これはリリースではパフォーマンス上の理由でオフにされる。


DisableOptimazation:
これは JIT に (JIT が IL をコンパイルする際に) 最適化されたコードを生成すべきか否かを知らせる。私は現時点の IL は変わってないと思う (訳注: JIT によって生成されるコードが同じという意味じゃなくて、リリースだろうがデバッグだろうが IL は同じだけど JIT された結果は違う、という意味だと思う。。。あってるかな?)。


※ PDB の生成はコンパイラの選択だが、普通は DisableOptimization がセットされていると PDB が生成されるだろう。なぜならそれはデバッグしたいであろうときにセットされるものだから。


v2.0 (Whidbey) では以下の若干の違いがある。
TrackDebugInfo はいつもセットされる。なぜなら、リリースをデバッグすることはそれ無しではまったく不可能だし、パフォーマンスの影響はとても小さいから。
DisableOptimization はこれまでと同じ。
あと 2つのフラグが追加されたが、今回の質問にはまったく関係しない (ので略)。


v2.0 (Whidbey) でプロジェクトの設定がリリースかデバッグかによってどう変わるかをまとめると、、、


まず、現時点ではリリースかデバッグがに関わらず同じ IL が作成される。


リリースでは、DebuggableAttribute に JIT が最適化されたネイティブコードが生成するようにセットされる。IL ソース行と C#/VB ソース行のマップの PDB ファイルなどは生成されない。


デバッグでは、DebuggableAttribute に JIT がデバッグ可能なネイティブコードを生成するようにセットされる。IL ソース行と C#/VB ソース行のマップの PDB ファイルが生成される。


※ 私は、VS にリリースビルドであっても PDB を生成させることはできると思う。けれども、どうやってやるのかはしらないし、リリースビルドでデバックするのは大変なのでそんなことをしたがる人があるとは思わない。


だから、デバッグビルドは大きなバイナリができるだろうけど、それは PDB が追加されてるだけである。
また、デバッグビルドの主なパフォーマンスへの影響は JIT によって生成されるネイティブコードがデバッグ可能で、従ってリリースに比べるとほんとに遅いものになるということである。

Team Foundation Server の MSF for Agile テンプレートがアップデート

Updated MSF for Agile Software Development Process Template より


「Team Foundation Server の beta2 を使ってるなら MSF for Agile のテンプレートのアップデート版がダウンロードできるようになったよ」 ということみたいです。
# 私は Team Foundation Server は入れてないのでよくわかりませんが。

XmlReader and XmlWriter articles by Alex Homer

XmlReader and XmlWriter articles by Alex Homer より


上記の XML Team の blog によると 「Alex Homer による .NET 2.0 の XmlReader と XmlWriter に関するすばらしい記事」 とのことです。
# 読んでみたいけど、ちと長いな(^^;

2005年6月23日木曜日

SQLCLR の IS NULL と IsNull

IS NULL vs. IsNull より


SQLCLR の UDT が null であることを確認するのは IS NULL がいいのか IsNull がいいのか、っていう話。詳しい内容は上記 blog をみてもらうとして、結論は 「IS NULL ならば UDT をデシリアライズする必要はないけど、プロパティやメソッドを呼ぶにはデシリアライズしてインスタンスを生成する必要がある。なので Query 1 のほうがパフォーマンスがいい」 ということらしい。なるほど、言われてみればもっともだな。

2005年6月20日月曜日

Re: VB2005 ではフォームをインスタンス化しなくて良い

じゃんぬねっと日誌: 「VB2005 ではフォームをインスタンス化しなくて良い」 でもりあがってた話題ですが、VB2005 って、


Form1.Show()


なんてことができるんですね。ここの Form1 っていうのがクラス名であってインスタンス名じゃないってとこがミソですね。


んで、当然のことながらどうやってるのか気になるところ。さっそく ildasm で見てみました(笑)
VB2005 の Form1.Show() の 1行によって生成された IL を C# 風に書いてみると


My.MyProject.MyForms forms = My.MyProject.get_Forms();
Form1 frm = forms.get_Form1();
frm.Show();


という感じになっています。


なるほどねぇ。やっぱり My なんですねぇ。
My の中の MyProject には Forms っていう MyForms クラス (のインスタンス) を返すプロパティがあるんですね。そして、MyForms には Form1 というプロパティがあると。で、この Form1 プロパティは Form1 クラスのインスタンスを返すと。ちなみに、この Form1 プロパティは常に同じインスタンスを返すようです。なので、Form1.Show() を 2回やったからといって 2つのフォームが開くわけではありません。


ここで重要なのは MyForms クラスは .NET Framework にあらかじめ用意されているわけではなく、プロジェクトにあわせてその場で作られてるってところですね。My.MyProject.WebServices も同じような感じです。


私は、これが My の My たるところだと思ってます。普通の処理であれば C# で 「My もどき」 を実装することだって特に問題はないはずです。しかし、こういう風に 「プロジェクトにあわせてプロジェクトごとに自動的に作られる」 部分はどうしようもないんですよね。「VB's *My* for C# Developers」 に 「My もどき」 の That というクラスを C# で実装するという記事がありますが、ここでも My.MyProject の部分は含まれていないようです。たぶんこれを何とかするには Visual Studio のマクロなどを使って動的にソースを生成するとかしないとどうしようもないんじゃないかと思います。


で、VB2005 では Visual Studio が My.MyProject の部分をうまいことやってるのか、それとも、VB コンパイラのレベルでなんとかしているのかは調べていません(VS を使わずに vbc でやってみればわかることですが)。

2005年6月18日土曜日

GZipStream なんてあったんだ

Using GZipStream for Compression in .NET [Brian Grunkemeyer] より


へぇ、.NET Framework 2.0 には GZipStream なんてあったんですね。

Visual Studio 2005 June CTP

MSDN Subscribers Download に VS2005 June CTP が上がっているそうです。
CTP Madness によると互換性があるのは SQL Server 2005 Express June CTP だけとのことです。ということは Avalon & Indigo SDK beta1 RC とかとはいっしょに入れれないんですね。

2005年6月15日水曜日

CTP Madness

Visual Studio 2005、SQL Server 2005、Avalon & Indigo (WinFX) SDK などなど .NET Framework 2.0 に関係するツールたちは何度も CTP や beta がリリースされていて、すぐには 「どれがどのバージョンと共存できるのか」 ということがわかりません。


そんなときに使えるツール
http://channel9.msdn.com/ctpmadness/Default.aspx


これで、たとえば 「Avalon and Indigo Beta1 RC」 を選択すると、VS2005 beta2 や SQL Server 2005 April CTP、June CTP と共存できるってことがすぐわかりますし、それぞれのダウンロード先もわかります。すばらしい

Visual Studio 2005 Beta2 Patch for Visual C++ Developers

Visual Studio 2005 Beta2 Patch for Visual C++ Developers


英語版しかないみたいですが、VS2005 beta2 VC++ デベロッパ向けパッチというのが出ています。私は当てていません(というか、日本語版の VS2005 beta2 を入れたので当てれるのかどうかもわからない)ので、このパッチがどういうものかとかはよくわかりません。

Spec# preliminary release (いつの間に)

ずいぶん前に
Spec#
Spec# (ちょっと追加)
で書いた Spec# ですが、いつの間にか preliminary release というバージョンがリリースされてました(仮リリースって意味なのかな?)。
http://www.research.microsoft.com/specsharp/
このリリースは .NET Framework 1.1、Visual Studio.NET 2003 用とのことです。Visual Studio 2005 用は 「will be soon」 なんて書いてありますね (ほんとなのかな?)。

2005年6月13日月曜日

New Recommendations for Using Strings in Microsoft .NET 2.0

Comparing strings in Whidbey より


MSDN Library に New Recommendations for Using Strings in Microsoft .NET 2.0 という記事が載ったそうです。
# まだ読んでないけど、これは読んどかなくちゃいけないな。

Anders Hejlsberg 氏へのインタビュー

Microsoft's Hejlsberg touts .Net, C-Omega technologies より


InfoWorld 誌による Anders Hejlsberg 氏 (C# の設計者) へのインタビュー記事です。インタビュー自体は TechEd 2005 Orlando の際に行なわれたみたいです。


いちおうざっと読んでみました。もちろん、よく意味がわからないとことかいっぱいあるんですけどね。


最初は 「C++ とか VB とかあるのに C# の(C# を作った)狙いはなに?」 なんて感じの質問から入ってます。Hejlsberg 氏は 「curly brace family の中に現代的な言語を作るのが効果的 (?effectively) だった」 なんて言ってますね。curly brace family っておもしろい表現だなぁ。日本語で言うと中括弧族 っていう感じかな。で、「Edit&Continue をなんで C# に入れたの?」 と。これには 「元の計画では時間的に無理だということになってたけど、入れれそうになったのとたくさんのフィードバックがあったから」 ということだそうです。んで 「VS2005 の C# の目玉は?」 との問いには 「IDE として見ると Edit&Continue とリファクタリング」 って感じでリファクタリング機能についてちょっと語ってますね。そして 「言語としては Generics」 と。


中ほどの 「What is the importance of the C-Omega project at Microsoft?」 という問い。Hejlsberg 氏はやっぱり C# のようなプログラミング言語と SQL、XQuery といった問い合わせ言語をいかに統合していくか、ということを重要視しているようです。プロトタイプ (Cω のこと?) から多くのことを学び、その多くの知識を C# やそれ以外の言語に適用するという作業を今行なっているところだ、なんて感じのことも書いてあります (もちろん、これらは VS2005 以降のことだ、とあとのやり取りで出てきます)。けど、Cω のもう一つの機能である Polyphonic C# の部分については何も言ってなさげだな。


そして、しばらく 「Eclipse はどうよ?」 というやり取り。っていうか、この記者さん Eclipse に思い入れでもあるのかな?ずいぶんしつこく聞いてるような。けど、Hejlsberg 氏って C# という言語が主な担当であって、IDE のことを聞かれてもどうしようもないような。。。
最後のほうの 「anti-Microsoft に対して言いたいことは?」 という問いに対しての 「今の Microsoft はすごく透過的なったし、すごく開放的になった」 というのは激しく同意。

トラックバックスパム

最近、トラックバックによるスパムがずいぶん来るようになりました。けど、そのほとんどは .Text が自動的にはじいてくれてます。と言うのも、.Text は相手先にちゃんと自分へのリンクがあるか確認してるからです。たとえば、こちらの記事 A に対してトラックバックが送られてきたとします。このとき .Text はトラックバック送信元 (この URL はトラックバック自身に含まれている) の記事を取得し、その記事のなかに A へのリンクがあるかを確認しています。きちんとリンクが見つかればトラックバックとして登録しますが、見つからなかった場合はエラーを返してトラックバックとして受け付けません。この場合、.Text 上はどこにも記録は残りませんから、IIS のアクセスログを見たりとかしないとそういうトラックバックが来ていたこと自体わかりません。で、最近来ているトラックバックスパムもこの仕組みのおかげではじかれてました。


んが、存在しない記事に対するトラックバックが受け付けられてました。トラックバックスパムは機械的に URL を作ってるのか存在しない記事番号に対しても送られてきたりします。この場合も上記のようなチェックはしているんですが、ちょっとしたコードの問題で受け付けられてしまいます。まぁ、受け付けられても記事自体が存在しないわけですから、Web 上のどこにも表示はされません。けど、データベースには格納されてしまいますし、管理者の Feedback ページでは表示されますからうっとおしいのは確かです。


というわけで、存在しない記事へのトラックバックをエラーとするように修正。
Dottext.Framework\Tracking\TrackBackHandler.cs の 98行目くらいに


Entry trackedEntry = Entries.GetEntry(postId,true);
if (trackedEntry == null)
{
trackbackResponse (context, 1, "EntryID is invalid or missing" ) ;
}



というように青字の部分を追加してビルドすれば OK です。

start.com/3

start.com/3 より


start.com がバージョンアップして /3 になったそうです。
ちなみに、ほんとうの URL には辿り着くには最初に簡単な 5つのクイズに答える必要があるみたいです。それぞれの答えは MSN Search の結果を見ればすぐにわかると思いますけど。

2005年6月11日土曜日

Acrylic

A new product announced: 'Acrylic' より


コードネーム 'Acrylic' というプロダクトのベータ版がダウンロードできるようになったそうです。
'Acrylic' っていうのは Creature House Expression 3 の次期バージョンで、プロフェッショナル向けのベクタベースのイラストレーションツール、とのことです。


へぇ、'Acrylic' どころか Creature House Expression 3 というのも知りませんでした。見てみたら Windows 用と Macintosh 用のフリーダウンロードバージョンがあるんですね。

2005年6月10日金曜日

VS2005 Express をレジストレーションすると eBook がもらえた(そうです)

以前に書いた 「VS2005 Express をレジストレーションすると eBook がもらえる?」 ですが、小野@どっとねっとふぁん さんがコメントを付けてくださいました。


日本語版の Visual Studio 2005 Express beta2 でもレジストレーション後に送られてくるメールに書いてあるキーで eBook が読めるようになるそうです (もちろん、英語の eBook ですが)。けど、C# Express と VWD とでは読める本が違うんですね。へぇ。詳しくは上記のエントリの小野さんのコメントを参照して下さい。


コメントありがとうございました>小野さん

WSE 3.0 CTP for VS2005 beta2

WSE 3.0 CTP (for Visual Studio 2005 Beta 2) available for download より


Web Services Enhancements 3.0 の CTP です。VS2005 beta2 用だそうです。
と言っても WSE って (2.0 も含めて) どんなものなのかよく知らないんですけどね。つか、WS-* 自体ほとんど知らないんですけどね(^^;
# ちなみに Indigo もぜんぜん知らない(^^;

本場の TechEd はすごいなぁ

今、行なわれている TechEd 2005 Orlando ですが、やっぱり本場の TechEd はすごいんですねぇ。


エバンジェリストグループ Blog: 「Tech ED 2005 に参加しています
プレカンファレンスも入れると 6日間もあるのか。。。
うーん、夜 10時まで BOF ですか。。。
って、Agenda を見ると Jam Session なんてものが夜中の 1時まであるぞ(^^ もちろん、Jam Session は技術的なセッションじゃなくて、ほんとにジャムセッションみたいですが(^^;
むぅ、Special Events によると、パーティはユニバーサル・スタジオ・オーランドを PM7:30~PM11:00 まで貸し切りですか。。。VIP 待遇を受けるんですか。。。アトラクションも乗り放題ですか。。。食事も無料ですか。。。


いったい何人くらい参加してるんだろう?
と思ったら http://japan.cnet.com/news/ent/story/0,2000047623,20084215,00.htm こちらに約1万1000人とかって書いてあった。(スティーブ・バルマーのキーノートスピーチの聴講者の数みたいだから TechEd 全体だともっと多いのかも)


おぉ
Podcast Videos at TechEd 2005 - includes Don Box Pod Attack
こんなの発見。なんか Microsoft の撮影スタッフが Don Box のセッションに乱入したりしてるみたいです(^^;

VS2005 は 11月前半ですか

# すでに今さらなニュースですが、自分の覚え書きとして。


Visual Studio 2005 と SQL Server 2005 (共に英語版) のリリースが 11月 7日の週ということになったとのこと。
http://msdn.microsoft.com/launch2005/


日本語版は、いつくらいかなぁ。

2005年5月28日土曜日

そんなに誉めないで>コメントスパムさん

うーん、


Sender: Jason

Great article.
Your article is great.
Thanks.


っていう同じ文面のコメントが今朝から大量に書き込まれてるんですよねぇ。もうすでに 100通以上(^^; たいしたこと書いてないんで、そんなに誉めないで下さいよ。つか、日本語読めるんですか?(^^


って、もちろん、コメントスパムなんですけどね。文面にはリンクはないですが、コメントの記入者の URL が バイアグラ・なんとか・ドット・ビズ なんて感じの URL になってます。ちょうど、このコメントがいくつか書き込まれたところで気付いたので、とっとと対策は済ませました(なので、このコメントがいくつ書き込まれても表示はされません)。

2005年5月26日木曜日

.NET Framework 1.1 と 2.0 beta の互換性

Microsoft .NET Framework 1.1 and 2.0 (Beta) Compatibility より


.NET Framework の 1.1 と 2.0 beta の互換性に関するドキュメントが公開されたそうです> Microsoft .NET Framework 1.1 and 2.0 (Beta) Compatibility

GAC API

GAC Internals Are Implementation Detail より


KB に 「DOC: Global Assembly Cache (GAC) APIs Are Not Documented in the .NET Framework Software Development Kit (SDK) Documentation」 という GAC API のドキュメントがあるそうです。もちろん IAssemblyCache だとかなんだとかっていう、ほんとの API です。
# しかし、「GAC API は .NET Framework SDK ドキュメントに掲載されてない」 ってのも
# なんとも言えないタイトルだな

.NET Framework 2.0 beta2 で作られたツール

vXCopy - Multi-Threded Files Copy Tool - Version 1.0 Released より


vXCopy というマルチスレッドでファイルコピーができるツールを Microsoft の方が公開しているようです。


って、まだツール自体はインストールもしてないのでどんなものなのかもまったくわからないんですけどね(^^; ただ、ClickOnce を使って公開しているって書いてあったので 「おぉ」 と思っただけです。

beta.asp.net 開始

beta.asp.net launches より


http://beta.asp.net/ が始まったそうです。上記の blog によると、これは ASP.NET 2.0 Beta と Visual Web Developer 2005 Express Edition のための新しいコミュニティポータルで、完全に ASP.NET 2.0 にフォーカスした http://www.asp.net/ の延長線上のサイトだそうです。また、ASP.NET 2.0 を基礎にしたデザイン、ルック&フィール、バックエンドのインフラストラクチャってことなので、どうやらこのサイト自体が ASP.NET 2.0 で作られてるみたいですね。

2005年5月25日水曜日

.Text のコメントの自動リンク処理の修正

.Text でコメントを書くときに URL らしき文字列は自動的にリンクになります。
しかし、


http://msdn2.microsoft.com/library/s1wwdcbf(en-us,vs.80).aspx


というように URL の途中に括弧が入っていると、途中でちょん切られたリンクになってしまいます。URL の途中に括弧が入ってるなんてめったに出会わないと思うんですが、上記のように .NET Framework 2.0 のドキュメントが括弧を使ってるんですよねぇ(^^;
この問題は AI-Light blog の うなまな Blog 「シリアル通信が楽になるかな。。。」 のコメントのやり取りを見て気付きました(^^


これを修正するには、ソースを直してビルドしなおす必要があります。


文字列中から URL を探してリンクにする処理は Code\Dottext.Framework\Util\Globals.cs の EnableUrls メソッドで行なわれていますが、ここで使われている正規表現が原因です。
もともとの EnableUrls メソッドは以下のようになっているかと思います。


public static string EnableUrls(string text)
{
string pattern = @"(http|ftp|https):\/\/[\w]+(.[\w]+)([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])";
MatchCollection matchs;

matchs = Regex.Matches(text,pattern, RegexOptions.IgnoreCase | RegexOptions.Compiled);
foreach (Match m in matchs)
{
text = text.Replace(m.ToString(), "<a target=\"_new\" href=\"" + m.ToString() + "\">" + m.ToString() + "</a>");
}
return text;
}


これを


public static string EnableUrls(string text)
{
string pattern = @"((http|ftp|https):\/\/[\w]+(.[\w]+)([\w\-\.,@?^=%&amp;:/~\+#()]*[\w\-\@?^=%&amp;/~\+#]))";
string replacement = "<a rel=\"nofollow\" target=\"_blank\" href=\"$1\">$1</a>";
text = Regex.Replace(text, pattern, replacement, RegexOptions.IgnoreCase);
return text;
}


このように修正します。
修正内容は



  • URL として抽出する正規表現に括弧( "(" と ")" ) を追加。
  • ついでに、元のコードだとループを回して処理していたのを Replace 一発で処理するように変更。ちなみに、元のコードだと置換した結果をさらに置換してしまうというバグが発生する場合があるみたいなのでこのように修正しました。
  • 元のコードだと <a target="_new"... としていたのを <a rel="nofollow" target="_blank"... に変更。
    rel="nofollow" は、コメントスパム対策用です。「米Google、リンク属性を利用したコメントスパム対策機能」 などを参照。書くの忘れてましたが、2005年 2月くらいにコメントスパムがやってくるようになったころに rel="nofollow" を入れるように改造してました。
    target="_blank" にしたのは好みです。"_blank" にするつもりが間違って "_new" としたのか、わざと "_new" にしたのかはわかりませんけど。ちなみに、"_blank" は 「常に新規にウインドウを開く」 という予約されたターゲット名ですが、"_new" にはそんな規定はないので単に 「"_new" という名前のウインドウがなければ新規に開き、あれば再利用する」 という動作になります。

です。


上記の修正をした DLL を http://www.divakk.co.jp/aoyagi/dotText_bin.ZIP において置きました(今回の修正だけではなく、今までの修正すべてが反映されています)。


2005/05/25 10:25 追記
肝心のソースのところが化けてたので修正しました。(化けていたというか、ソース中の <a> とかがうまく変換できてなかったのでちゃんと表示されていませんでした)