✖
高校生ぐらいのときからずっと使っていた電動髭剃りがさすがに結構駄目になってきて、肌は荒れるわ綺麗に剃れないわという感じだったので、ようやく購入。十分満足です。
トゲトゲしててモンスターっぽくてカッコいいです。
普通の歯ブラシで奥歯を磨くのが苦手でうまく磨けていない自覚があって、電動歯ブラシで解決したらいいなあと思い購入してみた。電動歯ブラシははじめてなので、この製品が良いかどうかはあまりわからないけど、奥歯を磨くのは圧倒的に楽になった。
今まで普通の歯ブラシで磨いていたときは、だらだら長くやっていたけど、電動だとさくさく終わってちょっと物足りない気がしてしまう。歯磨き粉をつけないせいもあると思う。
関連エントリー
- 歯医者 前回のときは磨き残し率が50%ぐらいあった気がして結構ショックを受けたんだけど、今回は3%ぐらいまで落ちて嬉しかった。 フロスをはじめた や...
- 電動ハブラシを買いかえた パナソニック 電動歯ブラシ ドルツ 黒 EW-DP33-K cho45 パナソニック(Panasonic) ★ 5.0 / 5.0 cho4...
- 貴様はピカールを知っているか 日本磨料工業 ピカール 金属磨き 300g 12100 cho45 日本磨料工業(Nihon Maryo Kogyo) ★ 5.0 / 5....
- パナソニック ジェットウォッシャー ドルツ はフロスの代わりにはらない パナソニック 口腔洗浄器 ジェットウォッシャー ドルツ 白 EW-DJ61-W cho45 パナソニック(Panasonic) ★ 3.0 ...
- あつ、フロス・虫歯・糸ようじ 去年歯医者で一通りの治療が終わったあと、フロスの必要性をかなりしつこく言われたので、最初は糸ようじを使い、途中から普通の糸フロスを使ってみた...
✖
友達がいないからボードゲーム買ってもしかたないという思いもありつつ、それにしてもボードゲームをものすごいやりたい気持ちが高まって、カルカソンヌを買ってみた。カルカソンヌは
- 2人からプレイ可能
- ときどき耳にする (名作らしい)
- レビュー見ても評価が高い
- ルールが簡単 (らしい)
という理由から選定した。実際数ゲームを2人でやってみたけど、期待通り面白い。ルールは難しくないし、ポイント計算も1ゲームやれば覚えられるレベルだった。何よりタイルを並べていっていろんな形の町と道ができていくのが面白い。あと手元に何も隠すものがない、というものなんとなく心理的に楽に感じる。
早速追加キットが欲しくなった。
関連エントリー
- ✖ 単に可愛い女の子のレベルをあげるだけのハクスラ系のゲームをやりたいと日々考えていて、3DS版の閃乱カグラとか、無双シリーズとか、淡々とレベル...
- スプラトゥーン2 は「塗りで貢献できる」ゲームじゃないから騙されるな しばらく頑張ってやってたけど、すっかり自分の中の評価は落ち着いてクソゲーとなった。 ランク46、ガチは全ルールA-ぐらいまでやった。ただし表...
- ポケモン Go 僕はポケモンシリーズを一切プレイしたことがなくて、子供のときはコロコロか何かについてきたポケモンのモンスター一覧を眺めて「進化先が複数あるポ...
- ErgoDox について調べた(買わないけど) ヤパチーでErgoDox を見て面白いなあと思ったので調べてみた。 ネットの記事だとErgoDoxって、「とにかく健康だ!! 筋肉だ!!!」...
- ✖ 単に可愛い女の子のレベルをあげるだけのハクスラ系… | Wed, Sep 23. 2020 - 氾濫原 とか書いたけどエピックセブンというス...
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;
|;



