DjangoCongress JP 2022 のトークを募集中です

2022年11月12日(土)にDjangoCongress JP 2022が東京で開催されます。 現在トークセッションを募集中です。 応募の締切は 8月12日(金曜日)いっぱいまで です。 是非ご応募ください。 https://djangocongress.jp/ 画面右上のリンクから応募フォームを開きます

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

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

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

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

3Gガラケーの機種変更と通信料金の計算 2022/1

auの3Gが今年の3月末で停波になり、これまで使っていたガラケーが使えなくなってしまうので、機種変更&プラン変更をしてきました。 W53K このガラケーは主に通話用途ですが、14年間使っていたようです。 バッテリーもまだ連続待受で1週間以上保つので、よく…

書籍紹介: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…

WindowsにCygwinの作業環境をセットアップする

いつも作業用のWindowsでは、sshやLinux系OSの各種コマンド群はCygwinを使ってます。sshクライアント、bashが使える環境をセットアップするところまでのメモです。 ホームディレクトリはWindowsのホームディレクトリと合わせたいので設定を変更してます。 Cy…

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…

セカンドハウスのある生活をしてみた所感

これは pyspa Advent Calendar 2020 の2日目の記事です。 https://adventar.org/calendars/5310 去年の秋から、生活する場所を東京と千葉の2ヶ所にしています。このことについての所感です。 きっかけ 東京の23区外でマンションの部屋を所有して住んでいま…

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

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

『現場で使えるDjango管理サイトのつくり方』を読みました

『現場で使えるDjango管理サイトのつくり方』 著者のakiyokoさんから献本いただきました。 Djangoの管理サイト(Django Admin)にフォーカスした内容の本です。 https://www.amazon.co.jp/dp/B08HVJPRR8/?tag=tokibitossoft-22www.amazon.co.jp 対象の読者 こ…

1つのVMインスタンスに複数のアプリを置くような構成を考える

VPSなどの環境で、1つのVMインスタンスにたくさんDjangoアプリをホストしたいなー、という場合の構成を考えたりしてました。 自分で運用しやすい形にまとまったので、メモを残しておきます。 要件 1台のVMで複数種類のDjangoアプリを動かす VMのメモリは2~4…

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

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

Pythonの入門者向け動画教材2020年4月開講分

2019年にJMOOCで公開していたPythonの入門者向け動画教材ですが、2020年の4月開講分が受講できるようになりました。 去年は1~4章まででしたが、2章分追加して6章構成になりました。追加部分はオブジェクト指向プログラミングについてです。 JMOOCというオン…

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の学習のためにどういったコードを読むと良いかなど話しました。

VagrantのUbuntu環境をアップグレードする

作業環境としてVagrant(VirtualBox)でUbuntu16.04を2017年ごろから使ってます。 そろそろ20.04も近くなってきたので、今更ですが既存の環境をUbuntu18.04に上げておこうかと思い、色々調べていたのでメモを残します。 使っているboxは ubuntu/xenial64 と ub…

Pythonの入門者向け動画教材

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

DjangoでLOGGING設定をしているときに、IPythonの補完に不具合が出る場合の対処

Djangoに限ったことではないのですが、PythonのloggingでrootのハンドラをDEBUGにしていると、IPythonの補完を実行した際にparsoという依存ライブラリのログが出てしまい、カーソル位置がずれてしまうことあります。 例えば、Djangoで以下のように settings.…

オープンソースカンファレンス2019 HokkaidoでDjangoの紹介をしました

6/1に札幌で開催された オープンソースカンファレンス2019 Hokkaido で、django-ja名義でDjangoフレームワークの紹介をしてきました。 資料はSpeakerDeckにアップロードしています。 Djangoフレームワークの紹介_OSC北海道2019 - Speaker Deck 日本のDjango…

DjangoのSubqueryとOuterRefを使ってサブクエリを組み立てる

DjangoのORMで、サブクエリを使う方法について。任意のSQLであればrawメソッドを使えばよいのですが、なるべくORMのAPIを使いたい。 DjangoのORMでは任意の位置にサブクエリを使えるわけではないですが、例えば「テーブル単位での問い合わせ結果にサブクエリ…

Djangoのマイグレーションでスキーマ変更とデータ変更を分けたほうがよいか

Djangoのマイグレーションは、1つのマイグレーションで複数のタスクを実行できます。 スキーマを変更する処理のあとに、データのマイグレーションを実行、といったようなものです。 意味のある変更をまとめるのは便利そうに思えるのですが、落とし穴があった…

GoogleAppEngine上で動作しているDjangoアプリをStackdriver Debuggerでデバッグする

AppEngineで動かしてるDjangoアプリをStackdriver Debuggerでデバッグする手順について。 Python 用 Stackdriver Debugger の設定 | Stackdriver Debugger のドキュメント | Google Cloud ドキュメントには、Django 1.Xの話しかなく、手順も良くなかったので…

GoogleAppEngine上でDjangoフレームワークのログをStackdriver Loggingに流す

PythonのloggingモジュールからStackdriverにログを流す手順はドキュメントに書かれている。 Setting Up Stackdriver Logging for Python | Stackdriver Logging | Google Cloud Djangoフレームワークを使っている場合は、Djangoのロギング設定を考慮する必…

今年の振り返りとか

これは pyspa Advent Calendar 2018 の4日目の記事です。 https://adventar.org/calendars/3018 毎年のことですが振り返りです。 畑 今年は気温が高かったせいか、夏野菜の苗は11月終わりぐらいまで枯れてなかった。すごい。 ほうれん草 春手前の気温が上が…

Djangoのデータベースルーターのallow_migrateの挙動について

Djangoフレームワークでは、データベースルータークラスを作成して、 settings.DATABASE_ROUTERS に設定することで、モデル毎に使用するデータベースを変えたりできます。 データベースルーターにはいくつかのメソッドを実装しますが、その中の一つ、 allow_…