Hatena::ブログ(Diary)

bravo, broken brake.

2010-05-23

WiMAX 通信状況

20:44

AtermWM3300R のあちこちの電波状況をメモしておく。

日付 20100523
場所 茅場町要町(走行区間)
状況 電波

大手町ですら0、池袋ですら0。

ただし、飯田橋の乗り換え間はオートオフで切れてたため、計測なし。

それ以外は、ネゴってる気配もなし。

要町駅改札出てネゴり始め、エスカレータ乗るあたりでアンテナ表示点滅。

2010.06.28 追記

東京メトロの地下部分は全滅と思ってよさそう。

そのかわり(と言っては何だが)、都内の地上ではほぼ問題なし。

カバー率さえ上がれば、転送速度的には間違いなく最強なので、頑張って欲しい。

2009-08-15

ssh 経由でコマンドが実行できない時に読むメモ

| 19:43

server 上にあるコマンド hogehoge を

 user@ws% ssh server hogehoge

のように呼び出すことができないことがある。

これは、「リモートコマンドを実行する時、リモート側ではログインシェルは動作しない」という ssh の動作にハメられている可能性がある。

この場合、まず以下のように

 user@ws% ssh server "echo $PATH"

リモート側での PATH を確認する。ここに hogehoge への PATH が含まれていなかったら、ビンゴだ。

  • server の sshd_config で PermitUserEnvironment が Yes になっているか
  • server 上の ~user/.ssh/environment に PATH がちゃんと書いてあるか
  • server 上の ~user/.ssh/environment に書かれている PATH に hogehoge があるか
  • server の hogehoge に、user が実行できる権限があるか

このあたりを確認しよう。ちなみに sshd_config を書き換えた場合、sshd に -HUP を送ってあげる必要がある。

2009-05-04

ディレクトリ追加失敗時の挙動はアトミックでない

| 01:50

ちょっとびっくりしたので記録。

ディレクトリを追加する操作で、先行の追加に失敗すると後行はローカル作業ディレクトリだけ管理情報が更新されてしまい、リポジトリには存在しない状態になる。

例えばリポジトリ内に hoge が既に存在し、moge は存在しないとする時に、以下のように両方を追加しようとすると

% cvs add hoge moge (←二つのディレクトリを追加しようとする)
cvs [add aborted]: there is a version in hoge already (← hoge は既にある)
% cvs update
cvs update: cannot open directory /repo/module/moge: No such file or directory
cvs update: skipping directory moge (← moge はリポジトリ内に追加されていない)
% find moge
moge/CVS/Root
moge/CVS/Repository
moge/CVS/Entries
(↑しかし、作業ディレクトリ側の管理情報は、できてしまっている…)

cvs って、ディレクトリ操作はやっぱり苦手なのね。教訓としては…、一個づつやれってことかな。

2009-01-11

5.1 には atoll が無い

| 11:19

急遽、AIX 5.1 な環境で long long を使う必要が湧いて出た。値の範囲が long では足りなくなったためだ。

既存のソースでは atol を使っていたので、安直に atoll にすればよいかと思ったが、これがうまくない。無いみたいなのだ。

 AIX5100-09 % oslevel -r
 5100-09
 AIX5100-09 % lslpp -hac bos.rte.libc | sort | tail -1
 /usr/lib/objrepos:bos.rte.libc:5.1.0.69::COMMIT:COMPLETE:07/09/25:10;04;40
 AIX5100-09 % nm /usr/lib/libc.a | grep atol
 ../../../../../../../src/bos/usr/ccs/lib/libc/atol.c f           -
 .atol                T      319216
 .watol               T     1476716
 atol                 D      262148          12
 watol                D      280756          12

一方、AIX 5.2 の libc にはちゃんと装備されているようだ。

 AIX5200-10 # oslevel -r
 5200-10
 AIX5200-10 # lslpp -hac bos.rte.libc | sort | tail -1
 /usr/lib/objrepos:bos.rte.libc:5.2.0.107::COMMIT:COMPLETE:11/27/08:09;41;08
 AIX5200-10 # nm /usr/lib/libc.a | grep atol
 ../../../../../../../src/bos/usr/ccs/lib/libc/atol.c f           -
 ../../../../../../../src/bos/usr/ccs/lib/libc/atoll.c f           -
 .atol                T      305824
 .atoll               T      818548
 .watol               T     1473336
 atol                 D      274048          12
 atoll                D      274060          12
 watol                D      292824          12

AIX 5.1 は既に EOL なので、今さら libc が更新されるとは考えにくい*1。念のため最終FIX (Post ML9 Bundle) まで確認したが、やはり存在しないものは存在しない。仕方がないので strtoll を用いて書いた。書いてみてからいろいろ探ったら、手もとにあった FreeBSD の libc のソース*2によれば、atoll とは strtoll の wrapper のようだ。テストもうまく通った。

規格に照らしてみれば、atoll は C99 に含まれるようだ。逆に言えば C90 には含まれていない。

要するに 5.2 以上に上げなさい…ということで FA と言えよう。

2009-01-10

JavaVM のオプションにはまる

| 11:10

Tomcat の使っているメモリの状況を外部からモニタしたいと思って調べたところ、いまどきはいろいろと便利なオプションがあることがわかった。自分の脳内は Java 1.4.0 で止まっていたので、いい勉強になった。

まず一つは、JAVA_OPTS で設定する内容と、その出力先の関係。

  • -verbose:gc を付けるだけ。

勝手に GC の状況がげろげろ吐かれる。標準出力へ流れて行く。

  • -verbose:gc と -Xloggc:/some/where/gc.log の組合せ。

勝手に GC の状況がげろげろ吐かれる。指定したファイルへ流れて行く。ファイルの吐かれるディレクトリが存在しない(ファイルが作れない)場合、標準出力に流れて来るようだ。

  • -X:+PrintClassHistogram を付ける。

SIGQUIT (番号で言うと 3) を送ると、スレッドダンプとともにヒープの情報、クラスのヒストグラムが出力される。ヒストグラムは「インスタンス数」「サイズ」「名前」の一覧。出力は標準出力に送られるようだ。

  • -Xloggc:/some/where/gc.log と -X:+PrintClassHistogram の組合せ。

SIGQUIT (番号で言うと 3) を送ると、スレッドダンプとともにヒープの情報、クラスのヒストグラムが出力される。クラスのヒストグラムだけ、-Xloggc で指定したファイルへ吐かれる。スレッドダンプやヒープの情報は標準出力に送られる。

これらは Sun の JavaVM の話。

さて、本当に知りたいのは IBM の JavaVM で同等のことをする方法なんだが…、困ったものだ。