tech

627 件の記事

2024

Cloudflare DNS Proxyを経由した際のVercelでホストされるNext.jsアプリケーションのレスポンスが遅い問題について

VercelでホストされているNext.jsアプリケーションのレスポンス時間が600msに達していました。 特にローカル環境では遅い印象はなくて、なぜかvercel上で動かしているときだけ遅いという謎現象。 Edge Middlewareがロンドンで実行されていた レスポンスが遅い原因を調べるためにVercelのログを…

Dockerのマルチステージビルドで特定のステージを指定する方法

Dockerのマルチステージビルド(Multi-stage builds)で複数のステージを用意する場合があります。 マルチステージビルドを使うことで、一つのDockerfile内で複数のビルドステージを管理し、最終的なイメージサイズを小さく保つことができます。 今回はstaging, production環境でステー…

pnpmで依存関係があるパッケージすべてをフィルタする

turborepo + pnpmを使う際に欠かせないpnpmのfilterオプション。 addやtestやlintなど結構必要な場合が多いと思います。 特に、GitHub ActionsなどのCI環境でテストやLintを実行する場合、依存関係に含まれるすべてのパッケージをチェックしたいことがあります。 もちろん、複数の…

M3 MacbookProな環境でHaskellを動かす

年末にPCを買い替えてM1 mac miniからM3 MacBookProになりました。 今年こそはHaskellを覚えたいという気持ちからPHP環境よりも先にHaskellの環境を用意しました。 homebrewでインストールする brewの場合はGHCupを入れてしまうのが楽ぽいのでGHCupを入れるようにする $…

2023

正規表現を使うプロジェクトではeslint-plugin-redosを入れたほうがいいかもしれない。

ReDos脆弱性ってなかなか気づかないなぁと思っていて、なにかいい方法がないかなと思っていたらeslintのpluginがあったので試してみました。 見つけたきっかけ zodのemailのバリデーションの正規表現でReDos脆弱性があるという指摘を頂いたので、zodのプロジェクトのPRを見てたら以下のようなPRを見つけ…

Auth0で独自で生成したUUIDをCustom Claimsとして設定する

Auth0で認証周りを作ってて独自のユーザーIDの定義をどう扱うかを結構なやみました。 Firebase Authの場合はFirebase側でユーザーUIDを生成してくれますが、Auth0の場合は生成してくれない。 まあ、sub クレームの値を使えばいいといえばいいし複数のSocial Provider使われた場合でも…

nelmio/aliceでcurrentの値をintegerとして扱う方法について

ちょっと古いプロジェクトで、SymfonyのバージョンやPHPのバージョンを上げたいと思いましたがテストがないのでこわいなということで、テストを書き始めました。 nelmio/aliceを使ってテスト用のダミーデータを作っていましたが current まわりでちょっとつまずいてしまいました。 どのような問題が起きたのか…

Github Actionsでtimeoutを設定する

Github Actionsの設定って年に数回ぐらいしかしないので、毎回timeoutの設定を忘れてググっている...。 わすれないようにこのブログ記事でメモしておこうと思う。 デフォルトのタイムアウト時間は? 公式ドキュメントを確認したところデフォルトだと 360分 らしいです。 Github Actionsの課金に…

DoctrineのDQLを使ってPostgreSQLの配列型JSONでLIKE検索をする

前回「PostgreSQLの配列型JSONでLIKE検索をする」という記事を書きました。 今回はこれをDoctrineで検索させるかというお話です。 前回調べた内容で発行するクエリ JSONB型のデータに対してLIKE検索したい場合はサブクエリを使えば解決できました。 SELECT id, tags FROM tags…

PostgreSQLの配列型JSONでLIKE検索をする

PostgreSQLの配列型のJSONで検索したい人生でしたが無理っぽいということがわかって悲しみにくれています。 たとえばこんな感じのテーブル id tags ---- ------------------------------ 1 ["静岡", "沼津"] 2 ["相模大野", "東静岡"] 3 ["静修学園前"…

RemixでETagを使う

Remixアプリを作って実際にサーバにデプロイし始めてから、コンテンツに変更ないほぼ静的なページなのに、ステータスコードが200でレスポンスされていたのでちょっと嫌だなと思って、ETagで304レスポンス返せるようにしてみました。 ETagとはなにか? まずそもそもとしてETagとはなにか? ブラウザキャッシュを利用す…

Turborepoで複数のRemixアプリを同時に開発するためのport設定

TurborepoでRemixのアプリを複数用意するみたいなプロジェクトでちょっと細かい設定が必要だったのでここに書いていこうと思います。 なにが必要なのか portがかぶらない用に注意する必要があります。 このportに2種類あります devServerPortの設定 必要であればRemix App ServerのP…

プロンプトエンジニアリング入門 - 効果的なAI対話を実現するための技術と戦略

この記事はChatGPT時代にどう生き抜くかを考えた結果、プロンプトエンジニアリングが必要だという結論に至ったpolidogがChatGPTに書かせた内容になります。 正しいかどうかは読んだ皆様の判断でお願いします。 この教科書では、プロンプトエンジニアリングの基本概念、技術、戦略、およびベストプラクティスを網羅的にカ…

Ubuntu 22.04 ServerでノートPCを閉じた状態でもサスペンドを防止する方法

自宅の余っていたLet's NoteにUbuntuを入れたんですが、蓋を閉じたらサスペンドになってしまっていました。 基本的にSSHで接続して諸々の操作を行うと思っていたので、サスペンド担ってしまうのは結構都合が悪いわけです。 設定で簡単にサスペンドしないようにできるので、設定を変更してみました。 サスペンドしないよう…

Ubuntu 22.04 ServerでIPアドレスを固定にする

久しぶりに余っているPCを自宅サーバにしようと思い、Ubuntuを入れた。 インストール時にIPアドレスを固定ではなくDHCPからのリースにしてしまったため、外部からSSHで接続不便になってしまった。 そこでIPを固定にしてみようと思う。 設定ファイルを変更する ubuntuのネットワークの設定は以下のファイルを変更す…

Twigでどのような変数が渡されているのかわからないときに調べる方法

サードパーティのライブラリとか触っているとtwigにどのような変数がセットされているのかわからない時が多々あります。 xdebug + ブレークポイントを設定して、なんとか変数をtwigにセットしているコードを探し出すのを毎回するのは苦労します。 dumpを使ってセットされた変数を確認する twigにはdumpという関…

2022

Symfony5.4 + kreait/firebase-bundleでFirebase emulatorを使ってみた

PHPでFirebase emulatorが使えない問題で頭を抱えていた方も多いかと思います。 ただそれは kreait/firebase-php のバージョンが6.2までの話です。 なんと気づいたら 6.3からはFirebase emulatorがサポートされていました。 (※全部コードリーディングしてませんが、少な…

Herokuのphp.iniについて

Herokuの.user.iniに関するトラブルがあったのでメモしときます。 (以前もはまったようなハマってないような・・・。) HerokuでPHPの設定を変更するときは .user.ini を利用して設定を変更します。 .user.iniはあるのに設定が反映されない 今回起きたトラブルは.user.iniがあるのに…