<?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>nullpointer.at</title>
	<atom:link href="http://www.nullpointer.at/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nullpointer.at</link>
	<description>Entwicklung, Fotografie und mehr</description>
	<lastBuildDate>Sun, 20 May 2012 18:28:25 +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>Fotowoche 20: yes</title>
		<link>http://www.nullpointer.at/2012/05/20/fotowoche-20-yes/</link>
		<comments>http://www.nullpointer.at/2012/05/20/fotowoche-20-yes/#comments</comments>
		<pubDate>Sun, 20 May 2012 18:28:25 +0000</pubDate>
		<dc:creator>Thomas Pummer</dc:creator>
				<category><![CDATA[Fotographie]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Foto]]></category>
		<category><![CDATA[Fotowoche]]></category>
		<category><![CDATA[marry]]></category>
		<category><![CDATA[Yes]]></category>

		<guid isPermaLink="false">http://www.nullpointer.at/?p=2074</guid>
		<description><![CDATA[yes - noch ein Foto das alles sagt!]]></description>
			<content:encoded><![CDATA[<p><a title="yes auf Flickr" href="http://www.flickr.com/photos/nullpointerat/7235309642/in/set-72157628882311549/" target="_blank">Kalenderwoche 20 - yes</a></p>
<p><a title="KW20: yes von lordfake bei Flickr" href="http://www.flickr.com/photos/nullpointerat/7235309642/in/set-72157628882311549/"><img src="http://farm6.staticflickr.com/5111/7235309642_89e2e13e04.jpg" alt="KW20: yes" width="500" height="333" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nullpointer.at/2012/05/20/fotowoche-20-yes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fotowoche KW19: will you?</title>
		<link>http://www.nullpointer.at/2012/05/19/fotowoche-kw19-will-you/</link>
		<comments>http://www.nullpointer.at/2012/05/19/fotowoche-kw19-will-you/#comments</comments>
		<pubDate>Sat, 19 May 2012 06:27:27 +0000</pubDate>
		<dc:creator>Thomas Pummer</dc:creator>
				<category><![CDATA[Fotographie]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Foto]]></category>
		<category><![CDATA[Fotowoche]]></category>
		<category><![CDATA[marry]]></category>
		<category><![CDATA[will you marry me]]></category>

		<guid isPermaLink="false">http://www.nullpointer.at/?p=2068</guid>
		<description><![CDATA[will you? - Ein Foto dass alles sagt.]]></description>
			<content:encoded><![CDATA[<p><a title="will you auf Flickr" href="http://www.flickr.com/photos/nullpointerat/7225476900/in/set-72157628882311549/">Kalenderwoche 19 - will you</a></p>
<p><a title="KW19: Will you? von lordfake bei Flickr" href="http://www.flickr.com/photos/nullpointerat/7225476900/in/set-72157628882311549//"><img src="http://farm6.staticflickr.com/5346/7225476900_aa4720c953.jpg" alt="KW19: Will you?" width="500" height="333" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nullpointer.at/2012/05/19/fotowoche-kw19-will-you/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fotowoche KW18: flyby</title>
		<link>http://www.nullpointer.at/2012/05/09/fotowoche-kw18-flyby/</link>
		<comments>http://www.nullpointer.at/2012/05/09/fotowoche-kw18-flyby/#comments</comments>
		<pubDate>Wed, 09 May 2012 19:05:25 +0000</pubDate>
		<dc:creator>Thomas Pummer</dc:creator>
				<category><![CDATA[Fotographie]]></category>
		<category><![CDATA[airplane]]></category>
		<category><![CDATA[contrails]]></category>
		<category><![CDATA[Flugzeug]]></category>
		<category><![CDATA[flyby]]></category>
		<category><![CDATA[Kondensstreifen]]></category>
		<category><![CDATA[Mond]]></category>
		<category><![CDATA[moon]]></category>

		<guid isPermaLink="false">http://www.nullpointer.at/?p=2063</guid>
		<description><![CDATA[Bei diesem wunderbaren Motiv musste ich zum Fotoapparat greifen! Das Flugzeug hat den Mond fast erwischt! Ich hab auch gar nicht nachgeholfen, ehrlich! Kalenderwoche 18 - flyby Wirklich!]]></description>
			<content:encoded><![CDATA[<p>Bei diesem wunderbaren Motiv musste ich zum Fotoapparat greifen! Das Flugzeug hat den Mond fast erwischt! Ich hab auch gar nicht nachgeholfen, ehrlich!</p>
<p><a title="flyby auf Flickr" href="http://www.flickr.com/photos/nullpointerat/7166325182/in/set-72157628882311549/" target="_blank">Kalenderwoche 18 - flyby</a></p>
<p><a title="KW18: Flyby von lordfake bei Flickr" href="http://www.flickr.com/photos/nullpointerat/7166325182/in/set-72157628882311549/"><img src="http://farm8.staticflickr.com/7101/7166325182_ed5f5b607c.jpg" alt="KW18: Flyby" width="500" height="333" /></a></p>
<p>Wirklich!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nullpointer.at/2012/05/09/fotowoche-kw18-flyby/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fotowoche KW17: veins of a tree (inkl. Gedanken zur Fotoverwaltung)</title>
		<link>http://www.nullpointer.at/2012/05/02/fotowoche-kw17-veins-of-a-tree-inkl-gedanken-zur-fotoverwaltung/</link>
		<comments>http://www.nullpointer.at/2012/05/02/fotowoche-kw17-veins-of-a-tree-inkl-gedanken-zur-fotoverwaltung/#comments</comments>
		<pubDate>Wed, 02 May 2012 20:15:31 +0000</pubDate>
		<dc:creator>Thomas Pummer</dc:creator>
				<category><![CDATA[Fotographie]]></category>
		<category><![CDATA[Baum]]></category>
		<category><![CDATA[Bildverwaltung]]></category>
		<category><![CDATA[bva-system]]></category>
		<category><![CDATA[BVASystem]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Foto]]></category>
		<category><![CDATA[Fotowoche]]></category>
		<category><![CDATA[rinde]]></category>
		<category><![CDATA[tree]]></category>
		<category><![CDATA[veins]]></category>

		<guid isPermaLink="false">http://www.nullpointer.at/?p=2051</guid>
		<description><![CDATA[veins of a tree - Ein neues Foto inkl. ein paar Überlegungen zur eigenen Bildverwaltung und einem Geheimtipp zur Bildverwaltung: dem BVA-System.]]></description>
			<content:encoded><![CDATA[<p>Habt ihr euch schon Gedanken gemacht wie ihr eure Fotos ordnet? Ich lege sie prinzipiell in einer datumsbasierten Ordnerstruktur ab. Für jedes Jahr gibt es einen Ordner und darin liegen dann die einzelnen Events zu denen ich Fotos gemacht habe in eigenen Verzeichnissen. Auch diese sind mit einem Zeitstempel versehen, so liegt das Foto des heutigen Tages unter "<em>2012/2012-04-29 Waldspaziergang</em>". Man könnte nun auch noch jedes einzelne Foto beschlagworten, aber um ehrlich zu sein knipse ich lieber als dass ich meine Bilder verwalte, weshalb ich mir im Moment Gedanken mache über ein Bildverwaltungsprogramm.</p>
<p>Ein Freund von mir ist dabei fleißig selbst eines zu entwickeln (<a title="BVA-System, die Bildverwaltungs und Archivierungssoftware" href="http://www.bva-system.de" target="_blank">BVA-System</a>), und es sieht auch sehr vielversprechend aus. Die Software legt Bild und Bildinformationen in eine Datenbank ab und ist damit netzwerkfähig. Eine Zentrale Datenbank, mehrere Clients zur Bildbetrachtung. Weiters ermöglicht es über verschiedenste (unter anderem automatisch ausgelesenen) Metatags eine Ordnung in seine Bildsammlung zu bringen. Das Programm erweist sich dabei als relativ schlank und schnell. Zwar befindet es sich noch in Entwicklung, es hat aber schon eine Phase erreicht in der die Datenbank als stabil angesehen werden kann. Das Programm bietet neben Diashow Funktionalität verschiedene Betrachtungsmöglichkeiten inklusive EXIF Daten und taugt somit bereits zur Verwaltung des Eigenbestandes an Fotos.</p>
<p>Ein paar kleine Funktionen noch und ich könnte es mir vorstellen, es bei mir produktiv einzusetzen. Was ich mir in der Software noch wünschen würde, wäre eine Ablage der Fotodateien nicht nur in der Datenbank, sondern auch in einer Verzeichnisstruktur, damit sie auch auf Rechnern ohne installiertem Programm auslesbar sind. Auch der Anwendungsfall des Betrachtens über den Fernseher wäre damit abdeckbar. Eine Backup-Funktion inkl. Verwaltung des Syncstatus oder eine Exportfunktion wäre ebenfalls interessant, ist aber auch über Drittmittel umsetzbar, da die Bilder in der Datenbank unverfälscht aufliegen. Auch das klassische Bewertungssystem über die Sterne will noch entwickelt werden. Aber Marc ist derzeit fleißig am Metadaten auslesen und generieren, also vielleicht ist zumindest dieser Wunsch bald erfüllt. Ein Manko das meine Fotosammlung betreffen würde: Es kann nur mit JPEG Dateien umgegangen werden. Das RAW Format bleibt vorerst nicht supportet, geschuldet ist dies der Programmiersprache Delphi, die in seiner Grundausführung keine RAW Unterstützung bietet. Dies könnte jedoch dank externer Bibliotheken ebenfalls nur ein temporärer Makel sein.</p>
<p>Es lohnt sich also ein Auge darauf zu haben, denn die Software gewinnt laufend neue Funktionen.</p>
<p>Zu den bewertenden Sternen, die sind solange nicht viel wert, wie man nicht selbst ein paar Überlegungen dahinter getroffen hat. Ja, das eine Bild hat mir vielleicht so gut gefallen dass ich dem 5 Sterne gebe, das andere kriegt nur 4, aber es wär sinnvoll sich dafür Kriterien zurecht zu legen. Dazu habe ich letztens in der C'T Ausgabe 9/2012 eine interessante Einteilung gelesen.</p>
<ul>
<li>Ein Stern: nur Erinnerungswert, für die Festplatte</li>
<li>Zwei Sterne: Material für Collagen, für Freunde und Familie</li>
<li>Drei Sterne: für TV-Fotoshows und Webpräsenz bestimmt</li>
<li>Vier Sterne: Bilder zum Ausbelichten und für Fotobücher</li>
<li>Fünf Sterne: Kunst! Fotos für Poster und das Best-of-Album</li>
</ul>
<p>Fällt ein Foto nicht in eine dieser Klassen: löschen! Dazu zählen doppelte, unscharfe ohne markanten Erinnerungswert und Co.</p>
<p>Zugegeben diese Einteilung ist vielleicht nicht ganz praktikabel für mich. Aber es ist ein guter Orientierungspunkt. Naja, es bleibt mir noch einiges an Zeit zum Grübeln. Bis dahin verwalte ich meine Bilder noch per Hand und lass' euch natürlich weiterhin daran teilhaben. Diesmal mit einem vier bis fünf Sterne Bildes eines Baumes, bzw seiner überwucherten Rinde.</p>
<p><a title="veins of a tree auf Flickr" href="http://www.flickr.com/photos/nullpointerat/6990534042/in/set-72157628882311549/" target="_blank">Kalenderwoche 17 - veins of a tree</a></p>
<p><a title="KW17: veins of a tree von lordfake bei Flickr" href="http://www.flickr.com/photos/nullpointerat/6990534042/in/set-72157628882311549/"><img src="http://farm8.staticflickr.com/7219/6990534042_fb66782674.jpg" alt="KW17: veins of a tree" width="333" height="500" /></a></p>
<p>Bis nächste Woche!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nullpointer.at/2012/05/02/fotowoche-kw17-veins-of-a-tree-inkl-gedanken-zur-fotoverwaltung/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fotowoche KW16: the park</title>
		<link>http://www.nullpointer.at/2012/04/25/fotowoche-kw16-the-park/</link>
		<comments>http://www.nullpointer.at/2012/04/25/fotowoche-kw16-the-park/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 19:21:00 +0000</pubDate>
		<dc:creator>Thomas Pummer</dc:creator>
				<category><![CDATA[Fotographie]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Foto]]></category>
		<category><![CDATA[Fotowoche]]></category>
		<category><![CDATA[Park]]></category>
		<category><![CDATA[Schönbrunn]]></category>

		<guid isPermaLink="false">http://www.nullpointer.at/?p=2046</guid>
		<description><![CDATA[Ich war vorige Woche wiedermal mit meinem geschätzten Arbeitskollegen unterwegs fotografieren, dermal im Schlosspark Schönbrunn.]]></description>
			<content:encoded><![CDATA[<p>\o/ Foto! Nein Fotos! Und das sogar am Mittwoch!</p>
<p>Ich war vorige Woche wiedermal mit meinem geschätzten Arbeitskollegen unterwegs, dermal im Schlosspark Schönbrunn. Während die Experimente mit dem <a title="Graufilter auf Flickr" href="http://www.flickr.com/photos/nullpointerat/7113483991/in/set-72157629534889290/" target="_blank">Graufilter</a> doch eher gewöhnungsbedürftig waren, hat es mir die Natur und die Gärtner mal wieder leicht gemacht ein paar schöne Motive vor die Linse zu kriegen, wie z.B. die Allee zur nachgebauten <a title="Römische Ruine auf Flickr" href="http://www.flickr.com/photos/nullpointerat/7113483391/in/set-72157629534889290/" target="_blank">römischen Ruine</a>. Auch ein <a title="Eichhörnchen auf Flickr" href="http://www.flickr.com/photos/nullpointerat/6967405268/in/set-72157629534889290/" target="_blank">Eichhörnchen</a> hat sich blicken lassen. Eigentlich sogar drei, aber nur eines konnte ich gut ablichten. Wie immer hab ich mit der Perspektive gespielt, wie man am <a title="Perspektivenfoto bei Baum auf Flickr" href="http://www.flickr.com/photos/nullpointerat/6967408346/in/set-72157629534889290/" target="_blank">Baum-Foto</a> sieht. Hier direkt am Blog möchte ich euch mit dem Anblick, der einem direkt beim Betreten des Parks ins Auge fällt, konfrontieren.</p>
<p><a title="the park auf Flickr" href="http://www.flickr.com/photos/nullpointerat/6967404282/in/set-72157628882311549/" target="_blank">Kalenderwoche 16 - the park</a></p>
<p><a title="KW16: the park von lordfake bei Flickr" href="http://www.flickr.com/photos/nullpointerat/6967404282/in/set-72157628882311549/"><img src="http://farm8.staticflickr.com/7058/6967404282_b799d2fb75.jpg" alt="KW16: the park" width="500" height="333" /></a></p>
<p>Achja, auf <a title="Fotostream von rschoeller" href="http://www.flickr.com/photos/rschoeller/6949560034/in/photostream" target="_blank">Flickr</a> gibts die Fotos meines Kollegen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nullpointer.at/2012/04/25/fotowoche-kw16-the-park/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mit Bash prüfen ob das eigene Script gerade läuft</title>
		<link>http://www.nullpointer.at/2012/04/22/mit-bash-prufen-ob-das-eigene-script-gerade-lauft/</link>
		<comments>http://www.nullpointer.at/2012/04/22/mit-bash-prufen-ob-das-eigene-script-gerade-lauft/#comments</comments>
		<pubDate>Sun, 22 Apr 2012 18:00:42 +0000</pubDate>
		<dc:creator>Leo Eibler</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Diverses]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[batch]]></category>
		<category><![CDATA[check pid]]></category>
		<category><![CDATA[pid]]></category>
		<category><![CDATA[pid-file]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[single-instance]]></category>

		<guid isPermaLink="false">http://www.nullpointer.at/?p=2023</guid>
		<description><![CDATA[Die Problemstellung Ein Script soll alle x Minuten laufen und eine bestimmte Tätigkeit auf dem Server ausführen. Nun kann es vorkommen, dass das Script aber länger braucht als die Zeitspanne bis zum nächsten Aufruf desselben Scripts (z.B. Kopier und Backup Jobs, Mails abholen, ...) Natürlich sollte so ein Script dann nicht ein 2tes Mal gestartet [...]]]></description>
			<content:encoded><![CDATA[<h3>Die Problemstellung</h3>
<p>Ein Script soll alle x Minuten laufen und eine bestimmte Tätigkeit auf dem Server ausführen.</p>
<p>Nun kann es vorkommen, dass das Script aber länger braucht als die Zeitspanne bis zum nächsten Aufruf desselben Scripts (z.B. Kopier und Backup Jobs, Mails abholen, ...)</p>
<p>Natürlich sollte so ein Script dann nicht ein 2tes Mal gestartet werden sondern die Ausführung übersprungen werden. Zu diesem Zweck möchte ich hier ein kleines Bash Script zeigen, das genau diesen Zweck erfüllt.</p>
<h3>Die Lösung</h3>
<pre class="brush: java; ruler: true; first-line: 1; highlight: []">#!/bin/bash
#
# testpid.sh - demo script to show how to check if a script
# with the same name is currently running
#
# by Leo Eibler
# resources:
#    http://www.eibler.at
#    http://leo.sprossenwanne.at
#    http://www.nullpointer.at
#

# PID - pid of the current script
PID=$$
# SCRIPTNAME - current name of the script without directory prefix
SCRIPTNAME=`basename $0`
# PIDFILE - where to write the current pid
PIDFILE=/tmp/$SCRIPTNAME.pid

# ENDEXECUTION - if 1 then stop script, if 0 everything is ok and continue
ENDEXECUTION=0

if [ -f "$PIDFILE" ]
then
    RUNNINGPID=`cat "$PIDFILE"`
    echo "got pid from $RUNNINGPID from pidfile '$PIDFILE'"
    PROGRAMPID=`ps -e | grep "$SCRIPTNAME" | grep -v grep | awk '{print $1;}'`
    for PIDEL in $PROGRAMPID
    do
        echo "testing pid of running scripts '$PIDEL' == '$RUNNINGPID' from pidfile"
        if [ "$PIDEL" == "$RUNNINGPID" ]
        then
            echo "found PID $RUNNINGPID current running - end execution"
            ENDEXECUTION=1
            break
        fi
    done
fi

if [ "$ENDEXECUTION" == "1" ]
then
    echo "Current script '$SCRIPTNAME' already running (pid $RUNNINGPID) - end execution"
    exit 1
fi
# writing PID to pidfile
echo $PID &gt; $PIDFILE

#
# ---- START ----
#

echo "do your stuff here ..."
sleep 5
echo "... end script"

#
# ---- END ----
#

# delete pidfile
rm $PIDFILE
exit 0</pre>
<h3>Die Erklärung</h3>
<p>Zuerst holt sich das Script den eigenen Namen mit <em>basename $0</em> (<em>$0</em> würde ebenfalls den Pfad des Scriptaufrufs enthalten aber hier würde der spätere Aufruf von <em>ps</em> bzw. das automatische Erstellen und Auslesen des passenden pid-Files scheitern).</p>
<p>Mit dem Namen des Scripts wird dann versucht ein pid-File (welches die Process-ID des aktuell laufenden Scripts enthält) auszulesen. Der Pfad des pid-Files kann beliebig gewählt werden, jedoch muss das Script natürlich Schreibrechte auf die Datei besitzen.</p>
<p>Falls kein pid-File existiert kann das Script davon ausgehen, dass es derzeit nicht bereits läuft und seine eigentliche Arbeit aufnehmen.</p>
<p>Falls jedoch ein pid-File vorhanden ist, wird dieses ausgelesen und mit allen derzeit laufenden Process-IDs von Prozessen mit dem gleichen Namen wie das Script verglichen.</p>
<p>Wird hierbei eine Übereinstimmung gefunden, dann läuft das Script bereits und durch Setzen der Variable<em> $ENDEXECUTION</em> auf 1 wird der Abbruch signalisiert.</p>
<p>Dieser Vergleich mit den Process-IDs von Prozessen die bereits laufen ist deswegen wichtig, da es ja sein könnte, dass das Script beim vorherigen Aufruf zwar ein pid-File angelegt hat, aber danach abgebrochen wurde (z.B. manuell durch den Benutzer) und das pid-File dadurch nicht gelöscht wurde.</p>
<p>Ist die Überprüfung auf eine laufende Instanz negativ, muss zuerst das pid-File angelegt werden (Die Variable <em>$$</em> enthält die pid des aktuellen Prozesses).</p>
<p>Nach Beendigung der Arbeit sollte danach das pid-File wieder gelöscht werden um einen sauberen Abschluss zu bilden.</p>
<p>Das Script als Download gibts <a title="testpid.sh" href="http://www.eibler.at/downloads/testpid.sh">hier</a>.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nullpointer.at/2012/04/22/mit-bash-prufen-ob-das-eigene-script-gerade-lauft/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fotowoche KW15: orchid in orange</title>
		<link>http://www.nullpointer.at/2012/04/22/fotowoche-kw15-orchid-in-orange/</link>
		<comments>http://www.nullpointer.at/2012/04/22/fotowoche-kw15-orchid-in-orange/#comments</comments>
		<pubDate>Sun, 22 Apr 2012 13:53:55 +0000</pubDate>
		<dc:creator>Thomas Pummer</dc:creator>
				<category><![CDATA[Fotographie]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Foto]]></category>
		<category><![CDATA[Fotowoche]]></category>
		<category><![CDATA[orange]]></category>
		<category><![CDATA[orchid]]></category>
		<category><![CDATA[orchidee]]></category>

		<guid isPermaLink="false">http://www.nullpointer.at/?p=2042</guid>
		<description><![CDATA[orchid in orange - Impression einer Orchidee. Dass der Hintergrund (ein simpler Vorhang) so malerisch wirkt hätte ich mir beim Fotografieren nicht erträumt.]]></description>
			<content:encoded><![CDATA[<p>Ja, es ist nichts Neues, ich bin spät dran. Dennoch möchte ich euch diese Impression einer Orchidee nicht vorenthalten. Dass der Hintergrund (ein simpler Vorhang) so malerisch wirkt hätte ich mir beim Fotografieren nicht erträumt.</p>
<p><a title="orchid in orange auf Flickr" href="http://www.flickr.com/photos/nullpointerat/6956025482/in/set-72157628882311549/" target="_blank">Kalenderwoche 15 - orchid in orange</a></p>
<p><a title="orchid in orange von lordfake bei Flickr" href="http://www.flickr.com/photos/nullpointerat/6956025482/in/set-72157628882311549/"><img src="http://farm8.staticflickr.com/7052/6956025482_63912a0ccc.jpg" alt="orchid in orange" width="500" height="333" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nullpointer.at/2012/04/22/fotowoche-kw15-orchid-in-orange/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dateien zählen unter Linux</title>
		<link>http://www.nullpointer.at/2012/04/15/dateien-zaehlen-unter-linux/</link>
		<comments>http://www.nullpointer.at/2012/04/15/dateien-zaehlen-unter-linux/#comments</comments>
		<pubDate>Sun, 15 Apr 2012 18:00:33 +0000</pubDate>
		<dc:creator>Thomas Pummer</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[datein]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[ls]]></category>
		<category><![CDATA[wc]]></category>
		<category><![CDATA[zählen]]></category>

		<guid isPermaLink="false">http://www.nullpointer.at/?p=1931</guid>
		<description><![CDATA[Otto Normal hat mit Datein Zählen unter Windows sicher keine Probleme und die meisten Linuxuser unter dem Betriebssystem ihrer Wahl wohl auch nicht. Will aber Otto mal in Linux reinschnuppern und dort Dateien zählen, stellt ihn das als Laien vor eine respektable Herausforderung.]]></description>
			<content:encoded><![CDATA[<p>Otto Normal hat damit unter Windows sicher keine Probleme und die meisten Linuxuser unter dem Betriebssystem ihrer Wahl wohl auch nicht. Will aber Otto mal in Linux reinschnuppern und dort Dateien zählen, stellt ihn das als Laien vor eine respektable Herausforderung.</p>
<p>Um sich den Inhalt eines Verzeichnisses aufzurufen ist ihm wahrschienlich schon der Befehl</p>
<pre>ls</pre>
<p>bekannt. ls steht für “<strong>l</strong>i<strong>s</strong>t” Doch liefert dieser Befehl lediglich eine Auflistung des Inhalts des gegenwärtigen Verzeichnisses. Daher muss diese Ausgabe noch ausgewertet werden. Hierfür setzen wir Pipes | ein mit denen man mehrere Kommandos miteinander verbinden kann. Hierbei wird jeweils die Ausgabe des vorhergehenden Befehls als Eingabe für den nächsten Befehl herangezogen.</p>
<pre>ls –1 | wc –l</pre>
<p>wir haben hierbei den<em> ls</em> Befehl um den Parameter <em>–1</em> (Zahl Eins) erweitert der für eine lange Listenform steht. Es wird somit jedes Element in einer extra Zeile angeführt. Die Ausgabe davon wird per Pipe an den <em>wc</em> Befehl weitergeleitet. <em>wc</em> steht in diesem Fall für Word <strong>C</strong>ount. Erneut über einen Parameter <em>–l</em> (kleines L) weisen wir <em>wc</em> darauf hin, dass es die Zeilen zählen soll, die es übergeben bekommt.</p>
<p><span style="color: #ff0000;">Achtung!</span> Wurde statt der 1 ein kleines L als Parameter an <em>ls</em> übergeben ist die Ausgabe um eins größer als die Anzahl der Elemente. Dies liegt daran, dass dabei noch eine weitere Zeile Output erzeugt wird, die keine Datei wiederspiegelt.</p>
<pre>ls –l &lt;targetdir&gt; | wc –l</pre>
<p>Wollen wir nicht direkt das Ergebnis aus dem Verzeichnis in dem wir uns befinden, können wir das Zielverzeichnis am<em> ls</em> Befehl anhängen.</p>
<p>Fürs erste kann man damit zufrieden sein, doch bei genauerer Betrachtung stößt man dabei rasch an die Grenzen des Befehls. Man zählt nämlich symbolische Links und Verzeichnisse und Dateien gleichermaßen.</p>
<p>Wir tauschen nun also den list Befehl gegen einen spezialisierteren Befehl  aus: <em>find</em></p>
<pre>find &lt;targetdir&gt; –maxdepth 1 –type f | wc –l</pre>
<p>Mit <em>-type f</em> schränkt man die Auflistung der Ergebnisse auf Datein (<strong>f</strong>iles) ein. Dies könnte man z.B. auch auf Verzeichnisse (<strong>d</strong>irectorys) einschränken: <em>–type d</em></p>
<p><span style="color: #ff0000;">Achtung</span>, bei der Auflistung der Verzeichnisse wird das gegenwärtige Verzeichnis . mitgezählt, vom Gesamtergebnis also wieder eins abziehen.</p>
<p>Von Haus aus würde der <em>find</em> Befehl alle Unterverzeichnisse absuchen. Mittels <em>–maxdepth &lt;zahl&gt;</em> kann die Tiefe die er dabei erreicht steuern. Die <em>1</em> aus dem Beispiel oben steht hierbei nur für das Wurzelverzeichnis. Möchte man lediglich eine Verzeichnisebene tiefer wäre <em>–maxdepth 2</em> der passende Parameter.</p>
<p>Will man nun auch wieder die symbolischen Links in seinem Suchergebnis dabei haben muss man den find Befehl noch um den <em>–follow</em> Parameter erweitern</p>
<pre>find &lt;targetdir&gt; –maxdepth 1 –type f –follow | wc –l</pre>
<p>Möchte man nun noch auf Dateiendungen oder anderen Teilen des Dateinamens einschränken gilt es noch den <em>-name '*.txt'</em> Parameter zu erwähnen. Zwischen den Anführungszeichen wir der Suchbegriff angeführt, * und ? gelten dabei als die üblichen Wildcards.</p>
<pre>find &lt;targetdir&gt; -maxdepth 1 -type f -follow -name '*.t?t' | wc -l</pre>
<p>Happy counting!</p>
<p>PS: Rekursives suchen wäre mit dem ls Befehl mittels –R Parameter möglich</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nullpointer.at/2012/04/15/dateien-zaehlen-unter-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fotowoche KW14: deffodils</title>
		<link>http://www.nullpointer.at/2012/04/11/fotowoche-kw14-deffodils/</link>
		<comments>http://www.nullpointer.at/2012/04/11/fotowoche-kw14-deffodils/#comments</comments>
		<pubDate>Wed, 11 Apr 2012 17:33:07 +0000</pubDate>
		<dc:creator>Thomas Pummer</dc:creator>
				<category><![CDATA[Fotographie]]></category>
		<category><![CDATA[daffodils]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Foto]]></category>
		<category><![CDATA[Fotowoche]]></category>
		<category><![CDATA[Frühling]]></category>
		<category><![CDATA[Märzenbecher]]></category>
		<category><![CDATA[Ostern]]></category>

		<guid isPermaLink="false">http://www.nullpointer.at/?p=2017</guid>
		<description><![CDATA[Eigentlich wollte ich ja für heute ein Osterfoto schießen. Die Szenerie war auch schon perfekt, Lichteinfall, Winkel, Dekoration. Die Leute in meinem Heimatort haben sich echt Mühe gegeben. Ein Baum voller Ostereier und im Hintergrund eine mannshohe Strohpuppe, welche die Frau vom Osterhasen in Tracht darstellt. Perfekt!

Und dann kommt dem ein kleines unscheinbares Blümchen, ein Märzenbecher, dazwischen.]]></description>
			<content:encoded><![CDATA[<p>Eigentlich wollte ich ja für heute ein Osterfoto schießen. Die Szenerie war auch schon perfekt, Lichteinfall, Winkel, Dekoration. Die Leute in meinem Heimatort haben sich echt Mühe gegeben. Ein Baum voller Ostereier und im Hintergrund eine mannshohe Strohpuppe, welche die Frau vom Osterhasen in Tracht darstellt. Perfekt!</p>
<p>Und dann kommt dem ein kleines unscheinbares Blümchen, ein Märzenbecher, dazwischen.</p>
<p><a title="deffodils auf Flickr" href="http://www.flickr.com/photos/nullpointerat/7068219665/in/set-72157628882311549/" target="_blank">Kalenderwoche 14 - deffodils</a></p>
<p><a title="daffodils von lordfake bei Flickr" href="http://www.flickr.com/photos/nullpointerat/7068219665/in/set-72157628882311549/"><img src="http://farm8.staticflickr.com/7096/7068219665_874feeb2c4.jpg" alt="daffodils" width="500" height="333" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nullpointer.at/2012/04/11/fotowoche-kw14-deffodils/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mehrsprachigkeit WordPress Plugins</title>
		<link>http://www.nullpointer.at/2012/04/08/mehrsprachigkeit-wordpress-plugins/</link>
		<comments>http://www.nullpointer.at/2012/04/08/mehrsprachigkeit-wordpress-plugins/#comments</comments>
		<pubDate>Sun, 08 Apr 2012 18:15:48 +0000</pubDate>
		<dc:creator>Leo Eibler</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[garagesale]]></category>
		<category><![CDATA[Howto]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[translation]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.nullpointer.at/?p=1942</guid>
		<description><![CDATA[Aus aktuellem Anlass (Erstellung meines ersten WordPress Plugins GarageSale) habe ich mich auch mit dem Thema Multilingualität und Übersetzungen auseinandergesetzt (Jetzt weiß ich auch woher I18N kommt - 18 Buchstaben zwischen i und n im Wort internationalization ;-) Grundsätzlich muss die zu übersetzende WordPress Komponente natürlich die Funktionen __("text","domain") oder _e("text","domain") verwenden. Siehe hierzu I18N [...]]]></description>
			<content:encoded><![CDATA[<p>Aus aktuellem Anlass (<span style="text-decoration: underline;">Erstellung meines ersten WordPress Plugins</span> <a title="GarageSale WordPress Plugin" href="http://www.eibler.at/garagesale/" target="_blank">GarageSale</a>) habe ich mich auch mit dem Thema Multilingualität und Übersetzungen auseinandergesetzt (Jetzt weiß ich auch woher I18N kommt - <em>18</em> Buchstaben zwischen <em>i</em> und <em>n</em> im Wort <em>internationalization</em> ;-)</p>
<p>Grundsätzlich muss die zu übersetzende WordPress Komponente natürlich die Funktionen <em>__("text","domain")</em> oder <em>_e("text","domain")</em> verwenden. Siehe hierzu <a title="I18n for WordPress Developers" href="http://codex.wordpress.org/I18n_for_WordPress_Developers" target="_blank">I18N for WordPress Developers</a>.</p>
<p>WordPress stellt für die Übersetzung einige Werkzeuge auf dem Subversion Host bereit. Aber zunächst einmal ein Schritt nach dem Anderen.</p>
<h5>Schritt 1 - Download der Tools für Windows</h5>
<p>Da ich auf den Clients Windows einsetze habe ich mich dazu entschlossen auch die Entwicklungswerkzeuge für Windows (in meinem Fall noch das gute alte Windows XP aber es sollte keinen Unterschied machen) einzusetzen  und zu beschreiben.</p>
<p>Wir beginnen also mit dem Download von folgenden Komponenten:</p>
<ul>
<li>gettext (<a href="http://gnuwin32.sourceforge.net/packages/gettext.htm" target="_blank">Webseite</a> und <a href="http://prdownloads.sourceforge.net/gnuwin32/gettext-0.14.4.exe?download" target="_blank">Download-Link</a>)</li>
<li>POEdit (<a href="http://www.poedit.net/" target="_blank">Webseite</a> und <a href="http://prdownloads.sourceforge.net/poedit/poedit-1.4.6-setup.exe" target="_blank">Download-Link</a>)</li>
<li>TortoiseSVN (<a href="http://tortoisesvn.tigris.org/" target="_blank">Webseite</a> und <a href="http://tortoisesvn.net/downloads.html" target="_blank">Download-Link</a>)</li>
<li>PHP (<a href="http://www.php.net/" target="_blank">Webseite</a> und <a href="http://windows.php.net/download/" target="_blank">Download-Link</a>)</li>
</ul>
<p>Und danach installieren wird zunächst einmal alle 4 Programme mit dem Windows Installer.</p>
<h5>Schritt 2 - gettext und php einrichten</h5>
<p>Damit die Gettext Werkzeuge funktionieren sollten Sie noch zum Windows Pfad hinzugefügt werden. Dies kann man entwededer dauerhaft machen unter Systemsteuerung -&gt; System -&gt; Erweitert -&gt; Umgebungsvariablen oder aber direkt vor dem Aufruf des Übersetzungswerkzeugs in der Commandshell.</p>
<p>Ich habe gettext einfach in das Standardverzeichnis <em>c:\Programme\GnuWin32</em> installiert. Da die Utilities im Unterverzeichnis bin liegen muss also der vollständige <em>bin</em> Pfad hinzugefügt werden:</p>
<p><em>c:\Programme\GnuWin32\bin</em></p>
<p><a href="http://www.nullpointer.at/wp-content/uploads/2012/04/01-add-env-path.jpg"><img class="alignnone size-medium wp-image-1953" title="01-add-env-path" src="http://www.nullpointer.at/wp-content/uploads/2012/04/01-add-env-path-300x206.jpg" alt="" width="300" height="206" /></a></p>
<p>Wie gesagt die Alternative lautet, direkt vor dem Aufruf der Übersetzungstools den Pfad in der Commandline mittels <em>set PATH=%PATH%;c:\Programme\GnuWin32\bin </em>hinzufügen.</p>
<p><a href="http://www.nullpointer.at/wp-content/uploads/2012/04/02-add-env-path-cmd.jpg"><img class="alignnone size-medium wp-image-1954" title="02-add-env-path-cmd" src="http://www.nullpointer.at/wp-content/uploads/2012/04/02-add-env-path-cmd-300x151.jpg" alt="" width="300" height="151" /></a></p>
<p>Analog zu gettext wird dies mit PHP gemacht. Also falls php in das Standard-Verzeichnis <em>c:\Programme\php</em> installiert wird, dann muss dieses ebenfalls zur Umgebungsvariable Path hinzugefügt werden.</p>
<h5>Schritt 3 - Entwicklerwerkzeuge von WordPress aus SVN holen</h5>
<p>Um mit der Übersetzung zu beginnen benötigt man jetzt die Entwicklerwerkzeuge von WordPress. Diese holt man sich mittels Subversion (in unserem Fall komfortabel mit dem Tool tortoiseSVN) von der Adresse <a title="svn:. i18n wordpress tools" href="http://i18n.svn.wordpress.org/tools/trunk">http://i18n.svn.wordpress.org/tools/trunk</a></p>
<p>Hierzu erstellt man am Besten ein leeres Verzeichnis (z.B. <em>c:\Work\wp-i18n\</em>) und dort drückt man die rechte Maustaste und wählt<em> SVN Checkout</em>. Im darauffolgendem Tortoise Fenster gibt man unter <em>URL of repository</em> <a title="svn:. i18n wordpress tools" href="http://i18n.svn.wordpress.org/tools/trunk">http://i18n.svn.wordpress.org/tools/trunk</a> und drückt auf <em>OK</em>.</p>
<p><a href="http://www.nullpointer.at/wp-content/uploads/2012/04/03-svn-checkout_wp-i18n-tools.jpg"><img class="alignnone size-medium wp-image-1963" title="03-svn-checkout_wp-i18n-tools" src="http://www.nullpointer.at/wp-content/uploads/2012/04/03-svn-checkout_wp-i18n-tools-300x187.jpg" alt="" width="300" height="187" /></a></p>
<h5>Schritt 4 - WP i18n tool starten</h5>
<p>Nach dem Checkout befinden sich jetzt die WordPress i18n Übersetzungs Tools im Verzeichnis c:\Work\wp-i18n. Wir öffnen nun ein Commandline Fenster und wechseln in diesen Ordner (wichtig, falls oben in Schritt 2 die Methode mit der dauerhaften Pfad Anpassung gewählt wurde, darf ein jetzt bereits schon offenes Commandline Fenster nicht weiterverwendet werden, da sich die Umgebungsvariablen Änderung nicht auf bereits geöffnete Fenster auswirkt!</p>
<p>Eine Eingabe des Kommandos <em>xgettext</em> sollte nun eine Informationszeile auswerfen ebenso wie eine Eingabe des Befehlst <em>php -v</em>. Falls dies nicht funktioniert, nochmal zurück zu Schritt 2 und prüfen ob die Pfade auch wirklich korrekt gesetzt wurden.</p>
<p><a href="http://www.nullpointer.at/wp-content/uploads/2012/04/04-test-xgettext-php.jpg"><img class="alignnone size-medium wp-image-1969" title="04-test-xgettext-php" src="http://www.nullpointer.at/wp-content/uploads/2012/04/04-test-xgettext-php-300x151.jpg" alt="" width="300" height="151" /></a></p>
<p>Nun kann die Übersetzung eines Plugins gestartet werden. Zu diesem Zweck muss folgendes Kommando ausgeführt werden: <em>php makepot.php wp-plugin &lt;Pfad des WordPress Plugins&gt;</em></p>
<p><em>wp-plugin</em> steht hierfür für den Typ des zu übersetzenden Objekts (in diesem Fall ein WordPress Plugin).</p>
<p>In diesem Beispiel übersetze ich mein eigenes Plugin welches sich im Pfad <em>y:\ktzv-fischamend.at\www\wp-content\plugins\garagesale</em> befindet.</p>
<p><a href="http://www.nullpointer.at/wp-content/uploads/2012/04/05-call-makepot.jpg"><img class="alignnone size-medium wp-image-1970" title="05-call-makepot" src="http://www.nullpointer.at/wp-content/uploads/2012/04/05-call-makepot-300x151.jpg" alt="" width="300" height="151" /></a></p>
<p>Nach dem Fehlerfreien Durchlauf des <em>makepot.php</em> Scripts (zu erkennen an keiner Ausgabe) befindet sich nun eine <em>pot</em> Datei mit dem Namen des Plugins im aktuellen Verzeichnis (in diesem Beispiel <em>garagesale.pot</em>).</p>
<h5>Schritt 5 - Mit POEdit die POT Sprach Datei editieren</h5>
<p>Nun starten wir das Programm <em>POEdit</em> und öffnen die <em>pot</em> Datei. Um sie zu öffnen muss der Dateityp Filter auf <em>*.*</em> gestellt werden.</p>
<p><a href="http://www.nullpointer.at/wp-content/uploads/2012/04/05-use-poedit_with_pot-file.jpg"><img class="alignnone size-medium wp-image-1973" title="05-use-poedit_with_pot-file" src="http://www.nullpointer.at/wp-content/uploads/2012/04/05-use-poedit_with_pot-file-300x258.jpg" alt="" width="300" height="258" /></a></p>
<p>Nach dem Laden der pot Datei kann sofort mit dem Übersetzen begonnen werden. In der linken Spalte sind immer die Original (englischen) Begriffe zu sehen und in der rechten Spalte die bereits übersetzten (deutschen) Begriffe. Man wählt einfach den zu übersetzenden Begriff aus und tippt die Übersetzung in das unterste der Eingabefelder.</p>
<p><a href="http://www.nullpointer.at/wp-content/uploads/2012/04/07-use-poedit_create_translation.jpg"><img class="alignnone size-medium wp-image-1974" title="07-use-poedit_create_translation" src="http://www.nullpointer.at/wp-content/uploads/2012/04/07-use-poedit_create_translation-300x258.jpg" alt="" width="300" height="258" /></a></p>
<p>Vor dem Speichern sollten jetzt noch die Katalog Optionen angepasst werden. Diese finden sich unter dem Menüpunkt <em>Katalog -&gt; Optionen</em>. Wird auf Deutsch übersetzt sollte nicht nur bei Sprache "German" sondern auch bei Land "GERMANY" ausgewählt werden (der Ländercode für Deutsch lautet nämlich üblicherweise <em>de_de</em> und nicht <em>de_at</em>, weil man übersetzt üblicherweise nicht extra ins Österreichische - obwohl das sicher witzig wäre ;-)</p>
<p><a href="http://www.nullpointer.at/wp-content/uploads/2012/04/08-use-poedit_catalog-options.jpg"><img class="alignnone size-medium wp-image-1975" title="08-use-poedit_catalog-options" src="http://www.nullpointer.at/wp-content/uploads/2012/04/08-use-poedit_catalog-options-300x238.jpg" alt="" width="300" height="238" /></a></p>
<p>Nach dem Speichern findet sich dann zusätzlich zur geänderten Quellsprachdatei <em>garagesale.pot</em> (die jetzt auch die deutschen Übersetzungen enthält) eine Datei namens <em>garagesale.mo</em>. Dies ist die Datei, die für WordPress notwendig ist um das Plugin dann in der korrekten Sprache anzuzeigen.</p>
<p><a href="http://www.nullpointer.at/wp-content/uploads/2012/04/09-copy_mo_file.jpg"><img class="alignnone size-medium wp-image-1978" title="09-copy_mo_file" src="http://www.nullpointer.at/wp-content/uploads/2012/04/09-copy_mo_file-300x151.jpg" alt="" width="300" height="151" /></a></p>
<p>Wie in dem Screenshot zu sehen, muss diese .mo Datei mit dem richtigen Namen in das Plugin Verzeichnis kopiert werden: <em>&lt;PluginName&gt;-&lt;Länder-und-Sprach-Code&gt;.mo</em> (in diesem Beispiel <em>garagesale-de_DE.mo</em>).</p>
<h5>Schritt 6 - Hinzugekommene Begriffe und erneute Übersetzung</h5>
<p>Wie das so ist, kommt man nach der fertigen Übersetzung drauf, dass man doch noch eine Funktionalität vergessen hat. Zu diesem Zweck muss man natürlich nochmals das <em>makepot.php</em> Script aus Schritt 4 starten. <strong>ABER VORSICHT!</strong></p>
<p><span style="color: #ff0000;">Vor dem erneuten Start muss unbedingt die bereits übersetzte <em>.pot</em> Datei umbenannt werden in z.B. <em>garagesale-translated.pot</em> - Das Extraktionsscript überschreibt kommentarlos eine eventuell bereits bestehende <em>&lt;pluginname&gt;.pot</em> Datei!</span></p>
<p>Nach erneuter Erstellung der <em>garagesale.pot</em> Datei (in der sich nun auch die zusätzlichen, noch nicht übersetzten Begriffe befinden, können nun mit dem gettext Tool msgmerge die beiden <em>.pot</em> Dateien gemerget werden:</p>
<p><em>msgmerge -N [bereits-übersetzte-pot-Datei.pot] [neu-generierte-pot-datei.pot] &gt; neue-Pot-Datei.pot</em></p>
<p><a href="http://www.nullpointer.at/wp-content/uploads/2012/04/10-msgmerge-already_translated_pot-files.jpg"><img class="alignnone size-medium wp-image-1981" title="10-msgmerge-already_translated_pot-files" src="http://www.nullpointer.at/wp-content/uploads/2012/04/10-msgmerge-already_translated_pot-files-300x151.jpg" alt="" width="300" height="151" /></a></p>
<p>Nun befindet sich im aktuellen Verzeichnis eine Datei namens <em>garagesale_new.pot</em> die wieder mit <em>POEdit</em> um die zusätzliche Begriffe ergänzt werden kann und anschließend muss wieder die <em>.mo</em> Datei entsprechend der oben genannten Namenskonvention in das Plugin Verzeichnis kopiert werden.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nullpointer.at/2012/04/08/mehrsprachigkeit-wordpress-plugins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Served from: www.nullpointer.at @ 2012-05-21 03:18:21 -->
