log☇︎
32100+ entries in 0.019s
diana_coman: open-ended lists like that are always a mess and doubly so via messages
diana_coman: ugh, last time the rough sketch sounded as I said above though, lolz
mp_en_viaje: nah! see, "what is armor of the pigs ?" "well, it could be joes_armorofpigs.mesh or moes_armorofpigs.mesh or dyna_armorofpigs.mesh" and client is set to get dyna* so continues "what is dyna_armorofpigs.mesh"
diana_coman: iirc it was specifically not a list of meshes but at most a list of overall graphical profiles as it were; i.e. each thing then at any time has only one option
mp_en_viaje: now what was the other one
mp_en_viaje: imo much sounder like that, for myriad reasons.
diana_coman: rolling back to the original thing, this is all there is to it: if c/cpp does not actually get to ask for anything then there is no trouble at all, sure.
mp_en_viaje: so this goes right into that anyway.
mp_en_viaje: if you recall the whole theory with "give alternatives for gfx", server could in principle offer a LIST of meshes. possibly different qualities, and even same quality.
diana_coman: myeah, "useful" things.
mp_en_viaje: this part is not avoidable though, only user can tailor this sorta thing. "how much space to give cache and what sorta thigns to keep there" is emintently the function of config
mp_en_viaje: and so i suppose all this can go in config file.
diana_coman: (re files and access time I need to look if I can get it, hopefully, via Ada.Directories)
mp_en_viaje: it's only the user whocan decide "i don't want any sounds" or "no videos" or "no meshes only icons" or anything like this.
diana_coman: but that care is not "use" from earlier but..what?
diana_coman: but if it is to ask of anything it doesn't yet have/know, then it should ask for all of them, it can't not care about some of them
mp_en_viaje: ok, so those it cares about it asks about and those it doesn't care about it doesn't ask about.
diana_coman: it cares about the object; this doesn't mean it cares about ALL its properties
diana_coman: it asks for the object; the object descriptor includes the properties; on the principle that "what client doesn't yet know, client will investigate further", it should ask for them further,right?
mp_en_viaje: so if your client doesn't care about them, it doesn't ask for them, what's the problem ?
mp_en_viaje: i mean, if client doesn't know wtf it is, how is client to use it ? obviously it informs.
mp_en_viaje: how would the server not inform ?!
diana_coman: fwiw I'll clearly have to hack my own client at the very least for making it text-only since there's no point in asking for all the graphical parts just because server did inform that those objects have this and that graphical part
mp_en_viaje: i mean, it's in the stat innit ?
mp_en_viaje: doesn't fs keep this ?
diana_coman: so it needs now to keep in addition a timestamp on data access?
mp_en_viaje: well, if client sets a limit, then oldest-used files get wiped.
diana_coman: from my pov I'm fine to switch perspective and go then with this approach, so basically there are no "client/cpp demands" anything since Ada-part directly handles it on the principle "if I saw it and it's not there, then I'll ask for it"; how is any limit re space or anything of the sort to be defined and handled in this case?
diana_coman: if client doesn't care about mesh , but it asks for it because it saw it, isn't that in advance?
diana_coman: client asks what is a? server says it's (name this) (position that) (mesh theother) and so on
mp_en_viaje: hence, imperative. once client decides to print something, IT WILL BE PRINTED. no ifs or buts or lookups.
diana_coman: well yes, but that's the thing, the problem is not solved by asking in advance
diana_coman: "wtf do we put in the press ?! " -> the default.
mp_en_viaje: function of how much space the user is willing to give the cache, client could indeed keep everything.
mp_en_viaje: the client does not keep everything in the sense that it's not required to keep everything, not in the sense that it can be relied on to not keep everything.
diana_coman: (and this thing that "doesn't keep everything" is why I went with the different approach aka ask when needed, not when heard of it)
diana_coman: the difference being that client (as previously discussed) anyway does not keep everything so asking when it doesn't need it is not solving that problem
mp_en_viaje: "now we're printing this guy's helmet. wait, wtf do we put in the press ?!"
diana_coman: how is it imperative?? server says this guy wears the helmet of doom; client says meh, can't be arsed to show helmets; how is it imperative?
mp_en_viaje: similarily you look up new words when you hear them rather than when you decide to use them.
diana_coman: why exactly though would client ask based on what server says rather than based on what it finds itself actually needing to use?
diana_coman: this bit here is the part where we were not in sync
diana_coman: finally at least the whole trouble makes sense
diana_coman: oook; so then, do you mean that "asks for data" is to be driven by.... what it receives from server rather than attempted use?
mp_en_viaje: it's clear, one's in c the other in ada, yes.
diana_coman: or you propose that this shouldn't even be
diana_coman: is at all clear that there is this separation between the client-part that uses/needs some data on one hand, the one I kept calling "client" or c/cpp and on the other hand the lower layer that is protocol aware and actually "asks what is x"?
a111: Logged on 2019-05-28 09:13 mp_en_viaje: the elegant solution for this would be for the client to keep a list, "items the server mentioned, we asked for but never received usable answer therefore using a default", and either go through it whenever convenient (eg, when player goes afk) or else even expose a button for player to do himself).
mp_en_viaje: optionally, as per http://btcbase.org/log/2019-05-28#1915732 ; but this doesn't have to be first pass. ☝︎
mp_en_viaje: if it gets it, it uses it. if it doesn't get it, it uses the default.
mp_en_viaje: client asks what is X, gets a response including data it doesn't have ; asks for the data.
diana_coman: honestly, as a player, I'll then have to hack my own client, lolz
diana_coman: let me get this part straight though: how is this "now" decided? every frame whoever has something unknown asks for it? some parameter every x ms ask for everything unknown?
mp_en_viaje: it's easier, and it's not clear that the complicateder way is in any sense better.
diana_coman: it does seem a weird problem to have in the simple sense that honestly it's just easier to do it as you say: no responsibility for traffic, just shoot whatever and as many times as higher level asks for... data, not for traffic, but whatevers.
diana_coman: no, because it forces the very same problem higher up where there is even less information to decide on when to request
mp_en_viaje: if there IS a queue, you can STILL get a new request just as the queued request is satisfied.
diana_coman: what is the gain in forcing every request -> a message to server?
mp_en_viaje: looky : if there's no queue, you can in principle get a new request just as the old request was satisfied.
diana_coman: let's take it from the other end, maybe it's easier
mp_en_viaje: this is such a bizarre issue to have.
diana_coman: it depends on what arrives and when + on the contents of the queue itself really since for instance a huge filename will fill a whole msg
mp_en_viaje: what is this "dynamic" mean ?
diana_coman: I don't think I get it and I'm not sure whether it's because some things are still not right (for starters there is no fixed duration as it's dynamic basically)
mp_en_viaje: it ~might~. you can not prove they do, for all you know all Ti come at L+e. how do you know it helps anything ?
mp_en_viaje: not anymore. anyway, looky : take the object icon.jpg. the client may ask for this item icon.jpg at time intervals Ti which, as far as we know, are random. now, if you have a queue, of fixed duration L, you offer the guarantee that "for any Tjs that are closer than L only the first does go through". this, you say, "reduces overal requests".
diana_coman: ugh; at least Internet used to be working well in Ro.
mp_en_viaje: http://p.bvulpes.com/pastes/G85i2/?raw=true << this is how this convo looks on my side
mp_en_viaje: i have NEVER seen this shitty internet in my fuckign life jesus
mp_en_viaje: dude this piece of shit... it's showing your lines but not sending mine.
diana_coman: then I don't get it; because if it is the client's decision to ask immediate refresh then sure, what's the problem? it's their decision and it still is the minimum traffic resulting
diana_coman: the point is not to forbid to the client repeated request
mp_en_viaje: AFTER it took it out of the queue. immediately after.
mp_en_viaje: diana_coman, nevermind the "it's pending
mp_en_viaje: lol this shiternet... im getting like 7 lines in a bundle.
diana_coman: or you mean a potential "race condition" there?
diana_coman: otherwise yes, no point in having the queues in the first place really; a duplicate request can have at most the effect of increasing counter of "requests for this here object a" if one wants then to treat them as priorities basically aka ask first for those items that have been demanded most times
diana_coman: it's still the same thing
diana_coman: i.e. client comes in the shop and asks 100 times for the same thing while shopkeeper is working on delivering it so what
diana_coman: it accepts the new request, looks that it's pending so ..nothing to do with it
mp_en_viaje: your proposal does not resolve the t4-t5 problem. having a pending queue does not mean that the client may not decide to ask again JUST as the "requester" took them out of the pending queue.
diana_coman: move those three IDs* I should have said; not the objects themselves
a111: Logged on 2019-05-28 12:07 diana_coman: my proposal was to have the Requester ask "what are a,b,c" and move those three objects into a "pending" queue; when another request for them arrives, that's fine; when requester wakes up, it checks and prunes any that meanwhile are there so it doesn't ask again for stuff it meanwhile got
a111: Logged on 2019-05-28 12:06 diana_coman: and now re waste traffic: at t1 there are requests for obj a, b, c; at t2 Requester wakes up and asks the server "what are a, b, c", drops those as "done" and goes back to sleep; at t3 there is another request for a,b,c so Requester puts them back in its queue; at t4 a,b,c arrive; at t5 Requester wakes up and ...asks the server again "what are a,b,c?" because well, they are there in the queue, right?
mp_en_viaje: i guess we go back to the text, hang on.
diana_coman: only if it throws it away without even using it, can there be "no cache"
diana_coman: uhm, "no cache" is ...impossible; by definition the data on client IS CACHE
mp_en_viaje: situation 2, cache (called "requester") : client will abstain from asking for some item for a certain time after having asked.
mp_en_viaje: so, as to the matter of client cache. situation 1, no-cache : client wants some item, asks for it, potentially asks again before server has had chance to answer.
mp_en_viaje: but let's resolve one issue at a time, because this is not working.
mp_en_viaje: i do not agree with this.
diana_coman: the default.jpg is not sent by server, no; local cache has defaults because it has to - it needs to use something before there is even any answer from server; hence the defaults part is not about traffic at all
mp_en_viaje: i am not saying "there is no difference". i am saying "you are proposing to produce a mechanism to resolve a problem you imagine exists, such that the solution's parameters are populated by guesswork and the imagined problem is not eliminated"
diana_coman: the point is not about "how fresh the final data is" but rather simply that: how many messages get generated for x requests
diana_coman: so you say there is no difference between caller asking for it 10 times and this resulting guaranteed in 10 messages to the server because requester does not keep track of anything on one hand and on the other hand 10 requests resulting in only 1 message to server because requester does keep track?
mp_en_viaje: not objectively fresher than they are when there's no queue and t4 comes around.
diana_coman: after they resolved is however "refresh", isn't it?
mp_en_viaje: diana_coman, no, after they resolved.
mp_en_viaje: diana_coman, if the server asked what's b answers no such thing, use default.jpg every time, you're sending default.jpg every time.
diana_coman: uhm, while it still has them pending or what?