変則的なデータ

rubyのsplit
データを処理するプログラムをrubyで書いていて、うまく動かないので調べてみたら、文字列をsplitするときに、予想と違う挙動をすることに気がついた。

"1,2,3,".split(/,/)

とすると、[“1”,“2”,“3”,""]となると思っていたのだが、[“1”,“2”,“3”]となっている。リファレンスを調べると、要素の最大数を第二引数に指定しないと、最後は無視されるようだ。さらにその数字に負の数を指定すると、要素の数はいくらでも取れるらしい。つまり、

"1,2,3,".split(/,/,-1)

とすると、私が期待する結果が得られる。 このことを知らなかったということは、これまで扱ってきた文字列は、比較的素直なものだけだったのだろう。

Read more...

pythonの学習

pythonの返り値
pythonの本を読んでいたら、新しいことを知った。C言語はどんな文でも、値を返す。これはperlやrubyでも同様であろう。pythonも当然そうだと思っていたのだが、違うらしい。例えば、

print a=1

とすると、invalid syntaxと言われてしまう。つまり、式とステートメントには明確な区別があるのである。まだまだpythonは知らないことが多い。

Read more...

やっとtdiaryを動かせた

ruby1.6.4でtDiary2.0.4
過去に、tdiaryは、ruby1.8.5とruby1.6.8で動かしたことがあった。1.6.8では、それほど苦労しなかったが、今回は1.6.4である。まず、uriが無いと言われるので、手元のPCのruby1.8の/usr/lib/ruby/1.8/の中のuri.rbとuri/をtdiary.rbと同じ場所に置いたらなんとか動くようになった。過去のデータを移動するために、.td2をすべてコピーしてくると、一応の体裁は整った。 しかし、実際に日本語を書き込もうとしたら、uconvが無いと言われる。今度はrbuconvをtdiaryのところに置いて、update.rbにrequire ‘rbuconv’を加えたら、書き込みも出きるようになった。 9年前のrubyをいまさら使わないといけなくなるとは思ってもいなかった。

Read more...

新しいhomepage

homepageの構築
ようやく、あたらしい環境でhomepageを作れるようになった。しかし、サーバーのrubyは1.6.4と古く、まだうまくtdiaryを動かすことができない。とりあえず、homepageを少しずつ作り始めた。まずは、昔のhomepageの中から、価値のありそうなデータを引っ越して、それから徐々に新しい形にしていこうと思う。同じものを作っても面白くないし。

Read more...

canonのプリンター

amd64でのプリンターの設定
以前、debianでcanonのプリンタードライバーが32bitしか対応していなくて、amd64では使えなかったことがあった。今回は、canonのMP640というプリンターに挑戦することになった。 まずは、ドライバーをcanon europeから取得する。 i386用のドライバーをtarで展開して、強引にインストールする。

sudo dpkg -i --force-architecture cnijfilter-common_3.20-1_i386.deb
sudo dpkg -i --force-architecture cnijfilter-mp640series_3.20-1_i386.deb 

そして、cupsの設定で、ppdを/usr/share/ppdから選んで設定する。今回は、これで無事印刷することができた。

Read more...

新しい職場のネットワーク

aptitudeのproxy
PCを新しいネットワークにつないでみたところ、IPはDHCPで取れているのに、ブラウザでは何も見れない。おかしいと思っていたら、proxyをかまさないといけないらしい。ブラウザはメニューから設定できたが、問題になったのが、aptitudeの設定だ。結局/etc/apt/apt.confに以下の二行のような感じで書いたらうまくいった。

Acquire::http::Proxy "http://proxy.ac.jp:8080/";
Acquire::ftp::Proxy "ftp://proxy.ac.jp:8080/";
Read more...

共用PCの言語

debian gnomeの言語設定
共用のPCとしてdebian lennyのgnomeを立ち上げた。とりあえず日本語を選択していたが、よく考えると外国人も使うことがある。言語を英語に変更しようとしたが、gnomeではどこで設定するのか分からない。いろいろと調べたら、gdmから選ぶことができるようだ。しかし、選択肢に英語が無い。 gnomeの設定ではやり方が分からなかったので、いつものようにターミナルからやることにした。dpkg-reconfigure localesとして、en-USを選択する。日本語もutf8になっていたので、英語もutf8にすることにする。そうすると、gdmでは英語が選択できるようになった。しかし、gdmの表示が日本語のままだし、gnomeが起動するときに少しエラーがでる。困ったので再起動してみたら、今度はうまく行った。gdmを再起動すれば良かったのかな。

Read more...

ubuntuを試す

wubiを使ってubuntuをインストール
windowsユーザーである知り合いが、linuxを試しに使ってみたいということだったので、wubiを勧めてみた。読み方が難しいくて、「うぅび」とでも言えば良いのだろうか。通常、windowsとlinuxをデュアルブートにするためには、windowsのパーティションを縮めて、空いた領域にlinuxをインストールする。しかし、パーティションをいじるときに、データを失う危険性があるので、なかなか勇気がいる。しかし、wubiではwindowsのpartitionの中にファイルを作って、それをHDDのイメージとして扱う。起動はwindowsのboot.iniの中で選択出きるようになっており、そこでubuntuを選ぶとlinuxが立ち上がる。 現在のバージョンは10.04のようなので、それをdownloadして実行してみると、途中でエラーが起こる。どうやらtorrentでインストールCDのイメージを取ろうとして失敗しているようである。同じフォルダにCDイメージを置いておけば良いということだったので、最新の10.10のイメージを置いたがダメだった。実はwubiのバージョンと同じubuntuを取ってこないといけないようだったが、それに気がつくまで、いろいろなイメージを落としてしまった。 インストールはあっさり終わってubuntuを起動すると、実際にそれからHDDイメージへのインストールが始まった。これも終わると、今度は実際にubuntuが立ち上がる。少し使用した感じだと、通常のインストールとほとんど変わらないように使える。ただ、windowsのpartitionを見にいけないようなので、linuxとwindowsの間でのデータ転送が面倒そうだ。 しかし、windowsユーザーにとっては、ubuntuを試してみる敷居を下げるという効果は十分に期待で切るのではないだろうか。

Read more...

MAL_OTORUN対策

データ移送用PC
測定用のPCから、USBメモリを用いてデータを取り出すときに、ウイルスに感染する危険性がある。この対策として測定用Windowsと通信用Linuxで外につながっていないネットワークを作ることにした。今日、通信用にするPCが届いたので、早速ネットワークを組んでみることにした。 PCのスペックはCore i3 550でメモリが2GとHDDが500Gである。ウイルス対策としては過大な性能な気もするが、そんなに高くなかったので良いだろう。これに、Debian Lennyのamd64をインストールした。少し古いインストールCDでインストールしようとしたら、CDROMがうまく認識されなかったので、netinst用を新たに焼いてインストールした。amd64だと、問題が生じるかも知れないと思っていたが、やはりxorgの部分で引っかかった。いろいろと試した結果、HorizSync, VertRefreshとModesを適切に設定したらうまくいった。amd64のxorgはまだ設定が素人向けではないようだ。 そして、ネットワークを固定IPにするために、ifdown eth0で一旦ネットワークを停止した後に、/etc/network/interfacesを編集してdhcpからstaticにして、ifup eth0でもう一度ネットワークを開始した。 最後がsambaの設定である。まずwindows側で共有を許可する。このやり方がversionによって、少し違っていたので苦しんだが、結局network wizardを使って、共有を許可するようにすると、簡単に共有ができるようになった。そして、linux側は、smbfsをインストールして、/etc/fstabにwindowsマシンの特定のフォルダーを自動でマウントするように書いておく。 これで、一応のセットアップが終わったが、CDRでデータを持ち運ぶ人も居るかもしれないので、CDRが焼けるようにbraseroでもaptitude install braseroでインストールしておいた方が良いだろう。FDDも誰か使う可能性があるかなと思って、マザーボードを見ると、FDD用のコネクタが無い。ついでにIDEも無くなっている。外には出ていなかったが、COMとprinterポートのピンはあったのは、少し安心感を誘う。もう、FDDも過去のものになりつつあるのだろう。FDDはUSBで外付けするか、今回は見送ることにしよう。

Read more...

実験中の簡単な計算

スクリプト言語を用いた計算
UNIXマシンを使って測定をしていたが、arctanを計算する必要が出てきた。手元に適切な計算機が無かったので、スクリプト言語を使って計算することにした。perl,ruby,pythonを調べると、予想通りrubyは無かった。perlとpythonで実行を試みたが、うまくいかなかった。しかたが無いので、別のマシンにloginしてrubyで実行した。

puts Math::atan(1.0/20)/3.141592*180
puts Math::atan2(1.0,20)/3.141592*180

折角なので、perlやpythonでどうやるのか復習してみた。perlではatanは無いようなので、atan2を使って次のようにする。

print atan2(1.0,20)/3.141592*180,"\n";

pythonでは、mathモジュールを組み込む必要があるようだ。

import math
print math.atan(1.0/20)/3.141592*180
print math.atan2(1.0,20)/3.141592*180

しかし、よく考えると、xcalcを使えば良かったということに気がついた。

Read more...