hitode909の日記

以前はプログラミング日記でしたが、今は子育て日記です

夢、会社の飲み会に有名な映画監督と名乗る人が来る。お笑いや不動産、映画界でも活躍されているIT業界の人みたいな扱いだった。向かいに座って普通に雑談してたけど誰なのか。
夢、コンサートホールでDJがなんかやってる。タイムカード見たら2:50~とか見えて、眠いなって思ったけど睡眠中なので眠いと思う。曲はどんなだったか覚えてない。
夢、しばゆーが、フロッピーに磁石を近づけると読めなくなるっていうブログを書いて、ブクマを集めるのだけど、その試しに使ったフロッピーが殺人現場に落ちてたやつで、証拠隠滅を図ったのではないか、という疑惑の渦中にいる。最近の若い人はフロッピーに磁石くっつけちゃいけないの知らないのか〜って思った。
夢、鴨川にでかい鳥が飛んでて、降りてきて手に止まる。プリッツあげたらおいしいって言ってた。ポッキーいる?って聞いたらそれはいいって言ってた。

やり込み要素

三条にDEN-ENっていうパブがあって,ビールいっぱいあって,広々としてて,安いからよく行く.
メンバーズカード作るとまず5%オフになって,ずっと通いつめると,位が高まって割引率が上がっていく.6回でシルバー,20回でゴールドになれる.
たぶん3年間くらい通ってて,きのう通いつめすぎてついにゴールドになってしまった.月に1回行くと3年くらいかかる.これでいつでも15%オフになってしまう.5000円分飲んだら4250円になるのでなかなか安い.


しかしゴールドの次はないので,これまでは競技性とか,やり込み感があったのが,ただの食事になってしまって,これまでのような情熱は失われてしまった気がする.
これをしましょう,その次はあれ,できるかな,みたいな課題を用意しておくと,課題がある間は楽しいけど,クリアしてしまうと,なんでこんな物に夢中になってたのかというような,空虚な気持ちになる気がする.書道とかなら,うまくなったら能力が高まるけど,得たものが割引率というのは空虚な気もする.
何もなくてもただやり続けるような形になると,長続きできると思う.日記書くのとか,とくにやり込み感ないけど,日記書くのがおもしろいから毎日書いてる.

f:id:hitode909:20141215095651j:plain

Plack::Middleware::Bootstrapというのを作った

社内のプロジェクトで,JSON APIのドキュメントをHTMLでレンダリングして,api.example.com/doc とかで開発中に見れる,というのを作って使ってる.
ドキュメント見れるのは便利なのだけど,スタイルの当たってないHTMLで,見た目が悪かった.
とりあえずBootstrapでも当てとくかと思ったので,HTMLにBootstrapを当てて配信してくれるPlack Middlewareを書いた.


GitHub - hitode909/Plack-Middleware-Bootstrap: A Plack Middleware to prettify simple HTML with Botstrap design template


CPANにも上げた.
Plack::Middleware::Bootstrap - A Plack Middleware to prettify simple HTML with Bootstrap design template - metacpan.org

Perlでホームページを作りたくなったら,以下のようなコードを書くと思う.

use strict;
use warnings;
use Plack::Builder;

my $app = sub {
    return [ 200, [ 'Content-Type' => 'text/html; charset=utf-8' ], [ <<HTML ] ];
<h1>こんにちは!!</h1>
<p>ようこそ!!ここは僕のホームページです!!</p>
<p>今日は<code>Perl</code>を書きました!!</p>
<p>以下は僕の趣味と特技です</p>
<table>
  <tr><th>趣味</th><td>マリンスポーツ</td>
  <tr><th>特技</th><td>排水溝のぬめり取り</td>
</table>
HTML
};

builder {
    $app;
};

これでもいいけど,どこか見た目が悪い.どこかジオシティーズを思い出す.

f:id:hitode909:20141215193509p:plain


そこで,Plack::Middleware::Bootstrapをロードします.enableするだけ.

use strict;
use warnings;
use Plack::Builder;

my $app = sub {
    return [ 200, [ 'Content-Type' => 'text/html; charset=utf-8' ], [ <<HTML ] ];
<h1>こんにちは!!</h1>
<p>ようこそ!!ここは僕のホームページです!!</p>
<p>今日は<code>Perl</code>を書きました!!</p>
<p>以下は僕の趣味と特技です</p>
<table>
  <tr><th>趣味</th><td>マリンスポーツ</td>
  <tr><th>特技</th><td>排水溝のぬめり取り</td>
</table>
HTML
};

builder {
    enable "Bootstrap";
    $app;
};

f:id:hitode909:20141215193510p:plain
このとおり,見た目がしゃきっとした.コードはちゃんとコードと分かるような色がついている.
Bootstrapの力でiPhoneでもいい感じに見れる.
f:id:hitode909:20141215194719p:plain

実装

レスポンスのHTMLをTreeBuilderでパースして,headとbodyを取り出して,Bootstrapのテンプレートに突っ込んで返す,という作戦を展開している.
もともとあったbodyのクラスとかなくなるけど,bodyにクラス振りたいような場合は,こんなのを使わず普通にBootstrap読み込めばよいと思う.