データベースインデックスの基礎 — なぜ同じWHERE句でも読む行数が大きく変わるのか
データベースの検索が重いという相談を受けたとき、最初に確認されることが多いのが「その列にインデックスは張ってありますか」という質問だ。インデックスはデータベースの性能を語るうえで欠かせない仕組みだが、「張れば軽くなる魔法 …
WP Maintenance Manager の開発・運用で得た技術ノート
データベースの検索が重いという相談を受けたとき、最初に確認されることが多いのが「その列にインデックスは張ってありますか」という質問だ。インデックスはデータベースの性能を語るうえで欠かせない仕組みだが、「張れば軽くなる魔法 …
Webページの読み込みが速いサイトほど、実は裏側で「送る前にデータを小さく圧縮している」ことが多い。HTMLやCSS、JavaScriptは、サーバーが送信する直前にgzipやBrotliという形式で圧縮され、ブラウザ側 …
日本標準時(JST)は UTC(協定世界時)からちょうど9時間進んでいて、夏時間(サマータイム)による切り替えもない。この単純さゆえに「JSTは足し算・引き算だけで済むから簡単」と思われがちだが、実際にタイムゾーン絡みの …
複数の人やプロセスが同じデータを同時に更新しようとすると、後から書き込んだ側が先の変更を気づかないまま上書きしてしまうことがある。これは「lost update(更新の消失)」と呼ばれる典型的な問題で、データベース設計や …
以前の記事では、git add と git commit の間で何が起きているか、つまり「コミットを作る瞬間」の仕組みを扱った。今回は視点を変え、「過去に作られた大量のコミットの中から、特定の不具合を持ち込んだ1つを、ど …
前々回の記事ではCookie+nonce認証、前回の記事ではWordPressの認証Cookieが「署名検証は自己完結・失効管理だけサーバー側のトークン一覧に頼る」ハイブリッド構成になっていることを見た。今回はその対極に …
Webサイトを跨いだAPI連携を実装していると、ブラウザのコンソールに赤字で has been blocked by CORS policy と表示されてリクエストが失敗する場面に一度は遭遇する。サーバー側は正常に応答し …
Pythonやアプリケーション開発をしていると、設定値の置き場所として「環境変数」「.env ファイル」「コード内のデフォルト値」の3つがよく登場する。この3つは互いに競合することがあり、「なぜこの値が使われているのか分 …
Python仮想環境(venv)の仕組み — なぜOS標準のPythonを汚さずに済むのか Pythonのツールを触っていると、必ずと言っていいほど登場するのが「仮想環境(venv)」だ。python3 -m venv …
複数のサイトに対してSSH接続を並列で試みるような処理を書いていると、「同時に実行する数を絞りたい」「結果は終わった順に受け取りたい」という要求に必ず突き当たる。Pythonでこれを実現する土台になっているのが、標準ライ …