[00:06:39] ** hazmat has left IRC (Read error: 110 (Connection timed out)) [00:49:03] ** hazmat has joined us [01:49:39] ** hazmat has left IRC (Read error: 110 (Connection timed out)) [02:37:44] ** gbay has joined us [04:04:01] [connected at Wed Jun 30 04:04:01 2004] [04:04:01] <> *** Looking up your hostname... [04:04:02] <> *** Checking ident [04:04:03] <> *** Found your hostname [04:04:32] <> *** No identd (auth) response [04:04:32] <> *** Your host is orwell.freenode.net[orwell.freenode.net/6667], running version dancer-ircd-1.0.35 [04:04:32] [I have joined #peak] [04:04:32] ** orwell.freenode.net set the topic to peak - Python Enterprise Application Toolkit | http://peak.telecommunity.com | alpha3 is out !!! [06:19:55] ** gpciceri has joined us [06:38:20] ** gpciceri has left IRC (Read error: 113 (No route to host)) [08:43:31] ** sremington has joined us [08:55:29] ** sremington has left IRC ("bye") [09:39:05] ** hazmat has joined us [09:43:11] ** jack-e has joined us [09:48:23] ** gbay has left IRC (Read error: 60 (Operation timed out)) [10:14:43] ** gbay has joined us [10:46:14] ** Maniac_ has joined us [10:58:43] ** jack-e has left IRC (Remote closed the connection) [12:26:35] ** hazmat has left IRC (Read error: 110 (Connection timed out)) [12:58:11] ** hazmat has joined us [13:58:13] ** sremington has joined us [14:44:13] ** gpciceri has joined us [15:15:44] ** hazmat has left IRC (Read error: 110 (Connection timed out)) [15:46:49] ** hazmat has joined us [16:12:30] ** Maniac_ has left IRC ("Chatzilla 0.9.64b [Mozilla rv:1.7/20040618]") [16:49:36] ** hazmat has left IRC (Connection timed out) [16:54:25] ** hazmat has joined us [17:23:35] ** gpciceri has left IRC ("Leaving") [17:27:31] ** sremington has left IRC ("bye") [19:44:49] ** sremington has joined us [20:18:00] ** Research has joined us [20:23:52] ** Maniac has left IRC (Read error: 104 (Connection reset by peer)) [20:24:28] ** Maniac has joined us [20:31:16] ** Research has left IRC (Remote closed the connection) [20:32:02] ** Reasarx has joined us [21:10:09] ** Maniac has left IRC ("Chatzilla 0.9.64b [Mozilla rv:1.7/20040614]") [21:13:05] ** Maniac has joined us [21:19:32] ** hazmat has left IRC (Connection timed out) [21:21:05] ** hazmat has joined us [21:47:25] ** _jpl_ has joined us [22:22:28] ** oubiwann has joined us [22:26:57] <_jpl_> Greetings [22:27:51] hey man [22:28:42] <_jpl_> So you said you checked out bulletins.ini -- did you see the "bulletins/bulletins" file? [22:28:49] <_jpl_> It's an "executable config file". [22:29:02] <_jpl_> Which is, afaik, a concept unique to PEAK. [22:29:36] looking now... [22:30:25] yes, that's where I started and I was like "where's the model?" :-) [22:31:23] hmmm... I've got a conceptual question -- meaning that if I understood the concepts, I wouldn't have this questions ;-) [22:31:57] this kinda reminds me of twisted .tac files, which is great if I want to run an app [22:32:36] but what if I want to just test pieces of the code, and not run a whole app? [22:36:06] <_jpl_> It's better than Twisted's approach IMO, since it's just a simple text file which makes no pretense at providing persistence. Even the Twisted folks tell you not to actually use .ta* files for persistence. [22:36:10] <_jpl_> (but I digress) [22:36:24] heh [22:36:47] <_jpl_> PEAK installs a 'peak' script which allows you to start PEAK programs using various shortcuts, depending on the implementation. [22:37:05] <_jpl_> For most uses you can do something like this: peak import:foo.bar [22:37:18] ah, that's right... and you can use them interactively like python, too... right? [22:37:42] there's somethnig like a peak shell? [22:37:43] <_jpl_> In what sense do you mean? [22:38:04] <_jpl_> Oh, no, not exactly. It's more of a launcher. [22:38:13] ah [22:38:30] <_jpl_> But there is a shell called the "namespace navigator" (n2) [22:38:55] oh yeah, that was nammed as a pun "into"... [22:39:03] <_jpl_> It's *really* nice, let's you examine and interact with the data at the other end of a PEAK url. [22:39:33] <_jpl_> And if that URL points to a database, you can run SQL commands against it. [22:40:05] <_jpl_> e.g.: peak n2 psycopg:user:pass@server/db [22:40:24] so, if I wanted to start looking at the bulletins example via command line, getting a hands-on feel for how an app works and how to manipulate a data model, any pointers on the best way to begin? [22:40:57] ** hazmat has left IRC (Connection timed out) [22:42:27] <_jpl_> If you've installed PEAK already you should be able to do something like this (from within the main bulletins directory): [22:42:37] <_jpl_> PYTHONPATH=src ./bulletins ... [22:43:46] <_jpl_> Where "..." would be any of the commands the program defines, like "createdb" and "adduser" [22:43:55] <_jpl_> (see bulletins/src/bulletins/commands.py) [22:45:19] <_jpl_> That module is also the best place to see how things actually get done with the peak.storage and peak.model modules. [22:49:12] is there any way to use peak without the config files? What if I want to build and utilize a model within another python program? [22:52:12] <_jpl_> There's no need to use the config files if you don't want to, but they do provide quite a lot of flexibility for end users. [22:52:20] cool [22:52:43] ** Reasarx has left IRC (Read error: 54 (Connection reset by peer)) [22:55:10] <_jpl_> If you look at src/bulletins/app.py, you can see where the settings in the config file meet the application, by way of "PropertyName" in binding.Obtain() attributes. [22:56:48] <_jpl_> That approach allows the user to simply change the databaseURL setting in the config file to point the application to a different database, potentially with a completely different RDBMS if the SQL is portable. [22:58:01] <_jpl_> With the executable config file concept you can also have different config files for different purposes, like one (or more) for testing in addition to those used for production. [23:19:04] ** hazmat has joined us [23:20:20] ** sremington_ has joined us [23:20:35] ** sremington_ has left IRC (Read error: 104 (Connection reset by peer)) [23:22:53] ** sremington_ has joined us [23:27:17] _jpl_, got another question for ya... [23:33:27] <_jpl_> yep [23:34:41] heh... forgot... lemme see... [23:35:58] ah, yes [23:36:57] ** sremington has left IRC (Connection timed out) [23:37:33] in Modeling, once you go through the process of creating a model, you can generate the python classes that represent the model. Then, to modify data in the database, all you have to do is import the package/classes you created. [23:37:51] How would you accomplish the same thing with peak? [23:38:16] sremington_ is now known as sremington [23:44:39] In other words, is there a way to use "only" the generated model (given that there will be all sorts of peak imports in the model itself) [23:46:24] <_jpl_> Sure, if you just want the model classes you'd only need the equivalent of model.py from the bulletins example. [23:46:40] <_jpl_> That's also the module that would be generated from XMI, iiuc. [23:48:14] <_jpl_> With Modeling there's a distinction between the model and the code that implements the model, where PEAK tries as much as possible to make the model and the code one and the same. [23:49:02] awesome :- [23:49:04] ) [23:49:52] <_jpl_> What would need to be added to provide some of Modeling's additional features is metadata describing the model-to-rdbms details, which would be handled by data manager classes. [23:50:50] <_jpl_> wow, that's some pretty bad grammar. [23:51:28] nah, this is irc... there ain't no bad gramer ;-) [23:52:22] <_jpl_> Keep in mind that the domain model approach rightly keeps the object model and the storage model isolated from each other. The needs of each area are usually quite different and have very different modeling practices and realities. [23:53:23] <_jpl_> That separation is also what gives you the ability to use pretty much any storage mechanism you can code for. [23:54:10] yup [23:58:45] <_jpl_> Until there's some peak.model documentation, try instantiating some of the bulletins model classes in the Python interpreter (I highly recommend ipython, if you've not tried it). Then you can examine all the accessor and other methods that show up in an actual model instance. [23:59:22] <_jpl_> The methods beginning with "mdl_" are important to know about. [23:59:51] checking them out now...