WordPress MUの不具合その2

2007/09/09 | SNS/CMS/ブログ

WPMUのもう一つ致命的な問題。xmlrpc接続にはたくさん問題があるようだ。しかも現在対応中とのことだ。検索してみると、かなりコアな部分の修正もあるらしく、時間がかかる模様、とのことだった。

自分にとって一番致命的だったのは「記事投稿して、その記事にカテゴリ設定する」という仮定が、普通のブログシステムと同様にはいかないことだ。普通なら以下の手順で記事を投稿する。
(1) 記事本文等を投稿
(2) (1)の戻り値として記事番号を取得
(3) 記事番号とカテゴリを送信してカテゴリ設定

この手順はWordPress MUには使えない。なぜなら・・・ブログを作成するたびにテーブルを増やすような設計になっているので、記事番号が必然的に重複するからだ。「ブログIDでしていすればいいじゃん」ってことになるが、ノーマルなカテゴリ設定のメソッドmt_setpostcategoriesではブログIDは指定できない・・・。つまりは基本的な仕様外っぽい。

そこで仕方なくソースを読んでみた。どうもWordPressでも独自のxmlrpcメソッドを用意しているようだ。そしてmetaweblog_newPostも若干拡張されているようで、記事投稿時にカテゴリ設定もできるっぽい感じだ。

しかし今回はカテゴリ設定のメソッドを自分で実装した(今から思えばなぜこんな手間なことをしたのか・・・)。wp.setPostCategoryなるものを用意した。通常のmt.setPostCategoriesにプラスしてブログIDもあわせて送信するのだ。いずれにしても独自拡張だからいい方法とはいえない。WPMUに実装されているメソッドだけで対応可能と思われるので、時間を作って再度ソースの解読にチャレンジしたい。

WordPress MUの不具合

2007/09/08 | SNS/CMS/ブログ

実は知らずに採用したのだが、WordPress MUはまだまだ出来て間がないらしい。どおりで情報が少ないはずだ。
まず日本語環境での利用については、htmlentitiesに関する記述はなかった。どうやらこれは変更しなくても問題ないのかもしれない。ただしMySQLにたいして発行する「SET NAMES binary」の記述は必須だろう(MySQLのバージョンに依存する問題だと思われる)。
普通にダウンロードして使用すると(現時点での最新版は1.2.4)、全て英語での環境となるが、日本語版のパッチが出ているらしい。以下のページにその記述が。

http://wpmudev.org/project/WPMU-Japanese-language-pack-1.2.1%20

基本的に、コレを入れなくてもメニュー等が英語になだけで日本語を使用する分には問題なさそうだから、自分は入れなかった。

そして根本的な問題。
xmlrpcで接続して記事投稿する際に・・・デフォルトのブログにしか投稿できないのだ。つまりブログを3つも4つも作ったとしても・・・あとから追加したものにはxmlrpcで投稿できないのだ。具体的には、まだその仕組みが用意されていないのだ。プログラム中に「we will support this in the near future」と書いてあったりする!。これはちょっと困る。

仕方ないのでハック。xmlrpc.phpの当該部分にブログIDからブログを選択する一行を書き込んでみた。

switch_to_blog($blog_ID);

これだけ。他で不具合があるのかもしれないけれど、とりあえず記事投稿さえ出来ればいいから、組み込んでしまった。これで問題なくブログを選択して、記事投稿できるようになった。
まぁ、まだできて間がないプログラムらしいので、これからもいろいろでてくるだろう。

しかしこのWordPress MU(略してWPMUというらしい)、大規模向けとか書いてあったりする。そういう意味でテーブルをわけるような設計にしてあるのだろうか・・・。

海外レンタルサーバ3iXの技術力の高さ

2007/09/07 | 海外サーバ

海外レンタルサーバ3iXネタが続くが、今日もいろいろあったので、コメントを残しておくことにする。

サーバ会社のウェブはこちら

とあるプログラムがうまく動かないので、サポートチャットにつないでみた。プログラムが動かないといっても、自分でプログラムの動きがわからないのではなくて、「動くはずなのに動かない」というパターン(まぁ、コレに関しては、そもそも動かないサーバに問題があるわけだが・・・)。
サポートが「ちょっとまってくれ」と言って約3分、今度は「試してみてくれ」という。すると、なんともう動いてしまうじゃん!。

おそらくセキュリティか何かの面で、サーバ側に特殊なプログラムがいれてあるような感じなのだが、それをサポートチャットの人が的確に理解して、わずか数分で修正してしまうとは・・・。
おそらく日本のサーバ会社だと、まずは「プログラムの動作確認については当社では保障しておりません」などというのが関の山だろう。また、たとえ問題があることがわかったとしても「仕様です」とでも、いうだろうし、さらに「設定変更いたします」と言ったとしても、確実に数日は待たされる。

それを思えば、やはり3iXは優秀だ。実は少人数の技術屋ばかりで運営していて、サポートチャットも技術者がやっているのではないか、と思う。海外のサーバなので、現地での評判がわからないところが不安ではあるが、それを乗り越えれば、好環境が手に入るわけだ。

まぁ、倒産したら・・・そのときはあきらめるしかないけど。

WordPress MU(マルチドメイン)導入

2007/09/06 | SNS/CMS/ブログ

新規契約した3iX。いつものことだが、サポートチャットでいろいろ文句をつけて、ようやくなんとか正常動作にこぎつけた。うまく動いてしまえば、こっちのもん!。

動かないときに文句が言えない人はやめたほうがいいです。相手の気持ちも考えず文句を言ってしまえる人にはお奨めです。はっきり言ってサポートスタッフはお客をお客とも思ってないので、ガンガン文句言ったほうがいいです。文句を言う手間は省かなければ、この料金は激安です。

さて、一段落したところで、手持ちのライブラリをアップロードしたり、してると、急に・・・。
管理画面のcPanelがアップデート(?)してた(急に画面が変わったからびっくりした)。でもこれ、新しくなって使いやすい!。確認したところバージョンは「11.11.0-STABLE」となっていた。
以前はよくわからなかったのだが、新しくなってドメインを追加したりサブドメインを追加したりする際に、ターゲットとなるディレクトリを指定できるようになったらしい。これはチャンス!、と思って別で取得したドメインをアドオンとして登録した。このドメインをWordPress MU(マルチドメイン版)のテストとして使用するためだ。

まずはインストール。インストールに際して、ファイル群を眺めてみた。日本語対応をうたっているわけではないので、怪しそうなところがないかチェックするためだ。といっても1個だけ。htmlentitiesという関数が使われているかどうかチェックをしたのだ。ちなみにこの関数はすべてhtmlspecialcharsで置き換えた。実際は元の関数のままでも、別な箇所を変更することで対応できると思うけど、htmlentitiesは日本語環境では問題が出ることが多い。ということで事前に変換したのだ。

で、ファイルをアップロードし、インストール。とりあえず最低限、動くようになったらしい。まずは日本語のチェック、ということでデフォルトで投稿されている記事を日本語で書き換えてみた。・・・。だめじゃん。日本語が全部??????となってしまっている。でも、これはどこかで見た記憶がある。そう、昔MySQLのバージョン4.1を始めて使ったときの文字化けだ。ということで、データベースへの接続時にコマンドを一発飛ばすことにした。

SET NAMES binary

ファイル群を検索するとwp-includes/wp-db.phpでデータベース接続処理をやっていることがわかった。この中で、
$this->query(“SET NAMES ‘$this->charset'”);
な処理の記述があったので、この行をコメントアウトし、以下の行に書き換えた。
$this->query(“SET NAMES binary”);

はい。ファイルを置き換えてコレで終わり。
再度日本語で記事投稿してみて、うまく日本語が通ることが確認できた。
これからマルチドメインな使い方を試してみるつもり・・・。使い心地やカスタマイズは、都度このブログで紹介するかも・・・です。

性懲りもなく海外サーバ3iXを利用

2007/09/05 | 海外サーバ

以前、海外の格安レンタルサーバ3ixの記事を書いたが、依然として利用を続けている。サポートがすばらしいからだ。
今回新たにスペースを追加でレンタルことにした。本来は追加で借りなくても、管理画面からアップグレードすることで上位のサービス(容量もドメイン使用数もデータベース数も増量)にできるのだが、以前から使っているほうは、いろいろお試し用としてそのまま残しておき、新しいスペースを借りることにした。
今回借りたのはEXPERT PLANで、容量50GB!もあって月額5ドル(600円ほど?)。使い切れません。安いので思い切って2年契約してみた(長期契約割引あり)。EXPERT PLAN以降はドメインも無料で付いてくるので、ドメインも別途新規。これで2年間99ドル(1万2千円ほど)。激安だ。
まぁ、この容量を使い切れるかどうかわからなかったので、さらに上位のサービスは申し込まなかった。さらに上位のEXTREMEプランでは・・・月額8ドルで容量が500GBになる。これは自分にはとても使い切れない。

さて、サービス開通後早速サポートのお世話になった。PHPのmbstringモジュールが有効になっていなかったので、その依頼。依頼はサポートチャットから英語のチャットになるのだが、とにかく知ってる単語を並べる。向こうも英語が母国語でないユーザが多いようでお手の物。しかも依頼に対する返答が「今コンパイルしなおしてるから2、3時間したらアクセスしてみて」だった。そしてわずか10分後くらいにはmbstringが有効になっていた。すごい。

海外のレンタルサーバ 3ix

もう日本のサーバを借りるのは馬鹿らしいです。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net