2010年 09月 15日


@amasawa さんへ

心底軽蔑とはなんだったのか - Togetterまとめ というのがあって (id:kageroh_ さんによる纏めです)、さっき日記のリファラを見ていて気付いてなんだなんだと思ったのですが、なんか誤解の元の編集をされていて困ったというところです。一応誤解を解くためにいっておくと以下の通りです。

まず僕は $ 記号がどうとかいう話に関しては殆どどうでもよいと考えていて興味があまりなかったので (機械生成用でなければならないという話の根拠には興味がありましたが、調べたら仕様にハッキリ書いてあったので)、深く追っておらず、また @uupa さんのこともフォローしていないし、僕個人的には uupa.js にも今そんなに興味がないので、そもそもの流れがいまいち読めておらずそれに殆ど絡んでもいませんし、Twitter でも $ なんちゃらに関しては 1言2言言及したに留まって頭から消えさっていました。

日記に書いたことは上記 $ がどうとかいう話とは関係なく、ネットの特定のメディア記事に関して思ったことを書いたまでで、@amasawa さんとは全く関係ありませんし、そもそも僕は上記の通り $ なんちゃらに関して興味があまりなくて流れを追っていないうえに、Twitter において @amasawa さんをフォローしていない (ブロックもしてませんが) ため (ダイアリは興味深く読ませてもらっています)、その発言自体を読んでいなかったため、日記にてそのことに言及することはありえないです。

いろいろとしがらみがあってハッキリ書けないことが多く、もちろんそれなら書くなという話ですし、前にも誤解を元にこんなことがあり卑怯だと言われましたが (まぁ卑怯なのは前のときも言った通り事実なのですが、誤解を元に卑怯と言われるのは本意ではありません)、いずれにせよ僕が曖昧な書きかたをしがちなのが悪いのだろうとのことと、僕が勝手なことを書いているのはその通りですが、「書くな」と言われましても、日記に思ったことを書くというのは、インターネットをはじめた当初からやっていることで、なかなかすぐにはい辞めますと、そうはいかないので、どうしたものかなあと思うところですが、いかがでしょうか……

Plack-Middleware-StaticShared

http://github.com/cho45/Plack-Middleware-StaticShared

js とか css を纏めていっこにして配信してくれる Middleware を書きました。Plack::Middleware::JSConcat というが既にありますが、キャッシュコントロールがうまくできなかったのと、css も纏めたかったのでつくった次第です。

      enable "StaticShared",
          cache => Cache::Memcached::Fast->new(servers => [qw/192.168.0.11:11211/]),
          base  => './static/',
          binds => [
              {
                  prefix       => '/.shared.js',
                  content_type => 'text/javascript; charset=utf8',
                  filter       => sub {
                      WebService::Google::Closure->new(js_code => $_)->compile->code;
                  }
              },
              {
                  prefix       => '/.shared.css',
                  content_type => 'text/css; charset=utf8',
              }
          ];
        [% css = [
          '/css/base.css',
          '/css/site.css',
        ] %]

        [% IF debug %]
        [% FOR c IN css %] 
        <link rel="stylesheet" type="text/css" href="[% c %]"/>
        [% END %]
        [% ELSE %]
        <link rel="stylesheet" type="text/css" href="/.shared.css:[% version %]:[% css.join(',') %]"/>
        [% END %]


        [% js = [
          '/js/jquery-1.3.2.min.js',
          '/js/site-script.js',
        ] %]

        [% IF debug %]
        [% FOR j IN js %] 
        <script type="text/javascript" src="[% j %]"></script>
        [% END %]
        [% ELSE %]
        <script type="text/javascript" src="/.shared.js:[% version %]:[% js.join(',') %]"></script>
        [% END %]

みたいに使えます。version + ファイル名 をキーにキャッシュをつくり、クライアントにもほぼ無期限のキャッシュをさせます (update した際に version を更新する必要があります)。

悪意をもった人によって version を変えてアクセスされまくると、キャッシュが溢れそうなので verify する仕組みがほしいですがいいのが思いつかなかったのでとりあえず放置してあります。