A bit off topic, but I would do the STON writing as follows:

[
(FileLocator temp / 'file.ston') writeStreamDo: [ :out |
  (STON writer on: out) in: [ :stonWriter |
    30 timesRepeat: [ 
      stonWriter nextPut: Smalltalk allClasses ] ] ].
] timeToRun. "0:00:00:02.176"

But in light of alternative streams and some optimisation, this works too:

[
| file |
file := (File named: '/tmp/file.ston') openForWrite.
[ 
  ZnBufferedWriteStream on: (ZnCharacterWriteStream on: file) do: [ :out | 
    (STON writer on: out) in: [ :stonWriter |
      30 timesRepeat: [ 
        stonWriter nextPut: Smalltalk allClasses ] ] ] 
] ensure: [ file close ].
] timeToRun. "0:00:00:00.385"

Which is faster.

Total file size is ~1.2MB.

BTW, we need #readStreamDo: and #writeStreamDo: on File I think, as it 
encourages proper resource management.

> On 5 Feb 2017, at 19:16, Henrik Nergaard <[email protected]> wrote:
> 
> http://smalltalkhub.com/#!/~Latsabben/GafletFremgangFremviser
> 
> ---------------------
> | ston file|
> 
> ston := (1 to: 30) flatCollect: [:ix |STON toStringPretty: Smalltalk 
> allClasses].
> file := (FileStream fileNamed: 'file.ston').
> 
> ston whileDisplayingProgress
>       action: [ :stream | file nextPutAll: stream ] whenDone: [ file close ];
>       open;
>       fillOwner
> ---------------------
> 
> Best regards,
> Henrik
> 
> -----Opprinnelig melding-----
> Fra: Pharo-dev [mailto:[email protected]] På vegne av Yuriy 
> Tymchuk
> Sendt: 05 February 2017 16:56
> Til: Pharo Development List <[email protected]>
> Emne: [Pharo-dev] How can I create a trivial "spinner" etc, to see if image 
> is busy?
> 
> Hi all,
> 
> is there an easy was to do some thing that is constantly changing? so if my 
> image freezes (to export a 1gb ston file for example) I can see when it’s 
> done.    Or maybe there is a way to send a mac notification from Pharo?
> 
> Cheers.
> Uko


Reply via email to