Re: [Zope-dev] UML reverse engineering on ZClasses - I need somehelp

2000-11-29 Thread Maik Röder

Hi Philipp !

Philipp Auersperg wrote:
 
 generating zclasses out of an UML model should be possible and I want
 to implement it,
 but it has to be checked if all features of ZClasses have a match in
 UML and vice versa.

I'm not sure how PropertySheets and Views translate to UML.
 
 For example a method in UML can be generated as a DTML
 Method,PythonMethod,PythonScript,ZSQLMethod,PHPMethod,[otherLanguage]
 Method... and lots of other questions.

I would be happy with a generator that supports DTML generation at
first :-)

 this could be defined through stereotypes on the UML side, but that is still a big 
bunch of work.

Right.
 
 Before I go into generating zclasses I want to complete and publish the
 reverse engineering, therefor I want to clear some questions (see my original mail).

Consider me a beta tester,

Regards,

Maik Röder

___
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] UML reverse engineering on ZClasses - I need somehelp

2000-11-29 Thread Joachim Schmitz

On Wed, 29 Nov 2000, Maik Röder wrote:

 Hi Philipp !
 
 Philipp Auersperg wrote:
  
snip
  
  Before I go into generating zclasses I want to complete and publish the
  reverse engineering, therefor I want to clear some questions (see my original 
mail).
 
 Consider me a beta tester,
 

me too :-)


Mit freundlichen Grüßen

Joachim Schmitz  

  
AixtraWare, Ing. Büro für Internetanwendungen
Hüsgenstr. 33a, D-52457 Aldenhoven  
Telefon: +49-2464-8851, FAX: +49-2464-905163


___
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] OracleStorage, and possibly others

2000-11-29 Thread Chris McDonough

If you're at all interested, Kapil, it'd really be great if someone were to
take over InterbaseStorage.  It needs to be changed to use Bob Tierney's
newer multithreaded GVInterbaseDA Python DB-API adapter (Kinterbasdb doesn't
seem to get along with newer versions of Zope, and it's singlethreaded).
Additionally, the pack code is broken.  It would be a big win for folks who
want a versioning, undoing storage backed by a relational opensource
database.

- Original Message -
From: "Ender" [EMAIL PROTECTED]
To: "Lalo Martins" [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
Sent: Tuesday, November 28, 2000 9:01 PM
Subject: Re: [Zope-dev] OracleStorage, and possibly others


 Lalo Martins wrote:
 
  Well, two betas of OracleStorage in one day, then a month and a
  half of silence. What's the status?
 
  What about the other Storage projects? BerkeleyStorage has been
  dead for an year, and I heard pretty nasty words about
  InterbaseStorage. What about someone who wanted to try to port
  OracleStorage to Postgres or some other RDBMS?
 
  Please help stamp out Data.fs! :-)
 
  []s,

 i've been interested in doing a postgres storage, but i haven't been
 able to convince myself that it would be useful in practice at all. any
 suggestions?

 Kapil

 ___
 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 )




Re: [Zope-dev] OracleStorage, and possibly others

2000-11-29 Thread Chris McDonough

 Of course it would, for the same reasons as OracleStorage (eg
 FileStorage/Data.fs is inefficient)

Actually, it's the other way around.  OracleStorage is 30-to-50 times slower
than FileStorage on writes.  Reads are slow too but the slowness is somewhat
negated by caching.



___
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] OracleStorage, and possibly others

2000-11-29 Thread Lalo Martins

On Wed, Nov 29, 2000 at 07:02:50AM -0500, Chris McDonough wrote:
  Of course it would, for the same reasons as OracleStorage (eg
  FileStorage/Data.fs is inefficient)
 
 Actually, it's the other way around.  OracleStorage is 30-to-50 times slower
 than FileStorage on writes.  Reads are slow too but the slowness is somewhat
 negated by caching.

Chris, that's only true for small databases. At about 100M of
Data.fs, OracleStorage starts being faster. It depends on
hardware too. We made some benchmarks on a major Brazilian
portal, and well, it's currently running OracleStorage.

Anyway, I said "inefficient", not "slow".

[]s,
   |alo
   +
--
  Hack and Roll ( http://www.hackandroll.org )
The biggest site for whatever-it-is-that-we-are.


http://zope.gf.com.br/lalo   mailto:[EMAIL PROTECTED]
 pgp key: http://zope.gf.com.br/lalo/pessoal/pgp

Brazil of Darkness (RPG)--- http://zope.gf.com.br/BroDar

___
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] RFC: Python/Zope Interfaces - More ZCatalog ;-)

2000-11-29 Thread Chris Withers

Jim Fulton wrote:

  It is a very good thing to have the specification very near
  to the implementation -- as a permanent guide to the
  implementor.
 
 Firtunately, modern displays allow multiple side-by-side
 windows. ;)

G400, two displays :-)

  It is even better, when big parts of the
  specification becomes part of the executable code
  (as is the case for Eiffel's pre- and post-conditions).

:-((

I'd much prefer smaller lightweight interfaces with as little 'code' in
them as possible...

  Or, to say it differently, it is more essential
  the a system's documentation describes faithfully what is
  rather than what should be (but is not).
 
 I disagree alot. I'd rather have clear documentation of intended
 behavior, rather than have the documentation change based on
 implementation decisions.

Yeah! ZSearch (thanks Michel, I did know about it but didn't express my
point very well ;-) seems like a good example of this to me. The
_interface_ deosn't seem to exist, just several implementations and no
actual documentation. I wonder if the implementations all have the same
functionality? They would if the interface was a contract...

 Please note that these points were argued extensively on the Python
 types-sig a couple of years ago.

What was the outcome?

Michel wrote:
  However, until Catalog has a defined _interface_, I'm not even going to
  think about starting :-S
  
  Anyone know when that's likely to happen?
 
 A couple of years ago. (hehe - sorry, had to). 

Well, sorry to correct you, but there isn't an _interface_, or at least
one that's published. 

 The Z Search Interface
 is well defined (not well documented)

ie: there isn't an interface, there's just similar (I bet they're not
identical) implementations in ZSearch, Catalog, ZSQL and ZNetwork
(whatever that is ;-)

 The 'Z Search Inteface' object is one tool in particular
 that uses it, perhaps you can in imply the interface from that since it
 is not documented.

As I said earlier, I totally agree with Jim that a weak interface like
this isn't a lot of use. What happens next time someone tweaks the
catalog and changes the functionality? Does that mean the interface has
changed? How can all the seperate implementations keep up?
I actually tried to make Squishdot implement the Z Search Interface when
I moved to using the catalog, but it appeared at the time that ZCatalog
didn't actually work properly with Z Search anyway. All of which kindof
illustrates my point :-S

The main thing for me is that the implementation is documented
somewhere, which it isn't. Of course, it'd be much better if it was a
proper interface as is being discussed here. Mindyou, it'd also be great
if python had native interface support. What does Guido think about
that?

cheers,

Chris :-)

___
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] ZPetterns implementation qustions

2000-11-29 Thread Phillip J. Eby

At 06:19 PM 11/29/00 +1100, Itai Tavor wrote:
Hi,

I'm trying to figure out the right way to implement a set of classes 
and roles in ZPatterns. I asked some questions about this a while 
ago, and then went away and did some learning, but I'm stuck again 
and I'm afraid I need to ask more questions.

I have two types of actors - Person (with properties name, phone, 
email, password) and Organization (with properties name, phone, fax, 
business_number).

I also have two participants - Customer and Reseller. Each 
participant can be either a Person or an Organization.

The participants can fill several roles, like OrderingEntities, 
BillableEntities, etc.

Starting from the bottom, I create a Specialist for each role, each 
one with two virtual Racks - customerRack and ResellerRack, so I can 
refer to an OrderingEntity without caring if it's a Reseller or 
Customer.

My problem is in implementing the Participant Specialists and storing 
Participant and Actor classes. Do I create Specialists for the 
Actors? It seems to me that since there is either one Person or one 
Organization per Customer, then the actor object should be created in 
the Customers Specialist. So Customers will have 3 Racks - 
defaultRack (using Customer object), personRack (using Person object) 
and organizationRack (using Organization object). Does this make 
sense?

I think what you want is to have an Actors specialist containing a
personRack and organizationRack.  That 
is, treat "Actor" as a role relative to either Customer or Reseller.

The reason I say, "I think", is because I'm really not clear on why you're
doing certain things here to start with.  See below.


If this is a good way to do it, how do I handle creating and 
accessing the Person and Organization objects? Do I call 
personRack.newItem(newCustomerId) in the script that creates the 
customer? Or do I somehow do it in a SkinScript in defaultRack? And 
how do I get to the Person data? With an attribute provider? Or in 

Here's a red flag: why are you creating a person when you create a
customer?  If a person is something that you only make when you have a
customer, then the actor-participant-transaction pattern isn't really
valid, IMHO.  For Actor-Participant-Transaction to make sense, you have to
have Actors that exist seperate from the Participants.  While it makes
sense to be able to create an Actor at the same time, your model needs to
also include a way to select an *existing* Actor as the Participant,
otherwise you are not gaining anything from the A-P-T pattern and you might
as well just have the Participant.

Here's a pattern for mapping A-P-T interactions onto ZPatterns, however...
If you are doing A-P-T, make sure you use a Specialist for access to the
Actors.  For example, in some applications Ty and I write, "acl_users" is
designated as the Specialist for actors if all actors in the system have to
be able to use the application.  The user interface and implementation for
creating and/or selecting actors to fill a participant role is placed in
the actors' specialist - acl_users in our case, or perhaps a specialist
called "Actors" in yours.  (But I'd recommend you use a domain-specific
name, if possible.)  So you would not be worrying about whether to create a
person or organization or what fields they need or anything else in the
specialist for your "participant" objects.  Indeed, you wouldn't be
worrying about whether a new one was being created, or an old one selected,
if you delegate that aspect of the UI to the actors' Specialist.



Also, if Actors are stored in the Specialists that implement the 
roles they participate as, there is no place to store methods that 
are common to an Actor regardless of role - for example, a method 
that checks if a password is secure enough and called when adding a 
Person object. So I either duplicate these methods in every 
Participant Specialist, or create more Specialists - which seems like 
a waste either way.

Again, this is solved by using a specialist for the role "Actor".


Another problem is how to edit these objects - if I have a form which 
includes fields for a Customer properties and for the properties of 
the Person object linked to that Customer, can I change the Person 
object from the Customer SkinScript? I don't think I can do this:

   WHEN OBJECT CHANGED STORE name, password USING
 
personObject.propertysheets.manage_changeProperties(name=self.name, 
password=self.password)

Right? Because name and password are not properties on the Customer 
DataSkin. So I have to call person.manage_changeProperties(...) in 
the method that changes Customer... it seems to me that I always end 
up doing object connections work in methods and the SkinScript can't 
help with anything :(

You're making this entirely too hard.  The Prime Directive of ZPatterns
design is, "if it looks too complicated in any one place, your design is
probably wrong.  If almost every individual piece looks simple, even though
the whole is 

[Zope-dev] Meta-data clarification and Interface interfaces

2000-11-29 Thread Michel Pelletier


In my proposal:

http://www.zope.org/Wikis/Interfaces/ExtensibleMetaData

I mention interface object meta-data like pre/post conditions.  This
spurned a lot of interesting conversation, and I wanted to clarify some
bits that I picked up from the thread.

The proposal is not in any way trying to define what types of meta-data
are interesting, this is, rightly, application dependent (for example,
Zope would find security assertions interesting, other applications may
not).  The proposal is just proposing a mechanism for associating any
kind of meta-data with an interface object.

Dont get me wrong, the information on pre and post conditions was really
interesting, especially Tim's description of Eiffel's particularly
strong methedology that made me glad I don't work for the government.

In the interest of clarifying what these interface objects are, I have
created an Interface interface description:

http://www.zope.org/Wikis/Interfaces/InterfaceInterface

This describes interfaces, attributes and method objects and how they
are used.  I can forsee creating interface objects for these interface
objects.

The ones marked **Proposed** are the ones I am most interested in
getting feedback on.

Thanks!

-Michel

___
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] OracleStorage, and possibly others

2000-11-29 Thread Lalo Martins

On Wed, Nov 29, 2000 at 10:13:15AM -0500, Chris McDonough wrote:
 It sounds like you've done more comprehensive speed testing than we have.
 Can you share some numbers?

Unfortunately no, I can't. We made measurements during a
consulting job I did for another company, and it was made by
them, not me, *plus* I wasn't smart enough to save a copy of
the numbers :-/

Anyway, the biggest problem they had was stability, their ZODB
grows and shrinks insickening speeds, and Data.fs would break
for some reasons I don't remember anymore, and OracleFS solved
that. I'll try to convince them to write a report to the list.

 - Original Message -
 From: "Lalo Martins" [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Sent: Wednesday, November 29, 2000 8:42 AM
 Subject: Re: [Zope-dev] OracleStorage, and possibly others
 
 
  On Wed, Nov 29, 2000 at 07:02:50AM -0500, Chris McDonough wrote:
Of course it would, for the same reasons as OracleStorage (eg
FileStorage/Data.fs is inefficient)
  
   Actually, it's the other way around.  OracleStorage is 30-to-50 times
 slower
   than FileStorage on writes.  Reads are slow too but the slowness is
 somewhat
   negated by caching.
 
  Chris, that's only true for small databases. At about 100M of
  Data.fs, OracleStorage starts being faster. It depends on
  hardware too. We made some benchmarks on a major Brazilian
  portal, and well, it's currently running OracleStorage.
 
  Anyway, I said "inefficient", not "slow".


[]s,
   |alo
   +
--
  Hack and Roll ( http://www.hackandroll.org )
The biggest site for whatever-it-is-that-we-are.


http://zope.gf.com.br/lalo   mailto:[EMAIL PROTECTED]
 pgp key: http://zope.gf.com.br/lalo/pessoal/pgp

Brazil of Darkness (RPG)--- http://zope.gf.com.br/BroDar

___
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] BerkeleyStorage (Re: [Zope-dev] OracleStorage, and possibly others)

2000-11-29 Thread Lalo Martins

On Wed, Nov 29, 2000 at 04:28:26PM +, Ty Sarna wrote:
 Lalo Martins wrote:
  
  What about the other Storage projects? BerkeleyStorage has been
  dead for an year.
 
 It's not dead, it's just pining for the fjords!
 
 Seriously, AFAIK it still works, and it's mainly just stalled waiting
 for some interest.  It could stand to be updated to BerkeleyDB 3, but
 that was blocked on having an updated Python BerkeleyDB module for a
 while.  Now there is an updated version, so it should be easy to update
 the storage. 
 
 The main thing BerkeleyStorage is lacking is interest -- I don't need it
 currently for the purpose for which it was developed, and nobody else seems
 to need it much either.  It looked for a while like it might get a boost
 from the Sessions project, but that's stalled for the moment as well. 

I think a BerkeleyDB3-based Storage would be a very cool option
if versioning was optional instead of missing. (Then again,
this is almost getting to my dreamed XDeltaStorage...)

[]s,
   |alo
   +
--
  Hack and Roll ( http://www.hackandroll.org )
The biggest site for whatever-it-is-that-we-are.


http://zope.gf.com.br/lalo   mailto:[EMAIL PROTECTED]
 pgp key: http://zope.gf.com.br/lalo/pessoal/pgp

Brazil of Darkness (RPG)--- http://zope.gf.com.br/BroDar

___
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] BerkeleyStorage (was: Re: OracleStorage, and possibly others)

2000-11-29 Thread Chris McDonough

I actually need to get a BerkeleyStorage against BSDDB3 going for a customer
fairly soon.  Jim has done a lot of work on it, and it's looking like I'll
probably end up finishing it.  Robin Dunn has a Python extension module
against the bsddb3 libraries that we're using.  It may actually be released
as several storages (undoing and nonundoing).



___
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] Zope.org done broke

2000-11-29 Thread Michel Pelletier


Oops.  Sorry for the spam.  Nothing to see here folks, move along.

-Michel

___
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] BerkeleyStorage (was: Re: OracleStorage, and possibly others)

2000-11-29 Thread Ty Sarna

In article 01ba01c05a42$edabbb10$1f48a4d8@kurtz,
Chris McDonough [EMAIL PROTECTED] wrote:
 I actually need to get a BerkeleyStorage against BSDDB3 going for a customer
 fairly soon.  Jim has done a lot of work on it, and it's looking like I'll
 probably end up finishing it.  Robin Dunn has a Python extension module

Ah, cool!

 against the bsddb3 libraries that we're using.  It may actually be released
 as several storages (undoing and nonundoing).

Once upon a time, I had planned to do (and had some code towards):

no-versions, no-undo
versions, undo
versions, undo only within versions

with a "table" structure such that you could migrate from one to
another.

The last option is possibly useful for sites with objects that change a
lot (so you don't want undo), but where you want to use versions for
code development (which requires undo...  note the lack of a "versions,
no-undo" combo.  That one won't work usefully, because you can trivially
get stuck.  You get something locked in the version, and there's no way
to recover short of committing the entire version. "no-versions, undo" is
possible, but doesn't seem to really buy anything)

___
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] RFC: Python/Zope Interfaces

2000-11-29 Thread Dieter Maurer

Ken Manheimer writes:
  The separation need not mean that the specification is hard to access from
  the implementations, either for documentation or for runtime enforcement.  
Good!

But, objection will come later.

  However, it *does* run contrary to the literate programming notion of
  weaving together the description of software with the code.  When you have
  multiple implementations that satisfy an interface, having a copy of the
  interface spec with each implementation can lead to the drift described
  above.  If you *want* discrete interface definitions with integrity across
  implementations, you have to avoid this multiple, potentially conflicting
  copies of the specification.

What I really want is that the implementation fulfills its contract!

If you change the specification but do not adapt some implementations,
then it is essential, that the implementation somehow tells,
which specification it implements.
One way to achieve this, it to have the specification integrated
(with some tool to extract it easily as e.g. in Eiffel).
Of cause, there are other ways to achieve this -- such as
efficient linking to the specification and careful versioning
of the specification documents.

If you do change the implementation, then the specification
can probably be changed at the same time.

I should stress, that I do not necessary call for a physical
copy of the specification/interface to be present
in the implementation. An unambigous and correct reference,
preferably interpretable by documentation generators,
should do as well.

  I think you're asking for something internally contradictory, and not
  seeing that.
If I do, indeed, I do not see it.

Jim gave the example:

  If someone builds him a house, he wants a contract that
  lays out the obligations. The house builder should
  fulfill this contract.

  Good.

When I buy a house, I expect from the vendor a description,
what features the house *REALLY HAS* and not what
features the vendor would like the house to have.
Based on this description, I will decided whether or not
I will buy.

That's probably the difference between the specification
(created before the implementation starts and used
as a guideline for it) and the documentation (that describes
the concrete instance). Ideally, both are identical.
In practice, there are often discrepancies.



Dieter

___
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] ZPatterns: Still Properties that are objects

2000-11-29 Thread Roch'e Compaan

I use external methods to set properties that are objects for my Dataskins.
I have a Customer Dataskin with a property Address.  Address is another
Dataskin.  In my editInstance for Customer I change the properties of
Address directly:

dtml-call "propertysheets.basic.manage_changeProperties(REQUEST=REQUEST)"
dtml-call
"Address.propertysheets.basic.manage_changeProperties(REQUEST=REQUEST)"

but this results into a keyError afters a couple of edits ie. it works
SOMETIMES but not all the time.

Roché


___
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 )