アプリケーションキャッシュ

2012/03/06 | HTML・CSS関連

故あってアプリケーションキャッシュを使う必要がある。HTMLとかがキャッシュされるので便利だなぁ、と思っていたら、なんかいろいろ制約やら問題やらあるっぽい。

  • iOSのSafariで使用する場合、JavaScriptによるキャッシュ初期化処理を入れておかないとひどい目にあう。
    アプリケーションキャッシュの設定をして、iOSのSafariでアクセスすると、ブラウザの設定とかそういうのではキャッシュは削除できない。つまり一度キャッシュされたら最後、再インストールするまでキャッシュされ続ける(と@ITに書いてあった)。キャッシュの設定ファイルに更新日を記述しておくが、それも役に立たないらしい。で、 それを回避するにはあらかじめそういうチェックをするためのスクリプトを用意しておく必要があるとのこと。うっかり忘れたら偉いことになりそうな予感。

var cache = window.applicationCache;
cache.addEventListener(“updateready”, function() {
if (confirm(‘アプリケーションの新しいバージョンが利用可能です。更新しますか?’)) {
cache.swapCache();
location.reload();
}
});
if (navigator.onLine) {
cache.update();
}

  • 上記に関連することだけれど、キャッシュ設定ファイルを設置する際に、<html manifest=”…”>と記述するらしいのだが、このキャッシュ設定ファイル自体をキャッシュしてしまう、という問題があるとのこと。まぁ、そういう意味で日付とかシリアル番号とか入れるのかも知れない。

いずれにしてもうかつには手を出せない気がする。詳しく調べてからチャレンジすることにしょう。

恐るべし、アプリケーションキャッシュ。

window.CanvasRenderingContext2D

2012/03/04 | JavaScript/Ajax

JavaScriptで、ブラウザがcanvasを利用可能かどうかを判別する際に使用する。

window.CanvasRenderingContext2D

使えなければundefined。

window.SVGAngle

2012/03/04 | JavaScript/Ajax

JavaScriptで、ブラウザがSVGを利用可能かどうかを判別する際に使用する。

window.SVGAngle

使えなければundefined。

透過画像の取り扱い

2012/02/27 | PHPの基本

PHPで画像を扱えるのはいいとして、透過画像を扱う際のメモ書き。

画像リソースはimagecreatetruecolorで作成。

$imgObj = imagecreatetruecolor($width, $height);

透明色で塗りつぶすのはこんな感じ。

$bg = imagecolorallocatealpha($imgObj, 0, 0, 0, 127);
imagefill($imgObj, 0, 0, $bg);

画像を上に重ねるときはimagecopy。

$overlay = imagecreatefrompng($path);

imagecopy($imgObj, $overlay, 0, 0, 0, 0, $width, $height);

あと以下も必要かな。

imagealphablending($imgObj, false);
imagesavealpha($imgObj, true);

imagecopymergeがいいかと思ったけど、これだと上手くいかなかった。

PHPでファイルが壊れる時に

とある仕事でデータをファイルに書いて保存する処理を組み込んだ。

ある時、「ファイルが壊れるんだけど」という連絡をいただき、いろいろ調べたのだが結局原因がわからずじまいだった。もちろんflockしてるし、ファイルバッファも0にしている。アクセス数が極端に多いわけでもないので、偶発的に壊れるのであればわかるけれど、時々壊れるというのだから原因がわからない。で、調べてみた。

どうやらマルチスレッド環境にflockが対応していないということに起因するかもしれない、ということがわかった。apacheの設定を調べてみなくてはいけない。preforkならOK、それ以外だとアウト、という感じでいいんだろうか。

どうしてもダメならSQLiteに変更するか。


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