Python

外部API使用でも安心してコードをかくための、mock をつかったテスト

Twitter や Facebook に限らず、外部APIを叩かなければならない場面は出てくる。ただでさえテストコードかけないと不安になるのに、外部APIの挙動にあわせてうまく連携しないといけないケースでテストコードがかけないのはかなりこわい。そういうとき、mock …

Django のダミーデータを大量投入するスクリプトを対話環境に対応させるシェルスクリプトで自動化した

やっぱりだるかった Django アプリのダミーデータを大量投入するスクリプトをかく - AtAsAtAmAtArAのをコピペ運用でもよかったけど、コピペ条件かわったりいちいちもうそういうのだるかったので、やっぱりデータを初期化するところまで自動化することにした…

Facebook いいねボタンの挙動を localhost で検証する

Facebook app 登録 まあしましょう ドメイン設定が必要 app の設定で localhost とかだとなんかだめっぽかったので以下を参考にした localhost環境で、Facebook のJavaScript APIでOAuth認証をする - Goodpic testapp.comこの場合 Mac がローカルだからいい…

Django でメールを送信と確認

メールを送信する。Python 標準モジュールやライブラリにもありそうだけど、Django 組み込みであるのでそれを利用する。 日本語1.4::メールの送信 — Django 1.4 documentation つかう ドキュメントのままです from django.core.mail import send_mail send_m…

Python の全角半角処理に zenhan が便利

バリデーションとか検索とか だいたい全角半角でどうとか変換とかかませたりする。で、Python で有名なところだと zenhan というのがある。 導入 PyPi にある。うれしい。 pip install zenhan つかう 公式にもあるけど、ヘルプ見た感じでも難しくない import…

vim で python 開発するとき pyflakes + PEP8 = flake8 が便利

補完とかは Python 開発で便利な jedi-vim いれてみたらたしかにライフチェンジングだった - AtAsAtAmAtArA とかみよう。 PEP8 する必要があった 今まではシンタックスだけの pyflakes だけしてた。PEP8 はある程度守ってるけど80行折り返しと行間については…

django-debug-toolbar は便利(とVirtualboxのVMで表示にハマった件について)

class base view がわからない 存在は前から知っていたけど、まあ別にいいやって思ってて使ってなかった。でも久々の Django でいろいろ忘れてるし、あと 1.5 を使うのはいいけど class base view が mixin しまくってて拡張や仕様変更や保守に強そうという…

Sphinx のビルドをファイル監視して自動で行う

Sphinx でドキュメントを書く必要があったので、せっかくなので make html をいちいち手打ちしないで自動でビルドするようにした。 先人はいる ファイル監視してスクリプトってのはまあある話で、Python なら watchdog というのが使えるようだ。 参考 watchd…

パーフェクトPythonを読んだ

パーフェクトPython (PERFECT SERIES 5)作者: Pythonサポーターズ出版社/メーカー: 技術評論社発売日: 2013/03/05メディア: 大型本購入: 1人 クリック: 47回この商品を含むブログ (2件) を見る 1冊で言語仕様から最新の技術までを網羅した内容。網羅的に解説…

Python 開発で便利な jedi-vim いれてみたらたしかにライフチェンジングだった

+python コンパイルがだるそうだった Big Sky :: python 補完のVimプラグイン「jedi-vim」がスゲー をみてからきになってはいたけどだらだらしててやってなかった。./configure, make, make install さえだるい*1。けど、誰かの記事でまた「vim + python の…

はてなブログで簡易はてなカレンダーモジュール機能を実装する

ある人から「記事一覧機能はいいけど縦長すぎる。はてダみたいなのがほしかった」ほしいというのでどうやらそれっぽいものならできそうなのでつくってみた。所要時間は調査(5分)、実装(15分)、テストやデザインなどの調整(10分)って感じだったので30分くらい…

PhoneGap(Cordova)アプリで jQuery Mobile で複数画面遷移する HTML ファイルを生成する

HTML ファイルをどう扱うか考えていた というのが以前の記事 PhoneGap(Cordova) + jQuery Mobile でアプリを構築しようとして調べた雑多なこと - atas ベタ書きで固定フッターやヘッダーを出力するのはさすがに面倒だし絶対ミスがおこる。一般的な Web フレ…

拙い自分がコードレビューをする場合に気にするポイントはなんだろうという話

いつもはコードレビュー受ける側です コードレビューなんてできる立場じゃねーわと思いつつも、忙しくなってくるとなおざりになってくるし、しかしなにもしないのもいやなので「僕がレビューしてもいいですか?」って聞いたら「まあいいんじゃないの」ってこ…

テストかくとき skip とdocstring メモ

ほえー 知らなかったのでまとめておく テストを skip したいときは @skip デコレータが使える 参考::26.3. unittest — Unit testing framework — Python v3.4.0a1 documentation 実際は Django でやってるけど中身は似てるはず*1。まるまる引用すると class …

Django の Storage の exists が SuspiciousOperation でハマったけど別にそれ問題じゃなかった話

Storage を使う必要があるからつかってるんだけど、その Storage で実装されているものと os モジュールで実装されているものでは内部的に若干挙動が異なることがある。というかことなってハマった。 絶対パスか相対パスかって話 具体的には MySQL でこんな…

Fabricの階層化に使う @ task デコレータの挙動

fabric を扱う可能性が出てきた 今まで概要は知っていたけどもうちょっと知らないといけなさそうだしちょっとさわってみた 概要 公式::Fabric — Fabric 1.7 documentation 参考::Fabric デプロイツールのPythonicな書き方 - Ian Lewis 参考::Fabricを使って…

小飼弾氏の基調講演を聞いて各言語の join と正規表現の実装についてなんかまあ考えた話 #pyconjp

マサカリが飛び交ったPyCon2012 Day2 基調講演 講演を聞いたけど、いろいろ腑に落ちなかったりした。まあ各セッションとその講演についての感想は pyconjp2012 行ってきたよ各セッション感想 #pyconjp - atas に書いたのでそちらを参照してください。 404 Bl…

pyconjp2012 行ってきたよ各セッション感想 #pyconjp

感想をメモする おつかれさまでした たぶんいまごろ運営スタッフは打ち上げでしょう。正式にはまだ3日目のSprintもあるけど、自分は参加しないしこういうでかいイベント(YAPCやHTML5ConfやRubyKaigiやPHPカンファレンス)は行ったことがないので新鮮だった。…

Django の Storage よくわかんないけど無理やり握りつぶして粉砕した話(から、できるだけ例外処理しないロジックをつくりましょうの話)

Django の Storage ってのがあんまりよくわかっていない とりあえず公式ドキュメントは以下 カスタムのストレージシステムを作成する — Django v1.0 documentation 基本的にはなんかこう OS のファイルシステムみたいな感じにさわれる?まあストレージってい…

Python/Djangoやってて少しは例外処理に慣れてきた気がする

油断していると 500 エラーで落ちる なんかちょっと機能をつくったり改修していたりすると、その場では動いても、なんらかの形でデグレったり違う改修によって入力される想定されるデータとは異なるものがはいってきたりする。なので、例外処理必要。油断し…

__call__ と callable がよくわかんなかった話

なんかライブラリとかみてるとたまに __call__ とか callable がでてきた なので軽く調べたけど、a = A(); a() でフックっぽく呼ばれるというのはわかったけどなにがどう便利なのか正直わかんなかった。 イマイチ __call__ がどう便利なのかがわからなかった…

名前空間衝突させて10分くらいハマった話

なんか読み込みがおかしい import ssh ... ... conn = ssh.SSHClient() ... ... いろいろあって paramiko だけじゃなくて ssh モジュール単体で同じ事をやろうとした。しかしなぜか ssh モジュールがうまくうごかない。しかたないから dir(ssh) とか see(ssh…

SFTP で任意のディレクトリ以下のリモートファイルをコピーする

これもそんなに難しい話ではないです。SFTP で Python ってググったらたくさん paramiko がヒットするし、サンプルコードがたくさんみつかります。正直公式ドキュメントは見づらいのでいちおうソースコード軽く読んだりしたけど。 公式ドキュメント::API Doc…

pyftpdlib で簡易FTPサーバーを立てる

簡易的に FTP サーバーをたてるときにすごく楽。構築方法はググれば簡単だけど、いちおうまとめておく。 公式ドキュメントの参考::pyftpdlib - Python FTP server library - Google Project Hosting 導入 pip でいいです pip install pyftpdlib 構築 で、た…

fabricのenvって辞書が頭良かったので再実装してみた

fabric は Python製のデプロイなどを行うスクリプト 公式ドキュメントは以下 参考::Fabric — Fabric 1.4.4 pre-alpha (76f466d) documentation あとは @IanMLewis さんのドキュメントが詳しい 参考::Fabric デプロイツールのPythonicな書き方 - Ian Lewis で…

文字列フォーマットあれこれ

基礎的なところから >>> "%s" % 'hoge' 'hoge' >>> "%d" % 10 '10' >>> "%.02d" % 2 '02' さすがにここらへんはわかるんだけど "This %(hoge)s is %(moge)s" % { "hoge":"hogehoge", "moge":"mogemoge" } # hogehoge is mogemoge キーでとることもできる。 %…

blockdiagをMacでもUbuntu Serverでも導入する

最初に言っておく。PILが危険だ easy_install は危険だ!!!!インストールは簡単だがアンインストールがタルい!!!!*1PIL でハマるから pip を使うんだ!!!! Pythonの環境構築メモ - atas PIL まわりでハマる可能性はかなりあるから、公式ドキュメン…

os.mkdir()とos.path.exists()とos.path.join()とかの話

ある特定のディレクトリを掘りたかった もともと toge というディレクトリにファイルを吐き出すという処理をしていたいところに /hoge/moge/toge みたいに掘りたいという話になった。最初はおれは def generate_dir(base_dir): if os.path.exists(u"ほげ"): …

csv.DictReaderが便利

TSV(CSV)から要素(ヘッダー)を取り出して文字コードを変更してなんか処理したい時の話 - atas の続き CSVのある uniq な文字列のヘッダーに対して、その column をとってくる処理をおれはゴリ押しで index つくって作成していた。 import csv csv_file = csv…

TSV(CSV)から要素(ヘッダー)を取り出して文字コードを変更してなんか処理したい時の話

ジェネレータについて 普通のリストや関数を返すときは return で返してやればいいけれど、繰り返し処理ができるオブジェクト= itrable なオブジェクトのときは yield で一時的に処理を止めて一つづつ値を返すことができる。 # 関数の定義 >>> def hoge(): .…