Squeak-dev image is an image made for squeak developers.
*Important notice:* This version is based on Squeak 3.9 7067. You can download it here: http://damien.cassou.free.fr/squeak-dev/ Changes in this version: ------------------------------ - Change the version naming scheme; now, I use the last two digits of the year + the number of the current month. Version 07.6 is for June 2007. - Documentation for SqueakSource and Monticello - Adds a preference for the mercury panel Updated packages: ------------------------- - DynamicProtocols - eCompletion - Installer - OmniBrower - Pretty print is available through CTRL+r - The list of keystrokes is available in the contextual menu - Refactorings are becoming environment aware - An annoying bug with required method has been corrected - ... - RoelTyper - Universes Updating the image: ------------------------- You are not obliged to download a new image if you don't want. You can always update your image. To upgrade your already existing squeak-dev image: 1) World menu->open...->Package Universe Browser 2) Update list from network 3) Select all upgrades 4) Install selection 5) Execute: 'DEVImageCreator default install' (all windows will be closed) Prepared packages: -------------------------- There are a lot of packages prepared for you in this image. They are not loaded in the image, but they can be easily. - Open Package Universe Browser (world->open...->Package Universe Browser). - Click on "Update list from network" - Wait a few seconds - Select your packages - Install them Contained packages: ------------------------ This image contains the following packages: AST version 140 AutomaticMethodCategorizer version 0.24 AutomaticMethodCategorizerServices version 0.2 ClassSelectorSets version 1 DynamicProtocols version 0.53 eCompletion version 0.87 eCompletion-Traits version 0.1 eCompletionOmniBrowser version 0.2 Installer version 1.0.92 OmniBrowser version 0.357 OmniBrowser-Full version 0.10 OmniBrowser-Morphic version 0.13 OmniBrowser-Refactory version 0.23 OmniBrowser-Standard version 0.205 Refactoring Engine version 37 RoelTyper version 0.60 ScriptManager version 0.6 Shout version 3.15-tween.70 ShoutWorkspace version 1-tween.1 SmaCC runtime version 13 Squeak dev packages version 0.13 Universes version 28 Universes OmniBrowser version 0.27 YAXO version 9 Future work: ---------------- - Wait for feedback. - Follow Squeak 3.10 beta releases. Please tell me what is your experience with this version. Please tell me what you want for this image, this is for you. -- Damien Cassou |
OK, the graphic system in Squeak is called MORPHIC. Whereas before you
descended your new classes from "Object", now you descend them from "Morphic": Morph subclass: #TestMorph instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Max-Morphic' When a morph wants to draw itself, it calls the drawOn: method. You would override this method to make the morphic look like something. For now, our morphic will just look like a blue square (the default drawOn does that), so we won't have a drawOn method. OK, now that we have a new morph, let's create an instance. But morphs don't exist in a vacuum, they have to exist in a morphic world. Try this in a transcript: TestMorph new openInWorld. When you "do it", you should see a blue square in the upper left of the screen. The morphic world controls when the morphs that are in it (the morphs that it "owns") move. A morphic that responds to the passage of time is said to be "stepping". If a morphic is stepping, the world calls its "step" method. So, create a step method: step self position: self position+(1@1). A morphic has a position (or "point") on the screen. Whaat this line of code does is say "take the current position and add one to its x position and one to its y position". This will move it diagonally. So, if you save this, the morphic should start moving, slowly, diagonally toward the lower right. We want to be able to control how the movement starts and stops, so we'll make the morphic handle mouse events. We do this by overriding the handlesMouseDown: handlesMouseDown: evt ^ true then having a mouseDown event: mouseDown: evt (self isStepping) ifTrue: [self stop] ifFalse: [self start]. "isStepping" is a Morphic event that retruns true if the morphic is stepping (responding to time events, remember?), start causes a morphic to start stepping, and stop causes it to stop. So, if you click on the morphic now, it'll start moving unless it is moving already, in which case clicking on it will cause it to stop. The morphic will probalby be moving slowly. I think, by default, a morphic world sends one message per second to a morph. But you can request more frequent updates with the stepTime method: stepTime ^100 The amount returned in stepTime is the number of milliseconds between calls to step. So, if yous et it to 1000, our morph will momve about once a second (slow). The above is 100 milliseconds, or ten moves a second. On my machine, returning a value of 15 is about as fast as it will go. (Less than 15 shows no change.) I think "0" means "Go as fast as you can". In game programming, the timing of steps is critical, so you'll figure out how fast the fastest thing can go, and base everything around that. This should get you started. |
Damien does a new release and gets a MORHPIC lesson in return, fair swap? :-)))
Thanks for the new release Damien! |
In reply to this post by Blake-5
I think it's the wrong thread. Please post again somewhere else :-)
2007/6/19, Blake <[hidden email]>: > OK, the graphic system in Squeak is called MORPHIC. Whereas before you > descended your new classes from "Object", now you descend them from > "Morphic": > > Morph subclass: #TestMorph > instanceVariableNames: '' > classVariableNames: '' > poolDictionaries: '' > category: 'Max-Morphic' > > When a morph wants to draw itself, it calls the drawOn: method. You would > override this method to make the morphic look like something. For now, our > morphic will just look like a blue square (the default drawOn does that), > so we won't have a drawOn method. > > OK, now that we have a new morph, let's create an instance. But morphs > don't exist in a vacuum, they have to exist in a morphic world. Try this > in a transcript: > > TestMorph new openInWorld. > > When you "do it", you should see a blue square in the upper left of the > screen. The morphic world controls when the morphs that are in it (the > morphs that it "owns") move. A morphic that responds to the passage of > time is said to be "stepping". If a morphic is stepping, the world calls > its "step" method. > > So, create a step method: > > step > self position: self position+(1@1). > > A morphic has a position (or "point") on the screen. Whaat this line of > code does is say "take the current position and add one to its x position > and one to its y position". This will move it diagonally. So, if you save > this, the morphic should start moving, slowly, diagonally toward the lower > right. > > We want to be able to control how the movement starts and stops, so we'll > make the morphic handle mouse events. We do this by overriding the > handlesMouseDown: > > handlesMouseDown: evt > ^ true > > then having a mouseDown event: > > mouseDown: evt > (self isStepping) ifTrue: [self stop] ifFalse: [self start]. > > "isStepping" is a Morphic event that retruns true if the morphic is > stepping (responding to time events, remember?), start causes a morphic to > start stepping, and stop causes it to stop. > > So, if you click on the morphic now, it'll start moving unless it is > moving already, in which case clicking on it will cause it to stop. > > The morphic will probalby be moving slowly. I think, by default, a morphic > world sends one message per second to a morph. But you can request more > frequent updates with the stepTime method: > > stepTime > ^100 > > The amount returned in stepTime is the number of milliseconds between > calls to step. So, if yous et it to 1000, our morph will momve about once > a second (slow). The above is 100 milliseconds, or ten moves a second. On > my machine, returning a value of 15 is about as fast as it will go. (Less > than 15 shows no change.) I think "0" means "Go as fast as you can". > > In game programming, the timing of steps is critical, so you'll figure out > how fast the fastest thing can go, and base everything around that. > > This should get you started. > > -- Damien Cassou |
In reply to this post by Derek O'Connell-2
On Tue, 19 Jun 2007 02:17:01 -0700, Derek O'Connell <[hidden email]>
wrote: > Damien does a new release and gets a MORHPIC lesson in return, fair > swap? :-))) > > Thanks for the new release Damien! > lol, sorry about that. |
In reply to this post by Damien Cassou-3
On 18/06/07, Damien Cassou <[hidden email]> wrote:
> Squeak-dev image is an image made for squeak developers. > > > *Important notice:* This version is based on Squeak 3.9 7067. > > > You can download it here: > http://damien.cassou.free.fr/squeak-dev/ > > Changes in this version: > ------------------------------ > > - Change the version naming scheme; now, I use the last two digits of > the year + the number of the current month. Version 07.6 is for June > 2007. > - Documentation for SqueakSource and Monticello > - Adds a preference for the mercury panel > > Updated packages: > ------------------------- > > - DynamicProtocols > - eCompletion > - Installer > - OmniBrower > - Pretty print is available through CTRL+r > - The list of keystrokes is available in the contextual menu > - Refactorings are becoming environment aware Is it just me or are refactorings not being applied in the OmniBrowser views? It's rather annoying because the OmniBrowser based browsers are generally a nice place to be. |
2007/6/21, Piers Cawley <[hidden email]>:
> Is it just me or are refactorings not being applied in the OmniBrowser > views? It's rather annoying because the OmniBrowser based browsers are > generally a nice place to be. I confirm refactorings does not seem to work any more on OB. To make it work again, comment the line 'refactoring model: (RBNamespace onEnvironment: self environment).' in ORCmdRefactoring>>execute. Lukas, do you know where is the problem? -- Damien Cassou |
> Lukas, do you know where is the problem?
Name: OB-Refactory-lr.24 Author: lr Time: 21 June 2007, 8:58:08 pm UUID: 105e7896-c0d0-46e8-a8b8-6cd60990fce4 Ancestors: OB-Refactory-lr.23 - fixed a bug introduced with scoped refactoring environments that made it impossible to use any of the refactorings -- Lukas Renggli http://www.lukas-renggli.ch |
Great!
I've been trying to learn how to use Mantis so I could report this problem. (Or see if someone had already reported.) I'll get the fresh stuff this evening. And don't worry, I'm sure I'll find another bug to report/fix. ;-) On 6/21/07, Lukas Renggli <[hidden email]> wrote: > > Lukas, do you know where is the problem? > > Name: OB-Refactory-lr.24 > Author: lr > Time: 21 June 2007, 8:58:08 pm > UUID: 105e7896-c0d0-46e8-a8b8-6cd60990fce4 > Ancestors: OB-Refactory-lr.23 > > - fixed a bug introduced with scoped refactoring environments that > made it impossible to use any of the refactorings > > -- > Lukas Renggli > http://www.lukas-renggli.ch > > |
2007/6/21, David Mitchell <[hidden email]>:
> And don't worry, I'm sure I'll find another bug to report/fix. ;-) If you have a fix, submit it directly to the repository instead of opening a mantis report. All OmniBrower's repositories are opened. -- Damien Cassou |
In reply to this post by David Mitchell-10
> And don't worry, I'm sure I'll find another bug to report/fix. ;-)
The refactoring engine is in a very bad state in 3.9. It has many bugs and a lot of things just don't work. Having documented these bugs would already help. Lukas -- Lukas Renggli http://www.lukas-renggli.ch |
In reply to this post by Damien Cassou-3
On 21/06/07, Damien Cassou <[hidden email]> wrote: 2007/6/21, David Mitchell <[hidden email]>: I've been getting my head around the Squeak environment by running SLint over the OmniBrowser codebase and attacking the 'long methods' it throws up. Would you be interested in getting these changesets? I can't say I'm confident about just sticking them in the repository without some vetting from a more experienced squeaker though.
|
it would be good but
- the harvesting team should harvest them - you should pay attention that the speed is not dropping - I would focus a set of clearly identified packages and see how it goes. Stef On 22 juin 07, at 00:15, Piers Cawley wrote: > On 21/06/07, Damien Cassou <[hidden email]> wrote: > 2007/6/21, David Mitchell <[hidden email]>: > > And don't worry, I'm sure I'll find another bug to report/fix. ;-) > > If you have a fix, submit it directly to the repository instead of > opening a mantis report. All OmniBrower's repositories are opened. > > I've been getting my head around the Squeak environment by running > SLint over the OmniBrowser codebase and attacking the 'long > methods' it throws up. Would you be interested in getting these > changesets? I can't say I'm confident about just sticking them in > the repository without some vetting from a more experienced > squeaker though. > |
On 22/06/07, stephane ducasse <[hidden email]> wrote:
it would be good but Harvesting team? - you should pay attention that the speed is not dropping Is there a test suite or something I can keep running to check that sort of thing? My gut feeling is to go for clarity first, then (ideally) worry about optimization once I can run stuff against a profiler.
- I would focus a set of clearly identified packages and see how it I just opened a new project, ran SLint against OmniBrowser-*, OB* and OR* and started in on the long methods (the usual suspect is turning out to be O[BR]Cmd*#execute). SLint also throws up a whole host of dubious uses of isKindOf, which I'd like to replace with testing methods on the various nodes, but I'm scratching my head to come up with names. An 'isBehaviorOrTrait' test wrote itself though.
Incidentally, I'm finding the CodeFinder to be an absolutely indispensable tool for deciding when to pull out a method: Just write a CodeFinder query matching the potential method fragment and run it to find out if multiple methods are doing the same thing.
|
In reply to this post by Damien Cassou-3
OK, I'll give that a try.
If I submit to the repository, you still have to merge it, right? I'm only a Monticello beginner. On 6/21/07, Damien Cassou <[hidden email]> wrote: > 2007/6/21, David Mitchell <[hidden email]>: > > And don't worry, I'm sure I'll find another bug to report/fix. ;-) > > If you have a fix, submit it directly to the repository instead of > opening a mantis report. All OmniBrower's repositories are opened. > > -- > Damien Cassou > > |
2007/6/23, David Mitchell <[hidden email]>:
> OK, I'll give that a try. > > If I submit to the repository, you still have to merge it, right? merging is only useful when there is multiple branches. For example, you haver version 1 in your image and you commit your fix; at the same time, I have version 1 too in my image and I commit another fix. Then, there is 2 versions on the repository with 2 different fixes. How do we get both fixes in one image? Just merge the two version in one version and commit this version. But don't be afraid, if people don't like your fix, they won't use it and that's all. If you commit to one of my repositories, I will send you a mail about what I think of your fix so that you can improve it and commit again. I'm sure Lukas will do the same. The best way to learn is to try and do mistakes :-) Bye -- Damien Cassou |
Free forum by Nabble | Edit this page |