<?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>Moritz Siuts</title>
	<atom:link href="http://www.moritz-siuts.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.moritz-siuts.de</link>
	<description>Just another developer blog</description>
	<lastBuildDate>Sun, 16 Oct 2011 20:19:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Autocomplete Everything</title>
		<link>http://www.moritz-siuts.de/2011/10/16/autocomplete-everything/</link>
		<comments>http://www.moritz-siuts.de/2011/10/16/autocomplete-everything/#comments</comments>
		<pubDate>Sun, 16 Oct 2011 20:10:36 +0000</pubDate>
		<dc:creator>moritz</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://www.moritz-siuts.de/?p=96</guid>
		<description><![CDATA[Eines der besten und schnellsten Hilfsmittel bei der Software-Entwicklung ist autocomplete. Sei es in der IDE oder auf der Kommandozeile (in meiner Arbeitsumgebung die bash). Für einige Tools muss man das automatische Vervollständigen erst einrichten, aber dann ist es wahnsinnig &#8230; <a href="http://www.moritz-siuts.de/2011/10/16/autocomplete-everything/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Eines der besten und schnellsten Hilfsmittel bei der Software-Entwicklung ist autocomplete. Sei es in der IDE oder auf der Kommandozeile (in meiner Arbeitsumgebung die bash). Für einige Tools muss man das automatische Vervollständigen erst einrichten, aber dann ist es wahnsinnig praktisch. Im Folgenden deshalb ein paar Beispiele für  git, ssh und Maven, die ich privat und beruflich unter Mac OS 10.6 und Linux benutze:</p>
<h2>git</h2>
<p>Für git gibt es ein Script das man einfach nur in seine Konfiguration einbinden muss. Erst dann macht das arbeiten mit vielen Branches (die am besten noch lange, sprechende Namen haben) erst richtig Spaß.</p>
<p>Um die git-completion zu nutzen muss man sich zuerst das <a href="https://github.com/git/git/raw/master/contrib/completion/git-completion.bash"><code>git-completion.sh-</code>Script</a> aus der git Distribution besorgen, zum Beispiel via <a href="https://github.com/git/git/raw/master/contrib/completion/git-completion.bash">github</a>.</p>
<p>Danach muss man noch folgende Zeile zur seinem <code>.bash_profile</code> oder <code>.bashrc</code> hinzufügen (vorausgesetzt man speichert das <code>git-completion.sh</code> unter <code>~</code> als <code>.git-completion.sh</code>, sonst muss man den Pfad den eigenen Vorlieben entsprechend anpassen:</p>
<pre>source ~/.git-completion.sh</pre>
<p>Anschließend kann man zum Beispiel seine Branchnamen per Tabulator auto-vervollständigen lassen.</p>
<h2>ssh</h2>
<p>Ich verbinde mich per ssh auf viele verschiedene Hosts mit teilweise doch recht langen Namen. Da ich den Username und key je nach Domain bereits in meiner ssh Konfiguration hinterlegt habe, benötige ich keinen Username mehr. Ein einfaches <code>ssh $servername</code> ist also für meine Zwecke vollkommen ausreichend. Um hier nun Autocompletion für die Servernamen zu aktivieren, kann man folgende Zeile in seine <code>.bash_profile</code> Datei eintragen:<br />
<script src="https://gist.github.com/1291305.js?file=gistfile1.sh"></script><br />
Da hier die <code>known_hosts</code> Datei als Quelle für Servernamen verwendet wird, dürfen diese darin natürlich nicht gehasht sein, sondern müssen im Klartext vorhanden sein. Ansonsten gibt es noch <a href="http://www.commandlinefu.com/commands/view/2759/ssh-autocomplete">Alternativen</a>, die zum Beispiel die <code>history</code> auswerten. Unter Mac OS 10.6 funktioniert es jedenfalls wie oben beschrieben problemlos.</p>
<h2>Maven</h2>
<p>Auch für Maven gibt es bereits ein fertiges Script, dass man nur noch wie bei git einbinden muss. Leider wird es nicht mit Maven mitgeliefert, aber man kann sich die <a href="https://github.com/juven/maven-bash-completion">maven-bash-completion</a> bei github ziehen. Eingebunden wird sie wie bei git mit einem</p>
<pre>source ~/.maven-bash-completion</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.moritz-siuts.de/2011/10/16/autocomplete-everything/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Koans</title>
		<link>http://www.moritz-siuts.de/2011/07/24/koans/</link>
		<comments>http://www.moritz-siuts.de/2011/07/24/koans/#comments</comments>
		<pubDate>Sun, 24 Jul 2011 20:16:43 +0000</pubDate>
		<dc:creator>moritz</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.moritz-siuts.de/?p=89</guid>
		<description><![CDATA[In meinem Artikel über das einfache Lernen von Scala mit Hilfe von scala-labs, habe ich den Begriff Test Driven Learning verwendet. Ich finde, der Begriff eignet sich auch ganz gut und er wird auch unter anderem für solche Projekte verwendet, nur findet &#8230; <a href="http://www.moritz-siuts.de/2011/07/24/koans/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In meinem <a title="Test Driven Learning" href="http://www.moritz-siuts.de/2010/10/02/test-driven-learning/">Artikel</a> über das einfache Lernen von Scala mit Hilfe von <a href="http://scala-labs.github.com/">scala-labs</a>, habe ich den Begriff <em>Test Driven Learning</em> verwendet. Ich finde, der Begriff eignet sich auch ganz gut und er wird auch unter anderem für solche Projekte verwendet, nur findet man relativ wenige ähnliche Projekte zu anderen Sprachen wenn man &#8220;<em>Test Driven Learning $language&#8221; </em>in eine Suchmaschine eingibt.</p>
<p>Vor einiger Zeit bin ich endlich auf den auf den Begriff <em><a href="http://de.wikipedia.org/wiki/K%C5%8Dan">Koan</a></em> gestoßen, der für ähnliche Projekte benutzt wird und <a href="http://www.google.de/search?&amp;q=koan+scala">viel gebräuchlicher</a> ist. Vor allem findet man unter dem Begriff <em>Koan</em> auch viele Projekte für andere Sprachen, zum Beispiel <a href="https://github.com/gregmalcolm/python_koans">Python-Koans</a> oder <a href="https://github.com/mrdavidlaing/javascript-koans">JavaScript-Koans</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.moritz-siuts.de/2011/07/24/koans/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Developer Conference Hamburg 2011</title>
		<link>http://www.moritz-siuts.de/2011/05/23/developer-conference-hamburg-2011/</link>
		<comments>http://www.moritz-siuts.de/2011/05/23/developer-conference-hamburg-2011/#comments</comments>
		<pubDate>Mon, 23 May 2011 19:56:34 +0000</pubDate>
		<dc:creator>moritz</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[#dchh]]></category>
		<category><![CDATA[devcon]]></category>
		<category><![CDATA[Hamburg]]></category>

		<guid isPermaLink="false">http://www.moritz-siuts.de/?p=79</guid>
		<description><![CDATA[Am Wochenende hat die erste Developer Conference Hamburg im Otto-Forum stattgefunden. Glücklicherweise war ich mit einem Großteil unseres Entwicklungsteams dort, wir hatten sogar noch extrem günstige Karten gesichert, waren uns bei der Buchung über das Speaker Line-Up aber noch ziemlich &#8230; <a href="http://www.moritz-siuts.de/2011/05/23/developer-conference-hamburg-2011/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Am Wochenende hat die erste <a href="http://www.devcon-hamburg.de/">Developer Conference Hamburg</a> im <a href="http://www.ottogroup.com/">Otto</a>-Forum stattgefunden. Glücklicherweise war ich mit einem Großteil unseres Entwicklungsteams dort, wir hatten sogar noch extrem günstige Karten gesichert, waren uns bei der Buchung über das Speaker Line-Up aber noch ziemlich im unklaren. Aber für 50 EUR kann man bei einer Konferenz nicht viel falsch machen.</p>
<h2>Erster Tag</h2>
<p>Unsere Entscheidung war jedenfalls goldrichtig. Der Freitag startet mit einem ausführlichen Frühstück bei dem alle auf ihre Kosten kamen. Gleich der erste Vortrag von Dr. Johannes Mainusch (Xing) zum Thema <strong>Abstract Monitoring</strong> war ausgesprochen gut! Das von Johannes gepredigte <em>MacGyver Monitoring</em>, also mal schnell was mit einfachen Mitteln (Munin + Logfiles + awk) zu monitoren, versuche ich öfter mal in die Praxis umzusetzen. Dabei impliziert der Name <a href="http://de.wikipedia.org/wiki/MacGyver">MacGyver</a> schon, dass es sich nicht um einen kruden Hack handeln soll, sondern um eine einfache Lösung die auch funktioniert.</p>
<p>Der anschließende Vortrag zum Thema <strong>Projekt-Entwicklung in der Cloud</strong> kam dagegen nicht an. Mir persönlich ging der Vortrag viel zu wenig in die Tiefe, aber für komplette Neueinsteiger war die kurze Einführung in AWS &amp; Co. sicher gut.</p>
<p>Nach dem sehr reichhaltigen Mittagessen ging es wieder sehr gut mit <strong>Many-Cores &amp; Functional Programming</strong> von Prof. Dr. Friedrich Esser weiter. Der Vortrag war eine Einführung in die Vorteile funktionaler Programmierung mit vielen Seitenhieben auf die aktuellen OO Sprachen. Mit <em>Get functional or get out!</em> hat Prof. Esser seinen Vortrag passend zusammengefasst. Für die devcon war dieser Vortrag erfrischend theoretisch.</p>
<p>Der Titel <strong>Agile Entwicklung mit PHP</strong> des nächsten Vortrags hatte mich erst etwas abgeschreckt, letztlich hatte PHP aber gar keinen Anteil an dem sehr gelungenem Vortrag über extreme Programming. Lars Jankowfsky hat viele Zwischenfragen zugelassen und es war doch sehr interessant zu hören mit welchen Problem andere Teams zu kämpfen haben. Letztlich kochen alle doch nur mit Wasser und viele scheinen die gleichen Gäste zum Essen eingeladen zu haben.</p>
<p>Den Tag beendet hat Jens Fischer mit seinem Vortrag zum <strong>Website Performance Boosting</strong> für einen der Otto Shop-Systeme. Ein interessanter Einblick in die In-House Entwicklung bei Otto. Die Toolchain kam uns allerdings sehr bekannt vor, so dass es weniger etwas neues zu lernen gab, als viel mehr die Bestätigung dass es andere ähnlich machen wie wir.</p>
<p>Ausklingen konnte der Abend im <a href="http://www.13ter-stock.de/">13. Stock</a> nach einer kleinen Stadtrundfahrt in den bekannten Doppeldeckerbussen. Die Orga wirkte, als würde die Konferenz zum 10. Mal stattfinden&#8230; dabei war es ja die Premiere. Auf der Party habe ich mal wieder gemerkt, dass die Hamburger IT irgendwie ein Dorf ist: Jeder kennt jeden &#8211; irgendwie.</p>
<h2>Zweiter Tag</h2>
<p>Der zweite Tag begann mit leichter Verspätung. Die Baustelle am Hauptbahnhof und die vielen Getränke-Gutscheine von Xing waren wohl die schuld. Der erste Vortrag war Zero Bug Policy. Durchaus nah an der Praxis und mit einigen guten Hinweisen für den Alltag.</p>
<p>Beim Workshop <strong>Frontend Performance Tuning</strong> fühlte ich mich hingegen eher unwohl. Zum einen waren viele der Tipps aus meiner Sicht eher &#8220;snake oil&#8221; zum anderen wurden Backendentwickler einige Male gebasht&#8230;</p>
<p>Das Mittagessen hat die Stimmung aber wieder sehr gehoben und der Doppel-Workshop von Prof. Esser zum Thema <strong>Scala</strong> war ebenfalls sehr gut. Allerdings war es aufgrund der großen Teilnehmerzahl eher kein Workshop sondern eine Vorlesung, was dem ganzen aber nicht schlecht getan hat. Letztlich konnte ich für mich nicht viel neues mitnehmen, aber gelerntes noch einmal aus einem anderen Blickwinkel betrachten. Es war einfach ein guter Vortrag und die meisten Teilnehmer wollten sich später einmal näher mit Scala beschäftigen.</p>
<p>Als abschließenden Vortrag habe ich mir <strong>Testing untestable code</strong> angehört. Eigentlich ein tolles Thema, hat man es doch öfter mal mit legacy code zu tun. Leider war der Vortrag sehr stark auf PHP gemünzt (was leider aus dem Titel und der Beschreibung nicht klar hervor ging). Die Wege um untestbaren code zu testen verursachten dann auch manchmal eine Gänsehaut.</p>
<h2>TL;DR</h2>
<p>Die <a href="https://twitter.com/#!/search/%23dchh">#dchh</a> war absolut super! Die verschiedenen Themen und Schwerpunkte haben der Konferenz sehr gut getan. Die Organisation und die Verpflegung sowie der Veranstaltungsort bei Otto waren hervorragend.</p>
<p>Nur die Workshops waren etwas zu groß um wirkliche Workshops zu sein. Aber ob Vortrag oder Workshops war letztlich auch egal. Hoffentlich machen die Veranstalter ihr Versprechen wahr, so dass es auch 2012 wieder eine Developer Conference in Hamburg geben wird.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.moritz-siuts.de/2011/05/23/developer-conference-hamburg-2011/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mit der Jenkins Script Console Maven Goals ändern</title>
		<link>http://www.moritz-siuts.de/2011/05/17/mit-der-jenkins-script-console-maven-goals-andern/</link>
		<comments>http://www.moritz-siuts.de/2011/05/17/mit-der-jenkins-script-console-maven-goals-andern/#comments</comments>
		<pubDate>Tue, 17 May 2011 17:32:49 +0000</pubDate>
		<dc:creator>moritz</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Jenkins]]></category>

		<guid isPermaLink="false">http://www.moritz-siuts.de/?p=66</guid>
		<description><![CDATA[Beruflich nutze ich unter anderem Jenkins als Continous Integration Server. Wir haben recht viele Maven Projekte die damit regelmässig gebaut werden. Bislang haben alle diese Projekte im Prinzip ein mvn clean install aufgerufen. Dadurch lagen immer die aktuellsten SNAPSHOTS im &#8230; <a href="http://www.moritz-siuts.de/2011/05/17/mit-der-jenkins-script-console-maven-goals-andern/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div id="attachment_76" class="wp-caption alignright" style="width: 310px"><a href="http://www.moritz-siuts.de/wp-content/uploads/2011/05/jenkins-main.png"><img class="size-medium wp-image-76" title="Das ist nur ein Ausschnitt, da will man nicht alles von Hand ändern" src="http://www.moritz-siuts.de/wp-content/uploads/2011/05/jenkins-main-300x164.png" alt="Das ist nur ein Ausschnitt, da will man nicht alles von Hand ändern" width="300" height="164" /></a><p class="wp-caption-text">Das ist nur ein Ausschnitt, da will man nicht alles von Hand ändern</p></div>
<p>Beruflich nutze ich unter anderem <a href="https://jenkins-ci.org/">Jenkins</a> als Continous Integration Server. Wir haben recht viele Maven Projekte die damit regelmässig gebaut werden.</p>
<p>Bislang haben alle diese Projekte im Prinzip ein <code>mvn clean install</code> aufgerufen. Dadurch lagen immer die aktuellsten SNAPSHOTS im lokalen Maven Repository des Jenkins, jedoch nicht in unserem zentralen Maven Repository Manager. Es sollte also statt dem <code>mvn clean install</code> ein <code>mvn clean deploy</code> aufgerufen werden.</p>
<p>Um nun alle Projekte möglichst schnell und ohne viel Maus-Geschubse zu konfigurieren, habe ich die Jenkins Script Console verwendet. Mit der Scrip Console ist es möglich, Groovy Scripts auf dem Jenkins auszuführen, die zum Beispiel alle Projekte umkonfigurieren. Einige <a href="https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+Script+Console">Beispiele</a> für solche Scripts finden sich im Jenkins-Wiki. Um in allen Maven Projekten aus dem <code>install</code> ein <code>deploy</code> zu machen, habe ich das folgende <a href="https://gist.github.com/976477">Script</a> gehackt (das sicher keinen Schönheitspreis gewinnt, aber als Vorlage dienen kann):</p>
<p><script src="https://gist.github.com/976477.js?file=gistfile1.groovy"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.moritz-siuts.de/2011/05/17/mit-der-jenkins-script-console-maven-goals-andern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migration von iPhoto nach Picasa mit Phoshare</title>
		<link>http://www.moritz-siuts.de/2011/03/19/migration-von-iphoto-nach-picasa-mit-phoshare/</link>
		<comments>http://www.moritz-siuts.de/2011/03/19/migration-von-iphoto-nach-picasa-mit-phoshare/#comments</comments>
		<pubDate>Sat, 19 Mar 2011 09:01:15 +0000</pubDate>
		<dc:creator>moritz</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[iPhoto]]></category>
		<category><![CDATA[OpenSource]]></category>

		<guid isPermaLink="false">http://www.moritz-siuts.de/?p=56</guid>
		<description><![CDATA[Beim Umzug auf einen neuen Rechner wollte ich auch gleich meine Bilder von iPhoto 6 zu Picasa migrieren. Ein Update auf ein aktuelles iPhoto ist zwar Dank des neuen AppStores kostengünstig möglich, jedoch habe ich schon zu häufig von Performanceproblemen, &#8230; <a href="http://www.moritz-siuts.de/2011/03/19/migration-von-iphoto-nach-picasa-mit-phoshare/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Beim Umzug auf einen neuen Rechner wollte ich auch gleich meine Bilder von iPhoto 6 zu Picasa migrieren. Ein Update auf ein aktuelles iPhoto ist zwar Dank des neuen AppStores kostengünstig möglich, jedoch habe ich schon zu häufig von Performanceproblemen, insbesondere auf älterer Hardware, gelesen.</p>
<p>Das gute an iPhoto ist, dass es sich selber normalerweise alleine um die Ablage der Fotos kümmert. Man muss sich also keine eigene Ordnerstruktur ausdenken, denn diese Arbeit kann einem iPhoto (ähnlich wie auch iTunes bei Musik) abnehmen. Das ist bei einer Migration allerdings ein Nachteil, denn die Information zu welchem Album ein Bild gehört, steckt eben nicht in einer Ordnerstruktur sondern in den Dateien die iPhoto als Datenbank benutzt. Zum Glück bin ich auf das Tool <a href="http://code.google.com/p/phoshare/">Phoshare</a> gestoßen, dass einen Export der iPhoto Datenbank in eine neue Ordnerstruktur macht die sauber von z.B. Picasa importiert werden kann. Die Versionen 1.4.4. und 1.4.5 kamen allerdings mit der AlbumData.xml die mein iPhoto angelegt hatte nicht klar:</p>
<pre>Error: float() argument must be a string or a number</pre>
<p>Offensichtlich fehlen in der Version 6.0.6 von iPhoto noch einige Zeitstempel im XML. Ein Patch kam allerdings innerhalb von wenigen Stunden, nachdem ich die <a href="http://groups.google.com/group/phoshare-users/browse_thread/thread/557f49a265abf91d">Usermailingliste kontaktiert</a> hatte. Damit hat <a href="http://code.google.com/p/phoshare/">Phoshare</a> prima funktioniert, genau wie in der <a href="https://sites.google.com/site/phosharedoc/">Anleitung</a> beschrieben!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.moritz-siuts.de/2011/03/19/migration-von-iphoto-nach-picasa-mit-phoshare/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Wie bringe ich die JVM zum Absturz?</title>
		<link>http://www.moritz-siuts.de/2011/02/01/wie-bringe-ich-die-jvm-zum-absturz/</link>
		<comments>http://www.moritz-siuts.de/2011/02/01/wie-bringe-ich-die-jvm-zum-absturz/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 20:03:06 +0000</pubDate>
		<dc:creator>moritz</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.moritz-siuts.de/?p=53</guid>
		<description><![CDATA[Ich glaube in The Passionate Programmer hatte ich mal gelesen, dass man für ein Vorstellungsgespräch wissen sollte, wie man nur mit reinem Java die JVM zum Absturz bringen kann&#8230; Seit gestern wissen das nun wahrscheinlich ziemlich viele Leute und es &#8230; <a href="http://www.moritz-siuts.de/2011/02/01/wie-bringe-ich-die-jvm-zum-absturz/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ich glaube in <em>The Passionate Programmer</em> hatte ich mal gelesen, dass man für ein Vorstellungsgespräch wissen sollte, wie man nur mit reinem Java die JVM zum Absturz bringen kann&#8230;</p>
<p>Seit gestern wissen das nun <a href="http://www.exploringbinary.com/java-hangs-when-converting-2-2250738585072012e-308/">wahrscheinlich ziemlich viele Leute</a> und es ist erstaunlich einfach. Im Scala-Interpreter reicht die Eingabe von <span style="font-size: 15px; color: #222222; font-family: 'Courier 10 Pitch', Courier, monospace; line-height: 21px; white-space: pre;">2.2250738585072012e-308</span> &#8211; mit einer passenden JVM jedenfalls. Die landet dann in einer Endlosschleife, das kann man als Personaler ja sicher als Absturz durchgehen lassen.</p>
<p>Oracle hat den Bug noch nicht anerkannt, geschweige denn gefixt.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.moritz-siuts.de/2011/02/01/wie-bringe-ich-die-jvm-zum-absturz/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cloudfront Cache Invalidation</title>
		<link>http://www.moritz-siuts.de/2010/10/31/cloudfront-cache-invalidation/</link>
		<comments>http://www.moritz-siuts.de/2010/10/31/cloudfront-cache-invalidation/#comments</comments>
		<pubDate>Sun, 31 Oct 2010 14:49:26 +0000</pubDate>
		<dc:creator>moritz</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Cloudfront]]></category>

		<guid isPermaLink="false">http://www.moritz-siuts.de/?p=32</guid>
		<description><![CDATA[Seit einiger Zeit bietet das Amazon CDN Cloudfront die Möglichkeit die Caches der Edgeserver zu purgen. Amazon bezeichnet diesen Vorgang als Cache Invalidation. Die Invalidation ist die Holzhammermethode, falls die minimal einstellbare Cache Zeit von 60 Minuten noch zu lang &#8230; <a href="http://www.moritz-siuts.de/2010/10/31/cloudfront-cache-invalidation/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Seit einiger Zeit bietet das Amazon CDN Cloudfront die Möglichkeit die Caches der Edgeserver zu purgen. Amazon bezeichnet diesen Vorgang als Cache Invalidation.</p>
<p>Die Invalidation ist die Holzhammermethode, falls die minimal einstellbare Cache Zeit von 60 Minuten noch zu lang ist oder man nicht daran gedacht hat die Header in S3 entsprechend zu setzen. Dafür lässt Amazon sich jedes invalidierte File bezahlen (wobei die ersten Invalidations kostenlos sind).</p>
<p>Um Files zu invalideren muss man einen Batch-Invalidation-Request schicken. Leider ist hierfür die Tool Unterstützung noch nicht besonders gut. Files lassen sich weder über die AWS Management Console noch über die üblichen Kommandozeilen oder sonstigen Tools wie S3 Fox oder Cyberduck invalidieren &#8211; zumindest nicht unter Mac OS X. Außerdem ist es immer gut, solche Dinge auch von der Konsole aus erledigen zu können.</p>
<p>Die Lösung kommt in Form von <a href="http://aws.amazon.com/code/1878">cfcurl</a>, einem Perl Skript, das curl wrappt um die Authentication Headers von Amazon zu setzen. cfcurl erklärt seine Einrichtung beim ersten Aufruf von selbst. Alternativ sollte man schnell mal den Quellcode überfliegen um eine Datei mit den eigenen AWS Credentials im passenden Format anzulegen.</p>
<p>Anschließend kann man cfcurl wie folgt aufrufen:</p>
<pre class="brush:shell">./cfcurl.pl --keyname=[friendly key name] -- [curl-options]</pre>
<p>Damit hat man schon alles um die AWS <a href="http://docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/">Cloudfront API</a> anzusprechen.</p>
<p>Für einen Invalidation Request legt man sich am besten ein XML File zurecht, das den <a href="http://docs.amazonwebservices.com/AmazonCloudFront/2010-08-01/APIReference/index.html?InvalidationDatatype.html">InvalidationBatch Complex Type</a> enthält:</p>
<pre class="brush:xml">&lt;InvalidationBatch&gt;
   &lt;Path&gt;/foo.txt&lt;/Path&gt;
   &lt;Path&gt;/bar.jpg&lt;/Path&gt;
   &lt;CallerReference&gt;my-batch&lt;/CallerReference&gt;
&lt;/InvalidationBatch&gt;</pre>
<p>Als nächstes braucht man noch die Id seiner Cloudfront Distribution. Diese kann man sich ebenfalls über die API holen oder in der AWS Console nachschauen. Nun kann man zum Beispiel die beiden Dateien foo.txt und bar.jpg der Cloudfront Distribution wie folgt invalideren:</p>
<pre class="brush:shell">cfcurl.pl --keyname [my_key] -- -X POST -H "Content-Type: text/xml; charset=UTF-8" --upload-file [invalidate_request filename] https://cloudfront.amazonaws.com/2010-08-01/distribution/[distribution_id]/invalidation</pre>
<p>Amazon braucht für die Ausführung eines solches Requests 10 bis 15 Minuten. Den Status der Requests kann man sich ebenfalls über die API anschauen:</p>
<pre class="brush:shell">cfcurl.pl --keyname [my_key] -- -X GET  https://cloudfront.amazonaws.com/2010-08-01/distribution/[distribution_id]/invalidation</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.moritz-siuts.de/2010/10/31/cloudfront-cache-invalidation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AWS Event Berlin</title>
		<link>http://www.moritz-siuts.de/2010/10/09/aws-event-berlin/</link>
		<comments>http://www.moritz-siuts.de/2010/10/09/aws-event-berlin/#comments</comments>
		<pubDate>Sat, 09 Oct 2010 19:17:57 +0000</pubDate>
		<dc:creator>moritz</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Cloud]]></category>

		<guid isPermaLink="false">http://www.moritz-siuts.de/?p=19</guid>
		<description><![CDATA[Am 7. Oktober fand in der Kalkscheune Berlin der AWS Cloud Computing Event statt. Neben den Reden von Amazon CTO Werner Vogels gab es einen Vortrag von Matt Tavis und einige 10 Minuten Vorträge von Firmen die bereits AWS im &#8230; <a href="http://www.moritz-siuts.de/2010/10/09/aws-event-berlin/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Am 7. Oktober fand in der Kalkscheune Berlin der <a href="http://aws.amazon.com/cloud-event-berlin/">AWS Cloud Computing Event</a> statt. Neben den Reden von Amazon CTO Werner Vogels gab es einen <a href="http://www.slideshare.net/nwcloud/nwcloud-best-practices-for-architecting-in-the-cloud">Vortrag von Matt Tavis</a> und einige 10 Minuten Vorträge v<a href="http://www.moritz-siuts.de/wp-content/uploads/2010/10/2010-10-07_18-19-30_983.jpg"><img class="size-medium wp-image-24 alignright" title="Amazon Webservices" src="http://www.moritz-siuts.de/wp-content/uploads/2010/10/2010-10-07_18-19-30_983-300x168.jpg" alt="" width="300" height="168" /></a>on Firmen die bereits AWS im Einsatz haben.</p>
<p>&#8220;Leider&#8221; kannte ich den Vortrag von Matt schon, zumindest hatte ich bereits die Folien gesehen und auch das Paper gelesen. Trotzdem war es nach den Vorträgen von Werner Vogels der beste Vortrag des Tages.</p>
<p>Die Vorträge der AWS-User waren leider etwas zu kurz und von der Qualität durchmischt. Es ging jeweils zuviel Zeit für die Vorstellung der Firma drauf. Dadurch blieb für den technischen Teil zu wenig Zeit übrig. Den Vortrag von <a href="http://schneevonmorgen.com">schneevonmorgen.com</a> gibt es übrigens <a href="http://schneevonmorgen.com/2010/10/aws-cloud-computing-event-berlin/">online</a>. Interessant war zum Beispiel die Aussage von <a href="http://www.plinga.com/">Plinga</a>, dass sie sich auf die kleinen VZ Netzwerke spezialisiert haben, weil die Konkurrenz bei Facebook zu groß ist. Die anschließende Fragerunde hat die Kurzvorträge dann noch aufgewertet und letztlich lohnenswert gemacht.</p>
<p>Insgesamt gab es keine Überraschungen oder wirklich etwas Neues auf dem Event. Wer sich vorher schon mit AWS auseinandergesetzt hatte dürfte nicht allzu viel neues erfahren haben, aber dass war bei einem kostenlosen Event auch nicht zu erwarten. Es hat sich aber trotzdem sehr gelohnt: Werner Vogels wirkt sehr beeindruckend und Amazon hat es geschafft durch den Event meine Motivation zu steigern mich noch mehr mit der Cloud auseinanderzusetzen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.moritz-siuts.de/2010/10/09/aws-event-berlin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test Driven Learning</title>
		<link>http://www.moritz-siuts.de/2010/10/02/test-driven-learning/</link>
		<comments>http://www.moritz-siuts.de/2010/10/02/test-driven-learning/#comments</comments>
		<pubDate>Sat, 02 Oct 2010 10:52:45 +0000</pubDate>
		<dc:creator>moritz</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://www.moritz-siuts.de/?p=15</guid>
		<description><![CDATA[Ich bin gestern über das Projekt scala-labs gestolpert. Ich finde es recht schwer sich mit simplen Hello-World Beispielen in eine neue Sprache einzuarbeiten und für viele echte Projekte zum ausprobieren von neuen Sprachen oder Frameworks fehlt mir häufig die Zeit. &#8230; <a href="http://www.moritz-siuts.de/2010/10/02/test-driven-learning/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ich bin gestern über das Projekt <a href="http://scala-labs.github.com/">scala-labs</a> gestolpert. Ich finde es recht schwer sich mit simplen Hello-World Beispielen in eine neue Sprache einzuarbeiten und für viele echte Projekte zum ausprobieren von neuen Sprachen oder Frameworks fehlt mir häufig die Zeit.</p>
<p>Deshalb finde ich die Idee von scala-labs echt gut. Man bekommt mehrere Unit-Tests vorgesetzt. Anfangs schlagen alle Tests fehl &#8211; es gilt die getesteten Scala Klassen, Traits und Objects zu reparieren und nebenbei das theoretische Scala Wissen praktisch anzuwenden.</p>
<p>Die scala-labs ersetzen sicher kein Buch, aber ich finde sie sind eine gute Ergänzung dazu. TDL (Test Driven Learning) eben.</p>
<p><strong>[Update]</strong><br />
Nachdem ich inzwischen auch wirklich viele der Aufgaben bearbeitet habe, bin ich über ein paar Fallstricke gestolpert. Zum Beispiel sind die Dependencies eher veraltet. Außerdem wurde noch ein Release Candidate von Scala 2.8 verwendet. Diese Punkte habe ich einem <a href="http://github.com/msiuts/scala-labs">Fork</a> behoben.</p>
<p><strong>[Update 2]</strong><br />
Inzwischen ist das original Projekt wieder besser gepflegt als mein fork. Am besten schaut man sich kurz beides an, bevor man loslegt.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.moritz-siuts.de/2010/10/02/test-driven-learning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

