2009/01/28

FedoraでSMART情報を参照する

FedoraでHDDのSMARTの情報を見るには、rootになる必要がある。

# /usr/sbin/smartctl -a /dev/hda

などとすると、HDDのSMARTの情報を参照できる。
普通のユーザーでは/dev/hdaなどにアクセスできない。
ここに詳しく出ている。
これをモニターすることで、調子の悪いHDDの状態を知ることが出来る。

2009/01/19

ROOTファイルの扱い方

ROOTでは.root形式を扱うことが出来る。
この形式はバイナリで、ヒストグラム等を格納できる。
容量を稼ぐので、よく使われる。
このファイルを読む方法は2つある。

1つ目はGUIを立ち上げればいい。

root [n] TBrowser b;

とすると、ROOT Object Browserが立ち上がる。
これでrootファイルを選択する。

2つ目はコマンドラインから読み込む。

root [n] TFile f("hoge.root");

これでfという名前で読み込める。
hoge.rootの中身は

root [n] f.ls();

とすると見ることが出来る。
格納されているものはKEYとして表示される。
閉じるときは、

root [n] f.close();

とすればいい。

2009/01/10

ROOTのコンパイル

ROOTはバイナリとソースの2つで配布されている。
コンパイルされたバイナリを持ってくるだけで動くので、今までコンパイルしたことが無かった。
今回初めてコンパイルしてみたら、予想外のトラブルに悩まされた。

まず/home/chonan以下にソースを展開すると、root/というディレクトリが出来てくる。
そこに移動して、

$ ./configure --prefix=/home/chonan/root
$ make
$ make install

としてみたら、コンパイル自体ではエラーは発生しなかった。
そこで環境変数ROOTSYSを決めて、ROOTを起動しようとすると、エラーを吐いた。

rootx xpm error: XpmOpenFailed

というエラーが1行目に出て、

Error:cannot open file "iostream" (tmpfile):2:
*** Interpreter error recovered ***
Error:cannot open file "_string" (tmpfile):2:
*** Interpreter error recovered ***
Error:cannot open file "RtypesCint.h" (tmpfile):2:
*** Interpreter error recovered ***

というエラーが表示された。
一応、rootは起動しているのだが、正しく動いておらず、マクロ等も動かない。

これはconfigureのprefixの指定に問題があるからだ。
インストールする場所は、ソースを展開したroot以下であってはならないと決められているようだ。
違う場所を指定したら、きちんとインストールされた。
それとこのようにコンパイルしてインストールしたROOTの場合、LD_LIBRARY_PATHには$ROOTSYS/libではなく、$ROOTSYS/lib/rootを追加する。
この2つに注意すれば、問題なくインストールできる。

2009/01/08

ツライチUSB2.0

ツライチUSB2.0をAmazonで購入した。
送料込みで\2600。
これはUSB2.0ポート増設用カードで、PCカードスロットに差し込んで使う。
ただしツライチUSB2.0は、その名のとおり、カードスロットから飛び出す部分が全くないという点で、よくあるデバイスと一線を画する。
このため、スロットにイジェクト用レバーが無い場合、取り出せなくなってしまう。
Windows XPを搭載したThinkPad X23に装着したところ、差し込むだけであっさりと認識し、正常動作した。
X23はUSB1.1のみなので、大容量のデータ転送には時間がかかることが多く、USB2.0のカードが欲しかった。

使用してみた感想だが、USBの差し込みが非常に硬い。
ツライチのガワがそのままUSBの端子のメス側のガワになっているのだが、そこが削れてしまうのではないかというくらい硬い。
始めは差し込む向きを間違えているのかと思ったほどだ。
それと端子のガワが外側に向かって丸まっていないため、USBを差し込む位置を合わせるのは、目で見ながらやらないといけない。
手探りで適当に刺さるようなことは期待できない。

USBを気軽に刺したり抜いたりはしづらいが、高速での転送が必要なときだけ使うようにすれば、特に気にならない。
非常に自然な形でUSB2.0の端子を増設できたので満足。

2008/12/21

タイトルに日付を入れない

TeXで\maketitleとすると、日付が入ってしまう。
\dateコマンドを書かなくても、デフォルトで作成日時が入るようになっている。
しかし書式等が決まっていて、日付を入れたくないときがある。

こういうときは、

\date{}

と書けばいい。
これだけで日付を消すことが出来る。

2008/12/07

TeXにpng画像を貼り付ける

TeXに画像を貼り付ける場合、普段はeps形式にしてから貼り付けるということをしていた。
これだと元画像から容量が急に大きくなったりする。
epsもirfanviewとかではデフォルトでは見れないし、使いづらい。
ちなみにGimp2.4.6でも、変換してepsを出力することは出来るものの、見ることが出来ない。

pngを直接貼るには、まずもとのTeXファイルでdvipdfmのパッケージを使う必要がある。
本文の上に、以下の行を追加する。

\usepackage[dvipdfm]{graphicx, color}

次にebbというコマンドで、画像サイズを指定するbbファイルを作ればいい。
これによって、hoge.bbというファイルが出来るが、Bounding Boxを指定するファイルで、わずか1KBである。
中には画像タイトル、作成に使ったソフト、画像サイズ、作成日時が1行ずつで入っている。
ファイルの数は減らないが、bbファイルは1KBでしかないので、容量としてはずいぶん稼ぐことになる。
このやり方で、jpgファイルもPDFも貼ることが出来る。

2008/12/05

グラフや関数の座標軸にタイトルをつける

ROOTで座標軸にタイトルをつけたい場合、ヒストグラムだと非常に簡単だ。
SetXTitle、SetYTitleがあるので、簡単に指定できる。
しかしこの関数は、TGraphとかTF1といった、グラフや関数を描画する際には使えない。
TGraphやTF1にはSetXTitleやSetYTitleが用意されていないためだ。

グラフや関数の軸にタイトルをつけたいときは、GetXaxisとGetYaxis、SetTitleを組み合わせて使う。
SetTitleは左上に出る、グラフや関数そのもののタイトルを与えるが、軸にタイトルをつけるのにも使用できる。
一度描画してからGetXaxisやGetYaxisで、軸を取ってくればいい。

TGraph* g1 = new TGraph(n, x, y);
g1->Draw();
g1->GetXaxis()->SetTitle("X-Title");
g1->GetYaxis()->SetTitle("Y-Title");

タイトルを中心に持ってきたり、タイトルのオフセットを変えたりする場合も、いちいち軸を取ってくる必要がある。

2008/11/30

ROOTあれこれ

グラフやヒストグラムを何かの関数でフィットするとき、パラメータを固定したいことがある。
そのときにはFixParameterを用いる。

TF1* f1 = new TF1("f1", "[0]*sin(x)+[1]*cos(x)", -0.1, 0.1);

としたとして、[1]のパラメータを0にしたいときは、

f1->FixParameter(1, 0)

とする。

それと上限値をつけるときグラフに矢印を描いたり、エラーバーが上下左右対称でない場合など、エラーバーをいじりたいときは、TGraphAsymmErrorsを用いる。
ただしこれを使ったグラフは、うまくフィットが出来ない。
フィット作業は行うが、変な結果を返してくる。
なおTGraphErrorsはきちんとフィットできる。

2008/11/17

Skype Out

Skypeから固定電話にかけるには、料金が発生する。
今回やむなく使用したのだが、その価格に驚いた。
ハワイから日本の固定電話にかけて、なんと\2.66/分。
3分で8円。
ちなみに日本の携帯だと、\17.5/分。
固定電話に関しては、非常に安い。
おまけにプリペイドカードと比べると、圧倒的に手軽だ。
音質等も問題ない。

2008/11/04

serving

食事を買いに行ったとき、"How many serving ~?"って聞かれた。
が、困ったことにservingの意味が分からない。
すると店員の人が、これがone serving、これがtwo serving、という風に見せてくれた。
そこでなんとなく、servingっていうのが、単位であることが理解できた。

調べてみると、servingっていうのは、1人分とか1杯って言う意味があることが分かった。
serveにも~人分である、という意味がある。
学校で習ったかもしれないが、覚えていなかった。

2008/11/01

サクラエディタでPython mode

Windowsで使うエディタはしばらく前から、サクラエディタだ。
このサクラエディタはプログラムのコードを書くとき、拡張子に対応して、強調キーワードに色付けしてくれる。
ところがCとかTeXとかは自動的にやってくれるのだが、Pythonのコードの場合、自動的に強調ワードに色付けしてくれない。
色付けしてくれるようにするには、以下のようにすればいい。

1.メニューバーの"設定">"共通設定"と選び、"強調キーワード"タブをクリックする。
2."セット追加ボタン"をクリックし、セット名をPythonとする。
3."インポート"から、python_2.5_kwdを選んで、OKを押す。
4.メニューバーの"設定">"タイプ別設定一覧"を選択し、設定されていない設定(設定17等)を選択して"設定変更"をクリックする。
5.設定の名前をPythonとし、ファイル拡張子にpyと入れる。
6."カラー"タブをクリックし、強調キーワード1にPythonのセットを選択する。
7.コメントスタイルはブロック型(F)"""~(T)"""、ブロック型(A)#~(Z)として、OKを押す。

これでPythonのコードに色づけしてくれるようになる。
さらにつける色を替えたり、色付けしてほしい単語を追加することも出来る。

2008/10/26

unix timeと時間の変換

unix timeを普通の時間表記に直したいときがある。
すばやく計算したいときは、ターミナルで以下のように打てばいい。

$ ruby -e 'p Time.at(1224928800)'

これはRubyのコマンドを、-eオプションで1行だけ実行させている。
逆に普通の時間をunix timeにしたりしたいときは、dateコマンドを使う。

$ date -d '2008/10/25 00:00:00' +'%s'

+'%s'の部分でunix timeの出力を指定している。
ちなみにdateはbashのコマンドだが、上のようにunix timeを普通の時間に戻すことは出来ない。
またPythonでもRubyと同じようにできないか調べたが、どうもヘルプを読んだ限りでは出来ないようだ。
1行だけのコマンドを実行するオプションがなかった。

2008/10/21

Xのシングルウィンドウモードその2

検索していたら、こんなページを見つけた。
実はこれまでにWindow Managerを起動すればいいことは分かっていたのだが、.xinitrcを作って、

wmaker &

と書き込んでも、Window Managerはすでに起動しているというエラーが出て、Xが立ち上がらなかった。
なので原因は別だと思っていた。

だけど実際にはWindow Managerは立ち上がっていないようだ。
よって改めてWindow Managerを立ち上げればいい。
それには立ち上がったxtermで以下のように打てばいい。

$ twm &

ただしこれはKDEに似ていて、自分はあまり好きじゃない。
もう1つの方法は、xtermで

$ wmaker &

とする。
UIが違うだけだが、自分はこちらのほうが好みだ。

Xlib: extension "MIT-SHM" missing on display "(hostname):0.0".

というエラーが出るが、特に気にする必要はなさそうだ。

2008/10/18

Cygwinのシングルウィンドウモード

CygwinではローカルでXを起動するコマンドとして、startxとstartxwin.sh、xinitの3つがある。
startxとstartxwin.shはシェルで、/usr/X11R6/bin以下にある。
xinitはxinit.exeという実行ファイルで、場所はstartxとかと同じ。
ちなみに自分が現在使っているCygwinのバージョンは1.5.25。

このうちstartxとstartxwin.shはマルチウィンドウモードで立ち上がり、xinitはシングルウィンドウモードで立ち上がる。
シングルウィンドウモードのほうが自分は好きなのだが、xinitだとウィンドウ内のウィンドウを移動できなかったりして、これはこれで非常に使いづらい。
そこでstartxからうまくシングルウィンドウモードを立ち上げられないかを調べた。

startxがマルチウィンドウモードで立ち上がるのは、30行目に

defaultserverargs="-multiwindow -clipboard"

というのがあるため。
この-multiwindowを取ってしまえば、シングルウィンドウモードで起動できる。
が、このままだとxinitとまったく同じ状態。
まだまだ使いづらいのだが、解決策は今のところ分からず。

結局xinitの設定の問題かもしれない。
startxはxinitrcとxserverrcを読み込んでいるので、ここを変えればいいのかも。

2008/10/10

PDF Knife

PDFファイルを編集するためのソフト第2弾。
PDF KnifeはPDFから好きなようにファイルを切り出せる。
開始と終了のページを指定すれば、そこを切り出せるほか、ばらばらにすることも出来る。

PDF Knifeはここから落としてくればいい。
インターフェースはこれ以上なくシンプル。
解凍すればすぐ使えて、レジストリも汚さないし軽い。

2008/10/07

cfitsioのサンプルプログラムをコンパイルする

cfitsioのサンプルプログラムが、ここにある。
注釈の数字をどけてから、コンパイルしようとして失敗した。

:undefined reference to `ffopentest'

とかいう風に、いくつかの関数が定義されていないというエラーが出る。

これは-lmをつけないで、sinとかがあるプログラムをコンパイルしようとしたときと同じエラー。
これを解決するには、-lcfitsioをつければいい。

$ gcc hoge.c -lm -lcfitsio -o hoge

とかでいい。

-lはリンクするライブラリを指定している。
mathとcfitsioにリンクします、という意味だ。

Cygwinにcfitsioをインストールする

ここからWindows用のcfitsioを落としてくる。
落としてきたファイルを適当に解凍して、Cygwinのgccでコンパイルするだけ。
そこで

$ ./configure

とやるとエラーを吐いた。
エラーの1行目は、

./configure: line 11: $'\r': command not found

という感じ。
エディタでconfigureを見てみると、10行目まではコメントアウトされているので、いきなりこけていることが分かる。
そこで11行目を見てやると、11行目はただの改行。
おそらく改行コードだろうと思って、LF改行に変更してやるとうまくいった。
ちなみにデフォルトでは、configureがあるディレクトリ以下にlibとincludeが作られてしまう。
prefixを使った指定はうまくいかなかったので、一連のファイルを/usr
/local以下に持って行く。

$ ./configure
$ make
$ make install

これでOK。
余分なファイルは、/usr/local/srcを作って、そこに突っ込んでおいた。

2008/10/03

Amazonクレジットカード終了

Amazonクレジットカードが今年の12/15をもって終了してしまうようだ。
自分のメインのカードとして使っていたのでショック。
Amazon内の買い物なら2%、その他の買い物でも1%のバックがあり、これは一定額たまると、ギフトカードとしてメールで送られて来ていた。
今まで何回かギフトカードを活用した。
年会費も無料だったし、入会特典の2000円バックもあった。

匹敵するカードとなると、P-oneカードくらいか。
12/15までにシティクラシックカードが送られてくるようだが、こっちは年3150円。
海外旅行保険がつくが、シティポイントは使い勝手が悪そうだ。
あと2ヶ月で代替のカードを探すしかないか。

2008/10/01

ROOTでのフィット結果の見方

ROOTでフィットしたとき、そのカイ2乗の値や自由度を求めたいとする。
たとえば、g1というグラフを用意し、g1をf1という関数でフィットしたとする。
このときカイ2乗と自由度を求めるには、次のようにすればいい。

double chi = f1->GetChisquare();
double ndf = f1->GetNDF();

これでchiにカイ2乗が、ndfに自由度が入る。

カイ2乗に関しては、マニュアルのFitting HistogramsのAccess to the Fit Parameters and Resultsに載っているのだが、自由度についてはマニュアルには記載がない。

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の実行ファイルが出来る。