ページ

2005年6月13日月曜日

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\-\.,@?^=%&:/~\+#]*[\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 を元にしたとてもきっちりとした正規表現になっているようです。
# ちょっと下にある 「メールアドレスの正規表現」 で紹介されている
# 正規表現ってものすごいな。