<?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>Privates Blog von Karsten Gresch &#187; Programmieren</title>
	<atom:link href="http://blog.gresch.de/category/programmieren/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.gresch.de</link>
	<description>Varia, Miscellania</description>
	<lastBuildDate>Wed, 06 Jul 2011 18:23:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Git</title>
		<link>http://blog.gresch.de/2010/02/22/git/</link>
		<comments>http://blog.gresch.de/2010/02/22/git/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 21:13:17 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=313</guid>
		<description><![CDATA[Auch wenn es einige gewichtige Argumente gegen Git gibt: Bei der Lektüre von Scott Chacons Buch Pro Git (gedruckte Version) wird mir das ganze Potential der postklassischen Versionskontrollsysteme klar: Auch wenn mir das Offline-Branching bislang immer am wichtigsten war (auf diese Weise kann ich im Zug einfach einen experimentellen Branch erstellen), bietet die Idee, stets [...]]]></description>
			<content:encoded><![CDATA[<p>Auch wenn es einige <a href="http://blog.zacharyvoase.com/2009-07-23-why-mercurial-git-or-how-i-learned-to-stop-censoring-myself-and-participate-in-flamewars">gewichtige Argumente</a> gegen <a href="http://git-scm.com/">Git</a> gibt: Bei der Lektüre von Scott Chacons Buch <a href="http://progit.org/book/">Pro Git</a> (<a href="http://apress.com/book/view/9781430218333">gedruckte Version</a>) wird mir das ganze Potential der postklassischen Versionskontrollsysteme klar: Auch wenn mir das Offline-Branching bislang immer am wichtigsten war (auf diese Weise kann ich im Zug einfach einen experimentellen Branch erstellen), bietet die Idee, stets das Repository bei sich zu führen (von Server-Hooks abgesehen), doch erheblich mehr Vorteile.</p>
<p>Zudem gefällt mir besonders gut, dass man Versionen einer Datei auch dann wiederherstellen kann, wenn der Branch (sollte eigentlich &#8220;das Branch&#8221; heißen, aber dagegen sträubt sich mein Sprachempfinden) gelöscht wurde. Das ist in Subversion z.B. nicht möglich. Ebenso ist das Konzept des &#8220;<a href="http://progit.org/book/ch2-2.html">Staging</a>&#8221; (geänderte Dateien werden erst nach einem expliziten Stage-Befehl committed [kann man auch deaktivieren]) für mich sehr nützlich &#8211; in Subversion habe ich bislang (vor allem graphisch) andersherum gerade in größeren Projekten gearbeitet: Aus der Fülle der geänderten Dateien musste ich immer die &#8220;herauspicken&#8221;, die nicht committet werden sollten, was sehr zeitraubend war. Jetzt geht es andersherum: Nur die Dateien, die wirklich wieder ins gemeinsame Repository sollen, gehen nach &#8220;Staging&#8221;, alle anderen bleiben erst einmal lokal.</p>
<p>Nun beleuchtet <a href="http://zacharyvoase.com/">Zack Voase</a> in seiner Gegenüberstellung des Quellcodes Gits und Mercurials, dass für eine vergleichbare Funktionalität ein Quellcodeverhältnis von 10 (Git) zu 1 (Mercurlal) vorhanden ist.</p>
<p>Da frage ich mich natürlich, wann endlich der Git-Nachfolger programmiert wird. Und zwar in <a href="http://www.scala-lang.org/">Scala</a> <img src='http://blog.gresch.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=3467e38d-aaff-81d8-ab05-de5ec1c20a7a" alt="" /></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2010/02/22/git/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vermisst: Hardware-Benchmark für Entwickler</title>
		<link>http://blog.gresch.de/2009/09/01/vermisst-hardware-benchmark-fuer-entwickler/</link>
		<comments>http://blog.gresch.de/2009/09/01/vermisst-hardware-benchmark-fuer-entwickler/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 14:28:22 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Berufsleben]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Vermisstes]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[karsten]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=312</guid>
		<description><![CDATA[Ein Umstand, der in Unternehmen auf Entscheiderebene außerhalb des IT-Umfelds gerne verdrängt wird: Softwareentwickler sind Spezialisten und benötigen deshalb spezielle Hardware. Wer denkt, dass &#8220;Software schreiben&#8221; ungefähr mit dem Schreiben von Textdokumenten vergleichbar ist, liegt in etwa so richtig wie jemand, der meint, Autofahren hieße, auf einem Stuhl zu sitzen und beide Füße unregelmäßig auf- [...]]]></description>
			<content:encoded><![CDATA[<p>Ein Umstand, der in Unternehmen auf Entscheiderebene außerhalb des IT-Umfelds gerne verdrängt wird: Softwareentwickler sind Spezialisten und benötigen deshalb spezielle Hardware. Wer denkt, dass &#8220;Software schreiben&#8221; ungefähr mit dem Schreiben von Textdokumenten vergleichbar ist, liegt in etwa so richtig wie jemand, der meint, Autofahren hieße, auf einem Stuhl zu sitzen und beide Füße unregelmäßig auf- und abzubewegen.<br />
Oberflächlich mag der typische Softwareentwickler Quellcode <em>schreiben</em>, was nicht so entfernt vom Schreiben von Textdateien zu sein scheint.</p>
<p>Tatsächlich ist der Quellcodeeditor nur ein Bestandteil von vielen, die die <a href="http://de.wikipedia.org/wiki/Integrierte_Entwicklungsumgebung">Integrierte Entwicklungsumgebung</a> (&#8220;IDE&#8221;) eines Entwicklers ausmachen: Damit der Quellcode überhaupt ausgeführt werden kann, muss er kompiliert werden. Bisweilen muss ein Entwickler während der Ausführung des Programms an bestimmten Stellen den Ausführungsfluss Schritt-für-Schritt  überwachen (&#8220;debuggen&#8221;), wozu die Anwendung in den Arbeitsspeicher geladen werden muss.</p>
<p>Der Quelltext bewegt sich auch nicht im luftleeren Raum: Anwendungen werden in Projekte und Bibliotheken aufgeteilt, häufig handelt es sich um einige hunderte bis tausende Dateien, die gemeinsam kompiliert und in den Arbeitsspeicher geladen werden müssen. Allein das Lesen der Quelltexte und das Erstellen der Kompilate kann bei mittelgroßen Anwendungen mehrere Minuten, bei größeren sogar viele Stunden andauern.</p>
<p>Auch wenn IDEs inkrementelles Kompilieren ermöglichen, wird des öfteren ein &#8220;<a href="http://de.wikipedia.org/wiki/Erstellungsprozess">Build</a>&#8221; (alle Kompilate und dazugehörige Dateien) wieder gelöscht und vollständig neu erstellt.Zudem sind Softwareanwendungen im Unternehmensumfeld verteilt und kommunizieren mit Datenbanken, anderen Systemen und/oder der im Unternehmen eingesetzten Middleware.</p>
<p>Normalerweise ist der Entwickler bestrebt, auf seinem Rechner die Bedingungen, unter denen seine Anwendung später ausgeführt werden soll, en miniature nachzubilden: Auf diese Weise ist er unabhängig von Wartezeiten und kann ggf. auch offline (z.B. im Zug) arbeiten.</p>
<p>Was deshalb wirklich entscheidend für einen Entwicklerrechner?</p>
<p>Die Leistung:</p>
<p>Ein Softwareentwickler benötigt ein für seine Ansprüche äußerst leistungsfähiges System, was sich insbesondere auf<strong></strong></p>
<p><strong>a)</strong> die Festplatte<strong><br />
b)</strong> den Hauptspeicher<strong><br />
c)</strong> die CPU und<strong><br />
d)</strong> Grafikkarte + Display bezieht.</p>
<p>Die <strong>Festplatte</strong> ist deshalb so wichtig, weil zum Erstellen von &#8220;Builds&#8221; oft tausende Dateien gelesen und geschrieben werden. Normalerweise liegt in langsamen Festplatten <em>der</em> Schwachpunkt von Entwicklersystemen (abgesehen von Virenscanner, die die Buildverzeichnisse überwachen). Sinnvoll können hier <a href="http://de.wikipedia.org/wiki/Solid_State_Drive">Solid State Discs</a> (flash-basiert) oder <a href="http://de.wikipedia.org/wiki/RAID">RAID</a>-Systeme (RAID 0 oder 0+1, aber nicht 5) mit <a href="http://de.wikipedia.org/wiki/Serial_ATA">SATA</a> oder <a href="http://de.wikipedia.org/wiki/Serial_Attached_SCSI">SAS</a> sein, die den Datendurchsatz erhöhen.</p>
<p>Der <strong>Hauptspeicher</strong> muss sehr großzügig dimensioniert sein: Zur Zeit sollte ein Rechner für die Anwendungsentwicklung verteilter Systeme über mindestens 8 GByte Hauptspeicher verfügen, besser wäre gleich das Doppelte (einige Notebook-Workstations bieten mittlerweile 16 GByte an).</p>
<p>Softwareseitig bedingt dies den Einsatz von 64-Bit-Betriebssystemen.Wird mit virtuellen Maschinen gearbeitet (was immer mehr zunimmt), ist ein <strong>Mehrprozessor</strong>- wenigstens ein Multicoresystem sinnvoll. Um die Fülle an Informationen einer IDE wie <a href="http://www.eclipse.org/">Eclipse</a>, <a href="http://netbeans.org/">Netbeans</a> oder <a href="http://qt.nokia.com/">Qt</a> auf einen Bildschirm zu bekommen, empfiehlt sich zudem ein hochauflösendes Display und eine entsprechende Grafikkarte.</p>
<p>Wie separat dargelegt, macht sich eine <a href="http://blog.gresch.de/2009/08/30/der-wahre-prei…ger-hardware-2/">Leistungssteigerung bei Entwicklerrechnern schnell bezahlt</a>. Um Entscheidern (und nach besserer Hardware strebenden Entwicklern) eine objektivere Entscheidungsgrundlage an die Hand zu geben, würde ich mir einen Benchmark wünschen, der</p>
<p><strong>a)</strong> die Leistungsfähigkeit eines Systems hinsichtlich der o.a. Kriterien für einen Entwicklerrechner misst,<strong><br />
b)</strong> kostenlos verfügbar,<strong><br />
c)</strong> plattformunabhängig und<strong><br />
d)</strong> einfach bedienbar ist.</p>
<p>Ein Benchmark der mit Referenzprojekten arbeitet, der gängige IDEs startet, auf denen kleine, mittelgroße und große Referenzprojekte mit der IDE erstellt werden, wobei dies noch mit parallel laufenden Middlewareservern kombiniert werden sollte.</p>
<p>Falls jemandem ein solcher Benchmark bekannt ist, wäre ich dankbar für einen Hinweis ()! Interessenten, die ein derartiges Projekt auf die Beine stellen möchten, können mich gerne ansprechen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2009/09/01/vermisst-hardware-benchmark-fuer-entwickler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Der wahre Preis billiger Hardware</title>
		<link>http://blog.gresch.de/2009/08/30/der-wahre-preis-billiger-hardware-2/</link>
		<comments>http://blog.gresch.de/2009/08/30/der-wahre-preis-billiger-hardware-2/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 18:42:00 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Berufsleben]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=315</guid>
		<description><![CDATA[In Unternehmen verdrängen Entscheider außerhalb des IT-Umfelds gerne, dass Softwareentwickler Spezialisten sind und deshalb spezielle Hardware benötigen. Wer denkt, dass &#8220;Software schreiben&#8221; ungefähr mit dem Schreiben von Textdokumenten vergleichbar ist, liegt in etwa so richtig wie jemand, der meint, Autofahren hieße, auf einem Stuhl zu sitzen und beide Füße unregelmäßig auf- und abzubewegen. Tatsächlich ist [...]]]></description>
			<content:encoded><![CDATA[<p>In Unternehmen verdrängen Entscheider außerhalb des IT-Umfelds gerne, dass Softwareentwickler Spezialisten sind und deshalb spezielle Hardware benötigen. Wer denkt, dass &#8220;Software schreiben&#8221; ungefähr mit dem Schreiben von Textdokumenten vergleichbar ist, liegt in etwa so richtig wie jemand, der meint, Autofahren hieße, auf einem Stuhl zu sitzen und beide Füße unregelmäßig auf- und abzubewegen.</p>
<p>Tatsächlich ist das Schreiben von Quellcode nur die Spitze des Eisbergs: Auf dem Entwicklerrechner wird dieser Quellcode nicht nur zu ausführbarer Software gemacht, sondern häufig eine vollständige Simulation der Unternehmensanwendungen ausgeführt, in deren Umgebung die Software verwendet werden soll. Also Datenbanken, Webserver, E-Mail-Server etc. etc.</p>
<p>Für den Entwicklerrechner bedeutet dies, dass er um ein Vielfaches leistungsfähiger sein muss als die Rechner, die man zur Erfüllung von Büroaufgaben verwendet.</p>
<p>Im Gegensatz zu <a href="http://www.joelonsoftware.com">Joel Spolsky</a> statten viele Unternehmen ihre Softwareentwickler aber mit billiger Standardbürohardware aus. Meist muss schon die Aufrüstung des Arbeitsspeichers gesondert beantragt werden.</p>
<p>Was bedeutet das für die Entwickler? Vor allem müssen sie längere Wartezeiten in Kauf nehmen: Beim Kompilieren, beim Debuggen und Testen ihrer Anwendungen sowie beim Starten der IDE.</p>
<p>Was bedeutet das für die Unternehmen? Berechnen wir das einmal an einem <strong>Beispiel (aus meiner Praxis)</strong>:</p>
<p>Die Entwickler eines größeren Finanzdienstleisters arbeiten mit Eclipse, die Anwendung wird in der Programmiersprache Java erstellt und ist in 10 voneinander abhängige Projekte (genauer: <a href="http://maven.apache.org">Maven</a>-Module) gegliedert. Insgesamt handelt es sich um über viertausend Dateien, die kompiliert werden müssen (zuzügl. einiger Konfigurationsdateien).</p>
<p>Der durchschnittliche Rechner der Entwickler benötigt für das Erstellen eines Builds eine knappe halbe Stunde (mit Virenscanner über zweieinhalb Stunden).</p>
<p>In dieser Zeit können die Entwickler zumindest nicht programmieren, häufig nicht einmal mehr E-Mails lesen, weshalb der Arbeitsalltag so ausgerichtet ist, dass vollständige Builds zum einen vermieden und zum anderen auf den Morgen (Rechnerstart &#8211; Zeit für einen Kaffee) und die Mittagspause verlegt werden.</p>
<p>Im Team wird verteilt gearbeitet und regelmäßig integriert (d.h., Entwickler, die an Modul A arbeiten, stellen ihre Änderungen zur Verfügung, Entwickler, die an Modul B arbeiten, holen sich die aktualisierten Quelltexte von der Versionsverwaltung, was häufiger zur Folge hat, dass ein vollständiges Build erzeugt werden muss), wodurch <em>zwei vollständige Builds am Tag die Regel</em> sind.</p>
<p>Gehen wir <a href="http://www.sueddeutsche.de/jobkarriere/821/470371/text/">vorsichtig</a> von einem Durchschnittsgehalt von 60 T EUR für einen Entwickler mit mehr als sechs Jahren Berufserfahrung aus, ergeben sich folgende Kosten (Berechnungsgrundlage 223 Arbeitstage: 365 Kalendertage abzügl. Wochenenden (104 Tage), Feiertage (8 Tage) und Urlaub (30 Tage), 40-Stundenwoche):</p>
<p><strong>Stundensatz</strong><br />
60.000 / 223 / 8 = <strong>33,62 EUR </strong></p>
<p>Auf zwei Builds zu je einer knappen halben Stunde am Tag bezogen bedeutete dies im ungünstigsten Fall (die Entwickler warten einfach nur, während das Build erstellt wird und sind ansonsten nicht weiter produktiv) jährliche Kosten von</p>
<p>223 x 33,62 EUR = <strong>7.497,26 EUR</strong> <strong>pro Entwickler</strong> und</p>
<p>16 x 7.497,26 EUR = <strong>119.956,16 EUR</strong> <strong>für das</strong> aus sechzehn Personen bestehende <strong>Team</strong>.</p>
<p>Die Verdopplung des Arbeitsspeichers und der Einbau schnellerer Festplatten bewirkte, dass ein vollständiges Build in gut 15 Minuten erstellt werden konnte.</p>
<p>Vergleicht man die Kosten für die Aufrüstung pro PC (450,- EUR für die Hardware, etwa 150,- EUR Personalkosten [Einbau durch Supporttechniker, Procurement] ) sieht man sofort, dass sich selbst bei einem geringeren Produktivitätsausfall als 100 % eine Investition in bessere Hardware schnell amortisiert:</p>
<p><strong>Ersparnis rein rechnerisch</strong>:<br />
119.956,16 EUR / 2* = 59978,08 EUR abzüglich 9.600,- EUR Hardwarekosten = <strong>50.378,08 EUR</strong></p>
<p>*Halbierung der Kompilierzeit</p>
<p>(Aufs Jahr bezogen wird somit eine Aufrüstung rentabel, sobald die festgestellte Produktivitätseinbuße bei über 8% liegt, was in jedem Fall gegeben ist.).</p>
<p>Weiterhin ist interessant, dass dieselben Rechner auch allen extenen Beratern zur Verfügung gestellt wurden. Deren Stundensatz lag dabei weitaus höher, wodurch sich die Investition noch schneller amortisierte.</p>
<p>Positive Seiteneffekte des Einsatzes leistungsfähigerer Entwicklerrechner sind zudem verbessertes Time-To-Market (offensichtlich) sowie ein besseres Betriebsklima (lange Buildzeiten frustrieren Entwickler, schnelle Rechner hingegen erfreuen sie).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2009/08/30/der-wahre-preis-billiger-hardware-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>68.586.311! :-)</title>
		<link>http://blog.gresch.de/2009/04/11/68-586-311/</link>
		<comments>http://blog.gresch.de/2009/04/11/68-586-311/#comments</comments>
		<pubDate>Sat, 11 Apr 2009 21:23:59 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Musik]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=264</guid>
		<description><![CDATA[Mit gro&#223;er Freude kann ich mitteilen, dass endlich der Durchbruch bei meinem &#34;Akkordpermutationsprogramm&#34; erfolgte: Das Programm ist in der Lage, die m&#246;glichen 68.586.311 Akkorde zu berechnen und zu speichern, alle Testabfragen gegen die Datenbank liefen erfolgreich. Der Quellcode ist auf Google Code ver&#246;ffentlicht, wenn auch noch nicht &#34;ges&#228;ubert&#34;. F&#252;r mich r&#252;ckt die Fertigstellung eines musikalischen [...]]]></description>
			<content:encoded><![CDATA[<p>Mit gro&szlig;er Freude kann ich mitteilen, dass endlich der Durchbruch bei meinem &quot;Akkordpermutationsprogramm&quot; erfolgte: Das Programm ist in der Lage, die m&ouml;glichen 68.586.311 Akkorde zu berechnen und zu speichern, alle Testabfragen gegen die Datenbank liefen erfolgreich.</p>
<p>Der Quellcode ist auf <a href="http://code.google.com/p/chordelia/">Google Code</a> ver&ouml;ffentlicht, wenn auch noch nicht &quot;ges&auml;ubert&quot;. </p>
<p>F&uuml;r mich r&uuml;ckt die Fertigstellung eines musikalischen Projekts, das mich nunmehr seit &uuml;ber zwanzig Jahren begleitet, wieder in den Bereich des Realen.</p>
<p>Die Berechnungszeit dauert nur noch etwa 2 Tage, der erforderliche Speicherplatz ~35 GByte (im Vergleich zu mehreren Wochen und mind. 120 GByte). Auch wenn ich sie liebgewonnen hatte, bin ich von der <a href="http://www.h2database.com">H2-DB</a> wieder zu <a href="http://www.mysql.com">MySQL</a> zur&uuml;ckgekehrt, da H2 offensichtlich kein Index-based Locking unterst&uuml;tzt und mit versetzten Transaktionen nicht zurechtkam.</p>
<p>F&uuml;r alle Nichteingeweihten: Was das Programm bewirkt, warum es sinnvoll sein kann, &uuml;ber 68 Millionen Akkorde zu berechnen und zu speichern, folgt sp&auml;ter in einem ausf&uuml;hrlicheren Beitrag.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2009/04/11/68-586-311/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Eclipse + Maven: Debuggen im Sourcecode benachbarter Projekte</title>
		<link>http://blog.gresch.de/2009/01/10/eclipse-maven-debuggen-im-sourcecode-benachbarter-projekte/</link>
		<comments>http://blog.gresch.de/2009/01/10/eclipse-maven-debuggen-im-sourcecode-benachbarter-projekte/#comments</comments>
		<pubDate>Sat, 10 Jan 2009 21:46:00 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[sourcecode]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=285</guid>
		<description><![CDATA[Problem Bei der Arbeit mit Maven und Eclipse an einer modular aufgebauten Anwendung (mehrere Eclipse-Projekte, Maven mit dem m2Eclipse-Plugin, &#34;Mama-POM&#34; und Modulprojekte) vermeide ich abh&#228;ngige Projekte, da es einen Unterschied macht, ob man mit dem physikalischen Ergebnis, also dem Maven-Artefakt, oder mit einem verkn&#252;pften Eclipse-Projekt arbeitet. Vielen Probleme damit f&#252;hrten dazu, standardm&#228;&#223;ig Disable Workspace Resolution [...]]]></description>
			<content:encoded><![CDATA[<p><b><br />
Problem</b><br />
Bei der Arbeit mit Maven und Eclipse an einer modular aufgebauten Anwendung (mehrere <a href="http://www.eclipse.org">Eclipse</a>-Projekte, <a href="http://maven.apache.org">Maven</a> mit dem <a href="http://m2eclipse.codehaus.org/">m2Eclipse</a>-Plugin, &quot;Mama-POM&quot; und <a href="http://maven.apache.org/guides/mini/guide-ide-eclipse.html#Multiple_Module_Project">Modulprojekte</a>) vermeide ich <a href="http://books.sonatype.com/maven-book/reference/eclipse-sect-resolving-dependencies.html">abh&auml;ngige Projekte</a>, da es einen Unterschied macht, ob man mit dem physikalischen Ergebnis, also dem Maven-Artefakt, oder mit einem verkn&uuml;pften Eclipse-Projekt arbeitet.</p>
<p>
Vielen Probleme damit f&uuml;hrten dazu, standardm&auml;&szlig;ig <i>Disable Workspace Resolution</i> und <i>Disable Nested Modules</i> zu w&auml;hlen.</p>
<p>
Das macht aber das Debuggen schwierig: Beim Debuggen m&ouml;chte man beim Debuggen direkt in den Quellcode der mit der Startanwendung verbundenen Modulprojekte springen.</p>
<p>
Defaultm&auml;&szlig;ig ist das nicht m&ouml;glich, vielmehr wird die <i>.class</i>-Datei im Editor angezeigt. Hier hilft auch nicht, den Ort des Source-Codes in den Maven-Abh&auml;ngigkeiten manuell mitzuteilen.</p>
<p>
Verlinkte Quellordner (siehe <a href="http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.platform.doc.user/concepts/concepts-13.htm">linked resources</a>) helfen hier nicht.</p>
<p><b></b><br />
<b>L&ouml;sung</b><br />
In den Debug-Einstellungen als Quellordner die Modulprojekte angeben &uuml;ber <i>Debug</i>-&gt;<i>Open Debug Dialog</i>-&gt;<i>Source.</i></p>
<p><b></b></p>
<p><b><br />
Tip</b> <br />
Wenns beim Debuggen von <a href="http://www.eclipse.org/webtools/">WTP</a>-Projekten dennoch nicht funktioniert, daran denken, den Server im Debug-Modus zu starten <img src='http://blog.gresch.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2009/01/10/eclipse-maven-debuggen-im-sourcecode-benachbarter-projekte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java: Use DB2 Timestamps with Nanoseconds in Java</title>
		<link>http://blog.gresch.de/2008/11/24/java-use-db2-timestamps-with-nanoseconds-in-java/</link>
		<comments>http://blog.gresch.de/2008/11/24/java-use-db2-timestamps-with-nanoseconds-in-java/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 20:29:00 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=301</guid>
		<description><![CDATA[Sometimes you need to run your unit tests using DB2 TIMESTAMP values in your test data to match specific records. You can&#8217;t just use a Date() objekt because you have to specify nanoseconds. As I couldn&#8217;t find any code snippet via Google, this might be helpful for you, dear reader. Example: You want to check [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes you need to run your unit tests using DB2 TIMESTAMP values in your test data to match specific records. You can&#8217;t just use a Date() objekt because you have to specify nanoseconds.</p>
<p>As I couldn&#8217;t find any code snippet via Google, this might be helpful for you, dear reader.</p>
<p>
Example: You want to check for a timestamp of &#8217;2006-02-15 12:05:19.861555&#8242; (within quotes, as shown by one of my favourite SQL clients, <a href="http://www.squirrelsql.org">SQuirrel SQL</a>).
</p>
<pre>
DateFormat formatter = new SimpleDateFormat( &quot;yyyy-MM-dd HH:mm:ss&quot; );
Date theMilliDate&nbsp; = formatter.parse( &quot;2006-02-15 12:05:19&quot; );
Timestamp timestamp = new Timestamp(theMilliDate.getTime());
// Note the trailing zeros!
timestamp.setNanos(861555000);
// validFrom would be of type java.util.Date
myEntityObjekt.setValidFrom(timestamp);
</pre>
<p>
This &#8211; at least &#8211; does the trick, if you know of a better solution, please share it <img src='http://blog.gresch.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2008/11/24/java-use-db2-timestamps-with-nanoseconds-in-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven: test-jar für andere Projekte erstellen.</title>
		<link>http://blog.gresch.de/2008/10/28/maven-test-jar-fuer-andere-projekte-erstellen/</link>
		<comments>http://blog.gresch.de/2008/10/28/maven-test-jar-fuer-andere-projekte-erstellen/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 23:21:00 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=290</guid>
		<description><![CDATA[Manchmal ben&#246;tigt man ein JAR, das nur Testklassen enth&#228;lt, um diese in mehreren Projekten zu verwenden. Dieses erstellt man wie folgt: 1. Test-JAR im Ausgangsprojekt erstellen In der pom.xml des Projekts, dessen Testklassen verwendet werden sollen, erstellt man ein separates JAR &#252;ber eine &#196;nderung des maven-jar-plugins: &#60;plugins&#62; &#60;!-- Weitere Plugins --&#62; &#60;plugin&#62; &#60;groupId&#62;org.apache.maven.plugins&#60;/groupId&#62; &#60;artifactId&#62;maven-jar-plugin&#60;/artifactId&#62; &#60;executions&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>Manchmal ben&ouml;tigt man ein <a href="http://de.wikipedia.org/wiki/Java_Archive">JAR</a>, das nur Testklassen enth&auml;lt, um diese in mehreren Projekten zu verwenden. Dieses erstellt man wie folgt:</p>
<p><b></b></p>
<p><b><br />
1. Test-JAR im Ausgangsprojekt erstellen</b></p>
<p>In der <i>pom.xml</i> des Projekts, dessen Testklassen verwendet werden sollen, erstellt man ein separates JAR &uuml;ber eine &Auml;nderung des maven-jar-plugins:</p>
<pre>
&lt;plugins&gt;
</pre>
<pre><span style="color: rgb(51, 153, 102);">&lt;!-- Weitere Plugins --&gt;  </span>  </pre>
<pre>
  &lt;plugin&gt;
    &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
    &lt;artifactId&gt;maven-jar-plugin&lt;/artifactId&gt;
    &lt;executions&gt;
      &lt;execution&gt;
        &lt;goals&gt;
          &lt;goal&gt;test-jar&lt;/goal&gt;
        &lt;/goals&gt;
      &lt;/execution&gt;
    &lt;/executions&gt;
  &lt;/plugin&gt;
&lt;/plugins&gt;
</pre>
<p>&nbsp;</p>
<p><b></b></p>
<p><b>2. Test-JAR verwenden</b></p>
<p>In der <i>pom.xml</i> eines Projekts, welches das JAR mit den Testklassen verwenden soll, tr&auml;gt man eine Dependency mit einem <i>classifier</i> ein:</p>
<pre>
&lt;dependency&gt;
  &lt;groupId&gt;de.buergel.bas&lt;/groupId&gt;
  &lt;artifactId&gt;bas-spring.server&lt;/artifactId&gt;
  &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;
  &lt;scope&gt;test&lt;/scope&gt;
  &lt;classifier&gt;tests&lt;/classifier&gt;
&lt;/dependency&gt;
</pre>
<p>Siehe dazu den <a href="http://www.waltercedric.com/java-j2ee-mainmenu-53/361-maven-build-system/1349-maven-reusing-test-classes-across-multi-modules-projects.html">ausf&uuml;hrlichen Blogeintrag von Walter Cedric (Englisch)</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2008/10/28/maven-test-jar-fuer-andere-projekte-erstellen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hibernate JPA-Bug with Composite-Keys</title>
		<link>http://blog.gresch.de/2008/10/21/hibernate-jpa-bug-with-composite-keys/</link>
		<comments>http://blog.gresch.de/2008/10/21/hibernate-jpa-bug-with-composite-keys/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 08:42:34 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=296</guid>
		<description><![CDATA[Legacy systems often contain composite natural keys, i.e. identifiers composed from different database fields. Hibernate offers three ways to deal with it. One is the @IdClass annotation that allows you to create an annotation-free class containing all the fields you like to use and use those fields again in your annotated entity class, annotating them [...]]]></description>
			<content:encoded><![CDATA[<p>Legacy systems often contain composite natural keys, i.e. identifiers composed from different database fields.</p>
<p>
<a href="http://www.hibernate.org">Hibernate</a> offers three ways to deal with it. One is the <i>@IdClass</i> annotation that allows you to create an annotation-free class containing all the fields you like to use and use those fields again in your annotated entity class, annotating them with <i>@Id</i>.</p>
<p>
Normally you need to map the class member name with the database field name. I.e. if you use the members <i>userId</i> and <i>versionId</i>, it&#8217;s quite likely you have to map them to database fields named <i>USER_ID</i> and <i>FIELD_ID</i>.</p>
<p>With the JPA annotations you do so using the <i>@Column</i>-annotation. But there is a bug. Hibernate completely ignores the <i>@Column</i> annotation if used in conjunction with other annotations, e.g.<i> @Id</i>.</p>
<p>See <a href="http://opensource.atlassian.com/projects/hibernate/browse/ANN-756">http://opensource.atlassian.com/projects/hibernate/browse/ANN-756</a> </p>
<p>Please vote for fixing this ugly, ugly bug.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2008/10/21/hibernate-jpa-bug-with-composite-keys/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>berlin.jar 2008</title>
		<link>http://blog.gresch.de/2008/09/13/berlin-jar-2008/</link>
		<comments>http://blog.gresch.de/2008/09/13/berlin-jar-2008/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 12:26:22 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Konferenzen]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[berlin]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JAX]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=291</guid>
		<description><![CDATA[Ralph Bergmann, Student an der FHTW Berlin, hat mit viel Energie und Elan die Java User Group Berlin-Brandenburg (re-)vitalisiert. H&#246;hepunkt seiner Aktivit&#228;ten ist die erste Berliner Fachkonferenz um die Programmiersprache Java, die berlin.jar. &#160; Im Vergleich zu den gro&#223;en kommerziellen Java-Konferenzen (in Deutschland die JAX, US-international die Java One) nimmt sich die berlin.jar bescheiden aus: [...]]]></description>
			<content:encoded><![CDATA[<p><a href="https://www.xing.com/profile/Ralph_Bergmann3">Ralph Bergmann</a>, Student an der <a href="http://www.fhtw-berlin.de/">FHTW Berlin</a>, hat mit viel Energie und Elan die <a href="http://www.jug-bb.de/">Java User Group Berlin-Brandenburg</a> (re-)vitalisiert. H&ouml;hepunkt seiner Aktivit&auml;ten ist die erste Berliner Fachkonferenz um die Programmiersprache Java, die <a href="http://berlin.jar.jug-bb.de/">berlin.jar</a>.</p>
<p>&nbsp;</p>
<p>Im Vergleich zu den gro&szlig;en kommerziellen Java-Konferenzen (in Deutschland die <a href="http://it-republik.de/jaxenter/">JAX</a>, US-international die <a href="http://java.sun.com/javaone/sf/">Java One</a>) nimmt sich die <i>berlin.jar</i> bescheiden aus:</p>
<p>&nbsp;</p>
<p>Alle Besucher (zumindest, die mit denen ich sprach) wurden von Ralph Bergmann pers&ouml;nlich begr&uuml;&szlig;t.</p>
<p>Nett.</p>
<p>Jedenfalls etwas ganz anderes als die spektakul&auml;ren B&uuml;hnenbegr&uuml;&szlig;ungen von <a href="https://www.xing.com/profile/Sebastian_Meyen">Sebastian Meyen</a>, der ansonsten auf der JAX stets recht arrogant/gestresst agiert, wenn man sich nicht durch Anzug oder Speaker-T-Shirt ausweisen kann.</p>
<p>&nbsp;</p>
<p>An zwei Tagen werden Samstags vier Vortr&auml;ge in f&uuml;nf Tracks angeboten, am Sonntag drei. Daneben k&ouml;nnen Samstags noch Workshops besucht werden (v.a. Eclipse RCP und Tomcat 6).</p>
<p>&nbsp;</p>
<p>Die Konferenz findet &#8211; naheliegend &#8211; in den R&auml;umen der FHTW Berlin in der <a href="http://maps.google.com/maps?ie=UTF-8&amp;um=1&amp;cid=0,0,15165330293285825259&amp;fb=1&amp;dq=fhtw+berlin&amp;daddr=Treskowallee+8,+10318+Berlin,+Germany&amp;geocode=6644372185939614511,52.493827,13.525643&amp;ll=52.493827,13.525643&amp;iwstate1=dir:to&amp;iwloc=A&amp;f=d&amp;sa=X&amp;oi=local_result&amp;resnum=1&amp;ct=directions-to">Treskowallee</a> statt. Menschen von der User Group und offenbar auch Studenten (?) unterst&uuml;tzen die Veranstaltung, ein einem Gang sind drei St&auml;nde aufgebaut.</p>
<p>Essen wird an Grill und Suppenk&uuml;che ausgegeben, leider alles nicht ganz mit den Veranstaltungszeiten koordiniert. F&uuml;r die erste Veranstaltung dieser Art, zudem nichtkommerziell, ist das akzeptabel.</p>
<p>&nbsp;</p>
<p>Was macht aber eine Konferenz wertvoll? <i>Nat&uuml;rlich die mobile Massage in der Relax-Lounge!</i> M&ouml;gen manche sagen. Andere finden eher die Qualit&auml;t der Vortr&auml;ge entscheidend. Hier braucht sich die <i>berlin.jar</i> nicht zu verstecken: Von <a href="https://www.xing.com/profile/Oliver_Boehm2">Oliver B&ouml;hm</a> &uuml;ber <a href="https://www.xing.com/profile/Peter_Rossbach">Peter Ro&szlig;bach</a> (!Tomcat Workshop!) zu <a href="https://www.xing.com/profile/Eberhard_Wolff">Eberhard Wolff</a> sind viele Gr&ouml;&szlig;en der deutschen Java-Community vertreten. Die Qualit&auml;t der von mir besuchten Vortr&auml;ge braucht sich zumindest hinter denen der Vortr&auml;ge auf der JAX nicht zu verstecken.</p>
<p>Alles in allem eine lohnende Veranstaltung, f&uuml;r den l&auml;cherlich niedrigen Eintrittspreis (15,- EUR im Vorverkauf, Verk&ouml;stigung inklusive) bekommt im Vergleich zu den kommerziellen Veranstaltungen ein Vielfaches als Gegenwert.</p>
<p>&nbsp;</p>
<p>Dieses Angebot nutzten am ersten Tag nach meiner Einsch&auml;tzung (Mittagessen und &quot;Abendparty&quot;) mehr als 100, aber sicherlich weniger als 250 Teilnehmer, davon etwa 3% Frauen (leider nicht eine einzige Vortragende, sehr schade, dass <a href="https://www.xing.com/profile/Angelika_Langer">Angelika Langer</a> nicht anwesend war).</p>
<p>&nbsp;</p>
<p>Hochachtung verdient Ralph Bergmann und seinen Helfern f&uuml;r den Einsatz, der weitaus mehr von einer Begeisterung f&uuml;r die Technologie spricht als von reinem Profilierungsdrang. Dazu wurde zuviel gel&auml;chelt.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2008/09/13/berlin-jar-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Social DNA</title>
		<link>http://blog.gresch.de/2008/09/04/social-dna/</link>
		<comments>http://blog.gresch.de/2008/09/04/social-dna/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 20:45:00 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[berlin]]></category>
		<category><![CDATA[bildung]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[Ideen]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jsf]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Literatur]]></category>
		<category><![CDATA[Politik]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=286</guid>
		<description><![CDATA[Letztens eine Nachricht über XING erhalten. Der Absender zeigte sich erfreut über meine dort hinterlegten Interessen, als da wären: Softwareentwicklung mit agilen Methoden, Java EE (JEE), J2EE, Java2EE, Java, Ruby, Linux, JSF, Spring, Hibernate, SCALA, JBoss Seam, Maven, Apache Software Foundation, Eclipse, Eclipse RCP, NetBeans, Rules Engines, Middleware, SOA, BPM, ITIL, TOGAF, Zachman, Lean Management, [...]]]></description>
			<content:encoded><![CDATA[<p>Letztens eine Nachricht über XING erhalten. Der Absender zeigte sich erfreut über meine dort hinterlegten Interessen, als da wären:</p>
<p><em>Softwareentwicklung mit agilen Methoden, Java EE (JEE), J2EE, Java2EE, Java, Ruby, Linux, JSF, Spring, Hibernate, SCALA, JBoss Seam, Maven, Apache Software Foundation, Eclipse, Eclipse RCP, NetBeans, Rules Engines, Middleware, SOA, BPM, ITIL, TOGAF, Zachman, Lean Management, IT-Strategie, Neue Musik, Klassische Musik, Musizieren, Klavier, Klarinette, Literatur (speziell Lyrik), Literatur, Bildende Künste, Kunst, Kulturgeschichte, Kunstgeschichte, Berlin, London, Venedig, Paris, Florenz, Rechtsinformatik, Italien, Großbritannien, English Literature, English Verse. Werke u.a. folgender Personen: Fowler, Tiepolo, Eisenstein, Braudel, Schnitzler, Ligeti, Knuth, Pushkin, Satie, Bellini, Monteverdi, Adams, Veronese, Shelley, Brecht, Dowson, Brahms, Montaigne, Schumann, Kubrick, Rameau, Bartok, Huizinga, Mahler, v. Bingen, Lenau, Frisch, Lenz, Olbrisch, Brunelleschi, Lichtenberg, Turner, Günther, Trakl, Scelsi, Redon, Streeruwitz, Flaubert, Friedell, Naso, Wilde, Bernhard, Erasmus, Gernhardt, Klimt, Palladio, Rückert, Härtling, Flaccus, v.d. Weyden, Balthus, Reynaldo Hahn, Caroll, Borodin, Verlaine, Mörike, Schobert, Villon, Greenaway, Heym, Thelen, Watteau, Abschatz, Jelinek, Bach (4x), Huysmans, Schiele, Ravel, Walser, V. Klemperer, Augustinus, Kling, Mann (2x), Gombrich, Stroustrup, Auster, Brüder Limburg, Franck, Purcell, Fellini, Truffaut, Hofmannsthal, Pollock, Schubert, Bresdins, Ariès/Duby, Bulgakow, Lenz, Proust, Neruda, de Beauvoir, Brouwer, Fragonard, Degas, Kurtag, Zelenka, Pepys, Rimbaud, Giorgione, Bachmann, Vian, Wilder, Wilmot/Rochester, Brinkmann, Callot, Opitz, Couperin, Ockeghem, Giacometti, Celan, Klinger, Catull, Sterne. Laufen, Laufsport, Joggen, Marathon.</em></p>
<p><em> </em><em> </em></p>
<p><em> </em></p>
<p><em> </em></p>
<p>Diese hatte ich schon vor längerer Zeit einmal zusammengekramt, um einer <a href="http://blog.gresch.de/2005/05/05/computersprache/">schmerzhaft</a> Geliebten zu erkennen zu geben, ich wäre der richtige für sie, allein meiner Interessen wegen. (Magisches Denken, Zaubersprüche der Kindheit, nur transzendiert.).</p>
<p>Tatsächlich erkannte ich nach einer Weile, dass diese Frau sich weder für mich noch für wenigstens 10% der aufgeführten &#8220;Inhalte&#8221; hinter den Namen interessierte.</p>
<p>Wär mir letzteres wiederum von Anfang an bekannt gewesen, hätte ich gar nicht damit begonnen, ihr nichtvorhandene Gemeinsamkeiten zu unterstellen (Gegengeschlechtlichkeit ist ja wirklich keine Gemeinsamkeit.).</p>
<p>Und auch kein ernsthaftes Interesse für sie entwickelt.</p>
<p>Das wirft bei mir die Frage auf, ob es nicht irgendeinen Social-Web-Dienst gibt, bei dem man solche Informationen nicht hinterlegen kann, um eine &#8220;Interest Map&#8221; zu erstellen, die man dann mit der anderer Nutzer vergleichen kann. Auf diese Weise könnte man eine <a href="/index.php?/archives/212-Frisch-Lektuere-Rueckzug-aufs-Selbst.html">Sozial-DNA</a> erstellen, und Menschen finden, die ähnliche Interessen haben / Ziele verfolgen.</p>
<p>Am besten noch mobil die Sozial-DNA gegeneinander abgleichen können. Und das noch für berufliche Profile und private. Und eine &#8220;Heat Map&#8221;, die anzeigt, wo sich im Raum die Leute befinden, mit denen man zumindest die Interessen teilt. Etc. Etc. (z.B. mit sozioökonomischen und politischen Kriterien).</p>
<p>Datenschutz wäre da ein noch sensibleres Thema als bei den gängigen &#8220;Social Tools&#8221;. Mir erschiene <em>so etwas</em> jedenfalls sinnvoller als die ganzen &#8220;Legacy DNA&#8221; Startups wie <a href="http://www.navigenics.com/">Navigenics </a>etc., die einem alles und nichts zu der eigenen DNA mitteilen. Die Möglichkeit, die &#8220;Social DNA&#8221; (die keinen Status ausdrückt, sondern mikroindividuelle Differenzierung) verändern zu können, ist hier entscheidend: Jeder Mensch hat ja die Möglichkeit, sein Profil zu verändern. Ggf. sollte man sogar von vornherein angeben können, in welche Richtung man sich entwickeln möchte, was man nicht kennt, aber kennen möchte etc.</p>
<p>Konkreter sollte das ganze so gestaltet sein, dass für den Grunddatenbestand eine Anzahl von etwa 100 unterschiedlichen &#8220;Leads&#8221; (Schlüsselpersonen) ihre inhaltlichen, kulturellen, religiösen, sportlichen, politischen Interessen und Kenntnisse, Ziele und Vorlieben mitteilen, am besten über eine Liste von Stichwörtern wie oben dargestellt.</p>
<p>Diese wird dann geparst, bestehenden Schlüsselobjekten und semantisch zugeordnet. Danach erfolgt dann eine Auswertung / Neuindexierung der ermittelten Objekte durch die Nutzer. Sind die Schlüsselbobjekte zugeordnet, werden sie bewertet: Bei &#8220;Werken&#8221;, Künstlerinnen, Musikstücken (kristalline Intelligenz) vor allem nach Vorlieben (mag ich / mag nicht / mir unbekannt), bei konzeptionellen Schlüsselobjekten (fluider Intelligenz) auch nach Fähigkeit (verstehe/kann ich, verstehe/kann ich nicht / mir unbekannt).</p>
<p>Dieser Grunddatenbestand kann dann von anderen übernommen und weiter angepasst werden.</p>
<p>Das ganze mit der Möglichkeit, sich mit anderen Nutzern &#8220;zu verbinden&#8221;, von ihnen Objekte zu übernehmen und für sich selbst zu bewerten, zu suchen und sich finden zu lassen und sich eine Timeline anzeigen zu lassen, aus der man später ermitteln kann, wie sich die eigene Social DNA verändert hat.</p>
<p>Falls jemand einen solchen Dienst kennt, wär ich für einen Hinweis sehr dankbar <img src='http://blog.gresch.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2008/09/04/social-dna/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tomcat-Startup: java.util.zip.ZipException: invalid entry size</title>
		<link>http://blog.gresch.de/2008/08/29/tomcat-startup-java-util-zip-zipexception-invalid-entry-size/</link>
		<comments>http://blog.gresch.de/2008/08/29/tomcat-startup-java-util-zip-zipexception-invalid-entry-size/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 17:58:00 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=271</guid>
		<description><![CDATA[Dieser Fehler kann auftreten, wenn eine Archivdatei (*.jar) aus irgendeinem Grund ung&#252;ltig ist. Abhilfe schafft hier am ehesten das jar noch einmal zu bauen, wenn man es selbst mit Maven, Ant oder der IDE erstellt hat; wenn man einen Archivmanager (insb. WinZip) verwendet hat, um das jar manuell zu erstellen, einen anderen Archivmanager, etwa 7-zip [...]]]></description>
			<content:encoded><![CDATA[<p>Dieser Fehler kann auftreten, wenn eine Archivdatei (*.jar) aus irgendeinem Grund ung&uuml;ltig ist. Abhilfe schafft hier am ehesten</p>
<ul>
<li>das jar noch einmal zu bauen, wenn man es selbst mit Maven, Ant oder der IDE erstellt hat;</li>
<li>wenn man einen Archivmanager (insb. WinZip) verwendet hat, um das jar manuell zu erstellen, einen anderen Archivmanager, etwa <a href="http://www.7-zip.org/">7-zip</a> oder <a href="http://www.izarc.org/">izarc</a> zu verwenden;</li>
</ul>
<p>Nat&uuml;rlich muss man erst einmal das schuldige *.jar ermitteln, was unter Umst&auml;nden gar nicht so leicht ist. Wenn die webapp zuvor problemlos lief, am besten nach absteigendem Datum alle jars nacheinander entfernen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2008/08/29/tomcat-startup-java-util-zip-zipexception-invalid-entry-size/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven-Snippets</title>
		<link>http://blog.gresch.de/2008/07/12/maven-snippets/</link>
		<comments>http://blog.gresch.de/2008/07/12/maven-snippets/#comments</comments>
		<pubDate>Sat, 12 Jul 2008 16:27:00 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=270</guid>
		<description><![CDATA[Hier einige Kniffe f&#252;r Maven, die h&#228;ufiger angefragt (oder von mir selbst ben&#246;tigt) werden. Siehe auch die Maven-FAQ (die Code-Snippets lassen leider immer noch auf sich warten) und die FAQ vom Codehaus-Wiki. &#160; Ein Tip: Installiert man das mittlerweile stark ausgereifte m2 Maven-Plugin von Codehaus, findet man weitere sehr n&#252;tzliche Hinweise in der Eclipse-Hilfe, die [...]]]></description>
			<content:encoded><![CDATA[<p>Hier einige Kniffe f&uuml;r Maven, die h&auml;ufiger angefragt (oder von mir selbst ben&ouml;tigt) werden. Siehe auch die <a href="http://maven.apache.org/general.html">Maven-FAQ</a> (die Code-Snippets lassen leider immer noch auf sich warten) und die FAQ vom <a href="http://docs.codehaus.org/display/MAVENUSER/FAQs-1">Codehaus-Wiki</a>.</p>
<p>&nbsp;</p>
<p>
Ein Tip: Installiert man das mittlerweile stark ausgereifte <a href="http://m2eclipse.codehaus.org/">m2 Maven-Plugin von Codehaus</a>, findet man weitere sehr n&uuml;tzliche Hinweise in der Eclipse-Hilfe, die den gesamten &quot;<a href="http://www.sonatype.com/book/reference/public-book.html">Definite Guide</a>&quot; integriert, mit Suchfunktion.</p>
<p>&nbsp;</p>
<p>Die letzten Versionen des Plugins w&auml;ren eigentlich einen eigenen Eintrag wert: Es kommt jetzt mit einem schon ansprechenden POM-Editor daher, der an die Editoren f&uuml;r die Eclipse-RCP-Entwicklung erinnert (etc. etc. etc., WTP-Unterst&uuml;tzung ist im <a href="http://docs.codehaus.org/display/M2ECLIPSE/WTP+mini+howto">Codehaus-Wiki</a> beschrieben), aber Achtung: Die Eclipse-Update-URL hat sich ge&auml;ndert zu <b>http://m2eclipse.sonatype.org/update/</b> resp. <b>http://m2eclipse.sonatype.org/update-dev</b> !<b></b></p>
<p><b></p>
<p>Test umgehen</b></p>
<p>An der Kommandozeile:</p>
<p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">-Dmaven.test.skip=true</div></div>
</p>
<p>&nbsp;</p>
<p>In der <i>pom.xml</i>:</p>
<pre>
&lt;plugins&gt;<span style="color: rgb(51, 153, 102);">     </span>
<span style="color: rgb(51, 153, 102);">&lt;!-- ...weitere Plugins... --&gt;</span>
  &lt;plugin&gt;
    &lt;artifactId&gt;maven-surefire-plugin&lt;/artifactId&gt;
    &lt;configuration&gt;
    &lt;skip&gt;true&lt;/skip&gt;
    &lt;/configuration&gt;
  &lt;/plugin&gt;
&lt;/plugins&gt;
</pre>
<p><b></b><b><br />
Fremdes Archiv in lokales Repository deployen</b></p>
<p>Kommt insb. vor, wenn man kommerzielle Archive, die nicht &ouml;ffentlich verf&uuml;gbar sind, in sein lokales Repository &uuml;bernehmen m&ouml;chte. Oder irgendwelche obskuren Legacy-jars, die mit Ant gebaut werden <img src='http://blog.gresch.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> )))</p>
<p>Man ben&ouml;tigt eine rudiment&auml;re pom-Datei, Teil-Struktur ggf. von <a href="http://www.mvnrepository.com/">http://www.mvnrepository.com/</a> holen.</p>
<p>Hier ein POM f&uuml;rs Substance L&amp;F:</p>
<p><tt>&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;<br />
&nbsp; xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&quot;&gt;<br />
&nbsp; &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;<br />
&nbsp; &lt;groupId&gt;org.jvnet&lt;/groupId&gt;<br />
&nbsp; &lt;artifactId&gt;substance&lt;/artifactId&gt;<br />
&nbsp; &lt;version&gt;4.3.11&lt;/version&gt;<br />
&nbsp; &lt;packaging&gt;jar&lt;/packaging&gt;<br />
&nbsp; &lt;name&gt;Substance Look and Feel&lt;/name&gt;<br />
&nbsp; &lt;url&gt;https://substance.dev.java.net/&lt;/url&gt;<br />
&nbsp; &lt;description&gt;Private deplomyent, not from Sun!</tt><tt>&lt;/description&gt;</tt><br />
<tt>&nbsp; &lt;dependencies /&gt;<br />
&lt;/project&gt;</tt></p>
<p>Jetzt an der Kommandozeile in das Verzeichnis wechseln, in dem sich jar und Dummy-POM-Datei befinden und deployen (diesmal f&uuml;rs jnlp-Servlet):</p>
<pre>
mvn deploy:deploy-file -Dfile=jnlp-servlet-1.0.jar -DpomFile=openswing-jnlp-servlet.pom -DrepositoryId=release -Durl=http://10.45.7.7:7575/archiva/repository/internal -e
</pre>
<p><b><br />
Wirksame Konfiguration anzeigen</b></p>
<p><tt>mvn help:<em>effective</em>-pom</tt> (Siehe die n&uuml;tzlichen weiteren Features <a href="http://maven.apache.org/plugins/maven-help-plugin/usage.html">hier</a>).</p>
<p><b><br />
War erstellen</b></p>
<p>In <i>pom.xml</i> (Unterelement von <i>&lt;project&gt;</i>):</p>
<p><tt>&lt;packaging&gt;war&lt;/packaging&gt;</tt></p>
<p>Ggf. das Maven-War-Plugin verwenden und &lt;exclusion&gt; f&uuml;r JEE-Bibliotheken.</p>
<p>Zum Bauen</p>
<p><tt>mvn package</tt></p>
<p><b><br />
Build ausf&uuml;hren (sic)<br />
</b></p>
<p><tt>mvn compile</tt> / <tt>mvn package</tt> </p>
<p>(Und den &quot;<a href="http://www.sonatype.com/book/reference/public-book.html">Definite Guide</a>&quot; lesen, um das Konzept zu verstehen &lt;kicher&gt;).</p>
<p><b><br />
JDK festlegen (zum Kopieren)<br />
</b></p>
<pre>
&lt;plugin&gt;
    &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
    &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
    &lt;version&gt;2.0.2&lt;/version&gt;
    &lt;configuration&gt;
        &lt;source&gt;1.6&lt;/source&gt;<span style="color: rgb(51, 153, 102);">&lt;!-- oder 1.4 oder 1.5 etc.--&gt;</span>
        &lt;target&gt;1.6&lt;/target&gt;<span style="color: rgb(51, 153, 102);">&lt;!-- oder 1.4 oder 1.5 etc.--&gt;</span>
    &lt;/configuration&gt;
&lt;/plugin&gt;
</pre>
<p>(Fortsetzung folgt&#8230;)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2008/07/12/maven-snippets/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>ActiveMQ 5.1 und Spring: Schema-Datei nicht gefunden&#8230;</title>
		<link>http://blog.gresch.de/2008/06/19/activemq-5-1-und-spring-schema-datei-nicht-gefunden/</link>
		<comments>http://blog.gresch.de/2008/06/19/activemq-5-1-und-spring-schema-datei-nicht-gefunden/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 19:47:00 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=260</guid>
		<description><![CDATA[Das Problem, das unter https://issues.apache.org/activemq/browse/AMQ-1638 beschrieben wird, n&#228;mlich, dass Spring solche Konfigurationsdateien nicht l&#228;dt, wenn keine Internetverbindung m&#246;glich ist, ist leider nicht behoben. Der dort beschriebene Workaround, in der Spring-Konfigurationsdatei (mit XML-Schema) die Datei activemq.xsd zu referenzieren, schlug leider fehl. Ein Kollege ermittelte einen sicheren, wenn auch manuellem Workaround: In der Datei [activemq-JAR]/META-INF/spring.schemas folgendes hinzuf&#252;gen [...]]]></description>
			<content:encoded><![CDATA[<p>Das Problem, das unter <a href="https://issues.apache.org/activemq/browse/AMQ-1638">https://issues.apache.org/activemq/browse/AMQ-1638</a> beschrieben wird, n&auml;mlich, dass Spring solche Konfigurationsdateien nicht l&auml;dt, wenn keine Internetverbindung m&ouml;glich ist, ist leider nicht behoben. </p>
<p>Der dort beschriebene Workaround, in der Spring-Konfigurationsdatei (mit XML-Schema) die Datei <i>activemq.xsd</i> zu referenzieren, schlug leider fehl.</p>
<p>Ein Kollege ermittelte einen sicheren, wenn auch manuellem Workaround: In der Datei <i>[activemq-JAR]/META-INF/spring.schemas</i> folgendes hinzuf&uuml;gen (d.h., aus dem <i>jar </i>extrahieren, &auml;ndern und die Datei wieder hinzuf&uuml;gen):</p>
<pre>
http\://activemq.apache.org/schema/core/activemq-core-5.1.0.xsd=activemq.xsd
</pre>
<p>Hier noch die Fehlermeldung f&uuml;r die Suchmaschinen <img src='http://blog.gresch.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<pre>
WARNUNG: Ignored XML validation warning org.xml.sax.SAXParseException: schema_reference.4:
Failed to read schema document 'http://activemq.apache.org/schema/core/activemq-core-5.1.0.xsd',  because
1) could not find the document;
2) the document could not be read;
3) the root element of the document is not &lt;xsd:schema&gt;.</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2008/06/19/activemq-5-1-und-spring-schema-datei-nicht-gefunden/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JSF 1.2, Tomcat 6, XML-Validierungs-Exception &#8220;No grammar found&#8221;</title>
		<link>http://blog.gresch.de/2008/03/24/jsf-1-2-tomcat-6-xml-validierungs-exception-no-grammar-found/</link>
		<comments>http://blog.gresch.de/2008/03/24/jsf-1-2-tomcat-6-xml-validierungs-exception-no-grammar-found/#comments</comments>
		<pubDate>Mon, 24 Mar 2008 21:19:00 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=237</guid>
		<description><![CDATA[Beim Versuch, &#60;el-resolver&#62;org.springframework.web.jsf.el.SpringBeanFacesELResolver&#60;/el-resolver&#62; zu verwenden (Update auf Spring 2.5 und MyFaces 1.2), trat eine seltsame Fehlermeldung auf: - Parse Error at line 2 column 14: Document is invalid: no grammar found.org.xml.sax.SAXParseException: Document is invalid: no grammar found. at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source) at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source) at org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown Source) [...]]]></description>
			<content:encoded><![CDATA[<p>Beim Versuch,</p>
<pre>&lt;el-resolver&gt;org.springframework.web.jsf.el.SpringBeanFacesELResolver&lt;/el-resolver&gt;</pre>
<p>zu verwenden (Update auf Spring 2.5 und MyFaces 1.2), trat eine seltsame Fehlermeldung auf:</p>
<pre>- Parse Error at line 2 column 14: Document is invalid: no grammar found.org.xml.sax.SAXParseException: Document is invalid: no grammar found.	at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)	at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)	at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)	at org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown Source)	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)	at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)	at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)	at org.apache.commons.digester.Digester.parse(Digester.java:1745)	at org.apache.myfaces.config.impl.digester.DigesterFacesConfigUnmarshallerImpl.getFacesConfig(DigesterFacesConfigUnmarshallerImpl.java:186)	at org.apache.myfaces.config.FacesConfigurator.feedWebAppConfig(FacesConfigurator.java:541)	at org.apache.myfaces.config.FacesConfigurator.configure(FacesConfigurator.java:133)	at org.apache.myfaces.webapp.StartupServletContextListener.initFaces(StartupServletContextListener.java:68)	at org.apache.myfaces.webapp.StartupServletContextListener.contextInitialized(StartupServletContextListener.java:51)	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4350)	at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1114)	at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1212)	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:293)	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)	at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)	at java.lang.Thread.run(Thread.java:619)
</pre>
<p>&nbsp;</p>
<p>Ursache waren zwei MyFaces-jars mit Version 1.1.5 im WEB-INF/lib-Verzeichnis der Webanwendung. Dies ist ein Problem beim Zusammenspiel von MyEclipse und dem Maven-Plugin (Codehaus): Hier muss man zunÃ¤chst <i>Project</i>-&gt;<i>Clean</i> ausfÃ¼hren und dann <i>manuell</i> ein zweites Deployment durchfÃ¼hren.</p>
<p>Dies gilt leider in unregelmÃ¤ÃŸigen AbstÃ¤nden (!) fÃ¼r jede Ã„nderung von Dateien, die keine Java-Klassen sind (also z.B. *.xhtml-Dateien fÃ¼r Facelets etc.).&nbsp;</p>
<p>ZusÃ¤tzlich:&nbsp; Unbedingt auch die KompatibilitÃ¤tsmatrix von Tomahawk und ggf. Trinidad&nbsp; zur verwendeten MyFaces-Version prÃ¼fen und zwar im <a href="http://wiki.apache.org/myfaces/CompatibilityMatrix" mce_href="http://wiki.apache.org/myfaces/CompatibilityMatrix">MyFaces-Wiki</a>. </p>
<p>Dabei fÃ¼r Facelets und Tomahawk (allgemein dazu siehe <a href="http://code.google.com/p/tomahawk-facelets/" mce_href="http://code.google.com/p/tomahawk-facelets/">hier</a>) noch ggf. die KompatibilitÃ¤t mit dem <a href="http://code.google.com/p/tomahawk-facelets/" mce_href="http://code.google.com/p/tomahawk-facelets/">tomahawk-facelets-Projekt</a> beachten. Hier kÃ¶nnen sich insbesondere die Sandbox-Tags auch nachtrÃ¤glich geÃ¤ndert haben.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2008/03/24/jsf-1-2-tomcat-6-xml-validierungs-exception-no-grammar-found/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sehr ausführliche JVM-Optionsliste</title>
		<link>http://blog.gresch.de/2008/02/19/sehr-ausfuehrliche-jvm-optionsliste/</link>
		<comments>http://blog.gresch.de/2008/02/19/sehr-ausfuehrliche-jvm-optionsliste/#comments</comments>
		<pubDate>Tue, 19 Feb 2008 21:48:00 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jvm]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=233</guid>
		<description><![CDATA[Endlich eine brauchbare, ausf&#252;hrliche und nach Versionen vergleichende Referenz f&#252;r die JVM-Optionen gefunden: http://blogs.sun.com/watt/resource/jvm-options-list.html Wenn&#160;sie&#160;sich&#160;prim&#228;r auch auf Solaris/SPARC beziehen mag, ist sie mehr als n&#252;tzlich. &#160; &#160;]]></description>
			<content:encoded><![CDATA[<p>Endlich eine brauchbare, ausf&uuml;hrliche und nach Versionen vergleichende Referenz f&uuml;r die JVM-Optionen gefunden:</p>
<p><a HREF="http://blogs.sun.com/watt/resource/jvm-options-list.html">http://blogs.sun.com/watt/resource/jvm-options-list.html</a></p>
<p>Wenn&nbsp;sie&nbsp;sich&nbsp;prim&auml;r auch auf Solaris/SPARC beziehen mag, ist sie mehr als n&uuml;tzlich.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2008/02/19/sehr-ausfuehrliche-jvm-optionsliste/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ant: Umgebungsvariablen an der Kommandozeile (mit &#8220;-D&#8221;) überschreiben</title>
		<link>http://blog.gresch.de/2008/01/16/ant-umgebungsvariablen-an-der-kommandozeile-mit-d-ueberschreiben/</link>
		<comments>http://blog.gresch.de/2008/01/16/ant-umgebungsvariablen-an-der-kommandozeile-mit-d-ueberschreiben/#comments</comments>
		<pubDate>Wed, 16 Jan 2008 23:16:00 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Programmiernotizen]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=230</guid>
		<description><![CDATA[Wird immer mal wieder angefragt: Gesetzt den Fall, man m&#246;chte in einem Ant-Script auf eine Umgebungsvariable zugreifen, was man normalerweise so macht: &#60;property environment=&#34;env&#34; /&#62; &#60;property name=&#34;dist-conf&#34; location=&#34;${env.DIST_PATH}/conf&#34; /&#62; Dann kann man diese Variable an der Kommandozeile wie folgt &#252;berschreiben: ant -Denv.DIST_PATH=/path/to/the/dir Um einmal gesetzte Variablen zu &#252;berschreiben, ist der Ant-Contrib-Variable-Task (siehe http://ant-contrib.sourceforge.net/) die L&#246;sung [...]]]></description>
			<content:encoded><![CDATA[<p>Wird immer mal wieder angefragt: Gesetzt den Fall, man m&ouml;chte in einem Ant-Script auf eine Umgebungsvariable zugreifen, was man normalerweise so macht:</p>
<pre>&lt;property environment=&quot;env&quot; /&gt; &lt;property name=&quot;dist-conf&quot; location=&quot;${env.DIST_PATH}/conf&quot; /&gt;</pre>
<p>Dann kann man diese Variable an der Kommandozeile wie folgt &uuml;berschreiben:</p>
<pre>ant -Denv.DIST_PATH=/path/to/the/dir</pre>
<p>Um einmal gesetzte Variablen zu &uuml;berschreiben, ist der Ant-Contrib-Variable-Task (siehe <a href="http://ant-contrib.sourceforge.net/">http://ant-contrib.sourceforge.net/</a>) die L&ouml;sung der Wahl.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2008/01/16/ant-umgebungsvariablen-an-der-kommandozeile-mit-d-ueberschreiben/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VerÃ¤ndertes Dependency-Management: Maven &gt; 2.05</title>
		<link>http://blog.gresch.de/2007/12/01/veraendertes-dependency-management-maven-2-05/</link>
		<comments>http://blog.gresch.de/2007/12/01/veraendertes-dependency-management-maven-2-05/#comments</comments>
		<pubDate>Sat, 01 Dec 2007 15:19:32 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[andromda]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[mda]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=225</guid>
		<description><![CDATA[Beim Arbeiten mit AndroMDA auf ein Problem gesto&#223;en, als sich ein Projekt nicht mehr erzeugen lie&#223;; im Forum schlie&#223;lich diesen Hinweis gefunden. Der Grund: Abh&#228;ngige Module ben&#246;tigen ab Maven 2.06 immer in ihrer eigenen pom.xml ebenfalls die Angabe der Versionsnummer. Zur Umstellung siehe die gesonderte Seite hier. Gl&#252;cklicherweise arbeite ich mit einer Struktur, in der [...]]]></description>
			<content:encoded><![CDATA[<p>Beim Arbeiten mit AndroMDA auf ein Problem gesto&szlig;en, als sich ein Projekt nicht mehr erzeugen lie&szlig;; im Forum schlie&szlig;lich <a href="http://galaxy.andromda.org/forum/viewtopic.php?t=4935&amp;highlight=cannot+empty">diesen Hinweis</a> gefunden.</p>
<p>Der Grund: Abh&auml;ngige Module ben&ouml;tigen ab Maven 2.06 immer in ihrer eigenen pom.xml ebenfalls die Angabe der Versionsnummer. Zur Umstellung siehe die gesonderte Seite <a href="http://maven.apache.org/plugins/maven-dependency-plugin/examples/preparing-dependencies.html">hier</a>. </p>
<p>Gl&uuml;cklicherweise arbeite ich mit einer Struktur, in der ich Build-Tools in ein Defaultverzeichnis &quot;current&quot; packe, so dass schnell auf eine andere Version gewechselt werden kann. </p>
<p>Nichtsdestotrotz finde ich es wenig verst&auml;ndlich, wenn in einem Minor-Release eine derart elementare strukturelle Ver&auml;nderung vorgenommen wird. Als Maven-Anwender h&auml;tte ich mir allenfalls eine Warnung gew&uuml;nscht mit R&uuml;ckfall auf die &auml;ltere Funktionalit&auml;t.</p>
<p>Wozu gibt man denn in Maven die Versionsnummer im &lt;modelVersion&gt;-Element der <i>pom.xml</i> &uuml;berhaupt an, wenn nicht auch f&uuml;r eine Abw&auml;rtskompatibilit&auml;t? Sehr merkw&uuml;rdig. </p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/12/01/veraendertes-dependency-management-maven-2-05/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MyEclipse: &#8220;The validator WSDL Validator is a delegating validator but no delegate can found for it.&#8221;</title>
		<link>http://blog.gresch.de/2007/11/30/myeclipse-the-validator-wsdl-validator-is-a-delegating-validator-but-no-delegate-can-found-for-it/</link>
		<comments>http://blog.gresch.de/2007/11/30/myeclipse-the-validator-wsdl-validator-is-a-delegating-validator-but-no-delegate-can-found-for-it/#comments</comments>
		<pubDate>Fri, 30 Nov 2007 22:27:00 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[eclipse]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=224</guid>
		<description><![CDATA[Eine dieser immer wieder auftauchenden, h&#228;&#223;lichen MyEclipse-Fehlermeldungen. Abhilfe schafft, &#252;ber Windows-&#62;Preferences-&#62;Validation den jeweiligen Button in der Spalte Settings zu w&#228;hlen und dann einen Validator-Typen zu w&#228;hlen, danach ggf. noch Project-&#62;Clean. Hinweis f&#252;r Eclipse: Deselektiert man &#252;ber Windows-&#62;Preferences-&#62;Validation eine Validierung komplett und sollte eine Datei bereits als invalid markiert sein, hilft, erneut Validate im Kontextmen&#252; des [...]]]></description>
			<content:encoded><![CDATA[<p>Eine dieser immer wieder auftauchenden, h&auml;&szlig;lichen MyEclipse-Fehlermeldungen.</p>
<p>Abhilfe schafft, &uuml;ber <i>Windows</i>-&gt;<i>Preferences</i>-&gt;<i>Validation</i> den jeweiligen <b>Button</b> in der Spalte <i>Settings</i> zu w&auml;hlen und dann einen Validator-Typen zu w&auml;hlen, danach ggf. noch <i>Project</i>-&gt;<i>Clean</i>. </p>
<p>Hinweis f&uuml;r <i>Eclipse</i>: Deselektiert man &uuml;ber <i>Windows</i>-&gt;<i>Preferences</i>-&gt;<i>Validation</i> eine Validierung komplett und sollte eine Datei bereits als invalid markiert sein, hilft, erneut <i>Validate</i> im Kontextmen&uuml; des Eintrags im <i>Project</i>-/<i>Package-Explorer</i>/<i>Navigator</i> zu w&auml;hlen (geht mit <i>Clean</i> nicht weg).</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/11/30/myeclipse-the-validator-wsdl-validator-is-a-delegating-validator-but-no-delegate-can-found-for-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tomcat (5/6) &#8211; Aelfred Fehlermeldung beim Start aus MyEclipse heraus</title>
		<link>http://blog.gresch.de/2007/10/17/tomcat-56-aelfred-fehlermeldung-beim-start-aus-myeclipse-heraus/</link>
		<comments>http://blog.gresch.de/2007/10/17/tomcat-56-aelfred-fehlermeldung-beim-start-aus-myeclipse-heraus/#comments</comments>
		<pubDate>Wed, 17 Oct 2007 04:32:00 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JAX]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[webapp]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=217</guid>
		<description><![CDATA[Hier half, &#252;ber Windows, Preferences, MyEclipse, Application Servers, [TC-#] folgendes hinzuzuf&#252;gen: &#160; -Djavax.xml.transform.TransformerFactory=com.icl.saxon.TransformerFactoryImpl -Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl-Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl-Dorg.xml.parsers.sax.parser=org.apache.xerces.parsers.SAXParser&#160; Siehe dazu auch nur Xerces als Default-Parser setzen.&#160; &#160; &#160; &#160; &#160;]]></description>
			<content:encoded><![CDATA[<p>Hier half, &uuml;ber <em>Windows</em>, <em>Preferences</em>, <em>MyEclipse</em>, <em>Application Servers</em>, [TC-#] folgendes hinzuzuf&uuml;gen:</p>
<pre>&nbsp;</pre>
<pre>-Djavax.xml.transform.TransformerFactory=com.icl.saxon.TransformerFactoryImpl -Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl-Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl-Dorg.xml.parsers.sax.parser=org.apache.xerces.parsers.SAXParser&nbsp;</pre>
<p>Siehe dazu auch nur <a href="index.php?/archives/184-Xerces-als-Default-Parser-setzen.html">Xerces als Default-Parser setzen</a>.&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/10/17/tomcat-56-aelfred-fehlermeldung-beim-start-aus-myeclipse-heraus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Commons CLI Stolperstein</title>
		<link>http://blog.gresch.de/2007/08/14/commons-cli-stolperstein/</link>
		<comments>http://blog.gresch.de/2007/08/14/commons-cli-stolperstein/#comments</comments>
		<pubDate>Tue, 14 Aug 2007 16:02:28 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=205</guid>
		<description><![CDATA[Da kann man schon dr&#252;ber &#34;fallen&#34;: In der CLI-Implementierung von Jakarta darf man keinesfalls die Parameterabk&#252;rzungen gleichzeitig als Argumente verwenden. Das mag manchem vielleicht selbstverst&#228;ndlich scheinen, doch da CLI immer f&#252;r die Parameterabk&#252;rzungen einen vorangestellten Bindestrich verlangt, ist es das IMHO nicht. &#160;Nun ja, aber wenn das Problem bekannt ist, braucht es nur noch umgangen [...]]]></description>
			<content:encoded><![CDATA[<p>Da kann man schon dr&uuml;ber &quot;fallen&quot;: In der <a href="http://commons.apache.org/cli/">CLI-Implementierung von Jakarta</a> darf man keinesfalls die Parameterabk&uuml;rzungen gleichzeitig als Argumente verwenden. Das mag manchem vielleicht selbstverst&auml;ndlich scheinen, doch da CLI immer f&uuml;r die Parameterabk&uuml;rzungen einen vorangestellten Bindestrich verlangt, ist es das IMHO nicht.</p>
<p>&nbsp;Nun ja, aber wenn das Problem bekannt ist, braucht es nur noch umgangen zu werden. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/08/14/commons-cli-stolperstein/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>(M)eine Singleton-Lösung</title>
		<link>http://blog.gresch.de/2007/07/26/meine-singleton-loesung/</link>
		<comments>http://blog.gresch.de/2007/07/26/meine-singleton-loesung/#comments</comments>
		<pubDate>Thu, 26 Jul 2007 19:23:00 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[oo]]></category>
		<category><![CDATA[patterns]]></category>
		<category><![CDATA[singleton]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=202</guid>
		<description><![CDATA[Auf Googles Singleton-Detector gesto&#223;en und mir noch einmal die Begr&#252;ndungen angeschaut, weshalb Singletons b&#246;se sind. Das ist alles nicht wirklich neu, wiewohl aus meiner Sicht ein Singleton durchaus Sinn machen kann (gilt die Kritik nicht eigentlich jeder statischen Factory-Methode?). Wie auch immer, f&#252;r mich ist guter Stil, zu begr&#252;nden, weshalb man ein Singleton verwendet. Ebenso, [...]]]></description>
			<content:encoded><![CDATA[<p>Auf Googles <a href="http://code.google.com/p/google-singleton-detector/" target="_blank">Singleton-Detector</a> gesto&szlig;en und mir noch einmal die Begr&uuml;ndungen angeschaut, <a href="http://c2.com/cgi/wiki?SingletonsAreEvil" target="_blank">weshalb Singletons b&ouml;se sind</a>. Das ist alles nicht wirklich neu, wiewohl aus meiner Sicht ein Singleton durchaus Sinn machen kann (gilt die Kritik nicht eigentlich jeder statischen Factory-Methode?).</p>
<p>Wie auch immer, f&uuml;r mich ist guter Stil, zu begr&uuml;nden, weshalb man ein Singleton verwendet. Ebenso, wie man manchmal explizit nichts in einem Code-Block ausf&uuml;hren m&ouml;chte:</p>
<pre>if(this){&nbsp; do();}else if (scary){&nbsp; <font color="#008000"><strong>// empty on purpose!</strong></font>}else{&nbsp; doOther();}</pre>
<p>(da g&auml;bs sicherlich bessere Beispiele, ein besseres w&auml;re der leere private Konstruktor von nicht instantiierbaren Klassen),&nbsp; sollte man im JavaDoc eines Singletons erw&auml;hnen, <strong>dass </strong>es sich um eines handelt, <strong>weshalb</strong> es als Singleton verwendet wird und ggf. wie es <strong>getestet</strong> werden kann resp. welche Besonderheiten f&uuml;r das Testen von Klassen anfallen, die das Singleton verwenden.</p>
<p>Das geht h&ouml;chstwahrscheinlich dar&uuml;ber hinaus, was z.B. in Spring mit den DAO-Klassen erfolgt (sollen die alle schlecht sein?), ist aber gerade f&uuml;r die Arbeit im Team n&uuml;tzlich.&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/07/26/meine-singleton-loesung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JOptionPane mit JGoodies</title>
		<link>http://blog.gresch.de/2007/07/11/joptionpane-mit-jgoodies/</link>
		<comments>http://blog.gresch.de/2007/07/11/joptionpane-mit-jgoodies/#comments</comments>
		<pubDate>Wed, 11 Jul 2007 21:18:00 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[swing]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[ui]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=198</guid>
		<description><![CDATA[Wenn das Ekel LAF angezeigt wird: &#160;&#160;&#160; UIManager.put(&#34;ClassLoader&#34;, LookUtils.class.getClassLoader());&#160;&#160;&#160; UIManager.setLookAndFeel(new Plastic3DLookAndFeel()); &#160;]]></description>
			<content:encoded><![CDATA[<p>Wenn das Ekel LAF angezeigt wird:</p>
<pre>&nbsp;&nbsp;&nbsp; UIManager.put(&quot;ClassLoader&quot;, LookUtils.class.getClassLoader());&nbsp;&nbsp;&nbsp; UIManager.setLookAndFeel(new Plastic3DLookAndFeel()); </pre>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/07/11/joptionpane-mit-jgoodies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Auf zum Karneval: Maskieren für (Ant) replaceregexpr</title>
		<link>http://blog.gresch.de/2007/07/09/auf-zum-karneval-maskieren-fuer-ant-replaceregexpr/</link>
		<comments>http://blog.gresch.de/2007/07/09/auf-zum-karneval-maskieren-fuer-ant-replaceregexpr/#comments</comments>
		<pubDate>Mon, 09 Jul 2007 06:37:00 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=197</guid>
		<description><![CDATA[Dieser Tasks hats wegen der doch sehr d&#252;rftigen Dokumentation in sich, zumal wegen der RegExpr-Syntax f&#252;r Java. Backslash maskieren &#160; &#60;replaceregexp&#160;&#160;&#160; match=&#34;a:\\&#34;&#160;&#160;&#160; replace=&#34;b:\\\\&#34;&#160;&#160;&#160; flags=&#34;gi&#34;&#62;&#160;&#160;&#160; &#60;fileset dir=&#34;${build}${/}xml&#34; id=&#34;XmlStuff&#34;&#62;&#160;&#160;&#160;&#160;&#160; &#60;include name=&#34;takeme*.xml&#34;/&#62;&#160;&#160;&#160; &#60;/fileset&#62;&#160; &#60;/replaceregexp&#62;&#60;/target&#62; Punkt maskieren (z.B. f&#252;r Paktebezeichner) &#60;replaceregexp match=&#34;com\.old\.style\.business&#34; replace=&#34;org\.new\.style\.business&#34; flags=&#34;gi&#34;&#62; &#60;fileset dir=&#34;${the.path}&#34; id=&#34;pathy&#34;&#62; &#60;include name=&#34;Groov*y.java&#34;/&#62; &#60;/fileset&#62;&#60;/replaceregexp&#62; &#160;Das Flag &#34;gi&#34; bedeutet: global (alle Vorkommen der gefundenen [...]]]></description>
			<content:encoded><![CDATA[<p>Dieser Tasks hats wegen der doch sehr d&uuml;rftigen Dokumentation in sich, zumal wegen der RegExpr-Syntax f&uuml;r Java.</p>
<p><strong>Backslash maskieren</strong> </p>
<pre>&nbsp; &lt;replaceregexp&nbsp;&nbsp;&nbsp; match=&quot;a:\\&quot;&nbsp;&nbsp;&nbsp; replace=&quot;b:\\\\&quot;&nbsp;&nbsp;&nbsp; flags=&quot;gi&quot;&gt;&nbsp;&nbsp;&nbsp; &lt;fileset dir=&quot;${build}${/}xml&quot; id=&quot;XmlStuff&quot;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;include name=&quot;takeme*.xml&quot;/&gt;&nbsp;&nbsp;&nbsp; &lt;/fileset&gt;&nbsp; &lt;/replaceregexp&gt;&lt;/target&gt; </pre>
<p><strong>Punkt maskieren</strong> (z.B. f&uuml;r Paktebezeichner) </p>
<pre>&lt;replaceregexp  match=&quot;com\.old\.style\.business&quot;  replace=&quot;org\.new\.style\.business&quot;  flags=&quot;gi&quot;&gt;  &lt;fileset dir=&quot;${the.path}&quot; id=&quot;pathy&quot;&gt;    &lt;include name=&quot;Groov*y.java&quot;/&gt;  &lt;/fileset&gt;&lt;/replaceregexp&gt;</pre>
<p>&nbsp;Das Flag &quot;gi&quot; bedeutet: <strong>g</strong>lobal (alle Vorkommen der gefundenen Zeichenfolge), [case-] <strong>i</strong>nsensitive (Gro&szlig;-/Kleinschreibung nicht beachten). </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/07/09/auf-zum-karneval-maskieren-fuer-ant-replaceregexpr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>typo3: special=directory mit Submenüs</title>
		<link>http://blog.gresch.de/2007/06/03/typo3-specialdirectory-mit-submenues/</link>
		<comments>http://blog.gresch.de/2007/06/03/typo3-specialdirectory-mit-submenues/#comments</comments>
		<pubDate>Sun, 03 Jun 2007 22:09:58 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[typo3]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=190</guid>
		<description><![CDATA[Bug, Bug, Bug! http://bugs.typo3.org/view.php?id=3224, da kann man sich nicht herausreden. Die L&#246;sung funktioniert &#8211; einfach nur darauf achten, dass die Lib eingebunden ist, dann gehts. Hier mein TypoScript: # Menu 1 cObjectlib.menu_1 = HMENUlib.menu_1 { ### Erste Ebene - special value ist die Startseite mit den Servicemen&#252;eintr&#228;gen ### special = directory special.value = 50 1 [...]]]></description>
			<content:encoded><![CDATA[<p>Bug, Bug, Bug! <a href="http://bugs.typo3.org/view.php?id=3224">http://bugs.typo3.org/view.php?id=3224</a>, da kann man sich nicht herausreden.</p>
<p>Die L&ouml;sung funktioniert &#8211; einfach nur darauf achten, dass die Lib eingebunden ist, dann gehts. Hier mein TypoScript:</p>
<pre># Menu 1 cObjectlib.menu_1 = HMENUlib.menu_1 {  ### Erste Ebene - special value ist die Startseite mit den Servicemen&uuml;eintr&auml;gen ###     special = directory     special.value = 50    1 = TMENU    1 {          NO.allWrap = &lt;div class=&quot;nav&quot;&gt; | &lt;/div&gt;          ACT = 1          ACT.allWrap = &lt;div class=&quot;nav&quot;&gt; | &lt;/div&gt;       }    ### Zweite Ebene ###    2 = TMENU    2 {           NO.allWrap = &lt;div class=&quot;navsub&quot;&gt; | &lt;/div&gt;           ACT = 1           ACT.allWrap = &lt;div class=&quot;navsub&quot;&gt; | &lt;/div&gt;       }   }}

[PIDinRootline = 50]    lib.menu_1.special &gt;    lib.menu_1.entryLevel = 1[END]       &nbsp;</pre>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/06/03/typo3-specialdirectory-mit-submenues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS-Tücken &#8211; Zeitfresser</title>
		<link>http://blog.gresch.de/2007/05/27/css-tuecken-zeitfresser/</link>
		<comments>http://blog.gresch.de/2007/05/27/css-tuecken-zeitfresser/#comments</comments>
		<pubDate>Mon, 28 May 2007 00:17:34 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=188</guid>
		<description><![CDATA[Weiterhin mit der Homepage f&#252;r St. Hildegard besch&#228;ftigt. Das Layout notgedrungen erst einmal vom Dreispalten-CSS auf ein Tabellenlayout zur&#252;ckgestellt &#160; Das ansonsten phantastische CSS-Men&#252; von Stu Nicholls vermochte ich nicht dazu bewegen, die &#252;berlangen &#60;li&#62;-Tags nicht umzubrechen. &#160; Wie auch immer &#8211; w&#228;hrend der Besch&#228;ftigung mit dem Layout fiel mir immer wieder auf, wie wenig [...]]]></description>
			<content:encoded><![CDATA[<p>Weiterhin mit der Homepage f&uuml;r St. Hildegard besch&auml;ftigt. Das Layout notgedrungen erst einmal vom Dreispalten-CSS auf ein Tabellenlayout zur&uuml;ckgestellt <img src='http://blog.gresch.de/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<p>Das ansonsten phantastische CSS-Men&uuml; von <a href="http://www.cssplay.co.uk/menus/final_drop.html">Stu Nicholls</a> vermochte ich nicht dazu bewegen, die &uuml;berlangen &lt;li&gt;-Tags <em>nicht</em> umzubrechen.</p>
<p>&nbsp;</p>
<p>Wie auch immer &#8211; w&auml;hrend der Besch&auml;ftigung mit dem Layout fiel mir immer wieder auf, wie wenig standardkonform doch der Internet Explorer ist. Und dass sich Webdesigner offenbar &uuml;berwiegend damit besch&auml;ftigen, ihre Seiten f&uuml;r alle Browser, insbesondere aber f&uuml;r den IE wie gew&uuml;nscht pr&auml;sentieren zu k&ouml;nnen.</p>
<p>&nbsp;</p>
<p>Welch ein Wahnsinn ist das nur? Da wird ein objektiv (der W3C-Standard ist objektiv) fehlerhaftes Softwareprodukt geb&uuml;ndelt mit einem Betriebssystem zur Verf&uuml;gung gestellt und wegen der hinter diesem Betriebssystem stehenden beherrschenden Marktposition m&uuml;ssen Unternehmen auf der ganzen Welt Geld ausgeben, um die Fehler dieser Software zu umgehen.</p>
<p>&nbsp;</p>
<p>Ich glaube nicht, dass dies die Arbeitspl&auml;tze der Webdesigner sichert &#8211; deren Arbeit ist so oder so gefragt. Aber ihre Leistung wird verschlechtert, da sie sich um Dinge in der zur Verf&uuml;gung stehenden Zeit k&uuml;mmern m&uuml;ssen, die eigentlich gar nichts mit ihrer T&auml;tigkeit zu tun haben.</p>
<p>&nbsp;</p>
<p>All die Stunden der sinnlos mit IE-Inkompatiblit&auml;ten vergeudeten Zeit zusammengerechnet liegt hier ein betriebs- und volkswirtschaftlicher Schaden in Milliardenh&ouml;he vor, um den sich niemand k&uuml;mmert. Da glaubt man lieber Zusicherungen, der IE sei doch sehr standardkonform und bel&auml;sst es dabei. Be&auml;ngstigend. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/05/27/css-tuecken-zeitfresser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

