Cloudflare DNS Proxyを経由した際のVercelでホストされるNext.jsアプリケーションのレスポンスが遅い問題について
VercelでホストされているNext.jsアプリケーションのレスポンス時間が600msに達していました。 特にローカル環境では遅い印象はなくて、なぜかvercel上で動かしているときだけ遅いという謎現象。 Edge Middlewareがロンドンで実行されていた レスポンスが遅い原因を調べるためにVercelのログを…
627 件の記事
VercelでホストされているNext.jsアプリケーションのレスポンス時間が600msに達していました。 特にローカル環境では遅い印象はなくて、なぜかvercel上で動かしているときだけ遅いという謎現象。 Edge Middlewareがロンドンで実行されていた レスポンスが遅い原因を調べるためにVercelのログを…
Dockerのマルチステージビルド(Multi-stage builds)で複数のステージを用意する場合があります。 マルチステージビルドを使うことで、一つのDockerfile内で複数のビルドステージを管理し、最終的なイメージサイズを小さく保つことができます。 今回はstaging, production環境でステー…
PHPUnit11でProphecyを使おうと思ったら使えなかったのが事の発端です。 https://twitter.com/polidog/status/1762843240515199213 ただし、現在はphpspec/prophecy-phpunitのv2.2.0が出たのでphpunit11でもProphecy…
turborepo + pnpmを使う際に欠かせないpnpmのfilterオプション。 addやtestやlintなど結構必要な場合が多いと思います。 特に、GitHub ActionsなどのCI環境でテストやLintを実行する場合、依存関係に含まれるすべてのパッケージをチェックしたいことがあります。 もちろん、複数の…
年末にPCを買い替えてM1 mac miniからM3 MacBookProになりました。 今年こそはHaskellを覚えたいという気持ちからPHP環境よりも先にHaskellの環境を用意しました。 homebrewでインストールする brewの場合はGHCupを入れてしまうのが楽ぽいのでGHCupを入れるようにする $…
ReDos脆弱性ってなかなか気づかないなぁと思っていて、なにかいい方法がないかなと思っていたらeslintのpluginがあったので試してみました。 見つけたきっかけ zodのemailのバリデーションの正規表現でReDos脆弱性があるという指摘を頂いたので、zodのプロジェクトのPRを見てたら以下のようなPRを見つけ…
Auth0で認証周りを作ってて独自のユーザーIDの定義をどう扱うかを結構なやみました。 Firebase Authの場合はFirebase側でユーザーUIDを生成してくれますが、Auth0の場合は生成してくれない。 まあ、sub クレームの値を使えばいいといえばいいし複数のSocial Provider使われた場合でも…
ZodのEmailバリデーションでとくに問題ないメールアドレスなのにエラーっていわれてしまった。 Zodのバージョンは [email protected] なので 2023/08/01時点で最新かと思います。 そのようなメールアドレスが問題なのか? [email protected] 上記のメールアドレスにおいて…
ちょっと古いプロジェクトで、SymfonyのバージョンやPHPのバージョンを上げたいと思いましたがテストがないのでこわいなということで、テストを書き始めました。 nelmio/aliceを使ってテスト用のダミーデータを作っていましたが current まわりでちょっとつまずいてしまいました。 どのような問題が起きたのか…
Github Actionsの設定って年に数回ぐらいしかしないので、毎回timeoutの設定を忘れてググっている...。 わすれないようにこのブログ記事でメモしておこうと思う。 デフォルトのタイムアウト時間は? 公式ドキュメントを確認したところデフォルトだと 360分 らしいです。 Github Actionsの課金に…
前に Turborepo + PNPM + Remixで構成されたアプリケーションをFly.ioにデプロイする という記事を書きました。 今回はその続きというかNextで動かす場合に苦労したのでここに記録を残していきます。 Dockefileを自分で作る必要がある flyctl launchでNextをビルドするための…
前回「PostgreSQLの配列型JSONでLIKE検索をする」という記事を書きました。 今回はこれをDoctrineで検索させるかというお話です。 前回調べた内容で発行するクエリ JSONB型のデータに対してLIKE検索したい場合はサブクエリを使えば解決できました。 SELECT id, tags FROM tags…
PostgreSQLの配列型のJSONで検索したい人生でしたが無理っぽいということがわかって悲しみにくれています。 たとえばこんな感じのテーブル id tags ---- ------------------------------ 1 ["静岡", "沼津"] 2 ["相模大野", "東静岡"] 3 ["静修学園前"…
Prismaを使おうと思ってDockerでMySQLを用意したらprisma migrate devでエラーが発生しました。 エラーメッセージ $ npx prisma migrate dev --name init Error: P3014 Prisma Migrate could not create the sh…
Turborepoでmonorepo構成で、パッケージマネージャーはpnpm、アプリケーションのフレームワークにはRemixを採用したアプリケーションをFly.ioにデプロイするのに苦労しました。 Fly.ioのRun a Remix Appや、Monorepo and Multi-Environment Deploy…
Remixアプリを作って実際にサーバにデプロイし始めてから、コンテンツに変更ないほぼ静的なページなのに、ステータスコードが200でレスポンスされていたのでちょっと嫌だなと思って、ETagで304レスポンス返せるようにしてみました。 ETagとはなにか? まずそもそもとしてETagとはなにか? ブラウザキャッシュを利用す…
TurborepoでRemixのアプリを複数用意するみたいなプロジェクトでちょっと細かい設定が必要だったのでここに書いていこうと思います。 なにが必要なのか portがかぶらない用に注意する必要があります。 このportに2種類あります devServerPortの設定 必要であればRemix App ServerのP…
この記事はChatGPT時代にどう生き抜くかを考えた結果、プロンプトエンジニアリングが必要だという結論に至ったpolidogがChatGPTに書かせた内容になります。 正しいかどうかは読んだ皆様の判断でお願いします。 この教科書では、プロンプトエンジニアリングの基本概念、技術、戦略、およびベストプラクティスを網羅的にカ…
pnpmだと pnpm dlx でいいらしい。 https://pnpm.io/ja/cli/dlx $ pnpm dlx tailwindcss init -p
自宅の余っていたLet's NoteにUbuntuを入れたんですが、蓋を閉じたらサスペンドになってしまっていました。 基本的にSSHで接続して諸々の操作を行うと思っていたので、サスペンド担ってしまうのは結構都合が悪いわけです。 設定で簡単にサスペンドしないようにできるので、設定を変更してみました。 サスペンドしないよう…
久しぶりに余っているPCを自宅サーバにしようと思い、Ubuntuを入れた。 インストール時にIPアドレスを固定ではなくDHCPからのリースにしてしまったため、外部からSSHで接続不便になってしまった。 そこでIPを固定にしてみようと思う。 設定ファイルを変更する ubuntuのネットワークの設定は以下のファイルを変更す…
サードパーティのライブラリとか触っているとtwigにどのような変数がセットされているのかわからない時が多々あります。 xdebug + ブレークポイントを設定して、なんとか変数をtwigにセットしているコードを探し出すのを毎回するのは苦労します。 dumpを使ってセットされた変数を確認する twigにはdumpという関…
docker-composeのenv_fileで指定したファイルに書かれている環境変数と同じ変数が.envファイルにあると、.envで定義されているものに上書きされてしまうという現象に遭遇しました。 docker-compose.yamlは以下のようになっています。 version: "3" services: php…
PHPでFirebase emulatorが使えない問題で頭を抱えていた方も多いかと思います。 ただそれは kreait/firebase-php のバージョンが6.2までの話です。 なんと気づいたら 6.3からはFirebase emulatorがサポートされていました。 (※全部コードリーディングしてませんが、少な…
Herokuの.user.iniに関するトラブルがあったのでメモしときます。 (以前もはまったようなハマってないような・・・。) HerokuでPHPの設定を変更するときは .user.ini を利用して設定を変更します。 .user.iniはあるのに設定が反映されない 今回起きたトラブルは.user.iniがあるのに…