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のテーマは「愛」。恥ずかしー。この優しい世界を体験して損はない。
これらの要素は「マニアのやりこみにも耐える」といった感じでなく、最初からマニア向け。ライトなプレーヤーはイベントをこなすことに専念して簡単にエンディングに辿り着けてしまう。両極端なんだよなあ。もうちょっと解り易いやりこみ要素プリーズ。
IMEのオン・オフ関係なく入力文字種が半角カナ固定になった。どのキーを押してこうなったかわからない。パスワード入力不可。ログインもできない。
http://support.microsoft.com/default.aspx?scid=kb;ja;415068
「かな入力」で検索してたから IMEで設定を変更する OR Alt+カタカナひらがな っていう回答しか見つからなかった。今回のは「カナキー」で検索するのが正解。Ctrl+英数 で元に戻りました。
このトラブルは三回目。ということはキーボードを叩き割りたくなったのも三回目。
最終更新: 2009-09-18T20:39+0900
Ctrl↓、英数↓、英数↑、Ctrl↑
上の手順ではカナキーをオンにすることもオフにすることもできます。
Ctrl↓、英数↓、Ctrl↑、英数↑
この手順ではカナキーをオンにすることしかできません。(すくなくともこの PCでは)
つまり、誤爆しやすく解除しづらい。モディファイアキーの押し方/放し方なんて人によって決まってそうなので、二番目の手順で操作する人に対して Ctrl+英数で解除できると教えたところで、何度やっても解除できない罠。
この二種類のドライバをインストールしちゃってくれていたのだけど、PS/2 Keyboard (106 Keys)の方は Ctrl+CapsLock(英数)操作を無効にしてくれるとか?
ATOKにも「キー操作でのカナロックON/OFFを無効とする」というオプションがあった。(ハマる人間が多い証拠じゃないの?*)
Logicool(Logitech)製キーボードドライバーの一例 PS/2 Keyboard (106 keys) ← [Ctrl]+[Shift]+[カタカナ ひらがな] PS/2 Keyboard (106 keys Ctrl+Caps) ← [Ctrl]+[英数] ttp://www.object.co.jp/nnn/kcv/guide.html の「Windows でのカナ入力について」の記載を適宜読み替えてください。 設定変更された事例 Logicool(Logitech)製マウスおよびそのマウス専用のソフトを導入したところ キーボードはソフト不要の汎用品であったのにもかかわらず Windows純正ドライバーで [Ctrl]+[Shift]+[カタカナ ひらがな] だった設定を Logicool(Logitech)のインストーラがPS/2 Keyboard (106 keys Ctrl+Caps)に置き換えることにより [Ctrl]+[英数] に変更されてしまい あとから手動でPS/2 Keyboard (106 keys) に変更して解決 といった実例があります。
ロジクールのドライバが勝手に Ctrl+Capsにカナロックを割り当てていたんじゃないか。(試してみたら [Ctrl]+[Shift]+[カタひら]でカナロックされた。無効になっていなかった)
スペースバーの長ーいキーボードを使うことでこんな面倒とおさらばしたいけど、記号の位置が変わってしまうのだよね。
* タスクマネージャをダブルクリック、もたいがいハマる落とし穴。
プレイリストをタグと見なすと、「タグを付ける」は「プレイリストに曲を登録する」になる。プレイリスト同士を演算して積集合や和集合を求めれば、今聴きたい曲のリストが求まる、と。
I氏のつぼ で検索条件として「特定のプレイリストに含まれてること」を指定できればすぐにでも実行できるのに。更新止まってるしなぁ。
iPodのデータベースを読んで、最低限
>ipodpl -dI:\ --album-shuffle "genre:JPop & playlist:クリスマス" > %TEMP%\ipod.m3u >mplayer2 %TEMP%\ipod.m3u
みたいなことができればいいのだけど。libipodは Linux向けみたいだし……*。
あるいは、ID3v2タグの一つをスペース区切りタグリストとして使えばいいのか。検索は I氏のつぼがやってくれるし。
* ファイルを読み書きするライブラリに OSはあんまり関係ないよね。ipod_discover()が '/mnt' を決め打ちで読もうとすることと、sys/statfs.hがウチの環境に存在しなくて(それを利用する) ipod_disk_usage()が使えなくなったこと以外は無問題でした。(2006-12-27 追記)
vvvvvv/ www/ cgi_file/ …… cgi_data/
このような感じ。
分類の肝は公開/非公開とアップ/ダウンロードの方向。
サーバーとローカルの PCを同期するときに静的なファイルはローカルの方が新しく、CGIが作成するファイルはサーバーの方が新しいので、これらのファイルが混在すると面倒くさい。フォルダで分ける。*⁑
irb(main):001:0> RUBY_VERSION => "1.8.4" irb(main):002:0> '//a//b//'.split('/') => [,, "a", "", "b"] irb(main):003:0> '//a//b//'.split('/', 99) => [,, "a",, "b",, ""]
末尾のスラッシュが無かったことに……。< Perl由来のようです
因みに 1.6系のはまりどころは splitの第一引数に 2文字以上の文字列を与えた場合、勝手に正規表現にコンパイルされてしまうところ。