[ann] GTExamples alpha
by Tudor Girba
Hi,
Over the last coupe of years Stefan Reichhart and the rest of the GT team worked on an implementation of examples. The work is inspired from previous work done by Markus Gaelli and Adrian Kuhn.
As one of the goals of GT is to offer a live programming environment, one important issue is how to move from the static code to live objects as fast as possible. That is why we worked on this library as a solution to provide a link between the static code and live objects.
Furthermore, this examples library also enables the definition of assertions on the examples, and this provides the possibility of rethinking the way we construct tests throughout our system. Tests are great as they help us create live objects and then to assert live properties. However, they do not allow us to leverage the objects we create, and this can be a tremendous resource for understanding systems.
In our vision, examples should be everywhere and they should be explicitly linked to the static code they exemplify. That is why the library comes with an initial integration in existing tools (such as Nautilus, Spotter, Inspector).
The current solution works well and it is the result of several rewrites. We think that the solution is complete in terms of features, but there are still several things to improve and iterate on. To this end, I kindly ask you to take a look at it while distinguishing between the concrete implementation choice (e.g., the current extensive use of pragmas) and the conceptual benefits of the approach.
To ease the discussion, we put together a short documentation:
http://gtoolkit.org/doc/Examples/examples.html
That being said, you can get it with the full GToolkit in Pharo 6.0:
http://gtoolkit.org/#install
(easiest is to download the ready made image for now)
For those that are at ESUG, I will try to provide a short overview during the Show Us Your Project session from today.
Cheers,
Doru
--
www.tudorgirba.com
www.feenk.com
"Innovation comes in the least expected form.
That is, if it is expected, it already happened."
7 years
moose meeting at esug
by Tudor Girba
Hi,
I would like to have a meeting with the people that are interested in Moose and are present at ESUG. I propose to have it on Tuesday, at 6:30.
Would anyone else be interested?
Cheers,
Doru
--
www.tudorgirba.com
www.feenk.com
"It's not how it is, it is how we see it."
7 years
Analyzing Android app?
by Alexandre Bergel
Hi!
Just wondering, did anyone tried to use the VerveineJ or jdt2Famix on android app?
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
7 years, 1 month
GTPlayground/Inspector print it
by Peter Uhnák
Hi,
does the print-it option always use only asString (or whatever it actually
uses), or can it be modified in some way?
I would like to modify it a bit, because for big numbers the default one is
not easy to read, e.g.
instead, I would like to see this
It gives much better idea of the scale of the number.
Can such thing be modified?
Thanks,
Peter
7 years, 1 month
Fwd: hooking into GTInspector tags
by Peter Uhnák
---------- Forwarded message ----------
From: Peter Uhnak <i.uhnak(a)gmail.com>
Date: Sat, Aug 13, 2016 at 5:29 PM
Subject: hooking into GTInspector tags
To: Pharo-Users List <pharo-users(a)lists.pharo.org>
Hi,
how can one hook into the GTInspector tags that can be filtered?
Apparently I can assign a presentation to a tag with `<gtInspectorTag:
#examples>`,
however this works only if the tag name was already added.
As this was done in GTInspector>>initialize, it makes the whole filtering
idea quite useless (unless I explicitly initialize GTInspector, which is
not the natural approach).
Can't it just collect all the tags from the current presentations?
Or can I somehow access the GTInspector instance from the `composite`
argument?
Thanks,
Peter
7 years, 1 month
[ANN] Release of Agile Visualization
by Alexandre Bergel
Dear Colleagues and Friends,
It is a great pleasure to announce the release of Agile Visualization. Agile Visualization is a book about the Roassal Visualization engine.
Paperback, eBook (PDF), and a free HTML format chapters are available from http://AgileVisualization.com
The book has 235 pages and covers the essential aspects of Roassal. Copies of the book will be sold at ESUG’16.
Screenshots and codes contained in the book were produced on Pharo. However, most of the covered code and topics _equally_run on VisualWorks (from version 7.4 (!)).
We would like to thank all the contributors and users of Roassal who have deeply impacted and shaped Agile Visualization. The book is dedicated to the Smalltalk community at large. Big big thanks to our sponsors, Lam Research, Object Profile, and ESUG.
And thanks to you for being as you are and making Smalltalk such a great platform.
Thanks
Alexandre
7 years, 1 month
Re: Moose-dev Digest, Vol 120, Issue 10
by Meinert Schwartau
Hi Tudor,
>
> Very interesting. This is the first time I heard of lombok, and I would
> have to look into it more closely. What I find strange is that you get to
> visit the method (this is where you get the unresolved method declaration
> from) even if the method does not exist. I am sure I do not understand
> something. Would you like to open an issue for this?
>
>
Actually the lombok issue resolved itself. I found out that lombok provides
a delombok functionality (https://projectlombok.org/features/delombok.html
):
"Delombok [...] allows you to use lombok with these tools by preprocessing
your java code into java code with all of lombok's transformations already
applied. [...] Delombok's standard mode of operation is that it copies an
entire directory into another directory, recursively, skipping class files,
and applying lombok transformations to any java source files it encounters."
So I just have analyse my delomboked source files instead of the original
source files and everything will be fine.
> > The cause of the next problem is that we have multiple smaller
> applications (e.g. backoffice and frontend) which are separate applications
> but share a common db. Some of these services have classes with the same
> class and packagename (e.g. an annotation WebController). This lead to the
> following error message:
> > unresolved annotation type declaration - WebController -
> c:\data\moose\....\WebController.java - line 12
> > I had to start the debugger to find the issue. I found it because
> AnnotationTypeDeclaration.parent.problems = "Pb(323) The type
> WebController is already defined"
> > If the package names are different the problems disappears. Then I only
> get the the lombok errors. As a solution I will create unique base package
> names for my projecfs (which makes sense anyway).
>
> Indeed. The only other solution for this problem is to analyze each
> sub-project separately. Also, perhaps I can manage to create a better log
> statement for this case. Would you like to open an issue on github for this?
>
>
> > Note that you could the following example to you README of jdt2famix to
> show how to download the dependencies for gradle projects:
> >
> > task copyDependencies(type: Copy) {
> > from configurations.compile
> > from configurations.testCompile
> > into 'dependencies’
> > }
>
> Thanks!
>
> Could you also tell me how to actually add this to a gradle script and
> invoke it? I tried a variation of this (without
> configurations.testCompile), but I did not manage to run it. I am likely
> missing something basic here, and perhaps if you would walk me through a
> concrete example, I could make some progress :). For example, what steps
> would you use for downloading the dependencies of
> https://github.com/spring-projects/spring-framework ?
>
> Cheers,
> Doru
>
>
Actually I tested it with the spring gradle file and it worked. The spring
build file is a little bit more complicated, because it is a multimodule
project. Basically an easy way to find the right place is to define it
directly after the dependencies of the java projects. I added it as follows
to the configure (allprojects) section:
configure(allprojects) { project ->
group = "org.springframework"
version = qualifyVersionIfNecessary(version)
// ....
task copyDependencies(type: Copy) {
from configurations.compile
into 'dependencies'
}
}
If you have a simple project (not a multi module one), there won't exist
such a configure method. Then you can define it directly (e.g. after the
dependencies). I attached my spring gradle build file to this mail. In my
company project, which is a multi module project too, I added it to a
configure method which is used for all java projects (we have some non java
projects too). If I added to a configure method which is called for all
projects due to the non java projects I would get an error. So it seems as
if you always have to change you build files and as if there doesn't exist
a general solution (like there exists one for maven). But I'm not a gradle
expert, so there might exist a better solution.
Best regards
Meinert
7 years, 1 month