Python

PythonのcProfileモジュールを使ってプロファイル取得とSnakeVizによる可視化

先日のPyCon Kyushu Kagoshima 2024で登壇したcProfileの資料の内容から抜粋しつつ、cProifleの使い方について少し書いてみます。 tokibito.hatenablog.com Pythonのプロファイルとは Pythonの実行に関する統計情報 関数がどれだけ呼ばれたか 実行時間どのぐ…

PyCon Kyushu Kagoshima 2024に参加しました

2024/5/25にPyCon Kyushu Kagoshima 2024が鹿児島県で開催され、参加してきました。 kyushu.pycon.jp 私はPythonのプロファイラの使い方の紹介をしました。 speakerdeck.com イベント参加者数が予想以上に多くて、賑わっていたように思います。 鹿児島はアー…

Djangoのプロジェクトにヘルスチェック用のエンドポイントを提供するdjango-health-check

ウェブアプリの外形監視をするときには、外形監視用のエンドポイントURLを用意することが多いと思います。 外形監視用のエンドポイントでは、アプリからデータベースなど各種ミドルウェアへの接続が正常であるかなどをチェックしますが、チェック項目はサー…

Djangoで動的にフォームクラスを作成する

Djangoのフォーム機能は通常、 django.forms.Form クラスを継承して定義をします。 フォームを使う | Django ドキュメント | Django リクエスト時に動的にフォームクラスを生成したい場合もあるので、今回はそれをやってみます。 フォームクラスを動的に生成…

Pythonのdataclasses.dataclassを使う

Pythonのdataclasses.dataclassは普段からたまに使っていますが、良く使っている書き方を人に紹介するためにメモを残します。 dataclasses - データクラス - Python 3.12.2 ドキュメント dictと相互変換するクラス オブジェクトとdictで相互変換するクラスを…

Djangoのキャッシュフレームワークを使った場合のキーと値の取り扱い

Djangoフレームワークには、データをキャッシュする仕組みを抽象化、共通化したキャッシュフレームワークが含まれています。 Django's cache framework | Django ドキュメント | Django どのようなキーと値が保存されるのか キャッシュフレームワークのAPIで…

terapyon channel podcastにゲストで呼ばれてきました

terapyon がやっている terapyon channel podcast にゲストでお呼ばれして、しゃべってきました。 #88 tokibitoさんをゲストに JMOOCの無料Python講義のリニューアルとプログラミング教育 | terapyon channel podcast 話題は先日のJMOOCの教材作成についてや…

Pythonの入門者向け動画教材 2023年改訂版

JMOOCで2020年に公開していたPythonの入門者向けの動画教材ですが、昨年の11月に内容を更新したものを公開していました。 まだ記事にしていなかったので、ここでも書いておきます。 Python入門2023改訂版 - Python3.11対応版 Pythonによるプログラミング入門…

Pyodideを試す

Pyodideは、CPythonをWebAssembly(WASM)/Emscriptenにポーティングしたソフトウェア。 PythonがWASMとして動作するので、ブラウザ上でPythonを動かせる。 pyodide.org ドキュメントには実際に動作するREPLのリンクがある。 https://pyodide.org/en/stable/…

Djangoのシグナル機能(django.dispatch.Signal)

Djangoには、フレームワーク内での各種アクションの発生を他の機能へ通知する、シグナル(Signals)という機能があります。 Signals | Django ドキュメント | Django シグナルの機能を使うと、Djangoアプリケーション間のモジュールの依存関係を緩くできたり、…

DjangoのフォームをDjango shellでデバッグする

Djangoフレームワークには、ウェブ用のFormを作る機能があります。 フォームを使う | Django ドキュメント | Django フォームを定義して実際にブラウザ上で表示するためには、ビューやテンプレートを用意する必要があるのですが、少しフォームを試したいだけ…

PyCon APAC 2023へのポスターセッション参加とDjango利用状況アンケート結果

2023/10/27~10/28の2日間、PyCon APAC 2023に参加してきました。 今回はdjango-jaのポスターセッションをしました。 ポスターセッションは、所定の展示スペースに収まるサイズのポスターを作って、展示しておき、Breakの時間帯にはポスターの前に待機して、…

Djangoのテンプレートローダーを自作する

Djangoフレームワークのテンプレートエンジンは、『テンプレートをロードする処理』を自分で実装した処理に差し替えるための設定が用意されています。 django.template.loaders.base.Loader を継承したクラスを実装し、 settings.py で TEMPLATES を設定する…

django-extensionsの runscript コマンドでスクリプトを実行する

django-extensionsには、スクリプトファイルを実行するための runscript というコマンドが用意されている。 このコマンドを使うと、Djangoのコンテキスト(つまり、Djangoのsettings.pyが適用された、 django.setup() を実行済みの状態)で、Pythonのスクリ…

Djangoのcacheフレームワークで複数の値をまとめて取得、更新する

試したバージョンはPython3.10, Django 4.2.4, pymemcache 4.0.0 Djangoのキャッシュフレームワークを使うと、memcachedやRedisなどをキャッシュサーバーとして利用できる。 複数の値をキャッシュサーバーから読み書きする際、 cache.get() cache.set() を何…

Djangoで文字列をテンプレートとして使う

Djangoでテンプレートエンジンを使う場合、テンプレートはファイルとして用意する場合が多いですが、文字列を入力とすることもできます。 The Django template language: for Python programmers | Django documentation | Django 試したバージョンは、Pytho…

冗長なtoxのマトリックスビルドの設定を整理する

django-ftpserver はDjangoフレームワークに依存するライブラリなので、toxで複数のPythonバージョンとDjangoバージョンの組合せでテストコードを実行するように設定しています。 tox.iniの設定が冗長だなあと感じていたのですが、envlistのマトリックスをシ…

GitHub Actionsでtoxのマトリックスビルドを実行する

Djangoフレームワークに依存しているライブラリを作っていると、複数のPythonバージョンとDjangoバージョンの組合せでテストを実行したくなります。 ローカルでvenvを使って複数の環境でテストするのはtoxを使ってできます。 GitHub上でホストしているOSSで…

書籍紹介:Python実践レシピ

『Python実践レシピ』をレビューでお手伝いしまして、本書をいただきましたので紹介します。 Pythonエンジニア育成推進協会監修 Python実践レシピ作者:鈴木 たかのり,筒井 隆次,寺田 学,杉田 雅子,門脇 諭,福田 隼也技術評論社Amazon 本書はPython3.9をター…

Djangoで他のユーザーに成り代わる機能を提供するdjango-hijackを試す

ウェブサービスの運営で、「特定のユーザーでログインして画面の動作を試す」ことをしたい場合、django-hijackというパッケージで簡単に実現できます。 試したバージョンは、Python 3.10, Django 3.2, django-hijack 3.1.2 です。 ドキュメント django-hijac…

Djangoの自動主キーフィールド

Djangoではモデルクラスに primary_key=True のフィールドを明示的に定義しない場合、自動で id という名前で主キーのフィールドが追加されます。 Automatic primary key fields | Django documentation このとき使われるフィールドのクラスは、Django 3.1以…

Ubuntu 20.04(Focal Fossa)にdeadsnakes PPAでPython3.9をインストールする

Ubuntu向けのPPAであるdeadsnakesを使うと、aptコマンドで複数のPythonバージョンを簡単にインストールできます。 add-apt-repositoryコマンドをインストール PPAのaptリポジトリの追加に add-apt-repository コマンドを使います。 software-properties-comm…

書籍紹介:エキスパートPythonプログラミング改訂3版

『エキスパートPythonプログラミング 改訂3版』を査読でお手伝いしまして、本書をいただきましたので紹介します。 エキスパートPythonプログラミング 改訂3版作者:Michal Jaworski,Tarek ZiadeKADOKAWAAmazon 最初に手にとった際、「分厚い・・・」と感じま…

書籍紹介:実践Django Pythonによる本格Webアプリケーション開発

@c_bata_ さんの著書、『実践Django Pythonによる本格Webアプリケーション開発』をいただいたので紹介します。 実践Django Pythonによる本格Webアプリケーション開発 (Programmer’s SELECTION)作者:芝田 将翔泳社Amazon 本書の内容 Djangoの基本機能、モデル…

Djangoフレームワークのセッションの有効期限

Djangoフレームワークのセッションの有効期限について調べる必要があったのでまとめておく。 試したバージョンは、Python 3.9、Django 3.2.4。 ドキュメント Djangoのセッションについてのドキュメント https://docs.djangoproject.com/ja/3.2/topics/http/s…

Djangoの管理コマンドを上書き(置換え)する

Djangoフレームワークの管理コマンド(manage.py スクリプトのコマンド)をオーバーライド(上書き、置換え)する方法について。 管理コマンドの登録の仕組み Djangoのドキュメントには、管理コマンドのオーバーライドについての記載があります。 https://docs.d…

FlaskのBlueprintのフックポイント(before_requestとbefore_app_request)について

FlaskのBlueprintには before_request と before_app_request のフックポイントがあり、どう呼ばれるのか検証していた。 API — Flask Documentation (1.1.x) ドキュメントを読んでも、実行される順番や条件がわかりづらい。 検証コード Flaskのバージョンは1…

python-socketioとFastAPIを組み合わせて動かす

python-socketioのsioインスタンスを操作するWebAPIを作りたくて調べていました。 試した環境はUbuntu 18.04、Python 3.8、python-socketio 4.4.0、python-engineio 3.11.2、FastAPI 0.52.0です。 python-socketioのASGIAppクラスに other_asgi_app という引…

Pythonについてインタビューされた記事がエンジニアHubに掲載されました

私へのインタビュー記事がエンジニアHubというメディアに掲載されています。 employment.en-japan.com Pythonの学習のためにどういったコードを読むと良いかなど話しました。

Pythonの入門者向け動画教材

去年から手伝っていて、今年の4月には公開されていたのですが、Pythonの入門者向けの動画の教材を作っていました。 JMOOCというオンライン講座の1つとして公開されています。 www.fisdom.org 講座はFisdomというプラットフォームで配信されているため、利用…