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