ページ

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\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])";
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> とかがうまく変換できてなかったのでちゃんと表示されていませんでした)

2005年5月24日火曜日

MSN Virtual Earth

Welcome to Virtual Earth! より


なにやら "D" というカンファレンスでビル・ゲイツによって MSN Virtual Earth というものがアナウンスされたそうです。
まぁ、基本的には Google Maps の衛星写真モード と同じものみたい(^^; ただ、45度斜め上から見れるようでそれがすごいってことみたい。(けど、Google Maps もそうだけど、詳細な画像はアメリカ国内くらいしかないんだろうなぁ)

VS2005 Express をレジストレーションすると eBook がもらえる?

Visual Studio 2005 Express をレジストレーションすると http://lab.msdn.microsoft.com/express/register/default.aspx にある online book にアクセスできるようになるみたいですね。http://lab.msdn.microsoft.com/express/vcsharp/default.aspx とかにも 「Register Visual C# 2005 Express Edition Beta 2 within 30 days and you will receive access to free online books and other valuable information.」 とあります。30日以内というのが必要条件なのかどうかはわかりませんが、レジストするとフリーの online book と有益な情報へのアクセスを受け取れるそうです。C# だけではなく VWD、VB、C++ などにも同じような文言が書いてあります。


けど、レジストの特典について書かれているのは英語版のほうだけで日本語版のほうにはそういった記述はないみたいです。日本語版でもレジストすると online book にアクセスできるようになるのかどうかはよくわかりません。まぁ、アクセスできたとしてもこれらの online book は英語の書籍なんですけどね。どうせだったら日本語の書籍が読めるようになったりするとうれしいんだけどなぁ。


ちなみに私は MSDN Subscriber Download から VSTS 日本語版をダウンロードしてセットアップしました。これって、Express と違ってレジストレーションはなかったように思います (少なくともレジストみたいなことをした記憶はない)。なので、レジストすると具体的にどうなるのかとかはよくわかりません。
# このためだけに Express を入れるのも面倒だしなぁ

2005年5月23日月曜日

Microsoft Update ベータ

The new Microsoft Update is pretty cool より


Microsoft Update なるもののベータが始まったそうです。FAQ によると、Microsoft Update っていうのは 「Windows だけではなく、インストールされている他の Microsoft 製品 (Microsoft Office、Exchange Server、SQL Server など) のアップデートを助けてくれる新しい Web サイト」 ということみたいです。

2005年5月20日金曜日

Microsoft Research が C# で OS を開発中

An operating system written in C# より


Microsoft Research が C# で書かれた新しいオペレーティングシステムを開発中とのこと。その名は Singularity というらしい。
と言っても、Microsoft Research は Microsoft の研究開発部門なので、「Longhorn の次の Windows は C# で書かれるらしい」 とかって早合点しないことw


Singularity がどんな OS なのか調べてはいないけど、個人的には 「Managed の Managed による Managed のための OS」 である Ponytail あらため CooS にがんばって欲しいなぁと思ってたり(^^;

VS2005 クラスデザイナの機能拡張

PowerToys for the Visual Studio 2005 Class Designer and Distributed System Designers より


VS2005 のクラスデザイナにいろいろな機能を追加するアドインが GotDotNet Workspace にあるそうです。


が、VS2005 beta2 日本語版に入れてみたところエラーが出てしまいます (VS2005 の起動時にアドインでエラーが出たというメッセージが表示されます。なお、このアドインが使えないだけで VS2005 自体はちゃんと動いているみたいです)。なぜだろ?英語版じゃないとダメなのかなぁ。もし、動いた人がいたらどんな感じか教えてください。

2005年5月17日火曜日

Visual Studio "Hawaii"

一色さんの IT+ 「Visual Studio "Hawaii"」 で知った
eWeek: 'Hawaii': A Visual Studio Paradise for Developers? より


ちゃんと読んだわけでも、ちゃんと読めるわけでもないんですが(^^; ざっと読んでみました。


"Whidbey" (これは Visual Studio 2005 のコードネーム)、"Orcas" (これは Longhorn と同時期に出ると言われている Visual Studio のコードネーム) の後に続く Visual Studio はコードネーム "Hawaii" だそうです。しかし、「according to sources familiar with Microsoft's plans」 なんてありますが、これは 「Microsoft の計画に近い筋によると」 ってこと?いったいどんな筋なんだろう?
で、"Hawaii" は 「完全に再設計されたツールセット」 なんてありますね。Whidbey、Orcas と今まではアメリカ大陸北西の太平洋側の島の名前をコードネームに使ってたけど、新しいバージョンはデベロッパにとってこれら 2つのバージョンとはずいぶん違うものになるから "Hawaii" にした、みたいなことが書いてある。


Orcas の計画は今春か夏から全力で始まる、みたいなことが書いてあるな。うーん、Longhorn はいちおう 2006年ということになってたと思うけど、Orcas って 2006年に出るんだろうか?歴史的に見ると Visual Studio は複数の開発が同時期に行なわれていた、みたいなことも書いてあるから、すでに Orcas の開発も進んでいるってことなんだろうけど。。。Visual Studio.NET の 2002 と 2003 みたいにマイナーバージョンアップになっちゃったりしてw。 2002 → 2003 は .NET Framework 1.0 → 1.1 と .NET Framework 自体もマイナーバージョンアップだったからそれでもよかったけど、Whidbey → Orcas は .NET Framework 2.0 → WinFX ということでかなり大きなバージョンアップになると思ってたんだけどなぁ。もっとも 「ほんとに WinFX なんてものが出るの?」 という気がしないでもないんですが。Avalon/Indigo の CTP が提供されたり、逆に WinHEC で公開された Longhorn の最新ビルドには WinFX が含まれていないなんていう話を聞いたりと、こうなるともう 「WinFX っていうコードネームはこのままフェードアウト?」 という気がしちゃうし、さらに言っちゃうと 「WinFX の正式名って、ひょっとして .NET Framework 2.1?w」 という気がしちゃうわけです(この辺は完全に個人的な想像でなんの根拠もありません)。


けど、記事の 2ページ目の最初のほうにありますが、Orcas は Avalon、Indigo、XAML、コードネーム Sparkle (Avalon での開発をサポートしてくれて XAML を記述してくれる?この辺、よくわかってません)、というような Longhorn といっしょにやってくるいろいろなものをサポートする必要があります (というか、サポートしてくれなかったら悲しい)。そういう意味では結構なメジャーバージョンアップになるんでしょうね。


と、個人的には Hawaii よりも Orcas だな。つか、その前に Visual Studio 2005 だなw
(記事のほうでも Hawaii よりも Orcas のほうが多く扱われているような感じ。まぁ、Hawaii なんて、まだコードネームが出てきただけって段階でしょうからねぇ)

XAMLshare.com

A new XAML wiki: XAMLshare.com より


http://www.xamlshare.com/ というのが立ち上がったそうです (FlexWiki を使った Wiki サイトです)。
「XMLshare は、デザイナやデベロッパ、他のみんなが Microsoft "Avalon" ベースのユーザインターフェースのための XAML のサンプル、コントロール、スタイルを検索したり共有したりするための中心的な場所」 だそうです。


まだ、始まったばかりでほとんど情報はないみたいですが、http://www.xamlshare.com/default.aspx/Objects/PlayingCard.html こちらに XAML で書いたトランプのカードがあります (なげぇ)。で、http://www.xamlshare.com/default.aspx/Objects/PlayingCardHand.html こちらにそのカードを扇型に並べた XAML コードがあります。


 

VS2005 Team Foundation Server を動かすのに必要なハードウエアリソース

Team Foundation Hardware Requirements より


何人規模のときにどの程度のハードウエア (CPU、ハードディスク、メモリ) が必要になるかがまとめられています。
# もちろん、まだまだ beta の段階なので確定した値ではないんでしょうが。

Terrarium 1.2

Terrarium 1.2 Server Available より


2005年 5月 10日付けで Terrarium 1.2 が更新されています。


# というか、まだメンテされてたんですね。「なつかしー」 とかって思っちゃいました(^^;

SQLCLR と Transact-SQL のカーソル

SQL Server 2005: Migrate cursor developed stored procedures より


上記の blog でとっても単純なテーブルに対して


select sum(cast(a.ID * b.ID as decimal))
from tableA a, tableA b


という SQL を実行すると 1秒もかからない。


同じ内容を Transact-SQL のカーソルを使ってぐるぐるループするようにした場合は 1分くらいかかる。


この Transact-SQL と同じ意味になるようにした SQLCLR (カーソルのかわりに DataReader でぐるぐるループする) の場合は 7秒くらいですむ。


だそうです。
あたり前と言えばあたり前ですが、普通の SQL ですむものはやっぱりそれが一番速いわけです。しかし、カーソルを使わなくちゃいけないような場合は SQLCLR を使う価値もあるかもしれないということになるようです。(けど、そもそもカーソルなんてなるべく使わないようにするってのが一番だと思いますが(^^; )
まぁ、カーソルうんぬんは置いておいて、これは Transact-SQL でループだとかといったロジックを組むよりは SQLCLR で組むほうが速くなる(場合がある)ということなんでしょう。ただ、どの程度の複雑さの場合にどちらが有利になるのかは一概には言えないでしょうから、場合によっては両方とも試してみる必要があるってことになっちゃいそう。

URL を抽出するための正規表現

さっきの 「.Text のコメントの自動リンク処理の修正」 の中で .Text は URL を抽出するのに正規表現を使っていると書きましたが、この正規表現ってけっこういいかげんっぽいです。なので、今後もうまくリンクにできない URL に遭遇する可能性大です。ほんとうなら、RFC なんかに則ったちゃんとした正規表現にしておきたいところです。そうすれば、どんな URL がきても大丈夫なはずです。(まぁ、RFC から外れた形式の URL なんかが書かれてるとダメになっちゃいますが、これは対処療法的に対応するしか仕方ないですしね)


で、こういう正規表現って誰かが書いてるだろうと思ってググってみました。
http URL の正規表現
Perl 向けに書かれたドキュメントのようですがすばらしいです。URL の正規表現も RFC を元にしたとてもきっちりとした正規表現になっているようです。
# ちょっと下にある 「メールアドレスの正規表現」 で紹介されている
# 正規表現ってものすごいな。

2005年5月13日金曜日

Object Test Bench - III: Exploring Framework APIs...

Object Test Bench - III: Exploring Framework APIs... より


正直、なにをやってるのかよくわかんないんですが。。。(^^;


なんか、動的に IL を作って、その IL に対応するようなソースコードっぽいものをあらかじめ用意しておいて、動的に作った IL がそいつをシンボルとして参照するようにしておいて、オブジェクトテストベンチでこのコードの Main を実行してやれば、ちゃんとその 「ソースコードっぽいもの」 のブレークポイントで止まったり、変数の内容をウオッチしたりできるってこと?
いや、実際に試してみるとそうなんだけど。。。


なんかすげぇ(^^;

VS2005 ですべての参照部分にブレークポイントをセットするマクロ

Setting Breakpoints on All References より


たとえば、こんなコードがあったとします。

public class TestClass
{
private int num;

public TestClass()
{
this.num = 0;
}

public int Func()
{
return this.num;
}
}

VS2005 で上記の blog にあるマクロを適当に登録しておいて、num のところにキャレットを置いた状態でこのマクロを実行します。すると、num を参照しているところすべてに自動的にブレークポイントがセットされます。

VS2005 のクイックコンソール

今まで気に止めてなかったんですが、クイックコンソールなんてものが増えてますね。なんなんだろうと思って見てみたら、Console の入出力をリダイレクトしてくれてるウインドウとのこと。
試してみると、



  • コンソールアプリケーションの場合は、コンソール(MS-DOS みたいな画面)とクイックコンソールの両方が有効。同じ内容が出力されるし、入力はどっちに対してしてもいい。

  • Windows アプリケーションの場合は、Console への出力がクイックコンソールにリダイレクトされる。入力は微妙な感じ。少なくとも Console.ReadLine(); としてもブロックされない。

  • Web アプリケーションの場合は、出力も入力もリダイレクトされない。

という感じ。ということは、Windows アプリケーションのときにちょっとしたデバッグ用のメッセージを Console.WriteLine() とかで出力できて便利ってことかな?けど、それくらいのことなら Debug.WriteLine() でもできるし。。。
クイックコンソールってどんなときに便利なの?教えてプリーズ。


ちなみに、メニュー 「ツール」-「オプション」-「デバッグ」-「全般」 の 「すべてのコンソール出力をクイックコンソールウインドウにリダイレクトする」 でクイックコンソールを表示するかどうかをオン・オフできます。

VS2005 で使える技

Sara Ford's WebLog より


Visual Studio の (主にエディタの) ちょっとしたチップスなんかがいっぱい紹介されています。
すべてを読んだわけではありませんが、以下、目に付いたものを紹介。


Did you know… How to share code snippets with other team members
VS2005 のコードスニペットをチーム内で共有するには、メニュー 「ツール」-「コードスニペットマネージャ」 で 「追加」 ボタンを押して適当な共有フォルダを指定しておけばいい。


Did you know… Visual Studio 2005 support for Code Snippets
VS2005 のコードスニペットのスキーマと書き方の説明へのリンク。


Use Ctrl-K Ctrl-C to comment selection and Ctrl-K Ctrl-U to uncomment selection
Ctrl+K Ctrl+C で選択範囲をコメントアウト。Ctrl+K Ctrl+U で選択範囲のコメントを解除。VS.NET2003、VS2005。


Did you know… How to open something in the binary editor (using Open With)
ファイルを開く (Ctrl+O など) とき、「開く」 ボタンのドロップダウンリストで 「バイナリエディタ」 を選ぶ、もしくは、「ファイルを開くアプリケーションを選択」 で 「バイナリエディタ」 を選ぶとバイナリエディタで読み込まれる。VS.NET2003、VS2005。


Did you know… The power of incremental searching
Ctrl+I でインクリメンタルサーチ。反対向きは Ctrl+Shift+I 。VS.NET2003、VS2005。


Cool new little Editor feature in the Dec CTP – Edit.PasteParameterTip
this.Foo(
などと入力するとインテリセンスで引数の情報がツールチップに表示されますよね。この状態で Ctrl+Alt+Shift+P とするとツールチップの状態がペーストされる。また、Ctrl+Alt+Shift+C とするとクリップボードにコピーされる。VS2005 のみ。

2005年5月2日月曜日

Visual Studio 2005 Beta2 日本語版をセットアップしてみた

Visual Studio 2005 Beta2 日本語版をセットアップしてみました。


セットアップしてみた OS は、今まで CTP や Beta1 を消しては入れてきた Windows XP SP2 です。実は Virtual PC とかではなく、普段使ってるマシンだったりします(さすがに業務に使ってるマシンではないですが)。けど、いくら Beta2 では Go-Live ライセンスが提供されるとは言っても、しょせんは Beta なので、そのあたりは理解した上で自己責任で入れるべきかと思います。


まずは Beta 2 より前の Visual Studio 2005 プレビュー版の削除 を参考にすでに入っている CTP を削除。SQL Server 2005 関連とかでここに載っていないものもありましたが、それらももちろん削除。


さらに念のため Documents and Settings や Program Files の下なんかをエクスプローラで見ていき、VS2005 に関係しそうなもの (ちなみに、VS2005 はバージョンナンバー的には 8 になってることが多い)、SQL Server 2005 に関係しそうなもの (こちらはバージョンナンバー的には 9 ) を手動で削除。間違ったファイルを消すと既存のアプリが動かなくなる可能性があるので、よくわからない人にはお勧めしませんが。


続いてせっかくなので VS2005 クリーンアップツール で取り上げたツールを動かしてみました。exe を起動すると使用許諾などが表示され、続いてクリーンアップする製品を選択...これはグレー表示になっていて選択できませんでした。たぶん、先にコントロールパネルのプログラムの追加と削除で削除してしまったからでしょう。けど、選択できなくても特に問題なく 「Cleanup Now」 ボタンで実行できました。「View Log」 してみると、結構たくさん 1.2 やら 2.0 やらといったものが報告されています。と言っても、細かいことはよくわかりませんし、それらが Beta2 のセットアップに影響するようなものなのかどうかもよくわかりませんけど。まぁ、コントロールパネルのプログラムの追加と削除で全部削除したつもりでも MSI 関連、GAC、レジストリなどに結構ゴミが残っているというのは確かなようです。


次に、せっかくなので MSDN Subscriber Downloads からダウンロードできる SQL Server 2005 CTP - April 2005 - Developer Edition (Japanese) を入れてみました。特に問題もなくすんなりセットアップは終わりました。


最後に、これまたせっかくなので Visual Studio 2005 Team Suite Beta 2 (Japanese) をセットアップ (価格的に考えて業務でも個人でも Team Suite が使えるとは思いませんけどw)。上で SQL Server 2005 を入れてあるので、SQL Server 2005 Express だけはずして、他はほとんどデフォルトのまま。こちらも特に問題なくセットアップは終わりました。


と、最初に書いたように 「クリーンには程遠い」 ようなマシンですが、セットアップ自体は問題なく終わりました。まだ SQL Server 2005 も VS2005 もいちおう起動することを確認した程度ですが、実行も特に問題はないみたいです。
それに、同じマシンに Visual Studio.NET 2002、2003 も入ってますが、もちろんこれらも問題ないみたいです。

VS2005 クリーンアップツール

VS2005 の Beta1 や CTP をクリーンアップするツール」 で紹介したツールですが、「Version of VS 2005 beta cleanup tool now available on the Download Center」(作者さんの blog) によると Microsoft Download Center からもダウンロードできるようになったそうです。


また、「ディベロッパー製品開発統括部 Blog: VS2005 クリーンアップツール」 こちらには日本語で使い方の説明があります。