カテゴリー Django

データベースのデータを一括処理するプログラムでやりがちなパジネーションドリフトの失敗例と対策

データベースから特定の条件に合致したレコードを抽出し、更新するバッチ処理の中で、LIMIT OFFSET を使って1000件程度づつループする時、処理内容によっては全件走査されずに漏れが発生する場合があります。その内容の説明と解決方法を書いています。

データベースのデータを一括処理するプログラムでやりがちなパジネーションドリフトの失敗例と対策

[Django] python-social-auth + social-auth-app-django で、リダイレクトURLのスキーム(http/https)をコントロールする

social-auth-app-django + python-social-auth でログイン時の redirect_uri の HTTPスキーム の http / https をコントロールする方法です。

[Django] python-social-auth + social-auth-app-django で、リダイレクトURLのスキーム(http/https)をコントロールする

django admin画面に複数選択可能なカスタムリストフィルターを追加する

django admin画面のフィルター機能に不満があるので、 複数選択可能なListFilterを作成します。

django admin画面に複数選択可能なカスタムリストフィルターを追加する

django admin画面に簡単にファイルの入力・出力を追加する

django admin画面はmodelのデータ管理に非常に便利な機能です。

django admin画面に簡単にファイルの入力・出力を追加する

実務経験で出会った便利なあれこれ

新卒エンジニアとして半年間働いてきて、現場でさまざまなことを勉強させていただきました。その中でも、もっと早く知っておきたかった便利なツール、Python の書き方など、幅広いあれこれを記事にしたいなと思います。

実務経験で出会った便利なあれこれ

新卒エンジニアが今になって就職前にやっておけば良かったと思うこと3選

就社してからは初めてのブログ投稿となります。

新卒エンジニアが最初の半年に任された業務

今年の春に入社しました、情報システム部の清瀬です。

実務経験0 入社一年目のエンジニアが任されたセキュリティの話

2021年春に入社しました、情報システム部の清瀬です。

Webの技術でレジ(POS) を開発・運用する

当社TORICOは、主にインターネット上での書籍の販売サービス、つまりECサイトを自社開発して展開しています。 実店舗を営業するにあたり、レジ(POSシステム) が必要となります。TORICOでは、POSシステムもWeb技術で自社開発し運用しています。当社と同様に Web技術で POSを開発される方に向けて、私が対応したいくつかの経験を書き残します。

Webの技術でレジ(POS) を開発・運用する

Django の ORマッパーで生成されたSQLを実行前に置換し、JOIN時のインデックスを強制する

Django には、便利な ORマッパーが搭載されており、SQLを一切書かずともRDBの操作が行えます。 今回、SQL実行時に思ったようにインデックスが使用されず、パフォーマンスが出ない問題がありました。 これは、生SQLを実行した場合も同様にインデックスが使われなかったため、Django の問題ではなく、実行計画が最適に作成されなかったというSQL上の問題(というか仕様?)です。 SQL内にインデックスヒントを強引に書き込むことでインデックスを強制した所、正常なパフォーマンスとすることができたので、その方法を書きます。

Django の ORマッパーで生成されたSQLを実行前に置換し、JOIN時のインデックスを強制する

Django に Celery タスクキューを導入し、遅い処理を利用者に体感させないようにする

Django でウェブアプリを作る際、遅い処理をタスクキューにするには、celery が便利です。今回、社内勉強会で Django + celery のチュートリアルを行ったので、celery で簡単なタスクを動かすまでを書いておきます。 内容としては Celery ドキュメントの First steps with Django をなぞっています。 環境 MacOS Python 3.6.5 Django 2.1 Celery 4.2.1 Redis Redisは、キューのブローカーとして使います。Redis以外にも、RabbitMQ やAmazon SQS が使えます。 Redis サーバの起動方法は書いていませんので、適宜起動してください。

Django に Celery タスクキューを導入し、遅い処理を利用者に体感させないようにする

Django の CRUD ジェネリックビュー (ListView, DetailView, CreateView, UpdateView, DeleteView) の簡単な使い方

Django に最初から用意されているビュー(ジェネリックビュー) を使えば、 オブジェクトのリスト表示 オブジェクトの作成 オブジェクトの詳細表示 オブジェクトの更新 オブジェクトの削除 のWebアプリが簡単に作成できます。 Create, Read, Update, Delete をまとめて CRUD と呼んだりしますが、Django では CRUD に対応した汎用的な基底ビューコントローラが用意されているため、それを継承してビューを作ることで、安全で、読みやすいコードを書けます。

Django の CRUD ジェネリックビュー (ListView, DetailView, CreateView, UpdateView, DeleteView) の簡単な使い方

PyCharm + Docker で Django 開発環境を構築する

PyCharm 2016 の Docker サポートの使い勝手が良いです。 Docker で開発環境を作るのは初めてだったのですが、 ローカル ( mac ) は Docker Toolbox を使って開発環境を作る。PyCharm のデバッガでステップ実行できるようにする。 ソースコード、およびログディレクトリは Docker イメージの中に入れず、ホストのディレクトリをマウントして使う 公開サーバを見越して uwsgi, nginx の設定も作っておく という所までできたので、手順を書きます。

PyCharm + Docker で Django 開発環境を構築する

Djangoプロジェクト間を OAuth2 連携する

ローカル環境に Django プロジェクトを2つ作り、OAuth2で(ダミーの)プロフィール情報を取得するまで書きます。 2つの Django プロジェクトを作ります。test_provider, test_consumer です。 OAuth2の認証フローは、サーバ間通信のため「Authorization Code」形式で行います。 OAuth2についての情報は IPAのページ などにあります

Djangoプロジェクト間を OAuth2 連携する

Django Mezzanine で、複数サイトを共存させ同時に運用する

Mezzanine とは、Django (Python のWeb フレームワーク )上で動く、CMS フレームワークです。使い勝手としては Wordpress に似ています。 (英語) http://mezzanine.jupo.org/docs/index.html 最初から入っている機能としては WYSIWYG エディタ ( Tiny MCE ) が入っているのでリッチテキストコンテンツが簡単に投稿できる インラインページ編集 … 管理者ログインしていれば、公開済みページの各セクションに編集ボタンが出て編集可能 Twitter Bootstrap Disqus連携 Gravatar連携 Twitter連携 などがあり、そもそも Django なのでテーマの切り替えが簡単だったり、プラグインの入れて機能を拡張したりなどが容易にできます。プラグイン( Django モジュール) の開発者は世界中に多く存在します。

Django Mezzanine で、複数サイトを共存させ同時に運用する

TORICOの他のブログ投稿

Recent Posts

Feeds

RSS / Atom