著者 四柳剛

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 タスクキューを導入し、遅い処理を利用者に体感させないようにする

Google Hangouts Chat にプログラムからメッセージを送信する

Google ハングアウトの後継のチャット(インスタントメッセージング)サービス、Chat では、Webhook エンドポイントを使うことでとても簡単にチャットルームへのメッセージの送信ができます。 メッセージの送信に、チャット用の大規模なアプリ開発は不要です。Python でも curl でも JS でも、3行ぐらいでメッセージの送信ができます。 Webhook エンドポイントの作成 1. Chat を開く https://chat.google.com/

Google Hangouts Chat にプログラムからメッセージを送信する

テキストエディターの複数行同時編集で仕事がはかどる

普段、業務でお使いのテキストエディターは、複数の行を一度に編集できる機能がついているかもしれません。 複数行の同時編集を使いこなせば、エンジニアでなくても普段の業務の効率を上げられて便利です。 エディター 非エンジニアに強くおすすめしたいのが、Microsoft の Visual Studio Code (以下VSCode) です。 Visual Studio というと、Windows用のプログラムを開発するIDEのイメージがありますが、このエディタは「ちょうどよくカスタマイズされた Atom」「無料のサブライムテキスト」「フロントエンド以外もいけるブラケッツ」といったモダンな軽量エディタの様相で、秀丸やサクラエディタの代わりに使うのにちょうど良いです。

テキストエディターの複数行同時編集で仕事がはかどる

DB(MySQL)をネットワーク越しに簡単にコピーする。mysqldump + パイプで。python subprocess の例も

本番環境のデータベース(MySQL)をネットワーク越しに開発環境にコピーしたい時のプラクティスです。 シェル + パイプ よくやるのが、bash等 でパイプを使って流し込む方法です。 ssh で本番サーバ user@production.example.com に接続し、mysqldump を実行。その標準出力を SSH 接続を通して手元まで持ってきます。

DB(MySQL)をネットワーク越しに簡単にコピーする。mysqldump + パイプで。python subprocess の例も

サーバでSSHの通信断してもバッチを動かし続けるため、tmux を使うと便利。nohup より

tmux という、CUI (TUI) 用仮想スクリーンアプリケーションがあり、SSH 越しに Linux を操作する際大変便利です。似たようなものに byobu とか screen がありますが、私は tmux が好きで、よく使います。 便利に使うスクリプト Linux でのシェル起動時、 (.bashrc 等) 下記のスクリプトを起動しています。

サーバでSSHの通信断してもバッチを動かし続けるため、tmux を使うと便利。nohup より

メディアクエリを入れた Style タグつきの HTML メールを各種メーラーで見てみる

Gmail が、2016年末に HTMLメールの style のタグに対応してたということを知ったので、いよいよ style つきの HTMLメールを実用化できると思い、メディアクエリと Flex を含んだ HTML メールを送信してみました。 2017年11月現在の結果として、メディアクエリと Flex は危なそうですが style タグはメジャーな HTML メールで対応していたため、充分に実用的といえます。

メディアクエリを入れた Style タグつきの HTML メールを各種メーラーで見てみる

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

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

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

パスワードを設定する時の注意とパスワード管理アプリの紹介

パスワードを新しく作る時の注意 辞書に載っている語句は使わない 辞書に載っている単語は誰でも知っている単語であり、簡単に組み合わせパターンを生成できるため使ってはいけません。 思いついたパスワードは使わない パスワードを考える時、パスワードを思いつくことがあります。 私の姓は yotsuyanagi ですが、例えばこれを 逆にして、 o と i を数字にして、一部頭文字にして 1GanayustOy

パスワードを設定する時の注意とパスワード管理アプリの紹介

Amazon マーケットプレイスWebサービス (MWS) APIから注文情報を取得する方法

当社では、Amazon のマーケットプレイスに出店していたり、FBA (フルフィルメントByアマゾン: Amazon社の倉庫に商品を納品し、販売を代行してもらう販売方法) を行っています。 マーケットプレイスにはAPIが用意されており、リクエストすることで受注情報など多くの情報を取得できるのですが、署名の計算に少し躓いたので書いておきます。

Amazon マーケットプレイスWebサービス (MWS) APIから注文情報を取得する方法

Chrome58で、HTTPSの自己証明書が NET::ERR_CERT_COMMON_NAME_INVALID になる場合の対応

Google Chrome をバージョン58 にアップデートすると、SSL自己証明書を使っているサイトが見れなくなる場合があります。 自己証明書(オレオレ証明書)を使っているサイトに HTTPS でアクセスすると、 この接続ではプライバシーが保護されません 攻撃者が、tech.torico-corp.com 上のあなたの情報(パスワード、メッセージ、クレジット カード情報など)を 不正に取得しようとしている可能性があります。 NET::ERR_CERT_COMMON_NAME_INVALID

Chrome58で、HTTPSの自己証明書が NET::ERR_CERT_COMMON_NAME_INVALID になる場合の対応

ブラウザ上で簡単なスクリプトをブックマークから動かす方法(ブックマークレット)

WEBブラウザと日常業務 日常業務でウェブブラウザを使う機会はけっこうあると思います。いろいろなツールが Webアプリ化されるにつれ、ブラウザを業務で使う機会は昔と比べて増えました。 ただし、多くの項目があるフォームを毎日書く業務があったり、あるページを開いて項目を1つ1つスプレッドシートや他のWebアプリ、もしくはメールにコピペしたりといった業務があったりもします。もし、その業務が面倒だと感じているならば、自動化できる余地は十分あります。 プログラマは、面倒だと思った作業はすぐに自動化できますが、プログラミングに明るくない方でも、範囲は限定的ですが Webアプリであれば面倒が改善できるかもしれません。

ブラウザ上で簡単なスクリプトをブックマークから動かす方法(ブックマークレット)

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 で、複数サイトを共存させ同時に運用する

Re:dash ダッシュボードツールを使って、運営しているあらゆるサービスの数値を1ページで見る

Re:dash とは リダッシュ。公式サイトはこちらになります。 http://redash.io/ 公式サイトには動作可能デモもあるので、試しに触っていただくとわかりやすいと思うのですが、簡潔に言うと Webアプリ上で SQL などクエリー文を登録 結果を表やグラフで、そのまま表示 その表やグラフのけっかをまとめて1つのページに組み合わせることができる というツールです。「ダッシュボード」を作るWebアプリですね。

Re:dash ダッシュボードツールを使って、運営しているあらゆるサービスの数値を1ページで見る

Python + Selenium で、簡単にブラウザの自動操作をする

mac 上の Python から、Selenium を使って簡単に Firefox を自動操作できます。 Firefox がインストールされている必要があります。Python は、2 でも 3 でも大丈夫です。 単純な Google 検索 コマンド1発で「Hello, world!」で google 検索をするところまでを書きます。 1. selenium をインストール $ sudo pip install selenium 2. pythonスクリプトを作成 hello_selenium.py

Python + Selenium で、簡単にブラウザの自動操作をする

EPUBファイルから画像を抽出する

電子書籍フォーマットとして広く使われている EPUB ファイルから、連番で画像を抽出する方法です。 ツール作りました! pip でインストールできます。https://github.com/ytyng/epub-extract-jpeg EPUB ファイルの概要 EPUB ファイルとは、平たく言えば ZIP圧縮された XHTML です。 コミックで一般的に使われる形式では、1ページが1つの XHTML ファイルになっており、その中に 1 つの img タグが あり、画像ファイルにリンクされています。 そのため、手順としては EPUB ファイルを解凍 構成情報の XML ファイルを解析し、ページ画像の URL (パス) を取得 ページ画像を連番で改名コピー(移動) となります。

EPUBファイルから画像を抽出する

TORICOの他のブログ投稿

Recent Posts

Feeds

RSS / Atom