Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524

n番目の文字1つを取り出す

2007/09/26 | PHPの基本

Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524

phpでn番目の文字を取り出したいとき、ついさっきまでは以下のように記述するしかないと思っていた。

$str=’abcdefgh';
$char=substr($str,3,1);

こうすると$charには「d」が格納される(phpでは最初は1ではなく0から始まることに注意)。しかしもっと簡単な書き方があることを知った。

$str=’abcdefgh';
$char=$str{3};

なんと、こんな書き方でも同様の結果を得ることが出来る。マルチバイト系ではうまく動かないような気もするが(未検証)、これは簡単だ。多分関数を呼ばない分だけオーバーヘッドも少なく、処理速度も速いだろう。
少しだけ賢くなった。

サムネイル生成時の日本語文字化け


Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524

ウェブページのサムネイル生成プログラムがうまく動いて気をよくしていたが、新規にインストールしたCentOS4.2環境では日本語(漢字だけ)が文字化けしてしまった。1文字が四角の中にごちゃごちゃと文字がはいっているようなのに置き換わっている。いろいろ調べたら、これは日本語フォントがインストールされていないときにおきる症状とのことがわかった。今回OSのインストールは、サーバ用途のため、すべて英語を使用するという設定でインストールしたことが原因だろう。
調べたらインストール方法があったのでやってみた。

# wget http://www.grass-japan.org/FOSS4G/ipafonts/grass5.0.3_i686-pc-linux-i18n-ipafull-gnu_bin.tar.gz
# wget http://www.grass-japan.org/FOSS4G/ipafonts/grass5_i686-pc-linux-i18n-ipafull-gnu_install.sh
# sh grass5_i686-pc-linux-i18n-ipafull-gnu_install.sh grass5.0.3_i686-pc-linux-i18n-ipafull-gnu_bin.tar.gz /tmp/grass5 /tmp/bin
# mkdir /usr/share/fonts/ja/
# mkdir /usr/share/fonts/ja/TrueType/
# mv /tmp/grass5/fonts/*.ttf /usr/share/fonts/ja/TrueType/
# sh /tmp/bin/grass5uninstall.sh
# mkfontdir
# mkfontscale

まぁ、フォントは何でもよかったのでIPAフォントで。ウェブにあった記事をそのまま参考にして、適当にインストールしたら、なんとなく動いた。これで漢字も文字化けせず、正しくサムネイルが生成されることを確認できた。

今回サーバ用途向けのパッケージングでインストールして、正常に動作させることが出来たので、おそらくVPS環境で問題なく動作させることが出来ると思われる。早速準備して、サービス開始を目指すことにする。

b2evolutionでxmlrpc投稿

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

Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524

すごく便利に使っている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 | 海外サーバ

Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524

また海外の格安レンタルサーバを使おうと思案している。
わりとまじめに調べたが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プラグインをインストール


Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524

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

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

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

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

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

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

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



Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524
守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net

Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524