2006-01-01から1年間の記事一覧

Linux デーモンとして Zope を動かす

まず rc スクリプト。最初の部分は chkconfig 用。優先度は 1 ~ 99 #!python # chkconfig: 345 99 1 # description: Zope 3 service # processname: runzope import sys import subprocess from os import path class Service(object): """Linux service bin…

LAMP | Zope

LAMP で開発すると Apache のわけわからん conf と PHP のわけわからん ini と MySQL のわけわからん ini の面倒まで見なきゃいけないんだよね。 Zope はそういったバッドノウハウは少ないけど、何かあったら Zope のソース見て調べなきゃいけない。まあその…

些末なこと

プライマリカレンダーにしかイベントを追加できないということはありません。 POST,PUSH した XML の内容がおかしいときは、HTTP 400 が返り、body にエラーコードが載っています。 POST,PUSH するときは Content-Length を付加した方がいいようです。 Auth …

利用手順

Google のアカウントと Google Calendar サービスを利用できるようにしておきます。 Google にログインします https://www.google.com/accounts/ClientLogin?Email=登録したメールアドレス&Passwd=パスワード&source=アプリケーション名&service=clというリ…

Google Calendar を使う

Google Calendar を GData を用いて操作するノウハウです。 詳しくは http://code.google.com/apis/gdata や http://groups.google.com/group/google-calendar-help-dataapi を参照して下さい。

sitecustomize.py

Python の実行環境は起動時に、ユーザが環境を設定するためのスクリプトとして lib/site-packages/sitecustomize.py を実行する。 Zope 固有の設定を書くのは何となくイヤなのでパスの通ったディレクトリから sitecustomize.py を探して実行するようにする。…

Zope

Zope 3 というか、ZODB 上でシンボリックリンクの真似事はできるのだろうか。 Zope で使うオブジェクトはかなり自由に定義できるが、zope.app.container.interfaces.IContained を実装していないと獲得 (traverse) の仕組みが全く働かない (実際にはインター…

Zope

TAL が便利だから何でもかんでも TAL でやってる。 特にHTMLレンダラみたいなウザくてタルい作業は TAL しか使ってない気味。ヤバげ。 そんな中で勢いで書いた、インターフェースを文字列で指定してインターフェースが実装されてればそのままのオブジェクト…

Zope3

zope.interface にある型と zope.app.form.interfaces.IWidget な HTML ウィジェット(他のシステムにも適用できるようにこんな形にしてるんだろうが)を使ってゴニョゴニョしているがやたら面倒くさい まず __builtins__ と標準ライブラリに十分に揃っている…

Windows の Explorer のようなソートを行うための比較関数

def intelligentcompare(s1, s2, ignorecase = False): """\ This function automatically detects numerical string for intelligent comparison. >>> cmp('2. a title of 2nd chapter', '10. a title of 10th chapter') 1 >>> intelligentcompare('2. a ti…

数値を通貨としてフォーマットされた文字列にする

途中にとんでもないコードがあるけど気にすることはない import locale, operator def currencyformat(currency, i18n = False, conv = {}): localeconv = locale.localeconv() localeconv.update(conv) conv = localeconv cs = ((not i18n) and (conv['curr…

Zope3.2

zope.interface はアダプタくらいまでしかなくて、factory class とか multi adapter とかは別の場所にある。なんだよこの構造は。 ファクトリの列挙は from zope.app import component factories = list(component.getFactoriesFor(Interface))ファクトリの…

結論

一つだけ設定できる。 設定場所はレジストリの次に示す箇所である。 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}「窓の手」を用いるのが最も簡便な手段だろう。 {2559a1f?-21d7-11d4-bdaf-00c04f60b9f0} の ? の部分…

2559a1f6-21d7-11d4-bdaf-00c04f60b9f0

Windows XP でスタートメニューの「右側」、マイコンピュータやファイル名を指定して実行などと同列にリンクを追加できないかと調べてみた。 当初は自由にリンクを設定できると考えていたが、OEM メーカーのヘルプ機能へのリンクを設定するために用意されて…

NTFS5’s Junction

NTFS5 のジャンクションはドライブ、パーティション、パスで構成されている、みたい。 inode でリンクしてる訳じゃないから、リンク元のパスが変わるとジャンクションは使用できなくなる。

Python

Python のリスト関係関数 list tuple dict keys values iterkeys itervalues iteritems filter map reduce reversed sorted string join operator add etc ... reduce をいつも忘れる。fold に割り当てていいだろうか

Vine -> Debian Sarge

Vine を入れてたサーバーが再起動しなくなったと思ったら fsck する毎にガシガシ inode が零れてく。HDD がクラッシュ寸前の模様なので無理せずにデータをコピーしつつ不貞寝。 しかしシステムに関するファイルが壊れないのは何の呪いなのか。みごとにログと…

setup.py とか install.py とか

Windows の再セットアップをしたら Python モジュールのインストールでコケました。setup.py とか install.py とかで $ setup.py install damn! $ python setup.py install解決しました。sys.argv に関連するコードですね、きっと。

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] の方が速かった