2009年11月12日木曜日

tail -f, tee

例えば、リダイレクトでファイルへ出力中にファイル末尾を動的に見たいとき、こんなことをするらしい。
% tail -f filename
そうするとファイルが書き込まれるたびに末尾がぞろぞろと動的に出てくる。これは便利。

これをperlでも実現できるみたい。基本的にtailが無い時に使える。

# ファイルを開く
open( INPUT, "<$ARGV[0]" ) or die; # ファイルの末尾まで移動する
seek( INPUT, 0, 2 );
# ファイルの監視を開始する
while ( 1 ) {
# 一行ずつ読み込み続け、表示する while ( < input > ) {
print $_;
}

# 50ミリ秒待って再度読み込む
select( undef, undef, undef, 0.05 );
}

参考URL

もともとは、perlで時間を指定してプログラムを制御できないかなぁと考えていたところ、こんなサイトを見つけたので、儲けもん。スリープを使えばいいのね。


今現在、センシングしたデータをリアルタイムでプロットするスクリプトが作れたら面白れーと思っていたので、ちょっとした収穫。

ということでメモ。

あ、あと追記。
コマンドのリダイレクトをするとファイルへ出力できて便利なんだけど、そのかわり標準出力をしなくなる。
ファイルへ出力をするけれども、標準出力をしたい!って時にはこんな欲張りなコマンドを。

% command | tee filename

これは便利。

gnuplotメモ

set xdata time
set timefmt "%Y/%m/%d %H:%M:%S"
set format x "%H:%M"
上記の記述で、”X軸を時間軸とする”、”タイムフォーマットの指定”、”記述フォーマットの指定”をする。

set xlabel "time"
set ylabel "accelX"
X軸、Y軸のラベル指定

set style line 1 lt 1 lw 3
set style line 2 lt 1 pt 7
set style line 3 lt 1 pt 8
set style line 4 lt 1 pt 9

set term postscript
set output "accelX.ps"
ポストスクリプトファイルへの出力

#accelX   <- コメントは'#'
plot "04.txt" using 1:7 title "nodeID: 04" with lines, \  <- 改行は'\'で。
"05.txt" using 1:7 title "nodeID: 05" with lines, \
"06.txt" using 1:7 title "nodeID: 06" with lines, \
"07.txt" using 1:7 title "nodeID: 07" with lines
pause -1
この記述により、コマンドラインから、"gnuplot file"と実行した際に、グラフだけ出力した状態で止められる。

ps -> gif

gs -q -dNOPAUSE -dBATCH -sDEVICE=ppm -sOutputFile=- foo.ps | ppmtogif >foo.gif


デフォルトの解像度は 72×72 ,“-r600x600” のようなオプションで解像度が変えられるようだ。

gs -q -dNOPAUSE -dBATCH -sDEVICE=ppm -sOutputFile=- -r600x600 foo.ps | ppmtogif >foo.gif


周囲に余白がある場合は,以下のように。

gs -q -dNOPAUSE -dBATCH -sDEVICE=ppm -sOutputFile=- foo.ps | pnmcrop | ppmtogif >foo.gif


上で使っている ppmtogifpnmcropPBMPLUSNetPBM というフリーソフトの画像フォーマット変換パッケージに入っているみたい。この ppmtogif の部分を変えればいろいろな形式に変換可能。

参考URL
http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?Ghostscript

2009年2月3日火曜日

シェルスクリプトと実行方法

シェルスクリプトは純粋なテキストファイルですからテキストエディタで書き起こしたり、修正することができます。そして、そのスクリプトを実行させるには端末からのシェルへの入力を代行させる意味で

$ sh < script

とシェルの標準入力に流し込む方法が使えます。また、シェルは引数があるとそれを入力ファイルとして扱いますから

$ sh script

としても構いません。しかし、このようにスクリプトを起動する度にシェルの引数とするのは面倒ですから、スクリプトに「実行権」を与えて使います。「実行権」とはminixのファイルシステムに用意されている許可属性の1つで、この権利が与えられているファイルはコマンドとして直接起動することができます。

テキストファイルとして書かれたスクリプトに実行権を与えるにはchmodコマンドを使用して、

$ chmod +x script

とします。このあとはスクリプトを修正してもファイルの実行権が失われることはありません。

このようにしてコマンドラインからシェルスクリプトを起動すると、カレントシェルは子プロセスとしてもう一つシェルを走らせ、そこでシェルスクリプトを実行します。この実際にスクリプトを実行するために走るシェルをサブシェル といいます。子プロセスのサブシェルは親プロセス(カレントシェル)の環境を受け継ぐことはできますが、その逆はできません。例えば、実行属性を与えたシェルスクリプトを使って環境変数を再設定しようとしても、再設定されるのはサブシェル側の環境変数であってカレントシェルのものではありません。

現在の環境変数を再設定するにはスクリプトをカレントシェルで実行しなければなりません。このためシェルにはドットコマンドと呼ばれるものが用意されおり、コマンドラインでドット .の後にスペースを置いて実行したいスクリプト名を書きます。

$ . script

ドット .を先頭に置くことによりカレントシェルは scriptを自分自身で実行しますので、現在の環境変数を再設定することができます。なお、ドット .に続く scriptには実行権の必要はありません。

2009年1月29日木曜日

graduation thesis

-- memo --
図はtgifが良いみたい。

2008年12月12日金曜日

find ways of v-ing/ find a way of

find ways of v-ing/ find a way of

find new ways of preventing
>~を防ぐ[避ける・阻止する・回避する・予防する]新たな方法[手段]を見つける


race to find ways of manipulating genes
>遺伝子を操作する方法を発見しようと競う[競って発見しようとする]

find a way of
~の方法を見つけ出す

find a way of proving ~
~を証明する方法を探す


1 FIND WAYS OF MAKING 10
2 FIND WAYS OF USING 7
3 FIND WAYS OF GETTING 5
4 FIND WAYS OF IMPROVING 3
5 FIND WAYS OF PROVIDING 3
6 FIND WAYS OF EXPRESSING 3
7 FIND WAYS OF CONNECTING 2
8 FIND WAYS OF DEALING 2
9 FIND WAYS OF COUNTERING 2
10 FIND WAYS OF CONTROLLING 2
11 FIND WAYS OF HELPING 2
12 FIND WAYS OF INTEGRATING 2
13 FIND WAYS OF KEEPING 2
14 FIND WAYS OF MAINTAINING 2
15 FIND WAYS OF LIVING 2
16 FIND WAYS OF PREVENTING 2
17 FIND WAYS OF SIMPLIFYING 2
18 FIND WAYS OF REDUCING 2
19 FIND WAYS OF WORKING 2

1 FIND A WAY OF LIVING 5
2 FIND A WAY OF MAKING 3
3 FIND A WAY OF EXPLAINING 3
4 FIND A WAY OF DEALING 3
5 FIND A WAY OF DOING 3
6 FIND A WAY OF GIVING 3
7 FIND A WAY OF BALANCING 2
8 FIND A WAY OF COPING 2
9 FIND A WAY OF GETTING 2
10 FIND A WAY OF FORMING 2