virtualbox¤ήetwork

ホストオンリーネットワーク
linux上のvirtualboxでvirtualなPCを立ち上げて、ホストとvirtualなPCの二台だけでネットワークを組みたい時がある。この際には、ホストオンリーネットワークというのを使えば良い。この時、DHCPサーバーの機能も組み込まれるが、ゲストに与えるIPの範囲を限定してしまえば、実質的な固定IPとして使うことができる。ゲストOSとして、古くて外部のネットワークにつなぐのを避けたい場合に、使いやすい設定である。

Read more...

様々な手法

rubyでベクトルの足し算
プログラムを組むときに、vaとvbのベクトル和を計算してsumに代入する必要があったので、いろいろな方法を考えてみた。まず、一番単純なものとしては、indexを使ってそれぞれの成分を足す方法がある。

va.size.times{|i| sum[i]=va[i]+vb[i]}

size.timesの代わりにeach_indexなどを使っても同じである。次に考えたのが、片方の値をmethodを使って取り出す方法である。

va.each_with_index{|v,i| sum[i]=v+vb[i]}

しかし、かえって長くなっているので、あまり意味が無いように思われる。やはり、methodをどう使うかが、rubyの醍醐味なので、次のようなものも考えてみた。

sum=va.zip(vb).map{|a| a.inject(:+)}

これは、zipでそれぞれの成分を配列にして、それをinjectで足してしまう方法である。でも、長さはあまり変わらない。素直にMatrixのVectorをつかえということかな。

Read more...

raspberry piで計測

raspbianのUSBTMC raspbianのkernelを再構築することによって、USBTMCを組み込むことに成功した。これで、raspberry piを計測装置との通信マシンとして本格的に使うことができる。参考に、その手順を簡単にメモしておく。まず、必要なパッケージをインストールしたり、ソースをダウンロードしたりする。 sudo aptitude install kernel-package cd /usr/src git config --global http.proxy http://proxy:8080/ sudo git clone --depth 1 https://github.com/raspberrypi/linux.git sudo ln -s linux linux-3.6.11+ cd linux zcat /proc/config.gz >~/config.bak sudo cp ~/config.bak .config sudo ln -s /usr/src/linux /lib/modules/3.6.11+/build 次に、USBTMCを有効にするために、.configを編集する。具体的には、 CONFIG_USB_TMCについてのコメントがあるので、そこに CONFIG_USB_TMC=y と書いておいた。モジュールにしても良いのだが、モジュールの組み込みが面倒かなと思ってyにした。そして、Makefile中のEXTRAVERSIONに、TMCなどと必要に応じて名前をつける。そして、コンパイルである。 sudo make oldconfig sudo make clean sudo make sudo make modules_install sudo make install makeは、7時間か8時間ぐらいかかるようである。熱暴走しないように注意する必要があるらしい。そして、kernelイメージを作って、置換する。 cd .. sudo git clone --depth 1 https://github.com/raspberrypi/tools.git cd /usr/src/tools/mkimage sudo python imagetool-uncompressed.
Read more...

USBTMCモジュールのコンパイル

コンパイルはできたが
raspberry piのraspbianでUSBTMCを使うためにいろいろとやってみた。まず、agilentから、usbtmc.tarをdownloadしてこれのコンパイルを試みた。まず、kernelのソースをgitで落として、usbtmcをコンパイルしようとしたが、ソースが古いようで、なかなかうまくいかない。結果的には、二行だけいじることで、コンパイルは通るようになった。しかし、modpostが無いとか言われたので、カーネルのmake modulesしたら、usbtmc.koを作ることに成功した。しかし、insmodをしようとすると、

Error: could not insert module usbtmc.ko: Invalid module format

となってしまう。いろいろと調べていたら、kernelのソースのdrivers/usb/classに、usbtmc.cがあることを発見した。これをコンパイルした方が良いということで、これをmake modulesしてみたが、結果は同じだった。結局、kernelをコンパイルし直さないといけないと判断した。これは、また後にしよう。

Read more...

respberry piが死亡?

usbtmcまでの道のりは遠い
respberry piでusbtmcを使うために、いろいろと設定をしようとしていたら、応答しなくなった。電源を抜いて、もう一度差しても、うんともすんとも言わなくなってしまった。aptitude upgradeしていただけなのに。 計画としては、agilentから、usbtmc.tarをdownloadして、これをmakeして、usbtmc.koを作って、これをinsmodして動くか試そうとしていたのだが、これを試す前に、挫折してしまうとは。 そろそろrespberry piが値上げするという噂もあるし、値上げ前に追加購入するか、悩むところである。また死んでも悲しいし。 その後、いろいろと調べていたらSDが死んでいることがわかった。予備のSDで起動したら、動くことが分かったのだ。これで次のtrialができる。

Read more...

raspbianとUSBTMC

raspberry pi
以前から気になっていたが、入手が困難だったので、見送っていたraspberry piが、最近は手軽に買えるようになったことを知った。小さな測定用のPCが欲しかったのだが、これにピッタリだということで、注文していたのだが、これが本日到着した。 まずは電源だが、標準ではmicroUSBから供給することになっている。しかし、microUSBの電源は入手が難しいので、GPIO端子から供給することにした。うまくいくか心配だったが、大丈夫のようなので、箱にDCジャック用の穴をあけて、そこにACアダプターをさすようにした。 次にSDにraspbianを入れて、まずはSDのサイズに拡張するという作業を行い、再起動したら、無事に立ち上がった。 測定用のPCにするためには、rubyをインストールする必要があるのだが、なぜかaptitudeでインストールに失敗する。サーバーが動いていないようだ。これは、今後また試してみよう。 最後に、測定装置とのインターフェースである。USBにUSB-serialをさしてみたら、無事に認識した。しかし、USBTMCの機械をつないでも、認識しない。USBの通信はしているのだが、USBTMCのドライバーが無いようだ。USB-serialだけでも、それなりのことはできるのだが、USBTMCが無いとできない測定もあるので、これも残された課題である。

Read more...

ubuntu13.04

ubuntuリリース
ようやく、ubuntu13.04がリリースされた。もうすぐdebianのwheezyも出るはずなので、どちらが早いかと思っていたら、ubuntuの方が早かった。まだ、日本語remixは出ていないので、日本語環境は微妙かも知れないが。私はlubuntuを使うので、まずは関係ないが。 以前買って、セットアップしないでおいてあったモバイルPCにインストールしたのだが、困ったことに、インストールのときにボタンが画面の外に出てしまった。外付けのディスプレイをつないでも、症状は同じだった。勘でなんとかしたが、ハードディスクのパーティションのところは、ミスるとデータが飛んでしまうので、緊張した。

Read more...

タイマーを作る

ruby/tkでタイマー
最近、タイマーを使うことが増えてきた。以前はweb上のflashを使っていたが、ネットに繋がらないときでも手軽に使えるように、ruby/tkで作ってみた。

require 'tk'
$text=TkLabel.new(nil,'text'=>'0.00','font'=>TkFont.new(['times',100,['bold']]) ).pack
Tk.root.bind('KeyPress',proc{|key| $timer=($timer)?false:true if key=='space' },'%K')
Tk.root.bind('KeyRelease',proc{|key|
  Thread::start{
    t0=Time::now
    loop{
      $text.text="%.2f"%(Time::now-t0)
      break if $timer==false
      sleep 0.008
      }
    } if $timer==true and key=='space'
  },'%K')
Tk.mainloop

一応使えるし、まあこんなもんかな。

Read more...

fragmaster

psfragの代わりにfragmaster
以前、epsのファイルにtexの数式をpsfragを用いて入れたことがあったが、うまく行かないので、いろいろと調べていたら、fragmasterというのがあることを発見したので、それを使ってみた。まず、図をorg_fm.epsという名前にする。そして、org_fmという名前のファイルに

\psfrag{W}[Br][Br]{\LARGE $\sqrt{2}\,$}

などと書く。ここで、Wは置き換える元の文字、その後のsqrtなどは置き換えたい数式である。そして、fragmasterを実行すると、org.epsという図ができる。しかし、数式の上下が反転してしまうという症状が出てうまく行かない。しかたがないので、/usr/share/texmf-texlive/tex/latex/psfrag/psfrag.styの中の、

\def\@tempa{dvips.def}\ifx\Gin@driver\@tempa\def\pfg@orient{-1}\fi%

という行の-1を1に変えたらうまく行った。

Read more...

もうすぐリリース

Debian wheezy
明日から四月ということで、debianのサイトをチェックしたら、バグが50を切っているので、Debian wheezyのリリースまで、もう秒読み段階のようだ。現在の安定版であるsqueezeは2011/2/6に出ているので、二年と二ヶ月といったところか。このところ、だいたい二年に一度というペースで来ているが、今回もそうなりそうだ。 最近は、LXDEのdesktopを使っているので、新しいバージョンになっても、あまり環境は変わらないと思う。PCManFMがときどき落ちるのが、改善されていれば、他に特に望むことは無い。 windowsとかは、新しいバージョンになると、見た目が変わって使いにくくなる。windows8はその典型のようだ。しばらくwindowsは使っていないので、その被害にあっていないのは、幸いである。

Read more...