Linux」カテゴリーアーカイブ

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 によるプログラミングが快適になりそうだ。
しかしクリップボードの共有が使えなくなったのは痛いかも。

大嘘を書いた

Mono での GUI 開発の続き。

オイラはアホウだった…

Gtk# 2.0 プロジェクトでとりあえずプロジェクトを作ると
MainWindow.cs ってファイルが作成されとるじゃないの!
このファイルをWクリックすれば普通に GUI 開発が…

DeleteEventHandler もリソース内で…自分で追加する必要は無かった。
気を取り直して、、、、、

コンテナから Fixed を選んでデザイナにD&D。
すると従来の Windows RAD 開発のような配置でウイジェットが置ける。
ウイジェットツリーで編集したいパーツを選んでプロパティからラベルとかを編集。
異様に CPU 負荷が高いんだが…仮想マシンなせいかもしれないけど。

イベントハンドラは「シグナル」のタブを選ぶ。

のイベントのトコに希望するハンドラ名を記述するわけだ。
Visual Studio のようにWクリックしても自動で名前は付けてくれない。
Ctrl+A で全選択して自分で書き込んでくだされですね。
でも書き込みさえ行えばソースやリソースへのへの追加は自動でやってくれる。

using System;
using Gtk;

public partial class MainWindow: Gtk.Window
{    
    public MainWindow (): base (Gtk.WindowType.Toplevel)
    {
        Build ();
    }
    
    protected void OnDeleteEvent (object sender, DeleteEventArgs a)
    {
        Application.Quit ();
        a.RetVal = true;
    }
    //↑までは最初から作成されている
    //上記操作でハンドラが作成されるので内容を自前で書く
    protected virtual void button1_Click (object sender, System.EventArgs e)
    {
        MessageDialog dlg = new MessageDialog(
            (Window)this,
            Gtk.DialogFlags.Modal,
            Gtk.MessageType.Info,
            Gtk.ButtonsType.Ok,
            "スカートも水色!\n復活希望!");
        dlg.Run();
        dlg.Destroy();
    }
}

これだけで良かったのね、ウソを書いてごめんなチャイ!

ちなみにハンドラ名を変更したい場合はシグナルの所で変更すれば自動反映される。
自動でハンドラ名を付けてくれない以外は Windows の開発と変わらないねコレ。

Gtk#

Gtk# とやらで Linux の GUI 作りを試してみる。
実体は思いっきりというか単なる Gtk+ のラッパーらしいんだが…

とりあえず Gtk# 2.0 プロジェクトを新規で作成する。
static void Main だけの雛形コードが作成された。
そのままビルドすればとりあえずウインドは表示されるようである。

とりあえずボタンを押すとメッセージを表示する初心者アプリでも。
色々探したが情報少なすぎ、見つけたコードを色々試してみる。

Gtk.MessageDialog 関数を使えばいいようだとまでは解ったのだが…
一番迷ったのは引数の一番最初に指定する Gtk.Window をどう指定するか。
それ以外はコード補完機能のおかげでなんとなく解ったがココでどうしても詰まる。

後で解ったんだけどメインの class では static メソッドは Main 一つにすべし!

GtkSharp – Mono

ココのスクリーンショットを見ると RAD での GUI デザインできそうなんだが…
方法が解らない、情報が全く見つからない、まあコードでなんとかしよう。

CodeProject: A google search application using Gtk#. Free source code and programming help

Glade なんてのがあるんだ。
「追加と削除」から Glade3 をインストール。
でもよく解らない…今回は下の方にあるコードを見てなんか作ってみよう。

using System;
using Gtk;
//using Glade; //後で

namespace gtkApp2
{
    class Test
    {
        private Window win;

        public static void Main (string[] args)
        {
            new Test(args);
        }
        public Test(string[] args)
        {
            Application.Init();
            win = new MainWindow();
            win.DeleteEvent += new DeleteEventHandler(win_DeleteEvent);
            Button btn = new Button();
            btn.Label = "水色の";
            btn.Clicked += new EventHandler(btn_Clicked);
            win.Add(btn);
            win.Show ();
            btn.Show();
            Application.Run ();
        }
        private void win_DeleteEvent(object o, DeleteEventArgs args)
        {
            Application.Quit();
            args.RetVal = true;
        }
        private void btn_Clicked(object sender, EventArgs e)
        {
            MessageDialog dlg = new MessageDialog(
                          this.win,
                          Gtk.DialogFlags.Modal,
                          Gtk.MessageType.Info,
                          Gtk.ButtonsType.Ok,
                          "セーラー服");
            dlg.Run();
            dlg.Destroy();
        }
    }
}

で、ウインドサイズに広がったボタンを押すとメッセージダイアログが出る。
というしょーもないアプリを作るのに三日も使った情けないプログラマーであった。

Gtk ってレイアウトという概念があるんだね。
ボタンがウインドサイズになった時に思わず「おまえは WPF か!」と思ったけど
よく考えたら Java にもレイアウタがあったっけか。

そうか、インターフェイスデザインはそういう方向に向かっているんだなぁと。
Windows も WPF でやっと時代に追いついたってことだね。

まあなんとか Gtk# はどういうもんか解ってきたぞと。

Ubuntu で C# と C++

まてよ、mono の実行エンジンはインストールされているのかな?
とりあえず Vista でコンソールアプリを作り Ubuntu に持って行って実行してみる。
java じゃないんだからコンソールでないと動くはずがない。

まあ結果は動く、軽く調べるとどうやら実行エンジンは標準搭載らしい。
標準状態では C 言語さえコンパイルできないんだから C# は当然ムリか。

Mono 1.9.1のインストール – Programming/Mono – 総武ソフトウェア推進所

なんかイッパイ入れなきゃいけないみたいですけど…
そういえば Visual Studio 2008 のインストールは二時間掛かったっけか。
たった二分でインストールできた mono Develop で同等なわけがない。

特に Linux の場合 GUI アプリは gtk+ か Qt とか様々なわけで。
Windows 版のようにまとめて一気にインストールはそりゃ無謀かと納得。

2008-02-03 – ままならない日記

とりあえず mono-gmcs だけをインストール。
結果はコンパイルできた、よしよし、後は気が向いたら(ぉい!)

ちなみに、コード補完は C# でしかやってくれない。
思わず Ctrl+Space を押して SCIM を…略。

それより知らなかったのだがソースコードは UTF-8 で保存されるんだね。
ローケルのとうりになるのか、こりゃ日本語の扱いが更に面倒そう。
だけどコードページ 932 (つまり Shift-JIS)の呪縛が無いのは嬉しいね。

ということは…

やはり search.ini なんかも普通に char 配列で読み書きできるわな。
Firefox も Opera も設定が全部 UTF-8 なわけだよ、よく解った。
Windows も…バイナリ配布が普通の Windows では無理だと解っているけど。

C# テストが目的だったけど C++ コンパイラとして使うのも悪くないなコレ。
続く…かもしれない。