名古屋出身ソフトウェアエンジニアのブログ

プログラミング

1 / 2 ページ

PHP の include_once は何をもって同じファイルと判断するのか

PHP の include_once と require_once は、実行プロセス内で同じファイルの 2 回目以降の取り込みをスキップするための仕組みですが、何をもって「同じファイル」と判定するのかふと気になりました。この点はドキュメントにははっきりと記載はありません。 結論から言うと、ローカルファイルでは、基本的に正規化された絶対パスが判定基準になっています。 …

Python におけるリトライ抽象を再考する

Python におけるリトライ抽象を再考する
前回記事では、オプション引数をとるデコレータを楽に定義できるデコレータである kwops_decorator を作成しました。 今回は実演がてら、Python のリトライ処理記述ライブラリ Tenacity を題材に、よく使うリトライ表現を抽象化してみます。 Tenacity は基本的に、実行対象の関数にデコレータを付けることで、その関数はリトライされるべきであることを表現するのですが、関数内でリトライ回数をカウントするためには外のスコープに変数や、クラスにインスタンス変数を置いて自分で数える必要があり、カウントのリセットなども考慮すると微妙に面倒です。そこの改善を主目的に、kwops_decorator を活用し Tenacity のデコレータをラップします。 …

Hugo で数式を静的(ビルド時)にレンダリング

Hugo で数式を静的(ビルド時)にレンダリング
このブログでもそうでしたが、Hugo で数式を表示するには、ブラウザで KaTeX か MathJax を使ってレンダリングする構成が一般的でした。 Hugo v0.132.0 から、KaTeX 数式をビルド時に静的にレンダリングする関数 transform.ToMath が追加され、これにより、WASM で動作する KaTeX を使って数式をレンダリングしたものを出力することができ、ブラウザ実行時の JavaScript ライブラリの読み込みが不要になりました。レンダリング結果が最初から入っているので、表示ラグも(ほぼ)発生しません1。 …

2024 年でも使える Python 2 コードフォーマッター

Civilization IV の Mod 開発のため、Python 2 のコードを扱える自動フォーマッターを探していました。 結論を言うと Black を使うと良いです。 これ以外だと、まともなものは見つかりませんでした。 ただし、Black は初安定版リリースと同時に Python 2 を陳腐化させたので、ちょっと前のプレリリース版を使うほかないです。 …