2004-08-10
_ cygwin フル mirror でびっくり
mail-archives/ を除いて全部 wget したところ、1.8GB に! まぁでも Linux ディストリビューション丸ごと落としたと思えば CD 3枚なのでこんなもんなのか。もう少しインストール/アップデートが速く手軽にできるんなら丸ごと落とさなくていいのになぁ。
_ ここでも Wiki を立ててみた。
サイト全体のテイストを合わせるためにまず選んだのが Hiki. サイドバー対応に will をカスタマイズして、おーなかなかいい感じじゃーんと思っていたが、Hiki が必要としている strscan は shared library じゃないか。Ruby 1.6.8 な aaa cafe で動かそうってのはちょっと無謀だろうと思ってやめる。
VikiWiki を試してみる。相変わらず setup の意味が分かりにくいのと、認証を none にしても必ず認証が必要な予約ページが存在している。この不整合さはどうだ。コンセプトは悪くないと思うのに、どうしても使い始めるに至らない困った Wiki だ。
最終的には FreeStyle Wiki Lite に落ち着いた。FreeStyle Wiki が tDiary テーマコンパチなのは知っていたが、肥大している感じがどうしたものかと思っていたんだけど、FreeStyle Wiki のサイトに行ってから Lite の存在を思い出した。あーこんなもんでいいじゃないか。別に気張ったドキュメント書きに使うわけじゃないんだし。
ということで ぶくまく を用意してみました。ありがち具合がいい感じです。
_ WinSCP 3.6.7
putty core の security fix に対応。これ書いている時点では日本語版はまだ 3.6.6 だけど。3.6.6 でも対応しているみたいなんだけど、せっかくだから 3.6.7 まで待つか。
_ アフィリエイト狩り
うーん、そんなものがあるとは。(まだちゃんと読んでないけど。)ちょっと遊びでこのサイトにも Apple Store アフィリエイト入れてみようかななんてことを考えていたのだけど、これは目に付くチャンスなのか?(違
2007-08-10
_ OSX でウィンドウ切り替え
OSX では command + tab でアプリケーションの切り替えはできるんだけど、一つのアプリで複数のウィンドウを開いていた場合にそれらのウィンドウの切り替えをキーボードから行うことはできない。
と、思い込んでいたができた。
10.3 の環境ではここで書いてあるのと違って
command + `
だった。ただし、Realforce + WinK ドライバ + uControl の環境では Shift + @ で入れる ` ではダメで、たまたま [半角/全角] に割り当てられていた ` を使ったら動いた。つまり、
command + ` command + tab
はキーボードで縦に並んでる状態になって、予期せずなかなか使い勝手のよい状態に。へー。
_ psh - interactive shell with the power of perl
※ psh はログインシェルまでこなせちゃう shell です。Perl をインタラクティブに使いたいという、当初の目的からは外れそうです。
川o・-・)<2nd life - perl でインタラクティブなシェルを実現する perlsh
とか見て入れてみっかーと思って Debian etch(4.0) で似たような感じの名前を探してみたところ、
$ apt-cache search readline | grep perl libenv-ps1-perl - prompt string formatter libterm-readline-gnu-perl - Perl extension for the GNU Readline/History Library libterm-readline-perl-perl - Perl implementation of Readline librarieslibterm-readline-zoid-perl - Pure Perl implementation of Readline libraries
てな感じ。でもやはり perlsh コマンドとやらはインストールされない。cpan から入れているわけじゃないし、ソース展開して deploy なんていやなのねんと思い、気分を変えて FreeBSD の方で
$ make search key=perlsh | grep ^Path Path: /usr/ports/shells/perlsh
キター。ここで Makefile を読むと
MAN1= psh.1 \
pshcomplete.1 \
pshconfig.1 \
pshdevel.1
おや? psh ?
改めて
$ apt-cache search psh | grep perl libpdf-api2-perl - provides the functions for creating PDF documents in Perl psh - interactive shell with the power of perl
おっ。
apt-get install psh $ psh psh% File::Glob::<TAB> AUTOLOAD bootstrap GLOB_ALPHASORT bsd_glob GLOB_BRACE constant GLOB_CSH csh_glob GLOB_ERROR doglob GLOB_NOMAGIC glob GLOB_QUOTE import GLOB_TILDE
おぉ。豪快に補完される。
ステキ。
※ OSX 10.3 + PPC の環境では cpan からインストールしたあとに .cpan/build/psh-1.8 内で make install した。これで合ってるのかどうかよく分からないけど動いてる。Term::Readline::Gnu はコンパイルにコケるので、Term::Readline::Perl にした。
あーれー? なんか普通のコマンドも補完するな。んー? なんか思っていたのと違う?
2008-08-10
_ shell スクリプトと Ruby スクリプトで設定を共有する
あらためて書くほどたいした話じゃないです。
細々した仕事をするスクリプトの多くは基本的に sh スクリプトが多いと思うのですが、やはり sh スクリプトでは多少荷が重い仕事もあります。awk や sed などを使うのはまぁ常套手段ではありますが、あんまり激しくコマンドを呼び出すとそれだけ負荷が高くなっていきます。そういう場合、自分は Ruby で書き直してしまうのですが、すでに稼働中の sh スクリプトを含めて毎回同じような設定を書いていることに気がつきました。わずか数行の代入文とは言え、なんかこれ無駄な感じがします。
sh スクリプトの変数代入は基本的に以下のように書きます。
VAR=VAL
自分の場合、sh スクリプトの変数は常に大文字で書くようにしているのですが、よく見たらコレ、
Ruby の定数定義と同じじゃん
と気づきました。しかも Ruby はバッククォートを使った別プロセスの結果の取得も sh スクリプトと同じように動きます。つまり、特別なフォーマット(XML やら YAML やら)を用意しなくても、特別なパーサを用意しなくても、同じ設定をそのまま sh でも Ruby でも読み込むことができるということです。
具体的にやることは以下のように、

- 変数定義の部分を別ファイルに切り出し
- sh スクリプトでは . で 1 のファイルを読み込む
- Ruby スクリプトでは load で 1 のファイルを読み込む
だけです。
Ruby の方で定数はちょっと扱いにくいなぁと思ったら Object.const_defined?(), Object.const_get() を使って変数に取り込むことも可能です。
最初から小文字で変数を書いて Ruby でもローカル変数として取り込めばいいじゃんという意見もあるかもしれませんけど、Ruby スクリプト側は恐らくコードと設定の分離を意識して書きたいだろうから、ローカル変数にいきなり取り込むよりいったん定数で取り込んでおいて、それを必要に応じて使えるようにしておいた方が気持ちいいような気がします。で、この処理を module に追い出してしまえば毎回書く必要もありません。うん、いいアイディアだ。
_ poppen [FreeBSDの場合、devel/p5-ReadLine-Gnuをmake extractすれば、perlshが含ま..]
_ wtnabe [そうですね。そういう方法もあるんでした。Debian でも同じ要領でイケそうですね。ありがとうございます。ずいぶん遠..]