ページ

2004年5月6日木曜日

PING.BLOGGERS.JP さんに ping を送ってみる

PING.BLOGGERS.JP さんに ping を送るようにしてみました。


が、これであってるのかどうか今ひとつ自信がありません。ちゃんとできているようなら改造方法を公開します。(ソースを改造してビルドしなおさないとダメなんですが)

.Text のインラインコメント化

.Text のインラインコメント表示についてです。
(インラインコメントっていうのは私が勝手にそう呼んでるだけです。ここでやってるように各 Post の下にコメントやトラックバックも表示することをそう呼んでます)


原水商店さんの .Text Blogs 日本語 Skin から頂いたスキンをインラインコメント化したものを置いておきます。
http://www.divakk.co.jp/aoyagi/SkinsJP_IC.zip


インラインコメント化スキンの使用方法



  1. InlineComments.cs を Skins フォルダにコピーしてください。
  2. 各スキンを Skins フォルダにコピーしてください。インラインコメント化したスキンはスキン名(スキンのフォルダ名)の末尾に "_IC" をつけてありますので、従来のスキンと重なることはありません。
  3. Admin\Skins.config ファイルを適当に変更してください。サンプルを同梱してあります。なお、同梱した Skins.config は .Text Blogs 日本語 Skin とインラインコメント化スキンをあわせて使った場合の config になっています。こうしておくと普通のスキンとインラインコメント化したスキンのどちらでも選べるようになります。






以下に簡単ですがインラインコメント化する方法を書いておきます。
(簡単というよりほとんど覚え書きのような状態ですが)


InlineComments.cs を Skins フォルダにコピー。
(ソースコードによるコードビハインド。ソースコードにしたのは DLL を作り直さなくてもいいようにするため)


各スキンのインラインコメント化



  1. Comments.ascx をコピーして InlineComments.ascx を作る。
  2. InlineComments.ascx の 1行目の Inherits="Dottext.Web.UI.Controls.Comments" をInherits="Dottext.Web.UI.Controls.InlineComments" に変更。また、Src="..\..\InlineComments.cs" を追加。
  3. Day.ascx に <%@ Register TagPrefix="uc1" TagName="InlineComments" Src="InlineComments.ascx" %>を追加。<%@ Import Namespace = "Dottext.Framework.Components" %> を追加。適当な場所に を追加(CommentDisplayCount で最大いくつのコメントをインライン表示するか設定可能)。

これで一応は動くはず。
あとは見栄えがよくなるように InlineComments.ascx を修正する。
たとえば




  • <a name = "feedback" /> を削除。


  • <h3>フィードバック</h3> を削除。


  • <div id="comments"> を <div class="inlinecomments"> に変更。


  • <asp:Literal ID = "NoCommentMessage" Runat ="server" /> を削除。


  • HeaderTemplate を追加して見出しを表示。


  • ToTrackbackText を追加してトラックバックかどうかを表示するようにする(このために <%@ Import Namespace = "Dottext.Framework.Components" %> を追加する必要あり)。

など。
その上で Style.css に適当な CSS を追加。

2004年4月27日火曜日

各記事の下に Trackback URL を表示するようにする

「各個別記事の下に TrackBack URL を表示するようにしてみました」
に書いた件なんですが、「.Text にどういう修正を加えたか」を書くのをすっかり忘れてました。

ソースコードの修正は必要ありません。スキンの修正だけです(というか、スキンの修正だけで済むようにしてみました)。各スキンに ViewPost.ascx がありますが、これに修正を加えます。以下、例として Simple スキンを使いますが、他のスキンでも基本的に同じです。

ViewPost.ascx の改造

<%@ Control Language="c#" Inherits="Dottext.Web.UI.Controls.ViewPost" %>
<%@ Import Namespace = "Dottext.Framework" %>
<%@ Import Namespace = "Dottext.Framework.Components" %>
<%@ Import Namespace = "Dottext.Framework.Util" %>
<%@ Import Namespace = "Dottext.Common.Data" %>
<script Runat="server">
private string GetTrackBackUrl() {
    Entry entry = Cacher.GetEntryFromRequest(Context,CacheTime.Short);
    if (entry != null) {
        return "トラックバックは下記のURLにpingを送信してください。<br/>\nTrackBack URL: " + CurrentBlog.UrlFormats.TrackBackUrl(entry.EntryID);
    }
    return "";
}
</script>
<div class = "singlepost">
    <div class = "posttitle">
        <asp:HyperLink  CssClass="singleposttitle" Runat="server" ID="TitleUrl" />
    </div>
    
    <asp:Literal id="Body"  runat="server" />
    <div class = "itemdesc">
        投稿日時 : <asp:Literal id="PostDescription"  runat="server" />
    </div>
</div>
    <div class="trackbackurl"><% Response.Write(GetTrackBackUrl()); %></div>
    <asp:Literal ID = "PingBack" Runat = "server" />
    <asp:Literal ID = "TrackBack" Runat = "server" />

太字の部分が追加した行です(追加だけで既存部分の修正は必要ありません)。
あとは、Style.css にお好みの CSS を設定しておくだけです。


Style.css(私が使っている CSS)

.trackbackurl
{
    border: 1px solid #DDDDDD;
    background-color: #DDDDDD;
    padding: 4px;
    font-size: 14px;
}

2004年3月30日火曜日

Web.config に IConfigurationSectionHandler を使って独自の設定項目を追加 する

IConfigurationSectionHandler を使うと Web.Config に簡単に独自の設定を追加することができます。




MyConfig クラス

using System;
using System.Configuration;
using System.Xml;
using System.Xml.Serialization;
 
namespace WebApplication1
{
    [Serializable]
    public class MyConfig : IConfigurationSectionHandler
    {
        public object Create(object parent, object configContext, System.Xml.XmlNode section) 
        {
            XmlSerializer ser = new XmlSerializer(this.GetType());
            return ser.Deserialize(new XmlNodeReader(section));
        }
 
        public MyConfig()
        {
        }
 
        public static MyConfig Instance()
        {
            return (MyConfig)ConfigurationSettings.GetConfig("MyConfig");
        }
 
        private string _strParam = "*";        // default: "*"
        public string StrParam
        {
            get { return _strParam; }
            set { _strParam = value; }
        }
 
        private bool _boolParam = true;        // default: true
        public bool BoolParam
        {
            get { return _boolParam; }
            set { _boolParam = value; }
        }
 
        private int _intParam = 10;            // default: 10
        public int IntParam
        {
            get { return _intParam; }
            set { _intParam = value; }
        }
    }
}



Web.config



<configuration>

    <configSections>

        <section name="MyConfig" type="WebApplication1.MyConfig, WebApplication1"/>

    </configSections>

 

    <MyConfig>

        <StrParam>abc</StrParam>

        <BoolParam>false</BoolParam>

        <IntParam>5</IntParam>

    </MyConfig>

</configuration>




こういう風にしておくと読み込みの際に MyConfig.Create が呼ばれるので XmlSerializer を使ってデシリアライズしてあげるわけです。
使うときはこんな感じ


Label1.Text = MyConfig.Instance().StrParam;

Label2.Text = MyConfig.Instance().BoolParam.ToString();

Label2.Text = MyConfig.Instance().IntParam.ToString();


ちなみにデシリアライズされた結果はキャッシュされているようで MyConfig.Instance() するたびにデシリアライズが実行されるということはありません。
あと、たとえば int 型の項目に "abc" とかって指定するとデシリアライズ時に例外が発生するのでエラーページが表示されることになります。

2004年3月26日金曜日

Visual Studio 2005 Community Technology Preview March 2004 - Full DVD Image (English)

おおっ、すでに MSDN Universal Downloads に上がってました。


PDC で配布されたのは 2003/08 くらいのビルドだったと思いますが、どのくらい変わってるんでしょうね。まぁ、ダウンロードしてみればわかるわけですが。って、今ダウンロード中だけどあと 10時間もかかるよ(^^;

2004年3月25日木曜日

Visual Studio 2005 Community Technology Preview

http://blogs.msdn.com/jledgard/archive/2004/03/23/94690.aspx


ちょうど今行われている VS Live! San Francisco で VS 2005 Tech Preview が配布される模様。


MSDN Universal Subscriber Downloads な人には近いうちにこの Preview にアクセスする方法についてインフォメーションがある模様(ということはダウンロードできるようになる?)。


早くも "Whidbey" ではなく "VS 2005" として登場するみたいですね。

2004年1月28日水曜日

USERS GROUP 日記さん

.Text を使った blog サイトの紹介
USERS GROUP 日記


.Text を Multiple で使っていて複数の方の blog が集約されています。それぞれの方の blog へは左側にある "BLOGGERS" のところからいけます。


以下はトラックバックのテストです(^^
http://blogs.users.gr.jp/haramizu/archive/2004/01/28/966.aspx

2004年1月27日火曜日

各個別記事の下に TrackBack URL を表示するようにしてみました

一色さんの #BLOG
青柳臣一blogさん、「.TEXT」のトラックバック対応方法を公開


にてご指摘があったので、各個別記事の下に TrackBack URL を表示するようにしてみました。こんな感じでいかがでしょう?


# たぶんバグってないとは思うんですが...


ちなみに #BLOG さんの Movable Type も Auto-Discovery 用のコメントは入っています。なので、.Text からもちゃんとトラックバックできるはずです。
(この書き込みはそのテストも兼ねてたりします :-) )

すぐ下の記事にトラックバックしてみます

やっぱり言葉でうまく表現できなかったので、サンプルとしてすぐ下の記事にトラックバックしてみます。
http://www.divakk.co.jp/blog/aoyagi/archive/2004/01/27/442.aspx
こんな風にリンクをはるだけです。


で、Excerpt には


これが Excerpt に書いた内容です。どんな風に表示されるかな?

と書いて POST しました。

.Text のトラックバック

あらためて説明しなくとも、Google あたりで 「トラックバックとは」 とかのキーワードで検索するとたくさん出てきます。なので、一般論はそちらにお任せしちゃいます。
ここでは、.Text を使っている場合のトラックバックについて書きます。


.Text でトラックバックするには?


実は何もする必要がありません。記事を書くときに単に PermaLink のリンクを含めるだけで OK です。(PermaLink っていうのは、各記事への URL のことです。たとえば、この記事だと http://www.divakk.co.jp/blog/aoyagi/archive/2004/01/27/442.aspx になります)


PermaLink が含まれた記事を POST すると、自動的にトラックバックを送ります(もちろん、相手がトラックバックを受けれる blog じゃないとダメですが。詳細は後述)。


ただ、1つだけ気をつけたほうがいいことがあります。
トラックバックのときに相手先に送る情報は、



  • title … 記事のタイトルです。たとえば、この記事だったら 「.Text のトラックバック」 です。

  • excerpt … 英単語の意味は引用とか抜粋とかですが、まぁ、コメントだと思ったらいいです。

  • url … 自分の URL です。トラックバックする元、たとえば、この記事が PermaLink を含んでいるとしたら、この記事自身の URL です。

  • blog_name … そのまんま blog の名前です。ここだったら 「青柳臣一 blog」 ですね。

  • (あと "charset=utf-8" も含めようという方向になってます。が、まだ Trackback 仕様書には載ってないです)

があります。ここで、title、url、blog_name は問題ないんですが、excerpt がちょっと問題です。.Text では Excerpt が記入されていない場合は、単にタイトルを送っちゃいます(title と excerpt が同じものになります)。
じゃ、Excerpt はどこで記入するのかというと、POST のページの下のほうにある "Advanced Options" を開くと出てくる Excerpt です。なので、記事中に PermaLink へのリンクがある場合はここにコメントを書きましょう。するとこれが相手先に送られます。


トラックバックするとどうなるのか?


ここでは、トラックバックする相手も .Text だとします。
.Text では、コメントやトラックバックをひっくるめて Feedback と呼んでいます。こちらからある記事にトラックバックすると、相手の記事の Feedback のところに表示されるようになります。見た目はコメントとほとんど区別できません。ただ、Excerpt に書いた内容がコメントとして表示され、自分の記事への URL がリンクされます。(うーん、言葉で書くのが難しい(^^; )


まぁ、結局、トラックバックっていうのは 「自動コメント&自動逆リンク」 なわけです。


ところで、私はトラックバックかどうかを簡単に見分けられたほうがいいかな?と思って "(トラックバック)" と表示されるようにスキンを変更してます。


仕組みは?


ほんとうは、PermaLink の URL とトラックバック用の URL は別物です。ではなぜ PermaLink だけからトラックバックできるんでしょう?


実は各記事にはトラックバックの URL がわかるようにコメントが埋め込んであります。
HTML のソースを見ると


<!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:Description
rdf:about="http://www.foo.com/archive.html#foo"
dc:identifier="http://www.foo.com/archive.html#foo"
dc:title="Foo Bar"
trackback:ping="http://www.foo.com/tb.cgi/5" />
</rdf:RDF>
-->

なんて感じのが見つかります。これの trackback:ping 属性がトラックバック用の URL です。
このように HTML 中にコメントとしてトラックバックの URL を埋め込んで自動的にトラックバックできるようにすることを Auto-Discovery というようです。
http://www.movabletype.org/docs/mttrackback.html#autodiscovery of trackback ping urls


.Text は記事を POST する処理の中で、



  1. 記事中に PermaLink があるかどうか探す。

  2. あったら、そのリンク先を HTTP GET してみる。

  3. GET できたら、その HTML 中に trackback:ping があるか探す。

  4. あったら、そこへトラックバックする。

  5. 以上を記事中のすべての PermaLink について繰り返す。

といった処理を行っています。
そんなわけで PermaLink へのリンクを含めるだけで、自動的にトラックバックしてくれるわけです。


というように、.Text 自身が Auto-Discovery を使うことを前提にしているので、どこにもトラックバック用の URL が表示されてないんですよね。これは、どっかに表示するようにしようと思います。


ところで、「おいおい 2~4 って HTTP のやり取りだろ。重いんじゃないの?」 とお思いの方もいるかとは思いますが、.Text ではこの部分はちゃんと ThreadPool を使って別スレッドで行うようになっています。

2004年1月26日月曜日

.Text の修正(トラックバック関連)

.Text はトラックバックに対応してるんですが、日本語を使ってるとうまく動きません。
文字化けするとかいう次元じゃなく、トラックバックを送る途中で例外が出て失敗しちゃいます。





Dottext.Framework\Tracking\Notification.cs 81行目付近
    if(entry.HasDescription)
    {
        notify.Description = entry.Description;
    }
    else
    {
        //entry.Description = entry.Title;    
        notify.Description = entry.Title;    
    }
上記のように entry.Description = entry.Title; というのは明らかにおかしいので notify.Description = entry.Title; に修正。





Dottext.Framework\Tracking\TrackBackNotificationProxy.cs 81行目付近
    //string parameters = "title=" + HtmlEncode(title) + "&url=" + HtmlEncode(link) + "&blog_name=" + HtmlEncode(blogname) + "&excerpt=" + HtmlEncode(description);
    string parameters = "title=" + HttpUtility.UrlEncode(Encoding.UTF8.GetBytes(title))
                      + "&url=" + HttpUtility.UrlEncode(link)
                      + "&blog_name=" + HttpUtility.UrlEncode(Encoding.UTF8.GetBytes(blogname))
                      + "&excerpt=" + HttpUtility.UrlEncode(Encoding.UTF8.GetBytes(description))
                      + "&charset=utf-8";
もともとのコードはまったく文字コードのことを考えてない。なので、utf-8 に変換してやるように修正。ここが例外が出る原因で、utf-16 のままだと String.Length と実際に送信するバイト数が違うために失敗してしまいます。
ちなみに、下記のように「トラックバックは utf-8 でいいんじゃないの?」という方向のようですので、とりあえずはこれでいいんじゃないかと思います。

Milano::Monolog 「Trackbackの文字コード指定方法最終(予定)」
http://rebecca.ac/milano/mt/archives/000396.html

BlogX から .Text へのデータインポート

原水さんのところで知ったんですが、BlogX から .Text へデータをインポートするためのツール into .Text っていうのがあります。http://blogs.users.gr.jp/haramizu/archive/2004/01/20/807.aspx
しかし、残念ながら .Text 0.94 用で 0.95 だとデータベースが変わっているためにそのままでは使えませんでした。そこで、0.95 対応に修正してみました。また、ついでにカテゴリも自動的にインポートするようにしてみました。


改造版の into .Text は こちら
ソースとバイナリが両方入っています。


オリジナルの into .Text
ソース http://postback.be/postback/posts/216.aspx
バイナリ http://postback.be/postback/posts/213.aspx

.Text に変更しました

久しぶりの更新です。


今まで BlogX を使ってましたが、.Text に変更しました。

2003年11月27日木曜日

PDC 2003 のストリーミングが公開


http://microsoft.sitestream.com/PDC2003/



PDC 2003 の各セッションの内容がストリーミングで公開されています。ストリーミングといっても、画像は PowerPoint のスライドです。音声は PDC で録音されたものです(拍手の音とか笑い声とかもちょっと入ってます)。
ちなみに、http://microsoft.sitestream.com/
TechEd 2003 のストリーミングが公開されていたところですね。

2003年11月13日木曜日

"Windows Longhorn Client Preview" on MSDN Subscriber Downloads


MSDN Subscriber Downloads で "Windows Longhorn Client Preview"なるものがダウンロードできるようになっています。
Longhorn SDK もある。

2003年11月5日水曜日

PDC 2003 DVD Kit


PDC 2003
DVD Kit



こちらで、PDC 2003 のストリーミングファイルやスライドを収録した DVD が購入できます。
Country に Japan もあるから日本からも買えるみたいです。けど、$499 + 送料はちと高いなぁ。

無料で公開してはくれないんだろうか?

Visual Studio .NET Framework Bootstrapper プラグイン 日本語版 (アルファ 版)


Visual
Studio .NET Framework Bootstrapper プラグイン 日本語版 (アルファ版)



Visual Studio.NET 2003 のセットアッププロジェクトで .NET Framework 再領布モジュール込みの setup.exe を作れるようにするプラグインです。当然、setup.exe
が 24メガバイトくらい大きくなると思いますが、CD-ROM などでアプリケーションを配布する場合とかは便利かも。

2003年10月30日木曜日

Whidbey で追加されたクラスたち


John Lam さんの blog より
Diff between v1.1 and v1.2 of Frameworks



John Lam さんが .NET Framework 1.1 と 1.2(Whidbey) の System*.dll の差分を取った結果をダウンロードできるようにしてくださっています。クラス名しかわかりませんが、それでもかなりおもしろいです。



以下、ざっと見ていて気になったところの覚え書き。
System.Web の下。ずいぶんたくさんのクラスが追加されてる。 Personalization なんていうネームスペースとか System.Web.UI.WebControls
の下とか。このあたりは、ASP.NET "Whidbey"だな。
System.Windows.Forms の下にもいろいろおもしろそうなものあり。ActiveDocumentHost、Sound、WebBrowser、その他たくさん。
System.Diagnostics.Stopwatch なんてのもある。
System.IO.Ports.SerialPort は RS-232C だな。
System.Net.Ftp* は FTP か。SMTP と POP3 はないのかな?
うーん、リファレンスマニュアルはないのか?と思ったら Longhorn
SDK
に載ってるじゃん。

2003年10月29日水曜日

Whidbey やら Longhorn やら Yukon やら


ASP.NET "Whidbey"

"ASP.NET Whidbey"

なんか、ASP.NET "Whidbey" に関連した記事がいろいろある。



C# 2.0

C# Language

C# "Whidbey" のようなページは見つからない。けど、ここに C#
2.0 Specification
がある。もちろん、これが "Whidbey" で実装される C#。



Visual Basic "Whidbey"

Visual Basic "Whidbey"

これは Visual Basice.NET の "Whidbey" 版。



Longhorn

Longhorn Developer Center

これまた、いろいろ。Longhorn SDK なんてリンクまであるし。



SQL Server "Yukon"

SQL Server "Yukon"

これもいろいろ。XML とか CLR とかおもしろそう。

2003年10月28日火曜日

Visual Studio.NET "Whidbey" テクニカル プレビュー版(英語版)の提供


次期プラットフォームの技術情報公開に合わせて、日本国内の開発者の早期準備に向けた施策を開始



MSDN 会員であれば Visual Studio.NET "Whidbey" が入手できるそうです。ただし、先着 3,000名とのこと。
ちなみに、これは、テクニカルプレビューであって、まだベータ版にもなっていないものです。ベータ版は下に書いたように来年春です。
おまけに英語版ですが、まぁ、これは問題ないでしょう。 Visual Studio が英語版なだけで、日本語のソフトを作ること自体は問題ないはずですから。(.NET
Framework は本質的には英語版・日本語版の違いはないはずです。エラーメッセージとか付属のツールが日本語化されているかどうかくらいしかなかったんじゃないかと思います)

PDC Central


PDC Central



PDC の内容が続々と公開されているようです。
ASP.NET "Whidbey" についてもずいぶんいろいろとあるみたい。

2003年10月27日月曜日

Weblogs at ASP.NET


Weblogs at ASP.NET



ASP.NET Web の Weblog です。いろんな方が書かれています。それぞれについては
OPML (list of bloggers) を。

2003年10月24日金曜日

2003年10月18日土曜日

Next Yukon, Whidbey Betas Due In May, Microsoft Says


Next
Yukon, Whidbey Betas Due In May, Microsoft Says



ふむふむ、


2004/05 Yukon Beta 2, Whidbey Beta 1
2004/08 Yukon Beta 3, Whidbey Beta 2


か。
結構かかるなぁ。YukonとWhidbeyはほんとに来年中にリリースされるんだろうか?