Python

LTSV パーサを書いた

Python の C 言語の拡張で書いてみた(Python2 系でしか動かないはず)。 GitHub - heavenshell/py-pyltsv: Dead simple LTSV parser written in Python C extension最初 Pure Python で書いてたけど既に作られてたので、どうせならと勉強の意味も兼ねて C 言…

Jokk というライブラリを作った

年始に [twitter:@bathtimefish] さんと [twitter:@kadoppe] さんと食事しながら色々話しをした時に、EasyMock という Node.js のプロダクトが良いという話しを聞いた。 https://github.com/cyberagent-jp/node-easymock これは何かというと、フロントエンド…

werkzeug で ルールコンバータを作る

Werkzeug のルーティングで正規表現を使えるようにするコンバータを作る方法。 # -*- coding: utf-8 -*- from werkzeug.routing import Map, Rule, BaseConverter class RegexConverter(BaseConverter): def __init__(self, url_map, *items): super(RegexCo…

Jedi.vim の preview 画面を消す方法

Jedi.vim の最新を入れたら補完時にプレビュー画面を出すようになった。 メソッドの説明が出て便利なんだけど、出す事によって補完候補の選択が耐えられないくらい遅くなる。 補完の候補の選択(C-n や C-p)で表示する内容を動的に切り替えてるんだからそりゃ…

jedi.vim で virtualenv を使ってる場合の補完

jedi.vim で使う Python の jedi を入れる簡単な方法 - Memo のコメント欄で id:shkh さんとやりとりしたのを調査してみた。 結論 virtualenv.vim を使えば OK。 普段 VirtualenvWrapper を使っていて virtualenv.vim がどうなってるのか見てみた。 まず $WO…

たった 4 行のコードでひたすらアイドル水着画像をあつめる(Python だよ)

たった10行のコードでひたすらアイドル水着画像をあつめる - utgym’s diary たった3行のコードでひたすらアイドル水着画像をあつめる(Rubyだよ) - maeharinの日記 たった数行のコードでひたすらアイドル水着画像をあつめるのをGoutteで書いてみた - iakio…

jedi.vim で候補がデフォルト選択されなくなった

jedi-vim の設定 - Memoで、~/.vim/after/python.vim とかにデフォルトで候補が選択されるのを回避する方法を書いたけど、最新のコミットではオフになったそうな。 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = w…

jedi.vim で使う Python の jedi を入れる簡単な方法

jedi-vim(ジュダイ-ヴィム)で2ヶ月近くハマった話 - kazy no blog Vimmer な Pythonista が使うととても便利な jedi.vim は Python のライブラリをインストールする必要がある。 Mac で Python を使っていてかつ、homebrew や MacPorts を使っている場合、シ…

Python の suds で proxy を設定する方法

Python の SOAP クライアントの suds でネットワークの環境で proxy を超える必要がある場合は以下のように書く。 # -*- coding: utf-8 -*- from suds.client import Client wsdl = 'http://example.com/service/foo?wsdl' client = Client(wsdl, dict(http=…

Supervisord + Virtualenv な環境で gunicorn を起動する

Supervisord で gunicorn のプロセス管理をしていて、今までは以下のように人間が virtualenv を起動して supervisorctl を叩いていた。 $ workon project $ supervisorctl start projectLinux マシンを起動したら自動的に Supervisord が起動して、gunicorn…

MacPorts + Virtualenv + Gevent をインストール

MacPorts で Virtualenv で環境作って pip で Gevent をインストールした際のメモ。 $ mkvirtualenv sample $ mkdir sample $ cd sample $ pip install gevent略 running build_ext building 'gevent.core' extension creating build/temp.macosx-10.8-x86_6…

Qiita API の Python ライブラリを作った

GitHub - heavenshell/py-qiita: Python wrapper for Qiita API v1. ドキュメントと Ruby や Perl のコードを見ながら作った。 コードや実際の API を叩いたテストコードは割とあっさりできて、一番時間が掛かったのが実際の API を叩いてたのをモック化した…

Flask の view で依存を排除したい

Flask を使ってアプリケーションを書いていてどうやってやるんだろうと思ったので、ちょっと試してみた。 Flask の view 関数内でロジックとなる部分を呼び出す場合 view 関数でインスタンスを生成する。 #!/usr/bin/env python # -*- coding: utf-8 -*- fro…

Pydiction で不要っぽいのを削った

主に自分用。 neocomplecache.vim で Python の辞書補完が大分速くなったとはいえ、やはり重いので辞書ファイルの中を見てみた。 自分には不要なもの(PyQt とか gtk とかそんなの)がモリモリ入ってたので、削ったのを Gist にアップした。 これを使うと前回…

UnitTest で Parametalized テストと TDDBC 大阪 2.0

TDDBC 大阪 2.0 に参加した。 Python で希望したけど、Python 希望者が自分一人だったので、TA の方とペアプロした。 テストコードを書いてたら TA の方にここは PHP でいうデータプロバイダーを使うと良いと指摘してもらった。 PHPUnit – The PHP Testing F…

CLI フレームワークの Cliff がいい感じ

Python の CLI フレームワークに Cliff というのがある。 http://readthedocs.org/docs/cliff/en/latest/ ドキュメントを読んでコマンドラインなアプリケーションを作る場合に使えそうだったので、試してみたら Python2.6 では動かなかった。 ちょっとソース…

SQLSoup を使ってみる

とても今更ながら SQLSoup というのがあるのを知った。 http://readthedocs.org/docs/sqlsoup/en/latest/ 個人プロジェクトでは SQLAlchemy を使っていて、Web アプリケーションとかだとはとても便利で重宝している。 ただバッチのような簡単なスクリプトを…

ultrajson の速さを知る

jiffy と mochijson2 と simplejson のベンチマークを取ってみた - Twisted Mind 関連。 simplejson(2.4.0) と Python で組み込みでインストールされる json モジュール(1.9)を比べてたら simplejson の方が速かった。 json 1.9 2941352.84424 simplejson 2.…

Sunzi で sudo を使えるようにするラッパーを作った

sunzi を試してみる - Memo で試した Sunzi だけど sudo が使えないのが困った。 今の職場は root 権限は貰えないけど個人のアカウントに sudo は付けて貰える。 なので sudo ができるのが前提。シェルスクリプトの中で sudo を付けて、sunzi deploy を実行…

いかにしておっぱい画像をダウンロードするか〜2012 PyPy multiprocess 版

いかにしておっぱい画像をダウンロードするか〜2012 PyPy 版 - Memo window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = i…

いかにしておっぱい画像をダウンロードするか〜2012 PyPy 版

いかにしておっぱい画像をダウンロードするか〜2012 Python 版 - Memo どうせなら「pypy op.py だろ jk」というのを幾つか見たので pypy。 元々は requests を使えば asnyc が簡単というのが言いたかった。 requests.asnyc は gevent にガッツリ依存している…

いかにしておっぱい画像をダウンロードするか〜2012 Python 版

いかにしておっぱい画像をダウンロードするか〜2012 の Python 実装です。 Node.js 版は [twitter:@kumatch] さんの いかにしておっぱい画像をダウンロードするか〜2012 for Node.js :: kumatch's blogspot。 PHP 版は ゆーすけべーさんのおっぱいスクリプト…

nose で docstring が複数行あった際の表示

Python の nose はテストメソッドの docstring を表示してくれる。 たとえばこんなテストファイルがあるとする。 # -*- coding: utf-8 -*- from unittest import TestCase def add(x, y): return x + y class TestSample(TestCase): def test_add(self): """…

自作のディレクティブを有効するために

heavenshell's note -自作のディレクティブを有効するために の転載。 rstblog で自作のロールやディレクティブを有効にする為には現状 rstblog/modules/ というディレクトリにモジュールを作成する必要がある。 手動で rstblog/modules に自作のモジュール…

rstblog で新規にディレクティブを作成してみる

heavenshell's note -rstblog で新規にディレクティブを作成してみる の転載。 ロールはインラインのマークアップだが、ディレクティブにすると画像を埋め込んだりできるようになる。Sphinx には YouTube の動画を埋め込む プラグイン がある。 .. youtube::…

rstblog で新規にロールを作成してみる

heavenshell's note -rstblog で新規にロールを作成してみる の転載 rstblog を拡張するには modules 以下に自分のモジュールを設置し、config.yml で使用するモジュールを設定する。拡張方法には主に reStructuredText のマークアップの種類を増やす方法と …

rstblog で最近のエントリーを表示する

heavenshell's note -rstblog で最近のエントリーを表示する の転載。 ブログなんかはサイドバーに最近のエントリーみたいな形で表示する事が多い。 Octpress なんかも表示している。 rstblog でどうやって表示するか分からなかったのでちょっとだけソースを…

reStructuredText を使った静的 HTML 生成ツール

heavenshell's note -reStructuredText を使った静的 HTML 生成ツール の転載。 静的 HTML 生成ツールをブログとして使う最近だと Jekyll と Octpress を使って Github pages と連携させるというのが流行ってるんだろう。Jekyll は Ruby で書かれているツー…

Jinja2 のテンプレート内でドメイン名を取得したい

Google Analytics のタグを埋め込む場合、テスト環境に入れてるとそれもカウントされるそうなので、正確な値を取る為にプロダクション環境かどうかという判定を行う必要がある。 Google Analytics のタグは全ページに入れる必要があるので、大元となる layou…

Vim と Pyflakes

普段 Vim と Pylakes を連携しているけど pep8とpyflakesのvimプラグインを入れた - 十番目のムーサ を読んで使っている Vim プラグインとは違う事に気付いた。 普段使ってるのは、こちらで最後に少し紹介されているもの。 vimでPythonのコードを書いている…