2011年2月28日月曜日

CentOS 5.5でVNCサーバーの設定

CentOS5.5 x86-64でのVNCサーバーの設定メモ。個人的過ぎるメモ。
xinetdをつかって、必要なときだけ接続できるように設定。


rderaさんのCentOS5.3にVNCでアクセスできるようにした。がまとまっててよかったので参考にさせていただきました。


以下その抜粋と、一部修正(5.5と5.3だと微妙に違うのかな?)
2011/03/15: 設定が間違っていたので修正


管理者で必要なものをインストール


  yum install xinetd vnc vnc-server


/etc/servicesに以下を追加


  vnc 5900/tcp # VNC Server


   ※5900番ポートで待ち受け
   ※GUIだと、「システム」→「管理」→「サーバーの設定」→「サービス」でいけそう(要検証)


/etc/xinetd.d/に「vnc」で起動ファイルを作成(/etc/xinetd.d/vnc)
service vnc
{
        disable         = no
        socket_type     = stream
        wait            = no
        user            = nobody
        instance        = 3
        server          = /usr/bin/Xvnc
        server_args     = -inetd -query localhost -once -geometry 800x600 -depth 16 -SecurityTypes None
        only_from       = 192.168.1.0/24 127.0.0.1
        log_on_success  += DURATION
        log_on_failure  += HOST
}


     ※詳細は参考サイト参照
     ※server_args の行は勝手に改行されやすいので、保存前に一行になっているか確認(これ気づくのに時間がかかった)
     ※localhostをサーバーのIPにしないと、GUIで管理者以外でログインし、管理者権限まで昇格できない
     ※-depth 24にしても16と大差ないから24でいいかも。綺麗だし
     ※Login画面をローカルと同じにするには、GUIからの方が楽。「システム」→「管理」→「ログイン画面」で変更可


/etc/gdm/custom.confでGnomeが使えるようにとセキュリティの設定。


[security]
AllowRemoteRoot=false

[xdmcp]
Enable=true

[gui]

[greeter]
IncludeAll=false


Firewallで5900/tcpを許可


    ※GUIなら「システム」→「管理」→「セキュリティレベルとファイヤーウォールの設定」で変更
    ※CUIなら管理者権限で「setup」を実行。「ファイヤーウォールの設定」→「カスタマイズ」で変更


ここで再起動して設定終了。


あとはクライアントからアクセスしてつながればOK.
だめならファイヤーウォールの設定が合っているか、/etc/xinetd.d/vncで変な改行がないかを確認。

2011年2月19日土曜日

Java Listではまった(解決?)

ずいぶんと時間が経ってしまった。そんなに悩んでたわけではないけど、記録に残すのが面倒で気がついたら。。。


それで現状では、次のようにして実装した。


●格納

List[] arrays = new List[2];
double[] a = new double[]
{
    0, 1, 2, 3, 4
};
double[] b = new double[]
{
    5, 6, 7, 8, 9
};

for (int i = 0; i < 5; i++)
{
    arrays[0].add(a[i]);
    arrays[0].add(b[i]);
}

for (int i = 0; i < 5; i++)
{
    blist.add(b[i]);
}
これで、Arrayに格納することができた(スマートな方法じゃないけど)。とりあえず動かないことには話にならないんで(^_^;)


●取り出し
List[] arrays = new List[2];
double[] getA = new double[arrays[0].size()];
double[] getB = new double[arrays[1].size()];

for (int i = 0; i < arrays[0].size(); i++)
{
    getA[i] = Double.parseDouble(arrays[0][i].get.tostrig());
    getB[i] = Double.parseDouble(arrays[1][i].get.tostrig());
}

これでもとの配列にはなった。けど、一回文字列にして、それをDoubleに変換しているところが微妙。たぶん違うやり方があるはず。
こんなんでも動くことは動くけど、オーバーヘッドがかなり大きいはずなので、改善しないと問題ありです(^_^;)
Doubleとdoubleが違うところではまったのはナイショ。
double.parse~ができない~って(笑)