Article

GithubPagesからCloudFrontとS3へ

※ 商品リンクから購入されると少額の報酬が発生することがあります。

そろそろSSLでないとダメそうなのでCloudFrontとS3という最強コンビにホームページを移しました。

SSL証明書のメンテも必要なく無料で、そもそもそんなに転送もないのでCloudFrontを使っても高くつかないはず。

なんてことをしていたら副産物が2つ出来ました。静的サイトジェネレータ biisan と設定ファイルフレームワーク glueplate です。

biisan

今までは非公開の自作静的サイトジェネレータを使っていました。 rst2htmlに毛が生えたようなもので、次のような問題を抱えていました。

  • データがローカルのMySQLに保存されていた

    • 定期的にダンプしてバックアップを取る必要があった

    • MySQLに格納されているので修正をするのが面倒

    • OSをクリーンインストールしたらリストアが必要だった

  • docutilsのhtmlライターを使っていた

    • cssやhtmlの構造に自由がきかない

この機会にファイルベースでデータを持てて変なcssで苦しまない静的サイトジェネレータに書きかえようと車輪を再発明して biisan を作りました。

いきおいあまってReStructuredTextを捨ててMarkdownの軍門にくだろうと最初は思ったのですが、機能が少なすぎて秘伝のエントリを移すのが面倒くさすぎて今回もReStructuredTextです。

逆に、ReStructuredTextは機能が多すぎるので、自分が必要なディレクティブにしか対応していません。ディレクティブごとに処理する関数をわけているため、対応するのは簡単なはずです。勝手に付け足して使うのも簡単ですが、せっかくなのでPullRequestしてもらえれば良いと思いますよ。

さらに、docutils標準でないディレクティブも同じように追加しやすくなっています。これはそもそもReStructuredTextがそういうものなのですが、ちょいとむずいので仕組化してあります。

さらにさらに、出力のHTMLも細かくテンプレートが分かれていて、必要なテンプレートを上書きできるようになっています。

気が向いたらテストとドキュメントを書こう。

あ、エントリを処理するところはmultiprocessingなので 無駄にCPU使い切れ ます。

glueplate

  • 特徴

    • 基本設定はフレームワークやライブラリに持つ

    • 実体側で必要な部分だけ上書きできる

    • 利用時、ドットシンタックスで辿れる

    • dictを上書きした際もきちんと再帰マージされる

    • リストの前か後ろに追加も仕組で用意

ライブラリやフレームワークを書くとき、利用時点での上書きを期待する設定項目とそのデフォルト値を定義したいことがあります。

設定されていなければコード上のデフォルト値を使うという風にしてしまうと、設定項目が2箇所に分かれてしまうので常に設定ファイルから読み込みたいみたいなことってありますよね。そんな感じのよく書くコードをライブラリにしたものです。

biisan では、ベースが biisanの設定ファイル で、 上書きしたりしてるのは このホームページの設定ファイル です。

両方見ると biisan がどんなものかも、おおよそわかることでしょう。

気が向いたらテストとドキュメントを書こう。

気が向いたら両方ともPyPIにあげよう。

Prev Entry

Next Entry