RE: [Zope-dev] Boost.Python
[...James Treleaven] but are there any complications with respect to my using Boost.Python to bind any Zope Python scripts that I write to C++ code? [Michel] You've _really_ lost me, maybe someone else knows what you mean. I don't know what you mean by 'bind' (do you mean writing python extension modules in C?), or what Boost.Python is, or what you are referring to as 'Zope Python scripts' (do you mean the python modules that come with Zope?). [Albert] I don't know the answers to James' questions but here's the links for Boost Python: http://www.boost.org/libs/python/doc/index.html and comparison with Zope Extension Classes and other approaches: http://www.boost.org/libs/python/doc/comparisons.html Looks very interesting. Check it out. ___ 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: Randomness (RE: [Zope-dev] CoreSessionTracking 0.8)
It's obvious. This is just Zope's way of telling you not live on hamburgers and coke. -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Bjorn Stabell Sent: Thursday, May 24, 2001 12:33 AM To: Chris McDonough; Howard Zhang Cc: [EMAIL PROTECTED] Subject: Randomness (RE: [Zope-dev] CoreSessionTracking 0.8) Allright, let me try again. I wish I had a small piece of code to give you so you can reproduce it, but right now you'd have to get our entire CMF-based website. The bug basically manifests itself in that there are two versions of the variable we put in the session (a shopping cart dict). When I browse through the site (not even updating the shopping cart) it'll show one version for some links (1-40) before it switches to show the other, and so on. It looks like the website has two shopping carts that it switches back and forth between. You can see the shopping cart on every page in the website (it's embedded into the template). We were using frames, but I tried it several times without frames now and the bug remains. I even noticed that other variables disappeared randomly as well, e.g., USER_PREF_LANGUAGES which is set by the Localizer, resulting in a key error (I've probably seen 300 pages views, and then suddenly one going back to another page gives a key error?). I'm very curious what could possibly be causing such problems. I thought there might be something wrong in the shared memory between threads, as I can't see anything else changing but the threads (is there a way to display which thread is doing the publishing?). I've seen similar randomness displayed in other situations where I've been reloading pages that would sometimes (same interval, about every 1-40 times) show one character set, and other times another. I think nobody likes to see that kind of randomness. It gives me a very bad stomach feeling. I definately think it's something deeper than a CoreSessionTracking problem. Bye, -- Bjorn Stabell [EMAIL PROTECTED] -Original Message- From: Chris McDonough [mailto:[EMAIL PROTECTED]] Sent: Wednesday, May 23, 2001 20:34 To: Howard Zhang Cc: [EMAIL PROTECTED]; [EMAIL PROTECTED]; Exoweb Subject: Re: [Zope-dev] CoreSessionTracking 0.8 I remember this problem, but I haven't been able to reproduce it. But maybe it's because I'm not understanding the steps to reproduce it. The sentence user adds coke to shopping cart and click link to add coke again before request finished is hard to understand. Can you explain? Are you using frames? Howard Zhang wrote: Hi The problem about CoreSessionTracking we describe before we can repeat again now. The step is: ( 1 ) User adds Burger to shopping cart ( 2 ) User adds coke to shopping cart and click link to add coke again before request finished ( 3 ) The Burger is disappear in shopping cart and just one coke ( not two ) ( 4 ) Repeat the step 2,Burger is back Anything you could tell me would be helpful. Regards, howard ___ 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 ) winmail.dat
[Zope-dev] RE: [Zope] xmlrpc slowness
[Shilad] The new release is up on sourceforge. It should be compatible with the Zope client/server it was tested against. It is at: http://www.sourceforge.net/projects/py-xmlrpc Let me know how it goes. I'm curious to see what kind of speed increase you see. My guess is that the implementation at the other xmlrpc end will be the bottle-neck pretty soon. [Albert] Thanks *very* much for this!!! 1000 xml-rpc calls per second with commodity hardware sounds pretty attractive! I've had to just pass it on to a friend to checkout at the moment, but will try to get back to you soon with speed results, as I'm sure the other 3 CCs will. I've added the Zope list back to the addresses as there may be others there interested in trying it out now that Phil Harris has confirmed the new version interworks correctly with the Zope implementation. Also added [Zope-dev] list as Zope developers should be more interested and Matt Hamilton as issues below may be closely related to his posting [Zope-dev] Asyncore in an external method. http://lists.zope.org/pipermail/zope-dev/2001-May/011274.html In a previous email CC you said: I'm really excited that zope people may be using this. Let me know if you have any questions/concerns/requests. As you've also done binary releases for Windows and the various unixen that Zope does releases for, it should be suitable for actually integrating into Zope rather than just as an add-on Product or it's present form as just a separate python process talking to Zope rather than implementing Zope's xml-rpc itself. So here goes with some questions/concerns/requests... In the README you mention: Some time I should document everything better, especially the nonblocking aspects of the server and client. and * Non-Blocking IO: This becomes important when you have critical applications (especially servers) that CANNOT be held up because a client is trickling a request in or is reading a response at 1 byte per second. * Event based: This goes hand in hand with non-blocking IO. It lets you use an event based model for your client/server application, where the main body is basically the select loop on the file descriptors you are interested in. The work is done by registering callbacks for different events you received on file descriptors. This can be very nice. There is some work to be done here, but all the hooks are in place. See TO DO for a list of the features that have yet to be incorporated. (BTW there is currently no TO DO file.) These aspects are a very big advantage. For Zope as a client, I suspect that the trickling issue may also be very important since it could be blocking an expensive Zope thread while waiting for a response from a slow remote server to pass on some information in response to relayed request (ie http/xmlrpc relay mode or even straight xmlrpc/xmlrpc proxy mode). As you also mentioned, the implementation at the other xmlrpc end will be the bottle-neck pretty soon. Sorry I'm not very familiar with how to do this stuff myself, so I have 3 questions which maybe you could answer when you get around to doing those docs (or even better by also providing implementations in the next release ;-) or perhaps someone else on CC list knows the answers or is planning to do something about it? 1) I'm not sure if I've got it right, but my understanding is that despite being based on a Medusa Reactor design that can handle many web hits with a single thread, Zope also maintains a small pool of threads to allow for (brief) blocking on calls to the file system for ZODB and for (also brief) external connections. I suspect these threads are expensive because they each end up keeping separate copies of cached web pages etc (to avoid slow python thread switching). So simply increasing the number of such threads is not recommended for improving Zope performance - performance relies on the non-blocking async Medusa Reactor design of Zserver, not on the threading, which just seems to be a sort of extra workaround. If that is correct, then a few concurrent external calls to slow external xmlrpc servers (eg for credit card authorization taking 30 seconds or more) could easily tie up a lot of Zope resources. The non-blocking py-xmlrpc client could presumably surrender it's turn in the main event loop for it's thread until a response is received and then be woken up by the response, thus improving things greatly. Unfortunately I have no idea how to do this - whether it would just happen automatically or there are built in facilities for doing that sort of thing easily in Zope already, or whether it is difficult to do. I am just guessing that there would be some special tricks needed to wake up a channel when a response comes back (eg using the stuff in Zserver/medusa/select_trigger.py and Zserver/PubCore/. which I don't fully understand, but looks relevant). Maybe I have misunderstood, but it looks to me like existing use of xmlrpc clients *from* Zope to external
RE: [Zope-dev] OR mapping proposal
[Phillip] http://dev.zope.org/Wikis/DevSite/Proposals/ORMappingDB Comments encouraged! [Albert] I've added some there. Jim highlighted a project Risk there: Updates to RDBMS data outside of the OR mapping could cause cached data to be inconsistent. This strikes me as rather fundamental. Unless the goals include actual *sharing* of RDBMS data with other applications completely independent of Zope I doubt that the most important benefits of an OR mapping could be achieved. Essentially SQL RDBM Systems are *about* sharing data among applications. When customers want SQL that is often what they actually want. An SQL RDBMS can be overkill for other purposes which may be just as well achieved by an embedded ODBMS like ZODB, an SQL file system like MySQL or an LDAP directory. Alternative goals for *exporting* ZODB data to an RDBMS continuously, *importing* data from an RDBMS at regular intervals and *embedding* an RDBMS database for exclusive use by Zope with no write access for other applications could all be met more easily. There is certainly no major difficulty on the RDBMS side, giving a Zope instance control over a set of tables for it's own use and providing append only and read only access to export and import tables or views for regular or continuous replication. But the combination of all 3 (which could be delivered incrementally in any order) is *not* the same as *sharing*. As I understand it, Zope's approach to cacheing inherently prevents support for the Isolation part of ACID. Conflicting writes to the same object are detected by version stamps but the objects used by a transaction in one thread may have been inconsistently changed by transactions in other threads. This will not be detected unless those objects used are also changed. Similar problems are inherent in LDAP directories, which are also designed for relatively static data with a low rate of updates. This is acceptable for many applications. Scope can and should be limited to sharing that works with optimistic checkout and does not require pessimistic locking. It is common for an Enterprise Object to be read from an RDBMS with it's stamp noted, modified independently by an application and then updated iff the stamp was not changed. Only the simultaneous checking of the stamp and update of the object needs to be wrapped within a short ACID RDBMS transaction. For example ACS 4 maintains a timestamp on every object which can be used for this purpose. This is similar to the ZODB approach. Note however that: 1) The application must be prepared to deal with an exception that cannot just be handled as a lower layer ConflictError by retrying. 2) The object will often be a composite - eg an order header *and* all it's line items, and fulfilments. Entanglement with other objects such as products (for pricing) is avoided by specific application programming (which may also be done in stored procedures within the DBMS). 3) This does not support *any* cacheing of objects outside of a transaction. The RDBMS itself provides internal cacheing (often of the entire database for efficient queries with web applications). This leads to the ACS paradigm of the web server is the database client, which is actually rather similar to Zope's Zserver is the ZODB client. Both ACS and Zope involve complex issues for database client side cacheing Both 1 and 2 completely preclude any possibility of the same level of transparency as for ZODB, while in no way hindering use of pythonic syntax. For most Zope web object publishing purposes cached objects just need to be kept reasonably up to date rather than synchronized with RDBMS transactions. The only viable mechanism I can think of for dealing with item 3 in a Zope context would involve the RDBMS maintaining a Changes table which it appends to whenever any object that has a special column for ZeoItem is changed without also changing the value of ZeoItem. (ACS does not do this and I'm not sure what it does do). Zeo would monitor that table, either by regular polling or continuously (eg with PostgreSQL as a LISTENer responding to NOTIFY commands issued automatically whenever the triggers append to the Changes table). For each change Zeo would notify it's Zope instances to invalidate their caches for that item. I'm not familiar enough with Zope cacheing internals to know whether some other approach is feasible. Requiring such changes in a shared database is certainly undesirable. Q1. Could somebody please post specific URLs for relevant documentation of Zope cacheing? Q2. I have a related question about the Zope design overall. As far as I can make out Zope actually keeps separate copies of persistent objects in RAM for each thread, and relies on the fact that there is a tree structure corresponding to the URL paths that ensures objects from which attributes will be acquired tend to already be in RAM when the acquisition occurs. I assume this is trading off the horrendous inefficiency of multiple
[Zope-dev] (LONG) RE: [SmartObjects] Wrap-up of the discussion going on on zope-dev?
[Joachim Werner] As most of you might have recognized, there is a very active thread (actually two interwoven ones) about RO-mapping etc. going on on zope-dev. I'd be very happy if someone could wrap up the stuff from there on the SmartObjects list. ;-) [Albert] Thanks for the pointer. As I read them all through at once, after seeing your pointer, I made notes before joining the discussion, which may help, though far from a wrap-up. * SUMMARY * There seem to be 6 separate topics: 1) Nature of SmartObjects, ZPatterns and Transwarp frameworks and relation to Zope/ZODB framework. 2) Improvements to ZCatalog search efficiency 3) Query syntax - see Zwiki: http://dev.zope.org/Wikis/DevSite/Proposals/UnionAndIntersectionOperations 4) Schema transparency (an oxymoron?) 5) Storage of ZODB objects in separate DBMS tables per class - Object Mapping. 6) Requirements for Object Relational Mapping. * DETAILED NOTES * Here's a list of all the items I found in the May archives with the term ORMapping in the subject line, from thread Experiments in ORMapping and interwoven thread oodb philosophics was [above] until I subscribed. Will comment later on subsequent messages rather than making notes. If there are any other subject headings missed, or other postings (including earlier months), please let me know. Highlights before links attempt to be objective but are limited by space, by my specific interests in the topic and by my lack of thorough understanding of Zope internals and consequent previous non-participation in [zope-dev] with consequent lack of appreciation of where various posters are coming from. Quotes following links are verbatim extracts (not necessarily in same order or in context). Must read means important message with no or inadequate highlights or extracts given here. I have omitted numerous affirmations that ZODB meets most current Zope requirements (perhaps with improvements to ZCatalog) in view of the fact that nobody appeared to be arguing otherwise. BTW the date order used in list archives could be better in numeric order as that might more closely reflect which messages are likely to have been seen before replying. I have re-arranged. Starting from 10 May 2001: Shane Hathaway (DC) - start of discussion - must read http://lists.zope.org/pipermail/zope-dev/2001-May/011101.html includes link http://www.zope.org/Members/hathawsh/ormapping.tar.gz overview in file: sketch Tino Wildenhain - asks about ZPatterns, ZClasses, doesn't want purely relational application server. http://lists.zope.org/pipermail/zope-dev/2001-May/011102.html SH - answers TW, says not hard to implement by mapping classes to a table. http://lists.zope.org/pipermail/zope-dev/2001-May/011103.html TW - answers SH, prefers improved OODB because doesn't like mapping classes to schema. http://lists.zope.org/pipermail/zope-dev/2001-May/011105.html SH - answers TW, enhanced ZODB storage (RDBMS and BerkelyDBM) is in some ways the best OODB. http://lists.zope.org/pipermail/zope-dev/2001-May/011107.html The other motivations for an RDBMS are (1) people have existing schemas and want Zope to access the same data as their existing apps, and they want it to be transparent, and (2) tables with millions of entries are easily stored in Zope but the perception is that the catalog isn't as fast as a database index. No one has done any tests AFAIK. [...] That's one reason ZODB is so nice. You can write an application without writing a formal schema. Casey Duncan (Kaivo) - suggests Matisse or Objectivity but limited by not supporting ZODB versions. BerkelyDBM best soon. Mentions slow XML storage startup. http://lists.zope.org/pipermail/zope-dev/2001-May/011108.html JW - already 2 OR mapping projects, SmartObjects and TransWarp, no duplication because Phillip from Transwarp participating in SmartObjects list. http://lists.zope.org/pipermail/zope-dev/2001-May/011109.html TW - answers CD, XML just another pickle format. http://lists.zope.org/pipermail/zope-dev/2001-May/00.html SH - answers JW. SmartObjects, ZPatterns and Transwarp require new database API instead of maintaining transparency like ZODB. Projects should look at replacing parts of ZODB instead of adding complexity. http://lists.zope.org/pipermail/zope-dev/2001-May/01.html ZODB has pieces that can be split apart and replaced as needed, such as caching, persistence, transactions, the pickle jar, the multi-threaded connection factory, and the storage layer. I'm hoping we can achieve OR mapping by only replacing the pickle jar, i.e. Connection.py. Cees de Groot - answers SH. Confirms advantage of not having to write formal schema, migrating from PostgreSQL to ZODB for that. File Storage faster than Oracle and is basic transaction log so nothing could be more reliable. http://lists.zope.org/pipermail/zope-dev/2001-May/011124.html Are people using ZODB for non-Zope data? I'd be very interested to discuss things like emulating extents, patterns for indexing,
RE: oodb philosophics ;) was: Re: [Zope-dev] Experiments withORMapping
[Karl Anderson] Casey Duncan [EMAIL PROTECTED] writes: I am not arguing necessarily for SQL as a query language for the ZODB. Although it is an accepted standard, but not a perfect one by any means especially for OODBs. Its appeal lies mainly in the high level of community familiarity and the plethora of SQL software to borrow from. Does anyone have an opinion on the possible usefulness of XPath, XQuery, and other XML standards for this? Someone suggested (on the zope-xml wiki) that it would be nice to be able to drop in a cataloger that supported a presumably standard and presumably well-known XML query syntax, and which would work throughout the database because Zope objects would support DOM. This is all speculation, and I personally don't know much right now about XML database interfaces and how finished or well-regarded they are. [Albert] An excellent introduction to this topic is: Putting XML in context with hierarchical, relational, and object-oriented models by David Mertz. ftp://www6.software.ibm.com/software/developer/library/x-matters8.pdf Author is a python developer with lots of interesting XML stuff. See also his xml_matters 1 and 2 for xml_object and xml_pickle with much nicer pythonic syntax instead of using DOM directly. Article is also *essential* background for the distinction between Object Mapping and Object Relational Mapping which needs to be understood by anyone participating in this discussion. An example of a python ODBMS with some partial support for OQL is 4ODS from 4 Suite, which uses a very natural pythonic syntax for objects stored in and queried from PostgreSQL: Following is from 4Suite-docs-0.11/4Suite-0.11/html/4ODS-userguide.html available via: http://4suite.org/download.html#4Suite_Documentation How to use the system (a very basic walk through) First create a ODL file that represents what you want to store in test.odl module simple { class person { attribute string name; attribute double weight; relationship Person spouse inverse Person ::spouse_of; relationship Person spouse_of inverse Person ::spouse; relationship listPerson children inverse Person ::child_of; relationship Person child_of inverse Person ::children; }; class employee (extends person) { attribute string id; }; }; Now create a new database and initialize #OdlParse -ifp test test.odl Now write some python code to do stuff with these people #!/usr/bin/python #Every thing that is persisten must be done inside a transaction and open database from Ft.Ods import Database db = Database.Database() db.open('test') tx = db.new() tx.begin() #Create a new instance of some objects import person import employee dad = employee.new() mom = person.new() son1 = person.new() son2 = person.new() daughter = person.new() #Set some attributes dad.name = Pops mom.name = Ma son1.name = Joey son2.name = Bobby daughter.name = Betty dad.weight = 240.50 #We can set attributes not defined in the ODL but they will not persist mom.address = 1234 Error Way #Set some relationships #First set a one to one relationship dad.spouse = mom #Or we could have done it via the ODMG spec #dad.form_spouse(mom) #Add some children to the dad (our data model does not let mom have children. We'd need a family struct (left up to the reader) dad.add_children(son1) #We can create relationships both ways son2.form_child_of(dad) #Shortcut for adding dad.children = daughter #Now root the family to some top level object. db.bind(dad,The Fam) #Make it so tx.commit() #Out side of a transaction we can still access the objects. #However, any changes we make will not persist. #NOTE, because 4ODS caches relationships, any relationships that were not traversed during the #transaction, cannot be traversed now because an object cannot be loaded from the db outside #of a transaction. print dad.name #Start a new tx to fetch tx = db.new() tx.begin() newDad = db.lookup(The Fam) print newDad.name print newDad.children[0].name print newDad.spouse #Discard this transaction tx.abort() Ft/Ods/test_suite and Ft/Ods/demo are good places to look for more examples ^^ See also: http://www.xml.com/pub/a/2000/10/11/rdf/ Some other relevant references are: Extraction of DBMS catalogs to XML using python. http://hyperschema.sourceforge.net./ PostgreSQL as XML repository http://zvon.org/index.php?nav_id=61 http://hopla.sourceforge.net/doc/README Note that none of this has much to do with the original topic of Object-*Relational* Mapping. *Essential* background for understanding what an object-relational persistence layer looks like is: http://www.ambysoft.com/persistenceLayer.html It isn't very long and there *absolutely* isn't any point discussing how to design such an OR persistence layer without first reading and fully understanding it. (I say that after having carefully studied all the messages in this discussion - though I also said so before ;-) The rest of that web site has
[Zope-dev] RE: [Zope] REQUIRING Python 2.1??
[anser] I can't quite help wondering whether someone at DC has maybe gotten so "into" the development of Py 2.1 that they just can't wait to use its new stuff, whether it's objectively what's best for Zope or not. The prudent thing to do would have been to add features as needed using 1.5.2-compatible code, or at best to offer a "new18n" branch that requires 2.1, which people who are THAT desperate for i18n could choose to follow if they wanted. Then, say 6-12 months after 2.1 is gold, you could unify and require it for 3.0. Instead, for the sake of being able to let the Python developers stick a Zope logo on the 2.1 release, we are risking a boatload of trouble. [albert] As far as I can make out the strategy you advocate is more or less exactly what they *did* do - so smoothly you didn't even notice. The *big* leap is from 1.5.2 to 2.0 which has been out for quite a while. I18N is *desperately* needed but had to be delayed because of the compatability problems you are rightly concerned about. So even after I18N became feasible with 2.0 the main branch was made compatible with using 2.0 but binaries released with 1.5.2 to avoid risking a boatload of trouble while enabling people desperate for I18N to start using 2.0 and at the same time discover as much as possible of the hiccups before general switchover. Waiting for the "odd numbered release" is also a generally sound policy. Essentially you are confusing that prudent delay in completing the smoothly planned (and very clearly announced long ago) switch from 1.5.2 to 2.x with a sudden rush to 2.1. Whatever problems do occur will be overwhelmingly from the 2.x, not from it being 2.1 in particular. ___ 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] RE: Workflow and document management system in Zope
Thanks for the interesting URLs on workflow discussions. Corba Ecommerce has very interesting and thorough models of workflows, including UML diagrams and even an XML format for defining state machines. Sorry, this may be old news as I don't have time to follow up the actual threads beyond the first messages. But if not, anyone designing such a system for Zope *must* study the Corba stuff. Email me direct if the URLs haven't been published in the discussions and I'll be happy to dig them up (hard to find within www.omg.org). Or, (easier for me), I can email the (large) .pdf files direct. -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Spicklemire, Jerry Sent: Saturday, January 20, 2001 2:30 AM To: '[EMAIL PROTECTED]' Cc: '[EMAIL PROTECTED]'; '[EMAIL PROTECTED]' Subject: [Zope] RE: Workflow and document management system in Zope Hi Nicolas, For you, when would such products be considered ready for production ? The most important factor can be viewed from two perspectives, neither precluding the other. The ideal state arrives when complete documentation is available, or at least one person on the deployment team has dug through the source code enough to inderstand the system thoroughly, and serve as a guide and mentor to others. Waiting for complete documentation sounds like a name for a surrealist/existentialist play for geeks. You may be in a fairly good position to benefit from input from the the creators of the ZDP Tools. Maik? ([EMAIL PROTECTED]) http://lists.zope.org/pipermail/zope/2001-January/037709.html If I can have a demonstration rapidly (unfortunately I do not yet know Zope personnally but I shall look for help locally), I may even get funds to help and foster the complementary developpement. Also see some recent posts from the Zope-PTK list: http://lists.zope.org/pipermail/zope-ptk/2001-January/002179.html http://lists.zope.org/pipermail/zope-ptk/2001-January/002182.html Another thread that you may find interesting: http://lists.zope.org/pipermail/zope-ptk/2000-December/002009.html http://lists.zope.org/pipermail/zope-ptk/2000-December/002002.html and don't miss: http://lists.zope.org/pipermail/zope-ptk/2000-December/002067.html http://lists.zope.org/pipermail/zope-ptk/2000-December/002069.html It's getting exciting out there! Jerry S. ___ Zope maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev ) ___ Zope maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )
RE: [Zope] RE: Workflow and document management system in Zope
[Jerry] This may be the link you were thinking of: http://www.omg.org/technology/documents/formal/corba_business_specifications _av2.htm with the Corba Workflow Specification available as a .PDF. [AlbertL] Yes. The Task and Session spec there is also very relevant. The Workflow Spec is based directly on the work done by the Workflow Management Coalition mentioned by Albert Boulanger. I haven't checked the original (1993) from the coalition but the Corba document is more modern (1.20, April 2000) with UML diagrams as well as IDL and diagrams similar to those on Albert Boulanger's web page. However I am also referring to the "Corba Electronic Commerce Domain Specifications" 1.0 which I don't think is listed among omg formal published documents yet. This extends to concepts such as "Community", "Membership", "Collaboration" and "Voting" which I think are highly relevant to PTK. Plus detailed elaboration of state machine triggers and transitions etc and more specifically ecommerce related stuff on negotiations and contractual obligations. The related "Negotiation Facility" is listed at: http://www.omg.org/technology/documents/recent/corba_e-commerce.htm and also worth a look. But the one I particularly recommend isn't even listed on their home page: http://www.omg.org/homepages/ecdtf/index.htm Had a good look now, but I'm afraid I've lost the URL for it. Can email a copy (1MB). I was also referring to the "OSM Digital Product Architecture", 20 November 2000, which has the XML state machines spec. http://home.osm.net/supporting/index.html http://home.osm.net/supporting/DPA.0011B.pdf Strongly recommend close study of all of these. (A lot has happened since 1993 ;-) ___ Zope maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )
RE: [Zope] Re: ZBabel translation to Postgres
The following references from search of huge numbers for "left join" at www.postgresql.org may be helpful: http://www.postgresql.org/mhonarc/pgsql-sql/2000-03/msg00023.html http://www.postgresql.org/mhonarc/pgsql-hackers/2000-12/msg00634.html http://www.postgresql.org/mhonarc/pgsql-hackers/2000-12/msg00656.html http://www.postgresql.org/mhonarc/pgsql-general/2000-12/msg00194.html Summary: 1) Easy to work around 2) There was a bug 3) It's been fixed 4) Comprehensive implementation in 7.1(devel) Many more messages not looked at so above summary may be wrong -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Andrew Kenneth Milton Sent: Thursday, January 04, 2001 9:59 PM To: Olaf Zanger Cc: Zope Mailinglist; [EMAIL PROTECTED] Subject: [Zope] Re: ZBabel translation to Postgres +---[ Olaf Zanger ]-- | Hi there, ... | What does the whole thing do anyway? Finds all the phrases that don't have a translation for the language selected. It's hard to find things that don't exist in databases without nested selects which MySQL did not have at the time. MySQL was chosen precisely because it is restricted, and is basically the lowest common denominator when it comes to SQL. I do recall however, that postgres only implements INNER and OUTER joins although I don't know the status of the JOIN stuff in postgres at this time. | Has anybody ported ZBabel already? Someone was going to send me patches for postgres, but, I never received them. I'll happily integrate patches, although, automatically selecting the right query based on database type will be required so that several releases aren't required. I don't think that that's a hard thing to achieve. -- Totally Holistic Enterprises Internet| P:+61 7 3870 0066 | Andrew Milton The Internet (Aust) Pty Ltd | F:+61 7 3870 4477 | ACN: 082 081 472 ABN: 83 082 081 472 | M:+61 416 022 411 | Carpe Daemon PO Box 837 Indooroopilly QLD 4068|[EMAIL PROTECTED]| ___ Zope maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev ) ___ Zope maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )
RE: [Zope] ZBabel performance??
Wow! From 1) to 2) - both you and Zope DELIVER 1) "I can look at adding caching into ZBabel, but, it's not high on my priority list at the moment... I'm currently pounding the bricks. I'll try to make time over the weekend to have a look (I may be able to use the Zope Machinery to do the caching)." Sent: Fri 7/21/00 10:31 AM 2) I've added caching of phrase lookups using the ZSQL Methods caching facilties, it should cache up to 1,000 different phrases for 60 seconds. There is a 0.0.2 release on zope.org now. http://www.zope.org/Members/TheJester/ZBabel/ Sent: Fri 7/21/00 1:56 PM -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Andrew Kenneth Milton Sent: Friday, July 21, 2000 1:56 PM To: [EMAIL PROTECTED] Cc: [EMAIL PROTECTED] Subject: Re: [Zope] ZBabel performance?? +[ [EMAIL PROTECTED] ]- Snip... | translated. However my concern that if the page is accessed by thousands | of people, does Zope cache the translated text and serve it? does ZBabel I've added caching of phrase lookups using the ZSQL Methods caching facilties, it should cache up to 1,000 different phrases for 60 seconds. There is a 0.0.2 release on zope.org now. http://www.zope.org/Members/TheJester/ZBabel/ -- Totally Holistic Enterprises Internet| P:+61 7 3870 0066 | Andrew Milton The Internet (Aust) Pty Ltd | F:+61 7 3870 4477 | ACN: 082 081 472 ABN: 83 082 081 472 | M:+61 416 022 411 | Carpe Daemon PO Box 837 Indooroopilly QLD 4068|[EMAIL PROTECTED]| ___ Zope maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev ) ___ Zope maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )
RE: [Zope] ZBabel performance??
For non-cacheable pages that can't be speeded up by a reverse proxy, there might be two other possibilities worth looking at as well. If Zbabel is mainly needed for the production/maintenance of translations rather than for really dynamic pages it might be possible to use ZMirror for semi-static per language templates generated by ZBabel that get combined dynamically with the dynamic non-translated bits. For really dynamic translations, if the database hits are still too much for some users, despite being read only and therefore usually in buffers, it might be possible to copy the maintenance ZBabel database stored in a persistent SQL database from the management screens into a RAM Gadfly database used by the actual page generation. -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Andrew Kenneth Milton Sent: Friday, July 21, 2000 10:31 AM To: [EMAIL PROTECTED] Cc: [EMAIL PROTECTED] Subject: Re: [Zope] ZBabel performance?? +[ [EMAIL PROTECTED] ]- | Hi, | | I was able to install and test the ZBabel product. | Very nice product indeed!! I have a question about performance.. Thanks :-) [...snip...] | However my concern that if the page is accessed by thousands | of people, does Zope cache the translated text and serve it? does ZBabel | do that? or is there a way to do that? If you are passing query_string parameters into your page you will not be able to cache the pages anyway. If a page is cacheable then you can setup a HTTP accellerator in front of Zope that will cache the rendered pages. I don't know what your current network topology is like, so it's a little hard to comment. I can look at adding caching into ZBabel, but, it's not high on my priority list at the moment... I'm currently pounding the bricks. I'll try to make time over the weekend to have a look (I may be able to use the Zope Machinery to do the caching). | I do not want to hit the database | everytime someone requests that page.. Our site is usually translated to 5 | languages and we had developed a Perl script that would read php tags and | create static pages becuase of that problem, and in this case we do not | know at all what happend in eth backend.. Out of interest how many hits per hour are you doing? I worked on a largish portal system (ASP *puke*) and they had no problem going to the DB very very frequently. The key for the phrase is 32 bytes, it should be very quick to look up, even in a poorly tuned MySQL. -- Totally Holistic Enterprises Internet| P:+61 7 3870 0066 | Andrew Milton The Internet (Aust) Pty Ltd | F:+61 7 3870 4477 | ACN: 082 081 472 ABN: 83 082 081 472 | M:+61 416 022 411 | Carpe Daemon PO Box 837 Indooroopilly QLD 4068|[EMAIL PROTECTED]| ___ Zope maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev ) ___ Zope maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )
RE: [Zope] Bi-directional update of Data.fs
[AL] If you do find it, please pass on a strong recommendation to checkout the Coda file system included in FreeBSD. Coda has a LOT of research on how to do this stuff that would be relevant to "Quorum Based Replication". Sorry, I just noticed this message in passing and cannot follow up myself. -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Chris McDonough Sent: Wednesday, July 19, 2000 11:55 PM To: Chris McDonough; 'Chris Withers' Cc: 'Brenton Bills'; '[EMAIL PROTECTED]' Subject: RE: [Zope] Bi-directional update of Data.fs Actually, there is a proposal on the table for something like this in a Wiki I can't find going by the name of "QuorumBasedReplication" -Original Message- From: Chris McDonough Sent: Wednesday, July 19, 2000 9:51 AM To: 'Chris Withers'; Chris McDonough Cc: 'Brenton Bills'; [EMAIL PROTECTED] Subject: RE: [Zope] Bi-directional update of Data.fs Perhaps. Patches accepted :-) -Original Message- From: Chris Withers [mailto:[EMAIL PROTECTED]] Sent: Wednesday, July 19, 2000 5:27 AM To: Chris McDonough Cc: 'Brenton Bills'; [EMAIL PROTECTED] Subject: Re: [Zope] Bi-directional update of Data.fs Chris McDonough wrote: There is no generic diff or merge facility for two arbitrarily modified Data.fs files. Perhaps Zope or ZEO could do Lotus Notes - style replication at some point in the future? cheers, Chris ___ Zope maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev ) ___ Zope maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev ) ___ Zope maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )
RE: [Zope] Announce: ZBabel a Translation Assistant for Zope
Thanks for "ZBabel". I've only just downloaded it and haven't played with it yet, but from just reading through, it looks like it will be a great approach! http://www.zope.org/Members/TheJester/ZBabel/ One thing I'm not clear on, which you might want to deal with in future releases, either by documenting what wasn't obvious to me, or by adding a separate layer, is how to deal with "Composite Strings". Often a "phrase" that will need translation is a concatenation of more than one text string with embedded dynamically generated parameters, such as a date, name, price etc. In different languages the actual ordering of the concatenated elements may differ and the structure of the destination language may even result in a different number of text strings to translate than for the source language. Often the original author of a dynamically generated web page will be tempted to use a repeated string for common parts of different UI strings, which cannot in fact be translated that way for other languages. Unless there is some provision for that in the management interface for translation, and the documentation, page authors are very likely to assume they have internationalized something when they haven't, because they may concatenate ZBabelized strings themselves. See for example: http://msdn.microsoft.com/library/default.asp?URL=/library/books/techlang/de vintl/D3/S24AA.HTM I would imagine that Zope is ideally suited to using some sort of class for each composite, with properties for the phrase identifier and the constituent dynamically generated parameters, and leaving it to the specific translation to determine the number and positioning of the elements required. Is that already taken into account somehow by allowing the embedding of DTML within the text phrase to be translated? Also worth thinking about for a future release, is the integration of this with layout considerations. Other languages often require 50% more space than english when translated and this results in layout problems after translation. Reasonably precise formulae are available for what to expect, depending on the length of the string and the source and destination languages. I would imagine that Zope would also be ideal for automatically generating the maximum of this for the acquired set of expected future translations and returning it as a parameter that could be used with dynamic layout. Finally, is there some way that the "magic" behind Zwicki structured text formatting could be used, to allow an author to just write the phrase in their own language and automatically generate related DTML tags for parameters etc? (Rather vague idea I know, but somehow make it easier for people just writing content, like Zwiki contributors, to know nothing about DTML at all, yet still make it easier for scripters to integrate their translatable content with DTML as well as integrating with HTML layout). ___ Zope maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )
RE: [Zope] Announce: ZBabel a Translation Assistant for Zope
[Andrew] Yes you can embed DTML inside the block and it will resolve all of the DTML before translating the result. You can turn this behaviour off. This is why I opted for a container tag, rather than a simple tag. [Albert] That is what I am still not clear on. Noticed the container, but still confused about "literal" and about "before", "after", "off" and "on". Suppose web site in source language has something like this: 'Click A href="{fieldX(someVar.A)}"here/A, for {fieldY(someVar.B)}' With suitably horrific DTML instead of ' ' and {}. Rendered english result would be, for some particular dynamic instance of someVar: 'Click A href="http://www.zope.org/"here/A for Zope' Translator for language X decides to reverse the positions of fieldA and fieldB and use 3 separate substrings, because it is too abrupt for that language, so translates to something like: 'If you would like {fieldY(someVar.B)}, click A href="{fieldX(someVar.A)}"this link/A, please' There are now 3 substrings in the translation because it would be rude not to start or end with something like "please" in language X, and it reads better with the fields reversed in that language. Final rendered result becomes (in language X): 'If you would like Zope, click A href="http://www.zope.org/"this link/A, please' depending on the particular value of someVar at the time. Does ZBabel allow this? If so, that's *exactly* what I was hoping for. (Naturally it is up to the classes for fieldY and fieldX to do their own thing, and localize it if its a date or currency etc, not up to ZBabel). | Finally, is there some way that the "magic" behind Zwicki structured text | formatting could be used, to allow an author to just write the phrase in | their own language and automatically generate related DTML tags for | parameters etc? | | (Rather vague idea I know, but somehow make it easier for | people just writing content, like Zwiki contributors, to know nothing about | DTML at all, yet still make it easier for scripters to integrate their | translatable content with DTML as well as integrating with HTML layout). [Andrew] I have another project on my TO DO list which is a dynamic components product which this would integrate well with. Any "Form Generation" products would probably be able to integrate the same stuff as well fairly easily. It is rather intrusive I know, but, there are few if any options that don't require massive amounts of effort to achieve the same thing. Especially building the catalogs. I know of another ASP based system that's pretty much the same as this, but, they have to go through and change the source code after translating (they have to provide a dummy 'phrase id' which is then altered). It is really really ugly. [Albert] The lack of a dummy "phrase id" is what I thought was really great about your approach. Thanks! I regard HTML/DTML as possibly avoidable clutter in the same way that a "phrase id" is. If ZBabel already does what I asked above, my question about something closer to Zwiki structured text might be more clear in terms of wondering whether anything can be done to hide the HTML/DTML tagging and field coding from the translator by giving them some sort of template like this: 'Click [here] for {Zope}' So that they would translate it to: 'If you would like {Zope} click [this link[here]], please' Note that the two original substrings of ordinary text AND the [bracketed] text all denote elements to be translated, while the text in {braces} does not, but is sample data visible in the UI as a prototype example for the translator. Then the magic which extracted the HTML (and DTML) tagging and field names etc to give the translator something more understandable, would just stick it back in, replacing "here" with "this link", but ALSO restoring the surrounding DTML/HTML for that element and for the {Zope} element, in much the same way that you already do not need a "phrase id" but work directly with the text. Translators understand prototypes much more easily than they understand web pages. (Also useful for content managers cf HTML/DTML designers and convenient for HTML/DTML designers too ;-). Any possibility of doing that automatically? By clicking "generate template", a web developer might be able to generate simplified template strings like above for the translator, using a sample prototype from actual data. Then, when the translator has processed it, a web developer or content manager could just click "import translation". Otherwise either the web developer might still need to generate such prototypes manually to make life easier for translators, or the translators need to understand some HTML/DTML as well as understanding translation. Seeya, Albert ___ Zope maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce
RE: [Zope] Big folders
- To post a response, come back to the bulletin board at http://openacs.org/bboard/q-and-a.tcl?topic_id=8topic=OpenACS%20compared%20 to%20other%20toolkits%20and%20technologies - If you are no longer interested in this thread, simply go to the following URL and you will no longer get these notifications: http://openacs.org/bboard/shut-up.tcl?row_id=1488768 ----- Note: this message was sent by a robot. Albert Langer ([EMAIL PROTECTED]) responded to a message you requested notification for in the OpenACS compared to other toolkits and technologies bboard: Subject: Response to Article on ACS x Zope [CM] There is no SQL abstraction layer in Zope like Ben's talking about. You still need to write DB-specific SQL to gain results out of a query. To my knowledge, the only system that abstracts this layer out well is Apple's WebObjects which I believe can use Oracle, Sybase and Informix as its object persistence layer without requring that you write any SQL. We don't do this. We instead use the ZODB as our object persistence layer, and we let people connect to RDB's and use that RDB's specific set of SQL commands. To get anything useful out of the RDB's, you need to write system-specific SQL. [AL] My understanding is that Ben is talking about something quite different from WebObjects. To clarify that, I have posted some notes about Web Objects in a separate topic, "Apple WebObjects", on this bboard: http://openacs.org/bboard/q-and-a-fetch-msg.tcl?msg_id=Hitopic_id=8top ic=OpenACS%20compared%20to%20other%20toolkits%20and%20technologies Can we all agree that something like WebObjects is beyond the scope of what OpenACS is after for data abstraction and beyond the scope of what Zope intends to provide? From my perspective the use of ZODB as an object persistent layer is fine for many things but completely unacceptable for Ecommerce OLTP transactions. For those you need not only to get things out of RDBMs, but also put them into RDBMs and the application is really an RDBM application. I don't buy the idea that Ecommerce based on ZODB alone without an RDBM is viable, for reasons explained in 1) and 2) of: http://lists.codeit.com/pipermail/zcommerce/2000-June/000257.html BTW If you are aware of anybody else attempting Ecommerce OLTP with an OODBMs please provide a reference. Otherwise please confirm that Zcommerce efforts to do so using ZODB without an RDBM should be considered "experimental". Despite that, I still believe Zope could be useful together with an RDBM based Ecommerce module and I am interested in whether it is possible for the existing ACS Ecommerce module to be made more "stand alone" and used with both OpenACS and Zope, or whether development would inevitably need to "fork". I claimed that: For access to RDBMs databases via SQL, Zope provides pretty much exactly the sort of data abstraction facilities that Ben was talking about in: http://openacs.org/doc/sql-abstraction.html Based on that view I am proposing that OpenACS people and Zope people should get together in work on data abstraction. Your comments below, and those from Jimmie Houchin, seem to indicate that I'm wrong about that. Given that you know far more about Zope than I do, I'll have to accept your view. But before abandoning the idea I'd like to get it clear whether we are really talking about the same thing. [CM] Zope does abstract out the ability to process results of SQL queries. If you've got a Zope system with connections to different databases (for example if you're grabbing stuff out of an Oracle DB and a Postgres DB within the same Zope instance), you create database connections to the two DB's, you create "SQL methods" for each query for each DB, and then in Python or DTML you pass arguments in to the "SQL method" that houses each query, and you can process its results generically. You needn't worry about where the data came from. Here's an example: SQL method "getstatus" query: SELECT status FROM customer WHERE id = dtml-sqlvar custid DTML method to process the results from this query: Customer status: dtml-var "getstatus(custid=1)" The DTML method passes the value of custid in to the SQL method, gets the result back, and displays it. This is the extent of Zope's SQL abstraction. You can process query results independent of the data source by creating a "database connection" to a specific DB (Oracle, Postgres, MySQL, Solid, ODBC, and Sybase) then creating "SQL methods" against these database connections that accept arguments and return results. The content of the SQL methods is necessarily database specific. [AL] Above is my understanding of what "Z SQL" offers. But I thought the "Dynamic Data Objects" were intended to provide rather more. Could you please comment more specifically on the following excerpt from my previo