<?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>shoss.de: blog</title>
	<atom:link href="http://shoss.de/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://shoss.de/blog</link>
	<description></description>
	<lastBuildDate>Sun, 29 Nov 2009 15:51:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>join(collection).with(element)</title>
		<link>http://shoss.de/blog/2009/joincollection-withelement/</link>
		<comments>http://shoss.de/blog/2009/joincollection-withelement/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 15:45:47 +0000</pubDate>
		<dc:creator>seb</dc:creator>
				<category><![CDATA[Denove]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Collections]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[DRY]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://shoss.de/blog/?p=93</guid>
		<description><![CDATA[While playing around with the Denove Core library I often wrote something like this:

public boolean addElement(final T element) {
  if (!this.collection.contains(element)) {
    return this.collection.add(checkNotNull(element, &#34;element&#34;)); //$NON-NLS-1$
  }

  throw new IllegalArgumentException(&#34;May not add duplicate elements&#34;); //$NON-NLS-1$
}

So I&#8217;m not directly exposing the underlying collection but rather offer addElement, addAllElements, removeElement, etc. [...]]]></description>
			<content:encoded><![CDATA[<p>While playing around with the Denove Core library I often wrote something like this:</p>
<pre class="brush: java;">
public boolean addElement(final T element) {
  if (!this.collection.contains(element)) {
    return this.collection.add(checkNotNull(element, &quot;element&quot;)); //$NON-NLS-1$
  }

  throw new IllegalArgumentException(&quot;May not add duplicate elements&quot;); //$NON-NLS-1$
}
</pre>
<p>So I&#8217;m not directly exposing the underlying collection but rather offer <em>addElement</em>, <em>addAllElements</em>, <em>removeElement</em>, etc. methods to work with the collection from the outside. This is done so that no one can insert or remove anything without the objects (that is the collection holder) knowledge. In the above example I&#8217;m restricting new elements to be non-null and any new element must not be in the collection already. Since this code looks more or less the same for every collection I&#8217;m using I thought about how to apply the DRY principle and move that piece of code somewhere else (that is away from the <em>addElement</em>, etc. methods).</p>
<p>At first I thought aspect oriented programming (always wanted to try AspectJ) but ditched it later on for something simpler. My final solution introduces a single static factory method which creates a so called <em>CollectionJoiner</em> which offers its users a DSL-like language to combine/merge/join collections with single elements are other collections. The code below was the result after my first iteration:</p>
<pre class="brush: java;">
public boolean addElement(final T element) {
  join(this.collection).with(element);
}
</pre>
<p>This <span style="text-decoration: line-through;">was</span> is fairly simple because all it takes is to move the common code from all those <em>addElement</em>-methods to a central place (I&#8217;ve used static imports here to make the line even shorter). However I applied the same restrictions to every collection I was going to join so others may not be able to work with this code (e.g. all those who want to allow null-able objects). For that I came up with a new method called <em>restrictedOn()</em> which takes a so-called Restriction as parameter and applies all given restrictions to the element (or all elements of the given collection) to join. It looks like the following:</p>
<pre class="brush: java;">
public boolean addElement(final T element) {
  join(this.collection)
     .restrictedOn(Restrictions.NO_DUPLICATES)
     .restrictedOn(Restrictions.NON_NULL_VALUES)
     .with(element);
}
</pre>
<p>That way I can apply different restrictions to different collections but I&#8217;m still able to define those restrictions only once and use them as often as I want to. The code for the final <em>with()</em> method looks quite simple as well:</p>
<pre class="brush: java;">
public boolean with(final T element) {
  for (final Restriction&lt;T&gt; restriction : this.restrictions) {
    restriction.apply(element);
  }

  return this.collection.add(element);
}
</pre>
<p>Currently I&#8217;m looking into <a href="http://code.google.com/p/google-collections/">google-collections</a> (and possible <a href="http://code.google.com/p/guava-libraries/">google-guava</a>) to see whether the Restriction interface can be replaced with Predicates. I&#8217;m already using them with those <em>checkNotNull</em>-methods (see first example for an example..) and would be happy to integrate them into the <a href="http://github.com/denove/util/blob/master/src/main/java/org/denove/util/collection/CollectionJoiner.java"><em>CollectionJoiner</em></a> class. Maybe I&#8217;ll add a method which sets the default restrictions (or predicates) too, so when you never ever want to work with null-objects you don&#8217;t have to specify that every time.</p>
<p>Any comments/suggestions on this?</p>
]]></content:encoded>
			<wfw:commentRss>http://shoss.de/blog/2009/joincollection-withelement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing Enumerations in Java</title>
		<link>http://shoss.de/blog/2009/testing-enumerations-in-java/</link>
		<comments>http://shoss.de/blog/2009/testing-enumerations-in-java/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 10:24:58 +0000</pubDate>
		<dc:creator>seb</dc:creator>
				<category><![CDATA[Allerlei]]></category>
		<category><![CDATA[enumeration]]></category>
		<category><![CDATA[junit]]></category>
		<category><![CDATA[theory]]></category>

		<guid isPermaLink="false">http://shoss.de/blog/?p=70</guid>
		<description><![CDATA[Since testing is so much fun, I decided to unit-test my enums too. Just in case someone (me) changes those values without telling anybody or whatever reason for testing you got. Suppose you have an enum like follows:

public enum Month {
    January,
    February,
    ...
   [...]]]></description>
			<content:encoded><![CDATA[<p>Since testing is so much fun, I decided to unit-test my enums too. Just in case someone (me) changes those values without telling anybody or whatever reason for testing you got. Suppose you have an enum like follows:</p>
<pre class="brush: java;">
public enum Month {
    January,
    February,
    ...
    December;
} </pre>
<p>To test that you could just use the valueOf(String) method of any enumeration and see if the resulting object is null or not. So you would call</p>
<pre class="brush: java;">assertThat(Month.valueOf(&quot;January&quot;), is(notNullValue()));</pre>
<p>for every item in the enumeration and probably create different test methods for each of those calls. Instead of that you could also use parameterized tests (with <span class="annotation">@RunWith</span>(Parameterized.<span class="keyword">class</span>) annotation) but I don&#8217;t like constructors in test classes. So with the release of JUnit 4.5 we now got <strong>Theories</strong> which are similar but not  the same as parameterized tests. Instead of parameters and constructors with private fields you use data points and that&#8217;s it basically. With that we can replace all those more or less similar test cases for every enumeration item with a single:</p>
<pre class="brush: java;">
@Theory
public final void monthIsNotNull(final String month) {
    assertThat(Month.valueOf(month), is(notNullValue()));
}
</pre>
<p>What&#8217;s missing here is the already mentioned DataPoint. You declare one with the @DataPoint annotation or multiple data points with the @DataPoints annotation like follows:</p>
<pre class="brush: java;">
@DataPoint
public static final String JANUARY = &quot;January&quot;
</pre>
<p>After that you have to annotate your test class with the @RunWith(Theories.class) and JUnit will automatically run the theory on all available data points. You can take a look <a title="LicenseTest.java" href="http://denove.indefero.net/p/core/source/tree/master/src/test/java/de/shoss/denove/core/information/LicenseTest.java">here</a> to see how I applied that to unit-testing inside the Denove-core package.</p>
]]></content:encoded>
			<wfw:commentRss>http://shoss.de/blog/2009/testing-enumerations-in-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>InDefero Mylyn Connector</title>
		<link>http://shoss.de/blog/2009/indefero-mylyn-connector/</link>
		<comments>http://shoss.de/blog/2009/indefero-mylyn-connector/#comments</comments>
		<pubDate>Sat, 27 Jun 2009 15:45:34 +0000</pubDate>
		<dc:creator>seb</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[InDefero]]></category>
		<category><![CDATA[Mylyn]]></category>

		<guid isPermaLink="false">http://shoss.de/blog/?p=54</guid>
		<description><![CDATA[InDefero is in its own words:
InDefero is basically a clone of GoogleCode but with git, mercurial and subversion support. The motto of InDefero &#8220;beautiful simplicity&#8220;
So basically it is a bugtracker along with code-hosting and -review features. They also offer you some managed hosting space go get you started or you could download the whole thing [...]]]></description>
			<content:encoded><![CDATA[<p><a title="InDefero Homepage" href="http://www.indefero.net/">InDefero</a> is in its own words:</p>
<blockquote><p><strong>InDefero</strong> is basically a clone of GoogleCode but with git, mercurial and subversion support. The motto of <strong>InDefero</strong> &#8220;<em>beautiful simplicity</em>&#8220;</p></blockquote>
<p>So basically it is a bugtracker along with code-hosting and -review features. They also offer you some managed hosting space go get you started or you could download the whole thing and deploy it yourself. Sounds nice and looks good so far.</p>
<p>Since i can no longer live without Mylyn i digged deeper to see if there is any support for it (either on the side of InDefero/Ceondo or Eclipse/Tasktop) but to my disappointment there <span style="text-decoration: line-through;">is</span> was none. So i decided to use the generic web template connector feature from Mylyn to connect both Eclipse and InDefero. It still needs some work but i can query for existing tasks and create new ones just fine. Editing of tasks is done via the internal web browser so that should work too (as long as you are online). The configuration is listed below (i&#8217;m using Eclipse 3.5 and Mylyn 3.2):</p>
<blockquote><p>Server: <em>Your Project Adress (e. g. </em>http://denove.indefero.net/p/core)</p>
<p>Label: <em>Whatever you want</em></p>
<p>User ID and Password: <em>Should match your user ID and password</em></p>
<p>Task URL: <em>${serverUrl}/issues/</em></p>
<p>New Task URL: <em>${serverUrl}/issues/create/</em></p>
<p>Query Request URL: <em>${serverUrl}/issues/search/?q=${SEARCHTERM}&amp;s=Search</em></p>
<p>Query Pattern: &lt;td&gt;({Id}.+?)&lt;/td&gt;&lt;td&gt;&lt;a href=&#8221;<strong>/p/core/</strong>issues/({Id}.+?)/&#8221;&gt;({Description}.+?)&lt;/a&gt;</p></blockquote>
<p>2 things should be noted here:</p>
<p>1) I&#8217;ve put SEARCHTERM in the query request URL. I&#8217;m using this to build the different query later by just overriding the SEARCHTERM parameter.</p>
<p>2) The bold sequence in the querry pattern (<strong>/p/core/</strong>) is actually part of my ${serverUrl} adress but i could neither get ${serverUrl} to work nor any other self-defined parameter. <strong>So you have to change that to whatever your project URL looks like</strong>. Below or some screenshots for those without Eclipse ..</p>
<div id="attachment_59" class="wp-caption aligncenter" style="width: 160px"><a href="http://shoss.de/blog/wp-content/uploads/repository.png"><img class="size-thumbnail wp-image-59" title="Repository Setup" src="http://shoss.de/blog/wp-content/uploads/repository-150x150.png" alt="Repository Setup" width="150" height="150" /></a><p class="wp-caption-text">Repository Setup</p></div>
<div id="attachment_62" class="wp-caption aligncenter" style="width: 160px"><a href="http://shoss.de/blog/wp-content/uploads/query.png"><img class="size-thumbnail wp-image-62" title="Query Setup" src="http://shoss.de/blog/wp-content/uploads/query-150x150.png" alt="Query Setup" width="150" height="150" /></a><p class="wp-caption-text">Query Setup</p></div>
]]></content:encoded>
			<wfw:commentRss>http://shoss.de/blog/2009/indefero-mylyn-connector/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>shoss.de Code jetzt bei GitHub</title>
		<link>http://shoss.de/blog/2009/shossde-code-jetzt-bei-github/</link>
		<comments>http://shoss.de/blog/2009/shossde-code-jetzt-bei-github/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 16:19:37 +0000</pubDate>
		<dc:creator>seb</dc:creator>
				<category><![CDATA[Homepage]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://shoss.de/blog/?p=50</guid>
		<description><![CDATA[Nachdem der Quelltext der Seite unter http://shoss.de/ schon lange Zeit für jedermann zum Download bereit stand, hab ich es nun endlich geschafft den kompletten Code bei GitHub zu parken. Falls wirklich wer interesse an dieser Seite (oder deren Code) hat, kann er sich da immer den jeweils aktuellen Code besorgen.
]]></description>
			<content:encoded><![CDATA[<p>Nachdem der Quelltext der Seite unter <a title="Homepage von Sebastian Hoß" href="http://shoss.de/">http://shoss.de/</a> schon lange Zeit für jedermann zum <a title="HTML Code zum Download" href="http://shoss.de/html">Download</a> bereit stand, hab ich es nun endlich geschafft den kompletten Code bei <a title="Quellcode bei GitHub" href="http://github.com/sebhoss/shoss.de/tree/master">GitHub</a> zu parken. Falls wirklich wer interesse an dieser Seite (oder deren Code) hat, kann er sich da immer den jeweils aktuellen Code besorgen.</p>
]]></content:encoded>
			<wfw:commentRss>http://shoss.de/blog/2009/shossde-code-jetzt-bei-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>rel=&#8221;canonical&#8221;</title>
		<link>http://shoss.de/blog/2009/relcanonical/</link>
		<comments>http://shoss.de/blog/2009/relcanonical/#comments</comments>
		<pubDate>Sat, 14 Feb 2009 13:34:34 +0000</pubDate>
		<dc:creator>seb</dc:creator>
				<category><![CDATA[Homepage]]></category>
		<category><![CDATA[canonical]]></category>
		<category><![CDATA[link]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://shoss.de/blog/?p=45</guid>
		<description><![CDATA[Kommt selten vor, passiert aber trotzdem: Die drei &#8220;großen&#8221; Google, MSN und Yahoo! haben sich zusammen getan um uns allen zu helfen. Mittels &#60;link rel=&#8221;canonical&#8221; href=&#8221;http://shoss.de/&#8221; /&#62; ist es nun möglich den Suchmaschinen klar zu machen welche die &#8220;Hauptseite&#8221; für gewisse Inhalte sein soll und welche Seiten nur auf diese verweisen.
Als Beispiel etwa http://www.shoss.de/ und [...]]]></description>
			<content:encoded><![CDATA[<p>Kommt selten vor, passiert aber trotzdem: Die drei &#8220;großen&#8221; <a href="http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html">Google</a>, <a href="http://blogs.msdn.com/webmaster/archive/2009/02/12/partnering-to-help-solve-duplicate-content-issues.aspx">MSN</a> und <a href="http://ysearchblog.com/2009/02/12/fighting-duplication-adding-more-arrows-to-your-quiver/">Yahoo!</a> haben sich zusammen getan um uns allen zu helfen. Mittels <em>&lt;link rel=&#8221;canonical&#8221; href=&#8221;http://shoss.de/&#8221; /&gt;</em> ist es nun möglich den Suchmaschinen klar zu machen welche die &#8220;Hauptseite&#8221; für gewisse Inhalte sein soll und welche Seiten nur auf diese verweisen.</p>
<p>Als Beispiel etwa http://www.shoss.de/ und http://shoss.de/. Ist beides das selbe und doch unterschiedliche Adressen. Mittels des oben Ausdrucks kann ich jetzt also sagen, dass ausschließlich <a title="Homepage von Sebastian Hoß" href="http://shoss.de/">http://shoss.de/</a> im Index landen soll und nicht noch zusätzlich die www-Variante..</p>
]]></content:encoded>
			<wfw:commentRss>http://shoss.de/blog/2009/relcanonical/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alles neu &#8211; alles einfach</title>
		<link>http://shoss.de/blog/2009/alles-neu-alles-einfach/</link>
		<comments>http://shoss.de/blog/2009/alles-neu-alles-einfach/#comments</comments>
		<pubDate>Sun, 08 Feb 2009 09:13:55 +0000</pubDate>
		<dc:creator>seb</dc:creator>
				<category><![CDATA[Homepage]]></category>
		<category><![CDATA[Ant]]></category>
		<category><![CDATA[LoadFile]]></category>
		<category><![CDATA[Replace]]></category>
		<category><![CDATA[Server Side Includes]]></category>

		<guid isPermaLink="false">http://shoss.de/blog/?p=37</guid>
		<description><![CDATA[Hatte schon seit einiger Zeit vor mal rauszufinden, ob der Replace Task von Ant auch mehrere Zeilen auf einmal ersetzen kann. Also entweder ein Token durch mehrere Zeilen bzw. den Inhalt einer Datei zu ersetzen oder mehrere Zeilen als Token durch eine oder mehrere Zeilen zu ersetzen. Während das Ersetzen eines mehrzeiligen Tokens mittels replacetoken [...]]]></description>
			<content:encoded><![CDATA[<p>Hatte schon seit einiger Zeit vor mal rauszufinden, ob der Replace Task von Ant auch mehrere Zeilen auf einmal ersetzen kann. Also entweder ein Token durch mehrere Zeilen bzw. den Inhalt einer Datei zu ersetzen oder mehrere Zeilen als Token durch eine oder mehrere Zeilen zu ersetzen. Während das Ersetzen eines mehrzeiligen Tokens mittels <a title="Ant Replace Task" href="http://ant.apache.org/manual/CoreTasks/replace.html">replacetoken</a> ganz gut funktioniert hatte ich so meine Schwierigkeiten mit dem Einfügen von mehreren Zeilen via Ant.</p>
<p>Ein kurzer Besuch bei Google hat mir die erste Idee bei <a title="Multiline Ant replace" href="http://www.devdaily.com/blog/post/java/how-multiline-text-replacement-apache-ant/">devdaily.com</a> gegeben, bei der mittels Schlüsse in einer Property-Datei ein einzelner Token durch mehrere Zeilen ersetzt werden soll. Um den Schlüssel auf mehrere Zeilen auszudehnen hat man dort  <em>${line.separator}</em> genutzt, was allerdings bei mir nicht funktioniert hat. Warum-auch-immer wollte Ant (1.7) <em>${line.separator}</em> nicht auflösen und daher war das Ergebnis nicht ganz so schön. Außerdem war mir auch nicht ganz klar, ob ich die einzelnen Zeilen auch (unterschiedlich) einrücken kann. Da die HTML Seiten auf meiner Homepage alle möglichst gleichmäßig eingerückt sind hab ich mir also was anderes überlegt.</p>
<p>Anstelle der Server-Side-Includes (SSI), die ich erst <a title="Einführung von SSIs" href="http://shoss.de/blog/2008/jetzt-mit-back-button-und-positionfixed/">letztes Jahr</a> eingeführt hatte, wollte ich ich Ant die Arbeit des Ersetzens erledigen lassen. Die SSIs waren damals auch nur die Notlösung gewesen, weil das mehrzeilige Ersetzen mit Ant noch nicht so wollte. Die Ant-Lösung finde ich deswegen schöner, weil ich hier ausschließlich statischen Inhalt einfüge, der sich niemals dynamisch ändert. D. h. alle Besucher bekommen vom Server den selben Inhalt zugespielt. Der Einsatz von SSIs ist für sowas zwar möglich aber irgendwie überflüssig, wenn ich schon vor dem Hochladen der HTML Dateien den Inhalt anpasse. Was ich also gemacht habe ist folgendes:</p>
<ol>
<li>Mittels <a title="Ant LoadFile Task" href="http://ant.apache.org/manual/CoreTasks/loadfile.html">LoadFile Task</a> die bisherigen Include Dateien ausgelesen und an einen Wert gebunden.</li>
<li>Die jeweiligen Tokens durch die jeweiligen Werte ersetzt.</li>
</ol>
<p>Problematisch dabei sind allerdings wieder die Tokens. Nimmt man irgendwas wie <em>@VCard@</em> (o. ä.) beschwert sich der HTML-Editor in Eclipse, dass ein einzelnes <em>@VCard@</em> mittem in einem HTML-Dokument kein richtig gültiges HTML (bzw. XHTML) ist. Schreibt man <em>&lt;p&gt;@VCard@&lt;/p&gt;</em> und benutzt den gesamten Ausdruck als Token beschwert sich Eclipse, dass spitze Klammern keine gültigen Tokens sind. Die Lösung ist relativ einfach: Man erstellt neue Schlüssel in der Property-Datei, die diese kompletten Ausdrücke enthalten und referenziert diese im Buildfile von Ant mittels <em>${Key}</em> und das wars <img src='http://shoss.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Schön dabei ist auch, dass ich die bisherigen Include Dateien weiterhin nutzen kann, ich also nichtmal eine Zeile neuen HTML Code schreiben musste. Im Ergebnis sieht das dann etwa so aus:</p>
<blockquote><p>&lt;loadfile srcfile=&#8221;${source.dir}/Includes/back-button.inc&#8221; property=&#8221;back-button&#8221;/&gt;</p>
<p>&lt;replace dir=&#8221;${deploy.dir}&#8221; token=&#8221;${backButton}&#8221; value=&#8221;${back-button}&#8221;/&gt;</p></blockquote>
<p>Mit den beiden Zeilen hab ich mal eben schnell in allen HTML-Dateien einen Back-Button zurück auf die Startseite hinzugefügt.</p>
]]></content:encoded>
			<wfw:commentRss>http://shoss.de/blog/2009/alles-neu-alles-einfach/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tomboy</title>
		<link>http://shoss.de/blog/2009/tomboy/</link>
		<comments>http://shoss.de/blog/2009/tomboy/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 18:39:54 +0000</pubDate>
		<dc:creator>seb</dc:creator>
				<category><![CDATA[Allerlei]]></category>
		<category><![CDATA[tomboy]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://shoss.de/blog/?p=34</guid>
		<description><![CDATA[Tomboy nutze ich schon seit einiger Zeit und hatte weder technische noch funktionale Probleme damit. Allerdings hatte ich seit dem Update auf Ubuntu 8.10 immer das Problem, dass ich das Suchfenster von Tomboy angezeigt bekommen habe, nachdem ich mich als Benutzer am System angemeldet habe. In der Regel keine große Sache, da man das Fenster [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Tomboy homepage" href="http://projects.gnome.org/tomboy/">Tomboy</a> nutze ich schon seit einiger Zeit und hatte weder technische noch funktionale Probleme damit. Allerdings hatte ich seit dem Update auf Ubuntu 8.10 immer das Problem, dass ich das Suchfenster von Tomboy angezeigt bekommen habe, nachdem ich mich als Benutzer am System angemeldet habe. In der Regel keine große Sache, da man das Fenster ja einfach schließen kann. Nur blöd, dass dabei dann immer wieder mal (es war nie wirklich reproduzierbar) damit auch gleich Tomboy geschlossen wurde. Ein erneutest Starten von Tomboy brachte wieder das Suchfenster und das Schließen des Fenster schloss auch wieder Tomboy selbst usw.</p>
<p>Wie kommt man da raus ohne auf Tomboy zu verzichten? Ganz einfach die &#8220;&#8211;search&#8221; Option aus dem Starter Menü entfernen <img src='http://shoss.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Kleine Sache, große Wirkung.</p>
]]></content:encoded>
			<wfw:commentRss>http://shoss.de/blog/2009/tomboy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Denove 9.01 (Malabo)</title>
		<link>http://shoss.de/blog/2009/denove-901-malabo/</link>
		<comments>http://shoss.de/blog/2009/denove-901-malabo/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 12:28:45 +0000</pubDate>
		<dc:creator>seb</dc:creator>
				<category><![CDATA[Denove]]></category>
		<category><![CDATA[Release]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://shoss.de/blog/?p=30</guid>
		<description><![CDATA[Today is not only the first day of the first black american president but also the release date of Denove 9.01 (a.k.a &#8216;Malabo&#8216;). The release is by far not feature complete and we still have lots to do. So think of this release as some sort of &#8220;show-off&#8221;..
As always everything can be found at http://denove.shoss.de/. [...]]]></description>
			<content:encoded><![CDATA[<p>Today is not only the first day of the first black american president but also the release date of Denove 9.01 (a.k.a &#8216;<a title="Malabo @ Wikipedia" href="http://en.wikipedia.org/wiki/Malabo">Malabo</a>&#8216;). The release is by far not feature complete and we still have lots to do. So think of this release as some sort of &#8220;show-off&#8221;..</p>
<p>As always everything can be found at <a title="Denove Homepage" href="http://denove.shoss.de/">http://denove.shoss.de/</a>. And as you may see there the DenoveSE project didn&#8217;t quite make it so we are postponing that release to somewhere in june/july.</p>
]]></content:encoded>
			<wfw:commentRss>http://shoss.de/blog/2009/denove-901-malabo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Neue Seite &#8211; Neues Glück</title>
		<link>http://shoss.de/blog/2008/neue-seite-neues-gluck/</link>
		<comments>http://shoss.de/blog/2008/neue-seite-neues-gluck/#comments</comments>
		<pubDate>Sun, 30 Nov 2008 14:20:43 +0000</pubDate>
		<dc:creator>seb</dc:creator>
				<category><![CDATA[Homepage]]></category>
		<category><![CDATA[BPMN]]></category>
		<category><![CDATA[EPK]]></category>
		<category><![CDATA[Prozess]]></category>

		<guid isPermaLink="false">http://shoss.de/blog/?p=28</guid>
		<description><![CDATA[Lange drüber nachgedacht und nun endlich da: Meine Seite über Prozesse. Gemeint sind damit Arbeitsabläufe, die etwa mittels EPK oder (wie hier zu sehen) als BPMN dargestellt werden. Die Ausführung bleibt dann aber immer noch jedem selbst überlassen  
]]></description>
			<content:encoded><![CDATA[<p>Lange drüber nachgedacht und nun endlich da: Meine Seite über <a title="Prozesse zum Selbermachen" href="http://shoss.de/processes">Prozesse</a>. Gemeint sind damit Arbeitsabläufe, die etwa mittels EPK oder (wie <a title="Table filling Algorithmus in BPMN" href="http://shoss.de/processes/Table%20filling%20Algorithmus.svg">hier</a> zu sehen) als BPMN dargestellt werden. Die Ausführung bleibt dann aber immer noch jedem selbst überlassen <img src='http://shoss.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://shoss.de/blog/2008/neue-seite-neues-gluck/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ein neuer alter Bugtracker</title>
		<link>http://shoss.de/blog/2008/ein-neuer-alter-bugtracker/</link>
		<comments>http://shoss.de/blog/2008/ein-neuer-alter-bugtracker/#comments</comments>
		<pubDate>Sat, 15 Nov 2008 11:55:07 +0000</pubDate>
		<dc:creator>seb</dc:creator>
				<category><![CDATA[Homepage]]></category>
		<category><![CDATA[Bugtracker]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Mantis]]></category>
		<category><![CDATA[Mylyn]]></category>

		<guid isPermaLink="false">http://shoss.de/blog/?p=26</guid>
		<description><![CDATA[Mal wieder ein neuer Bugtracker. Dieses Mal hab ich Mantis genommen, weil es wohl der einzige php-Bugtracker ist, der sowohl über Mylyn und Eclipse läuft und dazu noch aktiv weiter entwickelt wird. Außerdem ist das anonyme Betrachten von bestehenden Bugs viel leichter und sauberer in Mantis umgesetzt als in Eventum. Während Eventum noch eine extra [...]]]></description>
			<content:encoded><![CDATA[<p>Mal wieder ein neuer Bugtracker. Dieses Mal hab ich <a title="Mantis Homepage" href="http://www.mantisbt.org/">Mantis</a> genommen, weil es wohl der einzige php-Bugtracker ist, der sowohl über Mylyn und Eclipse läuft und dazu noch aktiv weiter entwickelt wird. Außerdem ist das anonyme Betrachten von bestehenden Bugs viel leichter und sauberer in Mantis umgesetzt als in <a title="Post über Eventum" href="http://shoss.de/blog/2008/neuer-bugtracker/">Eventum</a>. Während Eventum noch eine extra Login-Seite für anonyme brauchte, reicht bei Mantis die Option <em>$g_allow_anonymous_login = ON;</em>&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://shoss.de/blog/2008/ein-neuer-alter-bugtracker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
