ページ

ラベル 記事 の投稿を表示しています。 すべての投稿を表示
ラベル 記事 の投稿を表示しています。 すべての投稿を表示

2013年2月8日金曜日

[Mesh][SkyDrive] Windows Live Writer の下書きフォルダーを SkyDrive で同期する

任意のフォルダーを SkyDrive や Dropbox で同期する方法について。
Live Mesh では好きなフォルダーを同期させることができました。けど、SkyDrive だと “%UserProfile%\SkyDrive” フォルダー、Dropbox だと "%UserProfile%\Dropbox” に同期するフォルダーが固定されています。変更する方法もあるのかも知れませんが、任意のフォルダーを SkyDrive で同期するっていうような使い方はできなさそうです。
が、シンボリックリンクを使ってやれば普通にできます。

例として Windows Live Writer(以下 WLW) の場合。
ブログを書くのに WLW を使ってますが、WLW で下書きとして保存すると「マイドキュメント」の "My Weblog Posts" フォルダー("%UserProfile%\Documents\My Weblog Posts" フォルダー)に保存されます。このフォルダーを SkyDrive で同期させます。
こうしておけば、どっかの PC で下書きを保存して、別の PC で続きを書くってことができるようになります。(もちろん、それぞれの PC に SkyDrive アプリを入れておかないとダメですが)

やり方自体は簡単です。
ただ、フォルダーを削除したりするので意味がわからない人はやめておいたほうが無難かもです。

  1. "%UserProfile%\Documents\My Weblog Posts" フォルダーを削除する。(注意 当然ですが、今までに保存していた WLW の下書きなどが消えます。必要なら他のフォルダーにバックアップしておくなどしておいてください)
  2. "%UserProfile%\SkyDrive\My Weblog Posts" フォルダーを作成する。
  3. 管理者としてコマンドプロンプトを起動してそこで
    mklink /d "%UserProfile%\Documents\My Weblog Posts" "%UserProfile%\SkyDrive\My Weblog Posts"
    を実行する。
  4. (必要なら 1 でバックアップしたファイルを書き戻す)

と、まぁ、やることはこれだけです。

mklink でシンボリックリンクが貼られて「マイドキュメント」の "My Weblog Posts" フォルダーが SkyDrive の下の "My Weblog Posts" フォルダーに繋がります。WLW が下書きを「マイドキュメント」の下に保存すると、それは実は SkyDrive の下なので SkyDrive が同期してくれます。
私は Windows Live Essentials に Mesh が含まれなくなったとき(確か半年くらいだっけ)からこの方法で任意のフォルダーを SkyDrive で同期させています。来週、2月 13日で Live Mesh サービス自体が終了だというニュースを見て、あらためて書いてみました。

2010年9月1日水曜日

[Silverlight][3DCG] SilverMotion (Silverlight 用の 3DCG 描画エンジン)

SilverMotion
Silverlight 用の 3DCG 描画エンジンだそうです。
PostVision という会社の商品みたいですね。(フリー版もあるようです)

Silverlight 自体には 3D 描画機能はありませんから全部自前で(おそらくは C# で)実装したんですね。
デモページ で動いているところが見れます。
私の環境だと、複数ライト + テクスチャマッピング + ノーマルマッピング + 環境マッピングで総ポリゴン数 9万くらいのカエルさんが 45fps くらいで描画できてました。
(オープンソースの Silverlight 用 3DCG 描画エンジンなんかもあったと思いますが、私はそれらのことを知らないので、それらに比べてどうなのかとかはわかりません)

ちなみに Blender, 3DS Max, Maya, MilkShape などからエクスポートした .3DS ファイルに対応しているそうです。


2010年6月24日木曜日

[CRT] Re:一歩ずつ (CRT エミュレーション)

前の記事に続いて、Jitta さんの 「一歩ずつ」 の出題 7 の CRT のにじみについて。
(またまた回答とかじゃありません)
そういや、以前に見かけたなぁ、と思って検索してみた。

A Television Simulator
Atari 2600 VCS エミュレーターの話なんですが、CRT エミュレーションをするにはどういったことをすればいいかといったことが書かれているようです。
すごくいい加減な訳ですが、どうやら

  • Texture … 格子を抜けてきた電子ビームによって蛍光物質が光ってるとかそういった構造上の理由から CRT はドットとドットの間にわずかに隙間がある。
  • Afterimage … 蛍光物質がわずかな間焼きつくのと、LCD に比べると人の網膜に残像が残りやすい。結果、画像が動いたり変化したりしたあとすぐに消えずに残存したりする。
  • Color Bleed … LCD のように輪郭がくっきりせず CRT では周囲ににじみ出すし、色が混じりあったりする。
  • Noise … 伝送に RF を使っているのでノイズがそれなりに乗る。普通のテレビと違ってビデオゲームの広くフラットに塗りつぶしたようなところでは、それがわずかなバイブレーションとして見える。

といったところみたいです。

で、2009年春に Stella という Atari 2600 VCS エミュレーターに上記の内容を実装してみたと。
結果は “ファンタスティック” だったそうです。
こちら の June 9, 2009 のところに CRT エミュレーションが追加されたとあります。
Open GL 2.0 以上で GLSL が必要とのことです。

残像とかは以前のフレームの状態とかがわからないとダメそうなので難しいかもだけど、ドット間の隙間やにじみなんかは Silverlight の PixcelShader でもなんとかなるかな?(いや、私は作りませんが。つか、HLSL とかあまりよく知らないし)


[Small Basic] Re:一歩ずつ (Small Basic でやってみた)

Jitta さんの 「一歩ずつ」 を読んで、ふと、Small Basic でやってみました。
(出題に対する回答ではなく、そのまんま Small Basic でやってみたというだけです)

実は Small Basic を使ってみるのは今回が初めてです。存在を知ってただけで、インストールもしたことがありませんでした。
なので、まずは http://smallbasic.com/ から msi をダウンロードしてセットアップ。
ダウンロードサイズも 5Mバイトちょっととすごくコンパクトなんですね。
セットアップ中に聞かれる Custom Setup のところの “Main Files” を展開して English と Japanese を “Will be installed on local hard drive” にしておきました。
そうすると、ちゃんとスタートメニューに Microsoft Small Basic (English) と (Japanese) が追加されました。(English は別にいらなかったかも)

さっそく Small Basic を起動して以下のコードを入力。
Small Basic の文法もほとんど知りませんでしたが、インテリセンスもよくできてるし、すぐに完成。

GraphicsWindow.Width = 800
GraphicsWindow.Height = 600

For x = 0 to GraphicsWindow.Width Step 5
GraphicsWindow.PenColor = "Blue"
  GraphicsWindow.DrawLine(0, 0, x, GraphicsWindow.Height)
EndFor

For y = 0 To GraphicsWindow.Width step 5 GraphicsWindow.PenColor = "Blue" GraphicsWindow.DrawLine(0, 0, GraphicsWindow.Width, y) EndFor

実行してみたらちゃんと青い線が描けました。

Small Basic のおもしろいところは、書いたコードをすぐに公開できるところです。
やり方は簡単でツールバーの 「発行」 ボタンを押すだけ。
ユーザー登録とかそういったとも何にも無しにボタンを押すだけでコードが Web で公開されます。
そうやって公開したのがこちら
http://smallbasic.com/program/?ZWL954

Web 上では Silverlight で動いてるんですね。
リンクするだけでなく、<object> タグで自分のブログなんかに貼り付けることもできます。(右側に表示されている “Embed this in your website” のタグ)
なかなかおもしろいなぁ。
リファレンスマニュアルも日本語化されてました。 http://smallbasic.com/doc.aspx?l=ja

あと、Jitta さんの記事の出題 7 の CRT のにじみについてですが、これについては別記事にて。


2010年1月5日火曜日

[WPF][Silverlight] Silverlight を WPF/XNA でホスト

CodePlex にこんなのがありました。
http://silverlightviewport.codeplex.com/
すごく簡潔な説明しか無いですし、ソースを見たわけでもないので詳細はわかんないんですが、WPF/XNA 上で Silverlight をホストするものみたいです。(Host ではなく Render になってますが)
また、「まだめっちゃ実験的なもんだよ!」 とのこと。

作者さんのブログの記事はこちら
Render Silverlight in WPF ? WPF SilverlightViewport
まず、「より明確に理解するために取り組んでみたホビープロジェクトだ」 といった文からはじまってます。
で、以降をざっと要約すると 「Silverlight は COM API でホストできるC++ のサンプルコードもある。けど、これは Win32 のウインドウに描画するのが前提。Silverlight はウインドウレスもサポートしてるはず。なので、Silverlight をウインドウレスにロードして画面の代わりに GDI ビットマップに描画させてみたらうまくいった。ただ、CPU 使用量が高かったのとアルファが透過できなかったけど。で、ちょっと汚くなったけど interop でごにょごにょしたらアルファも抜けるようになったし、パフォーマンスも良くなった。WriteableBitmap も使ってみたけど、結局 InteropBitmap にした。パフォーマンスも良くなったし。」 という感じです。

ソースをダウンロードして Visual Studio 2008 でソリューションを読み込んでやればビルドして実行できます。
(XNA を入れていない場合、XNATestApplication プロジェクトと Primitives3D プロジェクトが読み込めませんが、無視して読み込んでしまえばとりあえず TestApplication を動かしてみることはできました)
TestApplication を実行してみるとちゃんと動いてます。動いているのは http://silverlight.net/ にある SHOWCASE を表示しているやつです。
Window1.xaml の <slvp:SilverlightViewportElement ...> の Source を Source=”http://silverlight.net/content/samples/sl3/toolkitcontrolsamples/run/System.Windows.Controls.Samples.xap “ と書き換えてやって Silverlight 3 Toolkit を動かしてみましたが、それなりに動いてます。
なお、マウス入力はそれなりに生きてますが、キー入力は未対応みたいです。
(マウス入力は WPF 上のイベントを転送してやってるんじゃないかと思いますが、キー入力は IME とかいろいろ絡んできそうなので簡単ではないのかも)

作者さんもホビープロジェクトと言ってる通り、実用性についてはよくわかりません。
そもそも、「Silverlight をホストしなくても WebBrowser を使えばいいんじゃね?」 という気がしなくもないですw
けど、試みとしてはおもしろいですね。


2009年12月22日火曜日

[Silverlight] Silverlight 4 で AR

World# - Real Time 3D Augmented Reality with Silverlight より。
Silverlight 4 では webcam API がサポートされるってことで、当然のように AR している人がいましたw
完全にマネージド (C#) な NyARToolkitCS という ARToolkit を使っているそうです。
また、3D モデルのレンダリングに Balder というマネージドなゲームエンジンを使っているそうです。

上記は実際に Silverlight 4 で動かしてるところをスクリーンキャプチャしたものだそうです。
記事に 「スクリーンキャプチャソフトがリソースをえらく食ってる」 といったことが書かれてますので、カクついて見えるのはキャプチャムービーだからみたいです。
記事によると 50~60fps でスムーズに動いているとありますね。


2009年12月17日木曜日

[Silverlight] Wiki-OS と Userware API

Wiki-OS を作ってる Userware 社による Wiki-OS などの紹介ムービー。
英語ですが絵を見てるだけでもだいたいわかるんじゃないかと。

2:10 くらいから始まるプロダクト & デモでは以下のものが紹介されています。

  • Wiki-OS … そのまんま Wiki-OS ですね。
  • Wiki-OS Enterprise … どうやら Wiki-OS サーバを自分で立ち上げることができる模様。ムービーでは .xbap になってるので WPF 版ですが、これは WPF 版と Silverlight 版があるのかな?
  • Userware API … どうやら自分のアプリケーションに Wiki-OS の機能を組み込める模様。ムービーではイメージエディター (自分で作ったアプリ) のフィルターを Userware API 対応にしておき、「他に欲しいフィルターがあったら誰か作ってね」 なんてことをしています。(「Create New Filter...」 で Wiki-OS と同じ C# コードエディターが開きコードを書ける。もちろん既存のコードを編集することも可)
  • Userware for Office … Microsoft Office のアドインを Userware API なコンポーネントでできるようにするもの。

いやぁ、おもしろいなぁ。
特に Userware API なんてすごく興味深い。実用的に使えるのかどうかはまだ何とも言えない気がするけど、けど、なんかわかんないけど 「おもしろそう」 と感じるw
ちなみに、http://www.userware-solutions.com/ にあるように Wiki-OS Enterprise、Userware API、Userware for Office は有料な商品みたいです。

ところで、ムービーの 3:00 くらいのところ。
Wiki-OS アプリをブログに貼り付けてみるというデモですが、”貼り付けてみるテスト” なんて日本語が見えたので 「おぉ、日本語!」 って思ったんですが、「あれ?このブログ、見覚えが、、、」
うはっ、ここじゃんw


[Silverlight] Silverlight を使った Virtual DVD

Silverlight-powered Virtual DVD now available from Tesco より。
このタイトルを見たときはさっぱり意味がわかんなかったんですが、記事によると 「9月に Microsoft と Tesco が次世代のホームビデオ提供方法を Silverlight を使って行う予定とアナウンスした。”Virtual DVD” は物理的な DVD/Blu-ray を購入した Tesco の顧客がそのディスクとまったく同じものの Silverlight 版をダウンロードできるようにする仕組み」 ということだそうです。
記事には書いてないんですが、やっぱり Live Smooth Streaming を使ったものなのかな?
ただ、チャプター、マルチランゲージ、字幕もサポートされるとありますね。Live Smooth Streaming ってこういったこともできるようになってるのかな?

ところで、つい最近ほとんど同じようなニュースを見たような気が、、、
Amazon、DVDやBDを買うとその場でデジタル版を観られるDisc+ On Demandを開始
これか。


2009年12月11日金曜日

[Silverlight] Silverlight 4 の COM 呼び出しはアウトオブプロセスな COM サーバのみらしい

Silverlight 4 COM Support and 32/64 bit machines ? the C64 Emulator より。
以前に Commodore 64 エミュレータを Silverlight で作ってる 方の記事を紹介しましたが、その方のその後です。

ジョイスティックなんかをエミュレートするためにタッチ・インターフェースでできるようにしようとしたとのこと。
このために Windows API Code Pack を使って (おそらく C# で) DLL を作り、これを regasm で COM として登録。そして、Silverlight 4 の COM 呼び出しを使ってこの COM を呼び出すようにしたようです。
(Silverlight から直接 API を呼び出すことはできないため、COM 経由で呼ぶようにしたということですね)
で、パフォーマンスも問題ないしうまくいったと。

が、Silverlight の PM の一人である Ashish Shetty 氏にこのことを話したところ驚かれたようです。こういうシナリオはサポートされてない、と。
太字で強調されてますが、COM 呼び出しはローカルマシンにインストールされているアウトオブプロセスな COM サービスに使うことが前提になっていると。

PDC でこのデモを動かしてやろうとしたけどデモ機が Windows 7 64bit だったので動かなかった、なんてことも書いてありますね。
インプロセスな COM の場合、64bit アプリでは 64bit の COM、32bit アプリでは 32bit の COM しか呼び出すことができないからですね。
って、あれ?
Silverlight 4 の Out of Browser は 64bit OS だと 64bit なの?
いや、そもそも regasm で登録した COM って 32bit なの?64bit なの?(アセンブリは AnyCPU だとして)
気になったので検索してみた、、、
おぉ、

  • C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe
  • C:\Windows\Microsoft.NET\Framework64\v2.0.50727\RegAsm.exe

があるのか。
Framework の方で regasm する 32bit COM、Framework64 の方だと 64bit COM になるのね。知らんかった。

ちなみに、アウトプロセスな COM サーバーの場合は間にマーシャリングが入るため違うビット幅の COM サーバーも問題なく呼び出せます。

ちょっと話がそれましたが、インプロセスな COM に使うことを想定してないというのはちょっと意外。
Having fun with Silverlight 4 Beta and the Speech APIs
こちらの人なんて Speech API を呼び出して Out of Browser な Silverlight 4 アプリにしゃべらせたりしてるし。
# Sapi.SpVoice はインプロセスな COM でした。

おまけ
Silverlight 4 で dynamic 使うときは Microsoft.CSharp.dll を参照しないといけないのか。


2009年12月9日水曜日

[Silverlight] WriteableBitmapEx が CodePlex で公開

http://writeablebitmapex.codeplex.com/
WriteableBitmap に便利なメソッドを追加する WriteableBitmapEx が CodePlex にて公開されています。

Silverlight 3 では WriteableBitmap クラスを使ってイメージを描くことができるようになりました。
こいつには、UIElement を Render するという方法と、イメージのバイト配列にアクセスして各ピクセルの色をいじるという方法で絵を描けます。
けど、あるのはそれだけなので、線分ひとつ描くのにも、System.Windows.Shapes.Line を生成してそいつを Render するか、自分で DDA とかを使った DrawLine のようなメソッドを用意するかしないといけないんですよね。

というわけで、DrawLine などを一通り用意したのがこの WriteableBitmapEx です。
今のところ用意されているのは、

  • Clear
  • SetPixel
  • DrawLine
  • DrawPolyline
  • DrawTriangle
  • DrawQuad
  • DrawRectangle
  • DrawEllipse
  • DrawEllipseCentered
  • Blit
  • ToByteArray
  • FromByteArray

と言ったところです。
すべて拡張メソッドとして実装されてますのでかなり自然な感じで使うことができます。
ソースを見ればすぐにわかりますが、「内部で UIElement を作って、、、」 なんていう方法ではもちろん無く、DDA などのアルゴリズムを使ってピクセル単位で描画しています。
トップページ の “Performance!” のところに 「WriteableBitmapEx のメソッドは Silverlight の Shape よりずっと速い。たとえば、WriteableBitmapEx の DrawLine は System.Windows.Shapes.Line 要素を使うより 20~30倍速い。だから、もし多数の図形を描く必要があり、アンチエイリアスや Silverlight シェープのプロパティなどが必要ないのであれば WriteableBitmapEx のメソッドを使うのがいいだろう」 といったことが書いてあります。

なお、Downloads のところにあるのはバイナリだけでした。
Source Code の方からソースをダウンロードすればサンプルなども含まれています。
ドキュメントが見当たりませんが、まぁ、ソースを見ればすぐにわかるでしょう。


2009年12月7日月曜日

[Silverlight][.NET] Silverlight 4 と .NET Framework 4 の互換性

PDC の Scott Guthrie 氏のキーノートスピーチでも 「Silverlight 4 と .NET Framework 4 のアセンブリには互換性がある」 と言ったことがちらっと触れられてましたが、それの詳細が CLR Team Blog にありました。

Sharing Silverlight Assemblies with .NET Apps
Silverlight 4 用にコンパイルしたアセンブリと .NET Framework 4 用にコンパイルしたアセンブリには互換性があるようになっているそうです。
ただ、そうは言っても、たとえば .NET Framework 4 にしかないクラスを呼び出しているアセンブリを Silverlight 4 で動かすことは当然ながらできません。(もちろんその反対も)
この点については、Silverlight 4 の

  • Mscorlib
  • System
  • System.Core
  • System.ComponentModel.Composition
  • Microsoft.VisualBasic

のクラスを使っている限りは .NET Framework 4 でも問題なく動くようです。
.NET Framework 4 の方が機能が多いため、.NET Framework 4 のこれらのアセンブリのみを使用しているアセンブリが Silverlight 4 で動かせるとは限らないようですので注意。
なので、Silverlight 4 と .NET Framework 4 の両方で使えるようにしたい場合は Silverlight 4 のプロジェクトとして作った方がいいようです。

これと関連して、
Silverlight 3 & 4 Library Sharing with .NET 4.0 Library or WPF
これを見ると、どうやら Silverlight 4、.NET Framework 4 からは Silverlight 3 のアセンブリも参照できるみたい。

ただ、
On Silverlight 4 Beta / Silverlight 3 backward compatibility
によると、

  • Silverlight 4 ランタイム上で Silverlight 3 アプリが動くときは Quirks Mode になって Silverlight 3 互換になる。
  • Silverlight 4 アプリの中に Silverlight 3 アセンブリが含まれている場合は Quirks Mode にはならない。

ということになるそうです。(まぁ、そりゃ当然という感じですが)


2009年12月3日木曜日

[日本語入力] 思いどおりの日本語入力 - Google 日本語入力

思いどおりの日本語入力 - Google 日本語入力
なんかすごい。
開発メンバーがハンパ無さそう。

というわけでさっそく入れてみた。
64bit はまだ未対応ということなので Virtual PC 上の XP 32bit へ。
いろいろおもしろいし、常用したいと思うくらいな感じ。

と思ったら大きな問題あり。
私はかな入力なんですが、「っ」 を入力しようと Shift+「つ」 を押すと 「Z」 になってしまい、しかも、それ以降は勝手に半角英数になってしまう。
他にも 「ぃ」 も同様。(「ぁ」 は入力できるのでかな入力時の 『Shift+英字キー』 がおかしいのか?)
あと、「-」 が Shift キーを押しながらじゃないと入れられない。なんで?

後者の方はまだしも、前者の方は 「これじゃあ、まったく使えない」 というレベル。
これって Virtual PC 上だからとかあるのかな?
ちょっとでもかな入力で試してみればすぐわかりそうなもんだし。うーむ。

追記
上記の現象は 「メモ帳」(notepad.exe) で発生しました。
けど、IE のテキストボックスやワードパッドでは正常に 「っ」 が入力できるようです。「-」 も Shift キーを押さなくても入力できます。
いくつかのアプリで試してみたら、どうも正常に入力できるものとできないものとマチマチです。

で、その後、Virtual PC を再起動したりとかいろいろしてたら再現しなくなりました。(いつも正常に入力できる)
何かしらの条件によって発生するのかもしれませんが、とりあえずかな入力でも大丈夫そうです。
(あとは 64bit 対応版さえ出てくれれば)


2009年11月25日水曜日

[XAML][Silverlight] XAML Toolkit と XAML Localization

.NET Framework 4 向けの XAML Toolkit の CTP が公開されています。
http://code.msdn.microsoft.com/XAML/
これは PDC の 「XAML Futures in Microsoft .NET Framework, Microsoft Silverlight and Tools」 というセッションで紹介されたもののようで、XAML FxCop (XAML の静的解析) とか XamlDom (XAML の DOM に簡単アクセスするクラスたち。LINQ 構文も使える) とかが含まれているみたいです。

で、セッションのビデオをちょこっと見てみたんですが、XAML 自体も拡張されるんですね。
http://blogs.msdn.com/llobo/archive/tags/XAML+2009+features/default.aspx
にいろいろありました。
Generic の型引数を指定したり とか、インスタンス生成メソッドを指定したり引数を与えたり とか、おもしろいなぁ。
ただ、どうやら XAML 2009 は .NET Framework 4 向けで、Silverlight 4 では対応しないみたいです。

あと、XAML Localization に 「おおっ」 っときました。(ビデオの 44分くらいから)
まだ 「x:Uid 方式なんてどうかな?」 とどうしようか考えてるような段階みたいですが、これはがんばって欲しい。
ちなみに、Silverlight 3 だと
Silverlight and localizing string data
こんな感じです。Localization のための特別な仕組みがあるわけではなく、文字列リソースの resx を作って、そいつを XAML にリソースとして取り込んで、 Text="{Binding Source={StaticResource LocStrings}, Path=WelcomeMessage}" なんて感じでバインドするという、何とも泥臭い方法です。


2009年11月18日水曜日

[.NET] Reactive Extensions for .NET が DevLabs でリリース

Finally, the long wait is over. Rx is available on DevLabs! より。
Reactive Extensions for .NET が DevLabs にて公開されたそうです。
どうやら今まで Reactive Framework とか呼ばれていたものが Reactive Extensions for .NET となったようです。
リリースノートはこちら → Release Notes (Build 1.0.2052. 11/17/2009, First Release)
DevLabs から

  • .NET Framework 3.5 SP1 版
  • .NET Framework 4 Beta 2 版
  • Silverlight 3 版

がそれぞれダウンロードできます。

Reactive Extensions API in depth: intro
Channel 9 で動画による解説が始まるようですが、今の時点では intro しかないみたいです。

What's different about the 3 versions of Rx? Part 1: Silverlight 3
Channel 9 で .NET 3.5 版、.NET 4 版、Silverlight 3 版の違いを開設する動画が始まるようですが、今の時点では Silverlight 3 版とかないみたいです。
で、この Silverlight 3 版の内容は、「Observable.Start(...).Subscribe(...) は自動的に UI スレッドで動くよ」 といったことみたいです。


2009年11月13日金曜日

[Silverlight] out-of-browser と initParams

なるほどぉ、と思ったのでメモ

Silverlight out-of-browser and initParams より。
HTML 側から Silverlight アプリに初期値を渡したいときに使える initParams ですが、あれは HTML 上に書いてあるものですから out-of-browser にすると無くなっちゃうんですね。(そりゃそうですが)
そこで上記の記事では、Application.Current.IsRunningOutOfBrowser を参照して

  • out-of-browser でないときは、initParams を取得しそれの内容を IsolatedStorage に保存しておく。
  • out-of-browser なときは、IsolatedStorage から initParams を読み込む。

としています。

なるほど、out-of-browser としてインストールするためには一度はブラウザで実行しているはずだからそのときに IsolatedStorage に保存しておけるってわけですね。
ただ、別のインストール手段が出てくるかもしれませんし、IsolatedStorage のファイルが無くなってる可能性も無いとは言えないので、ファイルが無かったときの考慮もちょっとはしておいた方がいいとは思いますが。(記事内のコードではそういった対処は何もしていないので、ファイルが無いと例外が出て死んじゃうと思う)


2009年11月11日水曜日

[Silverlight] Silverlight がインストールされていないときに出る画像

Silverlight がインストールされていない環境で Silverlight を使ったページを見ると、

InstallSilverlight_108181.png

こんな画像が表示されます。
これは 「方法: HTML を使用して Web ページに Silverlight を追加する」 や 「方法 : JavaScript を使用して Web ページに Silverlight を追加する」 にあるように <img src=”http://go.microsoft.com/fwlink/?LinkId=108181” .../>  としたときに表示される画像です。
ちなみに、ブラウザの言語 (たぶん HTTP ヘッダの Accept-Language あたり) によって適した言語の画像が返ってくるようになってます。

たまたま見かけたんですが、

ExperienceSilverlight_161376.png

こんな画像を使ってる人もいました。
HTML を見てみると <img src=”http://go.microsoft.com/fwlink/?LinkId=161376” .../> とするとこの画像になるようです。(もちろん、こちらもブラウザの言語によって使われる言語が変わります)

これって他にもあるのかなぁ?


2009年11月9日月曜日

[Microsoft] Productivity Future Vision - Microsoft が思い描くちょっと未来のコンピューター

2009/11/05 に開催された Microsoft Developer Forum 2009 の Live Smooth Streaming による中継を見ていたときに、合間に流れていたビデオがいい感じだったのでどっかにないのかなぁと思っていたんですが、
http://www.officelabs.com/projects/productivityfuturevision/Pages/default.aspx
こちらにありました。
Silverlight のビューアーで見ることもできますし、WMV もあります。

というか、このビデオのタイトルが 「Productivity Future Vision」 だとわかれば、検索するとブログ記事だとか、YouTube だとか、Microsoft Showcase だとか、いろいろと見つかりますね。
つか、ReMIX とか TechED でも流れてたみたいなので結構前からあるのか。
私はそれらに参加してないので今回が初見でした。


[.NET] IDataObject を使ってドラッグ&ドロップとコピー&ペーストを実装

Creating something from nothing [Developer-friendly virtual file implementation for .NET!] より。
ネイティブコードでは IDataObject やら IDropSource やらといった COM インターフェースを使ってドラッグ&ドロップやコピー&ペーストを実装します。
WPF では System.Windows.DataObject が用意されていますが、これは存在するファイルしか扱えなかったり、DoDragDrop() メソッドが同期的だったりとネイティブコードでできることの一部の機能しか提供されていません。
この DataObject クラスは sealed なので拡張もできそうにありません。
System.Windows.IDataObject インターフェースは上記の DataObject クラスと同じメソッドしかないのでこれを使ってもどうにもなりそうにありません。

というわけで、System.Runtime.InteropServices.ComTypes.IDataObject インターフェースを実装するクラスを作ってフル機能のドラッグ&ドロップとコピー&ペーストを実装しよう、というのが上記の記事です。
こちらの IDataObject インターフェースは、まんま COM の IDataObject インターフェースです。(ネームスペースでわかるでしょうが)
こいつを実装しようとすると、FORMATETC だとか何だとかと 「ドラッグ&ドロップ程度のことが何でこんなにややこしいんだよ」 と思うくらい面倒だったりします。
記事中にあるリンクからサンプルプログラムをダウンロードできますが、ちょっと見てみたところ、IDataObject とそれに必要なものをだいたい一式実装しているようです。
もちろん、一つのクラスでドラッグ&ドロップとコピー&ペーストの両方に対応できるようになっています。(まぁ、もともとどちらも IDataObject を使うんですが)
Action<Stream> を渡しておいてドロップ時にファイルを生成したりといったこともできるようになっています。

ちなみに、サンプルプログラムは、左クリックでドラッグ&ドロップ、右クリックでクリップボードへのコピーになっています。

あと、
Creating something from nothing, asynchronously [Developer-friendly virtual file implementation for .NET improved!]
こちらの記事で、コンストラクタに Action を渡しておくとドラッグ&ドロップの開始時と終了時にその Action を呼び出してくれるという機能が追加されています。


2009年11月5日木曜日

[.NET] ASP Classic Compiler - VBScript を IL にコンパイルして実行するソースコード

中身はまだ見てないんですが、ちょっとおもしろそうだったので覚え書き。

http://www.codeplex.com/aspclassiccompiler

ASP (ASP.NET ではなく古いほうの ASP) で使われている VBScript を IL へとコンパイルして実行するソースコードだそうです。
VBScript のパーサは手作りで、IL の生成は Dynamic Language Runtime を使っているとあります。
ゴールには、実際に存在する主要な ASP ページを変更無しで ASP.NET 下で実行可能にする、とあるので単なるサンプルコードと言うよりはそれなりに本気なようです。
Silverlight でこのコンパイラを使うサンプルコードも含まれているそうです。

と、これを見ていてふと思い出したんですが、DLR には VBx という動的言語版 VisualBasic が乗っかるとかっていう話があったと思うんですが、あれってどうなったんでしょ?


2009年11月2日月曜日

[Microsoft] いろいろなチュートリアル動画(英語)

ちょっと覚え書き。

http://www.msdev.com/
microsoft.com ドメインじゃないけど Microsoft のサイトみたい。
”Search” でカテゴリを選ぶといろいろ見れる。
動画のものもあればドキュメントのものもある。

http://expression.microsoft.com/en-us/cc184875.aspx
Expression のチュートリアル動画など。