二度目がないようにメモ。 どこにも実装していないNot enough segmentsというエラーが発生したので、どこで発生したかを確認するためのメモ。 環境 Python 3.12 PyJWT 2.8.0 原因 JWTとして無効な形式の文字列をdecodeしていたため。 本来であれば、次の形式…
始めに 小ネタ。GitHubのアカウントでusernameがかなり似た名前になることがあります。通知に含まれるusername自体は変更できないものの、Pull Requestの横にprofile nameを追加で表示することで判別しやすくする方法を見つけたので変更しました。 ちなみに…
始めに ※ 自宅で再現しなかったので、そういう事象が発生したということをメモするだけの記事。 FastAPIでアップロードされたCSVをもとに登録する処理を作っていました。そして、特定の条件でエラーになることに気づきました。しかし、エラーが発生行を確認…
始めに 小ネタ。 FastAPIからopenapi.jsonが出力できるなら、フロントエンドで使用する型定義まで出力する手順を確立したくて記事にします。 なお、フロントエンドはすでに構築されていたこともあり、自動生成した型定義の導入までは行えていません。また、F…
始めに Pythonのコンテキストマネージャは、with文と組み合わせてリソース(ファイル、DB接続、ロックなど)の確保と解放を自動化する仕組みです。enterメソッドでセットアップ、exitメソッドでクリーンアップを行うことで、例外発生時も安全にリソース管理…
始めに ※ 結果的に言えばどうにもできなかった話です。 検証環境へのデプロイが通常なら10分程度で終わるはずなのに、最悪のパターンだと30分くらいかかるようになりました。原因を追っていくと、どうやらFastAPIが起動時にメモリを大量消費していることがわ…
始めに 最近、回帰分析をやるようになりました。分析そのものはまだまだ知識不足なものの、とりあえずPyCharmで分析を可視化するJupyter Notebookを使用する方法がわからなかったのでメモします。 なお、本当に初心者向けの記事となります。 環境 PyCharm 20…
※ タイトルのプラポリとはプライバシーポリシーのことを指します。また、サービスの性質によっても異なる可能性があるので、必ずしも鵜呑みにしないでください。 始めに 最近、GDPRを意識してプライバシーポリシーの承認を厳格化して、承認しない場合はサー…
始めに 結果が分かれば単純なミスでした。Pydanticで型定義しただけと考えていましたが、少しでも振る舞いが変わるときはちゃんと確認しましょう。 環境 Python 3.13 Pydantic 2.11.4 実装 変更前のコード SaaS企業が外部連携しやすいようにライブラリを公開…
始めに Pythonに限らずアプリケーションを大規模で運用していくほどライブラリの依存関係が増えていきます。その時にAPIとバッチ等の用途に応じたアプリケーションごと分割する方法もありますが二重管理が面倒になります。JavaではGradleを使用してマルチプ…
始めに Rubyでウェブ開発をしているとURLを扱う場面が必ず出てきます。URLを扱う際には標準ライブラリのURIクラスと、Addressable::URIという標準ライブラリでは満たせなかった仕様を満たすためのgemが存在します。このURIクラスとAddressable::URIを混ぜて…
始めに 某日、ECSでスケールアップで起動しようとしていたRailsのアプリケーションが起動しませんでした。この起きていた不具合を調査する過程で一時ディレクトリに対するRubyの挙動を知ったことをブログにします。 なお、今回のケースは時間経過で自動解決…
始めに 小ネタです。 弊社システムではGraphQLを採用していますが、存在しないmutationを指定していると勘違いしたものを残しておきます。 環境 なし。 実装 次のようなクエリがありました。 mutation createUser($input: CreateUserInput!) { createUserWit…
始めに 最近、不具合調査でAWSのCloudWatchから出力したログを分析および加工するためにDuckDBを使用しています。DuckDBは優秀で自分のやりたいように分析できるのですが、あくまでアプリケーションログをそのまま分析しているだけですので、最終的にはDBのM…
始めに FastAPIはデフォルトではJSONResponseを使用してレスポンスします。FastAPI公式ヘルプにはパフォーマンスを向上させるためにORJSONResponseの使用を提案するページがあります。 fastapi[all]にorjsonが含まれていることもあり、ORJSONResponseを使用…
始めに 小ネタです。 Pythonでdatetime型を扱うときに、timezone情報を与えることができます。 from datetime import datetime from zoneinfo import ZoneInfo datetime.now(tz=ZoneInfo("UTC")) 簡単にtimezoneに合わせた時刻へ変更できることはメリットで…
始めに Amazon SESでメールを送った際に、サプレッションリストに登録される可能性があります。サプレッションリストとは、特定のメールアドレスに送信しないようにする仕組みです。登録されるパターンとしては、メールアドレスが存在しない場合や迷惑メール…
始めに 小ネタ。 CI環境を想定して環境変数でCI=TRUEと設定されていれば、AAAと設定して、ローカル環境を想定してCI環境変数が設定されていなければBBBと設定する。 可能な限りCI環境としてはCI=TRUEだけ管理して、具体的にはcompose.yml内部で閉じるような…
始めに Sentryではフロントでエラーが発生したときに、エラーを調査しやすくなるようにReplay機能があります。この機能は非常に便利なのですが、エラーは発生していないがお客様環境で端末の性能不足やネットワーク性能不足等で正常動作しない場合を追跡でき…
始めに 以前、docker間通信をするときにどのドメイン名やIPを指定すればいいかを調べました。 Dockerのコンテナ間通信をする方法をまとめる - きり丸の技術日記 しかし、例えばS3の署名付きURLを発行した後、フロントから直接署名付きURLでS3にアクセスする…
始めに Pythonのpoetry.lockで確認した事象ですが、他のライブラリのlockファイルでも当てはまると思います。仕様上当たり前のことに気づいたのでメモします。 環境 Poetry 2.0.0 fastapi[standard] 0.115.8 httpx 0.28.1 まとめ dev dependenciesでバージョ…
始めに 特定の環境では再現したのですが、自宅では再現できませんでした。そのため、事象として発生したことのレポートです。 環境 ※ 再現しなかったためなし。 まとめ 基本的にはインスタンスの再更新はrefresh()で問題ないはず。しかし、問題発生したとき…
始めに 本番環境ではないのですが、検証環境でやらかしてしまったインシデントなのでブログにしてお焚き上げします。 やりたかったことは検証環境で不具合が発生していたので、ローカルで検証するために検証環境のDBをエクスポートして、ローカルで再現させ…
始めに Angularで作られたプロジェクトを少しでも初期表示を軽くしようとしていました。lazyloadできる余地がどこにあるのかを調べるためバンドルサイズを分析・可視化しようとしたのですが、Angular18以降では過去に使用していた分析・可視化コマンドがうま…
始めに 小ネタ。 以前、PythonのPytestでParametrizedTestをする記事を書きました。 PythonのPytestでParameterizedTestをする - きり丸の技術日記 調べたときに、もう少し便利できることが分かったのでメモします。 環境 Python 3.13 Pytest 8.3.4 実装 id…
始めに タイトルの出オチ記事です。 Angularにて、状態によってユーザーをnameで検索したり、emailで検索するinputがありました。 emailの場合は完全一致してほしいので、入力値がemail形式であることを検証し、nameの場合は検証しないようにしたいです。 今…
始めに 小ネタ。ライブラリを管理しているときに、いつから依存関係に含まれているか、削除されているかを調べるために使用したコマンドを残します。 ユースケース 特定の記載が入ったコミットを探す 環境 git 2.43.0 実装 次のコマンドで、uv.lockに含まれ…
始めに 先日の記事にて、FastAPIのイメージが1GBになってしまった件を書きました。何か対策できないかと調査していく中で、gzipではなく、zstdで圧縮することで高い圧縮率と高い解凍速度を達成できることを知りました。 今回の記事ではzstdでDockerイメージ…
始めに pydantic等のPythonのライブラリはコア部分がRustで書かれていて、Pythonでも十分な処理速度が確保されている、という表現をされることがあります。 そのため、基本的にはRustで作られたライブラリに移行しようとして、テンプレートエンジンのjinja2…
始めに 正規表現には\wというメタ表現があります。私のプロジェクトではフロントのTypeScript, バックエンドにRuby, Pythonを使用しておりました。 もともとは正規表現を使用しないチェックロジックを使用していましたが、それぞれの言語で実装漏れが発生し…