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

Pycharmからファイル保存時にgunicornをリロードさせる

gunicornをリロードさせる方法はドキュメントにあった http://gunicorn.org/faq.html#contents $ kill -HUP masterpid なので起動するときに –pid gunicorn.pidとかをつけておき $ kill -HUP `cat gunicorn.pid`でリロードできる Pycharmから実行する場合は…

Herokuにアップしたアプリから参照するための環境変数を設定する

APIのキーとか、公開リポジトリにupしたくない設定は環境変数として設定します。設定はコマンドラインから実行できます。 コマンドラインツールはこちらからインストールできます https://toolbelt.herokuapp.com/ 設定する $ heroku config:add API_KEY=xxx…

ロンドン五輪なのでInstagramAPIを使ってロンドンの写真を表示するサイトを作ってみた

ロンドン五輪が始まったので、便乗して何かロンドンに関係あるサイトを作って見ようと思いました。だけど、大したものが思いつかなかったので、Instagram APIを使って londonというタグがついている画像を表示するという、何番煎じかわからないようなサイト…

Pythonでクエリストリングをオブジェクトに変換する

urlparse.parse_qsかparse_qslを使う。 返される値が微妙に異なり、parse_qlはキーがクエリ変数名で値がリストである辞書を返し、parse_qslはクエリ変数名と値のペアのリストを返す。 # coding=utf-8 from urlparse import urlparse, parse_qs, parse_qsl ur…

Pycharmでメソッドとメソッドの間に線を入れて見やすくする

早い話、こういうコードが こう表示されます。 設定する箇所はSettings -> Editor -> Appearance -> Show method separators

Pythonでstacktraceのログ出力

traceback.format_exc呼べばいいだけなんだけどよく忘れるのでメモ import logging import traceback try: def a(): b() def b(): open('./not_exist.txt') a() except Exception, e: logging.error(traceback.format_exc()) raise 出力 ERROR:root:Tracebac…

Gitで削除済みのファイルを管理対象から削除するワンライナー

最近短い案件が続いて、hg -> git -> hg -> gitと交互にvcsが変わってるので混乱するgitで管理対象のファイルを削除したとき、--deleted になったファイルを一括git rmするワンライナー git rm $(git ls-files --deleted)

ゼロ埋め

python s = "1" print s.zfill(3) # => 001 ruby s = "1" p s.rjust(3, '0') # => 001 javascript sliceを使って var s = "1" ("000" + s).slice(-3) # => 001

DjangoのモデルでDBカラムにmediumtextを指定する

MySQLの場合はmediumtextにしたい。他にsqlite3を使うことが考えられるが、その場合はtextでいい。こんな感じ? class MediumTextField(models.TextField): def db_type(self, connection): if connection.settings_dict['ENGINE'] == 'django.db.backends.m…

「大規模なJavaScript開発の話」のsetTimeoutを使った遅延描画について

こちらのスライドで紹介されているjsの遅延描画についてのコードを読んで、自分がsetTimeoutの挙動について、よくわかってなさそうだったので調べてみました。 大規模なJavaScript開発の話 http://www.slideshare.net/terurou/javascript-13711976 以下が遅…

backbone.js、underscore.jsがhostされているcdn

Google Libraries APIは、jQueryとかの有名なライブラリはhostされてますが、backbone.jsとかunderscore.jsなどはhostされてません。 どっかにないかなと思って探したらここにhostされてました。 cdnjs http://cdnjs.com/ <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.3.3/underscore-min.js"></script>

Google Libraries APIでjQuery UIのcssを読み込む

ドキュメントには、cssについては特に記述がありませんがありますね https://developers.google.com/speed/libraries/devguide こんな感じで使えます <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/hot-sneaks/jquery-ui.css" type="text/css" media="all" /> </link>

開発現場で重宝した本 - はじめて学ぶソフトウェアのテスト技法

はじめて学ぶソフトウェアのテスト技法作者: リー・コープランド,宗雅彦出版社/メーカー: 日経BP社発売日: 2005/11/03メディア: 単行本購入: 24人 クリック: 539回この商品を含むブログ (51件) を見る プログラマというと、プログラムだけひたすら書いてるイ…

Mac OSX Lionにrabbitmqをインストール

homebrewで $ brew install rabbitmq ==> Installing rabbitmq dependency: erlang ==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/erlang-R15B-bottle.tar.gz ##################################################################…

Mac OSX Lionにmemcachedをインストール

homebrewで $ brew install memcached ==> Installing memcached dependency: libevent ==> Downloading https://github.com/downloads/libevent/libevent/libevent-2.0.16-stable.tar.gz ################################################################…

Pythonのzipとizipの違い

zipは以前ちょっと書いたけど、複数のシーケンスに並行して同時にアクセスするforループを書くのに便利。http://d.hatena.ne.jp/yuheiomori0718/20120626/1340721471 # coding=utf-8 seq1 = [1,2,3,4,5] seq2 = ['a','b','c','d','e'] for n, a in zip(seq1,…

Djangoでemail送信をテストする

先日、gmailを使ってdjangoからemailを送信する設定なんかを調べました。 今日は関連して「view関数などでemail送信している場合、ユニットテストを実行するたびに送信されてしまうのか?」と思ったので調べてみました。 結論を先に書きますと、python manag…

DjangoでGmailを使ってメール送信

DjangoではGmailを利用して簡単にメールを送信することができます。以下の手順ですぐに試せます。1. djangoアプリ作成 > django-admin.py startproject django_gmail 2. settings.pyに設定を追加使用するgmailのアカウントとそのパスワードが必要ですsetting…

diffで改行を無視する

diff --strip-trailing-cr a.txt b.txt

Pythonでcsvを読む処理のメモ

こんなdata.csvがあるとして 姓名,生年月日,性別 真城最高,1994/2/18,男 高木秋人,1994/1/25,男 亜豆美保,1993/11/5,女 見吉香耶,1993/6/25,女 新妻エイジ,1992/11/3,男 福田真太,1990/7/27,男 中井巧朗,1976/2/2,男 蒼樹紅,1990/3/11,女 平丸一也,1984/6/18…

Tumblrのポストをすべて削除するスクリプトを書いたときのメモ

Tumblrブログへのポストを全部消したい、ブログ自体はhtmlとかいじってるので削除したくない、というケースがあったので、スクリプトからAPIたたいて全部削除することを考えてみました。 KEYとかTOKENとか取得する必要があります。 前に取得したときのメモが…

webページにコナミコマンドを仕込めるライブラリMouseTrap

どこかで使えそうなのでメモコナミコマンド専用ってわけではなく、いろいろなキー操作にイベントを設定するためのライブラリです。 「command+shift+k」のような同時押し、gmailのキー操作風の(「g i」とか「* a」)キーの連続入力にも対応してます。 webサ…

Pycharmでカーソル位置のシンボルをハイライトする

コード書くとき、カーソル位置のシンボルがどこで参照されているか、ハイライトしてくれると便利です。 emacsだとauto-highlight-symbol-modeというのを使ってました。 emacsでカーソル位置のシンボルをハイライトする http://d.hatena.ne.jp/yuheiomori0718…

Pythonでxmlを整形して表示する

# coding=utf-8 from xml.dom.minidom import parse, parseString import urllib2 # web print parse(urllib2.urlopen("http://search.twitter.com/search.atom?&q=python")).toprettyxml(encoding="utf-8") # file print parse(open('/path/to/sample.xml')…

Pythonでjsonを整形して表示するワンライナー

パイプで python -m json.toolに渡す echo '{"foo": "lorem", "bar": "ipsum"}' | python -mjson.tool結果 { "bar": "ipsum", "foo": "lorem" } curlでwebサービスから引っ張ってきたjsonを確認したりするのにも便利 curl -s "http://feeds.delicious.com/v2…

Pythonで辞書をクエリストリングに変換する

urllib.urlencodeを使う # coding=utf-8 import urllib d = { 'page': 1, 'per_page': 30, 'keyword': '辞書をクエリパラメータに変換'} querystring = urllib.urlencode(d) print querystring # => per_page=30&page=1&keyword=%E8%BE%9E%E6%9B%B8%E3%82%92…

エディタのカーソル位置のテストを実行する

⌃⇧F10 Run Context Configuration なんとなく、開いているファイルのテストを実行するんだと思ってたけど、メソッド単位でも実行できた。 import random import unittest class TestSequenceFunctions(unittest.TestCase): #ここにカーソルがあると全部実行 …

PycharmのMacroを使って、キー割り当てができないアクションにキーを割り当てる

KeyPromoterを導入している場合Project Viewで右クリックして New -> Python Fileを何度もやっていると、KeyPromoterがショートカットを設定しろといってきます。 「よし設定しよう」とYesを押すと、KeyMapの設定画面が開きます。しかし、KeyPromoterが提案…

requestsでbasic認証

タプルでユーザー/パスワードを渡す import requests url = 'http://example.com/some/endpoint' r = requests.post(url, data={'some': 'data'}, auth=('user', 'pass'))

requestsでHTTPヘッダーをカスタマイズする

キーワード引数headersとして辞書を渡すだけ import requests url = 'https://example.com/some/endpoint' r = requests.post(url, data={'some': 'data'}, headers={'User-Agent': 'customized'})