2012年9月22日土曜日

iOS6 の safari の ajax POST のキャッシュを検証

iOS 6 Safari caches AJAX POST requests — Daniel15

上の記事などで、iOS6 の safari は ajax の POST リクエストをキャッシュしているという話を読んだので検証してみました。

まずは、以下のようなランダムな色を生成する API を作成。
<?php
echo 'hsl(' . rand(0, 360) . ',' . rand(0, 100) . '%, 50%)';

上の API を、$.get と $.post で取得してみて、
返ってきた色を並べるデモページを作成。

デモページ

結果

確かに、iOS6 の safari は ajax の post をキャッシュしているようでした。
しかも、なぜか、GET リクエストのキャッシュよりも強いポリシーで POST リクエストをキャッシュしている模様。

ちなみに、http ヘッダーで Cache-Control: no-cache を指定すれば、普通にキャッシュしなくなるようでした。

デモページ


その他, 細かい事:
- 全く同じ ajax POST リクエストをし続ける限り、ページをリロードしてもキャッシュを使い続ける。
- GET リクエストが挟まると、POST のキャッシュがリセットされる。(上のデモで POST → GET → POST とやるとキャッシュが使われない)


ということで、とりあえず、POST で叩かれる可能性のある API で、iOS6 の safari をサポートする必要がある場合には、Cache-Control ヘッダーを入れるのがほぼ必須かと思いました。

参考: iOS6 Safari Caching $.ajax Results - Stack Overflow


2012年6月17日日曜日

DIY checkip

確認君とか、checkip.dyndns.com みたいなのを何となく自作。
#! /usr/bin/env python

import os
print 'content-type:text/plain;'
print
print 'Your IP address is:', os.environ['REMOTE_ADDR']
$ curl http://checkip.kt3k.com/
Your IP address is: 59.106.13.209

2012年2月10日金曜日

Google +1 ボタンがふわ〜っと出て来て、Google+ でシェアも出来る Bookmarklet

Google +1 ボタンがふわ〜っと出て来て、Google+ でシェアも出来る Bookmarkletを作りました。

見た目的にはこんな感じのが、画面左からひゅーっと出てきます。( Chrome, Firefox 対応 )


Add +1 ← これをブックマークバーに追加 (ドラッグ & ドロップ )


+1 ボタン上にマウスオーバーで、Google+ でシェアするためのツール
チップみたいなものが出てきて、そのまま画面内から Google+ に投稿できます。(要ログイン)


ソースコード


やっている事を大雑把に解説すると、
まず、画面外で div を作って、その中に +1 button のソースコードを書いたものを設置しています。そして、+1 の解釈用 JavaScript を dom 内に取り込んで、+1 ボタンをレンダリングしつつ、div のポジションを画面内に設定して、CSS3 transition をトリガーして、div を画面内にスライドさせています。


2012年1月18日水曜日

2012年1月18日でも wikipedia 英語版を見れるようにするブックマークレット

特に政治的な意味はありませんが、
2012年1月18日でも wikipedia 英語版を見れるように
するブックマークレットを作りました。


これをブックマークに保存!

上のブックマークレットをブックマークに登録した後に、
en.wikipedia ページで上のブックマークレットを実行すると、
元の記事ページが見れます。


ソースコード
(function() {

var ol = document.getElementById("mw-sopaOverlay");
ol.parentElement.removeChild(ol);

var list = document.body.children;
for (var i = 0; i < list.length; i ++) {
    var dom = list[i];
    if (dom.tagName === "DIV" || dom.tagName === "div") {
        dom.style.display = "block";
    }
}

})();

やっていることとしては、まず、id="mw-sopaOverlay" の div を削除してから、body 直下の div の display が none になっているので、それを全部 block に戻しています。

2011年12月28日水曜日

jQuery UI Datepicker で、日本語表記にする設定例

$('#datePicker').datepicker( "option", {
    dayNamesMin: ['日', '月', '火', '水', '木', '金', '土'],
    monthNames: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
    showMonthAfterYear: true,
    yearSuffix: '年'
});

2011年11月28日月曜日

さくらのレンタルサーバに git をインストールする方法 version 2011/11/28

課題

さくらのレンタルサーバに git をインストールする。

環境

さくらのレンタルサーバ スタンダード

インストール方法

$ #create git install directory($HOME/usr/local)
$ cd
$ mkdir $HOME/usr
$ mkdir $HOME/usr/local

$ #create git source directory
$ cd
$ mkdir $HOME/src
$ mkdir $HOME/src/git

$ cd $HOME/src/git
$ wget 'http://git-core.googlecode.com/files/git-1.7.7.4.tar.gz'
$ tar xzf git-1.7.7.4.tar.gz
$ cd git-1.7.7.4
$ ./configure --prefix=$HOME/usr/local
$ gmake prefix=$HOME/usr/local
$ gmake prefix=$HOME/usr/local install
$ export PATH=$HOME/usr/local/bin:$PATH

$ git version
git version 1.7.7.4

参考

2011年11月26日土曜日

さくらのレンサバで codeigniter

さくらのレンサバで codeigniter を使いたいときの
.htaccess の書き方メモ。

CI-2 系だと公式のおすすめ .htaccess は
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
となっていますが、これだとさくらのレンサバでは動きません。

ポイントとしては、まず、RewriteBase /my_dir/ というディレクティブがいる事。(これをやればまずはリライト自体は動く。)

もう一つは RewriteRule の index.php の後に ? がいる事。(これをやらないと CI の index.php へわたる引数がおかしくなるらしく、何も動きません。)

まとめると、
RewriteEngine on 
RewriteBase /my_dir/
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ index.php?/$1 [L]
(codeigniter のバージョンは 2.0.3)