複雑なライブラリを読むために

先日紹介したPearのグラフツール「Image_Graph」。強力なツールではあるのだが、マニュアルがそろっていないことが難点だ。使い方もややこしいような気がするのだが、おそらく「ある種類のオブジェクトを生成する方法が複数ある」ことが原因のように思う。結局生成したオブジェクトが、どこから派生したものなのかさっぱりわからないので、そこから何ができるのかさっぱり・・・なのだ。そういう複雑なクラスを読むために便利な関数がある。PHPマニュアルにある「クラス/オブジェクト関数」だ。
例えば「get_parent_class」。この関数で親クラスの名前がわかる。これを使って親クラスの名前を知れば、通常クラス名にあわせてファイル名が命名されているのだから、どのファイルを参考すればよいのか判断がつくはずだ。
それに「get_class_methods」。これを使うと、使用可能なメソッドがわかるし、「get_class_vars」でデフォルトのプロパティもわかる。デバッグ時には結構有効に使える関数群だ。

しかし・・・しかしだ。「Image_Graph」は難解だ。こなれるまでまだ1年くらいかかりそう(いや、おそらくそれ以上・・・)。

PHPに関するアンケートのダイジェスト

2007/05/16 | その他

先日公開したPHPアンケートだが、既に80人を超える方から回答をいただいている。回答をいただいた方、ありがとうございます。
で、アンケートプログラムの機能を一部先取りして、回答のダイジェストを閲覧できるようにしてみた。チェックボックス式かラジオボタン式の設問は回答を集計してグラフで見ることができるようにした。アンケートのダイジェストは以下のURLから閲覧できるので、興味のある方はどうぞ。いろんなウェブをみていると「mojaviなんて今さら」とか思ってしまうのですが、実情は結構がんばっているようで、意外な発見もあってなかなか興味深かった。

[Q1] フレームワークは使用していますか。よく使用されて…
[Q2] PHP標準のライブラリ「Pear」は普段使用されていますか。
[Q4] 普段使用しているPHPのバージョンを教えてください。
[Q5] あなたの普段よく使う開発環境を教えてください。

引き続き、回答よろしくお願いします。
回答数が集まれば結構面白いデータになるような気がするので、是非PHPユーザさんにご紹介ください。携帯からもアクセスできるので、以下のURLを告知してもらうのがベストと思います。

http://php.tekmemo.com/?eid=523121

メーリングリストphp-usersに投稿できない件

2007/05/15 | その他

MLに投稿できなかったわけだが原因がわかった。
おそらくphp-usersを担当するメールサーバに何らかの問題が起こっているのだと思う。

まず自分のメールサーバを確認してみた。すると、php-users宛のメールが全てキューにたまっていた。ためしに、先方のメールサーバに直接telnetして接続してみると「rcpt to」コマンドに対するレスポンスが異常に遅い。数十秒ほどかかってしまっている。おそらくこのせいでキューにたまったままの状態になっているのだろう(Gmailではそれがエラーとして取り扱われたんだと思う)。ここ最近でも何通かMLでやり取りされているが、おそらくそういったレスポンスの遅さを許容できるようなメールサーバなのだろう。

原因がわかったので、メールソフトのsmtpサーバに先方のメールサーバを指定して無理やり送信(ちゃんと送信できた)。調査依頼のメールを送ろうかとも思ったけど「なんだかなぁ」って思ったのでとりあえず放置。こういう場合はどこかトラブル報告みたいな宛先があったらいいのにな、と思ったのであった。

Image_Graphを使ってみる

2007/05/15 | 画像ツール

さっそくImage_Graphを使ってみる。
こちらは安定版がでておらず、まだアルファ版段階。
またImage_GraphはImage_Canvasに依存している(こちらもおそらくアルファ版)。しかしアルファ版のせいかどうかわからないが・・・なんとなく明瞭でない(依存はしているのだがインストール時の整合性が取れていないのかもしれない)。何はともあれインストール。
これで使えればいいのだが次にフォントの問題。日本語フォントを使わなくてもエラーが続出する。フォントを正しく指定しておくことが必要なようだ。
○フォントをインストールしておく
○設定ファイルにインストールしたフォントを登録する

ここでまた問題。フォントをインストールするディレクトリは指定できるのだが、設定ファイルをどこに設置するかは指定できない。つまりPearでImage_Canvasをインストールしたディレクトリ内の所定のファイルを編集しなくてはいけないのだ。つまりroot権限が必要(もしくはなんらかの代替処置が必要)。実際に作業した内容は以下のようになる。
(1) (Pear Directory)/Image/Canvas/Fonts/fontmap.txtを修正
 使用するフォントを登録する(記述方法はファイルを見れば簡単)。
(2) フォント格納用ディレクトリを作って、そこにフォントをインストール。
 PHPlotと同様のフォントで問題ないです。
(3) プログラム記述時、以下のように記述する。
 define(‘IMAGE_CANVAS_SYSTEM_FONT_PATH’,’(フォントのディレクトリ)’);
 require_once(‘Image/Graph.php’);
 requireする前にdefineしておく必要あり。

グラフの記述方法はサンプルを参考にするしかない。まだドキュメントが準備されていないからだ。もちろんソースを読めばわかるとは思うが、このライブラリ、かなり面倒。少し努力したが一瞬にして萎えてしまった。ということで、相当の強者でないと使うのは大変だろう。
かなり強力なツールではあると思うのだが、残念。ドキュメントの充実を期待する限りだ(どうもコミットしようという気になれない・・・)。

どなたかMLへ代理投稿を

2007/05/14 | その他

どういう訳か、php-usersのMLに投稿できない。
今まで使ってたメールアドレスからも投稿できないし、Gmailで新規入会してもエラーがかえってくる。

Technical details of permanent failure:
PERM_FAILURE: SMTP Error (state 12): 550 5.7.1 message content rejected

何が悪いの?。スパム扱いされてる?。NGワード?。
理由わかる人がいたら教えてください。

普段使いのメアドではエラーメールもかえってこないし・・・。
http://php.tekmemo.com/?eid=523121

5月末までに何通集まることか・・・。


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