2013年12月4日水曜日

fink v0.36.*は既にMavericks対応済みらしい

finkの日本語ページは相変わらず更新遅いのですが,どうやら英語ページでは10/30付けでfinkのv0.36.0と0.36.1がリリースされていて,Mavericksに正式に対応しているようです.

ただ,私自身がrootをMavericks上でビルドできていないので,(というかホゲる気力が湧いてこない)まだiMacはMountain Lionのママです.

年明けくらいにはがんばってホゲろうとおもいます.

2013年10月31日木曜日

MacOSX 10.9 Mavericksにfinkを入れた

MacBookAirのSSDがいっぱいになってきたので,まっさらにして入れ直すついでに,Mavericksにしてしまいました.

ネットでいろいろ情報あたってみたところそれなりに簡単にfinkが動くらしいということで,ついでにアップグレード.

しかし,やっぱり落とし穴が....

Maverickにした後,まずはXcodeをダウンロードし,ライセンスを先にagreeする.

$ sudo xcodebuild -license

続いてcommand line toolsをダウンロード.

$ sudo xcode-select --install

そして,finkのソースを落としてきてbootstrapしようと思ったら.....

fink,ネットではそのまま動くと書いてあったので,あまり心配しないでさくっと/swディレクトリを削除してしまったのですが,bootstrapしようとするとうまく出来ません.

ここで勘違いに気づく.

つまり,Mavericksを上書きインストールした時はXQuartzの再インストール程度で動くのだが,Mavericks上でfink環境を構築しようとするとうまく行かない,ということらしい.

とバックアップしなかった自分のうかつさにびっくり.
でも,きっと同じように悩んでいる人はいっぱいいるだろうと,検索ちゃん.

ありました

ありがたくそのまま使わせていただくことにしました.
さっそくtexliveをインストール.
しっかりTeXShopからコンパイル出来ました.

2013年10月28日月曜日

picocom: minicomよりもコンパクトなシリアル通信

picocomという,minicomよりもコンパクトで,シリアル通信に使えるコマンドを見つけました.
Scientific Linux 6.3上では普通にyumでインストールできますが,レポジトリはepelです.

使い方はminicomのように設定ファイルをあらかじめ用意する必要がなく,

$ picocom -r -l /dev/ttyUSB0

で直接シリアル通信できます.
ここで-rは終了時にリセットしないようにするオプション,-lはシリアルポートをオープンする前にlockしないようにするオプションです.

特に,一般ユーザで使用するときは,たとえdialoutグループに所属していたとしても,-lオプションを付けないとパーミッション関係のエラーが出て起動できなくなります.
(おそらく,一般ユーザでは/val/lock以下への書き込み権限がないため)

終了するときは,CTRL-a CTRL-xで終了です.


2013年9月19日木曜日

Linuxで,USB-RS232C変換ケーブルをつかってシリアル通信するときの注意点

以前購入しておいたUSB-シリアル変換アダプタをlinuxでつかう際にこまるのが,パーミッションの問題.

つかいはじめた頃は/dev/ttyUSB0にパーミッションを与えていたんだけど,スマートじゃない上に再起動したりアダプタをUSBポートから抜いたりすると,パーミッションも元に戻ってしまいます.

そこで,初心に立ち返って,自分のアカウントをグループに追加すれば良いはずだと思い立つ.

$ ls -l /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 0  9月 19 18:08 2013 /dev/ttyUSB0

というわけで,dialoutグループに自分を追加.
すると無事再起動してもつなぎ変えても大丈夫になりました.

きっと三ヶ月もすると忘れるので,しっかりメモしておきましたとさ.

raspberry piにtightvncserverをインストールし,MacからVNC接続する.

raspberry piでVNCをつかってMacから操作したいので,VNCを入れることに.
あまり状況がよくわかっていないので,まずパッケージを探す.

$ sudo apt-cache search vnc

いくつかそれっぽいものが見つかったのですが,その中でtightvncserverというのがよさそう.

$ sudo apt-get install tightvncserver

起動の方法は簡単.

$ vncserver :2 -geometry 1980x1080 -depth 24

初回起動時にはVNC用のパスワードを聞かれるので,二回入力.
その後,view onlyのパスワードもつくるか,と聞かれるが,そこはno.

終了は,

$ vncserver -kill :2

ここで,:2などの番号はmacからつなぐときに,ポート番号590*の"*"の部分の数字になります.
注意点は,起動を一般ユーザで行うこと,うっかりサービスを起動するときのようにrootやsudoで起動してしまうと,vncもrootでログインすることになり,ビックリします.

ここまでできたら,Finderの"移動 > サーバへ接続"で,

vnc://192.168.***.***:5902

と入力すると,暗号化云々だけどいい?と聞かれて,はい,って答えるとパスワード入力プロンプトが現れ,無事接続できました.

2013年8月30日金曜日

Gtkでホール効果測定のプログラムを書くための準備

今回ホール効果測定装置を立ち上げるにあたって,初心に帰ってCで書いています.
ただコマンドラインで順繰りにプログラムを動かすのでは21世紀っぽくないなぁ,と思い,思い切ってGUIで操作できるようにすることにしました.

そこで,練習のためにGtkをつかって,(でもmain関数がバカでかい)接続したデバイスのIDをGPIB経由でとってきて,画面上に表示させるプログラムをちょちょいと書いてみました.

(Gtkでは全然21世紀っぽくもないのですが...)




つないであるデバイスは今のところ三つなのでボタン三つ.
構成は,メニューバー,ラベル1,三つボタンの入ったhbox,ラベル2をvboxに入れて,ボタンをクリックすると各装置に"*idn?"をなげ,帰ってきたテキストをラベル2に"g_signal_connect_swapped"をつかって反映させる,というだけのものです.

ボタンのソースコードは,

    button1 = gtk_button_new_with_label ("TR6861");
    gtk_widget_set_size_request (button1, BTN_WIDTH, BTN_HEIGHT);
    gtk_container_add (GTK_CONTAINER (hbox), button1);
    gtk_signal_connect (GTK_OBJECT (button1), "clicked", G_CALLBACK (TR6861read), NULL);
    g_signal_connect_swapped (GTK_OBJECT (button1), "clicked", G_CALLBACK (cb_label), (gpointer) label2);
    gtk_container_set_border_width (GTK_CONTAINER (button1), 5);

button1をクリックしたときに,gtk_signal_connectで一つ目のコールバック関数を呼び出し,この関数の中で測定器からIDNをとってきてBufferに入れ,その次の行でg_signal_connect_swappedでlabel2の内容をBufferで書き換えるコールバック関数を呼び出しています.
ここで問題は,一つ目のGPIB通信に時間がかかってしまった場合,すぐに下の行のg_signal_connect_swappedでラベルを書き換えるコールバック関数が呼ばれてしまうと,Bufferに測定器からの読み取り値が代入される前に古いBufferの値でlabel2を書き換えてしまうのではないかという心配です.
そこで,わざとgtk_signal_connect で呼び出しているコールバック関数の中にsleep行を入れてみて,どんなに待っても逐次的に処理されるかを試したところ,しっかり待ってからg_signal_connect_swappedのコールバック関数を実行していたので,問題はありませんでした.

GPIBで測定するところは,

static void Agilent34420Aread (){

  PrimaryAddress = 22;
  Device = ibdev(
BoadIndex,
PrimaryAddress,
SecondaryAddress,
T10s,
1,
0
);
  ibwrt (Device, "*IDN?\n", 5);
  ibrd (Device, Buffer, 100);
  Buffer[ibcntl] = '\0';

  ibloc(Device);
//  sleep(1);

}


こんな感じでエラー処理とか細かいことは一切していないのですが,本番はきちんとエラーが出たときに処理して標準出力にいろいろ吐くようにします.

メニューバーにはFile > Quitのシンプルなメニューしかありません.

ちなみに,プログラムはウインドウのクローズボックスをクリックしても,メニューで終了を選んでもどちらでも終了できるようにしてあります.

この程度に半日近くかかってしまった.

作業はすべて,自室のMacからssh -Xで実験室につないで行っているので,画像でもmacっぽく見えていますが,実際はLinux上で動いています.

2013年8月7日水曜日

Mountain Lionにfinkでwine

久しぶりにfinkのパッケージを検索してみたら,wineが復活している模様.
現在MacBookAirにVirtualBoxを入れてWindows2000を使っていますが,finkにwineが復活したならもはやwineを使った方がいいに決まっています.

$ sudo fink selfupdate
$ sudo fink update-all
$ sudo fink install wine-32bit

かなりの時間の後,無事インストール完了.
バージョンは1.6の模様.

まずは通常どおりwinefileを起動.

$ winefile

すると,.netをインストールしろとか,いろいろ言ってくる.
とりあえず,.net関係のインストールには失敗し,GECKOエンジンのインストールには成功.

Cドライブが ~/.wine/drive_c以下に出来,無事うまく行っている様子.



画像はすでにWiMDAとGhostscript,Ghostview,GLEをインストール済み.
最近は環境変数をいじらなくてもきちんと解析からフィットまで出来るようになっている模様.

ここで興味深いことに気づく.
なんと,X11が動いていない,つまり,Aqua上で動いているように見える,ということです.
ただ,このwinefile,まだまだ実装されていない機能もあるようで,たとえばファイルのコピペがうまく出来ません.
なので,ファイルのコピペはMacのFinderをつかって行い,winefile上で.exeをダブルクリックしてアプリをインストールしたり起動したりします.
多少不安定な感じは否めないので,代わりにexplorerを使ってみることに.

$ wine explorer

すると,もう少しおシャンなエクスプローラーが立ち上がる.


こちらも,winefileと同様にダブルクリックでファイル操作ができ,なおかつもう少し安定している様子.
しかも,見た目がMacっぽくってすばらしい!

懸案のWiMDAを立ち上げる.


きちんと使えます.
撃速です.

regeditで編集するまでもなく,きちんとパスが通っているようで,解析が可能.

ただし,MacBookAirの解像度ではちょっと厳しい.

2013年7月17日水曜日

モータードライバをラックにマウント!

モータードライバの回路組み立て等が完了.

LEDは左から順に,ALM(赤),MOVE(緑),STOP(緑),READY(青)の順に結線.
青はおもった以上に明るく,(というか赤が暗く)見た目のバランスが悪い.

電源スイッチのLEDに入れる抵抗を勘違いして2.2 kOhmにしてしまったが,データシートによれば1.2 kOhmがいいらしい.
ただ暗いというだけで機能にはまったく問題がないので,暇になったら交換することにした.


念のためPCから操作してみる.

minicomを一般ユーザで起動しようとしたところ,パーミッションで怒られた.
前回きちんと/dev/ttyusb0には全員に読み書きパーミッションを与えたのだが,一度USBを抜くと消えてしまうのだろう.
HotPlugの弊害かとおもわれる.
とりあえず誰もつかわないので,suになってminicom ttyusb0を起動.


しっかり制御できました.
1パルスで0.012度動く設定になっている.
回転スピードが一秒あたり10000パルスなので,三秒で一回転してしまう.
ちょっと速すぎなので,一秒あたり1000パルスにしてみたが,一度電源を抜くとこれも忘れてしまうようだ.
要注意.


2013年7月10日水曜日

minicom: LinuxとかMacでTeraTermみたいなシリアル通信を

モータードライバのケースもほぼ完成し,通信をためしたいのですが,TeraTermみたいにちょこっとシリアル通信できる方法って,LinuxとかMacにないかなぁ,とおもってグーグル先生に聞いてみたところ,いろいろあったのですが,とりあえず私の目的に近そうなのがminicomっていうソフトでした.

一応,yumでもfinkでもインストールが可能なので,それなりにメジャーなのでしょう,いままで知りませんでしたが,macとlinuxの両方で使えるというのが私好み.
インストール後,
# minicom -s

で設定.
まずはポートを/dev/ttyUSB0にして,ボーレートを9600に.

起動すると勝手にモデム初期化コマンドを送るので,その項目も削除.
ttyusb0という設定ファイル名で設定を保存し,
# chmod a+rw /dev/ttyUSB0
 で一般ユーザにも読み書き権限を与えます.
一般ユーザに戻って.
$ minicom ttyusb0
とすると通信開始.

無事にモータードライバとお話が出来るようになりました.

2013年7月9日火曜日

ホール効果測定用のモータードライバ組み立て

液体ヘリウムが入手できず,先延ばしになってたホール効果測定を実行すべく,プローブを回転させるモーターの組み立てをはじめました.

手始めに,いままでバラバラだったモータードライバやDC電源などを,奇麗にアルミケースに収納し,ついでにヒューズや動作を確認できるLEDもつけてカッコ良くする予定です.

マジックでアルミ板にけがいて,ボール盤でひたすら穴あけ.
モーターのケーブルなどを通す穴は,ホールソーでがっつりφ30の穴をあけました.




ここで困ったことが.

このがっつり大きくあけた穴にケーブルがこすれて傷つくのを防ぐための,ゴムの部品の名前がわからない!
前の職場にいた頃は資材課にいけばいくらでも手に入ったので,これの名前がわからない!

ネットでしばらくしらべて,やっとこさ『グロメット』という名前であることを発見.
いそいで業者さんに手配しました.

今日はとりあえずACとDCの電源関係の配線まで完成しました.


中央手前はあとで小さいユニバーサル基盤を入れるためのスペースです.
LEDをひからせる電圧を調整するための抵抗を入れたりする予定です.

さて,あしたは課題研究の発表会.

そこで業務連絡

おーい,川瀬!!!
ノート忘れてるぞ〜〜〜〜〜〜!!
(ノートなしでプレゼン準備大丈夫か?!?!)

2013年4月6日土曜日

遅ればせながらBibTeXはじめました.

ずっとBibTeXを使わずに来たのですが,ちょっと同時進行で数本の論文をかかえてしまったので,思い切ってBibTeXを始めました.

まず,文献リストを作るにあたり,手で入力するのが面倒だったので,何かいい方法がないかと考えていたところ,EndNoteを使うという手を思いつきました.
EndNoteはなんとPDFファイルから自動的に情報を読み取って文献データにしてくれます.
(しかも,30日間無償で評価ができます.)
方法は,importメニューからpdfファイルが保存されているディレクトリを指定するだけです.

サブディレクトリも自動的に検索してくれます.

多分,doi情報かなにかを読み取って,ネットから文献データを探してくる,という方法みたいです.
ですので,ネットに接続していることが必須です.
自動生成されたリストをちょこちょこ修正すれば,簡単にリストが出来上がります.

ところが,EndNoteは標準ではbib形式に出力してくれません.
ですが,XML形式で出力することができます.
そこで,XMLからbibへ変換するツールくらい誰が作っているだろう,と思って検索すると,しっかりありました.
bibutilというツールで,さまざまな形式の間での変換ができます.
しっかり,EndNoteが出力するxmlにも最適化されているようでした.

私はいったんendx2xmlで普通のxmlにしたのち,xml2bibでbibファイルに変換しました.
(end2xmlではうまく変換できませんでした.)

あっという間にbibファイルの完成です.

bibファイルをtexのソースから参照するには,プリアンブルに


\bibliographystyle{hoge}

みたいに書いておいて,(hogeは投稿する雑誌によっていろいろある?)あとは\end{document}の直前くらいに

\bibliography{foo,bar}

という風に,自分でつくったbibファイルを指定すればいいだけです.
ここで,foo.bib,bar.bibがbibファイル名で,fooとbarの間は","で区切り,スペースは入れません.

このまま普通にコンパイルすれば自動的に番号がふられた参照文献リストが出来上がりますが,ここで驚くべき事態に遭遇.

なんと,参照文献の大文字小文字が勝手に変換されて,先頭だけが大文字になってしまっていました.

これを解決する方法は簡単で,bibファイルの中身のタイトルの部分を,

title="{RESONATING VALENCE BONDS: A NEW KIND OF INSULATOR ?}",

のように中括弧でくくるだけでいいみたいです.
これで,自分が入力した通りに大文字小文字を出力してくれます.

ちなみにEndNoteをダウンロードして,文献リストを作り始めたのが金曜日の夕方,土曜日にはしっかりコンパイルができるようになっていました.

もっとはやくやっておけば良かった...

2013年3月20日水曜日

qt4-macをつかってmusrfitをコンパイル

先日,T中央研究所のS山さんにお会いしたとき,S山さんがmusrfitをmacbookにセットアップして使っていらっしゃいました.
ちょっと画面を拝見させていただいたところ,musreditのGUIが奇麗!!

私のmusreditはこう.


違いを考えてみたのですが.見た目の違いはきっとコンパイルしたときに使ったQtがちがうのだろう,という結論に達しました.

私が使っているのはfinkのqt4-x11.
きっと,qt4-mac関連のライブラリを使えばmacらしく奇麗になるに違いない.

そこで急遽qt4-mac関連をインストール.
もちろんqtwebkitも.
で,configureのオプションに--with-qt4=/sw/lib/qt4-macを指定してコンパイルし直すことに.

すると,なんと,make installしても/opt/root/bin/musreditが更新されていない!!



はて,もしかして,と思い,makeの吐き出したメッセージをよく読むと...
なんと,/Applicationsの下にコピーしているではないですか!!!

はやる心をおさえつつ,アプリケーションからmusredit.appをダブルクリックすると...


じゃん!macらしい奇麗なGUIのmusreditの出来上がり!!
でした.





2013年3月5日火曜日

raspberry pi買ってみた

一部のマニアの間では有名な,raspberry piを買ってみました.
USB2ポート,RAM512MBのBタイプです.

OSはraspbian 'wheezy' 20130209バージョンをダウンロード.
ddコマンドでsdカードにかき込みました.

まぁ,ベースがLinuxということもあるので,もちろんmusrfitを入れてみよう!
と想い,NeXusをセットアップし,rootをセットアップしようと思ったところでなぜかうまくいかない??

$ ./configure

のところで"libX11 must be installed"などと言われる.

もちろんXはインストールされているし動いている.
『んなわけはないだろう?!?!』
と思っても,下記の通り空っぽ.


pi@raspberrypi /usr/lib/X11 $ ls -la
合計 24
drwxr-xr-x  4 root root  4096  3月  5 12:43 .
drwxr-xr-x 67 root root 12288  3月  4 16:21 ..
drwxr-xr-x  2 root root  4096  3月  5 12:43 x11perfcomp
drwxr-xr-x  3 root root  4096  3月  5 12:43 xedit
pi@raspberrypi /usr/lib/X11 $ 


探してみると,なんだか全然違うところにありました.


pi@raspberrypi ~ $ sudo dpkg -S libX11.a
libx11-dev:armhf: /usr/lib/arm-linux-gnueabihf/libX11.a
pi@raspberrypi ~ $ 

なるほど,ということで,./configure にオプションとして linuxarmと,--with-x11-libdir= /usr/lib/arm-linux-gnueabihf --with-xpm-libdir= /usr/lib/arm-linux-gnueabihf --with-xft-libdir= /usr/lib/arm-linux-gnueabihfを指定すると通りました.

しかし,makeを走らせてから24時間たった現在も,まだmakeしてます(^^;

2013年1月15日火曜日

一瞬あせる!LinuxでGPIBが使えなくなったか!? ScientificLinux 6.3でGPIB 続報

年があけて,久しぶりにLinuxでGPIBを試そうかと思ったら,lsmodしてもモジュールが出てこない!

# gpib_config

すると,

Failed to open device file '/dev/gpib0'
main: No such device or address

と表示される.
こうなれば手動でモジュールを読んでみようと思い,

# modprobe ni_usb_gpib

しかし,そんなモジュールないとか言われる.

焦る.

しかしほどなく状況を理解.
設定ファイルが間違えていないのにモジュールがないと言われる -> 現行カーネルのモジュールが無い -> カーネルバージョンが変わった?

案の定,カーネルがyumの自動更新でアップグレードされていました.

落ち着いて,ソースのディレクトリへ行き,

# ./configure
# make
# make install

設定ファイルはそのままだったので,無事にGPIBドライバが読み込まれました.
今後突然このようなことが起こると困るので,yumの設定からkernel関係はアップグレードしないようにする方がいいかもしれません.


2013年1月9日水曜日

Mountain Lion FinkのtexliveをTeXShopから使う

仕事上,texの環境を周りの方と合わせることは非常に大事.
我らが物理学教室の資産がsjisのtexである以上,それに合わせることが重要になってきます.

普段はTeXを日本語で使わないので気にならなかったのですが,TeXShopから日本語を扱おうとするといくつか問題がありました.

ネットで調べても『ビンゴそのまま!!』な方法がなかったのでメモしておきます.

まず,~/Library/TeXShop/bin/platex2pdf-sjisを見よう見まねで以下のように編集しました.


次に,TeXShopの設定パネルで,


とすれば動きました.

環境の復習です.

OS: 10.8.2
fink: 0.34.4
texlive: 0.20110705-103
TeXShop: 3.11



2013年1月7日月曜日

Mountain Lion にmusrfitをインストール2: 環境変数とlaunchd.conf編

rootのインストールは,

$ ./configure --gminimal --enable-asimage --enable-mathmore --enable-minuit2 --enable-xml 
$ make  
で無事完了.
環境変数を設定するために,.profileに

test -r /opt/root/bin/thisroot.sh && . /opt/root/bin/thisroot.sh

の一行を追加して再ログイン.

システムワイド環境変数の設定について調べていると,macではそもそもいろいろなデーモンを動かすのに起動時にlaunchdというものを使うらしい.
そこで,/etc/launchd.confの中に書いておくとたとえばダブルクリックで起動するようなアプリに対しても環境変数を渡すことができるらしい.

たとえば,musrfitをインストールする場合だったら,/etc/launchd.confの中身は,

setenv MUSRFITPATH /opt/root/bin
setenv QTDIR /sw/lib/qt4-x11
setenv ROOTSYS /opt/root

となります.
これは起動時に読み込まれるので, いったん再起動します.

musrfitを展開したディレクトリに移動し,

$ ./autogen.sh
$ ./configure --prefix=$ROOTSYS --with-qt4=$QTDIR
$ make
$ sudo make install

で無事にインストール完了.
musrfitのドキュメントによれば,/Applicationsディレクトリにmusredit.appもインストールされると書いてあったのですが,残念ながらそのようなことはなく,コマンドラインからの起動しかできませんでした.

$ cd ~/musrfit/doc/examples
$ musredit test-histo-MusrRoot.msr &

とすると,無事に起動.
これで夏休みにスイスにいく準備は万端!!
(予算は???)


2013年1月5日土曜日

Mountain lion にmusrfitをインストール1: root編


性懲りもなくmusrfitをmacにインストールしようと企んでいるのですが,道のりが長いのはよくわかっているので,ステップバイステップでゆっくりやってます.

まず,qt関係をそろえておくことは必須なのですが,qtwebkitがないとmakeでこけるのがわかっているので,finkでqtwebkitを入れようと思ったのですが,finkにはqt4が二種類あります.
qt4-base-mac-hogehogeとqt4-base-x11-hogehogeです.

私はなぜかqt4-base-x11-hogehogeシリーズを入れていましたので,それにならってqtwebkitもqtwebkit-x11をいれようとしたのですが,finkでインストールしようとするとなぜかqt4-base-mac-hogehogeも入れろと言ってくるのです.
かなり迷ったのですが,言われるがままインストールしてみました.
いまのところそれで不具合はないので,様子をみています.

それから,rootもfinkで入れるとパスの問題でいろいろ言われるのはわかっているので,ソースからビルドしようと思って,root_v5.34.03.source.tar.gzを/opt/root/ に展開し,

$ ./configure --gminimal --enable-fink --enable-asimage --enable-mathmore --enable-minuit2 --enable-xml

すると,

configure: libXft not in same directory as libX11
For consistency they should be in the same directory

と怒られる.
確かに,libX11は/usr/X11R6/libにあり,libXft.laが/sw/libにあるので,シンボリックリンクをはってみたが,やっぱり怒られます.

そこでgoogle先生に聞いてみると,やはりmacでrootをうまくビルドできない人がいるらしい.
原因はxft2-devというパッケージにあるらしいので,おそるおそる削除.
もう一度./configureしてみたら,うまく通って,makeもできました.

$ source /opt/root/bin/thisroot.sh
$ root

とやってrootが起動することを確かめました.

それから,システムの環境変数をセットしようと思って ~/.MacOSX/environment.plistを編集しようとしたところ,ない!!

これについてはまた後日.