<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>lost in thought</title>
	<atom:link href="http://joachim.weinbrenner.name/feed/" rel="self" type="application/rss+xml" />
	<link>http://joachim.weinbrenner.name</link>
	<description>random thoughts from Joachim Weinbrenner</description>
	<lastBuildDate>Mon, 05 Mar 2012 19:25:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>MATHEMA Campus Tag 2 (25.02.2012)</title>
		<link>http://joachim.weinbrenner.name/2012/02/25/mathema-campus-tag-2-25-02-2012/</link>
		<comments>http://joachim.weinbrenner.name/2012/02/25/mathema-campus-tag-2-25-02-2012/#comments</comments>
		<pubDate>Sat, 25 Feb 2012 14:39:05 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Konferenz]]></category>
		<category><![CDATA[Play Framework]]></category>
		<category><![CDATA[Webentwicklung]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=338</guid>
		<description><![CDATA[Den zweiten Tag des MATHEMA Campus konnte ich aufgrund privater Verpflichtungen leider erst am Nachmittag genießen, so dass ich mir nur zwei Vorträge anhören konnte, die ich nun kurz erläutere. Vor zwei, drei Jahren hatte ich es mir schon mal angesehen, nun gab es einen Vortrag dazu: das Play Framework. Und ich muss sagen, es [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_373" class="wp-caption alignleft" style="width: 310px"><a href="http://joachim.weinbrenner.name/wp-content/uploads/campus3.jpg"><img class="size-full wp-image-373" title="campus3" src="http://joachim.weinbrenner.name/wp-content/uploads/campus3.jpg" alt="" width="300" height="220" /></a><p class="wp-caption-text">Campus Besucher</p></div>
<p>Den zweiten Tag des MATHEMA Campus konnte ich aufgrund privater Verpflichtungen leider erst am Nachmittag genießen, so dass ich mir nur zwei Vorträge anhören konnte, die ich nun kurz erläutere.</p>
<p>Vor zwei, drei Jahren hatte ich es mir schon mal angesehen, nun gab es einen Vortrag dazu: das <a rel="nofollow" href="http://www.playframework.org/">Play Framework</a>. Und ich muss sagen, es hat sich viel getan! Mit Play werden stateless Webanwendungen entwickelt, bei denen man im Frontend in ganz normalem HTML mit ein paar extra Tags arbeitet, die seitens Play dann mit Leben erfüllt werden. Alles ist sauber und streng nach einer MVC Architektur gegliedert. Auf der Konfigurationsseite muss man sich im wesentlichen nur um eine Datei kümmern, die für das Routing von URLs zu den passenden Controllern zuständig ist. Alles in allem eine sehr schöne Sache, die Spaß macht und einfach zu erlernen ist. Auch zahlreiche <a rel="nofollow" href="http://www.playframework.org/modules">Erweiterungen</a> sind bereits auf dem Markt. Leider wurde mir noch nicht klar, wie gut die Sache für große Projekte einsetzbar ist, was ja auch am Play Server hängt &#8211; viel Erfahrung gibt es scheinbar noch nicht.</p>
<p>Als letzten Vortrag besuchte ich Michael Wiedekings <em>Da Capo</em>, bei dem  es um die Vorstellung des aktuellen Stands seiner derzeit in Entstehung befindlichen Programmiersprache (Arbeitstitel AL<em>x</em>) ging. Aktuell ist die Sprache erst mal auf ein mathematisch sauberes Fundament gestellt und vor allem konzeptionell existent. Die konkrete Erstellung eines Compilers, sowie die syntaktischen Details sind derzeit noch offen &#8211; &#8220;versprochen&#8221; wurde aber, dass es zum <a rel="nofollow" href="http://www.herbstcampus.de/">Herbstcampus</a> etwas zu sehen gibt. Alles in allem ein interessanter Ansatz mit einer begeisternden Definition &#8211; bin schon gespannt auf die nächsten Fortschritte.</p>
<p>Insgesamt hatte ich viel Spaß, interessante Themen, nette Leute, coole Ideen und Inspirationen &#8211; was will man mehr. Freue mich schon auf den Herbstcampus!</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=MATHEMA%20Campus%20Tag%202%20%2825.02.2012%29&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2012%2F02%2F25%2Fmathema-campus-tag-2-25-02-2012%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2012/02/25/mathema-campus-tag-2-25-02-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MATHEMA Campus Tag 1 (24.02.2012)</title>
		<link>http://joachim.weinbrenner.name/2012/02/24/mathema-campus-tag-1-24-02-2012/</link>
		<comments>http://joachim.weinbrenner.name/2012/02/24/mathema-campus-tag-1-24-02-2012/#comments</comments>
		<pubDate>Fri, 24 Feb 2012 20:54:50 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Konferenz]]></category>
		<category><![CDATA[PhoneGap]]></category>
		<category><![CDATA[Web Intents]]></category>
		<category><![CDATA[Webentwicklung]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=334</guid>
		<description><![CDATA[Der erste Tag des diesjährigen MATHEMA Campus hat mir großen Spaß gemacht. Hier ein kurzer Bericht über die von mir besuchten Vorträge. Den Einstieg machte wie üblich, Michael Wiedeking mit frei vorgetragenen Analysen, Berichten und Betrachtungen rund um die Entwicklung aktueller Programmiersprachen. Mein Favorit in diesem Jahr war gleich der erste Vortrag: Remote Control. Hier [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://joachim.weinbrenner.name/wp-content/uploads/campus1.jpg"><img class="alignleft size-full wp-image-369" title="campus1" src="http://joachim.weinbrenner.name/wp-content/uploads/campus1.jpg" alt="" width="190" height="385" /></a>Der erste Tag des diesjährigen <a rel="nofollow" href="http://www.mathema.de/events/campus/">MATHEMA Campus</a> hat mir großen Spaß gemacht. Hier ein kurzer Bericht über die von mir besuchten Vorträge. Den Einstieg machte wie üblich, Michael Wiedeking mit frei vorgetragenen Analysen, Berichten und Betrachtungen rund um die Entwicklung aktueller Programmiersprachen.</p>
<p>Mein Favorit in diesem Jahr war gleich der erste Vortrag: Remote Control. Hier stellte <a rel="nofollow" href="http://www.knuettel.de">Marco Knüttel</a> die <a rel="nofollow" href="http://www.arduino.cc/">OpenSource Elektronik Plattform Arduino</a> im Zusammenspiel mit <a rel="nofollow" href="http://www.android.com/">Android</a> vor. Absolut faszinierend, was man hier für wenig Geld so alles basteln kann. Vorgestellt wurde die Fernsteuerung eines Ferienhauses (Kameras, Heizungssteuerung, Sensoren) und ähnliches im Wohnmobil. Ich hoffe, dass ich bald Zeit finde, mich hier etwas rein zu vertiefen <img src='http://joachim.weinbrenner.name/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Unter dem Titel Scriptease.js bot <a rel="nofollow" href="http://www.goloroden.de/">Golo Roden</a> ein unterhaltsames Live-Coding in Sachen Javascript. Gerade für jemanden wie mich, der zwar oft mit JS arbeitet, dort aber kein echter Experte ist, waren sehr viele nützliche Tipps und Hinweise dabei. Vor allem Dinge, die einem eine zeitraubende Fehlersuche bescheren können, z.B. etwas wie: <em>null + &#8220;ify&#8221;   // =&gt; &#8220;nullify&#8221; ! </em>Sein Fazit: &#8220;Nie vergessen, dass Javascript keine C-basierte Sprache ist, so sehr sie danach auch aussieht, sondern ihre Wurzeln bei LISP/Scheme hat!</p>
<p><a rel="nofollow" href="http://www.werner-eberling.de/">Werner Eberling</a> brachte eine praxisnahe Einführung in <a rel="nofollow" href="http://phonegap.com/">PhoneGap</a> und <a rel="nofollow" href="http://jquerymobile.com/">jQuery Mobile</a> &#8211; eine Kombination, die auch mein Topfavorit für eine schnelle Möglichkeit ist, native Apps auf allen gängigen mobilen Plattformen zu generieren.</p>
<div id="attachment_371" class="wp-caption aligncenter" style="width: 623px"><a href="http://joachim.weinbrenner.name/wp-content/uploads/campus2.jpg"><img class="size-full wp-image-371" title="campus2" src="http://joachim.weinbrenner.name/wp-content/uploads/campus2.jpg" alt="" width="613" height="180" /></a><p class="wp-caption-text">Arduino Schlachtfeld</p></div>
<p>Sehr interessant, wenngleich aktuell noch nicht praxistauglich, war der Vortrag zu <a rel="nofollow" href="http://webintents.org/">Web Intents</a> von Willie Chieukam. Web Intents hat die Verknüpfung von Webseiten bzw. webbasierten Anwendungen mit nützlichen Diensten zum Ziel. Beispiel: Eine Webseite möchte die Möglichkeit bieten ein hochgeladenes Bild zuzuschneiden. Statt nun selbst ein Javascript-Monstrum zu implementieren, gibt man auf der Seite einfach an, dass man einen Service zum Zuschneiden benötigt. Der User kann dann aus einer Auswahl von Diensten wählen und dort sein Bild zuschneiden, welches bearbeitet zur Webseite zurück kommt. Die Auswahl kann im Browser für spätere Aufrufe gespeichert werden.<em><br />
</em></p>
<p>Nach einem guten Abendessen gab es eine Publikumsdiskussion mit dem Thema, ob die Objektorientierung sich überlebt hat. Ein echtes Fazit kam nicht zustande, aber die bekannten Probleme (Mehrfachvererbung, Vererbungshierarchien, Mapping Objekt zu relationaler DB, &#8230;) wurden heiß diskutiert.</p>
<p>Einen lustigen Abschluß bildete der späte Abend: unter dem Titel &#8220;Desaströs&#8221; wurden Filmausschnitte gezeigt, bei denen so einiges schief geht &#8211; untermalt von entsprechend amüsanten Kommentaren seitens Michael Wiedeking.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=MATHEMA%20Campus%20Tag%201%20%2824.02.2012%29&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2012%2F02%2F24%2Fmathema-campus-tag-1-24-02-2012%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2012/02/24/mathema-campus-tag-1-24-02-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ausdrücke mit der ScriptEngine auswerten</title>
		<link>http://joachim.weinbrenner.name/2011/05/02/ausdrucke-mit-der-scriptengine-auswerten/</link>
		<comments>http://joachim.weinbrenner.name/2011/05/02/ausdrucke-mit-der-scriptengine-auswerten/#comments</comments>
		<pubDate>Mon, 02 May 2011 12:12:10 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=322</guid>
		<description><![CDATA[Immer wieder nützlich: die ScriptEngine in Java (oder auch in Groovy) ermöglicht das einfache Auswerten von Ausdrücken. Hier ein kleines Beispiel (in Groovy, lässt sich aber mit minimaler Anpassung in Java umsetzen (Cast in Zeile 7 und Alternative Ausgabe in Zeile 8)): 1 2 3 4 5 6 7 8 9 10 11 import javax.script.ScriptEngineManager; [...]]]></description>
			<content:encoded><![CDATA[<p>Immer wieder nützlich: die <a rel="nofollow" href="http://download.oracle.com/javase/6/docs/api/javax/script/package-summary.html" target="_blank">ScriptEngine</a> in Java (oder auch in Groovy) ermöglicht das einfache Auswerten von Ausdrücken. Hier ein kleines Beispiel (in Groovy, lässt sich aber mit minimaler Anpassung in Java umsetzen (Cast in Zeile 7 und Alternative Ausgabe in Zeile 8)):</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.script.ScriptEngineManager</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.script.ScriptEngine</span><span style="color: #339933;">;</span>
&nbsp;
ScriptEngineManager mgr <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ScriptEngineManager<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
ScriptEngine jsEngine <span style="color: #339933;">=</span> mgr.<span style="color: #006633;">getEngineByName</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;JavaScript&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #003399;">Boolean</span> result <span style="color: #339933;">=</span> jsEngine.<span style="color: #006633;">eval</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;a=19; b=2; c=2; a&gt;b &amp;&amp; c==b&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  print <span style="color: #0000ff;">&quot;Ergebnis: &quot;</span> <span style="color: #339933;">+</span> result<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span>ScriptException ex<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    ex.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>In diesem Fall wird <em>Ergebnis: true</em> auf der Konsole ausgegeben. Dies nur zur Inspiration &#8211; die Vielfalt der Möglichkeiten lässt sich nun bestimmt schon erahnen &#8230;</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Ausdr%C3%BCcke%20mit%20der%20ScriptEngine%20auswerten&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2011%2F05%2F02%2Fausdrucke-mit-der-scriptengine-auswerten%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2011/05/02/ausdrucke-mit-der-scriptengine-auswerten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven Jetty Port einstellen</title>
		<link>http://joachim.weinbrenner.name/2011/02/07/maven-jetty-port-einstellen/</link>
		<comments>http://joachim.weinbrenner.name/2011/02/07/maven-jetty-port-einstellen/#comments</comments>
		<pubDate>Mon, 07 Feb 2011 21:26:32 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Maven]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=310</guid>
		<description><![CDATA[Nachdem ich nun schon mehrmals nachschlagen musste, schreibe ich es hier als &#8220;Merkzettel&#8221; auf: Was muss man in die pom.xml schreiben, damit Jetty bei mvn jetty:run auf einem gewünschten Port startet (im Beispiel 8088). Darüber hinaus soll die Applikation direkt im Webroot verfügbar sein. Folgender &#8220;POM-Schnipsel&#8221; erledigt dies: &#60;plugin&#62; &#60;groupId&#62;org.mortbay.jetty&#60;/groupId&#62; &#60;artifactId&#62;maven-jetty-plugin&#60;/artifactId&#62; &#60;configuration&#62; &#60;scanIntervalSeconds&#62;10&#60;/scanIntervalSeconds&#62; &#60;connectors&#62; &#60;connector [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem ich nun schon mehrmals nachschlagen musste, schreibe ich es hier als &#8220;Merkzettel&#8221; auf: Was muss man in die <em>pom.xml</em> schreiben, damit Jetty bei <em>mvn jetty:run</em> auf einem gewünschten Port startet (im Beispiel 8088). Darüber hinaus soll die Applikation direkt im Webroot verfügbar sein. Folgender &#8220;POM-Schnipsel&#8221; erledigt dies:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.mortbay.jetty<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>maven-jetty-plugin<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;scanIntervalSeconds<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>10<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/scanIntervalSeconds<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;connectors<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;connector</span> <span style="color: #000066;">implementation</span>=<span style="color: #ff0000;">&quot;org.mortbay.jetty.nio.SelectChannelConnector&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;port<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>8088<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/port<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/connector<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/connectors<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;webAppConfig<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;contextPath<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>/<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/contextPath<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/webAppConfig<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Die Anwendung sollte nun unter http://localhost:8088/ verfügbar sein.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Maven%20Jetty%20Port%20einstellen&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2011%2F02%2F07%2Fmaven-jetty-port-einstellen%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2011/02/07/maven-jetty-port-einstellen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prime-Time! Artikel im KaffeeKlatsch</title>
		<link>http://joachim.weinbrenner.name/2011/01/29/prime-time-artikel-im-kaffeeklatsch/</link>
		<comments>http://joachim.weinbrenner.name/2011/01/29/prime-time-artikel-im-kaffeeklatsch/#comments</comments>
		<pubDate>Sat, 29 Jan 2011 11:26:39 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[PrimeFaces]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=306</guid>
		<description><![CDATA[Der neue KaffeeKlatsch (Das Magazin rund um Software-Entwicklung) ist da. Der KaffeeKlatsch kommt monatlich als PDF und kann kostenlos per E-Mail abonniert werden. Diesmal findet ihr darin auch meinen Artikel zur JSF-Komponentenbibliothek PrimeFaces. Viel Spaß beim Lesen.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-307" title="kaffeeklatsch" src="http://joachim.weinbrenner.name/wp-content/uploads/kaffeeklatsch.jpg" alt="KaffeeKlatsch" width="200" height="37" />Der neue <a rel="nofollow" href="http://www.bookware.de/kaffeeklatsch/intro" target="_blank">KaffeeKlatsch</a> (Das Magazin rund um Software-Entwicklung) ist da. Der KaffeeKlatsch kommt monatlich als PDF und kann kostenlos per E-Mail abonniert werden.</p>
<p>Diesmal findet ihr darin auch meinen Artikel zur JSF-Komponentenbibliothek <a title="PrimeFaces" rel="nofollow" href="http://www.primefaces.org/" target="_blank">PrimeFaces</a>. Viel Spaß beim Lesen.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Prime-Time%21%20Artikel%20im%20KaffeeKlatsch&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2011%2F01%2F29%2Fprime-time-artikel-im-kaffeeklatsch%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2011/01/29/prime-time-artikel-im-kaffeeklatsch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Folien &#8220;Der lachende Dritte&#8221;</title>
		<link>http://joachim.weinbrenner.name/2010/09/18/folien-der-lachende-dritte/</link>
		<comments>http://joachim.weinbrenner.name/2010/09/18/folien-der-lachende-dritte/#comments</comments>
		<pubDate>Sat, 18 Sep 2010 21:14:33 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[IceFaces]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[Konferenz]]></category>
		<category><![CDATA[PrimeFaces]]></category>
		<category><![CDATA[RichFaces]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=299</guid>
		<description><![CDATA[Jetzt können meine Folien vom Vortrag beim Herbstcampus 2010 letzten Montag online betrachtet werden: Der lachende Dritte]]></description>
			<content:encoded><![CDATA[<p>Jetzt können meine Folien vom <a rel="nofollow" href="http://www.herbstcampus.de/hc10/program/sessions.html#5" target="_blank">Vortrag beim Herbstcampus 2010</a> letzten Montag online betrachtet werden:</p>
<div style="width:425px" id="__ss_5230446"><strong style="display:block;margin:12px 0 4px"><a rel="nofollow" href="http://www.slideshare.net/joachimweinbrenner/der-lachende-dritte" title="Der lachende Dritte">Der lachende Dritte</a></strong><object id="__sse5230446" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=derlachendedritte-100918154211-phpapp02&#038;stripped_title=der-lachende-dritte&#038;userName=joachimweinbrenner" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse5230446" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=derlachendedritte-100918154211-phpapp02&#038;stripped_title=der-lachende-dritte&#038;userName=joachimweinbrenner" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Folien%20%26%238220%3BDer%20lachende%20Dritte%26%238221%3B&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2010%2F09%2F18%2Ffolien-der-lachende-dritte%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2010/09/18/folien-der-lachende-dritte/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java 4-Ever</title>
		<link>http://joachim.weinbrenner.name/2010/06/29/java-4-ever/</link>
		<comments>http://joachim.weinbrenner.name/2010/06/29/java-4-ever/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 19:44:48 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=294</guid>
		<description><![CDATA[Einfach genial, das bedarf keines weiteren Kommentars!]]></description>
			<content:encoded><![CDATA[<p>Einfach genial, das bedarf keines weiteren Kommentars!<br />
<object width="500" height="304"><param name="movie" value="http://www.youtube.com/v/A1zySeNpW20&#038;hl=de_DE&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/A1zySeNpW20&#038;hl=de_DE&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="304"></embed></object></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Java%204-Ever&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2010%2F06%2F29%2Fjava-4-ever%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2010/06/29/java-4-ever/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vortrag auf dem Herbstcampus 2010</title>
		<link>http://joachim.weinbrenner.name/2010/06/14/vortrag-auf-dem-herbstcampus-2010/</link>
		<comments>http://joachim.weinbrenner.name/2010/06/14/vortrag-auf-dem-herbstcampus-2010/#comments</comments>
		<pubDate>Mon, 14 Jun 2010 19:30:52 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[IceFaces]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[Konferenz]]></category>
		<category><![CDATA[PrimeFaces]]></category>
		<category><![CDATA[RichFaces]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=288</guid>
		<description><![CDATA[Es freut mich sehr, dass ich auf dem kommenden Herbstcampus 2010 einen Vortrag halten darf. Ich werde die drei bekannten AJAX-JSF Frameworks PrimeFaces, RichFaces und IceFaces unter die Lupe nehmen und vergleichen. Der Vortrag &#8220;Der lachende Dritte? &#8211; PrimeFaces im Vergleich zu RichFaces und IceFaces&#8221; findet am Montag, 13. 9., 11:20 – 12:30 Uhr statt. Gespannt bin ich [...]]]></description>
			<content:encoded><![CDATA[<p>Es freut mich sehr, dass ich auf dem kommenden Herbstcampus 2010 einen Vortrag halten darf. Ich werde die drei bekannten AJAX-JSF Frameworks <a rel="nofollow" href="http://www.primefaces.org/" target="_blank">PrimeFaces</a>, <a rel="nofollow" href="http://www.jboss.org/richfaces" target="_blank">RichFaces</a> und <a rel="nofollow" href="http://www.icefaces.org/main/home/" target="_blank">IceFaces</a> unter die Lupe nehmen und vergleichen.</p>
<p>Der Vortrag <strong>&#8220;Der lachende Dritte? &#8211; PrimeFaces im Vergleich zu RichFaces und IceFaces&#8221;</strong> findet am Montag, 13. 9., 11:20 – 12:30 Uhr statt.</p>
<p>Gespannt bin ich auch auf das umfangreiche Konferenzprogramm mit zahlreichen interessanten Vorträgen und Referenten. Ausführliche Informationen zur Konferenz findet man unter <a rel="nofollow" href="http://www.herbstcampus.de/hc10/index.html" target="_blank">http://www.herbstcampus.de/hc10/index.html</a></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Vortrag%20auf%20dem%20Herbstcampus%202010&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2010%2F06%2F14%2Fvortrag-auf-dem-herbstcampus-2010%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2010/06/14/vortrag-auf-dem-herbstcampus-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problem: rich:editor eingebettet in rich:modalPanel</title>
		<link>http://joachim.weinbrenner.name/2010/04/22/problem-richeditor-eingebettet-in-richmodalpanel/</link>
		<comments>http://joachim.weinbrenner.name/2010/04/22/problem-richeditor-eingebettet-in-richmodalpanel/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 19:18:12 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[RichFaces]]></category>
		<category><![CDATA[Webentwicklung]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=280</guid>
		<description><![CDATA[Mal wieder so eine kleine Sache, an der man unnötig hängen bleibt und auf deren Lösung man ohne googeln kaum kommen kann. Ausgangsstellung: Ich hatte in meiner JSF-Oberfläche mit RichFaces einen modalen Dialog eingebaut, der unter anderem einen Editor enthalten soll. Eigentlich ganz easy, nichts besonderes. Der Code sah vereinfacht und gekürzt in etwa so [...]]]></description>
			<content:encoded><![CDATA[<p>Mal wieder so eine kleine Sache, an der man unnötig hängen bleibt und auf deren Lösung man ohne googeln kaum kommen kann.</p>
<p>Ausgangsstellung: Ich hatte in meiner JSF-Oberfläche mit <a rel="nofollow" href="http://www.jboss.org/richfaces" target="_blank">RichFaces</a> einen modalen Dialog eingebaut, der unter anderem einen Editor enthalten soll. Eigentlich ganz easy, nichts besonderes. Der Code sah vereinfacht und gekürzt in etwa so aus:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;rich:modalPanel</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;editpanel&quot;</span> <span style="color: #000066;">autosized</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;h:form<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		... (andere Komponenten) ...
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;rich:editor</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;editor&quot;</span> <span style="color: #000066;">width</span>=<span style="color: #ff0000;">&quot;400&quot;</span> <span style="color: #000066;">height</span>=<span style="color: #ff0000;">&quot;100&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;#{myBean.dialogBeschreibung}&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;a4j:commandButton</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;Speichern&quot;</span> <span style="color: #000066;">action</span>=<span style="color: #ff0000;">&quot;#{myBean.dialogSpeichern}&quot;</span> </span>
<span style="color: #009900;">			<span style="color: #000066;">oncomplete</span>=<span style="color: #ff0000;">&quot;#{rich:component('editpanel')}.hide();&quot;</span> <span style="color: #000066;">reRender</span>=<span style="color: #ff0000;">&quot;treepanel&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;a4j:commandButton</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;Abbrechen&quot;</span></span>
<span style="color: #009900;">			<span style="color: #000066;">onclick</span>=<span style="color: #ff0000;">&quot;#{rich:component('editpanel')}.hide();return false;&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h:form<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/rich:modalPanel<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Eigentlich alles ok, oder? Also gut, &#8216;mvn tomcat:redeploy&#8217; &#8230; ein bisschen einwirken lassen &#8230; Firefox auf, testen. Der Dialog springt sofort auf, aber der Editor ist tot, nicht mal den Cursor kriegt man zum blinken. Und auch der &#8216;Speichern&#8217;-Knopf zeigt keine Reaktion.</p>
<p>Die Lösung (besser: den Workaround) liefert JBoss.org Issue <a rel="nofollow" href="https://jira.jboss.org/jira/browse/RF-7477" target="_blank">RF-7477</a> bzw <a rel="nofollow" href="https://jira.jboss.org/jira/browse/RF-5268" target="_blank">RF-5268</a>: Im modalPanel ist domElementAttachment=&#8221;parent&#8221; zu setzen. Zeile 1 von oben sieht dann also so aus:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;rich:modalPanel</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;editpanel&quot;</span> <span style="color: #000066;">domElementAttachment</span>=<span style="color: #ff0000;">&quot;parent&quot;</span> <span style="color: #000066;">autosized</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span></pre></div></div>

<p>Was lernt man daraus? Keine Ahnung, wohl das was wir schon oft gelernt haben: &#8220;Kaum macht mans richtig, schon gehts &#8230;&#8221;</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Problem%3A%20rich%3Aeditor%20eingebettet%20in%20rich%3AmodalPanel&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2010%2F04%2F22%2Fproblem-richeditor-eingebettet-in-richmodalpanel%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2010/04/22/problem-richeditor-eingebettet-in-richmodalpanel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SimpleHTTPServer, bring mein Verzeichnis online!</title>
		<link>http://joachim.weinbrenner.name/2010/03/30/simplehttpserver-bring-mein-verzeichnis-online/</link>
		<comments>http://joachim.weinbrenner.name/2010/03/30/simplehttpserver-bring-mein-verzeichnis-online/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 13:55:43 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Entwicklertools]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Webentwicklung]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=266</guid>
		<description><![CDATA[Heute schreibe ich hier einen sehr nützlichen Shell-Einzeiler mit Python auf: $ python -m SimpleHTTPServer Dieser Befehl startet einen Webserver, der das aktuelle Verzeichnis ins Netz bringt. Standardmäßig ist der Server auf Port 8000 erreichbar (einen alternativen Port gibt man einfach hinten dran: python -m SimpleHTTPServer 8888). Hat man den obigen Befehl gestartet (die Shell [...]]]></description>
			<content:encoded><![CDATA[<p>Heute schreibe ich hier einen sehr nützlichen Shell-Einzeiler mit Python auf:</p>
<pre>
$ python -m SimpleHTTPServer
</pre>
<p>Dieser Befehl startet einen Webserver, der das aktuelle Verzeichnis ins Netz bringt. Standardmäßig ist der Server auf Port 8000 erreichbar (einen alternativen Port gibt man einfach hinten dran: <em>python -m SimpleHTTPServer 8888</em>). Hat man den obigen Befehl gestartet (die Shell gibt nun das Zugriffsprotokoll aus), so kann man im Browser mit Aufruf von</p>
<pre>
http://localhost:8000  (bzw. http://<em>rechnername</em>:8000)
</pre>
<p>das Ergebnis betrachten. Sollte das Verzeichnis eine index.html bzw. index.htm enthalten, so wird diese als Webseite angezeigt, sonst werden die Ordner und Dateien des Verzeichnisses aufgelistet. In die Ordner kann man reinwechseln, oberste Ebene bleibt aber das Verzeichnis aus dem gestartet wurde.</p>
<p>Die möglichen Anwendungsfälle, die sich einem da im Alltag auftun sind unaufzählbar und es bleibt dem Leser überlassen, seine kreativen Einsatzzwecke zu entdecken und gerne in den Kommentaren kund zu tun.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=SimpleHTTPServer%2C%20bring%20mein%20Verzeichnis%20online%21&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2010%2F03%2F30%2Fsimplehttpserver-bring-mein-verzeichnis-online%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2010/03/30/simplehttpserver-bring-mein-verzeichnis-online/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>UMLGraph in Javadoc mit Maven</title>
		<link>http://joachim.weinbrenner.name/2010/03/29/umlgraph-in-javadoc-mit-maven/</link>
		<comments>http://joachim.weinbrenner.name/2010/03/29/umlgraph-in-javadoc-mit-maven/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 19:36:50 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Entwicklertools]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=255</guid>
		<description><![CDATA[Mit UMLGraph steht ein wunderbares, einfaches Tool zur Verfügung, um UML Klassendiagramme in die Javadoc Dokumentation einzufügen. Diese sind klickbar, d.h. man kann durch die Diagramme navigieren. Wer seine Projekte mit Maven erzeugt, integriert gerne auch die Javadoc-Erstellung in den Maven-Build. Und UMLGraph lässt sich da gleich ganz einfach mitnehmen. Hier ein Beispiel, wie eine [...]]]></description>
			<content:encoded><![CDATA[<p>Mit <a rel="nofollow" href="http://www.umlgraph.org/" target="_blank">UMLGraph</a> steht ein wunderbares, einfaches Tool zur Verfügung, um UML Klassendiagramme in die Javadoc Dokumentation einzufügen. Diese sind klickbar, d.h. man kann durch die Diagramme navigieren. Wer seine Projekte mit Maven erzeugt, integriert gerne auch die Javadoc-Erstellung in den Maven-Build. Und UMLGraph lässt sich da gleich ganz einfach mitnehmen.</p>
<p>Hier ein Beispiel, wie eine entsprechende Reporting-Sektion im pom.xml aussehen könnte:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;reporting<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;outputDirectory<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>/ein/sinnvoller/pfad<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/outputDirectory<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugins<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.apache.maven.plugins<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>maven-javadoc-plugin<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;doclet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>gr.spinellis.umlgraph.doclet.UmlGraphDoc<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/doclet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;docletArtifact<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>gr.spinellis<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>UmlGraph<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>4.6<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/docletArtifact<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;additionalparam<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
           -inferrel -inferdep -quiet -hide java.* -collpackages java.util.* -qualify
           -postfixpackage -nodefontsize 9
           -nodefontpackagesize 7
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/additionalparam<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugins<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/reporting<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Und das Ergebnis kann sich sehen lassen:<br />
<img src="http://joachim.weinbrenner.name/wp-content/uploads/umlgraph.png" alt="" title="umlgraph" width="470" height="335" class="aligncenter size-full wp-image-258" /></p>
<p>Wer tiefer in die Materie, Parameter und Möglichkeiten von UMLGraph einsteigen möchte findet in der <a rel="nofollow" href="http://www.umlgraph.org/doc/index.html" target="_blank">Onlinedokumentation</a> ausführliche Hilfestellung.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=UMLGraph%20in%20Javadoc%20mit%20Maven&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2010%2F03%2F29%2Fumlgraph-in-javadoc-mit-maven%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2010/03/29/umlgraph-in-javadoc-mit-maven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Theory of Constraints</title>
		<link>http://joachim.weinbrenner.name/2010/03/15/theory-of-constraints/</link>
		<comments>http://joachim.weinbrenner.name/2010/03/15/theory-of-constraints/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 19:47:28 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[JUG]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=250</guid>
		<description><![CDATA[Das JUG ErN Meeting am letzten Donnerstag war etwas anders als die üblichen &#8220;Wir setzen uns mal rein und hören, was der da vorne sagt&#8221;-JUG-Treffen. Diesmal mussten die Teilnehmer mitspielen! Pierluigi Pugliese und Martin Heider erklärten anhand eines Spiels die &#8220;Theory of Constraints&#8221;. Diese Theorie besagt, dass es in jedem System genau einen Flaschenhals (Constraint) [...]]]></description>
			<content:encoded><![CDATA[<p>Das <a rel="nofollow" href="https://www.xing.com/net/pri62ebf3x/jugern" target="_blank">JUG ErN</a> Meeting am letzten Donnerstag war etwas anders als die üblichen &#8220;Wir setzen uns mal rein und hören, was der da vorne sagt&#8221;-JUG-Treffen. Diesmal mussten die Teilnehmer mitspielen! <a rel="nofollow" href="http://twitter.com/p_pugliese" target="_blank">Pierluigi Pugliese</a> und <a rel="nofollow" href="http://martinheider.wordpress.com/" target="_blank">Martin Heider</a> erklärten anhand eines Spiels die <a rel="nofollow" href="http://de.wikipedia.org/wiki/Theory-of-Constraints" target="_blank">&#8220;Theory of Constraints&#8221;</a>.</p>
<p>Diese Theorie besagt, dass es in jedem System genau einen Flaschenhals (Constraint) gibt und gibt 5 Schritte vor, wie man den Engpass möglichst weit aufmacht, sprich entschärft.</p>
<p>Hier die begleitenden Folien, in denen auch das Spiel erläutert wird:<br />
<img style="visibility:hidden;width:0px;height:0px;" border=0 width=0 height=0 src="http://counters.gigya.com/wildfire/IMP/CXNID=2000002.0NXC/bT*xJmx*PTEyNjg2ODE2NzAxMDMmcHQ9MTI2ODY4MTY4MjExMiZwPTEwMTkxJmQ9c3NfZW1iZWQmZz*yJm89NWE3OTliYzE1NTc2/NDMwYWJjMTYyZTQxOTBjMTljYzMmb2Y9MA==.gif" />
<div style="width:425px" id="__ss_3410924"><strong style="display:block;margin:12px 0 4px"><a rel="nofollow" href="http://www.slideshare.net/ppugliese/auf-diaet-nuernberg-11-march-2010" title="Auf Diaet, Nuernberg 11 March 2010">Auf Diaet, Nuernberg 11 March 2010</a></strong><object width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=aufdiaetnuernberg20100311-100312095856-phpapp01&#038;stripped_title=auf-diaet-nuernberg-11-march-2010" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=aufdiaetnuernberg20100311-100312095856-phpapp01&#038;stripped_title=auf-diaet-nuernberg-11-march-2010" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">View more <a rel="nofollow" href="http://www.slideshare.net/">presentations</a> from <a rel="nofollow" href="http://www.slideshare.net/ppugliese">Pierluigi Pugliese</a>.</div>
</div>
<p>Und so wurden fleißig Boote und Hüte gefaltet und von Runde zu Runde war tatsächlich ein Fortschritt zu sehen.<br />
Fazit: Ein lustiger Abend mit einem sehr einprägsamen Beispiel &#8211; so macht Lernen Spaß.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Theory%20of%20Constraints&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2010%2F03%2F15%2Ftheory-of-constraints%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2010/03/15/theory-of-constraints/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Zeichensatz festlegen bei generierten E-Mails</title>
		<link>http://joachim.weinbrenner.name/2010/02/10/zeichensatz-festlegen-bei-generierten-e-mails/</link>
		<comments>http://joachim.weinbrenner.name/2010/02/10/zeichensatz-festlegen-bei-generierten-e-mails/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 20:29:27 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SEAM]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Webentwicklung]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=245</guid>
		<description><![CDATA[Programmierer habens oft eilig. Und sie gehen den Weg des geringsten Widerstands, was einfach geht, wird auch einfach gemacht. Bekanntes Beispiel: das Versenden von E-Mails aus der Applikation heraus, z.B. für Bestätigungsmails, Formularmailer usw.; in nahezu jeder Sprache gibt es dafür einfache Klassen oder Befehle, die eine E-Mail erzeugen und versenden. Leider wird dabei häufig [...]]]></description>
			<content:encoded><![CDATA[<p>Programmierer habens oft eilig. Und sie gehen den Weg des geringsten Widerstands, was einfach geht, wird auch einfach gemacht. Bekanntes Beispiel: das Versenden von E-Mails aus der Applikation heraus, z.B. für Bestätigungsmails, Formularmailer usw.; in nahezu jeder Sprache gibt es dafür einfache Klassen oder Befehle, die eine E-Mail erzeugen und versenden.</p>
<p>Leider wird dabei häufig vergessen, den Zeichensatz der generierten Mail richtig (bzw. überhaupt) zu setzen. Hat eine Mail im Header kein Feld &#8220;Content-Type:&#8221; gesetzt, so handelt man sich zwei gravierende Probleme ein:</p>
<ol>
<li>Der empfangende Client kann die Mail nicht richtig interpretieren, da er nicht weiß, in welcher Codierung der Inhalt der Mail ist. Das hat zur Folge, dass Umlaute, Sonderzeichen usw. nicht richtig angezeigt werden.</li>
<li>viele Spam-Filter werten dies als Negativ-Punkt, somit steigt die Wahrscheinlichkeit, dass die Mail ihren Empfänger nicht erreicht.</li>
</ol>
<p>Ich schreibe hier mal beispielhaft für PHP, Java, Spring und SEAM, wie man den Header um die Content-Type Angabe ergänzen kann. Dabei beschränke ich mich der Einfachheit halber auf eine simple Textmail, also kein Multipart mit HTML oder Attachment (Beispiele dazu lassen sich schnell im Web finden).</p>
<p>PHP:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$header</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'MIME-Version: 1.0'</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'Content-type: text/plain; charset=UTF-8'</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$strFrom</span><span style="color: #339933;">;</span>
<span style="color: #990000;">mail</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$strEmpfaenger</span><span style="color: #339933;">,</span> <span style="color: #000088;">$strSubject</span><span style="color: #339933;">,</span> <span style="color: #000088;">$strMailtext</span><span style="color: #339933;">,</span> <span style="color: #000088;">$header</span><span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Die Mail konnte nicht versendet werden.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Java:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">MimeMessage message <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> MimeMessage<span style="color: #009900;">&#40;</span>session<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
message.<span style="color: #006633;">setHeader</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Content-Type&quot;</span>, <span style="color: #0000ff;">&quot;text/plain&quot;</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;; charset=&quot;</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;UTF-8&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Spring:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">MimeMessage mimeMessage <span style="color: #339933;">=</span> ...
<span style="color: #006633;">MimeMessageHelper</span> message <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> MimeMessageHelper<span style="color: #009900;">&#40;</span>mimeMessage, <span style="color: #0000ff;">&quot;UTF-8&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>SEAM: (ein Facelet-Template, das vom SEAM gerendert wird)</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">   ...</pre></div></div>

<p>Die Beispiele sind bewusst kurz gehalten, das Thema E-Mail-Programmierung kann wohl Bücher füllen. In erster Linie will ich Entwickler motivieren, bei aller Eile auch an die Kleinigkeiten zu denken.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Zeichensatz%20festlegen%20bei%20generierten%20E-Mails&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2010%2F02%2F10%2Fzeichensatz-festlegen-bei-generierten-e-mails%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2010/02/10/zeichensatz-festlegen-bei-generierten-e-mails/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jsolutions.de runderneuert</title>
		<link>http://joachim.weinbrenner.name/2010/02/01/jsolutions-de-runderneuert/</link>
		<comments>http://joachim.weinbrenner.name/2010/02/01/jsolutions-de-runderneuert/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 05:50:46 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Webentwicklung]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=236</guid>
		<description><![CDATA[An dieser Stelle mal ein bisschen offtopic Werbung in eigener Sache: Meine Firmenwebseite http://www.jsolutions.de/ ist in komplett überarbeiteter Form neu online gegangen. In den letzten Jahren war leider nicht viel Zeit, sich um die eigene Präsenz im Web konsequent zu kümmern und es war mehr als überfällig, die Darstellung der Firma an deren Entwicklung anzupassen. [...]]]></description>
			<content:encoded><![CDATA[<p>An dieser Stelle mal ein bisschen offtopic Werbung in eigener Sache: Meine Firmenwebseite <a rel="nofollow" href="http://www.jsolutions.de/" target="_blank">http://www.jsolutions.de/</a> ist in komplett überarbeiteter Form neu online gegangen. In den letzten Jahren war leider nicht viel Zeit, sich um die eigene Präsenz im Web konsequent zu kümmern und es war mehr als überfällig, die Darstellung der Firma an deren Entwicklung anzupassen.</p>
<p>Ich hoffe das neue Design ist gelungen &#8211; Kritik kann ja gerne hier in den Kommentaren hinterlassen werden!</p>
<p>Wer über Neues und Interessantes von und mit jsolutions im Bilde bleiben möchte kann via Twitter folgen: <a rel="nofollow" href="http://twitter.com/jsolutions_de" target="_blank">http://twitter.com/jsolutions_de</a></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=jsolutions.de%20runderneuert&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2010%2F02%2F01%2Fjsolutions-de-runderneuert%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2010/02/01/jsolutions-de-runderneuert/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Icons für Eclipse</title>
		<link>http://joachim.weinbrenner.name/2009/11/07/icons-fur-eclipse/</link>
		<comments>http://joachim.weinbrenner.name/2009/11/07/icons-fur-eclipse/#comments</comments>
		<pubDate>Sat, 07 Nov 2009 19:28:34 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Entwicklertools]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=223</guid>
		<description><![CDATA[Auf meinen Entwicklungskisten gibt es meist mindestens zwei Installationen von Eclipse. Die eine ist für meine Java-Entwicklung angepasst, die andere für das PHP-Zeugs. D.h. ich habe auch zwei Knöpfchen in meinem Startpanel. Und hier geht das Problem los: die Standard-Icons sehen leider identisch aus. Meine Lösung war pragmatisch: Ich hab mir einfach zwei entsprechende Icons [...]]]></description>
			<content:encoded><![CDATA[<p>Auf meinen Entwicklungskisten gibt es meist mindestens zwei Installationen von <a rel="nofollow" href="http://eclipse.org/" target="_blank">Eclipse</a>. Die eine ist für meine Java-Entwicklung angepasst, die andere für das PHP-Zeugs. D.h. ich habe auch zwei Knöpfchen in meinem Startpanel. Und hier geht das Problem los: die Standard-Icons sehen leider identisch aus.</p>
<p>Meine Lösung war pragmatisch: Ich hab mir einfach zwei entsprechende Icons &#8220;<a rel="nofollow" href="http://www.gimp.org/" target="_blank">gegimpt</a>&#8220;:</p>
<p><img class="alignleft size-full wp-image-224" title="eclipse-icon-java" src="http://joachim.weinbrenner.name/wp-content/uploads/eclipse-icon-java.png" alt="eclipse-icon-java" width="48" height="48" /> <img class="alignleft size-full wp-image-225" title="eclipse-icon-php" src="http://joachim.weinbrenner.name/wp-content/uploads/eclipse-icon-php.png" alt="eclipse-icon-php" width="48" height="48" /></p>
<p>Ok, besonders hübsch sind sie nicht (bin ja kein Grafiker und hatte auch keine Lust die groß zu verfeinern) aber sie erfüllen ihren Zweck!</p>
<p>Wer sie gerne verwenden möchte, nur zu, deswegen hab ich sie ja hier veröffentlicht! Fertige xpm-Dateien (und die hier abgebildeten png&#8217;s) kann man <a rel="nofollow" href="http://www.wuala.com/jsolutions/public/icons/eclipse?lang=de&amp;mode=list" target="_blank">hier herunterladen</a>.</p>
<p>Am Rande bemerkt: Derzeit tut sich sehr viel in Sachen Java-Entwicklungsumgebungen. <a rel="nofollow" href="http://www.netbeans.org/" target="_blank">Netbeans</a> hat sich sehr gut entwickelt, eine Testinstallation (6.8 beta) hat mich begeistert. Und <a rel="nofollow" href="http://www.jetbrains.com/idea/nextversion/free_java_ide.html" target="_blank">Inellij Idea</a> gibt es jetzt auch in einer kostenlosen &#8216;Community Edition&#8217;. Aber das ist alles vielleicht mal einen eigenen Blog-Eintrag wert.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Icons%20f%C3%BCr%20Eclipse&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2009%2F11%2F07%2Ficons-fur-eclipse%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2009/11/07/icons-fur-eclipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hibernate Validator 4 &#8211; Validierung, wo sie hin gehört</title>
		<link>http://joachim.weinbrenner.name/2009/10/24/hibernate-validator-4-validierung-wo-sie-hin-gehort/</link>
		<comments>http://joachim.weinbrenner.name/2009/10/24/hibernate-validator-4-validierung-wo-sie-hin-gehort/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 15:54:48 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JPA]]></category>
		<category><![CDATA[JSF]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=218</guid>
		<description><![CDATA[Vor gut zwei Wochen erschien die Version 4 des Hibernate Validators. Dabei handelt es sich um eine komplett neue Codebasis, es ist nun die Referenzimplementierung des JSR-303: Bean Validation. Der Hauptvorteil der Benutzung von Hibernate Validator ist, dass die Überprüfungen da stattfinden, wo sie maßgeblich sind, nämlich im Model. Statt also in allen Schichten (GUI/Web, [...]]]></description>
			<content:encoded><![CDATA[<p>Vor gut zwei Wochen erschien die Version 4 des <a rel="nofollow" href="https://www.hibernate.org/412.html" target="_blank">Hibernate Validators</a>. Dabei handelt es sich um eine komplett neue Codebasis, es ist nun die Referenzimplementierung des <a rel="nofollow" href="http://jcp.org/en/jsr/detail?id=303" target="_blank">JSR-303: Bean Validation</a>. Der Hauptvorteil der <a rel="nofollow" href="http://docs.jboss.org/hibernate/stable/validator/reference/en/html_single/" target="_blank">Benutzung</a> von Hibernate Validator ist, dass die Überprüfungen da stattfinden, wo sie maßgeblich sind, nämlich im Model. Statt also in allen Schichten (GUI/Web, Business Layer, Data Acess, &#8230;) eine eigene Prüfung zu implementieren (und sich damit leicht Inkonsistenzen und doppelten Code einzuhandeln) erfolgt die Validierung ausschließlich in den Domänen Objekten.</p>
<p>Die Validierung erfogt über Constraints, die als Annotationen angegeben werden. Es sind schon einige Constraints enthalten, für besondere Zwecke lassen sich eigene erstellen. Hier mal ein einfaches Beispiel:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// (imports usw. weggelassen)</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Kunde <span style="color: #009900;">&#123;</span>
&nbsp;
    @NotNull<span style="color: #009900;">&#40;</span>message <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Ein Kunde muss einen Namen haben&quot;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> nachname<span style="color: #339933;">;</span>
&nbsp;
    @Past<span style="color: #009900;">&#40;</span>message <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Geboren in der Zukunft?&quot;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">Date</span> geburtstag<span style="color: #339933;">;</span>
&nbsp;
    @Size<span style="color: #009900;">&#40;</span>min<span style="color: #339933;">=</span><span style="color: #cc66cc;">6</span>, max<span style="color: #339933;">=</span><span style="color: #cc66cc;">20</span><span style="color: #009900;">&#41;</span>
    @NotNull
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> passwort<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Getter Setter usw.</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Highlights der Version 4 sind:</p>
<ul>
<li>Native Integration in JPA 2 und JSF 2 (für SEAM Experten nichts neues, hat dort schon mit Version 3 von Hibernate Validator funktioniert)</li>
<li>Groups: Es lassen sich Gruppen definieren, welche die Validierung bestimmter Constraints anstoßen</li>
<li>Typsicherheit: Es wird sichergestellt, dass ein Constraint zum Datentyp des Properties passt.</li>
<li>stark verbesserte Testsuite</li>
<li>uvm. &#8230;</li>
</ul>
<p>Noch ein Hinweis: Hibernate Validator kann unabhängig von einer Verwendung des Hibernate ORM eingesetzt werden.</p>
<p>Meine Empfehlung: Unbedingt anschauen!</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Hibernate%20Validator%204%20%26%238211%3B%20Validierung%2C%20wo%20sie%20hin%20geh%C3%B6rt&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2009%2F10%2F24%2Fhibernate-validator-4-validierung-wo-sie-hin-gehort%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2009/10/24/hibernate-validator-4-validierung-wo-sie-hin-gehort/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>inittab/respawn unter Ubuntu</title>
		<link>http://joachim.weinbrenner.name/2009/10/18/inittabrespawn-unter-ubuntu/</link>
		<comments>http://joachim.weinbrenner.name/2009/10/18/inittabrespawn-unter-ubuntu/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 06:09:39 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=211</guid>
		<description><![CDATA[Kürzlich hatte ich einen Prozess, der auf meinem Laptop unter Ubuntu Linux immer laufen sollte. Leider ist er mir aus unbekannten Gründen immer wieder abgestürzt, besonders nach dem Aufwecken aus dem Ruhezustand. Egal, dachte ich mir, trags in die inittab ein &#8211; doch halt, unter Ubuntu ist das ein bisschen anders. Ubuntu verwendet upstart. Aber [...]]]></description>
			<content:encoded><![CDATA[<p>Kürzlich hatte ich einen Prozess, der auf meinem Laptop unter Ubuntu Linux immer laufen sollte. Leider ist er mir aus unbekannten Gründen immer wieder abgestürzt, besonders nach dem Aufwecken aus dem Ruhezustand.</p>
<p>Egal, dachte ich mir, trags in die inittab ein &#8211; doch halt, unter Ubuntu ist das ein bisschen anders. Ubuntu verwendet <a rel="nofollow" href="http://upstart.ubuntu.com/" target="_blank">upstart</a>. Aber keine Panik, das ist ganz einfach. Um einen Prozess zu starten, muss lediglich eine Datei in /etc/event.d angelegt werden. Soll dieser Prozess nach einer Beendigung (z.B. o.g. &#8220;Absturz&#8221;) automatisch wiedergestartet werden, muss das Schlüsselwörtchen &#8216;respawn&#8217; enthalten sein.</p>
<p>Am einfachsten kopiert man sich die Datei /etc/event.d/tty2 als Vorlage und ändert dann in der letzten Zeile den exec Befehl.</p>
<p>Die Datei sollte dann etwa so aussehen:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">start on runlevel <span style="color: #000000;">2</span>
start on runlevel <span style="color: #000000;">3</span>
&nbsp;
stop on runlevel <span style="color: #000000;">0</span>
stop on runlevel <span style="color: #000000;">1</span>
stop on runlevel <span style="color: #000000;">4</span>
stop on runlevel <span style="color: #000000;">5</span>
stop on runlevel <span style="color: #000000;">6</span>
&nbsp;
respawn
<span style="color: #7a0874; font-weight: bold;">exec</span> <span style="color: #000000; font-weight: bold;">/</span>kompletterpfad<span style="color: #000000; font-weight: bold;">/</span>befehl</pre></div></div>

<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=inittab%2Frespawn%20unter%20Ubuntu&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2009%2F10%2F18%2Finittabrespawn-unter-ubuntu%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2009/10/18/inittabrespawn-unter-ubuntu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JSF2 Linksammlung</title>
		<link>http://joachim.weinbrenner.name/2009/09/13/jsf2-linksammlung/</link>
		<comments>http://joachim.weinbrenner.name/2009/09/13/jsf2-linksammlung/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 19:51:03 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JSF]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=205</guid>
		<description><![CDATA[Die neue Version von JSF (Java Server Faces) hat einige Verbesserungen mit sich gebracht. Hier sammle ich eine kleine Liste von Links zur Einführung in die Materie, die ich aktualisiere, wenn ich auf etwas Interessantes stoße. Andy Schwartz’s Weblog &#8211; What’s New in JSF 2? (exzellente Übersicht!) Max Katz: Learning JSF2: Managed beans (erster Teil [...]]]></description>
			<content:encoded><![CDATA[<p>Die neue Version von JSF (Java Server Faces) hat einige Verbesserungen mit sich gebracht. Hier sammle ich eine kleine Liste von Links zur Einführung in die Materie, die ich aktualisiere, wenn ich auf etwas Interessantes stoße.</p>
<ul>
<li><a rel="nofollow" href="http://andyschwartz.wordpress.com/2009/07/31/whats-new-in-jsf-2/" target="_blank">Andy Schwartz’s Weblog &#8211; What’s New in JSF 2?</a> (exzellente Übersicht!)</li>
<li><a rel="nofollow" href="http://mkblog.exadel.com/jsf/learning-jsf2-managed-beans/" target="_blank">Max Katz: Learning JSF2: Managed beans</a> (erster Teil einer Einführungsserie)</li>
<li><a rel="nofollow" href="http://mkblog.exadel.com/jsf/learning-jsf2-navigation/" target="_blank">Max Katz: Learning JSF2: Navigation</a> (zweiter Teil der Einführungsserie)</li>
<li><a rel="nofollow" href="http://mkblog.exadel.com/jsf/learning-jsf-2-ajax-in-jsf-using-fajax-tag/" target="_blank">Max Katz: Learning JSF2: Ajax in JSF &#8211; using f:ajax tag</a> (Teil 3)</li>
<li><a rel="nofollow" href="http://weblogs.java.net/blog/edburns/archive/2009/10/15/jsf2-facelet-tag-handlers" target="_blank">Ed Burns: JSF2 Facelet Tag Handlers</a></li>
<li><a rel="nofollow" href="http://info.rmatics.org/2009/10/17/jsf2_tutorial_0/" target="_blank">Adventures in JSF 2.0: Hello World Tutorial using Maven 2, JSF 2, Facelets 2, and Weld</a></li>
<li><a rel="nofollow" href="http://jsfatwork.irian.at/semistatic/introduction.html" target="_blank">Kostenloses Online-Buch zu JSF 2.0 von irian.at </a></li>
<li><a rel="nofollow" href="http://www.javaserverfaces.org/" target="_blank">www.javaserverfaces.org</a> &#8211; das soll <em>die</em> Seite als Einstieg für alle JSF-Programmierer werden! Entdeckt habe ich sie via <a rel="nofollow" href="http://ocpsoft.com/java/jsf-java/jsf2-engaging-the-community/" target="_blank">http://ocpsoft.com/java/jsf-java/jsf2-engaging-the-community/</a> (dort findet man im Übrigen <a rel="nofollow" href="http://ocpsoft.com/prettyfaces/" target="_blank">PrettyFaces</a>, eine Erweiterung für &#8220;schöne&#8221; URLs bei JSF-Anwendungen)</li>
</ul>
<p>To be continued &#8230; (freue mich über jeden interessanten Link!!!)</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=JSF2%20Linksammlung&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2009%2F09%2F13%2Fjsf2-linksammlung%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2009/09/13/jsf2-linksammlung/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Apache: Zugriffsbeschränkung via htaccess</title>
		<link>http://joachim.weinbrenner.name/2009/08/07/apache-zugriffsbeschrankung-via-htaccess/</link>
		<comments>http://joachim.weinbrenner.name/2009/08/07/apache-zugriffsbeschrankung-via-htaccess/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 10:01:20 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Entwicklertools]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Webentwicklung]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=199</guid>
		<description><![CDATA[Gerade eben musste ich es mal wieder einrichten: Zugriffskontrolle auf ein Verzeichnis im Apache. Dazu hatte ich vor Jahren auf einer meiner Uralt-Webseiten schon mal einen Artikel geschrieben. Den re-publiziere ich hier in (praktisch) unüberarbeiteter Form: Der htaccess-Mechanismus erlaubt eine verzeichnisorientierte Zugriffsbeschränkung über eine Authentifizierung. htaccess verlangt normalerweise einen gütigen Benutzername und Passwort, um auf [...]]]></description>
			<content:encoded><![CDATA[<p>Gerade eben musste ich es mal wieder einrichten: Zugriffskontrolle auf ein Verzeichnis im Apache. Dazu hatte ich vor Jahren auf einer meiner Uralt-Webseiten schon mal einen Artikel geschrieben. Den re-publiziere ich hier in (praktisch) unüberarbeiteter Form:</p>
<p>Der htaccess-Mechanismus erlaubt eine verzeichnisorientierte Zugriffsbeschränkung über eine Authentifizierung. htaccess verlangt normalerweise einen gütigen Benutzername und Passwort, um auf dieses Verzeichnis (und seine Unterverzeichnisse) zugreifen zu dürfen.<br />
Folgende Dinge sind zu tun, um ein Verzeichnis zu schützen:</p>
<p><strong>1. in der httpd.conf:</strong><br />
htaccess muss für das Verzeichnis erlaubt werden. Dazu ist die Direktive AllowOveride All zu setzen. Beispiel:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Directory</span> /pfad/apache/htdocs/diesesverzeichnis<span style="color: #000000; font-weight: bold;">&gt;</span></span>
    AllowOveride All
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Directory<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p><strong>2. Anlegen der Datei .htaccess:</strong><br />
Im zu schützenden Verzeichnis wird die Datei angelegt (führenden Punkt nicht vergessen, dies ist eine versteckte Datei!):</p>

<div class="wp_syntax"><div class="code"><pre class="brainfuck" style="font-family:monospace;">AuthName &quot;Dies ist der Login-Bereich von Fritzchen&quot;
AuthType Basic
AuthUserFile /pfad/public/htdocs/login/.htpasswd
require valid-user</pre></div></div>

<p><strong>3. Anlegen der Datei .htpasswd:</strong><br />
Das Anlegen dieser Datei geschieht mit dem htpasswd-Befehl [update]bei Apache2 mit dem korrelierenden Befehl htpasswd2[/update]. Da die Passwörter verschlüsselt gespeichert werden, kann die Datei nicht von Hand erstellt werden.</p>
<p>Wir erzeugen die Datei z.B. mit folgendem Befehl:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ htpasswd <span style="color: #660033;">-c</span> .htpasswd ersterbenutzer</pre></div></div>

<p>Für jeden weiteren Benutzer rufen wir den Befehl ohne &#8220;create&#8221; auf:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ htpasswd .htpasswd weitererbenutzer</pre></div></div>

<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Apache%3A%20Zugriffsbeschr%C3%A4nkung%20via%20htaccess&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2009%2F08%2F07%2Fapache-zugriffsbeschrankung-via-htaccess%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2009/08/07/apache-zugriffsbeschrankung-via-htaccess/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Optimieren der Speicherbelegung mit visualgc</title>
		<link>http://joachim.weinbrenner.name/2009/08/06/optimieren-der-speicherbelegung-mit-visualgc/</link>
		<comments>http://joachim.weinbrenner.name/2009/08/06/optimieren-der-speicherbelegung-mit-visualgc/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 18:50:06 +0000</pubDate>
		<dc:creator>Joachim Weinbrenner</dc:creator>
				<category><![CDATA[Entwicklertools]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://joachim.weinbrenner.name/?p=195</guid>
		<description><![CDATA[Hier nur schnell zwei Links zu einem Tool, das ich mir merken muss: visualgc, ein GUI-basiertes Programm zur Optimierung der Speicherbelegung von Java-Programmen. jvmstat 3.0 (enthält visualgc) Artikel auf heise Developer. Dank ans heise Team, für den schönen Artikel!]]></description>
			<content:encoded><![CDATA[<p>Hier nur schnell zwei Links zu einem Tool, das ich mir merken muss: visualgc, ein GUI-basiertes Programm zur Optimierung der Speicherbelegung von Java-Programmen.</p>
<ul>
<li><a rel="nofollow" href="http://java.sun.com/performance/jvmstat/" target="_blank">jvmstat 3.0 (enthält visualgc)</a></li>
<li><a rel="nofollow" href="http://www.heise.de/developer/Feintuning-der-Speicherbelegung-von-Java-Programmen-mit-visualgc--/artikel/143134/0" target="_blank">Artikel auf heise Developer.</a></li>
</ul>
<p>Dank ans heise Team, für den schönen Artikel!</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=lost%20in%20thought&amp;siteurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F&amp;linkname=Optimieren%20der%20Speicherbelegung%20mit%20visualgc&amp;linkurl=http%3A%2F%2Fjoachim.weinbrenner.name%2F2009%2F08%2F06%2Foptimieren-der-speicherbelegung-mit-visualgc%2F"></a>]]></content:encoded>
			<wfw:commentRss>http://joachim.weinbrenner.name/2009/08/06/optimieren-der-speicherbelegung-mit-visualgc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

