Re: [Zope-dev] Benchmarks: DTML vs. ZPT?
-> Has anyone done any performance comparisons between DTML and ZPT yet? The -> reason I'm asking is that we did some first(completely unscientific) tests -> and had the impression that ZPT were actually quite a bit SLOWER than DTML - -> and I just can't believe that ... I haven't done any tests (or even used ZPT on a production site yet), but I'd be shocked if there was any significant speed difference at all. If there *is* a measurable difference, then somebody really futzed up the ZPT parser (enough to have it classified as a bug). ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
[Zope-dev] Benchmarks: DTML vs. ZPT?
Hello! Has anyone done any performance comparisons between DTML and ZPT yet? The reason I'm asking is that we did some first(completely unscientific) tests and had the impression that ZPT were actually quite a bit SLOWER than DTML - and I just can't believe that ... Joachim ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] Dependency problem with SimpleItem
Romain Slootmaekers wrote: > Yo dudes, > I have problems with dependencies on Zope 2.4.3: > > If I try to import OFS.SimpleItem directly, I get following problem. > (snip) > ImportError: cannot import name Persistent > If you do 'import Zope' first, you don't have this problem. > > But I can't do that because I use my SimpleItem in a process other than > the zope server. and then I get problems with the lock on the Zope > database. I just want to construct a SimpleItem, and store it somewhere > else than the database that the zope server uses It usually works to import ZODB instead. Shane ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
[Zope-dev] Dependency problem with SimpleItem
Yo dudes, I have problems with dependencies on Zope 2.4.3: If I try to import OFS.SimpleItem directly, I get following problem. >>> from OFS import SimpleItem Traceback (most recent call last): File "", line 1, in ? File "D:\ZopeDevel\lib\python\OFS\SimpleItem.py", line 95, in ? import re, sys, Globals, App.Management, Acquisition, App.Undo File "D:\ZopeDevel\lib\python\Globals.py", line 90, in ? import Acquisition, ComputedAttribute, App.PersistentExtra, os File "D:\ZopeDevel\lib\python\App\PersistentExtra.py", line 87, in ? from Persistence import Persistent ImportError: cannot import name Persistent >>> If you do 'import Zope' first, you don't have this problem. But I can't do that because I use my SimpleItem in a process other than the zope server. and then I get problems with the lock on the Zope database. I just want to construct a SimpleItem, and store it somewhere else than the database that the zope server uses Anyone any ideas on this? TIA, Sloot. ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] acquisition, traversal, __roles__(, and zpt?)
Hey Chris. Thanks for the response. From: "Chris McDonough" <[EMAIL PROTECTED]> > Maybe silly questions, but: Do you call InitializeGlobals() on ObjectX's > class (usually at the end of the module where it's defined)? Hmm. No...do you mean Globals.InitializeClass? I do that. > Does ObjectX > actually have a portal_url method defined on it (or inherited)? if you are asking if I have masked the CMF portal_url, the answer is no. I'm mucking about with pdb, and the portal_url I'm working with is definitely the correct CMF object. I'm encountering some very odd behavior while messing around with the CMFSite in the pdb that makes me wonder if the CMF skinned object manager __of__ or __getattr__ is not quite functioning as it should in the context of returning portal tools from the main CMFSite instance. Take a gander at this pdb dialog excerpt and see if it implies something is rotten in the state of Denmark (I'll move this over to the CMF list if this does seem to be something I should pursue as a possible error). Keep an eye out for the '***' attribute errors, and the odd behavior of some tools having a __roles__ property and some tools not... By the way, 'ObjectX' is an 'Alias' object in the below. 'modernsongs' is the name of my CMF instance. (this is running on a Zope 2.5 with CMF 1.2 on a win 2k laptop.) [the end of pdb 'where'...] > C:\Program Files\ZopeSongs\lib\python\Products\PageTemplates\Expressions.py(32 2)restrictedTraverse() -> pdb.set_trace() (Pdb) l 317 elif (has(get(object, 'aq_base', object), name) 318 and get(object, name) == o): 319 container = object 320 if not validate(object, container, name, o): 321 import pdb 322 -> pdb.set_trace() 323 raise Unauthorized, name 324 else: 325 o=get(object, name, M) 326 if o is not M: 327 # Check security. (Pdb) args self = path = [] securityManager = get = has = N = None M = [] TupleType = (Pdb) o (Pdb) o.__roles__ *** AttributeError: __roles__ (Pdb) o.aq_chain [, , , , , ] (Pdb) testObj=o.aq_chain[4] (Pdb) testObj (Pdb) testObj=testObj.modernsongs (Pdb) testObj (Pdb) testObj.__roles__ ('Manager', 'Anonymous') (Pdb) testObj.Members (Pdb) testObj.Members.__roles__ ('Manager', 'Anonymous') (Pdb) testObj.portal_url (Pdb) testObj.portal_url.__roles__ *** AttributeError: __roles__ (Pdb) testObj.portal_catalog.__roles__ ('Manager', 'Anonymous') (Pdb) testObj.portal_membership.__roles__ *** AttributeError: __roles__ (Pdb) testObj.portal_actions.__roles__ *** AttributeError: __roles__ (Pdb) testObj.portal_workflow (Pdb) testObj.portal_workflow.__roles__ ('Manager', 'Anonymous') (Pdb) testObj.portal_actions.__roles__ *** AttributeError: __roles__ I did various other tests as well of course, but again I'm aiming for as much brevity here as possible... ;) Thanks Gary ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] Adding gzip compression to HTTPResponse.py
On 6 Feb 2002 at 10:40, Toby Dickenson wrote: > > I think you also need to check the accept-encoding header, to allow > for clients that do not know how to gunzip. That also means you should set > caching headers to prevent the compressed and uncompressed responses > getting delivered to the wrong clients by a cache. Right, but I couldn't figure out how to see the request headers from response.setBody > > >Also, RESPONSE.setBody really should have access to REQUEST.headers. > >What's the clean way to do that? Just pass the request object to response > >object's init method? > > RESPONSE objects have a REQUEST attribute Are you sure? I know that request objects have a response object. But looking at publish.py doesn't look like it goes the other way. > At the time, this type of auto-compressing proxies looked like they > were just coming of age (http://rproxy.samba.org looked good at the > time too). Unfortunately nothing has changed since. Today I think only > Apache can do this (and has done for ages). Support in squid has stalled > (http://devel.squid-cache.org/projects.html#te). Although I still think > this is the way of the future, I suspect the short-term advantage of > content-encoding the way you implemented it may be an advanatge for longer > than I originally thought. I am using Apache with mod_rewrite. Sure, it'd be great to compression there, but Apache doesn't cache, you need squid for that, right? For non-xmlrpc responses I'd want the stuff cached. I agree, Transfer Encoding is the way to go, but based on remarks at: http://www.iol.ie/~alank/python/httpcomp.html#encoding I stuck with the simpler to understand content-encoding. -- Shouldn't downstream caching proxies ungzip a response if they get a connection from a client that doesn't support gzip? Or will they only do this if its Transfer-Encoded? Brad Clements,[EMAIL PROTECTED] (315)268-1000 http://www.murkworks.com (315)268-9812 Fax netmeeting: ils://ils.murkworks.com AOL-IM: BKClements ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] Adding gzip compression to HTTPResponse.py
On 6 Feb 2002 at 10:02, seb bacon wrote: > I don't have much useful to add - I just wanted to mention that I know > there are people out there who have succesfully used mod_gzip with Zope; > and that I *like* the name dogzip :-) "That's my dog, zip!" Brad Clements,[EMAIL PROTECTED] (315)268-1000 http://www.murkworks.com (315)268-9812 Fax netmeeting: ils://ils.murkworks.com AOL-IM: BKClements ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] Adding gzip compression to HTTPResponse.py
On Tue, 5 Feb 2002 17:34:26 -0500, "Brad Clements" <[EMAIL PROTECTED]> wrote: >I hacked the attached code into HTTPResponse, at the end of setBody. It works for >xml-rpc responses and I suppose any text output, so long as the response object has a >header named "dogzip" set. I think you also need to check the accept-encoding header, to allow for clients that do not know how to gunzip. That also means you should set caching headers to prevent the compressed and uncompressed responses getting delivered to the wrong clients by a cache. >Also, RESPONSE.setBody really should have access to REQUEST.headers. What's >the clean way to do that? Just pass the request object to response object's init >method? RESPONSE objects have a REQUEST attribute >Anyone think this is worthwhile? I looked at this roughly 18 months ago and came to the conclusion that (at the time) adding content-encoding support in Zope was the wrong way to do it. It you are using Zope behind a front-end proxy and you really should be. then it seems like a better idea to deliver the message to that proxy in an uncompressed form, and let it negotiate a transfer-encoding on its own. (Note that is transfer-, not content-encoding) The advantages of this scheme come from the fact that transfer-encoding is a hop-by-hop property. Two downstream caches can negotiate the best compression for that hop. Pushing everything downstream takes load away from zope, and making it a local choice means that the choice is often a better one. At the time, this type of auto-compressing proxies looked like they were just coming of age (http://rproxy.samba.org looked good at the time too). Unfortunately nothing has changed since. Today I think only Apache can do this (and has done for ages). Support in squid has stalled (http://devel.squid-cache.org/projects.html#te). Although I still think this is the way of the future, I suspect the short-term advantage of content-encoding the way you implemented it may be an advanatge for longer than I originally thought. I hope this helps, Toby Dickenson [EMAIL PROTECTED] ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] aq_parent not available in __setattr__
At 06.02.2002 11:19 +1000, Brian Oliver wrote: >How does one receive a callback/create a hook that is called when an >attribute is changed, especially changed via the default property editor >for Zope objects (such that aquisition still works)? I hope I did not misunderstand your problem but I used to successfully create "hooks" with code derived from the following products: http://www.zope.org/Members/tmclaugh/ZClassEvents http://www.zope.org/Members/htrd/BetterCatalogAware HTH, Stefan ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] Adding gzip compression to HTTPResponse.py
I don't have much useful to add - I just wanted to mention that I know there are people out there who have succesfully used mod_gzip with Zope; and that I *like* the name dogzip :-) seb On Tue, 2002-02-05 at 22:34, Brad Clements wrote: > I'm looking for architectural suggestions for adding gzip compression to > HTTPResponse for text types. > > First, I just wanted to compress xml-rpc output, since I'm returing lots of table >data as > XML text (not objects), then loading that text/xml into a DOM for XSLT processing. > > I hacked the attached code into HTTPResponse, at the end of setBody. It works for > xml-rpc responses and I suppose any text output, so long as the response object has >a > header named "dogzip" set. > > I know "dogzip" is a stupid name, but this is just a testing thing. > > Representative compressions: > > compress oldlen 150366 new len 11926 > compress oldlen 204382 new len 14170 > compress oldlen 12746 new len 1364 > > As you can see, very useful compressions for xml-rpc output. > > But for HTML output, what's really needed is I think a special kind of Cache Object. > One that combines HTTP Caching with Ram caching to keep gzip compressed objects > "in memory". > > Some HTML pages are really quite large, and gzip compression can make a noticable > difference. Just the javascript code sizes themselves are .. really big. > > For xml-rpc, obviously every response must be compressed if it's "worth it", and I >can > see that having to set a response property on a per request basis is appropriate for > xml-rpc. > > But for text file objects, Page Templates and stuff.. How does setBody work with Ram > Cache objects? I have some ideas... > > Anyone think this is worthwhile? > > Also, RESPONSE.setBody really should have access to REQUEST.headers. What's > the clean way to do that? Just pass the request object to response object's init > method? > > Here's quick gzip compression hack-in, based on code posted by Neil Schemenauer > > Thanks Neil. > > Added about line 265 in HTTPResponse.py in Zope 2.5 B3 > > try: > dogzip = self.headers['dogzip'] > del self.headers['dogzip'] > if dogzip and split(content_type,'/')[0] == 'text': > body = self.body > startlen = len(body) > import zlib, struct > _gzip_header = ("\037\213" # magic > "\010" # compression method > "\000" # flags > "\000\000\000\000" # time > "\002" > "\377") > co = zlib.compressobj(6,zlib.DEFLATED,-zlib.MAX_WBITS, > zlib.DEF_MEM_LEVEL,0) > chunks = [_gzip_header, co.compress(body), > co.flush(),struct.pack(" z = join(chunks,"") > newlen = len(z) > print "compress oldlen ",startlen,"new len",newlen > if newlen < startlen: > self.body = z > self.setHeader('content-length', newlen) > self.setHeader('content-encoding','gzip') > except: > pass > > > > Brad Clements,[EMAIL PROTECTED] (315)268-1000 > http://www.murkworks.com (315)268-9812 Fax > netmeeting: ils://ils.murkworks.com AOL-IM: BKClements > > > ___ > Zope-Dev maillist - [EMAIL PROTECTED] > http://lists.zope.org/mailman/listinfo/zope-dev > ** No cross posts or HTML encoding! ** > (Related lists - > http://lists.zope.org/mailman/listinfo/zope-announce > http://lists.zope.org/mailman/listinfo/zope ) ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )