« 2012年7月 | メイン | 2012年9月 »

2012年8月28日

Plack::App::Directory::Markdownその後

0.02出した。

  • Plack::App::DataSection に依存しつつコード整理
  • pad-markdown.pl という付属コマンドによるお手軽起動
  • Bootstrap 2.1.0 を入れてみたら色味が結構変わってびっくり

Changesそのままです。

「Plack::App::*ってname speceの割には盛り過ぎだから、単独ネームスペースにしたほうが良いのでは?」

とtypesterに言われてしまったので検討中。キラキラモジュールネーム!

これをベースにした、もうちょっと多機能で簡易WikiやBlog的にも使えるアプリケーションの構想があるので、それを単独ネームスペースで出そうかと思っている。

00:27

Plack::App::DataSection is released!

ちょっとしたpsgiアプリを公開するときに、画面の体裁をCSS等で軽く整えたいと思うことがあると思います。そういう時に静的ファイルをどのように配信するかが悩ましいところです。

そこで、ディレクトリの中身をモジュールファイルのDataSctionにpackしてそれを簡単にpsgiアプリとして使えるようにPlack::App::DataSectionというものを公開しました。

使い方は簡単です。cpanmした後、以下の様なファイルを準備してください。

package MyApp;
use strict;
use warnings;
use parent 'Plack::App::DataSection';
1;
__DATA__
@@ index.txt
あいうえお

このファイルを保存すれば以下のように利用可能です。簡単ですね。

% plackup -MMyApp -e 'MyApp->new->to_app' &
% curl http://localhost:5000/index.txt
あいうえお

もちろん、このようなファイルをちまちま作るのは現実的じゃないので、生成するスクリプトを用意しています。以下のようにすれば、ディレクトリの内容をモジュールへとpackしてくれます。

% dir2data-section.pl --dir=static/ --module=MyApp

バイナリはbase64形式でDataSectionに突っ込むようになっているので、画像も配信できます。

MyApp->new->dump_dir('static');

などとすれば、ディレクトリに書き戻すこともできるので、ちょっとしたひな形作成にも使えるかもしれません。

Plack::App::Directory::Markdown::Staticで利用しているので、中身を見てもらえればどういうことをしているかが分かると思います。jQury, Twitter Bootastrap, Google code prettify等の静的ファイルをガツっとpackしています。

それを、Plack::BuilderをつかってmountしてやることでJS,CSS等のファイル配信を実現しています。以下、Plack::App::Directory::Markdownから引用。

sub to_app {
    my $self = shift;

    my $app = $self->SUPER::to_app;
    my $static_app = Plack::App::Directory::Markdown::Static->new->to_app;

    builder {
        mount '/_static' => $static_app,
        mount '/'        => $app,
    };
}

ちなみに、MIME typeからバイナリ判定をしているis_binaryメソッドが適当な感じなので、何か良いモジュールがあれば使いたいところだけど、ニーズが無さそうな割にはメンテナンスがめんどくさそうなので自分では書きたくない。

00:22

2012年8月21日

Plack::App::Directory::Markdownが便利な件

https://metacpan.org/release/Plack-App-Directory-Markdown

自作自演乙。

意識の高いエンジニアの皆さんなら、markdown形式でメモを残しているんじゃないでしょうか。

plackup -MPlack::App::Directory::Markdown -e 'Plack::App::Directory::Markdown->new->to_app'

のような感じで、ディレクトリ内のmarkdownファイルの一覧を出してくれるとともに、markdownファイルはhtmlに変換して出力してくれます。皆さんが見飽きたBootstrapデザインになっております。

padm とかでalias作るときっと楽ですね。

alias padm="plackup -MPlack::App::Directory::Markdown \
       -e 'Plack::App::Directory::Markdown->new->to_app'"

コンストラクタにmarkdown_classを渡せるようになっているのがちょっとしたおしゃれポイントです。Text::Markdownがデフォルトです。こんな仕様にしたのは個人的にText::Markdown::Discountを使いたかったってのが大きな理由です。

DiscountはCで書かれたMarkdown実装+拡張で、割と精力的に開発がおこなわれており、Perl、Python、Ruby、Lua、Haskell等のあらゆる言語のバインディングもあるので面白いんじゃないでしょうか。微妙な記法もありますが、github flavored markdownやPHP Markdown Extraの記法なんかも鋭意取り入れているようです。ググラビリティが低くて困ります。

また、Dataセクション内のデフォルトのXslateテンプレートが気に喰わない場合はtx_pathにテンプレートのパスを渡すことで差し替えることが可能です。その場合index.tx、md.txの2つのテンプレートを用意してください。

Xslateがpathにhashrefでファイルのマップを渡せるようになっているので、こういうふうに簡単にテンプレートを上書きできる仕組みが作れて、Xslateマジ便利ですね。

XslateのData::Section::Simple連携の仕組みに関してはgfxのエントリにも書いてありますが、@tokuhiromに教えてもらいました。tokuhirom++

ちなみに、使われているCSSやJS、画像等はPlack::App::Directory::Markdown::StaticというファイルのDataSectioにpackされており、それをPATHに応じて返する作りになっています。こういうちょっとしたアプリケーションを配布するときにこの仕組みは便利なんじゃないかと思って、もうちょっと汎用化してからまたCPANに上げるかもしれません。

01:36

2012年8月17日

副鼻腔炎の内視鏡手術を受けた話

7月に一週間ほど副鼻腔炎の手術入院をした。

たかが鼻と思うかもしれないが、年に何回か左鼻の奥が塞がっては上顎洞にゼリー状の膿が溜り、歯痛と頭痛と発熱と目眩のコンボに見舞われるのに長年難儀しており、気合で乗り切るのも限界を感じ始めてきたので、手術に踏み切ることにした次第。

父親譲りで生まれつき鼻が悪く、高校生の時にも鼻中隔(鼻の仕切りの骨)を削る手術を受けて改善はしていたもののまだ上記の症状に悩まされていた。最近は医学が進歩して、鼻のもっと奥を内視鏡を使って広げる手術ができるとかで興味を持っていた。

これまでは具合が悪くなると近くの開業医で抗生剤をもらう対処療法で済ませてきた。とはいえ、根本的になんとかしたかったので、手術も考えて総合病院への紹介状を書いてもらえないか幾つかの開業医でなんとなく働きかけてはみたものの、これまたなんとなくスルーされ続けてきた。

これでは埒があかないと思って自分で総合病院を調べたら、近くの大学病院で副鼻腔炎の内視鏡手術をやっていることを突き止めたので直接行ったらトントン拍子に話が進み、手術が決定した。なんだ、もっと早く行っておけばよかったよ。

紹介状がないからとかで多めの初診料を取られたものの、紹介状書いてもらうのにもお金かかるから変わらない。紹介状ってよくわかりませんね。その病院は去年末に左肘の粉瘤除去手術を受けたところでもあり、なんか最近手術受けまくっておる。

手術は全身麻酔だとかいわれてびっくりしたんだけど、前日の医師の説明時に
「脳とか目とか近いところなんで気をつけてやりますね」
とか言われて、ああ、そりゃ全身麻酔じゃないと怖いなとヒヤッとした。

手術受けた翌日までは思ってたよりしんどくて正直舐めてたなーと。ただ、翌々日には鼻に詰めてたガーゼも抜け、その後の回復は順調で、予定より一日早めて退院できました。

術後は、とりあえずイビキが小さくなったということで嫁には好評です。元々軽度の無呼吸だと診断されたこともあるのですが、寝起きも良くなった気がします。

左鼻の奥はまだやはり炎症を起こしやすい部分は残ってますが、炎症を起こしても膿が上顎洞に溜まりにくくなっているのを感じます。まあとにかく手術受けてよかったなーと。

入院中に新しく買ったMacbook Airの開発環境の設定をして、晴れてマカーとなりました。

01:32

2012年8月14日

そういえばYAPCのチケットうってるらしいですよ

http://yapcasia.org/2012/talk/show/1cc88df4-da3a-11e1-b11f-0d4e6aeab6a4

僕もしゃべります。

なんというか、一言で言うと
YAPCで僕のトークをみにきてください。本物の中規模開発とはどういう物かお見せしますよ
というかんじです。

ちょっとした小ネタも用意してあります。
Perlなスピリチュアルトークに興味ある人もみにきた方がいいです。

(参考) http://blog.64p.org/entry/2012/08/14/191118

19:24