Latest Publications

Eclipse導入

PHPでシステム開発をしているがEclipseがいいと聞いて早速導入してみた。本来はJavaの開発用の環境らしいが他言語用にも使えるようなツールが準備されていてPHP用も何種類か出ている。よくあるコードの色付け機能はもちろん、構文を保存の旅に自動チェックしてくれたり保存履歴が記録されて数日前に保存した状態も呼び出せたりとかなり高機能な様子。

導入までのあれこれをメモ。なお、環境はWindowsXPで既に使っているものとしてXAMPP,Subversion,TortoiseSVNがあること前提。また、今後cakePHPを使ってみようと思っているためそれも加味して環境を作った。

まずPHP用のEclipseもいくつかあるようだけど、今回はPDT(PHP Development Tools)というものを選んだ。CakePHPの試食前に、EclipseでPHPの開発環境を整える という記事で非常に丁寧に説明されていたので参考にさせてもらいPDTの選択とインストールを行った。

PDT Project公式サイトのDownloadsページから(07/10/20時点で)最新のR20070917というところを開き、Windows用のなんやかんや一式が詰まったオールインパッケージpdt-all-in-one-1.0-R20070917-win32.zipをダウンロード。

ダウンロードしたものを解凍するとeclipseフォルダができるので適当な場所に移動。セットアップとかは必要ないみたい。eclipse本体+PHP用色々はこれで導入完了。すごい簡単。

次にデバッガを導入。デフォルトではZendDebuggerというものが入っているらしいけどcakePHPと相性が悪いということでXdebugというものを入れたら良いんだとか。新しめのXAMPPには最初から入っているとのことで、php.iniの編集だけで良いみたい。

xampp\php\php.iniとxampp\apache\bin\php.iniで下記を編集。[xdebug]は追加で、[Zend]の一行は元々あるものをコメントアウトする。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[xdebug]
zend_extension_ts = "C:¥Program Files¥xampp¥php¥ext¥php_xdebug-2.0.0-5.2.2.dll"      ←環境に合わせてください
xdebug.remote_enable=1
xdebug.remote_handler="dbgp"
xdebug.remote_mode=req
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_log="C:¥Program Files¥xampp¥apache¥logs¥xdebug.log"
xdebug.manual_url = http://jp2.php.net
xdebug.collect_params = On
xdebug.dump.GET = *
xdebug.dump.POST = *
[Zend]
;zend_extension_ts = “C:¥Program Files¥xampp¥php¥zend¥Optimizer¥lib¥ZendExtensionManager

Xdebugはこれで終わりかと思うんだけど、ちゃんと動いているのかまだよくわかってない。おかしかったら後々追記。

お次はEclipseの日本語化。Pleiadesというプラグインでできる。こちらのサイトからダウンロードできる。最新版の1.2.1.pというところをクリックしてpleiades_1.2.1.p12.zipをダウンロード。

解凍したフォルダのreadmeにインストールの方法が書いてあるのでその通りに実行。起動時-cleanを付けたショートカットというのは圧縮ファイルの中に入っているeclipse.exe -clean.cmdのことみたい。eclipse.exe本体と同じ場所に置けばこれをダブルクリックするだけで-cleanを付けた状態で起動できる。ちなみにこのパッケージにはJStyleという全角空白、半角空白、タブ、改行(LF、CRLF、CR)を表示可能にするプラグインも一緒に入っているので便利。

続いてはEclipseでsubversionを使えるようにするためのプラグイン。今までのようにファイルをダウンロードして特定の場所に入れるとかではなく、Eclipseを起動させてその機能としてインストールする。やり方はSubclipseのインストール方法というページが画像付で丁寧に書いてあるので非常に便利。

さて、インストールは簡単だったけどつなげるまですごく苦労した。外部サーバーとの接続に鍵ファイルを用いた接続を行っているのだがそれが上手くできない。調べてみるとputtyのツールを毎回起動させたりと書いてあるが、それも動かないしなんかそんなのしたくない。TortoiseSVNの設定をする時も非常に苦労したが同じような状態。決定的な情報は見つからなかったけど書いてある色んなのを組み合わせて試したらできた。TortoiseSVNのファイルを使う方法。

まずTortoiseSVNでの設定を見る。ネットワーク設定で、SSHクライアントとして下記を指定していた。

1
"D:¥Program Files¥TortoiseSVN¥bin¥TortoisePlink.exe" -ssh -l username -i "ppkのパス"

それを元に、Windowsのユーザー環境変数を設定。マイコンピューターのプロパティ→詳細設定→環境変数→ユーザー環境変数の新規で、変数名に「SVN_SSH」、変数値に

1
D:/Program Files/TortoiseSVN/bin/TortoisePlink.exe -ssh -l username -i ppkのパス

と入れる。ダブルクォーテーションを取ったのと、¥をスラッシュに変更。後はEclipseのPHPエクスプローラー上で右クリックし、新規→その他→SVN→SVNからプロジェクトをチェックアウトでTortoiseSVNと同じように設定すればチェックアウトできる。コミットもできた。

次に文字化け。UTF-8でコードを書いてるが表示したら文字化けしてた。これは設定→一般→コンテンツ・タイプでPHPコンテンツタイプを選び、デフォルト・エンコードをUTF-8に設定。ついでにHTMLも。

普段smartyを使っているので何かないかと探したらSmarty Editorとやらが便利とのこと。ダウンロードして、eclipse/pluginに入れて再起動。でもテンプレートファイルを開いてもPHPモードとして開くので、関連付けを変更。設定→一般→ファイルの関連付けでテンプレートファイル*.tplを追加し、下部の関連付けられたエディターでsmarty Editorを選び右のデフォルトボタンを押すと関連付け完了。どんなもんか見てみようと思ったらエラーが!Bad version number in .classs fileとか。新しいEclipseのバージョンに対応していないんだろうか?調べてみてもわからなかったので断念。

あとちょっと使ってみて、エラーチェックはありがたいが全部のファイルをチェックするのでうざい。「問題」の右にある「▽」からフィルターの構成を選び、「選択された要素のみ」に変更すると開いてるのだけチェックしてくれるようになった。

以上、とりあえずインストールして使えるように設定してみた。まだ使い込んでいないので使っていくうちにまた追加した方が良いものや使いやすい設定なども出てくると思うのでそしたら追記。

もしこのエントリを見つけた方でおすすめのプラグインや設定などあれば教えて下さい。

(追記:2007/11/9)
cakePHP1.1を使う際*.thtmlという拡張子を使うんだけどHTMLエディターを関連付けて文字コードをUTF-8にすると保存をUTF-8Nで行う。そして読み込みはUTF-8で行うので文字化けする。

解決法:設定→一般→コンテンツタイプ→PHPコンテンツ・タイプに*.thtmlを追加すると正しく表示。理由不明。

WordPressでコードをキレイに表示するプラグイン

PHPのコードをブログに書いて、キレイに出す方法はないかと探してみたらプラグインを発見。

WP_syntaxというもの。DLして wp-content/pluginsに保存。サーバーにアップして、WordPressの管理画面からプラグインを有効にする。

これだけで良いのかと思ったら色がつかないしコードが出てるだけ。スタイルシートをいじらなくちゃいけないみたい。README.txtに書いてあったcssを追加したら形が整ってきた。なぜかずれるので.wp_syntaxの左マージンを0pxから-2pxに変更してぴったりに。

コードは<pre lang=”PHP” line=”1″> で挟めばキレイに整って色が出る。これは便利だ。

日付の変換で困る

RSS1.0やRSS2.0に加えてAtomフィードを取得するためにMagpieRSSを導入した。勝手にタイムスタンプを吐き出してくれるという事で非常に便利。日付の型がまちまちなので、これで安心。と思ったのが間違いだった。

Atomではタイムスタンプを上手く出してくれない。しかも一部のRSS2.0でも。これでは困る。結局複数の日付に対応させることになってしまった。意味ない。

そして特に困ったのがAtomの日付。RFC3339という形式でよく見かける気はするんだけどPHP4でキレイに変換する方法が見つからない。しょうがないので汚いけどこんな感じで書いた。

1
2
3
4
5
$date_rfc3339 = $item['published'];
preg_match("/(d{4})(?:-(d{2})(?:-(d{2})(?:T(d{2}):(d{2})(?::(d{2})(?:.(d+))?)?(Z|([+-]d{2}):(d{2}))?)?)?)?/", $date_rfc3339, $date_array);
$date_timestamp = strtotime($date_array[1]."/".$date_array[2]."/".$date_array[3]." ".$date_array[4].":".$date_array[5].":".$date_array[6]);
if ($date_array[8] == "Z") $date_timestamp+=9*60*60;
$etr_date = date("Y/m/d H:i:s", $date_timestamp);

なんかあると思うんだけどなー。

HTTP_Client わからん

外部サイトのデータを取る時にHTTP_Requestでデータがあるかどうかチェックしていたが、サーバーの反応がない時に正常にタイムアウトにならないらしい。

困ったのでHTTP_Clientでできないものかと調べていたけど情報が少なすぎて断念。パラメーターとか全然どこに書いてあるかわからない。

しょうがないので後回し。サーバーの反応がないなんてことが起こらないことを祈る。

Google AdSense モバイル広告

Google AdSenseがモバイル広告をスタートさせたとのこと。いつからだろ。サイトはよくチェックするけど「本日の収益額」しか見てなかった。携帯で見る人の広告クリック率が気になるところ。いくつかのサイトで試してみよう。

OpenIDやっといた方が良いのか?

OpenIDの襲来に備えよ!

たぶん、2008年のインターネット(Webサービス)業界はOpenIDによるWebサービスのID体系の統一の荒波に揉まれることになると思う。日本のサービスプロバイダは、OpenIDの襲来に備えるべき。

koress.jp: OpenIDの襲来に備えよ! から引用

噂は昔から聞いていたものの、あまり活用事例を聞いたことがなかったOpenIDだが、アメリカでは既にかなり普及しているのか。Digg, Wikipedia, Yahoo, Microsoftなどが導入や支持を発表しているというのに驚いた。これはもうスタンダードになりそうな雰囲気。

 自分が小さなサービスをたくさん作りたいと思っているだけに、これは日本でも普及してくれると非常に助かる。そういえば昔はてなが同じような事をやっていた気がするがどうなったんだろうか。

日本でも大手がまず始めればみんなが追随するんだと思う。Yahooは既得権益が強いからやらないだろうな。逆にOpenIDのようなことをYahooがやっても面白いのかも。とにかく開発者としてはどこでも良いので使い勝手の良い仕組みができて浸透してくれることを望む。

WordPressとMTの違い01

ずっとMTを使ってきてたのでWPとの違うところに戸惑ったり感動したり。WPに関して色々と情報を探していたけど、前のバージョンだとプラグインを入れるなどしなければ使えなかった機能も標準で付いている様子。もしかしたらMTも最新のはすごく便利になってるのかもしれないけど、とりあえず自分が使っているMT3.3とWPのME2.2.3との違い。

・先の時間を指定して投稿すると、その時間まで表示されない。
これは便利。MTでもcron指定しての自動投稿はあったけど面倒で設定してなかった。

・カテゴリーがタグみたい
管理画面ではカテゴリーと書いてるけど使ってるテンプレートの表示ではタグ。複数指定できるし、もうこれはタグだ。使い慣れていないけど、MTの時カテゴリ選択に困る事が多いから慣れたら便利かも。

・トラックバックとコメントが一緒
MTでは別物として扱われていたけど同じみたい。

こんなもんかな。使っていくうちに色々出てくると思うのでとりあえず。

WordPress インストール

仕事でWordPressをクライアントに使ってもらうことになったので自分でも使ってみることにした。

個人の雑多ブログはMTを使っていて全部MTでいいじゃんと思っていたが、まずインストールの簡単さに感動。これはこっちの方がいいかな?

とはいえインストールでややつまづいたのでメモ。

サーバーにDLしたWordPressファイルをアップロードする時に、FFFTPを使うとphpファイルのパーミッションが606になるけど、それだと500エラーが出て動かなかった。FFFTPのオプション-転送で*.phpを705にしてアップロードすると正常に動いた。

テンプレートやプラグインもたくさんあるので少しずつ環境を整えていこう。