2012年8月30日木曜日

yumdownloader:依存関係を満たすRPMをまとめてダウンロード

yumdownloaderというコマンドがあるんですね(特に'--resolve'オプションが便利)。

LinuxをインストールしたけどNICのドライバがあたらない。yum も使えない、といった状況で役に立つかな? つまり、ドライバのビルドに必要なパッケージを別の計算機でダウンロードして、USBメモリで移す、とか。。。

2012年8月19日日曜日

2012年8月17日金曜日

CentOS-6 の OpenLDAP 環境構築

CentOS-6.3 で LDAPサーバーを作ろうとしたところ、次のようなエラーが出てどうもうまくいかなかった:

  • ldap_bind invalid credentials (49) ldapsearch
  • bdb_db_open no such file or directory

ネットを探してみると、CentOS-6 での OpenLDAP について書いているブログが多数あった。つまりつまずくポイントが色々あるということか:

だが、これらの内容を俯瞰してみるとけっこうバラツキがあって、腑に落ちない感じがした。さらにしつこく探してみると、よく整理された英語のページがみつかった:

"Minimal"とうたっているだけあって必要十分な手順が書いてあり、要所でのテスト(設定途中での動作確認)も理解を助けてくれる。うちの CentOS-6.3 でもうまくいった。

2012年8月10日金曜日

grep -r で再帰的に grep

今日ではないけど最近知った。ずっと find ... | xargs ... を使っていた。

小さい、軽量な、Linux distribution

Small で light weight な Linuxディストリビューション。

Webアプリとかそういうレベルではなくて、OS込みのプロダクトを、要するにハードウェアに直接インストールする形態の製品を提供したいときに使えるんじゃないかと思う。

2012年8月1日水曜日

iMacros と JavaScript を組み合わせて使う

よく使う Firefox add-on のひとつが、 iMacros なるもの(厳密には名前の右肩にTMが付く)。browser-based macro recorder であり、Webブラウザを使った操作を記録&再生することができる。


で、今日メモっておきたいのは、iMacros と JavaScript を組み合わせる方法について。iMacros のマクロはいくつかのコマンドからなっているが(Command Reference - iMacros に掲載されている)、一般的なプログラミング言語が提供するような関数や制御構造、データ構造をもたない。そこを JavaScrpt で補完しよう、という話。


環境は Firefox 14.0.1, iMacros for Firefox 7.5.0.4.

1. マクロを記録
まずは簡単なマクロをひとつ作るため、google.co.jp を開いて検索する操作を記録してみた。そうすると、次の内容のマクロ(#Current.lim)ができた。
VERSION BUILD=7500718 RECORDER=FX
TAB T=1
URL GOTO=https://www.google.co.jp/
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:f ATTR=ID:lst-ib CONTENT=foo
ここで、fooの部分が検索した文字列に相当する。
2. マクロを編集(変数の導入など)
記録したマクロをもとにして、繰り返し検索を行う処理をJavaScriptで作ることにする。そのための準備としてまずはマクロ "#Current.lim" を "my.lim" にリネーム。それから内容を編集。
第一に、新しいタブを作ってフォーカスを移すための iMacrosコマンド TAB OPENTAB T={{!VAR1}} を追加する。{{!VAR1}} はタブの番号を指定するために導入した変数。
第二に、JavaScriptから指定した文字列で検索を行うことにしたいので、foo{{!VAR2}} と置換。
結果、マクロは次の内容になった。
VERSION BUILD=7500718 RECORDER=FX
TAB OPEN
TAB T={{!VAR1}}
URL GOTO=https://www.google.co.jp/
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:f ATTR=ID:lst-ib CONTENT={{!VAR2}}
TAG POS=1 TYPE=INPUT:BUTTON ATTR=VALUE:Google<sp>検索
3. JavaScriptを作成
とりあえずテキトーにマクロを作って、my.js とリネームしてから編集。 iimSet, iimPlay という2つのインターフェースを利用してJavaScriptを書く。具体的には、マクロに導入した変数 {{!VAR1}} に、タブ番号を iimSet() という関数でセット。それから配列にはいっている文字列 foo, bar, baz を {{!VAR2}} にセット。最後に、iimPlay() で my.lim を実行する。
var a = ['foo', 'bar', 'baz'];
for(var i=0, n=a.length; i<n; i++){
  iimSet("VAR1", i + 1);
  iimSet("VAR2", a[i]);
  iimPlay("my");
}
4. JavaScriptを実行
作成した JavaScript(my.js)を保存して、実行する(Playボタンとか)。うまくいくとタブを新規作成して検索する操作が3回繰り返される。
※空白のタブがひとつできてしまうから、いまひとつなところがあるのかもしれないな。。。