RSS

初出:2007年12月 3日 20:11

更新:2008年9月 3日 09:02

【追記】

解決したと思った、何度もログイン画面に戻ってしまう問題。いきなり再発しました。うちのMT4は非サポート版なのでSix apartに問い合わせることもできないので、「こういう問題が出ましたよ」というフィードバックという形で連絡したら、担当の方からサポートメールをいただきました。その中には「同様のご指摘は特にいただいてないので、システムの不具合とは考えづらい」と書かれていたので、次は何を疑えばいいのかと色々調べていると、MySQLデータベースのためPerl DBIドラバである「DBD::mysql」が古いバージョンだったことを発見。ダメもとで2.9004にアップしたところ、なんと治まりました!

次に、携帯用のmt4iでAdSenseを出す部分ですが、どうしても出ない。いつまで経っても出ない。そこでApacheのログを見たところ、PerlでWebにアクセスするためのライブラリ「LWP」が、これまたインストールされていないことを発見。こちらを参考にインストールしたところ、しっかり表示されました。

かねてからの懸案事項だった、うちのブログサーバをMovableType 4へ移行する計画をようやく遂行しましたよ。とは言っても懸案ってほど必要にかられていたわけじゃないし、新しくして目に見えるメリットがあるかどうかも定かではない。Six Apartの製品情報を見てても、複数のユーザーやブログを管理するサイトには便利そうだけど、一個人ユーザーが細々と運用するのには、それほどのメリットは見えません。

でもね、実は数ヶ月前にちょっとした興味でトライして、いろいろと不具合が続出したんで、そのまま元のバージョンに戻しちゃったんです。それがなんか気持ち悪い。特に不具合があったわけじゃないけど、気持ちの悪さを感じていたんですね。そこで週末に再度トライしたわけです。

不具合、というか不都合のポイントは、まず、mt4i(携帯向けブログサーバ)のMT4対応。10月末にMT4に対応したVer.3.0βが出たので、まずはそれに移行することから始めました。インストール手順どおりに進めればだいたいOKなんですが、うちの環境では「Can't locate MT.pm in @INC」などとエラーが発生。いろいろ調べてみると、CPANのHTML::Template.pmモジュールをあらかじめインストールする必要があるんですね。インストール手順ページにさりげなく書かれている「HTML::Template が必須です」を見逃してはいけません。

mt4i 3.0は最近スタートしたモバイル版AdSenseにも対応しているというので、さっそくAdSense管理ページから携帯用のHTMLコードを取得し、mt4iのテンプレートに追加してみました。…が未だ表示されず。AdSense管理ページによると48時間くらいかかるって話なので、気長に待つことにしましょう。

次の不都合は、MT3で構築してMySQLに蓄積されているブログデータが、そのままではMT4上で綺麗に動かない問題。具体的には、サイトの再構築をかけると「MTEntryDateを日付コンテキストの外部で利用しようとしました。」なんてエラーが出るわけです。この原因はMT3で構築したDBをMT4で再利用した際に起こる不整合のようです。いちいちテンプレートをすべて書き換えるのは気が萎えるので、えいやっと以下の手順を行い、なんとかうまくいきました。

  1. MT4のシステム管理ツールから「バックアップ」を選び、データを丸ごとバックアップ
  2. phpMyAdminで、新しいデータベース「mt4」を作成
  3. mt-config.cgiを開いて、Databaseをmt4に変更
  4. MT4のシステム管理ツールの「復元」から、そのデータをおもむろに復元

MT4でデータを書き出して、MT4で復元しているんだから、あまり意味がないんじゃないかって思うんだけど、動いているんだから由としましょう。ちなみに、復元を実行するとプログレスバーによるステータスが表示されるんですが、5時間ほど放ったらかしにしても一向に終わりません。もうひとつブラウザを起動して管理画面にアクセスしたら、とりあえず移行できていたみたいなので、復元中のブラウザはここで終了。

でもまだ問題発生です。MT3時代のユーザーは当然引き継がれているんですが、なぜかログインに問題発生。管理画面で何かする度に、何度もログイン画面に戻ってしまうんです。ネット上にもこれに関する情報はあまりないので、手を焼きました。MTが生成するCookieに問題ありって書いてあるページもありますが、ブラウザからCookieを消してみたところで症状は変わらず。これもMySQL内における不整合を疑うのが筋ってもんでしょう。そこで、MT3時代のユーザーをなんとかするのは諦めて、新たにユーザーアカウントを作り、それとこのブログを紐づける方法で解決しました。

うちはブログの更新をectoってアプリケーションでやってますが、これはXML-RPC APIを使ってMovableTypeと接続する仕組みです。その設定画面で、今まではユーザー名と管理画面にアクセスするパスワードを設定してたんですよ。でもMT4にすると、ユーザーのプロフィール設定内にある「Webサービスパスワード」というのを指定しないといけないみたいです。これ豆知識。

そんなわけで、なんとかMT4化がひとまず完了。これで何のメリットがあるのか未だ未知数ですが、きっとこれから良いことがあるのでしょう。これだけ苦労したんだから、そう信じたい。あ、そうだ。iPhone/iPod touch用MTインターフェイス「iMT」というのもありますね。最近はiPhoneで一言メモ的に入力するのはすべてTwitterにしているので、あまり出番はなさそうですが、とりあえず入れてみようと思います。

Googleさんは、この記事をこう解釈しました

記事の詳細ページ

記事の全文を表示します。関連するコメントやトラックバックなどもこちらからどうぞ。

本日のBGM

★印があったら「これは聴いてみてほしい!」という推薦曲です。曲名をクリックするとiTunes Storeへジャンプします。

'; // loop through the songs in the array and get 4 fields that I want to see foreach ($songs as $song) { $output .= '
  • '; if ($song["Rating"] == 100){ $output .= ''.$song["Rating"].''; } $output .= '
    '; $output .= '
    '.$song["Name"].''; $output .= '
    '.$song["Artist"].''; $output .= ''.$song["Album"].''; if ($song["Year"]){ $output .= '('.$song["Year"].')'; } $output .= '
  • '; } // end the table $output .= ''; // show my new table print ($output); } ?>

    Now & Then

    Twitter Updates

      OAuthRequest('https://api.twitter.com/1.1/statuses/user_timeline.json','GET',array('screen_name' =>$search_word,'count' =>'3')); //Jsonデータをオブジェクトに変更 $oObj = json_decode($vRequest); //var_dump(json_decode($vRequest)); //オブジェクトを展開 for($i_tweet = 0; $i_tweet < sizeof($oObj); $i_tweet++){ $screen_name = $oObj[$i_tweet] -> {'screen_name'};//ユーザーID $profile_image_url = $oObj[$i_tweet] -> {'profile_image_url'};//プロフィール画像のURL $text = $oObj[$i_tweet] -> {'text'};//ツイート $date = $oObj[$i_tweet] -> {'created_at'};//時間 $tweet_time=strtotime($date);//Unixタイムスタンプ形式に変換 $now_time=time();//現在の時刻をUnixタイムスタンプで取得 $relative_time=$now_time-$tweet_time;//つぶやかれたのが何秒前か if($relative_time<60){//ss $displayTime = $relative_time.'秒前'; }elseif($relative_time>=60 && $relative_time<(60*60)){//mm $displayTime = floor($relative_time/60).'分前'; }elseif($relative_time>=(60*60) && $relative_time<(60*60*24)){//hh $displayTime = floor($relative_time/(60*60)).'時間前'; }elseif($relative_time>=(60*60*24)){//日付 $displayTime = date('n月j日',$tweet_time); } //表示 echo '
    • ' . $text .'' . $displayTime . '
    • '; } ?>
    follow me on Twitter