tDiary 面白いです。完全に移行を決定しました。 あおきにっき つっこみつき です。
そういえばこのサイトはなんで / と /~aamine/ に分かれているのだろう。 よくよく考えると分ける意味ないよなあ。/~aamine/ に置くのは日記だけにして、 読みものは全部ルートに持っていこうかな。
ruby コンパイルしてたらサーバークラッシュ。やめて。
復旧した。 しかし次はないかもしれないので急いでバックアップを作ることにする。
やっと tDiary が設定できたぞー! と思った瞬間、 この日記をアップするために rsync --delete が動き 全部消してしまった……(泣)
というわけで tDiary を始めました 。
わたなべさんにも指摘されてた のを見逃していたぁー。
sed -n '/^[a-zA-Z]/{;/[{;]/d;s/)/)\
/;p;}' array.c
ううむ、確かにちゃんと動いている。定義の途中に #ifdef が あっても大丈夫だ。
しかしわたしにはもはや何が何やら。man sed とウェブに頼って 解読すると…… -n がデフォルトの出力抑止、その次の {...} は コマンドブロックだな。するとセミコロンは文区切りと見た。 ということは、整形するとこうか。
/^[a-zA-Z]/ {
/[{;]/d
s/)/)\
/
p
}
これならわかる。「^[a-zA-Z]」にマッチした行に対して以下を実行…… 「[{;]」にマッチした行は捨て、「)」にマッチした行を「)\n」に置き換え、表示。 ということだな。Ruby で同じように書けばこうなる。
ARGF.grep(/^[a-zA-Z]/) do |line|
next if /[{;]/ === line
print line.sub(/\)/, ")\n")
end
うーん、こうして見るとツールの知識がないことより 発想 (パターンの見極め) が悪かったのがうまくいかなかった原因なのだな。 今回は「関数ごとに空行」を「返り値宣言の前に改行を入れる」 または「パラメータ宣言の後に改行を追加」という思考に転換できるか (そしてパターンをうまく見付けられるか) どうかが最大のポイントか。
指定した数だけ一気に pop してくれるコマンドはないのかあ。 popd +2 が一見それらしいかと思ったけど、単に指定したもの (ひとつ) を スタックから消すだけだし、そこに cd してくれるわけでもない。 つーわけで関数を作ろう (少しは学習したらしい)。
function po {
if [[ $# -eq 0 ]]
then
builtin popd
else
i=$1
while [[ $i -gt 0 ]]
do
builtin popd
((i--))
done
fi
}
シェルも楽しいなあ。
Copyright (c) 2000-2002 Minero Aoki
<aamine@loveruby.net>
This site is link free.