<?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>gouranga &#187; programming</title>
	<atom:link href="http://www.gouranga.me/tag/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gouranga.me</link>
	<description>ein wenig von fast allem</description>
	<lastBuildDate>Fri, 24 Jun 2011 12:07:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Display Git Revision in your .NET/C# Software</title>
		<link>http://www.gouranga.me/2011/03/09/display-git-revision-in-your-donet-software/</link>
		<comments>http://www.gouranga.me/2011/03/09/display-git-revision-in-your-donet-software/#comments</comments>
		<pubDate>Wed, 09 Mar 2011 12:20:37 +0000</pubDate>
		<dc:creator>Steffen</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[assembly]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[dotnet]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[sed]]></category>

		<guid isPermaLink="false">http://www.gouranga.me/?p=797</guid>
		<description><![CDATA[the git commit id is a unique way to identify a certain instance of your software. Its especially helpful when lots of builds and versions are around (keeping your customer up-to-date with your development cycle). I assume you use msysgit &#8230; <a href="http://www.gouranga.me/2011/03/09/display-git-revision-in-your-donet-software/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>the git commit id is a unique way to identify a certain instance of your software. Its especially helpful when lots of builds and versions are around (keeping your customer up-to-date with your development cycle).</p>
<p>I assume you use msysgit and added the bin directory to your PATH environment in such a way git and sed become available via the regular windows Commandline.</p>
<p>Straightforward thinking we want to process this kind of meta information by the &#8220;assembly&#8221; keyword, as we do for the application title, version and copyright.</p>
<p>First we have to layout a new class (global namespace)<br />
<code><br />
[AttributeUsage(AttributeTargets.Assembly)]<br />
public class AssemblyGitBuild : Attribute<br />
{<br />
public string gitBuild { get; private set; }<br />
public AssemblyGitBuild(string txt) { gitBuild = txt; }<br />
}<br />
</code></p>
<p>Add this to your Projects Prebuilding Events:<br />
<code><br />
git rev-parse --short HEAD | sed -e 's/\(.*\)/[assembly: AssemblyGitBuild(\"\1\")]/' &gt; $(ProjectDir)git_version.cs<br />
</code></p>
<p>Build it. Now you see a new file &#8220;git_version.cs&#8221; in your projects directory.<br />
Add it to your project.</p>
<p>You can use the git id like that</p>
<p><code> String gitBuild = "unknown";</code></p>
<p><code>try<br />
{<br />
gitBuild = typeof(AssemblyGitBuild).Assembly.GetCustomAttributes(typeof(AssemblyGitBuild), false).Cast&lt;AssemblyGitBuild&gt;().First().gitBuild;<br />
}<br />
catch (Exception e)<br />
{<br />
Logger.Exception(e);<br />
}<br />
tstbVersion.Text = "Version " + Application.ProductVersion +" Build "+ gitBuild;<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gouranga.me/2011/03/09/display-git-revision-in-your-donet-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weisheiten des Projektalltags</title>
		<link>http://www.gouranga.me/2011/01/16/weisheiten-des-projektalltags/</link>
		<comments>http://www.gouranga.me/2011/01/16/weisheiten-des-projektalltags/#comments</comments>
		<pubDate>Sat, 15 Jan 2011 23:26:44 +0000</pubDate>
		<dc:creator>Steffen</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[weisheiten]]></category>

		<guid isPermaLink="false">http://www.gouranga.me/?p=775</guid>
		<description><![CDATA[Identität In C, you merely shoot yourself in the foot. In C++, you accidentally create a dozen instances of yourself and shoot them all in the foot. Providing emergency medical care is impossible, because you can&#8217;t tell which are bitwise &#8230; <a href="http://www.gouranga.me/2011/01/16/weisheiten-des-projektalltags/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h3>Identität</h3>
<blockquote><p>In C, you merely shoot yourself in the foot.</p>
<p>In C++, you accidentally create a dozen instances of yourself and shoot them all in the foot. Providing emergency medical care is impossible, because you can&#8217;t tell which are bitwise copies and which are just pointing at others and saying, &#8220;That&#8217;s me, over there.&#8221;</p></blockquote>
<h3>Führung</h3>
<blockquote><p>I wish i had said this, but it was said by asd@asd.com in comp.software-eng.</p>
<p>Leaders:</p>
<ul>
<li>lead by example</li>
<li>don&#8217;t ask anything of anyone they wouldn&#8217;t do themselves</li>
<li>are called on to make difficult and unpopular decisions</li>
<li>keep the team focused</li>
<li>reward/support their team in whatever they do</li>
<li>keep/clear unnecessary crap out of the way of the team</li>
</ul>
<p>Consensus is great. If it lasts for the project lifecycle, consider yourself blessed. I&#8217;ve been on a couple projects where two engineers just blantantly disagreed! They were always:</p>
<p>Programmer #1 says &#8221; x = 1&#8243;<br />
Programmer #2 says &#8221; x != 1&#8243;</p>
<p>That&#8217;s when a Project Leader is required. Unless you want to flip a coin.</p>
<p>Oh yah &#8211; one more thing. Project leaders: TAKE the blame when things go wrong and SHARE the credit when things go right.</p>
<p>Ain&#8217;t easy &#8211; but it&#8217;s the way I try to run my life</p></blockquote>
<h3>Akzeptieren von Ideen</h3>
<ul>
<blockquote>
<li>It&#8217;s impossible.</li>
<li>Maybe it&#8217;s possible, but it&#8217;s weak and uninteresting.</li>
<li>It is true and I told you so.</li>
<li>I thought of it first.</li>
<li>How could it be otherwise.</li>
</blockquote>
</ul>
<ul><em>If you come to objects with a negative preconception please keep an open mind. You may still conclude objects are bunk, but there&#8217;s a road you must follow to accept something different. Allow yourself to travel it for a while.</em></ul>
<h3>Phasen eines Projektes</h3>
<ul>
<blockquote>
<li>Enthusiasm</li>
<li>Disillusionment</li>
<li>Panic</li>
<li>A Search for the Guilty</li>
<li>The Punishment of the Innocent</li>
<li>Praise and Honor for the Non-Participants</li>
</blockquote>
</ul>
<p>Quellen:</p>
<ul>
<li><a href="http://www.possibility.com/Cpp/CppCodingStandard.html">http://www.possibility.com/Cpp/CppCodingStandard.html</a></li>
<li><a href="http://www.possibility.com/Cpp/const.html">http://www.possibility.com/Cpp/const.html</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.gouranga.me/2011/01/16/weisheiten-des-projektalltags/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qt &#8211; Über Ordner und Resourcen iterieren</title>
		<link>http://www.gouranga.me/2009/10/02/qt-uber-ordner-und-resourcen-iterieren/</link>
		<comments>http://www.gouranga.me/2009/10/02/qt-uber-ordner-und-resourcen-iterieren/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 19:03:46 +0000</pubDate>
		<dc:creator>Steffen</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[qt]]></category>

		<guid isPermaLink="false">http://www.gouranga.me/?p=676</guid>
		<description><![CDATA[Wer in Qt schnell über eine Verzeichnisstruktur iterieren will, der nutzt dazu QDirIterator. Die Qt Dokumentation meint dazu: QDirIterator it("/etc", QDirIterator::Subdirectories); while (it.hasNext()) { qDebug() &#60;&#60; it.next(); // /etc/. // /etc/.. // /etc/X11 // /etc/X11/fs // ... } Nichts besonders, &#8230; <a href="http://www.gouranga.me/2009/10/02/qt-uber-ordner-und-resourcen-iterieren/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Wer in Qt schnell über eine Verzeichnisstruktur iterieren will, der nutzt dazu QDirIterator.<br />
Die Qt Dokumentation meint dazu:</p>
<pre lang="cpp" escaped="true"> QDirIterator it("/etc", QDirIterator::Subdirectories);
 while (it.hasNext()) {
     qDebug() &lt;&lt; it.next();

     // /etc/.
     // /etc/..
     // /etc/X11
     // /etc/X11/fs
     // ...
 }</pre>
<p>Nichts besonders, sowas kann heutzutage jedes Framework &#8211; und Java von Haus aus.</p>
<p>Jetzt wirds awesome: QDirIterator greift nicht direkt auf das Dateisystem zu (Architekturbedingt macht das bei einem plattformunabhängigen Framework auch keinen Sinn), sondern über Ableitungen von QAbstractFileEngineIterator. Und so ermöglicht QDirIterator auch den Zugriff auf in die Applikation kompilierte Resourcen:</p>
<pre lang="cpp" escaped="true">QDirIterator it(":/subitems");
 while (it.hasNext()) {
     qDebug() &lt;&lt; it.next();

    // :/subitems/globe.png
    // :/subitems/pin.png
    // :/subitems/light_bulb.png
     // ...
 }</pre>
<p>Awesome!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gouranga.me/2009/10/02/qt-uber-ordner-und-resourcen-iterieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Computer Programming (in a nutshell)</title>
		<link>http://www.gouranga.me/2009/01/03/computer-programming-in-a-nutshel/</link>
		<comments>http://www.gouranga.me/2009/01/03/computer-programming-in-a-nutshel/#comments</comments>
		<pubDate>Sat, 03 Jan 2009 18:18:33 +0000</pubDate>
		<dc:creator>Steffen</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[comic]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.steffen-goertz.de/?p=385</guid>
		<description><![CDATA[Eigentlich möchte ich hier nicht schon wieder &#8216;nen Comicstrip posten, aber der hier ist es wirklich wert:]]></description>
			<content:encoded><![CDATA[<p>Eigentlich möchte ich hier nicht schon wieder &#8216;nen Comicstrip posten, aber der hier ist es wirklich wert:</p>
<div class="wp-caption alignnone" style="width: 456px"><a href="http://abstrusegoose.com/98"><img title="Computer Programming kurz erklärt" src="http://abstrusegoose.com/strips/computer_programming_101.JPG" alt="Computer Programming kurz erklärt" width="446" height="340" /></a><p class="wp-caption-text">Computer Programming kurz erklärt</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.gouranga.me/2009/01/03/computer-programming-in-a-nutshel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

