2012-01-20
標準入力をブラウザで tail -f できる htmlcat というのを書いた
Perl | |
GNU screen 使っているとはいえ開発中に諸々のログを流しておくのにウィンドウ使うのに慣れてなくて、タブ開きまくるならやっぱりブラウザを使いたいってことで、標準入力をブラウザに出してくれるツールを書きました。
この htmlcat というスクリプトで、くだらない例ですが
% (while :; do; date; sleep 1; done) | htmlcat
このように実行すると
/Users/motemen/perl5/perlbrew/perls/perl-5.14.2/bin/htmlcat: http://0.0.0.0:46007/
と出力され、この場合 46007 番ポートで HTTP サーバが立ち上がっているので、これにブラウザでアクセスすると 1 秒ごとに現在時刻がブラウザに流れてくるのが確認できます。複数同時のアクセスにも対応しているので他人に見せるようなこともできると思います。
実際に使うときには --exec=program というオプションを指定すると HTTP サーバの起動直後に program に URL を渡すので、これを使ってたとえば Mac ユーザなら htmlcat --exec=open とすることでブラウザを自動で起動するようにするのが便利です。以下のようなシェルスクリプトを browsercat とかいう名前で保存しておくとよいかと思います。
#/bin/sh exec htmlcat --exec=open $*
あとコンソールの色付けにも対応してるので
% GIT_PAGER=browsercat git log -p
などとするとこんな画面が見られます。などなどどうぞご利用ください。
参考文献
-
コード中で使用している mxhr.js は mala さんの https://gist.github.com/286747 です。- mala さんに早速 pull request をいただきましたので、これを適用し、EventSource を使う実装となりました (ありがとうございます)。
- 空いているポートの取得には tokuhirom さんの Test::TCP を参考にしました。
コメント
