hogeとはワイルドカードのようなものです。日々起こった、さまざまなこと −すなわちワイルドカード− を取り上げて日記を書く、という意味で名付けたのかというとそうでもありません。適当に決めたらこんな理由が浮かんできました。
06/29/2003 cjkcodecs
■ [Gentoo] cjkcodecs
なんかいつの間にかJapaneseCodecsがマスクされてるので /usr/portage/profiles/packages.mask の該当部分をコメントアウトしてマスクをひっぺがす.しかしこれから sync するたびにこれやらないかんのか,めんどくさいな.koreancodecsと統合してcjkcodecsにしたらしいが,当事者にとっては迷惑だろ.だって日本人は中国語や韓国語のサポートなんか普通いらんし,中国人は日本語のサポートなんかいらんだろ.なんでASCIIな人らはcjkを一緒にしたがるかね.
■ [Gentoo] 適当なスクリプト
#!/bin/sh ACT="clean depclean help info inject prune rsync search sync unmerge" USE="" OPT="" for ARG in ${@} do if echo "${ARG}" | grep "^-" > /dev/null 2>&1 || \ echo "${ACT}" | grep "${ARG}" > /dev/null 2>&1 then OPT="${OPT} ${ARG}" else USE="${USE} ${ARG}" fi done OPT=${OPT# } USE=${USE# } if [ -z "${USE}" ] then echo "You must select a use flag." fi { emerge -epv world | \ grep "\[ebuild N \] .\+ \( [\+\-].\+\)\+" | \ sed -e "s:\[ebuild N \] \(.\+\) \( [\+\-].\+\)\+:\1 \2:" | \ while read line do arg=${line#* } for each in ${arg} do if echo "${each#[\+\-]}" | grep "^${USE}\$" > /dev/null then echo "=${line%$arg}" break fi done done } | xargs emerge ${OPT}
性凝りもなく変なスクリプトを書いてみる.引数で指定したuseフラグを使ってるパッケージに対してemergeを実行する.useフラグを変更したときに実行すると良いかも知れない.今のところ指定できるuseフラグは一つのみ.
しかしもう少し効率化できんもんかね…ていうかPythonでportageライブラリ使って書けよって話ではあるが.
■ [Bash][Tips] クォートとドルカッコとドルカッコカッコと
中級者はもとより初級者にとっても常識だろうけど, Bash では普通,空白を区切りとして認識するので,例えば
HOGE=hoge hoge hogehoge
なんてことができない.それを解決するために文字列をクォートすることになる.
HOGE="hoge hoge hogehoge"
で,このとき " という文字自体を変数に格納したい場合,二通りのやり方が生まれる.
HOGE="\"hoge hoge hogehoge\""
HOGE='"hoge hoge hogehoge"'
ダブルクォートで文字列を囲む場合はメタ文字を理解させてしまうので,ちゃんとエスケープしてやらないとエラーになってしまう.逆にシングルクォートで囲むと,囲まれた全ての文字がエスケープされる.そのためどんな文字列を紛れ込ませても展開されることはない*1.
また,これとは別に バッククォートというものがあり,これは囲まれた文字列をコマンドとして認識し,その結果を返す.
$ HOGE=`date`
$ echo $HOGE
日 6月 29 08:36:20 JST 2003
また,バッククォート内のバッククォートをエスケープすることでネストも可能になる.
$ echo "uname -irsv" > comm.txt
$ HOGE=`\`cat comm.txt\``
$ echo $HOGE
Linux 2.5.54 #24 SMP Tue Jun 3 21:33:01 JST 2003 GenuineIntel
コマンドの結果を返すものとして,$() なんてものもある.
$ HOGE=$(date)
$ echo $HOGE
日 6月 29 08:49:01 JST 2003
$ HOGE=$(`cat comm.txt`)
$ echo $HOGE
Linux 2.5.54 #24 SMP Tue Jun 3 21:33:01 JST 2003 GenuineIntel
$ HOGE=$($(cat comm.txt))
$ echo $HOGE
Linux 2.5.54 #24 SMP Tue Jun 3 21:33:01 JST 2003 GenuineIntel
バッククォートとの違いはよく知らない.誰か教えて偉い人.
…まぁ,というようなことが理解できれば,以下のようなことができるのも分かるはず*2.
$ echo FOO > var.txt
$ FOO="uname -irsv"
$ HOGE=$(eval \$`cat var.txt`)
$ echo $HOGE
Linux 2.5.54 #24 SMP Tue Jun 3 21:33:01 JST 2003 GenuineIntel
またこれとは別に,$(())というものが存在する.これは式の評価を行なってくれる.
$ HOGE=$((1+3))
$ echo $HOGE
4
$ FOO=8
$ BAR=6
$ HOGE=$((($FOO - $BAR) ** 3))
$ echo $HOGE
8
06/29/2004 あはは
■ [小ネタ] 心理テスト: 四字熟語
四字熟語、と聞かれてまず最初に思いつくのは何ですか?
そして二つ目には何が思いつきますか?
一刀両断,快刀乱麻.
…
……
では解説。
最初に思いついた四字熟語、それはあなたの人生について表したものです。
そして二つ目に思いついたのは、あなたの恋愛について表したものです。
やってから思ったけど,これ昔どっかでやったような?
from 言泉が枯れるまで
■ [Gentoo][風博士] 0.1.7 bugs に投げ
つか 0.1.6 ってツリーに入ってたのね…Bugs に変化がないとメール来ないから気付かなかったよ.クローズするとか何か書くとかしてよ Brad さん….
もう一つさっき気付いたこと.本家ツリーにある ebuild のヘッダが軒並み Gentoo Technologies, Inc. から Gentoo Foundation に変わってた.uploader に上がってるやつも変更した方がよさそう.
タビアたんにもコメントつけ
リネームするだけでバージョン上げることができるものはどうすりゃいいんだろ? diff つけるわけにもいかないし,内容が同じなのに ebuild 添付するのは冗長だし.
ぐわ!
なかのさんの日記を読んで思い出した,しまった estraier について何も言及してない.まずった…….どうしよう.一応 qdbm や estraier の ebuild はあるんだけど,これも bugs に投稿して風博士のところにコメントしといた方がいいんだろうか.ちなみに僕んとこではちゃんと動いてます.
あーごめんなさい.
□ iuchi [悠悠自適, 焼肉定食…. 四字熟語ときかれて焼肉定食が浮かんだ自分のベタベタっぷりに萎えた…. ]
□ atzm [焼肉定食な恋愛というと何やら深読みできそうですな(わら ]
□ zoe [いつもありがとうございます。 ]
□ usata [先週だったかに Gentoo Foundation に変わりました。 uploader のも変えたほうがいいですね。..]
□ atzm [了解です.次からもこんな感じでいきます.:) Foundation の件は一応周知してからの方が良いんですかねぇ? ..]
□ usata [そうですね。まあ本家に持っていくときに問題となるだけなので、メールアドレスが分かっているなら本家に持っていくときに変..]
□ usata [風博士の件はぜひそれらの ebuild も投稿して depends にあげておくと。 ]
□ atzm [ありゃ,そうなんですか.Kojima さんにアカウント発行してもらわないと! 風博士の件はやっておきましたがちょっ..]
06/29/2005 む
06/29/2007 む
■ [日記] teehee
シェルのリダイレクトや tee コマンドは,存在しないディレクトリ内のファイルを指定するとエラーになる.
$ ls $ echo hogehoge | tee hage/hige tee: hage/hige: そのようなファイルやディレクトリはありません hogehoge $ echo hogehoge > hoge/hige bash: hoge/hige: そのようなファイルやディレクトリはありません
存在しないディレクトリが来たらよしなにディレクトリを作って欲しいんだけど,オプションとかで制御できないっぽいのが悔しい.
標準入力を殺さずにディレクトリを作るには,何かスクリプトとか書かなきゃいけないんだろうか...
□ mpet [妖精さんに期待できないので、書かなきゃいけない…。 ただ、今あるのは残して、新しいのを作るのはちょぃと 重い感じが…..]
□ mpet [↑あらかじめ、「そのようなファイルやディレクトリはありません」ってアクションは必要ですが…。 ※補足っす。 ]
□ mpet [※突っ込み多すぎ エラー判定、曖昧になるよぅな… (どこまで許容しますですか?) ]
□ kou [こんなんじゃなくてシェル君にもっと頑張って欲しいってことですか? % echo hogehoge | (x=hag..]
□ atzm [> mpet たん 書く手間はカップラーメンレベルだけど悔しいじゃない. ただそれだけですよ. > kou たん ..]
□ kou [わぁ、鬚がいっぱい♪ ]
06/29/2009 ふむ
■ [メモ] メモ
PIPE_BUF
POSIX.1-2001 では、 PIPE_BUF バイト以下の write(2) は atomic に行われること、つまりパイプへの出力データの書き込みは連続したシーケンスとして行われることを必須としている (MUST)。 PIPE_BUF バイトより多くのデータを書き込み場合は atomic とはならない、つまりパイプへの他のプロセスによるデータの書き込みが間に入る可能性がある。
POSIX.1-2001 の仕様では、 PIPE_BUF は最小でも 512 バイトであることが要求されている (Linux では PIPE_BUF は 4096 バイトである)。正確な動作は、ファイル・ディスクリプタが non-blocking (O_NONBLOCK) かどうか、パイプへの書き込みが複数から行われるかどうか、および書き込みを行うバイト数 n により決定される。
06/29/2012 うむ
■ [Py][Linux][日記] etherws 0.7 をリリース
とても久しぶりに肉の日リリース. 久しぶりにとか言ってる時点で意味はあまりない.
今のところ思いついた機能は殆ど盛り込んだのでとりあえずは満足.
複数の TAP デバイスや WebSocket 接続を持てるようになって,簡単な仮想スイッチも内蔵したので,下手なことをすると余裕でループを起こすと思われるので注意. もちろん xSTP とか入れてないし.
VLAN ポートは入れようか入れまいか迷った挙げ句に入れるのを辞めた. そのままでも vconfig とか使えばできるしその方が絶対速いはずなので敢えて etherws 側に実装するモチベーションがなかった...
CPython でユーザランドに書いてる今の実装で本気ネットワークに適用できるとは思ってないし,OpenFlow とかそういうナウでヤングなものの実装は今のところ考えていない.
まあ個人で遊ぶ分には充分なんじゃないかなと. バグってたりまた何か思いついたら手を入れるかもだけど,とりあえずは落ち着けたということで. 次に何かやるときは多分 UI をごそっと変える. もはやサーバとクライアントを分ける意味があまりない.
良い子のみんな,HTTP や HTTPS が開いてるからって,越えちゃいけないネットワーク境界を勝手に越えたりしちゃダメだぜ! :-P
□ なかの [/etc/portage/package.unmaskを作って、dev-python/japanesecodecs ..]
□ atzm [おぉっ,package.unmaskなんてものがあったとは…目から鱗です(汗).ありがとうございます. use.de..]