記事
ブログにPagefindを導入しました
Pagefindとは静的サイトで動作する (バックエンドのサーバーを必要としない) 全文検索エンジンです。
このブログにPagefindによる全文検索機能を導入しました。 右上の虫眼鏡ボタンをクリックすると、検索用のダイアログが開くはずです。
この記事では、どのようにしてNext.js製のサイトにPagefindを導入したのかを説明します。
自然数の分割とその積の最大値について
自然数の分割とは、ある数と和が等しくなるような自然数の多重集合です。 例えば は なので の分割となります。
この記事では、自然数の分割の積の最大値について考えます。
ブログを App Router へ移行しました
このブログは現在 (2023年12月11日付) Next.jsで実装されています (移行の際の記事)。
これまでは実装にPages Routerを使っていました。
最近「カテゴリ機能」(現在は「タグ機能」) を追加したのですが、その際にカテゴリの一覧の取得をすべてのページのgetStaticProps
で行わなければならず、不便に感じていました。
そうした問題の解消のために、App Routerへと移行しました。
他にもOGP画像の生成にsatoriを使うようにしたり、GitHub PagesへのデプロイをGitHub Actionsで成果物をアップロードする形にしたり、色々と修正をしました。 それらの実装を通じて学んだことを、この記事では整理します。
演算子の結合規則のバリエーションについて
最近RPrecという演算子の優先順位に基づいて構文解析を行うRubyのライブラリを実装しました。 その中で、演算子の優先順位と結合順位についての理解が深まりました。
演算子の優先順位 (precedence) というのは、1 + 2 * 3
が1 + (2 * 3)
と解釈されて「*
は+
よりもつよく結合する」というように言われるものです。
この優先順位はJavaScriptであればこの辺りに、Rubyであればこの辺りにまとまっています。
そして、演算子の結合規則 (associativity) というのは、左結合とか右結合とか言われるものです。
1 + 2 + 3
は(1 + 2) + 3
と解釈されるので+
は左結合であったり、a = b = 1
がa = (b = 1)
と解釈されるので=
は右結合というようなものです。
今回は、この演算子の結合規則のバリエーションについて考察したことについて、まとめたいと思います。
想定読者: 構文解析やプログラミング言語の構文に興味があり、これらについて多少の知識があることを想定しています。
commlogのNuxt 3移行録
commlogはこれまでNuxt 2を利用してきました。 しかし、Nuxtは2022年11月にNuxt 3がリリースされており、Nuxt 2はVue 2と共に2023年12月末をもってサポートが終了されることが発表されていました。 commlogの大部分のコードを書いたのは5年以上前になっているということもあり、コードをメンテナンスすることが困難になっていました。
そこで今回、commlogを完全に書き直すことでNuxt 3に移行しました。 その記録を、この記事では報告します。 また、Nuxt 3の他にTailwind CSSやMock Service Worker (msw)、Bun、Netlify Buildなどの、様々なライブラリ・開発ツールを利用して開発を進めました。 これらにより、モダンな構成にできたのではないかと考えています。