理科系の勉強日記

Linux/Ubuntu/Mac/Emacs/Computer vision/Robotics

macportsをプロキシ経由で

プロキシ経由でmacportsのselfupdateができない場合は

sudo env RSYNC_PROXY=proxy.hoge:8080 port selfupdate

のようにしてRSYC_PROXYを設定すればOK.
普通に環境変数を設定すると,その値をsudoでの実行時に引き継げるような設定をsudoersに記述する必要がある.

インストールも同様に

sudo env RSYNC_PROXY=proxy.hoge:8080 port install epstool

などとすればよい.

Perlの2次元配列メモ

Perlで二次元配列を動的に生成する場合を考える.

for( $i=0; $i<200; $i++){
   for ($j=0; $j<@data1; $j++) {
	$data2[$i][$j] = $data1[$j];    
    }
}

このように書くだけで,動的に二次元配列とすることができる.ここで

$j<@data1

は,@data1の要素数だけループを回している.

配列の要素数を取り出すときは以下のようにすればよい.

scalar(@data1);
@data1+0;

いずれも同じ結果を返す.


2次元配列の場合は

# data2[][]の1つ目の[]の長さ
scalar(@data2);
@data2+0;

# data2[][]の2つ目の[]の長さ
scalar(@{$data2[0]});
@{$data2[0]}+0;

とすればよい.

stdout: Broken pipe

gnuplot> plot "<cat vec.dat | head -23" using 3 with line

vec.datは30万行を超えるデータである.catの結果をパイプでheadに渡すと

cat: stdout: Broken pipe

などと仰った.パイプが壊れたようだ.

これはcatの結果が30万行と膨大で,その結果が終わるまでにheadを読み込んでいるためと思われる.そもそもcatの後にhaedをする必要は無い.正しくは

gnuplot> plot "<head -23 vdc.dat" using 3 with line

でよい.