17 Juni 2009

Definition Smartphone

In der IT Welt sind wir immer mal wieder auf der Suche nach griffigen Definitionen. Ich glaube ich habe gerade eine gefunden:
Smartphone - Ein Mobiltelefon, das aufgrund seiner zahlreichen Funktionen in regelmäßigen Abständen durch den Benutzer neu gestartet werden muss.


Labels: , ,

29 April 2009

Comparing Code Folders, the groovy way

Ich habe mir vor einiger Zeit mal die Zeit genommen, ein wenig mit Groovy rumzuspielen, da ich glaube dass Groovy eine Prima Scriptingergänzung zu JAVA darstellt. Und heute hatte ich mal einen typischen Scripting Task aufm Schreibtisch:

Das Vergleichen zweier Verzeichnisse, in dem einen JAVA Code aus einer älteren Iteration und in dem anderen die neue Version. Mich haben nur die groben Zahlen (LoC, Files) interessiert und so sieht die Groovy-Lösung aus:

// Pattern for Java Files
def p = ~/.*\.java/
// Pathes to the directories containing the code
def newPath ='c:\\code\\20090427'
def oldPath ='c:\\code\\20090213'
// variables for counting
def newFilecount = 0
def oldFilecount = 0
def newLOCcount = 0
def oldLOCcount = 0

 
//define a closure for recursive directory access
// in the new code folder
def directoryClosNew
directoryClosNew = {
    it.eachDir(directoryClosNew);
    it.eachFileMatch(p){
        newFilecount++
        println "New source: $it"
        it.eachLine {
            newLOCcount++
        }
    }
}

//define a closure for recursive directory access
// in the old code folder
def directoryClosOld
directoryClosOld = {
    it.eachDir(directoryClosOld);
    it.eachFileMatch(p){
        oldFilecount++
        println "Old source: $it"
        it.eachLine {
            oldLOCcount++
        }
    }
}

// call closure on directories
directoryClosNew(new File( newPath ))
directoryClosOld(new File( oldPath ))
println " Old number of Java Files $oldFilecount \n New number of Java Files $newFilecount "
println " Old Lines of Code $oldLOCcount \n New Lines of Code $newLOCcount"

Schick, nicht? :-)

Labels: ,

26 März 2009

Nokia E71 mit Exchange Server verbinden

Das alte Lied, ein Nokia mit einem Exchangeserver zuverbinden: Das Nokia akzeptiert das Zertifikat nicht.

Natürlich gibt das Nokia das nicht zu, sondern fragt beim ersten Verbinden nach, ob man das Zertifikat akzeptieren will. Man stimmt den zu, macht 1001 weitere Einstellungen und versucht sich zu verbinden - Ergebnis:  "Verbindungsfehler. Versuchen Sie es später erneut."

Nach längerer Webrecherche habe ich rausgefunden, dass man sich am Besten das Rootzertifikat downloaded und mit hilfe dieses Services für sein Nokia aufbereiten lässt.

Dann nur noch auf die entsprechende URL surfen und alles akzeptieren. *Have Fun*

Labels: ,

17 März 2009

JSF, JPA und Oracle

Ziel: Eine einfache CRUD Anwendung in NetBeans 6.5 generieren.

Kontext: Ein Schema ist in der Oracle DB bereits hinterlegt. Mittels der Generate JSF-CRUD aus DB Funktion in NB soll nun eine kleine JEE Anwendung erzeugt und im Glassfisch V2 deployed werden.

Probleme:
  • Glassfish lässt sich nicht als Resource bei NetBeans einbinden -> gelöst (Bug in NB 6.5 in Kombination mit JDK 1.6 U 12, Lösung Downgrade auf JDK 1.6 U11)
  • Oracle DB Resource lässt sich in NB nicht hinzufügen -> gelöst Oracle Thin JDBC Treiber ojdbc14.jar einbinden
  • Zugriff auf OracleDB mittels TNS Name will nicht funktionieren "Unable to add Connection. Cannot establish connection to jdbc:oracle:thin:... E/A-Exception:Unknown host specified", TNSPING auf den TNS Namen funktioniert jedoch -> Lösung Oracle läuft im Cluster Betrieb, Zugriff nur über TNS auf eine bestimmte DB des Clusters möglich
  • Generierte Anwendung lässt sich nicht deployen "javax.faces.FacesException: Can't parse configuration file: jndi:/server/GUI-war/WEB-INF/faces-config.xml: Error at line 29 column 82: Error at (29, 82: java.lang.ClassNotFoundException: jpa.entities.PmAnsprechpartner
    at com.sun.faces.config.ConfigureListener.parse(ConfigureListener.java:1438)
    ..." Die Klasse ist vorhanden und sollte sich deployen lassen. Es handelt sich dabei um den ersten eintrag in der faces-config.xml-> die übliche Lösung: Projekt einstampfen und neu generieren lassen, dann ging's wieder. (dann darf man nur nicht vergessen, die alte Anwendung aus dem Server zu löschen ;-)
Achja, noch 2 nette Links bezüglich kryptischen Glassfish Stack Traces:

Labels: , , ,

21 Januar 2009

Schnee, Bergluft und gute Laune.

Nach den Anstrengungen der finalen Masterphase, ein wohlverdienter Urlaub:

Blick von Kaprun auf das Kitzsteinhorn (rechts im Bild der "Barbara Hof")

Labels: , ,

14 Januar 2009

Wir sind...

...Weltmeister!

Nunja, zumindestens ich. ;-)

Das aber richtig: Heute Kolloquium (1,0 für die Master Thesis).

*freu*

Labels: ,

08 Januar 2009

SOA ist tot, es lebe der Service

Anne Thomas Mane hat in ihrem Blog das Ende von Service Oriented Architectures verkündet. Das ist insofern bemerkenswert, dass sie Vice President und Research Director der Burton Group für Application Platform Strategies ist. Zu ihren Aufgabenbereichen gehören: SOA, web services, XML, governance, Java, application servers, superplatforms, und application security.


(Bildquelle: burtongroup.com)

Sie argumentiert, dass der SOA Ansatz zu viel gekostet und zu wenig gebracht hat. Die Versprechen von mehr Flexibilität und geringeneren Kosten wären nicht eingelöst worden. Im Gegenteil, es wären sogar höhere Kosten angefallen und viele Projekte gescheitert.

Trotzdem war die Arbeit nicht umsonst, da viele verwandte auf Services gründende Technologien die SOA beerben sollen. (SaaS, MashUps, Clouds...)

Aus meinen eigenen Erfahrungen kann ich insofern beipflichten, dass das Einführen einer SOA in bestehenden komplexen Systemen sehr teuer und aufwändig ist und damit quasi alle Probleme der Softwarekrise in sich vereint, auf die SOA ja eigentlich die neueste Antwort war.

Hier sehen wir ein typisches Problem des Software Engineerings, dass Ansätze für die Neuentwicklung eines Systems erdacht werden. Quasi für Entwicklungen auf der grünen Wiese.
Im "wahren Leben" wird aber selten ein Software aus dem Nichts erschaffen. Meist baut man auf vorhandenem Code auf.
Von Grund auf eine SOA aufzubauen, um ein komplexes System zu implementieren ist sicherlich ein verlockender Gedanke, aber beispielsweise ein SAP System (ca. 300 Millionen LoC) im Nachhinein auf eine solche radikal andersartige Architektur umzubauen ist in einem solchen Ansatz nicht berücksichtigt.

Hat sie mit ihrer Analyse recht, dann gehört die Zukunft einmal mehr den evolutionären Ansätzen, die sich - weniger radikal - mit geringerem Aufwand in bestehende System einfügen lassen.

Labels: ,