2024-01-01から1年間の記事一覧

LeetCodeをやってみました。

概要 LeetCodeが面白いときいて初めてみました。 この記事でつらつらと感想などを雑に書いていきたいと思います ログイン後の画面 こちらがログイン時の画面です。 Interviewがトップページのバーにあるのは面白いですね、ただのコード道場ではなく面接に向…

TypeScriptのconstやas constの挙動について

概要 TypeScriptには定数を宣言する仕組みとして、constやas constが存在します。 ただ、オブジェクトや配列をconstで定義したとしても、中の値は自由に書き換えれるなどの注意点があります。 これを例とともに見ていきたいと思います。 動作環境: TS5.4.3 c…

MySQL 8.0.18で導入されたEXPLAIN ANALYZEについて

概要 MySQL 8.0.18でEXPLAIN ANALYZEという句が導入されたのを知ったので、どんなものかメモします。 公式の説明はexplainのEXPLAIN ANALYZE による情報の取得という段落に記載されています。 以下の情報を取得できるようです。 推定実行コスト 戻された行の…

JestのExpected: ["object", "property"] Received: serializes to the same string について(オブジェクトの値検証)

概要 JestでObjectの値をtoBeで比較するとExpected: ["object", "property"] Received: serializes to the same stringというエラーが発生することがあります。 これはtoBeが厳密比較をしており、オブジェクトや配列の中身が一致していても同じとは判定され…

PHPの曖昧判定を使う時に注意しておくべきこと

PHPの曖昧判定 PHPは厳密ではない比較をする関数がいくつかあります。 厳密比較をしないことによって意図しない判定をしてしまうことがあります。 今回はemptyを使った時の注意点を、実装とユニットテストの観点から見てみます。 ちなみに自分は絶対厳密比較…

DBの値をフロントエンドやバックエンドで定数として扱う際のリスクと改善策

概要 今まで、DBの値をFrontendで定数として持って使うケースや、テーブル更新のコストが高いと判断してBackendで値を保持・運用するケースをたまに見てきました。 もちろん軽量なプロジェクトやプロトタイプの製作では有効な場合もありますが、保守性や変更…

複合インデックスの効果と注意点

概要 インデックスには複合インデックスというものがあります。 これは単一のカラムではなく、複数のカラムを組み合わせてインデックスを貼るもので、組み合わせで検索されるカラムに貼ると効率的です。 複合インデックスを使うにあたって、いくつか注意点が…

anyとunknownの違いとどちらを使うべきかについて

概要 TypeScriptにはanyとunknownという型があります。 これらは型チェックを無効にするものですが、動作には大きく違いがあります。 anyとunknownの動作の違い 例えば以下の実装があったとします。 ( v5.3.3の環境で実行しています) const un: unknown = …

ReactでコンポーネントからMarkDown ファイルを呼び出す

概要 marked - npmを使用してNext.jsのプロジェクトから.mdファイルを試しに呼び出してみたことの備忘録です。 markedのバージョンは "marked": "^10.0.0",です。 公式ではdemoページを見ることができます(左がmdファイルで右が出力されるHTML)。 手順 ま…

useStateは必要最低限が良い

概要 必要不可欠でない state 変数をすべて削除するという記事を読んで覚えておきたいと思ったのでブログに書こうと思います。 そもそもuseStateは、UIを操作するための状態管理の仕組みです。 例えば、フォームが送信中であることや、入力エラーがあること…

useEffectはなるべく使わない方が良いのかということについて

概要 Reactの公式ページにはエフェクトは必要ないかもしれないというページがあります。 必要のない場面でuseEffectを使うことを避けるという記事で、この記事について自分の経験や理解したことについて書こうと思います。 必要のない箇所でuseEffectを使う …