we need to find a way to declare that an action is UIless

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
31 messages Options
12
Reply | Threaded
Open this post in threaded view
|

we need to find a way to declare that an action is UIless

Stéphane Ducasse
hi guys

I tried to add borderStyle to BorderedMorph and the progressbar showing the progress blow up.
So we should really have a way to specify silent ui action.
Does anybody have an idea how I could do that?

        [BorderedMorph addInstVarNamed: 'borderStyle'] silent would be cool.

Stef
_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: we need to find a way to declare that an action is UIless

Schwab,Wilhelm K
Stef,

I could be wrong, but I suspect the correct path is to take the GUI manipulation out of the base classes, and if we are still so slow as to need some progress indication, it could be readily hacked (in a good way) as follows:

(1) Transcript output, provided it works on the fly vs. appearing all at once at the end (I fear the latter might hold at present??)
(2) via a good logging system and an external process (cross-platform analog to OutputDebugString() and DebugView on Windows)
(3) trigger an event and let anything that wants to observe them, with nothing doing so by default.

I would really like to see (2) grow as an option for us.  I periodically do some work with Pharo on a particular Windows system (getting to be ever more rare in my world<g>), but I do greatly appreciate the real-time tracing.  Even if we end up doing it with a separate image and sockets, it would be nice to have.  The separate image could be a nice example of deploying an "executable" as well as a potential show piece for Polymorph.

Bill


________________________________________
From: [hidden email] [[hidden email]] On Behalf Of Stéphane Ducasse [[hidden email]]
Sent: Sunday, September 19, 2010 6:12 AM
To: Pharo Development
Subject: [Pharo-project] we need to find a way to declare that an action is     UIless

hi guys

I tried to add borderStyle to BorderedMorph and the progressbar showing the progress blow up.
So we should really have a way to specify silent ui action.
Does anybody have an idea how I could do that?

        [BorderedMorph addInstVarNamed: 'borderStyle'] silent would be cool.

Stef
_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: we need to find a way to declare that an action is UIless

Igor Stasenko
In reply to this post by Stéphane Ducasse
On 19 September 2010 13:12, Stéphane Ducasse <[hidden email]> wrote:
> hi guys
>
> I tried to add borderStyle to BorderedMorph and the progressbar showing the progress blow up.
> So we should really have a way to specify silent ui action.
> Does anybody have an idea how I could do that?
>
>        [BorderedMorph addInstVarNamed: 'borderStyle'] silent would be cool.
>

use morph propertyAt: #borderStyle
so you don't have to break your head with it :)

BorderedMorph having an enormous number of subclasses, while some of
them even don't using any
kind of borders. That's makes me wonder if anything like color, border
style etc should belong to root classes
in hierarchy, like Morph or BorderedMorph. I think that dynamic set of
properties (which is currently sits in morphic
extensions are more appropriate storage for them). The only problem is
that accessing them is much slower than ivars.

> Stef
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>



--
Best regards,
Igor Stasenko AKA sig.

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: we need to find a way to declare that an action is UIless

Schwab,Wilhelm K
Slow access can be a big problem.  Any such change should be made based on measurements so we know what benefit we get at what cost.




________________________________________
From: [hidden email] [[hidden email]] On Behalf Of Igor Stasenko [[hidden email]]
Sent: Sunday, September 19, 2010 7:56 PM
To: [hidden email]
Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless

On 19 September 2010 13:12, Stéphane Ducasse <[hidden email]> wrote:
> hi guys
>
> I tried to add borderStyle to BorderedMorph and the progressbar showing the progress blow up.
> So we should really have a way to specify silent ui action.
> Does anybody have an idea how I could do that?
>
>        [BorderedMorph addInstVarNamed: 'borderStyle'] silent would be cool.
>

use morph propertyAt: #borderStyle
so you don't have to break your head with it :)

BorderedMorph having an enormous number of subclasses, while some of
them even don't using any
kind of borders. That's makes me wonder if anything like color, border
style etc should belong to root classes
in hierarchy, like Morph or BorderedMorph. I think that dynamic set of
properties (which is currently sits in morphic
extensions are more appropriate storage for them). The only problem is
that accessing them is much slower than ivars.

> Stef
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>



--
Best regards,
Igor Stasenko AKA sig.

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: we need to find a way to declare that an action is UIless

Igor Stasenko
On 20 September 2010 03:09, Schwab,Wilhelm K <[hidden email]> wrote:
> Slow access can be a big problem.  Any such change should be made based on measurements so we know what benefit we get at what cost.
>
Yeah, it would be much easier to deal that line in Self or JavaScript,
where you can add any properties to object
on the fly, without need of adding a methods or declaring additional
instance variable in class...

>
>
>
> ________________________________________
> From: [hidden email] [[hidden email]] On Behalf Of Igor Stasenko [[hidden email]]
> Sent: Sunday, September 19, 2010 7:56 PM
> To: [hidden email]
> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>
> On 19 September 2010 13:12, Stéphane Ducasse <[hidden email]> wrote:
>> hi guys
>>
>> I tried to add borderStyle to BorderedMorph and the progressbar showing the progress blow up.
>> So we should really have a way to specify silent ui action.
>> Does anybody have an idea how I could do that?
>>
>>        [BorderedMorph addInstVarNamed: 'borderStyle'] silent would be cool.
>>
>
> use morph propertyAt: #borderStyle
> so you don't have to break your head with it :)
>
> BorderedMorph having an enormous number of subclasses, while some of
> them even don't using any
> kind of borders. That's makes me wonder if anything like color, border
> style etc should belong to root classes
> in hierarchy, like Morph or BorderedMorph. I think that dynamic set of
> properties (which is currently sits in morphic
> extensions are more appropriate storage for them). The only problem is
> that accessing them is much slower than ivars.
>
>> Stef
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
>
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>



--
Best regards,
Igor Stasenko AKA sig.

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: we need to find a way to declare that an action is UIless

Guillermo Polito
+1 to Bill's.  If we can't have a feedback from the system while doing silent actions, we can think it just freezed :S.

And it's something already dicussed, but I don't like actions that affect only a part of the system blocking my whole image.

Guille

On Sun, Sep 19, 2010 at 10:40 PM, Igor Stasenko <[hidden email]> wrote:
On 20 September 2010 03:09, Schwab,Wilhelm K <[hidden email]> wrote:
> Slow access can be a big problem.  Any such change should be made based on measurements so we know what benefit we get at what cost.
>
Yeah, it would be much easier to deal that line in Self or JavaScript,
where you can add any properties to object
on the fly, without need of adding a methods or declaring additional
instance variable in class...

>
>
>
> ________________________________________
> From: [hidden email] [[hidden email]] On Behalf Of Igor Stasenko [[hidden email]]
> Sent: Sunday, September 19, 2010 7:56 PM
> To: [hidden email]
> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>
> On 19 September 2010 13:12, Stéphane Ducasse <[hidden email]> wrote:
>> hi guys
>>
>> I tried to add borderStyle to BorderedMorph and the progressbar showing the progress blow up.
>> So we should really have a way to specify silent ui action.
>> Does anybody have an idea how I could do that?
>>
>>        [BorderedMorph addInstVarNamed: 'borderStyle'] silent would be cool.
>>
>
> use morph propertyAt: #borderStyle
> so you don't have to break your head with it :)
>
> BorderedMorph having an enormous number of subclasses, while some of
> them even don't using any
> kind of borders. That's makes me wonder if anything like color, border
> style etc should belong to root classes
> in hierarchy, like Morph or BorderedMorph. I think that dynamic set of
> properties (which is currently sits in morphic
> extensions are more appropriate storage for them). The only problem is
> that accessing them is much slower than ivars.
>
>> Stef
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
>
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>



--
Best regards,
Igor Stasenko AKA sig.

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: we need to find a way to declare that an action is UIless

Stéphane Ducasse
In reply to this post by Igor Stasenko
This is not the point :)
I know the extension.
I wanted to check if I can do the change to follow CUIS design and the system is not robust enough
to let me change it wile running it.

Stef

On Sep 20, 2010, at 1:56 AM, Igor Stasenko wrote:

> On 19 September 2010 13:12, Stéphane Ducasse <[hidden email]> wrote:
>> hi guys
>>
>> I tried to add borderStyle to BorderedMorph and the progressbar showing the progress blow up.
>> So we should really have a way to specify silent ui action.
>> Does anybody have an idea how I could do that?
>>
>>        [BorderedMorph addInstVarNamed: 'borderStyle'] silent would be cool.
>>
>
> use morph propertyAt: #borderStyle
> so you don't have to break your head with it :)
>
> BorderedMorph having an enormous number of subclasses, while some of
> them even don't using any
> kind of borders. That's makes me wonder if anything like color, border
> style etc should belong to root classes
> in hierarchy, like Morph or BorderedMorph. I think that dynamic set of
> properties (which is currently sits in morphic
> extensions are more appropriate storage for them). The only problem is
> that accessing them is much slower than ivars.
>
>> Stef
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
>
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: we need to find a way to declare that an action is UIless

Stéphane Ducasse
In reply to this post by Guillermo Polito
Yes this was my exact point.

Stef

On Sep 20, 2010, at 4:56 AM, Guillermo Polito wrote:

> +1 to Bill's.  If we can't have a feedback from the system while doing silent actions, we can think it just freezed :S.
>
> And it's something already dicussed, but I don't like actions that affect only a part of the system blocking my whole image.
>
> Guille
>
> On Sun, Sep 19, 2010 at 10:40 PM, Igor Stasenko <[hidden email]> wrote:
> On 20 September 2010 03:09, Schwab,Wilhelm K <[hidden email]> wrote:
> > Slow access can be a big problem.  Any such change should be made based on measurements so we know what benefit we get at what cost.
> >
> Yeah, it would be much easier to deal that line in Self or JavaScript,
> where you can add any properties to object
> on the fly, without need of adding a methods or declaring additional
> instance variable in class...
>
> >
> >
> >
> > ________________________________________
> > From: [hidden email] [[hidden email]] On Behalf Of Igor Stasenko [[hidden email]]
> > Sent: Sunday, September 19, 2010 7:56 PM
> > To: [hidden email]
> > Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
> >
> > On 19 September 2010 13:12, Stéphane Ducasse <[hidden email]> wrote:
> >> hi guys
> >>
> >> I tried to add borderStyle to BorderedMorph and the progressbar showing the progress blow up.
> >> So we should really have a way to specify silent ui action.
> >> Does anybody have an idea how I could do that?
> >>
> >>        [BorderedMorph addInstVarNamed: 'borderStyle'] silent would be cool.
> >>
> >
> > use morph propertyAt: #borderStyle
> > so you don't have to break your head with it :)
> >
> > BorderedMorph having an enormous number of subclasses, while some of
> > them even don't using any
> > kind of borders. That's makes me wonder if anything like color, border
> > style etc should belong to root classes
> > in hierarchy, like Morph or BorderedMorph. I think that dynamic set of
> > properties (which is currently sits in morphic
> > extensions are more appropriate storage for them). The only problem is
> > that accessing them is much slower than ivars.
> >
> >> Stef
> >> _______________________________________________
> >> Pharo-project mailing list
> >> [hidden email]
> >> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
> >>
> >
> >
> >
> > --
> > Best regards,
> > Igor Stasenko AKA sig.
> >
> > _______________________________________________
> > Pharo-project mailing list
> > [hidden email]
> > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
> >
> > _______________________________________________
> > Pharo-project mailing list
> > [hidden email]
> > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
> >
>
>
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: we need to find a way to declare that an action is UIless

laza
In reply to this post by Stéphane Ducasse
Hi Stef,

this is a tricky thing to do from _within_ Morphic, because even if
you avoid progress notification completely during recompilation by
doing something like this in a workspace

[
        ClassBuilder beSilent: true.

        Morph subclass: #BorderedMorph
                instanceVariableNames: 'borderWidth borderColor borderStyle'
                classVariableNames: ''
                poolDictionaries: ''
                category: 'Morphic-Kernel'.

] ensure: [
        ClassBuilder beSilent: false]

the recompilation will succeed, but you'll end up with an error from
the TextMorph (or subclass of it) of the workspace you've "done" this
code in, because it is also a subclass of BorderedMorph.You can ignore
the debugger or wrap that code in an error handler that just does a
resume, but yes ... it's not ideal.

Alex

2010/9/19 Stéphane Ducasse <[hidden email]>:

> hi guys
>
> I tried to add borderStyle to BorderedMorph and the progressbar showing the progress blow up.
> So we should really have a way to specify silent ui action.
> Does anybody have an idea how I could do that?
>
>        [BorderedMorph addInstVarNamed: 'borderStyle'] silent would be cool.
>
> Stef
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: we need to find a way to declare that an action is UIless

Schwab,Wilhelm K
In reply to this post by Guillermo Polito
Guillermo,

One has to be careful with assuming that something affects only part of the image.  Much of Squeak's networking trouble comes from the fact that it was designed to block the image for a limited time when it should have been blocking only one Process *indefinitely*.  But, the remedy for working while blocking operations happen in the background is threading, and most of the image is deliberately not thread safe.

Bill


________________________________________
From: [hidden email] [[hidden email]] On Behalf Of Guillermo Polito [[hidden email]]
Sent: Sunday, September 19, 2010 10:56 PM
To: [hidden email]
Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless

+1 to Bill's.  If we can't have a feedback from the system while doing silent actions, we can think it just freezed :S.

And it's something already dicussed, but I don't like actions that affect only a part of the system blocking my whole image.

Guille

On Sun, Sep 19, 2010 at 10:40 PM, Igor Stasenko <[hidden email]<mailto:[hidden email]>> wrote:
On 20 September 2010 03:09, Schwab,Wilhelm K <[hidden email]<mailto:[hidden email]>> wrote:
> Slow access can be a big problem.  Any such change should be made based on measurements so we know what benefit we get at what cost.
>
Yeah, it would be much easier to deal that line in Self or JavaScript,
where you can add any properties to object
on the fly, without need of adding a methods or declaring additional
instance variable in class...

>
>
>
> ________________________________________
> From: [hidden email]<mailto:[hidden email]> [[hidden email]<mailto:[hidden email]>] On Behalf Of Igor Stasenko [[hidden email]<mailto:[hidden email]>]
> Sent: Sunday, September 19, 2010 7:56 PM
> To: [hidden email]<mailto:[hidden email]>
> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>
> On 19 September 2010 13:12, Stéphane Ducasse <[hidden email]<mailto:[hidden email]>> wrote:
>> hi guys
>>
>> I tried to add borderStyle to BorderedMorph and the progressbar showing the progress blow up.
>> So we should really have a way to specify silent ui action.
>> Does anybody have an idea how I could do that?
>>
>>        [BorderedMorph addInstVarNamed: 'borderStyle'] silent would be cool.
>>
>
> use morph propertyAt: #borderStyle
> so you don't have to break your head with it :)
>
> BorderedMorph having an enormous number of subclasses, while some of
> them even don't using any
> kind of borders. That's makes me wonder if anything like color, border
> style etc should belong to root classes
> in hierarchy, like Morph or BorderedMorph. I think that dynamic set of
> properties (which is currently sits in morphic
> extensions are more appropriate storage for them). The only problem is
> that accessing them is much slower than ivars.
>
>> Stef
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]<mailto:[hidden email]>
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
>
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]<mailto:[hidden email]>
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]<mailto:[hidden email]>
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>



--
Best regards,
Igor Stasenko AKA sig.

_______________________________________________
Pharo-project mailing list
[hidden email]<mailto:[hidden email]>
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: we need to find a way to declare that an action is UIless

Stéphane Ducasse
In reply to this post by laza
Hi alexander

I did:

BloclClosure>>silent

        ^[ self value ]
                on: ProgressInitiationException
                do: [ :ex |
                        ex sendNotificationsTo: [ :min :max :curr |
                                Transcript show: min printString,'  ',max printString,'  ',curr printString; cr
                        ].
                ].

On Sep 20, 2010, at 10:33 AM, Alexander Lazarević wrote:

> Hi Stef,
>
> this is a tricky thing to do from _within_ Morphic, because even if
> you avoid progress notification completely during recompilation by
> doing something like this in a workspace
>
> [
> ClassBuilder beSilent: true.
>
> Morph subclass: #BorderedMorph
> instanceVariableNames: 'borderWidth borderColor borderStyle'
> classVariableNames: ''
> poolDictionaries: ''
> category: 'Morphic-Kernel'.
>
> ] ensure: [
> ClassBuilder beSilent: false]
>
> the recompilation will succeed, but you'll end up with an error from
> the TextMorph (or subclass of it) of the workspace you've "done" this
> code in, because it is also a subclass of BorderedMorph.

Yes I got it too :)

> You can ignore
> the debugger or wrap that code in an error handler that just does a
> resume, but yes ... it's not ideal.
>
> Alex
>
> 2010/9/19 Stéphane Ducasse <[hidden email]>:
>> hi guys
>>
>> I tried to add borderStyle to BorderedMorph and the progressbar showing the progress blow up.
>> So we should really have a way to specify silent ui action.
>> Does anybody have an idea how I could do that?
>>
>>        [BorderedMorph addInstVarNamed: 'borderStyle'] silent would be cool.
>>
>> Stef
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: we need to find a way to declare that an action is UIless

Levente Uzonyi-2
In reply to this post by Schwab,Wilhelm K
On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:

> Guillermo,
>
> One has to be careful with assuming that something affects only part of the image.  Much of Squeak's networking trouble comes from the fact that it was designed to block the image for a limited time when it should have been blocking only one Process *indefinitely*.  But, the remedy for working while blocking operations happen in the background is threading, and most of the image is deliberately not thread safe.

When does a Socket block the image?


Levente

>
> Bill
>
>
> ________________________________________
> From: [hidden email] [[hidden email]] On Behalf Of Guillermo Polito [[hidden email]]
> Sent: Sunday, September 19, 2010 10:56 PM
> To: [hidden email]
> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>
> +1 to Bill's.  If we can't have a feedback from the system while doing silent actions, we can think it just freezed :S.
>
> And it's something already dicussed, but I don't like actions that affect only a part of the system blocking my whole image.
>
> Guille
>
> On Sun, Sep 19, 2010 at 10:40 PM, Igor Stasenko <[hidden email]<mailto:[hidden email]>> wrote:
> On 20 September 2010 03:09, Schwab,Wilhelm K <[hidden email]<mailto:[hidden email]>> wrote:
>> Slow access can be a big problem.  Any such change should be made based on measurements so we know what benefit we get at what cost.
>>
> Yeah, it would be much easier to deal that line in Self or JavaScript,
> where you can add any properties to object
> on the fly, without need of adding a methods or declaring additional
> instance variable in class...
>
>>
>>
>>
>> ________________________________________
>> From: [hidden email]<mailto:[hidden email]> [[hidden email]<mailto:[hidden email]>] On Behalf Of Igor Stasenko [[hidden email]<mailto:[hidden email]>]
>> Sent: Sunday, September 19, 2010 7:56 PM
>> To: [hidden email]<mailto:[hidden email]>
>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>
>> On 19 September 2010 13:12, Stéphane Ducasse <[hidden email]<mailto:[hidden email]>> wrote:
>>> hi guys
>>>
>>> I tried to add borderStyle to BorderedMorph and the progressbar showing the progress blow up.
>>> So we should really have a way to specify silent ui action.
>>> Does anybody have an idea how I could do that?
>>>
>>>        [BorderedMorph addInstVarNamed: 'borderStyle'] silent would be cool.
>>>
>>
>> use morph propertyAt: #borderStyle
>> so you don't have to break your head with it :)
>>
>> BorderedMorph having an enormous number of subclasses, while some of
>> them even don't using any
>> kind of borders. That's makes me wonder if anything like color, border
>> style etc should belong to root classes
>> in hierarchy, like Morph or BorderedMorph. I think that dynamic set of
>> properties (which is currently sits in morphic
>> extensions are more appropriate storage for them). The only problem is
>> that accessing them is much slower than ivars.
>>
>>> Stef
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]<mailto:[hidden email]>
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>
>>
>>
>> --
>> Best regards,
>> Igor Stasenko AKA sig.
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]<mailto:[hidden email]>
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]<mailto:[hidden email]>
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
>
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]<mailto:[hidden email]>
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: we need to find a way to declare that an action is UIless

Schwab,Wilhelm K
Levente,

If they worked correctly, they would, at least under naive client conditions - a connection attempt should try until it is told (#terminate) to stop.  Severs that listen for a limited time are broken by design.  ConnectionQueue polls as a result - it's pretty bad.

Bill



________________________________________
From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
Sent: Monday, September 20, 2010 7:01 PM
To: [hidden email]
Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless

On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:

> Guillermo,
>
> One has to be careful with assuming that something affects only part of the image.  Much of Squeak's networking trouble comes from the fact that it was designed to block the image for a limited time when it should have been blocking only one Process *indefinitely*.  But, the remedy for working while blocking operations happen in the background is threading, and most of the image is deliberately not thread safe.

When does a Socket block the image?


Levente

>
> Bill
>
>
> ________________________________________
> From: [hidden email] [[hidden email]] On Behalf Of Guillermo Polito [[hidden email]]
> Sent: Sunday, September 19, 2010 10:56 PM
> To: [hidden email]
> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>
> +1 to Bill's.  If we can't have a feedback from the system while doing silent actions, we can think it just freezed :S.
>
> And it's something already dicussed, but I don't like actions that affect only a part of the system blocking my whole image.
>
> Guille
>
> On Sun, Sep 19, 2010 at 10:40 PM, Igor Stasenko <[hidden email]<mailto:[hidden email]>> wrote:
> On 20 September 2010 03:09, Schwab,Wilhelm K <[hidden email]<mailto:[hidden email]>> wrote:
>> Slow access can be a big problem.  Any such change should be made based on measurements so we know what benefit we get at what cost.
>>
> Yeah, it would be much easier to deal that line in Self or JavaScript,
> where you can add any properties to object
> on the fly, without need of adding a methods or declaring additional
> instance variable in class...
>
>>
>>
>>
>> ________________________________________
>> From: [hidden email]<mailto:[hidden email]> [[hidden email]<mailto:[hidden email]>] On Behalf Of Igor Stasenko [[hidden email]<mailto:[hidden email]>]
>> Sent: Sunday, September 19, 2010 7:56 PM
>> To: [hidden email]<mailto:[hidden email]>
>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>
>> On 19 September 2010 13:12, Stéphane Ducasse <[hidden email]<mailto:[hidden email]>> wrote:
>>> hi guys
>>>
>>> I tried to add borderStyle to BorderedMorph and the progressbar showing the progress blow up.
>>> So we should really have a way to specify silent ui action.
>>> Does anybody have an idea how I could do that?
>>>
>>>        [BorderedMorph addInstVarNamed: 'borderStyle'] silent would be cool.
>>>
>>
>> use morph propertyAt: #borderStyle
>> so you don't have to break your head with it :)
>>
>> BorderedMorph having an enormous number of subclasses, while some of
>> them even don't using any
>> kind of borders. That's makes me wonder if anything like color, border
>> style etc should belong to root classes
>> in hierarchy, like Morph or BorderedMorph. I think that dynamic set of
>> properties (which is currently sits in morphic
>> extensions are more appropriate storage for them). The only problem is
>> that accessing them is much slower than ivars.
>>
>>> Stef
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]<mailto:[hidden email]>
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>
>>
>>
>> --
>> Best regards,
>> Igor Stasenko AKA sig.
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]<mailto:[hidden email]>
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]<mailto:[hidden email]>
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
>
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]<mailto:[hidden email]>
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: we need to find a way to declare that an action is UIless

Levente Uzonyi-2
On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:

> Levente,
>
> If they worked correctly, they would, at least under naive client conditions - a connection attempt should try until it is told (#terminate) to stop.  Severs that listen for a limited time are broken by design.  ConnectionQueue polls as a result - it's pretty bad.

I guess you're using Socket>>#connectTo:port: which uses
Socket class>>#standardTimeout as timeout (45 seconds). If you don't want
the default timeout, use #connectTo:port:waitForConnectionFor: or
implement your own low level method which waits on semaphore until it's
signaled. If you want to terminate the connection attempt, just signal the
semaphore yourself, like here:

s := Socket newTCP.
s connectNonBlockingTo: #[127 0 0 1] port: 19327. "Random port which is not open."
[ 500 milliSeconds asDelay wait. s semaphore signal ] fork. "This process will stop the connection attempt."
s semaphore waitTimeoutMSecs: 1000.
s statusString. "This will simply print the socket status. You can terminate the process here if the socket is connected, etc."

And for ConnectionQueue, simply don't use it if you don't like it. It
doesn't have to poll at all, AFAIK it's just implemented that way.
Since Sockets use Semaphores which are signaled by the SocketPlugin, they
don't block the image at all. But correct me if I'm wrong.


Levente

>
> Bill
>
>
>
> ________________________________________
> From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
> Sent: Monday, September 20, 2010 7:01 PM
> To: [hidden email]
> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>
> On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:
>
>> Guillermo,
>>
>> One has to be careful with assuming that something affects only part of the image.  Much of Squeak's networking trouble comes from the fact that it was designed to block the image for a limited time when it should have been blocking only one Process *indefinitely*.  But, the remedy for working while blocking operations happen in the background is threading, and most of the image is deliberately not thread safe.
>
> When does a Socket block the image?
>
>
> Levente
>
>>
>> Bill
>>
>>
>> ________________________________________
>> From: [hidden email] [[hidden email]] On Behalf Of Guillermo Polito [[hidden email]]
>> Sent: Sunday, September 19, 2010 10:56 PM
>> To: [hidden email]
>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>
>> +1 to Bill's.  If we can't have a feedback from the system while doing silent actions, we can think it just freezed :S.
>>
>> And it's something already dicussed, but I don't like actions that affect only a part of the system blocking my whole image.
>>
>> Guille
>>
>> On Sun, Sep 19, 2010 at 10:40 PM, Igor Stasenko <[hidden email]<mailto:[hidden email]>> wrote:
>> On 20 September 2010 03:09, Schwab,Wilhelm K <[hidden email]<mailto:[hidden email]>> wrote:
>>> Slow access can be a big problem.  Any such change should be made based on measurements so we know what benefit we get at what cost.
>>>
>> Yeah, it would be much easier to deal that line in Self or JavaScript,
>> where you can add any properties to object
>> on the fly, without need of adding a methods or declaring additional
>> instance variable in class...
>>
>>>
>>>
>>>
>>> ________________________________________
>>> From: [hidden email]<mailto:[hidden email]> [[hidden email]<mailto:[hidden email]>] On Behalf Of Igor Stasenko [[hidden email]<mailto:[hidden email]>]
>>> Sent: Sunday, September 19, 2010 7:56 PM
>>> To: [hidden email]<mailto:[hidden email]>
>>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>>
>>> On 19 September 2010 13:12, Stéphane Ducasse <[hidden email]<mailto:[hidden email]>> wrote:
>>>> hi guys
>>>>
>>>> I tried to add borderStyle to BorderedMorph and the progressbar showing the progress blow up.
>>>> So we should really have a way to specify silent ui action.
>>>> Does anybody have an idea how I could do that?
>>>>
>>>>        [BorderedMorph addInstVarNamed: 'borderStyle'] silent would be cool.
>>>>
>>>
>>> use morph propertyAt: #borderStyle
>>> so you don't have to break your head with it :)
>>>
>>> BorderedMorph having an enormous number of subclasses, while some of
>>> them even don't using any
>>> kind of borders. That's makes me wonder if anything like color, border
>>> style etc should belong to root classes
>>> in hierarchy, like Morph or BorderedMorph. I think that dynamic set of
>>> properties (which is currently sits in morphic
>>> extensions are more appropriate storage for them). The only problem is
>>> that accessing them is much slower than ivars.
>>>
>>>> Stef
>>>> _______________________________________________
>>>> Pharo-project mailing list
>>>> [hidden email]<mailto:[hidden email]>
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>
>>>
>>>
>>>
>>> --
>>> Best regards,
>>> Igor Stasenko AKA sig.
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]<mailto:[hidden email]>
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]<mailto:[hidden email]>
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>
>>
>>
>> --
>> Best regards,
>> Igor Stasenko AKA sig.
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]<mailto:[hidden email]>
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: we need to find a way to declare that an action is UIless

Schwab,Wilhelm K
Scratch around, and you will find that the time limits are there to allow calls to made on the main thread.



________________________________________
From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
Sent: Monday, September 20, 2010 8:13 PM
To: [hidden email]
Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless

On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:

> Levente,
>
> If they worked correctly, they would, at least under naive client conditions - a connection attempt should try until it is told (#terminate) to stop.  Severs that listen for a limited time are broken by design.  ConnectionQueue polls as a result - it's pretty bad.

I guess you're using Socket>>#connectTo:port: which uses
Socket class>>#standardTimeout as timeout (45 seconds). If you don't want
the default timeout, use #connectTo:port:waitForConnectionFor: or
implement your own low level method which waits on semaphore until it's
signaled. If you want to terminate the connection attempt, just signal the
semaphore yourself, like here:

s := Socket newTCP.
s connectNonBlockingTo: #[127 0 0 1] port: 19327. "Random port which is not open."
[ 500 milliSeconds asDelay wait. s semaphore signal ] fork. "This process will stop the connection attempt."
s semaphore waitTimeoutMSecs: 1000.
s statusString. "This will simply print the socket status. You can terminate the process here if the socket is connected, etc."

And for ConnectionQueue, simply don't use it if you don't like it. It
doesn't have to poll at all, AFAIK it's just implemented that way.
Since Sockets use Semaphores which are signaled by the SocketPlugin, they
don't block the image at all. But correct me if I'm wrong.


Levente

>
> Bill
>
>
>
> ________________________________________
> From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
> Sent: Monday, September 20, 2010 7:01 PM
> To: [hidden email]
> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>
> On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:
>
>> Guillermo,
>>
>> One has to be careful with assuming that something affects only part of the image.  Much of Squeak's networking trouble comes from the fact that it was designed to block the image for a limited time when it should have been blocking only one Process *indefinitely*.  But, the remedy for working while blocking operations happen in the background is threading, and most of the image is deliberately not thread safe.
>
> When does a Socket block the image?
>
>
> Levente
>
>>
>> Bill
>>
>>
>> ________________________________________
>> From: [hidden email] [[hidden email]] On Behalf Of Guillermo Polito [[hidden email]]
>> Sent: Sunday, September 19, 2010 10:56 PM
>> To: [hidden email]
>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>
>> +1 to Bill's.  If we can't have a feedback from the system while doing silent actions, we can think it just freezed :S.
>>
>> And it's something already dicussed, but I don't like actions that affect only a part of the system blocking my whole image.
>>
>> Guille
>>
>> On Sun, Sep 19, 2010 at 10:40 PM, Igor Stasenko <[hidden email]<mailto:[hidden email]>> wrote:
>> On 20 September 2010 03:09, Schwab,Wilhelm K <[hidden email]<mailto:[hidden email]>> wrote:
>>> Slow access can be a big problem.  Any such change should be made based on measurements so we know what benefit we get at what cost.
>>>
>> Yeah, it would be much easier to deal that line in Self or JavaScript,
>> where you can add any properties to object
>> on the fly, without need of adding a methods or declaring additional
>> instance variable in class...
>>
>>>
>>>
>>>
>>> ________________________________________
>>> From: [hidden email]<mailto:[hidden email]> [[hidden email]<mailto:[hidden email]>] On Behalf Of Igor Stasenko [[hidden email]<mailto:[hidden email]>]
>>> Sent: Sunday, September 19, 2010 7:56 PM
>>> To: [hidden email]<mailto:[hidden email]>
>>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>>
>>> On 19 September 2010 13:12, Stéphane Ducasse <[hidden email]<mailto:[hidden email]>> wrote:
>>>> hi guys
>>>>
>>>> I tried to add borderStyle to BorderedMorph and the progressbar showing the progress blow up.
>>>> So we should really have a way to specify silent ui action.
>>>> Does anybody have an idea how I could do that?
>>>>
>>>>        [BorderedMorph addInstVarNamed: 'borderStyle'] silent would be cool.
>>>>
>>>
>>> use morph propertyAt: #borderStyle
>>> so you don't have to break your head with it :)
>>>
>>> BorderedMorph having an enormous number of subclasses, while some of
>>> them even don't using any
>>> kind of borders. That's makes me wonder if anything like color, border
>>> style etc should belong to root classes
>>> in hierarchy, like Morph or BorderedMorph. I think that dynamic set of
>>> properties (which is currently sits in morphic
>>> extensions are more appropriate storage for them). The only problem is
>>> that accessing them is much slower than ivars.
>>>
>>>> Stef
>>>> _______________________________________________
>>>> Pharo-project mailing list
>>>> [hidden email]<mailto:[hidden email]>
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>
>>>
>>>
>>>
>>> --
>>> Best regards,
>>> Igor Stasenko AKA sig.
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]<mailto:[hidden email]>
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]<mailto:[hidden email]>
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>
>>
>>
>> --
>> Best regards,
>> Igor Stasenko AKA sig.
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]<mailto:[hidden email]>
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: we need to find a way to declare that an action is UIless

Levente Uzonyi-2
On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:

> Scratch around, and you will find that the time limits are there to allow calls to made on the main thread.

Where? In the Socket class? And what's the "main thread"?


Levente

>
>
>
> ________________________________________
> From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
> Sent: Monday, September 20, 2010 8:13 PM
> To: [hidden email]
> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>
> On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:
>
>> Levente,
>>
>> If they worked correctly, they would, at least under naive client conditions - a connection attempt should try until it is told (#terminate) to stop.  Severs that listen for a limited time are broken by design.  ConnectionQueue polls as a result - it's pretty bad.
>
> I guess you're using Socket>>#connectTo:port: which uses
> Socket class>>#standardTimeout as timeout (45 seconds). If you don't want
> the default timeout, use #connectTo:port:waitForConnectionFor: or
> implement your own low level method which waits on semaphore until it's
> signaled. If you want to terminate the connection attempt, just signal the
> semaphore yourself, like here:
>
> s := Socket newTCP.
> s connectNonBlockingTo: #[127 0 0 1] port: 19327. "Random port which is not open."
> [ 500 milliSeconds asDelay wait. s semaphore signal ] fork. "This process will stop the connection attempt."
> s semaphore waitTimeoutMSecs: 1000.
> s statusString. "This will simply print the socket status. You can terminate the process here if the socket is connected, etc."
>
> And for ConnectionQueue, simply don't use it if you don't like it. It
> doesn't have to poll at all, AFAIK it's just implemented that way.
> Since Sockets use Semaphores which are signaled by the SocketPlugin, they
> don't block the image at all. But correct me if I'm wrong.
>
>
> Levente
>
>>
>> Bill
>>
>>
>>
>> ________________________________________
>> From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
>> Sent: Monday, September 20, 2010 7:01 PM
>> To: [hidden email]
>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>
>> On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:
>>
>>> Guillermo,
>>>
>>> One has to be careful with assuming that something affects only part of the image.  Much of Squeak's networking trouble comes from the fact that it was designed to block the image for a limited time when it should have been blocking only one Process *indefinitely*.  But, the remedy for working while blocking operations happen in the background is threading, and most of the image is deliberately not thread safe.
>>
>> When does a Socket block the image?
>>
>>
>> Levente
>>
>>>
>>> Bill
>>>
>>>
>>> ________________________________________
>>> From: [hidden email] [[hidden email]] On Behalf Of Guillermo Polito [[hidden email]]
>>> Sent: Sunday, September 19, 2010 10:56 PM
>>> To: [hidden email]
>>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>>
>>> +1 to Bill's.  If we can't have a feedback from the system while doing silent actions, we can think it just freezed :S.
>>>
>>> And it's something already dicussed, but I don't like actions that affect only a part of the system blocking my whole image.
>>>
>>> Guille
>>>
>>> On Sun, Sep 19, 2010 at 10:40 PM, Igor Stasenko <[hidden email]<mailto:[hidden email]>> wrote:
>>> On 20 September 2010 03:09, Schwab,Wilhelm K <[hidden email]<mailto:[hidden email]>> wrote:
>>>> Slow access can be a big problem.  Any such change should be made based on measurements so we know what benefit we get at what cost.
>>>>
>>> Yeah, it would be much easier to deal that line in Self or JavaScript,
>>> where you can add any properties to object
>>> on the fly, without need of adding a methods or declaring additional
>>> instance variable in class...
>>>
>>>>
>>>>
>>>>
>>>> ________________________________________
>>>> From: [hidden email]<mailto:[hidden email]> [[hidden email]<mailto:[hidden email]>] On Behalf Of Igor Stasenko [[hidden email]<mailto:[hidden email]>]
>>>> Sent: Sunday, September 19, 2010 7:56 PM
>>>> To: [hidden email]<mailto:[hidden email]>
>>>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>>>
>>>> On 19 September 2010 13:12, Stéphane Ducasse <[hidden email]<mailto:[hidden email]>> wrote:
>>>>> hi guys
>>>>>
>>>>> I tried to add borderStyle to BorderedMorph and the progressbar showing the progress blow up.
>>>>> So we should really have a way to specify silent ui action.
>>>>> Does anybody have an idea how I could do that?
>>>>>
>>>>>        [BorderedMorph addInstVarNamed: 'borderStyle'] silent would be cool.
>>>>>
>>>>
>>>> use morph propertyAt: #borderStyle
>>>> so you don't have to break your head with it :)
>>>>
>>>> BorderedMorph having an enormous number of subclasses, while some of
>>>> them even don't using any
>>>> kind of borders. That's makes me wonder if anything like color, border
>>>> style etc should belong to root classes
>>>> in hierarchy, like Morph or BorderedMorph. I think that dynamic set of
>>>> properties (which is currently sits in morphic
>>>> extensions are more appropriate storage for them). The only problem is
>>>> that accessing them is much slower than ivars.
>>>>
>>>>> Stef
>>>>> _______________________________________________
>>>>> Pharo-project mailing list
>>>>> [hidden email]<mailto:[hidden email]>
>>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Best regards,
>>>> Igor Stasenko AKA sig.
>>>>
>>>> _______________________________________________
>>>> Pharo-project mailing list
>>>> [hidden email]<mailto:[hidden email]>
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>
>>>> _______________________________________________
>>>> Pharo-project mailing list
>>>> [hidden email]<mailto:[hidden email]>
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>
>>>
>>>
>>>
>>> --
>>> Best regards,
>>> Igor Stasenko AKA sig.
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]<mailto:[hidden email]>
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: we need to find a way to declare that an action is UIless

Schwab,Wilhelm K
the one running the gui




________________________________________
From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
Sent: Monday, September 20, 2010 10:14 PM
To: [hidden email]
Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless

On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:

> Scratch around, and you will find that the time limits are there to allow calls to made on the main thread.

Where? In the Socket class? And what's the "main thread"?


Levente

>
>
>
> ________________________________________
> From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
> Sent: Monday, September 20, 2010 8:13 PM
> To: [hidden email]
> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>
> On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:
>
>> Levente,
>>
>> If they worked correctly, they would, at least under naive client conditions - a connection attempt should try until it is told (#terminate) to stop.  Severs that listen for a limited time are broken by design.  ConnectionQueue polls as a result - it's pretty bad.
>
> I guess you're using Socket>>#connectTo:port: which uses
> Socket class>>#standardTimeout as timeout (45 seconds). If you don't want
> the default timeout, use #connectTo:port:waitForConnectionFor: or
> implement your own low level method which waits on semaphore until it's
> signaled. If you want to terminate the connection attempt, just signal the
> semaphore yourself, like here:
>
> s := Socket newTCP.
> s connectNonBlockingTo: #[127 0 0 1] port: 19327. "Random port which is not open."
> [ 500 milliSeconds asDelay wait. s semaphore signal ] fork. "This process will stop the connection attempt."
> s semaphore waitTimeoutMSecs: 1000.
> s statusString. "This will simply print the socket status. You can terminate the process here if the socket is connected, etc."
>
> And for ConnectionQueue, simply don't use it if you don't like it. It
> doesn't have to poll at all, AFAIK it's just implemented that way.
> Since Sockets use Semaphores which are signaled by the SocketPlugin, they
> don't block the image at all. But correct me if I'm wrong.
>
>
> Levente
>
>>
>> Bill
>>
>>
>>
>> ________________________________________
>> From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
>> Sent: Monday, September 20, 2010 7:01 PM
>> To: [hidden email]
>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>
>> On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:
>>
>>> Guillermo,
>>>
>>> One has to be careful with assuming that something affects only part of the image.  Much of Squeak's networking trouble comes from the fact that it was designed to block the image for a limited time when it should have been blocking only one Process *indefinitely*.  But, the remedy for working while blocking operations happen in the background is threading, and most of the image is deliberately not thread safe.
>>
>> When does a Socket block the image?
>>
>>
>> Levente
>>
>>>
>>> Bill
>>>
>>>
>>> ________________________________________
>>> From: [hidden email] [[hidden email]] On Behalf Of Guillermo Polito [[hidden email]]
>>> Sent: Sunday, September 19, 2010 10:56 PM
>>> To: [hidden email]
>>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>>
>>> +1 to Bill's.  If we can't have a feedback from the system while doing silent actions, we can think it just freezed :S.
>>>
>>> And it's something already dicussed, but I don't like actions that affect only a part of the system blocking my whole image.
>>>
>>> Guille
>>>
>>> On Sun, Sep 19, 2010 at 10:40 PM, Igor Stasenko <[hidden email]<mailto:[hidden email]>> wrote:
>>> On 20 September 2010 03:09, Schwab,Wilhelm K <[hidden email]<mailto:[hidden email]>> wrote:
>>>> Slow access can be a big problem.  Any such change should be made based on measurements so we know what benefit we get at what cost.
>>>>
>>> Yeah, it would be much easier to deal that line in Self or JavaScript,
>>> where you can add any properties to object
>>> on the fly, without need of adding a methods or declaring additional
>>> instance variable in class...
>>>
>>>>
>>>>
>>>>
>>>> ________________________________________
>>>> From: [hidden email]<mailto:[hidden email]> [[hidden email]<mailto:[hidden email]>] On Behalf Of Igor Stasenko [[hidden email]<mailto:[hidden email]>]
>>>> Sent: Sunday, September 19, 2010 7:56 PM
>>>> To: [hidden email]<mailto:[hidden email]>
>>>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>>>
>>>> On 19 September 2010 13:12, Stéphane Ducasse <[hidden email]<mailto:[hidden email]>> wrote:
>>>>> hi guys
>>>>>
>>>>> I tried to add borderStyle to BorderedMorph and the progressbar showing the progress blow up.
>>>>> So we should really have a way to specify silent ui action.
>>>>> Does anybody have an idea how I could do that?
>>>>>
>>>>>        [BorderedMorph addInstVarNamed: 'borderStyle'] silent would be cool.
>>>>>
>>>>
>>>> use morph propertyAt: #borderStyle
>>>> so you don't have to break your head with it :)
>>>>
>>>> BorderedMorph having an enormous number of subclasses, while some of
>>>> them even don't using any
>>>> kind of borders. That's makes me wonder if anything like color, border
>>>> style etc should belong to root classes
>>>> in hierarchy, like Morph or BorderedMorph. I think that dynamic set of
>>>> properties (which is currently sits in morphic
>>>> extensions are more appropriate storage for them). The only problem is
>>>> that accessing them is much slower than ivars.
>>>>
>>>>> Stef
>>>>> _______________________________________________
>>>>> Pharo-project mailing list
>>>>> [hidden email]<mailto:[hidden email]>
>>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Best regards,
>>>> Igor Stasenko AKA sig.
>>>>
>>>> _______________________________________________
>>>> Pharo-project mailing list
>>>> [hidden email]<mailto:[hidden email]>
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>
>>>> _______________________________________________
>>>> Pharo-project mailing list
>>>> [hidden email]<mailto:[hidden email]>
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>
>>>
>>>
>>>
>>> --
>>> Best regards,
>>> Igor Stasenko AKA sig.
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]<mailto:[hidden email]>
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: we need to find a way to declare that an action is UIless

Levente Uzonyi-2
On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:

> the one running the gui

In that case, you're wrong. The UI Process will be able to run, because
other processes using Sockets will wait on Semaphores and not because of
"time limits". So I just convinced myself (and hopefully you too) about
that using Socket instances will not hang the entire image, just the
Process that uses the Socket. Therefore the SocketPlugin is as good as
possible.


Levente

>
>
>
>
> ________________________________________
> From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
> Sent: Monday, September 20, 2010 10:14 PM
> To: [hidden email]
> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>
> On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:
>
>> Scratch around, and you will find that the time limits are there to allow calls to made on the main thread.
>
> Where? In the Socket class? And what's the "main thread"?
>
>
> Levente
>
>>
>>
>>
>> ________________________________________
>> From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
>> Sent: Monday, September 20, 2010 8:13 PM
>> To: [hidden email]
>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>
>> On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:
>>
>>> Levente,
>>>
>>> If they worked correctly, they would, at least under naive client conditions - a connection attempt should try until it is told (#terminate) to stop.  Severs that listen for a limited time are broken by design.  ConnectionQueue polls as a result - it's pretty bad.
>>
>> I guess you're using Socket>>#connectTo:port: which uses
>> Socket class>>#standardTimeout as timeout (45 seconds). If you don't want
>> the default timeout, use #connectTo:port:waitForConnectionFor: or
>> implement your own low level method which waits on semaphore until it's
>> signaled. If you want to terminate the connection attempt, just signal the
>> semaphore yourself, like here:
>>
>> s := Socket newTCP.
>> s connectNonBlockingTo: #[127 0 0 1] port: 19327. "Random port which is not open."
>> [ 500 milliSeconds asDelay wait. s semaphore signal ] fork. "This process will stop the connection attempt."
>> s semaphore waitTimeoutMSecs: 1000.
>> s statusString. "This will simply print the socket status. You can terminate the process here if the socket is connected, etc."
>>
>> And for ConnectionQueue, simply don't use it if you don't like it. It
>> doesn't have to poll at all, AFAIK it's just implemented that way.
>> Since Sockets use Semaphores which are signaled by the SocketPlugin, they
>> don't block the image at all. But correct me if I'm wrong.
>>
>>
>> Levente
>>
>>>
>>> Bill
>>>
>>>
>>>
>>> ________________________________________
>>> From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
>>> Sent: Monday, September 20, 2010 7:01 PM
>>> To: [hidden email]
>>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>>
>>> On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:
>>>
>>>> Guillermo,
>>>>
>>>> One has to be careful with assuming that something affects only part of the image.  Much of Squeak's networking trouble comes from the fact that it was designed to block the image for a limited time when it should have been blocking only one Process *indefinitely*.  But, the remedy for working while blocking operations happen in the background is threading, and most of the image is deliberately not thread safe.
>>>
>>> When does a Socket block the image?
>>>
>>>
>>> Levente
>>>
>>>>
>>>> Bill
>>>>
>>>>
>>>> ________________________________________
>>>> From: [hidden email] [[hidden email]] On Behalf Of Guillermo Polito [[hidden email]]
>>>> Sent: Sunday, September 19, 2010 10:56 PM
>>>> To: [hidden email]
>>>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>>>
>>>> +1 to Bill's.  If we can't have a feedback from the system while doing silent actions, we can think it just freezed :S.
>>>>
>>>> And it's something already dicussed, but I don't like actions that affect only a part of the system blocking my whole image.
>>>>
>>>> Guille
>>>>
>>>> On Sun, Sep 19, 2010 at 10:40 PM, Igor Stasenko <[hidden email]<mailto:[hidden email]>> wrote:
>>>> On 20 September 2010 03:09, Schwab,Wilhelm K <[hidden email]<mailto:[hidden email]>> wrote:
>>>>> Slow access can be a big problem.  Any such change should be made based on measurements so we know what benefit we get at what cost.
>>>>>
>>>> Yeah, it would be much easier to deal that line in Self or JavaScript,
>>>> where you can add any properties to object
>>>> on the fly, without need of adding a methods or declaring additional
>>>> instance variable in class...
>>>>
>>>>>
>>>>>
>>>>>
>>>>> ________________________________________
>>>>> From: [hidden email]<mailto:[hidden email]> [[hidden email]<mailto:[hidden email]>] On Behalf Of Igor Stasenko [[hidden email]<mailto:[hidden email]>]
>>>>> Sent: Sunday, September 19, 2010 7:56 PM
>>>>> To: [hidden email]<mailto:[hidden email]>
>>>>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>>>>
>>>>> On 19 September 2010 13:12, Stéphane Ducasse <[hidden email]<mailto:[hidden email]>> wrote:
>>>>>> hi guys
>>>>>>
>>>>>> I tried to add borderStyle to BorderedMorph and the progressbar showing the progress blow up.
>>>>>> So we should really have a way to specify silent ui action.
>>>>>> Does anybody have an idea how I could do that?
>>>>>>
>>>>>>        [BorderedMorph addInstVarNamed: 'borderStyle'] silent would be cool.
>>>>>>
>>>>>
>>>>> use morph propertyAt: #borderStyle
>>>>> so you don't have to break your head with it :)
>>>>>
>>>>> BorderedMorph having an enormous number of subclasses, while some of
>>>>> them even don't using any
>>>>> kind of borders. That's makes me wonder if anything like color, border
>>>>> style etc should belong to root classes
>>>>> in hierarchy, like Morph or BorderedMorph. I think that dynamic set of
>>>>> properties (which is currently sits in morphic
>>>>> extensions are more appropriate storage for them). The only problem is
>>>>> that accessing them is much slower than ivars.
>>>>>
>>>>>> Stef
>>>>>> _______________________________________________
>>>>>> Pharo-project mailing list
>>>>>> [hidden email]<mailto:[hidden email]>
>>>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Best regards,
>>>>> Igor Stasenko AKA sig.
>>>>>
>>>>> _______________________________________________
>>>>> Pharo-project mailing list
>>>>> [hidden email]<mailto:[hidden email]>
>>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>>
>>>>> _______________________________________________
>>>>> Pharo-project mailing list
>>>>> [hidden email]<mailto:[hidden email]>
>>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Best regards,
>>>> Igor Stasenko AKA sig.
>>>>
>>>> _______________________________________________
>>>> Pharo-project mailing list
>>>> [hidden email]<mailto:[hidden email]>
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>
>>>>
>>>> _______________________________________________
>>>> Pharo-project mailing list
>>>> [hidden email]
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: we need to find a way to declare that an action is UIless

Schwab,Wilhelm K
Levente,

Something has to block while a connection attempt is pending, and not just until some arbitrary time limit.  The client code is bad enough; the servers are horrible.

Bill


________________________________________
From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
Sent: Wednesday, September 22, 2010 9:55 PM
To: [hidden email]
Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless

On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:

> the one running the gui

In that case, you're wrong. The UI Process will be able to run, because
other processes using Sockets will wait on Semaphores and not because of
"time limits". So I just convinced myself (and hopefully you too) about
that using Socket instances will not hang the entire image, just the
Process that uses the Socket. Therefore the SocketPlugin is as good as
possible.


Levente

>
>
>
>
> ________________________________________
> From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
> Sent: Monday, September 20, 2010 10:14 PM
> To: [hidden email]
> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>
> On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:
>
>> Scratch around, and you will find that the time limits are there to allow calls to made on the main thread.
>
> Where? In the Socket class? And what's the "main thread"?
>
>
> Levente
>
>>
>>
>>
>> ________________________________________
>> From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
>> Sent: Monday, September 20, 2010 8:13 PM
>> To: [hidden email]
>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>
>> On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:
>>
>>> Levente,
>>>
>>> If they worked correctly, they would, at least under naive client conditions - a connection attempt should try until it is told (#terminate) to stop.  Severs that listen for a limited time are broken by design.  ConnectionQueue polls as a result - it's pretty bad.
>>
>> I guess you're using Socket>>#connectTo:port: which uses
>> Socket class>>#standardTimeout as timeout (45 seconds). If you don't want
>> the default timeout, use #connectTo:port:waitForConnectionFor: or
>> implement your own low level method which waits on semaphore until it's
>> signaled. If you want to terminate the connection attempt, just signal the
>> semaphore yourself, like here:
>>
>> s := Socket newTCP.
>> s connectNonBlockingTo: #[127 0 0 1] port: 19327. "Random port which is not open."
>> [ 500 milliSeconds asDelay wait. s semaphore signal ] fork. "This process will stop the connection attempt."
>> s semaphore waitTimeoutMSecs: 1000.
>> s statusString. "This will simply print the socket status. You can terminate the process here if the socket is connected, etc."
>>
>> And for ConnectionQueue, simply don't use it if you don't like it. It
>> doesn't have to poll at all, AFAIK it's just implemented that way.
>> Since Sockets use Semaphores which are signaled by the SocketPlugin, they
>> don't block the image at all. But correct me if I'm wrong.
>>
>>
>> Levente
>>
>>>
>>> Bill
>>>
>>>
>>>
>>> ________________________________________
>>> From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
>>> Sent: Monday, September 20, 2010 7:01 PM
>>> To: [hidden email]
>>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>>
>>> On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:
>>>
>>>> Guillermo,
>>>>
>>>> One has to be careful with assuming that something affects only part of the image.  Much of Squeak's networking trouble comes from the fact that it was designed to block the image for a limited time when it should have been blocking only one Process *indefinitely*.  But, the remedy for working while blocking operations happen in the background is threading, and most of the image is deliberately not thread safe.
>>>
>>> When does a Socket block the image?
>>>
>>>
>>> Levente
>>>
>>>>
>>>> Bill
>>>>
>>>>
>>>> ________________________________________
>>>> From: [hidden email] [[hidden email]] On Behalf Of Guillermo Polito [[hidden email]]
>>>> Sent: Sunday, September 19, 2010 10:56 PM
>>>> To: [hidden email]
>>>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>>>
>>>> +1 to Bill's.  If we can't have a feedback from the system while doing silent actions, we can think it just freezed :S.
>>>>
>>>> And it's something already dicussed, but I don't like actions that affect only a part of the system blocking my whole image.
>>>>
>>>> Guille
>>>>
>>>> On Sun, Sep 19, 2010 at 10:40 PM, Igor Stasenko <[hidden email]<mailto:[hidden email]>> wrote:
>>>> On 20 September 2010 03:09, Schwab,Wilhelm K <[hidden email]<mailto:[hidden email]>> wrote:
>>>>> Slow access can be a big problem.  Any such change should be made based on measurements so we know what benefit we get at what cost.
>>>>>
>>>> Yeah, it would be much easier to deal that line in Self or JavaScript,
>>>> where you can add any properties to object
>>>> on the fly, without need of adding a methods or declaring additional
>>>> instance variable in class...
>>>>
>>>>>
>>>>>
>>>>>
>>>>> ________________________________________
>>>>> From: [hidden email]<mailto:[hidden email]> [[hidden email]<mailto:[hidden email]>] On Behalf Of Igor Stasenko [[hidden email]<mailto:[hidden email]>]
>>>>> Sent: Sunday, September 19, 2010 7:56 PM
>>>>> To: [hidden email]<mailto:[hidden email]>
>>>>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>>>>
>>>>> On 19 September 2010 13:12, Stéphane Ducasse <[hidden email]<mailto:[hidden email]>> wrote:
>>>>>> hi guys
>>>>>>
>>>>>> I tried to add borderStyle to BorderedMorph and the progressbar showing the progress blow up.
>>>>>> So we should really have a way to specify silent ui action.
>>>>>> Does anybody have an idea how I could do that?
>>>>>>
>>>>>>        [BorderedMorph addInstVarNamed: 'borderStyle'] silent would be cool.
>>>>>>
>>>>>
>>>>> use morph propertyAt: #borderStyle
>>>>> so you don't have to break your head with it :)
>>>>>
>>>>> BorderedMorph having an enormous number of subclasses, while some of
>>>>> them even don't using any
>>>>> kind of borders. That's makes me wonder if anything like color, border
>>>>> style etc should belong to root classes
>>>>> in hierarchy, like Morph or BorderedMorph. I think that dynamic set of
>>>>> properties (which is currently sits in morphic
>>>>> extensions are more appropriate storage for them). The only problem is
>>>>> that accessing them is much slower than ivars.
>>>>>
>>>>>> Stef
>>>>>> _______________________________________________
>>>>>> Pharo-project mailing list
>>>>>> [hidden email]<mailto:[hidden email]>
>>>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Best regards,
>>>>> Igor Stasenko AKA sig.
>>>>>
>>>>> _______________________________________________
>>>>> Pharo-project mailing list
>>>>> [hidden email]<mailto:[hidden email]>
>>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>>
>>>>> _______________________________________________
>>>>> Pharo-project mailing list
>>>>> [hidden email]<mailto:[hidden email]>
>>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Best regards,
>>>> Igor Stasenko AKA sig.
>>>>
>>>> _______________________________________________
>>>> Pharo-project mailing list
>>>> [hidden email]<mailto:[hidden email]>
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>
>>>>
>>>> _______________________________________________
>>>> Pharo-project mailing list
>>>> [hidden email]
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: we need to find a way to declare that an action is UIless

Levente Uzonyi-2
On Wed, 22 Sep 2010, Schwab,Wilhelm K wrote:

> Levente,
>
> Something has to block while a connection attempt is pending, and not just until some arbitrary time limit.  The client code is bad enough; the servers are horrible.

If the UI Process is using the Socket and it's using a blocking connection
method, then - no surprise - it will be blocked. This won't affect other
processes.

If you were right, the following would block the UI Process for 100
seconds, but it doesn't block it at all, just try it:

Transcript open.
[ 10 timesRepeat: [
  | s |
  [
  s := Socket new.
  s connectNonBlockingTo: #[172 16 0 1] port: 12345.
  s
  waitForConnectionFor: 10
  ifTimedOut: [ Transcript show: 'Couldn''t connect.'; cr ].
  s isConnected ifTrue: [
  Transcript show: 'Connected.'; cr. ].
  s close ] ensure: [
  s ifNotNil: [ s destroy ] ] ] ] fork.


What do you mean by "servers"? ConnectionQueue?


Levente

>
> Bill
>
>
> ________________________________________
> From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
> Sent: Wednesday, September 22, 2010 9:55 PM
> To: [hidden email]
> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>
> On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:
>
>> the one running the gui
>
> In that case, you're wrong. The UI Process will be able to run, because
> other processes using Sockets will wait on Semaphores and not because of
> "time limits". So I just convinced myself (and hopefully you too) about
> that using Socket instances will not hang the entire image, just the
> Process that uses the Socket. Therefore the SocketPlugin is as good as
> possible.
>
>
> Levente
>
>>
>>
>>
>>
>> ________________________________________
>> From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
>> Sent: Monday, September 20, 2010 10:14 PM
>> To: [hidden email]
>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>
>> On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:
>>
>>> Scratch around, and you will find that the time limits are there to allow calls to made on the main thread.
>>
>> Where? In the Socket class? And what's the "main thread"?
>>
>>
>> Levente
>>
>>>
>>>
>>>
>>> ________________________________________
>>> From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
>>> Sent: Monday, September 20, 2010 8:13 PM
>>> To: [hidden email]
>>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>>
>>> On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:
>>>
>>>> Levente,
>>>>
>>>> If they worked correctly, they would, at least under naive client conditions - a connection attempt should try until it is told (#terminate) to stop.  Severs that listen for a limited time are broken by design.  ConnectionQueue polls as a result - it's pretty bad.
>>>
>>> I guess you're using Socket>>#connectTo:port: which uses
>>> Socket class>>#standardTimeout as timeout (45 seconds). If you don't want
>>> the default timeout, use #connectTo:port:waitForConnectionFor: or
>>> implement your own low level method which waits on semaphore until it's
>>> signaled. If you want to terminate the connection attempt, just signal the
>>> semaphore yourself, like here:
>>>
>>> s := Socket newTCP.
>>> s connectNonBlockingTo: #[127 0 0 1] port: 19327. "Random port which is not open."
>>> [ 500 milliSeconds asDelay wait. s semaphore signal ] fork. "This process will stop the connection attempt."
>>> s semaphore waitTimeoutMSecs: 1000.
>>> s statusString. "This will simply print the socket status. You can terminate the process here if the socket is connected, etc."
>>>
>>> And for ConnectionQueue, simply don't use it if you don't like it. It
>>> doesn't have to poll at all, AFAIK it's just implemented that way.
>>> Since Sockets use Semaphores which are signaled by the SocketPlugin, they
>>> don't block the image at all. But correct me if I'm wrong.
>>>
>>>
>>> Levente
>>>
>>>>
>>>> Bill
>>>>
>>>>
>>>>
>>>> ________________________________________
>>>> From: [hidden email] [[hidden email]] On Behalf Of Levente Uzonyi [[hidden email]]
>>>> Sent: Monday, September 20, 2010 7:01 PM
>>>> To: [hidden email]
>>>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>>>
>>>> On Mon, 20 Sep 2010, Schwab,Wilhelm K wrote:
>>>>
>>>>> Guillermo,
>>>>>
>>>>> One has to be careful with assuming that something affects only part of the image.  Much of Squeak's networking trouble comes from the fact that it was designed to block the image for a limited time when it should have been blocking only one Process *indefinitely*.  But, the remedy for working while blocking operations happen in the background is threading, and most of the image is deliberately not thread safe.
>>>>
>>>> When does a Socket block the image?
>>>>
>>>>
>>>> Levente
>>>>
>>>>>
>>>>> Bill
>>>>>
>>>>>
>>>>> ________________________________________
>>>>> From: [hidden email] [[hidden email]] On Behalf Of Guillermo Polito [[hidden email]]
>>>>> Sent: Sunday, September 19, 2010 10:56 PM
>>>>> To: [hidden email]
>>>>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>>>>
>>>>> +1 to Bill's.  If we can't have a feedback from the system while doing silent actions, we can think it just freezed :S.
>>>>>
>>>>> And it's something already dicussed, but I don't like actions that affect only a part of the system blocking my whole image.
>>>>>
>>>>> Guille
>>>>>
>>>>> On Sun, Sep 19, 2010 at 10:40 PM, Igor Stasenko <[hidden email]<mailto:[hidden email]>> wrote:
>>>>> On 20 September 2010 03:09, Schwab,Wilhelm K <[hidden email]<mailto:[hidden email]>> wrote:
>>>>>> Slow access can be a big problem.  Any such change should be made based on measurements so we know what benefit we get at what cost.
>>>>>>
>>>>> Yeah, it would be much easier to deal that line in Self or JavaScript,
>>>>> where you can add any properties to object
>>>>> on the fly, without need of adding a methods or declaring additional
>>>>> instance variable in class...
>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> ________________________________________
>>>>>> From: [hidden email]<mailto:[hidden email]> [[hidden email]<mailto:[hidden email]>] On Behalf Of Igor Stasenko [[hidden email]<mailto:[hidden email]>]
>>>>>> Sent: Sunday, September 19, 2010 7:56 PM
>>>>>> To: [hidden email]<mailto:[hidden email]>
>>>>>> Subject: Re: [Pharo-project] we need to find a way to declare that an action is UIless
>>>>>>
>>>>>> On 19 September 2010 13:12, Stéphane Ducasse <[hidden email]<mailto:[hidden email]>> wrote:
>>>>>>> hi guys
>>>>>>>
>>>>>>> I tried to add borderStyle to BorderedMorph and the progressbar showing the progress blow up.
>>>>>>> So we should really have a way to specify silent ui action.
>>>>>>> Does anybody have an idea how I could do that?
>>>>>>>
>>>>>>>        [BorderedMorph addInstVarNamed: 'borderStyle'] silent would be cool.
>>>>>>>
>>>>>>
>>>>>> use morph propertyAt: #borderStyle
>>>>>> so you don't have to break your head with it :)
>>>>>>
>>>>>> BorderedMorph having an enormous number of subclasses, while some of
>>>>>> them even don't using any
>>>>>> kind of borders. That's makes me wonder if anything like color, border
>>>>>> style etc should belong to root classes
>>>>>> in hierarchy, like Morph or BorderedMorph. I think that dynamic set of
>>>>>> properties (which is currently sits in morphic
>>>>>> extensions are more appropriate storage for them). The only problem is
>>>>>> that accessing them is much slower than ivars.
>>>>>>
>>>>>>> Stef
>>>>>>> _______________________________________________
>>>>>>> Pharo-project mailing list
>>>>>>> [hidden email]<mailto:[hidden email]>
>>>>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Best regards,
>>>>>> Igor Stasenko AKA sig.
>>>>>>
>>>>>> _______________________________________________
>>>>>> Pharo-project mailing list
>>>>>> [hidden email]<mailto:[hidden email]>
>>>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>>>
>>>>>> _______________________________________________
>>>>>> Pharo-project mailing list
>>>>>> [hidden email]<mailto:[hidden email]>
>>>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Best regards,
>>>>> Igor Stasenko AKA sig.
>>>>>
>>>>> _______________________________________________
>>>>> Pharo-project mailing list
>>>>> [hidden email]<mailto:[hidden email]>
>>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Pharo-project mailing list
>>>>> [hidden email]
>>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>>
>>>>
>>>> _______________________________________________
>>>> Pharo-project mailing list
>>>> [hidden email]
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [hidden email]
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
12