Re: [Pharo-users] Changes file size

2015-02-10 Thread Sven Van Caekenberghe
Esteban,

You might be on something important there.

I always found it strange what effect loading Glorp had on an image, blowing it 
up.

I can't say I understand though, best make it into an issue.

Sven

> On 10 Feb 2015, at 00:22, Esteban A. Maringolo  wrote:
> 
> Just when I found a way to reduce the total size of the changes file, I
> noticed the latest versions in the repository doesn't have this issue,
> what a good way of wasting one's time learning about the guts of
> Monticello :)
> 
> But just for the record:
> The problem happened after installing into GlorpSession a
> MCMethodDefinition (#dropTables:), I logged every single method
> installation, and the point where things went bananas was after
> installing that culprit method:
> 
> After a MCMethodDefinition(dropTables): 1201686 bytes (~1.2Mb)
> After a MCMethodDefinition(dropTables:): 135419895 bytes (~135Mb)
> 
> I did a fileOut, deleted the method, and then file it in again, and
> after versioning (and reloading) the changes increased ~1Mb after
> installing Glorp.
> 
> I didn't find anything particularly suspicious about it, not in the
> source code nor in the bytecodes.
> 
> Now after running PharoChangesCondenser condense the changes file
> effectively shrinks.
> 
> Regards!
> 
> 
> Esteban A. Maringolo
> 
> 
> 2014-10-28 12:31 GMT-03:00 Sven Van Caekenberghe :
>> 
>>> On 28 Oct 2014, at 14:58, Esteban A. Maringolo  wrote:
>>> 
>>> 2014-10-28 5:41 GMT-03:00 Sven Van Caekenberghe :
 Esteban,
 
 The Reddit example's CI Job 
 (https://ci.inria.fr/pharo-contribution/job/Reddit/) also loads Seaside 
 and Glorp (two big packages) in Pharo 3 and it too results in a 110 Mb 
 image and 142 Mb changes file. After condensing, that goes to 276 Mb !
>>> 
 I would say something is wrong here ;-)
>>> 
>>> Either something is wrong, or we feature it and rename
>>> PharoChangesCondenser>>#condense to PharoChangesExpander>>#expand :)
>>> 
 Note that condensing changes on newly loaded code should not make much 
 difference (in essence, all multiple versions of methods are reduced to 1).
>>> 
 I think we should create some issues out of this.
>>> 
>>> This is true, however I find a changes of 140 megs to be MASSIVE.
>> 
>> I totally agree, this is unacceptable. However, I did some tests, and the 
>> problem is with Glorp (or any of its sub packages). I tried building both my 
>> Reddit and HP35 examples from scratch in Pharo 3 on Linux.
>> 
>> $ ./pharo reddit.image config 
>> http://smalltalkhub.com/mc/SvenVanCaekenberghe/Reddit/main 
>> ConfigurationOfReddit --install=stable
>> 
>> $ ./pharo hp35.image config 
>> http://smalltalkhub.com/mc/SvenVanCaekenberghe/HP35/main ConfigurationOfHP35 
>> --install=stable --group=Web-UI
>> 
>> Both load Seaside and some other stuff, but only Reddit loads Glorp and 
>> PostgresV2.
>> 
>> I did a condense changes on the HP35 image, the one on the Reddit image ran 
>> out of physical memory (granted is was a small machine) !
>> 
>> Here are the resulting sizes:
>> 
>> $ ls -lah
>> total 337M
>> drwxr-xr-x  4 root root 4.0K Oct 28 15:09 .
>> drwx-- 12 root root 4.0K Oct 28 12:28 ..
>> -rw-r--r--  1 root root 5.8M Oct 28 13:17 hp35.changes
>> -rw-r--r--  1 root root 5.6M Oct 28 14:38 hp35-condense-test.changes
>> -rw-r--r--  1 root root 5.8M Oct 28 14:27 hp35-condense-test.changes.bak
>> -rw-r--r--  1 root root  29M Oct 28 14:38 hp35-condense-test.image
>> -rw-r--r--  1 root root  29M Oct 28 13:17 hp35.image
>> drwxr-xr-x  2 root root 4.0K Oct 28 13:12 package-cache
>> -rwxr-xr-x  1 root root  367 Oct 28 12:29 pharo
>> -rw-rw-r--  1 root root 265K Oct 24 14:42 Pharo.changes
>> -rw-rw-r--  1 root root  21M Oct 24 14:42 Pharo.image
>> -rwxr-xr-x  1 root root  354 Oct 28 12:29 pharo-ui
>> drwxr-xr-x  3 root root 4.0K Oct 28 12:29 pharo-vm
>> -rw-r--r--  1 root root 136M Oct 28 12:48 reddit.changes
>> -rw-r--r--  1 root root 105M Oct 28 12:48 reddit.image
>> 
>> Note how the HP35 image and changes sizes are totally acceptable/normal, 
>> while the Reddit one explodes, with the difference being Glorp.
>> 
>> But I have no idea what causes this.
>> 
>> There is no way Glorp can generate 100 Mb changes, when Seaside is OK with 6 
>> Mb.
>> 
>>> I remember loading ~4000 classes in the order of 10^6 LOC in Dolphin, and
>>> changes never got half that size. Sizes were ~28/55MB image/changes.
>>> The same in VAST, any image beyond the 20MB was an alert of something
>>> being leaked.
>>> 
 Hmm, we need more tests and data points, I will try on Linux command line 
 later on.
>>> 
>>> I ran in it in Linux (Ubuntu) through the command line.
>>> 
>>> 
>>> Regards!
>>> 
>> 
>> 
> 




[Pharo-users] Changes file size

2015-02-10 Thread Torsten Bergmann
>I always found it strange what effect loading Glorp had on an image, blowing 
>it up.

Looks like it is really an effect of the Glorp code. Maybe because it was 
initially
exported from VW and then imported into Squeak/Pharo. I always thought slow 
loading
is because of this or the long license texts in the classes.

At least I had similar issues when I loaded the "Glorp-EstebanMaringolo.92" 
from October 2014.
I was not able to browse diffs, etc. when I wanted to clean up.

Then I commited "Glorp-TorstenBergmann.93" without real changes and things 
started 
to stabilize. At least I was able to browse the diffs afterwards and could 
refactor
a little bit with Glorp-TorstenBergmann.94.

Bye
T.



[Pharo-users] Nautilus groups

2015-02-10 Thread Christophe Demarey
Hello,

We would like to know if some of you use Nautilus groups functionality:
dynamic groups: 'Last modified packages', 'Most viewed classes', 'Work'
user defined groups : from the menu, you can flatten the content of many 
packages and get all classes into the newly created group.
We have the feeling that it is not used (or not a lot) and we think to replace 
it with another mechanism (for example, let the user define his/her 'favorites' 
classes / packages).

Thanks for the feedback.



[Pharo-users] PhD offer with Pharo about Interaction design

2015-02-10 Thread stepharo


http://www.inria.fr/en/institute/recruitment/offers/phd/campaign-2015/%28view%29/details.html?id=PNGFK026203F3VBQB6G68LOE1&LOV5=4509&LG=EN&Resultsperpage=20&nPostingID=9157&nPostingTargetID=15138&option=52&sort=DESC&nDepartmentID=28




Re: [Pharo-users] PhD offer with Pharo about Interaction design

2015-02-10 Thread Camille
Great!

> On 10 Feb 2015, at 14:29, stepharo  wrote:
> 
> 
> http://www.inria.fr/en/institute/recruitment/offers/phd/campaign-2015/%28view%29/details.html?id=PNGFK026203F3VBQB6G68LOE1&LOV5=4509&LG=EN&Resultsperpage=20&nPostingID=9157&nPostingTargetID=15138&option=52&sort=DESC&nDepartmentID=28
> 
> 




Re: [Pharo-users] Nautilus groups

2015-02-10 Thread Luc Fabresse
Hi Christophe,



2015-02-10 14:28 GMT+01:00 Christophe Demarey :

> Hello,
>
> We would like to know if some of you use Nautilus groups functionality:
>
>- dynamic groups: 'Last modified packages', 'Most viewed classes',
>'Work'
>
> I do not use dynamic groups.


>
>- user defined groups : from the menu, you can flatten the content of
>many packages and get all classes into the newly created group.
>
> I do not like to flatten


> We have the feeling that it is not used (or not a lot) and we think to
> replace it with another mechanism (for example, let the user define his/her
> 'favorites' classes / packages).
>

+1

I would prefer to be able to save a regular expression (the one I enter in
the text area above Package list)


Cheers,

#Luc



>
> Thanks for the feedback.
>
>


Re: [Pharo-users] Agile visualization book as an interactive grafoscopio document

2015-02-10 Thread Nicolai Hess
Hi Offray,

2015-02-09 22:14 GMT+01:00 Offray Vladimir Luna Cárdenas 
:

> Hi all,
> 
> So, wiring by "sendToOutside: from:" is not working and I don't know how
> to tell my code browser to autosave its contents as part of the node body
> where they belong.
>
> Any help with this is appreciated.
>
> Cheers,
>
> Offray
>
>
here is a small example,

http://ws.stfx.eu/JBIBBXA0EF3A

it uses a memory file system for storing its structure and data.
on the left pane, you can select folder and files. And a file will open
a code pane on the right side. On this code pane you can edit the
text and accept the changes with alt+s (or the icon on the upper right
corner).
The changed text is saved in the memory file.
I use the memory file system just as an example, because I don't have
another
data structure. But this should work with your GrafoscopioNode too.

Does it help?


Nicolai


Re: [Pharo-users] Nautilus groups

2015-02-10 Thread Ben Coman
I've never used the groups - mainly because I've never seen a sample
workflow that I could copy, and my existing workflow is "sufficient" (which
means I get a mess of windows plastered all over the screen as I follow
sender&implementors, and could probably do better).

btw, I've just spent 60 seconds trying to work out how to add an item to a
group and could not.  I don't even know what it groups - packages, classes,
methods???  So I guess I ignored it, and once ignored, its a bit like that
broken step in you building you always walk around without noticing.

So discoverability of how to use it could be better, like something in the
tooltip that "links" a more extensive tutorial on it, either in or out of
image.

cheers -ben



On Tue, Feb 10, 2015 at 9:51 PM, Luc Fabresse 
wrote:

> Hi Christophe,
>
>
>
> 2015-02-10 14:28 GMT+01:00 Christophe Demarey  >:
>
>> Hello,
>>
>> We would like to know if some of you use Nautilus groups functionality:
>>
>>- dynamic groups: 'Last modified packages', 'Most viewed classes',
>>'Work'
>>
>> I do not use dynamic groups.
>
>
>>
>>- user defined groups : from the menu, you can flatten the content of
>>many packages and get all classes into the newly created group.
>>
>> I do not like to flatten
>
>
>> We have the feeling that it is not used (or not a lot) and we think to
>> replace it with another mechanism (for example, let the user define his/her
>> 'favorites' classes / packages).
>>
>
> +1
>
> I would prefer to be able to save a regular expression (the one I enter in
> the text area above Package list)
>
>
> Cheers,
>
> #Luc
>
>
>
>>
>> Thanks for the feedback.
>>
>>
>


Re: [Pharo-users] PhD offer with Pharo about Interaction design

2015-02-10 Thread Ben Coman
This was interesting to know...   The researchers at Inria published over
4,500 articles in 2013. They are behind over 300 active patents and 120
start-ups.

cheers -ben

On Tue, Feb 10, 2015 at 9:37 PM, Camille  wrote:

> Great!
>
> > On 10 Feb 2015, at 14:29, stepharo  wrote:
> >
> >
> >
> http://www.inria.fr/en/institute/recruitment/offers/phd/campaign-2015/%28view%29/details.html?id=PNGFK026203F3VBQB6G68LOE1&LOV5=4509&LG=EN&Resultsperpage=20&nPostingID=9157&nPostingTargetID=15138&option=52&sort=DESC&nDepartmentID=28
> >
> >
>
>
>


Re: [Pharo-users] PhD offer with Pharo about Interaction design

2015-02-10 Thread Marcus Denker

> On 10 Feb 2015, at 15:46, Ben Coman  wrote:
> 
> This was interesting to know...   The researchers at Inria published over 
> 4,500 articles in 2013. They are behind over 300 active patents and 120 
> start-ups.
> 
It is a big research institute: 8 research centers, 172 Teams, 4471 members of 
staff.

Marcus





[Pharo-users] recover lost changes

2015-02-10 Thread Hartmut

To whom can answer me

Working with Pharo 3.0 I noticed for a while that I could not recover 
class definitions (do it's) from the "Recent Changes".

I also lost class comments on file-out / file-in .

For the second problem I made the following test:
1. take a fresh Pharo 3.0 image (bundle for Mac OSX from Aug 29, 2014)
2. create MyClass with a class method and a comment.
3. file-out MyClass
4. remove MyClass
on remove of MyClass I get an exception: 
https://www.dropbox.com/s/unq89t84tq7r60b/removeClass.tiff?dl=0

5. file-in MyClass
The class is there - no error

But: With the same exception in other images the comment is missing 
after file-in.


Is this known?
What does the exception mean?

--
Hartmut Krasemann

Königsberger Str. 41 c

D 22869 Schenefeld

Tel. 040.8307097

Mobil 0171.6451283

krasem...@acm.org




smime.p7s
Description: S/MIME Cryptographic Signature


Re: [Pharo-users] Nautilus groups

2015-02-10 Thread Martin Bähr
Excerpts from Christophe Demarey's message of 2015-02-10 14:28:19 +0100:
> We would like to know if some of you use Nautilus groups functionality:
> dynamic groups: 'Last modified packages', 'Most viewed classes', 'Work'

do you mean 'last modified classes'?

i use them. i find them much easier to use than having to type some regular
expression to get the list i want.

i wish they would work better though. for example, when i install new packages,
i do not want them to show up in the 'last modified classes'

maybe they can be placed in a separate group: 'last installed classes'

also, when i create a new class, it does not show up until i add a method.
which sometimes means i go have to search for the class by typing its name.

i don't know what 'work' does, i never got anything when selecting that.

> user defined groups : from the menu, you can flatten the content of many 
> packages and get all classes into the newly created group.

i have not discovered this yet.

> We have the feeling that it is not used (or not a lot) and we think to 
> replace it with another mechanism (for example, let the user define his/her 
> 'favorites' classes / packages).

how is that different from user defined groups?

what i find important and useful about 'last modified classes' is that, as i
work on many things, not only pharo, when i do get back to pharo, i can go: ok,
where was i? then i click on 'last modified classes' and remember.

without that i have to find some other way to remember before i can then type
what i need to find the right classes.

it may not be much, but having an easy way to see what i have been working on
just feels more comfortable.

greetings, martin.

-- 
eKita   -   the online platform for your entire academic life
-- 
chief engineer   eKita.co
pike programmer  pike.lysator.liu.secaudium.net societyserver.org
secretary  beijinglug.org
mentor   fossasia.org
foresight developer  foresightlinux.orgrealss.com
unix sysadmin
Martin Bähr  working in chinahttp://societyserver.org/mbaehr/



Re: [Pharo-users] recover lost changes

2015-02-10 Thread Martin Bähr
Excerpts from Hartmut's message of 2015-02-10 15:58:13 +0100:
> Working with Pharo 3.0 I noticed for a while that I could not recover 
> class definitions (do it's) from the "Recent Changes".

i noticed this too.
methods worked fine, but i couldn't recover methods to new classes until i
recreated the class manually.

greetings, martin.

-- 
eKita   -   the online platform for your entire academic life
-- 
chief engineer   eKita.co
pike programmer  pike.lysator.liu.secaudium.net societyserver.org
secretary  beijinglug.org
mentor   fossasia.org
foresight developer  foresightlinux.orgrealss.com
unix sysadmin
Martin Bähr  working in chinahttp://societyserver.org/mbaehr/



Re: [Pharo-users] Nautilus groups

2015-02-10 Thread Christophe Demarey

Le 10 févr. 2015 à 16:39, Martin Bähr a écrit :

> Excerpts from Christophe Demarey's message of 2015-02-10 14:28:19 +0100:
>> We would like to know if some of you use Nautilus groups functionality:
>> dynamic groups: 'Last modified packages', 'Most viewed classes', 'Work'
> 
> do you mean 'last modified classes'?

yes, sorry

>> We have the feeling that it is not used (or not a lot) and we think to 
>> replace it with another mechanism (for example, let the user define his/her 
>> 'favorites' classes / packages).
> 
> how is that different from user defined groups?

Well, it is not yet clear but at least, do not flatten all classes and keep 
packages.


[Pharo-users] Externally signalling pharo VM for shutdown

2015-02-10 Thread Esteban A. Maringolo
Is there a way I can externally signal a running pharo-vm in order to
request a shutdown equivalent to clicking on the close icon?

I'd like to externally manage the start/stop of a Pharo image, but
because the image can be used during development, I'd like to provide
the user with a confirmation dialog instead of simply killing the
process.

Regards!


Esteban A. Maringolo



Re: [Pharo-users] Externally signalling pharo VM for shutdown

2015-02-10 Thread Paul DeBruicker
Depends on how you want the user to access the image.  Using Seaside you
could do something like whats described here:

http://book.seaside.st/book/advanced/deployment/maintaining/requesthandler



Esteban A. Maringolo wrote
> Is there a way I can externally signal a running pharo-vm in order to
> request a shutdown equivalent to clicking on the close icon?
> 
> I'd like to externally manage the start/stop of a Pharo image, but
> because the image can be used during development, I'd like to provide
> the user with a confirmation dialog instead of simply killing the
> process.
> 
> Regards!
> 
> 
> Esteban A. Maringolo





--
View this message in context: 
http://forum.world.st/Externally-signalling-pharo-VM-for-shutdown-tp4804999p4805003.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.



Re: [Pharo-users] Externally signalling pharo VM for shutdown

2015-02-10 Thread Sebastian Sastre
You can do it with 

kill -15 PID

And, this (requires OSProcess):

makeStopHook
"Answers the process that hooks to the 
OS signal that makes this worker to shutdown
when the VM process receives a TERM signal from
the OS."

^ [|semaphore|
semaphore := OSProcess accessor forwardSigTerm.
semaphore wait.
self onTerminationSignal] 
forkAt: Processor systemBackgroundPriority 
named: 'Image TERM’



onTerminationSignal
"The process for the VM of this image 
has received a TERM signal from the OS.
React accordingly"

self log: 'That''s all folks. This worker is shutting down. Bye bye...' 
level:#messages.
OSProcess accessor restoreSigTerm.
SmalltalkImage current snapshot: false andQuit: true.






> On Feb 10, 2015, at 4:58 PM, Esteban A. Maringolo  
> wrote:
> 
> Is there a way I can externally signal a running pharo-vm in order to
> request a shutdown equivalent to clicking on the close icon?
> 
> I'd like to externally manage the start/stop of a Pharo image, but
> because the image can be used during development, I'd like to provide
> the user with a confirmation dialog instead of simply killing the
> process.
> 
> Regards!
> 
> 
> Esteban A. Maringolo
> 




[Pharo-users] Spotter: Browse Impementors?

2015-02-10 Thread Sean P. DeNigris
Maybe I'm missing something obvious, but if I zero in on a message name in
spotter, can I open a browser on all implementors, or only browse one
specific method?



-
Cheers,
Sean
--
View this message in context: 
http://forum.world.st/Spotter-Browse-Impementors-tp4805013.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.



Re: [Pharo-users] Nautilus groups

2015-02-10 Thread stepharo

having a simpler way to express
here is my project would be good.
For now the way to add a group is too complex.

I would like to click on package and add it to a favorite list that is 
on the top


I would love to get a group containing the class that were loaded (or 
not in the system).
because often I load a configuration and I have no clue what have been 
loaded.


Stef

Hello,

We would like to know if some of you use Nautilus groups functionality:

  * dynamic groups: 'Last modified packages', 'Most viewed classes',
'Work'
  * user defined groups : from the menu, you can flatten the content
of many packages and get all classes into the newly created group.

We have the feeling that it is not used (or not a lot) and we think to 
replace it with another mechanism (for example, let the user define 
his/her 'favorites' classes / packages).


Thanks for the feedback.





Re: [Pharo-users] recover lost changes

2015-02-10 Thread stepharo

Yes this should be fixed.

Le 10/2/15 16:42, Martin Bähr a écrit :

Excerpts from Hartmut's message of 2015-02-10 15:58:13 +0100:

Working with Pharo 3.0 I noticed for a while that I could not recover
class definitions (do it's) from the "Recent Changes".

i noticed this too.
methods worked fine, but i couldn't recover methods to new classes until i
recreated the class manually.

greetings, martin.






Re: [Pharo-users] Spotter: Browse Impementors?

2015-02-10 Thread Juraj Kubelka
You can dive-in using cmd+shift+right-arrow in Spotter and follow observation 
of those implementors. Preview is available by cmd+p.
So basically you open in a browser only one specific method. 

Do you need to open it in Implementors/Senders Browser? If yes, can you 
describe your use case, please? Thanks.

Cheers,
Juraj


> 10. 2. 2015 v 16:40, Sean P. DeNigris :
> 
> Maybe I'm missing something obvious, but if I zero in on a message name in
> spotter, can I open a browser on all implementors, or only browse one
> specific method?
> 
> 
> 
> -
> Cheers,
> Sean
> --
> View this message in context: 
> http://forum.world.st/Spotter-Browse-Impementors-tp4805013.html
> Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
> 




Re: [Pharo-users] Externally signalling pharo VM for shutdown

2015-02-10 Thread Esteban A. Maringolo
Great. This is cool.

Why this can't be part of the stock vm/image?

Regards!
Esteban A. Maringolo


2015-02-10 16:28 GMT-03:00 Sebastian Sastre :
> You can do it with
>
> kill -15 PID
>
> And, this (requires OSProcess):
>
> makeStopHook
> "Answers the process that hooks to the
> OS signal that makes this worker to shutdown
> when the VM process receives a TERM signal from
> the OS."
>
> ^ [|semaphore|
> semaphore := OSProcess accessor forwardSigTerm.
> semaphore wait.
> self onTerminationSignal]
> forkAt: Processor systemBackgroundPriority
> named: 'Image TERM’
>
>
>
> onTerminationSignal
> "The process for the VM of this image
> has received a TERM signal from the OS.
> React accordingly"
>
> self log: 'That''s all folks. This worker is shutting down. Bye 
> bye...' level:#messages.
> OSProcess accessor restoreSigTerm.
> SmalltalkImage current snapshot: false andQuit: true.
>
>
>
>
>
>
>> On Feb 10, 2015, at 4:58 PM, Esteban A. Maringolo  
>> wrote:
>>
>> Is there a way I can externally signal a running pharo-vm in order to
>> request a shutdown equivalent to clicking on the close icon?
>>
>> I'd like to externally manage the start/stop of a Pharo image, but
>> because the image can be used during development, I'd like to provide
>> the user with a confirmation dialog instead of simply killing the
>> process.
>>
>> Regards!
>>
>>
>> Esteban A. Maringolo
>>
>
>



Re: [Pharo-users] recover lost changes

2015-02-10 Thread Norbert Hartl

> Am 10.02.2015 um 20:59 schrieb stepharo :
> 
> Yes this should be fixed.
> 
You mean fix the current implementation or swap it for epicea?

Norbert

> Le 10/2/15 16:42, Martin Bähr a écrit :
>> Excerpts from Hartmut's message of 2015-02-10 15:58:13 +0100:
>>> Working with Pharo 3.0 I noticed for a while that I could not recover
>>> class definitions (do it's) from the "Recent Changes".
>> i noticed this too.
>> methods worked fine, but i couldn't recover methods to new classes until i
>> recreated the class manually.
>> 
>> greetings, martin.
>> 
> 
> 




Re: [Pharo-users] Spotter: Browse Impementors?

2015-02-10 Thread Sean P. DeNigris
Juraj Kubelka wrote
> Do you need to open it in Implementors/Senders Browser?

Yes. I was fixing mouse wheel user code to handle horizontal wheel events.
The Morphic hook is #mouseWheel:, so I wanted a browser on all implementors
of #mouseWheel: so that I could view each one and update it if necessary.



-
Cheers,
Sean
--
View this message in context: 
http://forum.world.st/Spotter-Browse-Impementors-tp4805013p4805028.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.



Re: [Pharo-users] Externally signalling pharo VM for shutdown

2015-02-10 Thread Norbert Hartl

> Am 10.02.2015 um 21:25 schrieb Esteban A. Maringolo :
> 
> Great. This is cool.
> 
> Why this can't be part of the stock vm/image?
> 
Because it needs OSProcess ;)

A zinc server is always present in the image. Sven made a 
ZnReadEvalPrintDelegate that you can easily hook in to execute a smalltalk 
snippet (if your host is secured). 
The good thing about Sebastians approach is that whenever the OS is shut down 
it is called with SIGTERM from the OS. So should fit nicely with orchestration 
of the machine.

Norbert

> Regards!
> Esteban A. Maringolo
> 
> 
> 2015-02-10 16:28 GMT-03:00 Sebastian Sastre :
>> You can do it with
>> 
>> kill -15 PID
>> 
>> And, this (requires OSProcess):
>> 
>> makeStopHook
>>"Answers the process that hooks to the
>>OS signal that makes this worker to shutdown
>>when the VM process receives a TERM signal from
>>the OS."
>> 
>>^ [|semaphore|
>>semaphore := OSProcess accessor forwardSigTerm.
>>semaphore wait.
>>self onTerminationSignal]
>>forkAt: Processor systemBackgroundPriority
>>named: 'Image TERM’
>> 
>> 
>> 
>> onTerminationSignal
>>"The process for the VM of this image
>>has received a TERM signal from the OS.
>>React accordingly"
>> 
>>self log: 'That''s all folks. This worker is shutting down. Bye 
>> bye...' level:#messages.
>>OSProcess accessor restoreSigTerm.
>>SmalltalkImage current snapshot: false andQuit: true.
>> 
>> 
>> 
>> 
>> 
>> 
>>> On Feb 10, 2015, at 4:58 PM, Esteban A. Maringolo  
>>> wrote:
>>> 
>>> Is there a way I can externally signal a running pharo-vm in order to
>>> request a shutdown equivalent to clicking on the close icon?
>>> 
>>> I'd like to externally manage the start/stop of a Pharo image, but
>>> because the image can be used during development, I'd like to provide
>>> the user with a confirmation dialog instead of simply killing the
>>> process.
>>> 
>>> Regards!
>>> 
>>> 
>>> Esteban A. Maringolo
>>> 
>> 
>> 
> 




Re: [Pharo-users] Spotter: Browse Impementors?

2015-02-10 Thread Tudor Girba
Hi,

As Juraj said, you can Cmd+Shift+ArrowRight to dive in the category and
using the preview you can browse the code. If you want the MessageBrowser,
there is no way to get it by default.

Laura also asked for this feature before, so I listed below a crude code to
add a processor that finds selectors instead of implementors. Just install
this method and then start spotting. Let us know if this is better:

GTSpotter>>spotterSelectorsFor: aStep

| processor |
processor := aStep listProcessor.
processor
title: 'Selectors';
filter: [ :originalQuery :stream |
|query selectors |
query := originalQuery trimBoth asLowercase.
query isEmpty ifFalse: [
selectors := Set new.
SystemNavigation default allBehaviorsDo: [:class |
class selectorsDo:[ :selector |
((selectors includes: selector) not and: [ selector beginsWith: query ])
ifTrue: [
selectors add: selector.
selectors size > 5 ifFalse: [
stream addObject: selector inProcessor: processor .
selectors ] ];
actLogic: [ :each | self systemNavigation browseAllImplementorsOf: each ]


Cheers,
Doru



On Tue, Feb 10, 2015 at 9:24 PM, Sean P. DeNigris 
wrote:

> Juraj Kubelka wrote
> > Do you need to open it in Implementors/Senders Browser?
>
> Yes. I was fixing mouse wheel user code to handle horizontal wheel events.
> The Morphic hook is #mouseWheel:, so I wanted a browser on all implementors
> of #mouseWheel: so that I could view each one and update it if necessary.
>
>
>
> -
> Cheers,
> Sean
> --
> View this message in context:
> http://forum.world.st/Spotter-Browse-Impementors-tp4805013p4805028.html
> Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
>
>


-- 
www.tudorgirba.com

"Every thing has its own flow"


Re: [Pharo-users] Published some old games ...

2015-02-10 Thread Laura Risani
I'm glad you like them :). It was fun to develop them .
I can play Tetris for a long time, but i can't survive on the EaterGame for
more than 40'.

@Nacho
Thank you for your feedback.
About the Eater, perhaps in the future i make some additions, but is fully
functional now (when you complete a level there is implemented an increase
on monsters aggressiveness). Visual subjective enhancements could be added,
but i'm satisfied with its minimalist look.
I add the writing to the corresponding section of my todo list.



On Mon, Feb 9, 2015 at 7:46 PM, kilon alios  wrote:

> No idea what you talking about so I will take your word for it :`D
>
> On Mon, Feb 9, 2015 at 10:04 PM, stepharo  wrote:
>
>>  You have basically
>> logicalfont that describes what you want
>> then a logicial font is checking reality and you get a Strikefont? or
>> a FT
>> Now htere were many patches and globals so this part would really need to
>> cleaning such StandardFonts which is a kind of registry.
>> Especially because FT are not polymorphic with StrikeFont.
>>
>>
>>
>>
>> Le 8/2/15 22:33, kilon alios a écrit :
>>
>> Does pharo come with its own standard TTFs ? I am unfamiliar with how
>> fonts work in Pharo exactly will take a look at mines and see what I can
>> understand.
>>
>> On Sun, Feb 8, 2015 at 11:11 PM, stepharo  wrote:
>>
>>>  Thanks I do not get why it does not work with me. O_o
>>>
>>> Le 8/2/15 20:07, kilon alios a écrit :
>>>
>>> Well done Stef . The artefact problem is gone and I have committed your
>>> configuration to MetaRepo4.
>>>
>>> On Sun, Feb 8, 2015 at 8:30 PM, stepharo  wrote:
>>>
 I fixed it.
 Now this is a good example on how an application should embed its fonts.

>>>   In fact this is a good example on why an application should embed its
>>> fonts and I would like to have a solution for that.
>>>
>>>
>>>
 Stef
 Le 8/2/15 19:12, kilon alios a écrit :


> In case of mines I see now that each opened cell is a red box of doom .
>
> Apparently the morph DNU fontOfSize . Looks like StrikeFont class is
> the culprit used in MinesTile>>drawOn:
>
>
>


>>>
>>>
>>
>>
>


[Pharo-users] Problems evaluating message sends in run-time arrays

2015-02-10 Thread Andy Burnett
I would like to create an array with a collection of colour values.

I tried both:

colorList := {Color blue}
and
colourList := {Color named: #blue.}.

In both cases it evaluates to 'Color blue' rather than the Color object.

What surprised me was that:

charList := {Character digitValue:35. Character digitValue:33.}.

Does evaluate to an array of two characters.  What is going on?

Cheers
Andy
ᐧ


Re: [Pharo-users] Problems evaluating message sends in run-time arrays

2015-02-10 Thread Ignacio Sniechowski
| colorList |
colorList := [ Color blue class ] value.

*Lic. Ignacio Sniechowski, MBA*
*Prosavic SRL*

*Tel: (011) 4542-6714*





















On Tue, Feb 10, 2015 at 10:38 PM, Andy Burnett <
andy.burn...@knowinnovation.com> wrote:

> I would like to create an array with a collection of colour values.
>
> I tried both:
>
> colorList := {Color blue}
> and
> colourList := {Color named: #blue.}.
>
> In both cases it evaluates to 'Color blue' rather than the Color object.
>
> What surprised me was that:
>
> charList := {Character digitValue:35. Character digitValue:33.}.
>
> Does evaluate to an array of two characters.  What is going on?
>
> Cheers
> Andy
> ᐧ
>


Re: [Pharo-users] Problems evaluating message sends in run-time arrays

2015-02-10 Thread Ignacio Sniechowski
or
| colorList |
colorList := { Color blue class }.

*Lic. Ignacio Sniechowski, MBA*
*Prosavic SRL*

*Tel: (011) 4542-6714*





















On Tue, Feb 10, 2015 at 10:38 PM, Andy Burnett <
andy.burn...@knowinnovation.com> wrote:

> I would like to create an array with a collection of colour values.
>
> I tried both:
>
> colorList := {Color blue}
> and
> colourList := {Color named: #blue.}.
>
> In both cases it evaluates to 'Color blue' rather than the Color object.
>
> What surprised me was that:
>
> charList := {Character digitValue:35. Character digitValue:33.}.
>
> Does evaluate to an array of two characters.  What is going on?
>
> Cheers
> Andy
> ᐧ
>


Re: [Pharo-users] Problems evaluating message sends in run-time arrays

2015-02-10 Thread Sean P. DeNigris
Andy Burnett wrote
> In both cases it evaluates to 'Color blue' rather than the Color object.

'Color blue' is the Color object you created and put in your array. It is
aColor object. It's print string is 'Color blue'. See Color>>#printOn: for
more info.





-
Cheers,
Sean
--
View this message in context: 
http://forum.world.st/Problems-evaluating-message-sends-in-run-time-arrays-tp4805048p4805060.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.



Re: [Pharo-users] Problems evaluating message sends in run-time arrays

2015-02-10 Thread Ben Coman
I'm away from my Pharo computer to double-check, but is it just that is how
a Color object displays itself ? Maybe have a look at Color>>printOn:
cheers -ben

On Wed, Feb 11, 2015 at 9:38 AM, Andy Burnett <
andy.burn...@knowinnovation.com> wrote:

> I would like to create an array with a collection of colour values.
>
> I tried both:
>
> colorList := {Color blue}
> and
> colourList := {Color named: #blue.}.
>
> In both cases it evaluates to 'Color blue' rather than the Color object.
>
> What surprised me was that:
>
> charList := {Character digitValue:35. Character digitValue:33.}.
>
> Does evaluate to an array of two characters.  What is going on?
>
> Cheers
> Andy
> ᐧ
>


Re: [Pharo-users] Spotter vs Spotlight was: [Re: Cleaning code completition's namespace]

2015-02-10 Thread Laura Risani
> What do you mean about all existing menus in the image? Right now, the
> default Spotter searches for the top level entries in the World menu and
> then lets you dive if you want. It can also be made easily to search for
> all menu entries from the World menu. Is that what you have in mind?
>

At that moment i thought of searching on all existing menu entries, for
example if Spotter-search for "Browse" menu-category results will include
"Browse scoped" (an entry of a menu you get for classes on the
ClassBrowser). Yet at this moment i'm not sure of how useful it could be.


>  In this mail alone you list 4 different search tools: Finder,
> MessageBrowser, Spotlight, Search in Nautilus. Each of these behaves
> radically different without much of an added value.
>

> The whole philosophy of Smalltalk revolves around a minimal and uniform
> model that can be used to express elegantly any action. For example,
> Smalltalk has a simple syntax, and yet you can explain with that simple
> syntax all things for which other languages require lots of hardcoded
> constructs. The same rigor should be applied to the user interface. With
> Spotter we strive to reach such a simple model that can be infinitely
> moldable to fit custom needs.
>
> Now, besides elegance, if any, what else is there? Given that search is
> such a pervasive action, before I start anything I first want to find an
> entry point. That can be a method, a class, a file, or whatever other
> object. To this end, first people think of what tool to use and then of how
> to find the interesting object inside that tool. With Spotter we want to
> eliminate the first step: we just open Spotter and start searching for what
> we want. It's not quite there, but I think it is amazingly close to this
> goal.
>
>
I liked a lot these paragraphs in theirself and also as a motivation for
Spotter.

2) Not having the regular features of a window that are useful depending on
>> the case, for shortcuting i would like volatile but for browsing results i
>> could depending on the case prefer persistency .
>>
>
> Certainly. The current solution focuses on search. Creating a persistent
> list of objects is still a work in progress but it is out of scope at the
> moment.
>
>
If at the method GTSpotterGlobalShortcut>>openGlobalSpotter one changes
#openInWorld by #openInWindow , one gets the persistent behavior (it also
includes the preview if opened).
So now i can open a volatile or persistent Spotter, i'm going to have a
keycombination for each one. In addition i get all the regular window
behavior i in some cases want.
This makes me really happy :)

Only one little keybordian issue, Cmd+w doesn't close the window as usual,
the same happens with GTPlayground. It would be nice if these come
implemented so one doesn't have to add them.


> This already works. As explained before, something like:
> d #i
>
> will give you only the implementors of "d". So, # will search for the name
> of the category. This feature is not yet complete in that it does not
> highlight properly the results, but could you try to see if this fits what
> you have in mind?
>

I've just read about that, and also the last bit on custom categories on
the blog. So now i will define a category for classes+selectors and map a
keycombination to open a volatile Spotter on ti, and remove the 5 results
limit (how do i do this?). This gives me my wanted "selector/class
shortcut" Spotlight provided me, improving the annoying deficiency
Spotlight has of showing no-longer defined names (i asked about it in a
recent mail to the list).

Having a shortcut (Cmd+Shift+ArrowUp/ArrowDown) to jump through categories,
then why to limit the number of results in each category to 5? Why not to
show them all to avoid the need of going into the category?


> Did you try compiling the method that I sent in the previous mail
> (basically just copy paste that method in the GTSpotter class)? It should
> provide the behavior of Spotlight. Please try and let me know if it works
> for you.
>
>
Yes, it works at some degree.
I face this issue, if i type 'openIn' i get only 1/1 selector
#openeningDelimiters, and only if i continue to type 'openInW' i get 5/28
selectors.
Also at some point i started to get an #inform: msg saying "WorldState
interCyclePause failed".

So additions i would like to see built by default
Cmd+w to close on GTSpotter and GTPlayground.
Remove/know-how-to remove the 5 limit on results.
Selectors category.
Font size configured at SystemBrowser to have effect on GTSpotter both on
search results and preview.

To summarize i love Spotter and it will be the tool i use the most (in
number of openings).

Love,
Laura


Re: [Pharo-users] Spotter vs Spotlight was: [Re: Cleaning code completition's namespace]

2015-02-10 Thread Ben Coman
On Wed, Feb 11, 2015 at 1:25 PM, Laura Risani 
wrote:

>
>> Also at some point i started to get an #inform: msg saying "WorldState
> interCyclePause failed".
>
>
>
Thats not GTSpotter. That was my fault since build 40477 integrated Issue
14669.
This should be fixed since Issue 40874 was integrated into build 40486 .
cheers -ben


Re: [Pharo-users] SmaCC: First steps

2015-02-10 Thread kilon alios
Ok so after rereading the tutorial and testing again and again , I think I
have finally managed to understand how SmaCC really works and I was
succesful into converting simple python litsts to pharo arrays and ordered
collections.

The tricky part now is to apply this knowledge to complex python types like
multi dimensional lists, tuples and dictionaries. I understand that the
visitor allows me to visit a specific object instances each time they are
found in the AST . But because I want to walk the AST in order to build
multi dimensional ordered collections I need something more, or maybe my
understanding of the visitor pattern is flawed.

The problem I am having here is that each time I parse a python type that
python type is not necessarily represented by different kind of node. For
example whether its a list or a tuple or a dictionary the same class is
used PyAtomNode. In order to differentiate between those diffirent python
types PyAtomNode has instance variables for right and left bracket,
parantheses, and curly. So my initial thinking is to check those instance
variables to see if they are nil and from that I can conclude which python
type I am parsing.

So I can preform simple ifs that check that the instance variable is Nil or
not but the question is if my strategy is a good one or a bad one.

I could define my own syntax to simplify the AST tree including different
nodes for different python types , because from the looks of it , it seems
it is a bit too verbose for my needs but On the other hand I am not so sure
because in the future my needs may become more verbose too.

So I am very close and ready to create my full python types converter for
pharo but I wanted some good advice before wasting time on something that
is not efficient.


By the way Thierry I have to agree with you Smacc is a very capable parser,
also I like the use of regex syntax, makes it uglier compared Pettit Parser
but I prefer the compact regex syntax to having to define and browse tons
of classes and send tons of messages. Also the Python support is very good
and I am impressed how easily SmaCC can parse whole python applications
since some of the test are very complex. Well done great work!



On Sat, Jan 31, 2015 at 12:04 AM, kilon alios  wrote:

> thank for your congratulations, because at times I fear I ask too obvious
> questions. I have to say I find this parsing very complex but very
> fascinating too :) Time to experiment with the visitor.
>
> On Fri, Jan 30, 2015 at 11:49 PM, Thierry Goubier <
> thierry.goub...@gmail.com> wrote:
>
>>
>>
>> 2015-01-30 14:04 GMT+01:00 kilon alios :
>>
>>> Ok thanks for the info, I am still however curious about these "tests"
>>> are just tests (which may or may not happen) that determine the AST, for
>>> example which node to use ?
>>>
>>
>> 'tests' is just there because, in the grammar, there is this at a certain
>> point:
>>
>> testlist:
>> test 'test' "," testlist
>> | test 'test' comma_opt
>> ;
>>
>> I have named this use of test 'test', so SmaCC has deduced that testlist
>> will be a list of test(s) nodes (or maybe other stuff such as atoms,
>> depending on the productions for test).. so, SmaCC, in each rule where
>> testlist is found, it will add a 'tests' instance variable.
>>
>> So, basically, the grammar rules explain how each node can be decomposed
>> in sub-nodes, and the additional annotations (the 'test' naming and the
>> {{}} or {{}}) drive how the classes for the nodes you want to keep are
>> generated. In that testlist case, no node will be generated, but everywhere
>> testlist appear on the right of the rule, then it will add a 'tests'
>> instance variable.
>>
>>
>>>
>>> Or are they tests related to unit testing class PythonParserTests ?
>>>
>>
>> Not at all :)
>>
>>
>>>
>>> Also you said I need to use the visitor created by PythonParser I assume
>>> you mean PyRootNodeVisitor ? Just as it is explained in the AST chapter of
>>> the documentation.
>>>
>>> In my case this simple python list will need me to subclass it and
>>> override method visitListmaker , the aListmaker passed as argument to the
>>> method should I assume it is PyListmakerNode ?
>>>
>>
>> In my experience, what you need to do is you have a look at the ast
>> generated and see if you can recognize the elements. From what I see in
>> your simple example, the key to your list is that PyAtomNode instance with
>> something in list. Once you have that, you know that you need to visit
>> PyAtomNode (and check that it has the [ ] tokens).
>>
>> Looking into what is listmaker in atom in the grammar (congratulations by
>> the way, you have seen it :) ), you'll see that it creates a listmaker node
>> only in the first case: test followed by a list_for, otherwise it falls
>> back to testlist...
>>
>> Thierry
>>
>>
>>
>>>
>>> On Fri, Jan 30, 2015 at 10:50 AM, Thierry Goubier <
>>> thierry.goub...@gmail.com> wrote:
>>>
 Hi kilon,

 The tests instance variable is linked to the python gramma

[Pharo-users] get them while they are young

2015-02-10 Thread Martin Bähr
here is the reaction of a student preparing for a GSoC project for which the
student needs to learn smalltalk:

  "I have installed Pharo v4.0 and started the book Pharo By Example as
   suggested by you  I just wanted to say that I am in the initial stages
   and loving it already :)"

greetings, martin.

-- 
eKita   -   the online platform for your entire academic life
-- 
chief engineer   eKita.co
pike programmer  pike.lysator.liu.secaudium.net societyserver.org
secretary  beijinglug.org
mentor   fossasia.org
foresight developer  foresightlinux.orgrealss.com
unix sysadmin
Martin Bähr  working in chinahttp://societyserver.org/mbaehr/