
このページでは、色々なコマンドやプログラムの持つ機能のうち、僕がよく使う機能についてメモ書きしておきます。ここは、咄嗟のときに的確な説明が口をついて出てくるように記憶の裏打ちをしておく場所です。
rieceはemacsの上で動くIRCクライアントなのだけれど。riece公式ページのマニュアルには載っていないキーバインドがある。それは、アドオンで実装された機能についてのものが多いわけで。ということで一つめもっておこう。riece-unreadで定義されているriece-unread-switch-to-channel関数を呼び出すC-cC-u。これで未読のメッセージを含むチャンネルに移動できる。これだけでも結構違うな。
ircプロキシ(ボット)。irc常駐と書くと黒い雰囲気がしてしまうのだけれど、そういうことを支援してくれる。同じサーバにある別チャンネルごとに文字コードを変えることは出来ないのかと思ったけど、IRCプロトコル的にはどうなんでしょ。気分的には許してもいい気がするのだけれど。そうそう、Rieceにもチャンネルごとにコードを変える機能は無かったな。
下のようにしてtcpdumpの-Xオプションでパケットの16進ダンプとascii表示できる。
# tcpdump -X -i eth0 tcp port http
だから、ブラウザでどっかのページをとってくればGET hoge.html HTTP/1.0とかの文字がみえるわけだ。でも、行あたり16バイトしか表示されないのでヘッダーだけ表示するのに何行もかかってしまう。ということでperlを使って其のあたり多少見やすくしてみた。
#!/usr/local/bin/perl
sub readable
{
$num = hex($_[0]);
if(0x0a==$num
|| 0x0d==$num
|| 0x09==$num
|| 0x20<=$num && $num<=0x7F){
return 1;
}else{
return 0;
}
}
my @tmp;
while(<STDIN>){
@tmp = ();
if(m/^\t/){
s/^\t//;
s/^0x[0-9A-Fa-f]+:\s*//;
foreach(split /\s+/){
push @tmp, m/(.{2})(.{2})/;
}
foreach(@tmp){
if(&readable($_)){
print pack("H2", $_);
}else{
print $_;
}
}
}else{
print "\n";
print;
}
}
このスクリプトを適当なファイル名で保存してtcpdumpの出力をパイプする。
# tcpdump -x | perl hoge.pl
tcpdump側で必要なオプションは-x。これで多少見やすくなる。本当に多少だが。perl tcpdumpで検索すると同じようなスクリプトがいくつも見つかる。でもngrepのほうが正解に近いかもしれない。下のような感じ。
# ngrep -d eth1 -W byline port 80
マッチング条件として"HTTP"と指定すれば、HTTPというフレーズが含まれるパケット、つまりリクエストヘッダとレスポンスヘッダを送信したパケットの初め(分割されたパケットの1番目)だけが表示され、それ以外は#で表示される。
# ngrep "HTTP" -d eth1 -W byline port 80
永久ループ再生したいときは-loopオプションに0をつける。100回の場合は-loop 100とか。
$ mplayer -loop 0 hoge.mp3
SHOUTcastとかからプレイリストをダウンロードしてそのプレイリストを再生する場合に再生対象にプレイリストが渡されたということをmplayerにおしえてあげないとだめ。そのためのオプションが-playlist。
$ mplayer -playlist tunein-station.pls
ディスプレイの右上というのは以外にもデッドスペースなので、ここにウィンドウを持ってきて、前画面表示させる。
$ mplayer -ontop -geometry 100%:0% hoge.avi
非力なマシンでも使えるようにしたいので調べてみた。[linux] - フツーな日常によれば、X11よりもxvが軽いそうなので、下のようにすればもっとCPUパワーを消費せずに再生できるかな。
$ mplayer -vo xv hoge.avi
framedropを付けてもいい。framedropの度合いを増やして、よりスムーズ?に再生するには、dを押す。dを何回も押すことで、framedropの割合を、しない(disable)、適当(enable)、相当(hard)、と変えられる。当然ながら、framedropを増やすとカクカク動くようになってしまうが。
$ mplayer -framedrop hoge.avi
framedrop haedに対応したオプションはhardframedropで下のような感じにすればOK。
$ mplayer -hardframedrop hoge.avi
セカンダリモニタに表示すると黄緑色になってしまう場合。
$ mplayer -adapter 2 hoge.avi
で、結論として、smplayer使いましょう。smplayerはmplayerの呼び出しプログラムなんでよくわからん場合によきに取り計らってくれます(多分)。また、オプションの呼び出しに優れているのでmplayerをより軽く使えそうです。呼び出し部分の無駄を考えても賢いオプションのほうが効率が良いこともある。
重要なのは、どのようなマシンにも共通するよいプログラムはない。ということに早いとこ気づくことだ。どのようなプログラムにもソフトウェアの特徴と言うものがある。どのようなマシンもハードウェアは異なるだろう。いい組み合わせを見つけることはじゅうようである。同じプログラムが異なるハードウェアで同じようなパフォーマンスをあげるとも限らない。と言うことで、いくつかの選択肢を持っておくことが適当だ。
とにかく、プロフェッショナルは環境に左右されずに仕事をする。環境を作るのがうまいのがプロフェッショナルなのかもしれない。
うちのマシンは128Mのメモリをつんでいる。これで十分かなぁと思った時期もあったが、最近のソフトウェアは以外にもメモリを食ってしまうようだ。やっていることは昔と変わらないのにもかかわらず、何でこんなにも重くなってしまったのだろうと。と言うことで、やっていることは変わらないのにずいぶんと重く感じるようになった筆頭としてブラウザ、これの改善を考えましょう。
今使っているのはOpera 9.5。このブラウザ、メモリを結構食うようで、どうも128Mだとページングがひどい。なんだかIE6のほうが軽いんじゃないかと思えるくらい。最近は、メモリにキャッシングデータを保存しておくことで、高速化を図るというのが主流なのか、Firefoxもだめなようだ。Safariは試してないけど。と言うことで、今回は、「ブラウザ 128M|64M」でGoogle検索してみた。今回の目的は極力メモリに物を置かないブラウザを探すこと。ということで、Dount、ぶら。、KIKIと言う感じかな。
追々使用感をメモっておこう。で、DountL。開発もとのページにいきなり確信を付くようなコメントがあったので、DountファミリーのなかでDountLをチョイス。使用開始のメモリ消費は16Mでなかなかいい感じ。これで、ブラウジング中にどこまで消費してしまうかだな。youtubeで動画再生してみると10本ぐらいで32Mまで増加。1本見るごとに徐々に消費量が増加。放置しても減らないので、こまめに終了させることがいいのかも。
テキストブラウザというジャンルがある。テキスト端末でもそれなりにWebが見れるという時点で最高にクールだが、何よりも余分な機能を付けないでコンパイルできるので軽い。例えば、画像は表示できないし、Javascriptは効かないし、CSSは無視される(ように設定することも出来る)。この項では起動してみて回って終了するまでの一連の流れを解説する。
まずは起動してみる。下のどちらでも起動する。引数が.の場合はホームディレクトリからカレントディレクトリののディレクトリツリーとファイル一覧が表示される。-Bの場合はブックマークが表示される。引数がないと怒られて起動しない(debian)か設定ファイルのホームを読みに行く(vine)。僕は.で起動させるのが好き、他人にコマンドライン履歴を見られたときとかプロセスを見られたときに色々と詮索されるのが嫌だからね。
$ w3m . $ w3m -B
起動したら
| リロード | R |
|---|---|
| 新しいタブを開く | T |
| タブ移動 | } |
| タブ移動 | { |
| タブを閉じる | C-q |
テキストファイルの文字コードを知りたいときには
$ nkf --guess hoge.pl
$ ffmpeg -i hoge.asf -vn -acodec copy hoge.wma
-vnでコンテナに含まれる映像の出力を抑制。-acodec copyで音声データを変化させずに出力。いくつかのasfファイルからの分離ではファイルサイズが大きくなった(1MB程度)。できたファイルをxxdでバイナリダンプしてみるとよくわからん0x00がいっぱいある。分離後の音声ファイルはシークができるようになっていた。
$ sox hoge.wav hage.wav strech 0.5 56 trim 0 30
拡張子を見てファイルの種類を判断している模様。strechの56は適当かつ適切に設定。trimでトリミング、ここでは最初から30秒間の意味。
重要な示唆はシェルスクリプトをプログラムのリセット的に使用しようということだ。長時間起動し続けるとスワップメモリや物理メモリを食いつぶすようなプログラムは本来は書いてはけないものだと思う。でも、そのようなプログラムを使わなければどうしようもない場合もある。もし同じ仕事をするのに、先に述べたようなプログラムを何回も呼び出したほうが良いならば呼び出しようのシェルスクリプトを書くべきだと思う。
デフラグソフトは色々あるけど、これが良いと思う。体感速度的にはWindowsのデフォルトのデフラグソフトよりもずっと早い。オプションを付けて起動させることで、デフラグさせたくないファイルを制御できるのが良い。テンポラリフォルダに入っているファイルのデフラグは必要ないだろうと思うので、下のようにして起動するのが良いと思う。
> JkDefragCmd.exe -e d:\tmp\*
ためしにファイルサイズの異なる10000個のファイルをランダムに新しく作成して(総ファイルサイズは10GB程度、60GBのディスクに開き領域4GB)、デフラグかけたところ12時間でも終了せず。開き領域を増やしたらどうなる。