今日の気づき。
このフォーラムにもありますが、Silverlightで private / protected のメンバーにリフレクションでアクセスしようとすると、MethodAccessExceptionで弾かれちゃいます。
他のプラットフォームのように使えないのは残念ですがセキュリティ上の制限なんで仕方ないですね。
MSDN Security Considerations for Reflection
#ていうか更新久々過ぎ
.NET系の話題、ラーメン、ヤクルト、etc...
今日の気づき。
このフォーラムにもありますが、Silverlightで private / protected のメンバーにリフレクションでアクセスしようとすると、MethodAccessExceptionで弾かれちゃいます。
他のプラットフォームのように使えないのは残念ですがセキュリティ上の制限なんで仕方ないですね。
MSDN Security Considerations for Reflection
#ていうか更新久々過ぎ
CS出場がかかる3着争いの天王山、「一線必勝」、平日神宮3連戦。
ここんとこ、にわか燕ファンとしてチャンスがあればせっせと球場通いをしています。せっかくオフィスが近くなんで。
んでこの3戦も傘片手に応援してきました。
結果1勝2敗と痛恨の負け越しでしたが、ヨシノリ君の悪い癖がでた2戦目以外は、緊張感のある良い試合が多かったんじゃないでしょうか。でも悪いときの特徴である決定力のなさと、ケガ人続出なのは痛いところ。
しかしまあ、なんつーか阪神戦だと神宮は完全にアウェーの雰囲気ですね。
レフトスタンドは毎日こんな大賑わい。ちょうどブラゼル2ラン後で大盛り上がり。
対してライトはというと、空席もまばら。
今年のヤクルトスワローズ、結束力と投手力で乗り切ってくけなげな良いチームだと思うんですが、こう見ると人気ないですね。。まーそんなところにさらなる愛着を感じるんですが。
幸い残り試合数は多いので、まだまだチャンスはあるでしょう。また応援いくよー
ちなみにその前の横浜戦はというと、スタンドはこの惨状・・・泣
ちょいはまったので備忘録。
Windows7でADO.NET DataService v1.5 CTP1/2を使用時、DataSvcUtilを手動で叩こうとすると、上のようなエラー7001が出てうまく動いてくれないことがあります。
これ、ADO.NET DataServiceのインストール時にSystem.Data.Service.Design.dllが正しく読めてないときに起こるようで、そういえばインストール時にエラーが出ていたような気が。
で、下のサイトにある解決策のとおり、dllのセキュリティ設定を変更して再度インストーラ起動>Repairとすることで解決しました。
解決策
ネタ元スレ
DataServiceUtilはv1.5以降のバインディングやINotifyPropertyChanged実装を利用するときは必要になります。Windows7固有の現象みたいなので、該当する場合は気をつけてください。
RTWでましたね。
Microsoftのサイトからダウンロード(Silverlight3 RTW 3.0.40624.0)になってます。
開発に必要なSDKやToolsはいまのところ英語版のみダウンロード可能になってます。 →ダウンロードリンク
それでも一応、日本語版VS2008の環境に入れてみましたが、まだデバッグまわりがちゃんと動かなかったです。そのへんは日本語版まちでしょうか。
RTWと同じタイミングでSilverlight ToolKitの最新版(2009 July Ver)もCodePlexに出ています。
注意点としては多くのコントロールが整理されてアセンブリが変わってます。Silverlight3betaで作っていたプロジェクトについては各XAMLのXMLNS属性を変更してあげる必要があります。 →変更点リスト
今日はこれで結構はまりました。
もともとVista のノートをパーティション削ってWindows 7 RC を入れて使っていたのを、すっかりWindows7しか使ってないのと空き容量が1GBを切ったのを期に、再度Vista側からのディスクの切り崩しにトライ。
GPartedでパーティションを調整して、再起動して、ブートローダーが壊れるのでWin7のCDからスタートアップの修復を行う、と。ここまでは想定内。
でもその後ログインまではいくものの、いつまで待ってもデスクトップが表示されない状態に遭遇。。。
症状的にプロファイルが読めない系のトラブルかと思い、セーフモードのコマンドプロンプトから新しくユーザーを追加してみてもだめ。
んーなんだろうとひとしきり悩んで試行錯誤を繰り返し、そろそろあきらめて再インストールをしようかという時に原因が思いつきました。。
Win7インストール時にわざわざインストール先のドライブレターを「S」に変更していたんですよね。。。セブンなんで。
たぶんGPartedで切り直した後の再起動時に、以前のSドライブのオフセットでパーティションが読めないため、Dドライブの設定が自動的に作成されて適用されていたようです。
結果的にはこれがビンゴで、レジストリを書き換えることで解決。
再起動してログインして、ディスクが変わったのでWindowsの再認証の手続きが終わるとちゃんともとのデスクトップが表示されましたとさ・・・ 冷や汗かきました。
いちお解決の手順を書いておきます。
http://silverlight.net/forums/t/101160.aspx
MSフォーラムに投稿されてたのでメモ。
気にしていたADO.NET DataServicesのサポートはPDC2009 beta バージョンから、ということは今年の暮れでしょうか。
でも July 2009 CTP でもいろいろな機能強化や、Data Services とのインテグレーションを見越したライブラリ整備が行われるとのことでこちらを楽しみに。
RTWはまだもう少し先(来年初頭でVS2010& .NET4.0準拠)のようですが。
英語版の公開がはじまりましたね。とりあえず入れてみました。
スタートアップ画面
新規プロジェクトテンプレート
Silverlightのデザイナー。プレビューだけではなくデザイン機能が付きました。プロパティシートもかなり進化。
Silverlightプロジェクトプロパティ。Silverlightのバージョンも選択可能になってる。
ここまでの作業で1回VS2010がお亡くなりになりましたが(笑)、それをのぞけばそこそこ動く感じです。
ADO.NET Team blogが続々と更新されてるので要チェック。
Entity Framework(EF)4.0では、よりPOCOなエンティティモデル(=余計なインターフェースや親クラスをもたない、よりPlain Old なObject)や、モデルファースト(作ったモデルをもとにDBスキーマを生成)なんかが可能になるとのこと。それじゃEntityの代わりに変更追跡を担当するのは誰?みたいな話もこれからでてくるようです。
N-Tierでの利用などのアーキテクチャ見地のことについてもすこし言及があります。このへんになるとSilverlightではとくに.NET RIA Servicesとのカラミもあると思います。いまのところ.NET RIA ServicesはEFまたはLINQtoSQLをもとに独自のサービス/プロキシをつくりますが、5月のMSDNマガジンのRIA Servicesの記事にもいずれは両者が連携するとの記述があります。
(Building A Data-Driven Expense App with Silverlight3より一部引用)
In future releases, .NET RIA Services will also work with ADO.NET Data Services.
なのでADO.NET DataServicesをベースとしてその上にRIA Servicesの機能性を展開するようなアーキテクチャガイドラインになるといいですね。Silverlight3が多くの開発者を取り込んでブレイクするためにはこのような「速成フレームワーク」の存在は欠かせない部分だと思います。
Win7RCが出てからというもの、空いてる端末やVMに手当たり次第インストールしている感じですが、この軽さなら行けるかな?と工人舎のUMPC、SC3にもインストールしてみました。
XPプリインストールバージョンだったので、せっかくのタブレット機能がOSレベルでサポートされていなくてちょっと寂しかったんですよね。
結論から言うと、全然軽くていい感じ。(ケータイ撮影なんで画質わるいですが)
ちゃんと手書き入力やペンフリックなんかも機能してます。
Win7のインストールイメージをネットワークマウントして空いてるパーティションにインストールするだけで普通にDualBootできました。
その後Vista用ドライバーを工人舎のサポートページから入手して、次々に入れていく感じ。
注意点としては、Vista用のタッチスクリーンドライバーを入れないとコントロールパネルの「ペンとタブレット」が使えないなど、OSレベルでタブレットを認識してくれません。
このドライバーがなぜか工人舎のJPサイトには見あたらないのですが、UKのサイトでゲットできました。
しかしSC3、値段の割にかなり楽しめる端末です。筆圧検知のないタブレットなので手書き入力はそれなりですが、タッチデバイスとして十分使えるモバイルPCだと思いますよー
#もちろん、Silverlightアプリもちゃんと使えてます。
ダウンロードしたけど試せていなかったv1.5CTP1のrow count機能を触ってみました。
以前のバージョンではそもそもCountが未実装だったので、たとえば「キー値を渡した存在チェック」みたいな一般的な処理を行う際にも回りくどいことをする必要がありました。
んで今回のこの機能追加ですが、2種類の方法で行数取得が可能となっています。 (詳しくはここ)
まず最初のCountですが、これは完全に結果セットの行数を単純にスカラー値として返すクエリ。
たとえば、以下のように返してくれます。
→ 20
→ 6
対してInlineCountはというと、クエリ結果のフォーマット内に結果行数の情報を格納して返す形となります。
例としては、
などと投げると、レスポンスの中に
<m2:count xmlns:m2="4</m2:count">4http://schemas.microsoft.com/ado/2008/11/dataservices/metadata">4</m2:count>
といった感じで m2:count タグが挿入されるのがわかります。
でも、クライアントからコードで取得するときは、
var query =from p in ctx.Productswhere p.CategoryId == categoryIdselect p;int cnt = query.Count();
と単純に書いても動いたので、明示的にInlineCountの指定をしなくてもとりあえず大丈夫なのかもしれません。
(以前はquery.Count()の部分でNotSupportExceptionだったと思います)。
ただし、
var query =from p in ctx.Productswhere p.Id == id //Id は主キーselect p;int cnt = query.Count(); // NotSupportedException!!
のように、主キーで問い合わせを行うパターンではCountでNotSupportedExceptionが出てました。
のような問い合わせ形式には現状対応していないみたいんでしょうか。
とりあえずは以下のように逃げられますがね。まあこれはあくまでワークアラウンドということで。
DataServiceQuery<Product> query =(from p in ctx.Productswhere p.Id == idselect p) as DataServiceQuery<Product>;var ps = query.Execute();int cnt = ps.Count();
と、ここまで書き連ねておいてなんですが、これによるとv1.5の DataServiceContext.IgnoreResourceNotFoundException プロパティを使えば、いちいちRowCountなんぞとらなくても、FirstOrDefaultで存在チェックできそうですね。。。
もっと早く気づけば良かったw 疲れたんでこの検証はまた後日。
Microsoft .NET RIA Services Overview ~ Mix09 Preview
Mix09のタイミングで公開開始されたPDFを一通り読んでみたので、忘れないようにメモ。
なんて感じでかなりパワフルなプロキシを作ってくれるという代物です。
自動生成のプロキシに依存する部分が大きいだけに、ここがスキ・キライが分かれるところかもしれません。
でもBLの共有も含めてひとくくりにレイヤの壁を取っ払いたいときには、現実的で手っ取り早いアーキテクチャではないでしょうか。
規約ベースなところも好感で、小規模・短納期のプロジェクトでは主流になっておかしくないと思います。
また、最後のほうに Silverlight用の DomainDataSource の説明があって、RIA ServicesおよびDataGridと連携して、
などがXAMLで記述できるとのこと。
Validatorによる検証も含めて、DomainドリブンなUIがSilverlight上でもサクッと実現できるのは非常にいい感じです。
あとはADO.NET DataServicesとの棲み分けが気になるところですね。
まだ日本語環境対応版の気配がないんで、仮想環境に英語版VSをインストールして試してみようかと思います。
PRISMがVersion2になって、ガイダンスの対象としてSilverlightが追加されていました。
PRISM2 (download)
infoqの記事
http://www.infoq.com/jp/news/2009/03/PRISM-2-Silverlight
原文
http://www.infoq.com/news/2009/02/PRISM-2-Silverlight
ヘルプを読んでいるところですがWPFとSilverlightとの違いをどう凌ぐかについてもかなり言及してあって面白い。
WPF的なMVVMをSilverlightで実現するのに欠かせないCommandパターンについてもPRISM的なアプローチが説明されてるので、サンプルを含めてちゃんと読んでみようと思います。
ちなみにその他のCommandパターン実装例
nikhilk.net
http://www.nikhilk.net/Silverlight-ViewModel-Pattern.aspx
Code Plex の Silverlight Extensions
今週は北陸金沢まで片道4時間の出張がありました。
こんなときこそ、買いだめしておいた本をちゃんと読めるというものです。
今回は、
Pro ADO.NET Data Services ~ Working with RESTful Data
いまのところADO.NET Data ServicesについてはMSDN以外にほとんど日本語リソースがないので、すごく読みたかったんですよね。実際届いてからたびたびリファレンス的につまみ読みしていたんですが、今回はちゃんと頭から。といっても洋書読みはちょっと気を抜くと内容が頭に残らないので、内容を噛みしめながら3章まで。ここまで読めばひととおり基本が押さえられますね。
私は技術者とはいっても、一般的なプロジェクト開発の現場からは離れてもうすぐ1年になるので、いま現場でどのようにADO.NET Data Servicesが評価されているのかはすごく興味があるんです。予想としてはLINQtoSQLやEFが少しずつ使われ始めたのかな?というイメージなんですが。以前私が絡んだプロジェクト(.NET)では小規模ではこなれたTyped DataSetをシンプルに使ったり、大規模だと手作りのPONO(いまはPOCOとよぶのが主流かな?)ベースフレームワークを構築したりと十人並みに苦労していた気がします。仕事を離れたところではRailsのActiveRecordやdb4oをいじってみたりしてたりね。このADO.NET Data Servicesもとくに低予算の小規模プロジェクトなんかでRails使うイメージでサクッと使えるデータ基盤になれば良いなと思うのですが。とくにSilverlightとの相性の良さ(以前問題も挙げたけど)で今後使われるケースが増えると思うし。今後個人的にはData層の第一候補としていろいろ試してみようと思います。
4章以降はレガシーシステムからの移行や、AJAX・Silverlightからの利用についての言及になってるのでこのへんはさらっと読んでおこうかなと。
MSさんのTechDaysに行ってきました。仕事の都合で2日目のみの参加でしたが。
今回はご時世もあってエコの徹底がテーマみたいで。コーヒーのタンブラー支給やリサイクルの徹底、麻っぽいバッグはとても好感。
毎年TechEdでもらってた一目で業界人とわかるタフなバッグ(まぁデカい荷物運ぶときは重宝しますが)よりはいいんじゃないですかね~。
あとスライドの印刷物が会場でもらえない件はどうなんでしょうね。自分はあまり現場で手元の資料に目を落とさないようにしたいのでさほど気にならなかったですが、有料イベントとしては人によっては不満なのかもと思ったり。
以下、印象に残った点を。
C#4.0
Interop関連がかなり改善された感じ。引数の省略ができるようになって、COM連係なんかが断然書きやすくなったのは大きな前進ですね。むかしこの件で上司を説得しきれずに、VB.NETで泣く泣くプロジェクトはじめたことを思い出しました。
あとはdynamic型ですか。C#もバージョンを重ねるごとに動的言語化していきますね~。いろんなことを手軽に書けるツールになってきて便利な気がしますが、玉石混淆メンバのプロジェクトをしきるマネージャさんにとっては悩みの種が一つ増えた感じも。object, var, dynamic, このへんを新人にちゃんと理解させてから前に進むのって、結構骨が折れる気がしますが(.Net2.0シバリのお触れを出すって後ろ向きな手もあるけど)。
Windows7 / Ribbon
Windows7になってOffice 2007 Ribbon に加えてWindows Scenic Ribbonが使えるようになるとのことですが、当面Win32ベースでってのは従来通りとのこと。当面はパワフルPGにこの部分を任せるか、3rd Partyコンポーネントを活用するって図式はかわらんようです(実はちょっと安心w)。Ribbon専用のマークアップをコンパイルしてリソース化する下りはちょっと意外。UI系はなんでもXAML統合するのかと思ってただけに。
Data Services
ADO.NET DataServiceの近々のアップデートとしてはBLOBのレイジーロードやマイクロフレームワーク対応とのこと。SQL Data Services や、SyncFrameworkベースのオフライン同期(こっちはまだCTP次期も未定とのことですが)あたりも含めて、今後が超楽しみな分野。オフライン同期はどのプロジェクトでも俎上にのってくる話題だし。
そしてWin,WPF,Silverlight,Web,Moblieと、各種プラットフォームを網羅したデモは圧巻のひとこと。とても勉強になりました。
...
結論としては、真冬のパシフィコも新鮮でいいかなと。肝心のAzureがメンテ明けで安定しなかった点は残念でしたが。各所でスピーカーの方々のご苦労が伝わってきました。あとWindows7β早く試さなきゃー(環境そろえなきゃ-)(銭が・・・)
注文してた Silverlight2 Recipes がとどきました。
Silverlight2のレシピ集。この手の本はいまんとこ英語版を注文しないとって感じですが、今年の年末くらいにはたくさん日本語版が出てるといいなぁ。
いま2/3くらい目を通したところですが、インストールやBlendの使い方からコントロールのカスタマイズやサービス連携といった実用的なところまで幅広くカバーしてる印象。
Q/A方式なので情報が探しやすい&わかりやすいのでSilverlight2開発のときは横に置いておくと重宝しそうです。あと、これからSilverlightプロジェクトをはじめるって立場の人にも、一通りSilverlightにおける方法論を確認するためにも有用だと思う。



clr.AddReferenceByPartialName("WindowsFormsApplication1")from WindowsFormsApplication1 import *form = INPUThorse = Horse()horse.Name='ポルトフィーノ'horse.Father='クロフネ'form.Data.Add(horse)grid = form.Controls['dataGridView1']grid.DataSource = form.Datagrid.Refresh()
スタータースクリプトにこんな感じのを追加して、Execute Script(F5)。



