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…

『いちばんやさしいPythonの教本』を読みました

PyQの関連で献本いただいたので『いちばんやさしいPythonの教本』を読みました。前職の同僚が執筆した本です。 いちばんやさしいPythonの教本 人気講師が教える基礎からサーバサイド開発まで (「いちばんやさしい教本」シリーズ)作者: 鈴木たかのり,杉谷弥月…

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

DjangoフレームワークとVue.jsでアプリケーションを作る例として、テキストを編集保存するシンプルなノートアプリケーションを作ってみました。 github.com Djangoのサーバーサイドレンダリングを使いつつ、Vueを組み合わせる一例として参考になればよいかな…

Windows上のVirtualBox共有フォルダでシンボリックリンクを有効にする

ホストOSをWindows、VirtualBox上のゲストOSをLinuxとして、VirtualBoxの共有フォルダ機能を使った場合、Linux側で共有フォルダ内にシンボリックリンクを作ろうとすると、デフォルトでは許可されず、エラーが発生します。 vagrant@ubuntu-xenial:/vagrant$ l…

2018年

年初なので今年やりたいこととか考えて整理しておく。 まず去年のを見直す。 2017年 - 偏った言語信者の垂れ流し 見直してみると、2017年に書いたことはあんまりやれてない。 去年の後半は仕事とかで余裕がなかったかな。 今年はもうちょっと具体的な内容に…

『仕事ではじめる機械学習』を読みました

タイトルの通り『仕事ではじめる機械学習』を電子版で読みました。オライリージャパンさん献本ありがとうございます。 一通りざっと読んだくらいですが、感想を書いておきます。 Ebook: www.oreilly.co.jp 紙のほう(2018年01月16日 発売予定): www.oreilly.c…

モデルクラスを継承してメソッドを追加する(proxyを使う場合)

この記事は Django Advent Calendar 2017 の7日目の記事です。 Djangoのモデルクラスを継承した場合、Metaに特に指定が無ければ、マルチテーブル継承となり、migrateを実行すると2つのテーブルができます。 モデルを継承して単一のテーブルにする方法は2つあ…

Djangoフレームワーク組込みのドキュメントジェネレータ(django.contrib.admindocs)の紹介

この記事は Django Advent Calendar 2017 の6日目の記事です。 tell-kさんの記事 を読んでいて、「そういえばDjangoには組込みのドキュメントジェネレータがあるんで紹介しておこう」と思ったので書くことにしました。 タイトルの通り、 django.contrib.admi…

1年の振り返りなど

この記事はpyspa Advent Calendar 2017の2日目の記事です。 https://adventar.org/calendars/2258 今年1年の振り返りなどいくらか。ほとんど畑の話。 畑 去年畑を借りて、今年も契約を更新しました。 借りている市民農園の畑の使用料は1万円/年です。安い。 …

『Google Homeを使いたおす! DialogflowとAoG Meetup』に参加しました

タイトルの通り、勉強会に参加してきました。 ブログ枠で参加したので、ノルマをこなします。 gcpug-tokyo.connpass.com 感想とか GoogleHomeは持っていて、Dialogflowとつなぐチュートリアルまでは実施済みぐらいの知識で参加した。 DialogflowはWebhookの…

Hue meetupでDjangoの話をしてきました

Hadoop WebUIソフトウェアのHueのmeetupでDjangoの話をしてきました。 connpass.com HueはDjangoフレームワークで作られているのですが、どのように使われてるとか、拡張の仕方とかを紹介しました。 スライドは、slideshareにアップロードしています。 Djang…

PyConJP 2017でDjangoの認証の話をしてきました

9/7~9/10に行われたPyConJP 2017に参加し、『Djangoフレームワークのユーザーモデルと認証』というタイトルで話してきました。 https://pycon.jp/2017/ja/ Djangoフレームワークのユーザーモデルと認証 Djangoの認証まわりを触る前に知っておくとよさそうな…