2014-09-01から1ヶ月間の記事一覧

DjangoのFormsetで少なくとも1つは入力させる入力チェック

FormsetのcleanでraiseしたValidationErrorはnon_form_errorで取得できる

Python2.xでCodeEvalのBig Digits

CodeEval - Coding Challenges for the World's Best Developers

一時的にフォントサイズを変更する

メニューバーには無いけど機能は用意されている。 デフォルトではキーは割り当てられてないのでお好みで。

except節で複数の例外を捕捉する

Exceptionなど、例外の基底クラスをexceptすれば子クラスはすべてキャッチされるが、意図しない例外もすべてキャッチしてしまう。例外クラスをちゃんと指定してキャッチするには、タプルで書けばいい。

MySQLでNULLを空文字に変換 - ifnullとnullif

データ調査でSQLの出力内容をスプレッドシートに貼りつけるとき、NULLが入ると邪魔なので。mysqlでやったことなかったので調べた。ifnullだった。 mysql> select ifnull(null, 'yes'); +---------------------+ | ifnull(null, 'yes') | +------------------…

Djangoのsyncdbでユーザーを作成しない

syncdbするときに、ユーザーがいらないのにいちいちnoを打つのが面倒。 --noinputオプションつければ、ユーザーを作成しない $ python manage.py syncdb --noinput ちなみに、django 1.7ではsyncdbは非推奨になっていて、代わりにmigrateを使うことが推奨さ…

Safariのオートコンプリート

ログインが必要なサイト内で、ログインフォームとは別の画面にtype="password"の入力フォームがある場合、ログイン時のユーザー名とパスワードが勝手に補完されるというケースがあった。結果的に意図しないパスワードの更新が走ってしまうという、よろしくな…

Django Queryset AggregationでDBによって結果が異なるケース

DBがmysqlかsqliteかによって、テストが落ちたり成功したりするケースがあったので原因をメモしておく Max OSX 10.9.4 MySQL 5.5.20 python 2.7.5 django 1.7 MySQL-python 1.2.5 DateTimeFieldを持つモデル from django.db import models class Entry(model…

カラムから特定の文字を取り除く

Replaceで UPDATE person SET phone_number = REPLACE(phone_number, '-', ''); DjangoのQuerysetで同じことができないかどうか調べたけど無理だった。Fがサポートするのは数値演算のみ Query-related classes | Django documentation | Django

GoのNaNとInf

Pythonのnanとinf

Pythonで日本の祝日判定をするスクリプト

Pythonで日本の祝日判定をするスクリプトを見つけたので触ってみた。参考:AddinBox(祝日マクロ-5) 何故かsysとmathのimport文がないので追加した。 使い方はholiday_name関数にdateオブジェクト、もしくは年月日をintで渡すだけ。以下の使い方サンプルはdat…

Pythonでバージョンナンバーを比較する

2.6.4のようなバージョンを表す文字列を比較したい。関連:MySQLでバージョンナンバーをソートする - brainstorm pythonの場合はdistutils.verson.StrictVersionが使える。 ただしStrictVersionは"1"のように数字のみだとバージョンとして扱えず、ValueError…

MySQLでバージョンナンバーをソートする

2.6.4のようなバージョンを表す文字列でソートしたい。普通にorder byすると「2.0.0」よりも「11.0.0」が小さいと判定されてしまう。 mysql> SELECT version FROM app ORDER BY version DESC; + version + 2.0 11.0 1.1.1 1.0.1 1.0.0 1.0 1 + 7 rows in set…

unittest.TestCaseの出力で期待値と実際の値の差分を省略しない

unittest.TestCaseのassertEqualsなどで、期待値と実際の値の差分が大きい場合80*8文字まで表示してあとは省略される # coding=utf-8 from unittest import TestCase class DiffTest(TestCase): def test_diff(self): self.assertEquals(range(0, 1000), ran…

ファイルアップロードでファイル名が重複したときの挙動

最近djangoでファイルアップロードが絡む処理を実装したとき、同一ファイル名に対する挙動が以前と変わっていることに気づいた。 以前はファイル名が重複したときxxxx_1.txt、xxxx_2.txtといった感じで連番が振られていたが、現在はxxxx_8kkVNQf.txtのように…

DjangoからAzureストレージにBLOBを保存したときのメモ

django-storagesにAzure用Storageクラスが用意されているので使ってみる。参考:Azure Storage ― django-storages 1.1.8 documentation DEFAULT_FILE_STORAGE = 'storages.backends.azure_storage.AzureStorage' AZURE_ACCOUNT_NAME = "" AZURE_ACCOUNT_KEY …

AppRegistryNotReady: Models aren't loaded yet.

Pycharmの「Run manage.py Task」から「shell」を起動してmodelsをimportしたら以下のエラーになった AppRegistryNotReady: Models aren't loaded yet.Djangoのバージョンは1.7。 runserverしてアプリを動かす分にはエラーにならないし、Pycharmを通さずTerm…

Javascript UI ライブラリ「Webix」

業務用のアプリなどに使えそうJavaScript UI Library, HTML5 Widgets Framework for App Development - Webix

Formのエラー文字列を辞書で取得する

ファイルアップロードのテストでMEDIA_ROOTを差し替える

MEDIA_ROOTにファイルが置かれるようなテストを実行後、ファイルを削除することを考えていた。 いろいろ方法ありそうだけど、こんな感じでよさそう。

view関数のテストでjsonをPOSTする

def test_xxxx(self): data = {} # postするデータ res = self.client.post('/path/to/api', content_type='application/json', data=json.dumps(data)) view関数側ではrequest.bodyをjson.loadsしてdataを受け取る def xxxx(request): data = json.loads(re…

Djangoで日本語名のファイルアップロード時にエラー

ひさびさにUnicodeEncodeErrorなんてものを見た気がする。 UnicodeEncodeError: 'ascii' codec can't encode characters in position 11-19: ordinal not in range(128) 以前も同じようなことがあって、そのときはgunicornを起動している環境の環境変数でLC_…

pythonでファイルをbase64エンコードする処理と、base64をデコードしてファイルに書き込む処理

Python 3.xでCodeEvalのNumber Pairs

CodeEval - Coding Challenges for the World's Best Developers 関連:Go言語でCodeEvalのNumber Pairs - brainstorm 関連:Python 2.xでCodeEvalのNumber Pairs - brainstorm

PycharmからGistに投稿する

PycharmのGithubプラグインにgithub連携の機能がいくつか用意されていて、gistの投稿もできる。 よく使う場合は適当にキーを割り当てるとよいでしょう。

Pycharmのdb コンソールが便利

ローカルのMySQLにSQL投げるのに、Sequel Proをしばらく使っていたけど、最近はPycharmのDatabase ビューを使うようになった。 エディタのキーバインドをカスタマイズできる。というか普段python書くのと同じキーバインドなのでカスタマイズ済み。 Reformat …

Python 3.xでCodeEvalのSUM TO ZERO

CodeEval - Coding Challenges for the World's Best Developers 関連:Python2でCodeEvalのSUM TO ZERO - brainstorm 関連:Go言語でCodeEvalのSUM TO ZERO - brainstorm

Pycharmの検索窓でBasic Completion

これも一度も使ったことがなかった機能。command + Fでいわゆるバッファの検索ができるけど、その検索窓でBasic Completion(comamnd + /)が使えて、 バッファ内で登場する文字列を補完してくれる

PycharmのQuick Definition in lookup lists

Keymap「Mac OS X 10.5+」でoption + space、command + Yに割り当てられている。 コード補完時、またはClass、File、Symbole Navigationのダイアログ表示中に実行すると、選択中のアイテムの実装を表示する。 コード補完時 Navigation Symbol 実行時