09.09.2011

Möhrensuppe mit Ingwer und Kokosmilch

Schnell, aber lecker war heute Abend die Devise. Nach einer langen Arbeitswoche musste also eine schmackhafte Alternative zum Fastfood her. Da fiel die Wahl schnell auf eine cremige Möhrensuppe mit Ingwer und Kokosmilch. Schnell gemacht, lecker und nicht ganz so schwer im Magen.

Die Zutatenliste ist überschaubar und selbst für mehrere Personen preislich überschaubar.

  • 1 Zwiebel
  • 1 Zehe Knoblauch
  • 1 Bund Möhren
  • Ingwer (frisch oder gemahlen)
  • 1 Pkg. Sahne
  • 1 Dose Kokosmilch
  • 500ml Fond (Gemüsefond oder Rinderfond, je nach Geschmack)
  • 1 Löffel Butter
  • Salz und Pfeffer
Als erstes wird die Zwiebel fein gewürfelt.


Danach die Knoblauchzehen vorbereiten und mit der Microplane reiben.


Zusammen mit ein wenig Butter in einem passenden Topf glasig dünsten.


In der Zwischenzeit die Möhren waschen, putzen und fein blättrig aufschneiden.


Zusammen mit den Zwiebeln und dem Knoblauch in der Butter andünsten.


Die Sahne dazugeben.


Kokosmilch und Fond ebenfalls dazugeben.


Zusammen mit dem Fond dürfen die Zutaten nun ca. 30 Minuten vor sich hinköcheln bis die Möhren richtig weich gekocht sind. Danach wird die Petersilie vorbereitet.


Sieht schon lecker aus, oder?


Nun noch mit dem Zauberstab pürieren und schon ist das Abendessen gesichert.


Zusammen mit ein wenig Baguette und einem Klacks Creme Fraiche servieren!


Lecker war's!

07.09.2011

Spring AOP - Logging auf Methodenlevel leicht gemacht

Richtiges Logging innerhalb der Anwendung ist eine Kunst für sich. Das Logging an sich sollte minimal-invasiv sein, so dass der Entwickler in der normalen Programmiertätigkeit nicht eingeschränkt oder behindert wird. Das Logging sollte zentral definiert und vor allem auch zentral konfigurierbar sein.

Eine Möglichkeit Logging zu realisieren ist die Nutzung der aspektorientierten Programmierung. Dabei wird der bestehende Code weitesgehend unangetastet gelassen und nur eine weitere Ebene über den bestehenden Code gelegt. Die funktionalen Aufgaben (Core-Level-Concerns) und damit gleichzeitig die Kernaufgaben der Software bleiben im Mittelpunkt und werden nicht mit den bestehenden technischen Randbedingungen (System-Level-Concerns) vermischt.

Gerade Spring bietet mit der einfachen Integration von AspectJ eine einfach zu konfigurierende Möglichkeit ein systemweites, losgelöstes Logging zu realisieren. Und genau um dieses Thema, visualisiert an einem kleinen Beispiel, soll es in diesem Eintrag gehen. Wie immer gilt, dass die Ausschnitte vergrößert werden können, sollten diese zu klein sein.

Um den Overhead zur Erstellung eines Projektes so klein wie möglich zu gestalten, wird komplett auf eine Verwaltung der Dependencies durch Maven gesetzt. Daher an dieser Stelle nur die Erläuterung der berücksichtigten Dependencies.

Für die Basiskonfiguration von Spring wird die folgende Dependency benötigt.

Spring-Context Dependency



Sollte diese in dem Standard-Repository von Maven nicht vorhanden sein, so kann auf das folgende Repository ausgewichen werden.
Alternatives Repository für Spring Dependencies
Für die Nutzung von AspectJ werden zwei Dependencies benötigt. Zum einen AspectJ selbst, aber zum anderen auch CGLIB zur dynamischen Erstellung von Bytecode zur Laufzeit des Programmes.

AspectJ und CGLIB Dependencies
Das Beispiel selbst soll nachher durch einen Test gestartet und damit auch direkt getestet werden. Dafür werden sowohl Spring-Test (inkl. TestNG) als auch JUnit benötigt.

Hinzufügen von JUnit und Spring-Test
Die Ausgaben auf der Konsole erfolgen dann via Log4J und nicht über System.out oder System.err.

Log4j Dependency
Nach einem initialen Build des Projekts und dem Download der Bibliotheken sollten diese innerhalb des Maven Projektes vorhanden sein.

Dependencies im Projekt
Der eigentliche Aufbau des Beispiels ist einfach gehalten, damit die wesentlichen Punkte besser zur Geltung kommen. Das Beispiel besteht aus einer Spring Bean mit implementiertem Interface, der AOP-Komponente, einer Testklasse und den Konfigurationsdateien.

Klassendiagramm für das Beispiel
Die Konfiguration wird, soweit möglich, direkt über Annotationen innerhalb der Klassen realisiert. Um einen Einstieg in das Beispiel zu finden, zuerst die Erläuterung der Implementierung der HelloWorldComponent.

HelloWorldComponent Interface

Die eigentliche Implementierung ist ebenfalls einfach gehalten und Bedarf keiner weiteren Erläuterung.

Implementierung der Komponente
Diese einfache Implementierung bildet die Basis für das Beispiel und wird durch den aspektorientierten Logger vervollständigt. Dieser wird innerhalb der Klasse AopMethodLogger implementiert.

Aspektorientierter Logger auf Methodenlevel
Der Logger wird durch die Annotation @Component Spring Komponente definiert, so dass eine Initialisierung durch das Spring Framework gegeben ist. Damit der Logger gleichzeitig als Aspekt bekannt ist, wird zusätzlich die Annotation @Aspect verwendet, die ebenfalls durch Spring ausgewertet wird. Die eigentliche Methode für das Loggen kann frei definiert werden. In diesem Fall wird der Methode eine Instanz eines ProceedingJoinPoints übergeben, damit auf Eigenschaften der Methode zugegriffen und die Methode nach dem Loggen weiter ausgeführt werden kann. Damit die Methode überhaupt als Aspekt um eine aufgerufene Methode definiert wird, muss mit der Annotation @Around ein Pointcut gekennzeichnet werden. Zusätzlich wird ein Pattern für den Pointcut definiert, damit festgelegt werden kann, wann in diesen Pointcut verzweigt werden soll. In diesem Fall definiert der Ausdruck "execution(* de.sado.examples..*.*(..))" die Ausführung einer jeden Methode innerhalb des Packages de.sado.examples, egal wie die Signatur der Methode definiert ist. Eine sehr gute Beschreibung der weiteren Möglichkeiten findet sich in der offiziellen Referenz zur aktuellen Version von Spring.

Neben der Implementierung der Klassen ist auch die Konfiguration von Spring relevant. Durch die Annotations-gestützte Implementierung bleibt die erforderliche Konfigurationsdatei allerdings recht schlank.

Spring Konfigurationsdatei
Neben der Bean Definition der HelloWorldComponent finden sich hier auch die Scan-Anweisung für das Scannen nach Komponenten und die Konfiguration der AOP Nutzung. Weitere Konfigurationsschritte sind nicht mehr notwendig.

Für den Start des kleinen Beispiel eignet sich ein durch den SpringJUnit4ClassRunner gesteuerter Test. Der Runner garantiert, dass ein interner IoC Container mitgestartet wird und so keine Spring Referenzen gemockt oder per Hand aufgelöst werden müssen. Es kann sogar die Konfiguration der Anwendung wiederverwendet werden, wenn sich dies ergibt.

Test der erstellten Komponente
Durch die Annotation @ContextConfiguration wird die Konfigurationsdatei referenziert. Die Annotation @RunWith sorgt für die Ausführung des Tests mit Hilfe des Spring-internen Testrunners. Somit müssen die Tests nur noch per Maven gestartet werden und schon sieht man das Ergebnis auf der Kommandozeile.


Das Beispiel kann bei Cloudbees ausgecheckt werden. Dort befindet sich ein fertiges Eclipse Projekt mit den entsprechenden Einstellungen.

05.09.2011

Teutotour 2011 - Bilder von der Strecke!

Am Wochenende stand die 13. Teutotour in dem beschaulichen Städtchen Bad Iburg an. Dabei ging es vor allem um das Kennenlernen verschiedener Strecken rund um Iburg und Umgebung. Bedingt durch das schlechtere Wetter waren zwar deutlich weniger Teilnehmer am Start als es noch im vergangenen Jahr der Fall gewesen ist, aber das hat dem Spaß sicherlich keinen Abbruch getan.

Und auch in diesem Jahr habe ich die eine oder andere Aufnahme neben, auf und vor der Strecke gemacht, so dass der ein oder andere Teilnehmer sich sicherlich wiederfinden wird!

Vor dem Start waren noch alle glücklich und zufrieden.

Teilnehmer aus Holland vor dem Start
Bei der ersten Abfahrt hingegen konnte der ein oder andere den Matsch schon nicht mehr verbergen.

Abfahrt auf einem Singletrail
Und wie im jeden Jahr war der letzte Anstieg der Tour ein Garant für erschöpfte, aber glückliche Gesichter!

Wheelie trotz Erschöpfung
Im Ziel waren konnten sich dann wieder alle mit den drei B's stärken: Bier, Brötchen und Bratwurst...

Wo bin ich noch gleich hergefahren?
Mir hat es, wie auch in den Jahren davor, unheimlich viel Spaß bereitet bei der Tour dabei zu sein und den einen oder anderen Teilnehmer, den man bereits in den Jahren davor getroffen hat, wieder zu sehen!

Bis zum nächsten Jahr!

17.08.2011

Hmmm, lecker! Schichtfleisch aus dem Dutch Oven!

Nach der ersten Runde Schichfleisch auf Nordstrand musste noch eine weitere, dokumentierte Runde hier zu Hause folgen. Da ein DO viel zu viel für zwei Personen ist und die kleinen Größen einfach den Aufwand nicht rechtfertigen, wurde schleunigst Besuch eingeladen. Zutaten für den 12er DO waren
  • 2,3kg Schweinenacken
  • 0,75kg Bauchspeck, geräuchert
  • Metzgerzwiebeln (3 Stk.)
  • Butt Glitter Rub 
  • Sweet Baby Rays BBQ Sauce
 Angefangen wurde mit der Vorbereitung der Zwiebeln. Diese wurden in Scheiben geschnitten!


Der Nacken wurde ebenfalls in dünne Scheiben (zwischen 5-10mm) stark geschnitten, so dass man diesen ordentlichen schichten kann. Direkt im Anschluss mit dem Rub würzen!


Der Speck wurde bereits durch dem MdV (Metzger des Vertrauens) in 2-3mm starke Scheiben geschnitten, so dass ich mir das sparen konnte.


Danach wurde der DO leicht gefettet und immer abwechselnd Fleisch, Zwiebeln und Speck senkrecht geschichtet.


Oben drauf noch ein Spritzer des besten BBQ Sauce!


Und schon konnte es in die Feuerschale für 4h Garzeit gehen.


Für die Kohleverteilung habe ich 10 Brekkies unten und 17 Brekkies auf dem Deckel gewählt. Nach ca. 2h habe ich noch einmal Brekkies sparsam nachgelegt.

Da der Besuch früher als gedacht gekommen ist, musste es mit dem Essen schneller gehen als sonst. So bleibt nur ein Topfbild als schon bereits einiges geplündert worden ist.


Zusammen mit ein wenig Salat und Brot ein leckeres Abendessen. Getränk dazu war in diesem Fall die Hausmarke mit Lakritz.

14.08.2011

Einmal 9er Nuggets mit Salat zum Mitnehmen!

Angestachelt durch eine Kreation aus dem Grillsportverein (Chicken-Nuggets mit Curry-Soße ... aber richtig!) habe ich mich ebenfalls an der Herstellung von Chicken Nuggets versucht.

 
Die Zutaten sind dementsprechend einfach, mehr als
  •  Hähnchenbrust, 
  • Tacos, 
  • Eier,
  • Mehl,
  • und Gewürze
waren hier nicht notwendig. Dazu noch den obligatorischen Grill und ein paar Spieße und es konnte losgehen.

Begonnen wurde mit dem parieren und zurechtschneiden der Hähnchenbrüste.


Darauf folgte das vorbereiten der Panade aus zerkleinerten Tacos.


Ein Ei oder auch zwei, damit überhaupt paniert werden kann ;-)


Würzen der Hähnchenflügel mit einem Rub. Da hat sich im Nachhinein herausgestellt, das ausschließlich S+P besser gewesen wären. So war es fast zu kräftig im Geschmack.


Aufbau der Panierstation...


... und danach spießen für das Grillen.


Dazu sollte es mal was Gesundes geben, damit die Verwandtschaft nicht immer meckert freundlich auf die ungesunde Ernährung hinweist ;-)


Nach ca. 25 Minuten auf dem Grill (ca. 180°C) konnte auch schon gegessen werden.


Hmmmm, lecker, lecker...


Dazu noch ein Getränk der Wahl und der Abend war in Ordnung! In dieser Woche mal Club-Mate.


Zwar weniger schnell als bei den unterschiedlichen Franchise Unternehmen. Aber dafür um einiges besser ;-)

Guten Hunger!