検索 
2010年7月31日 ..:: ブログ ::..   ログイン


 chack のブログ
Wipse コミュニティー発足
ひとりごと By : Akira INOUE   Date : 2007/06/28 21:05

Wipse という Windows プラットフォームとサービスを融合した、新しい時代のユーザー・エクスペリエンスを普及啓蒙していくためのコミュニティーが発足したそうです。

部会も

  • OpenXML 部会
  • Windows Live API 部会
  • Silverlight 部会
  • WSSRA 部会

なんてのがあって、楽しそう。
ただ、参加条件が法人のみで、年会費も 60,000 円かかるそうで。

法人じゃないからダメだー。参加できない。

昔、某法人に属していた頃に XML コンソーシアムに参加してたことがあったけど、こういうコミュニティーも結構楽しいんですよね。

 

コメント (0)

Tech・Ed 2007 Yokohama へ VSUG 会員 5 名様を無料でご招待!
イベント By : Akira INOUE   Date : 2007/06/23 15:26

Visual Studio User Group (VSUG) で、

「Tech・Ed 2007 Yokohama へ VSUG 会員 5 名様を無料でご招待!」

の応募を受け付けています。
フル エクスペリエンスパッケージ(太っ腹!)ですので、Tech・Ed を隅から隅まで堪能できます。

詳細は http://vsug.jp/tabid/152/Default.aspx をご覧下さい。

P.S
私も、出現します(どこかで少しだけしゃべる予定)。
ぜひお会いしましょう~。

コメント (0)

[AJAX Control Toolkit] AnimationExtender に見るダイナミックプロパティの実装
ASP.NET AJAX By : Akira INOUE   Date : 2007/06/21 11:55

ASP.NET AJAX Control Toolkit の AnimationExtender には DiscreteAnimation というクラスがあります。このアニメーションは、指定したプロパティに、配列として渡したプロパティ値を一定の時間内で順に適用するものです。

この Discrete アニメーションを調べていて、XML 記述で Values 属性値にどのように値の配列を渡すのかがわかりませんでした。

ドキュメントをみても、
http://ajax.asp.net/ajaxtoolkit/Walkthrough/AnimationReference.aspx#DiscreteAnimation

Array values;
Array of possible values of the property that will be iterated over as the animation is played.

としか書いていないし・・・

以下のように、JSON, カンマ, セミコロン などを試しましたが当然NG。

<%-- JSON 記述 ( NG ) --%>
<Discrete Property="style" PropertyKey="backgroundColor" Duration="5.0"
  Values="['white', 'lightskyblue', 'royalblue', 'blue', '#ffb6c1']" />

<%-- カンマ ( NG ) --%>
<Discrete Property="style" PropertyKey="backgroundColor" Duration="5.0"
  Values="'white', 'lightskyblue', 'royalblue', 'blue', '#ffb6c1'" />

<%-- セミコロン ( NG ) --%>
<Discrete Property="style" PropertyKey="backgroundColor" Duration="5.0"
  Values="'white'; 'lightskyblue'; 'royalblue'; 'blue'; '#ffb6c1'" />


ということで、Discrete Animation で検索してみたところ、US の ASP.NET Forums に答えが出ていました。
http://forums.asp.net/p/1108530/1705424.aspx

MSの方の回答で、Values 属性でなくて ValuesScript 属性を使って JSON 記述で記述するとのこと。

<%-- ValuesScript を使って JSON 記述 ( OK! )--%>
<Discrete Property="style" PropertyKey="backgroundColor" Duration="5.0"
  ValuesScript="['white', 'lightskyblue', 'royalblue', 'blue', '#ffb6c1']" />

うおーっ、こんな裏技が隠されていたのか!!と驚愕(ドキュメントに書いてよー)。

ということで、この ValuesScript がどんな実装をしているかを早速調べてみたら、そこからは新たな事実が・・・

それは、

ダイナミックプロパティ ( Dynamic Properties ) というものの存在でした。

通常のプロパティ(属性)は、Animation オブジェクトの生成時に静的に値が決まってしまいますが、ダイナミックプロパティは、アニメーションの開始時( onStart メソッド実行時)に、その値が動的に評価され設定されるとのこと。

ダイナミックプロパティかどうかの判別は、プロパティ(属性)名の接尾辞(suffix)が "script" かどうかで決まります。また、ダイナミックプロパティの場合、その値は JavaScript の eval 関数で評価されます。

つまり、プロパティ(属性)名の終わりに script を付ければ、値に JavaScript が記述できるのです!

たまたま、Discrete Animation の ValuesScript でこのダイナミックプロパティの存在を知りましたが、AnimationExtender の他のアニメーションのプロパティにも応用可能です。

例えば、Duration プロパティのかわりに DurationScript を使って、テキストボックスから値を取得することも出来ます。

<%-- Panel1 のフェードイン、移動、リサイズの並列実行 --%>
<Parallel AnimationTarget="Panel1"
  DurationScript="(isNaN($get('Text1').value)) ? 0 : $get('Text1').value;">
  <FadeIn />
  <Move Horizontal="80" Vertical="120" Unit="px" />
  <Resize Width="300" Height="300" Unit="px" />
</Parallel>

このダイナミックプロパティ、他のアニメーションを見ていくと、

  • Script Action の script プロパティ
  • Condition Animation の conditionScript プロパティ
  • Case Animation の selectScript プロパティ

などでも使われていますね。

AnimationExtender を使うにあたって、状況によっては利用価値がありそうですので、覚えておいて損はないでしょう。

以下、簡単にダイナミックプロパティ ( Dynamic Properties ) の実装の抜粋を記しておきます。

●Animations.js

$AA.createAnimation = function(obj, defaultTarget) {

  for (var property in obj) {

    var prop = property.toLowerCase();

    ...(中略)...

    // Try to set the value of a dynamic property
    if (prop.endsWith('script')) {
      setter = properties[prop.substr(0, property.length - 6)];
      if (setter && String.isInstanceOfType(setter) && animation[setter]) {
        animation.DynamicProperties[setter] = value;
      }
    }

    ...(中略)...
}

onStart : function() {

  ...(中略)...

  // Initialize any dynamic properties
  for (var property in this.DynamicProperties) {
    try {
      // Invoke the property's setter on the evaluated expression
      this[property](eval(this.DynamicProperties[property]));
    } catch(ex) {
      ...(中略)...
    }
  }
},


※この実装から見ると、プロパティ(属性)名の大文字小文字は関係ないようですね。疑問がさらに1つ解決です。

 

コメント (0)

[AJAX Control Toolkit] Version 1.0.10618.0 がリリース
ASP.NET AJAX By : Akira INOUE   Date : 2007/06/19 14:12

ASP.NET AJAX Control Toolkit リフレッシュリリースが出ています。

ASP.NET AJAX Control Toolkit Version 1.0.10618.0 ( 2007/06/18 Release )
http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=4923

  • Tabs: Resolved NamingContainer issues so that FindControl works as expected in Tabs.
  • ToolkitScriptManager: Shorter combined script URLs and new HTTP handler support for generation of combined script files.
  • Dependencies: Removed explicit reference to VsWebSite.Interop.dll and stdole.dll. They will not be automatically included in the web configuration files by Visual Studio.
  • FilteredTextBox: Navigation, Control and Delete keys work fine in all browsers.
  • Localization: Turkish, Dutch, and Traditional and Simplified Chinese language support added.

バグ Fix と少しの改良がされている模様です。
これからインストールしてみます。

 

コメント (0)

[AJAX Control Toolkit] ValidatorCalloutExtender などで Animations が追加されてます
ASP.NET AJAX By : Akira INOUE   Date : 2007/06/08 22:15

先日、新バージョンがリリースされた ASP.NET AJAX Control Toolkit ですが、いくつかのエクステンダでアニメーション効果を付加することができるようになっています。

例えば、下図

ValidatorCallout1.jpg

の ValidatorCalloutExtender では、次のように ValidatorCalloutExtender 要素の子要素として Animations 要素を追加して、AnimationExtender と同じ記述ができるようになっています。

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
  ControlToValidate="TextBox1"
  ErrorMessage="<b>名前が未入力です。</b><br /><br />名前を入力してください。"
  Display="None">
</asp:RequiredFieldValidator>
<ajaxToolkit:ValidatorCalloutExtender ID="ValidatorCalloutExtender1"
runat="server"
  TargetControlID="RequiredFieldValidator1"
  HighlightCssClass="Highlight">
  <Animations>
    <OnShow>
      <Sequence>
        <HideAction Visible="true" />
        <Pulse Duration=".1" Iterations="2" />
      </Sequence>
    </OnShow>
    <OnHide>
      <Sequence>
        <FadeOut Duration=".1" />
      </Sequence>
    </OnHide>
  </Animations>
</ajaxToolkit:ValidatorCalloutExtender>


この場合は、図ではわかりませんが、ValidatorCallout による検証メッセージの表示時にポップアップを2回点滅させています。そしてポップアップが非表示になるときにはフェード効果を付加しています。

このようなアニメーション効果の機能が追加されたコントロールには、次のものがあるようです。

  • AutoCompleteExtender
  • DropDownExtender
  • HoverMenuExtender
  • ListSearchExtender
  • PopupControlExtender
  • ValidatorCalloutExtender

とりあえず、AutoCompleteExtender でのアニメーション効果は
http://ajax.asp.net/ajaxtoolkit/AutoComplete/AutoComplete.aspx
で確認できます。

お試しあれ。

 

コメント (0)

[AJAX Control Toolkit] ScriptManager の代わりに ToolkitScriptManager が追加されました
ASP.NET AJAX By : Akira INOUE   Date : 2007/06/07 15:30

昨晩、ASP.NET AJAX Control Toolkit のサンプルサイト( http://ajax.asp.net/ajaxtoolkit/Default.aspx )に、急にアクセスできなくなっていたのでどうしたのかな?と思っていたところ、新しいバージョンがリリースされたようで、このためだったのかもしれません。

ASP.NET AJAX Control Toolkit ( 2007/06/06 Release )
http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=1813

かなりのバグ Fix がされているようですが、取り急ぎ大きな変更点を1つご紹介。

ScriptManager が ToolkitScriptManager に置き換えられました

これまで、ASP.NET AJAX Extensions の ScriptManager が使われていましたが、これが AJAX Control Toolkit に新しく用意された ToolkitScriptManager に変更になりました。

NewToolkit3.jpg

これにより、例えば次のような CalendarExtender を使用したサイト

NewToolkit1.jpg

をロードした時に、これまでは次のような数多くの ScriptResource (JavaScript) がロードされていました。

NewToolkit2.jpg

これが、ToolkitScriptManager を使うことにより次のようにかなり削減されて、レスポンスの面で改善されたことがわかります。

NewToolkit4.jpg

 

これまでの AJAX Control Toolkit を使用していた Web サイトの場合は、まず、Bin フォルダのアセンブリ( AjaxControlToolkit.dll と関連リソース dll )を最新のものに置き換えます。

そして、aspx ファイルの

<asp:ScriptManager ID="ScriptManager1" runat="server" />

<ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1"
runat="server" />

に変更します。


ちなみに、ツールボックスのコントロールのアイコンも新しくなってます。
ご参考までに。

NewToolkit5.jpg

 

コメント (0)

VSUG Day 2007 Summer サプライズ!
イベント By : Akira INOUE   Date : 2007/06/02 18:00

昨日は、

VSUG Day 2007 Summer
http://vsug.jp/tabid/151/Default.aspx

に行って来ました。

私は、かれこれ1年ほどボランティアスタッフとしてお手伝いさせていただいているのですが、昨日はサプライズ!がありまして、私達スタッフ全員が表彰状とマウスなどをいただいてしまいました。

blog.jpg

スタッフと言っても、たいしたお手伝いはしていないのですが、わざわざこのような企画と準備をしてくださった事務局と運営委員のみなさんに感謝です。ありがとうございました。

昨日の VSUG Day 2007 Summer の総参加者は 198 名とのことで、本当に多くの方に参加していただき、大成功だったと思います。懇親会も大盛り上がりで楽しい1日でした。

これからも VSUG をいろいろとみなさんと盛り上げていきたいですね~。

 

コメント (0)

Google Gears に昔を思う
イベント By : Akira INOUE   Date : 2007/06/02 17:52

一昨日は、

Google Developer Day 2007 (GDD07)
http://code.google.com/events/developerday/jp-home.html

に行って来ました。

普段よく行っている MS 系のセミナーイベントとは、またひと味違った雰囲気を味わえることができました。

blog2.jpg

すでにいろいろなニュースサイトなどで取り上げられていますが、このカンファレンスで一番の目玉はなんといっても

Google Gears
http://gears.google.com/

の発表でしょう。まだ試してはいないのですが、私は Google Reader を使っているので近々使ってみようと思っています。

インターネット常時接続があたりまえの時代になり、インターネットに繋がっていないことの方が少ないような感覚になっていますが、例えば飛行機や新幹線などでの移動中とか、改めて考えるとまだまだオフラインの場面も多いんですよね。

そう考えると、この Google Gears は非常に興味深いです。

むかーしむかーし、ダイアルアップでニフティサーブのフォーラムを自動巡回してオフラインで一生懸命に読んでいた時代をふと思い出しました。(Nifterm が必須のツールでした)。
懐かしい・・・

 

コメント (1)

Google Developer Day と VSUG Day
イベント By : Akira INOUE   Date : 2007/05/30 21:48

明日、5/31は

Google Developer Day 2007
http://code.google.com/events/developerday/jp-home.html

明後日、6/1は

VSUG Day 2007 Summer
http://vsug.jp/tabid/151/Default.aspx

に出没してきます。

なお、VSUG Day のほうはまだまだ参加受付中ですので、興味のある方はぜひ!!

というわけで、2日間本業から離れますー。

 

コメント (0)

PDC 07 中止
イベント By : Akira INOUE   Date : 2007/05/26 12:17

既にいろいろなところで書かれていますが、1年おきに開催されていた PDC (Professional Developer Conference) が今年は中止になってしまいました。

PDC 07 (MSDN Web Site)
http://msdn2.microsoft.com/en-us/events/bb288534.aspx

今年は 10 月に LA で開催が予定されていたのですが、残念です。
(って言っても、参加する予定はありませんでしたが・・・ LA だし・・・)

これで、PDC の数ヶ月後に日本で開催されていた Microsoft Developers Conference も、おそらく開催されないんでしょうね。あ~ぁ。

 

コメント (0)

[ASP.NET AJAX] Timer コントロールは UpdatePanel の外に配置しよう
ASP.NET AJAX By : Akira INOUE   Date : 2007/05/19 18:59

ASP.NET AJAX Extensions の Timer コントロールを使用する場合には、UpdatePanel コントロールの内部に配置すべきではないようです。

いくつか、UpdatePanel 内に Timer コントロールを配置してる例もありますが、可能なら Timer コントロールは UpdatePanel の外に配置して、UpdatePanel の Triggers コレクションで Timer の Tick イベントをトリガに設定しましょう

以下は、Timer を UpdatePanel 内に配置したサンプルです。

Timer1.jpg

aspxファイル

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"
  Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
                      "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title>TimerSample1CS</title>
</head>
<body>
  <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" />
    <div>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
      <ContentTemplate>
        <asp:Timer ID="Timer1" runat="server" Interval="5000"
                                              OnTick="Timer1_Tick">
        </asp:Timer>
        <asp:Label ID="Label1" runat="server" Text="未更新"></asp:Label>
      </ContentTemplate>
    </asp:UpdatePanel>
    </div>
  </form>
</body>
</html>

C#コードビハインドファイル

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
 
public partial class _Default : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {
  }

  protected void Timer1_Tick(object sender, EventArgs e)
  {
    Label1.Text = DateTime.Now.ToString();
  }
}

これを実行すると下図のように5秒間隔で時刻表示が更新されます(図ではちょっとわかりづらいですが)。

Timer2.jpg

ここで、5秒ごとにサーバとどのような通信がおこなわれているか見てみます。

ちなみに、ツールには Web Development Helper を使っています。
http://projects.nikhilk.net/Projects/WebDevHelper.aspx

Web Development Helper のログは以下のようになります。

Timer3.jpg

2回の Tick イベントによるサーバとの通信をキャプチャしていますが、1回の非同期ポストバックで2回の通信がおこなわれています

Default.aspx は当然ですが、その後の ScriptResource.axd?d=... は何でしょうか?
実はこれ、Microsoft AJAX Library の MicrosoftAjaxTimer.js という JavaScript ファイルです。

Timer コントロールは、サーバサイドで Sys.UI._Timer という JavaScript ライブラリに置き換えられ、クライアントサイドで実行されます。通常は、ページのロード時に1回だけスクリプトがダウンロードされれば済むわけですが、ここでは UpdatePanel 内に Timer コントロールを配置したことにより、UpdatePanel 内部のコントロールは非同期ポストバックで常にレンダリングされ、その対象に Timer コントロールも含まれてしまっているわけです。

これでも、更新間隔が非常に長かったり、負荷が問題にならない状況でしたら良いのでしょうが、なんか無駄ですよね。

この無駄をなくすには、次のように Timer コントロールを UpdatePanel の外に配置して、UpdatePanel の Triggers コレクションで Timer の Tick イベントをトリガに設定することで回避できます。

Timer4.jpg

aspxファイル

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"
  Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
                      "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title>TimerSample1CS</title>
</head>
<body>
  <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" />
    <div>
      <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
          <asp:Label ID="Label1" runat="server" Text="未更新"></asp:Label>
        </ContentTemplate>
        <Triggers>
          <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
        </Triggers>

      </asp:UpdatePanel>
      <asp:Timer ID="Timer1" runat="server" Interval="5000"
                                            OnTick="Timer1_Tick">
      </asp:Timer>
    </div>
  </form>
</body>
</html>

Image5.jpg

今度は、Web Development Helper のログは以下のようになり、Default.aspx のみの通信となり、毎回 MicrosoftAjaxTimer.js ファイルがダウンロードされることがなくなりました。

Image6.jpg

この Timer コントロールは、Interval の単位がミリ秒だったりと(実際は1秒以下のポストバックは発生しないようですが)、サーバ負荷を十分考慮した設計をしないと、とんでもないことになりますので注意しましょう。

 

コメント (0)

[ASP.NET AJAX] ASP.NET Futures の Managed JScript を試す
ASP.NET AJAX By : Akira INOUE   Date : 2007/05/17 11:24

ちょっと AJAX と XML-Script 関連で調べたいことがあったので、先日リリースされた ASP.NET Futures (May 2007) をインストールしてみました。

ツールボックスには、次のようなコントロール群が登録されます。

Futures0.jpg

 

また、Web サイトの新規作成では、テンプレートに

  • ASP.NET Futures AJAX Web Site
  • ASP.NET Futures Web Site
  • Dynamic Data Web Site

の3つが新たに登録されていました。

さらに、言語には

  • IronPython
  • Managed JScript

の2つが新たに出現(うおーっ!)。

Futures1.jpg

 

早速、Managed JScript やらを試してみました。

テンプレートには「ASP.NET Futures AJAX Web Site」を選択して、新規Webサイトを作成。

ソリューションには、次のようなファイルが現れました。

Futures2.jpg

拡張子 *.jsx が、Managed JScript のサーバサイドのスクリプトコードです。


とりあえず、よくあるパターンで TextBox, Label, Button, UpdatePanel を配置して・・・

Futures3.jpg

Default.aspx はこんな感じ。

<%@ Page Language="ManagedJScript" CodeFile="Default.aspx.jsx"
    Inherits="Microsoft.Web.Scripting.UI.ScriptPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
  <title>Untitled Page</title>
</head>
<body>
  <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" />
    <div>
   <asp:TextBox ID="TextBox1" runat="server" Width="250px"></asp:TextBox>
  <asp:UpdatePanel ID="UpdatePanel1" runat="server">
   <ContentTemplate>
    <asp:Label ID="Label1" runat="server" Width="250px"></asp:Label>
<br />
    <asp:Button ID="Button1" runat="server" Text="Click Me!" />
   </ContentTemplate>
  </asp:UpdatePanel>
 </div>
  </form>
</body>
</html>

Default.aspx.jsx はこんなコーディングをして、

function Page_Load(sender, e){
  if (Page.IsPostBack){
    Label1.Text = "Hello " + TextBox1.Text + " !!";
  }
}

さて、実行。

Futures4.jpg

ちゃんと動きました~。

#さて、本題をやらないと・・・

コメント (0)

VSUG Day 2007 Summer 開催!
イベント By : Akira INOUE   Date : 2007/05/09 10:25

Visual Studio User Group (VSUG) のオフラインイベント、
VSUG Day 2007 Summer」が 2007年6月1日(金)に開催されます。

詳細、お申し込み(無料)はこちらです。
http://vsug.jp/tabid/151/Default.aspx

時期 VS Orcas や Silverlight, Expression Blend など、今話題の技術セッションが盛りだくさんです。

興味のある方はぜひ!!

 

コメント (0)

Tech・Ed 2007 Yokohama 参加登録開始です!
イベント By : Akira INOUE   Date : 2007/05/02 21:26

今年も、Microsoft Tech・Ed の季節がやって来ました。
といっても、8月の話なのですが・・・。

すでに、オフィシャルホームページでは、参加登録が可能となっています。

今年は、料金体系が少し変わって、「フル エクスペリエンス パッケージ」と「リミテッド パッケージ」の2種類となっていて、「リミテッド パッケージ」は、な、なんと早期割引で 25,000円!!
特典内容にはいろいろと制限があるのですが、とりあえず Tech・Ed に参加してみたいという方にはおすすめです。

私は、毎年のごとく、隅から隅まで堪能したいので、「フル エクスペリエンス パッケージ」(73,000円)です・・・・。

あぁぁぁ、予算が・・・・

※ バナーも用意されてますよー。

bnr_teched_120-240.gif

 

コメント (0)

[DotNetNuke] HTML ヘッダに <link rel="alternate" ... />要素を追加して RSS 配信する
DotNetNuke By : Akira INOUE   Date : 2007/04/19 16:00

DotNetNuke のモジュールのいくつかは、RSS フィードを使った配信が可能になっています。
しかし、HTML ヘッダに <link rel="alternate" ... /> を使った URL の記述が行われないため、RSS リーダーなどでフィードが自動認識されません。

以下の図は、IE7 にて DotNetNuke の Blog モジュールのページを表示した状態です。
XML アイコンが表示され、RSS フィードは配信されていますが、IE7 では認識されていません。

no_header.jpg

これを改善するには、DotNetNuke のページ設定で、ページヘッダータグの記述を追加します。

  1. DotNetNuke に管理者でログオンして、ヘッダを追加するページの「ページ設定」を開きます。

    page_setting.jpg

  2. 「ページ設定」で「高度な設定」を開きます。

    page_setting2.jpg

  3. 「ページ ヘッダー タグ」に下記の記述を追加して、ページ設定を更新します。

    <link rel="alternate" type="application/rss+xml" title="(タイトル)" href="(RSSフィードURL)" />

    page_setting3.jpg

  4. RSSフィードが自動認識されます。

    page_setting4.jpg

 

これで、RSS リーダーなどのブックマークレットなどでも認識され、簡単に購読設定が可能となります。

なお、一つのページで複数の RSS フィードを配信している場合でも、上記のタグをそれぞれの RSS フィード URL を使って複数記述すれば配信可能です。

 

コメント (2)

Hello Silverlight !!
ソフトウェア By : Akira INOUE   Date : 2007/04/16 20:52

WPF/E ( Windows Presentation Foundation Everywhere ) の名称が Silverlight に変わり正式発表されました。

Microsoft Silverlight
http://www.microsoft.com/silverlight/default_01.aspx

Microsoft Silverlight

名前、かっこいいです。
(というか、WPF/E ってコードネームだったんですね。知らなかった・・・orz)

あとは、どの程度普及していくかですが、個人的には、けっこう楽しみでもあります。

※上記サイトから、早速壁紙もダウンロードしました♪

 

コメント (0)

[AJAX Control Toolkit] Popup 関連のコントロールが IE 100%表示以外で位置がずれる
ASP.NET AJAX By : Akira INOUE   Date : 2007/04/09 11:25

ASP.NET 2.0 AJAX の応用として CodePlex にてリリースされている AJAX Control Toolkit には、多くの有用なコントロールが含まれています。

AJAX Control Toolkit
http://www.codeplex.com/AtlasControlToolkit

ただ、PopupControl 関連のコントロールには、現在のバージョン(2007-03-01 Release)では Internet Explorer のページ倍率を 100% 以外にすると、ポップアップウィンドウの表示位置がずれてしまい正しく表示されない不具合があるようです。

例えば、下記のページ
http://ajax.asp.net/ajaxtoolkit/Calendar/Calendar.aspx
の Calendar コントロール (CalendarExtender) のデモで試してみると、IE の表示倍率が 100% の場合はカレンダーが正しい位置にポップアップされます。

Cal100.jpg
Fig : CalendarExtender (IE 100% View)

しかし、例えば 125% 表示で試すと、カレンダーの表示位置が正しい位置より、より大きくオフセットされて表示されてしまいます。

Cal125.jpg
Fig : CalendarExtender (IE 125% View)

 

DropDown コントロール (DropDownExtender)
http://ajax.asp.net/ajaxtoolkit/DropDown/DropDown.aspx
でも、以下のようになってしまいます。

Drop100.jpg
Fig : DropDownExtender (IE 100% View)

 

Drop125thumb.jpg
Fig : DropDownExtender (IE 125% View)

正式に Fix されるまで、使用には注意が必要です。

 

コメント (0)

Microsoft Expression シリーズが MSDN Premium 以上で提供
ソフトウェア By : Akira INOUE   Date : 2007/04/04 10:54

Microsoft Expression シリーズが MSDN Premium 以上で提供されるようです。

ネタ元:Expression web design applications now available on MSDN
http://blogs.technet.com/seanearp/archive/2007/04/03/expression-web-design-
applications-now-available-on-msdn.aspx

私は Visual Studio Team Edition for Software Developers を契約しているので、とりあえず Expression Web と Blend は入手出来る模様(個人的には Design も欲しかった~)。

これで、WPF ( XAML ) がますます楽しめそうです。よかったよかった。

 

コメント (0)

[ASP.NET AJAX] クライアントスクリプトからの Web サービスの非同期呼び出し
ASP.NET AJAX By : Akira INOUE   Date : 2007/03/28 20:31

ASP.NET AJAX をいろいろと調べていまして、そのメモを兼ねて一つ記事をアップします。

[The Official Microsoft ASP.NET 2.0 Site] にあるサンプル
「How Do I: ASP.NET AJAX Enable an Existing Web Service?」
http://www.asp.net/learn/videos/view.aspx?tabid=63&id=82

などでは、

function Button1_onclick() {
ret = SimpleService.SayHello(document.getElementById('Text1').value,
                             OnComplete, OnTimeOut, OnError);
return(true);
}

などと、Web メソッドの非同期呼び出しを記述しています。

幸いなこと(?)に JavaScript ではエラーとならずに実行されるのですが、正確にはこの記述は間違いです(以前の Atlas 時代の形式です)ので注意してください。

正確には、プロキシを使った Web サービスの呼び出しのプロトタイプは

myServiceProxy.MyServiceMethod(param1, ... , paramN,
               SucceededCallback, FailedCallback, userContext)

となっています。

参考:Generated Proxy Classes Web Service Methods
http://ajax.asp.net/docs/ClientReference/Sys.Net/GeneratedProxyClasses/
WebServiceMethods.aspx

サンプルのままだと、コールバック関数の OnComplete は問題ないのですが、タイムアウトでの処理のつもりで書いたコールバック関数 OnTimeOut がエラー発生時にも呼び出されてしまいます。

最新の ASP.NET AJAX では、タイムアウトとエラー発生時のコールバックは統一されており、同じ関数が呼び出されるようになっています(プロトタイプでは FailedCallback 引数に指定した関数)。

私は、このサンプルのデモムービーを見ていて、ちょっと混乱しました・・・


さて、参考までに・・・

ASP.NET AJAX を使って、クライアントサイドのスクリプトから Web サービスを呼び出すには、Web サービスのメソッドに System.Web.Script.Services 名前空間の ScriptService 属性 (ScriptServiceAttribute)が必要となります。

[ SimpleService.cs ]

using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.Script.Services;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class SimpleService : System.Web.Services.WebService
{
  [WebMethod]
  public string SayHello(string name)
  {
    return "Hello : " + name;
  }
}

そして、aspx ソースに asp:ScriptManager を追加して、その子要素に Services/asp:ServiceReference を下記のように追加すると、Web サービスの呼び出しに必要な JavaScript プロキシコードが生成されます。

[ Default.aspx ]

<asp:ScriptManager runat="server" ID="scriptManager">
  <Services>
    <asp:ServiceReference Path="SimpleService.asmx" />
  </Services>
  <Scripts>
    <asp:ScriptReference Path="UsingSimpleService.js" />
  </Scripts>
</asp:ScriptManager>

生成されたプロキシスクリプトを使うと、クライアントサイドのスクリプトで Web サービスの非同期の呼び出しが、下記のコードのように簡単に行えるようになります。

[ UsingSimpleService.js ]

function pageLoad()
{
  SimpleService.set_timeout(3000);
  SimpleService.set_defaultUserContext("Default context");
  SimpleService.set_defaultSucceededCallback(SucceededCallback);
  SimpleService.set_defaultFailedCallback(FailedCallback);
}

function Button1_onclick()
{
  SimpleService.SayHello(document.getElementById("Text1").value);
}

function Button2_onclick()
{
  SimpleService.SayHello(document.getElementById("Text1").value,
                         SucceededCallback,
                         FailedCallback,
                         "User context");
}

function SucceededCallback(result, userContext, methodName)
{
  var text = result + " (" + userContext + ")" + " [" + methodName + "]";

  document.getElementById("Label1").innerText = text;
}

function FailedCallback(error, userContext, methodName)
{
  var text = "Service Error : " +  error.get_message() +
             " (" + userContext + ")" + " [" + methodName + "]";

  document.getElementById("Label1").innerText = text;
}

このプロキシを使った Web サービスの呼び出しでは、pageLoad で行っているように、プロキシの set_defaultXXXX メソッドで、コールバック関数を指定して Button1_onclick で Web サービスメソッドの呼び出しのみを行う方法と、Button2_onclick で行っているように Web サービスの呼び出し時にコールバック関数を指定することもできます。

ここで、プロキシを使った Web サービスの呼び出しのプロトタイプは前述のように

myServiceProxy.MyServiceMethod(param1, ... , paramN,
               SucceededCallback, FailedCallback, userContext);

となります。

また、各コールバック関数のプロトタイプは下記の通りとなります。

function SucceededCallback(result, userContext, methodName);
function FailedCallback(error, userContext, methodName);


ASP.NET AJAX は、UpdatePanel を使えばとても簡単に Web アプリケーションの AJAX 化ができるのですが、本格的な ASP.NET AJAX アプリケーションを作り始めると、やはりいろいろと奥が深いところがあり楽しいですね。

【参考】
Generated Proxy Classes
http://ajax.asp.net/docs/ClientReference/Sys.Net/GeneratedProxyClasses/default.aspx

 

コメント (0)

UAC の昇格確認ダイアログのスクリーンショットを取る方法
Windows Vista By : Akira INOUE   Date : 2007/03/22 17:14

ユーザーアカウント制御 (User Account Control) 機能による昇格時の確認ダイアログは、セキュリティで保護されたデスクトップ(背景が暗くなった状態で UAC の昇格確認ダイアログだけがアクティブになったデスクトップ)で表示されるため、簡単にスクリーンショットを取ることができません。

私は、今まで UAC の昇格確認ダイアログのスクリーンショットだけは、Virtual PC 2007 上で起動した Windows Vista を使って作成していました。

でも、こんな方法もあるんだな、ということでご紹介。

  1. コントロールパネルの「システムとメンテナンス」-「管理ツール」で「ローカル セキュリティ ポリシー」を開きます。
  2. ウィンドウ左側のツリーで、「セキュリティの設定」-「ローカル ポリシー」-「セキュリティ オプション」を開き、右側の「ポリシー」リストで「ユーザーアカウント制御:昇格のプロンプト時にセキュリティで保護されたデスクトップに切り替える」を探し、ダブルクリックします。
  3. 「ローカル セキュリティの設定」タブで、デフォルトでは「有効」になっていますが、これを「無効」に変更します。

uac2.jpg

この設定であれば、Snipping Tool などで簡単に UAC 制御のダイアログのスクリーンショットを取ることができます。

但し、セキュリティで保護されたデスクトップでは Aero が無効になっているため、UAC の昇格確認ダイアログも半透明ではないウィンドウ表示なのですが、セキュリティで保護されたデスクトップを使用しない場合の UAC の昇格確認ダイアログは、Aero が有効になっていると半透明のウィンドウ表示となってしまいます。

 

コメント (0)


MCAD


techbank.jp


Copyright © 2005-2008 by BitWiz   使用条件  プライバシー