Status: New
Owner: tudor.gi...(a)gmail.com
Labels: Type-Defect Priority-Medium Component-Roassal Milestone-4.7
New issue 819 by tudor.gi...(a)gmail.com: Roassal line width does not work
with the model of the edge
http://code.google.com/p/moose-technology/issues/detail?id=819
This does not work at the moment:
view := ROMondrianViewBuilder new.
view shape label.
view nodes: (1 to: 2).
view shape line width: [:x | x ].
view edgesFrom: [:x | x // 2].
view treeLayout .
view open
Status: New
Owner: tudor.gi...(a)gmail.com
Labels: Type-Defect Priority-Medium Component-Roassal Milestone-4.7
New issue 818 by tudor.gi...(a)gmail.com: Roassal tree layout does not
preserve the order of nodes
http://code.google.com/p/moose-technology/issues/detail?id=818
In Pharo 1.4, Collection>>difference: uses a set, thus, it does not
preserve the order of the elements.
Because of this, the following method has to be rewritten:
ROAbstractGraphLayout>>childrenFor: aNode except: aNodeCollection
^(self childrenFor: aNode) difference: aNodeCollection
Just a few thoughts about how the Roassal Easel [Examples] are presented.
Some text describing the meaning of the blue and pink grouping boxes
would be useful - but to hazard a guess blue is the replicated Mondrian
functionality and pink is the new Roassal functionality ?
The ZoomIn and ZoomOut buttons don't work with either the [Examples] of
[Info] displayed - which is fair enough, but there is no feedback to
indicate the buttons will have no effect. This is quite nit-picking so
perhaps can be ignored.
Once any particular example is clicked, there is nothing that displays
what the current example is - so if (like me) you forget which it was
two seconds after you click it, you end up a bit lost. It would be nice
to have something that identifies the current example.
Example>interaction>leftAndRightClick - fails
Example>interaction>clickAndMove - the element ends up about 150 pixels
below the click. It should either centre or align a corner with the click.
Example>colors>normalizer - it is not clear what the purpose of this is,
especially under a colors section - it is just an empty black box that
is moved around.
just documenting another migration....
this in Mondrian...
view interaction menuItems add: 'Browse class' -> [:a2 | a2 browse ].
view interaction registerMenu.
appears to become this in Roassal...
view interaction item: 'Browse class' action: #browse.
How do you get a context menu on the background?
btw, I see that ROEaselMorphic>>populateMenuOn: calls
#zoomInButtonOn: which calls #addMenu:callBack:
Does #addMenu:callBack always draw the item in a box? Can you get
multiple items in one box?
From an outside perspective if there can be only one item per box then
#addButton:callBack would seem a more appropriate name.
Anybody can submit an opinion to the following issue:
MooseChef allows to express a query such as:
aClass queryOutgoingInvocations
aMethod queryOutgoingReferences
that will return all methods invoked from 'aClass' for the first query
and all classes referenced by 'aMethod' in the second query
Then you can constraint the scope of the result, for example to say that
you are interested by the package containing the referenced classes
aMethod queryOutgoingReferences atPackageScope
You can also down scope the result, for example to say you want all the
methods of the class referenced:
aMethod queryOutgoingReferences atMethodScope
Finally, there is something to say you are not interested in relation
that loop back to the original object queried
aClass queryOutgoingInvocations withoutSelfLoops
will return all classes that own methods invoked from 'aClass' except
'aClass' itself (that would be a selfLoop)
one sees on this example that withoutSelfLoops involves some scoping:
queryOutgoingInvocations will return a collection of methods, but the
query was sent to a class.
So when we say withoutSelfLoop, we actually mean all methods that don't
belong to the class to which the query was sent.
This is equivalent to:
aClass queryOutgoingInvocations atClassScope withoutSelfLoops
Up to now, the semantic is rather Ok, but when you use hidden down
scoping, it starts to be less clear:
aMethod queryOutgoingReference withoutSelfLoops
will return all classes referenced in 'aMethod' taken at methodScope and
removing self loop.
In the end, the result will ignore references to the class owning 'aMethod'.
What do you think?
There is some logic in the semantic, but it is not so intuitive.
Looking at the query, I cannot convince me that this is the result that
one would expect.
Should we change the semantic?
To what? (keep up-scoping and forbid implicit down-scoping? forbid all
implicit re-scoping?)
nicolas
PS: This may look like a rather theoretical question, but I actually
have a bug partly related to that and I need to know how to solve it
I have just downloaded Moose47 and am starting to migrate my app from
Mondrian to Roassal.
For the code below where 'a mondrian' /becomes/ 'a roassal' ...
At "#1" I get MNU ROLine>>fromPositions
For now I worked around this by deleting #fromPositions: and #toPositions:
but how do I get similar functionality to manage where the endpoints ?
I did find in "attachPoint := ROShorterDistanceAttachPoint instance" in
ROLine>>initialize but it would be good to get an idea of the overall
architecture for this.
At "#2" I get MNU ROMondrianViewBuilder>>domain - where #domain returns
an OrderedList of all the model entities, of which I ask each for all
its relationship links to other model entities to define the edges.
For now I worked around this by factoring "EpcimRoot withAllSubclasses"
out to a temporary variable, but I am wondering how in future to access
the model entities of the graph.
I did find "#elementsWithModelDo:" in
ROMondrianViewBuilder>>rawEdgesFrom:to: but not sure whether that is a
public/private method.
----------------------
a mondrian
title: 'Class Definition - Full Model' ;
painting:
[ :view
:selection |
view shape label.
view interaction popupText: [ : element | element class
comment ].
view nodes: (EpcimRoot withAllSubclasses).
view edgesFrom: #superclass.
(view shape line) "#1: /was/ a MOStraightLine
/becomes/ a ROLine "
color: Color lightBrown.
fromPositions: #(#center);
toPositions: #(#center).
view edges: view domain "#2: view /was/ a
MOViewRenderer /becomes/ a ROMondrianViewBuilder"
from: #yourself toAll: [ :x | x relations collect: [
:z | z key ] ].
view horizontalTreeLayout .
]
Status: New
Owner: ----
CC: tudor.gi...(a)gmail.com
Labels: Type-Defect Priority-Medium Component-Glamour
New issue 701 by alexandr...(a)gmail.com: Cut and Paste do not update a
Glamour Port
http://code.google.com/p/moose-technology/issues/detail?id=701
Email snippets:
Regarding copy paste, indeed it seems that pasting a text does not update
the port. Please open a ticket.
-------
I found another strange behavior, likely to be a bug.
Try:
-=-=-=-=-=-=
| browser |
browser := GLMFinder new.
browser text
act: [:prez :v | prez text inspect ] on: $i entitled: 'Inspect'.
browser openOn: 'hello world'
-=-=-=-=-=-=
If you type something and press cmd-i then you open an inspector on what
you have typed.
Now, do a cut and paste in the textpane, and press cmd-i. You have an
inspector on 'hello world', no matter what you have cut&pasted.
>>
>>
>> Hi Stef,
>> Sorry but the problem is not that there are no 64-bit vms and images
>> available. The problem is that the available 32-bit vm and image cannot be
>> pushed further 500MB. Even worst is that as far as I understood we are not
>> even sure why is like that.
>>
>> For me a reasonable size for a Moose image containing an average size Java
>> Enterprise application is between 500MB and 1500MB. So a 32-bit vm\image
>> should be perfectly able to store the whole model and to have enough free
>> space for computations.
>>
>>
>> It is true that we cannot go larger than 500 mb?
>>
> yes, the hardcoded limit is 500mb
do you know why?
>
>>
>>
>> Partial loading could be a solution in some cases but we need tool support
>> for that. I cannot invest 2 weeks every time I need to script a 10 minutes
>> analysis trying to figure out how to partially load the information that I
>> "might" need. Without having a full model available the entire idea of
>> prototyping analysis behind Moose goes down the drain and so Moose itself
>> lose a lot of its meaning.
>> I think the whole point is to have all the data on the system in analysis at
>> hand. Either having 10GB model stored in an image or loading the needed
>> entities on demand it is not relevant as soon as it is transparent for the
>> user and the performances are not too bad.
>>
>> Cheers,
>> Fabrizio
>>
>> 2012/7/25 <stephan(a)stack.nl>
>>>
>>> Hi Doru,
>>>
>>> When thinking about scalability of Moose, what scenarios do you have
>>> in mind? Up to about half a terabyte, you can run out of main memory
>>> on a single machine cost-effectively. The main limitation there is
>>> the lack of a 64-bit vm and image. As far as I understand the access
>>> patterns involved, a main memory based or distributed main memory
>>> solution is far preferable for actually analyzing systems. What do you
>>> hope to achieve by going to disk? When we did the data conversion project,
>>> we thought about partitioning over multiple images but finally managed
>>> with partial loading.
>>>
>>> Stephan
>>>
>>>
>>> _______________________________________________
>>> Moose-dev mailing list
>>> Moose-dev(a)iam.unibe.ch
>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>>
>>
>> _______________________________________________
>> Moose-dev mailing list
>> Moose-dev(a)iam.unibe.ch
>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>>
>>
>
>
>
> --
> Best regards,
> Igor Stasenko.
Hi,
A topic that was raised recently is the scalability issue of Moose. Indeed, it would be great to have again some traction in this direction.
I think there are a couple of possibilities in this area:
- Gemstone. This is the straightforward idea and it would probably match quite well the FAMIX object-oriented model. The realization might not be that easy because we would need to go through all the details of the language independence. Also, we would need a remote UI, or at least a bridge for Glamour. Perhaps the Seaside interface of Glamour, or another Seaside-based one, would be a good direction.
- Graph DBs. http://neo4j.org/ would be an interesting target here. I have no experience in this area, but I would be very interested in collaborating with someone on this.
- Relational DBs. I know that Marco D'Ambros worked on a solution to map FAMIX meta-descriptions to Glorp in VW. And it seemed to work. I think Alberto Bacchelli is or has used it.
- Fuel. Loading with Fuel is about one order of magnitude faster than loading plain MSE: for example for ArgoUML 0.32 I got 108s for the MSE, and 17s for the Fuel based MSE information. So, having the Fuel export next to the MSE file can be a significant improvement. However, this solution only works when you have computations that treat one model at a time (so, it's not so nice if you have to switch between models all the time). I attached a simple script to analyze the difference between plain MSE loading and Fuel load variations.
- Filtered loading. This solution works well when you have the full model, but you do not need all of it. FMMetaRepositoryFilter offers the infrastructure for a filtered loading at the level of FAME: if you want to load a sub part of your model, you construct a sub-meta-model and then let Fame do the rest. This kind of works, but it is only available at the moment in code (look at the tests). We need to move to the next step of integrating this solution and replace the MooseImportingContext and possibly offer a UI as well.
If you want to pick up on any of these topics, let's open a separate thread and see what we can do.
Cheers,
Doru
--
www.tudorgirba.com
"We can create beautiful models in a vacuum.
But, to get them effective we have to deal with the inconvenience of reality."
Status: New
Owner: tudor.gi...(a)gmail.com
CC: alexandr...(a)gmail.com
Labels: Type-Defect Priority-Medium Component-Roassal Milestone-4.7
New issue 815 by tudor.gi...(a)gmail.com: Roassal Mondrian builder does not
accept nodes that are not subclasses of Collection
http://code.google.com/p/moose-technology/issues/detail?id=815
The guard condition restricts unnecessarily:
nodes: objects
| els |
self assert: [ objects isKindOf: Collection] description: 'Should provide
a collection as parameter'.