2013-06-01から1ヶ月間の記事一覧

underscore.jsのdebounce 2

最近button[type=submit]のダブルクリックに関連して調べてたので、underscore.jsのdebounceが使えるかどうか試してみる背景は以下の通りdjangoのFormWizardでstepを「戻る」場合だけ、wizard_goto_stepというパラメータを飛ばしたく、djangoのサンプルテン…

underscore.jsのdebounce

js

調べてたのメモしておく underscore.jsのdebounceを使うと、関数の実行を遅らせることができる以下の例だと、a.some_classをクリックした500ミリ秒後に関数が実行される。 連続してクリックすると、最後にクリックした時間の500ミリ秒後に1度だけ実行される…

Djangoでlorem ipsumを生成する

django.contrib.webdesignにlorem ipsumを生成するテンプレートタグが用意されていることを知った。このパッケージには今のところ他に機能はないようだ。settings.py INSTALLED_APPS += ( 'django.contrib.webdesign',) html {% load webdesign %} <h2>lorem 3 p</2>…

formの2重送信防止とbuttonタグのvalue

formの2重送信防止のため、input[type=submit]やbutton[type=submit]をdisabled=disabledにするような処理をいれると、buttonタグをクリックした場合でもbuttonタグのvalueは飛ばなくなります。submitされる前にdisabledにされるからですね、たぶん。 $("but…

Pycharmでrun manage.py tasksにsouthのタスクが表示されない

pycharmではdjangoプロジェクト編集中に「Run manage.py Tasks」で、manage.pyを叩けます。 ところが、INSTALLED_APPSに入ってるはずのsouthの「schemamigration」とか「migrate」が出てきません。おかしい。settingは以下のような感じで、Settings->Django …

Djangoプロジェクトをpycharmで開くときの手順

Pycharm上で新しくdjangoプロジェクトを作ることもできますが、コマンドラインで作成したり、すでに開始しているプロジェクトのリポジトリをチェックアウトしてpycharmで作業するときにやってる手順がいくつかあるのでメモしておく プロジェクトのディレクト…

DeprecationWarning: django.conf.urls.defaults is deprecated; use django.conf.urls instead

こんなwarningがログにでてたんですが、django.conf.urls.defaultsを使ってる箇所が見当たらない。 DeprecationWarning: django.conf.urls.defaults is deprecated; use django.conf.urls insteadと思ったらdjango-debug-toolbarが使っていた。debug_toolbar…

BaseException.message has been deprecated as of Python 2.6

ログにwarningが出てた。 BaseException.message has been deprecated as of Python 2.6 該当の箇所をみつけて再現させてみると、Exceptionをinheritしている独自のエラークラスのインスタンスに対して、messageを参照するとこのwarningが出るらしい。 メッ…

IE7以下でbuttonタグのvalueが送信されない不具合の対処方法

以下のformでbuttonをクリックすると、"submit_button"という名前で"button_value"が送信されるはずなんですが、IE7以下だと"button_text"が送信されます。 <form method="POST"> <input type="text" name="text_value"/> <button type="submit" name="submit_button" value="button_value">button_text</button> </form> この例だとbuttonタグを使う意味があまり無いですが、例えばdjangoのformwiza…

情報セキュリティスペシャリスト試験

春の情報セキュリティスペシャリスト試験、今日の正午に合格発表でした。 合格してました。午後1が結構ダメな印象で午後2は楽勝だと思ってたんですが、フタを開けてみると結果は逆でした。 試験対策にしたことをメモしておく 1日にやる量を決め、ちょっとず…

Google Readerのスター付きアイテムをPinboardへインポートする

こちらのエントリを見て、普段使ってるPinboardへのインポートの方法を調べてみました。Google Readerのスター付きアイテムをはてなブックマークへインポートする - memo log Pinboardにimport機能が用意されているので、プログラムを書く必要は無かったです…

pythonで長い文字列を分割して書く方法

普通に+で連結 # coding=utf-8 s = "abc" +\ "def" +\ "ghi" +\ "あいうえお" assert s == "abcdefghiあいうえお" %記法 s = "%s%s%s%s" % ("abc", "def", "ghi", "あいうえお") assert s == "abcdefghiあいうえお" format s = "{0}{1}{2}{3}".format("abc",…

Pycharmのpep8 InspectionでE501がチェックされない

Pycharmにはpep8チェックをやってくれる機能があり、違反しているコードに警告を出すことができる。 設定はsettings->Inspectionsで行う。 こんな感じで警告がでる。 ところが、pep8だと1行は79文字までとなっているにも関わらず、以下のコードで警告がでな…

PASSWORD_HASHERSのベンチマーク

BCryptPasswordHasher、PBKDF2PasswordHasher、PBKDF2SHA1PasswordHasherが遅い。その他は桁違いに速いが、後方互換性のために実装が用意されているだけで、セキュリティ上使うべきでないとコメントされている。 ## user sys total real PBKDF2PasswordHashe…

PBKDF2

Djangoではユーザーのパスワードをハッシュでdbに保存します。django1.3では単純にsalt+sha1でした。 def set_password(self, raw_password): if raw_password is None: self.set_unusable_password() else: import random algo = 'sha1' salt = get_hexdige…

Djangoでテストを速くするためにいろいろやってみた

4分程度かかってたテスト実行を速くするためにいろいろやってみたときのメモ まず対応前 $ python manage.py test app --settings=settings.test Creating test database for alias 'default'... .........................................................…

TypeError: execv() arg 2 must contain only strings

django内からshellを起動してるところでこのようなエラーがでました。 TypeError: execv() arg 2 must contain only strings このような適当なサンプルを実行すると同じエラーは再現する。sample1.py # coding=utf-8 import subprocess args = ["python", "s…

sshでUNPROTECTED PRIVATE KEY FILE

秘密鍵を指定してsshしようとして以下のwarningがでて接続できないという自体に遭遇しました。 $ ssh user@host -i /pass/to/key @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@…

gitのメモ

しばらくhg使う仕事してて、またgitのコマンドがわからなくなった。 いつも忘れるので、今日必要になったコマンドをメモしておく。 # ローカルにブランチ作成 git checkout -b hoge # ローカルブランチをリモートにpush git push origin hoge # リモートブラ…

M2CryptoでMessage Digest

# coding=utf-8 from binascii import hexlify import M2Crypto from M2Crypto.EVP import MessageDigest import hashlib # ファイルのsha1ハッシュ値の計算(hashlib) sha1 = hashlib.sha1() sha1.update(open('file.txt', 'r').read()) print sha1.hexdiges…

pythonとopensslでDSA

opensslDSAパラメータの作成 openssl dsaparam -out dsa_param.pem 1024 -----BEGIN DSA PARAMETERS----- MIIBHgKBgQC/8MJpdDasZUHnleniFb3VZuP0UlnBX+fMqtaVPVryTejlztaTrYbY l/6iuEBKCQhgVgFX93VnuB33PvkbfE+x/1iRFMjqq17a2Mhpq1RudnCOs4IJWhB5 4yZLoCUMHV…

証明書関連で語句を調べてたのでメモ

証明書とは 暗号技術において、公開鍵証明書(こうかいかぎしょうめいしょ)とは、公開鍵と、その所有者の同定情報(その他に有効期間、発行者、署名アルゴリズムなどの情報も含む)を結びつける証明書である。デジタル証明書とも呼ばれる。 公開鍵は単にバ…

opensslとpycryptoで3DES

pythonとopensslで3DES暗号化処理のメモ opensslでコマンドラインから処理 #3DESで暗号化 # plain.txtファイルの内容を3DESのCBCモードで暗号化し、出力した暗号文をcipher.binに格納する openssl enc -des3 -e -salt -in plain.txt -out cipher.bin -pass p…

pycryptoでRSAの操作

# coding=utf-8 from Crypto.PublicKey import RSA from Crypto import Random random_func = Random.new().read rsa = RSA.generate(1024, random_func) # 秘密鍵作成 private_pem = rsa.exportKey(format='PEM', passphrase='hogehoge') with open('privat…

ocamlで基数変換

前にpythonで書いてみたことがあったので、練習のためocamlでも書いてみた。 関連 : pythonで10進数からn進数に基数変換 - brainstorm プログラミングの基礎 (Computer Science Library)作者: 浅井健一出版社/メーカー: サイエンス社発売日: 2007/03メディア…

OcamlでUnique Elements

CodeEvalにUnique Elementsという問題があって、前にpythonで書いたので、練習のためocamlでも書いてみた。 ソート済みのintのリストから重複を除いて返せというもの。関連 : PythonでCodeEvalのUnique Elements - brainstorm

opensslでpkcs#12を扱ったときのメモ

opensslでpkcs#12を扱ったときのメモpkcs#12はユーザー識別情報を安全に転送するための形式。 転送する情報は秘密鍵(pkey)、証明書(x509)、や証明書チェーン、パスワードなど。 # pkcs#12が持っているデータをpem形式に変換する openssl pkcs12 -in sample.p…

2分探索木

「プログラミングの基礎」をちょっとずつ読んでて2分探索木の走査がでてきたんで、pythonでも書いてみました。ocamlだとこう type tree_t = Empty | Leaf of int | Node of tree_t * int * tree_t (* 目的 : dataが2分探索木treeに含まれているかを調べる *)…

ocamlで文字列を1文字ずつのリストにする

昨日、pythonとrubyについて書いたので、ocamlでどう書くか調べてみた。 こんな感じか (* 文字列を1文字ずつ分割してstring listにして返す*) (* split_string : string -> string list *) let split_string s = Str.split (Str.regexp "") s;; (* test *) l…

python、rubyで文字列を1文字ずつのリストにする

間違ってpythonでstr.split(//)とか書いてしまった。split(//)でできるのはrubyだった。ruby str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" str.split(//) => ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m"…