Firebugのバグ?「このページにはJavascript がありません」

JavaScriptで本格的にプログラミングしているならFirebugを活用している人は多いはずだ。しかし時々挙動不審・・・。

ある時突然「このページにはJavascript がありません」と怒られる時がある。「いやいやそんなことないって」「ソース見ればJavaScirptいっぱいあるじゃん」。しかし、いったんこのメッセージが出ると、リロードしようが何しようが「このページにはJavascript がありません」。

って実は、「何しようが」というのは間違い。例えばブラウザを一旦閉じて再度やり直すとうまくいく。原因は何かと調べたら。

一つのタブでFirebugを使っている最中に、別のタブを開いてFirebugを使おうとすると「このページにはJavascript がありません」と怒られるらしい。つまりFirebugでの作業は一つのタブでしか同時にできない、ということのようだ。

何とかならないものだろうか。

realpathの嫌な仕様

2011/11/27 | PHPの基本

realpathは引数として与えられた文字列に対してシンボリックリンクや「./」、「../」を解析してちゃんとした(?)絶対パスを返してくれる関数。と単にそれだけだと思ってた。それだけの機能のほうが絶対いいに決まってる。

しかし調べたら違ってた。ちゃんとした絶対パスを返す部分に関してはそれでよかったんだけど、返される絶対パスを実際に走査して、その有無も調べるらしい。そしてその構成が実在しなければエラーになる。そしてアクセス権がなくてもエラーになる。

仕様だからいかんともしがたいのだが、果たしてそんな必要があるのか。ファイルの有無なんてfile_exists関数を使えばいいのであって、realpathは単に正規化したパスを返せばそれでいいのに。

あーむかつく。

pChart

2011/11/24 | pChart

グラフをPHPで描画する必要があり、pChartを使うことにした。最近はFlashやJavaScriptでグラフを描画させるのが流行だが、今回はクライアントのブラウザが貧弱な可能性があるので、サーバサイドで処理をして絵柄を出力する方法を採用することにした。

PHPでのグラフ描画は久しぶり。検索してヒットしたのがpChart。昔使っていたphplotは検索でほとんどヒットせず(あんまり使われてないのか)、jpGraphは有償。ということで、見た目も悪くないpChartを使ってみることにした。

サンプルを試すとNoticeレベルのエラーが発生する。

Notice: Uninitialized string offset: 0 in /home/cwj/cwj.minibird.jp/public_html/pchart/pChart/pData.class on line 127

ということでファイルを修正する。pChart/pData.classの125行目($ID=0;の下)に以下の行を挿入。

if(!is_array($this->Data)){$this->Data=array();}

初期化忘れがあるようだ。これでエラーは出なくなったが、ダウンロードしたファイルに含まれるExample1.phpにアクセスしても何も出力されない。なぜ、なぜ。しかたなくひとつずつ確認していくことにしたら、一番最後のグラフを出力しているところで処理が止まっている。ここ。

$Test->Render(“example1.png”);

やむなくソースコードを確認する。確認したのはpChart/pChart.class。で、見てみたらimagepngでファイル名の引数を与えている!。サーバ内を確認すると、確かにexample1.pngができている。そういうことだったのか。

で、調べてみたら別のメソッドが用意されていたStroke()ってやつ。こちらに書きなおして、再度ウェブからアクセスすると無事グラフが描画された。素人的な考えだけど、サンプルスクリプトはStroke()を使ってくれたほうがいいのに。何も出力されないので、PHPを始めたばかりの人だと、使用を諦めた人もたくさんいるんじゃなかろうか。

 

call

関数.call(オブジェクト[[, 引数1],引数2,…])

applyと似たような感じ。PHPでいうところのcall_user_func_arrayとcall_user_funcみたいな関係っぽい。

apply

関数.apply(オブジェクト[, 引数])

「関数」を実行するのだが、その際、「関数」内で使用する「this」を、「オブジェクト」で代用する、ということらしい。「関数」には「引数」を渡せるらしい(オプション)。

prototypeによる継承よりも簡便らしい。


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