Hopbot log for 2007-11-24 - Helma IRC channel: #helma on irc.freenode.net

2007-11-24:

[20:41] <zumbrunn> I removed the new jsdoc-toolkit based reference I had temporarily put at /reference/toolkit/
[20:41] <zumbrunn> and I now updated the version at http://helma.zumbrunn.net/reference/
[20:41] <zumbrunn> (not finished yet, though)
[20:42] <zumbrunn> but if you notice something really goofy, please let me know
[20:47] <bslivka> oooh new docs
[20:48] <zumbrunn> the difference is more technical than content
[20:49] <bslivka> sure
[20:49] <zumbrunn> it is updated and contains some fixes, though
[20:49] <zumbrunn> (the last one on the site was from July)
[20:51] <bslivka> have you ever used Javascrip getters and setters on hopobjects?
[20:52] <zumbrunn> trying to remember
[20:52] <zumbrunn> not on hopobjects directly, I don't think
[20:53] <zumbrunn> just on object properties of hopobjects
[20:53] <zumbrunn> it doesn't work?
[20:53] <bslivka> hrmn I haven't tried object properties yet. How are they persisted in the DB?
[20:53] <bslivka> Well I don't know whether it works yet or not.
[20:54] <zumbrunn> not at all, unless you take care of it yourself in onPersist
[20:54] <bslivka> I was considering using it as I'm trying something moderately complex in helma, and I'm not yet 100% sure if it's possible.
[20:54] <zumbrunn> what's that?
[20:55] <bslivka> Well- There's this book written by Chris Date and I think his name is Nick Lorentzo
[20:55] <bslivka> I haven't read it, but I understand the basic principal it pushes..
[20:56] <bslivka> The idea is temporal databases, and the purpose of the book was to inform some extension to SQL
[20:56] <bslivka> but it can be done without any extensions as well.
[20:56] <bslivka> The idea is that with each entity in the database, you store two date intervals
[20:57] <bslivka> and each item has an ID that identifies it through out time, and another id that identifies each change
[20:58] <bslivka> one interval identifies when an object was changed- Or put another way, when the object was in that state in the database
[20:58] <bslivka> and the other when the fact represented by that object was true
[20:59] <bslivka> For my purposes I really only need the first interval
[20:59] <bslivka> The end result I'm going for is that the database never recieves any delete queries
[20:59] <bslivka> the database not only stores the current state of the system, but all previous states
[21:00] <bslivka> so you can arbitrarily roll back at any time, and view what the state of the system was at any point in its history
[21:01] <zumbrunn> in a sense, you already have a "getter " and "setter" for hopobjects through onInit and onPersist
[21:01] <bslivka> that may well be better than getters and setters
[21:01] <zumbrunn> in the context you are talking about, yes
[21:01] <bslivka> if I were to do getters and setters I would have to set it up for every property
[21:02] <zumbrunn> right
[21:02] <bslivka> the main thing I want to capture is object modifications
[21:02] <bslivka> What needs to happen when a property changes is that the end interval for that object needs to be set for now, and a new object created in its place with the new properties
[21:03] <bslivka> I'll have a closer look at onInit here... on the fancy new docs
[21:04] <zumbrunn> hehe
[21:06] <bslivka> so onInit is only called when a hopObject is fetched from the DB
[21:06] <zumbrunn> right
[21:08] <bslivka> and onPersist is the inverse. If I did SomeHopObject.property1="foo", onPersist would be called, yes?
[21:08] <zumbrunn> when the change is persisted
[21:09] <zumbrunn> usually at the end of a request
[21:09] <bslivka> ah
[21:09] <bslivka> that's right, I encountered that the other day.
[21:10] <bslivka> I was doing XML parsing into a database- and when one of my functions threw an error, nothing would be persisted
[21:10] <bslivka> which was a good thing, because I'd hate to have half an XML document to clean out of my DB
[21:12] <zumbrunn> otherwise: http://helma.zumbrunn.net/reference/res.html#res.commit
[21:12] <bslivka> now what would make this much easier is if the filter property were dynamic
[21:13] <zumbrunn> which filter property?
[21:13] <bslivka> in type.properties.
[21:13] <zumbrunn> oh
[21:13] <bslivka> If I wanted a hopobject collection from a certain date, I could change the filter property for that collection
[21:15] <zumbrunn> asking on the mailing list could be worth while for that
[21:16] <bslivka> good idea. Paid off last time I wrote to the mailing list.
[21:16] <zumbrunn> there are a lot of undocumented type.properties related tricks I don't know about
[21:17] <zumbrunn> afk, time for dinner
[21:17] <bslivka> This was a features that my boss (an experienced helma user) wanted was something like a filterBy(), similar to the orderBy() function
[21:17] <bslivka> as it would be useful for many other things as well
[21:18] <bslivka> So I'm not sure that it exists, but it's something he wanted to request from hannes

 

 

In the channel now:

Logs by date: