2011年1月28日金曜日

read -r で IFS で定義しているデリミタを

メモ。

read で読み込むデータ内に IFS で定義しているデリミタ文字があった
場合は、その文字をバックスラッシュでエスケープして read のオプショ
ンに -r をつけると良い。

2011年1月27日木曜日

mew で Multipart/Alternative を見る

単なるメモ

'-' マーク Multipart/Alternative で Text/Plain が同梱されてない
もしくは空のメールは、":" で中身展開、"," でテキスト表示。

いやしかし、昨今のEメールの形式は以前の常識(マナー)を無視していて、
Gmail やら Outlook やらもう好き勝手にやってる感じ。

describe-variable

2011年1月20日木曜日

pack() unpack()

どうも perl の pack(), unpack() がいつまでたっても身につかない。
初歩的すぎる話題だけどいつもなんだかんだで調べちゃう。だから恥ず
かしいけどここにメモっておく。

例えば Hex の "5a" なんてのは "Z" だけどこの変換を行うには以下。

 $bstr = pack("H*", "5a");

第二引数が Hex だよんてことを第一引数で定義してる。第一引数の
種類はリファレンスで調べて。この部分の *は後に続く文字列の数
でもよい(*は最後までという意味) 。例えば上記の場合 "H1" なん
てしちゃうと、はじめの "5" だけをバイナリ変換しちゃうので 0x50
のバイナリ表現が $bstr にはいっちゃう("P"という文字だけど)。

で、unpack はその逆で、バイナリ文字列を Hex 表現等にしたりする。

だから上記の結果の $bstr を unpack("H*", $bstr) なんてすると、
"Z" の Hex 表現の "5a" が得られる。

ちなみになんで pack とか unpack の話題だったのかというと、slappasswd
で得られるパスワードを base16 にしたかったのです。

この場合は、slappasswd で得られる文字列は base64 なのでこれを
デコードしてバイナリ化、んでそれを unpack("H*", )すれば base16
な表現が得られるというわけ。

2011年1月13日木曜日

2011年1月5日水曜日

gentoo で xxxx has already been started.

gentoo の init.d のスクリプトで上記エラーがでた場合、zap オプション
でリセットできるというメモ。