Re: [Zope-dev] UML reverse engineering on ZClasses - I need somehelp
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
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
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
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
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 ;-)
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
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
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
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)
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)
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
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)
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
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
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 )