SigmarionII復活日記

 今日は普通の日記です。

 3年前くらいにリビング用パソコン+テキスト入力機としてLibretto L2を入手してから使わなくなっていたSigmarionIIですが、最近Librettoのキーボードの調子が悪くなり、そろそろ修理に出さないといかんなという状態になってきたので、代替のテキスト入力機としてSigmarionIIを復活させることにしました。
 Windows Mobile 6 搭載機種がメインのご時世にあえてWindows CE 2.0 搭載のSigmarionIIを使うこの渋さ。というか、単にお小遣いがなくて新しいノートパソコンとかモバイル機を買えないだけなのですが。

準備したもの:

  • ボタン型電池CR2025(バッテリーバックアップ用)
  • WZ Editor 2.0(エディタ+ファイラー+メール+メモが入った統合環境ソフト)
  • WLI2-CF-S11(バッファローのCF型無線LANカード)
  • WLI2-CF-S11のWindows CE用ドライバ
  • SmallTweak(CEの環境をエディットできるソフト。IMEの切り替えボタンを変えたかったので必要)
  • 壁紙用画像ファイル

 とりあえずテキスト入力機として必要なものは揃いました。

 あとSigmarionIIにはPocketIE 5.0が入っているのですが、このブラウザだとGMailはおろか既にMixiすらまともに表示できなくなっていました(表示するとハングアップ)。いわゆるAJax的なサイトはもはや全く見られないみたいなので、事実上SigmarionのIEは現代ではもはや使い物になりません。時代だなあ。

2008/01/02 のメモ

『みんなが聞かないからみんなが聞かない』
『音楽業界が死んで、真っ先に道連れにされるのが「売れないけど志の高い音楽」だ』
音楽産業が衰退期に入ると起こることが淡々と書かれていると思いました

『ご賛同いただける方に、みんなで気をつけようね、という意味をこめて』
気を付けたいです

Powered by Livedoor Clip
カテゴリー: Memo

MT4.01でブログを書くボタンを押すとエラーが出る件に無理矢理対処した話

 WordPressで運用しているサイトにMTのことを書くのもアレなのですが。
 X-Serverで稼働しているマンガ感想サイトで使用しているMovable Type 4.01ですが、記事が15件になった時点で「ブログを書く」ボタンを押すと、

Statement has no result columns to bind (perhaps you need to successfully call execute first) at (MTをインストールしたディレクトリ)/extlib/Data/ObjectDriver/Driver/DBI.pm line 120.

 というエラーが発生するようになりました。
 一度データを削除してインポートし直しても、別データベースを作ってそこにデータをインポートしても、データベースに復旧をかけても、全然このエラーが解消しません。エラーメッセージで検索をかけても解決方法を書いているところはないようで、どうも一度出たらもうダメ系のエラーっぽいです。

 DBI.pm のエラーが出ている箇所を色々調べた結果、”SELECT config_id, config_data FROM mt_config WHERE (config_id IN (?))“(? はブログID。こちらの環境では1) という SQL を実行し、bind_columns で config_id と config_data の値を配列に設定しようとしているところで発生しているということは判りましたが、でも判ったところでどうしようもないというか、何故ここでこんなエラーが出るのかまでは判りませんでした。MySQLやDBIのバージョンに依存する問題なのかも知れません(MySQL 4.0.25, DBIのバージョンは不明)。
 ただ、エラーが出る部分のSQLは正直それほど重要なものではなさそうなので、これって別に無視してもいいんじゃね? みたいなことを思ったのも事実。

 仕方がないので、エラーが出る箇所を eval で囲み、エラーを無視するという行き当たりばったりな対処をしてみたところ、「ブログを書く」ボタンを押してもエラーが発生しなくなり、そのまま記事を書いて保存できるようになりました。
 何だかよく判りませんが、とりあえずこれで問題には対処できたので、一応ここで修正したコードを公開しておきます。

extlib/Data/ObjectDriver/Driver/DBI.pm の 120行目以降を、以下のように修正

    eval { $sth->bind_columns(undef, @bind); };
    if (!$@) {
      # need to slurp 'offset' rows for DBs that cannot do it themselves
      if (!$driver->dbd->offset_implemented && $args->{offset}) {
          for (1..$args->{offset}) {
              $sth->fetch;
          }
      }
    } else {
      warn $@;
      $sth->fetch;
    }

    # TBD what happens if $sth goes out of scope without finish() being called ?

※これによって何が起こっても私は一切関知しません。自己責任でお願いします!

2007/12/31 のメモ

やはりチャンピオンREDは購読しないといけないのかと思いました

MT4の自動保存を抑制する方法。
マンガ感想サイトではどうもこれが悪さをしている(保存ボタンを押した直後に自動保存が走り出すとエラーになるとか)っぽいので対応することにしました

Powered by Livedoor Clip
カテゴリー: Memo