UNIX系OSではリモートホストのGUIなアプリケーションをローカルのコンピュータから使える、というのに憧れている。この機能を使えば(1台の)サーバーにあるアプリケーションだけを管理していれば複数のクライアントPCで常に最新のアプリケーションが使えて便利だし、それになにより理想を形にしたような機能でかっこいい。
これを実現するのがSSHによるX Forwardingというもので、以前一度友達に見せてもらったことがあるけど、動作は予測できたけど自分にとっては画期的なその方法にびっくりしてしまった。
最近では自宅のPCにもLinuxをインストールしたのでX Forwardingを使ってみたいのだけど、非力なPCをサーバーにしているのでXをインストールしていないためまだ自宅では体験できていない。いつかXクライアントのPCを1台用意して学校のアプリケーションを実行してみたいものだ。
現在自宅ではファイヤーウォールとWebなどの各種サーバーを起動しているPCがそれぞれ1台ずつある。そのどちらも当然LANで繋がっているのだけど、キーボードやマウス、ディスプレイはついていない。設定を変更したりログを確認するときはSSHでメインのWindows機からログインして操作している。
この方法はとても便利である。でも、ファイヤーウォールの設定をSSHでしていて、誤ってWindows機からのパケットを通さない設定にしてしまったときには、それを解除するためにそのPCで直接操作しなければならないので、本体を引っ張り出してキーボードとディスプレイを繋げて設定をし直す。そしてうまく通信できるのを確かめてから元に戻す。ところがファイヤーウォールの設定を見直しているうちにまた繋がらなくなる。そしてまた引っ張り出す。というようなことの繰り返しになったりしたときにはとても不便である。しかもルーター(ファイヤーウォール)が麻痺しているのでLAN内からインターネットにも接続できなくなるし。
そしてこんなに不便な思いをするのならブロードバンドルーターでも買うのも悪くないなぁ、と思った訳。
CGIのレスポンスヘッダーにgmtime()の値を渡してやるとサーバーが適切なHTTPレスポンスヘッダーに変換して出力してくれるみたい。
$_ = gmtime((stat('target_file.html'))[9]);
print "Last-modified: $_\n\n";
そしてHEADリクエストにも対応するには
$_ = gmtime((stat('target_file.html'))[9]);
print "Content-type: text/html\n";
print "Last-modified: $_\n\n";
exit if ($ENV{REQUEST_METHOD} =~ /^head$/i);
のようにすればOK。
ということで「Web Diary System」と「Web Document System」にも搭載。