2024-01-01から1年間の記事一覧
Pythonでは3.10からパターンマッチングができるようになりました。Pythonではswitchではなく、matchで他言語のswitchと同等機能を提供できます。なお、当然ながらswitch文がない3.10以前はif... elif... elif... elseしかできないです。 環境 Python 3.12.3 …
処理高速化のためにSQLAlchemyを非同期処理で使用していると、気を付けないとMissingGreenletというエラーが発生します。その対策をブログにします。 環境 Python 3.12.3 sqlalchemy 2.0.30 ゴール AsyncSessionを使用している最中に、次のエラーが出たとき…
Gitでブランチを切って開発しているとローカルブランチはすぐに複数増えてしまいます。今回の記事では、リモートリポジトリが存在しない場合にローカルブランチもワンライナーで削除するためのメモ。 環境 Git 2.34.1 WSL Ubuntu 22.04.4 LTS ゴール マージ…
FastAPIでHTTPExceptionをログに出力しようとした時のメモ。 環境 Python 3.12.3 FastAPI 0.103.1 0.110.0 対応 少し古いFastAPIのライブラリなら、reprを使用してシリアライズしてください。もし、strで検証しても空文字列でなければ、そのままでも問題あり…
Pythonでマルチパートメールを送る方法をブログにしました。しかし、前回の記事はファイルからテンプレートを取得していないので、マルチパートメールを実質運用できません。今回はjinja2を使用してファイルからテンプレートを取得することで実運用できるよ…
Pythonでメールを送る方法を素振りしたかったのでメモします。SMTPを使用し、マルチパートメールを送るところまでを目標とします。 なお、実務ではSESを使用したり、SendGridを使用することが多いと思うので、あくまでローカルでメールの動作確認をする程度…
GitHubでレビューを依頼されたときに、レビュー依頼が多すぎてOpen状態のPullRequestだけを確認したい時のメモ。 環境 GitHub 2024/04/20 対応 次のどちらかをフィルタに設定してください。 draft:false -is:draft ちなみに、JetBrainsのPull Requestsでも有…
DockerのMinioを使用していますが、イメージが古すぎてディレクトリごとアップロードができませんでした。そのため、最新イメージにアップデートしようとしたところ、エラーメッセージが出て起動しなかったその対応を記載します。 ※ プロダクション環境でMin…
※ 家で検証したときはできなかったのですが、会社で検証したときはできましたので、残しておきます。 WSLで起動したサーバに対してiPhoneやAndroidからアクセスすることでモバイル端末の実機確認をしたかったのですが、単純にWSLのIPにアクセスするだけでは…
Gmailでテキストメールを送信する方法はたくさん見つかったのですが、受信してテキストメールを確認する方法は見つからなかったのでブログにします。 なお、GmailではHTMLメールとテキストメールを選んで受信はできません。そのため、受信するではなく、受信…
testcontainers-pythonでminioを使う際に少々手間どったのでメモに残します。 なお、この記事ではtestcontainers自体のメリット等については記載いたしません。 環境 Python 3.12 boto3 1.34.69 minio 7.2.5 testcontainers 4.1.1 ゴール boto3でminioに対し…
ZennのScrapsと同じような感覚の記事。間違っている可能性は十分にあります。 今回の記事ではpytestについて自分が調べたことをまとめます。 環境 Python 3.7.9 pytest 7.4.3 pytest-check 2.2.2 Pytestについて 処理順番 pytestではヒットした順番で順次テ…
pyrightを使用している際に、reportMissingSuperCallが発生したので対応していました。 error: Method "__init__" does not call the method of the same name in parent class (reportMissingSuperCall) ただし、コード上は特に何も継承していません。 clas…
同一のJSONやDictを与えているはずなのに、生成されたJWTが変わってしまったというメモ。 なお、ライブラリの特性である可能性はあるので、すべてのJWTライブラリで発生するわけではありません。 環境 Python 3.11 python-jose 3.3.0 原因 JSONやDictとして…
テスト時に使用するメールドメインについてexample.comを使用していますが、メールドメインで制御しているコードを検証したい時にほかにも安全に使えるドメインがないかを調べたときのメモ。 すでに飽和している情報ですが自分のメモのために残します。 テス…
Pythonでフレームワークから発生した例外を元に、適切に自作した例外に変換する方法に複数あることを知ったので、それを素振りしました。 なお、結果だけ先にお伝えするとraiseするだけでも9割問題ありません。 環境 Python 3.11.6 確認方法 Pythonでは単純…
WSLで開発中にroot権限で作成されたファイルがあり、IntelliJ IDEAで更新できなかったファイルがありました。そのためディレクトリごとchownとchmodを行ったのですが、Gitに変更箇所があると検知されてしまい、気づかずにコミットしてしまいました。 今回の…
CI上のRailsのRSpecテストが30分もかかっていてストレスフルだったので、テストを並列化する等で30分かかっていた時間を12分まで削減しました。 そのときのメモ。 環境 AWS CodeBuild Ruby 2.7.2 Rails 6.0.3.6 Parallel_tests 4.4.0 MySQL 8 前提 docker co…
同一ネットワークに所属していればローカルで起動したサーバをiPhone等の他端末からアクセスできるのは知っています。Windowsの場合ipconfigで表示されたIPを指定すればアクセスできることも知っています。WSLの場合、別のIPを保持していることが原因だと分…
WSLの時刻がズレたことによるエラーが発生したので、時刻修正をした時のメモ。 環境 Ubuntu 22.04.2 LTS GNU/Linux 5.15.133.1-microsoft-standard-WSL2 x86_64 前提条件 なし コマンド 次のコマンドをWSL上で実行することで、Windowsの時刻と一致できます。…
sudoコマンドを実行したいが、パスワードを忘れたのでWSLのパスワードをリセットするときのメモ。 環境 Ubuntu 22.04.2 LTS GNU/Linux 5.15.133.1-microsoft-standard-WSL2 x86_64 前提条件 変更対象の一般ユーザー名が分かっていること コマンド # root ユ…
Macを使用している他人がコミットしたファイルをpullしようとしたらFilename too longが出力されてpullできませんでした。その解決方法を残します。 環境 Windows 11 GitBash 4.4.23(1)-release ゴール 次の操作時にエラーが発生しない。 $ git reset --hard…
SQLの小ネタ。 レコードが1:Nの関係のときに、Nが一定数以上のレコードが存在しうるか、存在する場合はどのようなレコードかを知りたいことがありました。 今回の記事ではユースケースとして分かりやすいように、usersテーブルからnameのうち同姓同名が何人…