2012年 08月 02日

関連エントリー (画像)

Chrome やら Firefox やら、requestFullscreen に対応しつつあるブラウザでは写真をクリックしたときにそれを使うようにした。Mac の Chrome だと結構いい感じに動く。

今までページ内に Lightbox っぽく表示していたけれど、これだと画面のサイズによっては、ページにそのまま表示されている場合よりも小さく表示されることがあって、これじゃない感が強かった。フルスクリーンだと画面を基準にして最大限努力していますという感じになる。

requestFullscreen の仕様はぜんぜん読んでないので、フルスクリーン化したときのスタイルの計算方法がよくわかってない。

使っているライブラリ (jQuery colorbox) の場合、表示するときに画面サイズを計算して width と height を埋めてしまうので、fullscreenchange で計算させなおしている。document.fullscreenElement にオブジェクトが入っているかどうかでフルスクリーン化されているかどうかがわかるみたいだ。今回の場合、colorbox が閉じられた場合はフルスクリーンモードも終了するようにしてある (逆にフルスクリーンモードが終了したら colorbox も閉じるようにしてある)。

ホバーしたとき、クリックしたらフルスクリーンになりますよってわかるようにすべきだろうけど、いいアイコンとかがない。

2012年 08月 01日

関連エントリー (画像)

パナソニック ラムダッシュ メンズシェーバー 3枚刃 黒 ES-ST23-K - パナソニック(Panasonic)

パナソニック(Panasonic)

5.0 / 5.0

高校生ぐらいのときからずっと使っていた電動髭剃りがさすがに結構駄目になってきて、肌は荒れるわ綺麗に剃れないわという感じだったので、ようやく購入。十分満足です。

トゲトゲしててモンスターっぽくてカッコいいです。

パナソニック ドルツ リニア 音波振動ハブラシ 白 EW-DL11-W - パナソニック(Panasonic)

パナソニック(Panasonic)

4.0 / 5.0

普通の歯ブラシで奥歯を磨くのが苦手でうまく磨けていない自覚があって、電動歯ブラシで解決したらいいなあと思い購入してみた。電動歯ブラシははじめてなので、この製品が良いかどうかはあまりわからないけど、奥歯を磨くのは圧倒的に楽になった。

今まで普通の歯ブラシで磨いていたときは、だらだら長くやっていたけど、電動だとさくさく終わってちょっと物足りない気がしてしまう。歯磨き粉をつけないせいもあると思う。

カルカソンヌ (Carcassonne) ボードゲーム - Carcassonne

Carcassonne

5.0 / 5.0

友達がいないからボードゲーム買ってもしかたないという思いもありつつ、それにしてもボードゲームをものすごいやりたい気持ちが高まって、カルカソンヌを買ってみた。カルカソンヌは

  • 2人からプレイ可能
  • ときどき耳にする (名作らしい)
  • レビュー見ても評価が高い
  • ルールが簡単 (らしい)

という理由から選定した。実際数ゲームを2人でやってみたけど、期待通り面白い。ルールは難しくないし、ポイント計算も1ゲームやれば覚えられるレベルだった。何よりタイルを並べていっていろんな形の町と道ができていくのが面白い。あと手元に何も隠すものがない、というものなんとなく心理的に楽に感じる。

早速追加キットが欲しくなった。

Plack::Session::Store::File でできるだけセッションファイルを作らないようにする

Plack::Session::Store::File はお手軽でちょっとしたものを作りたいときに便利なんですが、いかんせんアクセスしただけでセッションファイルを作りまくるのは嫌なのでなんとかしたい、という話です

結論からいうと以下のようにすればいいようです。ここでは MessagePack を使ってますがシリアライザ自体は別になんでもよくて、serializer に指定するサブルーチンで、$session に値がなければ書きこまないようにしただけです。

この場合、セッションに値を一切入れない場合毎回セッションIDが変化する状態 (不定) になります。CSRF 対策なんかでセッションIDを流用している場合は、セッションIDを確定させるため POST 前の画面を開いた時点では、セッションに適当な値を書きこむ必要があります (セッションを使うところではセッションに値を書くことで明示的にそれを示す)。

my $MessagePack = Data::MessagePack->new;
$MessagePack->canonical;

builder {
    enable "Plack::Middleware::Session",
        state => Plack::Session::State::Cookie->new(
            session_key => 's',
            expires => 60 * 60 * 24 * 365,
        ),
        store => Plack::Session::Store::File->new(
            dir => config->root->subdir('session').q(),
            serializer   => sub {
                my ($session, $file) = @_; 
                return unless %$session;
                my $fh = file($file)->openw;
                print $fh $MessagePack->pack($session);
                close $fh;
            },
            deserializer => sub {
                my ($file) = @_; 
                eval {
                    $MessagePack->unpack(scalar file($file)->slurp)
                } || +{} 
            },
        );
        $app;
|;
2012年 07月 31日

git pull したあとどのファイルが変更されたのか表示する

デフォルトだと

git config --get merge.stat

が true なので表示されるが (表示されるのは git diff --stat ORIG_HEAD 相当)、

git config --local --get branch.master.rebase

が true に設定されていたり(git config --get branch.autosetuprebase が always だったりすると設定される)、 git pull --rebase とした場合、merge ではなく rebase になるため表示されず悲しい。これは

git config --get rebase.stat

が false by default だからで、true にセットしてやればいいようだ。

git config --global --add --bool rebase.stat true
2012年 07月 30日

花火



関連エントリー (画像)

2012年 07月 27日

Excel が自動認識するファイルフォーマット

「UTF-16LE BOM付き タブ区切り」で出力すれば認識される (Microsoft Excel 2008 for Mac でのみ確認)

2012年 07月 26日

関連エントリー (画像)