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

Djangoのパスワードリセットでtokenの一致確認に使われるconstant_time_compare

こんな関数なんですが、なんで文字列の==でなく、わざわざこんなことしてるんでしょうか? djangoの1.3の頃は普通に比較してたと思うんですが。 django.utils.crypto.py def constant_time_compare(val1, val2): """ Returns True if the two strings are eq…

djangoのパスワードリセット機能でURLに付与されるtokenについて調べたメモ

djangoのパスワードリセット機能は、以下のようなURLを含むメールを送って、アクセスしたユーザーが新しいパスワードを入力するものです。 http://localhost:8000/auth/password_reset_confirm/2-3hw-4c194a11e6bda0c44f5c/ パスの最後のランダムな部分はそ…

エラトステネスのふるい

「プログラミングの基礎」で課題にエラトステネスのふるいが出てきたんで、pythonで同じように書いてみたプログラミングの基礎 (Computer Science Library)作者: 浅井健一出版社/メーカー: サイエンス社発売日: 2007/03メディア: 単行本購入: 17人 クリック:…

ocamlのトレースでパラメータがと表示されるケース

昨日のような簡単な再帰関数だとトレース結果もわかりやすいので、もうちょっと複雑なクイックソートのトレースを見てみました。 let rec quick_sort lst = let take n lst p = List.filter (fun item -> p item n) lst in let take_less n lst = take n lst…

traceディレクティブで関数呼び出しをトレースする

再帰がわかりにくい場合#traceで呼び出しをトレースできる、ということを知りました。 let rec sum lst = match lst with [] -> 0 | first :: rest -> first + sum rest let test1 = sum [1;2;3;4;5] = 15 #trace 関数名;;でトレースを開始して、#untrace 関…

flymake-tuaregを入れてみた

tuaregのついでにflymake-tuaregも入れてみました。設定これだけ init.el (require 'flymake-tuareg) (add-hook 'tuareg-mode-hook 'flymake-tuareg-load) 実行しなくてもエラーになってるのがわかるので便利。 以下はlstが空のときに0を返すべきところ[]を…

tuaregで日本語を表示する

昨日の続きそういえば、mlファイルで日本語を入力してtuareg-eval-buffer(C-c C-b)すると、文字がちゃんと表示されません。シェル側でset-buffer-process-coding-systemでeuc-jpを指定すると直ります。

Emacsでocamlを書く設定

プログラミングの基礎を読んでるんで、写経したり、課題を解くのに、emacsでocamlを書く最低限の設定をしようと思いました。プログラミングの基礎 [ 浅井健一 ]ジャンル: 本・雑誌・コミック > PC・システム開発 > その他ショップ: 楽天ブックス価格: 2,484…

macのショートカットキーで↖(斜め上矢印)

pycharmで「Jump to Navigation Bar」のショートカットが「⌥↖」で、どうやって入力すんのかなと調べました。↖はHomeキーの記号で、Homeキーがない場合は「fn + ←」で入力できました。 Jump to Navigation Barはこんな感じでファイルを選択できます。

DjangoのFormのcleanメソッドの呼び出し順

DjangoのFormでis_validが呼ばれたときの処理を読んでたのでメモ まず、データが渡されたFormのインスタンスでis_validが呼ばれた場合、内部でfull_cleanがよばれる。 該当の箇所 django/forms/forms.py def _get_errors(self): "Returns an ErrorDict for t…

logutilsのDollarMessageとBraceMessage

pythonで文字列のformattingというと% formattingを普段使ってたんですが、logutilsのコード読んでて、formatを使う方法(2.6~)とTemplateを使う方法(2.4~)があるのを知りました。formatを使う方法、logutilsでいうとBraceMessageのほうは、Python3からのバッ…

pythonとrubyでHMAC-SHA256

import hmac import hashlib secret_key = "secret_key" message = 'message' print hmac.new(secret_key, message, hashlib.sha256).hexdigest() # => ebb8d2ee5dcad6e9d6fc0b606811f9f03036bdd419a364d1a1ce1afa1bea61fd require 'openssl' secret_key = '…

7-minute-workoutをサポートしてくれる7Min

少し前にNYTimesで、7分のワークアウトで効率よく最大のフィットネス効果が得られるというメニューが紹介されて、ちょっと話題になりました。 The Scientific 7-Minute Workout - NYTimes.com その後ライフハッカーでも紹介されました。 1日たったの7分間! …

logutilsのTestHandlerでログ出力をテストする

logutilsにTestHandlerというクラスが用意されてるので、「view関数で出力されたログをテストする」方法を試してみました。vinay.sajip / logutils ― Bitbucket 適当にview関数を用意。処理中にwarningログを出力する。 views.py import logging from django…

Southのschemamigrationでエラー

schemamigrationで以下のエラーになりました。 ! Cannot freeze field 'apps.person.shirt_size' ! (this field has class books.models.ShirtSizeField) ! South cannot introspect some fields; this is probably because they are custom ! fields. If th…

DjangoでRadioSelectのラジオボタンをバラバラに表示する

以下のようなFormがあって、ラジオボタンを表示するときは from django.forms import RadioSelect from django import forms class RadioSelectSampleForm(forms.Form): beatles = forms.ChoiceField(choices=(('ringo', 'Ringo'), ('george', 'George'), ('…

python で 挿入ソート

最近プログラミングの基礎をちょっとずつ読んでます。プログラミングの基礎 (Computer Science Library)作者: 浅井健一出版社/メーカー: サイエンス社発売日: 2007/03メディア: 単行本購入: 17人 クリック: 409回この商品を含むブログ (126件) を見るocamlを…

django.utils.dates.MONTHS

django.utils.dates.MONTHSってのがあるのを知った MONTHS = { 1:_('January'), 2:_('February'), 3:_('March'), 4:_('April'), 5:_('May'), 6:_('June'), 7:_('July'), 8:_('August'), 9:_('September'), 10:_('October'), 11:_('November'), 12:_('Decembe…

セレクタで属性名の部分一致

忘れてて調べるはめになったのでメモ // 前方一致 $("[attribute^=value]") // 後方一致 $("[attribute$=value]") // 部分一致 $("[attribute*=value]")

CreateViewでモデルのユーザー属性にログインユーザーを設定する

formにhiddenでユーザーidを設定しておくのを見たことがあるんですが、それだとhiddenの値を改ざんされる場合があります。djangoのドキュメントにちゃんとやり方が書いてあって、form_validで行うのが良いようです。 # views.py from django.views.generic.e…

django-model-utilsをいろいろ試してみる その5 PassThroughManager

PassThroughManagerというものを試してみます。まず普通のcustom managerを持つmodelを作成します。 from django.db import models import pytz from datetime import datetime class PostManager(models.Manager): def by_author(self, user): return self.…

django-model-utilsをいろいろ試してみる その4 ModelTracker

django-model-utilsのModelTrackerを試してみる 基本的にモデルが変更されたときにに変更前の値を保持する機能を提供するものらしいまずModelTrackerのインスタンスをクラスフィールドに持つモデルを用意 class Entry(models.Model): title = models.CharFie…

django-model-utilsをいろいろ試してみる その3 InheritanceManager

django-model-utilsのInheritanceManagerを試してみます。InheritanceってことはModelの継承に関係ある機能ですね。サンプルを書いてみます。 class Place(models.Model): name = models.CharField(max_length=100) location = models.CharField(max_length=…

django-model-utilsをいろいろ試してみる その2 TimeFramedModel

昨日の続きでdjango-model-utilsを試してみる。 今日はTimeFramedModel。開始時刻と終了時刻をフィールドにもつようなモデルの場合に使える。 from model_utils.models import TimeFramedModel class Event(TimeFramedModel): name = models.CharField(max_l…

django-model-utilsをいろいろ試してみる その1 StatusModel

django-model-utilsというライブラリを知りました。その名の通りdjangoのモデルを作成するのにいろいろ便利な機能を持ってるようです。ちょっとずつ試してみようと思います。まずはStatusModel。 モデルがなんらかのステータスを持つのはとてもよくあること…

djangoで辞書やリストに署名する

django.core.signingモジュールの関数を利用して、辞書やリストなどのデータに署名することができる from django.core import signing value = signing.dumps({'name': 'brainstorm'}) print value # => 'eyJuYW1lIjoiYnJhaW5zdG9ybSJ9:1UZ9GI:0qqInzB49WPUP…

Bootstrapのbuildでエラー

make bootstrap-jsで以下のエラーになったので調べてました。 $ make bootstrap-js mkdir -p bootstrap/js cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-…

pythonでStrategyパターン

template methodパターンが継承を使ってオブジェクトのふるまいに多様性をもたらすのに対して、Strategyパターンは移譲を使います。 # coding=utf-8 class Report(object): def __init__(self, formatter, title, *text): self.formatter = formatter self.t…

pythonでtemplate methodパターン

デザインパターンの中でもわかりやすいTemplate methodパターン。 Rubyによるデザインパターンで紹介されていたコードをpythonで書いてみた。AbstractClassであるReportの各メソッドの実装はpassにしてあるけど、必ず実装してもらうためにはNotImplementedEr…

DjangoがLocationヘッダを組み立てる辺りの処理を追いかけたときのメモ

djangoのlogoutで、nextパラメータで渡したパスが意図しないURLに変更されてLocationとして返されたので、その辺りの処理を追いかけていたときのメモです。 BaseHandlerのget_responseメソッドの最後の方にMiddlewareを適用する箇所があり、その下でapply_re…