Python
DjangoでREST APIを簡単につくるためのライブラリは、django-tastypie以外にDjango REST framework(以下rest_framework)というのもある。 Django REST framework これとbpmappersを組み合わせて使う方法を調べたのでまとめる。 rest_frameworkモジュールのソ…
Djangoでtastypieを使ってREST APIを作る際に、bpmappersをどうやって組み合わせればよいか調べてた。 tastypieのCookbookのページにカスタムの値を追加する例がある。 Adding Custom Values tastypieのソースコードを読んだところ、dehydrateメソッドで値の…
Djangoの設定ファイルであるsettingsの分割、構造化について。 開発、ステージング、本番、テストなど環境ごとにsettingsの内容は変える必要があるので、settings.pyを分割したり、共通部分をまとめたりする。 settingsの分割についてはdjangoprojectのWiki…
HadoopのHDFS(分散ファイルシステム)にはWebHDFSというREST APIがあり、HTTPで操作できる。 WebHDFS REST API Pythonからこれを簡単に使うためのモジュールを探したところ、PyPIでWebHDFS、pywebhdfsの2つを見つけた。 WebHDFS 0.2.0 : Python Package Index…
全国情報技術教育研究会という主に工業高校が会員になってる組織があって、そこが高校生向けにプログラミングコンテストを毎年やってる。 CHaser2012 - 全国情報技術教育研究会 コンテスト用のサーバープログラムを動かして、そこに2チームがクライアントプ…
タイトルの通り。 DjangoのORMでSELECTのSQLを取得するのは、QuerySetクラスのquery属性を参照すればいいのだけど、INSERTの場合は簡単に取得できる方法がなさそうに見えた。 内部APIをゴニョゴニョすることで、何とか取得できる。 以下、コード例。 myapp/m…
PyCON APAC 2013に参加しました。 PyCon APAC 2013 - PyCon APAC 2013 チュートリアルデイ チュートリアルBで講師をやりました。 PyCon APAC 2013 チュートリアル - connpass 当日使用した資料が印刷して70ページ程度のものでした。予定通り説明ができて、参…
タイトルの通り、bpmappers 0.7をリリースしました。 bpmappers 0.7 : Python Package Index 0.6のbpmappers.djangomodelモジュールはPython3で動作しなかったのですが、Django1.5+Python3.2 or 3.3で動作するように修正しました。 sixモジュールを分離して…
PythonからImpalaにクエリを投げて結果を取得したかったので、方法を調べてました。 Impalaの環境はCloudera QuickStart VMを使用し、CDH4.3.0でImpala1.0.1です。 impylaというPythonのモジュールを試してました。 GitHub - laserson/impyla: Python client…
Fluentdに対して、fluent-logger-pythonで日本語のデータを投げて正常に動作するか試してみる。 バージョンはUbuntu 12.04(precise)、Python 2.7、td-agent 0.10.35、fluent-logger-python 0.3.3。 fluent_test.py # coding: utf-8 from fluent import sende…
Fluentdを使おうと思って調べてる。 Fluentdを使うと、各種ログを集約したり、いろいろな出力先に振り分けたりが簡単にできる。 Rubyで実装されていて、gemでインストールすることができるけど、今回はRubyの実行環境も含めてパッケージ化されたtd-agentを使…
最近、デーモンプロセスの管理にUpstartを使ってる。 PIDの管理をあんまり気にしなくてよかったり、イベント発火の仕組みでプロセス間の依存を解決できるのが楽。 簡単な使い方をメモしておく。 基本的な使い方 /etc/init/ に設定ファイルを設置する initctl…
Pythonのjsonモジュールのloads関数には、object_hookという引数があり、JSONの値の変換時にフックすることができる。 詳しくはドキュメントを参照。 18.2. json — JSON エンコーダおよびデコーダ — Python 2.7.x ドキュメント 試したPythonのバージョンは2.…
bitbucketに置いてたguestbookアプリをDjango1.5で動くように修正した。 対応前 tokibito / sample_nullpobug / source / django / myproject / (rev:37c9c8d) Django1.0〜1.3ぐらいで動作するコード。汎用ビューがまだ関数だし、staticfilesも使っていない…
Travis CIと似たようなCIサービスでdrone.ioというのがあるらしいと聞いたので、試してみた。 Continuous Integration · drone.io GitHubだけじゃなくて、Bitbucketにも対応しているのがうれしい。 ビルドの設定はTravisCIと違ってWeb上のフォームで入力する…
bpmappersはbitbucket上で主に開発してるけど、githubにもpushしてTravis CIを使ってる。 最近ドキュメントだけ変更してpushしたらエラーがでてた。 コードは変更してないのになーと思ってTravis CIのログを見たらこんなメッセージが。 ERROR: py31: Interpr…
ファイル操作のテストコードを書いていて、tempfileモジュールが便利だったので使い方のメモを残す。 Pythonの標準ライブラリにtempfileというモジュールがあり、これを使うことで一時ディレクトリやファイルを簡単に作成できる。 10.6. tempfile — 一時的な…
SPDYプロトコルがどういうものなのか理解しておきたかったので、spdy/3の仕様を最近読んでる。 SPDY Protocol - Draft 3 - The Chromium Projects で、実際どういう挙動になるのかPythonで実装してみた。 今回は単純にtext/plainで「Hello, SPDY」と表示する…
Pygmentsをドキュメント読みつつ動かしてみてた。Pygmentsはソースコードなどにシンタックスハイライトを適用するためのライブラリ。 Welcome! — Pygments インストールするとpygmentizeコマンドが使えるので、外部実行ならこれを使えばよし。 Pythonコード…
PythonでLinux上にハードリンクとシンボリックリンクを作成する。 試したのはUbuntu12.04, Python2.7.3。 どちらもosモジュールの関数を使う。 ハードリンクの作成 ハードリンクはos.link関数で作成できる。 >>> import os >>> os.link('test.txt', 'foo') …
Pythonで緯度経度をユニバーサル横メルカトル図法(UTM図法)の座標に変換するには、PyProjを使う。 pyproj 1.9.5.1 : Python Package Index UTM図法の座標がわかれば、2地点間の距離を求めたりするのが簡単になる。 インストール pipやeasy_installでインスト…
タイトルの通り。2点を通る直線から離れた位置にある点までの距離を求めるのに、NumPyを使って計算します。 点a(x1, y1), 点b(x2, y2), 点c(x3, y3)があり、aとbを通る直線abから離れた位置に点cがあります。 点cから直線abへ引いた垂線の長さをLとします。…
以下の図のような点a(x1, y1)から点b(x2, y2)の距離を求める(aとbをつないだ直線の長さを求める)場合。 ベクトルの長さを求める。 NumPyだとnumpy.linalg.normを使えばいいらしい。 >>> import numpy >>> x1 = 2 >>> y1 = 2 >>> x2 = 4 >>> y2 = 6 >>> a = n…
NumPyの行列計算って強力なんすね。いろいろ試してみてる。 3x + 2y = 14 x + y = 6こういう2元1次方程式の解を求める場合。 NumPyだとnumpy.linalg.solveで逆行列の積を求められるので係数のarrayを作って使えばいいらしい。 >>> A = numpy.array([[3, 2], …
Djangoのcontribには、テンプレートでrestructuredtextなどのマークアップをHTMLに変換してくれるフィルタのセット、django.contrib.markupがあります。 https://docs.djangoproject.com/en/dev/ref/contrib/markup/ restructuredtextフィルターを使う場合は…
やりたかったことは、指定した緯度経度(GPSから取得した現在位置)に近い場所の検索と距離の算出でした。 DjangoだとPostGIS+GeoDjangoを使えばできますが、今回はデータベースがMySQLであるため、filterでdistanceが使えませんでした。 GeoDjango Database A…
既存のデータベースのテーブルを参照するのにSQLAlchemyを使おうと思っていたら、 @aodag からSQLSoupというモジュールがあるよと教えてもらったので試してました。 SQLSoupはSQLAlchemyに依存していて(元々はSQLAlchemyの拡張で、最近分離された)、SQLAlche…
Mercurialなどのバージョン管理システムでブランチを使っていて、DjangoとSouthを使っている場合、Southのマイグレーションがブランチ間で衝突して、マージしないといけないことがよくある。 その際の解消手順についてメモ。 試したのはDjango1.4.1, South0.…
Django1.4で、やっと標準でバルクインサートがサポートされた。 QuerySetにbulk_createというメソッドが増えている。 単純なモデルを作って、動きを見てみる。 試したのはMySQL5.5、Django.1.4.1 myapp/models.py class Item(models.Model): name = models.C…
試したのはDjango1.4.1。 こういう親子関係のモデルがあったとする。 myapp/models.py from django.db import models class Parent(models.Model): name = models.CharField(max_length=30) def __unicode__(self): return '{}, {}'.format(self.name, getat…