memo

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(…

paramikoを使ってsftp

pythonでsftpでファイルを転送したり取得したりするのに、paramikoを使えるということで、いろいろ試してみました。 いろいろといっても、リモートサーバのファイル一覧をprintしたり、ファイルを転送したり、取得したりしてみただけです。 # coding=utf-8 i…

Djangoのモデルに数値フィールドの範囲を定義する

models.IntegerFieldのvalidatorsにValidatorのインスタンスをリストで渡す 以下のモデルのModelFormは1以上、100以下の場合は正しい値として扱う class Person(models.Model): name = models.CharField(max_length=100) age = models.IntegerField(validato…

DjangoでImageFieldに画像が設定されていないことをテストする

ImageFieldに画像が設定されていないことをテストで確認したい場合はどうするか 以下の例の通り、画像を設定していないImageFieldはNoneではないので、TestCaseのassertIsNoneなどでは正しくテストできない >>> p = Person.objects.get(pk=1) >>> p.profile_…

Pythonでfeedparserを使ってRSSを読む

簡単にfeedからエントリを取得できます。 import feedparser rss_url = "http://d.hatena.ne.jp/yuheiomori0718/rss" feed = feedparser.parse(rss_url) for e in feed.entries: print e.title 実行結果 [python][ruby]pythonで10進数からn進数に基数変換 [p…

datetimeをLast-ModifiedやIf-Modified-Sinceの書式に変換

from datetime import datetime d = datetime.now() s = datetime.strftime(d, '%a, %d %b %Y %H:%M:%S GMT') print s # = >Wed, 24 Oct 2012 21:34:50 GMT 受け取った文字列をdatetimeに戻す場合はstrptime d = datetime.strptime(s, '%a, %d %b %Y %H:%M:%…

DjangoでアップロードファイルをS3に置くときの設定メモ

適当にImageFieldを持つmodelを作るmodels.py class Image(models.Model): file = models.ImageField(upload_to='img/%Y%m%d') memo = models.CharField(max_length=255) S3に置くためにdjango-storagesを使う たぶん以下が最小限の設定settings.py DEFAULT_…

Djangoのunique_together制約のエラーメッセージをカスタマイズする

unique_error_messageをオーバーライドする class Foo(models.Model): driver = models.CharField(max_length=20) restaurant = models.CharField( max_length=30) age = models.IntegerField() class Meta: unique_together = (("driver", "restaurant"),) …

PILで画像の切り抜き

もともと1500x1500くらいある画像の一部を切り抜き # coding=utf-8 import Image pic = Image.open('sake.jpg') # 切り抜き(left, upper right, lower) pic.crop((450, 516, 1011, 872)).save('crop_sake.jpg')

PILで画像のリサイズ

もともと1500x1500くらいの画像を300x300にリサイズ # coding=utf-8 import Image pic = Image.open('sake.jpg') # リサイズ (width, height) pic.resize((300, 300), Image.ANTIALIAS).save('300sake.jpg')

hg diffの結果をlessでカラー表示

git使ってたときは、git diffが1ページずつ表示されたと思うんだけど、hg diffだと一気に最後まで表示されてしまって使いづらい パイプでlessに渡すとカラーじゃなくなってしまう 以下を追記したら希望通りの動きになった。~/.hgrc [pager] pager = LESS='FS…

django-pistonで304を返す

django-pistonで返すレスポンスはpiston.utils.rcに定義されていて以下のような使い方をする。 def read(self, request, *args, **kwargs): if not self.has_model(): return rc.NOT_IMPLEMENTED pkfield = self.model._meta.pk.name if pkfield in kwargs: …

DjangoのテストクライアントにHTTPヘッダを設定する

djangoでPOSTやGETのテストするときに、HTTPヘッダを設定する方法のメモ パラメータとは別に**付きの辞書で渡す from django.test.client import Client c = Client() response = c.post( '/books/', {'title': 'Code Reading'}, **{'HTTP_AUTHORIZATION': '…

git add -pをhgで

gitだと、git add -pを使うことによって、ローカルに加えた修正をhunk単位で選んでコミット対象にすることができますね わりと便利です同じようなことをmercurialでやりたくて、どうやるんだと思い、調べました。 RecordExtensionというのを使うようです。 ~…

pyapnsでnotifyしたときのエラー

ドキュメントを見るとpyapnsのnotify関数はdevice_tokenを文字列でも配列でも渡せることになっています https://github.com/samuraisam/pyapnsところが文字列で渡すと正常に通知ができて、配列で渡すとエラーになるというのにちょっとはまったのでメモを残し…

datetimeとエポックタイムの変換

メモ # coding=utf-8 import time from datetime import datetime def datetime_to_epoch(d): return int(time.mktime(d.timetuple())) def epoch_to_datetime(epoch): return datetime(*time.localtime(epoch)[:6]) now = datetime.now() # => 2012-10-10 2…

.hgignoreのグローバル設定

.hgignoreを各リポジトリに置くんじゃなくて、全体に効かせたい場合どうするかホームディレクトリに.hgignoreを置くだけでは効かない ホームディレクトリの.hgrcに以下の設定を追記する~/.hgrc [ui] ignore = ~/.hgignore

git mergeでコミットしない方法のメモ

git mergeはマージ後にcommitまでやってしまう ソースのマージだけやって、commitは手動でやりたい場合はどうするのか調べた 方法1 $ git merge --no-commit --no-ff $BRANCH Automatic merge went well; stopped before committing as requested参考 http:/…

kickstrapのdebug表示について

この間作ったtodoアプリの場合、knockout.jsに依存したtodoというappsを作りました。 config.ksはこうです knockout.min.js, //http://netdna.getkickstrap.com/Kickstrap/apps/knockout/knockout.min.js todo.js,todo.css kickstrap.lessの@appsはtodoのみ…

kickstrapでknockout.jsを使う場合のメモ書き

kickstrapでknockout.jsを使う場合は、まずkickstrap.lessで@appsのknockoutのコメントを外しますkickstrap.less @apps: "pinesnotify, //qunit, //bootstrap, //bootstrap/transition, knockout, //updater"; こうすることでKickstrap/apps/knockout/config…

heroku上のpythonアプリで使うライブラリをgithubからインストールする

djangoアプリなどをherokuにアップロードするとき、依存ライブラリはrequirements.txtに定義しておきますこんな感じですね。requirements.txt Django==1.4 distribute==0.6.24 dj-database-url==0.2.1 django-tastypie==0.9.11 gunicorn==0.14.6 httplib2==0…

Goのmathパッケージをさわってみたメモ

定数、関数がたくさん用意されてます http://golang.org/pkg/math/ とりあえず使いそうな関数を動かしてみました。 package main import ( "fmt" "math" ) func main() { // 定数 // 円周率 fmt.Println(math.Pi) // 3.141592653589793 // 黄金比 fmt.Printl…

Go言語のstringsパッケージを試してみた

stringsパッケージに文字列処理のための関数がいろいろ用意されている http://golang.org/pkg/strings/ 適当によく使いそうな関数を動かしてみた main.go package main import ( "fmt" "strings" ) func main() { // 文字列長 fmt.Println(len("abcdefg")) /…

DjangoのFormSetで各フォームをまたがったバリデーションを行う

どうやるのかなと思って調べたときのメモ 例えば複数のブックマークを一括で入力できる画面を想定して、こんなFormとFormSetがある場合 from django.forms.formsets import formset_factory from django import forms class BookmarkForm(forms.Form): title…

HP Photosmart 6510を購入

最近、要件定義や設計書の資料などは紙で見たいと思うことがちょくちょくあったので、プリンタを買おうと思い立ちました。なんで紙を見たいかというと、資料見ながら、不明な点や質問点をどんどん書き込みたいので。 プリンタを買うのはずいぶん久しぶりです…

コマンドラインから複数行をファイルに書き出す

なんか忘れてて調べたのでメモ $ cat <<EOF > somefile.txt > some text > some text > some text > EOF当然追記する場合は>>で $ cat <<EOF >> somefile.txt > some text > EOF</eof></eof>

Dartを触ってみたメモ

Dartは名前だけ聞いたことがあって、まったく触ったことがなかったので触ってみました。Dartのページ http://www.dartlang.org/google絡みのプロダクトにしてはきれいなサイトという印象 Dartのインストール http://www.dartlang.org/downloads.html 「Every…

Pythonで10進数から2進数、8進数、16進数への変換

format関数が使える。 2進数にするにはb、8進数にするにはo、16進数にするにはhを渡す。http://docs.python.org/library/string.html#format-specification-mini-language 使い方はこんな感じ10、2、8、16進数の表を出力する for i in range(0, 16): print '…

Pycharmのjavascriptエディタでthisがglobal objectを指している場合は警告がでる

こんな警告がでてて、どういうことなのかと思ってみてみたら、thisがglobal objectを指している場合は警告をだすようになっていた。 とくに問題はないと思うのでとりあえず、設定をoffにしておいた。 ちなみに上記のコードでは、thisを渡さなくても、即時関…