DjangoのClass Based Veiw(クラスベースビュー)についてちょっと軽くコードリーディングした

これからは関数ベースじゃなくてクラスベースになるらしい Note Prior to Django 1.3, generic views were implemented as functions. The function-based implementation has been deprecated in favor of the class-based approach described here. という…

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

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

Southでハマりまくった話

仕様検討と実装検討……のはずガッ! いろいろあって DB がなんかうまく最新状態にならなくてハマりまくった。以下メモ South とは Django の DB を管理するツールです。マイグレーションツール。よくわかんないけど、複数人で MySQL とかで管理するときにいち…

zshに移行してみたヨ!ポロリもあるヨ!(僕もiTerm2 + tmux + zsh + Vim 環境にしました棚おろし)

いままで別に bash でイイジャンって思ってた まあ実際そんなに不便はなかった。VCS表示、つまりプロンプトでブランチ表示するのははずせないのでそれで bash_completion いれてたけど、そこの表示で 300ms くらい遅れるのが若干タルいけど、不自由はしてな…

Southでmigrateするときに一瞬ハマった話

あるブランチで models.py が変更されていた そういうときにいちいち drop database; とかするのはダルいので South というマイグレーションツールを使う。PyPI と公式ドキュメントは以下 South 0.8.2 : Python Package Index South migtation するためのラ…

__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 構築 で、た…

「普通のプログラマー」になるために必要なスキルってなんだろう

プログラマーって言ってもいろいろいる なんか SIer にはいったひとが研修でちょっとやったりとか、派遣でやらされてるとか、逆にすげーハックしちゃう人とか、いろいろいる。Twitterやブログ、メーリングリストやグループ、各種勉強会に参加している人もい…

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

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

末尾の , (カンマ) を取り除きたかった話

あるチェックボックスのチェックが入っている一覧をクエリストリングにしてやりたかった。 ?hoge=1,2,3 みたいに。でも ?hoge=1,2,3, になってしまった。 こんな風に無理やりやろうとしてた $.each でまわして末尾を消し去る var checked__ids = $("input[na…

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

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

Ack.vimが便利だったが特定のディレクトリを除外したかった

ack.vimはマジ便利 導入はack.vimは便利だけどUbuntuで一瞬ハマった話 - atas grep.vim とか vimgrep とか考えてられないくらいに便利。なのはいい 特定のディレクトリを除外したくなった デフォルトでは .hg とか .git とか .svn とか .pyc とかを除外して…

テンプレートのインデックス、あとforループで爆死した話

おれがアホやった こんな感じのよくあるテンプレートかいた <ul> {% for book in books %} <li/>{{ book.title}} <li/>{{ book.author }} {% endfor %} </ul> で、こんなエラーがでた Caught TypeError while rendering: 'Book' object is not iterableえ、なんでって思ってたら…

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"ほげ"): …

ForeignKeyとfilterのメモ

自己責任で あってるか検証しようとして簡単なModelつくろうとしたけどなんかうまくいかないからメモがき ForeignKeyは1:Nなのは知ってる BlogModelが1としてEntryModelがNならEntryModelにForeignKeyをはる この場合 blog.entrymodel_set でクエリセットが…

なんかUbuntuのVMを強制終了させてMySQLが起動できなくなった話

おいぃ! /etc/init.d/mysql start しても立ち上がらないぞ!!!! 電車のなかでMacBookAirでUbuntuのVM立てて作業しようとしたんだけど、なんかどっかで強制終了かスリープさせて移動しちゃったら mysql も mysqld も立ち上がらなくなった。 Ubuntuは12.04…

csv.DictReaderが便利

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

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

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

ForeignKeyのメンバーを取ってこれる件

ForeignKeyのリレーションはたいへん たとえばこんな models.py があるとする class User(models.Model): name = models.CharField(max_length=100) class Hoge(models.Model): hoge = models.CharField(max_length=100) moge = models.ForeignKey(User) こ…

formのcleanするときはcleaned_data返せば良い&forms.ModelFormはオーバーライドっぽくできる

まあ公式ドキュメント読めばいい 参考::フォームやフィールドのバリデーション — Django v1.0 documentation 具体例 class HogeForm(forms.ModelForm): # intのフィールド hoge_int = forms.IntegerField(label=u'番号', required=False) # char のフィール…

MySQL pagerとリストアのメモ

Pagerについて 長いテーブルを参照するときに標準出力してしまって見きれないことがあった。tmuxのコピーモードという力技はあるけど、やっぱりlessみたいにページャーがあったらいいな。 ということで探した。とりあえずMySQLのステータスを見る mysql> sta…

PILとlibjpegがUbuntuでみつかんねーよっていうエラーの話

なんかPILいれたのにUbuntuでうごかねーっていう 結論としては libjpeg-devをいれる 適切な位置にシンボリックリンクを貼ってやる PILをいれる でよかった。 詳細 sudo apt-get install libjpeg-dev sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/l…

C言語のポインタと構造体を復習したついて軽くメモ

c

Obj-Cにちょっと興味が出たので最速文法まわりとか読んでたけどよくわからなくて、前提知識としてさすがにこのくらいは抑えないとと思ってCの復習してた。 C++も必要かな?って思ってたけどそうでもないらしい。まあ座学的にちょっと見ておこうとは思うけど…

ユニコード文字列を含むファイルの読み書きにはcodecsを使う

ある複数のidから特定のidの状態をファイルに保存する簡単なスクリプトだったのだが # coding=utf-8 import requests def main(): ids = range(1, 100) with open('hoge', 'w') as f: for id in ids: data = {} data['No'] = id r = requests.post(PATH, dat…

TestFlightでテスター目線で日時変更関連メモ

iOS

アプリの関係で時刻や日時によって値が変わることをテストしないといけなかった。そのときに日時関連であたふたしたのでメモ。若干間違ってるかもしれないので、自己責任で。 TestFlight導入 TestFlightは開発者がiOSアプリを配布してテスターに渡したりする…

「サーバーサイドの知識の無さに全俺が泣いた」レベルの入社当時の人に読ませたら少しはアドバイスになったであろうPythonとDjangoの前提知識メモ

前提知識大杉。なので自分が入社当時のスペックで知らなかったことを概説的に一気にまとめてみようと思う。これが誰か初学者の役に立ったら幸いです。 当時のスペック 中学校のころBasicに触れるものの、randomにlineひいただけ 高校のころ情報の授業でn進法…

QueryDictをどうにかして拡張してハッシュ化したパスワードでログインしたかった話

パスワードのハッシュ化は基本 まあそりゃ平文で保存するはずないのであるユーザーがあるパスワードをつくったときはハッシュ化します こんなmodels.pyがあるとする from django.db import models class User(models.Model): name = models.CharField(u"名前…