ラベル PC の投稿を表示しています。 すべての投稿を表示
ラベル PC の投稿を表示しています。 すべての投稿を表示

2009年6月28日日曜日

R で描画しよう

MathematicaがUpdateしてから調子悪い。
描画するとラベルの字がつぶれるつぶれる。25万もするくせになにこれ、うぇーん。
EPSで出力するとフォントつぶれは回避できるんですが、MathematicaのEPSはクソ重くて、それだけで10Mとか論文に貼り付けるにはあまりに激しい容量です…。
そこで、3Dプロットを美しく書けるフリーソフトを探していたわけです。
要求することはただ一つ。離散的な3次元のデータをデータ間の補間を行いつつ3Dプロットすること。
まぁGnuplotでもそれなりのものはかけて、
set pm3d
でpm3dを読み込んでやれば、splotで
http://t16web.lanl.gov/Kawano/gnuplot/plotpm3d.html
ここにあるような3Dのカラーグラフはかけます。しかし、いかんせんGnuplotは3Dデータの補間がないようなのですよ。csplineは基本2次元plot用だし…。
そこで手をだしてみたのが"R"です。
"R"の存在は前々から知っていてその異様にシンプルな名前にびびって手を出せていなかった代物です。統計解析ツールというかそれ専用の言語+統合開発環境です。言語なのでガチでプログラミングぽいです(ToT)
さて、Rの強みの一つはグラフィックが美しいことです。そして統計解析専用に作られているんで、補間用のパッケージとかもごろごろ転がっています。といいことづくめなようなのですが、めっちゃ躓きました。
グラフィックを出力したいのに、デフォルトのグラフィック用の関数が、等間隔のグリッドにしか対応してねぇ…。
私の場合、計算のデータポイントは基本、変動が大きそーなとこは細かく、どーでもよさそうなところは粗く、対数的にとっているのでこれはかなり困りました。
4時間ほど苦闘した結果、
akima(Akima先生?とにかくありがてぇ)っていうライブラリ中にあるinterpという関数を使って補間をつかって等間隔グリッドを作成、データをリストに格納→描画
っていう流れでなんとかなりそうな予感です。
備忘録として、
CSVからデータを取り込み→それをリストに格納→interp→描画
のテストコードをあげておきます。


book1<-read.csv("book1.csv")
library(akima)
rlist<-as.list(NULL)
rlist$x <- c(book1[,1])
rlist$y <- c(book1[,2])
rlist$z <- c(book1[,3])
rlist.li<- interp(rlist$x,rlist$y,rlist$z,
xo=seq(min(rlist$x),max(rlist$x),length=50),
yo=seq(min(rlist$y),max(rlist$y),length=50))
image(rlist.li)
persp(rlist.li)



read.csv():CSVから読み込み
c():リストへの要素の追加や結合
persp():俯瞰図の描画
interp:補間。lengthでメッシュの数を決めることができます

CSVファイルとして

x y z
-5 -5 50
-4 -5 41
-3 -5 34
-2 -5 29
-1 -5 26
0 -5 25
1 -5 26
2 -5 29
3 -5 34
4 -5 41
5 -5 50
-5 -4 41
-4 -4 32
-3 -4 25
-2 -4 20
-1 -4 17
0 -4 16
1 -4 17
2 -4 20
3 -4 25
4 -4 32
5 -4 41
-5 -3 34
-4 -3 25
-3 -3 18
-2 -3 13
-1 -3 10
0 -3 9
1 -3 10
2 -3 13
3 -3 18
4 -3 25
5 -3 34
-5 -2 29
-4 -2 20
-3 -2 13
-2 -2 8
-1 -2 5
0 -2 4
1 -2 5
2 -2 8
3 -2 13
4 -2 20
5 -2 29
-5 -1 26
-4 -1 17
-3 -1 10
-2 -1 5
-1 -1 2
0 -1 1
1 -1 2
2 -1 5
3 -1 10
4 -1 17
5 -1 26
-5 0 25
-4 0 16
-3 0 9
-2 0 4
-1 0 1
0 0 0
1 0 1
2 0 4
3 0 9
4 0 16
5 0 25
-5 1 26
-4 1 17
-3 1 10
-2 1 5
-1 1 2
0 1 1
1 1 2
2 1 5
3 1 10
4 1 17
5 1 26
-5 2 29
-4 2 20
-3 2 13
-2 2 8
-1 2 5
0 2 4
1 2 5
2 2 8
3 2 13
4 2 20
5 2 29
-5 3 34
-4 3 25
-3 3 18
-2 3 13
-1 3 10
0 3 9
1 3 10
2 3 13
3 3 18
4 3 25
5 3 34
-5 4 41
-4 4 32
-3 4 25
-2 4 20
-1 4 17
0 4 16
1 4 17
2 4 20
3 4 25
4 4 32
5 4 41
-5 5 50
-4 5 41
-3 5 34
-2 5 29
-1 5 26
0 5 25
1 5 26
2 5 29
3 5 34
4 5 41
5 5 50

こんなのを用意しとくと


こんなかんじのができます。
これはx^2+y^2を描画してみたものです。

2009年4月10日金曜日

プロキシ立てた

SquidでCentOS機にプロキシサーバーを立てた。
ここの設定にあるようにsquid.confをいじる。
http://centossrv.com/squid.shtml

chkconfig squid onが「コマンドが見当たんねーよ」てなエラーがでて使えないのは、/sbin/chkconfig とフルパス書くことで回避できた。そしてこれはrootになってないと使えないコマンドらしい。

さてプロキシ立てたは良いけど、使うとき、使わないときでいちいちツール→オプション→…はめんどくさい。Firefoxを使っているので、プロキシ経由用のプロファイルを作ることにした。
プロファイルを作るには
http://support.mozilla.com/ja/kb/%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E7%AE%A1%E7%90%86
にあるように、
ファイル名を指定して実行から
firefox.exe -ProfileManager
としてできるぽい。とりあえずproxyという名前でプロファイル作ってみる。
次にfirefox起動するとどのプロファイル使うか聞かれるので、proxyを選んで起動、ツール→オプション→詳細でプロキシの設定をする。
プロファイルが違うものを同時起動することもできて、その時は -no-remote -p proxyのようにオプションを付ける。バッチをつくるなら

"C:\Program Files\Mozilla Firefox\firefox.exe" -no-remote -p proxy

のようにしておくとよいぽい。

2009年4月5日日曜日

Mercurial始めました

書けども書けどもD論と投稿論文が埋まらないので、ぢつとディスプレイを見て、我泣きぬれてWinshellとたわむれる土日。せっかく書いた文章を研究室の端末とやり取りしててうっかり上書きしてしまったりすると数日ガチへこみしそうなのでウマいバックアップ管理の仕方を模索してた。そんなわけで以前いいよとの噂を聞いてたMercurial。MercurialはSubversionとかCVSとかに代表されるバージョン管理システムの一種らしいんだが、Subversionとかとちがって、どっかのサーバーに変更履歴(リポジトリというらしい?)を溜めるのではなく、各端末に履歴がたまっていく。サーバー立てるとかプロキシ云々のめんどくさい設定なしで、ローカルで動くバックアップツールみたいに気軽に使うこともできるぽい。Mercurial使うときは作業してるディレクトリの中に、.hgというフォルダができてそこに変更履歴がためられる。まぁなによりMercurialという名前がええよな。Mercuryから派生してるからコマンドもHgとか無駄に凝ってる。
参考文献
http://www.02.246.ne.jp/~torutk/mercurial/intro.html
http://www.lares.dti.ne.jp/~foozy/fujiguruma/scm/mercurial.html
http://www.lares.dti.ne.jp/~foozy/fujiguruma/scm/mercurial-tortoise.html#encoding

MercurialはWindowsでもLinuxでも使える。基本はコマンドラインで動かすんだけど、Windows用にはエクスプローラーのアドオンとして使えるTortoiseHGというのがある。カメさんかわゆい。一応両方入れておく。ついでに前々からエクスプローラーからコマンドプロンプトを呼べればいいのにと思っていてそれが実現できるソフトFolderPromptも見つけたので入れておく。いやーこれ便利だわ。なんでいままで探そうとしなかったんだろう。
で、あとMercurialで差分をとってそれを表示するときに、コマンドプロンプトだとあまりにわかりにくいし、TortoiseHGのデフォで入っているKdiffは日本語字化けしたので、Winmergeをインストール。これをMercurialで使うには、Mercurial.iniをちょっといじる必要があるぽい。
TortoiseHG用


[extdiff]
;cmd.vdiff = C:\Program Files\TortoiseHg\kdiff3
;cmd.vdiff = C:\Progra~1\TortoiseSVN\bin\TortoiseMerge.exe
;cmd.vimdiff = gvim.exe
;opts.vimdiff = -f '+next' '+execute "DirDiff ".argv(0)." ".argv(1)'
cmd.vdiff = C:\Program Files\WinMerge\WinMergeU.exe
opts.vdiff = /r /e /x /ub

Mercurial本体の場合

[extensions]
; The win32text extension is available and installed by default. It
; provides built-in Python hooks to perform line ending conversions.
; This is normally much faster than running an external program.
hgext.win32text =
hgext.extdiff =
[extdiff]
cmd.wmdiff = C:\Program Files\WinMerge\WinMergeU.exe
opts.wmdiff = /r /e /x /ub

はーMercurial関連いじってPCが全般的に使いやすくなった。

とりあえず、自分が作業してるフォルダでリポジトリ作るには

hg init

とする。(TortoiseHGだと右クリック→Create Repository Here)
そうすっと .hgというフォルダができる。
変更履歴をとりたいファイル、たとえばAAA.txtを

hg add AAA.txt

として追加する。
とりあえずは、最初の状態を保存したいのでこの時点で

hg commit -m "initial state(なんかコメントを書く)"

とするとこれが最初の”チェンジセット”(変更履歴のまとまり)として保存される。
そのあとファイルになんか変更すると、

hg status

とやると

M AAA.txt

みたいに、変更されたことがMで表示される。

hg diff (もしくはエクステンションで定義したwmdiff等のコマンド)

で、差分を表示。

hg log

で変更履歴を表示。ある程度変更したらまたcommitしてチェンジセットを作る。
まぁしばらくこんな感じで。のちのち端末間のをうまいことまとめたりする方法をしらべていこうかなぁ。

追記1
WinMergeのxdocdiffてゆープラグインを入れると、なんとOffice系統のファイルの差分も見れるようになる。いやぁ便利便利。注意すべきはWinMergeの設定でプラグインの検出を自動にしておくこと。

あとMercurialをRedmineと連動させてみたら予想以上に便利そう。RedMine1.6.3使ってるけど、プロジェクトの設定のとこから、リポジトリのタブでSCMをMercurialで選択,ルートディレクトリを.hgがあるディレクトリへのパス(/home/aaa/workspace/test/とか)って入れるだけでおけ。差分見れたりできます。他にも色々使い方ありそうなんで、解説本に興味が…

追記2
CentOS5へのインストールでは、yum install mercurial てな呪文が使えない…。かわりに、easy_install mercurial でpythonのお力を借りるのが妥当っぽい

2009年1月28日水曜日

ifortでのベクトル化

今後、なにかと計算規模をスケールアップさせたいんだが、何が問題って計算時間である。今ので一個あたり16時間~20時間かかっていて、扱う状態の数を2倍にすれば、行列要素は4倍になるので単純に考えて4日ぐらいかかるのか。4~5日ですめばいいけど、基本的にあちこち入れ子になったループが存在しまくっているので実際にはもっと時間かかるんじゃねーかと。さすがに処理の高速化をぼちぼち図らないといけないか。

処理を早くするには並列化が基本みたいだ。どんな作業も一人ですべてやるよか何人かで手分けしたほうが早く終わるにきまってる。でも手分けするときに作業内容とかを説明したり、終わったあとに作業内容を統合する必要が出てくる。PCでも同じことで、スケジューリングやらバリア同期をしなあかんのでよっぽど並列処理に向いている部分がないと、並列化させたところでさほど恩恵があるわけではないらしい。(アムダールの法則ってやつか)並列計算に向いてるのは検索、大規模行列の線形代数な演算とからしい。

並列化で最も手っ取り早いというかなんとかつかえそうなのが、ベクトル化とマルチスレッドやろうと思ったので調べてみる。
最近ifortでコンパイルしてるとしょっちゅうdo ループがベクトル化されました っていうメッセージが出てくる。ベクトル化ってスパコンしか関係ない話じゃねーのと思ってたのでなんか不思議に思ってたが、IA-32なCPUでは疑似ベクトル化ができるらしい。
ベクトル化ってのがそもそもなんやねんって話だが、要はレジスタを塊で使って一気に大量の数値を演算しようっていうことみたいだ。


do i=1,10
x(i)=a(i)+b(i)
end do

みたいに演算の順番を変えようがまったく影響ないループだと、aの1~10、bの1~10を一次元配列に格納してその配列の和を計算するのと同等なので、レジスタの集合を配列のように使えば10回計算しなあかんところを一回で済む。10回程度だと大してなんも変わらないけど一万回が一回に化けるとだいぶ違う。地球シミュレータとかSXシリーズとかのスパコンはそれ専用のベクトルレジスタを大量に積んでてそれゆえ行列演算が異様に早いっぽい。(とはいえベクトル型のスパコンを作ってるのはいまやNECのみらしいが)こういう並列化の仕方は、SIMD(Single Instruction Multi Data)というらしい。

実はIA-32なアレにはこのSIMDな処理ができる部分が存在するらしい。CPUのレジスタというと32ビットの汎用レジスタeaxなどなどが使われてるイメージだが、実は128ビットのレジスタxmm0~xmm7というのが存在するそうな。128ビットなので倍精度実数なら2個格納できる。浮動小数点演算は通常、名前も浮動小数点計算ユニットであるFPUとかゆーst(0)~st(7)レジスタを持つところで行うらしいが、xmmレジスタをつかうこともできる。xmmレジスタをまとめて使ってベクトル化したような処理をおこなうための拡張命令がSSE/SSE2/SSE3(SSEはStreaming SIMD Extensionsらしい)
SSEはもともとインテルがつくったのでインテルのコンパイラはこれを使えるのが多い。ifortで出てくるベクトル化しましたってのは実はこのSSE2やらSSE3やらをつかってxmmレジスタで疑似ベクトル化してるということみたいだ。実際、-Sオプションで、アセンブラコードを吐かせてみると、movsd だの %xmm0だのそれつかってるぽい形跡がちらほら。ちなみにmovsdはmovのSSE2バージョンぽい。やはりインテルのコンパイラは頭ええんだな。ところで、DOループ中にprint,read,writeがあるとこのベクトル化ができなかったりする。ベクトル化の詳細レポートがほしい時には-vec_report3とするとよし。

2009年1月20日火曜日

CUDAをコマンドラインから使えるようにしよう

VisualStudioが意味フなのでWindowsでもコマンドラインから使えるようにしたいなぁと。どうせ本番はLinux機の可能性100パーですし。
ちなみにOSはWindowsXPです。
コマンドラインから使えるようにするには環境変数をいろいろいじらんとあかんみたいだ。
先人の知恵がつまった参考文献3つで言っていることが違うぜ、どうしよう
http://tech.ckme.co.jp/cuda_inst.shtml
http://exth.net/~ohshima/wordpress/2007/10/30/5/
http://chihara.naist.jp/people/STAFF/imura/computer/OpenGL/cuda1/disp_content

環境変数INCLUDEなるものが見当たらないので、まず真ん中の人がやっているのと同様に、システムのPATHをいじることにする。
とりあえずPATHに


C:\Program Files\Microsoft Visual Studio 8\VC\bin;C:\Program Files\Microsoft Visual Studio 8\Common7\IDE;C:\Program Files\NVIDA Corporation\NVIDA CUDA SDK\common\lib


を足してみる。
で、昨日ためして動いたbandWidthTest.cuをコンパイルして実行すべく


nvcc -o test.exe bandWidthTest.cu -I"C:\Program Files\Microsoft Visual Studio 8\VC\include" -I"C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK\common\inc" -L"C:\Program Files\Microsoft Visual Studio 8\VC\lib" -L"C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK\common\lib" -lcutil32


てなバッチファイルを作って投下。
test.exe無事生成
が、cutil32.dll見つからないというエラーメッセージ出て動かず

そこで最後の文献を参考にして
C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK\common\lib\cutil32.dllをC:\Windows\system32へコピーすると動いた…いいのかこれで?
たぶんファイル構造をつらつら見るに、
C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK\bin\win32\Release
にPATH通しといても同様に動くはず。このwin32\Releaseやwin32\DebugはVisualStudioのコンパイラ経由でDebugなりReleaseなりするときに必要なDLLとかを全部ほりこんであるぽいのでPATH通しとくのがいいんじゃないかなぁ。やっとこ

なんにしろ無事うごいたっぽいのでCUDAが出始めのころに試して記録を残してくれた先人たちに感謝感謝。

2009年1月19日月曜日

CUDAを試す

どうやらCFSは順調に動いたようで磁場下での1粒子励起スペクトルが綺麗に出た。今までの方法と段違いにきれいな結果だ。ひじょーに満足。作るの苦労した分、上手くいくとめちゃうれしいわぁ~。これで夏の国際会議のネタが確保できる見通しもついた。

ほっとしたので、自宅機で噂のCUDAを試す環境を作ってみる。CUDAって何て読むんだろ。きゅーだ?くだ?
研究室でも最新版Teslaを試そうぜっていう話がでてたんだが、取引先の業者さんがまだ性能評価終わってないらしい。Teslaは結構熱がでるとかでファンをどうするとかGPUコンピューティングするなら帯域がどーとかそれなりに相性とか考えなあかんぽいとか。評価終わるの待ってて予算執行がぎりぎりになるんもあれだし、導入はたぶん来年度かねぇ。それまで自宅のにはせっかくCUDAが動かせるGeForce9800GTが入っているので試しにいじってみようかと。GPUつかったら画面が出力できないとかOTLなことになるんじゃないのとかいろいろ無駄におそれたがべつにそんなことはないらしい。
http://tech.ckme.co.jp/cuda_inst.shtml
に詳しくインストールの仕方が書いてあるのでとりあえず試す。
ドライバは対応してるのがもともと入っているのでいじらない(グラボのドライバってなんかいじってえらい目にあった知人の話聞いて以来怖い)
NVIDAのページhttp://www.nvidia.com/object/cuda_get.htmlからcuda toolkit cuda sdkのバージョン2.0をダウンロード。バージョン2.0を動かすためにはWindowsではVisual Studio 2005C++が必要らしいのでそれもMicrosoftのページからダウンロード。最新版は2008らしいがCUDAの2.0は2005じゃないといかんらしい。あとDirectXつかうサンプルもあるらしく、DirectX SDKも入れといたほうがいいらしいが、入れ忘れた。まぁとりあえず放置。

CUDAについてはtoolkit → sdkの順でインストールすべしとのこと。インストールはデフォルト通りにしといた。後でみたらいろいろパスが増えとる。参考資料によると、CUIでコンパイル、ビルドするにはパスをいろいろいじる必要があるらしいが、今日のところはとりあえず動くかどうかをチェックしたいのでまたとりあえず放置。
デフォルト通りにすると
C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK\projects\simpleTemplates
下にsimpleTempletes.slnなるものあり。
とりあえずこれが動くかどうかでCUDAが無事インストールされたかどうかがわかる模様。
これをクリックするとVisual Studioが立ち上がる
ビルド→ソリューションのビルド
なんか一応正常終了したっぽい
Visual Studio使ってないもんでよくわからんのだが、たぶん緑の矢印が「実行」てのは共通だろうとあたりを付けてとりあえずそれを押す(これデバッグらしいが)

とりあえず動いたっていう解釈でいいのか…?謎いわ。やっぱLinuxのほうがgccで直コンパイル+ビルドできて見通しつけやすそう。sampleにMonteCarloあんのが気になる
結果がWebにあがってたbandWidthTestも試す

出てる項目大体いっしょぽいなぁ。ビルド時に警告でたけど動いてるってことか、よーわからん。CUDAなかなか手ごわそうじゃ。

2009年1月3日土曜日

メモリの種類とか(いまさら)

昨日は久し振りに研究室の同期と会った。iPhone持ってたので見せてもらう。iPhoneスゲー。最近ブログ更新してねーよねって聞いたらむしろTwitter派らしい。Twitterなぁ、導入したらすごい気が散りそうでなんか手を出せないわ。気晴らしになんかいいのないか聞いたら、Travianがおすすめらしい。興味もったんで調べてみたがなかなかに複雑かつ難しそうじゃ…。
ネット上のゲームなりSNS的サービスなりってどうもあんまり知らん相手とコミュニケーションとることを求められることが多い気がして苦手だなぁ。人脈広げたりさらっと知り合い作るにはいいツールなんだろうけど、携帯メールと一緒で相手の表情読めない分、文章から心理状態を把握せにゃならん気がして無駄な深読みしまくって凄い疲れそう。

さてぼちぼち本業に復帰するか
たぶんこれから実装する計算方法はモーレツにメモリを喰うのでメモリの使われ方ってのを今更ながらに調べる。
メモリは大まかに分けて、コードセグメント、データセグメント、スタックセグメントの3種類のエリアに分けて使われるらしい。アドレス指定とかに使うレジスタもそれぞれに応じてCS,DS,SSが用意されてるとな?
コードセグメントはプログラムコードが機械語に翻訳された本体を収める部分。

データセグメントはデータ、.bssとヒープの3つに大別される。データ、.bssは静的な変数とグローバルな変数が納められる。データには初期化されてるのが、.bssには初期化なしのが振り分けられる。ヒープは動的に割りつけられる変数なり配列なりインスタンスなりに使われる。

スタックセグメントは手続き中の局所的な変数や配列、関数の引数の引き渡しなんかで使われる。

だいたいのところは上に書いたようになってるらしいが、具体的にどんな変数がどの領域に確保されるかというのは言語やコンパイラやその他もろもろによって変わってくる。
Fortranの場合だと
module中の大域的な変数、save属性付きの変数→.bss
allocatable属性な配列→ヒープ
普通にサイズが宣言されている自動配列→スタック
手続き中の変数(mainでも同様)→スタック
てのがデフォみたいだ。

フラットメモリモデルとかいう一般的な方法だとメモリの0x00000000番から順にコードセグメント、データセグメント、そしてメモリ0xffffffff番(32bitなOSでは1プロセスで使えるメモリの最大値らしい)から番号が小さいほうにむけてスタックセグメントが配置される。動的割り付けが行われるとヒープがアドレスの番号の大きいほうに伸びていき、関数の呼び出しなんかをしまくるとスタックが番号の小さいほうに伸びていく。で、動的割り付けでばかでかいのをやっちゃったり再帰手続きでばかでかい配列をつかったりするとヒープとスタックが衝突することがあるらしい。ふつー、スタックのサイズには制限がかかっていて、2~8Mになっている。Linuxだとlimitっていうコマンドで調べることができるらしい。スタックのサイズ制限はunlimit stacksizeで外せるのでそうするとこういう事態が起こってしまう可能性があるらしい。OSの側でそういうの監視してないんかよって気もするが、glibcはスタックがヒープ領域を破壊するのに無頓着らしい…。

そしてFortranの処理系ではヒープ領域へのアクセスがなんか怪しい。Fortranでの配列の動的割り付けはallocateで行われるんだが、たとえば allocate(A(2,2))と2×2の配列を割り付けたあとで、A(1,3)とか「あーそこ配列の定義外やろ…」ってとこに普通にアクセスできるし代入とかもできてしまう。コンパイルもされるし実行も普通にされるし(当然結果は変になるが)、gdbもスルーすることがある。動的な配列割り付けを使うとこのやりがちなバグを見つけるのが難しくなる。

アクセス速度自体もヒープは他に比べて遅いらしいので、数値計算なら配列は大きめに見積もってmoduleで静的に宣言しとくのが正解ってことか?

2008年11月7日金曜日

VMware server + Vine Linux 4.2

前から使ってみたかったVmware server を自宅機に導入。
お手軽版のVmware Player は大学で使ってるんだけど、VMware server はisoファイルを落としてきたら自分の好きなタイプのLinuxを仮想で動かせたり、Vmware tools使えば仮想マシンの画面上へのマウスポインタの移動がシームレスにできたり(Vmware Playerではこれでイライラしてあまり使わずじまい。Tools導入済みのAppearanceおとせばいいんかもしれんけど)なんだかserverのほうが高機能な予感がしたもんで。
VMware serverのダウンロードはここ。ダウンロード→押すだけ。
あと登録(無料)でプロダクトキーをもらうだけ。

Vmware自体はこんな感じで単純。あとは仮想マシンを作らないと。
VMware server の場合、OSのisoファイルがあると、それからブートしてインストールできるみたいなのでとりあえずisoをダウンロードしてくる。日本語だし、大学の情報教育センターのがVineでTAのときに見慣れてるしな(rpmつかえるしrubyはいってるし)ってことでVine Linux4.2をダウンロード。
VineLinuxをVMware server に入れる記事が結構かいてくれてて、これとこれとこれ統合してやってみる。
ゲストOSの選択肢にVineLinuxがないので代わりに何をつかって仮想マシンの構成を決めるvmxファイルつくるかが問題なんだが、RedHatLinux選択でうまくいった。(書いてる人やVineのバージョンによっても違うっぽい・・・最悪自作するっていう方法もあるらしいが)
あとは参考記事通り。Vineは設定のとことか全部日本語でほっとするわー。
再起動を仮想OSでせず、Vmware consoleのPowerのボタンでしないとだめらしい?
マウスポインタをスムーズに移動させたり、時刻がはげしくずれるのを何とかする用のVmware toolsについてはここに書いてあるとおりにすればなんとかなった。
Linuxの練習用として活用しよう。

2008年11月3日月曜日

暇暇にRailsとやらを試してみる

風邪である。ひきこもりである。暇である。
ってわけで普段だったらたぶん時間なくてできないことをひたすらやってみる。その一つがInstantRails使ってみよう。
なんで突然Ruby on Railsなのかというと、ひとつにはRedMineっていうサーバーにおいて使う形の管理ツールを使ってみたかったから+サーバーにアプリケーションおいていじるの一度やってみたかったから。まーたぶん今後はサーバーになんでもおいてそれを共有ってタイプの作業や処理が増えてくるであろうし、全然畑違いの物理ギョーカイのわれわれもその辺知っておいたほうがなにかといいんじゃねーかと。Fortranだけじゃなんもできんしな。たぶんサーバーにデータベースおいてそれいじる簡単な方法は知っといて損ないだろ。
で、流行ってるとことには便利なものがあるもんで、Eclipseを日本語化してそれにInstantRailsやそれようのIDE(Aptana?)やらなんかPythonとかも全部ほりこんでくれているPleiades all in one日本語ディストリビューションってのがあった。それのUltimet版とやらを落として解凍するだけでJavaのみならずからInstantRails、RubyからPythonからC++まで全部使える環境が手に入る。うはーいい時代だなぁ。新しく始める人間にとって実にありがたい。ほっとんどプログラム関係のこと知らんくてもサクッとお試しできるんだもんなー。
とりあえずeclipse起動して、パースペクティブ?をRedRailsのそれにして軽く試す。新規プロジェクトつくるだけで、一通り仕組みに必要なファイルが書き出されて、Mongrelとかゆーサーバーが起動して、初期設定画面が出てくる。そこに書いてあるチュートリアルどおりにいじって動くことは確認。へーこんなあっさり鯖ができてDBができてそれを操作ってRoRすげーとか思う。

さて問題は、ちょっと自分が使えるような簡単なものを作ってみるかって時に大抵発生する。ネットでいろいろやり方をさがして試してみるもなんだかうまくいかん。ネットの例は大抵ROR+mySQLだったんだが調べた結果
・Ruby on Rails 1.x とRuby on Rails 2.x では動作が全然違う
・2.x ではデータベースがデフォではSQlite3ってやつらしい→プロジェクト作る時にmySQL指定とかしないとmySQL使ってくれないらしい。
・eclipse経由だとInstant Railsを別に起動しとかないとmySQLを使えない(eclipseはDBにmySQL指定してもmySQLを立ち上げるわけじゃないっぽい?)
のがうまくいかない原因だったぽい。
とりあえず自分が「んー学会発表リストをつくってみるか」とおもってそれらしきものをつくった手順をメモっとく。参考にさせてもらったここのサイト見れば、陥りがちな日本語うまくいかねーとかも回避。
1 プロジェクトとしてlistってのを作成。データベースはmysql指定

2 Instant Rails起動

3 ジェネレーターって書いてあるところでscaffoldを選択。 パラメーターは list name:string place:string title:string from:datetime to:datetime coauthor:string で実行 (ruby script/generate list name:string place:string title:string from:datetime to:datetime coauthor:string ってコマンドラインで打つのと一緒ぽい )
これで、name place title from to coauthor っていう要素をもったテーブルをデータベースに作る用のファイルが001_create_lists.rbとかいう風にdb\migrateのフォルダにできる。同時にそうした要素への処理とかのメソッド?をいろいろ記述したのがapp\views下にいろいろできてるはず。

4 mysqlで必要なデータベースを作る。Instant Rails のI型のボタン押して、Railsアプリケーション→Railsアプリケーションの管理。新規アプリケーションの作成を押すとパスがとおった状態でコマンドプロンプトが開くので、cdとかつかってeclipseのプロジェクト置いてあるとこへ移動。
mysql -u root -p
create database list_development;
create database list_test;
create database list_production;
とやると、上記3つのデータベースができる。これはconfig\database.ymlに書かれている、Railsが使う3つのデータベースの名前に合わせてあって、デフォルトはプロジェクト名+developmentとかだ。
この段階でたとえば
use list_development;
show table;
とかやると、中身が空なのが分かる。

5 eclipseにもどって、テーブルの中身についてはさっきので指定してあるのでRakeタスクっていうタブ(ペインっちゅーんか?)を開いてdb:migrationを選択して実行する。( rake db:migration)するとデータベースにテーブルが作られる。
use list_development;
show table;
desclibe lists(←テーブル名);
でなんか変更が反映されてるのがわかる。

6 サーバーを起動。http://127.0.0.1:サーバーがふり当てられたポート番号/listsで動いていることを確認。

こんなんで動いた。RoRのすげーなところはデフォルトで、show edit destroyなんかのボタンが既にできているところで、単純な仕組みをつくるだけでいいならほんと一瞬でそれらしきものができてしまうあたり。DBのしくみとかほとんど知らなくてもなんか動くものできちゃったもんなぁ。というわけでしばらくこれいじって遊んでそうな気がする。rubyって誕生石だし。明日からは本業もせんとなぁ・・・

2008年10月25日土曜日

MinGW+MSYS

Windowsの何がいやってコマンドプロンプトでlsとか使えないとこ。dirって何よそれ。Linuxのコマンド、CとかC++のコンパイラgcc、fortran用のg95なんぞをWindowsでも使えるようにできる超便利ツールがMinGW。ちなみにg95はMinGWもセットになったものを配布している+最近Fortran2003のいくつかの機能も追加されたらしい。至れり尽くせりやん。
MinGW単体ではlsとかは使えないので、Linuxライクにコマンドプロンプトを使いたい場合はこれにMSYSも加える必要がある。これ入れとくとtarとかgzipも使えるっぽい。MSYSはvimまで積んでいる模様。
前のパソコンは暇暇にこれら一式インストールして設定してたんだが新しいのにまた設定しないといけない。めんどー。やり方が忘却の彼方だったのでまた検索してやり直し。懲りたので自分用にメモっておく。
1.MinGW編
現在の最新版はこれらしい→http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=240780&release_id=595197
Windows用の.exeをダウンロード
クリックするとほとんど自動でインストール。こっちが選ぶのは構成要素とインストール先ぐらいか。gcc使いたい人はgccにチェックしておく。大量にライブラリとかの圧縮ファイルをダウンロードしてくるので、おわったら.tar.gzとかは消しておく。
おわったら環境変数いじっとく必要あり
システム環境変数に;C\dev\MinGW\bin (今回はdevってフォルダ下にインストールしたので)

2.MSYS編
最新版はこれっぽいな→http://sourceforge.net/project/downloading.php?group_id=2435&use_mirror=nchc&filename=MSYS-1.0.10.exe&57459211
MSYSのインストール先はMinGWとは別フォルダ作って入れろって書いてあった。同じとこに入れるほうが稀有だと思うけど。これもクリックするとほとんど自動進行。途中でコマンドプロンプトが起動して、
・インストールをすすめますか? → y
・MinGWはいってますか? → y
・MinGWどこー?→ C:/dev/MinGW (向こうのフォーマットに合わせてこたえてやらんとエラーでる)
とかきいてくるので適宜答える。
同じく終わったら環境変数に;C\dev\msys\binとか追加。

3.g95編
http://www.g95.org/downloads.shtml
行って、Self-extracting Windows x86版を落としてインストールするだけ。
ほとんど何も考えんでも勝手に進行。

さてこれでLinuxなコマンドがWindowsでも使えるわ、g95でfortranコンパイルできるわ作業が楽だ。
ところで、使っているランチャー、CLaunchからコマンドプロンプトを起動すると環境変数の変更が反映されてないのはなんでなんだろ?OSおかしいんかとおもって焦ったけど、普通にスタート→すべてのプログラム・・・って普通の方法で起動したら反映されてるしなぁ。謎いわ。

2008年10月8日水曜日

sed+gnuplot

ノーベル賞日本人4人ってすげー。
南部先生といえば南部演算子とかしか知らんので、てっきり超伝導の人だとおもってたら素粒子の人だったんだ。超伝導も自発的対称性の破れってやつなんかぁ。超伝導は食わず嫌いというか手を出すと危険な香りがぷんぷん漂う恐ろしい領域なので踏み入ったことが無いからよく知らん。それにしても素粒子と物性ってなんだかんだ言って理論のベースは近いんだな。応用になってくると全然違うほうを向いてる気がするけど。見慣れない用語に毛嫌いしてんとマトモに場の理論とかも見といたほうがいいんかもなー。そして物性の人間としては近藤先生のノーベル賞まだー?と言いたい。

gnuplotはsedコマンドと組み合わせて使うと図の大量生産がラクだ。
ちなみにコマンドプロンプト経由でgnuplotを起動する場合、Windowsではwgnuplot.exeがあるディレクトリにパスを通して、wgnuplotで起動する。(Linuxだとgnuplotなんだが)
sedはUnixコマンドなんだが、MinGWなりCygwinが入ってるとコマンドプロンプトで使える。
sed -e "s/x/y/g" aaa.txt > bbb.txt
のようにするとaaa.txt中のxをyで置換したものをbbb.txtとして出力するということになる。
Linuxだと
sed -e "s/x/y/g" aaa.txt | gnuplot
でsedで置換して直でgnuplotにほり込めるみたいなんだが、Windowsではなんかうまく行かない。
たいてい論文とか学会用の図を作るときはある一つのパラメーターだけが違うデータで似たようなグラフを何枚か作るというパターンが多い。ので、sedでパラメーターの部分だけ変換したgnuplot用のバッチつくるバッチファイルを作る+バッチをまとめてロードするバッチをつくる(文にするとわけわからんな)をつくってやると楽。サンプルを自分用にあげとくと、

固有値の結果をプロットする用(a=5.0って条件)
set terminal gif
set output "eigen_odd_a5.0.gif"
set xrange[1:41]
set yrange[0:2.0]
set xlabel "iteration N+1= odd"
plot "odd_eigen_5.0" w p ps 0.5 pt 7 lt -1 ti "a5.0"

eigen5.0.gpって名前で保存(ちなみに点でプロットするときもその色はlt で決める。lt はラインタイプってだけでは無い模様)
↓
sed でひたすら変換してる部分作る

sed -e "s/5.0/3.0/g" eigen5.0.gp >eigen3.0.gp
sed -e "s/5.0/7.0/g" eigen5.0.gp >eigen7.0.gp
sed -e "s/5.0/9.0/g" eigen5.0.gp >eigen9.0.gp
sed -e "s/5.0/11.0/g" eigen5.0.gp >eigen11.0.gp

これを実行してから

load "eigen3.0.gp"
load "eigen5.0.gp"
load "eigen7.0.gp"
load "eigen9.0.gp"
load "eigen11.0.gp"

って書いたファイルをgnuplotにロードしてやる。と、gif画像が5枚一気に生産される。自分で打つ部分がちょっとでも少なくなるとなんか嬉しい。
ちなみにgnuplotでファイルに出力したグラフはgnuplot起動中には見れなかったりするので、gifを確認したかったらいちどgnuplotを終了しないといけない。

2008年9月2日火曜日

Mathematicaメモ:その2?

Mathematicaで、複数の手続きをまとめて一つの関数として扱いたいときには
f[i_]:=( x=i*2;
     y=i*i;
     val=Sin[x]Cos[y];
     Write[out,val]
     )
のように=の後を()でくくる。手続きの間には;を入れる。忘れるとエラー出る。これでFrotranでいうところのFunctionに相当するようなブツが作れる。

Mathematica内では基本的に変数名はグローバルに扱われる。なので長いのを作ってると変数名に困る。これを回避する一つの方法がModuleブロックである。

Module[{x,y},
Isin=NIntegrate[Sin[x],{x,-1,1}];
Icos=NIntegrate[Cos[y],{y,-1,1}]
]

みたいな感じでつかう。Module[{局所変数の組},手続き]。積分変数とか、一時的に使う変数をModuleブロック内の局所変数にできるので、積分変数にいちいちx1とかy1とかわけわからん名前つけて混乱するのを避けることができる。

今週は教授陣が揃って出張なので、マイペースな感じ。大学の端末のほうが性能良いから登校してるけど。こないだ出したプロシーディングがアクセプトだった。やれやれ。でもその考察がちょっと間違ってるかもしれないことが今日やった計算が示唆している。おぅ・・・どうしたものか。

2008年8月29日金曜日

Mathematica:補間とか

NRGとかの数値計算の結果は基本的に離散的データである。スペクトルをプロットした場合、たとえば有効な近藤温度の指標がほしいとかで、ピークの半値幅が欲しくなるときとかも多々ある。そんなわけで、離散データを補間、近似多項式ゲッツ⇒半値幅の計算をMathematicaでやってしまう方法を探してみた。
補間を自力でやろうとするとスプライン補間法の勉強とかで数日つぶれたり、実装でまた数日つぶれそうなのでとても1から自力とかやる気になれない。MathematicaはInterpolationっていう補間を全部やってくれてしまう関数を持っている。
基本的な使い方は
Interpolation[{{1,2},{2,2.4},{3,4.4}}]
のように、データをリストの形式で代入する。多次元でもおk。
データを手でいちいち代入するとかそんなメンドクサイことをするはずもなく、普通はファイルに用意しておいて、それをテーブルとしてインポートして代入するという方法をとるわな。そうしたいときは、

Import["spec.dat(みたいなファイル名)","Table"]
f=Interpolation[%]

のようにするといい。Mathematicaでは%は直前の結果という意味になる。
さてInterpolationの返す値はInterpolatingFunctionという関数である。通常の関数と同じように扱える近似多項式である。デフォルトでは3次の多項式で近似される模様。次数はオプションで変えることができるけど、あまり次数を上げるとすげー振動しだすと聞く。そんなわけで、半値幅もInterpolatingFunctionの最大値を求めて、その半分になるx座標をもとめてやればいいんでは?というのが私の考え。半値幅を出すのにもっといい方法があるのかもしれないけど、いまんとここれぐらいしか考え付かない。
関数の最大値を求めるFindMaximumと、方程式の根を求めるFindRootを使えばこれが実現できる。
m=FindMaximum[f[x],{x,0}]
FindRoot[f[x]==m[[1]]/2.0,{x,0.0001}]

みたいに。
FindMaximumの第二要素でその近傍での極大を求めるという設定。この関数の返す値は、{{値、その座標}}というリストになっているので、FindRoot内では第一要素を取り出して使っている。
FindRootの第二要素はその点から根を求めていくための基準点で、ここをうまくとってやらないと、欲しい部分での解が出なかったりするので要注意。

そうそう、B4が1人、近藤効果とRKKY相互作用の競合in2重量子ドットの論文をゼミ課題に選んだ。おぉ~私のやってることとがっつりかぶるぜ。後輩が近藤効果を自発的に選ぶのは初めてだな。(ボスが押し付けた例はあれど)結構勉強するのしんどいだろうから、つぶれないようにいろいろ配慮したほうが良いかもなぁ。しょっぱなから2不純物近藤問題を理解しろとかきついやろうし。このまま近藤方面を邁進してくれて私が作ったプログラムとかお蔵入りせず使ってくれると嬉しいんだが。

2008年2月2日土曜日

Makefileメモ

FortranでもGNU makeが使えるようなので試してみる。
線形代数の計算ライブラリLapackのせいでコンパイルオプションをどうするかでてこずる。結局Intelのフォートランコンパイラ+インテルMKLでLapackを使うときはMakefileは以下のようにしておけば良いようだ。

TARGET=出来上がりの実行ファイル名
OBJECTS=生成される分のファイル名.o 
F90=ifc
FFLAGS= -lmkl_p4 -lguide -lpthread -L/opt/intel/mkl61/lib/32 \
-lmkl_lapack -lmkl_def\
COMMON_MOD=モジュールファイル名
.SUFFIXES:
.SUFFIXES : .o .f90
.f90.o:

${F90} -c $< ${FFLAGS}

${TARGET} : ${OBJECTS}

${F90} -o $@ ${OBJECTS} ${FFLAGS}

${OBJECTS} : ${COMMON_MOD}


コンパイラオプションの-pthleadとかはたぶんあんまりいらない気もする。
あとやりがちなミスが、実行文(${TARGET} : ${OBJECTS}とか)の前にタブを入れ忘れること。タブが無いとGNUmakeは実行文を認識してくれない。とある参考文献のmakefileの例も実行文の前にタブはいってないぞ・・・最初それをそのまま試して、私は撃沈した。

2007年8月21日火曜日

fortranにおける型宣言文

フォートランの型宣言文はf77とf90で形が違う。しかも単精度、倍精度、倍倍精度が用意されている。結構混乱するのでまとめ。私はなんちゅーかf77とf90とf95を混用してるので、一度整理しとかんと思わぬ事故が発生しそう。

f77での変数の型

整数型
integer(デフォルト、4バイト)
integer*8(オプション、8バイト)

実数型
real(単精度実数)
real*8= double precision(倍精度実数)
real*16(4倍精度実数)

複素数型
complex*8=complex (単精度複素数)
complex*16 (倍精度複素数)
complex*32 (4倍精度複素数)

なので、倍精度複素数にたいする組み込み関数 dimag()(虚部を返す組み込み関数)とかdble()(実数化する組み込み関数)はcomplex*16で宣言される変数に使わないとコンパイル時にviolationがどうこうとかいうエラーメッセージがでます。
変数の型には他にlogical,characterなんかがあるけど数値計算にはあんまり使わないし、使ってもデフォルトの型で大抵事足りるので省略。詳しくはhttp://www.hiroshima-cu.ac.jp/japanese/IPC/hunet99/sun/WorkShop/ja/html_docs/fortran/f77rm/data.doc.html#2253
基本的にf77での型宣言文は
型宣言子(*n)=変数名のリスト であるもよう。
定数化するには型宣言文の次以降の行で
parameter (変数名=定数)てな感じで。


f90
f90だと定数化も配列宣言も実にシンプルにできる。
型宣言子[(長さ,種別指定)], 属性指定 :: 変数名のリスト
長さ,種別指定のとこに8とか16とか代入する。これで精度を決定。
属性指定にはsaveとかparameterとか。intent(in)とか使うと引数の入出力特性も制御できたり。このへんf90は便利かもしれない。

例
REAL, PARAMETER :: pi = 3.141593

2007年8月7日火曜日

院生の夏

さて最近ブログの更新をしてなかったのは、

昼間:研究室。院生に夏休み無し。ただいま研究が結構佳境。
夜:Stage6とVeohからのダウンロードで自宅PCがフル稼働

だからなワケです。ええ、とうとうVeohからのダウンロードにも手を出してしまいました。そんだけダウンロードしたものをいつ見るんだっていう話ですが。外付けHDも装備。日本橋で320Gを11300円で購入。HDの価格はデフレ傾向ですね。転送速度も悪くないし、USB外付けHDも使い勝手いいかも。電源がいるのがめんどいけど。

以下Veohの話

VeohからのダウンロードにはVeoh TVとかいう専用のソフトのダウンロードとVeohのアカウントが必要です。アカウント取得にはユーザー名とメールアドレスとパスワードの記入だけでよいのでGmailとかのアドレスつかっちゃえば、さほど個人情報流出に神経とがらせなくても良さそうですね。専用ソフトがいるのはVeohがP2Pをつかってダウンロードする仕組みゆえな模様。
ダウンロードしたファイルそのものは拡張子aviでフツーにそのソフト以外のmedia playerなりなんなりで見れてしまった。VeohってファイルはFLV形式だったはずなんだが?もしかしてVeoh TVがエンコードしてくれた?
P2Pだからかどうだからかしらないけど、転送速度があんまり出ません。100b/sぐらい。Stage6だと調子いい時は4Mb/s出るときもあるからちょっとイラ。しかも4つ以上のファイルをダウンロードしようとするとpendingになります。これもP2Pだから?とはいえVeoh TVが整理してダウンロードしてくれるんで寝る前に大量投入しとけば良いだけなんですが。コンテンツはStage6よりはるかに揃ってます。削除される率が低いんですかね?結構オススメです。

研究も結構「あーそうやったんや~」てなのが続いてまぁ、9月の物理学会には間に合うかなと。あと山が2個ほど待ち受けてそうですが。基本的なのに教科書に書いてくれてない事柄を理解してちょい嬉しかったのでそのうちブログにまとめるかもです。こないだ見かけたBloggerでLatexかけるスクリプトも試したいし。

2007年8月3日金曜日

Stage6が強すぎる件について

さてyoutubeの規制が厳しくなるとのことですが。

youtubeから他のに乗り換える時期がやってきたのでは?

ということで遅まきながらStage6を覗いてみる。

Stage6>>>>>>>youtube

画質がDivx仕様だから断然によい。音質も悪くない。エンコードしてる職人のウデがいいとか?
そりゃ数はyoutubeが圧倒的かもしれないけど画質が違う&ダウンロードが超ラク。
ボタン押すだけでフルダウンロード・・・確信犯的だ。たぶんWin○yするよか安全にいろいろなものが簡単に手に入ってしまう。とりあえずLinkin ParkのPVと精霊の守り人と十二国記の一部を見つけてダウンロード。ものによっては全話UPされてる模様。なぜかフラ語の字幕とかついてる。フランスのおたくさんが字幕までつけてUPしてるらしい。すごいな・・・。Web万歳。

動画共有サイトは他にもveohとかDailymotionがあるけど画質&ダウンロードしやすさを考えるとStage6が私の中では最強。
というわけで日々いろいろダウンロード・・・こんなとこを後輩に見られたらヲタと誤認されそうでやだな。そろそろ自宅PCのHD容量がやばいのですがそんな理由で外付けHDを買っていいのかどうか自問の日々。こんな私は暑さでアタマが少々ヤラれかけてるのでしょうか。

2007年8月1日水曜日

windowsでfortranをタダで

実は研究室でもらってるパソコンはハイスペック。メモリ2G以上なので実はそこらのクラスターと同レベルに早い。というわけで、簡単な計算なら順番待ちするより自分のPC上で計算させたほうが早い気がする。そしてviが苦手なので出来ればGUI環境でプログラム書きたい・・・ 。Cとかならエディタで強調表現とかしてくれるのあるんだけど、われわれ理論物理屋が使うfortranは超古代語だけあってそんな機能搭載したエディタは少ない(泣)だれか数値計算用のフリーの開発環境つくってくれないかなぁ。
なんとかwindows上でfortranをタダでまわす方法ないものかと探してたら、f77ならかなり簡単にそれが実現できる模様。
f77についてはSalfordがフリーコンパイラSalford FTN77 Personal Edition Compilerを出してるのでこいつをダウンロードしてくればよい模様。これに準処したフリーエディタCPad for Salford FTN77 を組み合わせて使えばなんとかwindows上でfortranが使える。FTN77をインストールしてftn77.exeの場所をコンパイラのパスとしてCpadに登録してやれば、コンパイルから実行までGUI環境でというのが実現。ちょっと嬉しい。ただし結果はDOS窓で表示される。Cpad自体にfortran用の強調表示なんかも組み込まれてるので、プログラム書くのはだいぶ楽チンになりますな。

問題はFTN77にLAPACKが入ってないこと・・・LAPACK自体はタダで提供されてるんだが。libファイルとかどーやって作るねんな。LAPACKないと逆行列計算とかお手上げですがな。

なので、LAPACKライブラリが要るような計算はCPadで書いて、ファイルを保存してそれを研究室のクラスターで計算するしかないのか・・・。

エディタとして使うだけなら、秀丸にfortran用の強調表現のライブラリをくっつけたほうが早かったかな?というかviに慣れるのが一番早いんですがね・・・

2007年7月28日土曜日

google analytics

google analytics導入して約2週間。
フリーのアクセス解析にしてなかなか高機能だと思う。
ブログの場合、テンプレートのHTMLの最後らへんに何行かコピペするだけでよいのも楽でよし。
とかいいながら私は順調に稼動するまで結構苦戦しましたケドね・・・
というのもウェブサイトのURLを間違って入れていたのです。bloggerの場合、アドレスはhttp://○○.blogspot.com/で登録しなきゃいけないのに、なぜかwwwを入れて登録→そりゃデータ収集されんわというオチでした。
こんだけ高機能を搭載しているだけあって、反映されるのに少々時間はかかるけど。HTML簡単にいじれるbloggerとは相性いいのでは?どっちもgoogleがやってるサービスだし。以下analyticsネタ

・アクセス元が地図で出るのが面白い。国内だと都市単位で出る。インドネシアとかブラジルからのアクセスは明らかサーバーをわざと迂回して来ている=アヤシイ気がしてならないのだけど。だって本文は日本語だし海外からアクセスされる理由が思いつかん。

・google analyticsは検索エンジンの検索ワードも出してくれるのが嬉しい。
とりあえず検索エンジン経由で来たのは5人の方らしい。しかしその検索ワードは「複素積分・fortran」だったり「秀丸・検索・ハイライト」だったりする。100%このブログは役に立ってないとおもわれ。すみません。複素積分とfortranにお悩みとは明かに同業者?というわけでfortranとか数値計算系のメモとかtips系もアップしたほうがちっとは同業者の役に立つようになりそうな予感。

・意外とfirefoxユーザーが多い模様。Operaが一名。(←またマニアックな)

2007年7月18日水曜日

vi

久しぶりにfortranでプログラムを作成。
かなり文法を忘れてる。
デフォルトのdble()使用とかしばらく使わんかったらさっぱり忘れてた。
倍精度の指定ってどうやってするんだっけ・・・とかとか
以前はプログラム書く時に秀丸とか使っていたのだが、実はホストPC(LINUX)にログインしてターミナルでVi使う方がよいみたい。viにもとからfortran書く時の支援システム?みたいなのがくっついてるよと知人から聞いたので。たしかに7字下げとか()の不整合とか指摘してくれる。viあったまいい~。

でも実はvi苦手だったりする。よくぶつかるトラブルが、なんか変なとこにハイライトがぁ~というもの。viのコマンドをほとんど知らないので、Esc状態で変なキー押して、検索+ハイライト表示されてるらしい。viのコマンドは英字1字とか二字なんで覚えやすいんだろうケドよくそのつもりもないのに打った文字が機能して困る・・・とりあえず今日はハイライトの消し方が判明。

/文字列→検索、検索結果がハイライトで表示
:nohでハイライトが消えます。

知らんかった・・・PCスキル向上希望・・・