python
pyramidは、template lookup errorが起き得る状態の設定でもアプリケーションが動作する。 もちろん、動的言語的な性質を考えるとruntime errorというのが正しいという気もしないではないけれど。デプロイ前後にtemplate lookup errorが発生することが分かる…
想定読者 pyramidの機能を色々試してみたい人 特に、設定ファイル(development.ini)を要求するコマンドの作成などをしてみたい人 発端 pyramidの機能を試す際に、1ファイルでアプリケーションが作れるのは便利なのだけれど。 pyramidで提供されているpから始…
はじめに templer使おうとしたけれどコマンド入力するのが面倒になったのでbashの補完を作成してみる。 step0 about complete completeという関数を利用して補完候補を設定するらしい。 bash: complete: -h: invalid option complete: usage: complete [-abc…
ctypesって? pythonのFFI用のモジュールらしい。 pythonの枠からはみ出た関数をpythonから呼び出すための接触面といった感じのもの.ドキュメントを見て、動くコードを書いてみた。 http://docs.python.org/library/ctypes.html やってみたのは以下のこと fl…
まるであれな感じの汚いこーど。 どう考えても途中でしくじった感がある。
悩まなくても良いようにメモ。作りたいパッケージ(パッケージ名: foo) ファイル構成(置き場所) . ├── README.txt ├── docs ├── foo │ ├── __init__.py │ ├── locale │ └── tests ├── setup.cfg ├── setup.py └── tox.ini シンプルなもの . ├── README.txt ├…
e.g. colander setup.py ##... snip testing_extras = ['nose', 'coverage'] docs_extras = ['Sphinx'] setup(name='colander', version='0.9.8', ## ... snip install_requires = requires, test_suite="colander", extras_require = { 'testing':testing_e…
直接元のgistを見ないで再現してみた。再現できていたので理解は合ってた。良かった。 code ## https://en.wikipedia.org/wiki/Autovivification from collections import defaultdict def tree(): return defaultdict(tree) def tree_as_dict(t): if hasatt…
install $ easy_install tinyschema demo from tinyschema.schema import Schema from tinyschema import fields class Person(object): def __init__(self, name=None, age=None): self.name = name self.age = age class PersonSchema(Schema): name = fie…
solr 全文検索エンジンのサービスを提供するサーバ(動作させるにはjetty,tomcatなどhttpserverが必要)jettyで動かしてみることにした。 agenda install jettyの設定変更 schema.xmlを変更 pythonからsolrの機能を利用 install # $ sudo apt-get install ope…
pythonのsetup.pyを使って以下のように実行可能なコマンドを作ってみる $ python setup.py <command name> <args> ...(作業した内容のgist) setup.py pythonのパッケージはsetup.pyを持っている。このsetup.pyは提供されるパッケージに関するコマンドを持っている。例えば、以下</args></command>…
pyramidでmixinを使ってコードを書いていた。これは適切なコードの書き方では無かったそう。 もう少し具体的に言うと、component architectureの上では、mixinを使わない方が望ましいらしい。 代わりにadapter*1という機能を使うそう。 adapterのことをちょ…
__table__にsqlalchemy.orm.joinした結果を代入すると、複数のテーブルをjoinした結果をmappingしたモデルが作れる。 (idのconflictを避けるためにorm.column_propertyを使うことが多い) import sqlahelper import sqlalchemy as sa import sqlalchemy.orm a…
更新時刻を設定したい場合などデフォルトで提供されている、onupdateオプションを使う。 import sqlahelper import sqlalchemy as sa import sqlalchemy.orm as orm from datetime import datetime Base = sqlahelper.get_base() DBSession = sqlahelper.get…
ひまつぶし def maxof(xs, fn): ma = fn(xs[0]) for x in xs: tmp = fn(x) if ma < tmp: ma = tmp return tmp def radix_sort(xs, M): bs = [[] for i in range(M)] N = maxof(xs, len) checks = [0 for _ in range(M)] for x in xs: bs[int(x[-1])].append(…
sqlalchemy は、concrete table inheritanceで定義したモデルがあるとする。 それらのモデルを継承元のクラスで検索した場合に、検索結果のqueryは適切な子クラスにマッピングしたオブジェクトのリストとなって返ってくるところ。これがうれしい。 e.g. 例は…
よくmixinで拡張したりなんかする。 e.g. django likeなmodel定義にするmixin import sqlalchemy as sa import sqlalchemy.orm as orm from sqlalchemy.ext.declarative import declared_attr from sqlalchemy.ext.declarative import declarative_base Base…
メモ。 motivatation 最近、fanstaticを使っている時にデコレータを利用したいと思った。 (fanstaticはWSGIアプリのResponseの中を覗いてhead要素の合間に定義しておいたresource(js,cssなど)を読み込むタグを追加してくれるライブラリ((他にも機能はある)))…
やっていることは、個々の要素から情報を集めて一つにまとめて出力すること。初めからこのような方針を思いつきたかった。 返す値の計算は、各要素に全部移譲する 複数の値を返したくなるので、辞書的なオブジェクトを設定として引き回して、各要素に更新し…
akoのinheritsはoverrideなので上書き。継承元のブロックと同名の名前付きブロックを呼んだとき、継承元のブロックの中身はレンダリングされない。例。 from mako.template import Template from mako.lookup import TemplateLookup with open("base.mako", …
textを使う。 e.g. ## ここはmakoのテンプレート <%text> <script type="text/html" id="foo_template"> <div class="foo"><%= name %> </div> </script> </%text>
気づかないでハマったのでメモ。 pythonでパッケージを作成するとき setup.pyを書き、以下のコマンドを実行するとpypiに転送可能なように整えてパッケージングしてくれる。 (デフォルトでカレントディレクトリのdist以下にwindowsでzip,unixでtar.gz形式のフ…
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…
例えばこういう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 query_propertyは、モデル*1クラスが検索クエリをあたかもpropertyであるかのように持たせることができる機能。以下が利用例。query_propertyを利用しない場合の検索は以下のようになる。 # e.g. User.first_nameで絞り込み検索…
tweenという機能を使って拡張することができる。自分で新しいtweenを定義して追加するには以下の通りの作業をすれば良い。1. tweenのfactoryを定義する。 2. configure.add_tweenに定義したfactoryを渡す。(この時文字列である必要があるe.g. "foo.bar.baz")…
メモ。 declarativeの使い方 tableの作成 sessionの使い方 検索の仕方 insertの方法
準備の方が長いかもしれない。 環境は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