<?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>dahlen.org</title>
	<atom:link href="http://www.dahlen.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dahlen.org</link>
	<description>Familie Dahlen, NRW</description>
	<lastBuildDate>Tue, 01 May 2012 14:39:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Deutscher Mühlentag 2012 &#8211; wir sind dabei!</title>
		<link>http://www.dahlen.org/2012/04/deutscher-muehlentag-2012/</link>
		<comments>http://www.dahlen.org/2012/04/deutscher-muehlentag-2012/#comments</comments>
		<pubDate>Mon, 30 Apr 2012 08:57:28 +0000</pubDate>
		<dc:creator>Christoph</dc:creator>
				<category><![CDATA[Ereignisse]]></category>
		<category><![CDATA[Sevelen]]></category>
		<category><![CDATA[Mühle]]></category>
		<category><![CDATA[Mühlentag]]></category>
		<category><![CDATA[Museumsverein]]></category>

		<guid isPermaLink="false">http://www.dahlen.org/?p=738</guid>
		<description><![CDATA[Den Abschluss der Außensanierung der Dahlen-Mühle feiern der Museumsverein „Dahlen- Mühle e.V.“ und die Eignerfamilie mit einem besonderen Mühlentag.]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://www.dahlen.org/wordpress/wp-content/gallery/muehle/22750880.jpg" title="Mit freundlicher Erlaubnis von Holger Bauer, &quot;pivatana&quot;, &lt;a href=&quot;http://www.panoramio.com/user/2628412&quot;&gt;http://www.panoramio.com/user/2628412&lt;/a&gt;" class="thickbox noslimstat" rel="singlepic188" >
	<img class="ngg-singlepic ngg-left" src="http://www.dahlen.org/wordpress/wp-content/gallery/cache/188__150x100_22750880.jpg" alt="Aufnahme H. Bauer " title="Aufnahme H. Bauer " />
</a>
Den Abschluss der Außensanierung der Dahlen-Mühle feiern der <a title="Der Museumsverein" href="http://www.dahlen.org/projekte/museumsverein/">Museumsverein</a> <q>Dahlen-Mühle <span class="nbthinsp">e<span>.</span>V.</span></q> und die Eignerfamilie mit einem besonderen Mühlentag.</p>
<p>Am deutschen Mühlentag, dem 28.05.2012 (Pfingstmontag) zwischen 10.00 und 17.00 Uhr kann die in Sevelen, Nieukerkerstr. 30-32 gelegene <q>Dahlen-Mühle</q> von innen und außen besichtigt werden.<br />
<span id="more-738"></span><br />
Eine Fotoausstellung <q>100-mal Dahlen-Mühle</q> zeigt die wechselvolle Geschichte dieser Mühle. Führungen erläutern und erklären, insbesondere auch die in den vergangenen 15 Jahren vorgenommenen erheblichen Sanierungsarbeiten.</p>
<p>Vier Hobby-Künstler haben sich bereit erklärt, diesen Tag mitzugestalten und ihr Handwerk vorzuführen. So geben ein Korbflechter, ein Glaskünstler, eine Schmuckdesignerin und ein Holzbearbeiter interessante Einblicke in ihre Kunst. </p>
<p>Für die kleineren Gäste wird eine <q>Märchen-Oma</q> Geschichten und Märchen der Gebrüder Grimm vorlesen. Wer Lust hat, kann an einem Preisrätsel teilnehmen. Hier sind Rechenkünstler und Geschichtskenner besonders gefordert. Als Hauptgewinn wird eine Übernachtung in der <a title="Das Gästezimmer" href="http://www.dahlen.org/projekte/gaestezimmer/">Gästewohnung</a> der Mühle verlost!</p>
<p>Auch das leibliche Wohl bleibt nicht unberücksichtigt. Ab 14.00 Uhr sind Kaffee und Kuchen im Angebot.</p>
<p>Wir freuen uns über viele Besucher und wünschen einen schönen und interessanten Tag.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dahlen.org/2012/04/deutscher-muehlentag-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TwonkyServer 7 unter Ubuntu 10.04 verwenden</title>
		<link>http://www.dahlen.org/2012/03/twonkyserver-7-unter-ubuntu-10-04-verwenden/</link>
		<comments>http://www.dahlen.org/2012/03/twonkyserver-7-unter-ubuntu-10-04-verwenden/#comments</comments>
		<pubDate>Sun, 18 Mar 2012 11:49:09 +0000</pubDate>
		<dc:creator>Christoph</dc:creator>
				<category><![CDATA[Informatik]]></category>
		<category><![CDATA[Medien]]></category>
		<category><![CDATA[DLNA]]></category>
		<category><![CDATA[Playstation]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.dahlen.org/?p=712</guid>
		<description><![CDATA[Es kommt eins zum anderen. Ich hab&#8217; heute bei TwonkyMedia vorbeigeschaut und wollte meine Beschreibung der Installation an die neue Version anpassen. Doch die aktuelle Version 7.0.5 will so gar nicht mehr zu meiner Beschreibung passen. Daher war es einfacher, nochmal von vorne anzufangen. In der Zwischenzeit hat sich allerdings auch mein Anspruch beim Einsatz [...]]]></description>
			<content:encoded><![CDATA[<p>Es kommt eins zum anderen. Ich hab&#8217; heute bei <a href="http://www.twonkymedia.com/">TwonkyMedia</a> vorbeigeschaut und wollte meine <a href="http://www.dahlen.org/2011/05/twonkyserver-unter-ubuntu-10-04-verwenden/" title="TwonkyServer 6 unter Ubuntu 10.04 verwenden">Beschreibung </a> der Installation an die neue Version anpassen. Doch die aktuelle Version 7.0.5 will so gar nicht mehr zu meiner Beschreibung passen. Daher war es einfacher, nochmal von vorne anzufangen.</p>
<p><span id="more-712"></span></p>
<p>In der Zwischenzeit hat sich allerdings auch mein Anspruch beim Einsatz einer Software gravierend geändert: Es muß in erster Linie funktionieren! Eingriffe in die Konfiguration, um die Verwendung standardisierter Pfade etc. zu verwenden, kommen nur noch selten vor. </p>
<p>Entsprechend startet meine Anleitung mit der Auswahl des bereitgestellten Installers, nicht der Version für die manuelle Installation.</p>
<pre><code>$ wget http://www.twonkyvision.com/upfiles/twonky-i386-glibc-2.2.5-special-7.0.5.sh</code></pre>
<p>Um einigen Problemen von vorneherein den Boden zu entziehen, sind vor der Ausführung des Installers noch ein Verzeichnis zu erstellen und an eine völlig absurde Stelle als symbolischer Link einzublenden:</p>
<pre><code>$ sudo mkdir /var/opt/twonky
$ sudo ln -s /var/opt/twonky /var/twonky</code></pre>
<p>Danach heisst es: Daumen drücken, denn ein ungeprüftes Installationsskript als root auszuführen, erfordert schon ein wenig Risikobereitschaft.</p>
<pre><code>$ sudo sh twonky-i386-glibc-2.2.5-special-7.0.5.sh</code></pre>
<p>Das ernüchternde Ergebnis:</p>
<ol>
<li>der Installer legt seine Daten unter /usr/local/twonky ab (naja &hellip;)</li>
<li>der Installer legt leere Medienverzeichnisse unter /twonky ab</li>
<li>der Installer terminiert nicht</li>
</ol>
<p>Bevor wir jetzt anpassen und konfigurieren, muß zunächst der Installer mittels Strg-c beendet werden. Außerdem muß der im Rahmen der Installation gestartete Server noch gestoppt werden.</p>
<pre><code>$ sudo /etc/init.d/twonkyserver stop</code></pre>
<p>Dann korrigieren wir erstmal den Installationsort</p>
<pre><code>$ sudo mv /usr/local/twonky /opt/</code></pre>
<p>und passen die SysV-Datei unter /etc/init.d/twonkyserver an. Aus den Zeilen 26-38 wird Folgendes gemacht:</p>
<pre><code>#===============================[ Setup ]===
WORKDIR1="/opt/twonky"
WORKDIR2="`dirname $0`"
PIDFILE=/var/run/mediaserver.pid
LOGFILE=/var/log/twonky.log
INIFILE=/etc/opt/twonky.ini
APPDATA=/var/opt/twonky

#change this to 0 to disable the twonky proxy service
START_PROXY=1

#change this to 0 to disable the twonky webdav service
START_WEBDAV=1
#===============================[ Script ]===</code></pre>
<p>Damit diese Angaben auch genutzt werden, müssen weitere Anpassungen erfolgen. In Zeile 84 muß das $APPDATA-Verzeichnis für den WebDAV/Proxy-Server hinzufügt werden, so daß die Zeile dann so aussieht:</p>
<pre><code>"${SUPPORT_DAEMON_WORKDIR}/${SUPPORT_DAEMON}" -inifile "$INIFILE" -appdata "$APPDATA" &#038;</code></pre>
<p>Gleiches gilt für Zeile 177ff. Der Bereich soll nach der Änderung so aussehen:</p>
<pre><code>echo -n "Starting $TWONKYSRV &hellip; "
"$TWONKYSRV" -inifile "$INIFILE" -logfile "$LOGFILE" -appdata "$APPDATA"
rc_status -v
</code></pre>
<p>Anschließend kann der Server erneut gestartet werden, damit eine Konfiguration der Freigaben und anderer Einstellungen über das Webinterface auf Port 9000 erfolgen kann. Ein Hinweis noch, der auch für Version 6 gilt: Es gibt eine <a href="http://www.twonkyforum.com/viewtopic.php?f=16&#038;t=6919&#038;p=25739&#038;hilit=blacklist#p25739">Liste</a> von Verzeichnissen, die nicht für Freigaben verwendet werden können. So gehört <span class="nbthinsp">z<span>.</span>B.</span> /srv dazu, /var/share geht aber.</p>
<p>Entsprechen alle Einstellungen, die über das Webinterface eingestellt werden können den eigenen Vorlieben, ist noch eine letzte manuelle Änderung notwendig: Für das Management von hochgeladenen Medien (auf welchem Wege auch immer), erstellt Twonky das Verzeichnis &#8220;/twonky&#8221; direkt im root-Verzeichnis. Ein für mich besserer Ort ist /var/opt/twonky/managed. Leider ist die Einstellung (noch) nicht über das Webinterface möglich, also ist nochmal manueller Eingriff in die Konfigurationsdatei /etc/opt/twonky.ini notwendig. Die entsprechenden Parameter werden auf folgende Werte gesetzt:</p>
<pre><code>servermanagedmusicdir=/var/opt/twonky/managed/music
servermanagedpicturedir=/var/opt/twonky/managed/pictures
servermanagedvideodir=/var/opt/twonky/managed/videos</code></pre>
<p>Einen Neustart des Servers später kann kurz aufgeräumt werden &hellip;</p>
<pre><code>$ sudo rm -r /twonky
$ sudo rm -f /var/twonky</code></pre>
<p>&hellip; und schon stehen die Medien für den Abruf zur Verfügung. Die Informationen zur Transkodierung und Vorschaubild-Erstellung können der <a href="http://www.dahlen.org/2011/05/twonkyserver-unter-ubuntu-10-04-verwenden/" title="TwonkyServer 6 unter Ubuntu 10.04 verwenden">Anleitung</a> für Version 6 entnommen werden. Dabei auf geänderte Pfade achten!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dahlen.org/2012/03/twonkyserver-7-unter-ubuntu-10-04-verwenden/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Offene Gartenpforte 2012</title>
		<link>http://www.dahlen.org/2012/02/offene-gartenpforte-2012/</link>
		<comments>http://www.dahlen.org/2012/02/offene-gartenpforte-2012/#comments</comments>
		<pubDate>Mon, 13 Feb 2012 12:49:34 +0000</pubDate>
		<dc:creator>webmaster</dc:creator>
				<category><![CDATA[Sevelen]]></category>
		<category><![CDATA[Garten]]></category>

		<guid isPermaLink="false">http://www.dahlen.org/?p=683</guid>
		<description><![CDATA[Auch in diesem Jahr öffnet sich die Pforte zum Privat-Garten von Irmhild und Hans-Josef Dahlen in Sevelen. Nach einem Jahr Pause stehen ausgedehnte Einblicke in den Japan-Garten, den Park und die Bereiche rund um die Dahlen-Mühle zur Verfügung. Und wie immer wird sich auch dieses Mal sicherlich die Gelegenheit für einem Plausch unter Gartenfreuden ergeben. [...]]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://www.dahlen.org/wordpress/wp-content/gallery/garten/dsc00429.jpg" title="" class="thickbox noslimstat" rel="singlepic161" >
	<img class="ngg-singlepic ngg-left" src="http://www.dahlen.org/wordpress/wp-content/gallery/cache/161__150x100_dsc00429.jpg" alt="dsc00429" title="dsc00429" />
</a>
Auch in diesem Jahr öffnet sich die Pforte zum <a title="zur Garten-Seite" href="/projekte/garten">Privat-Garten</a> von Irmhild und Hans-Josef Dahlen in Sevelen.</p>
<p>Nach einem Jahr Pause stehen ausgedehnte Einblicke in den <q>Japan-Garten</q>, den <q>Park</q> und die Bereiche rund um die Dahlen-Mühle zur Verfügung. Und wie immer wird sich auch dieses Mal sicherlich die Gelegenheit für einem Plausch unter Gartenfreuden ergeben.</p>
<p>Die Gartenpforte ist jeweils von 10 &ndash; 17h geöffnet</p>
<ul>
<li>am 19./20. Mai 2012,</li>
<li>am 16./17. Juni 2012 und</li>
<li>am 21./22. Juli 2012.</li>
</ul>
<p>Der Eintritt ist frei, es wird um eine Spende von 3€ für den <q><a title="zum Museumsverein" href="/projekte/museumsverein">Museumsverein Dahlenmühle <span class="nbthinsp">e<span>.</span>V.</span></a></q> gebeten. Verbinden Sie Ihren Besuch doch mit einer Übernachtung in unserer <a title="zur Gästewohnung" href="/projekte/gaestezimmer">Gästewohnung</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dahlen.org/2012/02/offene-gartenpforte-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Die Breßer-Kinder als Fotomodelle</title>
		<link>http://www.dahlen.org/2011/12/die-bresser-kinder-als-fotomodelle/</link>
		<comments>http://www.dahlen.org/2011/12/die-bresser-kinder-als-fotomodelle/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 10:00:23 +0000</pubDate>
		<dc:creator>Christoph</dc:creator>
				<category><![CDATA[Kinder]]></category>
		<category><![CDATA[Fotografie]]></category>

		<guid isPermaLink="false">http://www.dahlen.org/?p=673</guid>
		<description><![CDATA[Mein (Studien-) Freund und Arbeitskollege Markus Rebbert taucht immer tiefer in das Thema professionelle Fotografie ein. Die Ergebnisse lassen sich bereits jetzt mehr als sehen, besonders wenn Kinder aus dem Familienkreis Modell stehen. Denn &#8211; Kinder gehen immer.]]></description>
			<content:encoded><![CDATA[<p>Mein (Studien-) Freund und Arbeitskollege <a href="http://www.rebbert.de/" title="Markus Rebbert" rel="external">Markus Rebbert</a> taucht immer tiefer in das Thema professionelle Fotografie ein. Die Ergebnisse lassen sich bereits jetzt mehr als sehen, besonders wenn Kinder aus dem Familienkreis Modell stehen. Denn &ndash; <a href="http://www.rebbert.de/kinder-gehen-immer" title="Kinder gehen immer" rel="external">Kinder gehen immer</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dahlen.org/2011/12/die-bresser-kinder-als-fotomodelle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TwonkyServer 6 unter Ubuntu 10.04 verwenden</title>
		<link>http://www.dahlen.org/2011/05/twonkyserver-unter-ubuntu-10-04-verwenden/</link>
		<comments>http://www.dahlen.org/2011/05/twonkyserver-unter-ubuntu-10-04-verwenden/#comments</comments>
		<pubDate>Wed, 11 May 2011 21:55:22 +0000</pubDate>
		<dc:creator>Christoph</dc:creator>
				<category><![CDATA[Informatik]]></category>
		<category><![CDATA[Medien]]></category>
		<category><![CDATA[DLNA]]></category>
		<category><![CDATA[Playstation]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.dahlen.org/?p=557</guid>
		<description><![CDATA[Mit dem Erwerb eines neuen, netzwerkfähigen Fernsehers entstand der Wunsch die zentral verwalteten Musikstücke nicht nur per DAAP-Protokoll zu verteilen, sondern auch per DLNA MediaServer. Gleiches sollte auch für andere Medien (Fotos &#038; Videos) geschehen. Die Wahl der Software fiel dabei auf den TwonkyServer der PacketVideo Corporation, ein kommerzielles aber bezahlbares closed-source Produkt der TwonkyMedia [...]]]></description>
			<content:encoded><![CDATA[<p>Mit dem Erwerb eines neuen, netzwerkfähigen Fernsehers entstand der Wunsch die zentral verwalteten Musikstücke nicht nur per <abbr title="Digital Audio Access Protocol">DAAP</abbr>-Protokoll zu verteilen, sondern auch per <abbr title="Digital Living Network Alliance">DLNA</abbr> MediaServer. Gleiches sollte auch für andere Medien (Fotos &#038; Videos) geschehen. </p>
<p>Die Wahl der Software fiel dabei auf den <a href="http://www.twonky.com/products/twonkyserver/" title="TwonkyServer Produktseite">TwonkyServer</a> der PacketVideo Corporation, ein kommerzielles aber bezahlbares closed-source Produkt der TwonkyMedia Suite. Für die Installation unter Ubuntu 10.04 <q>Lucid Lynx</q> mussten einige Informationen zusammengesucht werden, die ich hier gesammelt zur Verfügung stelle.</p>
<p>Hinweis: Twonky hat kürzlich den Twonky Server in der Version 7.0 veröffentlicht, der mit dieser Beschreibung nicht eingerichtet werden kann. Die hier gemachten Angaben sind also ausschließlich auf die Version 6 anwendbar.<br />
<span id="more-557"></span><br />
Mein Heimserver ist ein stromsparender PC auf Intel Atom 330 Basis mit Ubuntu Linux 10.04.2 <abbr title="Long Term Support">LTS</abbr> (<q>Lucid Lynx</q>) in der 64-Bit Server-Variante. Angesprochen wird die Maschine ausschließlich per <abbr title="Secure Shell">SSH</abbr> oder Browser, einen Bildschirm gibt es nicht. </p>
<p>Falls bisher noch keine 32-Bit-Applikation installiert wurde, muß zunächst ein Paket zur Kompatibilität  installiert werden.</p>
<pre><code>$ sudo apt-get install ia32-libs</code></pre>
<p>Zur Installation des TwonkyServers habe ich mich für das einfache <a href="http://www.twonky.com/upfiles/twonkymedia-i386-glibc-2.2.5-6.0.38.zip">ZIP</a>-Archiv entschieden. Der <a href="http://www.twonky.com/upfiles/twonkymedia-i386-glibc-2.2.5-6.0.38.sh">Installer</a> funktioniert zwar grundsätzlich, bot mir aber nicht genug Kontrolle über die Installation.</p>
<pre><code>$ wget http://www.twonky.com/upfiles/twonkymedia-i386-glibc-2.2.5-6.0.38.zip</code></pre>
<p>Gemäß des Linux <abbr title="Filesystem Hierarchy Standard">FHS</abbr> werden die eigentlichen Programmdateien unter /opt/twonkymedia installiert.</p>
<pre><code>$cd /opt
$ sudo unzip twonkymedia-i386-glibc-2.2.5-6.0.38.zip
$ sudo ln -s twonkymedia-6.0.38 twonkymedia</code></pre>
<p>Dann werden das mitgelieferte Start/Stop-Skript und die Beispiel-Konfiguration an entsprechende Stellen kopiert.</p>
<pre><code>$ sudo cp /opt/twonkymedia/twonkymedia.sh /etc/init.d/twonkymedia
$ sudo chmod +x /etc/init.d/twonkymedia
$ sudo cp /opt/twonkymedia/twonkymedia-server-default.ini /etc/opt/twonkymedia.ini</code></pre>
<p>Als nächstes stehen Anpassungen an diesen beiden Dateien an. In der Start/Stop-Datei werden zunächst einige Pfade gesetzt. Ohne diese Anpassungen tendiert TwonkyServer dazu, sich im gesamten System zu verteilen. </p>
<p>Ich bin vim-Freund, natürlich kann auch jeder andere Editor zum Einsatz kommen.</p>
<pre><code>$ sudo vim /etc/init.d/twonkymedia</code></pre>
<p>Ab Zeile 28 wird der Setup-Bereich modifiziert:</p>
<pre><code>#==================================================================[ Setup ]===

WORKDIR1="/opt/twonkymedia"
WORKDIR2="`dirname $0`"
PIDFILE=/var/run/mediaserver.pid
LOGFILE=/var/log/twonkymedia.log
INIFILE=/etc/opt/twonkymedia.ini
APPDATA=/var/opt/twonkymedia/config

#=================================================================[ Script ]===
</code></pre>
<p>Gerne hätte ich auch den Namen des <abbr title="Process ID">PID</abbr>-Files geändert, aber dies wird vom Server nicht unterstützt. Ab Zeile 94 überredet man den Server-Prozeß zur Verwendung der neuen Werte. Außerdem wird duch das Entfernen des -D Parameters der Dienst nicht mehr im Dämon-Modus gestartet:</p>
<pre><code>"$TWONKYSRV" -inifile "$INIFILE" -logfile "$LOGFILE" -appdata "$APPDATA"</code></pre>
<p>Jetzt geht es in die Konfigurationsdatei. Hier sind ebenfalls einige Pfade zu setzen, damit der Server innerhalb der angedachten Grenzen des Filesystems bleibt.</p>
<pre><code>$ sudo vim /etc/opt/twonkymedia.ini</code></pre>
<p>Meine Medien liegen unter /var/share in Unterverzeichnissen. Entsprechend des eigenen Setups ist mindestens der Parameter &#8220;contentbase&#8221; anders zu belegen. </p>
<p>Wichtig: Es ist eine ausgiebige Liste an &#8220;black listed&#8221; (ignorierten) Verzeichnissen in TwonkyServer eingebaut in denen nicht gesucht wird, auch wenn sie durch contentbase und contentdir eigentlich erfasst werden! Die Liste findet sich im Twonky <a href="http://www.twonkyforum.com/viewtopic.php?f=16&#038;t=6919&#038;p=25739&#038;hilit=blacklist#p25739">Forum</a>.</p>
<p>Der vorhandene, überschaubare Bestand an Optionen wird auf den folgenden Stand ausgebaut bzw. geändert:</p>
<pre><code>contentbase=/var/share
contentdir=+A|/audio,+P|/image,+P|/video
followlinks=0
radio=0
readdbondemand=0
ignoredir=AppleDouble,AppleDB,AppleDesktop,TemporaryItems
suppressmenu=divAutoShare
cachedir=/var/cache/twonkymedia
dbdir=/var/opt/twonkymedia/db
servermanagedmusicdir=/var/opt/twonkymedia/managed/music
servermanagedpicturedir=/var/opt/twonkymedia/managed/pictures
servermanagedvideodir=/var/opt/twonkymedia/managed/videos
onlinedir=/var/cache/twonkymedia/online-data
mediastatisticsdir=/var/opt/twonkymedia/statistics
rmhomedrive=/var/opt/twonkymedia/db
bgtrans=JPEG=1,MP3=0,MPEG2=1,WMV=0,MPEG4=0,Flash=0
language=de</code></pre>
<p>Bevor der Server jetzt gestartet wird, sind noch einige Pakete zu installieren, damit das Transcoding (die Wandlung von Video- und Audioströmen in ein Format) funktioniert. Den entsprechenden Hinweis habe ich <a href="http://www.dickson.me.uk/2010/11/02/installing-twonkyserver-on-ubuntu-lucid-lunx-10-04-1/">diesem</a> Post entnommen.</p>
<pre><code>$ sudo apt-get install libavcodec-unstripped-52 libavdevice-unstripped-52
 libavformat-unstripped-52 libavutil-unstripped-49 libpostproc-unstripped-51
 libswscale-unstripped-0 ffmpeg</code></pre>
<p>Nun ist der Pfad zu ffmpeg in der entsprechenden Datei einzutragen,</p>
<pre><code>$ sudo vim /opt/twonkymedia/cgi-bin/ffmpeg.location</code></pre>
<p>so daß sie nun folgenden Inhalt hat:</p>
<pre><code>/usr/bin</code></pre>
<p>Gleiches wird nun für das Matroska Container-Format eingestellt:</p>
<pre><code>$ sudo touch /opt/twonkymedia/cgi-bin/ffmpeg-mkv-mpeg.desc
$ sudo chmod 644 /opt/twonkymedia/cgi-bin/ffmpeg-mkv-mpeg.desc
$ sudo vim /opt/twonkymedia/cgi-bin/ffmpeg-mkv-mpeg.desc</code></pre>
<p>Die neue Datei erhält folgenden Inhalt:</p>
<pre><code>exec: ffmpeg -threads 2 -i $infile -vcodec mpeg2video -sameq -acodec copy -f vob -copyts -y $outfile
# capabilities
from=video/x-matroska
to=video/mpeg
synchronous
priority=idle</code></pre>
<p>Mit Version 6.0.34 hat eine neue Datei Einzug gehalten, welche zur Anlage von Vorschaubildern (<q>thumbnails</q>) für Videos verwendet wird. Leider gibt es hier einen Fehler beim Aufruf von ffmpeg (zumindest unter Ubuntu 10.04 LTS), so daß statt Vorschaubildern nur Fehler durchs Log rasseln. Man ändere in der Datei /opt/twonkymedia/cgi-bin/ffmpeg-video-thumb.desc die Zeile 3 von</p>
<pre><code>exec: ffmpeg  -itsoffset -$videothumbtime  -i $infile &hellip;
</code></pre>
<p>zu</p>
<pre><code>exec: ffmpeg  -itsoffset $videothumbtime  -i $infile &hellip;
</code></pre>
<p>Sprich &ndash; das führende Minus vor $videothumbtime muß entfernt werden.</p>
<p>So, das war&#8217;s &ndash; die restlichen Parameter lassen sich einfacher über das Webinterface einstellen. Zeit den Server zu starten &hellip;</p>
<pre><code>$ sudo /etc/init.d/twonkymedia start</code></pre>
<p>Wenn der Start erfolgreich war, steht der Server jetzt auf Port 9000 zur Verfügung. Als letzten Schritt kann der TwonkyServer noch automatisch beim Hochfahren der Maschine gestartet werden:</p>
<pre><code>$ sudo update-rc.d twonkymedia defaults</code></pre>
<p>Falls es wider Erwarten Probleme beim Start gibt, liefert das Logfile unter /var/log/twonkymedia.log vielleicht eintscheidende Hinweise.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dahlen.org/2011/05/twonkyserver-unter-ubuntu-10-04-verwenden/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Dahlenmühle in den Medien: &#8220;Land und Lecker&#8221; (WDR Fernsehen)</title>
		<link>http://www.dahlen.org/2010/09/dahlenmuehle-bei-land-und-lecker/</link>
		<comments>http://www.dahlen.org/2010/09/dahlenmuehle-bei-land-und-lecker/#comments</comments>
		<pubDate>Sat, 18 Sep 2010 10:22:31 +0000</pubDate>
		<dc:creator>Christoph</dc:creator>
				<category><![CDATA[Medien]]></category>
		<category><![CDATA[Sevelen]]></category>
		<category><![CDATA[Garten]]></category>

		<guid isPermaLink="false">http://www.dahlen.org/?p=509</guid>
		<description><![CDATA[Am 15.09.2010 wurde ab 21:00h eine neue Folge aus der Serie Land und lecker des WDR Fernsehens ausgestrahlt. Inhalt der Serie sind die Geschichten und Kochkünste von sechs Landfrauen, die sich &#8211; gefahren im Oldtimerbus &#8211; abwechselnd besuchen und ein festliches 3-Gänge-Menü zubereiten. In einer kurzen Sequenz ist ab 00:15min die Dahlenmühle zu sehen, vor [...]]]></description>
			<content:encoded><![CDATA[<p>Am 15.09.2010 wurde ab 21:00h eine neue Folge aus der Serie <q>Land und lecker</q> des WDR Fernsehens ausgestrahlt. Inhalt der Serie sind die Geschichten und Kochkünste von sechs Landfrauen, die sich &ndash; gefahren im Oldtimerbus &ndash; abwechselnd besuchen und ein <q>festliches 3-Gänge-Menü</q> zubereiten.</p>
<p>In einer kurzen Sequenz ist ab 00:15min die Dahlenmühle zu sehen, vor welcher der historische Reisebus das Gelände verlässt. Nur für Familienmitglieder zu erkennen, zieht im Hintergrund Fabian Dahlen auf dem Fahrrad seine Kreise.</p>
<p>Die Themenseite zur Serie ist unter <a href="http://www.landundlecker.wdr.de/">http://www.landundlecker.wdr.de/</a> zu erreichen, ein Mitschnitt der Sendung wird als <a href="http://www.wdr.de/tv/landundlecker/sendungsbeitraege/2010/0915/index.jsp">Flash-Film</a> bereitgestellt.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dahlen.org/2010/09/dahlenmuehle-bei-land-und-lecker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Übernachten an der Dahlenmühle</title>
		<link>http://www.dahlen.org/2010/07/ubernachten-an-der-dahlenmuhle/</link>
		<comments>http://www.dahlen.org/2010/07/ubernachten-an-der-dahlenmuhle/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 20:57:33 +0000</pubDate>
		<dc:creator>Christoph</dc:creator>
				<category><![CDATA[Orte]]></category>
		<category><![CDATA[Sevelen]]></category>
		<category><![CDATA[Garten]]></category>
		<category><![CDATA[Gästezimmer]]></category>
		<category><![CDATA[Mühle]]></category>

		<guid isPermaLink="false">http://www.dahlen.org/?p=333</guid>
		<description><![CDATA[Ab sofort können wir Radwanderern, Messebesuchern und anderen Interessierten ein Zimmer direkt an der Mühle zur Ver&#173;fügung stellen! Unser neu gestaltetes Gästezimmer in Sevelen (Gemeinde Issum, Kreis Kleve) kann als Einzelzimmer oder Doppel&#173;zimmer genutzt werden. Es bietet absolute Ruhe, den einmaligen Charme der Dahlenmühle und des umgebenden Gartens. Weitere Details, Bilder und Preise finden Sie [...]]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://www.dahlen.org/wordpress/wp-content/gallery/gaestezimmer/DSC00513t.JPG" title="Der Schlafbereich mit zwei Einzelbetten" class="thickbox noslimstat" rel="singlepic173" >
	<img class="ngg-singlepic ngg-left" src="http://www.dahlen.org/wordpress/wp-content/gallery/cache/173__150x100_DSC00513t.JPG" alt="Schlafbereich" title="Schlafbereich" />
</a>
Ab sofort können wir Radwanderern, Messebesuchern und anderen Interessierten ein Zimmer direkt an der Mühle zur Ver&shy;fügung stellen! Unser neu gestaltetes Gästezimmer in Sevelen (Gemeinde Issum, Kreis Kleve) kann als Einzelzimmer oder Doppel&shy;zimmer genutzt werden. Es bietet absolute Ruhe, den einmaligen Charme der Dahlenmühle und des umgebenden Gartens.</p>
<p>Weitere Details, Bilder und Preise finden Sie unter <a href="http://www.dahlen.org/gaestezimmer/">http://www.dahlen.org/gaestezimmer/</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dahlen.org/2010/07/ubernachten-an-der-dahlenmuhle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kai Alexander Thilo Breßer</title>
		<link>http://www.dahlen.org/2009/11/kai-bresser/</link>
		<comments>http://www.dahlen.org/2009/11/kai-bresser/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 13:32:48 +0000</pubDate>
		<dc:creator>Christoph</dc:creator>
				<category><![CDATA[Familie]]></category>
		<category><![CDATA[Kinder]]></category>
		<category><![CDATA[Geburt]]></category>
		<category><![CDATA[Kai]]></category>

		<guid isPermaLink="false">http://www.dahlen.org/?p=258</guid>
		<description><![CDATA[Am Ende musste es doch schnell gehen: Per Not-Kaiserschnitt kam am 04.11.2009, um 14:32h, Kai Alexander Thilo, der erste Sohn und damit das dritte Kind von Corinna Breßer, geb. Dahlen und Peter Breßer auf die Welt! Wie auch bei bei seinen Schwestern Pia und Ina fand die Entbindung im Krankenhaus Krefeld-Uerdingen statt. Trotz seines leichten [...]]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://www.dahlen.org/wordpress/wp-content/gallery/familie/kai.png" title="Kai, nach seiner Geburt im Krankenhaus Krefeld-Uerdingen" class="thickbox noslimstat" rel="singlepic147" >
	<img class="ngg-singlepic ngg-left" src="http://www.dahlen.org/wordpress/wp-content/gallery/cache/147__150x100_kai.png" alt="Kai Breßer" title="Kai Breßer" />
</a>
Am Ende musste es doch schnell gehen: Per Not-Kaiserschnitt kam am 04.11.2009, um 14:32h, Kai Alexander Thilo, der erste Sohn und damit das dritte Kind von Corinna Breßer, geb. Dahlen und Peter Breßer auf die Welt!</p>
<p>Wie auch bei bei seinen Schwestern <a title="Pia Catherina Breßer" href="/?p=20">Pia</a> und <a title="Ina Johanna Breßer" href="/?p=22">Ina</a> fand die Entbindung im Krankenhaus Krefeld-Uerdingen statt. Trotz seines leichten Frühstarts geht es Kai und seiner Mutter gut, die &#8222;Eckdaten&#8221; sind: 52cm Körpergröße, knapp 3.000 Gramm Gewicht.</p>
<p>Wir alle wünschen Kai, seinen Schwestern und seinen Eltern alles Gute!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dahlen.org/2009/11/kai-bresser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Abhängigkeiten vermeiden mit der Java Service Provider Spezifikation</title>
		<link>http://www.dahlen.org/2009/08/abhangigkeiten-vermeiden-mit-der-java-service-provider-spezifikation/</link>
		<comments>http://www.dahlen.org/2009/08/abhangigkeiten-vermeiden-mit-der-java-service-provider-spezifikation/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 11:52:03 +0000</pubDate>
		<dc:creator>Christoph</dc:creator>
				<category><![CDATA[Informatik]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.dahlen.org/?p=197</guid>
		<description><![CDATA[Durch ein aktuelles Projekt der Cassini Consulting konnte ich mich endlich Mal tiefer mit einem grundsätzlichen Problem beschäftigen: der losen Kopplung eines Service Provider Interfaces (SPI) oder grundsätzlich eines API und seiner Implementierungen in Form von Plugins. Das Erstaunliche daran (überlagert von Themen wie Dependency Injection und Spring): Es gibt bereits seit dem JDK 1.3 [...]]]></description>
			<content:encoded><![CDATA[<p>Durch ein aktuelles Projekt der <a href="http://www.cassini.de/">Cassini Consulting</a> konnte ich mich endlich Mal tiefer mit einem grundsätzlichen Problem beschäftigen: der losen Kopplung eines Service Provider Interfaces (SPI) oder grundsätzlich eines <abbr title="Application Programmers Interface">API</abbr> und seiner Implementierungen in Form von <q>Plugins</q>. Das Erstaunliche daran (überlagert von Themen wie <a href="http://de.wikipedia.org/wiki/Dependency_Injection">Dependency Injection</a> und <a href="http://www.springsource.com/">Spring</a>): Es gibt bereits seit dem <abbr title="Java Development Kit">JDK</abbr> 1.3 eine sehr einfache Lösung für dieses Problem und sie funktioniert auch <q>ab Werk</q>: Die <em>Java Service Provider Spezifikation</em>.<br />
<span id="more-197"></span><br />
Die Problemstellung lässt sich am besten in Form eines Beispiels erläutern. Die Projektleitung kommt auf die irsinnige Idee, ein <q>Quoter</q>-Interface als Teil einer API zu definieren, über welches Texte in Anführungszeichen gefasst werden können. Etwa so:</p>
<pre><code>package demo.api;

public interface IQuoter {
        String quote(String s);
}
</code></pre>
<p>Dazu steuern die Entwickler eine Implementierung für den deutschen Sprachraum bei, welcher tief- und hochgestellte Anführungszeichen verwendet (über Unicode):</p>
<pre><code>package demo.impl;

public class GermanQuoter implements IQuoter {
        public String quote(String s) {
                return '\u201E' + s + '\u201D';
        }
}
</code></pre>
<p>Die Frage ist nun, wie kann man diese Implementierung verwenden,</p>
<ul>
<li>ohne sie direkt in der Applikation zu importieren und</li>
<li>ohne sie direkt in der API zu referenzieren?</li>
</ul>
<p>Die Lösung ist interessanterweise bereits seit dem JDK 1.3 Teil der Java Standard Edition (SE), auch wenn sie zwischen den Versionen einige Male den Platz gewechselt hat. Mit Java&#160;6 scheint sie nun aber ihren endgültigen Platz gefunden zu haben als  java.util.ServiceLoader.</p>
<p>Dafür muß die Implementierung als eigenes <abbr title="Java ARchive">JAR</abbr> ausgeliefert werden, denn folgende Punkte sind Voraussetzung für die Nutzung des ServiceLoader:</p>
<ol>
<li>im JAR muß ein Verzeichnis <em>META-INF/services</em> vorhanden sein</li>
<li>in diesem Verzeichnis muß für jede API Klasse (Interface oder abstrakte Klasse) eine Datei gleichen Namens liegen</li>
<li>in jeder dieser Dateien muß der vollqualifizierte Namen der Implementations-Klasse vermerkt sein</li>
</ol>
<p>Für unser Beispiel bedeutet das also, daß der Inhalt des Implementierungs-JAR wie folgt aussieht:<br />
<code>demo.impl.GermanQuoter<br />
META-INF/services/demo.api.IQuoter</code></p>
<p>Und die einzige Zeile in der Datei demo.api.IQuoter liest sich wie folgt:<br />
<code>demo.impl.GermanQuoter</code></p>
<p>Wie kommt nun unsere Applikation, welche die API und das Implementierungs-JAR im Klassenpfad hat an die Implementierung? Nun, über Aufruf der entsprechenden <q>Service Locator</q>, welche sich je nach JDK an verschiedenen Stellen finden:</p>
<ul>
<li>im JDK 1.3 als <a href="http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html#Service%20Provider">sun.misc.Service</a></li>
<li>im JDK 1.4 &ndash; 1.5 als <a href="http://java.sun.com/j2se/1.4.2/docs/api/javax/imageio/spi/ServiceRegistry.html#getServiceProviderByClass%28java.lang.Class%29">javax.imageio.spi.ServiceRegistry</a>(!)</li>
<li>seit dem JDK 1.6 endlich an richtiger Stelle als <a href="http://java.sun.com/javase/6/docs/api/java/util/ServiceLoader.html#load%28java.lang.Class%29">java.util.ServiceLoader</a></li>
</ul>
<p>Also schreiben wir uns für das JDK 1.6 eine kleine, generische Utility-Klasse, welche eine oder alle Implementierungen für eine API-Artefakt liefern kann:</p>
<pre><code>package demo.util;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ServiceLoader;

public final class GenericServiceLocator {

    private GenericServiceLocator() {
    }

    public static &lt;T> T locate(final Class&lt;T> clazz) {
        final List services = locateAll(clazz);
        return services.isEmpty() ? (T) null : services.get(0);
    }

    public static &lt;T> List&lt;T> locateAll(final Class&lt;T> clazz) {

        final Iterator&lt;T> iterator = ServiceLoader.load(clazz).iterator();
        final List&lt;T> services = new ArrayList&lt;T>();

        while(iterator.hasNext()) {
            try {
                services.add(iterator.next());
            } catch (Error e) {
                e.printStackTrace(System.err);
            }
        }

        return services;

    }
}
</code></pre>
<p>Und so sieht dann der Aufruf aus unserer Beispiel-Applikation aus:</p>
<pre><code>package demo;

import demo.api.IQuoter;
import demo.util.GenericServiceLocator;

public class App {
    public static void main( String[] args ) {
        System.out.println(
                GenericServiceLocator
                    .locate(IQuoter.class)
                    .quote("Quote Me")
        );
    }
}
</code></pre>
<p>Das ist alles. Befinden sich API, Implementierung und Applikation im Klassenpfad, kann der Test über den Aufruf von<br />
<code>java -cp demo-api.jar;demo-impl.jar;demo-app.jar demo.App</code><br />
erfolgen. Das Ergebnis sollte auf Unicode-Terminals ein <tt>&#8222;Quote Me&#8221;</tt> sein. Auf der Windows&nbsp;XP Console ist es übrigens <tt>äQuote Meö</tt> &hellip;</p>
<p>Zum Ausprobieren ist das <a href='http://www.dahlen.org/wordpress/wp-content/uploads/2009/08/spi-demo.zip'>Beispiel-Projekt</a> als <a href="http://maven.apache.org/">Maven2</a> Multi-Module beigefügt, die Verwendung in eigenen Projekten ist &ndash; selbstverständlich &ndash; gestattet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dahlen.org/2009/08/abhangigkeiten-vermeiden-mit-der-java-service-provider-spezifikation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Qualitätsmetriken des OOD</title>
		<link>http://www.dahlen.org/2009/07/qualitaetsmetriken-des-ood/</link>
		<comments>http://www.dahlen.org/2009/07/qualitaetsmetriken-des-ood/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 09:53:03 +0000</pubDate>
		<dc:creator>Christoph</dc:creator>
				<category><![CDATA[Informatik]]></category>
		<category><![CDATA[Metriken]]></category>
		<category><![CDATA[OOD]]></category>
		<category><![CDATA[Qualität]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.dahlen.org/?p=119</guid>
		<description><![CDATA[Aktuell unterstütze ich für meinen Arbeitgeber, die Cassini Consulting einen IT-Dienstleister bei der Realisierung einer kundenspezifischen Software-Plattform, gebildet aus Mitteln der JEE (Spring, JMS, JPA). Im Zuge dieses Projektes werden auch Analyse-Werkzeugen eingesetzt, welche Aspekte des objekt-orientierten Designs erfassen und (graphisch) aufbereiten. Getreu dem Motto „a fool with a tool is still a fool” ist [...]]]></description>
			<content:encoded><![CDATA[<p>Aktuell unterstütze ich für meinen Arbeitgeber, die <a href="http://www.cassini.de/">Cassini Consulting</a> einen IT-Dienstleister bei der Realisierung einer kundenspezifischen Software-Plattform, gebildet aus Mitteln der JEE (Spring, <acronym title="Java Messaging Service">JMS</acronym>, <acronym title="Java Persistence API">JPA</acronym>). Im Zuge dieses Projektes werden auch Analyse-Werkzeugen eingesetzt, welche Aspekte des objekt-orientierten Designs erfassen und (graphisch) aufbereiten. Getreu dem Motto „a fool with a tool is still a fool” ist für mich vor allem der theoretische Hintergrund von Bedeutung.<br />
<span id="more-119"></span></p>
<h3>Metriken</h3>
<p>Viele der eingesetzen Werkzeuge (wie <a href="http://www.clarkware.com/software/JDepend.html">JDepend</a>, <a href="http://cap.xore.de/">CAP</a>, <a href="http://www.hello2morrow.com/products/sonarj">SonarJ</a>) verwenden Metriken, die bereits 1994 von Robert Martin als <cite>OO Design Quality Metrics</cite><a href="#fn1">[1]</a> definiert wurden. Die maßgeblichen Kennzahlen dabei sind:</p>
<ul>
<li>die Abstraktheit (abstractness, A) einer Kategorie</li>
<li>die Instabilität (instability, I) einer Kategorie</li>
<li>die Distanz (distance, D) einer Kategorie zur Ideallinie, der sog. main sequence</li>
</ul>
<p>Der Begriff „Kategorie” beschreibt in diesem Kontext eine logische Gruppierung innerhalb der Architektur, hierbei könnte es sich <span class="nbthinsp">z<span>.</span>B.</span> um eine Java Library, ein Java Package oder ein <a href="http://maven.apache.org/">Maven</a> Modul handeln.</p>
<h4>Abstraktheit</h4>
<p>Die Abstraktheit wird nun aus dem Verhältnis von „abstrakten” (N<sub>a</sub>) zur Summe aller Klassen gebildet (abstrakte und „konkrete”, N<sub>c</sub>). Im Java-Kontext schließt die Qualifizierung als „abstrakt” dabei auch Interfaces mit ein. Es gilt:</p>
<p>A = N<sub>a</sub> : (N<sub>a</sub> + N<sub>c</sub>)</p>
<p>Der Wertbereich ist [0,1], kann also als Prozentzahl wiedergegeben werden. 0% bedeutet, das die Kategorie ausschließlich aus konkreten Klassen besteht, 100% bedeutet, daß die Kategorie ausschließlich aus abstrakten Klassen oder Interfaces besteht.</p>
<h4>Instabilität</h4>
<p>Zur Bestimmung der Instabilität verwendet R. Martin die Abhängigkeiten einer Kategorie von anderen Kategorien. Dabei unterscheidet er zwischen eingehenden Abhängigkeiten (afferent couplings, C<sub>a</sub>) und ausgehenden Abhängigkeiten (efferent couplings, C<sub>e</sub>).</p>
<p>Afferent couplings sind also Abhängigkeiten, welche andere Kategorien in die betrachtete Kategorien haben, efferent couplings sind Abhängigkeiten, welche die betrachtete Kategorie in andere Kategorien hat.</p>
<p>Wieder wird das Verhältnis gebildet, es gilt:</p>
<p>I = C<sub>e</sub> : (C<sub>e</sub> + C<sub>a</sub>)</p>
<p>Auch hier kann der Wertebereich [0,1] in Prozent ausgedrückt werden. Je mehr ausgehende Abhängigkeiten eine Kategorie hat, desto höher ist der Grad an Instabilität. I ist also 0 für Kategorien, die keinerlei ausgehende Abhängigkeiten haben und 1 für Kategorien, die ausschließlich ausgehende Abhängigkeiten haben.<br />
<!--netxpage--></p>
<h4>Main Sequence</h4>
<p>Die für eine Kategorie ermittelte Abstraktheit A und Instabilität I lassen sich hervorragend als Achsen eines Graphen verwenden. Jede Kategorie kann dann als Koordinate in das System eingetragen werden. Doch welche Aussage lässt sich aus ihrer Plazierung machen?</p>
<dl>
<dt>A=1, I=0 </dt>
<dd>eine Kategorie, die zu 100% abstrakt ist und keinerlei ausgehende Abhängigkeiten hat, ist eine API. Interfaces und abstrakte Klassen definieren dabei die notwendigen Operationen, welche durch eine konkrete Implementierung zu realisieren sind </dd>
<dt>A=0, I=1 </dt>
<dd>eine Kategorie, die zu 0% abstrakt ist und ausschließlich abgehende Abhängigkeiten hat, ist eine Implementierung. Am Ende der Vererbungskette realisiert sie <span class="nbthinsp">z<span>.</span>B.</span> eine API </dd>
<dt>A=1, I=1 </dt>
<dd>eine Kategorie, die zu einem hochgradig abstrakt ist und andererseits ausschließlich abgehende Abhängigkeiten hat, stellt keinen erstrebenswerten Zustand dar. Als API ist sie zu instabil, als Implementierung müssten konkrete Klassen vorhanden sein </dd>
<dt>A=0, I=0 </dt>
<dd>Kategorien, welche stabil und konkret sind, haben ihre Berechtigung als geschlossenes, kleines System. Ein klassisches Beispiel dafür ist das typische HelloWorld.java, lässt man die Abhängigkeiten zu den JRE/JEE Bibliotheken außen vor. In größeren Architekturen wird dieser Punkt vermutlich nie erreicht werden. </dd>
</dl>
<div id="attachment_181" class="wp-caption aligncenter" style="width: 160px"><a href="http://www.dahlen.org/wordpress/wp-content/uploads/2009/07/ood-metriken-graph.gif"><img class="ngg-singlepic ngg-left " title="OOD Matriken als Graph" src="http://www.dahlen.org/wordpress/wp-content/uploads/2009/07/ood-metriken-graph-150x150.gif" alt="Metriken nach R. Martin" width="150" height="150" /></a><p class="wp-caption-text">Metriken nach R. Martin</p></div>
<p>In der Theorie von R. Martin bildet die Strecke zwischen den Extremen von A und I nun die sog. Main Sequence (A + I = 1). Sie beschreibt das Verhältnis zwischen Abstraktheit und Instabilität, welches als ausgewogen (balanced) gilt.</p>
<h4>Distanz</h4>
<p>Die oben beschriebenen Kennzahlen dienen bisher nur der Einordnung einer Kategorie in den Graphen. Zur Bestimmung der „Güte” einer Kategorie empfiehlt R. Martin nun die Berechnung der Distanz (distance) einer Kategorie von der main sequence. Es gilt:</p>
<p>D = |(A + I &ndash; 1) : 2|</p>
<p>oder einfacher (um einen Wert zwischen 0 und 1 zu erhalten):</p>
<p>D = |A + I &ndash; 1|</p>
<p>Ziel des objekt-orientierten Design sollte es nun sein, die Distanz nahe an 0 zu bringen, etwa indem man ausgehende Abhängigkeiten eliminiert und damit die Stabilität erhöht, oder Kategorien in APIs mit hoher Abstraktheit und Implementierungs-Bereiche unterteilt.</p>
<h3>Fazit</h3>
<p>Die oben aufgeführten Metriken können eine Hilfe beim objekt-orientieren Design bzw. der objekt-orientierten Analyse sein. Man sollte sich ihnen aber nicht blind unterwerfen, denn wie immer gilt: Das Ideal im Blick, das Projektziel unter den Fingern.</p>
<p><sup>1</sup> <a name="fn1" href="http://www.objectmentor.com/resources/articles/oodmetrc.pdf">Robert Martin: OO Design Quality Metrics &ndash; An Analysis of Dependencies, 1994</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dahlen.org/2009/07/qualitaetsmetriken-des-ood/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

