2009年4月24日金曜日

Mathematicaメモ

Mathematica覚書

論文用の図をキレーに作るため、Mathematicaと格闘して一日終わる…
Mathematicaは7にアップグレードしてからなんか挙動が怪しい。グラフを書かせると、字化けするようになった。EPSなら大丈夫なんだがMathematicaのEPSとイラレが相性超悪なのでEPSで出されても…。なんでだ…。たぶんデフォルトのフォントがうちの機会と相性悪いんだろう。
そんなわけで、グラフのラベル等のオプションを覚書

たとえば、

Plot[Sin[x], {x, 0, 10},
LabelStyle ->
Directive[Orange, FontFamily -> "Courier", FontSize -> 20]]

こんなふうにすると、ラベルの文字がオレンジ色で、FontはCourierでサイズは20ptの図ができる。
基本的に、Labelの文字の設定はLabelStyleってのを使う。そのなかでFontのオプションはFontFamilyやらFontSizeやらいろいろあるんだが、組み合わせて使うには、Directiveってのを使う必要があるそうな。それにしてもMathematicaの解説サイトのわかりにくさはありえねー。

2009年4月11日土曜日

へたれが群論を勉強してみるテスト

群論を勉強せねばならなくなった。前々から嫌な予感はしてたんだがSU(2)だのそんな用語を駆使しないと結論部分がしまりのないかんじになってしまふ。まぁそんなわけでとりあえずSU(N)だの直積表現だのがわかるようになるのを目標としてぼちぼちと勉強することにする。

せっかくなので勉強したことはチラシの裏に書きとめておく。間違ってそーな予感プンプンするな。

とりあえず、群ってなんやねんてとこから。群というのはヒジョーに抽象的な概念であるらしく、とりあえずどんなものの集合でもいいからその任意の要素AとかBとかCに対して

1.積A・Bも集合の要素
2.(AB)C=A(BC)
3.単位元がある(作用しても相手を変化させない要素、1とか単位行列みたいな)
4.逆元が要素のなかにある(元に戻すような要素が定義できる)

という4つの条件を満たせばそれらは「群」ですよと言えるっぽい。オプショナルな性質が加わると、リー群とか巡回群とか可換群とかちょっとややこしい名前になってくる。要素は具体的なモノや数字じゃなくてもよくてたとえば、右方向に90度回転させるであるとか、x軸方向に30pt進めるとかのなんらかの操作でもいい。考えてみればカードをカットするというのも群、しかも巡回群を作るんじゃねーの。

群がそんな概念ですよと言われても、はぁさいでっかって感じなのだが、物理でありがたいのは対称性を群論で扱えるというところ。系の対称性はその系がどんな状態をとるかというのにダイレクトに効いてくる。量子力学だったら固有状態の縮重度が対称性で決まってくる。

対称性は、どの系がどんな対称操作(回転とか反転とか)に対して不変であるかで決まってくる。対称操作といっても、いちいち「z軸を中心とした90度回転」とかいうわけにはいかないので、基本的に行列で表わすことを考える。操作をうけるブツとして関数(ある条件でどんな値をもつかを具体的に記述したモノ、量子力学への応用なら波動関数と思っておけばいいぽい)を考えておく。こうした関数を基底という。ターゲットとする、群をなす対称操作の集合に対して閉じた(つまり、ある操作の結果として出てくる関数も集合の要素に含まれる)関数系を用いれば、対称操作の集合を行列をつかって表記できる。量子力学で出てくる完全系によるハミルトニアンの行列表記と似たよーな感じ?抽象的な対称操作を、「こんな関数に作用させるとこんな結果が出てくるよ~」として行列で見える化してるわけか。こうして得られた行列の集合を、群の表現という。関数系の選び方には任意性があるので、表現は何パターンもある可能性がある。そのなかでも適切な基底関数系を選んで、うまいことなってる状態(対角化され度合が一番高いってのが妥当なイメージか?)を既約表現という。

とりあえず、こんなところで。続くかも…?

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月9日木曜日

Xming+putty+ポートフォワーディング

Xmingの存在は前々から知ってたけど、なんかこないだ使おうとしたときにはうまくいかなかったのだな。Xmingってのはなにかってゆーと、CygwinのXサーバー部分をとってきたようなもんで、Windows上でLinuxのXwindowつかえるというなんだか便利な代物。CygwinもVMwareも中々重たい代物なのでXwindow使うためだけには立ち上げたくないよね~てな向きには最適ぽい。研究室の自分のデスクにLinux機+windows機の2台が置いてあるってな状態になったのであきらめずに試してみる。
通常の場合のXming+puttyの使い方はココに書いてある通り。
http://zodiac30.cse.kyutech.ac.jp/~fujiwara/setup/xming-putty/
XmingつかったXDMCPもできます。その場合はLinux側の設定をちょっといじる必要あり。
CentOS5の場合、/etc/gdm/custom.confをちょろっといじって

[xdmcp]
Enable=True

として、rebootすればOK。あとはWindows側でXLaunch起動、One Windowを選択、IP入れるとログイン画面が出るはず。

さて問題は、自宅から研究室のLinux機を使うとき。セキュリティ上、Linux機にはグローバルIPふってないし、LAN外からはアクセスできない。なわけでポートフォワーディングかませて、大学のSSH接続用の鯖→グローバルIP付きの研究室の鯖→自分とこのマシン、ていうややこしいトンネルを掘らなければいけない。Xmingでそれがつかえるのか??というのが今回の問題。
結論から言うと、Puttyのコマンドラインオプションで解決できた。
たとえば、目的のマシンの22番ポートに自分とこの5100番をポートフォワードしてるとき、
Xlaunchで設定するときに
start a programを選択 →Using PuTTYを選択
Connect to computer :localhost

次のページで

Additional parameters for PuTTY or SSHのところに
-P 5100

と入れておけばよい。
-Pはポート番号を指定するputtyのオプション。
puttyはそれ以外にもコマンドラインでオプションを与えて実行できるので、バッチも作れる。いつも使うのは-loadでセッションをロードするバッチを作っておいてもいいかも。
http://the.earth.li/~sgtatham/putty/0.57/htmldoc/Chapter3.html#S3.7

てなわけで、MultiWindowのは起動できた。mathematica使ってみたがおっそい…。まぁいろいろ経由してきてるんだからしゃぁないか。LAN外からのXDMCPはうまくいかず。これだけ遅いならVNCを試したほうがいいかもなぁ。

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年4月3日金曜日

気疲れ

新年度だ。研究室にも新人が来た。
ハイパー人見知りなもので新人の相手は猛烈に気疲れする、いやまぁほっとんど絡んでないのだけどそれでも疲れるってどんだけー。相手のキャラも不明だし、傾向と対策は謎いので話すときに必要な演算がその分多いんだよ。この先数年顔つき合わさなあかんかもしれん相手やし地雷は踏めん。むしろ全然違う研究室で初対面とかのほうがまだ話しやすいな、その場だけ猫かぶって乗り切れるもんな。とか思っておそらく露骨なほど避けまくっている。向こうから見たら話しにくい先輩ってな感じなんだろな、やれやれ。

珍しく同性の後輩が研究室に入ってきた。男の人からみたら、女性同士のほうが話しやすいんでないのとか思うかも知れんが、女同士のほうがいろいろ難しいんだよな、と女子高出身者としては思うのだ。つーか長年工学部にいるもんで、同年代の女の人と話すネタをわすれました、何話していいかわからん。絶対「痛いニュース」とか/.しらんだろうしな…。最近自分の話すネタがオタっぽいものしかない気がする。

女の人のほうが細かいことに気づきやすい分、些細な発言を気にしたりする気がする。下手な発言かませて凹まれたり恨まれたりしても嫌だしなぁ。女の後輩とかどう扱ったらいいかわからんや。いかん、思考が後ろ向きだ。

そんなわけで黙々とD論書き進めている、しばらく研究室では引き籠ってひたすらひっそり作業してるとおもう。はー、人見知りなんとかせんとなぁ。