myb design

blog

正月早々。

遅ればせながら、あけましておめでとうございます。
今年もどうぞよろしくお願いします。

さて、新年早々メインで使っているMacBookのHDDがフッ飛ぶというトラブルに見舞われました…。
元々80GBだった内蔵のドライブを160GBのものに換装して使用していたのですが、大晦日まで何の問題もなかったのが、1日夜に突如HDDからカラカラと異音が!
ヤバいと思い再起動をかけましたが、時既に遅く、かろうじてBoot CampのパーティションからXPが立ち上がるだけで、Mac OSの方はウンともスンとも言わなくなりました。
幸い、ホームフォルダだけは定期的にバックアップしていたので、大事には至りませんでしたが、日頃のバックアップの大切さを思い知りました。
とりあえず元の80GBのドライブに戻して、Macworld Expoで食指が動くものが何も発表されなければ(笑)、また新しくドライブを買い直そうと思っています。

そんな中、Sifter 1.1.5をリリースしました。
新たにRuby版を公開していますが、本格的にRubyを使用したのは今回初めてです。
Perl版をベースにしたのであまり苦労せず組むことができましたが、唯一引っかかったところは、0や空文字列が論理的にfalseとならないところですね。
それらは他言語ではよくfalseとして扱われているので、すべてがオブジェクトであるというRubyといえど、同様であった方が分かりやすいんじゃないかという気がします。
(確かに、オブジェクトとしては存在していて、その持つ値が0や空文字列というだけと考えると理にかなってはいるんだけど、trueやfalseもオブジェクトだし…)

Sifter 1.1.2

PHP/Perl用のテンプレートエンジンSifter 1.1.2をリリースしました。
バグフィックスとちょっとした最適化だけですけど。

この手のテンプレートエンジンは他にも数多くありますが、そもそも開発したきっかけは、patTemplateがあまりに使いにくく、Smartyも複雑で覚えることが多く、シンプルで簡単に使えるテンプレートエンジンが欲しくなったからです。
数年前から自分の仕事で使って、少しずつブラッシュアップされて、ようやく今の形になりました。

Sifterは、実行の度にテンプレートを解釈してオブジェクトのツリーを作成し、それを根元から再びたどって出力をしています。そのため、あんまりパフォーマンスはよくないです。
Smartyのように、スクリプト化されたテンプレートファイルを出力するようにすればパフォーマンスを上げることができるので、次期バージョンではそんな仕様を組み込もうと思っています。
まあ、あんまりファイルを出力して散らかすのもどうかと思ったり、パーミッションなど面倒な設定がいらずに使えるというところも売りであったりするので、オプショナルな機能ということで。