2008/05/18

日曜の朝食

Image: IMG_0866.JPG

これが

Image: IMG_0863.JPG

こうなりました。

2008/05/17

iSCSI Initiator on FreeBSD

職場で iSCSI のハードウェアの検証をする事になり、 Buffalo の TeraStation を購入した。
仕事関係では Linux の Initiator から接続できれば OK なのだが、 折角なので FreeBSD でも試してみた。

生活環境としているのは FreeBSD 6.3-RELEASE-p2 なのだが、 残念ながら iSCSI は FreeBSD 7.0-RELEASE でサポートされた機能の様なので、 こんな事もあろうかと(うそ) ThinkPad X30 にインストールしてあった FreeBSD 7.0-RELEASE で試してみる。

# kldload scsi_initiator
# iscontrol -d -t IPアドレス
TargetName=iqn.2004-08.jp.buffalo:TS…
TargetAddress=IPアドレス
# cat << EOF > /etc/iscsi.conf
> name {
> 	TargetName=iqn.2004-08.jp.buffalo:TS…
> 	TargetAddress=IPアドレス
> }
> EOF
# iscontrol -n name
# ls /dev/da*
/dev/da0    /dev/da0s1
ドライバをロードした後で iscontrol (8) コマンドを実行して target を検索したら /etc/iscsi.conf に設定を保存して 再度 iscontrol (8) コマンドを実行。
をを! ちゃんと /dev/da0s1 が生えてくる!

結構感動した

2008/05/16

トラックバックって?

今更 Blog を始めたので知らない事が一杯ある。 そもそもトラックバックって何だろう?
今更人に聞けない(苦笑) 誰かこっそり教えてください、偉い人

コメントを書こうとしたらスクリプトエラーになってしまった orz
日本語のコード変換用に Jcode.pm が必要なのだが、 Jcode.pl をインストールしてしまったらしい。
最近の perl (1) は良く判らない 最近じゃない?

2008/05/15

枇杷

ゼリーやソフトクリームなど加工されている枇杷を食べる機会は結構あったのだが、 何故か果実としては食べる機会が全然無かった。 掛け値なしに数十年ぶりに果実の枇杷を食べた。
Image: IMG_0854.jpg

美味しかった

2008/05/14

Mont St. Clair

地元の有名な(らしい、土日はいつもお店の外まで行列している)ケーキ屋さん。
確かにとても美味しかった♪
Image: IMG_0856.JPG

しかし、こんな時間にケーキを食べてるなんて…カっカロリーがぁぁぁあ

2008/05/13

grep & awk

grep "^HOGEHOGE" file | awk 'BEGIN { FS = "="}; { print $2 }'
というコード。一見何も問題ない様に見えるし確かに動作はするが、 CPU とプロセスと時間の無駄遣いである。

awk (1) には拡張正規表現が実装されているで、

awk 'BEGIN{FS="="}/^HOGEHOGE/{ print $2 }' file
とすれば grep (1) の分だけ CPU やプロセス、時間が節約できる。

sed -n '/^HOGEHOGE/s/^.*=//p' file
とするのも等価かな。
行指向の処理であれば煩雑な awk (1) よりも sed (1) の方が見やすいので、 個人的には sed (1) を利用した方法がお勧め。

シェルスクリプトに限らずスクリプト言語で記述されたプログラムは、 source file が直接人の目に触れる可能性が高いので、 恥ずかしくないプログラミングを心がけたいと思う。

  • export (1) しないシェル変数は全て小文字で書く。
  • [ -z "${foo}" ] && foo="FOO"
    
    という書き方でも問題ないけど、
    ${foo:-FOO}
    
    と記述した方がすっきり記述できるし意味が判りやすいのでお勧め。
  • trap (1) で 0 を指定するとスクリプトが正常終了した時にも 指定した処理が実行されるので、
    プログラム中で作成した一時ファイルの削除などにはもってこい。
  • grep (1) や cut (1) と awk (1) や sed (1) を組み合わせて使うのは、 殆どの場合において CPU とプロセスと時間の無駄遣い。
    あまりにも複雑な正規表現が必要な場合や 処理が煩雑になる場合は勿論この限りではない。
  • エラーメッセージは標準エラー出力に出そう。 unix を使う上では基本中の基本です。
  • インデント幅はスクリプト内で統一しましょう。 Tab でも スペース何個でも OK ですが、 1ファイルの中のインデント位は合わせないと恥ずかしいです。
  • ${PATH} は信用せずにフルパスをシェル変数に代入して使う様にしましょう。
    たまに ${PATH} に "." を含める脳障害としか思えないアホがいるので、 スクリプト中で使用するコマンドは
    foo="/path/to/foo"
    :
    ${foo}
    
    な感じで使うが良いと思います。
    foo="echo /path/to/foo"
    
    スクリプトのデバッグ中はこんな感じに変更しとくと mv (1) や rm (1) の様なコマンドの実行を抑止できる。
    logger="/usr/bin/logger -p daemon.err -t ${myname}"
    
    なんて設定しとくと共通のロギング処理にもなるので安全便利。
    linux 環境だと /bin/sh が bash だったりするので、 設定によっては cp や rm などが、 cp -i とか rm -i などの様な迷惑千万な alias に設定されていても スクリプトの動作に支障をきたさない。
    シェルの内部コマンドも含め全てのコマンドは execv (2) 可能でなければならないと POSIX で決まっているので、 POSIX 準拠を詠っている OS であれば全てのコマンドが揃ってる(筈)。
  • 複数行に渡る長いメッセージや固定データは echo (1) ではなく てヒアドキュメントを。
    echo "………" > ${output}
    echo "………" >> ${output}
    echo "………" >> ${output}
    
    などと書いていると途中行を修正する時に ">>" をついうっかり ">" にしてしまったりする間違いをする危険性が高いので、
    cat << EOF> ${output}
    ………
    ………
    ………
    EOF
    
    と記述する様にすれば安心確実です。
  • スペースで区切られたデータの構文解析は set (1) を活用しよう。
    年、月、日 をそれぞれ $year、$month、$date に代入する処理は素直に書けば
    date=`date '+%Y %m %d'`
    year=`echo $date | awk '{ print $1 }'`
    month=`echo $date | awk '{ print $2 }'`
    day=`echo $date | awk '{ print $3 }'`
    
    な感じになるが date (1)、echo (1)、 awk (1) の呼び出しが煩雑になる。
    それならば
    set `date '+%Y %m %d'`
    year=$1
    month=$2
    day=$3
    
    の方が CPU やプロセス、時間の節約になる。
    勿論位置パラメタは上書きされるので必要な値は事前にシェル変数に保存する。
  • bash や zsh に依存した処理は絶対使わない
    勿論 csh スクリプトなんて論外。

2008/05/12

ごろごろ

朝仕事に行く前にセンターテーブルを端に寄せて 狭いながらもスペースを確保してみた。
帰ってくるとのびのびと部屋の中を転げ回っている姿が♪


当然一緒にゴロゴロして暫く遊んであげた遊んでもらった。

癒される〜

2008/05/11

ThinkPad T43

アメリカに注文していたタッチパッド無しのパームレストが到着。
やっぱりタッチパッドが無い方がすっきりしていて良い感じ

アメリカでは BTO でタッチパッド無しも選択できた様だが (だからこそ部品で入手可能)、 日本ではそんな選択肢が提供されていないのが非常に残念。

Image: img_0853.jpg

2008/05/10

迷惑メイル

最近携帯電話への迷惑メイルが非常に増えている。
多い日には1日に10通以上届く。
結構気に入っているメイルアドレスなので変更したくないのだが、 このまま迷惑メイルが増え続けると何らかの対策が必要になりそう。

迷惑メイルを送り続ける馬鹿どもには困ったモノである。

2008/05/09

三種混合ワクチン

今日、三種混合ワクチンの接種に行ってきたらしい。
針が刺さった瞬間にちょっとだけ「わぁ〜ん」 と泣いたけど、 すぐに泣きやんだそうな…

パパに似て強い子に育っているみたいだ♪


Copyright © Mitzyuki IMAIZUMI 2008,2009. All rights reserved.