ページ

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 の表示フラグをオフにするようにしてみました。これでコメントスパムを書かれても表示されないはず。