hogeとはワイルドカードのようなものです。日々起こった、さまざまなこと −すなわちワイルドカード− を取り上げて日記を書く、という意味で名付けたのかというとそうでもありません。適当に決めたらこんな理由が浮かんできました。
07/01/2003 7 [長年日記]
■ [ニュース] ウイルス「ムム」で20件被害
無無剣を思い出した.
■ [ニュース] Xboxハッキンググループ、米MSにLinux公式ブートローダーを要求
あっはっは,こりゃいいや.
07/02/2003 うぉ [長年日記]
■ [日記] 星村麻衣
マジで!? 中学2〜3年の時同じクラスだった知合いがドラマの主題歌を歌ってるなんて信じらんねぇ.すげーよマジで.世間は狭いなぁ.
しかし励みになるね.ぜひ頑張って欲しい.俺も負けてらんねー.
from Matzにっき
追記:星村さんつながりでジモッティつーか同級生発見.いやはややっぱり世間は狭い.さて俺としてはmputさんの正体が気になるところ(わら
■ [Gentoo] パッチのコンフリクト
前々からどうも xmms の ebuild が emerge 通らんなと思ってたら sf.jp や ML によると俺だけじゃなくてみんなそうだったらしい.むぅ.ロシア語のサポートと SJIS な文字も読めるようにするパッチとがぶつかってたためらしい.
しかし日本,中国,韓国のサポートを分けるのとも関連してくる*1けど,例えば各言語ごとにUSEフラグを分けるとすると,このロシア語サポートの例を見ると,考えられる可能性として
- jaなパッチのみ当てる (USE='ja')
- ruなパッチのみ当てる (USE='ru')
- どちらも当てる (USE='ja ru')
- どちらも当てない (USE='')
の4つの可能性が考えられる.1,2,4の場合なら特に問題はないけど,3の場合にコンフリクトする.かと言ってjaパッチやruパッチをどちらも当てる場合に考慮して作り直すとなると,今度は1,2の場合に支障をきたす.かと言ってそれぞれの場合に応じたパッチを用意するのは現実的でない.この場合は2つのパッチだけど,3個も4個もコンフリクトする場合だって出てくるだろうから.
全てはパッチが行番号を見てるということに起因してるんだけど,こればっかりはどうにもならん気がする.USEフラグに応じてコンフリクトするパッチをマージできるような機構を作るのが一番良いんだけど,そんなことできるのなら誰かやってるよなぁ.今も昔もパッチが当たるの当たらんのって問題は実に多い.
うーむ難しい問題だ.
■ Googleに訊け!
最後の質問とその回答がナイス.
■ [ニュース] 次世代コミュニケーションデバイス
リング型カメラはすごいな.アクセサリとしてはどうかと思うが輪っか覗いて撮影ってのは面白い.
■ [Bash][Tips] グルーピング
さてこないだ出てきた { } だけど,これは一種のグルーピングをするものだ.つまり一連の処理を一つのグループにまとめている.数式に出てくるカッコのようなものだと考えることもできる.こないだの例だと
$ make clean && { echo "cleaned."; make; } || echo "clean failed."
となってるけど,これをもし
$ make clean && echo "cleaned."; make || echo "clean failed."
に変えたらどうなるだろうか.答えは,
$ { make clean && echo "cleaned."; }; { make || echo "clean failed."; }
と同義になってしまうのだ.&& や || よりも ; の優先度が低いと考えることもできるが,それは当然のこと,; というのは改行の代わりなのである.つまり
$ echo hoge; echo foo
$ echo hoge
$ echo foo
この二つの例はどちらも同じ意味であることが分かるはずだ.
…話がそれたけど,これでは,make clean が失敗しようが成功しようが,少なくとも make は実行されてしまうことになる.それでは意図と違う.そのため,こないだの例では make clean が成功したら { echo "cleaned."; make; } を実行するようにしてあるのだ.また,複数のコマンドの結果をリダイレクトやパイプしたいときにもグルーピングが便利だ.例えば
$ { make clean && make; } > make.log
などとすると,make clean の出力と make の出力の双方がリダイレクトされる.注意点としては,{ と } とコマンドの間にはそれぞれ空白を入れなければならないことと,コマンドの最後に ; を入れなければならない*2ことだ.
これと似たものに ( ) があるけど,これはサブシェルと呼ばれるもので,基本的に別物だ.更に微妙に挙動なども違うので混同しない方が良い.この ( ) についてはまた今度.
07/03/2003 む [長年日記]
■ [小ネタ] 恋愛頭脳
あっはっは,「変」が3つもあったよ.俺ってそんなに性欲強かったのか,知らんかった.つーか「印象」が「特にありません」って酷くない?
atzmさんにとっては、男女関係にあまり没頭するのは好ましくないようです。ヒマな人や寂しがりやな人と付き合うとトラブルも多そうですが、その気持ちも汲めればさらにatzmさんの恋愛観は磨かれることでしょう
んー全くその通りで.俺には没頭したいことが山ほどあるんじゃ.
atzmさんはルックスにわりと無頓着であると言えるでしょう。異性のルックスにあまり執着しない点は好感がもてますが、atzmさん自身のルックスに無頓着であることは一般的に好感を持たれません。自分を磨くことは忘れずに
自分のルックスには割と気を遣ってるつもりなんですけどね.相手のルックスはどうでもいいけど.
atzmさんは一般レベルよりかなり駆け引き重視に偏っています。テクニックを駆使して相手より優位に立つ恋愛を無意識のうちに繰り広げていませんか?このテの恋愛は自分はラクですが、気づけば相手が疲弊していたり、別れた後にむなしさが残ったり…
しねーよ!(わら
性に関しては強欲の部類に入ります。性の重要性は言うまでもありませんが、どうやら一般平均はatzmさんよりはもっと冷静で淡白のようです。好きとか嫌いとか、そんなのはまやかしや余計なものだと思っていませんか?すきやきで肉しか食べない人のようです
ぎゃはははは! ひでえ言われよう.そりゃ肉は好きだけどさ.
おお,相性チェックなんてものもあるのか.彼女にやってもらおう.
from mput の日記。
追記:彼女にやってもらったら相性100%とか出たらしい.しかし△が2つもあって100%ってなんかヘンじゃない?
■ [ニュース] 初のPerl 6本 "Perl 6 Essentials"
…このコメントに全く同意.
- 6本? 何が6本あんの?
- 六法の間違い? Perlの6つの原則とか?
- クックブックみたいなもん?
と妄想三段締めしてしまった自分.
■ [ニュース] Linus 「Linux 2.6 のβ版が出るよ」
やっとかー,でも 2.5 が 2.6 のβ版なんじゃないの?
■ [ニュース] 夏休みの工作はLet'snoteだ
欲しいぞ,やらせろ.俺は15h歳だからいいだろ.
■ [小ネタ] いくら漏れても大丈夫
東京雷刀ってなんかヤイバ思い出すな.
■ [小ネタ] GNU GPL で描く RMS
これぞアスキーアート.最近のAAと呼ばれるものはASCII文字以外で作られてるのでアスキーアートとは言えんのですよ.:-)
■ [Bash][Tips] サブシェル
サブシェルの話.グルーピングとは違って,別のBashプロセスを生成して,その中で処理をするのがサブシェルだ.基本的にグルーピングとは別物と考えた方が混乱が少ない.例えば
$ pwd
/home/atzm
$ mkdir hoge
という状態であるとき,次の2つの処理をやらせてみると違いが明白だ.
$ ( cd hoge ); pwd
$ { cd hoge; }; pwd
前者では最後の pwd で /home/atzm が返ってくるのに対して,後者では /home/atzm/hoge が返ってくる.つまりカレントディレクトリが cd によって移動されたままだ.
サブシェルでは別のBashプロセスを起動して,その中でカレントディレクトリを移動し,カッコが終わるとそのプロセスは消える.すると元のシェルに戻る.元のシェルでのカレントディレクトリは /home/atzm である,というわけだ.上のサブシェルの例は,
$ bash
$ cd hoge
$ exit
$ pwd
とほぼ等価というわけだ.また,サブシェル内で代入された変数なんかもサブシェルの終了とともに消え去る*1.注意点としては,グルーピングと違ってカッコとコマンドとの間に空白が必要ないこと,コマンドの最後にセミコロンが必要ない,といったところか.まぁ別にあっても構わないからグルーピングの方に合わせておくと楽かも.
さてこれがどういうときに便利かというと,例えばカレントディレクトリ内の全てのディレクトリで make を実行したい,なんて場合なんかに便利だ.そういうときは
$ for dir in *; do if [ -d $dir ]; then ( cd $dir; make ); fi; done
あるいは
$ for dir in *; do ( cd $dir 2> /dev/null && make ); done
という感じだ.メタ文字を含む名前のディレクトリが存在する場合は "${dir}" とした方が良い.
この if とか for とか 2> についてはまた今度.
*1 exportしてしまうと残るけど.
07/04/2003 も [長年日記]
■ [日記] 思い出
今日昼飯に鰹のタタキを食ってたら,不意に千葉に住んでるばーちゃんを思いだした.ハテ何で突然…って考えてたら,ああそういうことか,この鰹のタタキにはミョウガが入ってるみたい.懐かしい味だ.
小さい頃,ばーちゃんの家に遊びにいくと決まってミョウガ入り味噌汁が夕飯の時に出たものだ.それで思い出したんだろう.
俺の記憶は食い物に連結しているらしい.ばーちゃん元気かなー.
■ [ニュース] 国際クラッキングコンテストにご用心
むーん…ここも何かやっといた方が良いんかいな?
■ [日記][ソフト] Namazu
いい加減,日記の量が増えてきたので Namazu を入れて日記内検索を行えるようにした.cronに登録しといたので1日1回インデックスが更新されるはず.さてしばらくは様子見かな.
■ [小ネタ] 疑似恋愛特集の全貌
昨日のアレの全貌.なんかマネーの虎のチャンコ思い出した.
そういや昨日家帰ってふとテレビつけたらこの番組やってたよ.ずっと見てたわけじゃないからよく分からんけど,なんか官能とか声優とかどうのこうの言ってた気がする.エロゲ声優の話かな?
■ [小ネタ] KARATEKA TURBO
うますぎ.
■ [Gentoo] webapp.eclass
そういやこんな提案があったっけ.コレ使って tDiary の ebuild 作れるんじゃないかな.
■ [日記] Google
Wanderlust でメール本文の検索をどうやってやるのか調べてたんだけど,Google って「メール」で検索しても「メイル」が引っかかるということに気づく.おぉ Google さすがだ.
しかし肝心の本文検索のやり方は分からず.とほー.Namazu あたりでやるしかないのかなー.
■ [Bash][Tips] ファイルディスクリプタの連結
Bash には標準入力,標準出力,標準エラー出力があって,それぞれ0,1,2でアクセスできる.これはリダイレクションを行うときによく使う.例えば make のログをファイルに残したい場合,
$ make > make.log
などとするけど,これは暗黙のうちに標準出力,つまり1を省いているということになる.厳密に書くなら本来こうなるはずのものだ.
$ make 1> make.log
これは1,つまり標準出力へ吐き出されるものが make.log というファイルにリダイレクトされることを意味する.では標準エラー出力へ吐き出されるものをリダイレクトしたい場合はどうするかというと,もちろん
$ make 2> make.err
となる.
またファイルディスクリプタはそれぞれを連結,つまり例えば本来エラー出力へ吐き出されるはずの出力を標準出力へ吐き出すようにすることができる.端末への出力ならエラー出力だろうが標準出力だろうが関係ないけど,ファイルなどへリダイレクトしたり,パイプさせたい場合に役立つ.
$ make > make.log.all 2>&1
この 2>&1 というのがミソで,これは2(エラー出力)を1(標準出力)に連結するという意味だ.ここで注意して欲しいのが,以下のように書いてしまうと期待した結果が得られないことだ.
$ make 2>&1 > make.log.all
また,2を1に連結してリダイレクトするような指示は,以下のようにも書くことができる.
$ make &> make.log.all
エラー出力への出力をパイプしたい場合,やはり連結すると便利だ.例えば strace コマンドの出力はエラー出力へ吐き出されるが,これをパイプしたいなら
$ strace make 2>&1 | less -r
などとしてやればいい.tee コマンドでエラー出力を操作したい場合も同様に,
$ strace make 2>&1 | tee make.log.all
といった感じだ.
07/05/2003 なmあzみだぶつ [長年日記]
■ [本] Stopping Spam
こんな本がオライリーから出てたとは.
■ [音楽] マリオ
俺の着メロがコンプされてら.…いやどっちかってーと俺がマリオの音楽コンプしたのか.どっちでもいいや.それにしても,このアンカーの「smbros」って狙ってんのかな? SMブラザーズ.
しかし魂斗羅は懐かしすぎる.
from 今日のなんでやねん
■ [ニュース] ハードウェア改造不要のXbox Linux起動方法が公開される
ありゃま,結局MSからは良い返答もらえなかったのね.当り前だけど.
■ [ソフト] UTF-8 decoding error
何やら ninix-aya の CVS版が,天気予報や bottle からの情報を喋ろうとすると UTF-8 decoding error: invalid data とか吐いて死亡するようになった.内部の文字コードが変わったとかかなぁ?
■ [小ネタ] 遊覧船がホットスポットになると?
どわぁ! 見覚えのある風景が….
■ [ソフト] tDiary
久しぶりに cvs up したら挙動が怪しくなってら.00default.rb がエラー出してたので古いやつに差し替えたら動いた.でもupdate画面の「登録」ボタンの横に空白のボタンが…これ何?
あ,よく見たらプレビューとか再編集の画面がなくなってら.うはー.やっぱ俺みたいなヘタレはリリース版使った方が無難かもなぁ.
■ [Bash][Tips] もしも…
Bash はプログラム言語の三つの制御構造を満たしている.三つの制御構造というのは
- 逐次実行
- 条件分岐
- 繰り返し構造
の三つだ.逐次実行とは上から順番に処理を実行していくというルールで,条件分岐は「もし○○が××なら△△を実行する」というような命令,繰り返し構造は「□□が▽▽を満たすようになるまで◎◎をし続けろ」というような命令のことだ.
で,今回のはこの条件分岐.これ Bash ではこれを if 〜 then 〜 else 〜 fi で表現する.簡単な例を見ると,次のような感じだ.
$ if [ "${HOGE}" = "hoge" ]; then echo '$HOGE is hoge'; else echo '$HOGE is not hoge'; fi
if [ "${HOGE}" = "hoge" ]
then
echo '$HOGE is hoge'
else
echo '$HOGE is not hoge'
fi
上記2つの例は全く同じものだけど,さてこれが何を意味するかというと,$HOGE に hoge という値が入っていた場合に echo '$HOGE is hoge' を実行し,そうでない場合は echo '$HOGE is not hoge' を実行する.また,else以下の文は省略可能で,いらないならいらないで書かなくても良い.
if [ "${HOGE}" = "hoge" ]
then
echo '$HOGE is hoge'
fi
条件を複数設けたい場合は elif 〜 then 〜 を繰り返す.
if [ "${HOGE}" = "hoge" ]
then
echo '$HOGE is hoge'
elif [ "${HOGE}" = "foo" ]
then
echo '$HOGE is foo'
elif [ "${HOGE}" = "bar" ]
then
echo '$HOGE is bar'
else
echo '$HOGE is not hoge'
fi
これで,$HOGE の値が hoge であれば,foo であれば,bar であれば…という感じに順番に条件を評価していくことができる.また,if文ではどれかの条件がヒットした段階でその if 〜 fi の文を抜ける.
ちなみにコマンドが返す値を評価して,結果に応じた処理をさせる,なんて場合にも使える.
$ cat > hoge.txt
foo
bar
baz
hoge
boo
huga
piyo
hemo
$ if grep hoge hoge.txt > /dev/null ; then echo "hoge in hoge.txt"; fi
hoge in hoge.txt
$ if grep buge hoge.txt > /dev/null ; then echo "hoge in hoge.txt"; fi
$
あと,意外と知られていない(使われてないだけ?)使い方として,こんなのもある.
$ HOGE=1
$ FOO=5
$ if (($HOGE < $FOO)); then echo "$FOO is bigger than $HOGE."; fi
5 is bigger than 1.
つまり (( )) によって算術評価を行い,結果を if に評価させる.
しかし if はほとんどの場合*1,&& や || で置き換え可能なので,そっちを使う方が楽かも知れない.下記のような書き方ができるからだ(シャレじゃないぞ).
$ [ "${HOGE}" = "hoge" ] && echo '$HOGE is hoge' || echo '$HOGE is not hoge'
$ grep hoge hoge.txt > /dev/null && echo "hoge in hoge.txt"
$ (($HOGE < $FOO)) && echo "$FOO is bigger than $HOGE"
*1 elifを使わない場合のこと.
07/06/2003 s [長年日記]
■ [日記] なぜDebianから…
と思ったらまた台湾….Gentoo と同じ形のフォーラム持ってるのね.全然読めんけど,語感から察するとここの人達は /opt じゃなくて /usr や /usr/local 以下にインストールしたがってるのかなぁ.
なら自分でパッケージングすれば良いのにとか思ったけどそうもいかんのかな.Debian はよく分からん.イヤ少し使ってる手前,知っといた方が良いんだけどさ.
■ [ニュース] 文化財の画像ネット利用、著作権保護策を検討
ん? これってMSあたりが昔買い漁ってなかったっけ.日本のにも手が及んでたかどうかは知らんけど.
■ [ソフト][Linux] Linux でリモコンを使おう
うわーすごい面白そう.…というかコレ未来のPCの形かもね.そのうちリモコンでデスクトップ切替えとかシャットダウンとかできるようになるのかも.
from Yoichi's diary
■ [小ネタ] サイトを1998年テイストにしてみない?
1998年テイストなふーばーばずほげ.ついでに Today's HOGE.み,見づれぇ….
しかし1998年つーと俺がネット始めたあたりかそのちょっと前くらいかな.…何気にネット歴浅いな俺.しかしその頃は確かにこんなデザインが多かったような気もする.
■ [日記] というわけで
説明会終了.んーまぁXSSの実演なんて突発的なアイディアを無理矢理通しちゃったけど,これはこれで良かったんじゃないかな.見学に来た人たちもそれなりに楽しんでくれたみたいだ(と思う)し.やっぱわざわざ遠くから(まさか愛知から来てる人がいるとは思わなかった)来てくれてるのに,話聞くだけで帰るのはちょっとねぇ.やっぱ実際手を動かして実感してもらった方が良いと思うし.
…なんてことを言うとなんか凄そうだけど,実際は自分がプレゼンするのが面倒だからそれで時間を潰しただけというオチ.一応資料は作ったんだけどね.…かなり謎な資料だけど.
■ [小ネタ] PostPet - O'Reilly
な,なんてナイスな表紙なんだ.
from もっこす日記
…そういや昔こんなん作ったなぁ.確か自動でやってくれるやつ.あのページなくなってた.ちょっと寂しい.
■ [ソフト] Queequeg
こないだからちょこちょこ使ってるんだけど,何気にかなり便利かも.テキストをコピーして
$ cat <<EOL | qq -Wall
> (張り付け)
> EOL
でよく使ってる.んーナイスなソフトだ.
■ [日記] 突然
英語の勉強をしようと思った.日記を一日一回くらい英語で書いてみるというのはどうかな.ちょっとやってみよう.
I am a boy, this is a octopus!
Octopus? Oh!
…誰が分かるんだこんなネタ.
■ [日記][英語] Translations
There is an English-Japanese translator at Excite, I looked at Excite today, it says "there are English-Japanese and Chinese-Japanese translators."
But I couldn't find a selectable item which is a Chinese-Japanese translator. I think "It says that there is a Chinese-Japanese translator though, why I can't select Chinese-Japanese?"
...I was thinking so, but I found "中国語" at the upper part in this page some time ago... It's just "Toh-Dai Moto Kurashi!!"
…なんじゃこの英語….
■ [Bash][Tips] ケース
こないだ if文 をやったのでついでに case文.
これはいちいち elif を書き連ねていくのがめんどくさい場合なんかによく使う.
case $HOGE in
foo)
echo '$HOGE is foo';;
bar)
echo '$HOGE is bar';;
hoge)
echo '$HOGE is hoge';;
*)
echo '$HOGE is unknown'
esac
これが何を意味しているかというと,case の後の $HOGE が foo であれば echo '$HOGE is foo' を実行し,bar であれば echo '$HOGE is bar' を実行し…という感じになる.foo にも bar にも hoge にもマッチしなかった場合は最後に * が評価されることになるけど,ご存知の通りこれはワイルドカードなので何にでもマッチする.つまりどれにも当てはまらなかった場合はこれが実行されることになる.if文で言えば else に相当するものだ.
case文を使うとき気を付けなければならないのは,それぞれの場合の最後に ;; と,セミコロンを2つ付けなければならないことだ.つまり処理が2文以上ある場合などは
case $HOGE in
hogera)
cat ${HOGE}.txt
echo "this is ${HOGE}.txt";;
*)
echo 'unknoun text file'
esac
というようになる.ちなみに最後の場合のみセミコロンを入れる必要はない*1.
また else と同様,*) の処理はあってもなくても良いので,入れたいときにのみ入れると良い.
*1 あっても良いけど
□ yosh [5日の内容にだけど... i18nの18は"iNTERNATIONALIZATIOn"のiとoに囲まれてる文字の数で..]
□ atzm [うおぉ目から鱗! そうだったのかー! ]
□ shy [Debianの件はファイルのインストール先がDebianのポリシーに違反しているからパッケージを直そうという話ではな..]
□ atzm [あ,なるほど.Debianってそういうポリシーが厳密に決まってますもんね…. CVS試してみました.うまくいってます..]
□ shy [チャンネル情報については知りませんでした. どこで変わったんだろう.(^^;; 今回の変更の目的は多言語対応でして,..]
□ atzm [ちょっと前からNewsは表示されてたんですけど,それ以外は表示されてなかったんです. おぉ,ということはこれで台湾の..]
07/07/2003 七夕 [長年日記]
■ [日記][英語] Tanabata
Today is Tanabata... Although I don't know Tanabata stories well, I'm just knowing "Someone (I don't know his/her name :(. ) cause a rift between Orihime and Hikoboshi, after, this couple has become of they can meet each other, only night on 7/7." Umm...What's Amanogawa?
By the way, I visited Google today. It is usual that the Google's banner changes at some events, but Tanabata is an event only in Japan, I think. So I go to Google at foreign domain, Google's banner was as usual, as I expected.
Google's banner is changed according to each countries, I didn't know that.
うおーむっちゃ疲れる.しかも随所微妙に間違ってるくさい.
■ [小ネタ] Missile Strike
なんか懐かしいゲームだなぁ.グラフィックが格段にかっこよくなってるけど.
07/08/2003 む [長年日記]
■ [日記][英語] The thermo bottle
Yesterday, I went to Homac ( is a home amenity center. ) with a friend together, for buy a cleanser for thermo bottles and any furnishings, for my Lab., because thermo bottle at my Lab. was too dirty. Some problem happened by a receipt, but it isn't very big problem ( really? ;-P ).
And, I use this cleanser to a thermo bottle at my Lab. After, this bottle has become very very clean, like a new article completely. Great!
■ [ニュース] 2003年上半期ウィルス感染被害状況
しっかし一向に減らんね.
■ [ニュース] データイーストが倒産
な,なにぃぃぃ! カルノフカムバック!
■ [ニュース] 「私はマナーを守っている。他人のマナーは悪い」
いかにもメリケン人だよなー.国を象徴してるわ.
■ [メモ][ニュース] 電子透かしを利用したインターネットアクセスプラットフォーム
メモ.
■ [日記] 象
ミリンって10回言ってみてー.
ミリンミリンミリンミリンミリンミリンミリンミリンミリンミリン.
鼻の長い動物は何でしょー?
キリンー.
ぶっぶー違いまーす.象でしたー.
ぎゃふん.やられたー.
おわり.
■ [日記] w-inds
昨日へにょ氏とこんな話をしてました.
あ:Dark MooRって何かボーイソプラノって感じだよねー.
へ:あーそりゃNightwishに慣れたからだろー.
あ:いや,ていうかさ,…w-indsとかってこんな声で歌ってそうじゃねぇ?
へ:…あーーー!!
あ:だよなー?
へ:つか何てこと言うんだ,Dark MooRがw-indsにしか聞こえなくなったじゃないか!
…てか今気づいたけど縦読みすると「あへあへあへ」になって嫌な感じだな.
そういや w-inds ってさー.
ダブルインド人
って感じじゃない? …と思って検索かけたらやっぱり既出だった.でも一件しかなかった.意外.
■ [Bash][Tips] さぁ選べ!
case をやったので次は select にでも.対話的プログラムを書くときにメニューを作成したくなる場合がある.例えば「次の中から番号を選択してください」なんてことを簡単にやってくれるのが select だ.次の例を見てみて欲しい.
$ select hoge in 6 7 8 9 end; do [ "${hoge}" = "end" ] &&
> break || echo "$hoge + 5 = $(($hoge + 5))" ; done
select hoge in 6 7 8 9 end
do
[ "${hoge}" = "end" ] && break || echo "$hoge + 5 = $(($hoge + 5))"
done
例によって上記の2つの例は全く同じ処理をするものなんだけど,これを実行すると以下のような形になる*1.
1) 6
2) 7
3) 8
4) 9
5) end
#?
つまり「さぁ選べ!」の状態だ.このメニューは,見ての通り in 以降改行までの文字の羅列から生成される.この #? プロンプトで対応する数字を入力してみると….
#? 1
6 + 5 = 11
ここで何が起こったかというと,select の次にあった hoge という名前の変数に,対応する文字列が代入され,do 〜 doneまでの処理が実行されるというわけだ.この例では do 〜 done の中はどうなっているかというと,$hoge が end でなければ 5 との足し算をし,end だったなら break,つまり select 処理を脱するというものだ.ここで選んだのは 1,つまり対応する値は 6 なので,6 + 5 = 11 という結果が得られたわけだ.
実際に使う場合に注意しなければならないのは,この処理は無限ループする*2ということだ.いったんメニューから何かを選んだら処理をさせて終わり,という風にしたいのであれば
select hoge in 6 7 8 9 end
do
[ "${hoge}" = "end" ] && break || echo "$hoge + 5 = $(($hoge + 5))"
break
done
という風に,最後に break を入れるなどする必要がある.
また,入力に対応する数字がなかった(この例だと10とかいう入力があった)場合,$hoge には空文字列が代入される.そういうエラー処理なんかも書いておくと良いかも知れない.
select hoge in 6 7 8 9 end
do
if [ -z "${hoge}" ]
then
echo "invalid number."
else
[ "${hoge}" = "end" ] && break || echo "$hoge + 5 = $(($hoge + 5))"
fi
done
1) 6
2) 7
3) 8
4) 9
5) end
#? 100
invalid number.
ちなみにこの #? というプロンプトが気に食わなければ,PS3という変数の値を変えてやればいい.
$ PS3="Please select a number. > "
$ select hoge in 6 7 8 9 end; do ....
1) 6
2) 7
3) 8
4) 9
5) end
Please select a number. >
07/09/2003 本 [長年日記]
■ [日記][本] 本
随分前に先生に頼んでた 詳解Linuxカーネル第二版 と 新The UNIX Super Text の上下巻が昨日届いた.これはもう猿のように読みまくるしか.特に詳解Linuxカーネル.
■ [ソフト][日記] --html-split
というオプションが mknmz にあることを知ったので早速 index を再構築したら,前まで 200 程度しかなかった文書が 1800 くらいまで膨れ上がった.まぁ当然っちゃ当然なんだけど,それにしても膨れ上がり過ぎじゃ….一日につき平均 6 回も書いてるのか.まぁちょっとでも気になったニュースは片っ端から取り上げてるからそうなるのも必然ではあるけど.
from ひなた日誌
■ [Linux][ニュース] 政府、人事・給与システムにリナックス採用
どのディストリ使うのかな…ってどうせ国産使うだろうから Turbo あたりかな.
■ [ニュース] 東京駅周辺も歩きたばこ禁止、千代田区が追加指定
愛煙家にはどんどん住みにくい世の中になっていくのう….東京みたいに人がごった返してるところでは確かに「歩き」煙草は危険だから禁止するのもやむを得ないと思うけどさ,喫煙所増やすくらいの措置は取って欲しいよなー.
■ [小ネタ][英語] Japanese Arts
Full it care. Car was to become Ms. Norton.
Nuts cool say Yeah!
Tours more know dome ogre. You made no art.
To Kim ill ever. Cheese needs more knock also. Can Nash sees curry? War gum is he taught you no ark in knee warrant need.
His soccers tan on his curry no dock cake. HAL nods heal knee. She is coker on ark. Her nano cheers your arm.
もう何がなんだか.これネタ全部分かったらすごい.一番上は昔からさんざん言われてるけど.
■ [日記][ソフト] むぅ
最近やたらとリファ付きアクセスが多くてよく分からなくなってきたので disp_referrer2.rb を導入してグループ化をはかる.その際に,アンテナなのにアンテナ欄に入ってくれないものがあったので disp_referrer2.rb 内の正規表現を少しいじってマッチングさせる.具体的には211行目の
antenna_url_match = /(\/a\/|antenna\/|www.tdiary.net\/?(i\/)?(\?|$))/i
となってたところを
antenna_url_match = /(\/a\/|antenna[\/\.]|www.tdiary.net\/?(i\/)?(\?|$))/i
に変更.
ついでに「不明」を少しでも減らすために置換リストをいくつか増やす.でも仕様を調べるのがめんどくさいので検索エンジン系は放置.
07/10/2003 ふげ [長年日記]
■ [日記][Gentoo] むぅ
巡回先の日記とか読んでると,Gentoo使ってたり「こないだ入れてみた」的なことが書いてあったり「今インストール中」みたいなことが書いてあったりして面白い.たった1年ちょいでよくもこんなに普及したよなぁ.改めてすごいぞGentoo.
1年前なんか,どんなに些細なことであれ日本でGentooのこと書いてる人なんてなかのさん以外に見たことなかったのに.
■ [日記] むぅ
なにやら2chにURL貼られてるぞとへにょ氏に教えてもらう.なるほどそれでアクセスがいつもより多いのか.今見てみたらちらほらと ime.nu 経由のアクセスもあるみたい.どうもあのオマケスクリプトを便利だと紹介して頂いたようで恐縮です.
ぶっちゃけ自分じゃ使ってないんですけどね.使う場面にあまり遭遇しないもので….
■ [ニュース][英語] Google cache
I'm usually using Google's caches if search web page, because highlights are very useful. Also it always doesn't display "404 not found" so it doesn't make me angry. :-)
However, I'm annoyed that any people browse pages which were already erased because I have some reasons. Well, you may say "Don't write that make you annoy."
Umm...That's right. ;-P
■ [ソフト][日記] tDiary
結局何となくcvs版に戻す.何やってんだ俺.
ついでに,今更ながら個々の日記が \d{4}\d{2}\d{2}.html でなく ?date=\d{4}\d{2}\d{2} の形式に戻ってたことを知ったので原因を調べてたら,pluginディレクトリから html_anchor.rb が消えてた.あれー,いつの間に…?
■ [Bash][Tips] 繰り返し
「○○を繰り返し実行せよ」という処理をさせたい場合がある.そんなときに強い味方となってくれるのが while だ.
$ HOGE=1
$ while [ $HOGE -le 10 ]; do echo $HOGE; HOGE=$(($HOGE + 1)); done
HOGE=1
while [ $HOGE -le 10 ]
do
echo $HOGE
HOGE=$(($HOGE + 1))
done
また例によって上記2つは全く同じ処理を行うわけだけど,これが何を意味しているかというと,while は [ $HOGE -le 10 ] を評価して,真であれば do〜done 内の処理を行う.それが終わるとまた [ $HOGE -le 10 ] を評価して…と繰り返す.評価結果が偽であれば処理を抜けるという仕組みだ.ちなみに while によく似たものに until というものがあるが,これは while と違って評価式が偽のときに do〜done の処理を行い,真であれば while文を脱する.
ここでは [ $HOGE -le 10 ],つまり「$HOGE が10以下である」という式を評価しているので,echo $HOGE を実行した後 HOGE=$(($HOGE + 1)),つまり $HOGE に1をプラスする,という処理を繰り返していくことになる.そうすると,10がechoされた後に $HOGE の値は11になるので,次の条件式評価時に [ $HOGE -le 10 ] を満たさなくなり,そこで while文を抜けることになる.実際に処理をさせてみると…
bash$ HOGE=1
bash$ while [ $HOGE -le 10 ]; do echo $HOGE; HOGE=$(($HOGE + 1)); done
1
2
3
4
5
6
7
8
9
10
bash$
期待通りの処理をしてくれた.
もちろん評価式にはコマンドを混ぜることも可能だし,複数の条件を設けることも可能だ.
while grep hoge hoge.txt && [ $HOGE -le 10 ] || [ "${FOO}" = "hage" ]
do
echo $HOGE
HOGE=$(($HOGE + 1))
done
ちなみに read コマンドを使うと while へのパイプなんかもスムーズに行える.
$ ls
bar baz boo foo hoge teehee
$ ls | while read file; do mv "${file}" "${file}.old"; done
$ ls
bar.old baz.old boo.old foo.old hoge.old teehee.old
これが何をしているかというと,ls の出力を read が1つずつ読み取って file という変数に代入して,do〜done 内の mv でそれぞれをリネームしている.
■ [音楽][BGM] 今日のBGM
Keep It All Turning / Mind Odyssey
Primal Fear / Primal Fear
07/11/2003 mil [長年日記]
■ [日記][小ネタ] ツキアイゲノム2(β版)
キャラミル研究所で新しいのが出てたのでやってみた.左の方の WILD,GENERAL,REALIST,SMART ってのがそれです.
「遠足で調子に乗って川に落ちたりするタイプです」
「基本的に『なんかえらそう』です」
現実主義者
うーむ当たってるなぁ.ただ,オモテの SMART ってのはどうなんだろ? ちょっとピンと来ないな.ハタから見るとそう見えるんかいな?
■ [Gentoo] dist
distemergeは名前が分散系のツールを連想させるのがちとアレかな。
言われてみれば確かにそうかも….元が自分用使い捨てスクリプトなだけに何も考えずに名付けちゃった*1からなぁ….
何かいい名前ないかなー.
■ [日記][英語] Thinkings
I became aware of that my way of thinking is different when I read/write English and Japanese. I'm weak in English, but I can read/write English easily at long intervals.
Then, my way of thinking shifted the "English mode," I'm thinking in forms of S+V+(O,C,M,...).
*1 distributeな意味はないです.単なる語感で付けちゃったのがまずかったなぁ.
07/12/2003 げは [長年日記]
■ [日記] げは
某後輩と某友人にそそのかされて,こないだのバイト料が「マリア様がみてる」新品全巻購入の餌食にされる.一緒に買った「暁!男塾」が泣くぜウグイス平安京?
読まないだろうなぁ….不幸なことに想像力が貧弱貧弱ゥ!だから字から場面を想像できないんだよねー.
■ [日記][ソフト] tDiary
リンク元置換リストをみんなが共有できたら楽なんじゃないかなー.tDiaryなサイト見てると,同じURLは大体同じ名前に置換してるみたいだし(当り前か).tdiary.netとかは本体に組み込まれてる(のかな?)からみんなが共有してることになるんだけど,そうでなくてネットワーク上で置換リスト同士をリンクしてさ,情報が信頼できるかどうかはトラストモデルとか何とか適当にやってさ,かぶったものは自分設定が優先されるようにマージしてさ….
なーんて妄想してたらもう5時じゃないか.寝よ寝よ.
■ [英語][日記] Nothing motivations
My concentration ran out. I can't bring myself to make a material of a next presentation. Umm...X-/
■ [ニュース] マスコミが伝えない今年最悪の海難大惨事
スラドがこれを取り上げること自体がニュースだね.
■ [音楽][BGM] 今日のBGM
Clown in the Mirror, Moving Target, The Mission / Royal Hunt
Edge of Thorns, Handful of Rain, Streets a Rock Opera / Savatage
07/13/2003 ぶ [長年日記]
■ [ニュース] 男の子は女の子の隣で勉強するのがベスト!
笑った.
女子生徒の勤勉な学習態度を手本にして授業に集中、学習成績を上げることが可能であることが分かり
女子生徒は勤勉なんだそうですよ.
from Graphic Wizards Lair
07/14/2003 ひょ [長年日記]
■ [ニュース] 女子大生、“ケータイ”を学ぶ
なるほど,確かに今の時代ではあってもよさそうな講義だ.
■ [Gentoo][日記] info
ちょっと前からこれと同じエラーがたまに出るようになったんだけど,コレ一体なんなんだろ? 再現性が怪しいからよく分かんないんだよなー.つーわけで /usr/lib/portage/bin/emerge を読み漁る.
…なるほど,1522行目にコレについての記述がある.どうも
/usr/bin/install-info --dir-file="+inforoot+"/dir "+inforoot+"/"+x
の返り値があるとこのエラーメッセージを出すらしいな.inforoot ってのは環境変数 INFODIR と INFOPATH に書いてあるディレクトリで,xってのはそのディレクトリにある各infoファイルか.…うーん,だから何だと言うんだ?
いや,[1] を見てるってことはコマンドからのメッセージがあったら,ってことか.すると install-infoコマンドが何かのエラーを出したんだろうな.てことは,考えられるのはブロークンリンクがあったとかかな.でもそんなもんは見当たらないけどなー.はて?
…どひゃ,INFODIR に /usr/X11R6/info がセットされてるのにこんなディレクトリありゃしねえ.まさかコイツか.…てことで /etc/env.d/10xfree の INFODIR の部分を /usr/X11R6/info から /usr/X11R6/share/info に変えて env-update.あとはちょっと様子見といこう.
つーか /usr/portage/x11-base/xfree/files/4.3.0/10xfree のこの記述って間違ってるんじゃ…? 俺の環境がおかしいだけ?
■ [Gentoo][日記] 続info
あり… /usr/X11R6/share/info って /usr/share/info へのシンボリックリンクなんじゃん.なんじゃこれ.
いろいろ読み漁ってると portage.py の方に行ってしまった./var/cache/edb/mtimedb の読み方が分からん.なにこれ….
■ [Gentoo][Tips] PORTAGE_NICENESS
/usr/lib/portage/bin/emerge を読んでて分かったこと.PORTAGE_NICENESS っていう環境変数で emerge時の nice値を決めれるみたい.ここに追加しておいた.
あとsf.jpのtips集にもniceについての記述があったのを思い出したのでそこにも書いておいた.
しかし肝心なことが分からん.むー.
07/15/2003 ぼ [長年日記]
■ [Linux] kobject/sysfs(1)
むう.分かるような分からんような….
■ [Linux] 2.6.0-test1
早速試してみるも,nvidia のドライバが
2.6.x にゃ対応してねーんだよボケ!
と怒る.ソースを改造してコンパイルを強行してみようとしたけど結局断念.当然 XFree86 のドライバなら X を起こせるけど描画がアホみたいに重いのでヤメ.
■ おや
2.6.0-test1 が Portage に入ってるみたいだな.自前で持って来たソースをコンパイルしてブートしたら /etc/modules.autoload.d/kernel-2.4 が読まれてしまったんだけど,これは大丈夫かな?
■ おぉ
~x86 な nvidia-kernel がカーネル2.6に対応してた.すごいぞGentoo./etc/modules.autoload.d の問題も,このディレクトリに kernel-2.6 ってのを作ってやれば自動的に読み込んでくれるみたいだ.
ただ1つ気になるのは,df コマンドが妙な動作をするようになったことか.
$ df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/root 5.0G 3.8G 1.2G 76% /
/dev/hda3 31G 29G 2.5G 92% /usr
none 377M 0 377M 0% /dev/shm
df: `/usr/portage.local': 定義されたデータ型に対して値が大きすぎます
/usr/portage.local ってのはGentoo上で動作してるNFS上の野良ebuild置場なんだけど….ちゃんとマウントできてるのにおかしなメッセージを吐く.Debian上の他のNFSは大丈夫なのに.
■ うげ
2.5.7x と同じく,いきなり何の前ぶれもなく固まる現象発生.やっぱ 2.5.54 が一番安定してら.それとも設定が悪いのか? むむむ….
■ [Gentoo][日記] 昨日のinstall-info
--verboseを付けてるときにinfodirの再構築が始まってくれたのでエラーメッセージを拝むことができた.
install-info: メニュー項目 `Bash' は、`bash' に既に存在します
bashref.info.gz が bash.info.gz へのシンボリックリンクだったがために二度インストールされることになって,エラーを出すようになったのかな?
■ [Bash][Tips] for
while を終わったところでサボってた気がするのでお次は for.これがまたなかなかに便利で重宝する.これは例えば以下のような書式で書くことになる.
$ for hoge in *; do mv "${hoge}" "${hoge}.old"; done
for hoge in *
do
mv "${hoge}" "${hoge}.old"
done
まぁ例によって上の2つは全く同じ処理をするものなんだけど,さてこれが一体何をしているのかと言えば,答えは簡単.カレントディレクトリにある全てのファイルに .old という拡張子を付け足しているだけ.
for は,in の引数に与えられた文字列を空白を区切りとして1つずつ読み込み,for の直後の文字列の名前の変数に格納して do〜done を実行する.全ての文字列を処理し終わったら for文を抜けるという仕組みだ.
さてこれを利用してどんな便利なことができるのかというと,前も紹介したように
for dir in *
do
( cd "${dir}" 2> /dev/null && [ -e Makefile ] && make clean )
done
これでカレントディレクトリ以下の全てのディレクトリ上で make clean を実行することができる.
また,Bash における for のマイナーな使い方として,C言語などで使われる使い方と同じ使い方をすることもできる.
for ((i=1; i < 10; i++))
do
echo $i
done
このコードは望んだ通りの結果を返してくれるでしょう.:-)
07/16/2003 べほ [長年日記]
07/17/2003 む [長年日記]
■ [Bash][Tips] オプション解析
ちょっとでも凝ったプログラムを書きたいと思ったとき,オプションによって動作を変えたい,なんて欲求が生まれるのは当然だ.そんなとき,Bash に組み込まれている getopts というものを使うと楽だ.例えば,-s,-v,-o というオプションを受け付けるようにしたい場合,
while getopts svo opt $@
do
case "${opt}" in
s) echo "-sがセットされてます";;
v) echo "-vがセットされてます";;
o) echo "-oがセットされてます";;
*) exit -1;;
esac
done
といったように場合分けすることができる.while getopts とすることで,コマンドラインからのオプションを一つずつ解析して,case でそれぞれに応じた処理をさせることができるというわけだ.
また,例えばここで -s に何らかの引数を持たせたい場合は以下にようにするといい.
while getopts s:vo opt $@
do
case "${opt}" in
s) echo "-sがセットされてます.引数は ${OPTARG}です.";;
v) echo "-vがセットされてます";;
o) echo "-oがセットされてます";;
*) exit -1;;
esac
done
getopts の引数が svo から s:vo に変わっていることに注目.コロンを付けると,そのオプションが何らかの引数を持つとすることができる.そして,その引数は ${OPTARG} に格納される.-s オプションを引数なしで指定するとエラー終了することになる.
07/23/2003 む [長年日記]
■ [日記] HDD
やたら安くなってるので8MBキャッシュの120GBを大購入.一万円強.ふっふっふ,これでしばらくは容量不足に悩まされることもあるまい.
マウント先をどうしようか迷ったのでとりあえず120GBをそのまま /home に仕立てあげる.とりあえずはA研NFSのミラーリングでもしとくか.
■ 喫茶
そういやこのHDDを買いに行ったとき,ついでにメイドだかコスプレだかの喫茶店に行こうと思ったんだけど(色んな意味でおもろそうなので一度行ってみたかった),どこにあるか分からんし探すのもめんどくさいし時間も遅かったのでやめた.
■ [Gentoo][日記] ExtUtils-MakeMaker と Perl
~x86 な bianca が ExtUtils-MakeMaker と Perl でハマる.ExtUtils-MakeMaker-6.05-r6.ebuild は >=perl-5.8.0-r12 を DEPEND してるのに perl-5.8.0-r12.ebuild は !<dev-perl/ExtUtils-MakeMaker-6.05-r6 となってて,依存性が腐れてる.しょうがないから一時的に !<dev-perl/ExtUtils-MakeMaker-6.05-r6 をコメントアウトして emerge.さて大丈夫だろうか.
うーむ,Forum では ExtUtils-MakeMaker を一度 unmerge してから emerge し直せという解法が一般的のようだな.まぁいいや.
■ [音楽] 最近買ったCD
- Genius Rock Opera / Daniele Liverani
- なんかいろんな人達がボーカル参加.Lana Laneの名とジャケで買い.SavatageのChangesのようなものを想像してたら全然違った.プログレでメロディの理解不能さが良いけどちょっと荒削り感が否めない.最初は良かったが後半になってダレ気味.ボーカルに凝るのは良いけど,演奏の深みが足りない気がする.このダニエレ・リベラーニという人はイタリア人らしいが納得.Valianceに似てるわ.まぁ全体的にはマル.
- Century Child / Nightwish
- Nightwishらしさがよく出ててマル.前作Wishmasterと違ってスピーディな曲は少ないが突然男声ボーカルが入ったりして新鮮かも.
■ [映画] 最近観た映画
- 茄子 アンダルシアの夏 (劇場)
- 近頃のジブリ作品よりよっぽど面白い.…とは言っても方向性が少し違うので比較対象にならん気がするが.どっちかってーと紅の豚に近いかも.
- 千年女優 (Video)
- かなり面白い.ばーさんの話が映画の中の話なのか現実の話なのかよく分からんで混乱するがどっちでも良いような気もする.なにか手塚治虫の火の鳥を思い出させる.ただ,ところどころつじつまが合わないところがある気がする.どこがって言われると困るけど,モヤモヤしたものが残るんだよなー.
- 猫の恩返し/ギブリーズepisode2 (Video)
- ギブリーズは面白い.こういうの好き.猫の恩返しは猫好きでなければお世辞にもお勧めはできない….まぁ猫好きなら観て損はないかも.猫の描写がうまい.
- ラヂオの時間 (Video)
- 二回目.やはり面白い.トラックの運ちゃんは良い.
- GHOST IN THE SHELL 攻殻機動隊 (Video)
- 一度観た気もするしそうでない気もする….しかしやはり攻殻機動隊は面白い.
…4/5がアニメなのはこの際気にしないことにしよう.
■ [本] 最近読んだ本
- マリア様がみてる
- 小説というものを全く読まない人間なので,ただただ疲れた.これが初めてのライトノベルなわけですが,何か間違ってますかね.
- マリア様がみてる 黄薔薇革命
- 1巻で慣れたのか,さくさく読めた.大体一冊2時間強.やっと人物が分かってきたせいかも知れない.とりあえず主人公の位置付けはロサ・キネンシス・アン・ブウトン・プティ・スール.本名は…ナントカ祐巳.苗字忘れた.この巻の主役はロサ・フェティダ・アン・ブウトン…多分支倉令…とロサ・フェティダ・アン・ブウトン・プティ・スール…あー本名忘れた.もうどうでもいいわ.
ところで,俺の机の上にマリみてタワーを作ったのはどなたなんでしょうか.
■ [Bash][Tips] キーボードショートカット?
結構知られていることだとは思うけど,Bash のプロンプトは Emacs ライクなキーバインドを受け付けるようになっている.つまり,例えば C-a で行頭に,C-e で行末にカーソルを移動,などだ.この他にも C-h を BS 代わりに,C-d を Del 代わりに使うなんてことは日常茶飯事だと思う.
よく使いそうなキーを羅列してみると,以下のような感じになると思う.
- C-a … 行頭に移動
- C-e … 行末に移動
- C-k … 行末までを切り取り(キル)
- C-u … 行頭までを切り取り
- C-y … 張り付け(ヤンク)
- C-l … 再描画
- C-SPC … 始点のセット
- C-w … 始点からカーソルまでを切り取り
- C-j … 改行
- C-h … バックスペース
- C-d … デリート
- C-f … カーソル前進
- C-b … カーソル後退
- C-n … ヒストリの次項
- C-p … ヒストリの前項
- C-r … 後方インクリメンタルサーチ
- C-g … キャンセル
- C-v … 次の入力をそのままの状態で入力できるようになる.タブなどを入力したい場合に有効
- C-_ … アンドゥ
ちなみにこれとはあまり関係ないけど,誤って C-s でストップさせてしまったら C-q で回復できるということを知っておいて損はない.
更に,Ctrl+x だけでなく Meta-x のキーバインドにも対応している.
- M-< … 一番古いヒストリ
- M-> … 一番新しいヒストリ
- M-u … 行末までの文字を大文字にする
- M-l … 行末までの文字を小文字にする
- M-c … カーソルのある場所の単語の最初だけ大文字にする
- M-d … 単語の切り取り
- M-\ … カーソルの周りの空白を全て除去
- M-/ … ファイル名の補間(タブと同じ効果)
- M-? … コマンドなどの補間候補を列挙する
- M-* … コマンドなどの補間候補を全てコマンドラインに出す
- M-~ … ユーザ名の補間
- M-@ … ホスト名の補間
- M-$ … 変数名の補間
- M-{ … ファイル名補間.補間候補はブレイス展開を利用した形になる
などなど.これらを使いこなせば端末への入力作業の負担がガクンと減ることでしょう.
07/24/2003 う [長年日記]
■ [日記] う
先生と話してたら,何気に自分かなり修羅場ってることに気づく.これから2〜3ヵ月くらい休みなんかないな….
つーわけで ToDo プラグインを使ってやるべきことを明確にしてみた.…ただしてみただけ.
■ [小ネタ] あなたのお値段鑑定します Ver.2
背景がブリリアントグリーンだったときにやった記憶があるな.さっきやってみたらこんなんだった.単なるバカじゃん(わら
しかし運が良いのと才能がないのは認めるけど,少なくとも境遇は良い方だと思ってるぞ.
from エロチック街道
■ [メモ] Javaのフォント
PREFIX/sun-jdk-1.4.*/jre/lib/font.properties.ja の中身を自分環境用に書き換える.
デフォルトがwatanabe-minchoとかwadalab-gothicとかになってるんだけど,これebuild側でkochiあたりに変えた方が良いんじゃ?
■ [Linux][Tips] Linux Tips + Tricks
おほ,結構勉強になるな.知ってるようで知らないことって結構あるもんだ.
■ [小ネタ] マリみてお姉さま度チェック
例によって例のごとく例の後輩にやらされる.
atzmさまのお姉さま度は 405お姉さま です
あなたは生まれながらのお姉さまでしょう。
そんなあなたはマリみてキャラでいうと『祥子』さまです。
気高く、美しいあなたですが、時折プライドが邪魔して素直になれなかったりするかわいい一面も持っています。
そのギャップが多くの妹達から人気のお姉さまです。
…「お姉さま」って単位だったんかい.
07/25/2003 ご [長年日記]
■ [小ネタ] 読書占い
- めろめろラブロマンス
- いつもがんばる強いあなたは、乾いた木のようにあるところでポキリと折れる。傷ついた心はめろめろラブロマンスで心をいったん溶かして修復を。興味がなくてもしきたりや古来からの風習にはこだわって運勢向上。
全てにおいて「時代小説」が幸運をもたらす。「ノンフィクション」は凶。
…え?
from エロチック街道
■ [Gentoo][ソフト] Whitespace
絶対誰かアレゲな人がそのうちebuild作ってくれると思ってたのに誰も作んないのね.しょうがないから自分で作っちまったい.
■ [ソフト] ninix-aya
そういやいつの間にか Ctrl を押しててもバルーンがマウスを取らなくなってる.ついでに,ワークスペースを切り替えてもバルーンが消えなくなった.バルーンをウィンドウとしなくなったのかな.わーい,これで emacs を使ってても邪魔にならない.
しかし不用意にワークスペースを切り替えると,バルーンは表示されてるのに肝心のゴーストがいない状態になるという罠.
■ [音楽][BGM] 今日のイチオシ
Hate Crew Deathroll より Track 9 - Hate Crew Deathroll / Children Of Bodom
Dream Theater の The Dance of Eternity 以来久しぶりに身震いする曲を聴いた….チルボドってボーカルこそデスだけど曲は完璧にメロスピだよなー.
07/26/2003 ぶ [長年日記]
■ サムネイルつきGoogle
うぉコレって結構便利なんじゃ.…ただし俺のようなアナログ56Kなナローバンド野郎にとっては迷惑以外の何者でもなかったりするが.
■ [ニュース] 「セキュリティ甲子園」の開催が1年延期
あらあら.
■ [ニュース] SCOがIBMの著作権を認める
は?
■ [メモ] Unofficial apt-line
便利なのでメモ.
■ [日記][ソフト] POROLITH
頭ぼーっとしてしょうがないのでなぜか Xnp2 を起動して POROLITH で遊ぶ.どひー懐かし.しかしハイスコアを見てびっくり.名前欄に自分の名前が様付けで載ってたりIQ999とか書いてあったり.ガキかこいつは.いやガキだったんだけど.94年とか書いてあるし.
うわー恥ずかし.
■ [音楽] HR/HMこの曲を聴け!
ランキングの高い曲はやはり俺も好きなのが多い.さすがみんな分かってる! とりあえず上位5曲くらいは聴いて損なしでしょ.ていうか聴け.
ところで,筋肉少女帯ってプログレだったの?
■ [音楽][BGM] 今日のイチオシ
Hate Crew Deathroll より Track 11 - Somebody Put Something In My Drink / Children Of Bodom
歌えるデス.さんばでぃ♪ ぷっさむしん♪ さんばでぃぷっさむしんにまいどりん♪
誰かが俺の飲物の中に何かを入れた
バカっぽくてマル.
07/28/2003 寒 [長年日記]
■ [日記] 寒
ここのところこの寒さのせいか風邪を引いたらしく調子激悪状態.昨日は一日中寝とりました.元々鼻炎持ちなので風邪引くと鼻水がそれはもう素晴らしいことになる.すると頭がぼーっとして何もできなくなるどころかもう起きてられなくなるので寝てるしかないのです.
あーしかし昨日寝てたおかげか,少しは良くなった.社長迎撃までに調子を取り戻さねば...
■ [Gentoo][メモ] Gentoo Linux on win32
Cygwin に Portage を乗せるサイト.今度試してみよう.
07/29/2003 げふ [長年日記]
■ [Linux][ソフト] BASIC on Linux
あー,TAKOでも動かせってか?
■ [Gentoo] あくあ
usataさんが作者さんに連絡を取ってあくあフォントを本家ツリーに登録して下さった模様.ライセンスの追加までしてある…素晴らしい.
ライセンスを眺めてて少し思ったのは,実際日本のWindows/DOS向け(?)から始まったフリーソフトは同じようなライセンスが適用されてる場合が多いから(例えばLHAとかね),どうにかまとめるような案があれば良いんじゃないかなーとか数分妄想.たとえば
(AT YOUR OWN RISK) 一時配布 | + 二次配布の可否(条件) | + 使用料無料 | | | + 商用の可否(条件) | + シェアウェア
とかいう形になってるのがほとんどだと思うんだけど*1,これをオブジェクト指向的に継承して,最終的なオブジェクトに細かな違いを付け加えると,あらびっくりライセンスの出来上がり.
…なーんてうまくはいかねーんだろーなー.
■ [Gentoo][メモ] GentooJP オススメ日本語デスクトップ環境 GLAD
use emacs で有無を言わさずnavi2chを入れる仕様にちょっと笑ってしまった.chroot環境でも作って試してみよかな.てことでメモ.
■ [日記][Linux][Tips] うぎゃ
面白いことになってますよウチのマシン.
$ ls /var/lib/init.d
deptree failed failed snapshot/ softlevel softscripts/ started/
deptree failed options/ snapshot/ softlevel softscripts/
XFSのテーブルが一部破壊されたくさい./var/lib/init.d が腐れたおかげでGentooシステム全体に影響が出とる.被害が拡大しないうちに重要なデータと設定ファイル群を退避してext3とか当たり触りのないファイルシステムに移行した方が良さそうだ.
くっそー,ルートが腐ると復旧しづれぇ./var パーティション分けときゃ良かった.
■ というわけで
ファイルシステムの移行完了.このマシンは
$ df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/hda2 5.0G 708M 4.0G 15% /
/dev/hda3 31G 13G 19G 41% /usr
/dev/hdc1 111G 40G 65G 39% /home
という構成なので,ルート直下にあるファイル群をいったんhomeに退避させることにする.その際,動作してるシステム上でコピーすると色々ヘンなことになりそうなのでブートCDを使用してHDDをマウントしてコピーする.
# mkdir gentoo
# mount -t xfs /dev/hda2 gentoo
# mount -t ext3 /dev/hdc1 gentoo/home
# mkdir gentoo/home/backup
# cp -rp gentoo/{bin,boot,dev,etc,lib,mnt,opt,proc,root,sbin,sys,tmp,usr} gentoo/home/backup
ここで,/varはおかしくなったものをコピーしないように注意しながら作業を行う.
# mkdir gentoo/home/backup/var
# cp -rp gentoo/var/{cache,db,empty,games,lock,log,mail,run,spool,state,tmp} gentoo/home/backup/var
# mkdir gentoo/home/backup/var/lib
# cp -rp gentoo/var/lib/{canna,iptables,misc,slocate,texmf,xdm,xkb} gentoo/home/backup/var/lib
おかしくなった var/lib/init.d をコピーしないのがミソ.
コピーが無事終了したら,ドライブを全てアンマウントして,念のためゼロクリアして*2からファイルシステムの再構築.
# umount gentoo/home
# umount gentoo
# cat /dev/zero > /dev/hda2
^C
# mkfs -j /dev/hda2
それが終わったらさっきバックアップしたファイルを元に戻す.
# mount -t ext3 /dev/hda2 gentoo
# mkdir gentoo/home
# mount -t ext3 /dev/hdc1 gentoo/home
# cp -rp gentoo/home/backup/* gentoo
あとはfstabを書き換えてからアンマウントしてリブートするだけ.
07/30/2003 おぉ [長年日記]
■ [日記][Linux] 2.6.0-test2
おぉ,Firebirdコンパイルの高負荷にも耐えて約1日持ったぞ.素晴らしい.
$ uptime
08:32:04 up 21:20, 3 users, load average: 1.56, 1.90, 1.25
…って,何で1日程度で感動せにゃいかんのだ(わら
で,2.6.0-test2の感想.
- 2.6.0-test1よりも断然安定している(.configは使い回したし)
- 2.6.0-test1と同じく,nfsから変なメッセージが来る(これはサーバ側の問題かも)
- どうも2.5よりパフォーマンスが悪い(2.4と似た感じにもたる)
- USBのあたりが微妙(ジョイスティックが認識されない)
こんなもんかなぁ.
■ オブジェクト指向は難しい (Matzにっき)
うーん…オブジェクト指向を分かってる人から見れば「あー,そんな感じそんな感じ」って納得すると思うんだけど,オブジェクト指向でつまづいてる人がこれで分かるかなぁ….あと,
- プログラミングもあまり得意じゃないしオブジェクト指向なんてさっぱり分からん
- プログラミングはお手のものだけどオブジェクト指向はちょっと
の2通りの人がいると思うんだけど,この説明だと後者向けなのかな.
後輩とかにオブジェクト指向の概念説明をするとき,よく
- クラスとオブジェクト
- クラスってのは鯛焼きの「型」,オブジェクトってのは個々の鯛焼きだ!
クラスは THE であり,オブジェクトは A なのだ! - オブジェクトの生成とコンストラクタ
- 個々の鯛焼きには尻尾までアンコが入ってるものとそうでないものがある!
その差は,鯛焼きオブジェクトを作るときに屋台のおっちゃんがアンコをどこまで乗せるかにかかってる! - メソッド
- 個々の鯛焼きは毎日焼かれてると嫌になって逃げ出したくなる!
個々の鯛焼きの「逃げろ」メソッドを呼んで逃してやるんだ!
というような謎の説明をするんだけど,これはどっちかってーと前者向けなんだろうな.
…しかしこれだと鯛焼きが意志を持って活動してるように見えてしまうのでエージェント指向になってしまうやも知れん.teehee
■ んで
メリットとかいう話になると,俺的には設計のしやすさとかそういった方向に行ってしまう.
俺自身はGUIプログラミングをして分かったんだけど,
ウィンドウを出す関数を呼んで,○○ボタンがクリックされると××関数を呼んで…
なんて記述するよりも,
ウィンドウは一つのオブジェクトで,××メソッドに関連づけられた○○っていうボタンを持ってて…
っていう方がどう考えても自然.まぁここまでくるとイベントドリブンの考え方とか色々あるんだけどさ.
あとは,スーパークラスとか抽象クラスとかをちゃんと切り分けて設計してやると,自然と再利用性が高くなる.あるクラスをツリーのルートとすると,それを継承したクラスはそのツリーのリーフになる.リーフはいくらでも作れる.
お菓子 -+-- 和菓子
| |
| +-- 型焼き菓子
| | |
| | +-- 鯛焼き
| | |
| | +-- 大判焼き
| | |
| | +-- etc...
| |
| +-- etc...
|
+-- 洋菓子
| |
| +-- ケーキ
| |
| +-- etc...
|
+-- etc...
といったように,鯛焼きを定義したいときにお菓子,和菓子,型焼き菓子も設計して作ってやると,もし新たに大判焼きを作りたくなったときに型焼き菓子を継承してやるだけでよくなる.
って感じかなぁ.なんか説明があんまりよくないって言うか使い古された表現ばっかだけど.
07/31/2003 ぐ [長年日記]
■ サブルーチンと関数とメソッド?
サブルーチンは概念的なもの,関数は手続き型言語のサブルーチンの実装,メソッドはOO言語の個々のクラスに割り当てられたサブルーチンの実装とか勝手に思ってたんだけど,色々考えてたら混乱してきた.
ちなみに概念上OOではサブルーチンに当たる部分を「振舞い」と言うし,サブルーチンなんて考え方はOOにはない気がする.手続き型言語では値が自分自身を操作するなんてことはなくて,あくまで外部の関数によって操作される.OOではオブジェクトが持つフィールドはオブジェクト自身が操作する(publicなフィールドは別).
初心者に教えるときは,どこから教えようとするかによると思う.概念からじっくり教えるなら手続きやOOの概念からの方が良いと思うし,手っ取り早く「これはこういうもんなんだからこうやっとけ」的に教えるなら,Javaだったらメソッドの要点だけを説明すれば良い気がするんだけど,いかがなもんだろう.
しかし僕はもともとプログラミングには疎い方なので参考にしない方が良いと思う….
■ つーか
OOと手続き型のそれぞれの用語をどうにか繋げようとすること自体がナンセンスだ.概念が違うんだから,概念から来る用語を繋げようとしても破綻するに決まってる.
□ mput [またまたぁ。わかってるくせに(笑) ]
□ atzm [目星はつくけど確信はないなー.クラス同じだったよね? ]