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

PythonのMigrationツールSouthのチュートリアルをやった

PythonのMigrationツールSouthのチュートリアルをやったときのメモ書きです http://ae35.bitbucket.org/south-doc-ja/tutorial/index.html 最初のマイグレーション マイグレーションファイル作成 python manage.py schemamigration southtut --initialマイグ…

ChromeでUserAgentの変更

ChromeでUserAgentを変更してテストしようと思って、何か拡張機能を入れるのかなと思って調べたら、デフォルトのデベロッパーツール(⌥⌘I)でできた。 便利

Djangoでファイルのアップロードをテストする

POSTで画像アップロードがあるフォームのテストを書く方法を調べる機会があったのでメモしておく from django.test import TestCase class UploadTest(TestCase): def test_upload(self): with open('test.jpg') as f: res = self.client.post('images/uploa…

IE8でのクリアをしたい

jQueryを使って、type属性がfileのinputの入力値をクリアしたい、というケースがありまして $('input[type=file]').val('') 最初はとくに何も考えず、こんな感じで書いてて、chromeで動かしてる限りは問題なかったんですが、 IE8で動かしてみると入力値がク…

Python/Rubyのzip関数

存在は知っていたけど、あまり使うことがなかった。 が、今日は使いたいと思うケースに遭遇したので、使い方をメモしておく複数のシーケンスに並行して同時にアクセスするforループを書くのに便利。 python # coding=utf-8 seq1 = [1,2,3,4,5] seq2 = ['a','…

Djangoのrequest.POSTからの値取得 - name属性が同じinputが複数ある場合

request.POST(QueryDict)から値を取得する際、チェックボックスのようにname属性が同じinputタグが複数ある場合はgetlistを使う <form method="post"> <input type="checkbox" value="1" name="books"> <input type="checkbox" value="2" name="books"> <input type="checkbox" value="3" name="books"> </form> print request.POST # =>

Python/Ruby/JavaでSHA-1

SHA-1とは 認証やデジタル署名などに使われるハッシュ関数(要約関数)のひとつ。2の64乗ビット以下の原文から160ビットの「ハッシュ値」を生成し、通信経路の両端で比較することで、通信途中で原文が改ざんされていないかを検出することができる。計算方法に…

IntelliJでPlay!Frameworkのプロジェクトを始める手順

ちょっとjava系言語で作ってみたいwebアプリを思いついたので、ときどき目にするPlay!Frameworkをwith Intellijで触ってみようと思いました。 サンプルアプリを始めるまで 環境はMac OSX Lionです 1. Play! Frameworkをインストール手順はこちらに http://ww…

jQueryのeachを逆順に処理

jQueryのセレクタで取得した要素をいったんgetで普通の配列にして、jsのreverseで逆順にした後、jQueryのオブジェクトに戻す <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script> $(function(){ $($("li").get().reverse()).each(function() { console.log($(this).text()); }); }); </script> </head> </html>

jQuery UIのProgressBarの色をvalueによって変える

jQuery UIのProgressBarですが、valueの値によって色を変えたい場合どうするのかなと思って調べたら、そういうオプションってないみたいなのでhttp://jqueryui.com/demos/progressbar/ <script> $(function() { $( "#progressbar" ).progressbar({ value: 37 }); }); </script>…

DjangoでrailsのFlashメッセージと同じことをしたい

Djangoでリダイレクト先にメッセージを表示したくて調べてみました。Railsでいうflashメッセージみたいな機能です。railsでの開発からちょっと離れているのですが、たしかこんな感じで、コントローラに記述すれば、リダイレクト先でhogeを表示できた flash[:…

Enterキーでformをサブミットさせない

jQuery使っていい場合。 サブミットの代わりに別の処理させたい場合はdo_somethingの位置に記述する $("form input").bind("keypress", function(e) { if (e.keyCode == 13) { e.preventDefault(); #do_something(); return false; } });

Djangoで生SQLを実行する

books_book title price フェルマーの最終定理 781 暗号解読(上) 590 暗号解読(下) 630 Python プロフェッショナルプログラミング 2800 エキスパートPythonプログラミング 3600 スタートアップ! 1600 こんなテーブルがあったとして、SQLで価格毎の冊数をカウ…

kay-frameworkでセッションを使う

kay-frameworkでごにょごにょと個人的なアプリ作ってて、何も考えずにセッションを使おうとしたら使えなかったときのメモ kay-frameworkでセッションを使うには設定が必要 手順1settings.pyのINSTALLED_APPSに'kay.sessions'を追加 INSTALLED_APPS = ( 'kay.…

2つのdatetime型の期間内で日毎、月毎に処理をする

2つのdatetime型の期間内の日毎、または月毎にdatetimeを返すジェネレータ start_dateとend_dateの前後関係などは考慮していない # coding=utf-8 from datetime import datetime, timedelta from dateutil.relativedelta import relativedelta def date_span…

jQueryとcheckbox

jQueryでcheckboxのチェック状態を取得しようとして、ミスったときのメモ 間違った例。チェック状態に関わらず"on"が返された $('input[type=checkbox]').val() // => "on" 正しいとおもわれる例。ベストかどうかは知らない。 チェック状態によってtrueかfal…

Youtubeを連続再生するサンプル2

このあいだなんとなく描いてみたYoutubeをjsで連続再生するサンプルですが、埋め込みが不許可の動画が入っているとそこで再生がストップしてしまうので、その場合、処理を飛ばすようにしてみました。 <html> <body> <div id="player"></div> <script> var tag = document.createElement('script'); tag.s</body></html>…

DjangoのQuerySetでSQLの IS NULL を表現する方法

Djangoさわってて、「IS NULL」ってQuerysetでどうやるんだっけ、と思って調べたのでメモしておく 例えば以下のBookモデルがあるとして class City(models.Model): name = models.CharField(max_length=30) class Person(models.Model): hometown = models.F…

jQueryで親要素を探す

子要素を探すのにはfind <p><span>Hello</span>, how are you?</p> <p>Me? I'm <span>good</span>.</p> $("p").find("span").css('color','red'); 親要素を探す場合はclosest <ul> <li><b>Click me!</b></li> <li>You can also <b>Click me!</b></li> </ul> $( document ).bind("click", function( e ) { $( e.target ).closest("li").toggleC…

PythonとRubyで文字列をdateオブジェクトに変換する

python from datetime import datetime s = "2012-06-11 12:20:36" d = datetime.strptime(s, "%Y-%m-%d %H:%M:%S") print d # => 2012-06-11 12:20:36 ruby require 'date' s = "2012-06-11 12:20:36" d = DateTime.strptime(s, "%Y-%m-%d %H:%M:%S") print…

BeutifulSoup4をGAE+Python2.7で使用した時のエラー

bs4の内部でlxmlを使用するので、そのあたりがエラーっぽい。以下のページによるとpython2.7だとlxmlは使えるはずなんだけど。https://developers.google.com/appengine/docs/python/tools/libraries27どうしてもbs4を使いたい理由があるわけじゃないので、B…

PythonスクリプトからTumblrに画像を投稿してみたメモ

使用するライブラリをインストールします pip install python-tumblpyhttps://github.com/michaelhelmick/python-tumblpy 手順1 Tumblrアプリの登録をして、 OAuth Consumer KeyとSecret Keyを取得します。 コールバックURLは適当にlocalhost:8000とかを入れ…

MySQLで実行されたSQLをログ出力する

設定ファイルに1行追加/etc/my.cnf [mysqld] log=/var/log/mysql/mysql.log 出力先はあらかじめ作成しておく。書き込み権限をつけなきゃだめだったかも。 mkdir -p /var/log/mysql/ touch /var/log/mysql/mysql.log あとはmysqlをリスタートすれば、出力され…

Django 1.4で追加されたselect_for_update

Django 1.4からdjangoのQuerySetでselect_for_updateが使えるようになりましたので、簡単に試してみました。 動かしているのは昨日select_relatedの動きを見るのに作ったサンプルアプリです。 sqliteでは試せないのでMySQLを使うようにsettings.pyを変更しま…

Djangoのselect_relatedとN+1問題

webアプリではオブジェクトの一覧を表示する画面がよくでてきます。 一覧系の画面が妙に遅い場合、SQLが大量に発行されている(N+1問題)場合があります。 例えばDjangoで、以下のように関連しているモデルがあるとします。(Django 1.4) books/models.py from…

jquery.cookie.jsでcookieにオブジェクトを保存

javascriptでcookieに値を保存する場合はJQueryとjquery.cookie.jsを使うと便利です。https://github.com/carhartl/jquery-cookie // cookieを保存 $.cookie('the_cookie', 'the_value'); // cookieを取り出し $.cookie('the_cookie'); // 有効期限を指定し…

DjangoのQuerySetが発行するSQLを確認する

django-debug-toolbarを入れるのが簡単ですが、1つのクエリだけちょろっと確認したいなんて場合は、printデバッグでも十分かと。 qs = Model.objects.filter(name='test') print qs.query ちなみにdjango-tool-barを使う場合は、pipなりeasy_installなりで…

youtubeの動画を連続再生するサンプル

ドキュメントにあるGetting Startedのサンプルをちょっと変えて、連続再生をさせてみました。 onStateChangeで再生終了イベントを拾い、リストの次のidを再生させてます。 ドキュメント https://developers.google.com/youtube/iframe_api_reference index.h…

DjangoのviewでアクセスできるHTTPメソッドを限定する

require_GETやrequire_POSTというデコレータが用意されているのでそれが使えます。 from django.views.decorators.http import require_POST, require_GET @require_GET def get_only(request): pass @require_POST def post_only(request): pass もっと柔軟…

DjangoのQuerySetで条件付きのCountをする

先日、以下のモデルとデータで、「Publisherごとにratingが3.0以上のBookの数をカウントしたい」場合の取得方法を調べたのだが、 Bookレコードを1つも持たないPublisherのデータがある場合、レコードが返されないことに気がついた。 class Publisher(models.…