XP on WPF

さて .NET Framework 3.5 を XP にインストールしたので覚書。
久々にノートでブログネタを書いているけどキーボードがちっちゃいなぁ…

ダウンロードセンターの開発リソース

から .NET Framework 3.5 を落としす、たった 2.8kb。
だがコイツはランチャだから開始すると巨大な .NET の本体が落ちてくる。
まあ私の環境で三十分程度で完了。

んで、SeeMe WPF 版起動。

判っていたのだが XP での起動速度には唖然。
セレロン M 1.4G だが三十秒近くも掛かってしまう。

あれま、メイリオ指定のまま普通に起動できちゃったよ。
フォントが無い場合の対応策は万全ってことでいいんですかいね、MS さん。

てゆーか…XP だと WPF も XP のテーマになっちゃうんだね。
Vista での洗練された表示を知っているのならガッカリなんですけど。
だけど両立を考えたらこうなってしまうんだろうと納得。

まあとにかく解った、XP でも動く。

但し、死ぬほどパフォーマンスが悪い!
リストをクリックしても選択状態になるまでワンテンポ遅れる。
ウインドのリサイズなんて悲しいくらい遅い、JAVA 同然。

XP では全部 CPU で処理しているのだろうか?
それともこの Dynabook の GPU がショボすぎるのだろうか?

しかし XP で C# 開発をしている人達はよく耐えているなぁ。
って、よく考えたら Visual Studio 2008 は XP でも動くんだっけ。
そりゃ WPF は XP で全部動かなきゃおかしいわな、はよ気がつけ俺。

結論。

次の SeeMe を XP で使う人、耐えてくれ。
もう時代がコッチなんだ。

VMware Server ラスト

VMware-Tools を入れてみた。
変わんねぇ、わっはっはやっぱり。

もう VMware Player に戻します。

VMware – 憩いの場 Wiki

お世話になるかもしれないので覚え書きと。
3D がどうのとあるけどシェーダーはどうすんのと。

シェーダーの計算はハードウエア(CPU 以外)で行うから意味があるのであって。
ソレを実現するのにソフトウエアエミュレートでは死ぬ程 CPU の負担が増え…
まぁこんな事柄は提供者側の立場を経験しないと解んないと思うけど。

エンドユーザー(最後に使う人)は気楽だなぁ。
色々な意味を含めて。

つーことで VMware Player。
やはり軽い、30 %くらいですけど…
所詮は仮想なのでこんなもんでしょう。

削除したのでオシマイ。

VMware Server その弐

起動毎に接続先を訪ねられ localhost を指定させられる。
まあサーバー用仮装マシンだし…

てゆーかたまに起動時にガーンとメモリを確保しようとしてスワップが…
Host の Setting を変更しようとしてもパーミッションエラーと出てできない。
なんでかなぁ?もう少し調べよう…

更に起動すると何故かサウンドアダプタエラーと出る、音は出るんですけど。
意味が解らない…

試しに YouTube を見てみたら CPU パワーが凄いことに…
こんなだっけか?まあ YouTube はホストの Vista で観るのでいいんだが。
Virtual Box はもっと低負荷だったんですけどぉ。

と、文句ばかりでもアレなので良いところ。

Mono Developer のウイジェット配置やツールバー移動が超快適になった。
Virtual Box でウイジェット配置はフリーズ寸前だったのに、こんなに違うか?

でもマウスカーソルやウインドの移動は Virtual Box のほうがスムースだなぁ。
VMware-Tools を入れれば少しは違うのかな?
スナップショットを取って明日にでもやってみよう。

仮想ドライバにも得意不得意な分野があるんですねぇ。
まあ多分一番使うであろう Mono Developer 関連は快適だぞと。

VMware Player に戻したほうが…なんかそのほうが楽そうだ。

少なくともメモリが十分なのにスワップされるのだけはなんとかせねば辛い。
以上日記だけでした。

VMware Server

VirtualBox はなんつーかもう耐えられない。
Mono を使ってプログラミングを始めたら気になる部分が我慢できなくなった。

文字入力で無意識に「半角/全角」キーを押して SCIM がチラツキしてしまう。
流石にプログラミングをやっていると意識しているつもりでも何度もやってしまう。
回避する方法も無いようだしキビシイ。

それに Linux ゲストだとマウス統合を無効にできないことが辛過ぎる。
私的には意図的にゲストを使っている状態では決してホストに戻ってはいけない。
VMware Player では当然無効にして使っていた。

つーことで、もういいかげんに専用マシンを用意したほうが良さそうだとも思うんだが…
ものは試しで VMware Server を導入してみた。

VMware Serverのダウンロード、無償のVMware、仮想サーバ – VMware

ちなみに Opera ではユーザー登録ができませんので Firefox か IE で。
インストールは下記を参考にした。

仮想サーバの構築(VMware Server: WindowsXP編)

まあインストールはすんなり終わった。
しかしなんか最初からマウス統合されていて OS 間を跨げた、何故?
どうやら 8.04 は VMware 関連のドライバが標準装備のようである。

/usr/X11/xorg.conf でマウスの設定を見るとあらかじめ vmmouse になっていた。
単なる mouse に書き換えて Ctrl+Alt+BackSpace で X の再起動!
よしよし、コレで邪魔なだけのマウス統合は無効になったぞと。

解像度はなにもしなくても沢山登録されていた。
xorg.conf には何も指定していないんだけど…よく解らない。
まあ都合がいいのでこのまま使おう。

せっかくなので 1440×900 に解像度アップ。
ツールバーとステータスバーを非表示にすれば丁度いいサイズになった、よしよし。

VMware Tools はあえてインストールしないで使う予定。

うん!「半角/全角」キーでのイライラは解消したぞと。
それと SCIM の設定を開いて

・全体設定のホットキー
・Anthy のキーバインド

から Ctrl+Space を削除しておきましょう。
Visual Studio 同様 Mono Developer のコード補完もこのキーでイケます。
消さないと横取りされてしまう、両方消さないと???になります。

あぁこれで Mono Developer によるプログラミングが快適になりそうだ。
しかしクリップボードの共有が使えなくなったのは痛いかも。

out

using System;

namespace test_cs1
{
    class MainClass
    {
        private static void Seifuku(out string a, out string b)
        {
            a = "水色の";
            b = "セーラー服";
        }
        public static void Main(string[] args)
        {
            string s = "紺色の";
            string t = "ブレザー";
            Seifuku(out s, out t);
            Console.WriteLine(s + t);
            Console.Read(); //閉じないように
        }
    }
}

なんだ、ref で string を参照渡しがどーのとか以前書いたがこうすればイイんだ。
引数指定の両方に out を付けるだけね、ふんふん。

この方法ならば C/C++ っぽく書ける、無理に C/C++ っぽくする必要は無いと思うけど。
どうしても戻り値に string を使いたくない場合があるのよ。
とにかくコレで IniFile8 C# 版も同様の処理が可能になるな。

常識だったりして…
個人的には yield return 並に衝撃だったんだけど…
C# はまだ始めて三ヶ月なのでまあこんな感じです。

#include <stdio.h>

void Seifuku(char *a, char *b)
{
	sprintf_s(a, 256, "%s", "水色の");
	sprintf_s(b, 256, "%s", "セーラー服");
}
int main(int argc, char* argv[])
{
	char s[256];
	char t[256];
	sprintf_s(s, 256, "%s", "紺色の");
	sprintf_s(t, 256, "%s", "ブレザー");
	Seifuku(s, t);
	printf("%s%s\n", s, t);
	getchar(); //閉じないように
}

こんなコードに比べたら遙かに解りやすい構文だし。

試しに mono でもやってみたけど普通にコンパイル完了。
なるほど、C# 言語仕様は見事にトレースしているんだ。

つーか

Mono って StreamReader も foreach 文も Windows と全く同様に扱える。
それどころか Generic も同じように問題無く使える。
ココまで再現していると思わなかった、違うのは GUI 部分だけだ。
こりゃどっちでも使えるライブラリを作らなきゃ損って気分。

何をやろうとしているかは何となく解るでしょう。