#arianne IRC Log

Index

IRC Log for 2009-03-11

Timestamps are in GMT/BST.

[0:00] <durkham> no the problem is not that it is blobs
[0:00] <osl> what is?
[0:00] <durkham> the problem is that it is done on demand
[0:00] <durkham> and not for all objects in one run , that is why i would love to have an app to do so
[0:01] * durkham feels like running in circles with you
[0:01] <osl> hehehe
[0:01] <durkham> :-)
[0:01] * kiheru is now known as kiheru_afk
[0:02] * robertj (n=rcaskey@208.52.140.1) has joined #arianne
[0:02] <osl> but I still think that it was done on demand due to the fact that it needs the object to get loaded and so, what better time to do it that when the player logs in: it comes naturally.
[0:03] <durkham> yes, and after several years it becomes to be a problem, which is the case now
[0:04] <durkham> and only because it is natural to do so , and probably the best solution in general
[0:04] <osl> because you end up accumulating migration code?
[0:04] <osl> I mean, the problem is that?
[0:04] <durkham> yes that is what i am talking about
[0:04] <durkham> the whole time btw
[0:04] <osl> ok
[0:04] <durkham> :-D
[0:04] <osl> hehehe
[0:05] <osl> well, madmetzger didn't seem to be very concerned about accumulating that code
[0:06] <osl> I would do, because I don't like the idea of having legacy code hanging forever
[0:07] * robertj (n=rcaskey@208.52.140.1) Quit (Read error: 60 (Operation timed out))
[0:08] <osl> forever: until next database reset : forever
[0:08] <durkham> (11:29:27 PM) durkham: if we had a script that solves the update for each object in db , the code coud be removed every next server update
[0:08] <durkham> (11:29:32 PM) durkham: now it has to stay
[0:08] <durkham> just in case you dont see the circles :-D
[0:10] * osl (i=5803ca18@gateway/web/ajax/mibbit.com/x-506d0b22e8cb0d80) has left #arianne
[0:17] * Bluelads4 (n=kvirc@p5084D7B2.dip.t-dialin.net) has left #arianne
[1:06] * robertj (n=rcaskey@208.52.140.17) has joined #arianne
[1:07] * robertj (n=rcaskey@208.52.140.17) Quit (Remote closed the connection)
[1:13] * gummipferd (n=yenal@92.117.74.72) Quit ("Leaving.")
[1:58] <durkham> be informed that sf.net announced a 2 days downtime for CVS
[2:00] * durkham (n=astrid@c218205.adsl.hansenet.de) has left #arianne
[5:04] * DeusFigendi (n=Deus@BAI07b5.bai.pppool.de) has joined #arianne
[6:28] * Oge-away (n=Ogeretal@85.219.24.2.dyn.user.ono.com) has joined #arianne
[6:45] * Ogeretal (n=Ogeretal@85.219.24.2.dyn.user.ono.com) Quit (Read error: 110 (Connection timed out))
[7:34] <postman-bot> harristhemenace rented a sign saying "happy birthday to daddy kidlat :)"
[8:01] <postman-bot> Tari rented a sign saying "oi, the grandmaster himself :) Happy Birthday dear Kidlat :) Enjoy your day :)"
[8:32] * madmetzger (n=madmetzg@HIS1.his.de) has joined #arianne
[8:39] <postman-bot> emmanuel rented a sign saying "happy Birthday day To you Kidlat :P"
[8:55] <postman-bot> negoo rented a sign saying "happy Birthday day To you Kidlat :P"
[9:26] * kiheru_afk is now known as kiheru
[9:57] * durkham (n=astrid@c218205.adsl.hansenet.de) has joined #arianne
[10:19] <postman-bot> jeffre rented a sign saying "Happy Birthday kidlat"
[10:19] <postman-bot> jeffre rented a sign saying "Happy Birthday kidlat :)"
[11:09] <madmetzger> durkham: i had a brief look into the code
[11:12] <madmetzger> why do you think it has a big effect on performance?
[11:12] <madmetzger> what do you think of keeping a version for each object?
[11:13] <madmetzger> my idea is this one:
[11:13] <madmetzger> each object is marked with current version number as attribute
[11:14] <madmetzger> if we need changes in rpobject we need to change the model version
[11:14] <madmetzger> the UpdateConverter only gets active if object's version < current model version
[11:15] <madmetzger> for each version-step we implement update logic
[11:15] <madmetzger> at least i saw there was only one action: add a missing slot
[11:15] <madmetzger> or add a missing attribute
[11:17] <madmetzger> is it possible to mark all players as version 0? that would be a prerequisite for my idea
[11:17] <madmetzger> if yes: all current update logic is put into one version step from 0 to 1
[11:18] <madmetzger> could be a kind of xml-structure to configure? at least we need to keep RPObject and "update-logic" consistent
[11:18] <madmetzger> what do you think?
[11:20] <madmetzger> okay, quest slots update seems a bit more tricky though
[11:21] <madmetzger> i saw 2 different operations there:
[11:21] <madmetzger> renaming questslots and keeping content
[11:21] <madmetzger> renaming content of questslots
[11:23] <madmetzger> no idea how about removing attributes, what seemed to be more difficult
[12:28] <durkham> i did never say that it has an effect on performance
[12:29] <durkham> i want to get rid of obsolete code
[12:30] <postman-bot> yoriy rented a sign saying "kidlat, happy birthday to you! wish you grows up :-)"
[12:30] <postman-bot> erdnuggel rented a sign saying "happy birthday kidlat! Have a nice day and I home your wiches come true"
[12:34] <durkham> in addition kymara( good girl) mentioned what happens with the stored objects in zone, if the rpobject'sRpclass is changed is changed, that would mean the zone wont load any more. so i assume it the easiest to have an update run on any stored object, starting with player for the first.
[12:35] <durkham> imagine one day we have version 112 and still convert from 0.2 ? :.-D
[13:15] <durkham> the problem with the attributes is as follows : if a stored RPobject has an attribute set that is not declared in RPClass, the object wont load. throwing weirdo Exceptions
[13:21] <madmetzger> durkham: okay removing attributes seems difficult
[13:21] <madmetzger> so we need an external way to do it
[13:22] <madmetzger> but: i like the idea as describing an update with migrations of entities
[13:22] <durkham> iirc correctly e can remove declaration of empty ttributes
[13:22] <madmetzger> so code stays the same only the migration steps get more (if we keep them)
[13:23] <madmetzger> i think starting with adding and renaming would be easiest, i think
[13:23] <durkham> the problem is you have to keep the legacy declared attributes, and you have to keep the convertion thingy, and i think it is only messing the code
[13:23] <madmetzger> not if you isolate it
[13:23] <durkham> hwat is so bad in having a convert run ?
[13:24] <durkham> we have downtime on server-update anyway
[13:24] <madmetzger> nothing but what do you mind on update on demand?
[13:24] <durkham> it scatters the code
[13:24] <durkham> and we have to keep attributes that are not needed anymore
[13:25] <madmetzger> again: not if you separate steps from kinds of steps
[13:25] <durkham> we might have obsolete code , which we dont know as we dont know if there is a user returning one day ...
[13:25] <madmetzger> so what?
[13:25] <durkham> doe not make code easy to read , does it ?
[13:26] <madmetzger> i want to change updateconverter to an xml based way
[13:26] <durkham> no
[13:26] <durkham> no more xml please
[13:26] <durkham> and having xml based it will hide even more why certain attributes are kept
[13:26] <madmetzger> then make it hardcoded with more sophisticated api
[13:27] <durkham> why not have a run and throw it away
[13:27] <durkham> what is bad about updating the objects and then throw the code away ?
[13:27] <durkham> why keep the stuff forever
[13:27] <madmetzger> you do not understand what i mean
[13:27] <durkham> ok
[13:27] <durkham> explain again
[13:27] <madmetzger> okay
[13:28] <madmetzger> in the updateconverter there are only two operations done on the data
[13:28] <durkham> yes
[13:28] <madmetzger> encapsulate those operations in separate classes
[13:29] <madmetzger> then we have the choice of an xml or hardcoded way after we isolated this behaviour
[13:29] <durkham> and we have to keep all attributes declared
[13:29] <madmetzger> next step could be implementing migration on demand or extract updateconverter to an external console app as one-time-run
[13:30] <durkham> ok
[13:30] <durkham> so you dont want to keep the old object :-)
[13:30] <durkham> right ?
[13:30] <madmetzger> next step should be thinking about using two rpclasses when removing an attribute
[13:31] <durkham> i think we dont need 2 of them
[13:31] <madmetzger> why?
[13:31] <durkham> we have to remove all value from attribute, and store object.
[13:31] <durkham> and then we can remove rpclass attribute declaration
[13:31] <durkham> iirc
[13:31] <durkham> that should be tested
[13:31] <madmetzger> okay my thought is this one with two rpclasses:
[13:32] <madmetzger> for an removal we have two instances: one before and one after
[13:32] <madmetzger> 1. load with before-rpclass
[13:32] <durkham> rpclass is singular
[13:32] <madmetzger> 2. clean up attribute and remove
[13:33] <durkham> you cannot have 2 rpclasses with the same name
[13:33] <madmetzger> 3. save with new rpclass
[13:33] <madmetzger> is marauroa capable of changing rpclasses during runtime?
[13:33] <durkham> dont think so
[13:34] <durkham> can we just test if removing value from attribute , lets us load it without attribute declared ?
[13:34] <madmetzger> that would be another possibility
[13:34] <madmetzger> but attribute removal would be the second step, first we need the addingthingy
[13:35] <madmetzger> make the first thing work and then take the second step
[13:35] <durkham> why ? atm the objects are loaded on demand and are converted
[13:35] <durkham> and work
[13:35] <madmetzger> *argh*
[13:35] <durkham> so going through all of them would have them all in the same state
[13:35] <durkham> maybe i think too simple
[13:35] * kymara (n=katie@92.2.115.97) has joined #arianne
[13:35] <madmetzger> yes
[13:36] <durkham> but atm i would just like to have them all converted
[13:36] <durkham> and stored and done
[13:36] <madmetzger> make the first thing work somewhere else than updateconverter and encapsulate updatelogic
[13:36] <durkham> then we can remove all the code that is doing the 0.2-> 0.3 updates
[13:36] <durkham> ok i give up
[13:36] <kymara> let me just briefly whisper that i think there's another nice reason to access db and 'change players' who are offline, and that's that we could then do things like remove adminlevel if needed
[13:37] <durkham> kym that is ( i am sorry) a totally different topic :-D
[13:37] <kymara> it's not only for the sake of removing old legacy code that it would be nice to be able to mosify offline players
[13:37] <kymara> ok :D
[13:37] <durkham> i have that in mind too , but that can be done ingame
[13:37] <kymara> hush katie :P
[13:37] <kymara> ok
[13:37] <madmetzger> i am thinking of removing this legacy code, too
[13:37] <durkham> yes but you want to refactor it first to remove it later
[13:37] <madmetzger> yes
[13:38] <durkham> and i want to udate all first
[13:38] <kymara> i would be happier if update converter was only run for players logging in to new version
[13:38] <durkham> and then refactor by a) throwing away legacy code
[13:38] <durkham> b) encapsulate needed behaviour for later usage
[13:38] <madmetzger> in the legacy code is knowledge i want to keep
[13:38] <kymara> that would be easy to do :( players know when they are logging into new versio. but i think that for performance reasons and maybe there's no impact on performance
[13:38] <durkham> because a) reduces the amount of code to refactor
[13:38] <madmetzger> --> b)
[13:38] <durkham> what for mad , what for ??????
[13:39] <kymara> learning from past mistakes? :D
[13:39] <durkham> if we can access cvs again we can watch the history
[13:39] <madmetzger> to isolate the migration logic
[13:39] <durkham> scheisse
[13:39] <durkham> sorry
[13:40] <kymara> couldn't we remove some just by deciding to stop supporting players who haven't logged in since stendhal 0.2 ?
[13:40] <durkham> kymara votes for keeping the legacy code, mad votes for keeping the legacy code, so i must be wrong, to throw away old and obsolete code
[13:40] <kymara> if they still knew their pw I'd be surprised
[13:41] <kymara> and their characters would be as good as a newbie tbh
[13:41] <durkham> so it seems to be state of the art too keep legacy code for historical reasons or so
[13:41] <durkham> i dont know
[13:41] <madmetzger> one example:
[13:41] <madmetzger> if (!object.has("base_hp")) {
[13:41] <madmetzger> object.put("base_hp", "100");
[13:41] <madmetzger> object.put("hp", "100");
[13:41] <madmetzger> }
[13:41] <madmetzger> should be put in two steps: AddAttributeBehaviour and SetAttributeBehaviour
[13:41] <kymara> would it be worth looking into that? deciding to stop supporting some and then we can simply remove that legacy code from those bits
[13:41] <durkham> mad
[13:41] <madmetzger> and move it out of updateconverter
[13:41] <durkham> why does no one understand me?
[13:42] <durkham> it is futile
[13:42] <kymara> i do durkham a bit
[13:42] <durkham> i have a break now
[13:42] <kymara> you want to laod the db
[13:42] <kymara> when server is down
[13:42] <kymara> and fix everything
[13:42] <kymara> i like that
[13:42] <durkham> yes
[13:42] <kymara> madmetzger: you never lose code, we have a cvs history
[13:42] <durkham> and mad says that is all wrong because i have to first change the code that is known to work
[13:42] <madmetzger> you do not understand me
[13:42] <kymara> mm
[13:42] <kymara> wouldn't you use the same code we do now
[13:43] <kymara> just once
[13:43] <durkham> mad : do you agree on having a run on the database with touching every object with the update code we have right now ?
[13:43] <kymara> what's missing atm is a 'make player from database object' that we can apply the updater to
[13:43] <madmetzger> i do like migration on demand thingy, but i don't mind doing it in one step
[13:43] <madmetzger> if you get it working, yes
[13:43] <madmetzger> i don't care.
[13:43] <durkham> mad that is what i was asking for
[13:44] * kymara has another reason to like this, kymara hopes that the character_stats table would get populated again with players who haven't logged in since the db crashed ...
[13:44] <durkham> but i think i have to do it on my own
[13:44] <kymara> i can maybe release kiheru to you once houses are done :P
[13:44] <durkham> well no kym as i would keep it as simple as possible
[13:44] <durkham> no nice and freaky extra features
[13:44] <kymara> ok. that's a side issue then :)
[13:44] <madmetzger> but i would want to keep the on demand thingy
[13:45] <durkham> if all objects are uptodate youdont need it ?
[13:45] <kymara> we could keep the structure but it'd be kind of empty ...
[13:45] <madmetzger> but remove current change code after update
[13:45] <durkham> i dont mind to have a feature there that is there just in case
[13:46] <madmetzger> we need a status quo for my idea so one simple run would be okay
[13:46] <durkham> aneinander vorbei die ganze zeit :-D
[13:46] <madmetzger> sowas von
[13:46] <durkham> so i come back to my question of yesterday
[13:47] <durkham> can you please try to find a way to load a player object from database and store it back , from a command line application :-D
[13:47] * durkham will have a shower now
[13:49] <kymara> byebye again i need to be good and not get distracted
[13:49] * kymara (n=katie@92.2.115.97) has left #arianne
[14:06] <durkham> good girl kymara <-- distrating i know :-D
[14:07] <madmetzger> maybe update is not that easy
[14:07] <durkham> mad the testhelper.create(rpobject) does it
[14:07] <madmetzger> difficult
[14:07] <durkham> so we only need to feed the rpobject and save ?
[14:08] <durkham> not that diffcult ? i hope
[14:08] <durkham> :-)
[14:08] <durkham> that would be so cool mad
[14:09] <durkham> here comes newest news on sf. cvs :
[14:09] <durkham> This outage is in-progress and we are monitoring the progress of the RAID array rebuild.  Based on its current stats it looks like there will be another 30 hours or so of downtime before we can re-enable service again.
[14:09] <durkham> 30 hours waaahaaa
[14:09] <kiheru> gawd
[14:10] <durkham> and my new thingy
[14:10] <durkham> , sniff
[14:10] <durkham> :'(
[14:10] * kiheru loves git
[14:10] * durkham pokes kiheru
[14:10] <durkham> i could send you a patch :-)
[14:10] <kiheru> at least I can keep my local code in some order
[14:11] <durkham> what i dislike at eclipse that for revert to base it wnts to have cvs access :-(
[16:02] <DeusFigendi> re
[16:06] * pwetpwet (n=julien@ser77-1-88-171-239-142.fbx.proxad.net) has joined #arianne
[16:06] <pwetpwet> hello all
[16:07] <pwetpwet> i finally found Lieutenant Drilenun
[16:07] <pwetpwet> i didn't check if it has been already reported, but it seems he enters in infinite loop
[16:08] <pwetpwet> as he takes a little time between each speech i'm not sure about the keyword who made him loop
[16:08] <pwetpwet> but the last keyword i used was "quest"
[16:08] <pwetpwet> and before i writed "weapon"
[16:10] <pwetpwet> ah ok, i think i understood, he's talking to his cadets :D
[16:11] <durkham> a ) always check if it is already reported b) this is not the place for bug reports c) that is no bug :-D
[16:11] <durkham> thanks for caring
[16:11] * durkham hugs pwetpwet
[16:11] <pwetpwet> :D
[17:27] * Disconnected.
[18:44] -NickServ- This nickname is registered. Please choose a different nickname, or identify via /msg NickServ identify <password>.
[18:44] * _eye_fill_in (n=PircBot@c202004.adsl.hansenet.de) has joined #arianne
[18:44] * Topic is 'Stendhal 0.72 and Marauroa 2.6 released: http://arianne.sourceforge.net/?arianne_url=games/game_stendhal#downloadsection][ public server: http://stendhal.game-host.org ][ want to chat?: /join #arianne-chat ][ ANY QUESTIONS?: Just ask them and stick around in the channel, maybe an answer will pop up later ]'
[18:44] * Set by kymara on Sun Feb 22 23:37:04 CET 2009
[18:45] * durkha1 (n=astrid@c202004.adsl.hansenet.de) Quit ("Leaving.")
[19:18] * naggie (i=58536ef0@gateway/web/ajax/mibbit.com/x-27a832be71b0c922) has joined #arianne
[19:30] <postman-bot> tigertoes rented a sign saying "the tigertoes clan would like to wish kidlat 'happy birthday "old man" :P ... much love and happiness to you"
[19:45] * Ci (n=cd@p54BC910B.dip0.t-ipconnect.de) has joined #arianne
[19:45] * |Bluelads4| (n=kvirc@p5084D6D0.dip.t-dialin.net) has joined #arianne
[19:45] <Ci> Hidden portals are not propagated to the client anymore? Is that the case or am I overlooking something?
[19:45] <Ci> Hello all by the way.
[19:47] * |Bluelads4| is now known as Bluelads4
[19:51] * madmetzger (n=markus@g230029046.adsl.alicedsl.de) has joined #arianne
[21:05] <madmetzger> durkham: my update thingy does not work. i get a NPE when calling loadRPObject(trans2, objectid);
[21:06] <madmetzger> that is located in the db access of marauroa
[21:06] <madmetzger> objectid is not null
[21:13] <madmetzger> cannot continue as i have to look into marauroa sources which i cannot check out atm
[21:14] <madmetzger> seems as if i have to init marauroa to teach the database to load a player from database
[21:20] <kiheru> this method? http://pastebin.com/d3777c9f2
[21:21] * kiheru has the source
[21:21] <Bluelads4> uhuuu
[21:21] <Bluelads4> :D
[21:22] <Bluelads4> don't make madmetzger jealous kiheru :D
[21:22] <madmetzger> thanks kiheru
[21:23] <Bluelads4> hi CI
[21:23] <Bluelads4> *Ci
[21:24] <kiheru> yw :-)
[21:36] <kiheru> btw, it's still possible to download the full source. just not the latest cvs
[21:37] <madmetzger> thanks for your advice, but i have to investigate further on initializing server and doing updates
[21:37] <madmetzger> some multithreading-issues
[21:42] <Ci> Hey Bluelads.
[21:42] <Ci> And bye all.
[21:42] <Ci> Too bad no one knows the answer to my question.
[21:42] <Ci> Later.
[21:42] * Ci (n=cd@p54BC910B.dip0.t-ipconnect.de) has left #arianne
[21:59] <postman-bot> espirit rented a sign saying "Sell magic plate shield 50k and black legs 150k"
[22:35] * madmetzger (n=markus@g230029046.adsl.alicedsl.de) has left #arianne
[22:44] * durkham (n=astrid@c202004.adsl.hansenet.de) has joined #arianne
[22:46] <durkham> mad it might be enough to just get the blob with a standard java connection
[22:46] <durkham> ah no
[22:47] <durkham> sorry too fast
[23:01] <durkham> there is already some code in Playermodifertest it loads the mock world and accesses database
[23:07] * Bluelads4 (n=kvirc@p5084D6D0.dip.t-dialin.net) has left #arianne
[23:24] * DeusFigendi is now known as DeusF_

These logs were automatically created by _eye_fill_in on irc.freenode.net using the Java IRC LogBot.