Tuesday, 2009-01-27

*** tpb has joined #melange00:00
*** madrazr has joined #melange00:07
*** madrazr has quit IRC00:09
*** lh has quit IRC00:09
*** lh has joined #melange00:09
*** scorche|sh has quit IRC00:10
*** scorche|sh has joined #melange00:10
*** penyaskito has quit IRC00:11
*** no_mind has quit IRC00:11
*** veelck has quit IRC00:11
*** veelck has joined #melange00:11
*** no_mind has joined #melange00:11
*** penyaskito has joined #melange00:11
*** veelck has quit IRC00:12
*** sandy|lurk has quit IRC00:12
*** gloob has quit IRC00:12
*** gloob has joined #melange00:12
*** tpb has joined #melange00:16
*** sandy|lurk has joined #melange00:17
*** lisppaste9 has quit IRC00:17
*** r0bby has quit IRC00:17
*** lh has joined #melange00:17
*** summatusmentis has joined #melange00:21
*** summatusmentis has quit IRC00:23
*** penyaskito has quit IRC00:27
*** dmitrig01 has quit IRC00:27
*** Landon has quit IRC00:27
*** danderson has quit IRC00:27
*** Landon_ has joined #melange00:27
*** Landon_ is now known as Landon00:27
*** penyaskito has joined #melange00:27
*** scorche has joined #melange00:28
*** Landon has quit IRC00:28
*** scorche has quit IRC00:28
*** penyaskito has quit IRC00:28
*** sandy|lurk has quit IRC00:28
*** lh has quit IRC00:28
*** gloob has quit IRC00:28
*** madrazr has quit IRC00:28
*** no_mind has quit IRC00:28
*** scorche|sh has quit IRC00:28
*** durin42 has quit IRC00:28
*** tpb has joined #melange00:40
*** dmitrig01|afk has joined #melange00:41
*** ChanServ sets mode: +v dmitrig01|afk00:41
*** veelck has joined #melange00:41
*** gloob has joined #melange00:44
*** scorche has quit IRC00:54
*** scorche has joined #melange00:55
*** dmitrig01|afk is now known as dmitrig01|happy01:00
*** madrazr1 has joined #melange01:14
*** madrazr has quit IRC01:14
*** madrazr1 is now known as madrazr01:17
*** mithro has joined #melange01:32
*** ChanServ sets mode: +v mithro01:32
*** dmitrig01|happy is now known as dmitrig0101:36
*** madrazr has quit IRC01:56
*** dmitrig01 has quit IRC02:31
*** ahassany has joined #melange02:36
*** ahassany has quit IRC02:36
*** madrazr has joined #melange03:20
*** madrazr has quit IRC03:25
*** madrazr has joined #melange03:26
*** Lennie has joined #melange03:52
*** ChanServ sets mode: +v Lennie03:52
*** mithro has quit IRC04:02
*** solydzajs has joined #melange04:06
*** ChanServ sets mode: +o solydzajs04:06
*** mithro has joined #melange04:09
*** ChanServ sets mode: +v mithro04:09
*** solydzajs has quit IRC04:26
*** madrazr has quit IRC05:15
*** madrazr has joined #melange05:16
*** madrazr has quit IRC05:30
*** bhy has joined #melange05:41
*** lisppaste9 has joined #melange05:49
*** SRabbelier has joined #melange05:55
*** ChanServ sets mode: +v SRabbelier05:55
*** Lennie is now known as Lennie|Food06:40
*** penyaskito has quit IRC06:40
*** solydzajs has joined #melange06:57
*** ChanServ sets mode: +o solydzajs06:57
*** shiyee has joined #melange07:00
*** Lennie|Food is now known as Lennie|Food|Gone07:54
*** Lennie|Food|Gone is now known as Lennie|Gone07:54
*** danderson has joined #melange08:07
*** ChanServ sets mode: +o danderson08:07
*** pwizard88 has joined #melange08:12
pwizard88HI everyone, I am one of the gsocers from last year interested in contributing to Melange. Unfortunately, I missed the IRC meeting. Can I find the logs somewhere?08:13
dandersonsee topic08:13
pwizard88ah sorry :)08:14
solydzajspwizard88: the meeting summary with the irc logs link has been sent to both melange-soc and melange-soc-dev groups08:18
solydzajspwizard88: you are familiar with python ? django ? gae ? html ? js ? ajax ?;-)08:18
pwizard88solydzajs: Worked with python and django before08:19
solydzajspwizard88: ok that's great08:19
pwizard88solydzajs: and did some stuff with JS and ajax08:19
solydzajspwizard88: did you look at our source code already ?08:19
pwizard88solydzajs: no not yet, I checked out the code some time back but didn't get a time to look at it then, saw that contributors are required on the gsoc mailing list, so I am giving it another shot :)08:20
pwizard88solydzajs: really pissed at missing the meeting though :(08:21
solydzajspwizard88: happens ;-) where do you live ?08:22
pwizard88solydzajs: India08:22
solydzajsok08:24
pwizard88solydzajs: Oh, you are Pawel Solyga :) Nice to meet you :)08:27
solydzajspwizard88: nice to meet you too ;-)08:27
pwizard88solydzajs: This is Gautam Sewani, from IIT Guwahati, Junior student Computer Science08:28
solydzajspwizard88: who did you work for during GSoC ?08:38
pwizard88solydzajs: Boost C++08:39
pwizard88solydzajs: under John Maddock08:39
solydzajspwizard88: good ;-)08:39
*** madrazr has joined #melange08:39
pwizard88solydzajs: could you please give me developer rights too? :)08:40
solydzajspwizard88: done08:41
pwizard88solydzajs: awesome :D08:41
*** MatthewWilkes has joined #melange08:45
solydzajsMatthewWilkes: Hi :-)08:48
*** no_mind has left #melange09:01
bhyLennie|Gone, hi09:13
durin42good morning everyone09:52
durin42or whatever time of day it is where you are09:52
durin42solydzajs: got a second for a question about linkable?09:52
*** penyaskito has joined #melange10:29
*** penyaskito has joined #melange10:30
*** Merio has joined #melange11:08
*** tlarsen has joined #melange11:09
*** ChanServ sets mode: +o tlarsen11:09
*** shiyee has quit IRC11:22
*** madrazr1 has joined #melange11:29
*** shiyee has joined #melange11:30
*** madrazr has quit IRC11:30
*** shiyee has quit IRC11:33
SRabbelierdurin42: I do11:50
SRabbelierdurin42: have time that is :P11:50
SRabbelierdurin42: if you pinged me earlier I'd have you sooner ;)11:50
durin42Ah, sorry11:51
durin42well, I'm not sure what I should be doing in my test for the user profile view11:51
tlarsendurin42: Any progress on getting stuff running on that OSU OSL machine?11:53
SRabbelierdurin42: do another one11:54
SRabbelierdurin42: that one's hard :)11:54
SRabbelierdurin42: and Lennie is goign to refactor it soon anyway11:54
SRabbelierdurin42: (tonight that is)11:54
*** tlarsen is now known as tlarsen|afk11:57
durin42tlarsen: a little. Looks like I'm going to tackle that next, since my test is bogus anyway.11:57
durin42tlarsen|afk: going to have to email dannyb12:08
*** MatthewWilkes has quit IRC12:29
*** madrazr1 is now known as madrazr12:41
durin42SRabbelier: I'm willing to take input for something to test12:45
durin42I'd like to improve test coverage (any is better than none...)12:46
durin42and I'd like to have some example tests out there for you all12:46
SRabbelierdurin42: I committed some tests yesterday13:03
SRabbelierdurin42: it would be nice to have some tests for the logic13:05
SRabbelierdurin42: (and that doesn't require much knowledge of the app)13:05
SRabbelierdurin42: especially base.Logic needs some good testing13:05
SRabbelierdurin42: especially the getForFields method, and it's ability to do an OR if the filter contains a list13:06
*** Lennie|Gone is now known as Lennie13:09
Lenniehi hi :)13:09
SRabbelierLennie:  O HI13:09
Lenniehi bhy13:09
bhyhi Lennie13:11
SRabbelierbhy: works for me on Fx 2.x13:23
SRabbelierbhy: and makes things look better on IE13:23
SRabbelierbhy: I'll apply your patch13:23
bhyem, I tried on Wine IE6, the beauty tips lib totally can't work13:24
bhythanks :)13:24
SRabbelierbhy: I see, is there a way around that, or are IE users stuck with no tab support? :)13:24
SRabbelierbhy: one remark though13:25
SRabbelierbhy: if you go to /user/edit/yourlinkid13:25
SRabbelierbhy: the tooltip doesn't show up on the row of the checkbox13:26
SRabbelierbhy: only if you actually hover over the checkbox itself13:26
SRabbelierbhy: (which is rather small)13:26
Lennieyou want to expand it to the text?13:26
SRabbelierLennie: I want it to be in the middle of the <tr> like the rest is13:27
SRabbelierLennie: either that, or to the right, as the old one did13:27
SRabbelierbut I will apply13:29
bhylet me see13:29
LennieSRabbelier 1 min13:29
Lenniebhy, he'll need your name and email adress to add to Authors List13:29
SRabbelierbhy: I think it looks better with alpha=0.8, instead of 0.913:30
Lennieyou two fight it out ^_ ^13:30
Lenniejust make sure you get his name and email :D13:30
bhyjust put my name and mail here?13:30
Lennieyeah everyone can see it anyway :P13:31
bhyHaoyu Bai <[email protected]>13:32
SRabbelierbhy: ok, got it :)13:34
SRabbelierbhy: let me know if you come up with something for the check boxes13:34
bhyokey :)13:34
*** tlarsen|afk is now known as tlarsen13:43
bhybingo14:00
bhySRabbelier, I solved the check box14:00
SRabbelierbhy: awesome! :)14:00
SRabbelierbhy: mail me the updated patch please14:00
bhySRabbelier, em, mail address?14:02
SRabbelierbhy: [email protected] is fine14:03
bhySRabbelier, sent14:05
bhyI mailed you the .js file14:05
bhyjust override the original one and see14:06
SRabbelierbhy: ok, will do14:06
bhyI also changed the background color, seems better :)14:06
SRabbelierbhy: ok14:06
*** Lennie is now known as Lennie|Gone14:07
bhySRabbelier, oh, and please check it under IE, thanks :)14:08
solydzajshi all14:09
solydzajsi'm back14:09
solydzajsSRabbelier: ping :-)14:09
solydzajsLennie|Gone: I'm back.14:10
SRabbeliersolydzajs: heya14:10
SRabbelierbhy: I can't14:10
SRabbelierbhy: you'll have to mail it to Lennie|Gone for that14:10
* SRabbelier is on Debian :)14:11
solydzajsSRabbelier: reading backlog14:12
* bhy is on Archlinux :)14:12
* durin42 hugs SRabbelier 14:12
durin42tests!14:12
durin42yay, 21 tests instead of 914:12
solydzajsdurin42: you were asking some question ? is that solved already ?14:12
SRabbelierdurin42: more will follow as soon as I got this working14:12
durin42solydzajs: yeah, what I was working on testing is a candidate for rewriting14:12
durin42so SRabbelier pointed me at other stuff to test14:13
durin42SRabbelier: what other stuff?14:13
SRabbelierdurin42: making sidebar construction not horribly slow14:15
durin42heh14:16
SRabbelierI think I found the culprit14:16
durin42Maybe we can have a test that asserts it runs within so many seconds14:16
SRabbelierit's not that we were doing slow fibbonaci14:16
durin42eg 0.1 seconds or something14:16
durin42that might be a good thing to add to nose anyway14:16
SRabbelierjust that we were calling 'get_current_user' and retrieving the user that goes with that account over and over and over again14:16
durin42oh, fun14:17
*** ahassany has joined #melange14:18
*** ahassany has left #melange14:19
solydzajsSRabbelier: you there ?14:31
SRabbeliersolydzajs: ofc14:33
solydzajsSRabbelier: what's the motivation behind the new access module ?14:34
solydzajsSRabbelier: not that I don't like it ;-) I'm reviewing it right now, looks solid14:35
SRabbeliersolydzajs: to make it faster14:38
SRabbeliersolydzajs: can't cache single function calls very easily14:38
SRabbeliersolydzajs: can't mock it either14:38
SRabbeliersolydzajs: in other words, the design was crappy :P14:39
SRabbeliersolydzajs: (partially cos I suck, partially cos we weren't testing :P)14:39
solydzajsSRabbelier: well that's what refactoring is for ;-) no worries14:39
solydzajsSRabbelier: the commit LGTM14:39
SRabbeliersolydzajs: I managed to reduce the the time it takes to do the access checks to below 0.02s14:40
solydzajsSRabbelier: how much was it before ?14:40
SRabbeliersolydzajs: good question14:42
SRabbeliersolydzajs: I'll find that out later :P14:42
SRabbeliersolydzajs: but most slowness was because we were doing get_current_user() and user_logic.getForCurrentAccount() every other call :P14:42
solydzajsget_current_user was used a lot, I mean aaaaaa lot :-)14:44
solydzajsway too many times14:44
SRabbeliersolydzajs: yup14:51
SRabbeliersolydzajs: we should probably just put it in memcache14:52
SRabbeliersolydzajs: together with getForCurrentAccount14:52
*** pwizard88 has quit IRC14:52
SRabbeliersolydzajs: but I solved it for sidebar by passing it around14:52
SRabbeliersince even memcache isnt' free14:52
solydzajstrue14:56
solydzajsok good that it's solved14:56
solydzajsSRabbelier: http://www.youtube.com/watch?v=M55287T_aes14:56
tpbTitle: YouTube - Студент(прикол) (абалденный прикол)СРОЧНО смотреть!!!!!!!!! (at www.youtube.com)14:56
SRabbeliersolydzajs: mhhh... solved....14:56
SRabbeliersolydzajs: wtf is that movie? :P14:56
solydzajssome funny movie ;-)14:58
SRabbeliersolydzajs: lol, hilarious15:00
*** bhy has quit IRC15:03
*** madrazr has quit IRC15:15
SRabbelierI did it15:26
SRabbeliersolydzajs: I did it! :)15:26
SRabbeliersolydzajs: Victory!15:26
solydzajs?15:28
solydzajsSRabbelier: what did you do ?;-)15:28
SRabbeliersolydzajs: generating the sidebar now only takes about 1s15:29
SRabbelier(cpu time)15:29
SRabbelier0.8s of user time15:29
solydzajsyay! :-)15:29
SRabbelierI think, if we cache user rights for about... a minute15:30
SRabbelieror half a minute15:30
SRabbelierthat would speed things up :)15:30
SRabbelierand then we can cache the entire sidebar for about 10 minutes15:30
SRabbeliersolydzajs: how does that sound?15:30
solydzajswell, what if I become a new Role in between ?15:30
Lennie|Gone?15:31
Lennie|Gonewhat should I see here :P15:31
Lennie|Goneit will be cleared by my flush in role?15:31
SRabbeliersolydzajs: it will take 30s for access changes to propagate15:31
SRabbeliersolydzajs: and the sidebar will update after 10m15:31
solydzajsSRabbelier: not good15:31
SRabbeliersolydzajs: why not15:32
SRabbeliersolydzajs: 30s is not long at all15:32
Lennie|Gonean access change is not gonna happen that often, so just use the flush?15:32
solydzajsonce you get new rights your sidebar should have all the new links, right after you become new Role15:32
SRabbeliersolydzajs: you were not listening to Lennard?15:32
SRabbeliersolydzajs: "(09:31:24 PM) Lennie|Gone: it will be cleared by my flush in role"15:33
solydzajsoh missed that :-)15:33
SRabbelier:P15:33
solydzajsok15:33
SRabbelierit's just that if we forget to flush somewhere15:33
solydzajsthat's ok then15:33
Lennie|Gonethe sidebar will be flushed15:33
Lennie|Gonebbl15:33
Lennie|Gonebusy15:33
solydzajsif we forget to flush, we will have to wait 10mins for sidebar refresh15:33
solydzajs:-)15:33
solydzajsthat means we can't forget ;-)15:34
SRabbeliersolydzajs: no15:34
SRabbeliersolydzajs: that's not what those are for15:34
SRabbeliersolydzajs: the timeout15:34
SRabbeliersolydzajs: it's for things like, when a new Program is available15:34
SRabbeliersolydzajs: it'll take at most 10m to show up15:34
SRabbeliersolydzajs: but if everybody is hitting f515:34
SRabbeliersolydzajs: the cache won't miss for all of them at the same time15:35
tlarsenSRabbelier: can you cache per-User copies of the generated sidebar, and only generate the sidebar if:15:35
SRabbeliertlarsen: we already do that15:35
tlarsenSRabbelier: 1) there is no cache entry for that User?15:35
SRabbeliertlarsen: that's what we're talking about currently15:35
tlarsenSRabbelier: 2) the User's Role changes the access rights somehow?15:35
SRabbeliertlarsen: that's what we've been talking about15:35
SRabbeliertlarsen: flushing = clearing the cache in case the access rights changed15:36
SRabbeliertlarsen: I have a question for you though15:36
tlarsenSRabbelier: but only clearing the entry for that User, right?15:36
SRabbeliertlarsen: right, ofcourse :)15:36
SRabbeliertlarsen: that's why we don't want to clear the entire cache when a new program is added15:36
SRabbeliertlarsen: as there would be a cache miss for everybody at the same time :-/15:36
tlarsenSRabbelier: when a new Program is added, how about having a random expiry interval, per User?15:37
*** Landon has quit IRC15:38
*** Landon has joined #melange15:38
SRabbeliertlarsen: we already have that15:38
tlarsenSRabbelier: 2 minutes + or - 60 * random() seconds15:38
tlarsen(for example)15:38
SRabbeliertlarsen: since not everybody created the cache at the same time15:38
SRabbeliertlarsen: mhhhh, so cache indefnitly unless flushed15:38
tlarsenSRabbelier: I am talking about a shorter limit when something major changes, like adding a new Program.15:38
SRabbeliertlarsen: and update the expiration time in case we need a global flush15:39
tlarsenSRabbelier: No, just record that something requiring a global flush happened, with an expiry time for that status of the maximum cache lifetime anyway.15:39
SRabbeliertlarsen: anyway, my question for you is that zipimport takes _looooong_15:39
SRabbeliertlarsen: can you find out from the GAE team how we can make sure that the django module is only imported once, ever?15:40
SRabbeliertlarsen: (unless a new version of the app is loaded)15:40
tlarsenAny code that wants to display the sidebar can select a random number and see if it has been that random time since the global flush was requested, and flush the sidebar for *that* User.15:40
tlarsenSRabbelier: No, I can't.15:40
tlarsenSRabbelier: Your app process is not guaranteed to run *forever*.15:40
tlarsenSRabbelier: It will persist as long as there is enough traffic to justify it being in memory.15:41
Lennie|Goneno but it reloads every 10 seconds15:41
tlarsenSRabbelier: If there is not enough traffic, your process gets discarded, and loads up again upon first access.15:41
tlarsenSRabbelier: This is not a continuously running servlet.15:41
SRabbeliertlarsen: crappy15:41
tlarsenSRabbelier: It is a WSGI request handler.15:41
SRabbeliertlarsen: so as long ast here is enough traffict15:41
tlarsenSRabbelier: Welcome to shared resources.15:41
SRabbeliertlarsen: it won't be reloaded?15:41
tlarsenSRabbelier: Code things so that anything at the module "global" level of initialization will persist, then have code check to see if stuff is None, and initialize it if it is.15:42
tlarsenYour main() will be called multiple times (each time there is a request), but the modules will not be reloaded (re-imported and re-parsed) if they are already in memory.15:43
SRabbeliertlarsen: right15:43
SRabbeliertlarsen: so what I'm seeing is that the module keeps getting reloaded15:43
SRabbeliertlarsen: and as such the zipimport gets called all the time15:43
SRabbeliertlarsen: but that won't happen if we get a lot of traffic yous ay?15:43
SRabbelier**you say15:43
tlarsenSRabbelier: probably not enough page loads to keep the process in memory.15:43
SRabbeliertlarsen: ok, that's fine15:44
tlarsenYour memory footprint of the app will not just sit there in an allocation waiting to be hit by a page view.  :)15:45
solydzajswe've learned something new today boys :-)15:45
solydzajshehe15:45
SRabbeliertlarsen: how about the memcache15:45
SRabbeliertlarsen: is it cleared on reload?15:45
tlarsenSRabbelier: not sure about the memcache.  I don't know that much about it.15:45
tlarsenSRabbelier: That doesn't have to do with zipimport, though.15:45
SRabbeliertlarsen: that's true, I'm just wanting to know :)15:45
tlarsenAll I can say is read the online docs.15:46
SRabbeliertlarsen: hehe15:46
tlarsenI haven't read, for example, the internal design docs or anything.15:46
SRabbeliertlarsen: you were more helpful than the docs so far :)15:46
tlarsenSRabbelier: Anyway, App Engine tries to balance thrashing with poor resource utilization.15:46
SRabbeliertlarsen: any idea how to flush the memcache from the appengine.com management thing?15:46
tlarsenSRabbelier: There is some sort of "timeout" (and I don't know what it is, without asking around or poking in the code) where your app gets kicked out if it is not getting requests.15:47
SRabbeliertlarsen: right, that makes sense15:47
tlarsenSRabbelier: Ugh.  I don't know *anything* about memcache.15:47
tlarsenSRabbelier: It is relatively new, and I haven't used it.15:47
SRabbelierkk15:48
solydzajsyep it's the newest GAE API I think15:48
SRabbeliersolydzajs: what is?15:49
SRabbeliersolydzajs: memcacher?15:49
solydzajsSRabbelier: yes15:49
tlarsenSRabbelier: are you putting the sidebar cache in memcahce?15:49
tlarsen" The Memcache service provides your application with a high performance in-memory key-value cache that is accessible by multiple instances of your application.</span"15:49
solydzajsSRabbelier: memcache API or Image API is the newest15:49
SRabbeliertlarsen: yes :)15:49
SRabbeliersolydzajs: ah, ok15:49
tlarsenSRabbelier: So it is available to multiple instances of the app?15:49
SRabbeliertlarsen: as well as user ACL15:50
SRabbeliertlarsen: explain "multiple instances"?15:50
tlarsenSRabbelier: to handle multiple simultaneous requests, your app is likely to be running on more than one CPU at once.15:50
SRabbeliertlarsen: aah, right15:50
SRabbeliertlarsen: but yes, that's how we're caching15:50
tlarsenSRabbelier: (when enough traffic is present)15:50
SRabbeliertlarsen: by using the memcache15:50
tlarsenSRabbelier: So, the memcache API provides an in-memory (i.e. not in the Datastore) shared key/value cache.15:51
tlarsenSRabbelier: It is accessible to *all* of your web apps running processes.15:51
SRabbeliertlarsen: yes, that much I knew15:52
SRabbeliertlarsen: btw15:52
SRabbeliertlarsen: you know why the sidebar stuff was so slow?15:52
tlarsenSRabbelier: There does not appear to be a way in the Admin Console to manipulate the memcache.15:53
SRabbeliertlarsen: ashame, there is one on the local one, which is very nice15:53
tlarsenSRabbelier: repeated accesses to get_current_user() and looking up that User?15:53
SRabbeliertlarsen: yeah15:55
SRabbeliertlarsen: you read from earlier?15:55
tlarsenUmmm, yeah.  I was paying attention. :)15:55
SRabbeliertlarsen: ehehe, ok :D15:55
SRabbeliertlarsen: It would be nice if there was some sort of profiling tool in GAE15:56
SRabbeliertlarsen: I mean, we couldof spotted this weeks ago if we had know how many times those methods were being called15:56
Lennie|Gonesomeone op lh :P15:59
SRabbelierLennie|Gone: hehe16:00
solydzajsSRabbelier: rietveld has some profiling code in it's source and also I have 2 links for you one sec16:00
SRabbeliersolydzajs: cool16:00
SRabbeliersolydzajs: only useful if the profiling happens when it's done on appengine.com though16:01
SRabbeliersolydzajs: since local it's blazing fast16:01
tlarsenLennie|Gone: lh should be auto-op'd by the channel bot.16:02
tlarsenLennie|Gone: She probably has not identified with NickServ.16:02
Lennie|Goneyeah yeah ^_ ^16:02
solydzajsSRabbelier: ready for links ?;-)16:03
solydzajshttp://code.google.com/p/rietveld/source/browse/trunk/main.py16:03
tpb<http://ln-s.net/2lvB> (at code.google.com)16:03
solydzajshttp://code.google.com/appengine/kb/commontasks.html#profiling16:03
tpb<http://ln-s.net/2RJO> (at code.google.com)16:03
solydzajshttp://andialbrecht.blogspot.com/2008/12/profiling-datastore-access-on-app.html16:03
tpb<http://ln-s.net/2lvC> (at andialbrecht.blogspot.com)16:03
solydzajshttp://www.youtube.com/watch?v=Zip1G6-NiMM16:03
tpbTitle: YouTube - Optimizing Your App: Profiling and Memcache (at www.youtube.com)16:03
SRabbeliersolydzajs: nice16:03
solydzajshttp://blog.appenginefan.com/2009/01/hacking-google-app-engine-follow-up.html16:03
tpb<http://ln-s.net/2lvE> (at blog.appenginefan.com)16:03
solydzajshttp://blog.appenginefan.com/2009/01/hacking-google-app-engine-part-2.html16:03
tpb<http://ln-s.net/2lvF> (at blog.appenginefan.com)16:03
SRabbelierLOL16:04
SRabbeliersolydzajs: mail those to the list?16:04
tlarsensolydzajs: Channel spammer!16:04
SRabbeliersolydzajs: or just to me, either is fine16:04
tlarsenSRabbelier: cc: the list, please, for future reference.16:04
solydzajsI will send them to the list16:04
solydzajsone sec16:04
solydzajsdone16:07
SRabbeliersolydzajs: testing results: no caching at all: 7634ms 9798ms-cpu16:09
SRabbeliersolydzajs: caching only ACL's only for current request: 1584ms 2248ms-cpu16:09
SRabbeliersolydzajs: caching just the sidebar for current request: 2186ms 3757ms-cpu16:09
SRabbeliersolydzajs: caching both for current request: 974ms 1368ms-cpu16:09
SRabbeliersolydzajs: cache hit when sidebar is cached: 445ms 722ms16:11
SRabbelierLennie|Gone: ^^^^^^16:11
SRabbeliertlarsen: ^^^^^^16:11
Lennie|Gone^_^16:11
Lennie|Goneyour ignore timer expired :P?16:11
SRabbelierLennie|Gone: ignore timer?16:12
Lennie|Goneyeah :P16:12
SRabbelierLennie|Gone: heh16:12
Lennie|Goneyou kept pm'ing me ^_ ^16:12
SRabbelierLennie|Gone: your stupid auto-replyer wouldn't let me talk to you16:12
SRabbelierLennie|Gone: teach it good manners16:12
Lennie|Gonenot possible16:12
Lennie|Goneit's automatic from pidgin16:13
Lennie|GoneI think16:13
SRabbelierLennie|Gone: hehehe, it's open source16:13
Lennie|Goneshow me what it tells you :p16:13
SRabbelierLennie|Gone: UTSL16:13
solydzajsSRabbelier: nice ;-)16:13
SRabbelierLennie|Gone: (10:01:39 PM) Lennie|Gone <AUTO-REPLY> :  I'm currently away, please leave a message16:13
solydzajsSRabbelier: tests you wrote tested that ?16:13
SRabbeliersolydzajs: so I suggest we cache ACL's only for the current request16:13
SRabbeliersolydzajs: and we cache sidebar for 10 minutes16:13
SRabbeliersolydzajs: flushing it when required16:13
SRabbeliersolydzajs: no, I tested that manually :P16:14
SRabbeliersolydzajs: no way to test when running on appengine.com ofc. :P16:14
solydzajsSRabbelier: can you post the results to melange-dev ?16:14
SRabbeliersolydzajs: and requests take only a few ms when running locally16:14
SRabbeliersolydzajs: to what end?16:14
tlarsensolydzajs: You could add logging statements and record this stuff in the log, viewable from the Admin Console.16:15
SRabbeliertlarsen: that's how I got those times :P16:15
solydzajsSRabbelier: just post it to melange-soc-dev for future reference ok ?16:16
SRabbeliersolydzajs: sure16:16
SRabbeliersolydzajs: done16:20
*** MatthewWilkes has joined #melange16:21
solydzajsMatthewWilkes: ping16:21
solydzajsSRabbelier: thx16:21
MatthewWilkessolydzajs: pong16:21
solydzajsMatthewWilkes: did you started to work on comments support ?16:22
MatthewWilkessolydzajs: Yep, I have some classes in place, been getting my head around the way that django handles forms - it's different to what I'm used to16:23
MatthewWilkesThe ACL stuff looks nice and simple, callables in logic/ is a nice way of doing it16:24
solydzajsok great16:24
solydzajslet us know if you have any questions or problems16:24
SRabbelierMatthewWilkes: mhhh, callables in logic/? what do you mean16:25
solydzajsyou are making it generic right ?16:25
SRabbelierMatthewWilkes: did you see the most recent refactoring in access.py?16:25
MatthewWilkesSRabbelier: Nope, I don't think so, been away for a while, was working on this last wednesday16:25
SRabbelierMatthewWilkes: ah, then you've got some catching up to do ^__^16:26
MatthewWilkessolydzajs: Yup, Works are commentable16:27
solydzajsSRabbelier: I will add profiling support in a minute16:28
SRabbeliersolydzajs: how?16:28
SRabbeliersolydzajs: can you wait till I committed this stuff16:28
solydzajsSRabbelier: ok sure, let me know when it's committed16:28
MatthewWilkesSRabbelier: Bloody hell, that's a lot of updates16:30
* MatthewWilkes is used to seeing a few "D" lines, not loads of "A"s :)16:30
SRabbelierMatthewWilkes: hehe, yeah, I know16:30
SRabbelierMatthewWilkes: a biggy one is the switch to ugettext instead of ugettext_lazy16:30
SRabbelierMatthewWilkes: that touched a lot of files16:31
*** Merio has quit IRC16:38
*** Lennie|Gone is now known as Lennie16:49
Lenniefinally16:49
LennieI'm back :P16:49
Lenniesolydzajs16:49
Lennieveelck16:49
Lenniewassup16:49
Lennie!16:49
Lennie^_ ^16:49
SRabbeliertlarsen: ping16:49
LennieMatthewWilkes, ftw16:49
veelckhi Lennie16:49
veelck:)16:49
Lenniehow is the manage view going? ^_^16:50
veelckwell, I have new template, also added some stuff to host.py16:50
Lenniecool16:51
solydzajsSRabbelier: I'm committing the profiling, it's in main.py so no worries16:51
veelckanyway I have two small things missing - accessing to the manage view for host and exact call to remove the host that is being managed ;-)16:51
SRabbeliersolydzajs: what does it do? :)16:52
Lennieok16:52
solydzajsSRabbelier: one sec you will see :-)16:52
Lenniewhat do you mean by the first point?16:52
SRabbeliersolydzajs: maybe I don't want to :P16:52
Lennieand you are not actually removing the host but setting state to active16:52
LennieI can get you the call for that16:53
veelckok :)16:53
Lenniecan you get the host entity you need to manage?16:53
veelckI was going to kick solydzajs for that ;-)16:53
veelckhm.. didn't think about it yet... :/16:54
Lenniek16:54
Lennienot that hard ^_ ^16:54
Lenniecan you paste me the url regexp you made again?16:55
veelckah.. gimme 5 mins, I have to make one commit and will have plenty of time for melange ;-)16:55
Lennieit should say something like %(key_fields)s16:55
Lenniewhich basically means you will have all the info you need when your function is being called^_^16:55
veelck:)16:55
solydzajsSRabbelier: committed, have a look at commit message16:56
SRabbeliersolydzajs: ok16:57
solydzajsSRabbelier: let me know what you think16:58
SRabbeliersolydzajs: cute17:08
veelck:)17:11
Lennie^%(url_name)s/(?P<access_type>manage)/%(key_fields)s$17:11
Lennieyosh17:11
Lenniekey_fields is replaced by all the fields we need to identify a specific host in this case17:12
Lennieso you can just call the method I gave you in the PM ^_ ^17:12
Lenniehost_logic.getFromFields(**kwargs)17:12
veelckok17:12
Lennieit will always exist17:12
Lenniethe access check will pickup on the fact if it does not17:12
Lennieand give a 40417:12
veelckaha17:13
veelckok17:13
veelckcurrently my manage looks like17:13
veelck def manage(self, request, access_type, page_name=None,17:13
veelck           params=None, filter=None, **kwargs):17:13
veelck    """Manage the Host17:13
veelck17:13
veelck    Provides new view for managing host, uses manage_template17:13
veelck    instead of public_template.17:13
veelck    """17:13
veelck    # http://localhost:8080/host/manage/potest/veelck17:14
veelck    params['public_template'] = params['manage_template']17:14
veelck17:14
veelck    get_dict = request.GET17:14
veelck17:14
veelck    if 'delete' in get_dict:17:14
veelck      if get_dict['delete'] == 'true':17:14
solydzajsveelck: pastie man :P17:14
veelck        pass17:14
veelck17:14
veelck    return super(View, self).public(request, access_type,17:14
veelck        page_name=page_name, params=params, **kwargs)17:14
veelckah.. yep ;-)17:14
veelckI knew I forget about something ;-)17:14
Lenniehmm17:14
veelcksorry17:14
Lenniedont call public :D17:14
Lennielemme show you the line17:15
Lenniereturn responses.respond(request, template, context=context)17:15
Lennietemplate = params['manage_template']17:15
Lennieand context you should get by calling17:15
Lenniecontext = responses.getUniversalContext(request)17:15
Lennieand set the page name ^_^17:16
Lenniecontext['page_name'] = page_name17:16
solydzajsLennie: he can reuse public and just add additional buttons in the template17:16
Lenniepublic does an access check again17:16
Lennieso rather not :S17:16
solydzajsah forgot about that17:16
veelcksolydzajs: ;-)17:16
Lenniejust return a response when you can :D17:16
veelckdon't worry ;-)17:16
veelckokey17:16
Lenniepublic is a good first try but unfortuneatly it gives overhead :)17:17
*** matthewwilkes_ has joined #melange17:21
Lennieohloh is slow17:21
Lenniehasn't updated in 8 days :(17:21
*** MatthewWilkes has quit IRC17:22
veelckhttp://pastie.org/37262517:22
tpbTitle: #372625 - Pastie (at pastie.org)17:22
*** matthewwilkes_ is now known as MatthewWilkes17:22
veelckLennie: any idea?17:23
Lenniedo we have an issue for sidebar indentation solydzajs?17:23
Lennieyosh17:24
Lenniethat code has changed veelck17:24
Lennieupdate to latest version17:24
Lennieand make it say17:24
veelckah.. so I shouldn't update...17:24
veelck;-)17:24
Lennierights['manage'] = [access.checkIsHost]17:24
veelckah ok17:24
Lennierights['manage'] = ['checkIsHost']17:24
Lenniethe 2nd one17:24
LennieI hit enter too early on the first one :P17:24
veelckah ok :)17:25
Lenniethat's because we needed to change access.py so we can use the cache :)17:25
Lennieto make the app run fast once more17:25
veelckcool17:25
Lennie^_ ^17:25
Lennieright SRabbelier? ^_ ^17:25
veelckLennie: workses :)17:26
Lennie:)17:26
Lenniegreat17:26
veelckah.. said too fast ;-)17:27
Lenniefields = {'state':invalid} host_logic.updateEntityProperties(host_entity, fields) for the delete button functonality :p17:27
Lennie:(17:27
Lennieprobably forgot to import a module?17:27
Lenniesince I told you to use responses :p17:27
veelckbut it's mine code this time17:27
veelck;-)17:27
veelckyep17:27
Lennieas expected17:27
LennieI too run into that all the time :D17:28
solydzajsI use pylint and I don't run into that :P17:28
solydzajs:-)17:28
LennieI'm a nuub and don't use pylint17:28
Lenniegimmeh the right coding style file and I might use it ^_ ^17:28
veelckI didn't have time to set it properly at eclipse ;-)17:28
Lennieif you can tell me how :P17:28
Lenniebrb17:29
Lenniegonna get an apple17:29
Lennieand then finish the user profile page17:29
Lennieso that tlarsen can be happy once more :p17:29
Lennie[23:23:53] [+Lennie] do we have an issue for sidebar indentation solydzajs?17:29
Lennieif so please mark the appropriate issues as blockedOn that issue :P17:30
solydzajsLennie: I don't know17:31
solydzajsLennie: no we don't, it's just listed in the Bugs to fix on wiki page17:32
Lenniek17:32
LennieSRabbelier17:35
Lenniewhat happened to the tooltip patch ^_ ^?17:35
Lenniewas he going to improve it?17:35
*** tlarsen is now known as tlarsen|afk17:38
SRabbelierLennie: oh, yeah17:38
SRabbelierLennie: it's in my inbox17:38
SRabbelierLennie: what is sidebar indentation?17:39
Lenniemore plusses17:39
Lennieand minusses :p17:39
Lennieyou know17:39
Lenniemore levels of indendation17:39
SRabbelierLennie: oh, mhhh, I took that out because I thought it was overkill, and couldn't come up with a nice way to do it17:40
Lenniehehe17:40
Lennieoverkill?17:40
Lennielol17:40
SRabbelierLennie: how about one level of indentation, e.g. "grouping"17:40
Lennieso needed :P17:40
veelckLennie: my template extends public.html, and while I was calling public() there was no problem, but now, while using responses.respond, I can't get it working and have following problem http://pastie.org/37263917:40
tpbTitle: #372639 - Pastie (at pastie.org)17:40
SRabbelierLennie: Or do you need more than that?17:40
Lenniewithout looking17:40
LennieI'm going to guess17:40
Lenniejust for the fun of it17:40
Lenniecontext['entity'] = host_entity :P17:41
Lenniedid you do that :D?17:41
veelckthis time I did ;-)17:41
Lennieand17:42
Lenniedid it fix it :D17:42
veelckand have the other exception ;-)17:42
Lenniethe exception you wanted :P?17:42
veelckglobal name 'host_entity' is not defined17:42
Lennieo17:42
Lenniehmm17:42
Lenniedid you actually got the host entity like I told you :D?17:42
* veelck slaps his face and yields at himself17:43
SRabbeliers/yields/yells/g ?17:44
veelckSRabbelier: thx :)17:44
SRabbelierok, time to commit ACL caching17:45
SRabbeliersolydzajs: PAWEL!! :P17:46
solydzajsyes ?17:46
SRabbeliersolydzajs: what crappy commit msg is that17:46
solydzajsSRabbelier: what ?17:46
SRabbeliersolydzajs: add newline!17:46
solydzajsSRabbelier: where ?17:47
SRabbeliersolydzajs: http://pastebin.com/d3a081fe617:47
tpbTitle: pastebin - collaborative debugging tool (at pastebin.com)17:47
SRabbeliersolydzajs: your fault17:47
solydzajsSRabbelier: heh :P17:47
LennieREADY17:49
LennieFIGHT!17:49
* SRabbelier grins17:50
Lennierewriting code that should have been done right in one go hurray :D17:50
SRabbelierLennie: sorry :(17:51
Lennieyou owe me a waffle!17:52
Lennie^_ ^17:52
Lennieeither with whipped cream (not coolgggggggwhip) or chocolate sauce :D17:52
SRabbelierLennie: why? :P17:53
SRabbelierLennie: you didn't fixi t17:54
Lenniebecause you are sorry :D17:54
SRabbelierLennie: I had to fix it myself :P17:54
LennieI was talking about my code :D17:54
SRabbelierLennie: oh, user_self?17:54
Lennieyosh :P17:54
* SRabbelier points at tlarsen|afk17:54
SRabbelierLennie: he owes you said waffle then!17:54
Lennie:D17:54
Lenniedeveloper edit view is hammered shut now :P17:54
SRabbelierLennie: wait, your last commit is on user.py17:55
Lennieyou cannot overwrite an existing account ^_^17:55
Lennieyosh17:55
SRabbelierLennie: do you mean user.py or user_self?17:55
LennieI'm rewriting user_self now17:55
Lennieslowly17:55
SRabbelierLennie: good luck, you'll need it17:55
Lennie:D17:55
SRabbelierLennie: I tried myself, it was... uncomfortable17:55
Lennie?17:55
Lennieoh man17:55
Lennieits so easy D:17:55
Lenniejust dont overwrite edit17:56
Lennieit sucks17:56
Lenniekeep the user out of functions only devs may call :P17:56
Lennieanyhow you'll see17:56
SRabbelierLennie: ok :)17:56
Lenniewhen I finish it eventually :p17:56
SRabbelierLennie: good luck17:56
SRabbelierLennie: again :P17:57
Lenniemwah17:57
Lennie^_ ^17:57
LennieI just need to stop distracting myself17:57
SRabbelierLennie: I know!17:57
SRabbelierLennie: that's what i kept doing17:57
SRabbelierLennie: cos it's not that much fun to do at all :P17:57
SRabbelierLennie: maybe you can split it up in create/editGet/editPost17:57
Lenniehmm17:58
Lenniethat's almost what I'm doing17:58
SRabbelieranyway17:58
solydzajsLennie: can developer change Users email ?17:58
Lennieyosh17:58
SRabbeliersolydzajs: I'm done with caching17:58
Lennieif the need arises17:58
Lennieonly devs can17:58
solydzajsSRabbelier: but you didn't try profiling yet :-)17:58
Lenniebecause its so rare17:58
SRabbeliersolydzajs: true17:58
Lennieyou agree?17:58
SRabbeliersolydzajs: will do that next :)17:58
solydzajsLennie: yep I know, but does that work after your changes17:58
Lennieyes17:58
Lennie!17:58
LennieI tested it :p17:59
LennieI wrote new clean function for that17:59
Lenniethat uses the whole form17:59
Lennieto check if it's a legal email adress17:59
solydzajsok17:59
Lenniego look17:59
Lennie^_^17:59
LennieI didnt make happy patch notes about look it's working because I didnt feel like it :P18:00
Lenniehappy 28th18:00
Lennie^_^18:00
Lennie[00:00:00] ::: Day changed to (Wednesday, January 28th 2009).18:00
Lennie[00:00:01] [+Lennie] I didnt make happy patch notes about look it's working because I didnt feel like it :P18:00
Lennie[00:00:03] [+Lennie] happy 28th18:00
LennieI'm so fast18:00
Lennie^_ ^18:00
Lenniestop distracting me!18:00
Lennie^_ ^18:00
SRabbeliersolydzajs: please kick Lennie18:02
Lennie:D18:02
SRabbeliersolydzajs: or he won't get to work :P18:02
Lenniestop highlighting me18:02
LennieSTOP TOUCHING ME (Jeff Dunham :P)18:02
MatthewWilkesLennie: 59 minutes early as far as I'm concerned18:02
Lennie^_ ^18:02
SRabbelierMatthewWilkes: heheh, where are you at?18:03
SRabbelierMatthewWilkes: UK?18:03
MatthewWilkesyup18:03
SRabbelierMatthewWilkes: hehe :)18:03
Lennieah good, my diaf variable is being called ^_ ^18:10
SRabbelierLennie: lol18:12
*** tlarsen|afk is now known as tlarsen18:13
*** mithro has quit IRC18:20
SRabbeliersolydzajs: ping18:27
*** tlarsen is now known as tlarsen|busy18:28
solydzajsSRabbelier: pong18:38
Lenniei'm off19:22
Lennieuser profile page tomorrow19:22
SRabbelierLennie: ok19:22
Lennieo19:25
LennieI accidently left a todo in my last patch19:25
LennieI'll get rid of it tomorrow19:25
Lenniewhen I finish the profile19:25
Lenniebyebye19:25
*** Lennie has quit IRC19:26
*** tlarsen|busy has quit IRC20:26
*** MatthewWilkes has quit IRC20:55
*** dmitrig01|afk has joined #melange21:22
*** ChanServ sets mode: +v dmitrig01|afk21:22
*** SRabbelier has quit IRC21:30
*** tansell_ has joined #melange22:29
*** tansell_ has quit IRC22:29
*** tansell has joined #melange22:29
*** madrazr has joined #melange23:58

Generated by irclog2html.py 2.13.1 by Marius Gedminas - find it at mg.pov.lt!