気がついたらこの WebSite のテンプレートを全面的に書き直してた

今週の始め頃に、

hugo のテンプレートを調整したら、この Web サイトの生成とか早くなるんじゃね?

と思って作業していて、 気がついたらテンプレートを全面的に書き直すという事になっていたんじゃが……と言う話です。

なんでテンプレート全面書き直しになったか

今回、最初に色々と作業をしていた時に、

あかん、このテンプレート構造だとやりたいこと出来ないやん……

と言う事に気が付き、ここからまさかまさかのテンプレートリライトに繋がって行きました。 苦渋の決断です。分かりますね。

今回のテンプレート書き直して得られたコト

  • とてもスッキリとしたテンプレートファイル
  • 上記に伴うメンテナンスのし易さの向上
  • あと今まで気がついていなかったバグの修正

今回のメンテでテンプレートをとてもスッキリと書けた関係で、 結果としてメンテナンスビリティが向上し、 またテンプレートファイル数もガッツリ減りました。

で、どうやってテンプレートをガッツりシンプルにしたかと言うと、基本的には:

{{ dict "foo" "bar"  | jsonify }}

と言う感じの partial template で生の Hugo 変数などから JSON の値を生成し、それを:

{{ partial "path/to/template.html.html" .  | unmarshal }}

と言う感じで大本のテンプレートで呼び出してデータ構造を得る、と言うテクニックを多用しました。

まぁこのテクニック自体は前々から使ってたんですが、今回はそれが一歩先に進み、

Hugo の生変数を使う代りに、抽象化したデータ構造を用いる

と言うスタイルになった事で、テンプレートの共通性がさらに良くなりファイル数の削減に繋った、 と言う感じです。

あと今回の作業では Atom Feed がおかしなコトになってるとか、 あるいは閲覧性が低かたトップページとかも直せたんで、 その辺りもテンプレート書き直しで得られた事ですね。はい。

今回のテンプレート書き直して得らなかったコト

  • ビルドタイムの短縮
  • デプロイタイムの短縮
  • 精神衛生の向上

結論から言えば、まったく早くなりませんでした 。……おいおい。

今回の作業、結果から言えばテンプレートのメンテナンスビリティの向上、 と言う怪我の功名は得られたものの、ビルドタイムやデプロイタイムはあんまり変わり無く、 おおよそ 1 deploy 三十秒 と言うラインは超えられませんでした。

そのため テンプレートがボトルネックでは無さそうな感じ なので、 これ以上早くしようと思うと お金モリモリスペックマシマシ、私の回線は1Gbps です、 と言うのをしないとダメっぽく、まぁ当面はこのままかなぁと言う感じです。はい。

あと、

テンプレートを全面書き直しせざるを得ないじゃん……

と気がついた時に、精神状態がダダ下りになったのはここだけの話。

以上

まぁテンプレートがスッキリしたと言う点では良かったんだけど、 あんまりデプロイまでの実行時間の短縮には繋らなかったのは無念でした。はい。

nyarla が大体

Scrapbox でコメントや意見を書く

新年早々に NixOS を再インストールする破目になった

新年明けましておめでとうございます。今年もよろしくお願いします。

……と、気持ち新たにやりたかったが、そうは行かなかった話です。

何が起きたか?

私の Dell XPS 9560NixOS は、時々リブートする時にカーネルパニックを起こし、 そのたびに強制的に電源を落として再起動していたんですが、来たる 2019年12月31日、 reboot したらカーネルパニックしていつもと同じ様に再起動した所、 どうもファイルシステムが破損してたらしく、

あれ、なんか調子がヘンだぞ……?

と思って何度かリブートした結果、ついにboot しなくなりました

で、急遽 NixOS のUSB Installer を用意してからファイルシステムの fsck をして、 一応は boot する様になったんですが(/nix/storeのパーティションは無事だった)、 色々なファイルが訳が分からない感じに消失したりしていたため、 あえなく NixOS を再インストールする破目になりました。ナンテコッタイ。

原因と対策

まぁ Kernel Panic なんで Linux Kernel に原因があるのは確かなんですが、 どうも この事象は最新の Linux Kernel 5.x 系で起きてる らしい、 と色々と調べたら出てきたんで、とりあえず Linux Kernel を 4.x 系に下げて様子を見ています。

とは言え今は NixOS の stable kernel が 4.x 系なんでなんとか なってますが、 これが次の LTS になった時に大丈夫かなーなんて思ってます。

ちなみに

結果として NixOS を再インストールせざるを得ない感じとなったので、 ファイルシステムを ext4 から btrfs に変えてみました。

個人的には btrfs を使うのは初めてなんですが、 snapshot によってオペミスによるファイル削除に強くなれるっぽいので、 とりあえずで使ってみています。

まぁ今のところファイルの復活が必要となケースは出てきてませんが、 うっかり必要なファイルを消してしまう、という事案がまったく出ないワケでもないので、 とりあえずこれで不意のファイル消失には備えられるかなーと思ってます。はい。

以上

と言うことで正月早々にトラブル解消をしていた、と言う話でした。はい。

nyarla が大体

Scrapbox でコメントや意見を書く