Archive for August, 2005
OOo2 standalone from rpm files
After the command line for
debian archive set, here is the one for rpm to have a standalone
runable OOo 2.0 version “out of the box”, running with other already existing OOo2 versions
for aFile in *.rpm;do rpm2cpio $aFile|cpio -ivdum ;done
This will create a directory (/opt) in the current directory containing the runable version
Remember to
handle userEnv correctly to avoid installation mixing
(Post originally written by Laurent Godard on the old Nuxeo blogs.)
Indexing events
I have lately been looking into increasing the performance of
CPSSharedCalendar when you have many events in the database (some tens of
thousands or more). There are a couple of things that quickly gets tricky
when doing this:
- No matter what you index on, the result set from each index will be
very big. - Indexing recurring events is slightly tricky.
Big result sets
The main thing to filter on for events is obviously start and end time. You
create one index for start time and one for end time. When searching you
then have one result set with anything that falls before one of these dates
and another result set with everything that falls after one of the other
dates. And then you need to make a union of these result sets.
Sound simple enough? Well, it is simple, but it is also very slow, because
the result sets will … Read more
Perspectives for web applications and Z3ECM
In my last post, I was writing that Perspectives are, for me, maybe the most interesting feature (or, at least, one of them) of Eclipse RCP when building applications for users. Jean-Marc Orliaguet read it and got a new idea : might this concept work for web applications ?
Since it’s Jean-Marc and that he likes to have ideas but prefer put them at work, he started to work on this concept and see how it could fit in the Z3ECM project (next-generation ECM platform, buit on top of Zope 3).
What for ?
Imagine that when writing a new component, you also can easily define perspective. Let’s take an example : a blog application. Well you can define a “Blog Perspective” that would be activated when accessing to a blog and that would arrange the portal to offer a “blog view” putting portlets in right places. WIth this … Read more
Coming soon : CPS Rich Client based on Eclipse RCP
Introduction
Here, at Nuxeo, we are thinking for a long
time at desktop applications for CPS. Why in this new full web,
ajaxified, world ?
Well, I think that for many applications and
features, a desktop application is still needed.
Here is some examples of features / requirements :
- Disconnected client to work in the train, in the plane, on the beach
- read, annotate, search in a document repository
- use electronics forms when working outside the office
- Deep integration with legacy desktop applications (what about having
OpenOffice running inside a dedicated client to improve cooperative
work) - Strong security : document signing, workflow action signing, etc.
- Advanced text edition : interactive diff / merge
- Advanced editors (photos, rich media, rich documents, etc.)
- Reduce server loads doing many computation on the client
- many, many more ideas
We started to work, as some customers asked, on a desktop application.
One point … Read more
AtomAPI fully implemented into CPSBlog
I am going further with AtomAPI support in CPSBlog. I have just added :
- DELETE support
- categories management as described in AtomSyndication
The AtomAPI support has been refactored to be more generic and split into 4 classes : AtomMixin, AtomAware, AtomAwareEntry and AtomAwareCollection. I still don’t know if it’s the best architecture for Atom support, and I know there is a lot of improvements to do, but it’s better than yesterday ![]()
This is the first step to a full Atom support in CPS. I think it should be possible to apply this Atom support to any document and folder so. And that would be the first step to a fully RESTful implementation of content syndication, cross-site publication and remote content management (let’s talk now about native XMPP support, Atom extension, JEI-60, etc.). We will have to go further in this way very soon…
The code is in CPSBlog trunk… Read more
CPSBlog now supports AtomAPI
I have implemented a partial AtomAPI support into CPSBlog, using specification and methods described by Blogger and Typepad AtomAPI.
This mainly allow blogging from desktop and mobile application.
Right now, CPSBlog AtomAPI implementation supports:
- adding entries
- editing entries
- retrieving and using categories (though some bugs seems to exists
depending on the client) - reading feed / entries
From a technical point of view, I’ve used the excellent lxml python
component to parse incoming request and manage to also deal with SOAP
enveloppe request (sent by some client, even if the server never says it
accept it !
.
This blog will be posted using ecto on MacOS X (at least I hope it will work since it’s the first post using AtomAPI on this site
. BTW, I was really disappointed to find out that there is very few AtomAPI clients (and almost none open source, but PyQLogger which seems to … Read more
XML Schema support on Zope3 (Concret example)
I added a demo package to illustrate the zope3 / xml schema integration.
You can grab de code over there :
http://svn.nuxeo.org/trac/pub/browser/z3lab/zope/xmlschema/trunk/demo/
The goal of the demo is to get a new content object registred within Zope3
with an “add “and “edit” form driven by an XML Schema definition.
This example is pretty simple but illustrate perfectly the goal of the XML
integration and the power of Zope3
Let’s take a look at the xsd we will use in this demo :
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:attribute name="title" use="required" type="xs:normalizedString" /> <xs:attribute name="description" use="required" type="xs:string"/> </xs:schema>
(demo.foo.xs)
It defines a schema having 2 attributs : title and description.
title is required and is a normalizedString data type
description is required as well and is a string data type.
Let’s define an interface IFoo and set the “foo” … Read more
Extending products Zope3-style.
Today we had a need to extend the CPSSharedCalendar a little bit in a
separate project. The functionality needed was not seen as generic enough to
go into the CPSSharedCalendar itself. Luckily, since it’s written with Five,
this can be done easily, and without touching the original code, or monkey
patching, and with none of the standard problems of using portal_skins. So I
thought it might be interesting to show how this is done, as a way to
convert more people to Zope3 and Five.
Basically, the project needed to display a list of events from the users
calendar, but only the events from today, and with a custom formatting. Here
is the rough steps used, as an example to show to others how to do it:
- Create a new product. A folder under Products and an empty __init__.py is all that
is needed. - Create a view class that has
XML Schema support on Zope 3
I started yesterday an XML Schema support for the ZopeInterface. I
would like to be able to define my schema with XML Schemas definitions
instead of having to define them in Python (which is boring and
Python specific…).
The code is within the z3ecm repository: http://svn.nuxeo.org/trac/pub/browser/z3lab/zope/xmlschema/trunk/
See an example :
filepath is a path to an XML Schema definition as defined below : <?xml version="1.0" encoding="UTF-8"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"><xsd:element name="title" type="xsd:string"/><xsd:element name="description" type="xsd:string"/></xsd:schema> >>> import zope.interface >>> import zope.xmlschema >>> class ITest(zope.interface.Interface): ... zope.xmlschema.set(filepath) Now introspect the fields defined within the xsd. We will see two newfields : title and description. >>> names = list(ITest) >>> names.sort() >>> names ['description', 'title'] Now define a class implementing this interface. >>> class Test(object): ... zope.interface.implements(ITest) ... title = '' ... description = '' >>> ITest is implemented by Test >>> ITest.implementedBy(Test) True Let's create an instance of Test >>> test = Test() Defines potential … Read more
Interfaces versus ABC within Python
Guido wrote a blog entry about interfaces versus ABC in Python.
http://www.artima.com/weblogs/viewpost.jsp?thread=92662
Nice to see the discussion about this point occurring. Note he's taking into
account the fact that Zope3 and Twisted do have an actual interface
implementation (which is the ZopeInterface BTW)
As a Zope3 developer I just hope he will go for core Python interfaces
(Post originally written by Julien Anguenot on the old Nuxeo blogs.)