2008/09/27

Linuxサーバへのインストールあれこれ

Linuxサーバにソフトをインストールした。
ここでサーバと書いたのは、root権限を持たないPCという意味だ。
root権限が無いので、/usr/localとかは触ることが出来ない。
ROOTのインストールはバイナリを持ってきただけなので、ソースを落としてきてコンパイルしたわけでは無い。
今回インストールしたのは、cfitsioとCCfits、gqviewの3つ。

まずcfitsioのtarをここから落としてくる。
解凍してできたディレクトリに移動し、configureを実行する。

$ tar xzvf cfitsio3100.tar.gz
$ cd cfitsio
$./configure --prefix =/home/chonan/

これで自分のホームディレクトリ以下にインストールするためのMakefileが出来る。
後はmakeしてやればいい。

$ make
$ make install

こうすると、/home/chonan以下の/libにlibcfitsio.aが、/includeにdrvrsmem.h, fitsio.h, fitsio2.h, longnam.hが出来る。

次にCCfitsをここから落としてきて解凍し、そこに移動する。

$ tar xzvf CCfits-2.0.tar.gz
$ cd CCfits
$./configure --prefix =/home/chonan/ --with-cfitsio=/home/chonan/cfitsio

README.INSTALLに従って、cfitsioの場所を指定している。
しかしこのようにすると、

configure: error: C++ compiler cannot create executables

というエラーを吐いて止まってしまう。
config.logというのを見ると、CCという変数が指定されていないために、C++のコンパイラが無いというエラーが表示されている。
そこでconfigureの中に

CC=gcc

の1行を追加してやったら、今度はMakefileが出来た。
実はREADME.INSTALLの上の方に、CCを指定するようにという記述があったのだが、こいつを無視していた。

$ gmake
$ gmake DESTDIR=/home/chonan/CCfits install

ここでもインストールする場所を/home/chonan/CCfitsに指定している。
デフォルトでは/usr/localにインストールするようになっている。
それで良ければ、DESTDIR=の部分は要らない。

gqviewも上に同じ。
ここから落としてくる。

$ tar xzvf gqview-2.0.4.tar.gz
$ cd gqview-2.0.4
$./configure --prefix =/home/chonan/
$ make
$ make check
$ make install
$ make clean

これで/home/chonan/bin以下に、gqviewの実行ファイルが出来る。

PDF reDirect

PDFを作ったり、編集したりするソフトといえば、Adobe Acrobatだが、Standardでさえ30000円以上する。
Adobe Acrobat 7の頃、Elementというのが出来て、PDF化とちょっとした編集が出来て10000円以下、というのがあったが、それ以降消滅してしまった。
ちなみにTeXはdvipdfmxでPDF化出来るし、Open OfficeとかStar suiteとかは直接PDFにエクスポートできるが、編集できない。
自分が求める機能は、PDF作成、結合+分割、ページの回転。
作ったファイルに広告が入ったりするものや、日本語フォントで文字化けしたりするのは論外。

純正品はお高いので、フリーでPDF化するツールを探すと、これが結構いっぱいある。
しかしたったこれだけの条件に、適合するソフトは、自分の調べた範囲では1つもなかった。
圧倒的に多いのが、プリンタとして動いて、PDFを作成するだけのソフト。
あるいは結合するだけ、分割するだけ、回転するだけのソフトがそれぞれある。
広告が入ってしまうのも結構ある。

色々と調べた挙句、自分にはPDF reDirectがベストだという結論に達した。
PDF reDirectは作成と結合が出来るソフトで、広告無しの日本語OK。
メニュー等の日本語化は出来ないようだ。

PDF reDirectはここから落としてくる。
インストールは言語を選択可能だが、日本語はないので英語。
実行すると、途中でWindowsでは認証されていないプリンタドライバを入れる許可を求めてくる。
これを許可しないで、もたもたと注意書きを読んでいたら、インストールに失敗した。
気を取り直し、再実行して、ドライバにもOKを押すと、インストール完了。

作成は印刷でプリンタにPDF reDirect v2を選べばよいだけ。
もっさりとだが、勝手にPDF reDirectのUIが立ち上がる。
画質、カラー、ページの回転、保存場所、ファイル名を指定できる。
日本語や全角数字もファイル名にしてOKで、暗号化も出来る。
保存場所はFoldersの中の好きなフォルダを選べばよい。

結合はPDF reDirectを立ち上げる必要がある。
プログラムから立ち上げ、Foldersで結合したいファイルの場所に行くと、Filesというところに勝手にPDFが読み込まれる。
これをドラッグ&ドロップでMerge Listに入れて、上と同様に画質やら何やらを指定し、Saveを押す。

これだけのことがフリーで出来るのは、自分が知る限りPDF reDirectだけだ。
デフォルトでFoldersが毎回デスクトップに戻ることと、結合するファイル名がもとのファイル名になっていること、いちいちプレビューを読み込もうとすることの3点が気になるが、おおむね満足。

2008/09/20

ROOTでのフィット

ROOTでは任意の関数で、任意のグラフやヒストグラムをフィットできる。
例として2次元ガウス関数で、読み込んだファイルをフィットしたいとすると、次のようになる。

double par[6];
f1 = new TF2("f1", "[0]+[1]*exp(-(x-[2])*(x-[2])/2/([4]*[4])-(y-[3])*(y-[3])/2/([5]*[5]))", 100., 200., 100., 200.);
f1->SetParameters(100., 500., 150., 150., 30., 30.);
g1 = new TGraph2D("hoge.dat");
g1->Fit("f1");
f1->GetParameters(par);

parはフィットした結果を格納するための配列。
まず、f1で2次元ガウス関数を用意している。
このときフィットで求める値は[n]の形で書く。
上の例だと、[0]がオフセット、[1]はピーク高さ、[2]と[3]が中心のxy座標、[4]と[5]がxyのσになっている。
その後の数字は、式を定義する範囲であり、何も書かないと、デフォルトでは0から1になる。
SetParametersでは初期値を決め、g1はhoge.datという、(x y 値)という形式のファイルを読み込んだグラフである。
最後のGetParametersでフィットの結果をparに格納している。

ROOTの軸あれこれ

ROOTでグラフを書くとき、軸を追加したり改変したりしたいときがある。
たとえばy軸は普段、上が大きく下が小さいが、これを逆にしたかったりする。
こういうときはTGaxisを使う。
たとえばy軸の上下を反転させる場合だと、次のようになる。

frame = new TH1F("frame", "", 10, -50, 1000);
frame->SetMinimum(0.0);
frame->SetMaximum(20.0);
frame->Draw("AB");
TF1 *f1 = new TF1("f1", "-x", 20, 0);
TGaxis *a1 = new TGaxis(-50, 0, -50, 20, "f1", 510, "-");
a1->Draw();

まず始めにframeという枠を指定している。
x座標は-50から1000までで、yは0から20である。
このときDrawのオプション"AB"は軸を描画しないことを意味する。
軸の表記が重ねがきになるのを防ぐためである。

次にf1という関数を作る。
-xで軸の値の分布の関数を作っていて、20と0はその範囲を示している。
TGaxisの始めの4つの数字は、元の図の中での軸の始点と終点の座標を入れる。
ここでは軸は(-50, 0)から(-50, 20)までを指定している。
510は軸の目盛りの分割数を意味していて、510がデフォルトだが、510個に分割するわけではない。
数値の詳細は不明だが、これを大きくすると分割数が上昇した。
最後の"-"は軸に書かれる数値やタイトルが軸のどちら側に来るかを指定する。
ちなみに軸のタイトルとかは
a1->SetTitle("");
とかやればいい。

これだけだとx軸には何も出ないので、新たに軸を書いてやる必要がある。

Cでlogを使う

logを計算したいときは、lnと10を底にしたlogの2つの場合が多い。
関数電卓ではlnというボタンとlogというボタンがあるので、理由もなくCでもそうだと思っていた。

実際には、Cではlogはlnに相当している。
つまり、

y = log(x);

とすると、yにはln(x)が入る。
では10を底にしたlogの関数はというと、log10という関数がそれだ。

y = log10(x);

とすると、yにlog(x)が入る。

2008/09/11

DV-410V

DVDプレイヤーを探して欲しいと頼まれた。
そこで性能と価格について調べた。
必要な機能はDVDの再生とTVへ出力できること。
それとケーブルの取り回しが楽なHDMI端子付きであればなおよし。
この条件で調べ、DV-410Vを買ってみた。
10300円@Amazon。

思っていたよりも奥行きが無い。
そして軽い。
なので省スペースだが、何かの台にするには、あまりよろしくない。
それと付属のケーブルが1mしかない。
1mだと大きいTVの場合、端子位置にもよるけど、かなり設置場所が限られる。
本体のボタンもやや小さめ。

HDMIケーブルが付属しないので、2mのを1380円@Amazonで購入して、実際にDVDを見てみた。
結論としては、俺基準だと画質的にはまったく問題なし。
ただ2画面表示(4:3)にしたときと全画面(16:9)とで、色が違うように見えたのがやや気になった。
アスペクト比が4:3のときのほうが、16:9よりも鮮明だったように思えた。
こいつはUSBとかに入れたDivXの動画とかも見れるし、CDも聞けるようなので、そこら辺は追々。

ファイルの行数を知る

今までファイルの行数を知るのに、wcコマンドを知らなかった。
仕方なくEmacsとかで開いていたが、やたら大きいサイズのファイルだとEmacsのバッファサイズを超えてしまって、開けなかったり、えらい時間がかかったりしてしまう。

$ wc -l hoge.txt

とすれば、行数が表示される。

2008/09/06

fitsのネガポジ反転

fits画像をネガポジ反転させたくなったのだが、Irfanviewでうまくいかないので調べた。
Irfanviewでは、読み込んで反転させるまではいいのだが、それをfitsで吐き出せない。
irafとかSDFREDとかでは出来るようだが、インストールとか設定が面倒だ。

自分の環境では、もっとも簡単なのはGIMPでやることだ。
画像を開き、メニューバーの色(C)>反転(V)で反転させることが出来る。
なお、おなじくメニューバーの選択(S)>反転(I)というのがあるが、こちらはうまくいかない。