<?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>bb-generations blog</title>
	<atom:link href="http://bbgen.net/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://bbgen.net/blog</link>
	<description>blogging about IT</description>
	<lastBuildDate>Sun, 26 Jun 2011 20:39:58 +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>Java: Loading a SVG into a BufferedImage</title>
		<link>http://bbgen.net/blog/2011/06/java-svg-to-bufferedimage/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=java-svg-to-bufferedimage</link>
		<comments>http://bbgen.net/blog/2011/06/java-svg-to-bufferedimage/#comments</comments>
		<pubDate>Sun, 26 Jun 2011 20:39:58 +0000</pubDate>
		<dc:creator>bb-generation</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[batik]]></category>
		<category><![CDATA[bufferedimage]]></category>
		<category><![CDATA[graphic]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[svg]]></category>

		<guid isPermaLink="false">http://bbgen.net/blog/?p=176</guid>
		<description><![CDATA[Unfortunately Java does not support SVG by default. But there is a great Apache Project aiming just for this purpose called batik. Although the reference and documentation is pretty well, it does not cover loading an SVG and just saving &#8230; <a href="http://bbgen.net/blog/2011/06/java-svg-to-bufferedimage/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Unfortunately Java does not support SVG by default. But there is a great Apache Project aiming just for this purpose called <a href="http://xmlgraphics.apache.org/batik/">batik</a>.</p>
<p>Although the reference and documentation is pretty well, it does not cover loading an SVG and just saving it as a BufferedImage.</p>
<p>Here&#8217;s an example of how I did it:</p>
<h3>Write a simple Transcoder</h3>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> BufferedImageTranscoder <span style="color: #000000; font-weight: bold;">extends</span> ImageTranscoder
<span style="color: #009900;">&#123;</span>
  @Override
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">BufferedImage</span> createImage<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> w, <span style="color: #000066; font-weight: bold;">int</span> h<span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #003399;">BufferedImage</span> bi <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">BufferedImage</span><span style="color: #009900;">&#40;</span>w, h, <span style="color: #003399;">BufferedImage</span>.<span style="color: #006633;">TYPE_INT_ARGB</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">return</span> bi<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  @Override
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> writeImage<span style="color: #009900;">&#40;</span><span style="color: #003399;">BufferedImage</span> img, TranscoderOutput output<span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">img</span> <span style="color: #339933;">=</span> img<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">BufferedImage</span> getBufferedImage<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">return</span> img<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">BufferedImage</span> img <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<h3>Using the Transcoder</h3>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #003399;">BufferedImage</span> loadImage<span style="color: #009900;">&#40;</span><span style="color: #003399;">File</span> svgFile, <span style="color: #000066; font-weight: bold;">float</span> width, <span style="color: #000066; font-weight: bold;">float</span> height<span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    BufferedImageTranscoder imageTranscoder <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> BufferedImageTranscoder<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    imageTranscoder.<span style="color: #006633;">addTranscodingHint</span><span style="color: #009900;">&#40;</span>PNGTranscoder.<span style="color: #006633;">KEY_WIDTH</span>, width<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    imageTranscoder.<span style="color: #006633;">addTranscodingHint</span><span style="color: #009900;">&#40;</span>PNGTranscoder.<span style="color: #006633;">KEY_HEIGHT</span>, height<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    TranscoderInput input <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> TranscoderInput<span style="color: #009900;">&#40;</span>svgFile<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    imageTranscoder.<span style="color: #006633;">transcode</span><span style="color: #009900;">&#40;</span>input, <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">return</span> imageTranscoder.<span style="color: #006633;">getBufferedImage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span></pre></div></div>

 <p><a href="http://bbgen.net/blog/?flattrss_redirect&amp;id=176&amp;md5=9c19363e1d98cba139ff4016f9a249d0" title="Flattr" target="_blank"><img src="http://bbgen.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://bbgen.net/blog/2011/06/java-svg-to-bufferedimage/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=bb-generation&amp;popout=1&amp;url=http%3A%2F%2Fbbgen.net%2Fblog%2F2011%2F06%2Fjava-svg-to-bufferedimage%2F&amp;language=en_GB&amp;category=text&amp;title=Java%3A+Loading+a+SVG+into+a+BufferedImage&amp;description=Unfortunately+Java+does+not+support+SVG+by+default.+But+there+is+a+great+Apache+Project+aiming+just+for+this+purpose+called+batik.+Although+the+reference+and+documentation+is+pretty+well%2C...&amp;tags=batik%2Cbufferedimage%2Cgraphic%2Cjava%2Csvg%2Cblog" type="text/html" />
	</item>
		<item>
		<title>HOWTO: Using JUnit with Eclipse with git hooks</title>
		<link>http://bbgen.net/blog/2011/06/junit-git-hooks/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=junit-git-hooks</link>
		<comments>http://bbgen.net/blog/2011/06/junit-git-hooks/#comments</comments>
		<pubDate>Mon, 13 Jun 2011 21:12:01 +0000</pubDate>
		<dc:creator>bb-generation</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[git-hooks]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[junit]]></category>
		<category><![CDATA[unit testing]]></category>

		<guid isPermaLink="false">http://bbgen.net/blog/?p=153</guid>
		<description><![CDATA[This HOWTO shows using the git pre-commit hook to auto-run all JUnit tests before committing. This can be useful if you have a strict policy that no commit should fail the unit-test suite or if you just want to make &#8230; <a href="http://bbgen.net/blog/2011/06/junit-git-hooks/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This HOWTO shows using the git pre-commit hook to auto-run all JUnit tests before committing. This can be useful if you have a strict policy that no commit should fail the unit-test suite or if you just want to make sure that your committed changes pass the tests.</p>
<h2>The build file</h2>
<p>Larger projects usually have a build system. This build system automatically builds and runs your project and tests.</p>
<h3>Creating an ant build file from Eclipse</h3>
<p>Because many people nowadays use Eclipse, I give you a short introduction on howto create an ant build.xml file and integrate your JUnit tests into it.</p>
<ol>
<li>Right click your project in Eclipse and click <b>Export</b></li>
<li>Use <b>General/Ant Buildfiles</b> and follow the instructions.</li>
<li>This will create a <strong>build.xml</strong> in your project folder which you now have to edit.</li>
<li>Near the end you will find something like this:
<pre class="brush: xml; title: ; notranslate">
    &lt;target name=&quot;example&quot;&gt;
        &lt;mkdir dir=&quot;${junit.output.dir}&quot;/&gt;
        &lt;junit fork=&quot;yes&quot; printsummary=&quot;withOutAndErr&quot;&gt;
            &lt;formatter type=&quot;xml&quot;/&gt;
            &lt;test name=&quot;example.Test1&quot; todir=&quot;${junit.output.dir}&quot;/&gt;
            &lt;test name=&quot;example.Test2&quot; todir=&quot;${junit.output.dir}&quot;/&gt;
            &lt;classpath refid=&quot;example.classpath&quot;/&gt;
        &lt;/junit&gt;
    &lt;/target&gt;
</pre>
</li>
<li>Copy these lines and edit the following things:
<ul>
<li>Change the target name to <strong>test</strong> (<tt>target name="test"</tt>)</li>
<li>Add the dependency: <strong>clean,build</strong> (<tt>target name="test" depends="clean,build"</tt>)</li>
<li>Remove the <strong>printsummary=&#8221;withOutAndErr&#8221;</strong> attribute. (<tt>junit fork="yes"</tt>)</li>
<li>Add the attribute <strong>haltonfailure=&#8221;yes&#8221;</strong> to the junit tag. (<tt>junit fork="yes" haltonfailure="yes"</tt>)</li>
<li>Remove the <strong>mkdir</strong> line.</li>
<li>Remove the <strong>formatter</strong> line.</li>
</ul>
</li>
<li>It should now look something like this:
<pre class="brush: xml; title: ; notranslate">
    &lt;target name=&quot;test&quot; depends=&quot;clean,build&quot;&gt;
        &lt;junit fork=&quot;yes&quot; haltonfailure=&quot;yes&quot;&gt;
            &lt;test name=&quot;example.Test1&quot; todir=&quot;${junit.output.dir}&quot;/&gt;
            &lt;test name=&quot;example.Test2&quot; todir=&quot;${junit.output.dir}&quot;/&gt;
            &lt;classpath refid=&quot;example.classpath&quot;/&gt;
        &lt;/junit&gt;
    &lt;/target&gt;
</pre>
</li>
<li>You can now test your junit tests by running <strong>ant test</strong></li>
</ol>
<h3>Using another build system</h3>
<p>If you use another build system you are on yourself. But it&#8217;s pretty simple. Just make sure you can run a command which fails with a non-zero exit code.</p>
<h2>Creating the git hook</h2>
<p>Create a file in your git repository <b>.git/hooks/pre-commit</b> and add the following lines:</p>
<pre class="brush: bash; title: ; notranslate">
#!/bin/sh

# Run the test suite.
# It will exit with 0 if it everything compiled and tested fine.
ant test
if [ $? -eq 0 ]; then
  exit 0
else
  echo &quot;Building your project or running the tests failed.&quot;
  echo &quot;Aborting the commit. Run with --no-verify to ignore.&quot;
  exit 1
fi
</pre>
<p>If you don&#8217;t run Windows you also have to add the executable flag: <strong>chmod +x .git/hooks/pre-commit</strong>.</p>
<h2>Using the git hook</h2>
<p>Before committing git will automatically run the test suite now. If it fails the commit will be aborted. If everything runs fine the commit will be created.<br />
If you don&#8217;t want to run the test process (probably because you&#8217;re currently working on a development feature), you can pass the argument <strong>&#8211;no-verify</strong> to <strong>git commit</strong>.</p>
<h2>Conclusion</h2>
<p>This howto is not complete and does not guarantee to work. But it should give you a short introduction on how to do automatic unit-testing before every commit.</p>
 <p><a href="http://bbgen.net/blog/?flattrss_redirect&amp;id=153&amp;md5=7a577de6cc19781b70d5b7b37795de3e" title="Flattr" target="_blank"><img src="http://bbgen.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://bbgen.net/blog/2011/06/junit-git-hooks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=bb-generation&amp;popout=1&amp;url=http%3A%2F%2Fbbgen.net%2Fblog%2F2011%2F06%2Fjunit-git-hooks%2F&amp;language=en_GB&amp;category=text&amp;title=HOWTO%3A+Using+JUnit+with+Eclipse+with+git+hooks&amp;description=This+HOWTO+shows+using+the+git+pre-commit+hook+to+auto-run+all+JUnit+tests+before+committing.+This+can+be+useful+if+you+have+a+strict+policy+that+no+commit+should+fail...&amp;tags=ant%2Ceclipse%2Cgit%2Cgit-hooks%2Cjava%2Cjunit%2Cunit+testing%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Java needs operator overloading</title>
		<link>http://bbgen.net/blog/2011/06/java-operator-overloading/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=java-operator-overloading</link>
		<comments>http://bbgen.net/blog/2011/06/java-operator-overloading/#comments</comments>
		<pubDate>Sun, 12 Jun 2011 09:48:55 +0000</pubDate>
		<dc:creator>bb-generation</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[operator overloading]]></category>

		<guid isPermaLink="false">http://bbgen.net/blog/?p=107</guid>
		<description><![CDATA[I like Java but I can&#8217;t understand why it still doesn&#8217;t have operator overloading. Everyday operator overloading Every Java object has two (and more) methods: String toString(): Returns a string representation of the object. boolean equals(Object obj): Indicates whether some &#8230; <a href="http://bbgen.net/blog/2011/06/java-operator-overloading/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I like Java but I can&#8217;t understand why it still doesn&#8217;t have operator overloading.</p>
<h3>Everyday operator overloading</h3>
<p>Every Java object has two (and more) methods:</p>
<ol>
<li><code lang="java">String toString()</code>: Returns a string representation of the object.</li>
<li><code lang="java">boolean equals(Object obj)</code>: Indicates whether some other object is &#8220;equal to&#8221; this one.</li>
</ol>
<p>So basically if you want to check whether Object <em>a</em> equals Object <em>b</em>, you type <code>a.equals(b)</code>. But wait a second, there&#8217;s an operator <em>==</em> which checks if two integers are equal, so why not Objects? Well, because Java doesn&#8217;t know operator overloading.<br />
And you can say whatever you want, but typing <code>a == b</code> is way more intuitive than typing <code>a.equals(b)</code>.</p>
<p>Similar with <code>toString()</code>. Why not just cast this Object to a String object? <code>(String)a</code> is at least a little bit nicer to read than <code>a.toString()</code>.</p>
<h3>Any official statement?</h3>
<blockquote><p>I left out operator overloading as a fairly personal choice because I had seen too many people abuse it in C++.</p>
<p>James Gosling. (<a href="http://www.gotw.ca/publications/c_family_interview.htm">source</a>)
</p></blockquote>
<p>So it people abuse a programming language feature you should not implement it? This is nonsense.<br />
It&#8217;s like saying exceptions are evil because someone could abuse them as a return value.</p>
<p>Yeah. Someone could, someone will, but everyone who cares won&#8217;t use his code.</p>
<h3>Java has operator overloading!</h3>
<p>Yes, Java uses operator overloading. But unfortunately it can&#8217;t be influenced by the user.<br />
Let&#8217;s see an example:</p>
<pre class="brush: java; light: true; title: ; notranslate">
int a = 5, b = 10;
int c = a + b; // c = 15

String s = &quot;foo&quot;, p = &quot;bar&quot;;
String o = s + p; // o = &quot;foobar&quot;
</pre>
<p>So Java declares two <b>completely</b> different meanings to the <b>+</b> operator. It can&#8217;t be that evil if the Java Standard does it.</p>
<h3>Style comparison</h3>
<p>Let&#8217;s compare some code to see what looks better.</p>
<pre class="brush: java; title: ; notranslate">
// Java
SomeComplexType a,b;
if(a.equals(b))
  foo();

Data d1,d2;
if(d1 &lt; d2)
  bar();

Vector&lt;String&gt; v = /* ... create and fill ... */
String s = v.elementAt(42);
</pre>
<p>compared to</p>
<pre class="brush: cpp; title: ; notranslate">
// C++
SomeComplexType a,b;
if(a == b)
  foo();

Date d1,d2; // Class overloading comparison operators
if(d1 &lt; d2)
  bar();

vector&lt;string&gt; v;  /* fill */
string s = v[42];
</pre>
<p>Clearly if you re</p>
<h3>There&#8217;s more than mumerical types</h3>
<p>Whenever people argument about liking operator overloading others will counter with &#8220;yeah, but it&#8217;s only useful for numerical types&#8221;. Wrong.</p>
<p>Here are some examples:</p>
<ul>
<li>Every comparable class: overloading <b>==</b> (and <b>!=</b>)</li>
<li>libpqxx (Postgres C++ library): <b>[]</b> to access rows/columns in a SELECT result.</li>
<li>glibmm: various overloadings for glib::ustring. (e.g. glib::ustring s = &#8220;foo&#8221;)</li>
<li>Various boost libraries for various reasons.</li>
<li>many many more</li>
</ul>
<p>So why is operator overloading important? Well, it uses the programmers knowledge about operators and appends them to other objects. Therefore if the programmer knows that comparing two integers can be accomplished by typing <b>a == b</b> it should also be able to be used to compare <b>any</b> other object.</p>
 <p><a href="http://bbgen.net/blog/?flattrss_redirect&amp;id=107&amp;md5=27ab4a86b87e93c11e8ea1e6c79115e6" title="Flattr" target="_blank"><img src="http://bbgen.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://bbgen.net/blog/2011/06/java-operator-overloading/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=bb-generation&amp;popout=1&amp;url=http%3A%2F%2Fbbgen.net%2Fblog%2F2011%2F06%2Fjava-operator-overloading%2F&amp;language=en_GB&amp;category=text&amp;title=Java+needs+operator+overloading&amp;description=I+like+Java+but+I+can%26%238217%3Bt+understand+why+it+still+doesn%26%238217%3Bt+have+operator+overloading.+Everyday+operator+overloading+Every+Java+object+has+two+%28and+more%29+methods%3A+String+toString%28%29%3A+Returns+a+string...&amp;tags=c%2B%2B%2Cjava%2Coperator+overloading%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Be careful when using post-increment++</title>
		<link>http://bbgen.net/blog/2011/06/post-increment-fun/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=post-increment-fun</link>
		<comments>http://bbgen.net/blog/2011/06/post-increment-fun/#comments</comments>
		<pubDate>Thu, 09 Jun 2011 21:10:40 +0000</pubDate>
		<dc:creator>bb-generation</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[increment]]></category>
		<category><![CDATA[operator]]></category>
		<category><![CDATA[post-increment]]></category>

		<guid isPermaLink="false">http://bbgen.net/blog/?p=118</guid>
		<description><![CDATA[Have a look at the following code to see a sample (dangerous) use of the post increment operator (i++). #include &#60;iostream&#62; &#160; class A &#123; public: A&#40;&#41; &#123; i=0; f&#40;i++&#41;; &#125; void f&#40;int p&#41; &#123; std::cout &#60;&#60; &#34;p=&#34; &#60;&#60; p &#8230; <a href="http://bbgen.net/blog/2011/06/post-increment-fun/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Have a look at the following code to see a sample (dangerous) use of the post increment operator (i++).</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #339900;">#include &lt;iostream&gt;</span>
&nbsp;
<span style="color: #0000ff;">class</span> A
<span style="color: #008000;">&#123;</span>
<span style="color: #0000ff;">public</span><span style="color: #008080;">:</span>
  A<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
  <span style="color: #008000;">&#123;</span>
    i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
    f<span style="color: #008000;">&#40;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  <span style="color: #008000;">&#125;</span>
  <span style="color: #0000ff;">void</span> f<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> p<span style="color: #008000;">&#41;</span>
  <span style="color: #008000;">&#123;</span>
    std<span style="color: #008080;">::</span><span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;p=&quot;</span> <span style="color: #000080;">&lt;&lt;</span> p <span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot; and i=&quot;</span> <span style="color: #000080;">&lt;&lt;</span> i <span style="color: #000080;">&lt;&lt;</span> std<span style="color: #008080;">::</span><span style="color: #007788;">endl</span><span style="color: #008080;">;</span>
  <span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">private</span><span style="color: #008080;">:</span>
  <span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
  A a<span style="color: #008080;">;</span> <span style="color: #666666;">// output: p=0 and i=1</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>Let&#8217;s take a look what happens:</p>
<ol>
<li><b>i</b> gets set to <b>0</b>.</li>
<li><b>f(i++)</b>
<ol>
<li><b>i</b> is saved into a register (let&#8217;s call it <b>R1</b> &#8211; so: <b>R1</b>=<b>0</b>)</li>
<li><b>i</b> is incremented and has now the value <b>1</b></li>
<li><b>f(R1)</b> is called. Remember R1=<b>0</b></li>
<ol>
<li>The parameter (p) is <b>0</b></li>
<li>The private attribute (i) is <b>1</b></li>
</ol>
</ol>
</ol>
<p>This may look a little bit strange but it is intended. So please keep that in mind when using the post-increment operator.</p>
<p>My advice: Only use post-increment when you have good reason to do so.</p>
 <p><a href="http://bbgen.net/blog/?flattrss_redirect&amp;id=118&amp;md5=0de7e7fabb4ee09987300d3be164206d" title="Flattr" target="_blank"><img src="http://bbgen.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://bbgen.net/blog/2011/06/post-increment-fun/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=bb-generation&amp;popout=1&amp;url=http%3A%2F%2Fbbgen.net%2Fblog%2F2011%2F06%2Fpost-increment-fun%2F&amp;language=en_GB&amp;category=text&amp;title=Be+careful+when+using+post-increment%2B%2B&amp;description=Have+a+look+at+the+following+code+to+see+a+sample+%28dangerous%29+use+of+the+post+increment+operator+%28i%2B%2B%29.+%23include+%26lt%3Biostream%26gt%3B+%26nbsp%3B+class+A+%26%23123%3B+public%3A+A%26%2340%3B%26%2341%3B+%26%23123%3B+i%3D0%3B+f%26%2340%3Bi%2B%2B%26%2341%3B%3B...&amp;tags=c%2B%2B%2Ccpp%2Cincrement%2Coperator%2Cpost-increment%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Should we really trust Apple?</title>
		<link>http://bbgen.net/blog/2011/06/should-we-trust-apple/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=should-we-trust-apple</link>
		<comments>http://bbgen.net/blog/2011/06/should-we-trust-apple/#comments</comments>
		<pubDate>Tue, 07 Jun 2011 09:59:04 +0000</pubDate>
		<dc:creator>bb-generation</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[icculus]]></category>
		<category><![CDATA[trust]]></category>

		<guid isPermaLink="false">http://bbgen.net/blog/?p=100</guid>
		<description><![CDATA[The latest news is all about the Cloud. I&#8217;d like to quote one of my favorite Linux developers: Personally I trust some cloud services but only because those companies have never betrayed my trust. But Apple? Should we really trust &#8230; <a href="http://bbgen.net/blog/2011/06/should-we-trust-apple/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.golem.de/1105/83860.html">latest</a> <a href="http://www.golem.de/1106/84006.html">news</a> is all about the Cloud.</p>
<p>I&#8217;d like to quote one of my favorite Linux developers:<br />
<div class="quotedtweet" id="tw77818367750324224" style="background-color:#eef;padding:5px;margin-bottom:5px">
	<div class="tw_user-info" style="padding:10px 10px 5px 0;float:left;text-align:center;width:100px;">
		<div class="tw_thumb">
			<a href="http://twitter.com/icculus" title="Ryan C. Gordon" class="quoting_pic" rel="external"><img src="http://img.tweetimag.es/i/icculus_n" alt="icculus" /></a>
		</div>
		<div class="tw_screen-name">
			<em><a href="http://twitter.com/icculus" title="Twitter page : Ryan C. Gordon" rel="external">icculus</a></em>
		</div>
		<div class="tw_full-name">
			<strong>(Ryan C. Gordon)</strong>
		</div>
	</div>
	<div class="tw_content" style="float: left; width: 500px; font: 20pt Georgia, Verdana, sans-serif; font-style: normal;">
		<div class="tw_entry-content">
				Never trust The Cloud. That is all.

		</div>
	</div>
	<div style="clear: both; text-align: left;font-style:italic;margin-left:110px">
		<p class="tw_meta tw_entry-meta" style="margin: 0;padding-top:5px">
			<small>
				<span>On <a href="http://twitter.com/icculus/status/77818367750324224" rel="external">6-6-2011 19:25:19</a></span> 
				<span>from web</span> 
				<span></span>
			</small>
		</p>
	</div>
</div></p>
<p>Personally I trust some cloud services but only because those companies have never betrayed my trust.<br />
But Apple? Should we really trust Apple?</p>
<p>Apple force people to use their products. Just some examples: iPhone Bluetooth, iTunes, and so on.<br />
I even think Apple enforces a closer system than Microsoft ever has.</p>
 <p><a href="http://bbgen.net/blog/?flattrss_redirect&amp;id=100&amp;md5=678597379c0e3c27a267083fb0a333b8" title="Flattr" target="_blank"><img src="http://bbgen.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://bbgen.net/blog/2011/06/should-we-trust-apple/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=bb-generation&amp;popout=1&amp;url=http%3A%2F%2Fbbgen.net%2Fblog%2F2011%2F06%2Fshould-we-trust-apple%2F&amp;language=en_GB&amp;category=text&amp;title=Should+we+really+trust+Apple%3F&amp;description=The+latest+news+is+all+about+the+Cloud.+I%26%238217%3Bd+like+to+quote+one+of+my+favorite+Linux+developers%3A+Personally+I+trust+some+cloud+services+but+only+because+those+companies+have...&amp;tags=apple%2Ccloud%2Cicculus%2Ctrust%2Cblog" type="text/html" />
	</item>
		<item>
		<title>git&#8217;s missing features</title>
		<link>http://bbgen.net/blog/2011/06/git-missing-features/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=git-missing-features</link>
		<comments>http://bbgen.net/blog/2011/06/git-missing-features/#comments</comments>
		<pubDate>Tue, 07 Jun 2011 09:27:04 +0000</pubDate>
		<dc:creator>bb-generation</dc:creator>
				<category><![CDATA[git]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[DVCS]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[VCS]]></category>

		<guid isPermaLink="false">http://bbgen.net/blog/?p=91</guid>
		<description><![CDATA[Git is probably one of the best innovations (regarding Software Development) of the last 5 years. Although it was a really difficult to use software at the beginning, its usability has improved. But it still lacks some features (and some &#8230; <a href="http://bbgen.net/blog/2011/06/git-missing-features/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Git is probably one of the best innovations (regarding Software Development) of the last 5 years. Although it was a really difficult to use software at the beginning, its usability has improved.<br />
But it still lacks some features (and some of them probably just can&#8217;t be implemented due to git&#8217;s backend).</p>
<h3>Easy code sharing</h3>
<p>Git is all about distributed developing. You develop and when you finished you push your code to a main repository.<br />
But in some cases you want to show your code to someone else to review it.<br />
I&#8217;m currently doing a course called <em>Advanced Software Engineering</em> where you have to develop some piece of software in a group of 5 members. We often want to show someone else a piece of code so he can test it. We don&#8217;t want to push it to the main repository and therefore git doesn&#8217;t make this very easy. A nice way would be to set up a local git server (git-daemon) and tell someone to fetch it. But because of NAT, weird University WiFi, &#8230; we can&#8217;t.<br />
We&#8217;ve set up a second repository (called demo) which we use for such occasions.<br />
So what does git need? Git needs a <em>git share</em> which does one thing: Set up a git daemon and make it available to the whole Internet.</p>
<h3><s>Access Control Lists</s></h3>
<p><a href="https://github.com/sitaramc/gitolite">Gitolite</a> is an access control layer on top of git which makes things very easy and powerful.<br />
It helps restricting access for a specific branch, directory and file.<br />
Unfortunately with git read access can only be defined at the root level. So you can&#8217;t allow a user to only read a certain directory. The only way to achieve this is to use multiple repositories and <em>git submodule</em>.<br />
So at the end I think git has a Access Control System quite good enough for anything I can think of right now.</p>
<h3>A good Tutorial for CVS/SVN users</h3>
<p><a href="http://utsl.gen.nz/talks/git-svn/intro.html">There</a> <a href="http://git.or.cz/course/svn.html">are</a> <a href="http://www.ibm.com/developerworks/linux/library/l-git-subversion-1/">some</a> <a href="http://people.gnome.org/~newren/eg/git-for-svn-users.html">guides</a> for SVN users to git, some of them better than others.<br />
But I think most of them fail at one thing: They try explain how you work with git like you did with SVN. But that&#8217;s totally wrong!<br />
Most of the times I speak with SVN fanboys about <em>git vs. SVN</em> I hear <em>&#8220;I don&#8217;t branch&#8221;</em>. Yeah, of course they don&#8217;t because they use SVN. Branchin in SVN is useless, not because branching is painful but because merging is.<br />
Basically SVN does two things:</p>
<ol>
<li>give every changeset a number</li>
<li>distribute code</li>
</ol>
<p>So basically 90% of the SVN users just want to share their code with others. They use their VCS (<em>Version Control System</em>) only to upload their stuff to a server so that users can download it.<br />
But git doesn&#8217;t focus on this (not so important) part but on developing software. It&#8217;s a SCM (<em>Source Code Management</em>) tool!. Git helps you develop software, SVN does not.<br />
So all those SVN users out there: <b>Keep in mind that if you want to use git like SVN, you&#8217;re missing 99% of git&#8217;s features!</b></p>
<h3>A clean way to distribute project meta files</h3>
<p>Maybe I&#8217;m missing something here but git doesn&#8217;t like project meta files (such as Eclipse/Netbeans/whatever project files).<br />
You don&#8217;t want them to be included in the git repository because if someone starts their IDE it will modify those files and therefore cause a weird merge conflict.<br />
But why does everyone has to configure their IDE on every machine? I basically see two solutions to this problem:</p>
<ol>
<li>IDEs should split the config files into two categories: Things everyone is interested in, things only I&#8217;m interested in. The problem with this solution is that you still have to setup your IDE (the second category).</li>
<li>A second git layer for project files. Let&#8217;s imagine you can set up multiple git repositories (and I don&#8217;t mean remotes!) in one directory. This would help distribute your project files to your other machines and keep the main project repository clean.</li>
</ol>
<h3>Eclipse GUI</h3>
<p>I don&#8217;t think git needs a Eclipse GUI, but one of the arguments why people don&#8217;t use git is because it doesn&#8217;t have an Eclipse GUI.<br />
Personally I can&#8217;t understand this. If you really want to use a GUI (and you don&#8217;t) use <a href=http://code.google.com/p/tortoisegit/">TortoiseGIT</a>. It&#8217;s usability has improved a LOT in the last years.</p>
<p>So at the end I can only recommend using git. You will NOT regret it. Believe me.</p>
 <p><a href="http://bbgen.net/blog/?flattrss_redirect&amp;id=91&amp;md5=94a7fc38e9014298411e8330eb2ad5aa" title="Flattr" target="_blank"><img src="http://bbgen.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://bbgen.net/blog/2011/06/git-missing-features/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=bb-generation&amp;popout=1&amp;url=http%3A%2F%2Fbbgen.net%2Fblog%2F2011%2F06%2Fgit-missing-features%2F&amp;language=en_GB&amp;category=text&amp;title=git%26%238217%3Bs+missing+features&amp;description=Git+is+probably+one+of+the+best+innovations+%28regarding+Software+Development%29+of+the+last+5+years.+Although+it+was+a+really+difficult+to+use+software+at+the+beginning%2C+its+usability...&amp;tags=DVCS%2Cgit%2CSCM%2Csvn%2CVCS%2Cblog" type="text/html" />
	</item>
		<item>
		<title>String to int argc, char** argv</title>
		<link>http://bbgen.net/blog/2011/06/string-to-argc-argv/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=string-to-argc-argv</link>
		<comments>http://bbgen.net/blog/2011/06/string-to-argc-argv/#comments</comments>
		<pubDate>Mon, 06 Jun 2011 15:00:36 +0000</pubDate>
		<dc:creator>bb-generation</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[argc]]></category>
		<category><![CDATA[argv]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[CommandLineToArgvW]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[winapi]]></category>

		<guid isPermaLink="false">http://bbgen.net/blog/?p=37</guid>
		<description><![CDATA[I&#8217;ve recently needed a simple command line string parser, which does some basic things. Nothing special. It&#8217;s not 100% compatible with Linux or Windows, but should work for most cases. What it does: parsing std::string to std::vector parsing std::string to &#8230; <a href="http://bbgen.net/blog/2011/06/string-to-argc-argv/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently needed a simple command line string parser, which does some basic things. Nothing special.</p>
<p>It&#8217;s not 100% compatible with Linux or Windows, but should work for most cases.</p>
<p>What it does:</p>
<ul>
<li>parsing <tt>std::string</tt> to <tt>std::vector<string></tt></li>
<li>parsing <tt>std::string</tt> to <tt>int argc, char** argv</tt></li>
<li>Using <tt>"</tt> and <tt>'</tt> for <tt>"ignoring whitespaces"</tt></li>
<li>Escaping whitespaces under Linux</li>
<li>Escaping &#8221; and \</li>
<li><tt>"foo'bar"</tt> and <tt>'foo"bar'</tt></li>
<li>Distinguish behaviour between Linux and Windows</li>
</ul>
<p>What it does <b>not</b>:</p>
<ul>
<li>resolving * and ?</li>
<li>Unicode</li>
<li>Correct parsing multiple \ or &#8221; under Windows (have a look at <a href="http://bbgen.net/blog/2011/06/commandlinetoargvw-weirdness/">CommandLinetoArgvW weirdness</a>)</li>
</ul>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* stringtoargcargv.cpp -- Parsing a string to std::vector&lt;string&gt;
&nbsp;
  Copyright (C) 2011 Bernhard Eder
&nbsp;
  This software is provided 'as-is', without any express or implied
  warranty.  In no event will the authors be held liable for any damages
  arising from the use of this software.
&nbsp;
  Permission is granted to anyone to use this software for any purpose,
  including commercial applications, and to alter it and redistribute it
  freely, subject to the following restrictions:
&nbsp;
  1. The origin of this software must not be misrepresented; you must not
   claim that you wrote the original software. If you use this software
   in a product, an acknowledgment in the product documentation would be
   appreciated but is not required.
  2. Altered source versions must be plainly marked as such, and must not be
   misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.
&nbsp;
  Bernhard Eder blog_at_bbgen.net
&nbsp;
*/</span>
&nbsp;
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;sstream&gt;</span>
<span style="color: #339900;">#include &lt;stdexcept&gt;</span>
<span style="color: #339900;">#include &lt;vector&gt;</span>
<span style="color: #339900;">#include &lt;string&gt;</span>
&nbsp;
<span style="color: #339900;">#include &lt;cstdlib&gt;</span>
<span style="color: #339900;">#include &lt;cstring&gt;</span>
&nbsp;
<span style="color: #0000ff;">bool</span> _isQuote<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> c<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">bool</span> _isEscape<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> c<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">bool</span> _isEscape<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> c<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">bool</span> _isWhitespace<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> c<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
std<span style="color: #008080;">::</span><span style="color: #007788;">vector</span><span style="color: #000080;">&lt;</span>std<span style="color: #008080;">::</span><span style="color: #007788;">string</span><span style="color: #000080;">&gt;</span> parse<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">const</span> std<span style="color: #008080;">::</span><span style="color: #007788;">string</span><span style="color: #000040;">&amp;</span> args<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">void</span> stringToArgcArgv<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">const</span> std<span style="color: #008080;">::</span><span style="color: #007788;">string</span><span style="color: #000040;">&amp;</span> str, <span style="color: #0000ff;">int</span><span style="color: #000040;">*</span> argc, <span style="color: #0000ff;">char</span><span style="color: #000040;">***</span> argv<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #ff0000; font-style: italic;">/*
 * Usage:
 * int argc;
 * char** argv;
 * stringToArgcArgv(&quot;foo bar&quot;, &amp;argc, &amp;argv);
 */</span>
<span style="color: #0000ff;">void</span> stringToArgcArgv<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">const</span> std<span style="color: #008080;">::</span><span style="color: #007788;">string</span><span style="color: #000040;">&amp;</span> str, <span style="color: #0000ff;">int</span><span style="color: #000040;">*</span> argc, <span style="color: #0000ff;">char</span><span style="color: #000040;">***</span> argv<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
  std<span style="color: #008080;">::</span><span style="color: #007788;">vector</span><span style="color: #000080;">&lt;</span>std<span style="color: #008080;">::</span><span style="color: #007788;">string</span><span style="color: #000080;">&gt;</span> args <span style="color: #000080;">=</span> parse<span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
  <span style="color: #000040;">*</span>argv <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span><span style="color: #000040;">**</span><span style="color: #008000;">&#41;</span>std<span style="color: #008080;">::</span><span style="color: #0000dd;">malloc</span><span style="color: #008000;">&#40;</span>args.<span style="color: #007788;">size</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">*</span> <span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span><span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
  <span style="color: #0000ff;">int</span> i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
  <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>std<span style="color: #008080;">::</span><span style="color: #007788;">vector</span><span style="color: #000080;">&lt;</span>std<span style="color: #008080;">::</span><span style="color: #007788;">string</span><span style="color: #000080;">&gt;</span><span style="color: #008080;">::</span><span style="color: #007788;">iterator</span> it <span style="color: #000080;">=</span> args.<span style="color: #007788;">begin</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
      it <span style="color: #000040;">!</span><span style="color: #000080;">=</span> args.<span style="color: #007788;">end</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
      <span style="color: #000040;">++</span>it, <span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span>
  <span style="color: #008000;">&#123;</span>
    std<span style="color: #008080;">::</span><span style="color: #007788;">string</span> arg <span style="color: #000080;">=</span> <span style="color: #000040;">*</span>it<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span>argv<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span><span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>std<span style="color: #008080;">::</span><span style="color: #0000dd;">malloc</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>arg.<span style="color: #007788;">length</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">*</span> <span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    std<span style="color: #008080;">::</span><span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span>argv<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>, arg.<span style="color: #007788;">c_str</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  <span style="color: #008000;">&#125;</span>
&nbsp;
  <span style="color: #000040;">*</span>argc <span style="color: #000080;">=</span> args.<span style="color: #007788;">size</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
std<span style="color: #008080;">::</span><span style="color: #007788;">vector</span><span style="color: #000080;">&lt;</span>std<span style="color: #008080;">::</span><span style="color: #007788;">string</span><span style="color: #000080;">&gt;</span> parse<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">const</span> std<span style="color: #008080;">::</span><span style="color: #007788;">string</span><span style="color: #000040;">&amp;</span> args<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
  std<span style="color: #008080;">::</span><span style="color: #007788;">stringstream</span> ain<span style="color: #008000;">&#40;</span>args<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>    <span style="color: #666666;">// used to iterate over input string</span>
  ain <span style="color: #000080;">&gt;&gt;</span> std<span style="color: #008080;">::</span><span style="color: #007788;">noskipws</span><span style="color: #008080;">;</span>           <span style="color: #666666;">// do not skip white spaces</span>
  std<span style="color: #008080;">::</span><span style="color: #007788;">vector</span><span style="color: #000080;">&lt;</span>std<span style="color: #008080;">::</span><span style="color: #007788;">string</span><span style="color: #000080;">&gt;</span> oargs<span style="color: #008080;">;</span> <span style="color: #666666;">// output list of arguments</span>
&nbsp;
  std<span style="color: #008080;">::</span><span style="color: #007788;">stringstream</span> currentArg<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  currentArg <span style="color: #000080;">&gt;&gt;</span> std<span style="color: #008080;">::</span><span style="color: #007788;">noskipws</span><span style="color: #008080;">;</span>
&nbsp;
  <span style="color: #666666;">// current state</span>
  <span style="color: #0000ff;">enum</span> State <span style="color: #008000;">&#123;</span>
    InArg,      <span style="color: #666666;">// currently scanning an argument</span>
    InArgQuote, <span style="color: #666666;">// currently scanning an argument (which started with quotes)</span>
    OutOfArg    <span style="color: #666666;">// currently not scanning an argument</span>
  <span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
  State currentState <span style="color: #000080;">=</span> OutOfArg<span style="color: #008080;">;</span>
&nbsp;
  <span style="color: #0000ff;">char</span> currentQuoteChar <span style="color: #000080;">=</span> <span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #008080;">;</span> <span style="color: #666666;">// to distinguish between ' and &quot; quotations</span>
                                <span style="color: #666666;">// this allows to use &quot;foo'bar&quot;</span>
&nbsp;
  <span style="color: #0000ff;">char</span> c<span style="color: #008080;">;</span>
  <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>ain.<span style="color: #007788;">eof</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">&amp;&amp;</span> <span style="color: #008000;">&#40;</span>ain <span style="color: #000080;">&gt;&gt;</span> c<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> <span style="color: #666666;">// iterate char by char</span>
&nbsp;
    <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>_isQuote<span style="color: #008000;">&#40;</span>c<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
      <span style="color: #0000ff;">switch</span><span style="color: #008000;">&#40;</span>currentState<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">case</span> OutOfArg<span style="color: #008080;">:</span>
          currentArg.<span style="color: #007788;">str</span><span style="color: #008000;">&#40;</span>std<span style="color: #008080;">::</span><span style="color: #007788;">string</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">case</span> InArg<span style="color: #008080;">:</span>
          currentState <span style="color: #000080;">=</span> InArgQuote<span style="color: #008080;">;</span>
          currentQuoteChar <span style="color: #000080;">=</span> c<span style="color: #008080;">;</span>
          <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
&nbsp;
        <span style="color: #0000ff;">case</span> InArgQuote<span style="color: #008080;">:</span>
          <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>c <span style="color: #000080;">==</span> currentQuoteChar<span style="color: #008000;">&#41;</span>
            currentState <span style="color: #000080;">=</span> InArg<span style="color: #008080;">;</span>
          <span style="color: #0000ff;">else</span>
            currentArg <span style="color: #000080;">&lt;&lt;</span> c<span style="color: #008080;">;</span>
          <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
      <span style="color: #008000;">&#125;</span>
&nbsp;
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>_isWhitespace<span style="color: #008000;">&#40;</span>c<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
      <span style="color: #0000ff;">switch</span><span style="color: #008000;">&#40;</span>currentState<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">case</span> InArg<span style="color: #008080;">:</span>
          oargs.<span style="color: #007788;">push_back</span><span style="color: #008000;">&#40;</span>currentArg.<span style="color: #007788;">str</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
          currentState <span style="color: #000080;">=</span> OutOfArg<span style="color: #008080;">;</span>
          <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">case</span> InArgQuote<span style="color: #008080;">:</span>
          currentArg <span style="color: #000080;">&lt;&lt;</span> c<span style="color: #008080;">;</span>
          <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">case</span> OutOfArg<span style="color: #008080;">:</span>
          <span style="color: #666666;">// nothing</span>
          <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
      <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>_isEscape<span style="color: #008000;">&#40;</span>c<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
      <span style="color: #0000ff;">switch</span><span style="color: #008000;">&#40;</span>currentState<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">case</span> OutOfArg<span style="color: #008080;">:</span>
          currentArg.<span style="color: #007788;">str</span><span style="color: #008000;">&#40;</span>std<span style="color: #008080;">::</span><span style="color: #007788;">string</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
          currentState <span style="color: #000080;">=</span> InArg<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">case</span> InArg<span style="color: #008080;">:</span>
        <span style="color: #0000ff;">case</span> InArgQuote<span style="color: #008080;">:</span>
          <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>ain.<span style="color: #007788;">eof</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
          <span style="color: #008000;">&#123;</span>
<span style="color: #339900;">#ifdef WIN32</span>
            <span style="color: #666666;">// Windows doesn't care about an escape character at the end.</span>
            <span style="color: #666666;">// It just adds \ to the arg.</span>
            currentArg <span style="color: #000080;">&lt;&lt;</span> c<span style="color: #008080;">;</span>
<span style="color: #339900;">#else</span>
            <span style="color: #0000ff;">throw</span><span style="color: #008000;">&#40;</span>std<span style="color: #008080;">::</span><span style="color: #007788;">runtime_error</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;Found Escape Character at end of file.&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #339900;">#endif</span>
          <span style="color: #008000;">&#125;</span>
          <span style="color: #0000ff;">else</span>
          <span style="color: #008000;">&#123;</span>
<span style="color: #339900;">#ifdef WIN32</span>
            <span style="color: #666666;">// Windows only escapes the &quot; character.</span>
            <span style="color: #666666;">// Every other character is just printed and the \ is added itself.</span>
            <span style="color: #0000ff;">char</span> c1 <span style="color: #000080;">=</span> c<span style="color: #008080;">;</span>
            ain <span style="color: #000080;">&gt;&gt;</span> c<span style="color: #008080;">;</span>
            <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>c <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #FF0000;">'<span style="color: #000099; font-weight: bold;">\&quot;</span>'</span><span style="color: #008000;">&#41;</span>
              currentArg <span style="color: #000080;">&lt;&lt;</span> c1<span style="color: #008080;">;</span> <span style="color: #666666;">// only ignore \ when next char is &quot;</span>
            ain.<span style="color: #007788;">unget</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #339900;">#else</span>
            ain <span style="color: #000080;">&gt;&gt;</span> c<span style="color: #008080;">;</span>
            currentArg <span style="color: #000080;">&lt;&lt;</span> c<span style="color: #008080;">;</span>
<span style="color: #339900;">#endif</span>
          <span style="color: #008000;">&#125;</span>
          <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
      <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
      <span style="color: #0000ff;">switch</span><span style="color: #008000;">&#40;</span>currentState<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">case</span> InArg<span style="color: #008080;">:</span>
        <span style="color: #0000ff;">case</span> InArgQuote<span style="color: #008080;">:</span>
          currentArg <span style="color: #000080;">&lt;&lt;</span> c<span style="color: #008080;">;</span>
          <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
&nbsp;
        <span style="color: #0000ff;">case</span> OutOfArg<span style="color: #008080;">:</span>
          currentArg.<span style="color: #007788;">str</span><span style="color: #008000;">&#40;</span>std<span style="color: #008080;">::</span><span style="color: #007788;">string</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
          currentArg <span style="color: #000080;">&lt;&lt;</span> c<span style="color: #008080;">;</span>
          currentState <span style="color: #000080;">=</span> InArg<span style="color: #008080;">;</span>
          <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
      <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
  <span style="color: #008000;">&#125;</span>
&nbsp;
  <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>currentState <span style="color: #000080;">==</span> InArg<span style="color: #008000;">&#41;</span>
    oargs.<span style="color: #007788;">push_back</span><span style="color: #008000;">&#40;</span>currentArg.<span style="color: #007788;">str</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>currentState <span style="color: #000080;">==</span> InArgQuote<span style="color: #008000;">&#41;</span>
    <span style="color: #0000ff;">throw</span><span style="color: #008000;">&#40;</span>std<span style="color: #008080;">::</span><span style="color: #007788;">runtime_error</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;Starting quote has no ending quote.&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
  <span style="color: #0000ff;">return</span> oargs<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">bool</span> _isQuote<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> c<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
  <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>c <span style="color: #000080;">==</span> <span style="color: #FF0000;">'<span style="color: #000099; font-weight: bold;">\&quot;</span>'</span><span style="color: #008000;">&#41;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
  <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>c <span style="color: #000080;">==</span> <span style="color: #FF0000;">'<span style="color: #000099; font-weight: bold;">\'</span>'</span><span style="color: #008000;">&#41;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
&nbsp;
  <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">bool</span> _isEscape<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> c<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
  <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>c <span style="color: #000080;">==</span> <span style="color: #FF0000;">'<span style="color: #000099; font-weight: bold;">\\</span>'</span><span style="color: #008000;">&#41;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
&nbsp;
  <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">bool</span> _isWhitespace<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> c<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
  <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>c <span style="color: #000080;">==</span> <span style="color: #FF0000;">' '</span><span style="color: #008000;">&#41;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
  <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>c <span style="color: #000080;">==</span> <span style="color: #FF0000;">'<span style="color: #000099; font-weight: bold;">\t</span>'</span><span style="color: #008000;">&#41;</span>
    <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
&nbsp;
  <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>(Download: <a href="http://bbgen.net/blog/wp-content/uploads/2011/06/stringtoargcargv.cpp">stringtoargcargv.cpp</a>)</p>
<p>If you&#8217;re interested in 100% compatible parsing, you should have a look at <a href="http://stackoverflow.com/questions/1706551/parse-string-into-argv-argc">parse-string-into-argv-argc</a> or <a href="http://msdn.microsoft.com/en-us/library/bb776391%28v=vs.85%29.aspx">CommandLineToArgvW</a> (Windows).</p>
 <p><a href="http://bbgen.net/blog/?flattrss_redirect&amp;id=37&amp;md5=f1a075605e9df98be752d13f92c5fb1b" title="Flattr" target="_blank"><img src="http://bbgen.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://bbgen.net/blog/2011/06/string-to-argc-argv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=bb-generation&amp;popout=1&amp;url=http%3A%2F%2Fbbgen.net%2Fblog%2F2011%2F06%2Fstring-to-argc-argv%2F&amp;language=en_GB&amp;category=text&amp;title=String+to+int+argc%2C+char%2A%2A+argv&amp;description=I%26%238217%3Bve+recently+needed+a+simple+command+line+string+parser%2C+which+does+some+basic+things.+Nothing+special.+It%26%238217%3Bs+not+100%25+compatible+with+Linux+or+Windows%2C+but+should+work+for+most+cases....&amp;tags=argc%2Cargv%2Cc%2B%2B%2CCommandLineToArgvW%2Ccpp%2Cwinapi%2Cblog" type="text/html" />
	</item>
		<item>
		<title>CommandLineToArgvW weirdness</title>
		<link>http://bbgen.net/blog/2011/06/commandlinetoargvw-weirdness/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=commandlinetoargvw-weirdness</link>
		<comments>http://bbgen.net/blog/2011/06/commandlinetoargvw-weirdness/#comments</comments>
		<pubDate>Mon, 06 Jun 2011 13:36:37 +0000</pubDate>
		<dc:creator>bb-generation</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[argc]]></category>
		<category><![CDATA[argv]]></category>
		<category><![CDATA[CommandLineToArgvW]]></category>
		<category><![CDATA[winapi]]></category>

		<guid isPermaLink="false">http://bbgen.net/blog/?p=66</guid>
		<description><![CDATA[Windows has a really weird behaviour for CommandLineToArgvW or it&#8217;s directly argc/argv parsing. If you have a command line string with multiple &#8221; in a row, it&#8217;s count is divided by three. So for example foo"""bar is encoded to foo"bar. &#8230; <a href="http://bbgen.net/blog/2011/06/commandlinetoargvw-weirdness/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Windows has a really weird behaviour for <a href="http://msdn.microsoft.com/en-us/library/bb776391%28v=vs.85%29.aspx">CommandLineToArgvW</a> or it&#8217;s directly argc/argv parsing.</p>
<p>If you have a command line string with multiple &#8221; in a row, it&#8217;s count is divided by three. So for example <tt>foo"""bar</tt> is encoded to <tt>foo"bar</tt>.<br />
But it get&#8217;s interesting, when you don&#8217;t have them in a row. Let&#8217;s take a look at the following encodings:</p>
<pre>
a"b"c"d  -> abcd
a""b"c"d -> abcd
a"b""c"d -> ab""cd
a"b"c""d -> abcd
</pre>
<p>I have no idea why it encodes them like this. And it probably doesn&#8217;t really matter. But it&#8217;s really strange.</p>
<p>The above have been tested using <a href="http://bbgen.net/blog/wp-content/uploads/2011/06/argc.cpp">argc.cpp</a>.</p>
 <p><a href="http://bbgen.net/blog/?flattrss_redirect&amp;id=66&amp;md5=9cea89592aa17a777449983b67356b8e" title="Flattr" target="_blank"><img src="http://bbgen.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://bbgen.net/blog/2011/06/commandlinetoargvw-weirdness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=bb-generation&amp;popout=1&amp;url=http%3A%2F%2Fbbgen.net%2Fblog%2F2011%2F06%2Fcommandlinetoargvw-weirdness%2F&amp;language=en_GB&amp;category=text&amp;title=CommandLineToArgvW+weirdness&amp;description=Windows+has+a+really+weird+behaviour+for+CommandLineToArgvW+or+it%26%238217%3Bs+directly+argc%2Fargv+parsing.+If+you+have+a+command+line+string+with+multiple+%26%238221%3B+in+a+row%2C+it%26%238217%3Bs+count+is+divided...&amp;tags=argc%2Cargv%2CCommandLineToArgvW%2Cwinapi%2Cblog" type="text/html" />
	</item>
		<item>
		<title>I love error messages</title>
		<link>http://bbgen.net/blog/2011/05/i-love-error-messages/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=i-love-error-messages</link>
		<comments>http://bbgen.net/blog/2011/05/i-love-error-messages/#comments</comments>
		<pubDate>Sat, 14 May 2011 07:36:20 +0000</pubDate>
		<dc:creator>bb-generation</dc:creator>
				<category><![CDATA[Error messages]]></category>
		<category><![CDATA[adobe flash]]></category>
		<category><![CDATA[error message]]></category>
		<category><![CDATA[errors]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://bbgen.net/blog/?p=45</guid>
		<description><![CDATA[I love how they tell you not only what&#8217;s wrong but also what to do. Just take the following Error message from Adobe Flash Player I just got this morning. Error occoured during installation: There is no error information available.]]></description>
			<content:encoded><![CDATA[<p>I love how they tell you not only what&#8217;s wrong but also what to do.</p>
<p>Just take the following Error message from Adobe Flash Player I just got this morning.</p>
<p><a href="http://bbgen.net/blog/wp-content/uploads/2011/05/flash-fail.png"><img src="http://bbgen.net/blog/wp-content/uploads/2011/05/flash-fail-300x157.png" alt="Flash Error message" title="flash-fail" width="300" height="157" class="alignnone size-medium wp-image-46" /></a><br />
<strong>Error occoured during installation:<br />
There is no error information available.</strong></p>
 <p><a href="http://bbgen.net/blog/?flattrss_redirect&amp;id=45&amp;md5=a3405403111672415f2d5067166e9db2" title="Flattr" target="_blank"><img src="http://bbgen.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://bbgen.net/blog/2011/05/i-love-error-messages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=bb-generation&amp;popout=1&amp;url=http%3A%2F%2Fbbgen.net%2Fblog%2F2011%2F05%2Fi-love-error-messages%2F&amp;language=en_GB&amp;category=text&amp;title=I+love+error+messages&amp;description=I+love+how+they+tell+you+not+only+what%26%238217%3Bs+wrong+but+also+what+to+do.+Just+take+the+following+Error+message+from+Adobe+Flash+Player+I+just+got+this+morning....&amp;tags=adobe+flash%2Cerror+message%2Cerrors%2Cflash%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Hello bloggers out there!</title>
		<link>http://bbgen.net/blog/2011/05/hello-bloggers-out-there/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=hello-bloggers-out-there</link>
		<comments>http://bbgen.net/blog/2011/05/hello-bloggers-out-there/#comments</comments>
		<pubDate>Wed, 11 May 2011 22:50:59 +0000</pubDate>
		<dc:creator>bb-generation</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://bbgen.net/blog/?p=27</guid>
		<description><![CDATA[It&#8217;s been a couple years now I&#8217;ve deleted my own blog. Mainly because I hadn&#8217;t any time to update it regularly. Although my spare time is probably a tenth now I feel like I have many things I would like &#8230; <a href="http://bbgen.net/blog/2011/05/hello-bloggers-out-there/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a couple years now I&#8217;ve deleted my own blog. Mainly because I hadn&#8217;t any time to update it regularly. Although my spare time is probably a tenth now I feel like I have many things I would like to say something about.</p>
<p>So here I am starting a new blog on my old domain.</p>
<p>This blog will be written entirely in English and will focus on IT stuff.</p>
<p>So stay tuned for new and interesting posts!</p>
 <p><a href="http://bbgen.net/blog/?flattrss_redirect&amp;id=27&amp;md5=fd83f12e4c55b02281fb853eefea1854" title="Flattr" target="_blank"><img src="http://bbgen.net/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://bbgen.net/blog/2011/05/hello-bloggers-out-there/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="" type="text/html" />
	</item>
	</channel>
</rss>

