VercelでBEAR Sundayを動かしてみた
Vercelは、Next.jsなどのフロントエンドアプリケーションのproduction環境としてよく使われますが、実はPHPも動かすことができます。 vercel-community/php PHPerとしては、何かPHPのアプリケーションをVercelで動かしたいと思い、今回はBEAR SundayをVercelで…
4 / 39 ページ
Vercelは、Next.jsなどのフロントエンドアプリケーションのproduction環境としてよく使われますが、実はPHPも動かすことができます。 vercel-community/php PHPerとしては、何かPHPのアプリケーションをVercelで動かしたいと思い、今回はBEAR SundayをVercelで…
WordPressをHeadlessCMSとして使いたいと思い、WordPressが用意しているREST APIではなく、独自のエンドポイントを作りたいと考えました。 通常、独自のエンドポイントを設定する場合は rest_api_initのアクションフックを使用します。 WP REST API を使って独自エンドポイン…
Dockerで用意した環境のphpでbasename関数をつかって日本語文字が消えてしまう問題が発生していました。 Googleで検索すると大体は setlocale(LC_ALL, 'ja_JP.UTF-8'); すればいいと書いてあったので脳死で設定してみましたが、ダメでした。 setlocale(LC_ALL, …
同じURIのリンクなのに aria-currentの属性がつく場合とつかない場合があって結構悩んだのでそのメモ。 どのような問題が発生していたのか? よくあるページネーションの実装で、1ページ目の/hoge?page=1はクエリを削除してリンクを表示していた。 ページ番号を削除したNuxtLinkにおいて aria-c…
最近はHTTP Cacheまわりにかなり興味がでてきたので、久しぶりにBEAR.Sundayを触っています。 全く覚えていなかったので、素振りをしようと思ってとりあえずチケットチュートリアルをやりました。 無事に素振りが終わって実際に趣味のアプリケーションのコードを書き始めようと思いましたが、データベースのマイグレーシ…
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…
パーティーハードを設立して5年、受託開発や業務委託の分野でビジネスを進めてきた。 色々なシステムを開発して、経験値もだいぶ上がった気がする。 クライアントから求められるものを形にしていく仕事は、本当に楽しくて学びが多くて充実している。 だけど、最近は「このまま受託開発の会社でいいのか?」という疑問が強くなってきている。…
この記事はChatGPT時代にどう生き抜くかを考えた結果、プロンプトエンジニアリングが必要だという結論に至ったpolidogがChatGPTに書かせた内容になります。 正しいかどうかは読んだ皆様の判断でお願いします。 この教科書では、プロンプトエンジニアリングの基本概念、技術、戦略、およびベストプラクティスを網羅的にカ…
pnpmだと pnpm dlx でいいらしい。 https://pnpm.io/ja/cli/dlx $ pnpm dlx tailwindcss init -p