仮面's profile宇宙仮面の C# 研究室.Live SpacePhotosBlogListsMore ![]() | Help |
宇宙仮面の C# 研究室.Live SpaceC#, Windows Mobile, X-Box360などに関連したブログです。 |
||||||
|
November 23 .NET Micro Framework 4.0 FeaturesMicrosoftは、組み込みシステム向けの開発および実行環境である「.NET Micro Framework」の大部分をオープンソース化した。 今回のエンハンスポイントは次にような感じらしい。
Visual Studio 2010 Beta 2Visual Studio 2010 Beta 2 がダウンロードできるようになっていますが、その新機能は・・・ 注意: 当然ながらリリース前なので、リリース時点でどうなるかはわかりません。 全体にで洗練されたデザインになった感じがします。トップページは、作業の開始、ガイダンスとリソース、最新ニュースがタブになり、見やすくなっています。 新しいプロジェクトでは、.NET Framework 4 が標準でサポートされるようになっています。また、F#がサポートされるようになりました。F#は、関数型言語で、ML(Meta Language)の1つ。Beta 2では、プロジェクトに F#ライブラリ、F# アプリケーション、F# チュートリアル、F# Sliverlight ライブラリが用意されています。 また、C#プロジェクトでは、ASP.NET MVC 2 Web Application プロジェクトテンプレートが用意されていてます。 また、Office プロジェクトテンプレートでは、Office 2010 対応のアドインテンプレートが追加されています。いよいよ Office 2010 ですね。 また、新しいプロジェクトテンプレートとして、Enable Windows Azure Tools が追加されており、Azure 対応が可能になるようです。 さらに、SharePoint 関連のプロジェクトテンプレートが追加されていて、C# でパーツなどを開発できるようになるようですね。 Silverlight も同列のプロジェクトテンプレートとして、Silverlight アプリケーション、ナビゲーションアプリケーション、クラスライブラリが用意されています。 インストール関連では、InstallShield Limited Edition のプロジェクトが追加されています。 今回、フローティングウィンドウが、Visual Studio のメイン画面の外に移動することができるようになり、マルチモニターの大画面で広々と使えるようになります。VS2008まではかなり狭かったので、思いっきり広く使えるようになります。 Visual Studio 2010 では、Silverlight のプロジェクトテンプレートが追加され、今までより楽に Silverlight アプリケーションが作れるようになります。コントロールは現時点で次のようなものがあります。 また、コードエディタで、コードを修正すると、左側に修正したところを黄色、緑色などで表示し、どこを編集したいのかわかりやすくなっています。 ちょっとみただけで、かなり大幅な機能エンハンスが行われています。ただ、まだベータ2なので、かなり不安定なところがありますね。このため、Virtual PC上で復元ディスクをイネーブルにして試したほうがいいです。 インストール方法には、従来の DVD からインストールする方法に加えて、今回 Web Installer というものが追加されていて、Web Installer はわずか4.6MBです。この Web Installer を実行すると必要なものをネットからダウンロードしてきて、インストールを行ってくれます。 あと、 これまで Visual Studio Team System と呼ばれていた最上位バージョンは、Visual Studio 2010 Ultimate という名前になっています。 November 22 クローム OShttp://blog.chromium.org/2009/11/hello-open-source-developers-would-you.html の中で、電源ONから、数秒でブラウザが起動するビデオがあった。 現時点では、Linux上で、ビルド&実行ができる。今は Ubuntu 8.04上で開発されている。 November 15 VHD Boot の方法Microsoft Online Servicesここ https://mocp.microsoftonline.com/site/default.aspx で、Live Meeting Standard 5 ライセンスが月額 2350円でオンラインで買える。でも、最低5ライセンスから。 そのほかに、こんなものが使える。
Live Meeting は、会社で電話会議のときに使っているけど、サーバー運用費を考えたら、かなりお得。1ライセンスから売ってほしいなぁ~。 Google の Go 言語最近?アナウンスされたようですね。 いまのところ、コンパイラーは、Linux, Mac OS X のみ。 コンパイラーターゲットは、 実行サンプルはこんな感じ。 $ cat >hello.go <<EOF 言語仕様は http://golang.org/doc/go_spec.html C++に似ている。強い型。並列プログラミング、Garbage Collection をサポートしている。ここまではOK。 その一方で、&, * による address operators を持っていて、c, c++のような、 &x &a[f(2)] *p *pf(x) という表記ができる。この時点でパス。その時代には戻りたくないなぁ~。 November 14 Windows 7 on Virtual PCVisual Studio 2010 Beta 2 を入れようと思って、Virtual PC 上に Windows 7 をインストールしてみた。仕様としては、正式にサポートされていなので、まともに動かなくてもしかたないのだけれど、問題2点あり。 インストールは問題なく終わったのだが、なぜかマウスのクリックが効かない。バーチャルマシーンの追加機能をインストールしても、解決せず。デバイスマネージャ上も特にエラーが出ていないので、原因不明。回避策として、リモートデスクトップで接続すれば、問題なく使える。 もうひとつ問題があり、パフォーマンスが悪い。ホスト側でアンチウィルスソフトの例外として VHD, Virtual PC を除外しても、改善せず。バーチャルマシーンの追加機能をインストールすると、Vista だとそこそこのスピードで動くようになる。今回は、むりやり Windows 7 をインストールしたのだが、追加機能はWindows 7用ではないはずなので十分なチューニングがなされていないのではないか。ちょっとこのスピードだと、使用に耐えない。Virtual PC for Windows 7 対応してくれないかな。 Xbox 360からTwitterとFacebookを利用可能にhttp://itpro.nikkeibp.co.jp/article/NEWS/20091113/340527/ によると、 マイクロソフトは2009年11月13日、ゲーム機「Xbox 360」の会員制インターネットサービス「Xbox LIVE」で、同月17日から米大手SNS「Facebook」とミニブログ「Twitter」を利用可能にすると発表した。11月17日よりXbox LIVEのポータル上に「マイ コミュニティー」チャンネルを開設し、TwitterとFacebookのアプリケーションを配信する。ただし、「ゴールドメンバーシップ」に加入した18歳以上の層を対象。 November 12 USB接続のグラフィックアダプターの使用感24インチディスプレイを買ったので、17インチ2枚と、24インチ1枚の3枚構成が可能なはずだったのに、グラフィックボードがデュアルしかサポートしていないので、悲しい2枚構成でした。 と思って、ちょっと使っているとことですが、ウィンドウを移動した瞬間、文字がにじむような感じになります。つまり、画面の書き換えを行う瞬間、データ転送速度が追い付いていないような感じでちょっと気持ち悪いです。 やっぱり、マルチモニターにするなら、ディスプレーカードがお勧めですね。 November 11 Windows 7 に Virtual Server 2005 R2 SP1 をインストールできないWindows 7 に Virtual Server をインストールしようとすると、 というプログラム互換性アシスタントダイアログが表示される。 オンラインで解決策の有無を確認する ボタンを押しても、 というように、解決策が見つかりませんとなり、インストールできない。 インストーラの setup.exe を右クリックして 互換性のトラブルシューティングを選択し、プログラムの互換性ダイアログより”推奨設定を使用する”を選択してみる。 すると、Windows 互換モード: Windows XP (Service Pack2) ディスプレイ:標準、UAC:標準 を選択し、プログラムの開始ボタンを押すと、ジャーン だめ。 しかたないので、Virtual PC 2007 SP1 をインストールして、とりあえずそれで動かそうと思ってインストールしてたところ、こちらはすんなりインストールできた。 Virtual PC を実行してみると、必要なバーチャルマシン モニタドライバが見つかりません。とダイアログが表示されて動かない。 あれ?っと思って、管理者モードでインストールしなおしたら、無事起動した。 さて、Virtual Server が使えないのは、困った。 July 16 プロセスモニタどこかで見たことのあるようなものをWPFで作ってみた。 簡単に作れるだろうと思っていたのだけど、いくつか、ハマり中。 1.プロセスの情報を取るいいI/Fが見つからない。System.Diagnostics.Process.GetProcesses() だと、プロセッサタイムが取得できないので、しかたなしにWMIでプロセスの情報を取っているのだけれど、結構重くって、CPUパワーが食われまくり。パフォーマンスカウンターを全プロセス分持つのも芸がないし、Win32 SDKを叩くか?? .NETで、いい方法ない? 2.画面のリサイズもフォントサイズとPolygon の関係をちゃんと考えないといけないので、意外と難しい。 3.おまけに6角形にレイアウトするのも面倒。誰か、HexaFlowコントロール作ってくれないかな w でも、こんな感じで http://uchukamen.com/pmon/publish.htm 意外と見ていて面白い。 PS. LINQ は偉大だ。もう LINQ 無しでは生きていけない体になってしまった。 July 15 Generic Dictionary の foreachあまり使わないので忘れないようにメモ Dictionary<uint, Process> processDict = new Dictionary<uint, Process>(100); foreach (KeyValuePair<uint, Process> val in processDiff) July 13 WPF ユーザーコントロール<UserControl x:Class="WpfApplication6.Cell" <Label Name="label1" HorizontalContentAlignment="Center" Margin="6,15,6,0">Label</Label> </UserControl> 用途は・・・ Process 情報の取得に関するメモ2WMI を使用して Process 情報を取得する際に LINQ を使用しようとすると ManagementObjectSearcher query1 = new ManagementObjectSearcher("SELECT * FROM Win32_Process"); var query = from proc in queryCollection1 select proc; エラー 1 ソース型 'System.Management.ManagementObjectCollection' のクエリ パターンの実装が見つかりませんでした。'Select' が見つかりません。範囲変数 'proc' の型を明示的に指定してください。 C:\Users\uchukamen\Documents\Visual Studio 2008\Projects\WpfApplication6\WpfApplication6\Window1.xaml.cs 140 38 WpfApplication6 というエラーになる。 回避方法は、範囲変数 proc の型を明示的に指定するために、queryCollection1.Cast<ManagementObject>() としてあげるとうまくいった。うむむむむ・・・ ManagementObjectSearcher query1 = new ManagementObjectSearcher("SELECT * FROM Win32_Process"); var query = from proc in queryCollection1.Cast<ManagementObject>() select proc; ------ もうちょっと見やすく?すると、IEnumerable<ManagementObject> にキャストしてくれるということ。 ManagementObjectSearcher query1 = new ManagementObjectSearcher("SELECT * FROM Win32_Process"); var procs = from proc in procQuery select proc; foreach (var process in procs) Process 情報の取得に関するメモVisual Studio 2008 , Vista で、GetProcesses() でプロセス情報を取得する際に、TotalProcessorTime などプロセッサタイムを取得しようとすると、Win32Exception により取得できない。なぜ?? var query = from proc in System.Diagnostics.Process.GetProcesses() foreach (var process in query) ----------------- WMI を使用すれば、取得可能。 ManagementObjectSearcher query1 = new ManagementObjectSearcher("SELECT * FROM Win32_Process"); foreach (ManagementObject mo in queryCollection1) Visual Studio 2010 Parallel - Processシーケンシャルだと var query = from proc in System.Diagnostics.Process.GetProcesses() select proc; これがパラレルだと、 var query = from proc in System.Diagnostics.Process.GetProcesses() select proc; 処理的には、パラレルでもシーケンシャルでも関係ないので、パラレルで実行しているほうが処理する人の感覚(意図)に近いのかもしれない。 Visual Studio 2010 ParallelVisual Studio 2010 beta を入れてみた。
using System.Threading; … Stopwatch sw = new Stopwatch(); … 実行結果 x : ManagedThreadId ------------- 0 : 8 こんなことができてしまうなんて・・・ May 25 Codeseek 勉強会のWinRing0の資料をアップしました。第40回codeseek勉強会 「宇宙仮面のWinRing0」 (共催:tk-engineering、こみゅぷらす、eパウダ~、.Net/C# Group) 開催日:2009年5月19日(火) 19:00~21:00 18:55に6F受付集合 場所:マイクロソフト社新宿オフィス6F会議室 募集締め切り:2009年5月16(土)23時59分59秒 20名まで 参加費無料 May 19 削除できなくなった Gadget を強制的に削除するいろいろ悪さをしていて、Gadget が消せなくなった場合の対処方法 w
なお、この場合、サイドバーの設定がすべてリセットされます。 May 18 XML Web Service の呼び出しCPUの温度を取得する際、WebClient を使用した、非同期呼び出し。 なお、Silverlight 3 Beta では、linq がサポートされていないので動かない。 /////////// WebClient client = new WebClient(); string request = "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"> <soap:Body><CPUTemperatureStringResponse xmlns=\"http://tempuri.org/\"> <CPUTemperatureStringResult>float</CPUTemperatureStringResult> </CPUTemperatureStringResponse></soap:Body></soap:Envelope>"; client.Headers.Add(HttpRequestHeader.ContentType, "text/xml"); client.Headers.Add("SOAPAction", "http://tempuri.org/CPUTemperature"); client.UploadStringCompleted += delegate(Object sender2, UploadStringCompletedEventArgs ev) XDocument xmlHeadlines = XDocument.Parse(ev.Result); string temp = headlines.First().Value; TextBox1.Text = temp; client.UploadStringAsync(new Uri("http://localhost/SystemTemperature/Temperature.asmx"), request); May 06 CPUの温度取得に関するメモ6WinRing0 を利用した Web Service のビルド環境の構築まとめ (Vista 32bit版)
CPUの温度取得に関するメモ5Web Service から OpenLibSys を呼び出すと、InitializeOls(); を呼ぶところでOLS_DLL_DRIVER_NOT_FOUND エラーになってしまう。 この原因は、WinRing0.sys を Visual Studio のデバッグ環境で、Web Service から呼び出すときに、OlsDll.cpp の Initialize()関数の中で、ドライバーを呼び出すときのパスが、 “C:\Program Files\Common Files\Microsoft Shared\DevServer\9.0\WinRing0.sys” になってしまうためであることが判明した。暫定で、その場所に WinRing0.sys をコピーして先に進んでみる。 次に、Web Service をローカルの IIS に発行してみると、ドライバーを呼び出すときのパスが今度は、 “c:\windows\system32\inetsrv\WinRing0.sys” になってしまい、ドライバーを探しに行ってエラーになってしまう。そこに、WinRing0.sys をコピーすることで、Web Service から OpenLibSys を呼び出せるようになった。 はまったメモ: WinRing0が LoadLibrary で呼ばれていて、Web Service からデバッグできないので、ビルド環境を作って、メッセージを埋め込んでデバッグするしかなかった。もう少しいい方法があるのかな・・・ そこで、WinRin0\dll をビルドしてたら、DEF ファイルが外出しになっていて、リンカオプションに def ファイルを追加する必要があった。 /DEF:"C:\Users\uchukamen\Desktop\WinRing0_1_3_0\source\dll\OlsApi.def" そこで、fprintf (stderr でと思ったが、出力先がないので、エラーを出せない。イベントログも面倒なので、とりあえず、ファイルにエラーメッセージを書き出した。 やっぱりワナがあった w ここまでくれば、あとは OpenLibSys も気にせず、管理者モードに移行する必要もなく、簡単にアプリができる。ただ、OpenLibSys 強力な分、セキュリティ上注意が必要。 ASP.NET で偽装する温度計を Web Service にしてなんてことを考えて、Administrator 権限が必要な OpenLibSys を Web Service 化するには、偽装しなければならない。その他、きっとはまるだろうと思いつつ、やっぱり引っかかりますね。 Web.config で <configuration> と追加して、実行すると、 '/' アプリケーションでサーバー エラーが発生しました。 構成にエラーがあります。説明: この要求を処理するために必要な構成ファイルの処理中にエラーが発生しました。以下のエラーの詳細を確認し、構成ファイルに変更を加えてください。 というエラーが発生。Vista では、Administrator アカウントが無効になっているので、 [管理ツール] → [ローカル セキュリティ ポリシー] これを有効にしてみた。すると、このエラーは、無事解決。 しかし、InitializeOls(); を呼ぶところで引っかかっている。サービス側なので、デバッグが厄介だな・・・ この原因は、WinRing0.sys を Visual Studio のデバッグ環境で、Web Service から呼び出すときに、OlsDll.cpp の Initialize()関数の中で、ドライバーを呼び出すときにディレクトリが、 “C:\Program Files\Common Files\Microsoft Shared\DevServer\9.0\WinRing0.sys” になってしまい、OLS_DLL_DRIVER_NOT_FOUND エラーになってしまう。暫定で、その場所に WinRing0.sys をコピーして先に進んでみる。 次に、Web Service をローカルの IIS に発行してみると、こんどは “c:\windows\system32\inetsrv\WinRing0.sys” を探しに行ってエラーになる。そこに、WinRing0.sys をコピーすることで、Web Service から OpenLibSys を呼び出せるようになった。 May 05 あれ? Vista IIS 7 で Web Service が動かない・・・温度計をWeb Serviceにしてしまおうかと思って、久々にWeb Service を作って、ローカルの Vista に発行してみたら、 「IIS 7.0 でホストされている Web サイトにアクセスすると、エラー メッセージ:"HTTP エラー 500.19-内部サーバー エラー"」 というエラーで Web Service が動かない。 http://support.microsoft.com/kb/942055/ja に対処方法が書かれていたので、その通りにしてみたが症状は変わらず。 あれれ? ということで、いろいろ調べていたら、[コントロール パネル] → [プログラムと機能] → [Windows の機能を有効化または無効化] → [アプリケーション開発機能] の ASP.NET のチェックがされていなかった。 VISTA を入れて、Visual Studio 2008 を標準インストールしただけで特に何もしていないはずなので、標準インストールでは ASP.NETは ON にならないのかな? このチェックを入れたら、無事動いた。 Windows Vista IIS で ASP.NET を動かすための設定は、 http://msdn.microsoft.com/ja-jp/library/aa964620.aspx に書かれています。エラーメッセージからサポートオンラインの情報を引いたのだけれど、その情報に惑わされてしまった。というわけで、またはまりそうなので、一応メモっておこう。このスペースにアクセスしていただき、ありがとうございます。
|
|||||
|
|