You can subscribe to this list here.
| 2001 | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct (35) | Nov (38) | Dec (112) | 
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2002 | Jan (20) | Feb (24) | Mar (47) | Apr (18) | May (28) | Jun (17) | Jul (15) | Aug (40) | Sep (14) | Oct (5) | Nov (26) | Dec (31) | 
| 2003 | Jan (8) | Feb (14) | Mar (38) | Apr (34) | May (33) | Jun (32) | Jul (24) | Aug (9) | Sep | Oct (20) | Nov (43) | Dec (22) | 
| 2004 | Jan (23) | Feb (25) | Mar (15) | Apr (3) | May (31) | Jun (13) | Jul (3) | Aug (3) | Sep (13) | Oct (15) | Nov (3) | Dec (5) | 
| 2005 | Jan | Feb | Mar (16) | Apr (24) | May | Jun (2) | Jul | Aug (5) | Sep (4) | Oct | Nov (3) | Dec (2) | 
| 2006 | Jan | Feb (1) | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec | 
| 
      
      
      From: Chris W. <ch...@cw...> - 2001-12-03 03:03:50
      
     | 
| * Andreas Nolte (And...@Be...) [011201 16:34]: > has anyone of you used OI with mysql and the GEMINI table type? We > have some concurrency problems, since we have a lot of updates and > inserts with auto_increment columns. The docs of mysql say, that > MyISAM talbes ( the default ) lock the whole table, before an > auto_increment insert can be made - this hurts performance badly in > our environment, where multiple users do updates / inserts at the > same time. I'd never heard this before, that it locks the whole table. Sheesh. Another alternative is dumping auto-incrementing fields entirely and using something else -- it probably wouldn't be too difficult to create a socket server (in Perl even!) to generate unique IDs. But this might have bigger problems that using the Gemini/InnoDB tables -- another point of failure, etc. Good luck Chris -- Chris Winters (ch...@cw...) Building enterprise-capable snack solutions since 1988. | 
| 
      
      
      From: Chris W. <ch...@cw...> - 2001-12-02 23:09:56
      
     | 
| * ra...@ma... (ra...@ma...) [011202 17:52]:
> perhaps in 
>   base_page-0.40/conf/spops.perl
> in the entry
>   'content_type' => {
> there is missing a line
>        no_insert    => [ qw/ content_type_id / ],
> 
> Error messages popping up during 
>   oi_manage install_sql --package=INITIAL
> for PostgreSQL vanish after inserting.
Thanks -- nice catch! This would only affect DBs with post-insert auto
IDs (like Pg or Sybase/MS SQL). I'll update the package (along with a
number of other items) and post it to the site.
This is a good opportunity to mention that I plan on putting updated
packages on the Sourceforge site for separate download if people are
interested. The 'Extra Packages' section should get filled in very
soon as well, so there will be more ready-built applications for
people to play with.
More later...
Chris
-- 
Chris Winters (ch...@cw...)
Building enterprise-capable snack solutions since 1988.
 | 
| 
      
      
      From: Drew T. <dr...@dr...> - 2001-12-02 05:03:31
      
     | 
| You might want to also try the InnoBase table handler w/ MySQL. It is also free and uses row locking. In addition, it is ACID compliant. See http://www.innodb.com/ for more details. Slashdot uses it because they were also running into concurrency issues. Drew At 10:23 PM 12/1/2001 +0100, And...@Be... wrote: >Hey, > >has anyone of you used OI with mysql and the GEMINI table type? We have some >concurrency problems, since we have a lot of updates and inserts with >auto_increment columns. The docs of mysql say, that MyISAM talbes ( the >default ) lock the whole table, before an auto_increment insert can be made >- this hurts performance badly in our environment, where multiple users do >updates / inserts at the same time. > >What the GEMINI docs say, sound like this would be the ideal solution. >Still: anybody made some experiences? > >Thanks for your time, > >regards, > >Andreas > >_______________________________________________ >openinteract-help mailing list >ope...@li... >https://lists.sourceforge.net/lists/listinfo/openinteract-help Drew Taylor JA[P|m_p|SQL]H http://www.drewtaylor.com/ Just Another Perl|mod_perl|SQL Hacker mailto:dr...@dr... *** God bless America! *** ICQ: 135298242 | 
| 
      
      
      From: <And...@Be...> - 2001-12-01 21:24:26
      
     | 
| Hey, has anyone of you used OI with mysql and the GEMINI table type? We have some concurrency problems, since we have a lot of updates and inserts with auto_increment columns. The docs of mysql say, that MyISAM talbes ( the default ) lock the whole table, before an auto_increment insert can be made - this hurts performance badly in our environment, where multiple users do updates / inserts at the same time. What the GEMINI docs say, sound like this would be the ideal solution. Still: anybody made some experiences? Thanks for your time, regards, Andreas | 
| 
      
      
      From: <And...@Be...> - 2001-12-01 17:54:12
      
     | 
| Hey, now that we use OI in a production evironment for a month or so under heavy load, we see some concurrency problems, which do not lead to errors, but to in part slow performance, if many users are active. What I suspect are locking / concurrency issues especially on sys_security. How do y`all "tune" your mysql? Any hints anyone? Did s.o. see this, also or otherwise know about this issue? Thanks, Andreas | 
| 
      
      
      From: Chris W. <ch...@cw...> - 2001-11-30 22:47:29
      
     | 
| * Victor Piterbarg (ope...@ha...) [011130 17:00]: > I discovered OI a couple of weeks ago, while searching for a nice > Perl-based application framework. I am faced with a project where I > need to implement a basic shopping-cart system, and I would like to > do it within the OI framework. Has anyone attempted anything like > this? If so, I would appreciate any suggestions. Actually, I've implemented a fairly simple shopping cart and product system, and it's going to be open-sourced and released as soon as I get some motivation/time. Your email is a great start :-) Let me know if you're interested in a big head start and you can test it out before it gets released. > Additionally, I've been wasting away at #openinteract on IRCNet, > doesn't seem to be very popular...I'm the only one there. Thanks. These sorts of things seem to need a critical mass, and we've never gotten that on IRC. If people are interested we can start by specifying a particular time and duration when people will be there. I'd be interested to see how it goes, although I'm a little fearful that it will be yet another timesuck :-) Chris -- Chris Winters (ch...@cw...) Building enterprise-capable snack solutions since 1988. | 
| 
      
      
      From: Victor P. <ope...@ha...> - 2001-11-30 21:50:44
      
     | 
| Hello, I discovered OI a couple of weeks ago, while searching for a nice Perl-based application framework. I am faced with a project where I need to implement a basic shopping-cart system, and I would like to do it within the OI framework. Has anyone attempted anything like this? If so, I would appreciate any suggestions. Additionally, I've been wasting away at #openinteract on IRCNet, doesn't seem to be very popular...I'm the only one there. Thanks. -Victor ---- "Tatarsky, of course, hated most of the manifestations of Soviet power, but he still couldn't understand why it was worth exchanging an evil empire for an evil banana republic" --Viktor Pelevin, Generation P. | 
| 
      
      
      From: Chris W. <ch...@cw...> - 2001-11-30 15:35:53
      
     | 
| Randal just pointed out to me that running under 5.005_03 you get an
error in OpenInteract::Startup:
---------------
Not enough arguments for mkdir at
/usr/lib/perl5/site_perl/5.005/OpenInteract/Startup.pm line 250, near
"$lib_dir )"
---------------
In 5.005x mkdir() takes two arguments (NAME, MASK) but in 5.6x the
second argument is optional, defaulting to 0777.
The fix is simple:
*** Startup.pm~	Wed Nov 28 00:55:07 2001
--- Startup.pm	Fri Nov 30 10:22:22 2001
----------------------------------------
*** 247,253 ****
      unshift @INC, $lib_dir;
  
      File::Path::rmtree( $lib_dir ) if ( -d $lib_dir );
!     mkdir( $lib_dir );
  
      my $site_repos = $REPOS_CLASS->fetch( undef,
                                            { directory => $base_config->{website_dir} } );
--- 247,253 ----
      unshift @INC, $lib_dir;
  
      File::Path::rmtree( $lib_dir ) if ( -d $lib_dir );
!     mkdir( $lib_dir, 0777 );
  
      my $site_repos = $REPOS_CLASS->fetch( undef,
                                            { directory => $base_config->{website_dir} } );
----------------------------------------
and has already been made in CVS. While the system won't run without
OpenInteract::Startup, I'm ambivalent about issuing a new release for
just this. What do you think?
Chris
-- 
Chris Winters (ch...@cw...)
Building enterprise-capable snack solutions since 1988.
 | 
| 
      
      
      From: Chris W. <ch...@cw...> - 2001-11-30 11:15:06
      
     | 
| * tom poe (to...@re...) [011130 00:37]: > Anyway, here's my question. I am running SuSE7.1, Apache1.3.14, > mod_perl1.24-99, perl5.6.0 at /usr/bin/perl and perl5.6.1 at > /usr/local/bin/perl [don't ask, as I really thought cpan would > overwrite 5.6.0, rather than install separately]. I can run cgi-bin > scripts with: http://localhost/httpd/cgi-bin/somefile.cgi or .pl at > this time. As you know, permissions is a big thing. Sure. > Specifically, if I install OpenInteract as $, rather than #, and put > it someplace outside of documentRoot for apache, will that be what I > do if I am simply installing on my machine for development purposes? > Something tells me I sort of need to coordinate this with installing > within the documentRoot directory as root #. What's your > suggestion? Thanks, Tom Not a problem. You can use the normal perl mechanism for installing modules to a local directory (e.g. 'perl Makefile.PL PREFIX=~/lib'). And then use a local directory for your OpenInteract base installation (e.g., 'oi_manage install --base_dir=~/OpenInteract'). You should then be able to create local sites to your heart's content, as long as Apache can put your local library directory (~/lib) in its @INC. (A '<Perl>use lib qw( /home/tompoe/lib )</Perl>' section would likely do the trick.) Note that OpenInteract currently does not run under CGI -- it requires mod_perl. I hope to change this in the relatively near future. Hope this helps, Chris -- Chris Winters (ch...@cw...) Building enterprise-capable snack solutions since 1988. | 
| 
      
      
      From: Chris W. <ch...@cw...> - 2001-11-28 06:18:56
      
     | 
| * John Sequeira (js...@me...) [011127 13:22]: > I'm interested in putting up a small client site with Openinteract and I'd > like to know if anyone can recommend an ISP who can support OI and it's > dependencies? > > My client's requirements are: > MySQL or PostgreSQL back end > Storage: < 30M > B/W: <500M/mo > Decents stats (analog/Magic Report) > Ideally located in Mass/New England area > Price Range (the tough one, I think) <$50/mo > > A first hand experience would be ideal (i.e."I've had a great > experience with these folks supporting OI"), but I'll settle for a > "Hey - these guys seem to offer it." referral. I'd think the main problem hosting sites might have with OpenInteract is the same they'd have with mod_perl in general -- you really need a set of mod_perl servers per client. Otherwise, since the namespaces and variables are all available, it's trivial for someone with malicious intent to really screw things up. You might try checking out what other folks host other mod_perl app server packages. A few that come to mind are: Mason - http://www.masonhq.com/ Scoop - http://scoop.kuro5hin.org/ Slash - http://www.slashcode.com/ If you contact any hosting folks and they have questions about OpenInteract, feel free to give them my email. And let us know if you find anything! :-) Chris -- Chris Winters (ch...@cw...) Building enterprise-capable snack solutions since 1988. | 
| 
      
      
      From: John S. <js...@me...> - 2001-11-27 18:12:22
      
     | 
| I'm interested in putting up a small client site with Openinteract and I'd like to know if anyone can recommend an ISP who can support OI and it's dependencies? My client's requirements are: MySQL or PostgreSQL back end Storage: < 30M B/W: <500M/mo Decents stats (analog/Magic Report) Ideally located in Mass/New England area Price Range (the tough one, I think) <$50/mo A first hand experience would be ideal (i.e."I've had a great experience with these folks supporting OI"), but I'll settle for a "Hey - these guys seem to offer it." referral. Thanks in advance, John Sequeira http://www.pobox.com/~johnseq jo...@po... | 
| 
      
      
      From: Chris W. <ch...@cw...> - 2001-11-19 15:48:24
      
     | 
| * Jochen Lillich (jl...@te...) [011119 10:45]:
> Which is the fastest way of finding out if user X is in group Y? I
> didn't find a ready-to-use function.
Good question. It would probably be a good idea to make this part of
the user class. In OpenInteract we can do something like (untested):
sub is_in_group {
    my ( $self, $group_spec ) = @_;
    my $check_group_id = ( ref $group_spec )
                           ? $group_spec->id : $group_spec;
    foreach my $group ( @{ $R->{auth}{group} } ) {
        return 1 if ( $group->id == $check_group_id );
    }
    return undef;
}
I'll probably stick this into base_user before the next OI release.
As a sidenote, I've been thinking it would probably be a good idea to
make most (if not all) of the functionality of $R available through
methods rather than through direct hash accesses. So the above might
look something like:
    foreach my $group ( $R->login_group ) {
instead. We'll see how this goes...
Chris
 | 
| 
      
      
      From: Jochen L. <jl...@te...> - 2001-11-19 15:30:13
      
     | 
| Hi!
Which is the fastest way of finding out if user X is in group Y? I
didn't find a ready-to-use function.
Best regards,
        Jochen
-- 
----------------------------------------------------------------
 *Jochen Lillich*, Dipl.-Inform. (FH) 
 Consultant/Trainer @ /TeamLinux GbR/
 Tel. +49 7255 76784-12                 http://www.teamlinux.de
----------------------------------------------------------------
 | 
| 
      
      
      From: Chris W. <ch...@cw...> - 2001-11-06 12:53:41
      
     | 
| * Andreas Nolte (And...@Be...) [011106 07:55]: > Hi Chris, > > no, we do not use field discovery. Which files do I need to update? Well, just try OpenInteract::Session::DBI and see what happens -- that's the most localized and simplest change, and is specific to MySQL. (Patch attached if you don't want to grab from CVS.) The other changes are a little more involved -- most of OpenInteract::ApacheStartup has been rewritten, and you'll need to make a couple of simple Apache configuration changes. Chris -- Chris Winters (ch...@cw...) Building enterprise-capable snack solutions since 1988. | 
| 
      
      
      From: <And...@Be...> - 2001-11-06 12:48:54
      
     | 
| Hi Chris, no, we do not use field discovery. Which files do I need to update? regards, Andreas -----Urspr=FCngliche Nachricht----- Von: Chris Winters [mailto:ch...@cw...] Gesendet am: Dienstag, 6. November 2001 13:56 An: And...@Be... Cc: ope...@li... Betreff: Re: [Openinteract-help] Update problem 1.21 -> 1.30 * Andreas Nolte (And...@Be...) [011106 03:29]: > Hi Chris, >=20 > just to be sure you got that right: removing Apache::DBI from the apache.dat > load list did not change anything. Is it possible, that the saved db handle > cannot get found again? I also modified OpenInteract::Session::DBI slightly to ensure we're using the right database handle. This may or may not solve your problem I can send a copy to you or you can get it via CVS. Another question: Are you using any of the field discovery abilities of SPOPS? (That is, not specifying any fields in the SPOPS object configuration but telling SPOPS to go out and find the fields itself.) I think the problem is that a database handle gets created at server startup, which is a bad thing. Later, Chris --=20 Chris Winters (ch...@cw...) Building enterprise-capable snack solutions since 1988. | 
| 
      
      
      From: Chris W. <ch...@cw...> - 2001-11-06 12:37:57
      
     | 
| * Andreas Nolte (And...@Be...) [011106 03:29]: > Hi Chris, > > just to be sure you got that right: removing Apache::DBI from the apache.dat > load list did not change anything. Is it possible, that the saved db handle > cannot get found again? I also modified OpenInteract::Session::DBI slightly to ensure we're using the right database handle. This may or may not solve your problem I can send a copy to you or you can get it via CVS. Another question: Are you using any of the field discovery abilities of SPOPS? (That is, not specifying any fields in the SPOPS object configuration but telling SPOPS to go out and find the fields itself.) I think the problem is that a database handle gets created at server startup, which is a bad thing. Later, Chris -- Chris Winters (ch...@cw...) Building enterprise-capable snack solutions since 1988. | 
| 
      
      
      From: <And...@Be...> - 2001-11-06 08:22:13
      
     | 
| Hi Chris, just to be sure you got that right: removing Apache::DBI from the = apache.dat load list did not change anything. Is it possible, that the saved db = handle cannot get found again? later, Andreas -----Urspr=FCngliche Nachricht----- Von: Chris Winters [mailto:ch...@cw...] Gesendet: Dienstag, 6. November 2001 07:23 An: And...@Be... Cc: ope...@li... Betreff: Re: [Openinteract-help] Update problem 1.21 -> 1.30 * Andreas Nolte (And...@Be...) [011105 06:23]: >=20 > Hi Chris, >=20 > we use mysql without transactions but with Apache::DBI 0.88. = Commenting out > the use of Apache::DBI did not change anything. From what the logfile = with > DEBUG=3D5 told me, the sessions seem to get retrieved OK. I'm in the midst of modifying OpenInteact::ApacheStartup to use a more traditional child initialization handler, and with that it appears that Apache::DBI is working properly in conjunction with OI. It requires a couple of Apache config changes (adding a PerlSetVar and moving another), but they're quite minor. I should be able to test this more and get it committed to CVS tomorrow. Chris --=20 Chris Winters (ch...@cw...) Building enterprise-capable snack solutions since 1988. | 
| 
      
      
      From: Chris W. <ch...@cw...> - 2001-11-06 08:22:09
      
     | 
| * Andreas Nolte (And...@Be...) [011105 06:23]: > > Hi Chris, > > we use mysql without transactions but with Apache::DBI 0.88. Commenting out > the use of Apache::DBI did not change anything. From what the logfile with > DEBUG=5 told me, the sessions seem to get retrieved OK. I'm in the midst of modifying OpenInteact::ApacheStartup to use a more traditional child initialization handler, and with that it appears that Apache::DBI is working properly in conjunction with OI. It requires a couple of Apache config changes (adding a PerlSetVar and moving another), but they're quite minor. I should be able to test this more and get it committed to CVS tomorrow. Chris -- Chris Winters (ch...@cw...) Building enterprise-capable snack solutions since 1988. | 
| 
      
      
      From: Chris W. <ch...@cw...> - 2001-11-05 13:44:14
      
     | 
| * Andreas Nolte (And...@Be...) [011105 06:23]: > > Hi Chris, > > we use mysql without transactions but with Apache::DBI 0.88. Commenting out > the use of Apache::DBI did not change anything. From what the logfile with > DEBUG=5 told me, the sessions seem to get retrieved OK. The fact that you're using Apache::DBI means something isn't working right, and after some quick experiments here, I think it has to do with how OpenInteract starts up DBI. I'm not able to look into it right now but should be able to do so tonight. Chris -- Chris Winters (ch...@cw...) Building enterprise-capable snack solutions since 1988. | 
| 
      
      
      From: <And...@Be...> - 2001-11-05 11:16:26
      
     | 
| Hi Chris, we use mysql without transactions but with Apache::DBI 0.88. Commenting = out the use of Apache::DBI did not change anything. From what the logfile = with DEBUG=3D5 told me, the sessions seem to get retrieved OK. later, Andreas -----Urspr=FCngliche Nachricht----- Von: Chris Winters [mailto:ch...@cw...] Gesendet: Freitag, 2. November 2001 19:05 An: And...@Be... Cc: ope...@li... Betreff: Re: [Openinteract-help] Update problem 1.21 -> 1.30 * Andreas Nolte (And...@Be...) [011102 11:10]: > .. that`s the strange part: I do not get that many error messages, it = is > just slow! >=20 > The only thing I get is: >=20 > Issuing rollback() for database handle being DESTROY'd without = explicit > disconnect() at /msn/oit/oit/Stash.pm line 33. >=20 > several 100 times. The template cache seams to work OK, so far, since *.ttc > files are generated there. >=20 > The strangest part is, that it seems to appear only in some sessions = and if > multiple users are working. I am not sure yet, if this has to do with = OI 1.3 > at all - that`s why I`d like to know, if anyone has seen s.th like = this. >=20 > My suspicion is though, that it has to do either with database = connections > not being released ( 11 httpds are using 117 mysqlds right now ) or = s.th. > within the session handling. I think I might know what the problem is. A couple questions: 1) What database/DBD are you using? 2) Are you using transactions? (Setting AutoCommit to false) 3) Are you using Apache::DBI? Chris --=20 Chris Winters (ch...@cw...) Building enterprise-capable snack solutions since 1988. | 
| 
      
      
      From: Chris W. <ch...@cw...> - 2001-11-05 05:52:46
      
     | 
| * Terrence Brannon (bl...@sv...) [011105 00:47]: > i havent dealt with it in awhile. Jswartz, who is using Class::DBI, > might be able to chime in with some input. > > my first thought on the subject is that Storable uses a binary format > for storage , so a BLOB field in a database might work... just a thought. Sure, that's one way. And in fact this would be pretty simple to implement now using the method I mentioned in the previous email. > the other obvious thing is to store several rows per object, one row > per array element. Sure. It might be interesting to code this using the pre-save and post-fetch methodology I mentioned earlier. You might be interested to poke around a bit with ESPOPS, which is at: http://www.pserc.cornell.edu/ESPOPS/ESPOPS-0.4.tar.gz This work will be folded into SPOPS in the hopefully near future. Chris -- Chris Winters (ch...@cw...) Building enterprise-capable snack solutions since 1988. | 
| 
      
      
      From: Chris W. <ch...@cw...> - 2001-11-05 05:47:18
      
     | 
| * Terrence Brannon (bl...@sv...) [011105 00:44]:
> the words "storage technology" should tell you. it is the isa field
> that makes no sense in an application layer. any such storage info
> should be sequestered to the database layer and the application
> layer should know nothing about it.
Again, I disagree with 'no sense' and such strict pronouncements. If
that's not the way you want to do it, great. This is another area
where SPOPS allows you to do this in multiple ways. The simplest, and
most often implemented, is to specify the driver you're using in the
object configuration itself.
But you can also create in our application parent classes that know
about the specific storage technology being used and then simply refer
to the parent from the object configuration. For instance, you can
define a parent:
 package MyApp::Storage::Main;
 @MyApp::Storage::Main::ISA = qw( SPOPS::DBI::Pg SPOPS::DBI );
 ...
And then in the child define:
 object => {
   isa => [ 'MyApp::Storage::Main' ],
 }
And you've now isolated the object from where its objects are being
stored -- you can move from Postgres to Sybase by modifying your ISA
in MyApp::Storage::Main and the children objects will never know the
difference.
Chris
-- 
Chris Winters (ch...@cw...)
Building enterprise-capable snack solutions since 1988.
 | 
| 
      
      
      From: Terrence B. <bl...@sv...> - 2001-11-05 05:41:31
      
     | 
| On Sunday, November 4, 2001, at 09:30 PM, Chris Winters wrote: > * Terrence Brannon (bl...@sv...) [011104 16:07]: >> In his quest for a spot in the Guiness Book of World Records for most >> annoying posts to the same mailing list in one day, Terrence Brannon >> returneth with: >> >> "in most applications it will be desirable to have strict fields >> enabled >> right? >> >> I think it should be the default." > > I disagree. I think the default should be as permissive as possible so > SPOPS doesn't stand in the way of quick-and-dirty uses. (I know people > It's kind of like changing Perl itself from having a 'use strict' pragma to having a 'use easygoing'... in other words, making use strict the default. | 
| 
      
      
      From: Terrence B. <bl...@sv...> - 2001-11-05 05:40:14
      
     | 
| On Sunday, November 4, 2001, at 09:28 PM, Chris Winters wrote: > * Terrence Brannon (bl...@sv...) [011104 15:30]: >> SPOPS::Manual::Object does not state that multivalued fields are >> emulated for databases... does it emulate them? > > Nope. Multivalued fields are relatively new and are only implemented > in the LDAP datastore right now. > >> If not, what are we supposed to do when using CGI.pm and we get back >> a param() which returns us an array ref? > > Good question. How do you deal with it now? i havent dealt with it in awhile. Jswartz, who is using Class::DBI, might be able to chime in with some input. my first thought on the subject is that Storable uses a binary format for storage , so a BLOB field in a database might work... just a thought. the other obvious thing is to store several rows per object, one row per array element. | 
| 
      
      
      From: Terrence B. <bl...@sv...> - 2001-11-05 05:37:36
      
     | 
| On Sunday, November 4, 2001, at 09:21 PM, Chris Winters wrote:
> * Terrence Brannon (bl...@sv...) [011104 15:21]:
>>   1: $spops = {
>>   2:      html_page => {
>>   3:          class        => 'My::HTMLPage',
>>   4:          isa          => [ qw/ SPOPS::DBI::Pg SPOPS::DBI / ],
>>   5:          field        => [ qw/ page_id location title author 
>> content / ],
>>   6:          column_group => { listing => [ qw/ location title 
>> author / ] },
>>   7:          ...
>>   8:     },
>>   9: };
>>
>> has storage-technology-dependant stuff in the app layer.
>
> Which part are you referring to? The 'column_group' configuration
> item, or the 'content' property?
the words "storage technology" should tell you. it is the isa field that 
makes no sense in an application layer. any such storage info should be 
sequestered to the database layer and the application layer should know 
nothing about it.
 |