ページ

2003年7月31日木曜日

Whidbeyの次のOrcas


Orcasってのは、サンファン諸島(San Juan Island)にあるオーカス島ってことみたいですね。 オルカ(しゃち)・ウォッチングができるってことなので、Orcasっていう島の名前もそっから来てたりするのかな?



どうもです>かおくさん

Profiling Managed Code with the CLR Profiler


MSDN TV(英語)より
Profiling
Managed Code with the CLR Profiler



CLR Profilerの解説というより「GCがいかに遅いか」という内容ですが、なかなかおもしろいです(もっとちゃんと英語が聞き取れれば、さらにおもしろいんだろうけど(^^;
)。
ついでに自動メモリ管理あたりも押さえておくべし。



訂正です。
上記の打ち消し線を入れた『「GCがいかに遅いか」という内容ですが』の部分ですが、これは不適切な表現でした。というか、このMSDN TVの中でそんなことは言ってません。
内容自体は、マネージドヒープとガベージコレクタがどんなふうに動くのかCLR Profilerやパフォーマンスモニタを使って調べよう、というようなものです。その例としてループの中でStringを+=で結合していくのと、StringBuilder.Appendを使って結合していくコードを取り上げています。もちろん、前者がヒープを多量に使う例、後者がヒープをあまり使わない、効率的な例です。
で、これを見て、「あんまりGCにお仕事をさせないように気をつけなくちゃいけないなぁ」と思ったもので、おもわず「GCがいかに遅いか」なんていい加減なことを書いちゃいました(というか、日本語としても間違ってますね(^^;
)。
コメントありがとうございました。

2003年7月30日水曜日

2003年7月16日水曜日

Web Services Enhancements (WSE) 2.0 Technology Preview


Web
Services Enhancements (WSE) 2.0 Technology Preview



.NET FrameworkにWS-Security、WS-Policy、WS-SecurityPolicy、WS-Trust、WS-SecureConversation、WS-Addressingの機能を追加します。
と言っても私もこれらの詳細はしりません(^^;
WS-SecurityなんかはOASISにsubmitしてるってことだけど、もうrecommendationと言えるようなレベルなんだろうか?誰か教えてください。

Attribute Based Programming - Extending Enums


GotDotNetのUser Samplesより
Attribute
Based Programming - Extending Enums



属性を使ったプログラミングです。
SqlParameterの生成時に必要な情報をenum DalParameterTypeの要素に属性で与えておくことによって一元的に管理できるようにしています。
やっぱり属性はおもしろいなぁ。

Interop Declarations for Windows.h


GotDotNetのUser Samplsより
Interop
Declarations for Windows.h



C#でWin32 APIを使おうとすると、引数とかを調べてDllImportやstructを書かなくちゃいけません。それを一通り定義しておいてくれたファイルです。こりゃ便利。

Dynamically invoke XML Web Services


GotDotNetのUser Samplesより
Dynamically
invoke XML Web Services



XML Web Serviceを使うときはVS.NETで「Web参照の追加」をするのが一般的ですが、この場合、その時点でプロキシクラスのソースが自動生成されます。このサンプルではそれを動的にやってしまおうっていうものです。コンパイル時にプロキシクラスを作るのではなくて、実行時にメモリ上にプロキシクラスを作ってしまおうってことです。
ServiceDescriptionクラスを使ってWSDLからコードをメモリ上に生成して、CSharpCodeProviderでコンパイルして、プロキシクラスのインスタンスを作ってるようです。なるほどねぇ。

2003年7月14日月曜日

おや、久しぶり


では、さっそく背景を花柄に...しませんって(笑)>りょんりょん

2003年7月8日火曜日

Borland C#Builder


ついに出ますか



Borland C#Builder

News Release

BlogXをInline Comment(勝手に命名)表示にする


このblogではコメントも一緒に表示してますが、とりあえず、そうするために改造した部分を上げておきます。ほんとはもうちょっとちゃんとまとめたいんだけど、あまり時間がないのでとりあえず



EntryView.ascx.csの188行目に



if (entryComments.Count > 0) {
    bool obfuscateEmail = SiteConfig.GetSiteConfig().ObfuscateEmail;
    HtmlGenericControl commentsView = new HtmlGenericControl("div");
    commentsView.Attributes["class"] = "commentview";
    foreach (Comment c in entryComments)
    {
        SingleCommentView view = (SingleCommentView)LoadControl("SingleCommentView.ascx");
        view.Comment = c;
        view.ObfuscateEmail = obfuscateEmail;
        commentsView.Controls.Add(view);
    }
    entryFooter.Controls.Add(commentsView);
}



と追加するだけです。
これだけだとコメントを追加するページでコメントが二重に表示されるのでCommentView.aspx.csの147行目からを



//foreach (Comment c in extra.GetCommentsFor(entryId))
//{
//    SingleCommentView view = (SingleCommentView)LoadControl("SingleCommentView.ascx");
//    view.Comment = c;
//    view.ObfuscateEmail = obfuscateEmail;
//    root.Controls.Add(view);
//}



のようにコメントアウト。
BlogXは結構きれいにascxとかにまとめられているので、これだけで出来ちゃいます。

Visual C# .NET Code Samples


Visual
C# .NET Code Samples



なんかサンプルがたくさんある。

MSDN Releases RSS Feeds


こんなのがあったんだ。



MSDN Releases RSS Feeds

2003年7月5日土曜日

BLOGROLLって何?


右側に出てるBLOGROLLってなんだろう?



ググってみると、どうやらリンク先のblogが更新されたかどうかわかるようになっているリンク、といったものみたい。けど、今のBlogXのこの部分の実装ってどうみても単にリンクをはってるだけにしか見えない。まだ未実装なのかな?
とりあえず、MVPな人のblogを入れてみた。



しかし、デフォルトでDon Box大先生のblogが入ってるのはどうしてなんだろう(^^

WinBlogXも日本語OKにしてみた


WinBlogX(BlogXに書き込んだり設定を変えたりするためのWindowsクライアント)は日本語がダメダメ。なので、ちょっといじってみた。




  • Edit Server Filesダイアログの右側のテキストボックスが化けるのは単に英語のフォントになってるから。MS UI GothicあたりにしておけばOK。


  • BlogEditorのHTML表示は、WinBlogXControlsのほうのHtmlEditorクラスのフォント。HtmlEditor.csをデザインで開いて、「HTML」タブをクリックして下の白いところ(HTMLを表示するところ)のフォントをMS
    UI Gothicあたりに しておけばOK。


  • メインの画面(SimpleBrowser.cs)とBlogEditorダイアログのHTML表示が化けるのは同じ原因。WinBlogXControlsのほうのHtml\HtmlControl.csの642行目くらいの
    IntPtr hglobal = Marshal.StringToHGlobalUni(content);

    をコメントアウトして変わりに
    IntPtr hglobal = Marshal.AllocHGlobal(content.Length
    * 2 + 2);
    Marshal.Copy(new Byte[] { 0xff, 0xfe }, 0, hglobal, 2);
    char[] buf = new char[content.Length];
    content.CopyTo(0, buf, 0, content.Length);
    Marshal.Copy(buf, 0, new IntPtr(hglobal.ToInt64() + 2), content.Length);


    としてやる。
    簡単に言うと、これは文字列からIStream*を作って、そいつをIEのIPersistStreamInitに流し込むんだけど、日本語が含まれているときはちゃんとBOMをつけてやらないとダメってこと。



一応これで日本語もOKみたい。けど、ちょっと使い難いとこもあるなぁ。

BlogXを動かしてみました

河端さんに影響されて(^^)BlogXを動かしてみました。

CSSやらHTMLやらを自分好みに修正して、あとコードもちょっと修正しました。とりあえずはこんなもんでいいでしょう。