2008-07-05T00:00:41  <byegonweon> xorAxAx: some functions signature were changed. I replace startsWith with StartsWith
2008-07-05T00:00:59  <xorAxAx> ah
2008-07-05T00:01:19  <xorAxAx> and ecma mandates S?
2008-07-05T00:01:22  <xorAxAx> instead of s
2008-07-05T00:01:32  <byegonweon> yes. hehe.
2008-07-05T00:01:40  <byegonweon> isn't it funny?
2008-07-05T00:02:01  <xorAxAx> so IE conforms to the spec and has less workarounds? or did they probably write IE's implementation into the spec? :-)
2008-07-05T00:15:32  <cortana`> it's so the latter :(
2008-07-05T00:19:22  <xorAxAx> hehe
2008-07-05T00:25:34  <PawelPacana> away
2008-07-05T00:25:41  <PawelPacana> not :)
2008-07-05T00:26:00  <xorAxAx> hehe, borat
2008-07-05T01:07:10  * dennda is digging through page.py
2008-07-05T01:07:24  <dennda> could need some basic refactoring...
2008-07-05T01:07:49  <johill> it's been tried...
2008-07-05T01:08:18  <dennda> just very basic things
2008-07-05T01:09:28  <dennda> if not self._loaded: self._loaded = True; else: return => if self._loaded: return; do stuff
2008-07-05T01:09:55  <dennda> And for a moment I thought he only had set_item and get_item and no property using those
2008-07-05T01:09:55  <johill> heh
2008-07-05T01:10:10  <dennda> but I was wrong
2008-07-05T01:12:15  <dennda> johill: Is it normal that test_Page.py fails almost completely?
2008-07-05T01:12:35  <johill> in 1.8 it works iirc
2008-07-05T01:12:55  <dennda> == tests finished: 1 passed, 8 failed in 0.02 seconds ==
2008-07-05T01:13:03  <johill> I have 8 passed, 1 failed
2008-07-05T01:13:04  <johill> heh
2008-07-05T01:13:11  <dennda> oO
2008-07-05T01:13:13  <johill> oh
2008-07-05T01:13:16  <dennda> strange enough
2008-07-05T01:13:18  <johill> I'm responsible for some of those
2008-07-05T01:13:25  <johill> TypeError: evaluate() takes exactly 2 arguments (4 given)
2008-07-05T01:13:53  <johill> I changed the search.term stuff already
2008-07-05T01:13:54  <dennda> Would've been great to have some working tests when converting Page.py to the new API
2008-07-05T01:14:12  <johill> just revert a few of those changesets
2008-07-05T01:14:36  <dennda> Aren't my changes gone then, too?
2008-07-05T01:14:43  <johill> but that's the trouble, the old search.term works with the old storage
2008-07-05T01:14:50  <johill> and the new search.term works with the new storage
2008-07-05T01:15:09  <dennda> or just the folder
2008-07-05T01:15:10  <dennda> hm
2008-07-05T01:15:16  <dennda> not that helpful then
2008-07-05T01:15:18  <johill> sorry. hg calls that backout
2008-07-05T01:15:19  <dennda> but only 9 tests?
2008-07-05T01:15:42  <johill> heh
2008-07-05T01:15:55  <johill> testPageList fails here, and that's due to the search stuff, the others ought to work
2008-07-05T01:19:22  <johill> if I drop out randomly, assume I crashed my kernel :)
2008-07-05T01:20:00  <dennda> ah, misusing your computer as heater?
2008-07-05T01:20:11  <johill> nah hacking the wireless stack
2008-07-05T01:20:34  <johill> oh I managed to mess it up already! oh well, reboot it is
2008-07-05T01:21:25  <dennda> is request.cfg.data_backend already a Backend instance? I doubt it...
2008-07-05T01:31:20  <dennda> johill: What is the difference between the current revision and the "real" revision? page.py line 273
2008-07-05T01:33:07  <dennda> ah nevermind, that doesn't operate on any item object but the page class's objects itself, so I don't need to know ;)
2008-07-05T01:35:02  <dennda> def getPagePath
2008-07-05T01:35:03  <dennda> ouch
2008-07-05T01:35:18  <dennda> who says there is a path? :)
2008-07-05T01:37:28  <johill> yeah I know
2008-07-05T01:37:33  <johill> it needs to go, along with caching
2008-07-05T01:37:53  <johill> request.cfg.data_backend should be an instance, yes
2008-07-05T01:39:04  <dennda> "go" as in "be deleted"?
2008-07-05T01:39:19  <johill> yes
2008-07-05T01:39:34  <dennda> just throw it?
2008-07-05T01:39:39  <dennda> *out
2008-07-05T01:39:41  <johill> well it's needed for page caching
2008-07-05T01:39:45  <johill> and for attachments
2008-07-05T01:39:47  <johill> but yes
2008-07-05T01:39:56  <dennda> ok
2008-07-05T01:39:57  <johill> for page caching, I suggest you just use the caching framework
2008-07-05T01:40:01  <dennda> I noticed something else
2008-07-05T01:40:12  <dennda> At some point the code refers to an items mtime attribute
2008-07-05T01:40:20  <johill> and use sha1sum(itemname|output_mime_type)
2008-07-05T01:40:23  <dennda> Do we store that in metadata?
2008-07-05T01:40:25  <johill> as the cache key
2008-07-05T01:40:33  <johill> an item's mtime?
2008-07-05T01:40:35  <johill> that's news to me
2008-07-05T01:40:38  <johill> where's that?
2008-07-05T01:40:57  <dennda> sorry, a revisions
2008-07-05T01:42:21  <dennda> For getting my hands dirty: What's the easiest way to run Moin and do something with Page.py?
2008-07-05T01:42:26  <johill> oh
2008-07-05T01:42:44  <johill> a revision, yeah I think the upper layer should just store that
2008-07-05T01:42:48  <johill> ./wikiserver.py
2008-07-05T01:43:02  <johill> and stick all config into wikiconfig_local.py as described in wikiconfig.py
2008-07-05T01:43:03  <dennda> ok when will I get errors? When trying to load a page?
2008-07-05T01:43:07  <johill> yeah
2008-07-05T01:43:21  * johill reboots again
2008-07-05T01:43:24  <dennda> ok. where would I do that boilerplate "create me a bunch of items" code?
2008-07-05T01:43:39  <johill> in wikiconfig_local.py where you set data_backend = ...
2008-07-05T01:43:48  <dennda> ok, thanks
2008-07-05T01:43:51  <johill> brb
2008-07-05T01:49:28  <dennda> Is that data_backend-instance always kept alive?
2008-07-05T01:49:42  <johill> sure
2008-07-05T01:53:09  <dennda>         items = self._items.iterate(filter=filter)
2008-07-05T01:53:18  <dennda> filter?
2008-07-05T01:53:36  <johill> oh well, that's search_item and iterate rolled into one
2008-07-05T01:53:48  <johill> if you do search_item(term.TRUE) that's the same as iterate really
2008-07-05T01:54:19  <dennda> ok so I will transform that to items = self._backend.search_item(term.TRUE)?
2008-07-05T01:54:26  <johill> no
2008-07-05T01:54:30  <johill> self._backend.search_item(filter)
2008-07-05T01:54:39  <dennda> ok
2008-07-05T02:02:45  <gizmach> cache = caching.CacheEntry(self.request, arena, key, scope='wiki', use_pickle=True) what key value to put to search Page <groupname>?
2008-07-05T02:04:19  <dennda> sorry, I am almost falling asleep while typing. I will get some rest now
2008-07-05T02:04:20  <dennda> good nigh
2008-07-05T02:05:02  <gizmach> gn dennda
2008-07-05T02:05:44  <johill> night
2008-07-05T02:06:09  <johill> gizmach: no idea, why do you need to know the group dict cache?
2008-07-05T02:07:24  <gizmach> johill: I need to check while instancng group object  if <groupname> cache exists and is uptodate and than unpickle it from cache
2008-07-05T02:13:26  <johill> hm
2008-07-05T02:14:04  <johill> you should probably put all the caching into your own code
2008-07-05T02:14:17  <johill> or are you just asking what you should use there for caching?
2008-07-05T02:18:01  <gizmach> I will put caching into my code, I'm just asking what to put as a key
2008-07-05T02:18:05  <gizmach> argment
2008-07-05T02:18:08  <gizmach> argument
2008-07-05T02:18:50  <johill> oh ok
2008-07-05T02:18:54  <johill> sorry, misunderstood you
2008-07-05T02:19:43  <johill> not sure, it's per group page right?
2008-07-05T02:20:22  <johill> how about just key=sha1sum(groupname.encode('utf-8')), arena='groupdicts'
2008-07-05T02:20:42  <gizmach> and also for the arena, I tried to put page object (it says I can put it) @param arena: either a string or a page object but got an error
2008-07-05T02:20:45  <gizmach> johill: :)
2008-07-05T02:20:48  <gizmach> yes
2008-07-05T02:20:56  <gizmach> hope so
2008-07-05T02:20:57  <gizmach> :)
2008-07-05T02:21:00  <gizmach> we'll see
2008-07-05T02:22:45  <johill> yeah please don't use a page object for that
2008-07-05T02:22:49  <johill> we're trying to get rid of it :)
2008-07-05T02:23:06  <gizmach> johill: ok:))
2008-07-05T02:23:21  <gizmach> also are you sure for the sha1sum ?
2008-07-05T02:23:42  <johill> well it's simple, so why not?
2008-07-05T02:24:04  <johill> of course the code is really like sha.new(gropuname.encode('utf-8')).hexdigest() or something
2008-07-05T02:24:34  <johill> you can't use the page name because it can contain characters like / that the filesystem doesn't like
2008-07-05T02:24:35  <gizmach> :) sure, will try
2008-07-05T02:24:40  <johill> and quoting etc. is troublesome
2008-07-05T02:24:48  <johill> so I'd just hash it :)
2008-07-05T02:27:29  <gizmach> johill: but I already have some cached groups
2008-07-05T02:27:44  <gizmach> and just need to get them in first place
2008-07-05T02:27:53  <johill> hm?
2008-07-05T02:28:13  <johill> where did you cache them then?
2008-07-05T02:29:23  <gizmach> but when I'm instancing a group there is a possibiity that the page is cached and is uptodate and I just need to instance group object
2008-07-05T02:29:46  <gizmach> it's not always sha... for key or am I wrong?
2008-07-05T02:30:39  <johill> well you need to use the same key all the time of course
2008-07-05T02:31:09  <johill> so when you're instantiating a group and notice that the cache is stale, you just update it
2008-07-05T02:31:16  <johill> so the next time around you'll load from it
2008-07-05T02:31:37  <gizmach> johill: yes I know that and it will be easy if I got a groupname that is a page but it's not cached
2008-07-05T02:32:09  <johill> so you have groups without names?
2008-07-05T02:32:13  <johill> I'm confused
2008-07-05T02:32:21  <gizmach> sorry
2008-07-05T02:32:28  <gizmach> will try to explain better
2008-07-05T02:32:31  <johill> np
2008-07-05T02:33:16  <johill> brb, hopefully
2008-07-05T02:33:46  <johill> ok worked, back
2008-07-05T02:33:53  <gizmach> ok in one case I gave a groupname when I want to instance a group object like Group(groupname) and while done this
2008-07-05T02:34:28  <gizmach> first I check if groupname is in cache already and is it uptodate
2008-07-05T02:34:53  <gizmach> and if it is I get it from cache and put in self.group
2008-07-05T02:35:13  <johill> right
2008-07-05T02:35:19  <johill> so how do you check it's in cache?
2008-07-05T02:35:25  <gizmach> if not I need to parse groupname page
2008-07-05T02:36:18  <gizmach> well I wanted to do cache = CachingEntry(...) but I didn't know if it is a good idea
2008-07-05T02:36:44  <johill> well yeah sure that's how it works
2008-07-05T02:38:10  <gizmach> but I didn't know what to put for the key and arena because I only got a name
2008-07-05T02:38:20  <johill> right
2008-07-05T02:38:47  <johill> so as key, I'd use the sha1sum of the name, that avoids clashes and also problems with the name being invalid on teh filesystem
2008-07-05T02:39:06  <johill> and as the arena, use something specific like 'wiki-groups'
2008-07-05T02:39:13  <johill> or 'pagegroups'
2008-07-05T02:39:46  <gizmach> ok that makes sense and I will need to make other code to use it later
2008-07-05T02:40:36  <gizmach> and to have key and arena like this if I need them
2008-07-05T02:42:23  <johill> well if you cache different groups you should then probably use a different arena
2008-07-05T02:43:03  <gizmach> johill: yes true but fot the all pagegroups I need to use pagegroups arena for example
2008-07-05T02:43:11  <johill> sure
2008-07-05T02:43:16  <gizmach> s/fot/for
2008-07-05T03:00:02  <gizmach> johill: ok this will work well, only put todo not to forgot to replace it in other code related to pagegroups
2008-07-05T03:00:15  <johill> well ideally there would only be once place doing it
2008-07-05T03:00:45  <gizmach> that maybe later, just need make this work firs :))
2008-07-05T03:00:51  <johill> :)
2008-07-05T03:03:57  <gizmach> just finished my not counting anymore coffee today
2008-07-05T03:04:30  <TheSheep> gizmach: white tea, really!
2008-07-05T03:04:49  <gizmach> TheSheep: I really like it but don't have it
2008-07-05T03:05:20  <gizmach> I have a house of green tea in Zagreb and they really have great teas but I drink all I got
2008-07-05T03:14:23  <TheSheep> gizmach: btw, in Jpaan "white tea" means just boiled water :)
2008-07-05T03:14:48  <gizmach> really? didn't know that
2008-07-05T03:14:57  <gizmach> cool
2008-07-05T03:15:35  <gizmach> I heard about some tea stronger that coffee, but don't know the name
2008-07-05T03:15:53  <TheSheep> greet tea usually has more caffeine than coffee
2008-07-05T03:15:58  <TheSheep> green
2008-07-05T03:16:10  <gizmach> I like with Jasmin
2008-07-05T03:16:24  <TheSheep> chinese
2008-07-05T03:16:53  <TheSheep> "Green teas have about a third the caffeine content, by liquid volume, of coffee."
2008-07-05T03:16:56  <TheSheep> sorry
2008-07-05T03:17:06  <johill> it tastes better so you drink more ;)
2008-07-05T03:17:24  <gizmach> hehe yes
2008-07-05T03:17:29  <TheSheep> http://www.celestialseasonings.com/products/caffeine.html/authentic-green-tea
2008-07-05T03:18:32  <TheSheep> I'm basically addicted by now
2008-07-05T03:20:36  <gizmach> wohow nice
2008-07-05T03:20:50  * gizmach will try to find it
2008-07-05T03:21:24  <gizmach> but the original
2008-07-05T03:21:38  <gizmach> I saw some smoked green tea leaves
2008-07-05T03:21:47  <gizmach> or dono how to say it
2008-07-05T03:39:55  <gizmach> it there any better way to check if a groupname is in cache than self.groups = cache.update() (because here I need to deal with exceptions)
2008-07-05T03:40:04  <gizmach> not update
2008-07-05T03:40:05  <gizmach> pardon
2008-07-05T03:40:27  <gizmach> cache.content()
2008-07-05T03:41:44  <gizmach> pardon, exists :)
2008-07-05T03:48:29  <johill> just try to load, and when that fails create it?
2008-07-05T03:48:30  <johill> dunno
2008-07-05T03:48:33  <johill> not sure how it works
2008-07-05T03:53:46  <gizmach> well it has cache.exist()
2008-07-05T03:53:48  <gizmach> and it works
2008-07-05T03:54:03  <gizmach> it's ok
2008-07-05T03:55:34  <johill> yeah sure, but if you ever delete cache entries it could be racy
2008-07-05T03:55:52  <johill> you test .exists(), it returns True, somebody else deletes it, you try to access it
2008-07-05T04:07:24  <gizmach> johill: yes true :)
2008-07-05T04:11:18  <gizmach> ok it works I tried
2008-07-05T04:12:15  <johill> :)
2008-07-05T04:13:13  <gizmach> and if someon deletes it doesn't return true and it's just what I need :)
2008-07-05T04:13:31  <johill> well I was talking about the race
2008-07-05T04:13:42  <johill> where it has already returned true, but somebody deletes it right before you try to load it
2008-07-05T04:13:48  <johill> in another process or thread
2008-07-05T04:14:52  <gizmach> ah I need to check if it's uptodate or you think I need to add one try-exception block while I try to take content() ?
2008-07-05T04:15:20  <johill> well yeah you need to try-except anyway
2008-07-05T04:15:31  <gizmach> :)
2008-07-05T04:15:52  <johill> there's some lockign though
2008-07-05T04:16:08  <johill> but I don't think it covers .exist
2008-07-05T04:20:03  <gizmach> well that try - ecxept code will make code a bit ugly and need to think a bit but better to check
2008-07-05T04:44:44  <gizmach> gn
2008-07-05T04:49:57  <CIA-53> Pawel Pacana <pawel.pacana@gmail.com> default * 4296:582620afbd1c 1.8-mercurialbackend-ppacana/MoinMoin/ (9 files in 6 dirs): Merge with 1.8-storage-cdenter
2008-07-05T08:38:51  <ThomasWaldmann> moin
2008-07-05T08:57:12  <ThomasWaldmann> johill: +        password = u'ßecretß'   ?
2008-07-05T09:03:25  <ThomasWaldmann> xorAxAx: there is still no reasonable comment at the top of the selection plugin
2008-07-05T09:07:24  <ThomasWaldmann> PawelPacana: try to not mix systematic cleanups with other code changes
2008-07-05T09:08:18  <ThomasWaldmann> e.g. if you e.g. change all raise Exc, "..."  to  raise Exc("..."), that should be in a seperate cs and not mixed with other changes
2008-07-05T09:16:39  <ThomasWaldmann> zenhase: you did not merge moin/1.8 since long
2008-07-05T09:19:22  <ThomasWaldmann> waldi: same for you
2008-07-05T09:19:30  <ThomasWaldmann> xorAxAx: same for your student
2008-07-05T09:33:01  <ThomasWaldmann> http://gpl.internetconnection.net/vi/  < finally: under GPL now! :)
2008-07-05T09:37:18  <xorAxAx> hm, no uno
2008-07-05T09:37:19  <xorAxAx> undo
2008-07-05T10:08:42  <ThomasWaldmann> only 1 item undo
2008-07-05T10:09:15  <TheSheep> infinite undo
2008-07-05T10:09:29  <TheSheep> it just undos the undo ;)
2008-07-05T10:09:33  <TheSheep> like real vi
2008-07-05T10:09:37  <ThomasWaldmann> :P
2008-07-05T10:09:41  <gizmach> moin
2008-07-05T10:09:45  <TheSheep> hi gizmach
2008-07-05T10:10:19  <ThomasWaldmann> does cursor down repeat work for you?
2008-07-05T10:10:41  <TheSheep> yes
2008-07-05T10:11:47  <TheSheep> if you mean things like 4k
2008-07-05T10:11:57  <TheSheep> holding down down doesn't work
2008-07-05T10:12:09  <TheSheep> 4j, sorry
2008-07-05T10:12:23  <TheSheep> (I always confuse it when I look(
2008-07-05T10:13:16  <xorAxAx> ThomasWaldmann: that didnt work for me either
2008-07-05T10:14:32  <ThomasWaldmann> anyway, would be nice for geeks using moin now that no strange license is in the way any more
2008-07-05T10:14:51  <ThomasWaldmann> maybe after storage merge and editor code refactoring
2008-07-05T10:42:48  <dennda> cursor repeat works here, but only with hjkl, not with arrow keys
2008-07-05T10:42:57  <dennda> anyway, that thing is nice. never seen it before
2008-07-05T10:47:12  <ThomasWaldmann> dennda: you can help getting it into moin with a good, mergeable storage thing
2008-07-05T10:47:39  <ThomasWaldmann> hacking vi.js into moin before that doesn't make much sense due to conflicts in PageEditor
2008-07-05T10:48:19  <xorAxAx> huh?
2008-07-05T11:00:39  <dennda> johill: I think I must do user.py first, because it is imported by Page.py
2008-07-05T11:01:08  <ThomasWaldmann> bbl
2008-07-05T11:02:10  <dennda> johill: In user.py there is a function called getUserList which just returns ItemCollection(request.cfg.user_backend, request).keys()
2008-07-05T11:02:48  <dennda> Do we use a seperate Backend for User storage? (I feel like we once discussed that, but I am not sure)
2008-07-05T11:07:27  <dennda> imho that makes sense
2008-07-05T11:12:39  <johill> morning
2008-07-05T11:12:59  <johill> ThomasWaldmann: that's an ß, hg just doesn't do encodings
2008-07-05T11:13:38  <johill> dennda: yeah we have a separate backend
2008-07-05T11:13:55  <johill> dennda: but you don't actually have to do user.py completely, just stub it out
2008-07-05T11:15:58  <dennda> johill: I once again stumple over something like this: identifier = ItemCollection(request.cfg.user_backend, request).iterate(filter) --- So iterate takes a filter (== searchterm), iterates over all items and returns those that match in a list? And search_item does the same? Is that correct?
2008-07-05T11:16:08  <dennda> s/stumple/stumble/
2008-07-05T11:17:39  <johill> it actually returns an iterator over those that match
2008-07-05T11:18:24  <dennda> ah ok, sure
2008-07-05T11:18:29  <johill> and yeah, sounds correct to me anyway since search_item should be an iterator iirc
2008-07-05T11:20:24  <dennda> shouldn't it be search_items rather than search_item then?
2008-07-05T11:20:40  <johill> probably, but maybe it should just not exist and iterate take the filter?
2008-07-05T11:21:30  <johill> I mean, look at http://hg.moinmo.in/moin/1.8-storage-cdenter/file/tip/MoinMoin/storage/backends/fs.py
2008-07-05T11:21:44  <johill> search_item is four lines, calling just iterate
2008-07-05T11:22:05  <johill> iteritems
2008-07-05T11:22:07  <johill> whatever
2008-07-05T11:24:46  <dennda> umm
2008-07-05T11:24:47  <dennda> user.py
2008-07-05T11:24:56  <dennda> getUserId looks broken to me
2008-07-05T11:25:24  <johill> indeed
2008-07-05T11:25:43  <johill> no wait, it seems fine, why?
2008-07-05T11:26:10  <dennda> it's just that having a return statement as only thing in a for-loop rings a bell
2008-07-05T11:26:33  <johill> oh
2008-07-05T11:26:48  <johill> well, the loop can only run once if the names are set up correctly
2008-07-05T11:26:52  <johill> and there are no duplicate names
2008-07-05T11:27:18  <dennda> ok so that's on purpose
2008-07-05T11:28:41  <johill> yeah
2008-07-05T11:30:45  * johill succeeds in rewriting the kernel's wireless virtual interface handling completely
2008-07-05T11:34:20  <dennda> congrats, whatever that means
2008-07-05T11:34:46  <johill> mostly deleting 150 lines of code out of around 500 ;)
2008-07-05T11:35:06  <johill> and making it less spaghetti
2008-07-05T11:36:31  <johill> gotta run to the post office, back in maybe 20 minutes
2008-07-05T11:36:33  <dennda> For user.py's user class, what is an `id` passed to __init__?
2008-07-05T11:36:37  <dennda> is it a number or a name?
2008-07-05T11:36:43  <dennda> ok
2008-07-05T11:41:19  <johill> it's the item's name, a string like '12345.123.9840321' or something
2008-07-05T11:41:45  <johill> as you've seen in getbyname, the username is actually stored in the 'name' metadata key
2008-07-05T11:43:32  <dennda> Well, I just wonder if I can use that id in get_item
2008-07-05T11:43:49  <dennda> sounds like "yes" to me
2008-07-05T11:57:06  <gizmach> bbl
2008-07-05T11:58:59  <johill> yes use it as the item name
2008-07-05T12:48:37  <dennda> *sigh*
2008-07-05T12:48:49  <dennda> test_user.py: 4 passed, 9 failed
2008-07-05T12:49:00  <dennda> (with a fresh clone, without having changed anything to it
2008-07-05T12:51:08  <CIA-53> Christopher Denter <moin GUESSWHAT the DASH space DASH station ROUNDTHING com> default * 4292:4a79402407f6 1.8-storage-cdenter/MoinMoin/ (storage/__init__.py user.py): storage: Hooking up new storage API with existing MoinMoin-Code. Starting with user.py. Transferring constants from storage/external.py to storage/__init__.py since external.py will be removed soon.
2008-07-05T12:51:10  <CIA-53> Christopher Denter <moin GUESSWHAT the DASH space DASH station ROUNDTHING com> default * 4293:67bf37273427 1.8-storage-cdenter/MoinMoin/storage/ (3 files in 2 dirs): merge
2008-07-05T12:51:36  <xorAxAx> dennda: of which repo?
2008-07-05T12:51:47  <dennda> mine
2008-07-05T12:54:30  <johill> not good, odd, I'll take a look once my router is functioning again
2008-07-05T12:56:08  <dennda> but at least with that changeset I get the same result ;)
2008-07-05T13:11:03  <gizmach> re
2008-07-05T13:12:24  <xorAxAx> moin gizmach
2008-07-05T13:12:26  <dreimark> moin
2008-07-05T13:12:40  <gizmach> xorAxAx: dreimark moin :)
2008-07-05T13:14:42  * ThomasWaldmann had spaghetti today :) (non-code ones)
2008-07-05T13:16:16  <gizmach> hehe
2008-07-05T13:16:43  * gizmach make pancakes
2008-07-05T13:16:51  <dennda> johill: If you like: I'd appreciate comments to that changeset
2008-07-05T13:17:14  <dennda> but no need to hurry, I'll try learning a bit about complexity theory now
2008-07-05T13:17:43  <johill> ok, I'm 80% done getting ipv6 to work, then I'll hvae some lunch, then I'll look
2008-07-05T13:18:11  <dennda> sweet
2008-07-05T13:19:01  * dreimark is hungry
2008-07-05T13:21:45  <dreimark> ThomasWaldmann: looks like we can do the check-in
2008-07-05T13:24:15  <dreimark> bbl 10mins
2008-07-05T13:32:14  <xorAxAx> dennda: just say that the algo is in O(2^n), thats nearly always correct
2008-07-05T13:32:37  <dennda> xorAxAx: yes, but I think they want a more precise answer
2008-07-05T13:33:54  <xorAxAx> hehe
2008-07-05T14:12:30  <dreimark> bbl
2008-07-05T14:16:01  <johill> dennda: looks ok, except that I'm not sure it's ok to return an iterator from getUserList
2008-07-05T14:20:03  <dennda> johill: Yes, I either need to make sure that it is correctly as an iterator further on (probably more efficient) or consume the iterator at once and generate a list out of it (much easier)
2008-07-05T14:20:25  <dennda> s/it is correctly/it is used correctly/
2008-07-05T14:21:32  <johill> yeah
2008-07-05T14:21:39  <dennda> I think I'll go with the latter
2008-07-05T14:21:42  <dennda> for the moment
2008-07-05T14:21:47  <johill> yeah easier for now
2008-07-05T14:22:47  <dennda> oops
2008-07-05T14:22:55  <dennda> the docstring says it returns all user ids
2008-07-05T14:23:57  <dennda> hm nevermind. I thought for a moment our iteritems iterated over Item objects
2008-07-05T14:24:03  <johill> it should
2008-07-05T14:24:11  <dennda> it doesn't in my implementation
2008-07-05T14:24:18  <johill> it does in mine, heh
2008-07-05T14:24:25  <dennda> it iterates over the ids
2008-07-05T14:24:41  <johill> wouldn't it be smarter to iterate over items so you are sure you actually get the item when you find it?
2008-07-05T14:25:36  <dennda> hm?
2008-07-05T14:26:20  <johill> if you iterate over the names you have to then look up the item by the name which can fail
2008-07-05T14:27:42  <dennda> ah I confused our "id" with the "id" term that is used in user.py
2008-07-05T14:27:49  <dennda> well yeah
2008-07-05T14:27:55  <johill> ah
2008-07-05T14:28:06  <dennda> unfortunately though that means I need to fix user.py
2008-07-05T14:28:18  <johill> only slightly
2008-07-05T14:28:56  <johill> for user in ...: do something with user
2008-07-05T14:29:00  <johill> -> for user in ...: do somehting with user.name
2008-07-05T14:29:02  <johill> at least for now
2008-07-05T14:29:20  <dennda> well we can just say iteritems() shall return an iterator over (item, item_id)
2008-07-05T14:29:28  <johill> item_id is internal
2008-07-05T14:30:09  <dennda> that doesn't touch it from outside
2008-07-05T14:30:29  <dennda> you'd need to make sure iteritems works that way when implementing a backend
2008-07-05T14:31:41  <johill> ?
2008-07-05T14:31:55  <johill> iteritems is part of the API, no?
2008-07-05T14:32:20  <dennda> yes, and?
2008-07-05T14:32:35  <johill> so how can it return item_id if  that's backend-specific?
2008-07-05T14:33:17  <dennda> the backend implementor must implement iteritems, too.
2008-07-05T14:33:35  <johill> sure
2008-07-05T14:33:45  <johill> but why would the API user wnat the item_id?
2008-07-05T14:33:56  <johill> it can't do anything with it at all
2008-07-05T14:33:59  <johill> afaict
2008-07-05T14:34:51  <johill> are you confusing user.id and item_id?
2008-07-05T14:34:59  <johill> user.id is item.name
2008-07-05T14:36:39  <dennda> http://paste.pocoo.org/show/78608/ <-- ok?
2008-07-05T14:37:02  <johill> yeah
2008-07-05T14:37:08  <dennda> ok
2008-07-05T14:37:12  <johill> you can write
2008-07-05T14:37:29  <johill> return [item.name for item in request.cfg.user_backend.iteritems()
2008-07-05T14:37:31  <johill> ]
2008-07-05T14:37:38  <dennda> yeah, LC
2008-07-05T14:37:45  <johill> (and I'd call it 'item' and not 'user' so it's less confusing)
2008-07-05T14:37:50  <dennda> ok
2008-07-05T14:38:10  <johill> but yeah the idea is fine
2008-07-05T14:38:23  <johill> you probably need to change memb to return items in iteritems
2008-07-05T14:39:01  <dennda> I already created a FIXME comment
2008-07-05T14:39:04  <dennda> for the latter
2008-07-05T14:39:29  <johill> :)
2008-07-05T14:40:44  <dennda> johill: do you think it is ok to use get_item in iteritems?
2008-07-05T14:41:05  <dennda> (so: for itemname in self._itemmap: get_item(itemname)...)
2008-07-05T14:41:18  <dennda> well
2008-07-05T14:41:24  <dennda> why not (in my specific implementation)
2008-07-05T14:42:22  <johill> in memb that's probably ok yeah
2008-07-05T14:42:27  <johill> it's not thread-safe in any way anyway
2008-07-05T14:56:59  <dennda> 2.3 just isn't sweet
2008-07-05T14:59:45  <dennda> johill: does iteritems() return just an iterator or even a generator?
2008-07-05T15:01:06  <johill> mine is an iterator, and that should work
2008-07-05T15:01:18  <johill> since the old .iterate() was one
2008-07-05T15:01:25  <dennda> return [self.get_item(itemname) for itemname in self._itemmap.keys()] <-- so that is ok?
2008-07-05T15:01:38  <johill> that's a list
2008-07-05T15:01:51  <johill> it works too though
2008-07-05T15:02:08  <dennda> well you can iterate over it, too
2008-07-05T15:02:22  <johill> you can't use .next but I guess that doesn't matter
2008-07-05T15:02:27  <johill> I wrote my iteritems() as a generator
2008-07-05T15:02:44  <dennda> I do wonder what the benefit of .next() is on an iterator, if that iterator is not a generator
2008-07-05T15:02:52  <dennda> maybe I didn't understand it correctly
2008-07-05T15:03:28  <dennda> return (self.get_item(itemname) for itemname in self._itemmap.keys()) <-- I had that, but that's not available in 2.3
2008-07-05T15:04:10  <johill> why not just for itemname in ...: yield self.get_item(itemname)?
2008-07-05T15:04:33  <dennda> yeah... I am somewhat confused sometimes
2008-07-05T15:04:47  <johill> but like I said, the small differences between these are unlikely to matter much
2008-07-05T15:05:09  <johill> (until somebody starts writing code that relies on getting a list)
2008-07-05T15:05:21  <dennda> I like it to be on the safe side
2008-07-05T15:08:04  <CIA-53> Christopher Denter <moin GUESSWHAT the DASH space DASH station ROUNDTHING com> default * 4294:9d2e92ade078 1.8-storage-cdenter/MoinMoin/ (storage/backends/memory.py user.py): storage: Fix memorybackends implementation of iteritems. Returns an iterator over items now. Fix getUserList in user.py
2008-07-05T15:29:01  * johill gives up on ipv6
2008-07-05T15:29:47  <xorAxAx> johill: why is that? :)
2008-07-05T15:30:10  <johill> well I have a tunnel up
2008-07-05T15:30:12  <johill> and I have a subnet configured
2008-07-05T15:30:21  <johill> and it's properly advertised by radvd
2008-07-05T15:30:31  <johill> and I can ping within the subnet, and from the router to world
2008-07-05T15:30:40  <johill> and packets from world go to my laptop too
2008-07-05T15:30:45  <xorAxAx> so you give up on linux/ipv6? :)
2008-07-05T15:30:48  <johill> but packets from my laptop never go to world
2008-07-05T15:31:07  <johill> well to be precise just on trying to configure openwrt on a 2.4 kernel for it ;)
2008-07-05T16:31:20  <johill> oh, it actually works now
2008-07-05T17:23:40  <CIA-53> Bastian Blank <bblank@thinkmo.de> default * 3722:2271321e8903 1.8-dom-bblank/MoinMoin/converter2/creole_in.py:
2008-07-05T17:23:40  <CIA-53> Creole input converter - Simplify raw url match
2008-07-05T17:23:40  <CIA-53> MoinMoin/converter2/creole_in.py
2008-07-05T17:23:40  <CIA-53> - Remove unneeded group from raw url match.
2008-07-05T17:23:40  <CIA-53> - Merge protocols expansion.
2008-07-05T17:23:42  <CIA-53> Bastian Blank <bblank@thinkmo.de> default * 3723:837c249d6740 1.8-dom-bblank/MoinMoin/converter2/ (_tests/test_creole_in.py creole_in.py):
2008-07-05T17:23:47  <CIA-53> Creole input converter - Fix links
2008-07-05T17:23:49  <CIA-53> * MoinMoin/converter2/creole_in.py
2008-07-05T17:23:51  <CIA-53>  - Merge link rules from old parser. Reduce number of cases.
2008-07-05T17:23:53  <CIA-53>  - Generate urls for wiki and interwiki links.
2008-07-05T17:23:55  <CIA-53> * MoinMoin/converter2/_tests/test_creole_in.py: Fix testcase to match reality.
2008-07-05T17:28:13  <johill> dennda: if you'd merge 1.8, I think the user tests would be better
2008-07-05T17:29:14  <dennda> johill: ok, will do that
2008-07-05T17:29:28  <dennda> There should be no clashes, correct?
2008-07-05T17:29:33  <johill> don't think so
2008-07-05T17:32:18  <dennda> http://paste.pocoo.org/show/78626/
2008-07-05T17:32:21  <dennda> :/
2008-07-05T17:32:46  <johill> huh
2008-07-05T17:32:51  <johill> well I guess something changed that conflicts with the storage code
2008-07-05T17:33:29  <johill> look at the file, look for the diff3 marker and fix it up
2008-07-05T17:33:58  <johill> the result should probably be
2008-07-05T17:34:01  <johill>                 # exists checked to avoid creation of empty edit-log for non-existing pages
2008-07-05T17:34:11  <johill>                 'last_edit_info': exists and page.last_edit(printable=True) or '',
2008-07-05T17:34:47  <johill> although that there is a workaround
2008-07-05T17:34:52  <johill> so you could remove the exists check etc too
2008-07-05T17:37:44  <dennda> later :)
2008-07-05T17:40:41  <johill> in fact, Page.last_edit does the .exists() check
2008-07-05T17:40:54  <johill> bbiab
2008-07-05T18:48:05  <gizmach> dreimark: http://paste.pocoo.org/show/78632/ take a look when you have time
2008-07-05T19:15:00  <ThomasWaldmann> waldi: there is url_schemas with schemas moin supports
2008-07-05T19:15:28  <ThomasWaldmann> waldi: and some languages have words containing a col:on
2008-07-05T20:14:07  <CIA-53> Pawel Pacana <pawel.pacana@gmail.com> default * 4297:c8d3e625ddeb 1.8-mercurialbackend-ppacana/MoinMoin/storage/backends/hg.py: (hg) get_revision(-1) support and revision number type checking
2008-07-05T20:21:09  * PawelPacana just got quite near polish-lithuanian border :>
2008-07-05T20:22:47  * johill rewrites more wireless code
2008-07-05T20:24:40  <xorAxAx> PawelPacana: gprs? :)
2008-07-05T20:36:55  <johill> apparently not in lithuania ;)
2008-07-05T20:43:39  <PawelPacana> gprs & screen
2008-07-05T20:44:18  <PawelPacana> however still in poland ;)
2008-07-05T20:45:08  <PawelPacana> next step (Vilnius) tomorrow
2008-07-05T20:45:41  <dennda> PawelPacana: does that work good?
2008-07-05T20:45:45  <dennda> talking of speed
2008-07-05T20:46:05  <PawelPacana> acceptable
2008-07-05T20:46:14  <PawelPacana> if not used in moving train
2008-07-05T20:46:32  <PawelPacana> when you loose connection frequently
2008-07-05T20:46:40  <dennda> you ssh into a screen with irssi?
2008-07-05T20:46:58  <PawelPacana> acceptable if speed ~2kB suits you
2008-07-05T20:47:22  <PawelPacana> pulling small changesets works :)
2008-07-05T20:47:39  <dennda> I meant for chatting
2008-07-05T20:48:01  <PawelPacana> dennda: yes, ssh -C
2008-07-05T20:48:33  <PawelPacana> although its much better  to chat directly, not through ssh
2008-07-05T20:48:44  <johill> I always use ssh, what's wrong with that?
2008-07-05T20:49:52  <PawelPacana> i sometimes get delays on ssh when typing
2008-07-05T20:50:46  <dennda> I am here with ssh, too :)
2008-07-05T20:51:08  <dennda> But true, that cann happen
2008-07-05T20:51:47  <PawelPacana> and more data is sent, which may be significant if running out of bytes on prepaid packet
2008-07-05T20:52:25  <dennda> well, I wouldn't use my current irssi setup for that :)
2008-07-05T20:52:36  <dennda> it is a bit "pimped"
2008-07-05T20:53:14  <ThomasWaldmann> PawelPacana: will you be at conf hotel tomorrow afternoon?
2008-07-05T20:53:29  <PawelPacana> "overloaded" :)
2008-07-05T20:53:44  <PawelPacana> tomorrow? rather not
2008-07-05T20:55:10  * ThomasWaldmann and dreimark will arrive there at ~1500
2008-07-05T20:55:20  <xorAxAx> johill: there is no way to get line buffering with ssh, right?
2008-07-05T20:55:24  <xorAxAx> (like in the telnet days)
2008-07-05T20:55:35  <PawelPacana> i have to meet my  tomorrows hospitalityclub host
2008-07-05T20:55:41  <xorAxAx> :-)
2008-07-05T20:56:01  <xorAxAx> PawelPacana: did you also host one yet? nobody has asked me yet
2008-07-05T20:56:58  <PawelPacana> xorAxAx: every time my room was hosting people i was away (my roommate is in HC too)
2008-07-05T20:57:09  <xorAxAx> PawelPacana: ah
2008-07-05T20:58:10  <johill> xorAxAx: actually, there is a hack, but I never managed to get it to work
2008-07-05T20:58:39  * dennda would like a moin-dev RL meeting
2008-07-05T20:59:04  <PawelPacana> xorAxAx: afaik you have to log on frequently to stay on top of the host-list
2008-07-05T20:59:35  <xorAxAx> PawelPacana: yes
2008-07-05T21:01:17  <ThomasWaldmann> dennda: that is all few months at some random conference :)
2008-07-05T21:01:30  <ThomasWaldmann> or in egypt :P
2008-07-05T21:02:00  <PawelPacana> xorAxAx: are you going to EP?
2008-07-05T21:02:18  <ThomasWaldmann> or at google :)
2008-07-05T21:02:26  <xorAxAx> PawelPacana: no
2008-07-05T21:02:53  <dennda> ThomasWaldmann: I meant a dedicated meeting :)
2008-07-05T21:03:03  <PawelPacana> xorAxAx: so you'll miss pypy sprint too
2008-07-05T21:03:11  <dennda> Only a few mentors are going to google's, no?
2008-07-05T21:03:49  <xorAxAx> PawelPacana: yes :/
2008-07-05T21:04:18  <PawelPacana> xorAxAx: i've seen your name on commits animation, btw great idea :)
2008-07-05T21:05:05  <xorAxAx> hehe, yeah :)
2008-07-05T21:06:04  <ThomasWaldmann> dennda: we can do a dedicated meeting, but the result/effort ratio compared to meeting at some conf is maybe lower
2008-07-05T21:06:21  <dennda> ThomasWaldmann: yeah
2008-07-05T21:06:44  <dennda> The only conference I am currently planning for is this years CCC
2008-07-05T21:06:48  <ThomasWaldmann> so how about 25c3? :)
2008-07-05T21:06:52  <dennda> :)
2008-07-05T21:07:40  <dennda> I missed the last two. This year there is a big fat red mark on my calendar
2008-07-05T21:08:14  <ThomasWaldmann> dennda: we could try to get a moin table in the hack center (in case they do reservations)
2008-07-05T21:08:47  <dennda> ThomasWaldmann: I'd first try to get a place to sleep and worry about that later :)
2008-07-05T21:08:55  <dennda> but yeah
2008-07-05T21:09:02  <ThomasWaldmann> problem is it is getting more and more crowded there each year
2008-07-05T21:09:07  <dennda> I have never been there before. No idea how large those halls are
2008-07-05T21:09:58  <dennda> (Oh and I am planning for Ubucon if there's no exam around that date)
2008-07-05T21:10:01  <ThomasWaldmann> seats, power and working wlan are a scarce ressource there :)
2008-07-05T21:10:27  <dennda> Bring your own router and power supply %-)
2008-07-05T21:12:04  <ThomasWaldmann> goettingen is not quite around the corner from here, but doable
2008-07-05T21:12:19  <dennda> I have visited a friend of mine there a few months ago
2008-07-05T21:12:34  <dennda> My ex-girlfriend drove the car (after having just received her license)
2008-07-05T21:12:41  <dennda> Was quite a nightmare
2008-07-05T21:13:05  <johill> what, nobody has done pypy/ppc for 5 months?
2008-07-05T21:14:11  <xorAxAx> "pypy/ppc"?
2008-07-05T21:14:19  <johill> pypy/jit/codegen/ppc/
2008-07-05T21:14:30  <xorAxAx> thats the jit, thats kind of stalled anyway
2008-07-05T21:15:18  <xorAxAx> when is ubucon, dennda?
2008-07-05T21:15:29  <dennda> 17., 18., 19. of october
2008-07-05T21:15:31  <dennda> ubucon.de
2008-07-05T21:15:53  <johill> all those userspace conferences ;)
2008-07-05T21:16:08  <dennda> johill you are a little princess :)
2008-07-05T21:16:39  <dennda> I enjoyed last year
2008-07-05T21:16:44  <PawelPacana> dennda: is it german speaking?
2008-07-05T21:16:44  <dennda> (Had a talk myself :/)
2008-07-05T21:16:51  <johill> :)
2008-07-05T21:17:05  <dennda> PawelPacana: Yes, it was. (I am not in the orga-team due to soc anymore)
2008-07-05T21:17:23  <dennda> But there is no reason not to accept english talks if you want to give one :)
2008-07-05T21:19:14  <PawelPacana> dennda:are you going to meet socers @google somewhere
2008-07-05T21:19:18  <PawelPacana> ?
2008-07-05T21:20:42  <xorAxAx> dennda: sounds doable and göttingen is where my sister lives
2008-07-05T21:20:49  <xorAxAx> dennda: so i could even camp in her room :)
2008-07-05T21:21:54  <dennda> PawelPacana: Hu? Am I going to google? Not that I know :)
2008-07-05T21:22:07  <dennda> xorAxAx: you could fetch johill as well :)
2008-07-05T21:23:19  <johill> my brother is there
2008-07-05T21:23:26  <dennda> heh
2008-07-05T21:23:30  <xorAxAx> hehe
2008-07-05T21:23:49  <johill> so I could stay at his place
2008-07-05T21:24:11  <xorAxAx> johill: those ar ethe most boring days in the year for a student - the start of the winter semester :)
2008-07-05T21:24:25  <xorAxAx> so it seems to match it
2008-07-05T21:24:45  <johill> october 19 is my g/f's birthday tho
2008-07-05T21:26:04  * johill looks for more wireless devices
2008-07-05T21:26:41  <ThomasWaldmann> dennda: if you'ld like it to happen at ubucon, make a page on the moin wiki
2008-07-05T21:27:05  <dennda> ThomasWaldmann: Let me check my exams around that date first
2008-07-05T21:27:07  <dennda> Then I will
2008-07-05T21:27:22  <xorAxAx> johill: 3 days at the same conference suck anyway
2008-07-05T21:27:23  <dennda> Would byte myself if I kicked it off and can't manage to get there :)
2008-07-05T21:27:50  <johill> xorAxAx: heh
2008-07-05T21:28:47  <johill> OLS is a whole _week_
2008-07-05T21:29:11  <dennda> But it's definitely not userspace
2008-07-05T21:29:20  <johill> heh actually that's not strictly true
2008-07-05T21:30:02  <johill> there's "Audio streaming over Bluetooth" for example which is quite a userspace thing iirc
2008-07-05T21:30:14  <johill> "Creating your own (Fedora) Distribution"?!
2008-07-05T21:30:38  <ThomasWaldmann> yeah, we need more distributions :P
2008-07-05T21:30:54  <johill> for sure!
2008-07-05T21:31:13  <ThomasWaldmann> ODPG
2008-07-05T21:31:49  <ThomasWaldmann> (one distribution per geek :)
2008-07-05T21:32:41  <johill> 'Coding Eye-Candy for Portable Linux Devices'
2008-07-05T21:32:51  <johill> hopefully not kernelspace either ;)
2008-07-05T21:33:18  <xorAxAx> sure
2008-07-05T21:33:20  <xorAxAx> framebuffer
2008-07-05T21:33:25  <xorAxAx> qtopia et al.
2008-07-05T21:41:07  <dennda> johill: besides, there was a talk "kernelprogrammierung" last year
2008-07-05T21:43:46  <johill> :)
2008-07-05T21:43:54  <johill> I could probably give one on wireless if anyone cares
2008-07-05T21:44:11  <dennda> CfP is active atm as far as I can tell
2008-07-05T21:44:41  <xorAxAx> johill: sounds cool
2008-07-05T21:45:18  <dennda> What distro do you use, actually?
2008-07-05T21:47:37  <johill> me?
2008-07-05T21:47:41  <johill> ubuntu's upstream ;)
2008-07-05T21:47:42  <dennda> yes
2008-07-05T21:47:53  <dennda> ic
2008-07-05T21:48:15  <dennda> stable?
2008-07-05T21:48:24  <johill> unstable & experimental
2008-07-05T21:48:32  <dennda> ok
2008-07-05T21:52:23  <dennda> I am quite a fan of arch since some time. Have that as dual-boot
2008-07-05T22:07:52  <dennda> irssi fuckes up
2008-07-05T22:07:57  <dennda> -e
2008-07-05T22:13:20  <gizmach> dennda: if u are comming to ccc maybe we see each other, I plan it too
2008-07-05T22:13:23  <gizmach> and re
2008-07-05T22:14:12  <xorAxAx> cool gizmach
2008-07-05T22:14:17  <xorAxAx> i might have time as well
2008-07-05T22:14:33  <gizmach> nice
2008-07-05T22:20:36  <dennda> hungary, correct?
2008-07-05T22:21:07  <xorAxAx> no
2008-07-05T22:21:23  <xorAxAx> dennda: next guess please
2008-07-05T22:21:31  <dennda> croatia?
2008-07-05T22:21:38  <dennda> she's on #ubuntu-hr :)
2008-07-05T22:22:31  <xorAxAx> better
2008-07-05T22:22:53  <gizmach> dennda: ;)
2008-07-05T22:22:54  <dennda> yeh, that was my first guess but that #ubuntu-hr distracted me
2008-07-05T22:23:07  <gizmach> hr = hrvatska (croatia)
2008-07-05T22:23:51  <dennda> ic
2008-07-05T22:24:09  <dennda> I thought it was hungary
2008-07-05T22:24:40  <gizmach> dennda: it confused most of people
2008-07-05T23:22:33  <mmihaljevic> network crushed
2008-07-05T23:44:48  <dreimark> re
2008-07-05T23:45:18  <dreimark> mmihaljevic: I will read tom.
2008-07-05T23:47:10  <mmihaljevic> dreimark: ok
2008-07-05T23:50:45  <dreimark> good night
2008-07-05T23:51:00  <dreimark> my journey starts at 6:10
2008-07-05T23:51:05  <mmihaljevic> gn dreimark , have a nice time
2008-07-05T23:51:23  <dreimark> thx
2008-07-05T23:58:16  <ThomasWaldmann> gn dreimark
2008-07-05T23:58:22  <ThomasWaldmann> see u tomorrow

MoinMoin: MoinMoinChat/Logs/moin-dev/2008-07-05 (last edited 2008-07-04 22:15:02 by IrcLogImporter)