<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>kurt sparber's weblog</title>
	<atom:link href="http://sparber.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://sparber.wordpress.com</link>
	<description>Softwareentwicklung, Architektur, Projektmanagement</description>
	<lastBuildDate>Sun, 24 May 2009 17:09:59 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='sparber.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>kurt sparber's weblog</title>
		<link>http://sparber.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://sparber.wordpress.com/osd.xml" title="kurt sparber&#039;s weblog" />
	<atom:link rel='hub' href='http://sparber.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Blog umgezogen</title>
		<link>http://sparber.wordpress.com/2009/05/24/blog-umgezogen/</link>
		<comments>http://sparber.wordpress.com/2009/05/24/blog-umgezogen/#comments</comments>
		<pubDate>Sun, 24 May 2009 17:09:59 +0000</pubDate>
		<dc:creator>sparber</dc:creator>
				<category><![CDATA[3D Java]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[ejb3]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[MMO]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sparber.wordpress.com/?p=119</guid>
		<description><![CDATA[Dieser Blog ist umgezogen, weiter gehts auf www.kurtsparber.de<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sparber.wordpress.com&amp;blog=6134886&amp;post=119&amp;subd=sparber&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Dieser Blog ist umgezogen, weiter gehts auf <a href="http://www.kurtsparber.de">www.kurtsparber.de</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sparber.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sparber.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sparber.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sparber.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sparber.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sparber.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sparber.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sparber.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sparber.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sparber.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sparber.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sparber.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sparber.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sparber.wordpress.com/119/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sparber.wordpress.com&amp;blog=6134886&amp;post=119&amp;subd=sparber&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sparber.wordpress.com/2009/05/24/blog-umgezogen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2bf5e35422199446408e708efd717d1e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sparber</media:title>
		</media:content>
	</item>
		<item>
		<title>MMO mit Java/J2EE? (Teil 2)</title>
		<link>http://sparber.wordpress.com/2009/03/31/mmo-mit-javaj2ee-teil-2/</link>
		<comments>http://sparber.wordpress.com/2009/03/31/mmo-mit-javaj2ee-teil-2/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 21:34:18 +0000</pubDate>
		<dc:creator>sparber</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[MMO]]></category>

		<guid isPermaLink="false">http://sparber.wordpress.com/?p=106</guid>
		<description><![CDATA[Aktives Rendern zur Darstellung von Animationen Zur Darstellung der Clientgrafiken und Animationen für den MMO Prototyp verwende ich ein eigenes Canvas, welches mit einem Thread die Grafiken in kurzen Zeitabständen zyklisch neuzeichnet, dadurch lassen sich durch den Austausch der Grafiken animationen erzielen. Der Austausch kann an die Eingabe des Clients, oder an die Aktualisierung der [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sparber.wordpress.com&amp;blog=6134886&amp;post=106&amp;subd=sparber&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Aktives Rendern zur Darstellung von Animationen</strong></p>
<p>Zur Darstellung der Clientgrafiken und Animationen für den MMO Prototyp verwende ich ein eigenes Canvas, welches mit einem Thread die Grafiken in kurzen Zeitabständen zyklisch neuzeichnet, dadurch lassen sich durch den Austausch der Grafiken animationen erzielen. Der Austausch kann an die Eingabe des Clients, oder an die Aktualisierung der Spieldaten des Servers für NSP&#8217;s (Nicht-Spieler Charaktere) gekoppelt sein.</p>
<div id="attachment_107" class="wp-caption aligncenter" style="width: 229px"><img src="http://sparber.files.wordpress.com/2009/03/animation.jpg?w=219&#038;h=161" alt="Exemplarische (nicht vollständige) Animationssequenz" title="animation" width="219" height="161" class="size-full wp-image-107" /><p class="wp-caption-text">Exemplarische (nicht vollständige) Animationssequenz</p></div>
<p>Mein bisheriges Canvas rief in <em>run()</em>-Methode des Threads periodisch <em>repaint()</em> auf. Da repaint() aber keinesfalls garantiert von der JVM aufgerufen wird, sondern in eine Queue eingestellt wird, ist eine reibungslose Animationsdarstellung nicht gewährleistet. Hier ergibt sich eine Verbesserung durch den Einsatz des sog. Active Rendering, die (vereinfachte) Implementierung dazu sieht folgendermaßen aus:</p>
<div align="left" class="java" style="line-height:1em;font-size:1.1em;">
    <code><br />
<font color="#808080">1</font>&nbsp;<font color="#7f0055"><b>private&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">activeRendering</font><font color="#000000">()&nbsp;{</font><br />
<font color="#808080">2</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">Graphics&nbsp;g&nbsp;=&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.getGraphics</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#808080">3</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>if&nbsp;</b></font><font color="#000000">(</font><font color="#000000">g&nbsp;!=&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)&nbsp;{</font><br />
<font color="#808080">4</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">g.drawImage</font><font color="#000000">(</font><font color="#000000">offscreenImage,&nbsp;</font><font color="#990000">0</font><font color="#000000">,&nbsp;</font><font color="#990000">0</font><font color="#000000">,&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#808080">5</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">Toolkit.getDefaultToolkit</font><font color="#000000">()</font><font color="#000000">.sync</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#808080">6</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">g.dispose</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#808080">7</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#808080">8</font>&nbsp;<font color="#000000">}</font></p>
<p></code></div>
<p><em>Toolkit.getDefaultToolkit().sync();</em> Stellt die Aktualisierung des Displays unter Linux sicher. (Quelle: Killer Game Programming, Andrew Davidson)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sparber.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sparber.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sparber.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sparber.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sparber.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sparber.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sparber.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sparber.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sparber.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sparber.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sparber.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sparber.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sparber.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sparber.wordpress.com/106/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sparber.wordpress.com&amp;blog=6134886&amp;post=106&amp;subd=sparber&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sparber.wordpress.com/2009/03/31/mmo-mit-javaj2ee-teil-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2bf5e35422199446408e708efd717d1e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sparber</media:title>
		</media:content>

		<media:content url="http://sparber.files.wordpress.com/2009/03/animation.jpg" medium="image">
			<media:title type="html">animation</media:title>
		</media:content>
	</item>
		<item>
		<title>Oracle XE: Ora-12638</title>
		<link>http://sparber.wordpress.com/2009/03/17/oracle-xe-ora-12638/</link>
		<comments>http://sparber.wordpress.com/2009/03/17/oracle-xe-ora-12638/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 09:59:11 +0000</pubDate>
		<dc:creator>sparber</dc:creator>
				<category><![CDATA[Datenbanken]]></category>

		<guid isPermaLink="false">http://sparber.wordpress.com/?p=99</guid>
		<description><![CDATA[Gelegentlich kann es bei einer Oracle XE unter Windows zu folgendem Fehler kommen: UDI-00008: Vorgang hat ORACLE-Fehler generiert 12638 ORA-12638: Abrufen der ID-Daten nicht erfolgreich In diesem Fall trat der Fehler im Zusammenhang mit einem Datenimport auf. Erfahrungsgemäß und durch Berichte anderer User kann das Problem mit einem Neustart des Datenbankservices behoben werden. Sollte dies [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sparber.wordpress.com&amp;blog=6134886&amp;post=99&amp;subd=sparber&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Gelegentlich kann es bei einer Oracle XE unter Windows zu folgendem Fehler kommen:</p>
<div align="left" class="sql" style="line-height:1em;font-size:1.1em;">
    <code><br />
UDI-00008: Vorgang hat ORACLE-Fehler generiert 12638<br />
ORA-12638: Abrufen der ID-Daten nicht erfolgreich<br />
</code>
</div>
<p></br><br />
In diesem Fall trat der Fehler im Zusammenhang mit einem Datenimport auf. Erfahrungsgemäß und durch Berichte anderer User kann das Problem mit einem Neustart des Datenbankservices behoben werden. Sollte dies jedoch nicht der Fall sein, so kann das Ändern der Einstellung <strong>SQLNET.AUTHENTICATION_SERVICES= (NTS)</strong> auf <strong>SQLNET.AUTHENTICATION_SERVICES= (NONE)</strong> in der Datei <em>sqlnet.ora</em> das Problem beseitigen. Die Änderung bewirkt, dass nicht mehr die native Windows Security beim Login verwendet wird, sondern nur mehr User und Passwort. </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sparber.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sparber.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sparber.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sparber.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sparber.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sparber.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sparber.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sparber.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sparber.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sparber.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sparber.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sparber.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sparber.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sparber.wordpress.com/99/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sparber.wordpress.com&amp;blog=6134886&amp;post=99&amp;subd=sparber&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sparber.wordpress.com/2009/03/17/oracle-xe-ora-12638/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2bf5e35422199446408e708efd717d1e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sparber</media:title>
		</media:content>
	</item>
		<item>
		<title>MMO mit Java/J2EE? (Teil 1)</title>
		<link>http://sparber.wordpress.com/2009/03/11/mmo-mit-javaj2ee-teil-1/</link>
		<comments>http://sparber.wordpress.com/2009/03/11/mmo-mit-javaj2ee-teil-1/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 20:19:07 +0000</pubDate>
		<dc:creator>sparber</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[MMO]]></category>

		<guid isPermaLink="false">http://sparber.wordpress.com/?p=72</guid>
		<description><![CDATA[MMO, oder Massively Multiplayer Online Games auf Basis von Java und J2EE? Die Antwort auf diese Frage werde ich in einer Reihe von Artikeln versuchen zu beantworten. Ziel ist eine Machbarkeitsstudie auf Basis eines Prototypen zu entwickeln. 1.1 Einführung Ein Massively Multiplayer Online Game ist ein Computerspiel, welches ausschließlich über das Internet gespielt werden kann [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sparber.wordpress.com&amp;blog=6134886&amp;post=72&amp;subd=sparber&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>MMO, oder Massively Multiplayer Online Games auf Basis von Java und J2EE? Die Antwort auf diese Frage werde ich in einer Reihe von Artikeln versuchen zu beantworten. Ziel ist eine Machbarkeitsstudie auf Basis eines Prototypen zu entwickeln.<br />
</p>
<h3>1.1 Einführung</h3>
<p>Ein Massively Multiplayer Online Game ist ein Computerspiel, welches ausschließlich über das Internet gespielt werden kann und bei dem gleichzeitig mehrere hundert oder tausend Spieler sich in einer persistenten Spielumgebung treffen und interagieren können. Vertreter bekannter Spiele sind z.B. <em>World of Warcraft</em>, <em>Guildwars</em> oder <em>Warhammer Online</em>.<br />
</p>
<h3>1.2. Architektur, Komponenten</h3>
<p>Ein MMO Game besteht grob aus den Schichten Präsentation (Client), Geschäftslogik (Server) und Datenhaltung (Server), also der klassischen Architektur die mit J2EE realisierbar ist. Folgende Grafik beschreibt die Architektur eines MMO Games:</p>
<div id="attachment_96" class="wp-caption aligncenter" style="width: 549px"><img src="http://sparber.files.wordpress.com/2009/03/mmo_architecture_s.jpg?w=539&#038;h=218" alt="MMO Architektur" title="mmo_architecture_s" width="539" height="218" class="size-full wp-image-96" /><p class="wp-caption-text">MMO Architektur</p></div>
<p><strong>Clientseite</strong><br />
Die Präsentationsschicht wird durch den Gameclient repräsentiert. Der Gameclient beinhaltet grob folgende Funktionen:</p>
<ul>
<li>Login Funktionalität, zum Einloggen in die Spielwelt</li>
<li>Patch Funktionalität, zum automatischen Bezug und Installation von Softwareupdates</li>
<li>Darstellung der Spielwelt und der Interaktionen</li>
</ul>
<p><strong>Serverseite</strong><br />
Die Serverseite umfasst eine Reihe von Servern mit unterschiedlichen Aufgaben. Die folgende Trennung ist aufgrund der Lastverteilung üblich und wird bei den bekannten MMO&#8217;s so praktiziert:</p>
<ul>
<li><strong>Accountserver</strong>: Üblicherweise mit Web-basierter Oberfläche zur Verwaltung der Accountdaten, abgelegt in der Accountdatenbank</li>
<li><strong>Loginserver</strong>: Server zum Überprüfen der Accountdaten und des Patchstandes</li>
<li><strong>Sessionserver</strong>: Server zum Überprüfen der Gültigkeit der aktiven Session und zur Weiterleitung der Anfragen an den Patch- und Gameserver</li>
<li><strong>Patchserver</strong>: Server zur Verteilung von Softwareupdates, hier sind mehrere Möglichkeiten denkbar, der Download von Patches über http oder ftp. Auch verteilte Ansätze sind denkbar, so benutzt <em>World of Warcraft</em> Bittorrent als Verteilungssystem.</li>
<li><strong>Gameserver</strong>: Der eigentliche Spielserver, der die Spielewelt hostet und die Interaktionen der Spieler verwaltet und die Spielzustände in der Game-DB festhält.</li>
</ul>
<p></p>
<h3>1.3. Ausblick</h3>
<p>Vorweg würde ich behaupten, dass sich J2EE für die Umsetzung eines MMO&#8217;s prinzipiell eignet, die entscheidende Frage stellt sich meines Erachtens, ob eine akzeptable Performance des Gameservers erreicht werden kann oder nicht. Von dieser Fragestellung ist die Anzahl der gleichzeitig bedienbaren Clients pro Server abhängig und damit beantwortet sich die Frage, ob ein MMO realisiert werden kann.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sparber.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sparber.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sparber.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sparber.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sparber.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sparber.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sparber.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sparber.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sparber.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sparber.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sparber.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sparber.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sparber.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sparber.wordpress.com/72/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sparber.wordpress.com&amp;blog=6134886&amp;post=72&amp;subd=sparber&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sparber.wordpress.com/2009/03/11/mmo-mit-javaj2ee-teil-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2bf5e35422199446408e708efd717d1e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sparber</media:title>
		</media:content>

		<media:content url="http://sparber.files.wordpress.com/2009/03/mmo_architecture_s.jpg" medium="image">
			<media:title type="html">mmo_architecture_s</media:title>
		</media:content>
	</item>
		<item>
		<title>jClaim &#8211; ICQ mit Java</title>
		<link>http://sparber.wordpress.com/2009/03/09/jclaim-icq-mit-java/</link>
		<comments>http://sparber.wordpress.com/2009/03/09/jclaim-icq-mit-java/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 20:06:32 +0000</pubDate>
		<dc:creator>sparber</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://sparber.wordpress.com/?p=68</guid>
		<description><![CDATA[Freie ICQ Implementierungen gibt es mittlerweile einige, jedoch kaum welche in Java. Ein Vertreter ist jClaim, neben einer Bibliothek zum Erstellen einer eigenen Anwendung bietet jClaim auch einen fertigen Client, der direkt über Webstart gestartet werden kann. Ein simpler Client ist schnell realisiert: 01&#160;package&#160;messaging; 02&#160; 03&#160;import&#160;com.itbs.aimcer.commune.joscar.ICQConnection; 04&#160;import&#160;com.itbs.util.GeneralUtils; 05&#160;import&#160;controller.MessengerGroupFactory; 06&#160;import&#160;controller.MessengerContactFactory; 07&#160;import&#160;controller.LogEventHandler; 08&#160; 09&#160;public&#160;class&#160;JavaICQ&#160;{ 10&#160; 11&#160;&#160;&#160;public&#160;static&#160;void&#160;main(String[]&#160;args)&#160;throws&#160;Exception&#160;{ 12&#160;&#160;&#160;&#160;&#160;try&#160;{ [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sparber.wordpress.com&amp;blog=6134886&amp;post=68&amp;subd=sparber&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Freie ICQ Implementierungen gibt es mittlerweile einige, jedoch kaum welche in Java. Ein Vertreter ist jClaim, neben einer Bibliothek zum Erstellen einer eigenen Anwendung bietet jClaim auch einen fertigen Client, der direkt über Webstart gestartet werden kann. Ein simpler Client ist schnell realisiert:</p>
<div align="left" class="java" style="line-height:1em;font-size:1.1em;">
<p>    <code><br />
<font color="#808080">01</font>&nbsp;<font color="#7f0055"><b>package&nbsp;</b></font><font color="#000000">messaging;</font><br />
<font color="#808080">02</font>&nbsp;<font color="#ffffff"></font><br />
<font color="#808080">03</font>&nbsp;<font color="#7f0055"><b>import&nbsp;</b></font><font color="#000000">com.itbs.aimcer.commune.joscar.ICQConnection;</font><br />
<font color="#808080">04</font>&nbsp;<font color="#7f0055"><b>import&nbsp;</b></font><font color="#000000">com.itbs.util.GeneralUtils;</font><br />
<font color="#808080">05</font>&nbsp;<font color="#7f0055"><b>import&nbsp;</b></font><font color="#000000">controller.MessengerGroupFactory;</font><br />
<font color="#808080">06</font>&nbsp;<font color="#7f0055"><b>import&nbsp;</b></font><font color="#000000">controller.MessengerContactFactory;</font><br />
<font color="#808080">07</font>&nbsp;<font color="#7f0055"><b>import&nbsp;</b></font><font color="#000000">controller.LogEventHandler;</font><br />
<font color="#808080">08</font>&nbsp;<font color="#ffffff"></font><br />
<font color="#808080">09</font>&nbsp;<font color="#7f0055"><b>public&nbsp;class&nbsp;</b></font><font color="#000000">JavaICQ&nbsp;</font><font color="#000000">{</font><br />
<font color="#808080">10</font>&nbsp;<font color="#ffffff"></font><br />
<font color="#808080">11</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>public&nbsp;static&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">main</font><font color="#000000">(</font><font color="#000000">String</font><font color="#000000">[]&nbsp;</font><font color="#000000">args</font><font color="#000000">)&nbsp;</font><font color="#7f0055"><b>throws&nbsp;</b></font><font color="#000000">Exception&nbsp;</font><font color="#000000">{</font><br />
<font color="#808080">12</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>try&nbsp;</b></font><font color="#000000">{</font><br />
<font color="#808080">13</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">ICQConnection&nbsp;conn&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">ICQConnection</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#808080">14</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">conn.assignGroupFactory</font><font color="#000000">(</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">MessengerGroupFactory</font><font color="#000000">())</font><font color="#000000">;</font><br />
<font color="#808080">15</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">conn.assignContactFactory</font><font color="#000000">(</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">MessengerContactFactory</font><font color="#000000">())</font><font color="#000000">;</font><br />
<font color="#808080">16</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">conn.setUserName</font><font color="#000000">(</font><font color="#2a00ff">&#34;icqnumber&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#808080">17</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">conn.setPassword</font><font color="#000000">(</font><font color="#2a00ff">&#34;icqpass&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#808080">18</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">conn.addEventListener</font><font color="#000000">(</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">LogEventHandler</font><font color="#000000">())</font><font color="#000000">;</font><br />
<font color="#808080">19</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">conn.connect</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#808080">20</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>while&nbsp;</b></font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)&nbsp;{</font><br />
<font color="#808080">21</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">GeneralUtils.sleep</font><font color="#000000">(</font><font color="#990000">60&nbsp;</font><font color="#000000">*&nbsp;</font><font color="#990000">60&nbsp;</font><font color="#000000">*&nbsp;</font><font color="#990000">1000</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#808080">22</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#808080">23</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}&nbsp;</font><font color="#7f0055"><b>catch&nbsp;</b></font><font color="#000000">(</font><font color="#000000">Exception&nbsp;e</font><font color="#000000">)&nbsp;{</font><br />
<font color="#808080">24</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>throw&nbsp;new&nbsp;</b></font><font color="#000000">RuntimeException</font><font color="#000000">(</font><font color="#000000">e</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#808080">25</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#808080">26</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#808080">27</font>&nbsp;<font color="#ffffff"></font><br />
<font color="#808080">28</font>&nbsp;<font color="#000000">}</font></code></p>
<p>Statt des LogEventHandlers kann auch der BotEventHandler, der standardmäßig in der Bilbliothek enthalten ist, verwendet werden.<br />
Bei der Einfachheit dieser Implementierung bleibt es aber auch, so ist es z.B. mit der Bibliothek derzeit nur möglich vom Online Status auf den Away Status zu schalten. Die umfangreichen Funktionen, die der offizielle ICQ Client bietet, sind mit jClaim leider nicht zugänglich. </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sparber.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sparber.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sparber.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sparber.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sparber.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sparber.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sparber.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sparber.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sparber.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sparber.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sparber.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sparber.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sparber.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sparber.wordpress.com/68/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sparber.wordpress.com&amp;blog=6134886&amp;post=68&amp;subd=sparber&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sparber.wordpress.com/2009/03/09/jclaim-icq-mit-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2bf5e35422199446408e708efd717d1e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sparber</media:title>
		</media:content>
	</item>
		<item>
		<title>Oracle XE: ORA-12519</title>
		<link>http://sparber.wordpress.com/2009/02/06/oracle-xe-ora-12519/</link>
		<comments>http://sparber.wordpress.com/2009/02/06/oracle-xe-ora-12519/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 20:00:29 +0000</pubDate>
		<dc:creator>sparber</dc:creator>
				<category><![CDATA[Datenbanken]]></category>

		<guid isPermaLink="false">http://sparber.wordpress.com/?p=47</guid>
		<description><![CDATA[Gelegentlich kommt es beim Einsatz eines Oracle XE Datenbanksystems zu dem Fehler ORA-12519, dies kann sich mit Java folgendermaßen äußern: java.sql.SQLException: Listener refused the connection with the following error: ORA-12519, TNS:no appropriate service handler found &#160;&#160;at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70) &#160;&#160;at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:131) &#160;&#160;at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:197) &#160;&#160;at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:525) &#160;&#160;at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:413) Dies kann an der geringen Voreinstellung von üblicherweise 20 für [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sparber.wordpress.com&amp;blog=6134886&amp;post=47&amp;subd=sparber&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Gelegentlich kommt es beim Einsatz eines Oracle XE Datenbanksystems zu dem Fehler ORA-12519, dies kann sich mit Java folgendermaßen äußern:</p>
<div align="left" class="sql" style="line-height:1em;font-size:1.1em;">
    <code><br />
java.sql.SQLException: Listener refused the connection with the following error:<br />
ORA-12519, TNS:no appropriate service handler found<br />
&nbsp;&nbsp;at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)<br />
&nbsp;&nbsp;at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:131)<br />
&nbsp;&nbsp;at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:197)<br />
&nbsp;&nbsp;at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:525)<br />
&nbsp;&nbsp;at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:413)<br />
</code>
</div>
<p></br><br />
Dies kann an der geringen Voreinstellung von üblicherweise 20 für die Anzahl an Sessions liegen. Das Problem kann dadurch gelöst werden, indem die Parameter sessions und processes erhöht werden. Um dies zu erreichen sind folgende Kommandos zu tätigen:</p>
<div align="left" class="sql" style="line-height:1em;font-size:1.1em;">
<code><br />
<font color="#202090">alter</font> system <font color="#202090">set</font> processes=100 scope=spfile;<br />
<font color="#202090">alter</font> system <font color="#202090">reset</font> sessions scope=spfile sid='*';<br />
</code><br />

</div>
<p>
Die Kommandos können im Webinterface der Administrationsoberfläche unter dem User System ausgeführt werden. Nach einem Neustart der Datenbank sollte das Problem behoben sein. Trotz dieser Möglichkeit den Fehler zu umgehen sollte ein Blick in die Applikation geworfen werden, um die Ursache für den Sessionverbrauch festzustellen.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sparber.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sparber.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sparber.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sparber.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sparber.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sparber.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sparber.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sparber.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sparber.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sparber.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sparber.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sparber.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sparber.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sparber.wordpress.com/47/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sparber.wordpress.com&amp;blog=6134886&amp;post=47&amp;subd=sparber&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sparber.wordpress.com/2009/02/06/oracle-xe-ora-12519/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2bf5e35422199446408e708efd717d1e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sparber</media:title>
		</media:content>
	</item>
		<item>
		<title>Levenshtein Distanz mit linearem Speicherverbrauch</title>
		<link>http://sparber.wordpress.com/2009/01/30/levenshtein-distanz-mit-linearem-speicherverbrauch/</link>
		<comments>http://sparber.wordpress.com/2009/01/30/levenshtein-distanz-mit-linearem-speicherverbrauch/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 22:43:57 +0000</pubDate>
		<dc:creator>sparber</dc:creator>
				<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://sparber.wordpress.com/?p=37</guid>
		<description><![CDATA[Folgendes Groovy Skript berechnet die Levenshtein Distanz zweier Zeichenketten. Die Levenshtein Distanz ist ein Maß bezüglich der Operationen Ersetzen, Einfügen und Löschen, um die Gleichheit beider Zeichenketten zu erreichen. In anderen Worten, die Levenshtein Distanz ist ein Maß für die Ähnlichkeit zweier Zeichenketten. Der Algorithmus benötigt im Gegensatz zur normalen Implementierung nur linearen Speicherplatz. 01&#160;/** [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sparber.wordpress.com&amp;blog=6134886&amp;post=37&amp;subd=sparber&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Folgendes Groovy Skript berechnet die Levenshtein Distanz zweier Zeichenketten. Die Levenshtein Distanz ist ein Maß bezüglich der Operationen Ersetzen, Einfügen und Löschen, um die Gleichheit beider Zeichenketten zu erreichen. In anderen Worten, die Levenshtein Distanz ist ein Maß für die Ähnlichkeit zweier Zeichenketten. Der Algorithmus benötigt im Gegensatz zur normalen Implementierung nur linearen Speicherplatz.</p>
<div align="left" class="java" style="line-height:1em;font-size:1.1em;">
    <code><br />
<font color="#808080">01</font>&nbsp;<font color="#3f5fbf">/**</font><br />
<font color="#808080">02</font>&nbsp;<font color="#ffffff">&nbsp;</font><font color="#3f5fbf">*&nbsp;Berechnet&nbsp;die&nbsp;Levensthein&nbsp;Distanz&nbsp;der&nbsp;beiden&nbsp;Strings&nbsp;x&nbsp;und&nbsp;y.</font><br />
<font color="#808080">03</font>&nbsp;<font color="#ffffff">&nbsp;</font><font color="#3f5fbf">*&nbsp;</font><br />
<font color="#808080">04</font>&nbsp;<font color="#ffffff">&nbsp;</font><font color="#3f5fbf">*&nbsp;</font><font color="#7f9fbf">@param&nbsp;</font><font color="#3f5fbf">x&nbsp;String&nbsp;x&nbsp;des&nbsp;Vergleichs,&nbsp;nicht&nbsp;null.</font><br />
<font color="#808080">05</font>&nbsp;<font color="#ffffff">&nbsp;</font><font color="#3f5fbf">*&nbsp;</font><font color="#7f9fbf">@param&nbsp;</font><font color="#3f5fbf">y&nbsp;String&nbsp;y&nbsp;des&nbsp;Vergleichs,&nbsp;nicht&nbsp;null.</font><br />
<font color="#808080">06</font>&nbsp;<font color="#ffffff">&nbsp;</font><font color="#3f5fbf">*&nbsp;</font><font color="#7f9fbf">@return&nbsp;</font><font color="#3f5fbf">die&nbsp;Levensthein&nbsp;Distanz&nbsp;der&nbsp;beiden&nbsp;Strings&nbsp;x&nbsp;und&nbsp;y</font><br />
<font color="#808080">07</font>&nbsp;<font color="#ffffff">&nbsp;</font><font color="#3f5fbf">*/</font><br />
<font color="#808080">08</font>&nbsp;<font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">linearLD</font><font color="#000000">(</font><font color="#000000">String&nbsp;x,&nbsp;String&nbsp;y</font><font color="#000000">)&nbsp;{</font><br />
<font color="#808080">09</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">n&nbsp;=&nbsp;y.length</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#808080">10</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">m&nbsp;=&nbsp;x.length</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#808080">11</font>&nbsp;<font color="#ffffff">&nbsp;</font><br />
<font color="#808080">12</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>if&nbsp;</b></font><font color="#000000">(</font><font color="#000000">n&nbsp;==&nbsp;</font><font color="#990000">0</font><font color="#000000">)&nbsp;</font><font color="#7f0055"><b>return&nbsp;</b></font><font color="#000000">m;</font><br />
<font color="#808080">13</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>if&nbsp;</b></font><font color="#000000">(</font><font color="#000000">m&nbsp;==&nbsp;</font><font color="#990000">0</font><font color="#000000">)&nbsp;</font><font color="#7f0055"><b>return&nbsp;</b></font><font color="#000000">n;</font><br />
<font color="#808080">14</font>&nbsp;<font color="#ffffff">&nbsp;</font><br />
<font color="#808080">15</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">def&nbsp;T&nbsp;=&nbsp;</font><font color="#000000">[]</font><font color="#000000">;</font><br />
<font color="#808080">16</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">T</font><font color="#000000">[</font><font color="#990000">0</font><font color="#000000">]&nbsp;</font><font color="#000000">=&nbsp;</font><font color="#990000">0</font><font color="#000000">;</font><br />
<font color="#808080">17</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>for&nbsp;</b></font><font color="#000000">(</font><font color="#000000">j&nbsp;in&nbsp;</font><font color="#990000">1..</font><font color="#000000">n</font><font color="#000000">)&nbsp;{</font><br />
<font color="#808080">18</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">T</font><font color="#000000">[</font><font color="#000000">j</font><font color="#000000">]&nbsp;</font><font color="#000000">=&nbsp;T</font><font color="#000000">[</font><font color="#000000">j-</font><font color="#990000">1</font><font color="#000000">]&nbsp;</font><font color="#000000">+&nbsp;</font><font color="#990000">1</font><font color="#000000">;</font><br />
<font color="#808080">19</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#808080">20</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>for&nbsp;</b></font><font color="#000000">(</font><font color="#000000">i&nbsp;in&nbsp;</font><font color="#990000">1..</font><font color="#000000">m</font><font color="#000000">)&nbsp;{</font><br />
<font color="#808080">21</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">def&nbsp;s&nbsp;=&nbsp;T</font><font color="#000000">[</font><font color="#990000">0</font><font color="#000000">]</font><font color="#000000">;</font><br />
<font color="#808080">22</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">T</font><font color="#000000">[</font><font color="#990000">0</font><font color="#000000">]&nbsp;</font><font color="#000000">=&nbsp;T</font><font color="#000000">[</font><font color="#990000">0</font><font color="#000000">]&nbsp;</font><font color="#000000">+&nbsp;</font><font color="#990000">1</font><font color="#000000">;</font><br />
<font color="#808080">23</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">def&nbsp;c&nbsp;=&nbsp;T</font><font color="#000000">[</font><font color="#990000">0</font><font color="#000000">]</font><font color="#000000">;</font><br />
<font color="#808080">24</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>for&nbsp;</b></font><font color="#000000">(</font><font color="#000000">j&nbsp;in&nbsp;</font><font color="#990000">1..</font><font color="#000000">n</font><font color="#000000">)&nbsp;{</font><br />
<font color="#808080">25</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">def&nbsp;sub&nbsp;=&nbsp;s&nbsp;+&nbsp;</font><font color="#000000">(</font><font color="#000000">x.charAt</font><font color="#000000">(</font><font color="#000000">i-</font><font color="#990000">1</font><font color="#000000">)&nbsp;</font><font color="#000000">==&nbsp;y.charAt</font><font color="#000000">(</font><font color="#000000">j-</font><font color="#990000">1</font><font color="#000000">)&nbsp;</font><font color="#000000">?&nbsp;</font><font color="#990000">0&nbsp;</font><font color="#000000">:&nbsp;</font><font color="#990000">1</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#808080">26</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">def&nbsp;del&nbsp;=&nbsp;T</font><font color="#000000">[</font><font color="#000000">j</font><font color="#000000">]&nbsp;</font><font color="#000000">+&nbsp;</font><font color="#990000">1</font><font color="#000000">;</font><br />
<font color="#808080">27</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">def&nbsp;ins&nbsp;=&nbsp;c&nbsp;+&nbsp;</font><font color="#990000">1</font><font color="#000000">;</font><br />
<font color="#808080">28</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">c&nbsp;=&nbsp;Math.min</font><font color="#000000">(</font><font color="#000000">Math.min</font><font color="#000000">(</font><font color="#000000">sub,&nbsp;del</font><font color="#000000">)</font><font color="#000000">,&nbsp;ins</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#808080">29</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">s&nbsp;=&nbsp;T</font><font color="#000000">[</font><font color="#000000">j</font><font color="#000000">]</font><font color="#000000">;</font><br />
<font color="#808080">30</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">T</font><font color="#000000">[</font><font color="#000000">j</font><font color="#000000">]&nbsp;</font><font color="#000000">=&nbsp;c;</font><br />
<font color="#808080">31</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#808080">32</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#808080">33</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>return&nbsp;</b></font><font color="#000000">T</font><font color="#000000">[</font><font color="#000000">n</font><font color="#000000">]</font><font color="#000000">;</font><br />
<font color="#808080">34</font>&nbsp;<font color="#000000">}</font><br />
<font color="#808080">35</font>&nbsp;<font color="#ffffff"></font><br />
<font color="#808080">36</font>&nbsp;<font color="#000000">println&nbsp;linearLD</font><font color="#000000">(</font><font color="#2a00ff">&#34;Lin&#34;</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;Lang&#34;</font><font color="#000000">)</font><font color="#000000">;</font></p>
<p></code>
</div>
<p>Das Ergebnis des Aufrufs lautet 2, da zwei Operationen zum Angleichen der Zeichenketten notwendig wären.</p>
<p>Hier der Algorithmus nochmal in Java:</p>
<div align="left" class="java" style="line-height:1em;font-size:1.1em;">
    <code><br />
<font color="#808080">01</font>&nbsp;<font color="#7f0055"><b>public&nbsp;class&nbsp;</b></font><font color="#000000">LinearLD&nbsp;</font><font color="#000000">{</font><br />
<font color="#808080">02</font>&nbsp;<font color="#ffffff"></font><br />
<font color="#808080">03</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><font color="#3f5fbf">/**</font><br />
<font color="#808080">04</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*&nbsp;Berechnet&nbsp;die&nbsp;Levensthein&nbsp;Distanz&nbsp;der&nbsp;beiden&nbsp;Strings&nbsp;x&nbsp;und&nbsp;y.</font><br />
<font color="#808080">05</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*&nbsp;</font><br />
<font color="#808080">06</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*&nbsp;</font><font color="#7f9fbf">@param&nbsp;</font><font color="#3f5fbf">x&nbsp;String&nbsp;x&nbsp;des&nbsp;Vergleichs,&nbsp;nicht&nbsp;null.</font><br />
<font color="#808080">07</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*&nbsp;</font><font color="#7f9fbf">@param&nbsp;</font><font color="#3f5fbf">y&nbsp;String&nbsp;y&nbsp;des&nbsp;Vergleichs,&nbsp;nicht&nbsp;null.</font><br />
<font color="#808080">08</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*&nbsp;</font><font color="#7f9fbf">@return&nbsp;</font><font color="#3f5fbf">die&nbsp;Levensthein&nbsp;Distanz&nbsp;der&nbsp;beiden&nbsp;Strings&nbsp;x&nbsp;und&nbsp;y</font><br />
<font color="#808080">09</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*/</font><br />
<font color="#808080">10</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>public&nbsp;static&nbsp;</b></font><font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">linearLD</font><font color="#000000">(</font><font color="#000000">String&nbsp;x,&nbsp;String&nbsp;y</font><font color="#000000">)&nbsp;{</font><br />
<font color="#808080">11</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">n&nbsp;=&nbsp;y.length</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#808080">12</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">m&nbsp;=&nbsp;x.length</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#808080">13</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><br />
<font color="#808080">14</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if&nbsp;</b></font><font color="#000000">(</font><font color="#000000">n&nbsp;==&nbsp;</font><font color="#990000">0</font><font color="#000000">)&nbsp;</font><font color="#7f0055"><b>return&nbsp;</b></font><font color="#000000">m;</font><br />
<font color="#808080">15</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if&nbsp;</b></font><font color="#000000">(</font><font color="#000000">m&nbsp;==&nbsp;</font><font color="#990000">0</font><font color="#000000">)&nbsp;</font><font color="#7f0055"><b>return&nbsp;</b></font><font color="#000000">n;</font><br />
<font color="#808080">16</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><br />
<font color="#808080">17</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>int</b></font><font color="#000000">[]&nbsp;</font><font color="#000000">T&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#7f0055"><b>int</b></font><font color="#000000">[</font><font color="#000000">n+</font><font color="#990000">1</font><font color="#000000">]</font><font color="#000000">;</font><br />
<font color="#808080">18</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">T</font><font color="#000000">[</font><font color="#990000">0</font><font color="#000000">]&nbsp;</font><font color="#000000">=&nbsp;</font><font color="#990000">0</font><font color="#000000">;</font><br />
<font color="#808080">19</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>for&nbsp;</b></font><font color="#000000">(</font><font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">j=</font><font color="#990000">1</font><font color="#000000">;&nbsp;j&nbsp;&lt;=&nbsp;n;&nbsp;j++</font><font color="#000000">)&nbsp;{</font><br />
<font color="#808080">20</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">T</font><font color="#000000">[</font><font color="#000000">j</font><font color="#000000">]&nbsp;</font><font color="#000000">=&nbsp;T</font><font color="#000000">[</font><font color="#000000">j-</font><font color="#990000">1</font><font color="#000000">]&nbsp;</font><font color="#000000">+&nbsp;</font><font color="#990000">1</font><font color="#000000">;</font><br />
<font color="#808080">21</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#808080">22</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>for&nbsp;</b></font><font color="#000000">(</font><font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">i=</font><font color="#990000">1</font><font color="#000000">;&nbsp;i&lt;=m;&nbsp;i++</font><font color="#000000">)&nbsp;{</font><br />
<font color="#808080">23</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">s&nbsp;=&nbsp;T</font><font color="#000000">[</font><font color="#990000">0</font><font color="#000000">]</font><font color="#000000">;</font><br />
<font color="#808080">24</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">T</font><font color="#000000">[</font><font color="#990000">0</font><font color="#000000">]&nbsp;</font><font color="#000000">=&nbsp;T</font><font color="#000000">[</font><font color="#990000">0</font><font color="#000000">]&nbsp;</font><font color="#000000">+&nbsp;</font><font color="#990000">1</font><font color="#000000">;</font><br />
<font color="#808080">25</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">c&nbsp;=&nbsp;T</font><font color="#000000">[</font><font color="#990000">0</font><font color="#000000">]</font><font color="#000000">;</font><br />
<font color="#808080">26</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>for&nbsp;</b></font><font color="#000000">(</font><font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">j=</font><font color="#990000">1</font><font color="#000000">;&nbsp;j&lt;=n;&nbsp;j++</font><font color="#000000">)&nbsp;{</font><br />
<font color="#808080">27</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">sub&nbsp;=&nbsp;s&nbsp;+&nbsp;</font><font color="#000000">(</font><font color="#000000">x.charAt</font><font color="#000000">(</font><font color="#000000">i-</font><font color="#990000">1</font><font color="#000000">)&nbsp;</font><font color="#000000">==&nbsp;y.charAt</font><font color="#000000">(</font><font color="#000000">j-</font><font color="#990000">1</font><font color="#000000">)&nbsp;</font><font color="#000000">?&nbsp;</font><font color="#990000">0&nbsp;</font><font color="#000000">:&nbsp;</font><font color="#990000">1</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#808080">28</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">del&nbsp;=&nbsp;T</font><font color="#000000">[</font><font color="#000000">j</font><font color="#000000">]&nbsp;</font><font color="#000000">+&nbsp;</font><font color="#990000">1</font><font color="#000000">;</font><br />
<font color="#808080">29</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">ins&nbsp;=&nbsp;c&nbsp;+&nbsp;</font><font color="#990000">1</font><font color="#000000">;</font><br />
<font color="#808080">30</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">c&nbsp;=&nbsp;Math.min</font><font color="#000000">(</font><font color="#000000">Math.min</font><font color="#000000">(</font><font color="#000000">sub,&nbsp;del</font><font color="#000000">)</font><font color="#000000">,&nbsp;ins</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#808080">31</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">s&nbsp;=&nbsp;T</font><font color="#000000">[</font><font color="#000000">j</font><font color="#000000">]</font><font color="#000000">;</font><br />
<font color="#808080">32</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">T</font><font color="#000000">[</font><font color="#000000">j</font><font color="#000000">]&nbsp;</font><font color="#000000">=&nbsp;c;</font><br />
<font color="#808080">33</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#808080">34</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#808080">35</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>return&nbsp;</b></font><font color="#000000">T</font><font color="#000000">[</font><font color="#000000">n</font><font color="#000000">]</font><font color="#000000">;</font><br />
<font color="#808080">36</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#808080">37</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><br />
<font color="#808080">38</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>public&nbsp;static&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">main</font><font color="#000000">(</font><font color="#000000">String</font><font color="#000000">[]&nbsp;</font><font color="#000000">args</font><font color="#000000">)&nbsp;{</font><br />
<font color="#808080">39</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">System.out.println</font><font color="#000000">(</font><font color="#000000">LinearLD.linearLD</font><font color="#000000">(</font><font color="#2a00ff">&#34;&#34;</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;Tier&#34;</font><font color="#000000">))</font><font color="#000000">;</font><br />
<font color="#808080">40</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#808080">41</font>&nbsp;<font color="#000000">}</font></p>
<p></code>
</div>
<p>Ein praktischer Anwendungsfall für die Berechnung der Levenshtein Distanz ist z.B. im Falle der automatisierten Zusammenführung von unterschiedlichen Stammdatenbeständen gegeben, in denen etwa Vergleiche auf Personen- oder Ortsnamen durchgeführt werden müssen, und in denen Umlaute unterschiedliche dargestellt (z.B. ü und ue) werden.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sparber.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sparber.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sparber.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sparber.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sparber.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sparber.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sparber.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sparber.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sparber.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sparber.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sparber.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sparber.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sparber.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sparber.wordpress.com/37/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sparber.wordpress.com&amp;blog=6134886&amp;post=37&amp;subd=sparber&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sparber.wordpress.com/2009/01/30/levenshtein-distanz-mit-linearem-speicherverbrauch/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2bf5e35422199446408e708efd717d1e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sparber</media:title>
		</media:content>
	</item>
		<item>
		<title>Groovy Dateien bedingt löschen</title>
		<link>http://sparber.wordpress.com/2009/01/25/groovy-dateien-bedingt-loschen/</link>
		<comments>http://sparber.wordpress.com/2009/01/25/groovy-dateien-bedingt-loschen/#comments</comments>
		<pubDate>Sun, 25 Jan 2009 21:56:03 +0000</pubDate>
		<dc:creator>sparber</dc:creator>
				<category><![CDATA[Groovy]]></category>

		<guid isPermaLink="false">http://sparber.wordpress.com/?p=22</guid>
		<description><![CDATA[Hier ein kleines Groovy Skript um bedingt Dateien zu löschen. Klar gibt es dazu auch Möglichkeiten in einer Kommando Shell, aber die wären einfach nicht groovy 01&#160;import&#160;org.apache.commons.io.FileUtils; 02&#160; 03&#160;destDir&#160;=&#160;new&#160;File(&#34;D:/Verzeichnis/Unterverzeichnis&#34;); 04&#160; 05&#160;destDir.eachDir&#160;{ 06&#160;&#160;&#160;it.eachFile&#160;{ 07&#160;&#160;&#160;&#160;&#160;if&#160;(it.length()&#160;==&#160;0)&#160;{ 08&#160;&#160;&#160;&#160;&#160;&#160;&#160;println&#160;&#34;L&#246;sche:&#160;&#34;&#160;+&#160;it; 09&#160;&#160;&#160;&#160;&#160;&#160;&#160;FileUtils.forceDelete(it); 10&#160;&#160;&#160;&#160;&#160;} 11&#160;&#160;&#160;} 12&#160;} FileUtils ist übrigens Bestandteil von http://commons.apache.org/<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sparber.wordpress.com&amp;blog=6134886&amp;post=22&amp;subd=sparber&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hier ein kleines Groovy Skript um bedingt Dateien zu löschen. Klar gibt es dazu auch Möglichkeiten in einer Kommando Shell, aber die wären einfach nicht groovy <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<div align="left" class="java" style="line-height:1em;font-size:1.1em;">
    <code><br />
<font color="#808080">01</font>&nbsp;<font color="#7f0055"><b>import&nbsp;</b></font><font color="#000000">org.apache.commons.io.FileUtils;</font><br />
<font color="#808080">02</font>&nbsp;<font color="#ffffff"></font><br />
<font color="#808080">03</font>&nbsp;<font color="#000000">destDir&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">File</font><font color="#000000">(</font><font color="#2a00ff">&#34;D:/Verzeichnis/Unterverzeichnis&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#808080">04</font>&nbsp;<font color="#ffffff"></font><br />
<font color="#808080">05</font>&nbsp;<font color="#000000">destDir.eachDir&nbsp;</font><font color="#000000">{</font><br />
<font color="#808080">06</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">it.eachFile&nbsp;</font><font color="#000000">{</font><br />
<font color="#808080">07</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if&nbsp;</b></font><font color="#000000">(</font><font color="#000000">it.length</font><font color="#000000">()&nbsp;</font><font color="#000000">==&nbsp;</font><font color="#990000">0</font><font color="#000000">)&nbsp;{</font><br />
<font color="#808080">08</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">println&nbsp;</font><font color="#2a00ff">&#34;L&ouml;sche:&nbsp;&#34;&nbsp;</font><font color="#000000">+&nbsp;it;</font><br />
<font color="#808080">09</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">FileUtils.forceDelete</font><font color="#000000">(</font><font color="#000000">it</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#808080">10</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#808080">11</font>&nbsp;<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#808080">12</font>&nbsp;<font color="#000000">}</font></p>
<p></code>
</div>
<p>FileUtils ist übrigens Bestandteil von <a title="http://commons.apache.org/" href="http://commons.apache.org/" target="_blank">http://commons.apache.org/</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sparber.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sparber.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sparber.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sparber.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sparber.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sparber.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sparber.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sparber.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sparber.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sparber.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sparber.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sparber.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sparber.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sparber.wordpress.com/22/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sparber.wordpress.com&amp;blog=6134886&amp;post=22&amp;subd=sparber&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sparber.wordpress.com/2009/01/25/groovy-dateien-bedingt-loschen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2bf5e35422199446408e708efd717d1e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sparber</media:title>
		</media:content>
	</item>
		<item>
		<title>JavaFX Kalender</title>
		<link>http://sparber.wordpress.com/2009/01/25/javafx-kalender/</link>
		<comments>http://sparber.wordpress.com/2009/01/25/javafx-kalender/#comments</comments>
		<pubDate>Sun, 25 Jan 2009 21:26:45 +0000</pubDate>
		<dc:creator>sparber</dc:creator>
				<category><![CDATA[JavaFX]]></category>

		<guid isPermaLink="false">http://sparber.wordpress.com/?p=14</guid>
		<description><![CDATA[Seit mitte Dezember liegt nun JavaFX in der Version 1.0 vor.  Im Fokus der neuen Skriptsprache liegt die schnelle und einfache Erstellung von grafisch aufwändigen Desktopapplikationen. Sun verspricht hier nicht zuviel, die Einarbeitung in die Skriptsprache ist dank der umfassenden Dokumentation und der zahlreichen Beispiele auf http://java.sun.com/javafx/reference/docs.jsp sehr einfach. Als Entwicklungsumgebung für JavaFX empfiehlt sich [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sparber.wordpress.com&amp;blog=6134886&amp;post=14&amp;subd=sparber&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Seit mitte Dezember liegt nun JavaFX in der Version 1.0 vor.  Im Fokus der neuen Skriptsprache liegt die schnelle und einfache Erstellung von grafisch aufwändigen Desktopapplikationen. Sun verspricht hier nicht zuviel, die Einarbeitung in die Skriptsprache ist dank der umfassenden Dokumentation und der zahlreichen Beispiele auf <a title="http://java.sun.com/javafx/reference/docs.jsp" href="http://java.sun.com/javafx/reference/docs.jsp" target="_blank">http://java.sun.com/javafx/reference/docs.jsp</a> sehr einfach. Als Entwicklungsumgebung für JavaFX empfiehlt sich Netbeans <a title="http://www.netbeans.org/features/javafx/index.html" href="http://www.netbeans.org/features/javafx/index.html" target="_blank">http://www.netbeans.org/features/javafx/index.html</a>, welche neben der gewohnten Editorfunktionalität, wie Syntax Highlighting, Codevervollständigung, usw. auch vorgefertigte Codeteile anbietet, welche vom Entwickler per Drag&amp;Drop eingefügt werden können. Allein die eingebaute Preview-Funktion, die sich während des Entwickelns automatisch aktualisiert führt gelegentlich zu etwas nervigen Stacktraces.</p>
<p>Hier also das Ergebnis meins ersten JavaFX-Skripts:</p>
<p><img class="aligncenter size-full wp-image-17" title="calendar21" src="http://sparber.files.wordpress.com/2009/01/calendar21.jpg?w=406&#038;h=360" alt="calendar21" width="406" height="360" /></p>
<p>Einige der eingefleischten Java-Entwickler werden mit Sicherheit das Gefühl haben, mit JavaFX eine Art Applet 2.0 vor sich liegen zu haben, während andere wiederum sicher an Java2D erinnert werden. JavaFX ist aber deutlich mehr, insbesondere was neue Sprachkonstrukte wie etwa das Bindings zum Binden von Attributen an Variablen für eine automatische Aktualisierung angeht und gerade bei Animationen seine Stärke zeigt. Die Sprache an sich besitzt einen starken deklarativen Charakter und vermittelt das Gefühl einem Baukasten gleich grafische Basiskomponenten zu einer funktionalen Desktopapplikation zusammenzusetzen. Interessant fand ich die schier unerschöpfliche Auswahl bei vordefinierten Color Konstanten, endlich steht die &#8222;Farbe&#8220; Transparent zur Auswahl.</p>
<p>JavaFX bietet dem Entwickler die Möglichkeit schnell und einfach grafisch beeindruckende Desktopapplikationen zu erstellen. Ich kann mir vorstellen, dass sich besonders im Mobil-Device Bereich neue Möglichkeiten ergeben. Was jedoch funktional aufwändige Applikationen angeht, bleibt fraglich, ob JavaFX hier eine entscheidende Rolle spielen wird und kann.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sparber.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sparber.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sparber.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sparber.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sparber.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sparber.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sparber.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sparber.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sparber.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sparber.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sparber.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sparber.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sparber.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sparber.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sparber.wordpress.com&amp;blog=6134886&amp;post=14&amp;subd=sparber&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sparber.wordpress.com/2009/01/25/javafx-kalender/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2bf5e35422199446408e708efd717d1e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sparber</media:title>
		</media:content>

		<media:content url="http://sparber.files.wordpress.com/2009/01/calendar21.jpg" medium="image">
			<media:title type="html">calendar21</media:title>
		</media:content>
	</item>
		<item>
		<title>Java3D auf Vista 64</title>
		<link>http://sparber.wordpress.com/2009/01/11/java3d-auf-vista-64/</link>
		<comments>http://sparber.wordpress.com/2009/01/11/java3d-auf-vista-64/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 21:22:54 +0000</pubDate>
		<dc:creator>sparber</dc:creator>
				<category><![CDATA[3D Java]]></category>
		<category><![CDATA[Java3D]]></category>

		<guid isPermaLink="false">http://sparber.wordpress.com/?p=7</guid>
		<description><![CDATA[Nachdem meine Versuche die JMonkeEngine auf Grund der darunterliegenden Bibliothek lwjgl mit Vista 64 zu laufen zu bringen gescheitert sind, bin ich für meine Versuche wieder auf Java 3D ausgewichen. Java 3D läuft sowohl mit der 32bit Variante des JDK&#8217;s als auch mit der 64bit Variante problemlos auf Vista 64. Wie früher auch ziehen die [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sparber.wordpress.com&amp;blog=6134886&amp;post=7&amp;subd=sparber&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Nachdem meine Versuche die JMonkeEngine auf Grund der darunterliegenden Bibliothek lwjgl mit Vista 64 zu laufen zu bringen gescheitert sind, bin ich für meine Versuche wieder auf Java 3D ausgewichen. Java 3D läuft sowohl mit der 32bit Variante des JDK&#8217;s als auch mit der 64bit Variante problemlos auf Vista 64. Wie früher auch ziehen die Beispiele einiges an Prozessorleistung.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sparber.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sparber.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sparber.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sparber.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sparber.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sparber.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sparber.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sparber.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sparber.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sparber.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sparber.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sparber.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sparber.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sparber.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sparber.wordpress.com&amp;blog=6134886&amp;post=7&amp;subd=sparber&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sparber.wordpress.com/2009/01/11/java3d-auf-vista-64/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2bf5e35422199446408e708efd717d1e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sparber</media:title>
		</media:content>
	</item>
	</channel>
</rss>
