Hatena::Groupsubtech

NaN days

ブログを移転しています。最新の記事は motemen.hatenablog.com へどうぞ

2012-01-20

標準入力をブラウザで tail -f できる htmlcat というのを書いた

| 00:32 | 標準入力をブラウザで tail -f できる htmlcat というのを書いた - NaN days を含むブックマーク はてなブックマーク - 標準入力をブラウザで tail -f できる htmlcat というのを書いた - NaN days

GNU screen 使っているとはいえ開発中に諸々のログを流しておくのにウィンドウ使うのに慣れてなくて、タブ開きまくるならやっぱりブラウザを使いたいってことで、標準入力をブラウザに出してくれるツールを書きました。

GitHub - motemen/App-htmlcat: redirect stdin to web browser

この 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 サーバの起動直後に programURL を渡すので、これを使ってたとえば Mac ユーザなら htmlcat --exec=open とすることでブラウザを自動で起動するようにするのが便利です。以下のようなシェルスクリプトを browsercat とかいう名前で保存しておくとよいかと思います。

#/bin/sh
exec htmlcat --exec=open $*

あとコンソールの色付けにも対応してるので

% GIT_PAGER=browsercat git log -p

などとするとこんな画面が見られます。などなどどうぞご利用ください。

f:id:motemen:20120120002038p:image

参考文献

  • コード中で使用している mxhr.js は mala さんの https://gist.github.com/286747 です。
    • mala さんに早速 pull request をいただきましたので、これを適用し、EventSource を使う実装となりました (ありがとうございます)。
  • 空いているポートの取得には tokuhirom さんの Test::TCP を参考にしました。