Benutzerprofil des gewählten Autoren: - Jörg
Samstag, 7. Februar 2009
Toying around ... with Scala
After a long time here is a post about Scala again. I played around with composition of objects an classes from traits.
This post is also a reaction to Thomas Biskups post Toying around ..., where he played around with Qi4j to perhaps find a better architecture for his rogue like rpg “JADE”. We sometimes talking about this and I once mentioned Scalas traits.
So here is a little example of object and class composition with traits in Scala from the domain of role play games. I implemented some simple traits which I used to compose a class and a (singelton) object.
package de.myndian.scala.rpg
// Something that has a “name”
trait Named
{
def name : String
}
// Something that has “power”
trait Powered
{
def power : Int
}
// A namend thing that can be hitted
trait Hitable
{
this: Named =>
var hitpoints : Int
def hit(points : Int)
{
hitpoints -= points
print(name + “ was hitted with ” + points + “ points. ”)
if(hitpoints <= 0)
println(name + " is dead.")
else
println(name + " has " + hitpoints + " hitpoints remaining.")
}
}
// A named thing that can use its power to hit a hittable
trait Fighter
{
this : Named with Powered =>
val rnd = new Random(System.currentTimeMillis)
def hit(target : Named with Hitable)
{
println(name + “ hits ” + target.name)
target.hit(rnd.nextInt(power))
}
}
class Door(val name : String, var hitpoints : Int)
extends Named
with Hitable
// In this fight the dwarf “kills” a door
object DemoFight
extends Application
{
var aDoor = new Door(“a door”, 10)
object TheDwarf
extends Named
with Hitable
with Fighter
with Powered
{
val name = “the dwarf”
val power = 10
var hitpoints = 20
}
while(aDoor.hitpoints > 0)
TheDwarf.hit(aDoor)
}
Some sample output:
the dwarf hits a door a door was hitted with 3 points. a door has 7 hitpoints remaining. the dwarf hits a door a door was hitted with 7 points. a door is dead.
So Thomas, what about “SADE”? ;-)
Samstag, 15. November 2008
Grails tutorials and a free e-book
I startet trying Grails by reading the Quick Start Tutorial. That’s nice to get a very trivial application running, but it was not enoough for me. So I read across the other tutorials, and tried some, but they did not really satisfy me.
So after some search I found one of those nice free e-books from InfoQ, one of my favorite sources for technical news, presentations, interviews, articles and tutorials about Java & Co. They published the book “Getting Started with Grails”, which can be downloaded as e-book for free or purchased as print version. There is also a presentation about the content of the book (one hour).
The book is written in tutorial style or “learning by example” as called by the author. For me it is just the tutorial I was looking for. Great!
So after some search I found one of those nice free e-books from InfoQ, one of my favorite sources for technical news, presentations, interviews, articles and tutorials about Java & Co. They published the book “Getting Started with Grails”, which can be downloaded as e-book for free or purchased as print version. There is also a presentation about the content of the book (one hour).
The book is written in tutorial style or “learning by example” as called by the author. For me it is just the tutorial I was looking for. Great!
Sonntag, 9. November 2008
Runnig Grails
Today I started my fourth attempt to build and run a simple Hello World Application in Groovy. I failed using Grails 0.4 and 0.5.something because it just did not work and I did not get any help.
Because these were premature version I tried using grails 1.0.rc4, but on my new machine. It failed too. But as I know now, because of configuration and windows permission issues.
Now I was successful! But it is very hard if you try to develop grails, while being no local admin. The problem is not Grails itself, but my lack of windows knowledge. I ended up, with nearly all windows runing as admin, except the browser.
I also stumpled upon different problems. I could solve them together with our friend Google, but I think I needed two hours to get my very simple CRUD application working.
My conclusion up to now: Grails has to be easier to start with.
Now I was successful! But it is very hard if you try to develop grails, while being no local admin. The problem is not Grails itself, but my lack of windows knowledge. I ended up, with nearly all windows runing as admin, except the browser.
I also stumpled upon different problems. I could solve them together with our friend Google, but I think I needed two hours to get my very simple CRUD application working.
My conclusion up to now: Grails has to be easier to start with.
Sonntag, 16. März 2008
Simpler implementation of ApplicationContextAware
public class MyApplicationContextAwareClass
{
@Autowired(required = true)
private ApplicationContext applicationContext;
// ...
}
Probably not very usable if you like to test your class (or you have to made the property package visible). But if your class is a test it is very nice and quite usefull.
Geschrieben von Jörg
in Softwaretechnik
um
13:59
| Kommentare (0)
| Trackbacks (0)
Tags für diesen Artikel: configuration, spring framework
Samstag, 15. März 2008
Premature optimization and object orientation
Just a litte note aside: I know many people saying that object oriented software does not perform well. Mostly that is their pretext to do ancient procedural programming or - worse - to mix up both. But every informed developer knows that this is not true. The (performance, architectural, ...) problem of many oo-software is the mashup of procedural/relational on one side and object oriented on the other. A well-known advice is to build the simplest object oriented programm you could and to leave out optimization as far as you could. Optimize only if it is really, really necessary and only if you know very, very well where your performance lack resides.
This week I stumbled over such a situation. Last week - friday afternoon, of course
- a customer called us that the result of the actual iteration does not work properly. A component which generates a network plan from a template and does some computations on that structure really killed the test system. A test on our development machine with their test data showed us that this process takes over three minutes of full workload of the hardware. And the plan had only 64 nodes.
So I took Nils over to a pair debugging session and we did some profiling. The bug was found quickly in the gap between some domain objects that evolved from a relational structure. To fix this we added a little cache to one class. The process took about one minute. Another cache and it performed in under one second! Without changing any other part of the system, because of the oo design.
We took this as a proof of the advices above.
This week I stumbled over such a situation. Last week - friday afternoon, of course
So I took Nils over to a pair debugging session and we did some profiling. The bug was found quickly in the gap between some domain objects that evolved from a relational structure. To fix this we added a little cache to one class. The process took about one minute. Another cache and it performed in under one second! Without changing any other part of the system, because of the oo design.
We took this as a proof of the advices above.
« vorherige Seite
(Seite 2 von 13, insgesamt 63 Einträge)
» nächste Seite


Jörg bei Twitter

