You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flex.apache.org by Erik de Bruin <er...@ixsoftware.nl> on 2013/01/20 11:52:09 UTC

[FalconJx] state/no state

Hi,

I'm aware we're trying to keep a state-less thing going with FJx, but
I ran into an issue that I'm not sure how to solve without adding some
kind of storage (private variable) on the 'goog' emitter.

The thing is that a property has/can have both a getter and a setter
accessor. For a full 'goog' implementation, in addition to emitting
'Object.defineProperty' for each, we also want to add a property
declaration on the prototype, to set the type. We want to add this
declaration only once, so my solution is to 'remember' if I already
added it in a private variable, since I know of no other way of
checking if I have already written something to the output.

Am I doing it right?

EdB



--
Ix Multimedia Software

Jan Luykenstraat 27
3521 VB Utrecht

T. 06-51952295
I. www.ixsoftware.nl

Re: [FalconJx] state/no state

Posted by Erik de Bruin <er...@ixsoftware.nl>.
Mike,

I see what you mean, I've added a TODO for me in the Class emitter
(where all the members are gathered ;-))

EdB



On Sun, Jan 20, 2013 at 1:14 PM, Michael Schmalle
<ap...@teotigraphix.com> wrote:
>
> Quoting Avi Kessner <ak...@gmail.com>:
>
>> Uneducated question here.
>> If we can't read what is spit out, how can make tests to make sure that
>> the
>> gestalt is correct?
>
>
> Erik didn't mean we can't read, when emitting all String data is pushed into
> a Writer buffer.
>
>
>> If we can read what is spit out, why not read it and remain stateless?
>
>
> We can, he is saying go back and read what is in the buffer currently, which
> he "could" do but would be extremely unwise.
>
>
>
>> I'm assuming that as time goes on, we'll want to read the output to
>> optimize it on some level.
>
>
>
> No, we optimize when the output is being assembled.
>
>
>
> Erik; I just looked at the code again and remember, my head is whacked but,
> instead of recording like you are in the method, I think "pre proccessing"
> members in one shot before you loop through each to emit it would be a
> better approach.
>
> My thought is, if in the future you need to pre-proccess any other things
> before the member emittion, that it's all done in one place and you can have
> state from that point. Using this, the emit methods will still be dumb, in
> the fact they will only write out what currently exists.
>
> I think I will write something to show you what I mean in a day or two.
>
> Mike
>
>
> Mike
>
>
>> brought to you by the letters A, V, and I
>> and the number 47
>>
>>
>> On Sun, Jan 20, 2013 at 1:38 PM, Michael Schmalle
>> <ap...@teotigraphix.com>wrote:
>>
>>> I knew I looked at what you did before.
>>>
>>> I see no problem with that Erik, if you test visitAcessor() and it does
>>> what you want and in the context of the method which is to test the
>>> production of a unit where the unit here is a field and
>>> Object.defineProperty() so that is good.
>>>
>>> Does my thinking about state make sense to you with this example? We are
>>> trying to avoid crossed wires.
>>>
>>>
>>> Mike
>>>
>>> Quoting Erik de Bruin <er...@ixsoftware.nl>:
>>>
>>>  Hi,
>>>>
>>>>
>>>> I'm aware we're trying to keep a state-less thing going with FJx, but
>>>> I ran into an issue that I'm not sure how to solve without adding some
>>>> kind of storage (private variable) on the 'goog' emitter.
>>>>
>>>> The thing is that a property has/can have both a getter and a setter
>>>> accessor. For a full 'goog' implementation, in addition to emitting
>>>> 'Object.defineProperty' for each, we also want to add a property
>>>> declaration on the prototype, to set the type. We want to add this
>>>> declaration only once, so my solution is to 'remember' if I already
>>>> added it in a private variable, since I know of no other way of
>>>> checking if I have already written something to the output.
>>>>
>>>> Am I doing it right?
>>>>
>>>> EdB
>>>>
>>>>
>>>>
>>>> --
>>>> Ix Multimedia Software
>>>>
>>>> Jan Luykenstraat 27
>>>> 3521 VB Utrecht
>>>>
>>>> T. 06-51952295
>>>> I. www.ixsoftware.nl
>>>>
>>>>
>>> --
>>> Michael Schmalle - Teoti Graphix, LLC
>>> http://www.teotigraphix.com
>>> http://blog.teotigraphix.com
>>>
>>>
>>
>
> --
> Michael Schmalle - Teoti Graphix, LLC
> http://www.teotigraphix.com
> http://blog.teotigraphix.com
>



--
Ix Multimedia Software

Jan Luykenstraat 27
3521 VB Utrecht

T. 06-51952295
I. www.ixsoftware.nl

Re: [FalconJx] state/no state

Posted by Michael Schmalle <ap...@teotigraphix.com>.
Quoting Avi Kessner <ak...@gmail.com>:

> Uneducated question here.
> If we can't read what is spit out, how can make tests to make sure that the
> gestalt is correct?

Erik didn't mean we can't read, when emitting all String data is  
pushed into a Writer buffer.

> If we can read what is spit out, why not read it and remain stateless?

We can, he is saying go back and read what is in the buffer currently,  
which he "could" do but would be extremely unwise.


> I'm assuming that as time goes on, we'll want to read the output to
> optimize it on some level.


No, we optimize when the output is being assembled.



Erik; I just looked at the code again and remember, my head is whacked  
but, instead of recording like you are in the method, I think "pre  
proccessing" members in one shot before you loop through each to emit  
it would be a better approach.

My thought is, if in the future you need to pre-proccess any other  
things before the member emittion, that it's all done in one place and  
you can have state from that point. Using this, the emit methods will  
still be dumb, in the fact they will only write out what currently  
exists.

I think I will write something to show you what I mean in a day or two.

Mike


Mike

> brought to you by the letters A, V, and I
> and the number 47
>
>
> On Sun, Jan 20, 2013 at 1:38 PM, Michael Schmalle
> <ap...@teotigraphix.com>wrote:
>
>> I knew I looked at what you did before.
>>
>> I see no problem with that Erik, if you test visitAcessor() and it does
>> what you want and in the context of the method which is to test the
>> production of a unit where the unit here is a field and
>> Object.defineProperty() so that is good.
>>
>> Does my thinking about state make sense to you with this example? We are
>> trying to avoid crossed wires.
>>
>>
>> Mike
>>
>> Quoting Erik de Bruin <er...@ixsoftware.nl>:
>>
>>  Hi,
>>>
>>> I'm aware we're trying to keep a state-less thing going with FJx, but
>>> I ran into an issue that I'm not sure how to solve without adding some
>>> kind of storage (private variable) on the 'goog' emitter.
>>>
>>> The thing is that a property has/can have both a getter and a setter
>>> accessor. For a full 'goog' implementation, in addition to emitting
>>> 'Object.defineProperty' for each, we also want to add a property
>>> declaration on the prototype, to set the type. We want to add this
>>> declaration only once, so my solution is to 'remember' if I already
>>> added it in a private variable, since I know of no other way of
>>> checking if I have already written something to the output.
>>>
>>> Am I doing it right?
>>>
>>> EdB
>>>
>>>
>>>
>>> --
>>> Ix Multimedia Software
>>>
>>> Jan Luykenstraat 27
>>> 3521 VB Utrecht
>>>
>>> T. 06-51952295
>>> I. www.ixsoftware.nl
>>>
>>>
>> --
>> Michael Schmalle - Teoti Graphix, LLC
>> http://www.teotigraphix.com
>> http://blog.teotigraphix.com
>>
>>
>

-- 
Michael Schmalle - Teoti Graphix, LLC
http://www.teotigraphix.com
http://blog.teotigraphix.com


Re: [FalconJx] state/no state

Posted by Avi Kessner <ak...@gmail.com>.
Uneducated question here.
If we can't read what is spit out, how can make tests to make sure that the
gestalt is correct?
If we can read what is spit out, why not read it and remain stateless?

I'm assuming that as time goes on, we'll want to read the output to
optimize it on some level.

brought to you by the letters A, V, and I
and the number 47


On Sun, Jan 20, 2013 at 1:38 PM, Michael Schmalle
<ap...@teotigraphix.com>wrote:

> I knew I looked at what you did before.
>
> I see no problem with that Erik, if you test visitAcessor() and it does
> what you want and in the context of the method which is to test the
> production of a unit where the unit here is a field and
> Object.defineProperty() so that is good.
>
> Does my thinking about state make sense to you with this example? We are
> trying to avoid crossed wires.
>
>
> Mike
>
> Quoting Erik de Bruin <er...@ixsoftware.nl>:
>
>  Hi,
>>
>> I'm aware we're trying to keep a state-less thing going with FJx, but
>> I ran into an issue that I'm not sure how to solve without adding some
>> kind of storage (private variable) on the 'goog' emitter.
>>
>> The thing is that a property has/can have both a getter and a setter
>> accessor. For a full 'goog' implementation, in addition to emitting
>> 'Object.defineProperty' for each, we also want to add a property
>> declaration on the prototype, to set the type. We want to add this
>> declaration only once, so my solution is to 'remember' if I already
>> added it in a private variable, since I know of no other way of
>> checking if I have already written something to the output.
>>
>> Am I doing it right?
>>
>> EdB
>>
>>
>>
>> --
>> Ix Multimedia Software
>>
>> Jan Luykenstraat 27
>> 3521 VB Utrecht
>>
>> T. 06-51952295
>> I. www.ixsoftware.nl
>>
>>
> --
> Michael Schmalle - Teoti Graphix, LLC
> http://www.teotigraphix.com
> http://blog.teotigraphix.com
>
>

Re: [FalconJx] state/no state

Posted by Michael Schmalle <ap...@teotigraphix.com>.
I knew I looked at what you did before.

I see no problem with that Erik, if you test visitAcessor() and it  
does what you want and in the context of the method which is to test  
the production of a unit where the unit here is a field and  
Object.defineProperty() so that is good.

Does my thinking about state make sense to you with this example? We  
are trying to avoid crossed wires.

Mike

Quoting Erik de Bruin <er...@ixsoftware.nl>:

> Hi,
>
> I'm aware we're trying to keep a state-less thing going with FJx, but
> I ran into an issue that I'm not sure how to solve without adding some
> kind of storage (private variable) on the 'goog' emitter.
>
> The thing is that a property has/can have both a getter and a setter
> accessor. For a full 'goog' implementation, in addition to emitting
> 'Object.defineProperty' for each, we also want to add a property
> declaration on the prototype, to set the type. We want to add this
> declaration only once, so my solution is to 'remember' if I already
> added it in a private variable, since I know of no other way of
> checking if I have already written something to the output.
>
> Am I doing it right?
>
> EdB
>
>
>
> --
> Ix Multimedia Software
>
> Jan Luykenstraat 27
> 3521 VB Utrecht
>
> T. 06-51952295
> I. www.ixsoftware.nl
>

-- 
Michael Schmalle - Teoti Graphix, LLC
http://www.teotigraphix.com
http://blog.teotigraphix.com


Re: [FalconJx] state/no state

Posted by Michael Schmalle <ap...@teotigraphix.com>.
Hey,

I have to admit, after this last week, I am not on my game. My kids  
finally decided to share what seems to be the flu, although I feel  
like I am in limbo with really getting sick, so my head and focus is  
being affected. :)

I need to look at what you have done. But, there is a philosophy I  
have been following with this and it goes;

"Don't make a dependency between emitting methods"

HEHE This means, I think state is fine if you are creating it or  
"memoizing" the state for calls that happen int the traversing method.  
It seems like your accessor memory deals with that method every time  
it's called right? Or are other methods dependent on what you are  
saving there?


Remember the problem we have with the classDefinition and testing a  
method below a visit method that set that state? We couldn't unit test  
it. I am a weird person when you met me because I honestly believe in  
"units" and that keeping true abstraction by testing units is the only  
way to save headaches in the future.

That being said, can we do things to "get it done" or should we take a  
bit more time to find that solution that satisfies the unit approach,  
which is just good encapsulation.

Sorry for all the quotes, just trying to make a point.

Anyway, let me look and give you my opinion.

Mike



Quoting Erik de Bruin <er...@ixsoftware.nl>:

> Hi,
>
> I'm aware we're trying to keep a state-less thing going with FJx, but
> I ran into an issue that I'm not sure how to solve without adding some
> kind of storage (private variable) on the 'goog' emitter.
>
> The thing is that a property has/can have both a getter and a setter
> accessor. For a full 'goog' implementation, in addition to emitting
> 'Object.defineProperty' for each, we also want to add a property
> declaration on the prototype, to set the type. We want to add this
> declaration only once, so my solution is to 'remember' if I already
> added it in a private variable, since I know of no other way of
> checking if I have already written something to the output.
>
> Am I doing it right?
>
> EdB
>
>
>
> --
> Ix Multimedia Software
>
> Jan Luykenstraat 27
> 3521 VB Utrecht
>
> T. 06-51952295
> I. www.ixsoftware.nl
>

-- 
Michael Schmalle - Teoti Graphix, LLC
http://www.teotigraphix.com
http://blog.teotigraphix.com