Friday, August 22, 2008

Week progress report from 18th August to 22nd August

I continued with the testing and adding missing implementations. I was able to identify few bugs and made small changes while improving the code coverage. We have identified and listed down the remaining tests to be added. Core components are prioritized and targeted more on them.

Within the next week also I will be doing the identified tasks in the prioritized manner.


[1] svn//svn.zope.org/repos/main/Sandbox/adamg/ocql/trunk/ - implementation

Friday, August 15, 2008

Week progress report from 11th August to 15th August

In this week I basically work on failed tests, adding new tests to the system and improving the code coverage by targeting the most critical components of the system. Extract algebra operation decelerations from the research papers[1][2] and add corresponding implementations done in the system[3]. It helped to identify some bugs in the project.

I gained good understanding on the Python build in functions, which are used to get the results for a particular query. Document modified grammar rules.


[1] http://citeseer.ist.psu.edu/359340.html

[2] http://citeseer.ist.psu.edu/384122.html

[3] svn//svn.zope.org/repos/main/Sandbox/adamg/ocql/trunk/src/ocql/rewriter/algebra.txt

Sunday, August 10, 2008

Tests

I continued with adding tests in order to improve the code coverage. And I tried to modify the code to run the commented out tests initially.

Friday, August 8, 2008

Week progress report from 04th August to 08th August

Another interesting week finished!!!
I was able to complete main tasks identified and documented in the plan. My implementations done over the last two weeks were reviewed and made corrections. Resolved failing tests in algebra optimization. I was able to identify quite a few mistakes in the code after adding tests. All the changes are merged in the trunk[1].

For the next week I will improve the code coverage, adding tests to stress the system and documentation.

[1] svn//svn.zope.org/repos/main/Sandbox/adamg/ocql/trunk - implementation

Tuesday, August 5, 2008

Algebra Optimization

I again looked at the algebra optimization. I wanted to know where I was before. I was able to find out the problem which causes me to continue it further. So I was able to go bit forward from the status it was but still getting few test failures in the branch

Sunday, August 3, 2008

Tests

Today I add few tests to the whole project. We can use
verifyObject(Interface, classObject()) to verify whether to say the given object is correctly implements the given interface. If the given attributes are not implemented in the concrete object, it will raiser an error. I identified many mistakes in coding. Correct them accordingly.

Friday, August 1, 2008

Week progress report from 28th July to 01st August

As we planned initially I add some tests in identified areas. Go through some documents and other implementations to know how to add tests. Add some missing QueryObject and algebra functions. Meanwhile I modified the grammar rules and able to resolve shift/reduce and reduce/reduce conflicts. Its tested for the present queries and need to improve them as new tests are being added.

I will continue with tests and improve code coverage in the next week.



[1] svn//svn.zope.org/repos/main/Sandbox/adamg/ocql/branches/qo-compiler - implementation

[2] http://spreadsheets.google.com/ccc?key=pqiTfcdeaKaYf-C6HpM32VQ&hl=en - Time plan

Monday, July 28, 2008

Parser modifications and tests

Over the weekend and today I worked on parser rules. I started it from the scratch having the modified grammar and existing grammar implementations as references. I was able to get rid from most of shift/reduce and reduce/reduce conflicts. But I still get a single shift/reduce conflict. I don't know how to find it easily.
Commit the changes of the parser[1]. Then I started with tests, first I go through with the documentations[2][3][4].

[1] svn//svn.zope.org/repos/main/Sandbox/adamg/ocql/branches/qo-compiler - implementation
[2] http://pypi.python.org/pypi/zope.testing/3.5.1
[3] http://wiki.zope.org/zope3/Zope3Book
[4] http://wiki.zope.org/zope3/unittests.html

Friday, July 25, 2008

Week progress report from 21st July to 25th July

I was able to complete the rewriter component implementation during this week[1] and was able to do this with out many difficulties because I discuss the work well before Adam's holiday.

Next, I have two tasks is to complete - adding tests and parser modifications. I hope to interleave both tasks in next weeks[2].

[1] svn//svn.zope.org/repos/main/Sandbox/adamg/ocql/branches/qo-compiler - implementation

[2] http://spreadsheets.google.com/ccc?key=pqiTfcdeaKaYf-C6HpM32VQ&hl=en - Time plan

Monday, July 21, 2008

Query Object Adaptaion

Today I started with query object adaptation. I use the previous branch for query object compiler [1]. Add few changes identified previously, but not in this branch. Refer the algebra adaptation previously I did.
[1] svn://svn.zope.org/repos/main/Sandbox/adamg/ocql/branches/qo-compiler

Friday, July 18, 2008

Week progress report from 14th July to 18th July

Main task of this week is to implement the algebra optimization. To do that it needs to re-organize the algebra tree, such that new tree leads for a optimize search. For that, need to find a specific pattern in the tree and replace it by simple algebra. So I started to find the target algebra object pattern in the tree and later moved to more generic algorithm to find a general pattern in the tree.

By the time I had to spend time to set up the code coverage, svn version problems and google mid term survey. I was previously using eclipse 3.2 and it worked well with subclipse and svn. But using eclipse 3.4 leads to touch the svn files as version 1.5 but the actual client is version 1.4.6. I tried the instructions given in [1] to solve the problem. Since it didn't work for me I moved to the previous eclipse which is simplest to continue on work.

I discuss the things to be done for the next two weeks [2] and break the tasks in to smaller sub tasks. For the next week I will continue with the rewriter module.


[1] http://durin42.blogspot.com/2008/03/setuptools-and-subversion-15.html

[2] http://spreadsheets.google.com/ccc?key=pqiTfcdeaKaYf-C6HpM32VQ&hl=en - Time plan

[3] svn//svn.zope.org/repos/main/Sandbox/adamg/ocql/branches/optimize-with-index - implementation

Monday, July 14, 2008

Algebra optimization

After a enjoyable weekend I continued with the project. I complete google mid term survey and continued with the algebra optimization. I face with a problem where I was unable to run commands from the terminal to run the tests. It was because I used latest eclipse version and update the subclipse. I am using 1.4.6 of svn but new eclipse seems to be touched with 1.5 svn. We can look in to the first character in the .svn/entries to check the current version of svn using. I tried to use a patch given to overcome this. But since it doesn't work for me I downgrade the eclipse version to 3.2, since it is too simple. The patch is given in here[1].

Then I spent some amount to add a recursion tree to the algebra optimizer script. Since I have used children variable in class level, my recursion part loop forever. It was because mutables like list, we can only work with the only instance. So the recursion loop execute for long iterations until it reach maximum. I got mentor's help to identify the problem. So it can be solved by adding setting the variable in the object initiation[2].

[1] http://durin42.blogspot.com/2008/03/setuptools-and-subversion-15.html
[2] svn//svn.zope.org/repos/main/Sandbox/adamg/ocql/branches/optimize-with-index/src/ocql/rewriter/algebra.py

Friday, July 11, 2008

Week progress report from 04th July to 11th July

Early in this week I was able to complete the two tasks assigned to me for the algebra compiler[1]. It was about do a proper interface declarations for algebra objects and to implement location in the algebra object tree, by adding parent and name properties to the algebra objects and adding a 'head' element to the tree. All the implementations related to algebra compiler is in a separate branch[2].


Then I moved to the queyobject compiler, which has pretty much the same kind of work to be done as I did in the algebra compiler. I did the interface declarations and implement location in the query object tree. But leave the adaptation part to do later. Implementations for this part goes here [3].

After doing that I moved for a algebra optimization part. Identified optimization is related to transform the algebra tree if it contains a particular pattern. That means look for a pattern in the tree and modify the tree to get the results. For a example say we have a condition,
class.property operation value,
so if there is an index available for the class.property we can use that for the fast searching. Currently, engine gets all objects of an interface and then it uses some loop to filter what it wants. So I include methods to find out whether it can decide the class.property has an index and retrieve data for particular class.property. Repository branch for this work linked here.[4]


[1] http://spreadsheets.google.com/ccc?key=pqiTfcdeaKabBUy48qR0JTw&hl=en_GB - OCQL - TODO list
[2] svn://svn.zope.org/repos/main/Sandbox/adamg/ocql/branches/alg-compiler - algebra compiler
[3] svn://svn.zope.org/repos/main/Sandbox/adamg/ocql/branches/qo-compiler - query object compiler
[4] svn://svn.zope.org/repos/main/Sandbox/adamg/ocql/branches/optimize-with-index

Wednesday, July 9, 2008

Query compiler and identified optimization

I completed creating the query object tree and interface declarations. Implementation was reviewed by my mentor and made few corrections in it. Then, I moved to a identified optimization part of the algebra. For a example say we have a condition,
class.property operation value,
so if there is an index available for the class.property we can use that for the fast searching. Identified the method need to be added to the class and introduced a index for attributes(property). They still gave me some errors, need to correct them tomorrow, hopefully. :)

Monday, July 7, 2008

Algebra Compiler and Queryobject Compiler

I was able to complete the two tasks of algebra compiler. To implement the location in the algebra tree, I create a separate class to hold the algebra object tree, which is the 'head' considered to be the top of the tree. Again use subclipse to see the modification done by the mentor by comparing the consecutive revisions.
Then we moved to the queyobject compiler, which has pretty much the same kind of work to be done related to the algebra compiler. Check out the code from the related branch for the proceedings.

Saturday, July 5, 2008

Project design

I went back through the implementations and other project related things I did in the past few months. I am happy with the things I have done up to now, since this is my first open source and Python project. Its interesting to work on a open source project where I got many experience with different areas, including coding styles, discussions by mailing lists, chats, etc. According to my view point since there are plenty of people looking at what we are doing, is a plus point because we can know our mistakes up front. And having people known the system can always got the chance to ask help when we are stuck in some point.

I looked in to the whole project design and implementation. I was able to identify the behaviour of the implementation using debugging. Did some modifications and looked at the deviations. Since I am still learning things related to Python language, referred to some Python books and clear ambiguities.

Friday, July 4, 2008

Week progress report from 27th June to 04th July


Previous week I did DB metadata and data provider, to provide class/object declaration to the engine. In early this week my implementations were reviewed and made the required adjustments. One important thing I learn was that to test all parts of the application after modification of one part. From my new implementation there were two failures in other parts where I didn't notice.

Then I moved to the algebra compiler as it seems more important over the other parts of the DB data and metadata provider. I need to complete two tasks (number 4 and 6) in OCQL TODO list [1].

I started with the sub-task 6, where I introduce interfaces to algebra operation classes and adapt them. All the implementation related to algebra compiler goes here[2]. During the implementation I needed to look the changes done by the mentor. I installed subclipse[3], to look in to revision histories and compare them. Then regarding the sub-task 4, I referred and used Zope.location to introduce parent, child relationship in the algebra object tree. I used remote debug option quite a lot to identify the execution and behaviour.

Finally, its again a interesting week with learning every bits and pieces and hope to continue on the same section in the next week too.


[1] http://spreadsheets.google.com/ccc?key=pqiTfcdeaKabBUy48qR0JTw&hl=en_GB - OCQL - TODO list

[2] svn://svn.zope.org/repos/main/Sandbox/adamg/ocql/branches/alg-compiler - SVN repository

[3] http://subclipse.tigris.org/




Tuesday, July 1, 2008

Algebra Compiler

Review the DB provider code with mentor and did adjustments in the code. Then we decided to move on to the algebra compiler, mainly because we need to identify the difficulties and we still don't know what we exactly wanted.
In algebra compiler I need to do interface declarations to the algebra operation classes. So I just create interfaces and implement them in the appropriate classes.
I declare attribute and method definition in interfaces and use identified types using zope.schema module, such as Text(), Int(), etc.
This interface declaration is targeted on using the compile method using an adapter. Latest code managed in here[1] and dbprovider code is merged in the trunk.
[1] svn://svn.zope.org/repos/main/Sandbox/adamg/ocql/branches/alg-compiler

Monday, June 30, 2008

Continue from DB metadata and data provider

I send an email to my mentor addressing my progress in the last week. In the parser I need to overcome reduce/reduce conflicts anyhow. So I hope to take a free/idle time to complete it according to the grammar.

I looked into adding complex relation with the objects and looked into interface documentations to get the functionality of methods. In the evening I was unable to access the internet because there was a power failure, got stuck with tasks.

Saturday, June 28, 2008

Dive in to OCQL parser

I had a deep dive in to the OCQL(refer previous threads) parser. It is interesting to see how the program shift and reduce example queries according to the rules defined, by using debugging. Execution flow can be easily recognize form it.
I had to modify and add missing rules in the implementation. I spent whole the day for this part though it looks very simple took fairly large time. Since the parser implementation is not done by me, I initially I studied how the system works for a single running test. It helped me to understand the reasons for the failing tests. I really enjoyed with today's work and commit the work in the repository[1]

[1] svn://svn.zope.org/repos/main/Sandbox/adamg/ocql/branches/dbprovider

Friday, June 27, 2008

Week progress report from 21st June to 27th June

It was a bit hard week and I learn quite a lot. I was able to complete the test setup for the sample data early in this week. It was basically target on providing class/object decelerations to the engine. Then I tried to move it to work with the live Zope, but due to lack of understanding I was unable to do that. Then I add a relation to the sample because DB data and metadata provider need to provide relationship information to the engine as well. Referred to the Readme.txt given in the zc.relation. Will be able to continue it during the next week with guidance.

Mean while I was able to complete some of the failing tests in the parser. Those were fairly simple mistakes where remote debugging and print statements helped in identifying them. All the implementation during the week is committed in the repository.[1]

[1] svn://svn.zope.org/repos/main/Sandbox/adamg/ocql/branches/dbprovider/




Monday, June 23, 2008

Parser, DB data and metadata provider

As the schedule I continue on working in both of the main tasks.I got understood some of the mistakes I have done in the implementation. Correct them accordingly by looking at the errors given. It takes some time to grab the problem but saves time in future.
Regarding the parser I studied how it implemented. Using remote debugging I went through the code to understand the execution flow. Experience I gained in parser writing help me in understanding the code. I was able to catch up the basics under the parser writing even though my initial work is not so good.
I asked some common problems in IRC channel, where I got to know that the svn server has moved. This leads me to get the message "reverse mapping checking getaddrinfo for 203-155.baymountain.com [74.84.203.155] failed - POSSIBLE BREAK-IN ATTEMPT!" when I try svn up.

Friday, June 20, 2008

Week progress report from 14th June to 20th June

It was a interesting week at the end, though I am doing a critical part of the project. Here is what I have done within the last last week. According to the new time schedule I focus on the DB data and metadata provider.
During early this week I was able to set up the system for remote debugging, which is quite simple but waste some time for unknown reasons, may be with my machine.
Regarding this week task I started on implementing the Metadata class which gets all data from zope itself by querying it runtime. It uses searchInterfaceUtilities() to collect all the interfaces present in the system. For the moment it is not all complete and current work is committed in the
repository[1] . For the testing purpose I implemented a separate test where it uses a simple application in src/ocql/testing/utils.py.

For the coming week I will move on to parser modifications as we elaborated in the first week. So I will use the modified grammar rules which is making the language more Pythonic.

[1]
svn://svn.zope.org/repos/main/Sandbox/adamg/ocql/branches/dbprovider/

Wednesday, June 18, 2008

Test to simulate zope data

Today is a bit interesting day compared to the previous days. I involved in implementing a test class which simulate live Zope. Initially I started with testing for the sample data where I used them to understanding Zope.
I referred to the existing test classes and implement this test class. It was bit hard some times where I needed to go more deep in to the Zope code base. I was lucky because I am able to get the use of remote debugging functionality.

Tuesday, June 17, 2008

Remote debug with pydev

Finally, after lot of tries I was able to remote debug a Python classes.
This link[1] gave me good understanding in order to remote debug. But if you are not sure how to get the "Pydev: start the pydev server" icon in toolbars, you need to right click on the toolbar and click "Customize Perspective", select "commands" tab and tick "Pydev debug". This will add the icon in the toolbars.

And if you are getting,
"Could not initialize the browser's security component. The most likely cause is problems with files in your browser's profile directory. Please check that this directory has no read/write restrictions and your hard disk is not full or close to full. It is recommended that you exit the browser and fix the problem. If you continue to use this browser session, you might see incorrect browser behaviour when accessing security features."
You need only to create ~/.mozilla/eclipse or if you have already got such folder, delete the content of that folder.

Today I was involved in writing a test script which supose to simulate a live zope.Start writting it as simillar to other test classes.

[1] http://www.fabioz.com/pydev/manual_adv_remote_debugger.html

Monday, June 16, 2008

DB data and metadata provider

Today I started doing the new and hard part of the project DB data and metadata provider. As usual I ran in to several questions. Since the dependencies have been moved to a different folder. I was not able to run the Python scripts directly form the eclipse editor because it complains missing imports. such as

ImportError: No module named ply

Remote debugging is useful in this case but I was unable to debug the code as specified in here[1]. I was unable to set the path for the pydev.py script and brings me all the problems. So I moved in to other options where I can use options given in the test scripts. For a example in test_skeleton.py script there is a class called testSkeleton. By adding the code block we need to test into that can be used with the options, eg:

bin/test -t testSomething

Then I moved in to look up how to retrieve objects form zope in runtime. I have the references of retrieving such data form the sample application. So I have to continued again from the zope.componet.interface.



[1] http://www.fabioz.com/pydev/manual_adv_remote_debugger.html

Sunday, June 15, 2008

Week end work

In this weekend I faced in to few problems. It was basically about linking the dependencies to the source code because I moved them to a hidden folder.
And I was unable to get a svn update of the code in the repository. Somehow the folder owner ship has been modified to the root privilege. It gave me the following error.

[charith@localhost code]$ svn up
svn: Can't open file '.svn/lock': Permission denied

by using the chown command I was able to recursively change the ownership of all the ".svn" folders.

Then I read some articles in the wikipedia about metadata, publishing them, etc and looked more into catalogs and indexes.

I am using Fedora 9 and suddenly I noticed that I can’t move, minimize, maximize or close windows but I can close them by Quite/ctrl + Q. And terminal is not visible either. It was just a white patch in the desktop. I overcome that problem by disabling the desktop effects.

Friday, June 13, 2008

Week progress report from 6th May to 13th June

Week progress report from 6th May to 13th June


I complete the 1-C sub task of the first step and it is the last sub task. In this step I analyze existing solutions; SQLAlchemy and hurry query. I learned many things which are related to the OCQL project such as using indexes,etc. Here is the outcome of this step. These queries are related to the queries in the manualtest2.py[1] script. http://spreadsheets.google.com/pub?key=p4FAo3s3zEDalLCx3T7dSFQ

I again faced with few difficulties. I was unable to run the tests of OCQL, because of the failures in downloading some dependency files to the local machine. Finally by taking advices from the mentor it was able to run the tests. I set up the environment such that the downloads are placed in a different directory.

[1]
svn://svn.zope.org/repos/main/Sandbox/ocql-foliage/trunk/src/ocql/tests/manualtest2.py

Thursday, June 12, 2008

Running tests

I am able to run the tests in the OCQL today. It gave me some errors initially since some of the dependency files were not properly downloaded to the system. It was happened due to the links didn't work well. Finally I changed the repository to the home folder and able to run tests. I go through the simple execution process to understand the code.

And I confirmed the task for this week by chatting with mentor. Now it get more cleared to me. I was using default chat client in fedora called Pidgin. But it seemed that some chat messages were not delivered to the destination. I need to restart the application several times. Finally I installed the xchat client which is very simple to install and use. You only need to run the following commond to install it from super user mode.
yum install xchat

Tuesday, June 10, 2008

Compare - OCQL, SQLAlchemy and hurry.query

I study more about hurry.query and SQLAlchemy(SQLA) today. I started on writing the document which compares all the three approaches. Today I got the changed time plan from my mentor. We had to schedule it properly since we would be finding problem when he is having his holidays.
I chat with mentor and clarify the doubts I had with these two type(SQLA and hurry.query).

Monday, June 9, 2008

Continue on SQLAlchemy and hurry.query

It was a sympathetic and painful weekend, because one of my batch mate's funeral who was killed by terrorists by a bomb blast. Today I continued with learning SQLAlchemy and hurry.query. I used the on-line tutorials and continued with the examples given in them.
Then I read the article on Dublin Core [1] to understand it. And I went through the emails which were commented for the last week work by the mentor co-ordinator and by my mentor. I got some idea about how people feel on this project.

[1] http://dublincore.org/

Friday, June 6, 2008

Week progress report from 30th May to 6th June

I complete the 1-B sub task of the first step. It's about making the OCQL more Pythonic. I identified the areas which can be made more Pythonic with the help of my mentor. The changes won't disturb the working parser of the OQCL. Here is the results of this step, grammar written in Pythonic way. http://docs.google.com/Doc?docid=dfxg32dk_20dh2sn8hj&hl=en

Then I moved into the next sub step which is about evaluating how the SQLAlchemy[1] and hurry.query[2] can be useful in this project. First I started with the SQLAlchemy and went through the tutorials given in the site[1]. Initially I was following a tutorial for a older version of SQLAlchemy. Then I go through the tutorial for the latest version. Now, I got some understanding about it.

[1] http://www.sqlalchemy.org/
[2]
http://codespeak.net/svn/z3/hurry.query/trunk/src/hurry/query

Tuesday, June 3, 2008

SQLAlchemy and hurry.query

I did move to step 1 -B to 1 -C today. I need to evaluate how the SQLAlchemy and hurry.query could be useful in my project. I go through some articles and seems an interesting topic.

Friday, May 30, 2008

OCQL grammer

Today was a bit hard day. Had to format the computer and reinstall the softwares. So didn't get much time to spend on the project since . Clear some doubts in the task by talking with my mentor. Wrote the weekly report to send to the mentor coordinator regarding the work I did in the last week.

By the time I was very happy today because our results were out today. I got a "First Class" :)

Thursday, May 29, 2008

commit previlages

Today I completed the process for getting the commit privileges. For this process I needed to create a public and private key pair and upload the public key to the Zope site. Creating private and public key pair is pretty simple, here it goes,

$ ssh -keygen -t dsa

This will create a public and private key pair and can be saves in specified path. You can change "dsa" to rsa if we want a RSA key. For further details.

Regrding the project I wrote some grammar rules and discuss with mentor. Google documents really helpful in exchanging content. I download the latest code and run the tests. So I was able to look in to the code how the grammar rules actually been implemented.

Tuesday, May 27, 2008

Officially coding started!!!

According to the time line given by google, codings of the projects started on 26th May. So I started working on the OCQL project. I update my google calender with the tasks I need to do,basically the time line of my project. I included my busy times and shared it with my mentor.
Google seems to be becoming my best friend :)

Now I am working on the process to make the OCQL language more Pythonic. So I am writing some OCQL queries to compare them with Python list comprehensions.

Friday, May 23, 2008

Relations in zope

It's closing to 26th. That is the official date for the students to begin coding for their GSoC projects. And I got a gift from google, an interesting book. These days I am working hard to catch up the basic knowledge, my mentor, Adam Agroszer helping me a lot very time.
Now my application for understanding the zope, has included relations with mentors and projects. Mentors can select a project in the competition.

Here are some important things I learn in last few days.
* I had the following folder structure
/src
/google
google.py
mentor.py
.........

I was unable to give the complete path when I importing the class in the google.py. It was because that the folder and the script had the same name. By changing the folder name to an other name, it worked!!!!


* I am working on the zope distribution. So I add folders and python scripts to it. But for the commits, I copied them to a different folder and commit them. It need to keep in mind what I files I am changing. Since this was not a large project, it was not a big issue. But making a link in the zope folder to the committing solve the problem very easily.

Monday, May 19, 2008

Buddy Example

Buddy Example is described in the programmers_tutorial.pdf to give the basic understanding about the Zope. You can download source code from here. Copy the files in to appropriate folders. Copy buddydemo folder in to the src folder of the Zope distribution and copy buddydemo-configure.zcml in buddy_example/zopeskel/etc/package-includes to Zope by following the same folder structure.

Wednesday, May 14, 2008

New revision of example codes

It's interesting learning Zope. I should thankful for my mentor Adam Groszer for pointing out me the resources in detailed manner. Else I won't be able to catch them very soon. I here list some important resources.
1. http://wiki.zope.org/zope3/programmers_tutorial.pdf
2. http://www.muthukadan.net/docs/zca.pdf
3. http://www.benjiyork.com/quick_start/
4. http://wiki.zope.org/zope3/book.pdf
5. http://www.diveintopython.org

Release 9 of the learning program http://code.google.com/p/learningzope/source/browse/?r=9 is changed with simplified codings with the guidance of my mentor.

For an example in revision8 I have use following code to print organization, their students and mentors.

object = dbroot[key]
if isinstance(object,Organization):
print 'Organization name: ' + object.name
if (object.projects):
for i in range(0,len(object.projects)):
print '\t Project name: ' + object.projects[i].name
print '\t \t Mentor name: ' + object.projects[i].mentor.name
print '\t \t Student: ' + object.projects[i].student.name

But now same functionality is gain by following simple, nice looking code

for key in dbroot.keys():
object = dbroot[key]
object.printYourself()

with new function, printYourself() in suitable classes. Eg:

def printYourself(self):
print
'\t Project name: ' + self.name
print
'\t Mentor name: ' + self.mentor.name
print '\t Student name: ' + self.student.name

refer the http://code.google.com/p/learningzope/ for further information. Go through the revisions to understand the changes.

Enjoy!!!

Thursday, May 1, 2008

Store and retrieve a string in ZODB

Zope Object Database is an object persistent system system written in Python language. It is really easy to store a simple string in the database and retrieve it. I have uploaded the simple example here. Spend few minutes and have a try!!!

Thursday, April 24, 2008

Hello world

I started with learning Zope which is an open source web application server written in Python. Article on What Is Zope clearly describes its functionality, advantages over other similar products, etc. I was able get the basic understanding with Hello world example.

I played around with Zope Object Database(ZODB) as well. It is really interesting!!! A developer who works with relational databases using Java will surely be impressed with how ZODB works. It's very very simple. It won’t take lot of time, try with it and see the difference.

Introduction

Hi all,

I am Charith Paranaliyanage from Sri Lanka. I have been selected for the GSoC 2008 competition for the OCQL a Query Language for ZODB (Phase 0)of Zope Foundation. I hope to continue this site through the project duration to report the project progress.

Comments are welcome!!!