unix

kqueueを試す

ファイルの書き込み監視をする要件がでてきたので以前から気になっていたkqueueを試してみました。このあたりはBSD*なOSXの強みですね。

manしてみればわかるのですがインタフェースは

「大文字のG」|| 「Shift+g」か!?

in

動的にメニューを作成するアプリを作成している際に気づいたのですが、メニューショートカットを指定するkeyEquivalentメッセージ。指定するキャラクタが大文字か小文字かで意味あいが変わります。

もちろん、ドキュメントにも明記されているのですがうっかり読み飛ばしてしまい大いに悩みました。最初、"command + C"を表現するのに、

[menuItem setKeyEquivalent:@"C"];
[menuItem setKeyEquivalentModifierMask:NSCommandKeyMask];

としていたのですが、これだと"shift + command + C"となってしまうわけです。大文字のキャラクタはそれだけでshiftを指定されたことになるわけです。まあ、Cを入力するためにはshift + Cとタイプするでしょぅてことなのだろうけど...こういうことって、COBOL文化圏の人にはしっくりこないのだろうなぁ。(バリバリCOBOLの人が、趣味でCocoaなんてことないだろうけど。)

そういえば、昔、同僚に「vi(m)で最終行にジャンプするには?」って聞かれたとき、「大文字のG」って答えたことがあって同僚は「???」だったことを思い出します。あぁ、そのときはなんて察しが悪いんだろうと思ったものですが相手ときちんとコミュニケートするという意味では「shift + ジー」と答えるべきだったかなぁなどと思う次第。

ちなみに、setKeyEquivalentに大文字・小文字どちらで指定してもメニューバーに表示される時は大文字になります。(かの方もハマっていたんですね。安心。)

sedの置換

そ相変わらずシェルだのSQLだのbatなどの移行作業に追われています。間に合うかどうかちょっと不安なくらい。とにかく移行するモノの量が多くて作業が追いつかないので。

sedで日付文字列を置換しなければいけない場面があったのですが

TODAY=`date +%Y/%m/%d`
sed -e s/__REPLACE_DATE__/${TODAY}/ input.txt

なんてコードを書いて、「ハイ、これ済み」みたいなこと思っていたのだけれどもちろんエラー。しばし、考えて確か/(スラッシュ)の代わりは;(セミコロン)だったよなと思い直して

sed -e s;__REPLACE_DATE__;${TODAY}; input.txt

としたんだけどやっぱりエラー。結局、自力では思い出せずgoogleの助けを借りて

sed -e s%__REPLACE_DATE__%${TODAY}% input.txt

こんなことばっかりやっているので遅々として進まないわけです。それにしても、確かセミコロンでいけたハズなんですけど.....やっぱり記憶違いか?調べている暇もありませんよ。

バカバカしいコマンド but I like it - 2

in

以前、yesコマンドを発見したときもうれしかったけど、今日もまたカレントディレクトリ名を取得する4つの方法という記事でrevコマンドなるものを発見!このrevコマンドってのが奮っていて入力を単純に逆さまに出力するだけって代物。世の中おもしろいコマンドを作る人がいるね。これを作った人ってどんなニッチなニーズがあったのか?ぜひ聞いてみたいぃ。

そして、もっとおもしろい(大切な)ことは、このコマンドの存在を知っていて(有名かな?僕はまったく知りませんでした)かつ、例えばカレントディレクトリを取得するのに使えるって思いつく人もいるってこと。知識のストックが膨大でそれらを自在に組み合わせて問題を解決していく人ってホントクール。尊敬しちゃいます。僕はrevの存在を知らなかったし、仮に知っていたとしてもこんな利用法は思いつかなかっただろうな。だからbasenameが使えない環境においては右往左往して「basenameがなんで使えないんだ!」って毒づいて醜態を晒すタイプです、残念ながら。

というわけで、ぼくも一つ。以前、ほんとにくだらない理由で作った単に数を数えるだけのnumユーティリティ。こんなカンジ。

>num
1
2
3
4
5
6
7
8
9
10

「くだらねぇな。おっ、でもこんなコトに使えるじゃん。」ってこと思いついた人はぜひご一報くださいませ。

バカバカしいコマンド。 but I like it

in

bin配下のディレクトリを探索してみようという記事で知ったyesコマンド。20年以上、UNIX触っていますがまったく知りませんでした。なんつーか、バカバカしいコマンドだけれど、タイプ量はより少なくっ!いかにもUNIX的。

#> gem update rails --include-dependencies 
↓
#> yes | gem update rails

だから好き、UNIX!

コンテンツの配信