ページ

2005年3月4日金曜日

Generics は CLS 準拠

Generics and CLS compliance...
Extra! Extra! Generics CLS-compliant in Whidbey! [Peter Drayton] より。


へぇ、Generics って CLS 準拠になるんですね。
CLS の話は 「言語の相互運用性の概要」 このあたりかな?

ノータッチデプロイメントで HTTP 圧縮を使えるか?

HTTP 1.1 からは HTTP 圧縮ってのがあります。これは、HTTP 内のデータを圧縮することによってネットワーク上の転送量を減らすことができる (かもしれない) というような内容です。IIS も対応しています(デフォルトではオフだったような気がしますが)。
IIS での HTTP 圧縮の詳しいことは IIS 5.0 Web サイトで HTTP 圧縮を使用する  こちらなどを。


というのを踏まえて、
Http Compression and Assembly loading より。


ふむふむ、「.NET Framework 1.0、1.1 では、HTTP 圧縮を有効にした Web サーバからアセンブリをダウンロードできない。これはバグで .NET Framework 2.0 では修正される。要求によっては 1.0、1.1 も修正するかもしれないけど、ちっぽな修正ってわけじゃないし、HTTP でアセンブリをダウンロードする場合すべてに影響する。。。(以下略)」 とな。どうも、1.0、1.1 が修正されるのは望み薄な感じ。(それにしても、仕様じゃなくて単にバグだったのか。。orz)


んで、「Deploying assemblies using cab files こちらを使うことを考えてみてくれ」 と。


おぉ、Assembly.LoadFrom とか app.config の codeBase とかって CAB ファイルを指定することできたのか。知らなかった。

Visual Studio 2005 / SQL Server 2005 CTP February 2005

Visual Studio 2005 / SQL Server 2005 CTP February 2005 の Express がダウンロードできるようになっているそうです。


February CTP now available こちらによると Express だけでなく、 VS 2005 Professional も MSDN Subscribers Download でダウンロードできるようになるみたいです(今見てみましたが CTP Feb 2005 はまだありませんでした)。
それと、なんか今回のバージョンはレジストレーションとアクティベーションが必要になったと書いてありますね。


Dog fooding SQL Server 2005 and VS.NET 2005
February CTP of SQL Server 2005 is available for download - including Report Builder
この辺を見てると、どうも SQL Server 2005 の CTP がメインなような気がする(気がするだけかも)。

2005年2月28日月曜日

.Text の MainFeed.aspx 修正

.Text では URLのホスト名に www を使っていると勝手に省略されてしまったりしてあまりよろしくありません。たとえば、http://www.example.com/blog/ だと RSS などに含まれる URL が http://example.com/blog/ になってしまいます。(http://blogs.example.com/ のように www 以外ならば特に問題ないはずです)
で、このように www を使う場合は、web.config に


    <UseWWW>true</UseWWW>


と追加すればほとんど問題なくなります。(追加する場所は <BlogConfigurationSettings> の下ならどこでも OK です。<ServerTimeZone> の下あたりに書いときゃいいんじゃないでしょうか)


しかし、マルチユーザ版の 「RSS (すべてのフィード)」 で使用している MainFeed.aspx には UseWWW の考慮が入っていません。どうやらソースを直してビルドしなおすしか手がなさそうです。修正自体は簡単で、Code\DottextWeb\MainFeed.aspx.cs の 122行目くらいに


    string baseUrl = "http://{0}" + appPath + "{1}/";
if (Config.Settings.UseWWW)
{
baseUrl = "http://www.{0}" + appPath + "{1}/";
}


と青字の部分を書き足せば OK です。


また、Code\DottextWeb\OPML.aspx.cs の 133行目くらいにもほとんど同様なコードがあります。こちらも、


    string baseUrl = "http://{0}" + appPath + "{1}";
if (Config.Settings.UseWWW)
{
baseUrl = "http://www.{0}" + appPath + "{1}";
}


と青字の部分を書き足せば OK です。(MainFeed.aspx.cs とは微妙に違うので注意)


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

2005年2月25日金曜日

MSN Remote Record

MSN Remote Record has launched より。


残念ながらアメリカ・カナダのみみたいですが、MSN Remote Record っていうのが始まったそうです。
これは、Windows XP Media Center Edition 2005 をインターネットに繋いでおくと、インターネット経由で録画予約や予約内容の確認といった操作ができるいうサービスみたいです。


# といっても私は Media Center 持ってないんですが。

O/R マッピングツール for .NET

Object Relational Mapping Tools for .NET より。


O/R マッピングというと、遅れることが発表されてからとんと話を聞かなくなった ObjectSpaces なんてのもありましたが(^^; それ以外にもいろいろあるよ、ということで O/R マッピングツール集へのリンクが貼られています。
あと、Anders Hejlsberg - Programming data in C# 3.0 にリンクが貼られてるのもおもしろいです(Anders Hejlsberg 氏は C# 言語設計者)。やっぱり、単に後付けのツールで O/R マッピングするんじゃなくて、プログラミング言語自体ももっと "データ" を意識していかなくちゃいかんだろう、ということなんでしょうね。


あと、上記のツール集には含まれていないようですが、河端さんが Base4.NET を紹介・評価されてます。
Base4.NET : ストレージフレームワーク

2005年2月18日金曜日

.NET Framework 1.1 アプリケーション求む!

I need .NET Framework 2003 Applications! より。


# .NET Framework 2003 という表記がちとなんですが(^^;


.NET Framework 2.0 の互換性テストのために .NET Framework 1.1 アプリケーション (ソースじゃなくてバイナリ) を募集中だそうです。


こういうことが blog で呼びかけられるようになったというのもおもしろいと感じますし、それにこんなふうに互換性テストが行われるということは Whidbay の開発もだいぶ終盤に近づいてきたんでしょうねぇ。


ところで、日本からも文字コードをガシガシするようなやつやカルチャをガシガシするようなやつなんかを送れるといいと思うんですけど。(私には提供できるような手持ちのアプリはないです。残念ながら)

StringBuilder の互換性を損なう変更

A Breaking Change we did in StringBuilder [Kit George] より。


// the first int is the initial capacity, the second is the max
StringBuilder sb = new StringBuilder(0,4);


のように capacity の初期値をゼロとすると .NET Framework 1.x では max capacity になにを指定しても 16 となっていたそうです。それが、2.0 ではちゃんと引数で指定された値になるようにするとのこと。


まぁ、正直 「それくらいのこと、どっちでもいいんじゃね?」 という気がしないでもないんですが(^^; 、それでも 「BCL チームはプログラムマネージャ、テスタ、デベロッパ、その他の人たちと熱い議論をした」 そうですから、やっぱり中の人は大変ですね(^^

Generic な型どうしの互換性

Generic type parameter variance in the CLR より。


うーんと、、、、


string[] ary_s と object[] ary_o があった場合、ary_o = ary_s は許されてる。これは string が object の派生クラスだから。しかし、List<strring> list_s と List<object> list_o があった場合、list_o = list_s は C# ではエラーになる。これは、List<string> と List<object> は違う型とみなされるため。
しかし、CLR が禁止しているわけじゃない。Eiffel の generics は常に covariant。ECMA の CLI v2 draft にも covariant、contravariant な generic parameter をサポートするとちゃんと書いてある。
で、IL の記法と同じように C# にも List<+T> なんていう構文を追加するのはどう?
'+' のときは covariant 向きの代入 (Hoge<親> = Hoge<子>) を許し、'-' のときは contravariant 向きの代入 (Hoge<子> = Hoge<親>) の代入を許すって具合。


なんてことが書いてあるみたい。(いくらなんでも要約しすぎか?w まぁ、正直、ちゃんと読めてるか自信ないし、ちゃんと原文を見てもらったほうがよろしいかと)


上記ででてくる ECMA の CLI v2 draft ですが、ちょっと見てみたところ 「Partition1 Architecture」 の 「8.7 Assignment compatibility」 に代入時の Generics の type parameter の互換性について書いてあるみたいです。


で、上記の内容についてですが、、、
個人的には 「どうなんだろ?」 という感じです。C++ の template もこういうことはできないですし。これができるとうれしいときってどれくらいあるんだろ?あんまりピンときません。
ただ、covariant と言うと、Java Generics で covariant return type が許されるようになったというのがあるけど、そういやこれは .NET Generics ではどうなんでしたっけ?
covariant return type っていうのは


    class SuperClass {
virtual SuperClass Clone() { ... }
}
class SubClass : SuperClass {
override SubClass Clone() { ... }
}


こんなやつです(だったと思う)。これはやりたいときが結構あるんですが。(C++ でも最近はできるようになってたはず)


あと、上記の blog を書いてるのは CLR の中の人みたいです。なので、C# コンパイラチームの人が新仕様について語っているというわけじゃありません。

やっぱり Generics (+Iterator +params) っていいなぁ(^^;

IEnumerable is still great for lazy fetching より。


この Combine メソッドのコードがかなりグッときたので記録(^^

.Text をコメント書き込み時に ping を送らないように修正

今週になって落ち着いたと思っていたコメントスパムが、またまた来るようになってしまいました(昨日 1日で 20書き込みくらい)。


おや?なぜ、こんなに更新回数が多いんだ?」 で書いたように .Text はコメント書き込み時にも ping を送信しています。そのためコメントスパムのときにも ping を送信してしまい、あまりよろしくありません。
そこで、Code\Dottext.Framework\Tracking\Notification.cs にある NotificationServices クラスの Run メソッドを以下のように修正しました(青字のところを追加しただけ)。


    public static void Run(Entry entry)
{
if(entry != null)
{
if (entry.PostType == PostType.Comment)
{
return;
}
Notifier notify = new Notifier();



なお、この修正によりコメントのときは Notifier 自体が動かなくなります。Notifier では



  • weblogs.com への ping 送信
  • (私の改造版では) bloggers.jp への ping 送信
  • 記事中のリンクに対する trackback の送信

を行っています。上記の修正によりこれらすべてが動かなくなりますが、コメントの場合はどれもする必要を感じないので問題はないんじゃないかと思います。
というか、.Text ってコメントのときまで trackback してたんですね。それはそれでまずいような気がするなぁ。もっとも、私は .Text の自動トラックバックはオフにしてますが。


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

2005年2月17日木曜日

PatternShare.org

http://patternshare.org/


いろいろなパターンが辞典のように集められている Wiki サイト(エンジンは FlexWiki な模様)。
http://patternshare.org/default.aspx/Home.Authors を見ると Martin Fowler 氏の (たぶん分析系の) パターンや GoF のデザインパターン、Microsoft patterns & practices に関連するパターンなど、結構いろいろあるみたい。

2005年2月15日火曜日

おや?なぜ、こんなに更新回数が多いんだ?

リファラ見ていて気付いたんですが、たとえば BlogPeople 記事更新頻度ランキング から来た方がいます。で、このランキングを見てみると、なんと、これを書いている時点でここ 1週間の更新が 136回でランキング 13位ということになっちゃってます。もちろん、見ていただけばわかるとおりそんなに更新してません (威張れるこっちゃないですけどね(^^; )。


原因を考えてみると。。。
まず、ここの blog では .Text に手を加えて ping.bloggers.jp にも ping を送っています(参照 http://www.divakk.co.jp/blog/aoyagi/archive/2004/05/07/484.aspx )。そして BlogPeople 記事更新頻度ランキングは bloggers.jp の ping も参照して更新頻度を求めているんじゃないかと思います。んで、(今回調べて始めて気付いたんですが) .Text ではコメントが書き込まれたときにも ping を送っています。どうやらこのために ping の回数が多くなってしまっているようです。


表面上はそんなにたくさんのコメントが書き込まれたわけではありません。しかし、2週間くらい前から結構な数のコメントスパムが書き込まれています。http://www.divakk.co.jp/blog/aoyagi/archive/2005/02/02/747.aspx で書いたように、ストアドプロシージャを変更して、とりあえずコメントスパムが表示されないように対策してあります。が、あくまで表示されないようにしただけで、ping の送信などの一連の処理は行われています。そのためにコメントスパムが書き込まれた回数だけ ping も送られてしまっているはずです。
ざっと数えると、この 1週間で 100ちょっとコメントスパムがやってきていますから、BlogPeople 記事更新頻度ランキングでの更新回数ともだいたいあいます。


で、ほんとうはちゃんと対策すべきなんですが、コメントスパムが来る回数自体は最近はめっきり少なくなって、昨日からはまだ 1つも来ていません。なので、ちょっと様子を見てみようかと思います。またコメントスパムが増えてくるようだったらちゃんとした対策を考えようと思います。
(そもそもコメントのときに ping を送る必要ってないんじゃないかと思うので、ping を送るときに記事のポストなのかコメントのポストなのかを判断するようにするつもり)

2005年2月9日水曜日

Gizmondo

Portable Gaming より


へぇ、こんなのがあったんですねぇ。
GPS と連動させて、実際に自分がいる場所を反映しながらやるマルチプレイヤーゲームか。。。確かにおもしろそうだけど、、、ちと、怖いような。。。(^^;


ところで Windows CE 4.2 ベースってことですが、.NET Framework が動いたりしないのかな?

Don Box responds to James Gosling .NET Bashing

Don Box responds to James Gosling .NET Bashing より


Java の生みの親である James Gosling 氏による .NET バッシングの記事が ZDNet オーストラリアに載ったらしいです。そして、Don Box 氏がそれに対する反論を氏の blog に書いた模様。
(まだ読んでない。忘れないように覚え書き)

Visio ブログ

なにげに Visio ブログ というのが始まってました。


# blogs.msdn.com 上で日本語見るのは久しぶりかも(^^;

2005年2月2日水曜日

MSN Search リリース

新しい MSN Search が正式リリースされてました。と言っても、日本語版はまだみたいです。
http://search.msn.com/


すでに、http://www.msn.com/ でも新しいほうが使われているみたいです。

コメントスパム来襲

うむぅ、なんか AM5時ころに 80個くらいのコメントスパムが書き込まれてました。今までもコメントスパムが書き込まれることはありましたが、こんだけまとまって書き込まれたのは初めてです。


コメント SPAM 連絡網 によると原水さんのところにもかなり書き込まれたようなので、ひょっとすると .Text を狙ってやってるのかもしれませんね。


とりあえず、ストアドの blog_InsertEntry を書き換えて、コメントスパムっぽいものは @PostConfig の表示フラグをオフにするようにしてみました。これでコメントスパムを書かれても表示されないはず。

2005年1月24日月曜日

C# の代入演算子の結果は何か?(re: 動きとしてはこれでいいんだっけ?)

動きとしてはこれでいいんだっけ? より。


パッと見は不思議な挙動に思えますが、ちゃんと規定されてました。
C# 言語仕様 7.13.1 単純代入
に 「単純代入式の結果は、左オペランドに代入される値です」 とあります。ということは、プロパティに対して代入されるときは、そのプロパティの set に渡された値そのものが結果であって、set されたあとにもう一度 get されるわけではないということです。


なので、代入演算子を繋げて書いた場合と、複数行にわけた場合とでは結果が違うということになっちゃうわけですね。
# まぁ、副作用があるようなプロパティは極力使わないほうがいいということでしょうね。

2005年1月13日木曜日

MSN Search Beta の RSS フィード

RSS Feeds for Search Results より。


MSN Search Beta で検索した結果を RSS として返せるようになったそうです。


上記記事のトラックバックにありますが Ogawa::Memoranda さんがさっそくサイト内検索でこの機能を使っていらっしゃるようです。
Ogawa::Memoranda さんの記事: MSN Search RSS Feeds

ASP.NET 2.0 でリモートスクリプティング

Callbacks are getting momentum, not only in ASP.NET より。
短い記事ですが、(自分的には) おもしろ情報がたくさんあります。


まずは Google Suggest beta がどんなふうに実装されているのか。
なるほど、クライアントサイドスクリプトで都度 XMLHTTP でサーバに問い合わせして候補を表示してるんですね(まぁ、それくらいしかやりようがないけど)。で、XMLHTTP ActiveX コントロールは IE 限定だけど XmlHttp オブジェクトは Mozilla、Safari、Opera でもサポートされているから、これらのブラウザでもほとんど同じようにできると(XmlHttp オブジェクトなんてものがあるなんて知らなかったよ)。


んで、「けど、この Google Suggest beta がやってるのとまったく同じことを ASP.NET 1.0 のサーバサイドコントロールとして実装したものだってずっと前からあるんだよ」、なんて感じのことが書かれてますね。「このすげぇ WebControl を見てみ」、と。おぉ、こりゃ確かにすごい。


おまけに、ASP.NET 2.0 では
the only server-side technology to natively support callbacks
ここに書かれているような方法で簡単にクライアントからサーバへのコールバックが書けると。
うーむ、こりゃまたすごい。こんなことができるようになるんですねぇ。
# なお November CTP で若干変更があったらしく
# Client Callbacks changes - Script Callback
# こちらに変更点が書かれてます。


あと、Feedback にリンクがはられてますが
http://www.ashleyit.com/rs/
こんなところもあります。リモートスクリプティングのまとめサイトです。

2004年12月20日月曜日

.netcpu

.netcpu だそうです。
http://www.dotnetcpu.com/


Microsoft のサイト上でも紹介されています。
http://msdn.microsoft.com/mobility/


なんか Microsoft .NET Embedded CLR とかって書いてありますが、Embedded なんてあったんですね。

2004年12月10日金曜日

もうすぐ VS 2005 Team System CTP December 2004 ?

Team System Community Technology Previews (CTPs) より。


この記事自体は 「CTP って何よ?」 っていうような話です(だと思う(^^; ちゃんと読んでません(^^; )


気になったのはこの記事に対して書かれたコメント。


> The Team System December CTP is on final approach. You can expect it before the holidays.


どうやら December が出るみたいですねぇ。
holidays というとクリスマス休暇のことなのかな?


# 大きく変わってるのなら入れてみようとは思いますけど、どうなんだろ?

2004年12月8日水曜日

Oracle 10g Release 2 to support the CLR

Oracle 10g Release 2 to support the CLROrcale and the CLR より。


なんか、Oracle OpenWorld, San Francisco で、



  • Oracle 10g Release 2 を 2005年半ばに予定

  • CLR で実装されたストアドプロシージャのサポートとより進んだ Visual Studio との統合

なんていうアナウンスがされたみたいです。
こりゃびっくり。

2004年12月3日金曜日

MSN Spaces (英語版) スタート

マイクロソフトの無料 blog サイトである MSN Spaces ですが、英語版のベータも始まったそうです。


多くのところで http://spaces.msn.com/ という URL で紹介されているんですが、これって以前からある日本語版とまったく同じなんですよねぇ。どうやったら英語版が見れるのか探しちゃいました。


どうやら



とすればいいようです。
まぁ、言語が違うだけで機能は同じみたいですが。ただ、「最近更新されたスペース」などに表示されるものが言語によって変わります(どこを見て切り替えてるのかは知りません。使用言語とかって設定するところあったっけ?)


# あと、英語版の追加にあわせて背景が変えられるとかいくつか機能が追加されているようです。