2006-06-15T00:00:13  <mitsuhiko> Kepplar: don't call vim "notepad"
2006-06-15T00:01:08  <xorAxAx> Kepplar: a good boss doesnt mind which tools you use as long as he can afford them
2006-06-15T00:01:11  <xorAxAx> Kepplar: if your result is ok
2006-06-15T00:02:21  <Kepplar> I wasn't calling anything notepad
2006-06-15T00:02:42  <Kepplar> A good boss always cares what tools you use, as he wants you to be most productive
2006-06-15T00:03:13  <xorAxAx> ok, mine doesnt care
2006-06-15T00:03:14  <birkenfeld> A good boss should know that you know best with what tool you are productive
2006-06-15T00:03:32  <xorAxAx> i am developing on a 512 MB 900 mhz machine a java webapp with eclipse
2006-06-15T00:03:38  <xorAxAx> the app boots in 90 seconds
2006-06-15T00:03:48  <xorAxAx> recompilation of a jsp file needs 20 seconds
2006-06-15T00:04:12  <Kepplar> That's wasted time
2006-06-15T00:04:16  <xorAxAx> they would need to give me a bigger machine (a new one)
2006-06-15T00:04:27  <xorAxAx> but i am just a student who doesnt show up very often
2006-06-15T00:04:30  <Kepplar> Ah
2006-06-15T00:04:35  <Kepplar> My boss got me a new top end machine
2006-06-15T00:05:46  <Kepplar> But i'm not a student
2006-06-15T00:05:47  <Kepplar> :D
2006-06-15T00:05:57  <xorAxAx> did you study?
2006-06-15T00:06:02  <Kepplar> Yeah
2006-06-15T00:06:04  <Kepplar> Computing
2006-06-15T00:06:20  <Kepplar> i wanted to be a vet. Failed. Went into uni doing a random clearance degree
2006-06-15T00:06:25  <xorAxAx> as opposed to computer science?
2006-06-15T00:06:31  <Kepplar> Did computing. And loved it
2006-06-15T00:06:35  <xorAxAx> or is it the same?
2006-06-15T00:06:37  <Kepplar> How random is that?
2006-06-15T00:06:39  <Kepplar> The same
2006-06-15T00:06:46  <Kepplar> computing had fewer fixed modules
2006-06-15T00:06:52  <Kepplar> so i specialised in AI
2006-06-15T00:07:01  <xorAxAx> ThomasWaldmann did so as well :)
2006-06-15T00:07:28  <Kepplar> Alex says i was always destined to be a software engineer
2006-06-15T00:07:43  <Kepplar> even when i was modeling my life on St Francis of Acici
2006-06-15T00:10:05  <xorAxAx> who was this st. francis?
2006-06-15T00:10:55  <Kepplar> Small animal lover
2006-06-15T00:11:06  <Kepplar> If you watch red dwarf - backwrds
2006-06-15T00:11:22  <Kepplar> "St' Francis of Acici - Goes around torturing and maiming small animals"
2006-06-15T00:13:22  <Kepplar> "Santa clause - WHat a BASTARD! He sneaks down the chimney every year and steals all the kids favorite toys!"
2006-06-15T00:14:54  <xorAxAx> ah
2006-06-15T01:38:02  <Kepplar> right
2006-06-15T01:38:07  <Kepplar> my friends gone
2006-06-15T01:41:41  <Kepplar> sorry was a bit late
2006-06-15T01:41:47  <Kepplar> so i wont get time to do any commit :/
2006-06-15T01:41:51  <Kepplar> hmm
2006-06-15T01:41:52  <Kepplar> damn it
2006-06-15T01:42:07  <Kepplar> right, ill copy my ssh key over so i can work remote tomorrow
2006-06-15T10:03:39  <ThomasWaldmann> xorAxAx: i didnt specialize in AI, but in hardware + computer linguistics
2006-06-15T10:04:16  <ThomasWaldmann> the last has some applications for AI though
2006-06-15T11:22:58  <xorAxAx> ThomasWaldmann: ah, confused it then
2006-06-15T11:23:32  <ThomasWaldmann> i am merging thread_monitor into 1.5 right now
2006-06-15T11:23:55  <xorAxAx> did you see dead threads again?
2006-06-15T11:24:42  <ThomasWaldmann> it is currently at 100%, action thread_monitor takes quite a while...
2006-06-15T11:25:18  <xorAxAx> it should need 5 seconds, regardless of how high the load is + processing time
2006-06-15T11:25:50  <ThomasWaldmann> nope
2006-06-15T11:26:44  <ThomasWaldmann> rather some minutes to show
2006-06-15T11:26:50  <xorAxAx> hmm
2006-06-15T11:27:29  <xorAxAx> maybe twisted doesnt like the writes_from_deferred from other threads
2006-06-15T11:27:45  <xorAxAx> and stalls in internal locks ...
2006-06-15T11:28:28  <xorAxAx> hmm, IIRC i write to an object before sending it to request, though
2006-06-15T11:31:22  <ThomasWaldmann>   File "/org/moin_tw/moin-1.5/MoinMoin/request.py", line 1412, in __init__
2006-06-15T11:31:22  <ThomasWaldmann>     self.remote_host = self.twistd.getClient()
2006-06-15T11:31:22  <ThomasWaldmann>   File "/usr/local/lib/python2.4/site-packages/twisted/web/http.py", line 888, in getClient
2006-06-15T11:31:26  <ThomasWaldmann>     name, names, addresses = socket.gethostbyaddr(host)
2006-06-15T11:31:37  <ThomasWaldmann> these are the last lines of the MainThread...
2006-06-15T11:32:31  <ThomasWaldmann> looks like it blocks on a non-working reverse lookup
2006-06-15T11:32:43  <xorAxAx> funny
2006-06-15T11:33:19  <xorAxAx> gethostbyaddr could fork
2006-06-15T11:33:22  <ThomasWaldmann> i check if we can throw that stuff out
2006-06-15T11:59:31  <Kepplar> morning
2006-06-15T11:59:39  <ThomasWaldmann> i removed it. totally unused. X)
2006-06-15T11:59:47  <ThomasWaldmann> moin Kepplar
2006-06-15T12:44:31  <xorAxAx> ThomasWaldmann: can you move he to the moinmaster wiki?
2006-06-15T12:44:41  <xorAxAx> ThomasWaldmann: i guess nir doesnt care for it anymore
2006-06-15T12:44:51  <xorAxAx> oh, it is already
2006-06-15T12:44:56  <xorAxAx> just the comment is wrong
2006-06-15T12:57:55  <ThomasWaldmann> xorAxAx: can we make tm faster?
2006-06-15T12:58:32  <xorAxAx> ThomasWaldmann: nope
2006-06-15T12:58:50  <xorAxAx> ThomasWaldmann: you mean the speed impact because it has to register as a trace function?
2006-06-15T12:59:10  <ThomasWaldmann> i mean the time it takes to do the action
2006-06-15T12:59:25  <xorAxAx> no idea why its slow
2006-06-15T12:59:36  <xorAxAx> for me it was fast
2006-06-15T12:59:50  <xorAxAx> as i said, that could be locks
2006-06-15T13:02:17  <Kepplar> right
2006-06-15T13:02:19  <Kepplar> hmm
2006-06-15T13:03:29  <mvirkkil> What is "tm"?
2006-06-15T13:03:37  <Kepplar> for some reason my wiki doesnt have any metadata on the pages
2006-06-15T13:03:43  <Kepplar> so i cant see where they go or what format they take
2006-06-15T13:04:00  <mvirkkil> Kepplar: What kind of metadata?
2006-06-15T13:04:04  <Kepplar> any
2006-06-15T13:04:07  <xorAxAx> mvirkkil: thread_monitor
2006-06-15T13:04:14  <mvirkkil> Kepplar: The #pragma kind?
2006-06-15T13:04:15  <xorAxAx> mvirkkil: it shows what the threads are doing currently
2006-06-15T13:04:21  <mvirkkil> ok
2006-06-15T13:04:25  <Kepplar> i have no idea
2006-06-15T13:05:07  <mvirkkil> BTW: I was thinking about extracting author info from page history, but I'm not sure if that's feasable?
2006-06-15T13:05:30  <mvirkkil> page history == revision history
2006-06-15T13:05:50  <Kepplar> thats fine
2006-06-15T13:05:59  <Kepplar> metadata is auto loaded from an item revision
2006-06-15T13:06:58  <mvirkkil> Kepplar: What metadata? Is that something you are working on or something that already exists in moin?
2006-06-15T13:07:29  <Kepplar> not sure
2006-06-15T13:07:42  <Kepplar> im just doing what ive been told to do
2006-06-15T13:07:57  <Kepplar> (read: i dont have time to trundle through everything to do with moin - im only storing things)
2006-06-15T13:08:45  <Kepplar> how does one remove`a dead server from irssi, disconnect doesnt seem to do it
2006-06-15T13:10:13  <xorAxAx> /rmreconns
2006-06-15T13:10:18  <Kepplar> ta
2006-06-15T13:10:24  <Kepplar> :)
2006-06-15T13:14:04  <Kepplar> the wiki is *Really* slow at the moment :/
2006-06-15T13:16:43  <xorAxAx> ThomasWaldmann: hmm, considering that twisted launches new threads constantly, it might make sense to stall new requests until the tm action has finished
2006-06-15T13:16:52  <xorAxAx> ThomasWaldmann: that might be thee problem :)
2006-06-15T13:19:51  <Kepplar> ThomasWaldmann: isnt metadict suppose to be in wikiutil (cant find it)
2006-06-15T13:22:40  <Kepplar> xorAxAx: what do you think about seperating metadata into its own file
2006-06-15T13:23:35  <Kepplar> i've pulled from the repo on to my laptop, although my desktop version is newer (i forgot to commit this morning)
2006-06-15T13:23:43  <Kepplar> would i have to pull and merge tonight?
2006-06-15T13:27:23  <xorAxAx> Kepplar: simply commit locally, push it sometime
2006-06-15T13:27:36  <xorAxAx> Kepplar: then you commit on your desktop
2006-06-15T13:27:40  <Kepplar> ThomasWaldmann: what does kw mean in item.py?
2006-06-15T13:27:50  <Kepplar> push it to my desktop you mean?
2006-06-15T13:27:51  <xorAxAx> Kepplar: pull on your desktop, and merge, commit and push
2006-06-15T13:27:54  <xorAxAx> Kepplar: no
2006-06-15T13:28:14  <Kepplar> desktop pull laptop, merge, comit, push/
2006-06-15T13:28:21  <Kepplar> = ?
2006-06-15T13:36:41  <Kepplar> ThomasWaldmann: moins really slow, whats the problem?
2006-06-15T13:49:23  <ThomasWaldmann> the thread monitor seems to have a big performance impact, causing own trouble as a consequence
2006-06-15T13:50:23  <Kepplar> also: hg push
2006-06-15T13:50:23  <Kepplar> pushing to default-push
2006-06-15T13:50:23  <Kepplar> abort: repository default-push not found!
2006-06-15T13:50:38  <Kepplar> when it is specified
2006-06-15T13:50:52  <Kepplar> in .hg/hgrc
2006-06-15T13:51:54  <Kepplar> ooo
2006-06-15T13:51:56  <Kepplar> might be working
2006-06-15T13:51:59  <Kepplar> yep
2006-06-15T13:52:48  <ThomasWaldmann> Kepplar: man grep
2006-06-15T13:53:07  <Kepplar> ThomasWaldmann: which point is that in relation to?
2006-06-15T13:53:16  <ThomasWaldmann> finding metadict
2006-06-15T13:53:58  <Kepplar> hmm ok, i did try find in IE where im looking on the web hg frontend
2006-06-15T13:54:22  <ThomasWaldmann> and of course we have metadata in its own file in future (just not for 1.5 compat storage)
2006-06-15T13:55:54  <ThomasWaldmann> kw means keyword (arguments)
2006-06-15T13:59:09  <Kepplar> theres a 200 line method in wikiutil O_o
2006-06-15T14:00:58  <ThomasWaldmann> fpletz: how's things going?
2006-06-15T14:01:31  <Kepplar> ThomasWaldmann: it appears the reason i can't din it is metadict isnt in 2.0
2006-06-15T14:01:32  <fpletz> ThomasWaldmann: well, pretty good, I think.. I'm still alive, that's the good part ;)
2006-06-15T14:02:17  <Kepplar> according to the web page, the commit i made about 20 minutes ago was 8 hours ago???
2006-06-15T14:02:38  <fpletz> Kepplar: yep, the commit, not the push
2006-06-15T14:03:06  <Kepplar> i commited a minute before :P
2006-06-15T14:03:30  <ThomasWaldmann> Kepplar: metadict IS in 2.0, but at another place
2006-06-15T14:04:25  <ThomasWaldmann> Kepplar: read those:
2006-06-15T14:04:27  <ThomasWaldmann> http://moinmoin.wikiwikiweb.de/StorageRefactoring/State
2006-06-15T14:04:36  <ThomasWaldmann> http://moinmoin.wikiwikiweb.de/MoinMoinTodo/Release_2.0/StepByStep
2006-06-15T14:04:51  <ThomasWaldmann> http://moinmoin.wikiwikiweb.de/MoinMoinTodo/Release_2.0/OpenProblems
2006-06-15T14:05:05  <ThomasWaldmann> http://moinmoin.wikiwikiweb.de/StorageRefactoring/PagesAsBundles
2006-06-15T14:05:35  <Kepplar> fine, but this is major hassle. I hope my comments on the state of moin's (lack of) navigatable, managable and controlled documentation is becoming slightly more clear now :)
2006-06-15T14:17:10  <ThomasWaldmann> you are doing NEW stuff, so there isn't documentation. but you can do great documentation as part of your work.
2006-06-15T14:18:21  <Kepplar> oh dont worry about that, everything is being extensively documented :)
2006-06-15T14:20:02  <ThomasWaldmann> fpletz: dont forget docs/CHANGES.fpletz
2006-06-15T14:20:52  <fpletz> ThomasWaldmann: mmh, I think I did that.. isn't it right that way?
2006-06-15T14:23:03  <ThomasWaldmann> do you want to include the stemming python api into moin? like xapwrap?
2006-06-15T14:24:19  <fpletz> mmh, we could do.. but it needs to be compiled so there has to be a c compiler available
2006-06-15T14:24:39  <ThomasWaldmann> oh
2006-06-15T14:24:41  <fpletz> shwe would add a new depedency just for stemming
2006-06-15T14:24:43  <fpletz> -sh
2006-06-15T14:25:14  <ThomasWaldmann> then rather not. but document some install infos about xapian and snowball in your changes file
2006-06-15T14:25:53  <ThomasWaldmann> whats needed, where to get - that should be enough
2006-06-15T14:25:58  <fpletz> ok, will do.. I also spoke with richard about this and I'm going to make debian packages for the stemmer
2006-06-15T14:26:14  <richardb> A project I'd like to do sometime is make the snowball code generator spit out Python.  (It can currently only do C or Java)
2006-06-15T14:26:22  <richardb> Not likely to happen in the immediate term, though.
2006-06-15T14:26:42  <richardb> Until then, I suggest try: import Stemmer; except ImportError: ...
2006-06-15T14:26:53  <richardb> And just don't stem anything if there's no stemmer available.
2006-06-15T14:27:02  <ThomasWaldmann> right
2006-06-15T14:27:03  <fpletz> yes, currently in my code ;)
2006-06-15T14:27:11  <richardb> Cool.  I should read it. ;-)
2006-06-15T14:27:40  <ThomasWaldmann> and maybe use request.cfg.xapian_stemmer_language = 'de' until we have something better
2006-06-15T14:27:43  <Kepplar> afternoon richardb
2006-06-15T14:27:53  <richardb> hi Kepplar
2006-06-15T14:28:34  <fpletz> ThomasWaldmann: richardb gave some pointers on how to resolve the issues with the languages.. will implement this now
2006-06-15T14:32:37  <ThomasWaldmann> ok
2006-06-15T14:36:08  <Kepplar> Since you'll access an item revisions data or metadata attributes, and set them (properties) what is the best way in peoples opinion on handling "refreshing" of data from the backing storage, a seperate method?
2006-06-15T14:36:39  <Kepplar> or send a special code/object via set property method
2006-06-15T14:36:49  <Kepplar> that it checks to see if its that, and if so gets from engine?
2006-06-15T14:38:54  <ThomasWaldmann> are you talking about cache coherency?
2006-06-15T14:39:05  <Kepplar> yep
2006-06-15T14:39:08  <Kepplar> well
2006-06-15T14:39:09  <Kepplar> ish
2006-06-15T14:39:23  <Kepplar> not really cached in the sense of caching processed data
2006-06-15T14:39:33  <Kepplar> but within an objects lifespan (itemrevisions)
2006-06-15T14:39:55  <Kepplar> which may or may not be different based on how moin is installed
2006-06-15T14:40:44  <ThomasWaldmann> for a specific item revision's data, we never have that problem as it is not changed (exception: renames)
2006-06-15T14:41:13  <Kepplar> in the future it may
2006-06-15T14:41:19  <Kepplar> say another program maniplates the database storage
2006-06-15T14:41:24  <ThomasWaldmann> but you have to make sure that current revision really is current
2006-06-15T14:41:28  <Kepplar> yep
2006-06-15T14:41:33  <Kepplar> defensive programming
2006-06-15T14:41:45  <Kepplar> hmm
2006-06-15T14:42:05  <ThomasWaldmann> what do you mean by "in the future it may"?
2006-06-15T14:43:16  <ThomasWaldmann> ah, another exception is pruning of old revisions
2006-06-15T14:43:18  <Kepplar> future storage implementations
2006-06-15T14:43:27  <Kepplar> oh?
2006-06-15T14:43:39  <ThomasWaldmann> as both pruning and renaming make the stuff vanish, that has to be handled
2006-06-15T14:46:09  <ThomasWaldmann>      def getStemmer(algorithm='english'):
2006-06-15T14:46:13  <fpletz> ThomasWaldmann: why doesn't any instance of page hast the language property set right after object creation? do I really need to call send_page or come up with an ugly hack? ;)
2006-06-15T14:46:19  <fpletz> ThomasWaldmann: will be fixed ;)
2006-06-15T14:46:38  <ThomasWaldmann> does that also take iso language abbreviations like en, de, ...?
2006-06-15T14:46:43  <richardb> yup
2006-06-15T14:46:44  <fpletz> nope
2006-06-15T14:46:47  <fpletz> yes?
2006-06-15T14:46:47  <richardb> 2 or 3 letter.
2006-06-15T14:46:48  <fpletz> really? ;)
2006-06-15T14:46:54  <fpletz> great ;)
2006-06-15T14:46:54  <richardb> It's meant to.
2006-06-15T14:46:58  <ThomasWaldmann> great :)
2006-06-15T14:47:08  <richardb> And I believe I documented it...
2006-06-15T14:47:14  <ThomasWaldmann> because that's what we use all over the place
2006-06-15T14:47:18  <Kepplar> hmm
2006-06-15T14:47:36  <Kepplar> ThomasWaldmann: and the semephore will prevent other users from altering things at the same time
2006-06-15T14:47:42  <fpletz> ThomasWaldmann: about the page.language issue.. any suggestions?
2006-06-15T14:49:05  <ThomasWaldmann> fpletz: there is a #language processing instruction, if not, use some cfg default as fallback
2006-06-15T14:49:15  <richardb> Hrm, I should put the documentation for the Stemmer module up on the snowball website.
2006-06-15T14:50:00  <ThomasWaldmann> later, this stuff will be in item metadata
2006-06-15T14:50:41  <fpletz> ok, so I'll go option 2 for now.. hack ;)
2006-06-15T15:14:19  <fpletz> richardb: would it be possible to export the language codes (like algorithms) because right now I would have to create a Stemmer instance every time I want to check if a language is supported
2006-06-15T15:14:32  <richardb> hmm.
2006-06-15T15:14:37  <richardb> Yes, that would be possible.
2006-06-15T15:15:03  <richardb> Creating a stemmer instance won't be expensive though.
2006-06-15T15:15:29  <richardb> Particularly not if it fails (will just involve a quick look up in a table, and then returning the result)
2006-06-15T15:16:05  <fpletz> okay
2006-06-15T15:16:20  <fpletz> then I'll keep it that way
2006-06-15T15:16:41  <richardb> I should have thought to export that from the start... but I didn't. ;-)
2006-06-15T16:11:52  <fpletz> moin now got searching for language.. ;)
2006-06-15T16:28:53  <ThomasWaldmann> you mean search for all "de" pages, for example?
2006-06-15T16:30:37  <fpletz> yes, and negating etc. for not displaying "de" pages
2006-06-15T16:31:00  <fpletz> I introduced a new prefix, lang (just like linkto or title)
2006-06-15T16:32:13  <ThomasWaldmann> use the same as the PI
2006-06-15T16:33:55  <fpletz> PI? I took most of the basic code from LinkSearch (but lang won't be available without xapian)
2006-06-15T16:35:08  <ThomasWaldmann> processing instruction. see pages on moinmaster, they have #language de in their header
2006-06-15T16:35:50  <ThomasWaldmann> #acl MoinPagesEditorGroup:read,write,delete,revert All:read
2006-06-15T16:35:50  <ThomasWaldmann> #format wiki
2006-06-15T16:35:50  <ThomasWaldmann> #language de
2006-06-15T16:36:05  <fpletz> yeah, I'm parsing the raw body of the pages
2006-06-15T16:36:10  <ThomasWaldmann> that stuff will move to item metadata file in the future
2006-06-15T16:36:47  <fpletz> ok, I already marked my code as a hack ;)
2006-06-15T16:36:54  <fpletz> future is post-1.6?
2006-06-15T16:37:21  <ThomasWaldmann> == when kepplar has made us very happy with his code :)
2006-06-15T16:37:42  <fpletz> lol, ok
2006-06-15T16:38:19  <ThomasWaldmann> did you commit all that stuff?
2006-06-15T16:38:23  <fpletz> yes
2006-06-15T16:38:31  <ThomasWaldmann> ok, i look at the details
2006-06-15T16:38:37  <fpletz> I'm now working on the real stemming search stuff
2006-06-15T16:38:53  <fpletz> just wanted to get languagesearch working first
2006-06-15T16:44:23  <ThomasWaldmann> fpletz: if you find #language xx, but xx is not stemmable, you use en for stemming?
2006-06-15T16:44:43  <ThomasWaldmann> (cfg.default_lang rather)
2006-06-15T16:44:44  <fpletz> ThomasWaldmann: I use cfg.language_default
2006-06-15T16:44:49  <fpletz> ;)
2006-06-15T16:45:43  <ThomasWaldmann> ok, maybe best we can do now. another possibility would have been not to stem at all, but maybe we better do that later, when we have real metadata we can rely on.
2006-06-15T16:46:40  <fpletz> I save both the stemmed and the not stemmed form of every term because we can't stem for every language when performing search
2006-06-15T16:46:45  <ThomasWaldmann> another idea: that method works just for pages, but we also have attachments.
2006-06-15T16:47:00  <fpletz> I plan to let the user select a language in which we then can stem
2006-06-15T16:47:16  <fpletz> I assume that attachments have the same language as pages
2006-06-15T16:47:40  <ThomasWaldmann> ah, ok
2006-06-15T16:48:07  <ThomasWaldmann> another hack could be to just look for some typical words to guess the language.
2006-06-15T16:48:29  <ThomasWaldmann> to the a -> english
2006-06-15T16:48:36  <ThomasWaldmann> ist ein hat -> german
2006-06-15T16:49:14  <fpletz> mmh, right
2006-06-15T16:49:47  <ThomasWaldmann> of course we have trouble with mixed stuff, but we won't care for that :)
2006-06-15T16:51:21  <fpletz> ok ;)
2006-06-15T16:53:50  <ThomasWaldmann> ok, got to do some work preparation for tomorrow, bbl....
2006-06-15T16:54:32  <ThomasWaldmann> +            elif "lang".startswith(m):
2006-06-15T16:54:42  <ThomasWaldmann> maybe use "language" in case someone types more
2006-06-15T16:55:23  <fpletz> yeah, good idea
2006-06-15T16:55:45  * Kepplar returns from filling out exit forms and slagging of how bad HR have been
2006-06-15T17:23:36  <Kepplar> hmm
2006-06-15T17:23:49  <Kepplar> should an item revision know its revision number?
2006-06-15T17:23:59  <Kepplar> (re-ordering would be a pain if it did)
2006-06-15T17:46:37  <ThomasWaldmann> Kepplar: we don't reorder revisions, why should we?
2006-06-15T17:47:25  <Kepplar> if i could predict the future i wouldnt be programming for a living =)
2006-06-15T17:47:26  <ThomasWaldmann> we don't even need to renumber revisions after pruning old ones. 10^8 should be enough for everyone :)
2006-06-15T17:47:36  <Kepplar> ok
2006-06-15T17:47:59  <Kepplar> anyhow ive put a attribute in item revision with reference to the revision number
2006-06-15T17:48:16  <Kepplar> the thing is, the revision number was just the revisions position in a list in item
2006-06-15T17:48:25  <ThomasWaldmann> this has the nice side effect that you can refer to ...&rev=xxx and get the same thing ever (if noone renames the item at least)
2006-06-15T17:48:38  <Kepplar> wondering if theres a way to tie them together instead of having too independant values floating around
2006-06-15T17:48:41  <Kepplar> hold on (brb)
2006-06-15T17:49:03  <ThomasWaldmann> it won't be the positition in the list
2006-06-15T17:49:56  <ThomasWaldmann> we start at rev 1 and the first list index is 0
2006-06-15T17:50:33  <Kepplar> weren't we discussing for about the new system starting from 0 and -1 being current?
2006-06-15T17:50:33  <ThomasWaldmann> after some prune, we might start with rev 2342 at list index 0
2006-06-15T17:51:05  <ThomasWaldmann> it doesn't matter after the first prune :)
2006-06-15T17:51:10  <Kepplar> ah
2006-06-15T17:51:11  <Kepplar> ok
2006-06-15T17:51:17  <Kepplar> well i just checked the code its a dict
2006-06-15T17:51:22  <Kepplar> of item revision objects
2006-06-15T17:51:51  <Kepplar> but it would be nice to have the key in the dict and the internal revision number linked in a way?
2006-06-15T17:52:04  <ThomasWaldmann> revno == key
2006-06-15T17:52:09  <Kepplar> sure
2006-06-15T17:52:14  <Kepplar> but programmatically how to link them
2006-06-15T17:52:15  <Kepplar> hmm
2006-06-15T17:52:39  <Kepplar> (and not expensively)
2006-06-15T17:52:55  <ThomasWaldmann> i dont understand your problem
2006-06-15T17:53:08  <ThomasWaldmann> if revno is the key, what do you need else?
2006-06-15T17:53:13  <Kepplar> you have the item revision objects, each as an attribute with the revision number
2006-06-15T17:53:28  <Kepplar> this is so operations to the backing storage is done quickly as it needs the revision number
2006-06-15T17:53:32  <Kepplar> now
2006-06-15T17:53:44  <Kepplar> you have the item object, with loads of item revisions inside it
2006-06-15T17:53:57  <Kepplar> in a dict by rev number
2006-06-15T17:54:20  <Kepplar> how to link that dict key to the object internal value
2006-06-15T17:54:50  <Kepplar> one way would be to have the internal value a property that talks up to the item (has a parent reference so easy) and searches through the values of the dict and matches the key
2006-06-15T17:54:53  <Kepplar> but thats expensive
2006-06-15T17:55:03  <ThomasWaldmann> the dict key is the same number as itemrev.revno
2006-06-15T17:55:09  <Kepplar> yea
2006-06-15T17:55:12  <Kepplar> i know that
2006-06-15T17:55:16  <Kepplar> but how to program it is the issue
2006-06-15T17:55:22  <Kepplar> how to keep them the same
2006-06-15T17:55:28  <Kepplar> without the possibility of a desync
2006-06-15T17:56:08  <Kepplar> plus as we're using getattr etc
2006-06-15T17:56:11  <ThomasWaldmann> the revno never changes
2006-06-15T17:56:15  <ThomasWaldmann> they just get more
2006-06-15T17:56:18  <Kepplar> i know
2006-06-15T17:56:20  <ThomasWaldmann> or less
2006-06-15T17:56:53  <Kepplar> as dicussed before we have item using getattr and setattr
2006-06-15T17:56:57  <Kepplar> so you can access revisions
2006-06-15T17:57:03  <Kepplar> my concern is saving revisions
2006-06-15T17:57:09  <Kepplar> using this method
2006-06-15T17:57:23  <Kepplar> as the rest of the code could force it to alter
2006-06-15T17:57:28  <Kepplar> hence protection would be needed
2006-06-15T17:57:46  <Kepplar> and the question of how to programmatically keep the internal rev number the same as the dict key
2006-06-15T17:58:16  <ThomasWaldmann> who forces what to alter?
2006-06-15T17:58:32  <Kepplar> say some moin code goes item[1]
2006-06-15T17:58:36  <Kepplar> it pulls out item revision 1
2006-06-15T17:58:43  <Kepplar> which is item revision object
2006-06-15T17:58:59  <Kepplar> but what stops them going item[2] = result from 1
2006-06-15T17:59:32  <ThomasWaldmann> that's the usual thing happening an a save
2006-06-15T18:00:07  <Kepplar> but then we the internal rev number still as 1
2006-06-15T18:00:11  <Kepplar> see?
2006-06-15T18:00:25  <Kepplar> plus what stops me from doing item[232323] = something
2006-06-15T18:00:26  <ThomasWaldmann> the only critical point there is that other threads and processes need to notice that 1 is not current any more (but 2 is)
2006-06-15T18:00:39  <Kepplar> yea
2006-06-15T18:00:41  <Kepplar> thats fine
2006-06-15T18:00:50  <Kepplar> as 0, -1 or whatever defaults to current
2006-06-15T18:01:07  <ThomasWaldmann> (18:00) <   Kepplar> but then we the internal rev number still as 1
2006-06-15T18:01:12  <ThomasWaldmann> internal of what?
2006-06-15T18:01:17  <Kepplar> item revision object
2006-06-15T18:01:34  <ThomasWaldmann> if it is item rev 1 object, that is true of course
2006-06-15T18:02:39  <ThomasWaldmann> and of course you have to increment the internal revno of the object when assigning it to 2
2006-06-15T18:03:16  <ThomasWaldmann> you also have to put in an editor comment, an editor id, a date etc. so this is not the only change
2006-06-15T18:03:28  <ThomasWaldmann> and new data :))
2006-06-15T18:04:56  <ThomasWaldmann> if you want to avoid duplicating that info, you could do some magic when assigning to index 0 or -1.
2006-06-15T18:05:11  <ThomasWaldmann> but I am not sure if that's really worth it
2006-06-15T18:05:50  <ThomasWaldmann> current_item_rev = item[current_revno]
2006-06-15T18:06:02  <ThomasWaldmann> current_revno += 1
2006-06-15T18:06:11  <ThomasWaldmann> <other changes we want to save>
2006-06-15T18:06:54  <ThomasWaldmann> current_item_rev.revno = current_revno
2006-06-15T18:07:15  <ThomasWaldmann> item[current_revno] = current_item_rev
2006-06-15T18:07:34  <Kepplar> you mwan in the property for the assignment?
2006-06-15T18:07:36  <Kepplar> hmm
2006-06-15T18:08:04  <Kepplar> only problem is if theres a rebuild item thing needed for maintenance or something, it might start spewing out random revision numbers
2006-06-15T18:08:10  <ThomasWaldmann> that is typical code as we have it now
2006-06-15T18:08:14  <Kepplar> i like the concept though
2006-06-15T18:08:18  <ThomasWaldmann> (plus locking)
2006-06-15T18:08:24  <Kepplar> object locking?
2006-06-15T18:08:38  <ThomasWaldmann> see PageEditor
2006-06-15T18:08:39  <Kepplar> or can we increase granuatlity
2006-06-15T18:08:45  <Kepplar> so we have metadata locking
2006-06-15T18:08:45  <Kepplar> etc
2006-06-15T18:08:46  <Kepplar> ?
2006-06-15T18:09:37  <ThomasWaldmann> you need to writelock an item before saving a new revision (or some other process does the same)
2006-06-15T18:09:53  <Kepplar> ok
2006-06-15T18:09:55  <Kepplar> yep
2006-06-15T18:10:12  <Kepplar> but on a general level or can we get away with data and metadata file locking
2006-06-15T18:10:13  <ThomasWaldmann> and you even need to readlock an item within that writelock for some time when it is not consistent for reading
2006-06-15T18:10:23  <Kepplar> or differnet locking levels depending on the storage implementation
2006-06-15T18:11:28  <ThomasWaldmann> often the inner readlock can be saved by doing stuff in the right sequence
2006-06-15T18:11:49  <ThomasWaldmann> e.g. if the existance of a revision is determined by existing metadata for that revision,
2006-06-15T18:11:59  <ThomasWaldmann> you can just first write the data for that rev
2006-06-15T18:12:06  <ThomasWaldmann> and after that, the metadata
2006-06-15T18:12:38  <ThomasWaldmann> as long as the metadata isnt there, the data virtually does not exist either
2006-06-15T18:13:25  <ThomasWaldmann> the file storage used now does some similar stuff by using rename
2006-06-15T18:13:48  <ThomasWaldmann> and there is already an idea how future file storage can do it
2006-06-15T18:27:11  <ThomasWaldmann> xorAxAx: http://moinmoin.wikiwikiweb.de/MoinMoinBugs/CantOpenAttachmentsWithInternetExplorer congrats for some anti IE patch ;)
2006-06-15T20:04:58  <ThomasWaldmann> re
2006-06-15T20:18:26  <ThomasWaldmann> that removed reverse lookup makes a real difference :)
2006-06-15T21:50:53  <xorAxAx> ThomasWaldmann: was it me?
2006-06-15T21:51:03  <xorAxAx> ThomasWaldmann: then you had a broken resolver setup :)
2006-06-15T22:23:10  <ThomasWaldmann> what are you talking of?
2006-06-15T22:23:33  <xorAxAx> a) the ie issue
2006-06-15T22:23:40  <xorAxAx> b) your gethostname problems
2006-06-15T22:23:50  <ThomasWaldmann> yes it was you
2006-06-15T22:24:03  <ThomasWaldmann> and there is nothing broken in my resolver setup
2006-06-15T22:24:45  <ThomasWaldmann> it was just a completely superfluous reverse lookup, result not used at all
2006-06-15T22:24:50  <xorAxAx> hmm, how many entries are cached?
2006-06-15T22:24:54  <xorAxAx> ah
2006-06-15T22:25:08  <xorAxAx> but moin needs the IP of the other host
2006-06-15T22:25:25  <ThomasWaldmann> reverse dns lookup = get the name for an ip
2006-06-15T22:25:37  <xorAxAx> yes
2006-06-15T22:26:06  <ThomasWaldmann> it still has the ip, of course
2006-06-15T22:53:08  <Kepplar> hey
2006-06-15T22:53:23  <Kepplar> prehaps you want moin to have its own dns server incase the actual server itself doesnt have one set up
2006-06-15T23:45:38  <ThomasWaldmann> yeah, we could also include a smtp and pop3 server :-P

MoinMoin: MoinMoinChat/Logs/moin-dev/2006-06-15 (last edited 2007-10-29 19:10:11 by localhost)