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_…

Promiseとasyncとawait

Promiseとasync、awaitの使い方を理解するために書いたサンプルコード。 setTimeoutを使って1秒後に画面に文字列を出力する。 Promiseとthen() Promiseオブジェクトの生成とthen()メソッドの利用例。 <html> <head> <meta charset="utf-8"/> <title>Promiseとthen()</title> </head> <body> <button onclick="main()">Run</button> <div id="output"> </div> <script> function print(text) { …</body></html>

AWS IoT エンタープライズボタンを試してみる

AWS IoT エンタープライズボタンは、AmazonのDashボタンの汎用のやつ。 IoTボタン www.amazon.co.jp ボタンを押した際にEメール送信、SMS送信、Lambda関数の実行などを設定できる。 ボタンの動作にはWifiネットワークが必須となっている。初期セットアップは…

Python3.7+Django2.1のアプリケーションをGoogleAppEngine/Standard環境にデプロイする

GoogleAppEngineのStandard環境でPython3.7のランタイムがベータ版で利用できるようになったので、試していました。 ドキュメントにはFlaskアプリケーションをデプロイする手順が記載されていましたが、Djangoアプリケーションだと少し設定が追加で必要だっ…

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

7/7にオープンソースカンファレンス2018 Hokkaidoに行ってきました。 www.ospn.jp 北海道のOSCにはここ数年は参加し続けてますが、セミナーや展示の数も多く、毎年楽しめてます。 今回もdjango-ja名義でDjangoフレームワークの紹介をしました。資料は去年の…

PythonでQRコードのSVGを生成する

PythonでQRコードのSVGを作るには、qrcodeモジュールを使えば簡単でした。 pypi.org Python3.6で試しました。 pip install qrcode SVGとPNG(pymaging-png)はPure Pythonのモジュールだけで生成できるようです。 PILでPNGを生成させることもできるようです。 …

DjangoCongress JP 2018に参加しました

DjangoCongress JP 2018にスタッフとして参加しました。 djangocongress.jp Djangoフレームワークのみをテーマとした100人以上の規模のイベントは、日本では初めてだったように思います。 半年前から準備してきたイベントですが、無事終了できてよかったです…

Python入門者向けハンズオン #pynyumon にメンターとして参加してきました

Python入門者向けハンズオンにメンター枠で参加してきました。 python-nyumon.connpass.com 会場 Retty株式会社のオフィスが会場でした。綺麗で広くてよかったです。 メンターをやってみた雑感 個人的には、Djangoの初心者向けハンズオンをそのうちやろうと…

ZenFone 4 Maxを購入した

普段使いのスマートフォンはNexus4でしたが、バッテリーの保ちが悪くなってきたのと、ストレージが足りなくて厳しくなっていたので、機種変更を検討しました。 Nexus4は2013年に1台目を購入し、フロントパネルを何度も修理したりして使ったあと、2年前ぐらい…

DjangoフレームワークとVue.js (Vuex)を使ってアプリケーションを作る

以前作成した DjangoフレームワークとVue.jsを使ってアプリケーションを作る - 偏った言語信者の垂れ流し の、Vuex対応版です。 よかったらGitHubでStarをつけてください! github.com controllerとしていた部分を、VuexのStoreに書き換え、Vueコンポーネン…

NGINX UnitでDjangoアプリケーションを動かしてみる

NGINX Unitは、NGINXの開発元が作ってるアプリケーションサーバー。 http://unit.nginx.org/ Pythonのアプリケーションも動かせるとのことなので、Djangoアプリで試してた。 試した環境は、Vagrant上でUbuntu 16.04 LTS、Python 3.6.2(deadsnakes PPA)、Djan…

Django REST FrameworkのフィールドでJSONを扱う

DjangoのモデルにTextFieldでJSON文字列を保存しておき、APIをDjango REST Frameworkで提供する例。 JSONデータを保存して、読み込み時にもJSON形式のまま提供したかった。 restframeworkのシリアライザのFieldクラスを継承し、JSONを扱うフィールドを定義し…

PythonでUNIXドメインソケットを使ったHTTPサーバーとクライアントを作る

Pythonでプロセス間通信をしたい、プロトコルはHTTPで、データフォーマットはJSON。なるべく1つのスクリプトファイルでサーバーやクライアントを提供したい。 こんな感じの要件。 元々Flaskが使われてるプロジェクトだったので、Flaskで全部やればいいかーと…

『エキスパートPythonプログラミング 改訂2版』を読みました

『エキスパートPythonプログラミング 改訂2版』のレビューのお手伝いをしたので見本誌をいただきました。 エキスパートPythonプログラミング改訂2版作者: Michal Jaworski,Tarek Ziade,稲田直哉,芝田将,渋川よしき,清水川貴之,森本哲也出版社/メーカー: KAD…