2024年のふりかえり

2024年も残りあとわずかですね。 今年の年末はちょっと早めに帰省を行い、ずいぶん片付けていなかった実家の自室の整理を始めていました。 ちゃんと掃除をするのは大学入学前だと思うので、実に12年ぶりでしょうか。 昔着ていた服や、もう中古屋さんでも売れ…

チャンクサイズの設定場所

先週、chunksのサイズを決めるコードがスマートだったという記事を書きました。この記事の中でチャンクサイズについて触れましたが、実際にコードを見るとサイズ周りの設定・処理でパッと見リファレンス上の説明とコードが一致しなかったので調べました。 20…

chunksのサイズを決めるコードがスマートだった

DjangoのUploadFile.chunks()を調べていて知ったコードの書き方の学びです。 最初はスッと理解できませんでしたが、挙動を調べることで「確かにこういう書き方したらスマートだな」と思いました。 概要 UploadFile.chunks()はDjangoでファイルアップロード時…

アンパック演算子を関数呼び出し時に利用するTips

イテラブルアンパック演算子や辞書アンパック演算子を関数呼び出しのタイミングで利用するというTipsを紹介します。 これらについて知っていたのですが実際に使ってみて「便利だなー」と実感したので、具体例を交えて解説します。 使い方 サンプルコードを見…

AWS SDK for Python (Boto3)の知らなかった概念 低レベルAPIと高レベルAPI

PythonでAWSリソースを操作するためのライブラリとして、AWS SDK for Pythonこと、通称Boto3があります。 https://boto3.amazonaws.com/v1/documentation/api/latest/index.html このBoto3を触り始めた最初は低レベルAPIと高レベルAPIという2つの概念がある…

select_for_update() を利用して行ロックを掛ける

先週、今更理解するトランザクションという記事を書きました。 トランザクションは「全て反映 or 反映しない」する仕組みですが、そのトランザクション内で利用できる仕組みとしてロックがあります。ロックを掛けることで、そのテーブルに対しての操作を制限…

今更理解するトランザクション

私は今までトランザクションを意図的に利用する機会が無く、「なんかDBの整合性を保つやつなんだよなー」くらいの理解度でした。他にもログを見ててBEGINやCOMMITって何...?となっていたこともあり、トランザクション周りについて知る必要があったので、今…

dumpdataとloaddata

前置き 相変わらず家のことでバタバタしており、久しぶりの更新です。 そろそろ第一段階が落ち着きそうです。家について、この数ヶ月色々と調べたので、どこかでまとめられると良いなと思いつつ。そんな暇は無いのかも?など考えています。 前置きはさておき…

call_commandをpatchしようとしてちょっと詰まった話

約2週間ぶりのブログ更新です。 2024年はほぼ毎週欠かさずブログを書いていましたが、先週は家庭の事(家探し)でバタバタして書く時間を流石に捻出できずという状況でした。徐々に話が進みつつあるので、うまいこと決まると良いなと思っています。 前置きは…

PyCon JP 2024に参加しました

2024/9/27-28に開かれたPyConJP 2024に参加しました。 東京で開かれるPyConに参加するのはこれで3年連続、3回目でした。 今年は例年よりもセッションの内容が分かるようになってきて、自身の成長を感じつつ聴講していました。 聴いたセッション 以下のセッシ…

docker(compose)上で動いているDjangoプロジェクトをPyCharmでデバッグする

この記事は Djangoもくもく会: 4回目 で書いた記事です。 Djangoのコードリーディングを進める中で、実際に挙動を確認する際pdbだけでは無理だなーと思ったので、PyCharmのデバッガを利用できるように設定しました。 タイトルの通り、docker(compose)上で動…

Viewなどのコードから管理コマンドを実行できるcall_command

Django管理コマンドをViewなどでも利用したい場合、django.core.management.call_command を利用することで実行出来ます。 https://docs.djangoproject.com/ja/5.1/ref/django-admin/#running-management-commands-from-your-code に記載があります。 シンプ…

外部キーのidのみを利用する場合は`<外部キー名>_id`で取得しよう

Djangoのmodels.ForeignKeyを利用した関連モデルのidのみを利用するケースのTipsです。 リファレンスの以下ページに書かれている内容が元ネタになっているので、正確な記述を知りたい方は以下を参考にしてください。 https://docs.djangoproject.com/en/4.2/…

Python3.12のf文字列(f-string)の変更点を確認する

Python3.6系から文字列をフォーマットできる機能として、f文字列(f-string)が追加されて、%やstr.format()よりも便利に記述できるようになっています。 そのf文字列がPython3.12からより使いやすくなるような変更が入ったようだったので、調べて内容を軽くま…

家を探しています

タイトルが早速釣りのようになってますが、正確には住宅購入のために行動中、といった状態です。 なぜ? 元々、愛知に引っ越す前段階として、「奈良で家を買おうとしていた」と言うのがあります。 そこから実際に愛知に引っ越してきて、今に至る訳ですがお盆…

pytestのparametrizeでidを指定できる(test ID)

pytestにはtest IDという機能があります。 この機能を使うことで、テストの実行結果をちょっとわかりやすくできます。 今回は以下の環境で確認しました。 Python3.12.1 pytest 8.2.2 pytestの公式リファレンスでは以下に例が記載されています。 https://docs…

ECS Web Application ハンズオンを試してみた

AWS

ECSを使ってDjangoのアプリケーションをデプロイできるようになるため、まず手始めにECS Web Application ハンズオンを触ってみました。 ハンズオン自体はDjangoではなくRuby on Railsかつ、先日から新規ユーザーは使用できなくなったCloud9を使用する前提で…

Form.non_field_errors()を復習する

Djangoのnon_field_errors()を学習した時「フィールドが無いエラー・・・?」と誤解したことがありました(それはno_field_error(s)ですかね)。 実際には「特定のフィールドに関連付けられていない エラーのリスト」ということですが、復習を兼ねて内容をま…

PasswordResetConfirmViewで用いるuid, tokenについて理解する

この記事は Djangoもくもく会: 3回目 で書いた記事です。 パスワードリセットの時に利用されているuid, tokenについて調べました。 そもそも先週書いた記事PasswordResetTokenGeneratorの時刻に関するテスト実装方法についてはtoken生成について調べていた時…

株式会社ビープラウドに入社して1年が経ちました

はじめに 調べごとをしていたら某先輩のブログにヒットして、他の記事も見ていたらこんな記事がありました。 BeProudに入社して一年が経ちました 読んでいて「この先輩でもこんなことがあったのか」「あの由来はこういうことだったのか」「Japanese no job..…

PasswordResetTokenGeneratorの時刻に関するテスト実装方法について

Djangoのパスワードリセット時のtoken生成について調べて実装を見たところ、「時刻に関するテストの書き方でこういう方法もあるのかー」と思う内容を見つけました。 Django5.0で確認しています。 token生成について まずは起点となるtoken生成について。Pass…

小ネタ:はてなブログの自動リンク付与をオフにする方法

最近ブログ記事を書いていて、RSSフィード経由で取得した記事のプレビューに自動リンクが付与されているのが微妙に感じていました。 調べてみると、はてなブログのキーワードリンク下線を消す方法という記事もありましたが、設定してみてもRSSおよび、スマホ…

Python3.12でtype文による型エイリアスが出来るようになっていた

PythonのLiteral型について調べる過程で学んだことを記録。 そのため今回はtype文を中心に書きます。 今回の検証環境は以下の通りです。 Python 3.12.1 mypy 1.10.1 type文とは type文はPython3.12から追加された型エイリアスを定義するための構文です。 7.1…

Djangoオンラインミートアップ #2 に参加した

前回、飛び込み参加したDjangoオンラインミートアップ #2に参加しました。 途中参加でしたが面白かったです。 tokibitoさんの発表 発表された記事: Djangoのプロジェクトにヘルスチェック用のエンドポイントを提供するdjango-health-check 参加した時にはす…

ポエム: アウトプットをやっている理由

最近、アウトプットについて会社で話す機会があった。 よくアウトプットしててすごいよね、とも言ってもらえたけど、自分の中では「よく」というほどでもないなーとか思っていたりして、じゃあどう思っているかなどアウトプット絡みで書いてみる。 あとは「…

Developer ToolsでPOSTされた値をチェックする

form(formset)の内容をデバッグするの話で「そもそも開発者ツールでHTTP通信の内容をチェックするのじゃダメだったの?」とshimizukawa さんに教えてもらったので、調べてみた記録。 前提 Google ChromeのDeveloper Toolsを利用 Developer Toolsを日本語化し…

form(formset)の内容をデバッグする

Djangoのform(formset)で保存される内容が?だった時にデバッグする方法として教えてもらったので「こうすれば良いよね」を忘れないように記録。 前提条件 悪いのがフロントエンド側にあるのか、バックエンド側にあるのかわかっていない サンプルコード 以下…

VueのnextTick()が最初わからなかった話

Vue

Vue.jsでnextTick()というAPIが存在して、最初どういうものか分からなかったが完全に理解した記録。 nextTick()とは 公式リファレンスには次のように書かれている。 A utility for waiting for the next DOM update flush. https://vuejs.org/api/general.ht…

ユニットテストのmockを学び始める

mockは今まで「便利らしいけどなるべく使わない方が良いんでしょう?壊れやすいとも聞くし・・・」という考えもあり、積極的に書こうとすることは無かった。 そもそも現職入社までユニットテストを書く機会が殆どなく、自分で書くコードもモックを用いた方が…

名前付きボリュームを認識した話

Docker, Docker Composeの設定には(にも?)まだまだ疎いところがある。 今回は名前付きボリューム設定について認識できたので、その内容を記録する。 他の設定、コメントなども含まれるが https://github.com/nibuno/emoemo/pull/14/files から実際のコー…