バイクを停めて、手順を示した表示を探す。見つからない。
料金先払いだろうか?後払いだろうか? 先払いが多数派な気がするし、前回この系列で給油した時は先払いだった。
先払いだとふんで、とりあえず千円札を突っ込んでみる。食わない。
出鼻をくじかれてあっさりギブアップ。インターホンで質問しようとしたら、話を聞く前に駆け足でスタッフがやって来る。
俺 「(バイク越しに少し体を乗り出して) あの、最初に何をすれば…」 機械 「いらっしゃいませ。(この後案内が続く)」 俺 「……。あ、正面に立てば良かったんですね。もうわかります。どうもすみません」
ちゃんちゃん。
最終更新: 2012-12-19T01:19+0900
昨日から突然に。50%ぐらいの発生率。右クリックでは起こらない。
ファイルやフォルダを選択しようとすると開いてしまうし、ドラッグすると途中で落としてしまう。
去年の12月に買ったものだから11ヶ月しかもたなかったわけだ。そういえば以前使ってた1000円未満の光学式マウスも使い始めて半年か一年後ぐらいからダブルクリックの誤認識が起こるようになった。埃が原因かと思って開けてみたが左ボタンの下にはOMRON製のちっこい箱が見えるだけで何とも。素人目にわかる原因があれば話は早かったのに。
せっかく開けたので、ホイールのクリック感は金属がペコペコ凹む感触なのだな、とか、ホイールのコロコロ感を生み出す溝はホイールの回転を検出するのにも使われてるのかぁ、とか観察してから閉める。
他にも誤認識にみまわれてる人がいた。よくあることらしい。更に初期と現在とではクリック感が違うらしいことも判明。手元の MX610はボタンとスイッチの間に隙間がある古いタイプ。閑話休題。ロジクールのサポートにドライバのアンインストールを勧められたが改善しないので送り返したらしい。この人に倣ってまずはドライバを Windowsのものに戻してみる。
直らないが頻度は減ったかも。デスクトップのアイコンを順番にクリックしていくと10%未満の頻度でダブルクリックになる。……。テストしてるうちに 20%以上の頻度で起こるようになって、今は 0%。あ、やっぱり 20%以上。ドライバは全く関係ないようだ。
チャタリングという現象らしい。スイッチのON/OFFが切り替わるときに 1-10μs以下の間に何度かON-OFFをいったりきたりするのだと。それが無視できない程度になって不具合して現れてきていると? っていうか接触不良だよね。
MX610には 5年間の保証がついていたようだ。でもメーカーに送り返したら負けだと思っている。
スイッチを分解した。奇妙な形の金属が入っている。力を加えても最初は金属がたわむだけで接点は動かない。ある点を越えるとカチッと素早くスイッチが入る。へぇぇぇぇ。金属の弾性と形状が全てなのか。
正常に動いております。汚い手でべたべた触ったのが新たな不良の原因となるのはいつだ。
読み返してみて、あれ? 俺はスイッチを分解して何をしたの(笑。接点付近を布(というかティッシュ)でこすったんだっけ?
MX610はチャタリングから逃れられない欠陥マウスみたいで、ネット上には本体の剛性を増したり、コンデンサを増設したりする対策を紹介したブログが見つかる。そんな大層なことをせずに 3年近く使えてるのはわりと幸運なのかも。
29日に Ruby1.9をダウンロードした。添付ライブラリのRipperが、m4sugar.m4が見つからない、というエラーでコンパイルできない以外は問題なくインストール完了。RUBY_PLATFORMは i386-bccwin32。
Ruby1.8.5で動いている http://vvvvvv.sakura.ne.jp/ds14050/buch/ が Ruby1.9でも動くのか試してみると、sqlite3-rubyの Nativeドライバ、DLドライバが両方とも動かない。Nativeは当然として、DLが動かないのは Ruby1.9では ruby-dl2が dlとして添付されているから。
出てくるエラーを順番に潰す過程でやったことは定数名の置き換えが殆ど。そんなことしかできません。コールバック関数を SQLiteに渡す authorizerや create_function関連は自分で使っていないので何もしていない。DL.callbackが存在しない為にエラーが出るのは間違いない。dl2では bindを使うのだろうか?
以下は変更点のリスト
* sqlite3/driver/dl/api.rb:38 -extend ::DL::Importable +extend ::DL::Importer
単なる名称変更。
* sqlite3/driver/dl/api.rb:92 -extern "ibool sqlite3_complete(const char*)" +extern "int sqlite3_complete(const char*)" * sqlite3/driver/dl/api.rb:93 -extern "ibool sqlite3_complete16(const void*)" +extern "int sqlite3_complete16(const void*)" * sqlite3/driver/dl/driver.rb:96 -API.send( utf16 ? :sqlite3_complete16 : :sqlite3_complete, sql+"\0" ) +API.send( utf16 ? :sqlite3_complete16 : :sqlite3_complete, sql+"\0" ) != 0
iboolという返り値(戻り値?)の型が dl2では定義されていない(定義しようがない?)ので、intを bool値として受け取るのは諦めて、返り値を利用するドライバの方で非0かどうか調べる。
* sqlite3/driver/dl/driver.rb:40 -DL.sizeof("L") +DL::SIZEOF_LONG
sizeofというメソッドは dl2の DL::Importerモジュールにもあるが使い方がわからないし、定数の方が良い。
* sqlite3/driver/dl/driver.rb:* -DL::PtrData +DL::CPtr * sqlite3/driver/dl/driver.rb:242,247,252 -result ? result.to_s : nil +result.null? ? nil : result.to_s
DL::CPtrが DL::PtrDataと完全に互換な置き換えなのかわからないが当面のエラーは消えた。
DLL関数の返値がポインタの場合は常に CPtrが返ってくるらしく、CPtrの指すアドレスが NULLの場合でも Ruby的には nilではないので「result ? result.to_s : nil」が常に result.to_sになり、ぬるぽエラーになることがある。PtrDataとは振る舞いが違う?
* lib/ruby/1.9/dl/value.rb:72 -return [arg].pack("p").unpack("l!")[0] +return [arg.dup].pack("p").unpack("l!")[0] * lib/ruby/1.9/dl/value.rb:74 -return [arg].pack("p").unpack("q")[0] +return [arg.dup].pack("p").unpack("q")[0]
frozenオブジェクトを変更しようとした、ってエラーがでるので間に合わせで Rubyの添付ライブラリの方を修整。どこから frozenオブジェクトが渡されたのやら。
swigが sqlite3_api.iを基に出力する sqlite3_api_wrap.cを以下のように置換したら自分が使用している範囲では動いている。
-RSTRING()->ptr +RSTRING_PTR() -RSTRING()->len +RSTRING_LEN()
聖剣シリーズはゲームボーイ版しかまともにやったことがなくて、あとは聖剣2を 30分ほどプレイしたぐらい。 LOMは 1999年(7年前)発売のプレステ用ゲームだけど、イラストで構築された世界は全然陳腐化していない。
サガフロンティア(1と2)も同じスクウェアのゲームで同様にイラストを使ってたけどあちらは戦争だとかエッグ(という敵)との戦いの歴史がメインストーリー。対して、聖剣伝説LOMのテーマは「愛」。恥ずかしー。この優しい世界を体験して損はない。
これらの要素は「マニアのやりこみにも耐える」といった感じでなく、最初からマニア向け。ライトなプレーヤーはイベントをこなすことに専念して簡単にエンディングに辿り着けてしまう。両極端なんだよなあ。もうちょっと解り易いやりこみ要素プリーズ。