2006-04-01から1ヶ月間の記事一覧

Zope3 TAL

RFC とかを一切無視して適当な URL エスケープ関数を書くと def quote(v): return reduce(lambda i, j: i+j, ['%%%2.2x' % (ord(i), ) for i in v], '')こうなる。これはどうでもいいとして、Zope の TAL から href とかに URL を出力したいときは python:mo…

Python クラスメソッドを判別する

class Foo: @classmethod def clsMethod(self): pass def insMethod(self): passというコード。Foo.clsMethod がクラスメソッドになる。 type で判別 >>> type(Foo.clsMethod) <type 'instancemethod'> >>> type(Foo.insMethod) <type 'instancemethod'>無理。 isinstance, types で判別 >>> import types ></type></type>…

Zope3 ノード操作イベント

Zope3 にはコンテンツの追加や移動などノード操作に関する特殊なイベントを通知する機能があります。 from zope.app.container.interfaces import IObjectAddedEvent, IObjectMovedEvent, IObjectRemovedEvent, IContainerModifiedEvent from zope.app.event…

テンプレート内から別のテンプレートを読み込む

いわゆる include みたいなのがなかったので。 context/request/view/template などは継承されるが、tal:define/tal:repeat で設定した変数は継承されない。 context/request ゃ tal:define で設定した変数は使用できる。 ファイル名には絶対パスも相対パス…

テンプレート内からファイルを挿入する

JavaScript のファイルなどを TAL で処理せずに挿入する際に使用する。 ファイル名には絶対パスも相対パスも使用可能。 implements.py from zope.tales.expressions import StringExpr from zope.app.exception.interfaces import UserError from os import …

Property Attribute Annotation どう違うの? Web2.0とかいちいち追う価値もないし。

prototype

prototypeはやりすぎると俺言語に変貌するので注意。

名前空間

名前空間は連想配列でプロパティとして扱える。

連想配列

{'name1':1, 'name2':2}

リスト

new Array() new Array(1,2,3) new Array(size) var list = new Array(1,2,3); alert(list); >1,2,3 list.push(4); alert(list); >1,2,3,4 list.push(5); alert(list); >1,2,3,4,5 alert(list.pop()); >5 alert(list); >1,2,3,4 for (var i in list){ // 動…

JavaScript(ECMAScript)

正直覚えてられん

Zope3

persistent.list.PersistentList でスライスしようとするとうまくいかないからyield した for item in list するよりも for i in xrange(): yield[i] の方が速かった