2012-11-01から1ヶ月間の記事一覧

dj-database-urlに渡すデフォルトの接続文字列

dj-database-urlを使うとdb接続文字列を環境変数DATABASE_URLから取得させることができます。 https://github.com/kennethreitz/dj-database-url herokuにdjangoアプリを動かすときとかに使ってます。 設定は以下のように書きます。 環境変数DATABASE_URLが…

様々な色やサイズの画像を生成してくれるFake images please?

web開発をしてると、いろいろなサイズの画像が必要になることがあります。 そんなとき便利なwebサービスとしてFake images please?があります。 Fake images please? http://fakeimg.pl/ 以下のようなパスやクエリにしたがって様々な色やサイズの画像を返し…

djangoで日本語名のファイルアップロード時のエラー

djangoをnginx+gunicornで動かしている環境で日本語のファイル名のファイルをアップロードしたら、たまに見かけるUnicordEncodeErrorが発生 UnicodeEncodeError: 'ascii' codec can't encode characters in position 43-44: ordinal not in range(128) ググ…

xmllibrpc.DateTimeとdatetime.datetimeの変換

pyapnsを使っていて、feedbackのレスポンスがexpired_dateとtokenのタプルのリストなんだけど、expired_dateがdatetime.datetimeだと思って処理を書いてたら、xmllibrpc.DateTimeオブジェクトだったので変換処理をメモhttp://docs.python.org/2/library/xmlr…

Django 1.4でSeleniumを使ったwebページのテスト

Django1.4でLiveServerTestCaseが追加されました。 https://docs.djangoproject.com/en/dev/releases/1.4/#support-for-in-browser-testing-frameworks Seleniumを使ったブラウザテストを可能にするものです。 どんな感じが掴んでみようと簡単なサンプルを動…

django-social-authでエラー

だいぶ昔に作ったdjango-social-authを使ったサンプルアプリで久々にtwitterログインしようとしたら以下のようなエラーになった。 HTTPError at /complete/twitter/ HTTP Error 404: Not Foundtwitter側の仕様が変わったぽい。使用していたdjango-social-aut…

Django 1.4のタイムゾーン

Django 1.4からDateTimeFieldのタイムゾーンの扱いが変更されている https://docs.djangoproject.com/en/dev/releases/1.4/#support-for-time-zonesいくつか警告やエラーに遭遇したので、気がついた挙動をまとめてみる動かした環境は OSX 10.7.5、Python 2.7…

unittestでFileFieldを持つDjangoモデルのインスタンスを作成する

ユニットテストでFileFieldを持つモデルのインスタンスを作成する場合どう書くべきか こんなモデルがあるとして class UploadFile(models.Model): file = models.FileField(upload_to='file') 思いつくまま書いてたらいくつかエラーを出したのでメモしておく…

エラーメッセージ「in method 'bio_new_file', argument 1 of type 'char const *'」

pythonでpassbookを作成する処理を書いてたらM2Cryptoの内部でこのようなエラーがでた in method 'bio_new_file', argument 1 of type 'char const *'このままググったら検索結果が6件しかなかったので、一応メモしておく 追っかけてみるとエラーになるのはS…

Django 1.4でbulk create

以前djangoでbulk insertするにはどうするかってエントリを書きましたが、django 1.4からbulk_createメソッドが用意されましたので、そちらの方法でも試してみました。 dbはmysqlでMySQL-pythonを使ってます。 こういうモデルの場合 from django.db import m…

twistedをさわってみる

pyapnsのソースを追っかけてたんだけど、どうも読みにくい。 これは多分使われているtwistedについて何も知らないからだ。 せっかくだから入門してみよう。ということでよく見かけるEchoサーバーを書いて動かしてみた # coding=utf-8 from twisted.internet …

Pythonでファイルの作成日を取得する

os.path.getctimeで import os print os.path.getctime("/path/to/target_file") # => 1351670928.0 エポックタイムが返されるdatetimeをエポックタイプに変換する場合 import os import time from datetime import datetime print datetime(*time.localtime…

pythonのsubprocessモジュールで外部プロセスを実行する

subprocessモジュールで外部プロセスを実行できるcall、check_call、check_outputと関数があってちょっとずつ挙動が異なるsubprocess.callはプロセスを実行し、returncodeを返す from subprocess import call # call call(["ls", "-l"]) print return_code #…

画像をdataURIスキームに変換してくれる Duri.me

どこかで使い道あるかもしれないのでメモDuri.me 画像をアップロードするとdataURIスキームを使って表示するスニペットを生成してくれます imgタグのsrc属性を使う形式と、cssのbackground-imageを使った形式が選べます

PythonでjQuery感覚のセレクタが使えるPyQueryを試してみた

PythonでスクレイピングといえばBeautifulSoupを使うのがポピュラーだと思いますが、jQuery風のセレクタを使えるPyQueryというライブラリもあると知ったので試してみました。 思いついたセレクタを適当使ってみた感じ、結構わかりやすくていいかも # coding=…

pythonで一時ファイルにデータを書き込み、終わったらリネーム

システム間でデータをファイルでやり取りするケースはときどきあります。作成中のファイルを読み込まれないようにするため、普通は一時ファイルにデータを書き込んでいき、全て書き込んだ後にファイルをコピーするなり、リネームすると思います。コピーやリ…

Pycharm 2.7 EAPでdoctestの編集

Pycharm2.7のEAPがダウンロードできるようになってたので早速使ってみてます http://blog.jetbrains.com/pycharm/2012/11/pycharm-2-7-early-access-preview/ 全体的にアイコンが使われているiconがちょっと変わってますねあと目を引いた点としてdoctestがシ…

djangoでsend_mailのテストをする

djangoではsend_mailで簡単にメール送信ができます。 以下はドキュメントにある最もシンプルな例です。 from django.core.mail import send_mail send_mail('Subject here', 'Here is the message.', 'from@example.com', ['to@example.com'], fail_silently…

Pythonでログ出力された内容をテストする

pythonで、ある内容がログ出力されることをテストする場合どうするのが一般的なのか調べてたらログハンドラをsetUpでStreamHandlerに差し替えてテストする方法を見つけたので、サンプルを書いて試してみました 以下のような感じです # coding=utf-8 import u…

dateutil.parserで日付文字列をパース

dateutil.parserで日付文字列を楽にパースできる。timezoneも解釈してくれる。 import pytz from datetime import datetime import dateutil.parser date_string = "Wed, 24 Oct 2012 21:34:50 GMT" # dateutil,parse.parse d = dateutil.parser.parse('Wed,…

manage.pyのコマンドをプログラム上から呼び出す

結局使わなかったけどせっかく調べたのでメモカスタムコマンドを作成して、python manage.py hoge みたいに呼び出すのをプログラム上から呼び出したい場合、以下のようにcall_command関数が使える from django.core.management import call_command call_com…

djangoのlogging設定でSMTPHandlerを使う例

djangoのデフォルトのLOGGING設定では、エラー時のメール送信用ハンドラとして、AdminEmailHandlerを使った"mail_admins"が用意されてます。ただAdminEmailHandlerだと、subjectが自由に設定できない?っぽかったので、SMTPHandlerを使ったハンドラを試して…

Pythonでエラーが発生することをテストする

テストケースでエラーが発生するかどうかをテストするというのは、rubyの案件でrspecを使っているときはよくやってた覚えがあるんですが、djangoで、というかpythonでどうやるのか、調べる機会があったのでメモしておきますunittest.TestCaseにassertRaises…

画像リストの表示をアニメーションさせるliffect

たまたまみつけて面白そうだったのでメモliffect http://ademilter.com/lab/liffect/画像の一覧を表示するページで、表示をアニメーションさせるためのコードを生成してくれます。 アニメーションはたくさん種類があって、Duration、Delay、Randomと動作をカ…

Pythonとbotoでs3を操作する

botoでs3の操作をちょっとみていたので軽くメモ # coding=utf-8 import boto s3 = boto.connect_s3(aws_access_key_id='******************', aws_secret_access_key='****************************') # 全てのバケットを表示 get_all_buckets for bucket in…

FabricでSFTP

このあいだparamikoを試してみましたが、Fabricでも同じことができそうだったので、こちらも試してみました。 getとかputをするだけなら簡単なんですが、同レベルにファイル一覧を取得する関数が無さそう。 内部的にはglobがあるのでそれを使えなくもないで…

nginxでssl設定

nginxの設定ファイルに以下を設定 server { listen 443; ssl on; # サーバー証明書 ssl_certificate /path/to/server.crt; # 秘密鍵 ssl_certificate_key /path/to/server.key; } オレオレ証明書はこんな感じで作れる # RSA形式の秘密鍵の作成 openssl genrs…

Djangoでdb接続情報を複数設定する

普通にdjangoプロジェクトを作成するとdb設定の初期値は以下のようになってます DATABASES = { 'default': { 'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 'NAME': '', # Or path to database file if u…

ubuntuにMySQL-pythonのインストールでエラー

ubuntuにMySQL-pythonをインストールしようとしたら以下のエラーになった EnvironmentError: mysql_config not found libmysqlclient-devをインストールしておく必要がありますね $ sudo aptitude install libmysqlclient-dev これでインストールできるよう…

DjangoでBulk Insert

cursorのexecutemanyでbulk insertになった mysql-pythonでしか試していないmodels.py from django.db import models class Book(models.Model): name = models.CharField(max_length=255) price = models.IntegerField() published = models.DateTimeField(…