<?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/"
	xmlns:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>DaRaFF&#039;s Blog &#187; Tools / Frameworks</title>
	<atom:link href="http://daraff.ch/category/softwareengineering/tools/feed/" rel="self" type="application/rss+xml" />
	<link>http://daraff.ch</link>
	<description>Gedanken über Themen, die mich beschäftigen</description>
	<lastBuildDate>Sun, 05 Feb 2012 07:02:00 +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>Warum sollte man einen Codsniffer verwenden?</title>
		<link>http://daraff.ch/2012/02/warum-sollte-man-einen-codsniffer-verwenden/</link>
		<comments>http://daraff.ch/2012/02/warum-sollte-man-einen-codsniffer-verwenden/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 15:30:22 +0000</pubDate>
		<dc:creator>DaRaFF</dc:creator>
				<category><![CDATA[Qualität]]></category>
		<category><![CDATA[Tools / Frameworks]]></category>

		<guid isPermaLink="false">http://daraff.ch/?p=1689</guid>
		<description><![CDATA[Ich habe zwar nächsten Dienstag meine Abschlussprüfungen, aber das Thema Codesniffer brennt mir momentan auf den Nägeln In letzter Zeit habe ich mich viel mit Testing und Softwarequalität beschäftigt. Da ich von diesen Themen und Tools überzeugt bin, habe ich &#8230; <a href="http://daraff.ch/2012/02/warum-sollte-man-einen-codsniffer-verwenden/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ich habe zwar nächsten Dienstag meine Abschlussprüfungen, aber das Thema Codesniffer brennt mir momentan auf den Nägeln <img src='http://daraff.ch/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>In letzter Zeit habe ich mich viel mit Testing und Softwarequalität beschäftigt. Da ich von diesen Themen und Tools überzeugt bin, habe ich sie bedenkenlos eingesetzt. Im Geschäft habe ich auch Jenkins aufgesetzt und betrieben.</p>
<h1>Überzeugungsarbeit für den Codesniffer</h1>
<p>Ich versuchte stets die Leute in den Projekten davon zu überzeugen, dass sie phpcs (PHP Codesniffer) auf der Konsole vor dem einchecken durchlaufen lassen sollten und dann entsprechend den Fehlern die Korrekturen durchführen sollten. Als sie meine Anweisung mit einem &#8220;WARUM?&#8221; erwiderten, antwortete ich jeweils, dass der Code so halt einheitlicher und aufgeräumter wirkt.</p>
<h1>Warum überhaupt einen Codesniffer verwenden?</h1>
<p>Auf einmal fragte ich mich selber, warum man einen Codesniffer einsetzen sollte. Bringt es dem Kunden einen Nutzen, wenn der Code dahinter &#8220;schön&#8221; und einheitlich aussieht? Ich versuchte also herauszufinden, warum es Sinn ergibt, wenn man sich Standards bei der Formatierung hält.</p>
<p>Ich forschte also ein bisschen nach und bin auf zwei gute Erklärungen gestossen.</p>
<h1>Keine Unterbrechung des Flows</h1>
<p>Es ist allseits bekannt, dass etwas neues, unerwartetes viel mehr Energie kostet. Genauso ist es bei einem Codestyle, der die ganze Zeit wechselt. Man benötigt neben dem Lösen des Problems noch viel Energie, die verschiedenen Codestyles mental aufzuarbeiten.</p>
<p>Wenn man einen bestimmen Codestyle kennt, kann man sich auf die wahren Probleme konzentrieren. Die Klammern, Einrückungen usw. verschwinden und man konzentriert sich auf die Aufgabe.</p>
<p>Je weniger der Entwickler oder Reviewer gestört wird, desto schneller ist er mit seiner Arbeit fertig. Dies hat also einen positiven Nutzen für den Kunden.</p>
<h1>Keine Diskussionen mehr über den Codestyle</h1>
<p>Wenn man sich auf einen Standard einigt (z.B. Symfony2, PEAR, Zend, &#8230;), so müssen sich die Entwickler nicht mehr darüber streiten, wie Code formatiert werden soll. Dies bringt dem Kunden einen unmittelbaren nutzen, nämlich keine verschwendete Zeit mit Diskussionen über den Codestyle.</p>
<p>&nbsp;</p>
<h1>Feedback</h1>
<p>Was haltet ihr vom Einsatz eines Codesniffers?</p>
<p>Warum sollte man ihn einsetzen oder warum gerade nicht?</p>
<p>Ich würde mich über Feedback freuen!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
 <p><a href="http://daraff.ch/?flattrss_redirect&amp;id=1689&amp;md5=97b04e47ca0bc86bcdd34d335b42c684" title="Flattr" target="_blank"><img src="http://daraff.ch/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://daraff.ch/2012/02/warum-sollte-man-einen-codsniffer-verwenden/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" href="http://daraff.ch/?flattrss_redirect&amp;id=1689&amp;md5=97b04e47ca0bc86bcdd34d335b42c684" type="text/html" />
	</item>
		<item>
		<title>Git vs Mercurial / Github vs Bitbucket</title>
		<link>http://daraff.ch/2010/12/git-vs-mercurial-github-vs-mercurial/</link>
		<comments>http://daraff.ch/2010/12/git-vs-mercurial-github-vs-mercurial/#comments</comments>
		<pubDate>Fri, 17 Dec 2010 06:00:13 +0000</pubDate>
		<dc:creator>DaRaFF</dc:creator>
				<category><![CDATA[Tools / Frameworks]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[mercurial]]></category>
		<category><![CDATA[versionierung]]></category>
		<category><![CDATA[versionskontrolle]]></category>

		<guid isPermaLink="false">http://daraff.ch/?p=1509</guid>
		<description><![CDATA[In privaten Projekte arbeite ich inzwischen ausschliesslich mit DVCS (git, Mercurial). Das liegt vor allem an 2 Punkten. Branching / Merging ist mit DVCS einfacher und natürlicher als z.B. mit Subversion. Ausserdem erlauben mir DVCS lokale commits, daher ist auch &#8230; <a href="http://daraff.ch/2010/12/git-vs-mercurial-github-vs-mercurial/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In privaten Projekte arbeite ich inzwischen ausschliesslich mit DVCS (git, Mercurial). Das liegt vor allem an 2 Punkten. Branching / Merging ist mit DVCS einfacher und natürlicher als z.B. mit Subversion. Ausserdem erlauben mir DVCS lokale commits, daher ist auch das offline arbeiten problemlos möglich.</p>
<p>Dieser Artikel soll aber vor allem die 2 DVCS git und mercurial sowie ihre 2 bekanntesten Plattformen github und bitbucket miteinander vergleichen.</p>
<h1>Git vs Mercurial</h1>
<p>Ich arbeite schon längere Zeit mit git und erst seit kurzem mit Mercurial. Mein Eindruck für den täglichen Gebrauch ist folgender:</p>
<ul>
<li>Die Befehle und Möglichkeiten sind nahezu identisch</li>
<li>Die Installation und die Verwendung von Mercurial unter Ubuntu ist einfacher</li>
<li>Insgesamt fühlt sich Mercurial für mich angenehmer an</li>
<li>Beide DVCS haben sehr gute GUI Apps &#8211; tortoisegit (nur Windows) / tortoisehg</li>
</ul>
<p>Ähnliche Eindrücke werden auch auf <a href="http://stackoverflow.com/questions/35837/what-is-the-difference-between-mercurial-and-git">Stackoverflow</a> geschildert.</p>
<h3><strong>Fazit</strong></h3>
<p><span style="color: #000000;">Im Endeffekt sind beide Repositories sehr ähnlich und es kommt auf die eigenen Vorlieben an. Ausserdem kann man mit <a href="http://hg-git.github.com/">hg-git</a> sowohl git repos in Mercurial repos und umgekehrt umwandeln.</span></p>
<h1><span style="color: #000000;">Github vs Bitbucket</span></h1>
<p><span style="color: #000000;">Ich habe beide Plattformen ausprobiert und denke, dass beide Anbieter fast identische Services anbieten. Im Web habe ich einen <a href="http://dev.pocoo.org/~blackbird/github-vs-bitbucket/bitbucket.html">Artikel</a> über einen entrüsteten github Mitarbeiter gefunden, welcher aufzeigt, dass bitbucket sehr vieles von github kopiert hat.</span></p>
<h3><span style="color: #000000;"><strong>Fazit</strong></span></h3>
<p><span style="color: #000000;">Github bietet meiner Meinung nach momentan noch mehr als Bitbucket, hat eine viel grössere Community und fokussiert sich sehr stark auf Open Source. Das mag ich.<br />
Bitbucket hat den Vorteil, dass es gratis ist, solange man private Projekte mit weniger als 5 Teilnehmern durchführt.</span></p>
 <p><a href="http://daraff.ch/?flattrss_redirect&amp;id=1509&amp;md5=0da99df998024115e056c708ab4ae618" title="Flattr" target="_blank"><img src="http://daraff.ch/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://daraff.ch/2010/12/git-vs-mercurial-github-vs-mercurial/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<atom:link rel="payment" href="http://daraff.ch/?flattrss_redirect&amp;id=1509&amp;md5=0da99df998024115e056c708ab4ae618" type="text/html" />

		<series:name><![CDATA[Versionierung]]></series:name>
	</item>
		<item>
		<title>Subversion Merging</title>
		<link>http://daraff.ch/2010/12/subversion-merging/</link>
		<comments>http://daraff.ch/2010/12/subversion-merging/#comments</comments>
		<pubDate>Sat, 11 Dec 2010 04:00:47 +0000</pubDate>
		<dc:creator>DaRaFF</dc:creator>
				<category><![CDATA[Tools / Frameworks]]></category>
		<category><![CDATA[merge]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[versionierung]]></category>
		<category><![CDATA[versionskontrolle]]></category>

		<guid isPermaLink="false">http://daraff.ch/?p=1499</guid>
		<description><![CDATA[Heute möchte ich über das heikle Thema Merging in Subversion berichten. Jeder der mit SVN arbeitet und mit Merging in Kontakt kam, hat sicher schon einige negative Erfahrungen gemacht. Ich werde euch zwar nicht vor Problemen bewahren können. Aber ich &#8230; <a href="http://daraff.ch/2010/12/subversion-merging/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Heute möchte ich über das heikle Thema Merging in Subversion berichten. Jeder der mit SVN arbeitet und mit Merging in Kontakt kam, hat sicher schon einige negative Erfahrungen gemacht. Ich werde euch zwar nicht vor Problemen bewahren können. Aber ich liste einen Leitfaden auf, welcher Aufzeigt, wie man ohne grössere Probleme durch das Merging hindurchkommt. Dies ist übrigens eine Zusammenfassung aus dem excellenten Manual vom <a href="http://svnbook.red-bean.com/">svnbook</a>, dass auf dem Netz frei verfügbar ist.</p>
<h1>Leitfaden Merging</h1>
<p>In den nächsten Zeilen folgt ein Leitfaden, wie Merging grundsätzlich funktioniert (gist Codeschnipsel)<br />
<script src="https://gist.github.com/731594.js"> </script><br />
Bei Merging haben sich ausserdem folgende wichtige Erkenntnisse bei mir durchgesetzt:</p>
<ul>
<li>Aufpassen, das man die Befehle mit der richtigen Datenbasis absetzt (trunk oder branch)</li>
<li>Bevor Befehle ausgeführt werden, sollte das lokale Arbeitsverzeichnis synchron mit dem SVN Repository sein</li>
<li>Regelmässig mergen (mind. 1 mal pro Woche)! Wenn man zu lange wartet, hat man teilweise so viele Konflikte, dass es äussert mühsam ist, die 2 Datenstämme wieder zusammenzuführen.</li>
</ul>
<p>Habt ihr noch spezielle Tips für&#8217;s Mergen?</p>
 <p><a href="http://daraff.ch/?flattrss_redirect&amp;id=1499&amp;md5=a49859eee3f2c9d4d63d14b32ea0faa0" title="Flattr" target="_blank"><img src="http://daraff.ch/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://daraff.ch/2010/12/subversion-merging/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<atom:link rel="payment" href="http://daraff.ch/?flattrss_redirect&amp;id=1499&amp;md5=a49859eee3f2c9d4d63d14b32ea0faa0" type="text/html" />

		<series:name><![CDATA[Versionierung]]></series:name>
	</item>
		<item>
		<title>PHP Codesniffer &#8211; Regeln definieren mit ruleset.xml</title>
		<link>http://daraff.ch/2010/09/php-codesniffer-regeln-definieren-mit-ruleset-xml/</link>
		<comments>http://daraff.ch/2010/09/php-codesniffer-regeln-definieren-mit-ruleset-xml/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 17:56:14 +0000</pubDate>
		<dc:creator>DaRaFF</dc:creator>
				<category><![CDATA[Qualität]]></category>
		<category><![CDATA[Tools / Frameworks]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpcs]]></category>
		<category><![CDATA[software qualität]]></category>

		<guid isPermaLink="false">http://daraff.ch/?p=1370</guid>
		<description><![CDATA[Aktuell beschäftige ich mich intensiv mit Softwarequalität und darum möchte ich einen Bericht über den aktuellsten PHP_CodeSniffer schreiben. Regelsets definieren &#8211; der alte Weg Vor einigen Monaten habe ich den CodeSniffer durch die Artikelserie von Nils auf phphatesme entdeckt. Der &#8230; <a href="http://daraff.ch/2010/09/php-codesniffer-regeln-definieren-mit-ruleset-xml/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Aktuell beschäftige ich mich intensiv mit Softwarequalität und darum möchte ich einen Bericht über den aktuellsten PHP_CodeSniffer schreiben.</p>
<h4><strong>Regelsets definieren &#8211; der alte Weg</strong></h4>
<p>Vor einigen Monaten habe ich den CodeSniffer durch die <a href="http://www.phphatesme.com/blog/tools/php-code-sniffer-parameter-und-eigene-regelsets-standard/" target="_blank">Artikelserie von Nils auf phphatesme</a> entdeckt. Der CodeSniffer wurde von mir direkt ausprobiert. Kurze Zeit später habe ich eigene Regeln erstellt (Regelset Ordner mit PHP kopieren und anpassen&#8230;), was aber eine recht mühsame Angelegenheit ist. Zum Glück gibt es jetzt eine neue Möglichkeit&#8230;</p>
<h4><strong>Regelsets definieren  - neu mit XML</strong></h4>
<p><span style="color: #000000;">Ab der Version 1.3.0 kann man die Regeln sehr einfach mit einem XML File konfigurieren. Hier ein Beispiel:</span></p>
<p><script src="http://gist.github.com/563640.js"></script></p>
<p>Das XML sagt folgendes:</p>
<ul>
<li>Nimm alle PEAR Sniff Regeln</li>
<li>Schliesse von PEAR die Regeln LineLength und ScopeIndent aus</li>
<li>Ergänze eine einzelne Regel OpeningFunctionBraceKernighanRitchie</li>
</ul>
<p>Somit hat man (wenn man die Regeln mit <a href="http://pear.php.net/package/PHP_CodeSniffer/docs/1.3.0a1/" target="_blank">Namen</a> kennt) innerhalb von wenigen Minuten seine eigenes Ruleset zusammengestellt. Weitere Tips gibts bei <a href="http://www.squizlabs.com/view?a=2697" target="_blank">Squizlabs</a> nachzulesen.</p>
<h4><strong>Anwendung Regelset</strong></h4>
<p><strong>Möglichkeit 1</strong></p>
<p>Das Regelset kann ich nun im Standards Ordner von Codesniffer ablegen (unter Ubuntu /usr/share/php/PHP/CodeSniffer/Standards/&lt;RegelsetName&gt;/ruleset.xml).</p>
<p>Danach einfach folgenden Aufruf machen:</p>
<p>phpcs &#8211;standard=&lt;RegelsetName&gt; /path/to/code</p>
<p><strong>Möglichkeit 2</strong></p>
<p>Das XML kann irgendwo abgelegt werden und muss dann so aufgerufen werden:</p>
<p>phpcs &#8211;standard=/path/to/ruleset.xml /path/to/code</p>
 <p><a href="http://daraff.ch/?flattrss_redirect&amp;id=1370&amp;md5=e566fda542119eac44c45fb71c4bc067" title="Flattr" target="_blank"><img src="http://daraff.ch/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://daraff.ch/2010/09/php-codesniffer-regeln-definieren-mit-ruleset-xml/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" href="http://daraff.ch/?flattrss_redirect&amp;id=1370&amp;md5=e566fda542119eac44c45fb71c4bc067" type="text/html" />
	</item>
		<item>
		<title>Netbeans für PHP &#8211; Die IDE meiner Wahl</title>
		<link>http://daraff.ch/2010/01/netbeans-fur-php-die-ide-meiner-wahl/</link>
		<comments>http://daraff.ch/2010/01/netbeans-fur-php-die-ide-meiner-wahl/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 10:21:23 +0000</pubDate>
		<dc:creator>DaRaFF</dc:creator>
				<category><![CDATA[Tools / Frameworks]]></category>

		<guid isPermaLink="false">http://daraff.ch/?p=611</guid>
		<description><![CDATA[Warum Netbeans? Lange habe ich nach einer geeigneten IDE für mich bzw. meine Projekte mit PHP gesucht und diese nun endlich gefunden. Seit einigen Monaten arbeite ich mit Netbeans. Im Vergleich zu Aptana und Eclipse finde ich Netbeans intuitiver und &#8230; <a href="http://daraff.ch/2010/01/netbeans-fur-php-die-ide-meiner-wahl/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>Warum Netbeans?</strong></p>
<p>Lange habe ich nach einer geeigneten IDE für mich bzw. meine Projekte mit PHP gesucht und diese nun endlich gefunden. Seit einigen Monaten arbeite ich mit Netbeans.</p>
<p>Im Vergleich zu Aptana und Eclipse finde ich Netbeans intuitiver und insgesamt leichtgewichtiger und das gefällt mir gut. Die Installation von Plugins ist super einfach und übersichtlich. Insgesamt habe ich mich sehr schnell mit Netbeans zurechtgefunden. Auch darum bin ich wahrscheinlich bei dieser IDE geblieben.</p>
<p><strong>Effizienz Implementierung</strong></p>
<p>Momentan haben es mir die Themen bezüglich der Steigerung der Implementierungsgeschwindigkeit besonders angetan. Dies unterstützt Netbeans hervorragend.</p>
<div>
<div>
<ul>
<li><a href="http://www.phpmag.ru/2009/01/23/extremely-usefull-netbeans-shortcuts/" target="_blank">Nützliche Netbeans Shortcuts</a> bzw. unter Tools-&gt;Options-&gt;Keymap können sämtliche Shortcuts gefunden und konfiguriert werden</li>
<li><a href="http://blogs.sun.com/netbeansphp/entry/php_templates_improved" target="_blank">Netbeans Templates</a></li>
<li><a href="http://blogs.sun.com/netbeansphp/entry/sql_code_completion_improved" target="_blank">SQL Code Completion</a></li>
</ul>
</div>
<p><strong>Weiteres</strong></p>
<p>Anschliessend folgen noch ein paar nützliche Links, welche ich ausserdem zum Thema Netbeans gefunden habe.</p>
<ul>
<li><a href="http://blogs.sun.com/netbeansphp/entry/php_namespace_support_screencast" target="_blank">Namespaces mit Netbeans</a></li>
<li><a href="http://blogs.sun.com/netbeansphp/entry/recent_improvements_in_phpunit_support" target="_blank">Verbesserter PHPUnit Support in Netbeans</a></li>
<li><a href="http://blogs.sun.com/netbeansphp/entry/generating_php_documentation_from_netbeans" target="_blank">Generieren von PHPDocumentor in Netbeans</a></li>
<li><a href="http://it-republik.de/jaxenter/news/Interaktiver-IDE-Vergleich-Eclipse-vs.-NetBeans-vs.-IntelliJ-052829.html" target="_blank">Netbeans vs Eclipse vs IDEA</a></li>
</ul>
</div>
 <p><a href="http://daraff.ch/?flattrss_redirect&amp;id=611&amp;md5=5136016e18f0aaded765c47b66ec11c4" title="Flattr" target="_blank"><img src="http://daraff.ch/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://daraff.ch/2010/01/netbeans-fur-php-die-ide-meiner-wahl/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<atom:link rel="payment" href="http://daraff.ch/?flattrss_redirect&amp;id=611&amp;md5=5136016e18f0aaded765c47b66ec11c4" type="text/html" />
	</item>
	</channel>
</rss>

