SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|

2009-10-02(Fri) ナビホーク再帰港

  間に「シルバーウィーク」などという、大型連休が挟まり、修理が1週間ほど遅延したが、ようやく愛用の時計が帰ってきた。一説には、この連休、毎年のように存在するわけではないことから、希少性の意味も含め「プラチナウィーク」などとも呼ばれるらしいが、オイラにとっては「チタニウムウィーク」以外の何モノでもない。いやぁ、左腕がサミしいったらなかったよ。

  画像の説明

  依頼通り、ガラスとベルトが交換され、交換前のガラスとベルトも返してもらえた。いや、意外とこういう、ややイレギュラな依頼って、スルーされたりするもんなんだよね。

  画像の説明

  しかし、新しいベルトと、古い元のベルトの歴然たる違いには驚かされた。いやもう、光り方が全然違うのだ。古い方は、思いっきり、テッカテカである。それに比べ、新しい方の、品のいい、鈍い光り方といったらない。新品だったときは、こうだったのか、と思い出される。

  別に、ガラスもベルトも元のままでも十分で、必ずしも交換する必要はなかったが、なんとなく、予備パーツとしても利用できるし、などと思って交換を依頼したのだが、この違いを楽しめた、というだけでも、ちょっと奮発した甲斐があった気がする。

  ベルトはともかく、ガラスの交換は高くない、という知見を得たのも有用だった。2,000円なら、キズがついても、ぜんぜんヘコむことはないのだ。次の電池交換の時にでも交換しよう、と思っていればいいのである。

  しかし、現行モデルのナビホークは、エコ・ドライブだのなんだので、電池交換不要らしい。んが、それはそれで「電池交換に出す楽しみもない」と考えてしまうのは、ちょっとひいき目過ぎるかな。


2009-10-10(Sat) コイツ、動くぞッ!!

  休みの日。なんとなく、ガキをつれて、近所の東山動物園に遊びに行った。

  ここは、遊園地が併設してあるのだが、まるで時間が止まっているかような場所だ。オイラが子供の頃、楽しくて仕方なかった「スロープシューター」という、斜面を転がり下りるだけのジェットコースターが、いまだ健在。2歳から乗れるというヌルさなのだが、ガキのイッペイも、お気に入りだ。このイキオイなら、イッペイのガキも楽しめそうな気がするぞ。

  それはさておき、これまた、モノスゴイものを発見した……

  こッ、これは、あの連邦のッ!!

  画像の説明

  しッ、しかも、コイツは動くぞッ!!

  画像の説明

  ある意味、お台場のブツを遙かに超えるインパクト。サッと完成したかと思ったら、サッと撤去されてしまったアイツとは、貫禄が違うのだよ、貫禄がッ!!

  等身大以上の大きさで、実際に乗れるガンダムというのは、日本にも数少ないはずだ。これこそ、真の「ガンダム・ザ・ライド」。ガンダムを操縦したいヤツは、名古屋の東山動物園に急げッ!!


2009-10-17(Sat) ThinkPad T500、Fedora12Alpha、チカチカ、チラチラ、ムキーッ!!

  新兵器「ThinkPad T500」はすこぶる好調ッ!! ……と、いいたいところだが、実のところ非常に問題がある。それは、LCDパネルがチラつくこと。

  画像の説明

  実は、この問題、使い始めた初日から気づいていたのだが、どうせ、バックライトの初期不良だろう……と、そのうち修理を依頼するつもりで、そのまま使っていたのだった。なにせ、その症状は、まさにバックライトの蛍光管のチラつきのようであり、気になるか、気にならないかといえば……いや、やっぱり気になるッ!! っという程度の、実にアナログ的なチラつきだったからである。

  しばらくして、Lenovoに症状をメールした。すると、定型文のような「BIOSをリセットして……」みたいな回答。アホか。こんなの、蛍光管のチラつきに決まってんじゃねーか……と、思いつつも、念のため、BIOS画面に移行……ん? アレ? チラついてないように見える……カミさんにも見てもらう……やっぱりチラついては見えない? よね……まさか……ベイアダプターからVistaを起動してみる……な、なにッ!? チラついて見えないッ!? ソフトウェア……Linuxのせいなのかよッ!?

  別に、Linuxの、しかもアルファ版に、安定して動くことなど期待していないが、こんな微妙な症状がソフトウェア要因だということに驚かされた。

  しばらくそのまま使っていると、症状の特性が見えてくる。特定の色域でのみで目立つこと。負荷が高いと出ないこと。とはいえ、解決策がわかるわけがない。Xのドライバなんだろうか?

  今回、IntelのSSDでExt4を使うに当たって、いろいろ情報を仕入れていたので、Ext3/4の中心開発者であるTed氏に注目していたのだが、偶然にカーネル開発のメーリングリスト(LKML)で、彼がこんなスレッドを起こしているのに気づいた。

Subject	2.6.32 regression (bisected): Video tearing/glitching with T400 laptops
From	"Theodore Ts'o" <>
Date	Fri, 02 Oct 2009 18:40:27 -0400
 
Hi, 
 
In recent kernels, my X display (running with a KMS-enabled X server)
has been very jittery and with lots of glitching and tearing --- sorry
if this isn't the correct technical term, not sure what it is --- on my
T400 Lenovo laptop.   It seems related to what is on the desktop, and
moving the mouse does seem to affect the rate and percentage of the
screen which jitters --- which is enough to be very distracting,
although I can still read the contents of the windows where the screen
is tearing/glitching/flashing.
 
<以下、略>

  英語である上に、彼自身「表現が微妙ですまん」と言っているだけあって、症状が同じかどうかはわからないが、T400とT500は、同じIntelのGM45チップセットだし、ドライバはi915だし……って、スレッドを追っていくと、どうも、カーネルドライバの不具合らしい。しかも、少しは減ったけど直らない……だって?

  パッチらしきものが提案されていたので、Fedora12の最新カーネルソース「kernel-2.6.31.1-56.fc12.src.rpm」をビルドしてみたが、パッチを当てるべきコードがみつからない。そんなにガンガンと開発してる場所なのかよ……どーしよ。なんか、どーにもならないとわかったら、チラつきがますます気になり始めちゃったよ。

  苦し紛れに、Fedora11の最新カーネルを入れてみる。

zakato.itline.jp:/root # rpm -ivh --olgpackage kernel-2.6.30.8-64.fc11.x86_64.rpm

  あ、あれ? 収まった。なんだ、それだけのことかよ。特に問題なく使えるようだ。

  しかし、さすがにFedora12はアルファ版だけあって、ボロボロだ。メインメニューはアイコンが出ないし、壁紙は変更できないし、RhythmboxはiPodへの転送に失敗するし、Inkscapeは文字を入れようとしただけで落ちるし、Bluetoothはマウスの動きが3秒ごとに引っかかるし……あ、Operaが片側のCPUを100%使って離さない……これは、Operaか、Flashか、誰のせいかわからんが。

  まぁ、それでも問題なく使えるようになってきたので、改めて変なシールどもを剥がす。クソ、こんなもん勝手に貼るな。ワシはWindowsなんて使わないんじゃ!!

  画像の説明

  一時期、各メーカーがOSレスでも売っていたような気がするのだが、アレは気のせいだったのかな。最近は、Linuxモデルもポツポツ出てきたとはいえ、選択の幅は狭い。まったく、余計なモノを強要されるのは、ホント腹立たしいわい。


2009-10-19(Mon) 続・T500、ムキーッ!!

  前回、Fedora11のカーネルで問題ないと書いたが、どうも、サスペンドからの復帰がうまくいかないようで、問題はありのようだ。まぁ、IntelのSSDパワーで、起動には20秒しか要しないので、別に問題ないのだが。

  それはそうと、Red Hat Bugzillaにチラつきに関する問題が報告されているのを確認した。

  それにしても、T400のが人気あるんかな。Google先生に聞いてみても、T500とは、ヒット率に倍半分ぐらいの差があるんだが……。


2009-10-20(Tue) 続々・T500、ムキーッ!!

  そういえば、先日「FedoraのAlphaはボロボロだ。Bluetoothはマウスの動きが3秒ごとに引っかかるし」と書いたが、これまた、Bugzillaに報告があり、どうやらカーネル要因らしい。

  なんだか、31カーネルはレグレッションが多いね。いまでも、そんなとこまで、ビシバシと改良が進められているものかね。

  31カーネルでは、引っかかって使い物にならなかったので、マウスはしばらく仕舞ってあったのだが、先日のチラつきの件で30カーネルに変更したので、改めてマウスを出してみると、バッチリ動いた。なんじゃ、これは。サスペンドからの復帰はできないが、痛し痒しというやつか。

  そういえば、今日はFedora12betaのリリース日だ。でも、いずれの問題も、さすがに直ってないっぽいなぁ。

  フツーのユーザは、LKMLやBugzillaを見てないだろうから、この辺の様子を間違いなく知らない。Fedora12のFinalリリースまでに直らないと、Fedoraの評価が落ちそうで心配だ。


2009-10-22(Thu) 週刊「メーラを作る」

  突然、再度自製のメーラ「mave」を書き直したくなってきた。

  オイラは、初期バージョンのmaveを、日頃の実務でバリバリと使っている。数万件のメールを溜め込んでも、全く速度が落ちないというスケーラビリティは、なかなか他のメーラで代え難い特徴だ。他にも見たこともないような便利機能もいくつかあり、実際、これを超えるメーラはないと思っている(自分で作ったから当然)。

  しかしながら、致命的なバグはないものの、既にコードがスパゲッティ化してしまっていて、さらなる改良を施す気が起きない。いまどき、EUC専用というのも気分が悪い。

  というわけで、早速、はじめる。とりあえず、RubyのcursesライブラリをUTF-8(ncursesw)対応にすべくパッチを当てる。単に私の試行錯誤の結果なのだが、以前、ここで記事にしたような気がするものの、サッパリ記録が見つからない。あちこちの環境に、パッチが当たっているライブラリが転がっているのは見つかったが、方法が書いてない。さらに、あちこちの環境を探したら、ようやくノウハウが発掘できた。なんだ、こんだけのことか。

zakato.itline.jp:/root # yum install ruby
  更新           : ruby-libs-1.8.6.369-5.fc12.x86_64                                                                                                       1/4 
  更新           : ruby-1.8.6.369-5.fc12.x86_64                                                                                                            2/4 
 
zakato.itline.jp:/root # wget http://mirrors.kernel.org/fedora/development/source/SRPMS/ruby-1.8.6.369-5.fc12.src.rpm
 
 ※ yumdownloader --source ruby でも可
 
zakato.itline.jp:/root # rpm -ivh ruby-1.8.6.369-5.fc12.src.rpm 
 
zakato.itline.jp:/root # rpmbuild -bp rpmbuild/SPECS/ruby.spec 
エラー: ビルド依存性の失敗:
	compat-readline5-devel は ruby-1.8.6.369-5.fc12.src に必要とされています
	tcl-devel は ruby-1.8.6.369-5.fc12.src に必要とされています
	tk-devel は ruby-1.8.6.369-5.fc12.src に必要とされています
 
zakato.itline.jp:/root # yum install compat-readline5-devel tcl-devel tk-devel
 
zakato.itline.jp:/root # rpmbuild -bp rpmbuild/SPECS/ruby.spec 
 
zakato.itline.jp:/root # cd rpmbuild/BUILD/ruby-1.8.6.369/
 
zakato.itline.jp:/root/rpmbuild/BUILD/ruby-1.8.6.369 # find . -name "*curse*"
 
zakato.itline.jp:/root/rpmbuild/BUILD/ruby-1.8.6.369 # cd ./ruby-1.8.6-p369/ext/curses
 
zakato.itline.jp:/root/rpmbuild/BUILD/ruby-1.8.6.369/ruby-1.8.6-p369/ext/curses # ruby extconf.rb 
can't find header files for ruby.
 
zakato.itline.jp:/root/rpmbuild/BUILD/ruby-1.8.6.369/ruby-1.8.6-p369/ext/curses # yum install ruby-devel
 
zakato.itline.jp:/root/rpmbuild/BUILD/ruby-1.8.6.369/ruby-1.8.6-p369/ext/curses # ruby extconf.rb 
 
zakato.itline.jp:/root/rpmbuild/BUILD/ruby-1.8.6.369/ruby-1.8.6-p369/ext/curses # make
 
  1 #!/usr/bin/ruby
  2 
  3 require "curses"
  4 
  5 Curses.init_screen
  6 begin
  7   s = "こんにちは、世界!"
  8   Curses.setpos(Curses.lines / 2, Curses.cols / 2 - (s.length / 2))
  9   Curses.addstr(s)
 10   Curses.refresh
 11   Curses.getch
 12 ensure
 13   Curses.close_screen
 14 end
 
�~A~S�~B~S�~A��~A��~A��~@~A��~V�~U~L!
 
zakato.itline.jp:/root/rpmbuild/BUILD/ruby-1.8.6.369/ruby-1.8.6-p369/ext/curses # diff -c curses.c.org curses.c
*** curses.c.org	2007-02-13 08:01:19.000000000 +0900
--- curses.c	2009-10-22 23:11:20.815314129 +0900
***************
*** 15,20 ****
--- 15,21 ----
  
  #include "ruby.h"
  #include "rubyio.h"
+ #include "locale.h"
  
  #if defined(HAVE_NCURSES_H)
  # include 
***************
*** 1441,1446 ****
--- 1442,1449 ----
  void
  Init_curses()
  {
+ 	setlocale(LC_ALL, "");
+ 
      mCurses    = rb_define_module("Curses");
      mKey       = rb_define_module_under(mCurses, "Key");
  
 
zakato.itline.jp:/root/rpmbuild/BUILD/ruby-1.8.6.369/ruby-1.8.6-p369/ext/curses # diff -c extconf.rb.org extconf.rb
*** extconf.rb.org	2008-06-08 03:59:34.000000000 +0900
--- extconf.rb	2009-10-22 23:12:26.452314410 +0900
***************
*** 1,15 ****
  require 'mkmf'
  
  dir_config('curses')
! dir_config('ncurses')
  dir_config('termcap')
  
  make=false
  have_library("mytinfo", "tgetent") if /bow/ =~ RUBY_PLATFORM
  have_library("tinfo", "tgetent") or have_library("termcap", "tgetent")
! if have_header(*curses=%w"ncurses.h") and have_library("ncurses", "initscr")
    make=true
! elsif have_header(*curses=%w"ncurses/curses.h") and have_library("ncurses", "initscr")
    make=true
  elsif have_header(*curses=%w"curses_colr/curses.h") and have_library("cur_colr", "initscr")
    curses.unshift("varargs.h")
--- 1,15 ----
  require 'mkmf'
  
  dir_config('curses')
! dir_config('ncursesw')
  dir_config('termcap')
  
  make=false
  have_library("mytinfo", "tgetent") if /bow/ =~ RUBY_PLATFORM
  have_library("tinfo", "tgetent") or have_library("termcap", "tgetent")
! if have_header(*curses=%w"ncurses.h") and have_library("ncursesw", "initscr")
    make=true
! elsif have_header(*curses=%w"ncurses/curses.h") and have_library("ncursesw", "initscr")
    make=true
  elsif have_header(*curses=%w"curses_colr/curses.h") and have_library("cur_colr", "initscr")
    curses.unshift("varargs.h")
 
zakato.itline.jp:/root/rpmbuild/BUILD/ruby-1.8.6.369/ruby-1.8.6-p369/ext/curses # ruby extconf.rb
 
zakato.itline.jp:/root/rpmbuild/BUILD/ruby-1.8.6.369/ruby-1.8.6-p369/ext/curses # make
 
zakato.itline.jp:/root/rpmbuild/BUILD/ruby-1.8.6.369/ruby-1.8.6-p369/ext/curses # cd /usr/lib64/ruby/1.8/x86_64-linux
 
zakato.itline.jp:/usr/lib64/ruby/1.8/x86_64-linux # mv curses.so curses.so.org
 
zakato.itline.jp:/usr/lib64/ruby/1.8/x86_64-linux # cp /root/rpmbuild/BUILD/ruby-1.8.6.369/ruby-1.8.6-p369/ext/curses/curses.so .
 
こんにちは、世界!

  一週間ごとにモジュールを足していって、メーラを完成するという企画はどうだろう。ディアゴスティーニみたいに。この創刊号はバインダがついて、特別価格790円……なんてな。

  追記: Fedora16においても本手法が有効であることを確認。


2009-10-23(Fri) OpenSuSEのRubyもncursesw化する

  ほとんど同じだけれども、一応、SuSEの手順も記録しておく。

opensuse-11.1:/root # cat /etc/SuSE-release 
openSUSE 11.1 (x86_64)
VERSION = 11.1
 
縁起物なので、YaSTでRubyパッケージを「ruby-1.8.7.p72-5.4.1」にアップデートする。
 
opensuse-11.1:/root # wget http://download.opensuse.org/source/distribution/11.1/repo/oss/suse/src/ruby-1.8.7.p72-5.3.src.rpm
 
opensuse-11.1:/root # rpm -ivh ruby-1.8.7.p72-5.3.src.rpm 
 
opensuse-11.1:/root # rpmbuild -bp /usr/src/packages/SPECS/ruby.spec 
error: Failed build dependencies:
	gdbm-devel is needed by ruby-1.8.7.p72-5.3.x86_64
	gperf is needed by ruby-1.8.7.p72-5.3.x86_64
	readline-devel is needed by ruby-1.8.7.p72-5.3.x86_64
	tk-devel is needed by ruby-1.8.7.p72-5.3.x86_64
 
YaSTで各パッケージを導入。こういうトコが、GUIって、却って面倒いな。
 
opensuse-11.1:/root # rpmbuild -bp /usr/src/packages/SPECS/ruby.spec 
 
opensuse-11.1:/root # cd /usr/src/packages/BUILD/ruby-1.8.7-p72/
 
opensuse-11.1:/usr/src/packages/BUILD/ruby-1.8.7-p72 # cd ext/curses/
 
opensuse-11.1:/usr/src/packages/BUILD/ruby-1.8.7-p72/ext/curses # ruby extconf.rb 
mkmf.rb can't find header files for ruby at /usr/lib64/ruby/ruby.h
 
YaSTで「ruby-devel」を導入。
 
opensuse-11.1:/usr/src/packages/BUILD/ruby-1.8.7-p72/ext/curses # ruby extconf.rb 
 
opensuse-11.1:/usr/src/packages/BUILD/ruby-1.8.7-p72/ext/curses # make
 
opensuse-11.1:/usr/src/packages/BUILD/ruby-1.8.7-p72/ext/curses # diff -c curses.c.org curses.c
*** curses.c.org	Fri Oct 23 20:35:30 2009
--- curses.c	Fri Oct 23 20:47:21 2009
***************
*** 15,20 ****
--- 15,21 ----
  
  #include "ruby.h"
  #include "rubyio.h"
+ #include "locale.h"
  
  #if defined(HAVE_NCURSES_H)
  # include 
***************
*** 1441,1446 ****
--- 1442,1449 ----
  void
  Init_curses()
  {
+ 	setlocale(LC_ALL, "");
+ 
      mCurses    = rb_define_module("Curses");
      mKey       = rb_define_module_under(mCurses, "Key");
 
opensuse-11.1:/usr/src/packages/BUILD/ruby-1.8.7-p72/ext/curses # diff -c extconf.rb.org extconf.rb
*** extconf.rb.org	Fri Oct 23 20:35:30 2009
--- extconf.rb	Fri Oct 23 20:40:12 2009
***************
*** 1,15 ****
  require 'mkmf'
  
  dir_config('curses')
! dir_config('ncurses')
  dir_config('termcap')
  
  make=false
  have_library("mytinfo", "tgetent") if /bow/ =~ RUBY_PLATFORM
  have_library("tinfo", "tgetent") or have_library("termcap", "tgetent")
! if have_header(*curses=%w"ncurses.h") and have_library("ncurses", "initscr")
    make=true
! elsif have_header(*curses=%w"ncurses/curses.h") and have_library("ncurses", "initscr")
    make=true
  elsif have_header(*curses=%w"curses_colr/curses.h") and have_library("cur_colr", "initscr")
    curses.unshift("varargs.h")
--- 1,15 ----
  require 'mkmf'
  
  dir_config('curses')
! dir_config('ncursesw')
  dir_config('termcap')
  
  make=false
  have_library("mytinfo", "tgetent") if /bow/ =~ RUBY_PLATFORM
  have_library("tinfo", "tgetent") or have_library("termcap", "tgetent")
! if have_header(*curses=%w"ncurses.h") and have_library("ncursesw", "initscr")
    make=true
! elsif have_header(*curses=%w"ncurses/curses.h") and have_library("ncursesw", "initscr")
    make=true
  elsif have_header(*curses=%w"curses_colr/curses.h") and have_library("cur_colr", "initscr")
    curses.unshift("varargs.h")
 
opensuse-11.1:/usr/src/packages/BUILD/ruby-1.8.7-p72/ext/curses # make distclean
 
opensuse-11.1:/usr/src/packages/BUILD/ruby-1.8.7-p72/ext/curses # ruby extconf.rb
 
opensuse-11.1:/usr/src/packages/BUILD/ruby-1.8.7-p72/ext/curses # make
 
opensuse-11.1:/usr/src/packages/BUILD/ruby-1.8.7-p72/ext/curses # cd /usr/lib64/ruby/1.8/x86_64-linux
 
opensuse-11.1:/usr/lib64/ruby/1.8/x86_64-linux # mv curses.so curses.so.org
 
opensuse-11.1:/usr/lib64/ruby/1.8/x86_64-linux # cp /usr/src/packages/BUILD/ruby-1.8.7-p72/ext/curses/curses.so .
 
  1 #!/usr/bin/ruby
  2 
  3 require "curses"
  4 
  5 Curses.init_screen
  6 begin
  7   s = "こんにちは、世界!"
  8   Curses.setpos(Curses.lines / 2, Curses.cols / 2 - (s.length / 2))
  9   Curses.addstr(s)
 10   Curses.refresh
 11   Curses.getch
 12 ensure
 13   Curses.close_screen
 14 end
 
こんにちは、世界!

2009-10-27(Tue) 祝、X25-M、新ファーム登場!!

  ではでは、早速……

zakato.itline.jp:/root # smartctl -a  /dev/sda
smartctl version 5.38 [x86_64-redhat-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
 
=== START OF INFORMATION SECTION ===
Device Model:     INTEL SSDSA2M080G2GC
Serial Number:    CVPO9263007Z080BGN
Firmware Version: 2CV102G9
User Capacity:    80,026,361,856 bytes
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   7
ATA Standard is:  ATA/ATAPI-7 T13 1532D revision 1
Local Time is:    Tue Oct 27 23:23:23 2009 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

  ……当てません。現バージョンは2CV102G9、新バージョンは2CV102HAとのことだが(ドゥシーボ?)、現状でも「たった20秒で起動する」という強烈な性能を発揮しているわけで、全然不満なんてあるわけないし、敢えて半分しか領域確保してないから、この先ずっとTRIMも必要ない。すぐに当てる必要なんてこれっぽっちもありはしないのだ。

  こういうのって、何日かして、あちこちから「うげー」とかいう声が聞こえてきたりすることも、まま、あるわけなので……最速でも、Fedora12のGAまでは待たせてもらいますわ。