ajaxでシステムエラー

2007/01/19 | JavaScript/Ajax
高橋登史という人が書いた「入門Ajax」という本があって、それを見ながらAjaxを書いている(汎用ライブラリも提供されているので便利)。しかしある環境でどうしても非同期でサーバ側のプログラムにアクセスできない。なぜ?、なぜ?。
ブラウザのJavaScriptのエラーダイアログには「システムエラー: -1072896658」。ん?。意味がわからない。でこの数字で検索をかけると先人は必ずいるもので原因もわかった。
どうやらこれはIEのみに発生する問題のようで、HTTPサーバから送信されるキャラクタセットヘッダをしっかり設定しないと問題が発生するらしい。設定しておくべきディレクティブはhttpd.confの以下の行。

AddDefaultCharset none

これを正しく(例えばUTF-8とか)設定することで問題は出なくなった(実際は.htaccessのPHPの設定で「default_charset UTF-8」を指定)。
IEっていまだにイレギュラーなんだなーと実感しました(しかしそれでもデファクトスタンダード・・・)。

SimpleAPIウェブページサムネイル・・・動いてないじゃん

せっかく導入してみたSimpleAPIのウェブページサムネイルサービス。
しかしまともに動いていないことが判明した。試用したサイトで、新しくリクエストしたページのサムネイルがぜんぜん返ってこない。「もしや」と思ってSimpleAPIの開発者ブログをのぞいてみた。コメントが1件ついていて、どうやら去年の11月からまともに動いてないような感じ。
これは使えない・・・。別サービスに乗り換えるか、新規で作るか。早速暗礁に乗り上げてしまった。

画面をデュアル構成にした

2007/01/16 | その他

PHPとまーったく関係ない話だけど・・・。
現在メイン環境はThinkPadのT42。ゲームをするわけでもなく、Photoshopでものすごく重い処理をすることもない。だからまだ当面は現役マシンで行く予定(ハードディスクは40GBしかないので足りなくて、既に80GBを用意してあるのだが、仕事が詰まって入れ替えできない)。今まではこれに17インチ(1280×1024)の液晶をつないでいたが、表示領域が足りなくなったので20インチを買った(表示領域1600×1200)。買ったのはDELLの2007FP。本当は30インチか24インチワイドを買おうと思っていたけど、よくよく調べたらビデオチップが対応していないような感じだったので、やむなくこれに落ち着いた。
しかし問題。最近このノートの調子がよくなかったのだが、新しく来た20インチ液晶につなぐとうっすらゴーストがでる。「え、なんで?」と思いいろいろ調べたら、他のPCだと問題なさそう・・・ThinkPadの問題かよ・・・。世の中は表示領域がワイドなものが全盛なようで、そちらのほうが安い。仕方なしにこの液晶を買ったのに、なんとも皮肉なことです。
しかしこのDELL 2007FP(正確にはDELLのモニタ)、割といいですね。いいところは以下の4点。

■安い!(他のメーカーより、ということだけど)
■USBハブが付いてる
■入力端子の種類が豊富
■スタンドにつけた状態で液晶画面の位置をかなり下までさげられる

4つ目はすごいです。今まで使ってた17インチよりもいい感じ。とても使いやすいです。接地面から5センチくらいまで下げられます。アームを買おうかと思ってたけど、その必要もなかったです。
入力端子が豊富なのはきっといろいろ使い道があると思うのだけれど、ビデオ系はあまりやらないし、テレビもほとんど見ないので、使い方がわからんです。

いい買い物でした「DELL 2007FP」(ThinkPadの調子が最良であったら・・・の話ですが)。

Pagerとmod_rewriteで

2007/01/14 | その他PEAR全般

Pagerがきわめて有効だということがわかった。
次はPagerをPATH_INFOに対応させる方法の検討。
せっかく「mojavi」「mod_rewrite」でURLの短縮に成功したのだから、次はこれらの中でPagerを使うことで、どんどん開発が簡単になる(そしてSEO的にも優しい)。
しかしPagerをフツーにつかっていてはPATH_INFO的な使い方はできない。デフォルトでは指定されたURLの末尾に?pageID=XXXついてしまうからだ。ちなみにmod_rewriteでは以下のURLでアクセスできるようにしてある。
/(モジュール名)/(アクション名)/

でPagerを使う場合は、Pagerに渡すオプションの値を以下のように設定した。
$pagerOptions[‘append’]=false;
$pagerOptions[‘path’]=SCRIPT_PATH . $controller->getCurrentModule() . ‘/’ . $controller->getCurrentAction() . ‘/page/';
$pagerOptions[‘fileName’]=”%d”;

‘append’のところをfalseに設定し、これでQUERY_STRINGでpageの自動付加を抑制。
‘path’と’fileName’の区切り方はまたおいおい勉強するとして、”%d”と書いてあるところがミソ。ここにページ番号が入ってくれる。
現在諸々上記の内容で開発中。すごく快適!。

キャッシュして軽いページを(Cache_Lite)

2007/01/13 | その他PEAR全般

これも秋元氏の書籍に誘発されてチャレンジした。元来処理内容をキャッシュするなんて、よほどのアクセス数でもない限り必要がなかったわけだが(アクセス数がないとサーバに負荷がかからないから)、マッシュアップしたサービスを作成する際は、相手のサーバのことも気にしなくてはいけない(利用規約に制限事項もあるかもしれない)。ということで、データをキャッシュ。これもPEARを利用すれば簡単。

<?php
 require_once(‘Cache/Lite.php’);
 $cacheOption=array();
 $cacheOption[‘cacheDir’]=’./cache/';
 $cacheOption[‘lifeTime’]=1*24*60*60;
 $myCache=new Cache_Lite($cacheOption);
 if(!$cachedData=$myCache->get($cacheId)){
  //キャッシュにヒットしなかったら
 }else{
  //キャッシュにヒットしたら
 }
?>

ファイルを読み込んで、コンストラクタの引数にオプションを与える。オプションはキャッシュデ使用するディレクトリとか有効期限とか。キャッシュしたい内容は、IDごとに管理し、ID自体は自由に設定できる。
つまりなんでもキャッシュしておけるので、バイナリデータ(例えば画像とか)でもデータベースから取り出したデータでもOK。

簡単だから諸々の場合に応用できる。これも使えるライブラリだ。


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