> Am 28.07.2016 um 12:56 schrieb Esteban Lorenzano <esteba...@gmail.com>:
> 
> I do not like either the “virus” name. 
> not just because is negative in a subjective way… also it hides what it does 
> inside a fantasy name, and that IMO is negative to self discovery of the 
> system. 
> 
> I mean… a framework can have a fantasy name… but a class? A method name? 
> (#infect:… come on!) 
> 
> I know is “cool", but if I read the code below, I have NO CLUE of what is 
> going to happen, and that’s not good.
> 
+100

Norbert

> Esteban
> 
>> On 28 Jul 2016, at 12:33, Steven Costiou <steven.cost...@kloum.io 
>> <mailto:steven.cost...@kloum.io>> wrote:
>> 
>> Hi,
>> 
>> I think i am missing something.
>> 
>> For example in the following code (took from the tests):
>> 
>>     | victim virus actual |
>>     virus := GHObjectVirus behaviour: GHGhostBehaviourStub new.
>>     
>>     victim := 0@0 corner: 3@4.
>>     virus infect: victim.
>>     victim corner
>> 
>> The evaluation is trapped by the send:to: method in the behavior (i've put a 
>> halt there). However if i replace the "corner" message by an inspect of the 
>> victim, and if i evaluate "self corner", then the message is processed 
>> without going through the send:to: method of the behavior. It is not halted 
>> and the victim responds immediately to the message. I have also tried to add 
>> a new method in the Rectangle class that calls "self corner". When called in 
>> the playground, my new message is trapped but not the "corner" sent to self.
>> 
>> From what i understand it could be related to the behavior i use, but i 
>> don't see what's missing.   
>> 
>>  
>> Le 2016-07-28 11:35, Denis Kudriashov a écrit :
>> 
>>> I think I not understood second part of "self problem" in this paper. But 
>>> self sends are covered by virus as I described.
>>> 
>>> 2016-07-28 11:30 GMT+02:00 Denis Kudriashov <dionisi...@gmail.com 
>>> <mailto:dionisi...@gmail.com>>:
>>> Hi
>>> 
>>> 2016-07-27 22:19 GMT+02:00 Steven Costiou <steven.cost...@kloum.io 
>>> <mailto:steven.cost...@kloum.io>>:
>>> Hi,
>>> 
>>> I use virus from Ghost to intercept messages sent to a given object and 
>>> adapt methods behaviors for this particular object only. However it would 
>>> seems that doing interception this way is subject to the "self problem" 
>>> described in this paper from Stéphane (DUCASSE, Stéphane. Evaluating 
>>> message passing control techniques in Smalltalk. JOURNAL OF OBJECT ORIENTED 
>>> PROGRAMMING, 1999, vol. 12, p. 39-50).
>>> 
>>> I understand i could do instance based adaptation using an other technique, 
>>> but i wonder if there is any way with Ghost to deal with this "self 
>>> problem" problem ?
>>> 
>>> I think "self problem" is only related to classic proxies when objects stay 
>>> behind them. But ObjectVirus is not proxy in this meaning. When you infect 
>>> your object by virus it is not replaced by somebody else. It is same 
>>> original instance but with overridden behaviour. That's why I call it virus 
>>> without any relation to proxies.
>>> Any message to infected object is processed by your behaviour. All self 
>>> sends are intercepted. But there are few exceptions:
>>> - special messages like ==,ifTrue/ifNil are not intercepted
>>> - meta messages are not intercepted. They processed by Ghost mechanics but 
>>> they not passed to your behaviour. Meta messages defined by 
>>> #currentMetaLevel of your behaviour. You could implement it like:
>>>  
>>> YourGhostBehaviour>>currentMetaLevel
>>>  ^GHMetaLevel empty
>>>  
>>> Empty meta level means that all messages will be passed to your behaviour. 
>>> There is also "GHMetaLevel standard" which is default one. It makes most of 
>>> "tool messages" not interceptable. For example #printString, #class, 
>>> #instVarAt: will be not intercepted. It's messages which are usually used 
>>> by tools like inspector and debugger. 
>>> Standard meta level simplifies debugging of new behaviours. If you make 
>>> mistake somewhere standard messages will be not broken and you could debug 
>>> error by tools.
>>>  
> 

Reply via email to