2010/02/28

ROOTでFFTWを使う

導入したScientific Linuxには、デフォルトだとgccもEmacsも入っていない。
まずはこれらを入れる。
それ以外にもROOTのインストールには、libXft、libXpm、libXextが必要。

$ su
# yum install gcc*
# yum install emacs*
# yum install libXft*
# yum install libXpm*
# yum install libXext*

これでROOTに必要なコンパイラとライブラリが揃う。
次にFFTWをここから、ROOTをここからダウンロードする。
これらは適当に解凍しておく。
以下のようにしてFFTWをROOTより先にインストールする。

$ cd fftw-3.2.2
$ ./configure
$ su
# make
# make install

これでFFTWがインストールされる。
デフォルトの設定で、/usr/local/lib以下にlibfftw3.aとlibfftw3.laが入る。
.bashrcには以下の1行を追加する。

export FFTW3=/home/chonan/fftw-3.2.2

指定している場所は実際には環境によって異なる。
次にROOTのほうのコンパイルを行う。

$ cd root
$ ./configure --enable-fftw3 --with-fftw3-incdir=/usr/local/include --with-fftw3-libdir=/usr/local/lib
$ su
# make
# make -j 2

最後はCPUのCore数を指定している。
.bashrcに追加するのは、以下の3行。

export ROOTSYS=/home/chonan/root
export PATH=$PATH:$ROOTSYS/bin
export LD_LIBRARY_PATH=/home/chonan/root/lib:$LD_LIBRARY_PATH

最後に.bashrcを読み込む。
これでOKのはずだと思っていたら、以下のようなエラーが出て、FFT.Cがうまく動いてくれない。

dlopen error: /home/chonan/root/lib/libFFTW.so: cannot restore segment prot after reloc: Permission denied
Load Error: Failed to load Dynamic link library /home/chonan/root/lib/libFFTW.so
Error in <TVirtualFFT::FFT>: handler not found
(class TH1*)0x0
*** Interpreter error recovered ***

ここを参考に、以下のように打つ。

$ su
# chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t /home/chonan/root/lib/libFFTW.so

これでcontextが変更できる。
contextについてはこちら

context of /home/chonan/root/lib/libFFTW.so changed to system_u:object_r:textrel_shlib_t

これでFFT.Cが走るようになる。

VMware ServerとVMware Player

Windows 7上のROOT(5.26.00)でFFTを使おうとしたところ、これが上手く動かない。
Tutorialディレクトリ以下の\fftにFFT.Cというのがあるが、実行するとlibFFTW.dllの読み込みに失敗する。
PATHを設定してもうまくいかないので、Linux環境を用意することを決断した。
Linux用に出来るマシンは無いので、LinuxはVMwareでWindows上で動かすこととした。

まずVMware Serverを落としてみた。
ダウンロードにはアカウントを作る必要がある。
インストールはブラウザ経由で行い、ついでゲストOSの設定を行う。
ここまでは上手く行くのだが、64bitのWindows 7だからかConsoleが出せず、ゲストOSのインストールが上手くいかない。

仕方がないので、VMware Playerにターゲットを変更した。
アカウントはVMware Serverのときに作ったのが使える。
VMware Player 3.0は64bitのOSにも対応している。
VMware Serverと同様の設定だが、こちらはブラウザを起動する必要もなく、日本語なので簡単だ。
昔はVMware Playerには入っていなかった、VMware Toolsも自動的にDLしてくれる。

ゲストOSにはScientific Linux(32bit)を選択した。
Red Hat Enterprise Linuxのクローンだということと、Fermi Labが管理していて信頼性が高いことが理由。
全てデフォルトでインストールしたが、デフォルトだとgccやEmacsが入らなくて驚いた。
Scientificな用途にそれでいいのか疑問だ。
ゲストOSの設定も基本的にはデフォルトだが、ネットワークはNAT接続とした。
VMware ToolsはVM(V)->VMware Toolsをインストールするを選ぶと、ゲストOSの/media以下にLinux版がダウンロードされていた。
これを解凍し、インストールすればいい。

2010/02/12

64bit OSあれこれ

T400sのWindows 7 64bit版を使ってみて、いくつか発見があった。
まず1番驚いたのが、AdobeのFlashが64bitのブラウザに対応していない(2010/02/12 00:00時点)ということ。
従ってIEではYouTube他の動画サイトで動画を見ることが出来ない。

次の驚きは、32bitのアプリでも64bit上で動作するものがあるということ。
アプリによっては、バイナリが64bitと32bit用で分けて用意されていることがあり、32bit版は64bitのOS上では動かないかと思いきや、そんなことはない。
従ってYouTubeを利用するには、32bitのブラウザをインストールし、そこにFlashのプラグインを入れればいい。

このようにアプリが32bitなのか、64bitなのかを常に意識しておく必要がある。
たとえばffdshowを利用する場合、64bitアプリ用と32bitアプリ用のどちらか、あるいは両方をインストールしておく必要がある。
上記のFlashにしても、今後64bit版が出たとして、IEで使う場合は64bit版を、他のブラウザ用に32bit版をそれぞれ用意しておく、ということになる。
ちなみにCygwin(1.7.1)とRoot(5.26)は64bit版OSにインストール可能で問題なく動作した。

2010/01/31

T400s到着

注文していたT400sだが、1/25(月)の午前中に届いた。
平日の午前中なので当然不在、1/30(土)の午前中に再配達と相成った。
構成は以下の通り。

インテル Core 2 Duo SP9600 プロセッサー (2.53GHz FSB=1066MHz L2=6MB)
Windows 7 Professional 64bit 正規版
14.1型液晶 WXGA+ LEDバックライト
Intel GMA 4500MHD
DDR3 4GB PC3-8500
英語キーボード
ウルトラナビ(トラックポイント+タッチパッド)指紋センサー付き
内蔵カメラ・モジュール
64GB ソリッドステートドライブ
DVDスーパーマルチ, ウルトラベイ・スリム
5 in 1 メディア・カード・リーダー
6 セル Li-Ion バッテリー
90W AC アダプター(標準添付)
内蔵Bluetooth
Intel WiMAX/WiFi Link 5150
Microsoft Office Personal 2007, Microsoft Office PowerPoint 2007 日本語版

とりあえずIntel SSDに換装するために、リカバリディスクを作る。
Windows 7を積んだマシンのリカバリーディスクの作成手順はここにある。
ThinkVantage tools->出荷時状態のリカバリー・ディスクと選択し、BootメディアとDataメディアを作る。
メディアを作る光学ドライブがオフになっているとドライブが選択できないので、ドライブを開閉させてONにしておく。
BootメディアはDVD1枚、DataメディアはDVD3枚になった。

リカバリディスクを作っておいて、SSDを換装する。
入っていたのはToshiba製の64GB。
換装するIntelのSSDにはドライブ挿抜用のシートが付いていないので、これにScotchのPV-1という両面テープを用いて、が入っていた帯電防止用の袋を切って作ったフィルムを貼り付けた。
普通のHDDとかが入っている袋と同じものだ。
使った両面テープは金属にも付くが、厚みが1.14mmもある。
買ったSSDは厚みが8mmタイプのため、ほとんどぴったり収まり、テープが入るスペースはほとんどないため、蓋の下の5mmほどのスペースを利用した。
換装後、作っておいたリカバリメディアを用いて、無事リカバリまで完了。

2010/01/23

Micro SATA SATA変換基板

IntelのSSD、X18-MはMicro SATAという規格なので、そのままだとSATAの規格のコネクタに挿すことはできない。
ところがMicro SATAという規格はあまり流行っていないためか、SATA用の周辺機器に比べて数が圧倒的に少ない。
Micro SATAをSATAに変換する基板かケーブルがあると、手持ちの裸族のお立ち台が使えるので探していた。
見つけた中で最も安いのがAREA製の
Amazonで700円。

これでX18-Mを実際につないで確認したり出来るようになった。
X23に繋いでみると、ディスクの管理でちゃんと149GBが未フォーマットの領域として見えた。
一方で肝心のT400sだが、1/20にようやく出荷メールが来た。
出荷のステータスによれば、すでに配達完了になっているが、まだ手元には届いていない。
すでに日本には着いているようなので、もうすぐだ。

2010/01/16

T400sのステータス

Lenovoの直販サイトでT400sを注文したのが、昨年末12/12。
ところが1ヶ月経っても何の音沙汰も無い。

注文のステータスはここから確認できる。
注文状況はここに書かれている流れの通り。
ステータスは1ヶ月以上前から"生産指示済"になっていて、出荷予定日は空欄になっている。
今後の見通しや、遅れている理由等の説明、出荷しました等のメールが一切来ないので、業を煮やして問い合わせをしてみた。
問い合わせはこちらの注文後の納期問い合わせのためのメールアドレス宛。
返信によれば、パーツの不足で出荷が遅れていて、出荷は1月末を目指しているとのこと。
このような件は検索してみると沢山出てくるので、自分だけではないようだ。
むしろすぐに発送されたという話があまり出てこない。
在庫管理ぐらいきちんとして欲しい。

それと今回初めて直販サイトを使ったが、これがかなり使いづらい。
1つ構成を変えるたびに読み込むので、表示が切り替わるのにタイムラグが発生し、イライラする。
さらに最初に選択できるモデルがいくつかあるが、この時点で割引率が決まるらしく、違うモデルで同じ構成にしてみても価格が同じにならない。
具体的には下位にオプションをつけて、上位の構成にしようとすると、下位のほうが高くなる。
それも万単位で額が異なる。
モデルごとに納期も書かれているのだが、不足していると思われるパーツのところに別に納期が書かれていたりする。
ちなみに自分の注文時には4週間以上と書かれていたものは無かったので、その後不足が出たのだろう。
つまり書かれている納期はその時点での在庫のみを反映したもので、注文数と在庫から出た数字ではないということなのだろう。

法人の客が中心なのだろうが、もう少し何とかしたほうがいいと思う。

2010/01/09

SSD到着

Amazon.comで買ったSSDが届いた。
Electronica Directで$709.99、日本円に直すと67477円。
これにShippingの費用が4689円($49.34)が乗っかって合計72166円($759.33)。
プラス輸入でかかる関税が1800円、着払い。

日本時間12/27に発注したところ、1/1に発送のメールが来た。
1/12着予定となっていたが、昨日到着。
不在だったので、再配達で本日着。
発送はUPS、Amazon.comからもElectronica DirectからもTracking IDが送られてきていたので、ステータスは常に確認できていた。

買ったのはX18-M、型番はSSDSA1MH160G101。
Intelの第1世代MLC、容量は160GB。
ファームウェアのバージョンは8820と記載されている。
最初のファームウェアが045C8820なので、これのことだろう。

開けてみて意外だった点が2つ。
1つ目はサイズ。
1.8インチのSSDは5mm厚だと思っていたのだが、届いたのは8mm厚。
IntelのSpecシートを見ると5mm厚の他にも8mm厚の図面が載っている。
ちなみに重さは実測で48.5g。
2つ目は黒く塗装されていなかったこと。
型番としては第1世代のはずなのだが、8mm厚だったからか。

こいつはThinkPad T400s用に調達したもの。
いずれにしてもT400sに搭載できれば文句はない。
1.8インチのHDDとほぼ同じ形状なので、問題はないだろう。
肝心のT400sは12/12に発注したのだが、4週間後の今になっても発送メールさえ来ていない。

2009/12/27

Amazon.comでSSD購入

Amazon.comでSSDを注文してみた。
当然ながら日本のAmazon.co.jpとはアカウントが異なるので、別途作る必要がある。
日本の住所のクレジットカードでも問題ない。

Amazon.comで扱う商品のうち海外に発送可能なのは、基本的にはCDやDVD、本など。
SSDのようなエレクトロニクスの品物は海外発送の対象外だ。
しかしAmazon.comに出店している業者は必ずしもその限りではない。
各業者のShippingのポリシーを見ると、International shipping availableのところは結構ある。
今回は選んだのはElectronica Directというところだった。

後はAmazon.co.jpと同じように進む。
最後に警告メッセージが出たので何かと思ったが、関税がかかるとの表示のみ。
そのまま進むとあっさりOrderが通り、Confirmationのメールが来た。
品物が届くのは年明け。

2009/12/07

Intel SSDとファームウェア

Intel SSDの新ファームウェアが11/30に公開された。
このIntelのSSDの世代とそのファームウェアの情報をきちんと理解していないので、ここでまとめておく。

IntelのSSDには現時点では3種類あり、その1つ目が第1世代50nmプロセスのMLCのSSD。
X18-MというマイクロSATAを採用した、1.8"の規格のものと、X25-Mという通常のノートで多く採用されている2.5"の規格の2つがある。
容量は80GBと160GBの2種類。
速度はシーケンシャルReadが250MB/s以上、シーケンシャルWriteが70MB/s以上。
ケースはブラック。

2つ目は第1世代だがSLCのSSD。
プロセスはこちらも50nmだが、SLCという点が異なる。
またSATAの規格のみで製品名はX25-E、容量は32GBと64GB。
速度はシーケンシャルReadが250MB/s以上、シーケンシャルWriteが170MB/s以上。
ケースはこちらもブラック。

3つ目が第2世代の34nmプロセスを採用した、MLCのSSD。
こちらにもX18-MとX25-Mの2種類があり、容量もそれぞれ80GBと160GBの2つがある。
ケースは白と銀になっている。
速度はシーケンシャルReadが250MB/s以上、シーケンシャルWriteが80GBモデルで70MB/s以上、160GBモデルで100MB/s以上。
この第2世代は1.8"版が全く世に出ていないようで、Intel Communitiesでも話題になっている。

Release Noteによれば、これらの3種類のうち、11/30にアップデートされたファームが適用されるのは34nmプロセスの第2世代だけ。
第1世代のファームウェアはそれぞれ、-Mは2009/4/13の045C8820が、-Eは2009/8/25の045C8850が最新。
問題を起こしたり、起動できなくなったり、Trimコマンドが使えるようになったりするのも、全て第2世代のほうで、第1世代とは無関係だ。

ちなみに信頼性はMLCで、平均1,200,000時間、SLCだと平均2,000,000時間だそうだ。
信頼性の定義が気になるところだが、MLCの値でも100年以上になる。
これが1/10であったとしても、たぶん十分だろう。

2009/11/23

プラズマTV

自宅用にプラズマTVを購入した。
Hitachi製WOOO P42-XP03、42型録画機能付プラズマTV。
P42-XP03はフルHDのパネルを採用していて、録画用HDDの容量は250GB。
TV用の台、組み立てと取付け込みで、8月にヨドバシで200000円ちょっとだった。

プラズマの録画機能付きのTVということで、VIERAとWOOOの2択だったが、WOOOになった。
パネルは全く一緒だが、HDDの機能とか、チューナーの数とかそういったものが異なっている。
自分は一度見た番組は基本的にすぐに消してしまうので、HDD容量は重要ではなく、チューナーが2つというのと、価格差を考慮して。

売り場で悩んだのだが、フルHDにするかHDか。
フルHDは1920x1280で、HDだと1280x720。
価格差は30000円程度だったが、売り場にいたHitachiの販売員によれば、人間の眼にはほとんど区別がつかないということだった。
しかも現在の放送機材はフルHDではなく、導入には大金が要るので、すぐには移行しないだろうとも。
ただ今後、フルHDのコンテンツが増えていくことを見越して、フルHDにしておいた。

しばらく使ってみて気になったのが、どうも映像がそんなに綺麗ではないという点。
実家で使っている、WOOOのW37P-HR9000のほうが映像が綺麗だ。
特にパターン状の映像が動くとき、ブロック状のノイズになったりするのが気になる。
たくさんの粒状のものが動いたり、スポーツイベントの客席などが映像として流れるとき気になる。
おそらく映像がパネルに追いついていないからだと思うのだが、正確な理由は不明だ。
W37P-HR9000はフルHDではないので、それが見えてきていないだけだと思っている。

リモコンからはW37P-HR9000についていた、2画面のボタンが消えてしまったのが不満。
かわりに裏番組ボタンがついたが、こんなのは要らないので、2画面用ボタンに戻して欲しい。
それと2画面にした状態から、映像を外部入力に切り替えられないのも不満。
たとえば2画面にしておいて、ケーブルテレビとゲーム機のような映像入力にしようとしても出来ない。
これもW37P-HR9000で出来ていたことが出来なくなってしまった。

それと製品とは全く関係ないが、エコポイントの申請が甚だ面倒だ。
この製品はエコポイント23000ポイント分に相当する。
申請には保証書のコピーと申請書類、領収書の原本が要る。
こういう一連の手続きが必要な上、申請できる物品類のリストからポイント分に相当する物品を選び出さなくてはならない。
リストの中にはSuicaやPasmoもあるが、こちらは1ポイントが1円に相当していない一方で、QUOカードにすると1ポイントが1円になっているのも納得いかないところ。
こんなことはやめて、さっさと値引きしてくれたほうがずっといい。

2009/11/17

Adobe PostScript Driver

psファイルはほとんどのOSであまり使いやすいとは言えないが、Ghostscriptによってpdfファイルを作るときに必要になる。
Windowsでpsファイルを作る方法はいくつかあるが、今回はAdobe純正のツールを使うことにした。
具体的な手順はここに詳しい。
PPDファイルとユニバーサルインストーラを落としてきて、ローカルポートにFILE:を指定すればいい。
これだけでプリンタとしてAcrobat Distillerを指定できるようになる。

使うときは印刷からプリンタとしてDistillerを選べばよいのだが、出力先を指定しなくてはならない。
ここにC:からのフルパスを入れてやると、そこにpsファイルを作ってくれる。
GUIでフォルダ指定したり出来ないのがやや面倒に感じるが、これだけできちんとしたpsが作れる。
ちなみにリンク先のフォントに関する設定は現状だと何も要らない。
psはps2pdfで問題なくpdfに変わってくれて、きちんとベクトルフォントが適用される。
これで好きなようにPDFファイルを作ることが出来るようになる。

2009/11/15

ROOTの時間

ROOTで時間を扱うためには、UNIX timeに変換する必要がある。
例えば2009年11月15日00時00分00秒なら、

TDatime T0(2009, 11, 15, 00, 00, 00);

と書いてやると、T0という構造体に時間を入れることが出来る。
ただしこれをROOTの時間に直そうとすると、2009年11月15日にはならない。
これはなぜかというと、UNIX時間が1970年1月1日00時00分00秒からの経過秒数であるのに対し、ROOT時間は1995年1月1日00時00分00秒からの経過秒数になっているためだ。
従ってROOTで時間を使うときは、この点に注意する必要がある。

ROOTのUsers Guideの9章Graphics and Graphical User InterfaceのAxis with Time Unitsにtime offsetの3つの解決策が示されている。
1つ目は構造体にSetTimeOffsetを使うという方法。
gStyleのSetTimeOffsetを使って時間の構造体を変換すれば、このオフセット込みで計算してくれる。
2つ目はSetTimeOffsetを軸に適用すればいいというもの。
3つ目はSetTimeFormatを軸に適用するというもの。

もっと簡単にやるには、UNIX timeに変換した後で、788918400秒を引いてやればいい。
これは1995年1月1日00時00分00秒のUNIX timeで、実際には同じ結果になる。
上の例だと、

Int_t x0 = T0.Convert() - 788918400;

と書くと、x0にROOT時間の秒が入る。
グラフに使うための軸は、

TH1F *frame = new TH1F("frame", "", 9, x0, x1);
frame->GetXaxis()->SetTimeDisplay(1);
frame->GetXaxis()->SetTimeFormat("%y\/%m\/%d");

としてやればいい。

2009/11/01

ROOTでグラフに円を書く

ROOTで円を表示させるいいやり方を、かなり昔から探していた。
TF1を使うなら、1変数関数でなくてはならない。
円は式が2つになるうえに、ルートの中がゼロに近づいて行くので、TF1で無理やり表示させようとしても、ルートの中がゼロに近くなる領域では表示してくれない。

ROOTには他に楕円を表示させる、TEllipseというのがある。
しかしこれはグラフ用ではなく、なぜか中が塗りつぶされてしまう。
中の色は指定できるが、塗りつぶしなしのオプションが見つからない。
TEllipseで指定するのは中心のxとy、x方向の半径とy方向の半径。

TEllipse *e = new TEllipse(100, 100, 20, 20);
e->Draw();
e->SetFillColor(2);

もう1つ似たやつで、TArcというのも居る。
これも同様に中が白くなり、透明に出来ない。
TArcは中心のx、yと半径、開始の角度と終了の角度を指定する。

TArc *a = new TArc(50., 50., 10., 45., 315.);
a->Draw();

このように探しているものと似たようなものはあるのだが、パラメータ表示になるような関数をどうグラフに書けばよいのか、そのものずばりの答えになるようなものは見つからなかった。
自分が達した最終的な結論は、円はTGraphを使って書くほかない、というもの。
以下のように、まず角度の変数を十分細かく用意し、それを使って各点のx座標とy座標を計算させて結ぶ。
360度に対して1000個も点を打ってやれば、十分に線になる。
このようにすることで、パラメータ表示させるような関数、たとえばサイクロイドやアステロイドなどもグラフに書かせることが出来る。
ちなみに以下ではマニュアルに沿って配列を使っているが、配列が大きくなると計算時にメモリに大量にバッファするようになるので、SetPointを使うほうがいいだろう。

Double_t min = 0;
Double_t max = TMath::Pi()*2;
Double_t theta[1000], x[1000], y[1000];
for (Int_t i=0; i<1000; i++) {
theta[i] = max/1000.*i;
x[i] = 160 + 15*cos(theta[i]);
y[i] = 120 + 15*sin(theta[i]);
}
TGraph *g = new TGraph(1000, x, y);
g->Draw();

2009/10/31

FTPクライアント

一般にファイルのやり取りはscpで行うのだろうが、FTPもまだまだ現役で使用されている。
FTPのクライアントとしては、昔はFFFTPを使っていた。

長らくFTPなど使っていなかったが、最近になってWindowsがFTPを実装していることを知った。
コマンドプロンプトから

>ftp

と打てば、CUIで用いることが可能だ。
しかしこのWindows純正のFTPは、Tab補完が効かないので、非常に使いにくい。

なのでNcFTPを用いている。
このNcFTPはCygwinに実装されていて、これだとTab補完が効く。
Cygwinを立ち上げて、

$ ncftp

と打てば起動する。
サーバーにアクセスするには、

ncftp>open -u (IP or hostname)

とかすればいい。
-uオプションはユーザー名の指定。
抜けるのはbyeかexitで。
ファイルを取って来るには、

ncftp>get hoge

とすればいい。
ダウンロードされる先は、NcFTPを起動したときのディレクトリになる。

2009/09/22

ROOTの2次元ヒストグラムのカラー指定

ROOTで2次元のヒストグラムをカラーで表示させたいときがある。
デフォルトだと色が連続しておらず、また美しくもない色使いなので、今までは、

gStyle->SetPalette(1);

として、さらにDrawのときに"surf1"オプションを指定していた。
だがSetPaletteで指定できるカラーは許容範囲とはいえ、まだ物足りない。

このカラーを自分で指定するには、CreateGradientColorTableを使う。
たとえば次のようにすればいい。

TF2 *f2 = new TF2("f2", "0.1+(1-(x-2)*(x-2))*(1-(y-2)*(y-2))", 1, 3, 1, 3);
const Int_t Number = 6;
Double_t Red[Number] = {0.00, 0.00, 0.75, 1.00, 1.00, 1.00};
Double_t Green[Number] = {0.00, 0.00, 0.00, 0.00, 1.00, 1.00};
Double_t Blue[Number] = {0.00, 0.75, 0.75, 0.00, 0.00, 1.00};
Double_t Stops[Number] = {0.00, 0.20, 0.40, 0.60, 0.80, 1.00};
Int_t nb = 50;
TColor::CreateGradientColorTable(Number, Stops, Red, Green, Blue, nb);
f2->SetContour(nb);
f2->Draw("surf1z");

CreateGradientColorTableでは、何段階のGradientを指定するか、段階の位置をどの位の割合で取るか、そのRGBのカラーの割合はどうするか、Gradientのカラー表示は何段階で表示するかを決めている。
これで好きなようにカラーの表示を決めることが出来る。

2009/08/10

電話で英語で名乗る

「もしもし」が"Hallo"っていうのは中学で教わった。
しかしその後に必ず続くであろう、「私は~です」という言い方は習った覚えがない。
こういうときには、"This is ~ speaking."と言えばいい。
"Hallo.This is Tanaka speaking."とかでOK。

こういう日常的に使うであろうフレーズは、学校でまず暗記させてしまえばよさそうなものだ。
日本語で話すとき文法など意識してしゃべらないのに、英語だけ文法を意識して話したり聞いたりという教え方をするのは奇妙だ。

2009/07/31

ROOTのtutorial

Windows版のROOTのtutorialがあることを最近知った。
ROOTをインストールした直下のディレクトリに\tutorialsというところがある。
ここでROOTを立ち上げると、通常の起動のメッセージの下に、

"Welcome to the ROOT tutorials"

と出て、demo.Cを動かしてみるように促すメッセージが出る。
「Dis45ユーザーのためのROOT入門」の最初に出てくる、benchmark.Cもここにある。
起動してみると、ベンチマークが動き出し、ウニウニと各種のグラフやらヒストグラムやらの作成、フィットなどが行われる。
見ていて楽しいが、最後に出力されるベンチマークの結果はいまいちよく分からない。

ちなみに\tutorials以下の\graphicsにearth.Cというのがある。
earth.datを読み込んで世界地図を描画してくれるのだが、Windows版の5.20では上手く動かず。
これは5.22では正常に動くことを確認できた。

Ntuple

ROOTで計算させた結果を描画するとき、これまではいちいちヒストグラムを用意していた。
しかしinteractiveにカットや条件を変更し、その結果が見たいときとかには、いちいちそんなことはしていられない。
そこでNtupleを使う。

TNtuple *n1 = new TNtuple("n1", "", "x:y:z:w");

とかすると、n1というNtupleが4つの変数で作られる。
さらにこれらの変数に、For文とかWhile分とかで、

n1->Fill(x, y, z, w);

とかで値を詰めるだけでOK。
あとは、

n1->Draw("x:y", "w>0");

とかすると、wがゼロより大の値をとるときのxとyの分布図を出せる。
これで作ったヒストグラムも、当然通常のヒストグラムとして扱える。

また.ls();とか打つと、n1というNtupleが出来ているのがわかる。
たとえばマクロを書いて、n1というNtupleを作ったとして、マクロを実行した後もn1は消えないでいる。
そこで上の条件を変えて描画させたりも出来る。
出来ているNtupleについての情報は、

n1->Print();

とか打つと見ることが出来る。

2009/07/27

Ophcrackその2

Ophcrackがうまく動かない理由は、0.9.aというやたらと昔のバージョンを落としていたからだった。
最新のXp用の2.3.0を落としたら、あっさりと解析できた。
ツールもブート後に自動で起動するようになっている。
シェルの場所はhomeディレクトリになっていて、0.9.aとは異なっていた。
またHDDのマウントの仕方も0.9.aから少し変わっていて、/mnt/sda1/以下にハードディスクの中身全てがマウントされていた。

2009/07/26

Ophcrack

ふとしたことからWindowsのシステムのAdministratorパスワードを調べる必要が発生した。
そこで調べて出てきたのが、Ophcrackというツール。
これはUbuntuをベースとしたLinuxのLive CD。
イメージファイルを落としてきて焼いて、そのメディアから起動するとOSが起動する。
デスクトップにツールを起動するアイコンが表示されている。
起動ドライブのWindowsディレクトリはマウントされている。

デスクトップのツールを動かしてみると、画面が一瞬出た後、すぐに消えた。
しかたがないので、このツールが入っているところを探すと、/usr/local/bin以下にシェルの形で入っていた。
そんなに長いシェルでもなく、そんなに難しいことをしている感じはしなかった。
これを手動で動かし、その出力を見たところ、/mnt/windows/WINNT/system32というファイルが見つからず、スクリプトがエラーを吐いて止まっていた。

実際のsystem32は/mnt/windows/WINDOWS/system32にある。
このくらいきちんと見つけて欲しい。
仕方がないので、どこかにスクリプトをコピーして、編集しようとしたら、viはあるもののEmacsが入っていない。
仕方がないので、viで編集しようとしていたら、たまたまひょんなことからパスワードが分かった。
ということでパスワードクラックは必要なくなってしまった。

Webで見るとかなりあっさりとパスを破るようなので、古いバージョンか何かを落としてしまっていたのかもしれない。
15文字以上や記号等が入ると、解析が苦しくなるようだが、追加のファイルを落としてくれば、解析は不可能ではないようだ。