moo---_ | ToreadorVampire: correct | 00:00 |
---|---|---|
*** TomBlockley has joined #zope | 00:00 | |
moo---_ | as far as I know it just calls it without parameteres | 00:00 |
moo---_ | and throws exception if parameters are needed | 00:00 |
moo---_ | ToreadorVampire: does C# has anything like ZODB where automatic object traversing is possible? | 00:00 |
moo---_ | or "magical" traversing | 00:00 |
ToreadorVampire | moo---_: Yes, and yes - two ways | 00:01 |
ToreadorVampire | In "old C#" (as you'd find available in the repositories of stable Linux distributions) version 2.0 there is the idea of reflection - it's not very elegant but it allows me to do what I need to do | 00:01 |
moo---_ | we are talking about mono here? | 00:02 |
* moo---_ is huge fan of MonoTouch which shows the amazing power C# has | 00:02 | |
ToreadorVampire | In newer C# (version 4.0 and up, too new for stable versions of mono at the moment) there is also dynamic typing, which I believe would also be capable of the job | 00:02 |
ToreadorVampire | Yes, mono | 00:02 |
ToreadorVampire | But tbh, since I don't develop for bleeding-edge mono - and C# 4.0's dynamic typing stuff is actually just syntactic sugar for reflection - I am using reflection | 00:03 |
moo---_ | how about db itself? | 00:03 |
moo---_ | object oriented databases as mature as ZODB for c#? | 00:03 |
moo---_ | or do you think object should expose traversing explicit through interface little like repoze.bfg? | 00:04 |
ToreadorVampire | Oh, well - that doesn't matter so much to me - I'm only really interested in the page templating mechanism at the moment. For the back-end (business logic and repository code) I'm quite happy with what I have already | 00:04 |
moo---_ | I hope there would be someting like Plone for C# / .NET environment on some day | 00:05 |
ToreadorVampire | Oh - no, I wasn't going to tie the page templating system directly to the database - through the patterns I already follow, I already have an abstraction layer between the page templates and database | 00:06 |
moo---_ | python is getting rusty, I like new C# with all that syntatic suger very much | 00:06 |
moo---_ | LINQ and stuff | 00:06 |
ToreadorVampire | Mmm, again - LINQ is too new for me | 00:06 |
ToreadorVampire | I have it on my "must check this out" list | 00:06 |
ToreadorVampire | But currently C# 2.0 is the newest version available in the version of mono included in Debian Stable | 00:06 |
ToreadorVampire | And I use Debian Stable as my marker for my target platform | 00:07 |
moo---_ | newest and debian stable are hard to fit to the same sentence | 00:07 |
* ToreadorVampire realises that he can get a newer mono version - 2.4 IIRC if I permit myself to use backports, but I don't permit myself that | 00:07 | |
ToreadorVampire | I use Debian stable for a reason - it's ... stable :D | 00:08 |
bitmonk1 | moo---_: i've thought of building some zope-like concepts on C#, though truly IL is what you want to target. as for LINQ, it only seems like such a big deal because in C#, everything has to be stamped by Microsoft, or noone will use it. | 00:08 |
ToreadorVampire | Anyway | 00:08 |
bitmonk1 | LINQ doesn't do anything particularly special.. | 00:08 |
moo---_ | bitmonk1: it is "standard" | 00:08 |
moo---_ | learn once | 00:09 |
* bitmonk1 chuckles at the thought | 00:09 | |
ToreadorVampire | No, it's not really much more than an ORM (assuming that LINQ-to-SQL is what you're really excited about) | 00:09 |
bitmonk1 | learn once, spend the rest of your career whining about the design decisions you couldn't participate in.. | 00:09 |
ToreadorVampire | Hrm | 00:09 |
bitmonk1 | even Miguel and the Mono team largely have their hands tied wrt innovation | 00:09 |
* bitmonk1 interviewed for the Mono team some years ago ;) | 00:09 | |
moo---_ | in any case... every system needs a database. I hope when PloneNG is build it would run on App Engine using C# :) | 00:10 |
ToreadorVampire | I suppose that if I tried to handle methods with parameters in TALES then I am going to get bitten in the bum by method overloads - which overload do I choose etc | 00:10 |
moo---_ | so low end deployment would be trivial | 00:10 |
bitmonk1 | sure just convince google to use CLR and you're off ;d | 00:11 |
ToreadorVampire | Although | 00:11 |
moo---_ | bitmonk1: exactly :P | 00:11 |
bitmonk1 | though, you can deploy basically CLR-style apps on JVM, is the point i was making. | 00:11 |
bitmonk1 | moo---_: not sure you picked up on the sarcasm | 00:11 |
ToreadorVampire | I could use a custom attribute :D | 00:11 |
ToreadorVampire | And that would allow me to mark (alias) a specific method as the one to use for TALES | 00:11 |
ToreadorVampire | I could use the same for parameterised properties too | 00:12 |
ToreadorVampire | So: | 00:12 |
ToreadorVampire | [TalesAlias("member")] public MyMember GetMember(string username) {} | 00:12 |
moo---_ | bitmonk1: well... there is nothing more for me to do to become Google App Engine Chief Architech and make my call :) | 00:12 |
bitmonk1 | ToreadorVampire: again, remember that C# is not the CLR, C# is the proof-of-concept specification. You can use IronPython, PyPy, Boo, Nemerle, tons of languages out there which all compile/translate to the same Intermediate Language for execution | 00:12 |
bitmonk1 | and IL has features that C# does not take advantage of, as the JVM has features Java does not take advantage of.. | 00:13 |
ToreadorVampire | bitmonk1: Indeed - but I know C# a LOT better than any of the other languages you mentioned | 00:13 |
bitmonk1 | moo---_: word on the street is that appengine falls over every time there's a NASCAR race. build your own. ;) | 00:13 |
bitmonk1 | ToreadorVampire: you don't know python? | 00:13 |
ToreadorVampire | No, not enough to write it | 00:13 |
moo---_ | wow. and you hang on #zope :) | 00:14 |
ToreadorVampire | I don't "hang" on zope | 00:14 |
bitmonk1 | ah okay, scrolled up a bit | 00:14 |
ToreadorVampire | I came here to ask a specific question :p | 00:14 |
bitmonk1 | working on TAL in C#, I might be interested to help there.. | 00:14 |
moo---_ | there is TAL for PHP | 00:14 |
* ToreadorVampire is aware, but hates PHP even more than he hates aspx | 00:14 | |
ToreadorVampire | Any language that passes objects and arrays around by value rather than by reference (as their default behaviour) needs to be taken out and shot :( | 00:15 |
bitmonk1 | so, yeah, you might be able to decorate a c# method as the one you want TAL to talk to, but in general, you should bind the template to a view class, and just say, view classes and tal won't work properly with overloaded methods. there's nothing wrong with convention. | 00:15 |
* bitmonk1 gives ToreadorVampire +1 brownie point to cancel out not knowing python very well ;d | 00:15 | |
bitmonk1 | also, i guess, overloading should be based on paramaters.. so if you tal:content="something/getSomething", then you want a method which accepts zero arguments | 00:16 |
bitmonk1 | it's the same as just calling something.getSomething() | 00:16 |
ToreadorVampire | I have always said that if I could go back in time by 5 years, I'd have suggested I buy a book on .py rather than a book on C# | 00:17 |
bitmonk1 | i'm not actually sure this is a problem you need to solve. | 00:17 |
bitmonk1 | it's never too late to know more than one language. ;) | 00:17 |
ToreadorVampire | bitmonk1: I know, it's a time-related issue rather than a willingness-to-learn-related issue | 00:17 |
*** hever has joined #zope | 00:17 | |
ToreadorVampire | Anyway | 00:17 |
ToreadorVampire | The problem I am looking at is: | 00:17 |
bitmonk1 | python takes an hour or two to learn, tops, but that's not related to your problem. :) | 00:18 |
ToreadorVampire | I have (say) two overloaded methods: GetMember(int id) and GetMember(string username) | 00:18 |
*** hever has quit IRC | 00:19 | |
ToreadorVampire | Now as you probably know, C# will magically choose which of those to execute if I call GetMember with one parameter | 00:19 |
bitmonk1 | si | 00:19 |
ToreadorVampire | But it's somewhat harder to choose which to execute if all I have is a System.Object | 00:19 |
bitmonk1 | so, assign an interface. | 00:20 |
ToreadorVampire | Even worse is if I have methods with different numbers of parameters, like uh ... GetMember(string username) and GetMember(string username, bool loadAdministrativePrivs) | 00:20 |
ToreadorVampire | ^^ bad example, but I was struggling for an example that uses 2 params | 00:21 |
bitmonk1 | python absolutely avoids that problem, btw, but i'll tell you about that later.. | 00:21 |
ToreadorVampire | Now I don't know if I want to use the single-parameter version or the 2-parameter version | 00:21 |
ToreadorVampire | I might have a TALES path like this: "GetMember/jbloggs/True" | 00:21 |
*** Arfrever has quit IRC | 00:22 | |
ToreadorVampire | But does that mean: "Use the second overload of the GetMember method with both of the following path pieces as parameters" or does it mean "Use the first overload, and then try to resolve 'True' from the member object that GetMember returned" | 00:22 |
bitmonk1 | so, if you have a view class, you can call it MemberListing, you can abstract this away from the template (as you should, templates are intended to create separation of responsibility and how will your designer ever understand this fangled conversation we're in? ;d) | 00:22 |
bitmonk1 | so you just define getMembers method, and in there, you call the overloaded method with the args you know | 00:23 |
bitmonk1 | i don't know if your TALES expression is really valid, honestly. i don't think TALES handles paramaters, though it could simply be i've just never done that. looking at the spec now. | 00:23 |
ToreadorVampire | It doesn't say anything about parameters at al | 00:24 |
ToreadorVampire | all* | 00:24 |
bitmonk1 | if you followed my recommendation above, however, the same TAL could be used without modification against a zope app and a c# app | 00:24 |
bitmonk1 | TALES doesn't handle paramaters. it's not meant to. | 00:24 |
bitmonk1 | you've some Design Patterns reading to do. ;) | 00:24 |
ToreadorVampire | Yeah | 00:24 |
moo---_ | which is not always nice | 00:24 |
bitmonk1 | seriously, this is what view classes are for. they serve that purpose in python, in java, even most PHP development these days is done this way.. | 00:25 |
bitmonk1 | most templating systems only support variables, which are provided typically by a view class.. | 00:25 |
moo---_ | it would fun to have syntax folder/item/my_listing(type="Document") | 00:25 |
moo---_ | or something | 00:25 |
bitmonk1 | moo---_: you can python: in TALES | 00:25 |
bitmonk1 | but you can't c#: | 00:25 |
bitmonk1 | ;) | 00:25 |
moo---_ | bitmonk1: yes but that's cumbersome :) | 00:25 |
ToreadorVampire | Well - python: is only an optional TALES extension | 00:25 |
ToreadorVampire | There can be a C#: extension too | 00:26 |
ToreadorVampire | If it were implemented | 00:26 |
bitmonk1 | sure, though you'd be running a compiler in your template rendering | 00:26 |
moo---_ | actually I would forget TAL and use XSL as both are XML based template languages | 00:26 |
moo---_ | and XSL is much more widely used | 00:26 |
ToreadorVampire | Nah, I like TAL ;) | 00:26 |
ToreadorVampire | It's what attracted me to Zope years ago | 00:26 |
bitmonk1 | honestly, not *much* more, but it has some strengths. its' weakness is that programmers think it is more interesting than designers, and templates should be accessible to designers. | 00:26 |
ToreadorVampire | s/Zope/Plone/ | 00:26 |
bitmonk1 | somewhere down the line, you may grow your idea. | 00:26 |
bitmonk1 | and need more than one person working on it ;) | 00:27 |
ToreadorVampire | Exactly | 00:27 |
bitmonk1 | so, ToreadorVampire, in Plone, that's what we would do. We define a view class, and make methods available to the template. there are a number of reasons why that is a Very Good Idea(tm). | 00:27 |
ToreadorVampire | I'm really just tinkering with the project atm in some spare time between client projects ... | 00:27 |
bitmonk1 | i actually might have a student project aroudn which does some of this, but i was focusing on an OFS implementation. | 00:28 |
ToreadorVampire | bitmonk1: Mmm, it just seems that the View class is just a load of boilerplate that creates aliases for your templates that point straight to your Model code though (albeit that in Zope, the Model is the ZODB) | 00:28 |
ToreadorVampire | If those aliases are all that the view class provides, then it can be accomplished without the extra boilerplate using custom attributes - as long as there is no ambiguity between the aliases that those attributes expose then everything is fine | 00:30 |
ToreadorVampire | (and in that scenario, I can detect ambiguity and throw an exception where it is encountered) | 00:30 |
ToreadorVampire | Well - attributes = that extra boilerplate, but it doesn't involve creating a whole class for it, just adding [TalesAlias("someName")] to the members | 00:31 |
bitmonk1 | ToreadorVampire: it's not boilerplate, it has purpose. it separates the details of how you're talking to your primary objects from the template logic. | 00:32 |
bitmonk1 | so, you may have three overloaded GetMembers methods, but you may have seven views that call them separately. | 00:33 |
bitmonk1 | and you get to do everything 100% native, in programmer-style.. | 00:33 |
bitmonk1 | and you can unit test them. | 00:33 |
bitmonk1 | and the idea is look, keep your classes small. it's a perspective, so why put tons of custom attributes on your model class? | 00:34 |
bitmonk1 | anyway, that's all opinion. you can go through a decade of pain and anguish and then come back and we'll talk about it. ;) | 00:34 |
bitmonk1 | http://en.wikipedia.org/wiki/Design_Patterns if you don't have the book. | 00:35 |
bitmonk1 | the view doesn't necessarily have to be a class, but the point is, you write some normal code which builds up the data the template needs. that could be a dict/hash you pass into a cheetah template, or whatever.. | 00:36 |
bitmonk1 | testing wise, the complexity required to test that the rendered page puts '42' in a Meaning of Life div once you set that value in the model, versus just making sure it gets wrapped properly, huge power. | 00:37 |
bitmonk1 | but, sometimes we don't appreciate belts until our trousers fall down ;) | 00:37 |
ToreadorVampire | Mmm | 00:38 |
ToreadorVampire | It's certainly interesting | 00:38 |
bitmonk1 | fwiw, in python, btw, your overloading problem would be nil, because you simply set a default value for the second argument, which makes it optional. | 00:38 |
bitmonk1 | there are arguments that overloading has advantages, though.. trade one problem for another, you might end up with one very long python method, versus 3 easier to read in c# | 00:39 |
ToreadorVampire | Mmm, I remember ending up doing similar in ECMAScript which has no overloading | 00:39 |
bitmonk1 | ECMA has some similarities to python in the object model.. | 00:40 |
bitmonk1 | of course, you can always write three different methods, then decide which one to call based on the arguments accepted by the one published in your api | 00:40 |
ToreadorVampire | I'd switch to Silverlight/Moonlight for my clientside scripting if I didn't hate it so much (and if I wasn't so much of a web standards nut) | 00:40 |
bitmonk1 | ECMA's gonna be around a while, i think. ;) | 00:41 |
ToreadorVampire | But actually I have gotten to kind of like JavaScript - except for the infuriating urge to type check everything like a crazy person | 00:41 |
bitmonk1 | also, having the overloaded method have the same name, imo, is a semantic thing.. as far as C# or the CLR is concerned, you have GetMembers_int and GetMembers_string | 00:42 |
bitmonk1 | no compelling reason not to just name the methods differently and document that.. | 00:42 |
bitmonk1 | and there's the question of, how much code may be reproduced in each overloaded method? | 00:42 |
*** ignas has joined #zope | 00:42 | |
ToreadorVampire | Of course - with the exciting new HTML5 stuff well on the way, I get my wish that Adobe Trash is not as needed as it used to be and perhaps even Silverlight will die | 00:42 |
*** davisagli is now known as davisagli|away | 00:43 | |
ToreadorVampire | Oh of course - well - if there is duplicated code between two overloads then that duplicated code tends to farmed away to a new private method (or something) | 00:43 |
bitmonk1 | i think it's funny we talk about HTML5 so much in the web world, when most modern web development uses XHTML, and in implementation, most browsers, if not all major ones, will allow the video tag in XHTML. | 00:43 |
ToreadorVampire | significant duplicated code that is | 00:43 |
bitmonk1 | something tells me a future XHTML will include the video tag, but that group just didn't want to be wedged between the FSF and Apple | 00:43 |
ToreadorVampire | Uh | 00:43 |
ToreadorVampire | XHTML is dying, but HTML5 will have an XML syntax | 00:44 |
bitmonk1 | there is some crazy stuff in HTML5 i'm not crazy abuot.. | 00:44 |
bitmonk1 | as of when? i was on the steering list until not long ago.. | 00:44 |
bitmonk1 | are you sure you didn't just read that in Wired? ;) | 00:44 |
ToreadorVampire | So XHTML will kind of live on, but eventually all us XHTML folk will switch to HTML5/XML | 00:44 |
ToreadorVampire | Uh | 00:44 |
ToreadorVampire | I thought I saw it last time I read the (draft) spec ... | 00:44 |
bitmonk1 | i mean, there's a lot of interpretation out there, this thing has been going on the better part of a decade.. | 00:45 |
ToreadorVampire | ... which I admit was a few months ago ... | 00:45 |
bitmonk1 | the HTML5 group has no authority over the future of XHTML, last i checked, different things were being advanced by different groups, maybe that has come together. | 00:45 |
ToreadorVampire | http://www.alistapart.com/articles/previewofhtml5 « I am talking about (what ALA here) calls the XML Serialisation of HTML5, known as XHTML 5 | 00:46 |
ToreadorVampire | Those may not be the right names, but that's what I mean - the XML syntax for HTML5 | 00:46 |
ToreadorVampire | XHTML yes I appreciate is a separate entity, and there's XHTML2 which is AFAIK dead in the water now | 00:47 |
ToreadorVampire | But HTML5 won the race | 00:47 |
ToreadorVampire | So XHTML is going nowhere now | 00:47 |
bitmonk1 | i just don't think that's entirely true. that sounds like media sensationalism. ALA sells web development seminars, it's in their interest to promote whatever is easier to sell. that may not be what's really happening at w3 | 00:47 |
ToreadorVampire | Eventually I forsee that everyone who "currently writes in XHTML because they like XML" will switch to this 'XHTML 5' (which is really just HTML5 in XML syntax) | 00:48 |
bitmonk1 | XHTML is a smaller project, there was a ton less work to do for XHTML2 than for HTML5, but maybe that is what's happened. | 00:48 |
bitmonk1 | it's not so much about 'liking' xml as being able to use XML tools to process both RSS, ATOM, HTML, etc.. | 00:48 |
ToreadorVampire | Everyone who writes XHTML because they're clueless/copypasting/whatever will probably just end up using HTML5 plain | 00:48 |
bitmonk1 | HTML can be a pain in the ass because it does not validate.. | 00:48 |
bitmonk1 | so yah i mean, in the end, whatever | 00:48 |
ToreadorVampire | Yes, I should have worded it "cares about their documents being XML" | 00:48 |
bitmonk1 | but the XHTML team was working on some important things that the HTML5 team (Mostly the iPhone team and their opposition) brushed aside | 00:49 |
bitmonk1 | maybe eventually they stopped arguing about why an international standard should be linked to apple's fabrication concerns and joined hands with people talking about markup. | 00:49 |
*** davisagli|away is now known as davisagli | 00:50 | |
ToreadorVampire | Ah | 00:51 |
ToreadorVampire | I knew I wasn't crazy | 00:51 |
ToreadorVampire | http://dev.w3.org/html5/spec/Overview.html#the-xhtml-syntax | 00:51 |
* bitmonk1 often is | 00:52 | |
ToreadorVampire | Anyhoo | 00:53 |
ToreadorVampire | This idea of a view class ... which is essentially a series of aliases to the model - and in which there is no overloading permitted ... | 00:54 |
ToreadorVampire | In fact | 00:54 |
ToreadorVampire | I am starting to think of more reasons I would want to use it | 00:54 |
ToreadorVampire | Because in a TALES expression, every value is a string | 00:55 |
bitmonk1 | you can also use it to do things like construct a string for display from multiple values.. | 00:55 |
ToreadorVampire | Yes | 00:55 |
ToreadorVampire | O | 00:55 |
ToreadorVampire | OK | 00:55 |
bitmonk1 | so if you have a Member object, and it has a firstName and a lastName, you can have a getFullname method in the view. | 00:55 |
ToreadorVampire | So I can go with that | 00:56 |
bitmonk1 | its' usefulness becomes more apparent with use .. | 00:56 |
bitmonk1 | but, even in zope, you can totally bypass it by just declaring a template as a browser view in zcml. it's not religion, but it solves your overloading problem. | 00:56 |
ToreadorVampire | bitmonk1: Mmm - perhaps - although FullName should have been a read-only property of the member class in that case | 00:56 |
bitmonk1 | maybe except that is display functionality, it's not part of the model.. | 00:56 |
bitmonk1 | view classes can also be approachable to junior programmers you may not want futzing with your model.. | 00:57 |
bitmonk1 | it's a functionality that can evolve into an app, though. | 00:57 |
ToreadorVampire | Yes, perhaps | 00:57 |
ToreadorVampire | I see your logic | 00:57 |
bitmonk1 | and beyond 'view classes', just, 'views'. django and some other python frameworks use methods as views, and its' job is just to return the whole page as a string.. | 00:58 |
bitmonk1 | so, it can do that programmatically, or it can build up a namespace, hand that to the template, and then return the rendered template.. | 00:58 |
ToreadorVampire | Hrm | 00:59 |
*** touff has joined #zope | 00:59 | |
ToreadorVampire | 6 hours to LOST finales ... can I complete the TALES parser before then?! | 00:59 |
bitmonk1 | heh | 00:59 |
* bitmonk1 has to wait for Hulu in the AM, boycotting cable TV subscription. | 01:00 | |
*** davisagli is now known as davisagli|away | 01:00 | |
ToreadorVampire | ic | 01:00 |
*** r0ver has joined #zope | 01:00 | |
*** r0ver has left #zope | 01:01 | |
ToreadorVampire | Cable here (that would be "in the UK") is pretty sweet | 01:01 |
ToreadorVampire | No reason to want to boycott it | 01:01 |
*** r0ver has joined #zope | 01:01 | |
*** davisagli|away is now known as davisagli | 01:01 | |
*** davisagli is now known as davisagli|away | 01:01 | |
ToreadorVampire | Anyway | 01:02 |
bitmonk1 | yah i got tired of paying for hordes of programming i don't want, when almost everything i watch is on Hulu. | 01:02 |
ToreadorVampire | For me, nothing is on Hulu unless I proxy | 01:02 |
bitmonk1 | ah sure.. | 01:02 |
bitmonk1 | i also found for some time, when i watched less TV than i do now, that it was cheaper to subscribe to 1-2 shows on iTunes than pay for cable. | 01:03 |
*** davisagli|away is now known as davisagli | 01:03 | |
ToreadorVampire | Assuming I am going with a view class, then I do not have to worry about overloading. If I throw a Type.GetMember(identifier) and the count of members returned is more than one then I can throw an exception | 01:03 |
bitmonk1 | and i just had some ridiculous futzing around, i had to buy a digital cable box to get non-basic cable, but it never worked properly, fought with my tivo, etc.. | 01:04 |
bitmonk1 | yeah that should be fine.. | 01:04 |
ToreadorVampire | bitmonk1: Well, I guess I pay for the flexibility. I can sit down any time I want and randomly find something to watch without needing to specifically have something in mind that I wanted to watch | 01:04 |
ToreadorVampire | Plus, I get TV on the cheap because I also have [every other connectivity related service except mobile (cell) phone] with the same company | 01:05 |
bitmonk1 | yah i have a huge DVD collection i rely upon. i miss Discovery and History, but I own a ton of History Channel I can watch from an old iPod, and Discovery is doing Sarah Palin's Alaska, which I thin I'll pass on. | 01:05 |
bitmonk1 | yah if i got phone from the cable company with my cablemodem, i would pay the extra $10 for cable or whatever, but i run my own voip. | 01:05 |
bitmonk1 | i called them once when my service was not working, and while they were talking to me, they asked if i wanted to upgrade to using their voice service. i was like, i don't see how that would be helpful to me today. ;d | 01:06 |
ToreadorVampire | Mmm, my mobile phone is the only one I use nowdays | 01:06 |
*** daMaestro has quit IRC | 01:06 | |
bitmonk1 | i've found that too costly, we get like a million minutes for a hundred bucks, the customers pay for the voip at their office, and my menial usage is pretty much free. also, often better audio, multi-line, etc.. | 01:07 |
bitmonk1 | and in san francisco i can rarely get a reliable signal indoors | 01:08 |
bitmonk1 | sprint has been better than AT&T, but that's not saying much ;d | 01:08 |
*** davisagli is now known as davisagli|away | 01:09 | |
*** Ariel_Calzada has joined #zope | 01:09 | |
*** Ariel_Calzada has left #zope | 01:10 | |
ToreadorVampire | Hrm, the phone package I have is "calls to any UK landline = free" and I can 5-way conference call for free like that | 01:10 |
* ToreadorVampire is with Orange (but I don't think you get them out in the US) | 01:11 | |
bitmonk1 | we get free calls from business lines, so i can answer a forwarded call from my voip. | 01:11 |
bitmonk1 | but again, the quality is crud comparatively. | 01:11 |
bitmonk1 | and i can call tokyo if i want | 01:11 |
bitmonk1 | we can get unlimited service, but the cost weighs against other things. i ignore most phone calls. | 01:12 |
bitmonk1 | 90% of my incoming are from debt collectors ;d | 01:12 |
bitmonk1 | anyway. tal in c#! ;d | 01:14 |
bitmonk1 | have you got code to show? | 01:14 |
bitmonk1 | i'd love to give some pointers.. will it be f/oss ? | 01:14 |
ToreadorVampire | Uh, my git repos is not public-accessible atm (well, not in a meaningful way) and yes, I have no reason to keep it to myself once it's done | 01:14 |
bitmonk1 | shove it on github :) | 01:15 |
bitmonk1 | early and often! | 01:15 |
ToreadorVampire | I know, I know - I have been holding on to this one because (as many of personal projects are) it is as much about learning/practice as it is about actually creating an end product | 01:16 |
bitmonk1 | a great deal of open-source is. some great ideas are created outside the pressure of delivering a solution to a business problem before happy hour. ;) | 01:17 |
*** giampaolo has joined #zope | 01:17 | |
bitmonk1 | some of them stray a bit *too* far from real world, but pure technology solutions like a tal parser in C# would fall under that. tell someone their project involves the creation of new reusable technology and they look at you as if you're embezzling. ;d | 01:17 |
bitmonk1 | they may at least, thankfully not everyone is so short sighted. | 01:18 |
ToreadorVampire | Hold on while I finishe refactoring this method and I'll pop some stuff on my webserver | 01:20 |
bitmonk1 | sweet, doing some work over here myself as well. it would be fun to work on something a bit foreign. | 01:21 |
*** touff has quit IRC | 01:22 | |
*** TomBlockley has quit IRC | 01:22 | |
bitmonk1 | and, perhaps to help proliferate tal as well | 01:25 |
planetzopebot | collective.xdv 1.0rc7 (PyPI recent updates) http://pypi.python.org/pypi/collective.xdv/1.0rc7 | 01:34 |
ToreadorVampire | bitmonk1: http://www.toreadorvampire.co.uk/stuff/zpt.tar.gz | 01:38 |
bitmonk1 | that'll do :) | 01:38 |
ToreadorVampire | There are a few things I'm in the middle of - for example making sure that the only exception type that's allowed to escape the API is a TalesException (unless ArgumentExceptions are caused /directly/ by the parameters given to a method) but you can see that's nowhere near done yet | 01:40 |
*** alecm has joined #zope | 01:59 | |
*** daMaestro has joined #zope | 02:11 | |
*** aaronv_ has joined #zope | 02:16 | |
*** aaronv_ has quit IRC | 02:17 | |
*** aaronv has quit IRC | 02:19 | |
*** r0ver has quit IRC | 02:29 | |
*** r0ver has joined #zope | 02:31 | |
*** ToreadorVampire has quit IRC | 02:39 | |
*** jan_s has joined #zope | 03:01 | |
*** touff has joined #zope | 03:12 | |
*** Hypergraphe has quit IRC | 03:21 | |
*** ccomb has quit IRC | 03:21 | |
*** touff has quit IRC | 03:23 | |
*** davisagli|away is now known as davisagli | 03:29 | |
*** davisagli is now known as davisagli|away | 03:32 | |
*** davisagli|away is now known as davisagli | 03:44 | |
*** aaronv has joined #zope | 04:04 | |
*** mcdonc has quit IRC | 04:09 | |
*** mcdonc has joined #zope | 04:09 | |
*** daMaestro has quit IRC | 04:15 | |
*** giampaolo has quit IRC | 04:15 | |
CIA-94 | tseaver * r112656 zope.app.wsgi/CHANGES.txt: ReST rendering fixups. | 04:21 |
CIA-94 | tseaver * r112657 zope.app.wsgi/ (CHANGES.txt setup.py): Prep 3.9.2 release. | 04:21 |
CIA-94 | tseaver * r112658 /zope.app.wsgi/tags/3.9.2: Tag 3.9.2 release. | 04:21 |
CIA-94 | tseaver * r112659 zope.app.wsgi/ (CHANGES.txt setup.py): svb | 04:21 |
*** alecm has quit IRC | 04:32 | |
planetzopebot | collective.xdv 1.0rc8 (PyPI recent updates) http://pypi.python.org/pypi/collective.xdv/1.0rc8 | 04:34 |
*** daMaestro has joined #zope | 05:04 | |
*** aaronv has quit IRC | 05:32 | |
*** daMaestro has quit IRC | 05:51 | |
*** Vejeta has joined #zope | 06:03 | |
*** dayne has joined #zope | 06:10 | |
*** tiwula has joined #zope | 06:31 | |
*** ignas has quit IRC | 06:47 | |
*** tiwula has quit IRC | 07:09 | |
*** huajie has joined #zope | 07:12 | |
*** skt has joined #zope | 08:02 | |
*** skt has quit IRC | 08:18 | |
*** skt has joined #zope | 08:33 | |
*** mcdonc has quit IRC | 08:47 | |
*** mcdonc has joined #zope | 08:48 | |
*** vipod has joined #zope | 09:06 | |
*** d2m has joined #zope | 09:31 | |
*** davisagli is now known as davisagli|away | 09:33 | |
*** davisagli|away is now known as davisagli | 09:34 | |
*** davisagli is now known as davisagli|away | 09:34 | |
*** pthulin has joined #zope | 09:43 | |
*** touff has joined #zope | 09:57 | |
*** huajie has quit IRC | 10:00 | |
*** touff has quit IRC | 10:02 | |
*** KucukMubasir has joined #zope | 10:04 | |
*** KucukMubasir has left #zope | 10:04 | |
*** sashav has joined #zope | 10:22 | |
*** touff has joined #zope | 10:29 | |
*** planetzopebot has quit IRC | 10:33 | |
*** planetzopebot has joined #zope | 10:34 | |
*** hartym has joined #zope | 10:34 | |
*** sim_sim has joined #zope | 10:42 | |
*** vigith has joined #zope | 10:45 | |
*** bigkevmcd has joined #zope | 10:55 | |
*** regebro has joined #zope | 11:05 | |
*** tarek_ has joined #zope | 11:07 | |
*** eperez has joined #zope | 11:08 | |
*** mcdonc_ has joined #zope | 11:13 | |
*** mcdonc has quit IRC | 11:13 | |
planetzopebot | Book review: Grok 1.0 web development (Reinout van Rees' weblog) http://reinout.vanrees.org/weblog/2010/05/24/grok-web-development-review.html | 11:34 |
*** smita has joined #zope | 11:34 | |
*** ignas has joined #zope | 11:41 | |
*** TomBlockley has joined #zope | 11:58 | |
*** Hypergraphe has joined #zope | 12:00 | |
planetzopebot | stxnext.varnishpurger 0.1.1 (PyPI recent updates) http://pypi.python.org/pypi/stxnext.varnishpurger/0.1.1 | 12:34 |
*** teix has joined #zope | 12:34 | |
*** menesis has quit IRC | 12:39 | |
*** MrTango has joined #zope | 12:54 | |
*** evilbungle has joined #zope | 12:56 | |
*** ignas has quit IRC | 12:58 | |
*** tarek_ has quit IRC | 13:00 | |
*** tarek has joined #zope | 13:01 | |
*** MatthewWilkes has joined #zope | 13:13 | |
*** emrojo has joined #zope | 13:21 | |
*** ignas has joined #zope | 13:23 | |
*** aaronv has joined #zope | 13:30 | |
*** menesis has joined #zope | 13:48 | |
*** zagy has joined #zope | 14:03 | |
*** d2m has left #zope | 14:11 | |
*** mcdonc_ has quit IRC | 14:20 | |
*** mcdonc_ has joined #zope | 14:20 | |
CIA-94 | hannosch * r112660 zope2docs/maintenance/index.rst: Add the LP steps to the release procedure | 14:38 |
*** touff has quit IRC | 14:46 | |
*** touff has joined #zope | 14:51 | |
*** eperez has quit IRC | 14:56 | |
*** ccomb has joined #zope | 15:02 | |
*** benji has joined #zope | 15:03 | |
*** vigith has quit IRC | 15:11 | |
*** lucmult has joined #zope | 15:15 | |
*** lucmult has left #zope | 15:15 | |
*** kiorky has quit IRC | 15:16 | |
*** kiorky has joined #zope | 15:18 | |
*** aaronv has quit IRC | 15:24 | |
*** giampaolo has joined #zope | 15:26 | |
giampaolo | hi, is there a way to know from TAL if a certain object (page) has an associated interface? | 15:28 |
*** evilbungle has quit IRC | 15:44 | |
*** fdrake has joined #zope | 15:48 | |
*** zagy has quit IRC | 15:52 | |
*** Ariel_Calzada has joined #zope | 16:01 | |
*** Ariel_Calzada has left #zope | 16:01 | |
*** skt has quit IRC | 16:18 | |
*** yvl has joined #zope | 16:26 | |
*** aaronv has joined #zope | 16:28 | |
*** alecm has joined #zope | 16:30 | |
*** yvl has left #zope | 16:31 | |
planetzopebot | stxnext.staticdeployment 0.5.10 (PyPI recent updates) http://pypi.python.org/pypi/stxnext.staticdeployment/0.5.10 | 16:34 |
*** jim_SFU has joined #zope | 16:40 | |
*** eperez has joined #zope | 16:51 | |
*** sawdog has joined #zope | 16:52 | |
*** redir has joined #zope | 16:53 | |
*** touff has quit IRC | 16:54 | |
*** alecm has quit IRC | 17:03 | |
*** alecm has joined #zope | 17:15 | |
*** tarek has quit IRC | 17:16 | |
*** TresEquis has joined #zope | 17:22 | |
CIA-94 | tseaver * r112661 zope.browserpage/CHANGES.txt: ReST rendering improvements, editorial. | 17:30 |
CIA-94 | tseaver * r112662 zope.browserpage/CHANGES.txt: Note test fix. | 17:30 |
CIA-94 | tseaver * r112663 zope.browserpage/ (CHANGES.txt setup.py): Prep 3.12.2 release. | 17:30 |
CIA-94 | tseaver * r112664 /zope.browserpage/tags/3.12.2: Prep 3.12.2 release. | 17:30 |
CIA-94 | tseaver * r112665 zope.browserpage/ (CHANGES.txt setup.py): svb | 17:30 |
CIA-94 | tseaver * r112666 zope.deferredimport/CHANGES.txt: ReST rendering improvements, editorial; note test fix. | 17:30 |
*** redir has quit IRC | 17:42 | |
*** redir has joined #zope | 17:45 | |
CIA-94 | tseaver * r112667 zope.deferredimport/ (CHANGES.txt setup.py): Prep 3.5.2 release. | 17:45 |
CIA-94 | tseaver * r112668 /zope.deferredimport/tags/3.5.2: Tag 3.5.2 release. | 17:45 |
CIA-94 | tseaver * r112669 zope.deferredimport/ (CHANGES.txt setup.py): svb | 17:45 |
CIA-94 | tseaver * r112670 zopetoolkit/zopeapp.cfg: Use fixed release of zope.app.wsgi. | 17:46 |
CIA-94 | tseaver * r112671 zopetoolkit/ztk.cfg: Use release of zope.deferredimport whose tests pass under Python 2.4. | 17:46 |
*** brguedes has joined #zope | 17:53 | |
brguedes | hello everybody | 17:53 |
*** touff has joined #zope | 17:54 | |
brguedes | someone can tell me if the external python methods are uni-thread | 17:54 |
brguedes | ? | 17:54 |
moo---_ | brguedes: if you tell as what uni-thread means? | 17:55 |
brguedes | if it is just one thread at which time | 17:55 |
TresEquis | brguedes: no | 17:56 |
TresEquis | if they use a ZODB connection, it comes from a pool | 17:56 |
TresEquis | all requests handled by Zope are done in "worker" threads | 17:56 |
brguedes | because I read that external methods have a bad performance | 17:56 |
TresEquis | brguedes: where? | 17:56 |
brguedes | I don't remember | 17:56 |
brguedes | now | 17:56 |
TresEquis | typically they outperform PythonScripts, for instance | 17:56 |
TresEquis | because they don't have security checks done | 17:57 |
TresEquis | they should run as fast as filesystem products code, normally | 17:57 |
brguedes | humm so It is better than python scripts in ZOPE | 17:57 |
brguedes | :S | 17:57 |
*** pthulin_ has joined #zope | 17:58 | |
TresEquis | brguedes: there aren't any others that are relevant on this channel | 17:58 |
TresEquis | the TTW PythonScript objects have to play in the RestrictedPython sandbox | 17:58 |
*** pthulin_ has quit IRC | 17:58 | |
TresEquis | filesystem code doesn't | 17:58 |
TresEquis | but threading is the same either way | 17:59 |
*** pthulin has quit IRC | 17:59 | |
*** daMaestro has joined #zope | 18:01 | |
brguedes | TresEquis: Can you tell me how can I manage the threads in externalMethod? better it is possible to manage?:p I'm saying this because probably each external method will be called by a different ZOPE thread, right? | 18:02 |
moo---_ | brguedes: yes | 18:02 |
moo---_ | what do you mean by "manage threads"? | 18:02 |
*** dayne has quit IRC | 18:03 | |
moo---_ | you don't generally want to spawn threads on your own | 18:03 |
TresEquis | brguedes: are you trying to serialize access to some non-ZODB resource? | 18:03 |
TresEquis | if you are just using "norma" Zope objects, you can just let the conflict resolution / retry mechanism do the work for you | 18:03 |
TresEquis | sorry, "normal" | 18:03 |
brguedes | imagine one python script, that calls an external python method, but I want just one thread in each time in this external python method | 18:04 |
brguedes | it is possible? | 18:04 |
TresEquis | brguedes: you need to explain why | 18:05 |
TresEquis | Likely an ExternalMethod is not what you want here, but some kind of filesystem product | 18:05 |
TresEquis | EM objects don't live in "normal" Python modules, which makes defining a module-scope lock impossible for them | 18:05 |
TresEquis | if the lock is defined elsewhere, an EM can use it | 18:06 |
TresEquis | but I have to say that in 12 years of heavy Zope developement (my day job for most of that time) | 18:06 |
TresEquis | I've almost never needed what you are describing | 18:06 |
TresEquis | at least twice I ended up ripping out locks that a team member had added by mistake | 18:07 |
TresEquis | What resource are you trying to protect from multithreaded access? | 18:07 |
*** mcdonc_ has quit IRC | 18:07 | |
brguedes | I trying to protect some piece of code that access to database and check the result | 18:08 |
brguedes | but if this code is running in 2 threads at the same time | 18:09 |
brguedes | I've a problem | 18:09 |
brguedes | right? | 18:10 |
brguedes | for example | 18:10 |
brguedes | if I increment one field in database | 18:10 |
brguedes | and read it | 18:11 |
brguedes | when the first is writing the second could already read | 18:12 |
teix | brguedes: which database? | 18:13 |
brguedes | mysql | 18:14 |
*** tiwula has joined #zope | 18:14 | |
TresEquis | brguedes: if you are using a "normal" Zope database adapter, or using the correct transaction isolation level in a Python DBAPI on, you should be fine without doing threading | 18:14 |
brguedes | hummm... | 18:15 |
brguedes | I'm using the Python API | 18:15 |
TresEquis | of course, "mysql" and "transaction" are not really compatible terms in general | 18:15 |
TresEquis | but try googling "python mysql transaction isolation" | 18:16 |
*** mcdonc has joined #zope | 18:16 | |
brguedes | so if I use mysql adapter ( ZOPE product) I don't have this problem? | 18:16 |
TresEquis | brguedes: if you use that adapter in its default configuration, then the transaction isolation stuff should be configured correctly | 18:17 |
TresEquis | and coordinated with the main Zope transaction as well | 18:18 |
teix | brguedes: http://www.zope.org/Members/mcdonc/HowTos/transaction | 18:18 |
TresEquis | which is what you likely want | 18:18 |
teix | brguedes: but as TresEquis mentioned you need some transaction 'glue' with Zope's transaction machinery | 18:19 |
teix | brguedes: like mysql adapter product | 18:19 |
*** alecm has quit IRC | 18:20 | |
CIA-94 | tseaver * r112672 zopetoolkit/ztk.cfg: Use release of zope.browserpage whose tests pass under Python 2.4. | 18:22 |
*** alecm has joined #zope | 18:27 | |
*** redir has quit IRC | 18:28 | |
*** giampaolo has quit IRC | 18:28 | |
*** redir has joined #zope | 18:29 | |
*** redir_ has joined #zope | 18:32 | |
*** menesis has quit IRC | 18:33 | |
*** menesis has joined #zope | 18:33 | |
*** redir has quit IRC | 18:33 | |
*** redir_ is now known as redir | 18:33 | |
planetzopebot | Products.ATMediaPage 0.2.1 (PyPI recent updates) http://pypi.python.org/pypi/Products.ATMediaPage/0.2.1 | 18:34 |
*** TresEquis has quit IRC | 18:34 | |
*** dayne has joined #zope | 18:35 | |
*** sashav has quit IRC | 18:37 | |
*** cwarner has joined #zope | 18:41 | |
*** alvaro has joined #zope | 18:43 | |
CIA-94 | satchit * r112673 zope.html/src/zope/html/tests.py: | 18:46 |
CIA-94 | import module from the new location. | 18:46 |
CIA-94 | Tests pass again. | 18:46 |
*** davisagli|away is now known as davisagli | 18:52 | |
*** tarek has joined #zope | 19:00 | |
*** SpankyFromBRC has joined #zope | 19:03 | |
*** redir has quit IRC | 19:06 | |
*** redir has joined #zope | 19:06 | |
*** redir_ has joined #zope | 19:07 | |
*** redir has quit IRC | 19:08 | |
*** redir_ is now known as redir | 19:08 | |
CIA-94 | satchit * r112674 /zope.html/branches/satchit-upgrade-ckeditor: branch to upgrade version of CKEditor. | 19:08 |
*** zagy has joined #zope | 19:08 | |
*** Arfrever has joined #zope | 19:09 | |
*** redir_ has joined #zope | 19:10 | |
*** redir has quit IRC | 19:12 | |
*** redir_ is now known as redir | 19:12 | |
*** redir has quit IRC | 19:17 | |
*** redir has joined #zope | 19:25 | |
*** dayne has quit IRC | 19:27 | |
*** redir has quit IRC | 19:29 | |
*** redir has joined #zope | 19:33 | |
*** dayne has joined #zope | 19:35 | |
*** sim_sim has quit IRC | 19:38 | |
*** menesis has quit IRC | 20:00 | |
*** smita has quit IRC | 20:03 | |
*** smita has joined #zope | 20:04 | |
*** tiwula has quit IRC | 20:04 | |
*** Vejeta` has joined #zope | 20:07 | |
*** Vejeta has quit IRC | 20:09 | |
CIA-94 | satchit satchit-upgrade-ckeditor * r112675 zope.html/src/zope/html/ (753 files in 196 dirs): Use latest version (v3.2.1) of CKEditor | 20:17 |
*** lucmult has joined #zope | 20:20 | |
*** lucmult has left #zope | 20:20 | |
*** lucmult1 has joined #zope | 20:21 | |
*** lucmult1 has left #zope | 20:21 | |
*** TomBlockley has quit IRC | 20:24 | |
*** evilbungle has joined #zope | 20:27 | |
*** MatthewWilkes has quit IRC | 20:28 | |
*** ignas has quit IRC | 20:30 | |
*** tiwula has joined #zope | 20:31 | |
*** CIA-94 has quit IRC | 20:39 | |
*** davisagli is now known as davisagli|away | 20:41 | |
*** evilbungle has quit IRC | 20:45 | |
*** giampaolo has joined #zope | 20:52 | |
*** evilbungle has joined #zope | 20:58 | |
*** sig11 has left #zope | 20:59 | |
*** jim_SFU has quit IRC | 21:00 | |
*** jim_SFU has joined #zope | 21:00 | |
*** jim_SFU has quit IRC | 21:00 | |
*** jim_SFU has joined #zope | 21:01 | |
*** CIA-94 has joined #zope | 21:02 | |
*** fruitwerks has joined #zope | 21:02 | |
*** TresEquis has joined #zope | 21:04 | |
*** davisagli|away is now known as davisagli | 21:14 | |
*** lisppaste6 has quit IRC | 21:15 | |
*** lisppaste6 has joined #zope | 21:15 | |
*** emrojo has quit IRC | 21:15 | |
*** tarek has quit IRC | 21:19 | |
*** brguedes has quit IRC | 21:24 | |
*** evilbungle has quit IRC | 21:51 | |
*** allisterb has quit IRC | 22:02 | |
*** teix has quit IRC | 22:05 | |
*** menesis has joined #zope | 22:08 | |
*** daMaestro has quit IRC | 22:15 | |
*** allisterb has joined #zope | 22:16 | |
*** daMaestro has joined #zope | 22:19 | |
*** smita has quit IRC | 22:56 | |
*** zagy has quit IRC | 22:58 | |
*** smita has joined #zope | 22:59 | |
*** tarek has joined #zope | 23:00 | |
*** vipod has quit IRC | 23:03 | |
*** digilord has joined #zope | 23:17 | |
*** dc0e has joined #zope | 23:29 | |
*** dc0e has left #zope | 23:30 | |
*** alvaro is now known as Guest32753 | 23:32 | |
*** MrTango has quit IRC | 23:46 |
Generated by irclog2html.py 2.15.1 by Marius Gedminas - find it at mg.pov.lt!