ページ

2006年4月26日水曜日

Generic なメソッドを動的生成する

Generic dynamic method using DefineMethod
Generic なメソッドを DefineMethod を使って動的に生成する例が紹介されています。


DynamicMethod and TypeBuilder.DefineMethod
DynamicMethod と DefineMethod の比較です。DynamicMethod は型とかアセンブリとかが必要ないというのが一番の違いみたいです。 

2006年4月24日月曜日

JavaScript でアニメーションエフェクト

[JavaScript] リアルタイム描画のアニメーションエフェクト処理クラス


Ajax とか見てると 「JavaScript でここまでやるか / やれるのか」 と思うことが多いんですが、このゆうすけさんのも凄いです。。。


<img> タグを cloneNode して clip で表示する範囲を調整、、、なるほどなぁ。おぉ、clip って <img> だけじゃなくて、なんにでも働くんだ。知らなかった。

2006年4月21日金曜日

Mac ラボツアー

A Tour of Microsoft's Mac Lab より


どうもこれを書かれた David Weiss さんは Microsoft の MacBU (Business Unit) の人みたいです。で、「プレス向けイベントや私たちの MVP といった特別な訪問者があるときに、しばしば Mac ラボツアーをやって私たちがやっていることを説明する」 なんてあります。そして、上記の記事は 「バーチャル Mac ラボツアー」 だそうです。


記事は英語ですが、写真を見るだけでもおもしろいです。私は Mac はよくわかんないんですが、G3 だとか G4 だとかがずらり。中でも Mac Mini が 150台並んでいる姿はすごいです。壁新聞 (Published!) の写真には "Intel Inside" の旗がついてる Intel 人形がいますね。まっ、今は Mac も Intel Inside ですからねぇ。

2006年4月18日火曜日

DLINQ は魔法でできています

波村さんの blog: DLINQ は Magic か?


LINQ は 「配列とかからのクエリー」 と 「データベースからのクエリー」 の両方をおんなじ構文で書けますが、どんな魔法を使ってるんだ?という問いへの回答です。詳しくは上記の波村さんの blog を見ていただくとして、要するに 「魔法なんかじゃない。単にコンパイラが構文を解釈した結果、違うものが呼び出されるだけ」 てな感じです。


まぁ、これは特に目新しい話じゃないです。というか、「魔法」 を導入する替わりに extension method とか lambda 式とかのもろもろが導入されたわけですね。
んが、なんと、、、


同じく波村さんの blog: DLINQ Is Magic


4/17 に DLINQ は魔法になったそうです(^^;
(魔法になったのは LINQ そのものではなく、あくまでも DLINQ の部分みたいですね)

Re: Nullableを含めた3項演算子

中さんのところの Nullableを含めた3項演算子 に反応。


なるほど。3項演算子は 2項目と 3項目の型だけで 3項演算子の評価結果の型を判断してて、その評価結果がどう使われてるかまでは考慮してないんでしょうね。まぁ、これはこれで仕方ないような気はします。


けど、if 文にまでしなくても int? であることを教えてあげればコンパイルできると思うんですが、それではダメですか?
  int? ユーザID = row == null ? (int?)null : row.ユーザID;
もしくは
  int? ユーザID = row == null ? null : (int?)row.ユーザID;
てな感じで。

2006年4月17日月曜日

VB2005 のアプリケーションフレームワークを C# で使う

USERS GROUP の C# ML でしったんですが、VB2005 の Windows.Forms なプロジェクトにはアプリケーションフレームワークなんていう機能があるんですね。


VB2005 のプロジェクトのプロパティに 「アプリケーションフレームワークを有効にする」 なんていうチェックボックスがあって、「シャットダウンモード」 を 「最後のフォームが閉じるとき」 にすると、開いているフォームがなくなったときに自動的にアプリケーションが終了するようになります。C# で同じことをしようとすると自分でフォームの数なんかを管理したりするコードを書かなくちゃいけません (よね?プロジェクトのプロパティを見ても C# にはアプリケーションフレームワークに該当するような設定はないみたいなんで)。
けど、VB がそんなに特殊なことをやってるとは思えません。きっと、どっかに (きっと Microsoft.VisualBasic あたり) アプリケーションフレームワークの機能を実現するクラスがあるんじゃないかと思います。。。って、ありました。


というわけで、VB がやっているのと同じことを C# でやってみました。



  1. Microsoft.VisualBasic.dll を参照設定に追加する。

  2. Program.cs の内容を以下のようにする。(namespace と OnCreateMainForm() メソッドの内容はプロジェクトにあわせて修正してください。OnCreateMainForm() メソッドは名前のとおり、起動時に最初に表示するフォームを設定してあげるメソッドです)

using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace CSWindowsApplication
{
internal class Program : Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase
{
/// <summary>
/// アプリケーションのメイン エントリ ポイントです。
/// </summary>
[STAThread]
static void Main(string[] args)
{
Application.SetCompatibleTextRenderingDefault(false);
Program app = new Program();
app.Run(args);
}
public Program() : base(Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
{
this.IsSingleInstance = false;
this.EnableVisualStyles = true;
this.SaveMySettingsOnExit = false;
this.ShutdownStyle = Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterAllFormsClose;
}
protected override void OnCreateMainForm()
{
this.MainForm = new CSWindowsApplication.Form1();
}
}
}


これだけです。
上記のコードの意味は見てもらえばだいたいわかるんじゃないかと思います。また、上記には書いてませんが OnStartup()、OnStartupNextInstance()、OnShutdown() イベントなどを override することもできます。また、スプラッシュウインドウを表示するときは、適当なフォーム、たとえば、frmSplash を作成しておいて、


        protected override void OnCreateSplashScreen()
{
this.SplashScreen = new frmSplash();
}


としてやれば OK です。frmSplash は ControlBox、MaximizeBox、MinimizeBox、ShowIcon、ShowInTaskbar を全部 False にして StartPosition を CenterScreen に、Text をなしにしてやるとそれらしくなるんじゃないかと思います。

2006年4月14日金曜日

Google Calendar BETA

Google Calendar


Google Calendar BETA がリリースされたみたいです。ちょっとさわってみただけですが、かなり Ajax な感じ。

"Atlas" Control Toolkit

昨日、Atlas の April CTP がリリースされたと書きましたが (「"Atlas" April CTP Release」) どうも "Atlas" Control Toolkit がリリースされたことが重要みたいです。


この Atlas Control Toolkit というのは、Atlas コントロール (Ajax なコントロール) のサンプルと開発を簡単にするためのコンポーネントの集合だそうです。 実際にこの Toolkit に含まれている 9つのコントロールが "Atlas" Control Toolkit で紹介されています (デモページで動かしてみることもできます)。


Atlas Control Toolkit (And Why It is Really Cool)
こちらによると、最終的には 50~100 の便利でハイクオリティな Atlas コントロールを Toolkit に含める予定とのことです。あと、コントロールに関する部分はソースコントロールのリポジトリを設置して Microsoft の内外を問わずいっしょに開発できるようにする予定とのことです。

2006年4月11日火曜日

Yahoo! Instant Search BETA

Yahoo! Instant Search BETA
http://instant.search.yahoo.com/


検索文字列を入れるところに "boston weather" と入れるとエンターキーなどを押さなくてもボストンの天気が表示されます。また、"22 5th ave new york ny" と入れるとニューヨークの地図が表示されますし、"msft" と入れると Microsoft 社の株価が表示されたりします。なかなかおもしろいです。


 

XPS Viewer

今までは WinFX CTP が入ってれば XPS も表示できるって感じでした。というか IE 上で XAML を表示されると XPSViewer.exe が動いてるんですけどね。


それが、WinFX が入っていない Windows Server 2003、XP、2000(SP4) で XPS を表示できるビューワーのベータ版がリリースされたようです。
http://www.microsoft.com/whdc/xps/viewxps.mspx
こちらの 「Opening XPS Documents with XML Paper Specification Essentials Pack (Beta 1)」 です。

WPF 入門ビデオと Expression 紹介ビデオ

Mix06 Thailand Demo
WPF の入門ビデオです。XAMLPad を使って簡単な XAML を書くところから始まって Visual Studio 2005 と Expression Interactive Designer を使うっていうところまで 20分ほどで紹介されいます。英語ですが、ほとんど XAML をガシガシ書いていってるだけなので見てるだけでもだいたいわかりました。


Microsoft Expression Tours & Demos
こちらも英語ですが、Expression の Graphic Designer、Interactive Designer、Web Designer のそれぞれの紹介ビデオとトレーニングビデオがあります。

WinFX と Vista は 2006年 11月リリース予定

WinFX and Windows Vista Timeline - what you need to know... より


最近 Vista の出荷は 2007年 1月以降になる、というニュースがありましたが、それに関して上記の記事では、


「ビジネスカスタマは Vista を?2006年 11月に入手できるだろう。Vista には WinFX が含まれるだろう。同時に WinFX はすべてのカスタマがダウンロードできるようになるだろう (Windows XP と Windows Server 2003 用)。最終の WinFX はこのときまで入手できないと思うが、WinFX と Vista の CTP のリリースは続ける。
WCF と WF は WinFX Jan CTP で go-live ライセンスになった。WinFX 全体の go-live ライセンスは今年の後半?-8月くらいとか- を予定している」


なんてことが書かれています。たぶん、ボリュームライセンスとか MSDN Subscriber Download とかでは 2006年 11月から入手できるようになって、パッケージとして小売されるのが 2007年になるってことなんでしょうね。Visual Studio 2005 日本語版も 2005年 12月 15日から MSDN Subscriber Download などで入手できるようになって、パッケージが小売されるようになったのは 2006年の 2月になってからでしたから、これと同じような感じですね。けど、Vista が入手できる人とできない人がいるっていうのは混乱を招きそうな気もしますけど大丈夫かなぁ。Visual Studio と違って、ものすごくたくさんの 「ふつーの人」 が対象ですからねぇ。

2006年4月7日金曜日

SQL Server Everywhere Edition

SQL Server 2005 Update from Paul Flessner


Microsoft の Senior Vice President of the Server Applications である Paul Flessner 氏からの 2006/4/6 付けのリリースです。
真ん中よりちょっとしたの 「Dynamic Applications.」 とタイトルされているところなんですが 「今日、新しく SQL Server ファミリーに追加される SQL Server Everywhere Edition を発表したい」 なんてあります。どうやらこの Edition は 「すべてのタイプのクライアントのストレージとして使えるライトウエイトでコンパクトでしかしリッチな他の SQL Server Editions のサブセット」 ということみたいです。もちろん、他の Edition の SQL Server とシームレスに同期を取れるし、プログラミングモデルも共通とのことです。
SQL Server Everywhere Edition の最初の CTP は今年の夏、正式出荷は今年の終わり(2006年 12月) の前にしたいってことのようです。


他の情報を探してみると、、、


The little database that could. Deploying SQL Mobile as a local / single user database across Microsoft Mobile devices
こちらの冒頭に UPDATE が書かれてますが、SQL Mobile というものが SQL Server Everywhere Edition に進化したってことなんでしょうか?SQL Server 2005 Mobile Edition というのは (私は内容はまったくしらないのですが) Visual Studio 2005 といっしょにリリースされているみたいですし (C:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\SQL Server\Mobile\v3.0 をみたらちゃんとそれらしきものが入ってました)。


SQL Mobile is now called SQL Everywhere and its true, SQL Everywhere runs everywhere
こちらによると、やっぱりどうも SQL Mobile が SQL Everywhere になった (なる) ということみたいです。SQL Mobile は Windows モバイルデバイスとタブレットだけだったが、Everywehere はデスクトップもサポートするようになる、ということみたいです。で、どうやら単にファイルをコピーするだけでモバイルデバイス、デスクトップを問わずデータベースの移動ができるようになるみたいです。また、SQL Server 2005 がサービスなのに対して SQL Everywhere は DLL ベースになるそうです。データベースが Windows サービスベースであるために発生するインストールやメンテナンスのハードルをなくす、なんて感じで書いてあるみたいなのでひょっとして DLL をコピーするだけでセットアップ終わり、という感じになるんでしょうか?

2006年4月5日水曜日

ALE - Ajax Linking and Embedding

A Pint of ALE - Ajax Linking and Embedding より


たとえば Word の文書に Excel のスプレッドシートを貼り付ける。普段は表が見えているだけ。だけど、その表をダブルクリックすると内容が編集できる (Word の中で Excel が動いている)。こんなのを Windows では Object Linking and Embedding 略して OLE という技術で実現しています。OLE の詳細はばっさり略 (というか、すべてを解説できる人なんているんだろうか)。


同じようにある Ajax な文書に他の Ajax なサイトで作ったスプレッドシートを貼り付ける。スプレッドシートといっても普段は単なる HTML。けど、それを編集モードにすると Ajax なスプレッドシートが動き出す。こんなのを実現する Ajax Linking and Embedding 略して ALE ってのが提案されています。


いやぁ、おもしろいなぁ。確かにできない話じゃないですね。よくは読んでませんが、上記の提案では編集自体は IFrame の中で動くようにして、Ajax 側では if (window.ALE == true) ってすれば ALE による編集モードかどうか判断可能。また、ALE 対応 Ajax コンポーネントは create、serialize、deserialize、getHTML なんていうようなメソッドを window に持たせるようにする。ALE フレームワークはこれらのメソッドを使用して表示モードや編集モードを行き来する。といった感じみたいです。


しかし、、、なんというか、、、Ajax ってすごいなぁ。。。。


すごいって言えば、上記記事の "Zimbra Preview Hosted Demo" のところから Zimbra のプレビューが見れますが、これもすごいなぁ。(このプレビューの左側にある notebook アイコンで ALE のプレビューが見れると書いてあると思うんですが、スクリプトエラーになっちゃいます。IE だとダメなのかな?)