の形で呼ぶ。
//
// anchor_idはフレームを使う場合最低限各フレームごとに設定。お互い他のフレームを書換えたときにへんな干渉をさけるため。
// その他ページの種別毎などで変えてもよいが、あまり小分けにするとcookieが増える。
// 同じanchor_idで保存されるcookieは1セットのみ。でも単独ページ表示のサイトなら概ねこれで充分。
anchor_id = "anc_main";
noanchor = false; // bodyにanchorをしかけたときなど場合によって一時無効にするためのフラグ。
// アンカーの記憶。
function anchor_save(object_id, page_id) {
if(noanchor) { anchor_erase(); return; }
get_scroll();
setcookie(anchor_id+"_pid", page_id, 0);
setcookie(anchor_id+"_st", scroll_top, 0);
setcookie(anchor_id+"_sl", scroll_left, 0);
if(object_id) {
object_top = scroll_top + get_object_top(object_id);
object_left = scroll_left + get_object_left(object_id);
setcookie(anchor_id+"_oid", object_id, 0);
setcookie(anchor_id+"_ot", object_top, 0);
setcookie(anchor_id+"_ol", object_left, 0);
} else {
setcookie(anchor_id+"_oid", "", -1);
setcookie(anchor_id+"_ot", "", -1);
setcookie(anchor_id+"_ol", "", -1);
}
}
// アンカーの適用。
function anchor_apply(page_id) {
if((saved_page_id = getcookie(anchor_id+"_pid")) && page_id != saved_page_id) { return; }
get_scroll();
if((anchor_st = getcookie(anchor_id+"_st")) != "" && (anchor_sl = getcookie(anchor_id+"_sl")) != "") {
anchor_st = parseInt(anchor_st);
anchor_sl = parseInt(anchor_sl);
} else {
anchor_st = scroll_top;
anchor_sl = scroll_left;
}
if((object_id = getcookie(anchor_id+"_oid"))
&& (anchor_ot = getcookie(anchor_id+"_ot")) != ""
&& (anchor_ol = getcookie(anchor_id+"_ol")) != "") {
offset_top = (scroll_top + get_object_top(object_id)) - parseInt(anchor_ot);
offset_left = (scroll_left + get_object_left(object_id)) - parseInt(anchor_ol);
} else {
offset_top = offset_left = 0;
}
window.scrollTo(anchor_sl + offset_left, anchor_st + offset_top);
}
// アンカー消去。あえてとっておく必要がなければanchor_apply()後すぐ消去が望ましい。
function anchor_erase() {
setcookie(anchor_id+"_pid", "", -1);
setcookie(anchor_id+"_st", "", -1);
setcookie(anchor_id+"_sl", "", -1);
setcookie(anchor_id+"_oid", "", -1);
setcookie(anchor_id+"_ot", "", -1);
setcookie(anchor_id+"_ol", "", -1);
}
//-->
倉金家ホームページ
趣味の部屋/インターネットサーバー/サーバー構築メモ/その他
VNC(Virtual Network Computing)を導入するとサーバーマシンをGUIで外部の別のコンピュータから操作できます。 |
|
|
(2010年6月27日 追加、修正) 設定を改良しましたので、内容を新しい設定方法に変更してあります。(但しinetdを使わない方法で。)
|
|
インストール
Synapticでvnc-serverをインストールします。 vnc-server-4.1.2-0vl3です。 あとxtermとtwmがインストールされていなかったらインストールしておきます。 (vnc-serverが使うからです。)
Windowsマシンの方にはすでにRealVNCが入っています。
|
設定
VNC通信を許可します。 LANだけから接続するならすでにすべてのポートを受け付ける設定をしたので必要ありません。 外部から繋ぎたければ、ポート番号は5900+DisplayNumber(x)となるので、/etc/services に vnc 590x/tcp を追加し、/etc/sysconfig/iptablesとip6tablesにtcp 590xを許可します。
/etc/sysconfig/vncserversにDisplayNumber:userと画面設定を書込みます。 ユーザはすでにサーバーに登録されてホームディレクトリがなくてはなりませんが、同じユーザでサーバー本体とVNC両方でデスクトップを使うとへんな干渉をするのでVNC専用のユーザを作ったほうがよさそうです。 VNCSERVERS="2:vncuser" VNCSERVERARGS[2]="-geometry 1152x864(または1024x768など)" このユーザでshにログインして $vncpasswd パスワードを2回打ち込み、登録完了です。
|
いったんvncserverを起動しますと登録したユーザのホームディレクトリに~/.vnc/xstartupというファイルができますのでこれを編集します。概ね日本語(言語)に関する部分、ディスプレーやデスクトップに関する部分の設定が必要で、自分の環境にあわせます。 ~/.vnc/xstartup #!/bin/sh
# Uncomment the following two lines for normal desktop: # unset SESSION_MANAGER # exec /etc/X11/xinit/xinitrc
# 環境変数の設定、言語コードはEUC-JP、IMはSCIMの場合 # env で調べて日本語の取扱いにからんでいそうなの。 # 日本語がちゃんと扱えれば無理に設定する必要はないが(たぶん必要)。 export LANG="ja_JP.eucJP" export XMODIFIERS="@im=SCIM" export GTK_IM_MODULE="scim" export QT_TM_MODULE="xim"
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & # 2項目無効化 #xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & #twm & # 日本語入力フロントエンド起動 scim -d & # KDE起動、gnomeを起動するなら exec gnome-session exec startkde
|
起動設定 サーバー起動時にvncserverも起動するよう設定しておきます。 #chkconfig vncserver on
|
ためし
vncserverを起動してみます。 #service vncserver start WindowsのVNCビューワを起動し、IPアドレス:DisplayNumberを打ち込みます。 パスワードを聞いてくるので入力します。 VNCビューワの画面が開き、デスクトップが表示されます。 ただ、特殊なキーの押された情報が送信されないようで、[半角/全角]キーで日本語/英語入力の切替ができません。[Ctrl]+[Space]を使用します。 inetdを使わないこの方法ではVNCビューアからログアウトしてしまうとログイン画面には戻れませんので再びログインできません。その場合はいちいちサーバーを操作してvncserverを再起動しなくてはなりません。inetdではこのようなことはありません。inetdを使うお薦めの方法はこちら → inetdによるVNCサーバーの設定。
|
...というわけで、ずいぶん長くかかってしまいましたがサーバーの構築はほぼこれで完了。
|
|
|