SSH でよく接続が切れる場合の対処

sshd_config で

# Setting timeout of connections.
# Default is..
# ClientAliveInterval 0
# ClientAliveCountMax 3
# 2 minites (10sec * 12 times = 120 sec)
ClientAliveInterval 10
ClientAliveCountMax 12

とかして、2 分間は猶予を与えることにした。
 
– ClientAliveInterval – 生存チェックをする間隔(デフォルトでは一切チェックしない)
– ClientAliveCountMax – 生存チェックする回数(デフォルトは 3 回)
 
サーバ側がいじれない場合はクライアントサイドの ssh_config で

>

ServerAliveInterval 10
ServerAliveCountMax 12

とすれば同じ効果があるらしい。
 
参考:
OpenSSH FAQ – 2.12 なにもしないで N 分たつと ssh 接続が固まるか、切れるかするんだけど。
MAN – sshd_config.0
MAN – ssh_config.0

PHP + MnogoSearch について

– FreeBSD の ports で入れられた mnogosearch が気になったので調べてみた。
– PHP4, PHP5.0.x では configure オプションで –with-mnogosearch=/usr/local みたくすれば利用可能だが、PHP5.1 からは PECL に移動していた。また Windows では PHP での MnogoSearch は非対応とのこと。
<http://jp2.php.net/manual/en/ref.mnogosearch.php>

    Note: This extension has been moved to the PECL repository and is no longer bundled with PHP as of PHP 5.1.0.
    
    Note: This extension is not available on Windows platforms.

PHP5.0.x までのバージョンについては、PHPマニュアルの User Contributed Notes を見ると例がある。
 
PEAR の Search_Mnogosearch を使うと便利そう。
 
PHP5.1 ではメンテナンスされてないようで、PECL のパッケージ一覧(pecl.php.net)で見当たらなかった。
 
代替ライブラリは Namazu かな..

Windows 2000/XP をリモートからシャットダウンする

http://www.atmarkit.co.jp/fwin2k/win2ktips/374rmtshutdown/rmtshutdown.html

shutdown -s -m \\hostname

なんてコマンドがある、と。RPC 使ってるのかなー

shutdown /?

を参照。
追記(2006-03-14): リモートからではないが、cygwin に UNIX 系 の shutdown プログラムが付属するのでそちらを使うのもよい。

shutdown -s now

グループ権限あれこれ

– 以降作るファイル, ディレクトリをグループ権限で書き込めるようにする。

$ umask 0002

※影響範囲は全ディレクトリについて、自身のプロセスと子プロセス。
– 指定したグループとして作業する(作ったファイルの所有グループを任意のものにする)。

$ sg groupname

– ディレクトリに対しての sgid の効果。
指定したディレクトリ以下に作成したファイルのグループを全て sgid したディレクトリのグループ所有とする。

$ ls -ld foo/
drwxrwxr-x 4 user mygroup – 512 Nov 10 09:33 foo/
$ touch foo/file1
$ ls -l foo/file1
-rw-r–r– 1 user users 0 Dec 13 12:30 foo/file1
$ chmod g+s foo/
$ ls -ld foo/
drwxrwsr-x 4 user mygroup – 512 Nov 10 09:33 foo/
$ touch foo/file2
-rw-r–r– 1 user mygroup 0 Dec 13 12:35 foo/file2

portupgrade で Bus Error

FreeBSD 4.x を使っていて portupgrade, portversion, portinstall, portsdb などを使うと ruby の portsdb.rb で BUG Bus Error となる不具合に遭遇した。

[Updating the portsdb <format:bdb1_btree> in /usr/ports … – 11728 port entries
 found ………1000………2000………3000………4000………5000……..
.6000………7000………8000…./usr/local/lib/ruby/site_ruby/1.8/portsdb.rb:
587: [BUG] Bus Error
ruby 1.8.2 (2004-07-29) [i386-freebsd4]

原因は ruby18-bdb1-* で、かつ強制削除しても問題ないようなので、

pkg_deinstall -f ruby18-bdb1-*

として対処。
– 参考
http://blade.nagaokaut.ac.jp/ruby/ruby-list/40012

DoJa で Bad Method Signature

Javaアプレットからの移植作業関係で, DoJa エミュレータでは問題ないのに実機だと表題の例外が出る、という現象に遭遇。
調べてみると、float や double を利用している場合に出るとのことだが、ソースに対して単語検索をかけてもヒットしないし、一見全く利用していないように見える。
..が、やはり違う形で参照していて、次のようなケースも NG でした。
 
– 数値リテラルが float, double を表している。
ex. 3.5, 5., 5f
– Math.floor() など float, double を返すメソッドを呼び出している。
※これでもコンパイルは通るしエミュレータでも動作してしまう。

MBR のある HDD を新しくする

HDD が破損したので, そのまま作業するのも怖いので新調することにした。
具体的には、Windows XP マシンを 80GB HDD から 160GB HDD へ、完全に同じ環境のままで複製するという作業を行った。
 
作業手順は次の通り。
– ターゲットマシンの HDD をとりはずし、
– 移行作業用マシンに旧HDD,新HDD をつけて、作業用マシンの HDD で boot.
– 作業用マシンに Acronis TrueImage8(試用版) をインストール。
– 管理者権限を持つユーザでディスクのクローン作成
– PDF マニュアルを見つつ複製.
– ターゲットマシンに新HDDを取り付けて boot.
 
本来ならこれで問題ないはずだったが…
 
– 買って来た HDD (HGST) を使っていると何故か MACHINE_CHECK_EXCEPTION が出ていた。原因を調べると A8N-SLI Deluxe 特有の問題っぽい? BIOS で AMD K8 Cool’n’Quiet を Disable にしてやったら問題なく動作するように。
 
ついでに Outlook Express が起動できなくなっていたので
Outlook Express が正常に動作しなくなった場合の対処方法なんかを参考に
HKEY_CURRENT_USER\\Identities を削除したら解決。
 
TrueImage ってかなりいいかも。HDD サイズをあまり選ばないあたりとか。
全く同じ容量の HDD に複製するときは dd コマンドを使うとよい。
 
なお、Windows の環境を複製して両方利用したいときは、これだけでは SID が重複してしまいマズい状態になるため、これに加えてsysprep を使うとよい。