Python
GoogleAppEngineでsocketが使えるようになったのは1年ぐらい前だった気がしますが、使ったことなかったので試してました。 Sockets Python API Overview | Python | Google Cloud Platform まだプレビューリリースですね。 socketを使えるのならparamikoでSS…
AppEngineで動かすアプリを作っていて、Blobstoreを使おうかなーと思って久しぶりにドキュメントを見たら、CloudStorageを使うことが推奨されていたので、試してた。 https://developers.google.com/appengine/docs/python/googlecloudstorageclient/?hl=ja …
rst2pdfはreStructuredTextからPDFを生成してくれるツールです。 blockdiagディレクティブを入力ファイルに書いても、そのままでは動作しません。 rst2pdfの拡張の仕組みを使うことでblockdiagを有効にできます。 試したバージョンは、Python 2.7、rst2pdf 0…
PythonからLDAPサーバーを操作するために使うクライアントライブラリについて。 python-ldapとpython3-ldapというのがある。 最初はpython3-ldapのほうはフォークか何かだと思っていたのだけど、コードを読むと全く別物でした。 それぞれについて特徴を整理…
fl-run-benchコマンドで実行するテストコードの書き方についてメモ。 Cyclesの値はCU(ConcurrentUser)の数 durationに設定した秒数の間、テストを繰り返し実行する レポートにでるSUCCESSやERRORの数はテストを繰り返し実行したときの結果を集計したもの デ…
FunkLoadでJSONをPOSTする方法を調べたのでメモ。 FunkLoadでJSONを送信するテストコード funkload.utils.Dataを使うと、Content-Typeを指定してデータ列を送信できる。 test_Simple.py # coding: utf8 import unittest import json from funkload.FunkLoadT…
ParquetフォーマットをPythonから扱ってみたいので調べていた。 GitHub - jcrobak/parquet-python: python implementation of the parquet columnar file format. githubにあったものを見つけたけど、まだバグが結構あるっぽい。書き込みなども実装されてな…
勤務先でPythonの研修サービスを始めることになりました。 BeProud Python Training (Pythonプログラミング研修) 私も講師の一人です。受託開発の業務でも5年以上Pythonを使っているので、ノウハウは蓄積されてます。 よろしくお願いします!
CDH5の環境を手元に作ったので、Apache Sparkを使ってみる。 依存はHDFSのみ。Masterが1台でWorkerが複数台の構成なのかな。 ClouderaManagerで設定して起動するとWebUIがデフォルトでは18080ポートになっていた。 Pythonから使う場合はpysparkコマンドとな…
Djangoのタイムゾーンサポートについてメモ。settings.USE_TZをTrueにすると有効になる。 試したのはPython 2.7, Django 1.6.2。 Django1.6だと、プロジェクト新規作成時のsettings.pyでUSE_TZはTrueに設定されている。(ドキュメントではデフォルトでは無効…
タイトルのとおり。tox.iniで他のセクションの値を参照する方法について。 githubでいろんなリポジトリ眺めてるときに書いてる人がいたので知った。 ドキュメントにも書かれている。 Substitution for values from other sections こんな感じに書ける。 [tox…
昔作ったunboxftpdを名前変えてリファクタリングし、django-ftpserverとして公開しました。 django-ftpserver 0.3.5 : Python Package Index Djangoアプリケーションとして追加すると、FTPサーバーを起動するコマンドが追加されます。 ユーザー認証はDjango…
「SQLAlchemyでJOINの順番とかいじれるんだっけー?」というような話がきっかけでどうやるのか調べてた。 サブクエリもJOINも簡単に使えていいですねえ。 spam.py from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey from sqlalc…
celerydのメインプロセスは、タスクのメッセージをブローカーから受け取った後、ワーカープロセスに処理を実行させる。 メッセージをブローカーから受け取る際、実行中のものとは別に、事前にメッセージを取得(プリフェッチ)するようになっている。 全てのワ…
PythonのsmtpdモジュールはSMTPサーバーを実装するためのクラスを提供するが、コードを書かなくても利用できる。 開発用のメールサーバー(実際にメールを配送せず、内容をファイルに出力)として使うにはDebuggingServerクラスを使う。 20.13. smtpd — SMTP …
2つ以上のホストでcelerydを起動し、タスクを処理させるホストを明示的に指定したい場合には、キュー名を指定することで実現できる。 Routing Tasks — Celery 3.1.23 documentation 試したバージョンは、Python 2.7、Celery 3.1.8、BrokerはRabbitMQ。 ワー…
Oracle Databaseを使うのは初めて。最新版は12cだけど、11gがまだ結構使われてるっぽい。 PythonからOracleに接続する場合はいくつか方法があるけど、今回はcx_Oracleを使うことにする。 試した環境は、Ubuntu 12.04、Python 2.7。 cx_Oracle cx_Oracleは9i…
1つのモデルの複数レコードを編集するのなら、ModelFormのフォームセットを生成するといいのだけど、modelformset_factoryという関数があるのでそちらを使用してみる。 ドキュメントに載っていないのでバージョンアップで動かなくなる可能性あり。 modelform…
PythonでSOAPを扱う場合、いくつかサードパーティモジュールがあるのだけど、久しぶりに調べてみたら、Spyneというのがそこそこ活発に開発されてるようだ。 spyne - RPC that doesn't break your back. どうやら、 soaplib の開発を停止して rpclib というモ…
django-edamameはDjangoで複数のビュー関数、ビュークラスをまとめる機能を提供します。 django-edamame 0.1 : Python Package Index このアイデア自体は数年前から持っていて、実装コードではちょくちょく使ってた。 複数のビューをまとめて似たような機能…
Djangoで、サイトの利用者ごとに言語設定を切り替えたい。 DjangoはセッションやCOOKIEの値を参照して、どの言語に翻訳するかを決める仕組みをミドルウェアで提供している。 言語設定の検出メカニズム - 翻訳 ― Django 1.4 documentation フォームから送信さ…
Django1.5からdjango.contrib.authのユーザーモデル(User)を差し替えることが可能になっているが、この機能を実現しているのがMetaサブクラスのswappableオプション。 このオプションを使うと、settingsの設定でモデルクラスを差し替える機能をアプリケーシ…
Djangoのログ出力をFluentdで集める方法について。 ログレベルがERRORやWARNINGのものはSentryを使うのが便利だと思うけど、それ以外のINFOやDEBUGはSentryに入れるには数が多すぎるのでどうするか考えてて、最初はローカルのファイルに書き出していた。 け…
Django1.6から、startprojectで作成されるデフォルトのsettings.pyの内容がずいぶん変わってスッキリしました。 以下インラインでコメント。 """ Django settings for myproject project. For more information on this file, see https://docs.djangoprojec…
GoogleAppEngineで動かす予定の、ちょっとしたデータベースアプリケーション(簡単なCRUD)を作るのにgoogle.appengine.ext.ndbを試しに使ってみてます。 少し使ってみて感じたことなど。 dbと比べて、APIの設計がよりDataStoreを効率よく使う方に向いてる(get…
bpmappersのv0.7はDjango1.6で動作することを確認済み。 この機会にtoxのtestenvをちょっと書きなおしてみました。 次のバージョン以降は、Python2.5のサポートは切ろうと思います(tox+virtualenv+pipのバージョンを合わせるのが面倒) 代わりに、Python2.6、…
メモ。bottleを使ってContent-typeを設定してファイルをダウンロードさせる。 Webブラウザでファイルをダウンロードして保存させるには、Content-Typeヘッダにapplication/octet-streamを指定する。 ファイル名を指定する場合はContent-Dispositionヘッダを…
Python用のWebフレームワークであるBottleと、O/Rマッパーのpeeweeを使って、Python Professional Programmingの2章のゲストブックアプリケーションを作ってみた。 試したバージョンは、Python2.7、Python3.3、Bottle0.11.6、peewee2.1.5。 ソースコード gue…
複数台あるアプリケーションサーバーのエラーログを集めて見たり、メール通知するのだとSentryは結構使いやすそう。 http://sentry.readthedocs.org/en/latest/ とりあえず、動かしてみる。 インストール virtualenvでeasy_installのオプション指定にてイン…
DjangoでREST APIを簡単につくるためのライブラリは、django-tastypie以外にDjango REST framework(以下rest_framework)というのもある。 Django REST framework これとbpmappersを組み合わせて使う方法を調べたのでまとめる。 rest_frameworkモジュールのソ…