b2evolutionでxmlrpc投稿

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

すごく便利に使っているWordPressだけど、現在のバージョンではMySQL3.23系にはインストールできない(MySQL4以上に対応)。やむなく別のブログソフトを使うことにした。使用したのはb2evolution。こちらもメジャーなブログソフトの一つだ。
「使う」といってもブログを書きたいわけでもない。やっぱりまたxmlrpcだ。今回はブログソフトの機能だけを使用することにしている。具体的には・・・。

○投稿フォームは別途用意し、xmlrpcでブログへ投稿
○記事一覧は最新のものだけを使うと仮定して、RSSを取得・編集して使用
○記事詳細表示は、xmlrpcで取得して別画面で表示

つまりブログソフトのフロントエンド部分は基本的に使用しない。データの格納庫としてブログを使用し、xmlrpcを介在してアクセスする、という方法を採用した。意外といけてる方法だ(と思う)。

で、b2evolutionにxmlrpc接続しようと記事をpostしたが文字化けしてしまった。またしても???だ。ちなみに今回もsourceforgeのxmlrpc.incを使用している。以前xmlrpc.incのバグの記事を書いたけど、対応済みのクラスを使用しているにもかかわらず、だ。
やむなくソースを読んでみた。どうやらb2evolutionのxmlrpcのデフォルト文字セットがISO-8859-1としてセットされているようだ。それじゃぁダメだよね。本当は日本語対応状況とかいろいろ調べないといけないのだが、とにかく、こんなふうに文字コードがセットされていることが悪いことに間違いない。で、変更した。変更したファイルは「inc/_misc/ext/_xmlrpc.php」。このファイルの235行目あたり。

$xmlrpc_internalencoding=’ISO-8859-1′;

この記述をUTF-8に変更して再投稿し、無事日本語が通ることを確認した。

諸々調べたわけではなくて場当たり的なものなのだが、これでとりあえず対応できる。ソースコードを読むと、「ひょっとしたら、またxmlrpc.incのせいかも」と思える箇所が多いにあるのだが、とりあえず対応できることがわかったのでこれで問題解決とした。でもまぁ、まだどちらが悪いのか調べ切れていない。

格安海外サーバbyohosting.com

2007/09/23 | 海外サーバ

また海外の格安レンタルサーバを使おうと思案している。
わりとまじめに調べたが3ix.comにかなうところは見つけられなかった。今のところ3ixは最強サービスのようだ(安さ、提供内容共に文句なし)。

3ix.com

サポートもいろいろ融通を利かせてくれるので基本的に文句はないのだが、とあるプログラムの設置ですごくもめた。チャットでものすごくごねたのだが(もちろん、適当な英語で)、聞き入れられなかった。3日くらいもめた。

そこで、その問題のプログラム(phpで書いたスクリプト)をおかせてくれる格安サーバを調査中。基本センスとして1ヶ月1$で使えるサーバだ。でみつけたのはこんな感じ。

http://www.tooniehosting.ca/
http://www.extraservers.com/
http://www.byohosting.com/

ところが、設置できるかどうかを聞くにも、サポートチャットのシステムがないのだ。ウェブフォームから問い合わせないといけないので少し時間がかかってしまうし、いっぱい質問したいときとかすごく面倒。ちょっと行き詰ってしまった。とりあえず上記3つ(実は他にもう1個問い合わせ中)に問い合わせしてみなければ・・・。実際に使う段階になったら、その使用感をレポートする予定。

もし海外サーバの利用をトライしようと思っていて、このサイトを見つけた人がいたら、その人たちにメッセージ。英語なんてホント適当でいいです。文法も必要なくて、ひたすらやりたいことを連呼するだけです。まぁ、格安の1$サーバでトライしてみてください。月額1$だからダメ元でも全然痛くないので・・・。

firefoxにFlashプラグインをインストール

だんだんPHPネタからはずれてきたが・・・。

とりあえずウェブサイトのサムネイルを作る準備は整った。ところが、ちょっと試してみて、NGな部分があった。firefoxにはデフォルトでFlashのプラグインが入ってないので、Flashのあるウェブページがうまく表示されないのだ。

GUIがないのにFlashプレーヤーがインストールできるのか・・・。

しかし問題はなかった。
まずはAdobeのサイトからダウンロード。
URLはこちら

ここでtar.gz版をダウンロードし、解凍。解凍後に出来たディレクトリの中にある「flashplayer-installer」を実行すればOK。無事インストールを完了し、Flashページも正常にサムネイル作成ができることを確認した。

ちなみに、このサムネイル作成だが、ちょっと負荷がかかし、時間もかかる。今のところVMWARE上で実行しているためだと思うのだが、サムネイル作成に30秒以上かかる。とりあえずサーバを一台立てて、そこでバッチ処理で流すルーチンを加えて一般公開としたい。バッチの部分とかキャッシュの部分とかそのあたりはやっぱりPHPで書く予定。

いずれにしてもPHPの得意分野ではないような気もするのだが、まぁ、近日中に構築完了してサービスインします。こちらもご期待くださいな。

ウェブページのサムネイルを生成

以前から何とかしたいと思っていたウェブページのサムネイル生成がようやくできるようになった。以前にやろうとしたときは資料も少なくて、散々悩んだ挙句に放置してしまったが、最近はこういうサービスを提供しているところも多いようで、情報も豊富になってきた。今回も検索にて情報を収集し、ようやく実現にこぎつけたので、ここに諸々メモしておく。

環境としては「Linux下での構築を目指す」これだけ。これで普通の安いVPSを使って構築できるからだ。ちなみに今回使用したのはCentOS4.2。

実現方法は仮想フレームバッファを使用。普通サーバとして使う場合にはX Windowシステムはインストールされていないし、その必要もない。ただしこの機能を実現するに当たって「ブラウザからURLを開き、その画面キャプチャをとる」必要があるので、X Windowシステムが必須となる。そこでX Windowsシステムを仮想的に動作させ、そこでブラウザ起動、URLオープン、画面キャプチャ、画像保存、後処理という手順を踏むことになる。

構築の実際は以下のとおり(参考:Linuxサーバー環境でのサイトサムネイル化:PHPで実行)。

(1) 必要なソフトウェアをインストールする。
yum grouplist
yum groupinfo "X Window System"
yum upgrade xorg-x11-xfs
yum upgrade xorg-x11
yum upgrade xorg-x11-devel
yum upgrade xorg-x11-libs
yum groupupdate "X Window System"
yum upgrade xorg-x11-libs
yum install xorg-x11-Xvfb
yum install firefox
yum install ImageMagick
とりあえず上から実行していく。途中省略できそうな感じだが、とりあえず言われるままに。

(2) 仮想フレームバッファを起動する
シェルプロンプトで以下のコマンドを実行する(要は仮想フレームバッファをディスプレイ番号1、スクリーン番号0、横1024px縦768x色24ビットで起動しろ、ということ)。
/usr/X11R6/bin/Xvfb :1 -screen 0 1024x768x24 > /dev/null &

(3) 使用ディスプレイの設定する
上でX Windowシステムを起動できた(はず)。上記のディスプレイ・スクリーン番号を使用する旨宣言する(同じくシェルプロンプトで)。
export DISPLAY=:1.0

(4) Firefoxのプロファイルを作成する(最初だけ)
以下のコマンドでプロファイルを作成しておく(コレを作っておかないと、仮想画面上では「プロファイルを作成しますか」画面でとまったままの状態になっている)。以下は「scriptという名前のプロファイルを作成し、その保存場所は/tmp/以下にしなさい」という意味。
/usr/bin/firefox -createprofile "script /tmp/"

(5) Firefoxを起動する
以下のコマンドでFirefoxを起動する。このコマンドの意味は「ディスプレイ番号1を使って、横1024px縦800px、プロファイルscriptを使ってFirefoxを起動」となる。
/usr/bin/firefox -display :1 -width 1024 -height 800 -P "script" > /dev/null &

ここまでで、(2)(5)ではフォント関係のエラーが出るかもしれないが、とりあえず放置しても大丈夫そう。おそらく何か足らないだけなので、別途インストールすることにする。Firefoxが無事起動しているかどうかは、動作中のプロセスを見れば一目瞭然だろう(「ps x」とかで)。

(6) 特定のURLを開く。
とりあえずYahooを開いてみよう。
/usr/bin/firefox -display :1 -remote "openurl(http://www.yahoo.co.jp)" &

(7) 画面をキャプチャする。
ウェブページを開いたブラウザの画面をキャプチャして、ファイルに保存する。「-window root」というのは多分X windowのルートっていう意味(かなぁ?)。
/usr/bin/import -display :1 -window root /tmp/img.gif

これで画面がキャプチャできるはずだ。
個人的に一番はまったのは(3)の使用するディスプレイを設定するところ。多分、前回はコレが発見できなかっただけなんだろうと思う。

さて、これをPHPで扱うにはどうするのが一番いいのかちょっと検討。出来次第、サービスとして提供する予定。期待せずに待っててください。

ついでに・・・Smarty便利マニュアル

2007/09/18 | マイPHPメモ

ものはついで、といってはなんだが・・・。Smaryの便利マニュアルも作ってみた。
多分、なんとなく動いてると思う。
誰でも、いつでも、自由に使ってくださいな。
リクエストも受け付けますので、コメントからどうぞ。

その他のマニュアルは・・・リクエストがあればやってみますが・・・。


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