n+1問題?

http://dev.ariel-networks.com/articles/workshop/rails-activerecord/ 1:Nの関係のtableが持つオブジェクトを列挙しようとしたとき、ナイーブに書くと1+N回のsqlが実行されてしまうと言う問題らしい。 eager loadingなどで解決するらしい。 model.search_q…

velruse使ってみる. ini.fileを2つに分けると良いと思った

velruseは,oauth系の認証を一手に引き受けてくれるライブラリ対応しているprovider Facebook OpenID Google Yahoo Twitter Windows Live 現時点でpypiに上がっているバージョンはsqlite3の対応に難が合った 直接githubから開発版をインストールすると良い。 …

pyramidのいろいろな機能を使ったsimpleなアプリ

色々な機能を使ったシンプルなアプリの例 内容 リクエストと同時にくじを引きその結果でページを遷移 (くじをフォームのバリデーションととらえても) (もしくは、何かrequest時の状態、サーバの状態、権限による分岐など) 使っている機能 view_config(add_vi…

コマンドの実行結果を保存

実行したコマンドとその実行結果をログとして吐き出して後で参照可能にするのにscriptというコマンドがある。 利用方法は以下のような感じ $ script <logfile名> ## .. ## .. 何かコマンドを実行 $ exit # ここでログが出力される scriptを実行して立ち上がった対話環境</logfile名>…

backbone.jsでsyncを呼んだ時にアクセスされるURLの変更

backbone.jsで作成したモデル(Backbone.Model.extendで作成したオブジェクト)はsave(),destroy(),fetch(),create()などのメソッドを持っている。これらは、呼ばれると裏側でsync()メソッドを呼び出している。このsync()がサーバ側に問い合わせて、永続化が行…

makoを使ったテンプレートで、クライアントサイドのテンプレートを使う方法

textを使う。 e.g. ## ここはmakoのテンプレート <%text> <script type="text/html" id="foo_template"> <div class="foo"><%= name %> </div> </script> </%text>

setup.pyのdistで作られたパッケージに含まれないファイルを含めるようにする。(MANIFEST.in)

気づかないでハマったのでメモ。 pythonでパッケージを作成するとき setup.pyを書き、以下のコマンドを実行するとpypiに転送可能なように整えてパッケージングしてくれる。 (デフォルトでカレントディレクトリのdist以下にwindowsでzip,unixでtar.gz形式のフ…

fanstaticで依存関係のあるresourceの定義の仕方

http://www.fanstatic.org/en/0.11.2/library.html b.jsとc.jsはa.jsに依存している時 from fanstatic import Library, Resource foo = Library('foo', 'foo') bar = Library('bar', 'bar') a = Resource(foo, 'a.js') b = Resource(bar, 'b.js', depends=[a…

emacsでJSON Reformat

例えばこういうJSONがあったとして {"profile_use_background_image":true,"protected":false,"profile_banner_url":"https:\/\/si0.twimg.com\/brand_banners\/twitter\/1323368512\/live","default_profile":false,"lang":"en","profile_text_color":"3333…

query_propertyとhybrid_property(hybrid_method)が便利。

機能について query_property query_propertyは、モデル*1クラスが検索クエリをあたかもpropertyであるかのように持たせることができる機能。以下が利用例。query_propertyを利用しない場合の検索は以下のようになる。 # e.g. User.first_nameで絞り込み検索…

pyramidでtweenを使って機能を追加してみる

tweenという機能を使って拡張することができる。自分で新しいtweenを定義して追加するには以下の通りの作業をすれば良い。1. tweenのfactoryを定義する。 2. configure.add_tweenに定義したfactoryを渡す。(この時文字列である必要があるe.g. "foo.bar.baz")…

sqlalchemyの練習

メモ。 declarativeの使い方 tableの作成 sessionの使い方 検索の仕方 insertの方法

dropboxをubuntuで使う

ここでダウンロード https://www.dropbox.com/install?os=lnx $ sudo dpkg -i nautilus-dropbox_0.7.1_i386.deb $ dropbox start -i # install $ dropbox start themeがないというwarningが出るので解消 $ sudo apt-get install gtk2-engines-pixbuf

pyramid_peeweeでmysqlが動くことを確かめてみる。

準備の方が長いかもしれない。 環境はubuntu(10.10) 前提。 python,peewee,pyramid_peeweeが入っている。 mysqlのinstallなど mysqlもインストールされていないので、mysqlのインストールから作業する。 $ sudo aptitude install mysql-server libmysqlclien…

パッケージインストールメモ

setup.py setup.py 仮install/uninstall python setup.py develop #install python setup.py develop --uninstall #uninstall install/uninstall python setup.py #install python setup.py install --record files.txt | xargs rm -r #uninstall

pyramid_peeweeというのを作り始めてる。

まだ、version0.0だけれど。こんな感じでDBが触れる。 まだ、uiは暫定的(と言っても、モデル定義のほとんどはpeeweeなんだけれど)

pyramidでテンプレートを使う(light weight)

1ファイルのアプリケーションでテンプレートを使う方法を説明します。1. (デフォルトでインストールされる)makoを使う方法 2. jinja2を使う方法の2つの方法を説明します。はじめはテンプレートを使わないhello anyoneと表示されるだけのアプリからスタートし…

pyramidでhello world(not light weight)

pyramidは、flaskのように、1ファイルで完結する1ファイルアプリケーションを書くことができます。 また、規模の大きな開発のために、複数のモジュールに切り分けて記述することも可能です。今回は、pyramidアプリケーションでhello worldを表示するところま…

pyramidでhello world (light weight)

pyramidは、flaskのように、1ファイルで完結する1ファイルアプリケーションを書くことができます。 また、規模の大きな開発のために、複数のモジュールに切り分けて記述することも可能です。今回は1ファイルでの、pyramidアプリケーションでhello worldを表…

sphinxcontrib-blockdiagで”ImportError: The _imagingft C module is not installed"

no-site-packagesのvirturalenv環境でsphinxのドキュメントを書こうとしていた. sphinxcontrib-blockdiagをpipでインストールしてmake htmlをしたところエラーになった。原因は以下。 File "/home/podhmo/.virtualenvs/altair/local/lib/python2.7/site-pack…

例の問題

効率とか気にしない感じで。 (use srfi-1) (use srfi-42) (define (candidates xs n) (if (>= 1 n) (map list xs) (append-map (lambda (x) (map (cut cons x <>) (candidates xs (- n 1)))) xs))) (define (solve n) (list-ec (: e (candidates '("A" "C" "…

Ubuntu11.10のvirtualboxのインスタンスとクリップボードを共有する

以前は、メニュー上部のダイアログからGuest Addtionsを有効にしてから再起動で クリップボードの共有ができた。それができなかったので、調べた。解決方法をメモ。 環境 host mac guest ubuntu11.10 行った作業 Guest Addtionsを有効にする。 guestOS側で以…

ubuntu使っている時に知っていると便利なコマンド

今までインストールしてきたパッケージなどを一覧で表示 $ dpkg --get-selections # 2vcard install # adduser install # adobe-flash-properties-gtk install # adobe-flashplugin install # alex install # ... 今使っているコマンドが所属しているパッケ…

alembic使ってみた

alembic使ってみた。sqlite以外のDBで使っていない。内容はまとまっていない。 alembic sqlalchemyのmigrationツール。sqlalchemy-migrateの代替として利用可能。 doc: http://readthedocs.org/docs/alembic/en/latest/index.html install $ pip install ale…

fizzbuzz

お正月なのでてきとーに。 (use srfi-42) (use srfi-1) (define-class <fb> () ((default :init-keyword :default) (word :init-keyword :word))) (define (make-fb i) (make <fb> :default i :word "")) (define-method add ((self <fb>) (i <integer>)) (cond [(= (slot-ref sel</integer></fb></fb></fb>…

.emacsを整理するための環境作成

たぶんもっと良いワークフローがあると思う。 経緯 最近、.emacsをメンテしてなかったので陳腐化が激しい。所々直したいところもある。 新しく書き直した方が綺麗になるだろうと思うけれど、書き直しが終わるか分からない。なので以下の内容が可能な環境を作…

pipのメモ

メモしたいこと version指定の方法 アップグレードのこと ダウロードしたソースのキャッシュ version指定の方法 "=="を使うとversionが指定できる。 e.g. pyramid 何も指定しないでインストールしようとすると1.3.a2がインストールされる $ pip search pyram…

差分リストを作ることを試してみた。

全部実装していないけど。ベンチマークに必要な分だけ実装。 差分リストについて 差分リストはリストのようなもの。appendがO(1)でできるのがlistとの違い データ構造 cons snoc append listから変換 listに変換 リスト O(1) O(N) O(N) - - 差分リスト O(1) …

all()とany()は意外と使える子かもしれない。

組み込み関数の中の使えない子 pythonの組み込み関数の中に以下の3つがあります。 reduce() all() any() これらの3つを組み込み関数のわりに使いどころが少ない。使えない子たちだと認識してました。例えばall()、any()は、各シーケンス*1内の真偽値について…

lambda式についてリストについて

lispはリストというとすぐにリストを思い浮かべる。リストというのはこういう構造。consを重ねて創り出して、carとcdrで分解する。 ;; cons (list 1 2 3) ; => (1 2 3) (cons 1 (cons 2 (cons 3 '()))) ; => (1 2 3) (use srfi-1) (cons* 1 2 (cons 3 '())) …