プロキシキャッシュ対策

http://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/405.html

プロキシキャッシュ対策
HTTP/1.1 にはこの問題に対処するための Cache-Control ヘッダが用意されている。次のような Cache-Control ヘッダをHTTPレスポンスに記述することによって、Webアプリケーションからブラウザに送るコンテンツが、途中の経路上でむやみにキャッシュに記録されたり再利用されたりしないように、プロキシサーバやキャッシュサーバに指示するというものである。

Cache-Control: private
Webサーバから返されるコンテンツがただ一人のユーザのためのものであることを示す。このコンテンツは、複数のユーザが共有されるキャッシュに記録されるべきではないことを表している。ただし、これは、一人のユーザのみが利用するキャッシュ(ブラウザのキャッシュ等)への記録を禁じるものではない。Cache-Control: private のみが指定されている場合、何らかのキャッシュへの記録が行われるおそれがある。
Cache-Control: no-store
このヘッダは、Webサーバから返されてくるコンテンツをキャッシュに記録するな、という指示である。
Cache-Control: no-cache
一見「キャッシュを使うな」のように見えるこのヘッダが実際に意味するところは少々ニュアンスが異なる。このヘッダの意味は、いちどキャッシュに記録されたコンテンツは、現在でも有効か否かを本来のWebサーバに問い合わせて確認がとれない限り再利用してはならない、という意味である。
Cache-Control: must-revalidate
このヘッダは、キャッシュに記録されているコンテンツが現在も有効であるか否かをWebサーバに必ず問い合わせよ、という指示である。
これらのヘッダを適宜取捨選択して使用することになるが、これらをすべて指定して次のようにしても構わない。

  Cache-Control: private, no-store, no-cache, must-revalidate

HTTP/1.0 の考慮
Webサーバとブラウザの通信経路上に存在するプロキシサーバやキャッシュサーバをすべてWebサーバ側で把握することは困難である。場合によっては、古い設備が存在し、HTTP/1.1 の Cache-Control ヘッダを解さないプロキシが存在するかもしれない。

このような心配のある場合は次のヘッダをHTTPレスポンスに含めると、相手のプロキシが対応してくれる場合もある。

  Pragma: no-cache

ただし、この方法が常に有効であるという保証はない。

残したくないときは

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">

で、okってこと・・・?

MySQLでSQLを発行する場合の最大長

SQLの最大長の確認は下記コマンドで確認できます。

mysql> show variables like 'max_allowed_packet';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 16777216 |
+--------------------+----------+

これだと16M程度。

/etc/my.confで設定できるようでした。
max_allowed_packet=32M

mysql> set max_allowed_packet=33553408;

とかでmax_allowed_pachetの中身変わるとのこと。

Text::Xslateのmemo

synopsisのloopsにLoop iterators are partially supported.とあったのでmemo。

    [% FOREACH item IN arrayref %]
        [%- IF loop.is_first -%]
        <first>
        [%- END -%]
        * [% loop.index %]
        * [% loop.count     # loop.index + 1 %]
        * [% loop.body      # alias to arrayref %]
        * [% loop.size      # loop.body.size %]
        * [% loop.max_index # loop.size - 1 %]
        * [% loop.peek_next # loop.body[ loop.index - 1 ]
        * [% loop.peek_prev # loop.body[ loop.index + 1 ]
        [%- IF loop.is_last -%]
        <last>
        [%- END -%]
    [% END %]

あと、セットしたパラメータをエスケープさせたくないときは
Utilのmark_rawを使う。

use Text::Xslate::Util qw(mark_raw);
・
・
・
        tag => mark_raw($self->show_tag()),
・
・
・

print() と syswrite()

print

ファイルへの出力は通常の print , printf の引数に open で取得したファイルハンドルを指定します。それ以外は通常の print文と変りありません。


syswrite

システムコール write(2) を用いて、指定した ファイルハンドルへ指定バイト分のデータの出力を試みます。 printと異なりデータのバッファリングを行わず、実行時すぐにデータをファイルへ出力します。

http://www.site-cooler.com/kwl/perl/7.htm#7-3

ただ、printはバッファリングの切り替えができ、オフにするとパフォーマンスがかなり上がります。

jquery.countdown.jsのサンプル

http://keith-wood.name/countdown.html

まぁあまり使う用途もないですが
サンプル作ってみました。

http://fukumura.org/20101030/jquery_countdown.html

<div id="countdownText">
<script type="text/javascript">
$(function(){
    $("#countdownText").countdown({
        until : new Date(2010,9,31,12,00,00),
    });
});
</script>
</div>