サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
中東情勢
y-maeyama.hatenablog.com
前回、アセンブリにファイルを埋め込む方法を紹介しました。今回は、アセンブリではなくXAPファイル内にファイルを含める方法を紹介します。 Silverlightアセンブリにファイルを埋め込み、それにアクセスする サンプルコードのダウンロード 今回の記事用のサンプルコードを下記からダウンロードすることができます。参考にしてください。 SilverlightのXAPにファイルを含め、そのファイルにアクセスする in C# for Visual Studio 2010 XAPにファイルを含める XAPにファイルを含めるたには、ファイルのビルドアクションを「コンテンツ」に指定します。XAPにファイルを含めるときの注意する点は、「Mainプロジェクトに配置されているファイルのみXAPに配置することができる」ということです。下の例では、Library1のImage/Desert.jpgファイルのビルドア
WCFなどのエンドポイントの設定はServiceReferences.ClientConfigファイルで行います。しかし、ServiceReferences.ClientConfigファイルは、XAP内に含める必要があります。このため、気軽にデプロイ環境に合わせてWebサービスの設定を変更することができません。 この問題を解決するために、Webサービスの設定をXMLファイルに記述し、このXMLファイルをXAPの外における機能を実装します。 アジェンダ 機能の概要とクラス構成 XMLファイルで設定する項目 XMLファイルの仕様 ServiceInfoクラス ServiceConfigクラス ServiceClientParserクラス 明日以降に続く 機能の概要とクラス構成 Webサービス設定の外出し機能はSilverlightアプリ起動時に下記のような流れで動作します。 XMLファイルをダ
サービス→クライアントへの応答をgzipで圧縮するのためには、Apacheはmod_deflateを使えばよいようです。 第4回 mod_deflateによるコンテンツの圧縮転送 mod_deflate - Apache HTTP Server Version 2.2 POSTで取得したJSONなどもgzip圧縮してくれるため、サーバのCPUに余裕がある場合積極的に使いたいですね。
CSSでスプライト画像(複数の画像を一つの画像ファイルにまとめた画像。HTTPリクエストを減らすのに役立つ)の設定をしていた時、ChromeとかIE9では画像が表示されるのにIE8では表示されないことがありました。なぜだろうと調べてみたところ、 .button-content { /* 正常に画像が表示される */ background: url(../img/sprite.png) no-repeat -35px 0; } と、書けば大丈夫だけど、 .button-content { /* no-repeatの前に半角スペースがないと、IE8で画像が表示されない。 */ background: url(../img/sprite.png)no-repeat -35px 0; } と、書くとダメなようです。 こういう微妙なバグ?は厄介ですね、ということでメモ。
Closure Linterのチェックを通るようなコードを維持しているとJavaScriptコードの品質を上げることができます。JSDocの記述について厳しくチェックしてくれるのでClosure Compilerとの相性もばっちりです。 しかし、Closure Linterはなぜかコードの一行が最大80文字になるルールを解除することができません。ネームスペース+クラス名+prototype+メソッド名で80文字超えちゃうこともよくあるため途方に暮れることがよくあります。何で80文字という制限をClosure Linterの中にハードコーディングしちゃったんですかね…。 下記の記事によると80文字ルールを無視するようなClosure Linterのラッパーを作れば良いらしいです。 Disable Specific Error Messages in the Closure Linter (g
Silverlightを触り始めて結構立つのですが、いまだにMVVMって何??状態な私です。どうにもしっくりこないのですよね。というわけで、勉強のために簡単なSilverlight4アプリをポトペタで作り、それを徐々にMVVMらしくしていくことに挑戦してみました。 やたら長くなりましたが表記するコードをどう削れば良いかわからなかったことが原因なので、さらっと読めると思います。 目次 アプリの機能 とりあえず動くようにする(Viewのみで実装) ビジネスロジックの分離(Modelを導入) バリデートエラー時にコントロールを赤くする(ViewModelを導入) インスタンス参照の見直し(V → VM → Mに) Xaml.csのコードをVMへ移行(コマンドを導入) ダイアログ表示処理をVへ戻す(VM → Vの操作) まとめ 1. アプリの機能 こんな感じのSilverlight4アプリを作って
CRのみ(Macintosh)のJSファイルでChromeのデバッガを使おうとしたら、ブレイクポイントで止まらない現象が起きた。 CR+LF(Windows)またはLFのみ(UNIX)に変更したらデバッガでブレイクポイントの箇所で止めることができるようになった。 なんだこの動作は?Windowsだからだめだったのかな?
手なりでコーディングしているとコードのスタイルがハチャメチャになりがちです。規約に従って書こうと思っても規約に従ってかけてるかを判断するのは意外と難しいものです。そんならツールを使ってチェックすれば抜けもなくて良いじゃん?ということでMS謹製のC#静的解析ツールStyleCopを使ってみることにします。 StyleCop StyleCopのチェック内容が意味不明とか思ったら以下のサイトが参考になります。 StyleCop Rules Documentation ちなみに、もっとC#らしいコーディングスタイルを知りたいと思う方は以下の記事が参考になると思います。 neue cc - Modern C# Programming Style Guide StyleCopのインストールと設定 以下のページからStyleCopをダウンロードしてインストールします。 StyleCop VisualSt
CSSのベンダープリフィックス書くのがだるいとかセレクターの親子関係が分かりにくいとかといった悩みを解決してくれるらしいSass(さす)を使ってみようかと思いたちました。 WindowsでSassを入れる順番は、 Rubyのインストール Ruby上でgem installを実行してSassをインストール で終わりらしいです。 Rubyのインストール てなわけで、最初はRubyをダウンロードしてきます。 http://rubyinstaller.org/ 私は1.9.3をインストールしました。Rubyの資産がなければ1.9系で問題ないようです。ファイルはこれを使いました。 http://cdn.rubyinstaller.org/archives/1.9.3-p327/rubyinstaller-1.9.3-p327.exe Rubyのインストーラでは以下のチェック以外はデフォルトで大丈夫で
SiverlightのDataGridハローワールドをやってみます。 アジェンダ System.Windows.Controls.Data.dllを追加する。 DataGrid用のxmlns属性を追加する。 データグリッドをXAMLに定義する。 データグリッドにセットするデータクラスを定義する。 データグリッドのItemsSourceを初期化する。 データグリッドに行を追加する。 データグリッドの行を削除する。 全ソースコード まとめ System.Windows.Controls.Data.dllを追加する。 VisualStudioでSilverlightアプリケーションを作成した場合、初期状態ではデータグリッドを含むアセンブリが参照されていません。そのため、最初に「参照の追加」を行います。 MSDNを調べてみますと、DataGridはSystem.Windows.Controls.D
SilverlightのDataGridでチェックボックスのセルを表現したい場合は、通常DataGridCheckBoxColumn使用します。しかし、DataGridCheckBoxColumnは微妙に使い勝手良くありません。そこで、DataGridCheckBoxColumnを使わない方法を紹介します。 アジェンダ DataGridCheckBoxColumnのチェックボックスの挙動 DataGridTemplateColumnでチェックボックスカラムを作成 まとめ DataGridCheckBoxColumnのチェックボックスの挙動 DataGridCheckBoxColumnでチェックボックスカラムを定義するXAMLは下記のようになります。 <sdk:DataGrid x:Name="DgrSample" AutoGenerateColumns="False"> <sdk:Data
昨日Silverlightを囲む会 in東京 #2に参加してきました。豪華なスピーカ陣がそろったいとても楽しく、かつためになる話しをいっぱい聞けました。 http://silverlightsquare.com/index.php/tokyo02.html IIJさまの提供で今でもセッションの様子を見ることができます。高画質なSilverlightスムースストリーミングが下記のアドレスで公開されています。 http://live.streamingmedia.jp/slintky02/ 以下、セッションのメモ 「Silverliht SmoothStreamingにIIJが取り組む理由」IIJ岡庭さん Webで一般的なFlashを使った動画配信は独自プロトコルを使っている。 SmoothStreamingはHttpベースで配信できるのが良いところ。 「改めて勉強しよう、Silverligh
Silverlight版FlexGridリリース - y_maeyamaの日記 FlexGrid for Silverlightをインストール - y_maeyamaの日記 AutoGenerateColumnsを使用してFlexGrid for Silverlightにデータを表示する - y_maeyamaの日記 FlexGrid for Silverlightにアンバウンドモードでデータの設定とセルの書式設定・マージを試す - y_maeyamaの日記 FlexGrid for Silverlightのカラムヘッダーを複数行にしてみる。 - y_maeyamaの日記
デバッグ中や通信内容のエビデンスを残す必要があるときなどに、Silverlightとサーバ間の通信内容を確認したいときがあります。そのようなとき、FiddlerというMS製ツールを使うと便利です。 アジェンダ Fiddlerとは Fiddlerのインストール Fiddlerの制約 Fiddlerの動作確認 Fiddlerとは Fiddlerは、ブラウザのプロキシとして動作し、ブラウザが行っている通信内容を表示できるツールです。Fiddlerを起動すると自動でIEのプロキシ設定が書き換わります。 インターネットオプション -> 接続タブ -> LANの設定ボタンを押すと表示されるローカル エリア ネットワーク(LAN)の設定ダイアログで設定内容を確認できます。 Fiddlerを立ち上げていないとき Fiddlerを立ち上げているとき Fiddlerのインストール Download Fiddl
プログラミング用フォント Rictyというものができたらしい。 プログラミング用フォント Ricty Consolasにも飽きてきたので使ってみたところ… なんか残念な感じに。 上記のサイトによると既知の問題として Windows ではアンチエイリアスがキレイにかからず、特にフォントサイズが小さいときに文字が部分的に欠けます。 とあります。解決策としては「gdippとか使え」とあるので従ってみました。 ちなみに以下のサイトによるとgdippは 【レビュー】インストールするだけであらゆるソフトのテキストを美しく滑らかに描画「gdipp」 - 窓の杜 Windowsのグラフィック描画を担当するコンポーネント“gdi.dll”の一部機能を乗っ取って自前でアンチエイリアス処理を施すことにより、テキスト描画の品質を改善する アプリのようです。何それ怖い、システム乗っ取ってバグったら大変じゃない、とか
SilverlightアプリケーションとWCFサービス間を、Binary形式のデータで通信をするための設定について書きます。 アジェンダ サーバのWeb.configの設定 クライアントのServiceReferences.ClientConfigの設定 Binary形式で通信を行っているか確認する サーバのWeb.configの設定 WCFサービスのEndopointをBinaryBindingに設定し直します。なお、Silverlight用のBinaryBindingは、CustomBinding クラスにMessageEncodingBindingElement クラスを設定することにより実現します。 CustomBinding クラス (System.ServiceModel.Channels) MessageEncodingBindingElement クラス (System.S
デバッグ中に変数の中身を知りたいが、ブレイクポイントで実行をとめたくないときは、System.Diagnostics.DebugクラスのWriteLineメソッドを使用します。 Debug.WriteLine("出力ウィンドウに表示される文字列"); 上記のラインが実行されるとVisualStudioの出力ウィドウに文字が表示されます。 もし出力ウィンドウが表示されていない場合は、メニューの表示 -> 出力を選択すれば、表示されます。
SilverlightアセンブリにイメージファイルやCSVファイル、フォントファイルなどを埋め込む方法と、埋め込んだファイルにアクセスする方法をご紹介します。 サンプルコードのダウンロード 今回の記事用のサンプルコードを下記からダウンロードすることができます。参考にしてください。 Silverlightアセンブリにファイルを埋め込み、それにアクセスするサンプル in C# for Visual Studio 2010 ファイルをアセンブリに埋め込む ファイルをアセンブリに埋め込む手順は下記の通りです。 ファイルをプロジェクトに追加する。 プロパティウィンドウでビルドアクションを「Resource」に指定する。 ファイルをプロジェクトに追加します。 ファイルのコンテキストメニューからプロパティを選択し、プロパティウィンドウを表示します。 プロパティウィンドウでビルドアクションを「Resour
MSDNフォーラムで行ったやり取りが元ネタです。 DataGridのRowの高さを自動リサイズさせたい この質問では最終的に以下の点が問題になっていることが分かりました。 DataGridのSizeChangedイベントのタイミングで、DataGridの行の再描画を行いたい。 しかし、SizeChangedイベントのたびに再描画を行うのはパフォーマンス上よろしくない。 で、解決策は 一定時間の間にSizeChangedイベントが発生しなかったら、最後に発生したSizeChangedイベントに基づいてDataGridの行の再描画を行う。 となりました。 フォーラムの質問者は業務でSilverlightを使っていたようなのでReactive Extensionsを提案することは避けましたが、これってまんまRxのThrottleの動作なんですよね。 というわけで、Throttleを使って、書き直
WCFサービスをVisualStudioのサーバプロジェクト上で実行することができるようになりました。このWCFサービスをローカルのIISにデプロイしてみます。 開発環境 Windows 7 VisualStudio 2010 Silverlight 4 Tools for VS 2010 日本語版 Expression Blend 4 IE8 手順 IISのインストール 管理者としてVisualStuidoを実行 WCFサービスの発行 デプロイの確認 IISのインストール コントロール パネル -> プログラム -> プログラムと機能 -> Windowsの機能の有効化または無効化を選択し、Windowsの機能ダイアログを表示します。 以下の機能をインストールします。 Microsoft .NET Framework 3.5.1 インターネットインフォメーションサービス World Wi
今回は、SketchFlowでUIプロトタイプの作成手順を紹介します。UIプロタイプはログイン画面でログインすると業務画面に遷移するというお約束なものを作ります。 アジェンダ SketchFlow用プロジェクトの作成 Blendの画面説明 Blendのパネルのレイアウトをカスタマイズ 画面の定義 画面の追加 画面遷移の定義 UIプロトタイプの実行 まとめ SketchFlow用プロジェクトの作成 最初にSketchFlow用プロジェクトを作成します。プロジェクトは「新しいプロジェクト」の「SketchFlow Application」を選択します。 「新しいプロジェクト」は、メニューの「ファイル」>「新しいプロジェクト」で表示できます。 Blendの画面説明 SketchFlow用プロジェクトを開くとBlendは下記のようになっています。 エリア名 説明 ショートカットエリア よく使う機能
MCPにSilverlightが出たのですね。 MCP 試験 70-506: TS: Silverlight 4, Development ざっと範囲を見る限り、何とかなりそうな気もしないでもないです。…が、MCPってどんな形式なテストなのか知りませんが、VisualStudioで書けるのとテストで答えられるのは別何でしょうね。普段使わない機能はさっぱりわからないでしょうし。 というわけで、対策ページらしきものを発見。しかし、数が多いので後で読むリスト行き。 Exam Preparation–Silverlight 4, Development–70-506–Part 1 - Silverlight, WP7, .NET, C#, ASP.NET MVC Exam Preparation–Silverlight 4, Development–70-506–Part 2 - Silverli
SilverlightアプリケーションでWebサービスコール中にエラーが起きた場合、AsyncCompletedEventArgsのErrorプロパティにExceptionがセットされます。Errorの内容によって応じた適切な処理を行う必要があります。 アジェンダ エラー時のResultプロパティの挙動 ErrorプロパティにセットされるExceptionの種類 Errorプロパティの処理 エラー時のResultプロパティの挙動 Errorプロパティに値がセットされている時に、Resultプロパティにアクセスすると、例外が発生します。 そのため、Errorプロパティに値がセットされているときは処理を分岐させることが必須です。 ErrorプロパティにセットされるExceptionの種類 Errorプロパティには、だいたい下記のようなExceptionがセットされるはずです。 Exceptio
Silverlightのサービスコールは非同期のみサポートとなっています。そのため、Silverlightアプリでサービスコールを記述するのはちょっと大変です。 そこで、Reactive Extensionsを使用して、非同期通信処理を連続して書けるか試してみます。 アジェンダ Reactive Extensionsとは Reactive Extensionsのインストール プロジェクトの作成 テスト用サービスの作成 サービスコールを1つ呼ぶ サービスコールを複数連続で呼ぶ 課題 まとめ Reactive Extensionsとは Reactive Extensionsを説明するのは、正直私の手にはあまりまくりな代物です。下記のサイトなどが参考になると思います。 Reactive Extensions入門「まとめ」 - かずきのBlog@hatena Reactive Extensions
昨日、Reactive Extensionsでサービス非同期コールのメソッドチェーンに挑戦してみました。 Reactive Extensionsを使用して複数のサービス非同期コールを連続して呼べるか試してみた。 - y_maeyamaの日記 しかし、多数の課題が残ってしまいました。そこで、いくつかの課題をつぶしてみました。 アジェンダ チェーンの始動ポイントを最初に持ってくる。 前に呼んだサービスの引数にアクセスする。 サービスコール時に発生したエラー処理を行う。 サービスコール時に発生したエラー処理を行う拡張メソッドを定義する。 改良版非同期サービスコールのメソッドチェーン 残課題 まとめ チェーンの始動ポイントを最初に持ってくる。 前回では、最初のサービスコールをメソッドチェーンの外で、かつメソッドチェーンの後ろに記述していました。 getACompleted.SelectMany((
VisualStudioでxamlファイルを開くと通常は下記のようになります。 実行結果を確認しながらXAMLを編集できるので非常に便利です。しかし、VisualStudioがXAML内容を解析して実行する関係上、コントロールの数が増えてくると、表示に時間がかかるようになってしまいます。ちょっとXAMLの内容を確認したいだけのときなどでもXAMLの編集可能になるまでの時間がかかるので、イライライします。 よって、私はxamlファイルを開いたときは、XAMLのテキスト部分だけを表示する設定にしています。 方法は簡単で、ファイルメニューのツール -> オプションでオプションダイアログを開きます。オプションダイアログのテキストエディター -> XAML -> その他を選択して、「常にフルXAMLビューでドキュメントを開く」をチェックします。 これで、xamlファイルを開くと、XAMLビューのみが
このページを最初にブックマークしてみませんか?
『y-maeyama.hatenablog.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く