/ 最近 .rdf 追記 設定 本棚

脳log[2006-12-12~]



2006年12月12日 (火)

[Ruby][SWIG][iPod] Rubyから iPodのデータベースを読む

  1. libipod-0.1を bcc32でコンパイル
  2. ipod/ipod.hをベースに swigで Ruby用のラッパー作成
  3. 手持ちの iPod(第3世代*/ソフトウェアバージョン2.3)のデータベースは読めた

* 再生時間 8時間は短いけど、タッチボタンによる軽快な操作は捨てがたい。


2006年12月10日 (日) bcc32で libipod-0.1をコンパイル。examplesフォルダ内のプログラムは動いた。


2006年12月03日 (日) 訪れたページで new SWFObject() なんて javascriptが使われてて、そんなビルトインオブジェクトがいつの間に追加されてたのかと検索したら swfobject.jsというファイルが予め読み込まれていたというオチ


2006年11月29日 (水) Mac OSXもいいなと思ったけどハードと抱き合わせなので断念。


2006年11月25日 (土) じゃじゃ丸っ、ピッコロっ、ポ〜ロリ〜


2006年11月22日 (水)

Essoのセルフガソリンスタンドで

バイクを停めて、手順を示した表示を探す。見つからない。

料金先払いだろうか?後払いだろうか? 先払いが多数派な気がするし、前回この系列で給油した時は先払いだった。

先払いだとふんで、とりあえず千円札を突っ込んでみる。食わない。

出鼻をくじかれてあっさりギブアップ。インターホンで質問しようとしたら、話を聞く前に駆け足でスタッフがやって来る。

俺 「(バイク越しに少し体を乗り出して) あの、最初に何をすれば…」
機械 「いらっしゃいませ。(この後案内が続く)」
俺 「……。あ、正面に立てば良かったんですね。もうわかります。どうもすみません」

ちゃんちゃん。


2006年11月18日 (土) PCSX2 0.9.2 リリース。すぐに 0.9.2の第二版がでた。


2006年11月17日 (金) グラコロの日


2006年11月10日 (金) /.Jの記事で明日が PS3の発売日だと知る。PS3のオフィシャルサイトのトップに発売日の記載なし。

最終更新: 2012-12-19T01:19+0900

[MX610]左シングルクリックがダブルクリックに

昨日から突然に。50%ぐらいの発生率。右クリックでは起こらない。

ファイルやフォルダを選択しようとすると開いてしまうし、ドラッグすると途中で落としてしまう。

去年の12月に買ったものだから11ヶ月しかもたなかったわけだ。そういえば以前使ってた1000円未満の光学式マウスも使い始めて半年か一年後ぐらいからダブルクリックの誤認識が起こるようになった。埃が原因かと思って開けてみたが左ボタンの下にはOMRON製のちっこい箱が見えるだけで何とも。素人目にわかる原因があれば話は早かったのに。

せっかく開けたので、ホイールのクリック感は金属がペコペコ凹む感触なのだな、とか、ホイールのコロコロ感を生み出す溝はホイールの回転を検出するのにも使われてるのかぁ、とか観察してから閉める。

他にも誤認識にみまわれてる人がいた。よくあることらしい。更に初期と現在とではクリック感が違うらしいことも判明。手元の MX610はボタンとスイッチの間に隙間がある古いタイプ。閑話休題。ロジクールのサポートにドライバのアンインストールを勧められたが改善しないので送り返したらしい。この人に倣ってまずはドライバを Windowsのものに戻してみる。

直らないが頻度は減ったかも。デスクトップのアイコンを順番にクリックしていくと10%未満の頻度でダブルクリックになる。……。テストしてるうちに 20%以上の頻度で起こるようになって、今は 0%。あ、やっぱり 20%以上。ドライバは全く関係ないようだ。

チャタリングという現象らしい。スイッチのON/OFFが切り替わるときに 1-10μs以下の間に何度かON-OFFをいったりきたりするのだと。それが無視できない程度になって不具合して現れてきていると? っていうか接触不良だよね。

MX610には 5年間の保証がついていたようだ。でもメーカーに送り返したら負けだと思っている。

スイッチを分解した。奇妙な形の金属が入っている。力を加えても最初は金属がたわむだけで接点は動かない。ある点を越えるとカチッと素早くスイッチが入る。へぇぇぇぇ。金属の弾性と形状が全てなのか。

 [追記:2006-12-14]

正常に動いております。汚い手でべたべた触ったのが新たな不良の原因となるのはいつだ。

 [追記:2008-09-22]

読み返してみて、あれ? 俺はスイッチを分解して何をしたの(笑。接点付近を布(というかティッシュ)でこすったんだっけ?

MX610はチャタリングから逃れられない欠陥マウスみたいで、ネット上には本体の剛性を増したり、コンデンサを増設したりする対策を紹介したブログが見つかる。そんな大層なことをせずに 3年近く使えてるのはわりと幸運なのかも。


2006年10月30日 (月)

[Ruby][SQLite] sqlite3-ruby-1.1.0の DLドライバを Ruby-1.9.0(20061029版)添付の dl2に*不完全*対応。

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オブジェクトが渡されたのやら。

 追記(2006-11-01):Nativeドライバ

swigが sqlite3_api.iを基に出力する sqlite3_api_wrap.cを以下のように置換したら自分が使用している範囲では動いている。

-RSTRING()->ptr
+RSTRING_PTR()
-RSTRING()->len
+RSTRING_LEN()

2006年10月26日 (木) 翠星石のドラマCDを10回以上聞いてしまった。ローゼンメイデンのファンというわけでもないのに。


2006年10月21日 (土) 狼と香辛料の絵師が ANGEL BULLETの原画だったとは。


2006年10月20日 (金) ラヴクラフトはハーレクインの作家か詩人だと思っていた。(本当はクトゥルー神話の生みの親)