29.08.2012

CDI mit Tomcat 7 - Ein einfaches "Hello World!"

Was tun, wenn man keinen "richtigen" Application Server zur Verfügung hat, aber trotzdem CDI testen möchte? Richtig, man greift auf den Tomcat 7 im Zusammenspiel mit einer JBoss-Erweiterung zurück.

Nach dem letzten Vortrag der JUG über den Einsatz von CDI in No-Tier-Enterprise Applications (Folien auch auf Slideshare verfügbar) wollte ich mal testen, ob das ganze auch mit dem Tomcat 7 realisierbar ist.

Die schlechte Nachricht ist, dass von Haus aus der Tomcat keine Unterstützung bietet, sondern erst mit einer weiteren Bibliothek gepimpt werden muss. Die gute Nachricht ist allerdings, dass durch den Einsatz der Bibliothek keine Konflikte entstehen und dem Einsatz von CDI nichts im Wege steht.

Für die Nutzung von CDI sind drei Schritte notwendig. Zum einen ist es notwendig, dass die Dependency dem bestehenden Projekt hinzugefügt wird. Danach wird ein Listener innerhalb der web.xml definiert und schlussendlich wird noch die beans.xml angelegt.

1) Hinzufügen der Dependency


2) Erweitern der web.xml mit einem zusätzlichen Listener


3) Hinzufügen der leeren beans.xml



Das war schon die halbe Miete, mehr muss für das einfache Beispiel nicht konfiguriert werden.
Die Struktur der Anwendung ist ebenfalls bewusst einfach gehalten und besteht im wesentlichen aus zwei Klassen, der Service-Klasse HelloWorld und dem Servlet HelloWorldServlet.

HelloWorld ist ein einfacher Service, der auf Anfrage den Text "HELLO WORLD!" zurück gibt.


HelloWorldServlet ist mittels @javax.servlet.annotation.WebServlet als Servlet definiert worden und steht somit als Endpoint der Anwendung zur Verfügung. Gleichzeitig wird eine Instanz von HelloWorld in das Servlet injected und dort zur Ausgabe "HELLO WORLD!" genutzt.


Ein Aufruf des Servlets liefert dann, nach Start des Tomcats die gewünschte Ausgabe.


Ziemlich einfach und schnell zu realisieren! Da werde ich auf jeden Fall mal ein wenig testen!

Der Code ist natürlich auch im Repo verfügbar!

23.08.2012

Taschenspielertricks - Spaßige Dinge, die man mit dem Scala-Typsystem machen kann

Die JUG nun auch in Wolfsburg. Und auch noch mit einem spannenden Vortrag. Klare Sache, da musste ich hin!
Der Einsatz von Scala in Real-Life-Projekten ist sicherlich noch sehr dünn, aber es lohnt sich aus meiner Sicht immer, dass man mal über den Tellerrand schaut.

Und dazu gehört auch, dass man sich das Typensystem von Scala und vor allem die Möglichkeiten etwas genauer anschaut. Die Beschreibung des Vortrags liest sich wie folgt:

In diesem Vortrag werden einige Dinge vorgestellt, die man mit dem Typsystem anstellen kann – angefangen beim beliebten „Pimp my Library“-Pattern bis zum Nachweis, dass das Typsystem Turing-vollständig ist. Aber nicht alles ist Taschenspielerei. So manches lässt sich sehr sinnvoll in realen Projekten einsetzen.

Macht auf jeden Fall neugierig. Der Referent Jens Schauder war bereits aus anderen Veranstaltungen, wie dem Webmonday oder anderen Vorträgen im Rahmen der JUG bekannt und auch seine Affinität zu Scala war nicht neu.
Nach kurzer Begrüßung der etwas mehr als 15 Teilnehmer ging es in die kurze Einleitung (was ist ein Typ, was ist eine Klasse), zu den ersten Schritten in Scala und der groben Einordnung des Vortrags. Dabei wurde klar, dass die Veranstaltung sicherlich nicht dazu gedacht war neue Teilnehmer in Scala einzuführen, sondern es ging direkt in die fortgeschrittenen Themen.

Den Anfang machten die implicit conversions. Die wichtigste Regel ist, dass der Compiler versucht bei den entsprechenden Objekten (von Quell- und Zieltyp) nach passenden Methoden zu suchen. Ist also eine Methode für einen speziellen Typ nicht vorhanden, sucht der Compiler einen passenden Typen anhand der definierten Regeln.

Mit den structural types kam das Thema Duck-Typing auf. Structural types beschreiben Objekte nicht anhand ihres Namens, sondern anhand ihrer Struktur. Ein mögliches Äquivalent in Java sind Interfaces, wenngleich nicht so mächtig. Nah an den anonymen Typen in .NET (Ein Type mit einer Menge von Methoden und Werten, aber ohne Namen), bieten die structural types die Möglichkeit Funktionen auf Objekten auszuführen, ohne deren genaue Position innerhalb der Type-Hierachy zu kennen.

Danach wurde die Luft schon etwas dünner, es ging weiter mit den phantom types. Definitionen von Typen, die niemals eine Instanz besitzen. Aha...
Validierung bereits beim Kompilieren des Codes und daher eine Hilfestellung für den Entwickler. Grundlage ist ein Sub-Typing, welches durch Fehlermeldungen des Typsystems bereits zur Compile-Zeit Fehler aufzeigt. Vorteil ist die dadurch vorhandene, zusätzliche Sicherheit bei der Verwendung von Datentypen. Ein tolles Beispiel ist Tic-Tac-Toe, gelöst nur mit Hilfe der phantom types.

Kurz vor Erreichen des Gipfels noch ein kleiner Ausflug in die Welt der type lamdas. Was ist das? Ein kleines, aber prägnantes Beispiel zeigt die Verwendung:


Toll was mit dem Typsystem machbar ist. Noch viel besser, wenn man weiß, dass man Gebilde aus Gruppentheorie, Funktionstheorie oder anderen mathematischen Gebieten knapp, präzise und im Zweifel unlesbar für andere Entwickler abbilden kann. Sicherlich findet man das ein oder andere Einsatzgebiet, aber das ist schon echt heftig...

Der Gipfel war dann gegen 20:45 erreicht, als eine eigene Definition von Boolean inkl. der Prüfung zur Compile-Zeit auf dem Beamer erschien. Ziel war es anzudeuten, dass das Typsystem in Scala Touring-Vollständig ist. Spannend, aber sicherlich zu theoretisch um innerhalb von 10 Minuten abgehandelt zu werden! Sollte sich jemand für die Touring-Vollständigkeit interessieren, so kann man sich sicherlich mal durch den Blog von Michid oder dem von Apocalisp.

Gefallen habe ich daran gefunden, wenngleich ich sagen muss, dass der ein oder andere Einsatzzweck für mich verborgen geblieben ist ;-)

20.08.2012

Food Blog Award - Fotografie und Essen

Zwar stehen die Top 3 bereits seit dem 08. August fest, aber ich selber bin erst seit dem letzten Wochenende auf die Seite gestoßen!

Die Seite Foodblogaward.at bewertet eingereichte Food-Blogs anhand der Auffälligkeit, der Originalität und des Gesamteindrucks! Bereits im Vorfeld wurde anhand der oben genannten Kriterien eine Top 10 Auswahl getroffen und die Auswahl somit auf die Top 3 eingeschränkt! Die endgültige Reihenfolge wird allerdings erst im September veröffentlicht ;-)


Ich habe mir die Top 3 mal angeschaut und mir selber eine Meinung gebildet!


Aicusine ist das einzige deutsche Blog innerhalb der Top 3! Gestaltet und geführt durch die Fotografin Ailine Liefeld bietet das Blog spannende Fotos, Rezepte und kleine Stories rund ums Thema Kochen! Die Bilder sehr gut gestaltet, die Texte interessant geschrieben und das ganze hat einen tollen modernen Look! Macht auf jeden Fall Laune! Hervorzuheben ist auf jeden Fall, auch ein Argument der Jury, die überragende grafische Gestaltung!


The Stepford Husband ist kein Blog für "cusine nobelesse", sondern spiegelt den Gedanken des einfachen, aber raffinierten Essens wieder. In der Kurzbeschreibung des Food Blog Awards wie folgt ausgedrückt:

"Angeber-Schaumhäubchen, Poser-Ummantelungen aus Blattgold und Gerichte deren Namen man nicht einmal aussprechen kann? Wen interessiert das schon?! Auf The Stepford Husband gibt es Rezepte, die genauso lecker wie auch simpel sind."

macht das Blog auch genau diesen Eindruck! Klare, einfache Rezepte, gespickt mit tollen Bildern und fertig ist ein tolles Foodblog! Eine Kategorisierung der vorgestellten Rezepte rundet das Ganze ab!


Wow! Ziiikocht ist sicherlich aufgrund der Bilder ein Highlight! Aber auch die Rezepte können sich sehenlassen! Durch die sehr persönliche Erzählweise hat der Leser das Gefühl direkt bei den Schreibern mit am Tische zu sitzen! Interessant geschrieben! Spannend sind auch die SW-Fotografien, die sicherlich in der Food-Fotografie nur selten zu finden sind! Auf jeden Fall lesenwert!

Mein persönlicher Liebling ist sicherlich The Stepford Husband, da es meinen Gedanken der Küche wiederspiegelt! Von grafischer Seite her, allerdings dem Aicusine deutlich unterlegen! Ziiikocht ist ein Mittelweg zwischen beiden, grafisch ansprechend und raffinierte Rezepte!

Interesse an den anderen, ebenfalls positiv bewerteten Blogs? Hier noch eine kleine Liste:


16.08.2012

GPSies - Tracks for vagabonds

GPSies (sprich tschyp-sies oder auch "Das mächtige Tool, mit dem man super seine Tracks hochladen kann") ist in erster Linie eine Webseite für das Hochladen und Teilen von unterschiedlichen GPS Tracks.
Zielgruppen sind dabei Wanderer, Radler, Sportler oder einfach nur naturbegeisterte, technikverliebte Menschen.

Gestoßen bin ich auch die Webseite, nachdem ich in verschiedenen Reiseberichten auf den ODS und dem Rad-Forum die Verweise auf den Track der Reise gesehen habe.

Die Idee hinter GPSies ist, dass jeder seine Strecken veröffentlichen und austauschen kann. Zusätzlich können die Strecken auch heruntergeladen und mit einem GPS der Wahl verwendet werden. Die Nutzung ist (zum aktuellen Zeitpunkt) noch kostenfrei und wird ausschließlich durch Werbung und Spenden finanziert. Neben den gängigen Formaten wie KML und KMZ (Google Earth), GPX oder PCX5, werden auch andere, nicht so bekannte Formate unterstützt. Sollte ein Format fehlen, bieten die Betreiber die Möglichkeit eine Beispieldatei per Mail zu analysieren und in die Liste der unterstützten Formate einzubinden.


Die Betreiber stellen außerdem Apps für unterschiedlichen Plattformen bereit, so dass eine möglichst große Zielgruppe, aber auch möglichst viele potentielle Teilnehmer erreicht werden können.

Wirft man einen Blick auf die Beteiligung, so erkennt man schnelle, dass bereits einige Leute an der Webseite mitarbeiten bzw. ihre Tracks dort zur Verfügung stellen. Als kleines Beispiel dient ein Screenshot aus der Heimat:


Dort ist bereits jetzt zu erkennen, dass viele User ihre persönlichen Tracks dort zur Verfügung stellen.
Will man eine spezielle Strecke finden, dann bietet das Portal auch eine Suche in den vorhandenen Datensätzen an! Sucht man zum Beispiel eine Möglichkeit auf dem Weserradweg zu fahren, so kann man speziell danach suchen:


Als kleines Schmanckerl gibt es zum eigentlichen Track auch direkt die Bilder, statistische Daten und Art der Strecke als begleitende Informationen dazu! In der Detailansicht finden sich dann neben Karte, Beschreibung und Tourprofil auch persönliche Eindrücke, wie Bewertung, Anspruch oder Spaßfaktor der Strecke.


Ein Blick auf die Statistik (oben) zeigt, dass der Zuwachs an Strecken pro Jahr rasant wächst und die Seite so sicherlich noch einige Jahre Bestand haben wird. Wie es um die Qualität der hochgeladenen Daten ausschaut wird man dann sehen müssen. Das interne Bewertungssystem ist aber sicherlich geeignet um totale Flops bereits vorab ausschließen zu können. Die Frage ist nur, ob das Bewerten von Strecken bei über 2000 neuen Strecken pro Tag noch sinnvoll möglich ist!

Für mich auf jeden Fall eine Bereicherung für die Tourplanung!