読者です 読者をやめる 読者になる 読者になる

dackdive's blog

新米webエンジニアによる技術ブログ。JavaScript(React), Salesforce, Python など

follow us in feedly

Python

Django: python-social-authでTwitter認証を実装する

Django アプリケーションにソーシャルログイン機能を実装して、Heroku アプリケーションとして動かしてみる。 例として Twitter によるログインを試してみるが、Python Social Auth は他にも Google や Facebook などの主要な Web サービスでの認証をサポー…

[Python] HerokuからForce.com REST APIを叩く

というサンプルを作りました。 元々、Heroku から Force.com REST API を叩くサンプルは海外の方が Node.js と Java で作ったものがありまして、それをお手本に Python 版を書いてみたという経緯です。 (Node.js) Salesforce REST APIs – From Zero to Cloud…

PythonでHerokuローカル開発してる時にファイル更新を検知して自動的にリロードする

ちょっとしたことだけど、メモ。 $ heroku local web でローカルにサーバーを立ち上げて開発をしている時、 ファイルが更新されたら自動的に起動しているサーバーにも反映されてほしい。 Heroku のコマンドのオプションでやるのかと思ってたが、gunicorn の…

『実践 Python 3』で学ぶデザインパターン : Builderパターン

こちらの書籍でデザインパターンを勉強中。 実践 Python 3作者: Mark Summerfield,斎藤康毅出版社/メーカー: オライリージャパン発売日: 2015/12/01メディア: 単行本(ソフトカバー)この商品を含むブログ (1件) を見る また、Java ですが家にこの本もあった…

『実践 Python 3』で学ぶデザインパターン : Abstract Factoryパターン

こちらの書籍でデザインパターンの勉強を始めました。 実践 Python 3作者: Mark Summerfield,斎藤康毅出版社/メーカー: オライリージャパン発売日: 2015/12/01メディア: 単行本(ソフトカバー)この商品を含むブログ (1件) を見る また、Java ですが家にこの…

[Python]pep8とpylintの設定ファイルを作成して一部の警告を非表示にする

pep8 や pylint はインストールしたままの状態だと必要以上に警告が表示されてうっとおしいので、 無視したい警告などを設定ファイルに記載します。その方法をメモ。 ※pylint については以前 Syntastic の設定方法の時にも触れました [vim]Syntasticでpython…

PythonのSalesforceライブラリまとめ

nforce の Python 版みたいなのが欲しくてそれらしいライブラリがないか調べていたところ、こちらの記事が大変参考になったので、プラスアルファで自分で調べたものも整理しておきます。 参考にしたサイト PythonのSalesforceライブラリ調べてみた Python an…

PythonでCGIを動かす(Python2, Python3)

import cgi とかしてるファイルをローカルでどうやって動かすのか色々調べたメモ。 最初、Apache で動かす必要があるのかと思い、 Running Python Programs on the Mac OS X Apache Web Server Mac OSX Mavericks で Apache環境構築 + 任意のディレクトリか…

[Python]Pelicanで作ったサイトにfaviconを設定する

またまた Python製 静的サイトジェネレータ Pelican の話。 ここに書いてあった。 Tips n Tricks · getpelican/pelican Wiki · GitHub 2 通りあるみたいだけど Second Solution でうまくいった。 設定方法 1.content ディレクトリの下に extra というディレ…

[Python]PelicanにMarkdown Extensionsを入れて自分好みにカスタマイズする

Python製 静的サイトジェネレータ Pelican の話。 記事は Markdown で書いているのだが、Markdown から生成される HTML の細かい挙動を変えたい、あるいは機能を追加したい場合にどうやってカスタマイズするのか調べてみた。 公式ドキュメントのここに書いて…

[Python]Travis CIでPelicanのビルドを自動化する

Qiita にも投稿した けどこちらにも。 Pelican + GitHub Pages で運用しているサイトがあるのだが master に記事を push したら自動的に pelican コマンドで HTML を生成し、gh-pages ブランチに push してサイトが更新されるように Travis CI を設定してみ…

[Django]URLconfのユニットテストの書き方

メモ。 Django の urls.py で urlpattern に正規表現とか使っていると、正しく書けているかどうか確認したいことがある。 たとえば myproject というプロジェクトに myapp というアプリケーションを作成した場合、 myproject および myapp の urls.py は以下…

Djangoのチュートリアルが終わった後に読みたいもの

自分用メモ。 チュートリアルやった。 Getting started | Django documentation | Django コード チュートリアルの中でいくつか Further Reading 的なドキュメント(いずれも公式ドキュメント)が紹介されてたのでメモ。 チュートリアル概要 part1 project, …

[Python]PelicanでGitHub Pagesにブログを構築したらスタイルが当たらなかったときの対処法

この記事の補足です。 dackdive.hateblo.jp 勉強会の時に作ったサイトに後でアクセスしてみたら、スタイルが全然当たってなかった。。。 http://zaki-yama.github.io/salesforce-developers-info/ で、開発者コンソールで書いてる通り CSS ファイルが 404 に…

[Python]HerokuでDjangoアプリケーション開発を始めるためのテンプレート

この記事は Heroku Advent Calendar 2015 22 日の記事です。 はじめに Heroku と言えば Ruby!な印象がどうしても強いですが、Ruby 以外にも様々な言語をサポートしています。 Python もそのひとつです。 ref. Languages | Heroku Dev Center Python(Django)…

[Python]PelicanでGitHub Pages上にブログを構築する(Django Girls for Everyone #2 参加メモ)

こちらのイベントの参加メモです。 少人数でわいわいやる感じで面白かった。 作業に没頭してしまったんだけどもっといろんな人とお話すればよかったー。 今回は、Pelican という静的サイトジェネレータを使い GitHub Pages 上に自分のブログサイトを構築する…

[Heroku][Django]Postgres.appで `'django_postgrespool' isn't an available database backend.` エラー

メモ。 Django アプリケーションをローカルで実行したらこんなエラーが出た。 (確認した PC は Mac OS X Yosemite v10.10.5) (venv)$ heroku local web forego | starting web.1 on port 5000 web.1 | [2015-12-13 12:57:53 +0900] [2925] [INFO] Starting…

[Python]pyenvとvirtualenvとpyenv-virtualenv

pyenv とか virtualenv を使いだしてだいぶ経つけど、メモ。 web 上の記事で、virtualenv と呼んでいるものが実は pyenv-virtualenv のことだった、というのがたびたびあって しばらく自分も勘違いしてました。 結局、最初に pyenv とか virtualenv の使い方…

Heroku+DjangoでPostgresをローカルで使う時につまづいた点

メモ。 以前、Heroku の Getting Started with Python on Heroku チュートリアルをやった時に 一応、最後まで進めることはできたんだけど、heroku local でローカルでアプリを立ち上げた時 /db にアクセスするとエラーになってしまい、そこだけうまくいって…

[django]フォームのバリデーションまとめ(to_python, clean, validate)

django の Form とバリデーションについてまとめてみた。 Form and field validation | Django documentation | Django 今回使用した django のバージョンは 1.5。 日本語のページ もありますが情報が古い(最新で v1.4) ので、 なるべく英語版の、自分が使っ…

[python 2系]with構文 (__enter__と__exit__)

__enter__ と __exit__ という見慣れないメソッドに触れる機会があったので、メモ。 python のバージョンは 2.7。

[python 2系]ディスクリプタ(__get__, __set__, __delete__)

タイトルの通り、__get__ とか __set__ メソッドを実装したクラスの機能について。 python のバージョンは 2.7。 ディスクリプタと呼ぶらしい。こんな公式ドキュメントがある。 ディスクリプタ HowTo ガイド — Python 2.7ja1 documentation また、理解する上…

[python]メタプログラミングの基礎(__init__, __new__, __metaclass__)

python の __init__, __new__, __metaclass__ や、それらを使ったメタクラスの作成方法などについて。 「メタプログラミング」という言葉はたぶんこれ以外の機能についても言えるんだけど、参考にしたサイトが大体メタプログラミングという言葉を使っていた…

Herokuのpythonチュートリアル(Getting Started with Python on Heroku)をやってみた

ここ。 Getting Started on Heroku with Python | Heroku Dev Center Heroku は Ruby や Rails を使ったことがなかったので今まで敬遠してたんだけど python のチュートリアルがあったのでやってみた。 つまずいたポイントとか覚えておきたいことなど、軽く…

[python]pytestで出力するログのレベルを設定する(pytest-capturelog)

pytest でテストを実行する際、pytest-capturelog というパッケージを入れるとログを出力することができます。 (ただし出力されるのはテストが失敗した時のみ) このとき、debug レベル以下のログは表示したくない、といった具合に 出力するログのレベルを…

[django]Django REST Frameworkを使わずにDjangoでREST APIを作る

Django の Class-based View で、あるリソースを JSON 形式で返すような REST API っぽいものを作ろうと思ったんですが 「Django REST API」とかでググると Django REST Framework というフレームワークの話ばかり。 Google App Engine で開発しているので D…

[Google App Engine]AppStatsのタイムゾーンを変更する

Request History に表示されている時刻のこと。 そもそもどのタイムゾーンで表示しているの?とかどうやって変更するの?とか気になったので調べてみたら、公式ドキュメントに記載があった。 Appstats for Python - Python — Google Cloud Platform You can …

[Google App Engine]静的ファイルをpythonで読み込む時の注意点

ちょっとつまづいた。 こんな感じで、python からファイルの読み込みを行いたい時がある。 # ---------------- views.py の一部 ---------------- from models import PostCard class MainView(View): template_name = 'app/index.html' def get(self, reque…

[Google App Engine] app.yamlについて

ここを読んでみた。 https://cloud.google.com/appengine/docs/python/config/appconfig とりあえず前半部分、handlers のところまで。 Required elements app.yaml には以下の項目を1つずつ記載する必要がある。 application アプリケーション名(任意) ve…

[GAE][django]Google APIs Client Library for Pythonをdjangoで使う (4)

前回 書いたコード、しばらく経ってからアクセスすると AccessTokenRefreshError なるエラーが発生することがわかった。 ERROR 2015-03-13 15:12:12,692 base.py:210] Internal Server Error: /task_manager/ Traceback (most recent call last): File "/App…

[Google App Engine]NDBのIn-Context Cacheについて

In-Context Cache とは https://cloud.google.com/appengine/docs/python/ndb/cache#incontext 1 リクエスト内で有効なキャッシュ 速度は In-Context Cache < Memcache < Datastore の順 In-Context Cache が microseconds に対し、Memcache は milliseconds…

[GAE][django]djangoのクラスベース汎用ビュー用の@login_required

ユーザーがログインしていなかった時にログイン画面にリダイレクトしてくれる @login_required デコレータ。 SDK に標準で備わっているものは Django に適用できなかったので作った。 コード util.py は参考までにオリジナルの appengine/ext/webapp/util.py…

[GAE][django]Google APIs Client Library for Pythonをdjangoで使う 記事一覧

長くなりそうなので、過去記事一覧をここにまとめ。 [GAE][django]Google APIs Client Library for Pythonをdjangoで使う (1) - dackdive's blog [GAE][django]Google APIs Client Library for Pythonをdjangoで使う (2) - dackdive's blog [GAE][django]Goo…

[GAE][django]django+pytest でImproperlyConfiguredエラー

GAE(python) + django で、フォームのテストをしていた時に発生した。 (テストには pytest を使っている) ImproperlyConfigured: Requested setting USE_I18N, but settings are not configured. You must either define the environment variable DJANGO_…

[python]strip()の引数を省略すると空白だけでなく改行も除去される

文字列の先頭と末尾から指定した文字を除去する strip([chars]) というメソッド。 これ、引数を指定しないと空白文字を除去するというのを今日知りました。 # 引数指定 >>> 'www.example.com'.strip('cmowz.') 'example' # 引数なし >>> ' www.example.com '…

[GAE][django] GAE+djangoで開発を始めるための自分流Scaffoldを作った

新しく Google App Engine のアプリを作ろうと思った時に 既存のアプリを一旦コピーして、必要なもの以外は削除して...という作業が面倒なので Scaffold (と呼んでいい?)的な初期ファイル群を作ってみた。 zaki-yama/my-gae-django-scaffold 特徴 README …

[python]SimpleHttpServerがCtrl+Cで終了しないとき

以前 D3.js を使ってみた時の記事でも紹介したが、 [JavaScript]D3.jsを触ってみた - dackdive's blog python の SimpleHttpServer (python 2.x 系の場合) を使うと簡単にローカルサーバーを起動することができる。 # python 2.X $ python -m SimpleHTTPServ…

[GAE][django]Google APIs Client Library for Pythonをdjangoで使う (3)

前回の記事はこちら。 [GAE][django]Google APIs Client Library for Pythonをdjangoで使う (2) - dackdive's blog views.py を変更し、とりあえず Task 一覧を表示できるようになった。

[GAE][django]Google APIs Client Library for Pythonをdjangoで使う (2)

前回 から引き続き。 とりあえず認証のリダイレクトが機能しつつ、 Credentials を NDB に保存できるところまで。

[GAE][django]Google APIs Client Library for Pythonをdjangoで使う (1)

タイトルの通り。 Google App Engine で Tasks API を利用した簡単なアプリを作ろうとしたがOAuth2 の認証でハマってしまい、 現在も解決していないが調査記録をメモ。 最終的に解決したら別の記事として整理したい。

[GAE] buildoutでライブラリのバックアップを作成しない

ちょいメモ。 以前 Google App Engine の外部ライブラリをzc.buildout で管理する 方法を書きましたが その時に気になっていたのが、./bin/buildout を実行するたびにライブラリのバックアップが作成されること。 $ ./bin/buildout Updating packages. packa…

[vim]Syntasticでpython用の設定をする

vim で様々なプログラミング言語の文法チェック(syntax check) を 自動で行ってくれるプラグイン「Syntastic」ですが そのまま python ファイルに適用すると不要な警告まで色々出てしまい少々うっとうしいです。 ので、Syntastic と、今回は syntax checker …

[GAE] Google App Engine の単体テストにpytestを使う(with zc.buildout)

タイトル通り、Google App Engine のユニットテストに pytest を使うため 以前勉強した zc.buildout でセットアップしてみた時のメモ。 GAE のライブラリを zc.buildout で管理する方法については以下の記事をご覧ください。 [GAE]zc.buildoutでGoogleAppEng…

zc.buildoutでversion conflictエラーが出た時の対処法

久しぶりに zc.buildout を使ったら以下のようなエラーが出た。 $ ./bin/buildout Upgraded: setuptools version 8.2.1; restarting. Generated script '/Users/...(略).../bin/buildout'. While: Installing. Getting section packages. Initializing secti…

zsh + virtualenv環境でGoogle Cloud SDKをインストール

ちょっとハマったのでメモ。 zsh + virtualenv という環境だと、インストールするのにちょっと注意が必要みたいです。

[GAE] Repeated Property について

ちょいメモ。 ndb の "Repeated Property" について、仕様として気になることをちょっと調べてまとめてみました。

[python]関数でデフォルト引数を使う時の注意点

「パーフェクトpython」読んでます。 パーフェクトPython (PERFECT SERIES 5)作者: Pythonサポーターズ,露木誠,ルイス・イアン,石本敦夫,小田切篤,保坂翔馬,大谷弘喜出版社/メーカー: 技術評論社発売日: 2013/03/05メディア: 大型本購入: 1人 クリック: 65回…

[python]文字列置換(フォーマット)まとめ(format関数, %dなど)

python による文字列置換の書き方について。 いくつかあるのでまとめてみました。 python は2.7。 色々調べましたが、公式ドキュメントが一番詳しかった気がします。 (文中にリンクあり。または「リファレンス」参照)

[django]templatesディレクトリを配置する場所(ベストプラクティスを考えてみた)

djangoでテンプレートファイルを管理する時、置き場所の候補はたぶん2つ考えられます。(*1) project ディレクトリの直下にtemplatesディレクトリを作り、その下に application ごとのサブディレクトリを作る 各 application ディレクトリの直下にtemplatesデ…

[GAE]zc.buildoutでGoogleAppEngineの外部ライブラリを管理する

前回の記事でpythonのライブラリ管理ツールであるzc.buildoutを一通り触ってみましたが、 [python]Buildout(zc.buildout)を触ってみる - dackdive's blog 今回はこのzc.buildoutを使ってGoogle App Engineの外部ライブラリを管理する仕組みを構成してみます。