m1Macでpecl install xdebugが失敗する時の対処法

概要 m1のmacbook airでpecl install xdebugが失敗していたので、解決方法をメモします。 xdebugのVersionはxdebug-3.3.2です。 エラーの内容 MacBook-Air ~ % sudo pecl install xdebug ~省略~ Build process completed successfully Installing '/opt/home…

LeetCode 197 Rising Temperature

概要 LeetCodeのsql問題、rising-temperatureという問題を解きました URLは以下です(ログインしないと見られません) https://leetcode.com/problems/rising-temperature/description/ 問題文 Table: Weather +---------------+---------+ | Column Name | …

pnpmでyarnやnpmで管理していたパッケージが参照できなかった時に見ること

概要 pnpmはnpmやyarnと同じパッケージ管理ツールです。 pnpmは、ライブラリの依存パッケージの共有によるディスク容量の節約や、インストール速度の向上が見込めるようです。 pnpm.io ただ、pnpmはyarnやnpm と依存関係の管理方法が異なるので、切り替えた…

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を使う …

useMemoの役割、いつ使うべきかと注意点について

概要 useMemoの役割や使わない方が良い場合についてまとめようと思います useMemoの役割 useMemoは計算結果のキャッシュを保持して高速化する目的で使用されます。 const tasks = useMemo( () => filterTasks(term), [term] ); 上記の例では初回レンダー時に…

ドメイン駆動設計の目的とレイヤーについて自分なりに整理する

はじめに ドメイン駆動設計 モデリング/実装ガイドを読んで、ドメイン駆動設計(以下DDD)について改めて思ったことを書いていきたいと思います。 自分のDDDの経験としては、実務経験はありますが、DDDで実装されたリポジトリの機能追加くらいで、メインで普…

PHPのキャッシュ(OPcacheとpreload)についてメモ

PHP

はじめに この記事は自分がPHPのキャッシュ戦略についての理解を整理するために書いています。 細かい解釈ミスなどありましたら教えていただけると幸いです。 まずは基本的なことですがおさらいから。 PHPはインタプリタ言語です。インタプリタは事前コンパ…

ChatGPTにSQLの集計と集計結果に対するcase文について説明してもらいました

はじめに 自分は普段SQLなどの小ネタをブログに書いたりしているのですが、説明のためにテーブルを用意したりするのはちょっと面倒です。 なのでやりたいことだけ書いて、全部解説してデータも例示してもらうことにしました。 こちらの仕事としては、集計し…

GROUP_CONCATでグループ化された行のカラムの値を連結して出力する

概要 グループ化された行のカラムの内容も表示したい時などに使うGROUP_CONCAT()について記載します 実行環境:MySQL5.6 SQL CREATE TABLE classroom ( classroom_id INT PRIMARY KEY, classroom_name VARCHAR(50) NOT NULL, capacity INT NOT NULL ); CREAT…

ChatGPTにSQLのCreate文を書いてもらいました

概要 SQLの記事を書こうと思ったのですが、Createを1から書くのが面倒だったのでChatGPTに書いてもらいました お願いした内容 SQLでCreateを書いてください。教室テーブルとそれに紐づく生徒テーブルの二つです 出力結果 以下は、SQLで教室テーブルと生徒テ…

SWRが検証中かisValidatingで判断可能

概要 SWRはデータ取得のための React Hooks ライブラリで、データを継続的かつ自動的に受け取ることができる 例えばAPIに渡すパラメータが変わったとき、手動でAPIを叩き直さなくてもSWRを使っていれば変わったときに自動でAPIを叩いてくれる 再検証中かどう…

PhpStormのIndexingが毎回走って遅いので対処法メモ

概要 PhpStormにはインデックス作成の機能があります 公式によると以下のように色々な役割を担ってくれます PhpStorm のインデックス作成は、IDE のコア機能であるコード補完、インスペクション、使用箇所の検索、ナビゲーション、構文のハイライト、リファ…

git cherry-pickの概要とhash値が変わるので別のコミットになることに留意することのメモ

Git

git cherry-pickの概要 あるブランチのコミットを別のブランチに適用する操作 作業ブランチを変えたくなった場合などに、古いブランチの変更を新しいブランチに取り込むなどのケースに使うかと思います コマンド git cherry-pick commitSha commitShaはコミ…

MySQLのSelect句で日付の差分を取得する方法と分単位の差分について

使用例 例えば最初にレコードが作られた日付と、何らかの処理が完了した日付の差分を取得するときなどに使うかと思います select created, finished, TIMESTAMPDIFF(MINUTE, created, finished) AS '分差分' from table order by id desc MySQLのDIFF関数は…

PHP 7.2.x で推奨されなくなる機能 - クウォートしない文字列

PHP

クウォートしない文字列 クオートしない文字列は、その名前のグローバル定数が定義されていない場合は単なる文字列という扱いになります。 このとき、いままでは E_NOTICE が発生していました。 PHP 7.2.x 以降は、E_WARNING が発生するようになります。 次…

PHP UnitテストのassertEqualsとassertSameの違いと、assertEqualsは==と全く一緒ではない件について

assertEqualsとassertSameの違いについて PHPのUnitテストを書くようになって、基本はassertSameを使うもののassertEqualsとassertSameの違いをちゃんと調べたことがまだないなと思って調べてました。 イメージとしてはassertEqualsは==のような挙動で厳密に…

v-validateで値変更後にバリデーションする

$nextTickを利用するやり方 @input="v => { change(v) $nextTick(() => $validator.validate('xxx')) }" $nextTickはDOMの更新後に実行されるため、inputでDOM要素が変更されたあとに任意のvalidate処理を実行することが出来る

Dockerコンテナ内に入るコマンド二つとdocker exec -itの-itの意味

コンテナに入る exec 一つ目はdocker exec -it コンテナ名 or コンテナID bashで、基本これを使うイメージがあります exitで抜けたときに、コンテナ自体は終了せずに動き続けます attach docker attach コンテナ名 or コンテナID bash こちらはexitで抜けた…

Google Tag Managerのタグとトリガーについてメモ

概要 簡単な概念だけ記載します 、というかあまり深くまで知らない。。。 タグ: データを Google アナリティクスなどのシステムに送信するコードです。 ↑公式から引用 タグは実行されるJavaScriptコードという理解です Google公式のタグもあれば、完全にカス…

主キーには自動でインデックスが付与される

Primary keyを作成時、インデックスは自動で付与される 主キーを作成時、大抵のDBは自動でインデックスが主キーに付与される そのため、主キーにインデックスがあることを意識してインデックスを付与することや、複合主キー主キーを作成時には、複合インデッ…