Mon Feb 02 10:40:34 JST 2009

apache で configure かける時に、どのモジュールが有効になるのかよくわからない。 「enable-mods-shared=most」に含まれるモジュール一覧って、 簡単にわかる方法はないのかしら…。


Sun Feb 08 02:58:32 JST 2009

ssh でログインしたログは syslog に吐かれるが、ログアウトしたログは吐かれないな。 と思って調べてみたところ、LogLevel を VERBOSE にすれば吐かれるようだ。 もちろん、それ以外にも余計なものがぼろぼろ吐かれるようになる。

ちょうどいい感じに調整するのは難しそうだ。 AIX の last が (wtmp が) 壊れなければ、こんなこと気にしなくていいのにな…。

Libretto に bsdstats を入れようと思ったが、無かった。ports ツリーが古すぎる。

cvsstat というのを見つけたので、入れてみた。

% ls
CVS/            dxo/            fpao/           service/
dao/            entity/         interceptor/    util/
dto/            exception/      logic/          web/
% cvsstat

cvsstat: /xxx/xxx/xxx/src/main/java/xx/xx/xxx


 4 dir(s) locally missing - update !
================================================================================
   converter
   helper
   validator
   web/ip
================================================================================

 77 file(s) up to date

こんな風に一覧が出るんだが、便利か?微妙…


Sun Feb 08 08:17:54 JST 2009

「前日の日付を求める」のは、真面目にやろうとするとシェルスクリプトでは難しい。 しかし、真面目にやろうとしなければ、シェルスクリプトなら簡単にできる。

% env TZ=JST+15 date

環境も汚さないし、見た目にもわかりやすいし、コストも低い。


Thu Feb 12 13:54:51 JST 2009

PukiWiki の tag プラグインが新しくなっているようなので、入れ替えてみた。 設置方法に関するドキュメントが見つからなかったが残念。以下、試行錯誤の結果。

  • cd work
  • unzip lsx-v2.1.zip
  • find . -type f -exec chmod 644 {} \;
  • find . -type d -exec chmod 755 {} \;
  • mv * /some/where/already/exists/pukiwiki/plugin

これまで

 #tag

と書いたらタグクラウドになっていたが、 後方互換性は用意されていない。 おとなしく

 #tagcloud

に書き換えるがよい。


Fri Feb 13 19:51:16 JST 2009

Eclipse Galileo = 3.5 M5 が出た。落してみたが、さてドコに入れよう。


Fri Feb 13 20:12:20 JST 2009

会社置き去りマシンに入れてみた。とりあえず起動。

  • スプラッシュは 3.4 (Ganymede) といっしょみたい。
  • 何か速い気がする。
  • JDT の What's new を見てみたが、3.4 のままだった。

面白そうだから使ってみることにするか。 しかし、何を面白がればいいのかわからない。 What's new 的なものは無いか、とググってみたところ、 3.5 の New and Noteworthy のまとめ を発見した。ここで出ている URL のルールに従って叩いてみたら、 3.5 M5 の New and Noteworthy も発見できた。 というわけで、ざっと見てみた。気になったところは以下の通り。

  • 3.5 M1 : Improved Javadoc view and hover
    @inheritDoc に対応してくれた。
  • 3.5 M2 : Open Resource dialog allows choice of editor
    「Open Resource」ダイアログで右クリックしてあげると、エディタが選べる。
  • 3.5 M2 : New Compare With Other Resource dialog
    フォルダ単位で compare ができるぜ、的なことが書かれている。ほほぅ。
  • 3.5 M3 : Build path supports ".."
    CLASSPATH 指定で、「..」が使えるようになる。使うかな?
  • 3.5 M4 : Compiler problem for dead code
    絶対通らないコード (dead code) を見つけることができるようになった。
  • 3.5 M4 : Formatter option to preserve user line breaks
    これは便利そうだ。わざわざ「意図して」改行しているのに、 フォーマッタが勝手に繋げてくれるから汚くなってしまう、 という場合には、これを使えば自分で入れた改行を維持してくれる。よさそう。
  • 3.5 M5 : Block selection mode in textual editors
    矩形選択か。使うかな?
  • 3.5 M5 : Set encoding in Compare Editor
    うぉ、これ、すごくないか。 左右で違うエンコーディングのファイルを比較できるのかな。 試してみたところでは、コンテキストメニューに「Set Encoding ...」が 現れてはいるものの、選択しても何も起きないようだ。まだなのかな?
  • 3.5 M5 : Quick Fix to start rename refactoring
    Ctrl 1 の Quick Fix から、Rename が行けるようになるようだ。 リファクタリングの中で最も使うのが Rename な気がするので、これは便利だ。
  • 3.5 M5 : Constructor completion
    コンストラクタの補完が効くようになる。あれ、今までできてなかったっけ?

主に JDT のところしか見ていないが、確かに面白そうだ。


Fri Feb 13 23:15:47 JST 2009

これまで高圧縮用途には bzip2 を使ってきたが、lzma なる拡張子を ring で 見つけたので、試してみた。

元ファイル        396707840 bytes

bzip2 圧縮サイズ   18384518 bytes
bzip2 圧縮時間     478.03s user 1.08s system 98% cpu  8:08.01 total
bzip2 伸長時間      35.51s user 2.31s system 94% cpu    40.054 total

lzma  圧縮サイズ    9415795 bytes
lzma  圧縮時間     838.07s user 1.06s system 98% cpu 14:11.72 total
lzma  伸長時間       4.72s user 1.34s system 50% cpu    11.894 total

lzma の圧縮率は、bzip2 の二倍。とても小さくなっている。 しかし、処理時間も bzip2 の二倍。これは非常に困るくらいの処理時間だ。 ところが伸長時間は異様に速い。これはこれで魅力だ。 使いどころが悩ましい、ということか…。

某システムの過去ログは、現状 bzip2 で保存しているが、lzma に変換しても よいかもしれない。


Sat Feb 14 00:38:53 JST 2009

AIX 6.1 で色々なものがコンパイルできない事件について、 ようやく手がかりが得られた。

それは、config.guess が悪い、ということだ。

古い config.guess は、「rs6000-ibm-aix」を返す。 昨今の config.guess は、「powerpc-ibm-aix6.1.0.0」を返す。 この挙動の違いにより、特に shared object を作る系のもの …つまり libtool が頑張る系のもの… は、軒並アウトである。

具体例としては、Aapache 2.2.x がうまくいかない。 configure も make も通るのに、make install すると

Warning!  dlname not found in /usr/local/apache/modules/mod_authn_file.la.
Assuming installing a .so rather than a libtool archive.

のような警告がたくさん (モジュールぶん) 出力されて、それで終りだ。

回避策として、やや強引な workaround を編みだした。それは、 GNU の build tool を入れて、それに含まれる config.guess を使う という単純な話である。 たまたまうまく行っているだけかも知れない。 もちろん、万能な回避策だとは考えないでほしい。 しかし、材料として、何と何を入れたかをメモしておく。

  • m4-1.4.12
  • autoconf-2.63
  • automake-1.10.2
  • libtool-2.2.6

Platform が新しすぎるというのも、考えものであるな… (慨嘆)。


Mon Feb 16 02:00:56 JST 2009

TugBoat.GTD 入れてみた。動かないね。ぜんぜん動かない。

ぜんぜん、ということも無いか。ユーザ (自分) は登録できた。 しかし、タスクが登録できない。 タスクが登録できなければ GTD も何もあったもんじゃない。

まだログを見たりソースを見たりする気にはならない。


Mon Feb 16 02:31:31 JST 2009

ログを見たら一撃だった。いや、二撃くらいか。

  • エラーメッセージ
    Can't load a Japanese tokenizer: null
  • ggrks
  • tugboat_gtd.properties の書き方の問題。
    • product.tugboat.gtd.search.searchIndexFolder は、フルパスで。
    • product.tugboat.gtd.search.sen.home_dir も、フルパスで。

デフォルト値が相対パスで書かれているから、相対パスで大丈夫なのかと思った。 面倒なので deploy されたファイルを直接修正して tomcat 再起動、にて動作した。

本家を見ても、新しいリリースの情報は無いですね。 version 1.0 は遅れているようです。 遅れるなら遅れると宣言すること、黙らないこと。が大事だと思いますがねぇ?


Tue Feb 17 01:27:45 JST 2009

トライステートの NTP キット、TS-JJY02 を自宅に持って帰ってきた。 会社で使っていたのだが、用なしということで。 で、せっかくなので、自宅マシンに繋いでみることにした。 手順はざっと以下の通り。ちなみに自宅マシンはかなり昔の 7.0-STABLE である。

まず ntp を入る。 キットを組み立てた当時は FreeBSD の標準 ntp は、このデバイスを扱えなかったから。 現在は標準 ntp でも行けるのかもしれないが、調べてもいない。

# cd /usr/ports/net/ntp-devel/
# make install clean

デバイスは、devfs に作ってもらう。シリアルが /dev/jjy0 として見えればよいので、 以下のような具合である。

# vi /etc/devfs.conf
link    cuad0   jjy0
# /etc/rc.d/devfs restart

ntp.conf を書く (書き換える)。ちなみに以下サンプルに出てくる 192.168.0.10 は、 internet から時刻を貰っている自宅ルータ (Libretto 100) の LAN 側アドレス。

# vi /etc/ntp.conf
server 192.168.0.10
server 127.127.40.0 prefer mode 1
fudge  127.127.40.0 time1 0.070
driftfile /etc/ntp.drift

これらのパラメータは、会社で動いていた時のものをそのまま持ってきた。 さて、仕込みは終りなので、rc.conf を修正して起動する。

# vi /etc/rc.conf
ntpd_enable="YES"
ntpd_program="/usr/local/bin/ntpd"
ntpd_flags="-x -p /var/run/ntpd.pid -f /var/db/ntpd.drift"
# /etc/rc.d/ntpd restart

あとは動作を確認するだけだ。

# topless ntpq -pn

会社より自宅のほうが圧倒的に電波の入りが良い。 スパっと時刻が同期して気持ちが良い。 これでラジオ録音が時間ぴったりに始まると思うと、妙に嬉しい。


Tue Feb 17 22:57:18 JST 2009

外出時に使っていると、バッテリの残りが気になる。 zsh には (tcsh と同様) RPROMPT を設定できるので、ここに表示することにしてみた。

まず、$HOME/bin/ に「watchBattery」というスクリプトを作成。 以下のような具合だ。

#!/bin/sh
# sysctl depends on kernel (and the world)
# at FreeBSD 7.0-STABLE #0: Mon Mar 31 17:59:18 JST 2008
escape=""
case "$1" in
zshprompt)
  escape="%"
  ;;
esac
sysctl hw.acpi.battery.life hw.acpi.battery.time | awk -v escape=$escape '
BEGIN {
  life = "x"
}  
{
  if (life == "x") {
    life = $NF
  } else {
    time = $NF
    if (time == -1) {
      time = "AC"
    } else {
      time = time "min"
    }
  }
}
END {
  printf("%s%%%s %s\n", life, escape, time)
}'

軽くしようと思ったが、awk を使う以外に良い選択肢を思いつかなかった。

さて、このスクリプトは以下のように動作する。

■AC 動作の時
% watchBattery
70% AC
■バッテリ動作の時
% watchBattery
70% 124min
■引数指定の時
% watchBattery zshprompt
70%% AC

引数指定で動作を変えているのは、prompt に設定する時に % 単体だと「何かだ」と 解釈されてしまうため、エスケープしているだけだ。

このスクリプトを用いて、以下のように precmd を設定する。

function precmd {
  if [ "$rBatteryInfo" = "yes" ]; then
    RPROMPT=`$HOME/bin/watchBattery zshprompt`
  else
    unset RPROMPT
  fi
}

これで、シェル変数「rBatteryInfo」が「yes」の時のみ、 RPROMPT としてバッテリの状態が表示されるようになる。 シェル変数「rBatteryInfo」が未設定の時に RPROMPT を解放しているのは、 普段我輩は RPROMPT を使用していない、というだけだ。


Mon Feb 23 13:22:23 JST 2009

どこかに書いたと思うのだが、見当たらないのでもう一度書いておこう。 IP アドレスをソートするには、以下のようにする。

% sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4

挙動の説明としては modboa がわかりやすい。
「ヘイ、sort! 俺は番号のリストを持ってて(-n)、 そいつらは "." で区切られた(-t .)枝番を持ってるような感じなんだ。 で、最初のフィールドをそのフィールドだけでソートして(-k 1,1)、 二番目のフィールドをそのフィールドだけでソートして(-k 2,2)、 …そんな感じで並べ替えてくれたまえ!」 って感じか。


HOME | index | prev | next
[Rev: --not under control--]
[EOF]