lennyとxubuntu
lennyのPCManFileManagerでCDROMにアクセスしようとしたら、簡単にはできなかったので、結局コマンドからmountして使った。また、その後いろいろといじっていたら、ドライブの自動認識部分が死んでしまったようだ。どうやって復活させるのだろう。
別のPCだが、xubuntuでは、CDROMは自動で認識された。その当たりはubuntuの方がきちんとしているのだろうか。
lennyのxscreensaver
バグかな
PCを長時間使って無かったときには、xscreensaverが働いているが、lennyのものは、ときどきハングしているようだ。最初はlinux自体が止まったのかと思ったが、X無しでは動いていたので、別のターミナルからxscreensaverをkillしたら、動き出したので、おそらくxscreensaverがハングしていると結論した。etchの時にはこんなことは経験しなかったが、lennyになってからだろう。
SDへのxubuntuのインストール
2Gでぎりぎり
Windowsで動いているeeepc 901で、ubuntuも起動できるようにするために、SDにインストールを試みた。用意したのは2GのSD。これでは容量が足りないかも知れないとは思ったが、とりあえず決行。まずは、ubuntu9.04のnetbook remixを試したが、これはあっけなく容量不足で失敗。60%代でエラーが出る。xubuntuなら、1.5Gぐらいだという噂を見て、次に挑戦したが、あと一歩ということろで断念したが、とりあえずその記録をしておく。
まずは、xubuntuで、partitionerでSDを指すsdcを手動でext3の一つのファイルシステムにしてルートをマウントポイントとして指定する。これでとりあえずインストールは完了したのだが、二つ問題が生じた。
一つは、やはり容量の問題だ。インストール直後は問題なかったが、日本語環境を設定したら、SDの使用率が100%になってしまい、これ以上は無理と判断した。aptitude cleanをしたり、不要なapplicationを消したりしたが、なかなか厳しい。まずは、日本語を入れる前に、かなり容量を削って、そして日本語を入れるのが良いようだ。
次に問題だったのが、grubがSDDにインストールされてしまったことだ。普通は聞かれるだろうと思っていたが、何も聞かれずに無断にインストールされてしまった。よくよく調べてみると、advancedを選んで、grubをSDに入れるように指定すれば良いようだ。これは今度試してみよう。SD無しではWindowsが立ち上がらなくなってしまったので、どうしようと思っていたが、XpのCDROMで修復を行ったら、MBRを元に戻すことができた。具体的には、XpのCDROMから立ち上げて、修復を選択、Cを選んで、fixmbrを実行する。
まあ、この練習を踏まえて後日再挑戦する予定です。
プログラミング言語Ruby
1.8と1.9の違い
先日、図書室にいったら、rubyの本があったので、手に取ってみた。とりあえず、発行日を調べたら、今年の一月だった。けっこう新しいなと思って中を見てみたら、面白そうだったので、買ってみた。「プログラミング言語Ruby」という本で、著者には一応まつもとゆきひろが入っている。
少し読んでみたが、1.8と1.9に関しては、普通の拡張なのかと思っていたが、結構大きな変更があるようだ。特に文字列の操作に関しては、マルチバイト文字への対応の関係だと思うが、かなり変わっている。
"abc"[0]
とした場合に、ruby1.8だと、一文字目の文字コード97が返ってくるが、ruby1.9.0では、文字"a"が返ってくるらしい。しかし、debian etchのruby1.9だと97が返ってくるな。debian lennyとubuntu9.04のruby1.9.0だとちゃんと"a"になる。
rubyでbinaryを扱う場合には、この違いは非常に重要である。文字として取り出すときには、1.8では
"abc"[0,1] "abc"[0].chr
のようにしていたが、これらは1.9でも動くようだ。一方で、数字で取り出したいときには、1.9では
"abc".getbyte(0)
とするが、これは1.8では動かない。両方に互換性にある書き方をできないのかな。また、binaryを扱うときのopenの仕方も、
open("file.dat","rb") open("file.dat","r:binary")
と変わったようだ。"rb"でも動くようにしてくれないかな。
今後、binaryを扱うプログラムをどのようなコードで書くかを検討しないといけない。
2009/5/30追記 第一版のP110に間違いを見つけた。 「真」を「進」と書いているだけなのだが。
LXDE on xubuntuのnetwork
wicd
昨日インストールしたxubuntuであるが、xfceではあまり問題ないようだが、LXDEでは少し問題があることが分かった。ネットワークの設定ができないのだ。/etc/network/interfacesをいじれば良いかと思っていたが、このファイルにはloしか記述が無い。eth0とかはどこにあるのかと探してみたが、見つからない。
いろいろと調べていたら、network-managerがそのあたりの処理をやっているらしい。しかし、LXDEからの立ち上げ方が分からない。xfceで設定して、logoutしてLXDEに入ればうまく動いているようだが、これではまるで意味が無い。そこで、wicdを入れることにした。
wicdをインストールしようとすると、network-manager-gnomeがはずれるが、気にせずそのまま進めたら、うまくインストールされなかった。おそらく、wicdを取得する前に、networkが切断されたようだ。しかし、network-managerがアンインストールされているので、networkにつなげない。しかたがないので、/etc/network/interfacesを編集してから、立ち上げ直して、インストールしたらうまくいった。
panelにwicdを入れてそこから設定すると、うまくいっているようだ。無線LANにも問題無くつなげることができる。あとで自宅の固定IPにつなげるかを試してみよう。
2009/5/11追記 固定IPもうまく動いた。ただ問題なのは、DHCPと切り替えると、IPの情報が失われてしまうので、毎回IPを指定しないといけないことだ。どこかに設定が残っていないのかな。
xubuntu9.04をmini9に
4度めのOSの入れ替え
そろそろmini9のOSを変えたくなって、xubuntu9.04でLXDEにすることにした。
実際に作業する前に、これまでの環境で起動時間を測定。debian lennyのLXDEでは、電源のスイッチを押してから、ログイン画面が出るまでに42秒。実際には、grubが数秒待っているので、40秒といったところか。パスワードを打ってからが3秒ぐらいだった。ちなみに終了には20秒ぐらいを要した。
xubuntu-9.04-desktop-i386をdownloadしてから、CDに焼く。電源を入れて0を押してCDから立ち上げ、日本語を選択し、インストールを選んで開始。USAのキーボードを選んで、キーボードのテストをすると、Fnを使うキーのいくつかが入力できないが、気にせず続ける。swapを使わないようにするために、手動でパーティションをするが、このとき、ext2の方がSSDには良いらしいので、ext2をマウントポイントは/で選んで、swap無しという警告が出るのを確認して、インストールをスタート。
10分ほどでインストールが完了したので、とりあえず起動時間の測定。debianの楽々の勝利だと予想していたが、ログイン画面が出るまでは、33秒と速い。一方、パスワードを打ってからは18秒もかかった。ちなみに終了は17秒とあまり変わらない。
LXDEに入れ替えるために、aptitudeをupdateしてから、lxdeをインストール。もう一度、起動時間の測定。当然ログイン画面までは変わらないが、sessionをLXDEにすると、パスワードを打ってからは、3秒と高速。なかなか良い感じなので、自分なりのカスタマイズを。
まずは、基本的な設定。まずはパネルを右側に持っていく。外観の設定でフォントを7ポイントに。openboxの設定でappearanceのフォントをすべて7ポイントにし、desktopを四つにする。デスクトップ設定で壁紙を削除。terminalの設定の外観からフォントを7ポイントに。firefoxの表示をカスタマイズして、アドレスをメニューの横にもっていって、すべてのツールバーを削除。音がでるように、/etc/modprobe.d/alsa-base.confを以前の日記のように書き足す。
あとは日本語がつかえるようにする。manpages-jaをインストール。system toolsの中の言語サポートから、日本語をインストール。再起動すると、anthyから日本語が使えるようになる。
さて、残った問題はFnと共に押すキーである。一部は有効になっているのだが、これはハードウェアの問題だろう。押せない文字は~|\の四つだが、これらは比較的よく使うので、このままではいけない。
は全角半角として認識されているようで、どこかで日本語のキーボードという設定がされているらしい。dpkg-reconfigure xserver-xorgで設定しているとjp106となっていたが、これをpc101にしても、何も変わらない。結局、dpkg-reconfigure console-setupでpc101にして、再起動したらうまくいった。いったい、設定ファイルはどこにあるんだろう。
rubyのsymbol
シンボルクラス
ある文字列で指定されたメソッドを呼び出すときに、これまではevalを使って、
eval('"test".%s'%["size"])
などとしていた。evalはバグの原因になりやすいので、あまり使いたくはないのだが、これ以外の方法が分からなかったので、仕方なくそうしていた。 しかし、symbolというのを使うと、次のようにもっとスマートにできるようだ。
"test".send("size".to_sym) "test".send(:size)
文字列で管理していたものを、symbolで管理して、必要に応じて文字列に変換するようにすれば良いように思われる。 1.8.7では動いているが、いつからあったのだろう。クラスを定義していて、インスタンス変数を外部からアクセスするために、
attr_accessor :name
などと書いているときに、コロンはなんだろうと思ってはいたが、実はこれはシンボルを表すものだったのか。
ubuntu netbook remix
mini9でubuntu 9.04
ubuntuの9.04を試してみようと思って、どれかにしようか迷ったけど、netbook remixにした。SDにデータをバックアップして、日本のページにはnetbook用が無かったので、www.ubuntu.comからimgをdownloadして、フラッシュにimgを
dd if=ubuntu-9.04-netbook-remix-i386.img of=/dev/sda bs=1M
としてboot用にコピーした。 0を押してフラッシュから起動すると、インストールしないでも試してみれるようだったので、とりあえずそれを実行。読み込みに時間がかかるので、起動が遅いのはともかくとして、自分の期待したものとはあまりにも違っていて唖然。 まず、ランチャーみたいなのが全面に立ち上がって、それから抜けることができない。ターミナルも立ち上げるのに苦労した。ようやくクラシックスタイルを見つけて、それに変えてみたものの、こちらではターミナルさえ見つけることができずに断念。 良かった点としては、firefoxでFn+ZでF11を押すと、titleバーに加えてmenuバーまで隠せて、画面全体をbrowserとして使えたということがある。このあたりはgnomeがやっているのかな。LXDEではできないだろうか。 ubuntuの日本語remixも挑戦しようと思ったが、こちらはCD用でフラッシュからは起動できなかったので、保留。いずれにせよ、gnomeになってしまうので、これをなんとかしないといけない。xubuntuを入れてからLXDEにする方が良いのかな。それともminimalインストールが選択できると良いのだが。 まあ、mini9はもうしばらくはdebian lennyで行きそうだ。
2009/5/13追記 firefoxでF11を押すと画面全体をbrowserとして使えるようになるのは、firefox自身の機能のようだ。ただし、LXDEの場合にはopenboxがF11でtitle barを隠すというshort cutになっているので、それが働いてしまう。LXDEで使うときには、メニューの表示のところで、全画面を選ぶ必要がある。しかし、これは面倒なので、.config/openbox/lxde-rc.xmlを編集して、F11をF12に変えた。F12には何も割り当てられていないようだったので。F11を押すとfirefoxの全画面、F12でopenboxの全画面になるようになった。
ubuntu 9.04
ubuntu 9.04がリリースされた。
kernelは2.6.28らしい。xubuntuもほぼ同時にリリースされているので、mini9に入れてみようかな。LXDEに少しは慣れてきたので、LXDEで使えるとよいのだが。ubuntuはよく理解していないのだが、Desktop 日本語 Remixが良いのか、Netbook Remixにするべきなのかどうなんだろう。debianと同じ感覚で使えるとよいのだが。minimal installができるのであれば、それにLXDEとか日本語とかを入れていけば良い気がする。気が向いたらインストールしよう。
rubyでbinaryの解析
有効数字
まれに、binaryのデータを扱う必要が出てくる場合がある。データ構造が公開されている場合には問題無いのだが、それが公開されていない場合には、自分で解析する必要がある。
時々使用するある装置のデータはbinaryで保存されていて、普段はこれを付属のtoolでasciiにしている。この時の操作が面倒なので、以前に変換プログラムを書こうと思ったが、構造が分からずに挫折していた。最近、また思い立って解析を試みた。このとき、rubyのunpackを思い出して、これを使ったところ、最低限の解析に成功した。
整数の場合は、データの並びを見れば大体予想ができるが、今回は小数を扱っていたので、データを見てもいまいち分からなかった。結局、dataにbinaryを入れて、
p data.unpack("E")などとして、それっぽい数字が出てくるものを探していった。
最終的には、すべてのデータはdoubleで保存されていただけだったのだが、これは予想外だった。有効数字が6桁ぐらいしかないのに、floatでも十分なのだが。実際、asciiに変換したものの方がファイルサイズが小さくなっている。binaryで保存している意味が無いような気がする。データを解析する前に、このことに気がついていれば、doubleだと推定できたのかもしれないが、最初はfloatぐらいだろうと思って、いろいろと試していて、時間がかかってしまった。