new PC

6年ぶりのmain PCの更新
本日、新しいPCが届いたので、早速OSのインストール等をした。前のPCは6年以上前に買ったもので、Pen4だった。Linuxを使っていると、別に遅くなったと感じることはないので、なかなか更新する気にならないのだが、ようやく更新する運びとなった。次のPCはAMDにしようと思ってはいたが、6年もするとCPU事情も随分変わったので、どうしようか迷ったが、コストパフォーマンスの良いAMDにすることにした。CPUとしては、125WのAMD PhenomⅡX4 965 BEを選択した。これにdebianをインストールできるのか心配で、いろいろと調べたがよく分からなかったので、試してみることにした。OSはDebian Lennyのamd64のLXDEを選択した。64bitもまだ少し心配ではあるが、使っているうちに慣れるだろう。インストール自体はあっさり終わったが、Xだと画面が表示されない。どうやら解像度が高すぎて、displayに写らないようだ。xfree86からxorgになってからは、適当な解像度を選んでくれるようで、最近は特に苦労しなかったのだが、今回は/etc/X11/xorg.confを書き換えるしかないようだ。Section “Screen"のところに以下を追加して、使っているdisplayの最高解像度にした。

        DefaultDepth    24
        SubSection      "Display"
                Depth   24
                Modes   "1280x1024"
        EndSubSection

あと、ビープ音がうるさいので、/etc/modprobe.d/blacklist に

blacklist pcspkr

を追加して、スピーカーを殺した。あとはrubyをインストールすれば、通常の使用には問題無い状態になった。

Read more...

linuxでdmgのmount

dmg2imgを使う
新しいプリンターが来たので、linuxから印刷できるようにしようとしたら、なかなか難しい。まず、PPDファイルが見つからなかったので、OSX用のdriverをdownloadしたら、dmgだった。まずは、

file file.dmg

でフォーマットを調べると、

VAX COFF executable not stripped

というように表示された。これは圧縮されているdmgファイルらしい。これを展開するために、dmg2imgをdownloadして、windows用しか見つからなかったので、

wine dmg2img.exe file.dmg temp.dmg

として変換すると、ようやくマウントできるようになる。

sudo mount -t hfsplus -o loop temp.dmg mntpath

としたら、無事中身を見ることができた。ppdファイルを見つけて、よしと思ったら、

Unsupported format 'application/postscript'!

と出てしまった。どうすればよいんだ。プリンタはcannonのMF8350Cdnというものなのだが、cannonのサイトにはUNIX用のドライバーは無い。しかし、いろいろと探していたら、canon-europeのサイトに、UFRII/UFRII LT Printer Driver for Linuxというものがあって、cndrvcups-common_2.00-2_i386.debとcndrvcups-ufr2-uk_2.00-2_i386.debをdpkgでインストールしたら、無事に印刷できるようになった。日本のlinuxの普及率はまだまだ低いが、ヨーロッパではlinuxのdriverの需要があるということなのだろうか。

Read more...

the new element

コペルニシウム
知人から新しい周期表を頂いたので、いろいろと調べていたら、約5年ぶりに新しく元素名が決まったらしいことが分かった。112番元素で、coperniciumという名称になった。ちなみに、ハングルでは코페르니슘である。元素記号はCnである。このことについて話をしていたら、有機物質と紛らわしいのではないかという意見があった。つまり、CnH2nとなっていたときに、CnH2nなのか、CnH2nなのかということである。2n個水素のついたコペルニシウムというのもなかなか無いだろうが。 新しい元素名が決まると、Homepageに載せているすべての周期表を書き換える必要がある。現在は14種類だが、今回は15種類にする予定である。まだ、いくつかの言語での元素名が分からないので、調べなければいけない。

Read more...

epsの切り出し

Imagemagickでのepsへの変換
latexで図が必要なときには、epsを用いる。自分で図をつくる場合は、出力形式をepsにすれば良いが、別のところから図を取ってくる場合には、epsに変換する必要がある。画像を扱うときに非常に便利なのがImagemagickである。pdfからepsを作るときには、しばしばconvertを使っていたのだが、なぜか画質が落ちてしまうので、苦労していた。ようやくその理由が分かった。デフォルトでは、解像度が72となっているらしい。何も指定しなければ、元の画像の解像度を利用するのかと思っていたのが間違いらしい。pdfから直接だと不安だったので、psに直してから、こんな感じで解像度を指定して切り出したらうまくいった。

convert -density 288 -crop 960x680+1200+400 original.ps output.eps

pdfやpsの中に含まれている図の解像度を調べる方法が分かれば、その解像度を指定して切り出すと、元の情報を失わないようにできるのだが。

Read more...

Rとlatex

latexの式をepsに
グラフを書くときにはRを使っているが、Rで書いたグラフの欠点の一つに、数式などの表記が美しくないという点が挙げられる。expressionとpasteを使えば、いろいろな式を表現することができるが、見栄えがあまり良くない。psfragを使うとRで書いたグラフにlatexの文字を埋め込むことができるようなので、試してみた。まず、比較のためにRでグラフを書いてみる。

x<-seq(from=0, to=7, by=0.01)
y<-sin(x)
xl<-c(0,2*pi)
yl<-c(-1,1)
X11(width=100/25.4,height=80/25.4)
par(bg=rgb(0.99,0.99,0.99),fg="black")
par(tcl=0.5,xaxs="i",yaxs="i")
par(mar=c(3,4,1,1))
par(las=1,ps=11)
plot(x,y,type="l",xlim=xl,ylim=yl,ann=FALSE,axes=FALSE)
box()
axis(1,at=c(0,pi,2*pi),labels=c(0,expression(pi),expression(2*pi)),padj=-1)
axis(2,labels=TRUE)
axis(3,at=c(0,pi,2*pi),labels=FALSE)
axis(4,labels=FALSE)
mtext(expression(italic(x)),side=1,line=2)
mtext(expression(italic(y)),side=2,line=3)
text(4,0.5,expression(paste(italic(y),"=",sin," ",italic(x))))
dev.copy2eps(file="sin.eps")

最近は、こんな感じで書いたグラフをepsにして、latexに取り込んでいる。いよいよpsfragで処理するために、もとになるepsを作る。

x<-seq(from=0, to=7, by=0.01)
y<-sin(x)
xl<-c(0,2*pi)
yl<-c(-1,1)
X11(width=100/25.4,height=80/25.4)
par(bg=rgb(0.99,0.99,0.99),fg="black")
par(tcl=0.5,xaxs="i",yaxs="i")
par(mar=c(3,4,1,1))
par(las=1,ps=11)
plot(x,y,type="l",xlim=xl,ylim=yl,ann=FALSE,axes=FALSE)
box()
axis(1,at=c(0,pi,2*pi),labels=c("l1","l2","l3"),padj=-1)
axis(2,labels=TRUE)
axis(3,at=c(0,pi,2*pi),labels=FALSE)
axis(4,labels=FALSE)
mtext("x",side=1,line=2)
mtext("y",side=2,line=3)
text(4,0.5,"title")
dev.copy2eps(file="sintex.eps")

これはほとんど同じなのだが、文字は置き換えるために、単純な文字列にしている。そして、このepsをpsfragを使ってlatexで処理する。

\documentclass[11pt]{jarticle}
\usepackage[dvips]{graphicx}
\usepackage{psfrag}
\pagestyle{empty}
\begin{document}
\psfrag{title}{$y=\sin x$}
\psfrag{x}{$x$}
\psfrag{y}{$y$}
\psfrag{l1}{$0$}
\psfrag{l2}{$\pi$}
\psfrag{l3}{$2\pi$}
\includegraphics{sintex.eps} 
\end{document}

このファイルをplatex, dvips, ps2epsで処理すると、文字がlatexの文字で置換されたepsファイルができる。このdiaryには基本的には図は載せないことにしているので、見せることができないが、出来上がった二つの図を比較してみると、やはりlatexの文字は綺麗だと感じる。ただし、y軸の数字は置換していないので、Rのフォントになってしまっていて、少し違和感がある。picture環境で図と文字を配置しても同じようなことができる気もするが、psfragも有用な手法だと感じる。

Read more...

SCSI機器の接続

電源を切らずにSCSI機器を接続、切断
久しぶりにMOを使うことになったが、MOを読めるPCが無かったので、SCSIを積んだlinuxマシンでMOを認識させることにした。MOの電源を入れて再起動すれば、使えるのだが、できれば電源を切りたくない。Windowsの場合には、ハードウェアの再認識をさせれば良いのだが、linuxでどうやるのか知らなかったので、調べてみたら、やはり方法はあるようだ。 まずは、scsiaddとlsscsiをインストール。

sudo scsiadd -s

を実行すると、

Host: scsi0 Channel: 00 Id: 01 Lun: 00

で認識された。そこで、

sudo scsiadd -a 0 0 1 0

とすると、無事MOの認識に成功した。取り外すのも簡単である。まずはlsscsiを実行すると、

[0:0:1:0]    *************  /dev/sda

などと表示されるので、

sudo scsiadd -r 0 0 1 0

を実行して、MOの電源を切れば良い。 これでMOを手軽に使えるようになった。

Read more...

wineのシリアルポート

最近のwineは未対応なのか
windowsからシリアルポート(RS232C)を使って装置をコントロールするプログラムがあったのだが、古いwindowsはサポートが切れてきたし、networkにつなぐのは不安なので、wineを使ってlinux上で動かしていた。数年前にセットアップしたものだったので、debian etchぐらいで動いていたのだと思う。そろそろOSを新しくしようと思ってLennyにしてみたが、肝心のプログラムが動かなくなってしまった。色々と調べていたら、比較的新しいwineではシリアルポートが動かなかったとかいう報告があった。プログラムが動いていた古いwineを

wine --version

で確認するとwine-0.9.25だった。一方、lennyのものは1.0.1のようだ。原因はよく分からないし、シリアルポートを使っている人は少なくなってしまったのか、インターネット上でもあまり情報が見つからなかったので、古いwineをコンパイルしてインストールすることにした。とりあえず、以前と同じversionのソースを取ってきて展開してREADMEを読むと、

../tools/wineinstall

とすると、簡単にインストールしてくれるようだ。何度もパッケージが無いと警告されて、その度に必要なパッケージをインストールたが、結局build-essential,flex,bison,libx11-dev,libxext-devを入れたら、無事インストールできた。さて、問題のプログラムはというと、無事に起動した。つまり、新しいwineだとシリアルポートをきちんと扱えていないということなのだろう。どのversionからダメになったのだろうか。その後、他の人が使い易いように設定をしたりしていたが、なぜかnetworkが認識できていないことに気がついた。まあ、どうせ四月になったら別のPCに入れ替えるつもりだったし、まあいいか。

Read more...

rubyで順列

permutation
ruby1.9では、いろいろと新しいmethodが追加されている。arrayには、順列や組み合わせを生成するメソッドが新しくできていて、いつか使おうと思っていた。文字列を組み合わせた文字列を生成する必要があったので、やってみた。

parts=["a","b","c","d"]
parts.permutation.to_a.each{|a|
puts a.join("")
}

これをruby1.9で動かせば、すべての場合が表示される。

Read more...

mini10vの無線LAN

一通りの設定が終了
mini10vのsetupの最終段階として、wifiが使えるようにした。DebianWikiにしたがって、32bit用のdriverのsourceを落としてきて、tar xzfで展開して、

make
sudo cp wl.ko /lib/modules/2.6.26-2-686/kernel/net/wireless
sudo depmod

として、driverをインストール。iwconfigで確認すると、eth1になっていたので、wicdの設定を変更すると、無事に使えるようになった。

Read more...

lennyのtouchpadの設定

synclientを使えるように
mini10vのtouchpadの設定をしたかったのだが、SHMConfigを有効する方法がなかなか分からなくて悪戦苦闘した。ubuntuではhalで設定したが、debianでは違うようだ。/etc/X11/xorg.confを編集するしかないようだったので、いろいろと試したり、調べたりしていたが、結局次のようにするとsynclientが動くようになった。まず、ServerLayoutを書く。

Section "ServerLayout"
	Identifier	"Layout1"
	Screen		"Default Screen"
	InputDevice	"Generic Keyboard"	"CoreKeyboard"
	InputDevice	"Synaptics Touchpad"	"CorePointer"
EndSection

次に、mouseのところをsynapticsと書き換える。

Section "InputDevice"
#	Identifier	"Configured Mouse"
#	Driver		"mouse"
	Identifier	"Synaptics Touchpad"
	Driver		"synaptics"
	Option		"SHMConfig"	"true"
EndSection

これで、ようやくいろいろと設定できるようになった。synclientで設定してもよいし、Optionで指定すれば、touchpadの挙動を変えることができる。

Read more...