<?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>ITWS BLOG &#187; coding</title>
	<atom:link href="http://blog.itws.de/category/coding/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.itws.de</link>
	<description>The cake is a lie!</description>
	<lastBuildDate>Tue, 31 Jan 2012 10:34:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Deployment von Ruby on Rails Applikationen</title>
		<link>http://blog.itws.de/895/deployment-von-ruby-on-rails-applikationen/</link>
		<comments>http://blog.itws.de/895/deployment-von-ruby-on-rails-applikationen/#comments</comments>
		<pubDate>Sat, 10 Dec 2011 21:54:21 +0000</pubDate>
		<dc:creator>Benny</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[passenger]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://blog.itws.de/?p=895</guid>
		<description><![CDATA[Ich bin ja eigentlich ein sehr großer Fan von Ruby und Ruby on Rails. Der Grund, warum ich mich vor wenigen Jahren davon abgewandt hatte, war, dass es eine riesen Frickelei war eine RoR Application zu deployen. Und das hatte mich damals so genervt, dass ich alles in die Tonne getreten habe und es sein ließ. Nun hatte ich mich die letzten Tage wieder etwas mit dem Thema RoR Deployment befasst und herausgefunden, dass sich [...]]]></description>
			<content:encoded><![CDATA[<p>Ich bin ja eigentlich ein sehr großer Fan von Ruby und Ruby on Rails. Der Grund, warum ich mich vor wenigen Jahren davon abgewandt hatte, war, dass es eine riesen Frickelei war eine RoR Application zu deployen. Und das hatte mich damals so genervt, dass ich alles in die Tonne getreten habe und es sein ließ.</p>
<p>Nun hatte ich mich die letzten Tage wieder etwas mit dem Thema RoR Deployment befasst und herausgefunden, dass sich hier in der Zwischenzeit viel getan hat. Dank dem <a href="http://www.modrails.com/" target="_blank">Phusion Passenger</a> (aka mod_rails) Projekt.  Habe es vorhin direkt mal ausprobiert und bin davon sehr begeistert. Super performant, super einfach, super super.</p>
<p>Werde demnächst dann wohl wieder etwas mehr mit Ruby on Rails machen <img src='http://blog.itws.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h4  class="related_post_title">Ähnliche Artikel</h4><ul class="related_post"><li><a href="http://blog.itws.de/767/debian-von-apache-zu-nginx-teil-4-einen-tomcat-anbinden/" title="Debian: Von Apache zu Nginx &#8211; Teil 4: Einen Tomcat anbinden">Debian: Von Apache zu Nginx &#8211; Teil 4: Einen Tomcat anbinden</a></li><li><a href="http://blog.itws.de/747/debian-von-apache-zu-nginx-teil-1-vorwort/" title="Debian: Von Apache zu Nginx &#8211; Teil 1: Vorwort">Debian: Von Apache zu Nginx &#8211; Teil 1: Vorwort</a></li><li><a href="http://blog.itws.de/783/wordpress-unter-nginx/" title="Wordpress unter Nginx">Wordpress unter Nginx</a></li></ul> <p><a href="http://blog.itws.de/?flattrss_redirect&amp;id=895&amp;md5=6ecd430ccb7a04135894640c7a92cb39" title="Flattr" target="_blank"><img src="http://blog.itws.de/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.itws.de/895/deployment-von-ruby-on-rails-applikationen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Clean Code: Das KISS-Prinzip</title>
		<link>http://blog.itws.de/362/clean-code-das-kiss-prinzip/</link>
		<comments>http://blog.itws.de/362/clean-code-das-kiss-prinzip/#comments</comments>
		<pubDate>Fri, 10 Dec 2010 19:53:14 +0000</pubDate>
		<dc:creator>Benny</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[clean code]]></category>
		<category><![CDATA[kiss]]></category>

		<guid isPermaLink="false">http://blog.itws.de/?p=362</guid>
		<description><![CDATA[Diejenigen, die wissen um was es geht, wundert es nicht, dass der n&#228;chste Artikel meiner Clean Code-Reihe dem KISS-Prinzip gewidmet ist. Dem Rest sei gesagt: Dieser Artikel hat nichts mit &#160;der US-Amerikanten Hard-Rock-Band aus den 70er zu tun Es handelt sich dabei vielmehr um eine Disziplin beim Programmieren: KISS steht f&#252;r Keep It Simple, Stupid!&#160;im Sinne von &#34;Halt es einfach, Idiot!&#34;. Aber was hei&#223;t &#34;einfach&#34;?&#160;Einfach bedeutet in diesem Fall, dass man nicht unn&#246;tig mehr macht, [...]]]></description>
			<content:encoded><![CDATA[<p>Diejenigen, die wissen um was es geht, wundert es nicht, dass der n&auml;chste Artikel meiner Clean Code-Reihe dem KISS-Prinzip gewidmet ist.</p>
<p>Dem Rest sei gesagt: Dieser Artikel hat nichts mit &nbsp;der US-Amerikanten Hard-Rock-Band aus den 70er zu tun <img src='http://blog.itws.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Es handelt sich dabei vielmehr um eine Disziplin beim Programmieren: <strong>KISS</strong> steht f&uuml;r <strong><u>K</u>eep <u>I</u>t <u>S</u>imple, <u>S</u>tupid!</strong>&nbsp;im Sinne von &quot;Halt es einfach, Idiot!&quot;.</p>
<p>Aber was hei&szlig;t &quot;einfach&quot;?&nbsp;Einfach bedeutet in diesem Fall, dass man nicht unn&ouml;tig mehr macht, als wirklich n&ouml;tig. Denn das kostet im Zweifelsfall nur unn&ouml;tig Zeit und macht den Code schwerer zu lesen und zu warten.</p>
<p>Leider lassen sich die Entwickler nur zu gern von der &quot;Feature-Geilheit&quot; erfassen und coden wahnsinnige Dinge, die zwar verdammt cool sind, aber niemand braucht und im schlimmsten fall auch sonst niemand versteht. Dies l&auml;sst sich wohl darauf zur&uuml;ckf&uuml;hren, dass das Coden an sich eine recht langweilige Sache ist. Selten entwickelt man wirklich innovative und einzigartige Systeme. Meistens implementiert man stattdessen stupide Datenbank-Abfragen, langweilige Business Logiken und unspektakul&auml;re Oberfl&auml;chen. Im &ouml;den Einheits-Code sucht man Herausforderungen und M&ouml;glichkeiten seine F&auml;higkeiten einzusetzen. KISS bedeutet genau diesem Drang zu widerstehen und brav und artig einfach exakt das zu implementieren, was ben&ouml;tigt wird. Nicht mehr, nicht weniger und m&ouml;glichst aus einer M&uuml;cke keinen Elefanten machen.</p>
<h4  class="related_post_title">Ähnliche Artikel</h4><ul class="related_post"><li><a href="http://blog.itws.de/329/clean-code-das-dry-prinzip/" title="Clean Code: Das DRY-Prinzip">Clean Code: Das DRY-Prinzip</a></li><li><a href="http://blog.itws.de/681/github-account-ausgepackt/" title="GitHub Account ausgepackt">GitHub Account ausgepackt</a></li><li><a href="http://blog.itws.de/672/schei-encoding/" title="Schei? Encoding &#8230;">Schei? Encoding &#8230;</a></li></ul> <p><a href="http://blog.itws.de/?flattrss_redirect&amp;id=362&amp;md5=781d5c614a29e8e964dd68118085105a" title="Flattr" target="_blank"><img src="http://blog.itws.de/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.itws.de/362/clean-code-das-kiss-prinzip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Clean Code: Das DRY-Prinzip</title>
		<link>http://blog.itws.de/329/clean-code-das-dry-prinzip/</link>
		<comments>http://blog.itws.de/329/clean-code-das-dry-prinzip/#comments</comments>
		<pubDate>Fri, 26 Nov 2010 09:33:07 +0000</pubDate>
		<dc:creator>Benny</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[clean code]]></category>
		<category><![CDATA[continous integration]]></category>
		<category><![CDATA[dry]]></category>

		<guid isPermaLink="false">http://blog.itws.de/?p=329</guid>
		<description><![CDATA[Dies ist der erste Teil meiner Artikel-Reihe &#34;Clean Code&#34;, welchem noch einige Weitere folgen werden und welche sich haupts&#228;chlich damit befassen, wie man sauberen, wartbaren und stabilen Code schreibt. Ich versuche dabei m&#246;glichst von der Programmiersprache selbst zu abstrahieren und mich nur mit den prinzipiellen Mustern und Vorgehensweisen zu besch&#228;ftigen. Dennoch muss ich ab und an Code-Beispiele einbringen und da werde ich mir dann wohl mit PHP und Java helfen. in diesem Artikel geht es [...]]]></description>
			<content:encoded><![CDATA[<p>Dies ist der erste Teil meiner Artikel-Reihe &quot;Clean Code&quot;, welchem noch einige Weitere folgen werden und welche sich haupts&auml;chlich damit befassen, wie man sauberen, wartbaren und stabilen Code schreibt. Ich versuche dabei m&ouml;glichst von der Programmiersprache selbst zu abstrahieren und mich nur mit den prinzipiellen Mustern und Vorgehensweisen zu besch&auml;ftigen. Dennoch muss ich ab und an Code-Beispiele einbringen und da werde ich mir dann wohl mit PHP und Java helfen.</p>
<p>in diesem Artikel geht es also um das DRY-Prinzip, welches nicht nur die einfachste Regel darstellt, sondern zugleich auch die, die am meisten misachtet wird.</p>
<p><span id="more-329"></span></p>
<p>DRY steht f&uuml;r <strong><u>D</u>on&#39;t <u>R</u>epeat <u>Y</u>ourself</strong> und der Name ist Programm(code): Ein Code-Fragement sollte immer nur exakt einmal vorkommen und sollte man dieses Fragment nochmal ben&ouml;tigen, wird es in eine Funktion/Methode ausgelagert. Leider erfordert das klassiche Copy&#39;n&#39;Paste weitaus weniger Aufwand und Gehirn-Aktivit&auml;t, weshalb dies meist die bevorzugte Vorgehensweise ist. Gerade wenn es schnell gehen muss, spart man sich den &nbsp;Aufwand eine neue Methode zu implementieren gerne.</p>
<p>Dieses leichtsinnige Verhalten bl&auml;ht nicht nur den Code auf, wie man erst vermuten mag: Das eigentliche Problem sind die potentiellen Fehlerquellen, die man dadurch erschafft.<br />
	Stelen wir uns folgendes Szenario vor:<br />
	Wir haben ein Code-Fragment geschrieben, welches die Verbindung zu einem IMAP-Server aufbaut, eine Liste der ungelesenen E-Mails erstellt und die Verbindung wieder schlie&szlig;t.&nbsp;Diese Funktion ben&ouml;tigen wir an einer anderen Stelle in einer anderen Klasse nochmal, also wird das Code-Fragment einfach kopiert. Nach einiger Zeit f&auml;llt auf &quot;Ups, hab die Zeile, mit dem close-Aufruf vergessen zu kopieren &#8230;&quot;. Diese wir dann noch schnell hinterhergeworfen und direkt haben wir den ersten Fehler: Beim Kopieren wurde das Code-Fragment ver&auml;ndert weil ein Teil nicht mitkopiert wurde.</p>
<p>Zwei Monate sp&auml;ter, soll ein Kollege einen Bugfix an diesem Code-Fragment durchf&uuml;hren. Er wei&szlig; in welcher Datei und in welcher Zeile der Fehler aufgetreten ist, &ouml;ffnet diese Datei, korrigiert die Zeile, schlie&szlig;t die Datei, f&uuml;hrt ein commit durch und damit wars das. Und hier haben wir direkt das n&auml;chste Problem: Dieses Code-Fragment, welches gerade korrigiert wurde, kommt (mit genau dem gleichen Fehler) noch an mindestens einer weiteren Stelle im Code vor. Dieser redundante Code wurde nicht korrigiert, entsprechend unterscheiden sich diese beiden Code-Fragmente, welche exakt die gleiche Aufgabe haben, nun voneinander: es herrscht Inkonsistenz.<br />
	Der entsprechende Entwickler h&auml;tte nun also pr&uuml;fen m&uuml;ssen, ob dieses Snippet noch &ouml;fter vorkommt und entsprechend jede Instanz mit dem Bugfix versehen m&uuml;ssen. Oder das ganze einem Refactoring unterziehen m&uuml;ssen. Beides bedeutet zus&auml;tzlicher Aufwand und zwar mehr als es gekostet h&auml;tte es direkt ordentlich zu machen.</p>
<p>Ein Tool, das beim Finden von doppelten Code-Fragmenten hilft, ist die so genannte Copy&#39;n&#39;Paste-Detection. Dies ist in den meisten Continous Integration Systemen enthalten und hilft ungemein, den Code zu verbessern.</p>
<p><strong>Fazit:</strong> Doppelte Code-Fragmente, welche durch Copy&#39;n&#39;Paste quer im Projekt verteilt werden, erzeugen schnell Inkonsistenzen, erh&ouml;hen die Fehleranf&auml;lligkeit und sind Gift f&uuml;r die Wartbarkeit eines Projekts. Bei jedem Programmierer sollten also alle Alarmglocken l&auml;uten, wenn er die selbe Funktionalit&auml;t mehr als einmal ben&ouml;tigt. Hier sollte immer eine neue Methode/Funktion implementiert werden.</p>
<h4  class="related_post_title">Ähnliche Artikel</h4><ul class="related_post"><li><a href="http://blog.itws.de/362/clean-code-das-kiss-prinzip/" title="Clean Code: Das KISS-Prinzip">Clean Code: Das KISS-Prinzip</a></li><li><a href="http://blog.itws.de/681/github-account-ausgepackt/" title="GitHub Account ausgepackt">GitHub Account ausgepackt</a></li><li><a href="http://blog.itws.de/672/schei-encoding/" title="Schei? Encoding &#8230;">Schei? Encoding &#8230;</a></li></ul> <p><a href="http://blog.itws.de/?flattrss_redirect&amp;id=329&amp;md5=a49f5e952ca34186de4569893da3a785" title="Flattr" target="_blank"><img src="http://blog.itws.de/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.itws.de/329/clean-code-das-dry-prinzip/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

