Planet Squeak

blogs about Squeak, Pharo, Croquet and family
planet squeak - planet squeak es - planet squeak jp - planet croquet - planet squeak code - planet smalltalk

October 19, 2017

PharoWeekly

1900 Participants for the Pharo Mooc

Hi

The new session of the Pharo Mooc just started and you can still registered and have fun learning a cool system 🙂

https://www.fun-mooc.fr/courses/course-v1:inria+41010+session02/about

 

stef


by Stéphane Ducasse at October 19, 2017 01:38 PM

October 15, 2017

PharoWeekly

Open AL script

Hi Phil,

I did that using Ronie’s OpenAL binding and Merwann’s wav parser back in 2014-2015:

MCSmalltalkhubRepository
owner: ‘ronsaldo’
project: ‘OpenAL’

MCSmalltalkhubRepository
owner: ‘MerwanOuddane’
project: ‘WAVParser’

I did things such as (build yourself something derived from this code I did not check if it works):

MyClass>>example
WAVParser wavFromStream: (‘resources/music/spellNoise.wav’ asFileReference readStream binary readStream).
contextAttributes := ALContextAttributes new.
device := OpenALC openDefaultDevice.
context := device createContext: contextAttributes asList.
context process.
context currentDuring: [
“Create the buffer”
buffer := self makeBufferFromHeader: wav header data: wav data asByteArray.
“Create the source”
source := OpenAL genSource.
OpenAL sourcei: source param: AL_BUFFER value: buffer.
“Play the source”
OpenAL sourcePlay: source.
“Play for sometime ”
(Delay forSeconds: wav header soundDuration) wait.
“Delete the source and the buffer”
OpenAL deleteSource: source;
deleteBuffer: buffer
].
OpenALC nullCurrentContext.
context destroy.
device close.

MyClass>>makeBufferFromHeader: header data: data
| buffer |
buffer := OpenAL genBuffer.
OpenAL bufferData: buffer format: (self readFormatFromHeader: header) data: data size: data size freq: header sampleRate.
^ buffer

MyClass>>readFormatFromHeader: header
^ header channels = 1
ifTrue: [
header bitsPerSample = 8
ifTrue: [ AL_FORMAT_MONO8 ]
ifFalse: [ AL_FORMAT_MONO16 ] ]
ifFalse: [
header bitsPerSample = 8
ifTrue: [ AL_FORMAT_STEREO8 ]
ifFalse: [ AL_FORMAT_STEREO16 ] ]

I am pretty sure with a little work those things could work again. I have never succeeded in playing mp3 files from Pharo though (but I’m on mac and I remembered trying solutions that did not work on Mac but may work on other OS).

Have fun guys 🙂


by Stéphane Ducasse at October 15, 2017 05:50 PM

October 12, 2017

PharoWeekly

Building-With Versus Building-On

An intriguing essay

https://medium.com/@dasein42/building-with-versus-building-on-c51aa3034c71

worth reading it and I will reread it

Stef


by Stéphane Ducasse at October 12, 2017 09:09 PM

Libusb binding

Hello,

A bit late, there is a Libusb [1] binding (using UFFI) and support for the Human Interface Device [2] (that uses the binding but is written in pure Smalltalk) for Pharo.
Everything is on the github repository [3]. « Install »  and « Quick start »  sections give you all you need to start using the project.
One could also have a look at the wiki [4].
It works on Linux but hasn’t been tested on Mac OS nor Windows (it should work since libusb library works on these platforms).
Do not forget to install the 32 bits versions of libusb on your computer.
The purpose of this library is to provide the ability to use USB devices directly from Pharo.
For example, one could get data from a PS3 controller, a mouse, a keyboard, an Arduino device, etc…
Cheers,
Julien
PS: I realised this project during an internship in TaMère SCRL company [5]. Thanks to them!
Links:
[1]: http://libusb.info
[2]: https://en.wikipedia.org/wiki/Human_interface_device
[3]: https://github.com/tamerescrl/libusb-pharo
[4]: https://github.com/tamerescrl/libusb-pharo/wiki
[5]: http://tamere.eu

by Stéphane Ducasse at October 12, 2017 08:06 PM

Last PR log

 

 

20442 open the welcome window

https://pharo.fogbugz.com/f/cases/20442

20462 An error in the Tests never break the build

https://pharo.fogbugz.com/f/cases/20462

 

20440 integrate ReferenceFinder

https://pharo.fogbugz.com/f/cases/20440

 

20461 Update Hermes to v2.2.1

https://pharo.fogbugz.com/f/cases/20461

 

20410 Undeclared variables should be compiled with explicit class UndeclaredVariable

https://pharo.fogbugz.com/f/cases/20410

 

20421 Email should run in a node and separate stage to be sent

https://pharo.fogbugz.com/f/cases/20421

 

20447 SystemVersion>>highestUpdate not initialized and nil

https://pharo.fogbugz.com/f/cases/20447

 

20459 Comment class ImportingResourceHelp

https://pharo.fogbugz.com/f/cases/20459

20444 FFIExternalStructurePlatformTests cleanup (is32/64bit)

https://pharo.fogbugz.com/f/cases/20444

20445 Uncategorized or wrongly categorized deepCopy, veryDeepCopy, shallowCopy and postCopy methods

https://pharo.fogbugz.com/f/cases/20445

 

20458 Two uncommented classes in Reflectivity package

https://pharo.fogbugz.com/f/cases/20458

20446 Properly categorize finalize and finalizeValues

https://pharo.fogbugz.com/f/cases/20446

 

20443 SDL_Event not initialized

https://pharo.fogbugz.com/f/cases/20443

 

20435 The CI process should fail if the conversion fails

https://pharo.fogbugz.com/f/cases/20435

 

20415 Restore the extra morphic worlds properly on startup

https://pharo.fogbugz.com/f/cases/20415

 

20434 use Ring2 during the bootstrap

https://pharo.fogbugz.com/f/cases/20434

 

20431 Move initialization of Color, InstructionStream and SmallInteger

https://pharo.fogbugz.com/f/cases/20431

 

20437 Uncategorized methods in RFCondition and RFMessageNode

https://pharo.fogbugz.com/f/cases/20437

 

20436 Pull request URL in build information e-mail is wrong

https://pharo.fogbugz.com/f/cases/20436

 

20423 Add health check that all class instance variable names in the system are lowercase

https://pharo.fogbugz.com/f/cases/20423

 

20429 ContextTest>>#testSetUp is dependent on Opal

https://pharo.fogbugz.com/f/cases/20429

20433 Fix the parsing of the PR description when sending the mail

https://pharo.fogbugz.com/f/cases/20433

 

20428 ClassTest (Kernel-Tests) is dependent on System-Changes

https://pharo.fogbugz.com/f/cases/20428

20424 standalone SUnit tests are failing after integration of the new version of Hermes

https://pharo.fogbugz.com/f/cases/20424

 


by Stéphane Ducasse at October 12, 2017 06:00 PM

Torsten Bergmann

Allen Wirfs-Brock - A Modular Journey To A World Spanning Virtual Image

Interesting video on the history of Smalltalk at Tectronix from Allen Wirfs-Brock



 and the slides are available here.

by Torsten (noreply@blogger.com) at October 12, 2017 03:25 PM

Libusb binding and HID for Pharo

There is a Libusb  binding (using UFFI) and support for the Human Interface Device - HID (that uses the binding but is written in pure Smalltalk) for Pharo. Code is on GitHub.

Read the announcement

by Torsten (noreply@blogger.com) at October 12, 2017 03:04 PM

Software exploration tool Moose2Model for developers (ABAP, SAP, Java, Smalltalk, …) – Roadmap

There is a Software exploration tool Moose2Model for developers (ABAP, SAP, Java, Smalltalk, …) written in Pharo. You can now read the Roadmap. You can see some of this in the ESUG 2017 presentation of Rainer Winkler

by Torsten (noreply@blogger.com) at October 12, 2017 02:58 PM

Pharo success story: Driving ATMs in Moscow streets (Videos)

As I already reported here Pharo 1.1 was used to build ATM-kind software in Russian Bank. Such devices could be found in Moscow streets. Now there are two videos available on that, one showing the system in action



 and one showing it in Pharo development environment:

by Torsten (noreply@blogger.com) at October 12, 2017 02:47 PM

October 11, 2017

Ecole des Mines

Pharo MOOC is coming…

The Pharo MOOC will start october 16th, 2017 on France Université Numérique (FUN). This MOOC is free and fully available in French and in English. Registration web page: https://www.fun-mooc.fr/courses/course-v1:inria+41010+session02/about If you are either a beginner or an expert in object-oriented programming, this MOOC will change the way you program with objects: come and learn or… Continue reading

by luc at October 11, 2017 08:19 AM

October 10, 2017

PharoWeekly

The story around PharoMinimal

Hi,

What is the story around PharoMinimal and related images ?

Is there a writeup somewhere with instructions ?

Right now the minimal (Metacello) image based on Pharo 7 is used only as intermediate step in building of the full Pharo and the only real (successful) attempt to use it for something else is PharoLambda (https://gitlab.com/macta/PharoLambda).
In general it can be used for building of own (server) applications. E.g. this way you can install and run Teapot on it:
./pharo Pharo7.0-metacello-32bit-d13eed2.image config http://smalltalkhub.com/mc/zeroflag/Teapot/main ConfigurationOfTeapot –install=stable
./pharo Pharo7.0-metacello-32bit-d13eed2.image eval –no-quit “Teapot on GET: ‘/welcome’ -> ‘Hello World’; start.”
You can load baselines from the Git repositories too but we currently do not have any command line handler for it so you need to do it using “eval” command or *.st flile. Something like this:
Metacello new
baseline: ‘Seaside3’;
repository: ‘github://SeasideSt/Seaside:master/repository’;
load
To make it more usable we probably should extend it with SUnit and Fuel. If you want to extend it with some packages from vanilla Pharo, you should load them using FileTree from your local Pharo repository clone.
Gofer it
url: ‘filetree:///path-to-my-pharo-repository-clone/pharo/src’;
package: ‘Multilingual-OtherLanguages’;
package: ‘Multilingual-TextConverterOtherLanguages’;
load.
It still needs some care. E.g. some classes from Zinc are not properly initialized (I know about DigitalSignatureAlgorithm MD5NonPrimitive RxMatcher RxParserRxsPredicate SHA1 ZnByteEncoder ZnConstants ZnMimeType ZnNetworkingUtils ZnServer ZnSingleThreadedServer TextConstants TextAction TextStyle).
I tried to load Seaside into it today (from the example above) and it failed (some strange error probalby related to Unicode processing). But we will fix it. If you will tell me what exactly you need we can make it work together as in case of PharoLambda.
followed by
Hi Pavel,

Thanks a lot for the explanation. To summarise: 70-minimal is the one with monticello and metacello in it that can load code via the config handler.

I was confused, because that failed for me.

Now, first doing

$ ./pharo pharo-minimal.image eval ‘ZnMimeType initialize’

fixed my loading problem. I also did the following because some of my project don’t separate tests (I known 😉

$ ./pharo pharo-minimal.image eval –save ‘Object subclass: #TestCase’

With those fixes I was able to load different projects

$ ./pharo pharo-minimal config http://mc.stfx.eu/Neo ConfigurationOfZTimestamp –install=stable

$ ./pharo pharo-minimal config http://mc.stfx.eu/Neo ConfigurationOfNeoConsole –install=bleedingEdge

The image remains equally fast in startup

$ time ./pharo pharo-minimal.image eval ZTimestamp now
2017-10-08T16:55:00Z
real    0m0.062s
user    0m0.025s
sys     0m0.029s

And it works perfectly as a server, like

$ ./pharo pharo-minimal eval –no-quit ‘NeoConsoleTelnetServer new start’ &

$ telnet localhost 4999
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
Neo Console Pharo-7.0+alpha.build.172.sha.d13eed2f80fe19f29fd85ede8c4809d6a6986d4f (32 Bit)
> get
known metrics:
system.status – Simple system status
memory.total – Total allocated memory
memory.free – Free memory
memory.gc – Garbage collect, return free memory
system.uptime – Image uptime human readeable
system.uptimeseconds – Image uptime seconds
system.date – Current date
system.time – Current time
system.timestamp – Current timestamp
process.count – Current process count
process.list – Current list of processes
system.version – Image version info
system.mcversions – Monticello packages version info
> get process.list
Delay Scheduling Process
Low Space Watcher
Idle Process
WeakArray Finalization Process
NeoConsoleTelnetServer port 4999
NeoConsoleTelnetServer port 4999 Connection Handler
> SessionManager default startupList collect: #handledId

#(#SmallInteger #Delay #ProcessorScheduler #OSPlatform #FileLocator #MCMethodDefinition #WeakArray #FileStream #MultiByteFileStream #EndianDetector #Symbol #LanguageEnvironment #Stdio #NonInteractiveTranscript #WeakFinalizationList #DiskStore #BasicCommandLineHandler #SourceFileArray #ASTCache #UUIDGenerator #InternetConfiguration #ZnLogEvent #ZnServer #Color #UIManagerSessionHandler #ZTimestamp)
>
Bye!
Connection closed by foreign host.

Image size remains ~11Mb.

Very nice !


by Stéphane Ducasse at October 10, 2017 07:26 PM

Seaside on minimal Pharo 70

Hi,

I was successfully able to run Seaside on the minimal Pharo 7.0. After the release cleanup the resultant image has about 12.4 MiB.
The loading script expects that in the working directory you have the Pharo repository clone (in a floder named ‘pharo’). You should modify the loading script to point to your real Pharo repository clone. This clone is needed to load SUnit into the minimal image. You should have PharoV60.sources reachable from the image.
The Seaside is loaded from my fork (github://pavel-krivanek/Seaside:minimalPharo/repository). I had to create a modified version because the original baseline broke the ZincHTTPComponents.
The strange line:
Smalltalk vm parameterAt: 25 put: (Smalltalk vm parameterAt: 25) * 50.
…sets the garbage collector. Without this the Seaside loading can fail on insufficient object memory.
wget -O – http://get.pharo.org/70-minimal | bash
pharo Pharo.image loadSeaside.st –save –quit
pharo Pharo.image startSeaside.st –no-quit
Starting of the image takes about 0.1 s on my machine.
Cheers,
— Pavel

by Stéphane Ducasse at October 10, 2017 07:05 PM

Benoit St-Jean

Le blogue de Jean-François Gagné

Si vous utilisez MySQL de façon intensive, le blogue de Jean-François Gagné est un incontournable!


Classé dans:bases de données, MySQL Tagged: MySQL

by endormitoire at October 10, 2017 09:06 AM

Trucs et astuces pour MySQL

Une page où vous pourrez avoir réponse à presque toutes vos questions concernant MySQL!


Classé dans:bases de données, MySQL Tagged: InnoDb, MyISAM, MySQL, snippets, tips

by endormitoire at October 10, 2017 08:04 AM

L’histoire et les origines d’Unix

Un article fort intéressant sur Unix, cet OS qui a toujours fait la joie des hackers et des power users!


Classé dans:informatique, Système d'exploitation, unix Tagged: Linux, OS, système d'exploitation, unix

by endormitoire at October 10, 2017 06:33 AM

La chanson du jour (1399)

Everybody Wants To Rule The World de Tears For Fears.

Welcome to your life
There’s no turning back
Even while we sleep
We will find You acting on your best behavior
Turn your back on mother nature
Everybody wants to rule the world


Classé dans:music, musique Tagged: Everybody Wants To Rule The World, Tears For Fears

by endormitoire at October 10, 2017 05:29 AM

October 09, 2017

Benoit St-Jean

La chanson du jour (1398)

Need You Tonight de INXS.

I need you tonight
‘Cause I’m not sleeping
There’s something about you girl
That makes me sweat


Classé dans:music, musique Tagged: INXS, Need You Tonight

by endormitoire at October 09, 2017 05:44 AM

La chanson du jour (1397)

Fly By Night de Rush.

Fly by night away from here
Change my life again
Fly by night goodbye my dear
My ship isn’t coming and I just can’t pretend


Classé dans:music, musique Tagged: Fly By Night, Rush

by endormitoire at October 09, 2017 05:40 AM

La chanson du jour (1396)

Solsbury Hill de Peter Grabriel.

When illusion spin her net
I’m never where I want to be
And liberty she pirouette
When I think that I am free
Watched by empty silhouettes
Close their eyes but still can see
No one taught them etiquette
So I will show another me


Classé dans:music, musique Tagged: Peter Grabriel, Solsbury Hill

by endormitoire at October 09, 2017 05:33 AM

La chanson du jour (1395)

Woodstock par Crosby, Stills, Nash & Young.

We are stardust, we are golden
We are billion year old carbon
And we got to get ourselves back to the garden


Classé dans:music, musique Tagged: Crosby, Nash & Young, Stills, Woodstock

by endormitoire at October 09, 2017 05:24 AM

La chanson du jour (1394)

Hold The Line de Toto.

It’s not in the way you look or the things that you say that you’ll do


Classé dans:music, musique Tagged: Hold The Line, Toto

by endormitoire at October 09, 2017 05:16 AM

La chanson du jour (1393)

Ironside Theme de Quincy Jones.


Classé dans:music, musique Tagged: Ironside Theme, Quincy Jones

by endormitoire at October 09, 2017 05:05 AM

October 08, 2017

PharoWeekly

Pharo goodies

At https://www.zazzle.com/pharoshop and the cool Pharo t-shirt https://www.zazzle.com/pharo_syntax_on_a_t_shirt_light-235946728891438668

Stef


by Stéphane Ducasse at October 08, 2017 07:01 PM

October 07, 2017

PharoWeekly

Fun with UI Avatars

I came across https://ui-avatars.com, a web service that creates avatar images based on some parameters.

From Pharo, the shortest invocation would be something like
ZnEasy getPng: ‘https://ui-avatars.com/api?name=Albert+Einstein&size=128&background=0D8ABC&color=fff&rounded=true‘.
Making use of the full builder interface of ZnClient that would look more like
ZnClient new
https;
host: ‘ui-avatars.com‘;
addPath: #api;
queryAt: #name put: ‘Albert Einstein’;
queryAt: #size put: 128;
queryAt: #color put: ‘FFF’;
queryAt: #background put: ‘0D8ABC’;
queryAt: #rounded put: true;
accept: ZnMimeType imagePng;
enforceHttpSuccess: true;
enforceAcceptContentType: true;
contentReader: [ :entity | ImageReadWriter formFromStream: entity readStream ];
beOneShot;
get.
Anyway, it is cool to have an environment that makes this kind of experimentation so much fun.
It is probably easy to implement this avatar image generation directly in Pharo …

by Stéphane Ducasse at October 07, 2017 08:52 PM

October 06, 2017

PharoWeekly

Bugfix and enhancements release v0.2.5 for OSSubprocess

Dear all,

I have just released a new bugfix and enhancements release v0.2.5 for OSSubprocess as you can see in [1].
This new release is thanks to the awesome work of Guillermo Polito [2]. He found a problem (and a fix) that would hung/block the Pharo image in a wait state. This problem has been forever and I have faced it myself. It would only happen when using #waitForExit and under certain scenario.  Because of that, I recommend everyone to move to this release.
Aside from that serious bug, he has also done quite some improvements in the tests and in the Travis setup. Once this PR [3] has been merged and SmalltalkCI updated, our Travis build [4] should show all green builds for Linux/OSX and Pharo 5.0 and 6.1.
I have also copied the configuration into Pharo 5.0 and 6.0 catalog so as of tomorrow, it should be there.
Cheers,
[1] https://github.com/marianopeck/OSSubprocess/releases/tag/v0.2.5
[2] https://github.com/marianopeck/OSSubprocess/pull/25
[3] https://github.com/hpi-swa/smalltalkCI/pull/320
[4] https://travis-ci.org/marianopeck/OSSubprocess

by Stéphane Ducasse at October 06, 2017 07:32 PM

Iceberg version 0.6

Hi all,

I released Iceberg version 0.6. It includes a lot of small tweaks and fixes, but the most important inclusion is tonel file format which aims to replace file tree.
What is Tonel? (https://github.com/pharo-vcs/tonel)
Tonel is a file-per-class file format for monticello repositories. It’s purpose is to reduce the amount of files touched each operation, make the IO faster an compact the repositories database.
It has also as an objective to offer an “easy-to-read” format, so people wanting to understand a chunk of code will recognise it easily.
For testing, I migrated several of my projects to Tonel and I’ve been using it, you can see some as examples:
https://github.com/estebanlm/MUDClient
https://github.com/estebanlm/pharo-tonel (this was just an example and it has some minimal errors already fixed)
We plan to migrate Pharo development to tonel to address some problems we have:
– since it has to read/write a lot of files, IO operations are slow
– and even much more slow in Windows
– Windows also has a problem with longpaths.
Iceberg 0.6 will be integrated to Pharo7 soon 🙂
To update Pharo 6.1, there are instructions in the readme: https://github.com/pharo-vcs/iceberg/blob/master/README.md
now, if you wan to migrate your projects to Tonel (from FileTree), here is a script you can use: https://github.com/pharo-vcs/tonel/blob/master/MigrateFromFileTree.md
btw, tonel is independent of Iceberg and can be used with plain Monticello (but it is a metadaless format, history will reside on git, not on monticello).
cheers,

by Stéphane Ducasse at October 06, 2017 06:01 PM

PharoLauncher 1.0.1

Hi all,

I just released a new version of the PharoLauncher 1.0.1.
Here are major improvements since last version:

  • Pharo launcher is now distributed with a Pharo 60 image with a 32-bits threaded VM (to avoid hangs when using OSProcess).
  • Add a VM management utility able to find (and download) the appropriate VM for a given image. So, the launcher is NOT shipped anymore with an extra VM. It will fetch required VM when needed.
  • Pharo Launcher files (images, VMs) are now considered as user Documents (easier to find). Consequently, they are now stored in the standard documents folder, i.e.
    • $HOME/Documents/Pharo on OS X,
    • $HOME/My Documents/Pharo on windows,
    • $HOME/Pharo on Linux (some linux distributions provide a document folder but some others not, so we put it in the HOME directory in all cases).
    • In this folder, you will find your images and virtual machines needed to run images.
  • Use of ProcessWrapper to run images on Windows.
  • Adds download of sources file for Pharo images > 60.
  • Left panel is now used for official images and Jenkins jobs templates and right panel is used for local images.
  • New mooc entry with the image ready to start the Pharo Mooc.
  • New deprecated category to find old official Pharo images.
  • Use system unzip when possible (Pharo unzip does not manage file permissions nor symbolic links).
You can get platform bundles from files.pharo.org:

 

Enjoy,
Christophe.
For those wanted more info on how the adequate VM is computed, here is the process:
  1. determine the image format version
  2. find (and optionnaly fetch) a compatible VM (a VM able to run this image format) and run the image to get its Pharo version number
  3. find (and optionnaly fetch) the appropriate VM for this specific Pharo image version. Sources files are also downloaded with the VM when applicable.
  4. run the image with the appropriate VM

by Stéphane Ducasse at October 06, 2017 04:02 PM

[Fun] SVG snippet

Load XMLParser from catalog and load Athens-SVG from the Pharo/Athens repository
xmlDoc := XMLDOMParser parseUrl: ‘https://s.cdpn.io/3/kiwi.svg‘.
svg := AthensSVGConverter new importXMLDocument: xmlDoc.
svg transform: ‘scale(0.5)’.
surface := AthensCairoSurface extent: 500 @ 500.
surface drawDuring: [ :aCanvas | svg renderOn: aCanvas ].
surface asForm.

Screen Shot 2017-10-06 at 17.20.39

 


by Stéphane Ducasse at October 06, 2017 03:21 PM

October 03, 2017

Benoit St-Jean

Travailler avec GitHub

Je dois humblement avouer que la récente migration de Pharo vers une intégration totale avec GitHub me donne du fils à retordre. Nouvelle façon de storer le code, nouvel outil (Iceberg) et nouveau paradigme.  Je travaille en Smalltalk depuis 25 ans avec les mêmes outils de gestion de code (ENVY, Store, STS, Polytron, Monticello, etc) alors la transition vers GitHub me donne du fil à retordre.  ENVY et Store me sont tellement familiers autant dans leur fonctionnement que dans leur fonctionnalités que du jour au lendemain, je me suis trouvé perdu dans ce nouvel univers!

Donc, à défaut de savoir par où commencer, je me suis mis à chercher un guide du genre Best Practices assez simple pour que je puisse l’utiliser facilement et ainsi sortir de ce qui me semble un parfait merdier dans ma tête! Et je suis tombé sur l’article (même s’il date, les explications font totalement du sens dans ma tête!) A successful Git branching model.

Je vous ferai part de mes  aventures bientôt !

 


Classé dans:Pharo, Smalltalk Tagged: ENVY, GitHub, Monticello, Polytron, repository, Store, STS

by endormitoire at October 03, 2017 09:07 AM

VMProfiler et le profilage de code

J’avoue honteusement que cette annonce est passée sous mon radar. Tout autant que les articles subséquents. Un nouveau profiler développé par Sophie Kaleba (son blogue est ici) est maintenant disponible pour Pharo.

En préambule, elle vous explique comment obtenir le projet et l’installer dans votre image ainsi qu’elle vous fait un rapide survol de ce que l’outil peut faire et toutes les statistiques qu’il est en mesure de vous offrir.

Le premier article vous introduit au fonctionnement et aux fonctionnalité de base de l’outil.

Le deuxième article détaille les différentes informations relatives au temps d’exécution du code Pharo.

Finalement, le dernier article porte sur les autres données fournies par le profiler tels que la mémoire consommée/disponible, le garbage collection, les événements de la VM, etc.

Bref, VMProfiler est un outil vital quand vient le temps d’optimiser la performance de votre application!


Classé dans:Machine virtuelle, Pharo, Smalltalk, VM Tagged: machine virtuelle, optimisation, Pharo, Smalltalk, Sophie Kaleba, VM, VMProfiler

by endormitoire at October 03, 2017 08:31 AM