<?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>blog.ahzf.de &#187; Rechenknecht</title>
	<atom:link href="http://blog.ahzf.de/index.php/category/rechenknecht/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ahzf.de</link>
	<description></description>
	<lastBuildDate>Tue, 22 Dec 2009 18:21:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Is my code compiled on Mono (or Microsoft .NET)?</title>
		<link>http://blog.ahzf.de/index.php/2009/12/22/is-my-code-compiled-on-mono-or-microsoft-net/</link>
		<comments>http://blog.ahzf.de/index.php/2009/12/22/is-my-code-compiled-on-mono-or-microsoft-net/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 18:11:29 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=617</guid>
		<description><![CDATA[If you want to distinguish between your .NET program compiled on Mono and your program compiled on Microsoft Windows you can use the “__MonoCS_” pre-processor flag!

using System;
using System.IO;
public class AmIMono
&#123;
&#160; &#160; public static void Main&#40;&#41;
&#160; &#160; &#123;
#if __MonoCS__
&#160; &#160; &#160; &#160; Console.WriteLine&#40;&#34;Hello Mono!  &#34;&#41;; &#160; &#160; &#160; &#160; 
#else
&#160; &#160; &#160; &#160; Console.WriteLine&#40;&#34;No Mono! [...]]]></description>
			<content:encoded><![CDATA[<p>If you want to distinguish between your .NET program compiled on Mono and your program compiled on Microsoft Windows you can use the “__MonoCS_” pre-processor flag!</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="kw1">using</span> <span class="kw5">System</span>;<br />
<span class="kw1">using</span> <span class="kw5">System</span>.<span class="me1">IO</span>;</p>
<p><span class="kw1">public</span> <span class="kw4">class</span> AmIMono<br />
<span class="br0">&#123;</span></p>
<p>&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">void</span> Main<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
<span class="co2">#if __MonoCS__</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Console.<span class="me1">WriteLine</span><span class="br0">&#40;</span><span class="st0">&quot;Hello Mono! <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &quot;</span><span class="br0">&#41;</span>; &nbsp; &nbsp; &nbsp; &nbsp; <br />
<span class="co2">#else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Console.<span class="me1">WriteLine</span><span class="br0">&#40;</span><span class="st0">&quot;No Mono! <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> &quot;</span><span class="br0">&#41;</span>;<br />
<span class="co2">#endif</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p><span class="br0">&#125;</span><br />
&nbsp;</div>
<pre>
mcs test.cs
./test.exe
</pre>
<p>via <a href="http://www.schrankmonster.de/2009/12/22/if-you-want-to-determine-if-your-code-is-being-compiled-by-mono/" target="_blank">btk</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2009/12/22/is-my-code-compiled-on-mono-or-microsoft-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Definition of C#</title>
		<link>http://blog.ahzf.de/index.php/2009/10/17/definition-of-c/</link>
		<comments>http://blog.ahzf.de/index.php/2009/10/17/definition-of-c/#comments</comments>
		<pubDate>Sat, 17 Oct 2009 22:00:31 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=614</guid>
		<description><![CDATA[C#.NET: A hybrid of C and Java that attempted to lure defectors from the Java camp to the .NET platform. It also provides an easy transition for C++ refugees who are sick of the annoyances of manual memory management and having 9 incompatible ways to implement a simple string. (via Software++)
]]></description>
			<content:encoded><![CDATA[<p><strong>C#.NET: </strong>A hybrid of C and Java that attempted to lure defectors from the Java camp to the .NET platform. It also provides an easy transition for C++ refugees who are sick of the annoyances of manual memory management and having 9 incompatible ways to implement a simple string. (<a href="http://improvingsoftware.com/2009/04/19/a-managers-retrospective-on-the-c-versus-vbnet-decision/" target="_blank">via Software++</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2009/10/17/definition-of-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Wave &#8211; A Revolution done wrong!</title>
		<link>http://blog.ahzf.de/index.php/2009/10/08/google-wave-a-revolution-done-wrong/</link>
		<comments>http://blog.ahzf.de/index.php/2009/10/08/google-wave-a-revolution-done-wrong/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 23:06:53 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Future Internet]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[The old Internet]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=609</guid>
		<description><![CDATA[What might E-Mail look like if it were invented by&#8230; Linus Torvalds&#8230; the OSS-Community&#8230; the XMPP-Guys&#8230; or any company without central servers within their buisness plan? To me Google Wave is not much more than an IMAP-Server with integrated CSV-Log and a nice GUI. If you remember Linux Torvalds talk on the GIT at Google [...]]]></description>
			<content:encoded><![CDATA[<p>What might E-Mail look like if it were invented by&#8230; Linus Torvalds&#8230; the OSS-Community&#8230; the XMPP-Guys&#8230; or any company without central servers within their buisness plan? To me Google Wave is not much more than an IMAP-Server with integrated CSV-Log and a nice GUI. If you remember <a href="http://www.youtube.com/watch?v=4XpnKHJAok8" target="_blank">Linux Torvalds talk on the GIT at Google Talk</a> (or better its rant against Google sourcecode management) you will be sure, that E-Mail invented by Linux would at least be as decentralized like the GIT or XMPP. Therefore Google Wave might be a very big hype but neither a technological break-through nor a great vision on the future of communicatiuon and collaboration.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2009/10/08/google-wave-a-revolution-done-wrong/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# and implicit conversions</title>
		<link>http://blog.ahzf.de/index.php/2009/10/04/c-and-implicit-conversions/</link>
		<comments>http://blog.ahzf.de/index.php/2009/10/04/c-and-implicit-conversions/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 21:29:31 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Coding]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=599</guid>
		<description><![CDATA[Sometime you decide to create a small datastructure &#8211; let&#8217;s call it Trinary   &#8211; which will mostly behave like some standard datastructure &#8211; let&#8217;s think of Boolean &#8211; but with some different behavior from time to time. TO avoid a lot of noisy changes to your codebase it might be better to define [...]]]></description>
			<content:encoded><![CDATA[<p>Sometime you decide to create a small datastructure &#8211; let&#8217;s call it Trinary <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  &#8211; which will mostly behave like some standard datastructure &#8211; let&#8217;s think of Boolean &#8211; but with some different behavior from time to time. TO avoid a lot of noisy changes to your codebase it might be better to define an implicit conversation from your new datastructure to the standard datastructure (and vice versa). Fortunately this is very easy within C# as all you have to do is to implement appropriate &#8220;public static implicit operator $DestType($SourceType myParam)&#8221; methods for the conversion:</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">implicit</span> <span class="kw1">operator</span> Trinary<span class="br0">&#40;</span>Boolean myBoolean<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>myBoolean<span class="br0">&#41;</span> <span class="kw1">return</span> Trinary.<span class="kw1">TRUE</span>;<br />
&nbsp; <span class="kw1">return</span> Trinary.<span class="kw1">FALSE</span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">implicit</span> <span class="kw1">operator</span> Boolean<span class="br0">&#40;</span>Trinary myTrinary<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>myTrinary == Trinary.<span class="kw1">FALSE</span><span class="br0">&#41;</span> <span class="kw1">return</span> <span class="kw1">false</span>;<br />
&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>myTrinary == Trinary.<span class="me1">DELETED</span><span class="br0">&#41;</span> <span class="kw1">return</span> <span class="kw1">false</span>;<br />
&nbsp; <span class="kw1">return</span> <span class="kw1">true</span>;<br />
<span class="br0">&#125;</span><br />
&nbsp;</div>
<p>The complete class might look like the following:</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="kw1">public</span> <span class="kw1">sealed</span> <span class="kw4">class</span> Trinary<br />
<span class="br0">&#123;</span></p>
<p><span class="co2">#region Data</span></p>
<p><span class="kw1">public</span> <span class="kw1">readonly</span> <span class="kw4">String</span> Name;<br />
<span class="kw1">public</span> <span class="kw1">readonly</span> <span class="kw4">Byte</span> Value;</p>
<p><span class="co2">#endregion</span></p>
<p><span class="co2">#region Init default values</span></p>
<p><span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">readonly</span> Trinary <span class="kw1">FALSE</span>   = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> Trinary<span class="br0">&#40;</span><span class="nu0">0</span>, <span class="st0">&quot;FALSE&quot;</span><span class="br0">&#41;</span>;<br />
<span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">readonly</span> Trinary <span class="kw1">TRUE</span>    = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> Trinary<span class="br0">&#40;</span><span class="nu0">1</span>, <span class="st0">&quot;TRUE&quot;</span><span class="br0">&#41;</span>;<br />
<span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">readonly</span> Trinary DELETED = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> Trinary<span class="br0">&#40;</span><span class="nu0">2</span>, <span class="st0">&quot;DELETED&quot;</span><span class="br0">&#41;</span>;</p>
<p><span class="co2">#endregion</span></p>
<p><span class="co2">#region (private) Constructor</span></p>
<p><span class="kw1">private</span> Trinary<span class="br0">&#40;</span><span class="kw4">Byte</span> myValue, <span class="kw4">String</span> myName<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
<span class="kw1">this</span>.<span class="me1">Name</span>   = myName;<br />
<span class="kw1">this</span>.<span class="me1">Value</span>  = myValue;<br />
<span class="br0">&#125;</span></p>
<p><span class="co2">#endregion</span></p>
<p><span class="co2">#region Implicit conversion to/from Boolean</span></p>
<p><span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">implicit</span> <span class="kw1">operator</span> Trinary<span class="br0">&#40;</span>Boolean myBoolean<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span></p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span>myBoolean<span class="br0">&#41;</span><br />
<span class="kw1">return</span> Trinary.<span class="kw1">TRUE</span>;</p>
<p><span class="kw1">return</span> Trinary.<span class="kw1">FALSE</span>;</p>
<p><span class="br0">&#125;</span></p>
<p><span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">implicit</span> <span class="kw1">operator</span> Boolean<span class="br0">&#40;</span>Trinary myTrinary<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span></p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span>myTrinary == Trinary.<span class="kw1">FALSE</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="kw1">false</span>;</p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span>myTrinary == Trinary.<span class="me1">DELETED</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="kw1">false</span>;</p>
<p><span class="co1">//if (myTrinary == Trinary.TRUE)</span><br />
<span class="kw1">return</span> <span class="kw1">true</span>;</p>
<p><span class="br0">&#125;</span></p>
<p><span class="co2">#endregion</span></p>
<p><span class="kw1">public</span> <span class="kw4">int</span> CompareTo<span class="br0">&#40;</span>Boolean myBoolean<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span></p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span>Value == <span class="nu0">0</span> &amp;amp;&amp;amp; myBoolean == <span class="kw1">false</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="nu0">0</span>;</p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span>Value == <span class="nu0">2</span> &amp;amp;&amp;amp; myBoolean == <span class="kw1">false</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="nu0">0</span>;</p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span>Value == <span class="nu0">1</span> &amp;amp;&amp;amp; myBoolean == <span class="kw1">true</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="nu0">0</span>;</p>
<p><span class="kw1">return</span> <span class="nu0">1</span>;</p>
<p><span class="br0">&#125;</span></p>
<p><span class="kw1">public</span> <span class="kw4">int</span> CompareTo<span class="br0">&#40;</span>Trinary myTrinary<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span></p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">Equals</span><span class="br0">&#40;</span>myTrinary<span class="br0">&#41;</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="nu0">0</span>;</p>
<p><span class="kw1">return</span> <span class="nu0">1</span>;</p>
<p><span class="br0">&#125;</span></p>
<p><span class="co2">#region Operator overloading</span></p>
<p><span class="co2">#region Equals(myObject)</span></p>
<p><span class="kw1">public</span> <span class="kw1">override</span> Boolean Equals<span class="br0">&#40;</span><span class="kw4">Object</span> myObject<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span></p>
<p><span class="co1">// Check if myObject is null</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span>myObject == <span class="kw1">null</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="kw1">false</span>;</p>
<p><span class="co1">// If parameter cannot be cast to Point return false.</span><br />
Trinary _Trinary = myObject <span class="kw1">as</span> Trinary;<br />
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw4">Object</span><span class="br0">&#41;</span>_Trinary == <span class="kw1">null</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="kw1">false</span>;</p>
<p><span class="kw1">return</span> Equals<span class="br0">&#40;</span>_Trinary<span class="br0">&#41;</span>;</p>
<p><span class="br0">&#125;</span></p>
<p><span class="co2">#endregion</span></p>
<p><span class="co2">#region Equals(myRevisionID)</span></p>
<p><span class="kw1">public</span> Boolean Equals<span class="br0">&#40;</span>Trinary myTrinary<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span></p>
<p><span class="co1">// If parameter is null return false:</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw4">Object</span><span class="br0">&#41;</span>myTrinary == <span class="kw1">null</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="kw1">false</span>;</p>
<p><span class="co1">// Check if the inner fields have the same values</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span>Value != myTrinary.<span class="me1">Value</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="kw1">false</span>;</p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span>Name != myTrinary.<span class="me1">Name</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="kw1">false</span>;</p>
<p><span class="kw1">return</span> <span class="kw1">true</span>;</p>
<p><span class="br0">&#125;</span></p>
<p><span class="co2">#endregion</span></p>
<p><span class="co2">#region Operator == (myTrinary1, myTrinary2)</span></p>
<p><span class="kw1">public</span> <span class="kw1">static</span> Boolean <span class="kw1">operator</span> == <span class="br0">&#40;</span>Trinary myTrinary1, Trinary myTrinary2<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span></p>
<p><span class="co1">// If both are null, or both are same instance, return true.</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw5">System</span>.<span class="kw4">Object</span>.<span class="me1">ReferenceEquals</span><span class="br0">&#40;</span>myTrinary1, myTrinary2<span class="br0">&#41;</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="kw1">true</span>;</p>
<p><span class="co1">// If one is null, but not both, return false.</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw4">Object</span><span class="br0">&#41;</span>myTrinary1 == <span class="kw1">null</span><span class="br0">&#41;</span> || <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw4">Object</span><span class="br0">&#41;</span>myTrinary2 == <span class="kw1">null</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="kw1">false</span>;</p>
<p><span class="kw1">return</span> myTrinary1.<span class="me1">Equals</span><span class="br0">&#40;</span>myTrinary2<span class="br0">&#41;</span>;</p>
<p><span class="br0">&#125;</span></p>
<p><span class="co2">#endregion</span></p>
<p><span class="co2">#region Operator != (myTrinary1, myTrinary2)</span></p>
<p><span class="kw1">public</span> <span class="kw1">static</span> Boolean <span class="kw1">operator</span> !=<span class="br0">&#40;</span>Trinary myTrinary1, Trinary myTrinary2<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
<span class="kw1">return</span> !<span class="br0">&#40;</span>myTrinary1 == myTrinary2<span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="co2">#endregion</span></p>
<p><span class="co2">#region GetHashCode()</span></p>
<p><span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">int</span> GetHashCode<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
<span class="kw1">return</span> Value.<span class="me1">GetHashCode</span><span class="br0">&#40;</span><span class="br0">&#41;</span> ^ Name.<span class="me1">GetHashCode</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="co2">#endregion</span></p>
<p><span class="co2">#endregion</span></p>
<p><span class="co2">#region ToString</span></p>
<p><span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">String</span> ToString<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
<span class="kw1">return</span> Name;<br />
<span class="br0">&#125;</span></p>
<p><span class="co2">#endregion</span></p>
<p><span class="br0">&#125;</span><br />
&nbsp;</div>
<p>Additionally it might be usefull to define an extension method to compare the standard Boolean to your new datastructure:</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">class</span> TrinaryExtensionMethods<br />
<span class="br0">&#123;</span></p>
<p><span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">int</span> CompareTo<span class="br0">&#40;</span><span class="kw1">this</span> Boolean myBoolean, Trinary myTrinary<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span></p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span>myTrinary == Trinary.<span class="kw1">FALSE</span> &nbsp; &nbsp;&amp;amp;&amp;amp; myBoolean == <span class="kw1">false</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="nu0">0</span>;</p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span>myTrinary == Trinary.<span class="me1">DELETED</span> &nbsp;&amp;amp;&amp;amp; myBoolean == <span class="kw1">false</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="nu0">0</span>;</p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span>myTrinary == Trinary.<span class="kw1">TRUE</span> &nbsp; &nbsp; &amp;amp;&amp;amp; myBoolean == <span class="kw1">true</span><span class="br0">&#41;</span><br />
<span class="kw1">return</span> <span class="nu0">0</span>;</p>
<p><span class="kw1">return</span> <span class="nu0">1</span>;</p>
<p><span class="br0">&#125;</span></p>
<p><span class="br0">&#125;</span><br />
&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2009/10/04/c-and-implicit-conversions/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OpenVPN and Windows7</title>
		<link>http://blog.ahzf.de/index.php/2009/08/17/openvpn-and-windows7/</link>
		<comments>http://blog.ahzf.de/index.php/2009/08/17/openvpn-and-windows7/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 22:20:48 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[SONES]]></category>
		<category><![CDATA[The old Internet]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=586</guid>
		<description><![CDATA[Soon after our sones Windows7 install day I realized, that our OpenVPN based VPN isn&#8217;t working properly! Fortunately there is an easy workaround:
First: &#8220;Rightclick&#8221; onto the installer and set the compatibility mode to &#8220;Vista&#8221; and run the installer as &#8220;Administrator&#8221;

Second: &#8220;Rightclick&#8221; onto the OpenVPN GUI and run it as &#8220;Administrator&#8221;

Third: If you prefer to have [...]]]></description>
			<content:encoded><![CDATA[<p>Soon after our <a href="http://www.sones.de" target="_blank">sones</a> Windows7 install day I realized, that our <a href="http://openvpn.net" target="_blank">OpenVPN</a> based VPN isn&#8217;t working properly! Fortunately there is an easy workaround:</p>
<p>First: &#8220;Rightclick&#8221; onto the installer and set the compatibility mode to &#8220;Vista&#8221; and run the installer as &#8220;Administrator&#8221;</p>
<p><a href="http://blog.ahzf.de/wp-content/uploads/2009/08/openvpn-windows7-install.png"><img class="alignnone size-medium wp-image-587" title="openvpn-windows7-install" src="http://blog.ahzf.de/wp-content/uploads/2009/08/openvpn-windows7-install-236x300.png" alt="" width="236" height="300" /></a></p>
<p>Second: &#8220;Rightclick&#8221; onto the OpenVPN GUI and run it as &#8220;Administrator&#8221;</p>
<p><a href="http://blog.ahzf.de/wp-content/uploads/2009/08/openvpn-windows7-gui.png"><img class="alignnone size-medium wp-image-588" title="openvpn-windows7-gui" src="http://blog.ahzf.de/wp-content/uploads/2009/08/openvpn-windows7-gui-214x300.png" alt="" width="214" height="300" /></a></p>
<p>Third: If you prefer to have the OpenVPN config files within an truecrypt containter, just move the config files there and add an &#8220;Symbolic directory link&#8221;</p>
<p><a href="http://blog.ahzf.de/wp-content/uploads/2009/08/openvpn-on-truecrypt.png"><img class="alignnone size-medium wp-image-591" title="openvpn-on-truecrypt" src="http://blog.ahzf.de/wp-content/uploads/2009/08/openvpn-on-truecrypt-300x28.png" alt="" width="300" height="28" /></a></p>
<p>Last: It will work again <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> !</p>
<p><a href="http://blog.ahzf.de/wp-content/uploads/2009/08/openvpn-windows7-upnrunning.png"><img class="alignnone size-medium wp-image-589" title="openvpn-windows7-upnrunning" src="http://blog.ahzf.de/wp-content/uploads/2009/08/openvpn-windows7-upnrunning-300x76.png" alt="" width="300" height="76" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2009/08/17/openvpn-and-windows7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Architectural Principles&#8230;</title>
		<link>http://blog.ahzf.de/index.php/2009/05/02/architectural-principles/</link>
		<comments>http://blog.ahzf.de/index.php/2009/05/02/architectural-principles/#comments</comments>
		<pubDate>Sat, 02 May 2009 21:08:11 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=541</guid>
		<description><![CDATA[Principles that seemed inviolable a few years ago are deprecated today. Principles that seem sacred today will be deprecated tomorrow. The principle of constant change is perhaps the only principle of the Internet that should survive indefinitely.
RFC1958
s/the Internet/any IT technology/
]]></description>
			<content:encoded><![CDATA[<blockquote><p>Principles that seemed inviolable a few years ago are deprecated today. Principles that seem sacred today will be deprecated tomorrow. The principle of constant change is perhaps the only principle of the Internet that should survive indefinitely.</p></blockquote>
<p><a href="http://tools.ietf.org/html/rfc1958" target="_blank">RFC1958</a></p>
<p><code>s/the Internet/any IT technology/</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2009/05/02/architectural-principles/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OpenSSL default on Windows?!</title>
		<link>http://blog.ahzf.de/index.php/2009/02/02/openssl-default-on-windows/</link>
		<comments>http://blog.ahzf.de/index.php/2009/02/02/openssl-default-on-windows/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 13:13:28 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=500</guid>
		<description><![CDATA[There&#8217;s a bug in &#8220;the matrix &#8482;&#8221;&#8230;?!?

(Note: WE did NOT install OpenSSL on our development systems&#8230; It seems to be there at default   )
]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a bug in &#8220;the matrix &#8482;&#8221;&#8230;?!?</p>
<p><a href="http://blog.ahzf.de/wp-content/uploads/2009/02/openssl_on_plain_windows.png"><img class="alignnone size-medium wp-image-501" title="openssl_on_plain_windows" src="http://blog.ahzf.de/wp-content/uploads/2009/02/openssl_on_plain_windows-300x153.png" alt="" width="300" height="153" /></a></p>
<p>(Note: WE did NOT install OpenSSL on our development systems&#8230; It seems to be there at default <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  )</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2009/02/02/openssl-default-on-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.NETzzzzz</title>
		<link>http://blog.ahzf.de/index.php/2008/12/31/netzzzzz/</link>
		<comments>http://blog.ahzf.de/index.php/2008/12/31/netzzzzz/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 23:17:40 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=478</guid>
		<description><![CDATA[F: Was ist ein echte Ritterschlag einer Programmiersprachen / Laufzeitumgebung?
A: Wenn Hacker anfangen ihre Toolzzzzz Analysesoftware darinzu programmieren  
]]></description>
			<content:encoded><![CDATA[<p><strong>F:</strong> Was ist ein echte Ritterschlag einer Programmiersprachen / Laufzeitumgebung?<br />
<strong>A:</strong> Wenn <a href="http://www.phenoelit.de" target="_blank">Hacker</a> anfangen ihre <span style="text-decoration: line-through;">Toolzzzzz</span> Analysesoftware darinzu programmieren <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2008/12/31/netzzzzz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Datatypes: To be &#8220;0&#8243; or not to be &#8220;0&#8243;&#8230;</title>
		<link>http://blog.ahzf.de/index.php/2008/11/23/datatypes-to-be-0-or-not-to-be-0/</link>
		<comments>http://blog.ahzf.de/index.php/2008/11/23/datatypes-to-be-0-or-not-to-be-0/#comments</comments>
		<pubDate>Sun, 23 Nov 2008 22:27:37 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=453</guid>
		<description><![CDATA[Argh&#8230; how much time (and money) is wasted every year by bugfixing problems caused when a variable becomes zero although there is not much sense for the variable to become zero within the actual context of the program and therefore the programmer missed to add a line for checking this unexpected behavior.
The most common example [...]]]></description>
			<content:encoded><![CDATA[<p>Argh&#8230; how much time (and money) is wasted every year by bugfixing problems caused when a variable becomes zero although there is not much sense for the variable to become zero within the actual context of the program and therefore the programmer missed to add a line for checking this unexpected behavior.</p>
<p>The most common example for this might be if a for-loop will start at zero or one.</p>
<p>I really ask myself if it would be worth creating a new datatype &#8220;unsignedNotZero&#8221; which can not be set to zero and letting the compiler do most of the checking for me?! Suggestions?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2008/11/23/datatypes-to-be-0-or-not-to-be-0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google&#8217;s Android and the gilded cage</title>
		<link>http://blog.ahzf.de/index.php/2008/10/23/googles-android-and-the-gilded-cage/</link>
		<comments>http://blog.ahzf.de/index.php/2008/10/23/googles-android-and-the-gilded-cage/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 18:35:15 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=417</guid>
		<description><![CDATA[I just agree with laforge and his Android posting.
Thus, Android so far was little more to me than yet-another-J2ME.  Some sandbox virtual machine environment where people can write UI apps for.  In other words: Nothing that gets me excited at all.  I want a openness where I can touch and twist the [...]]]></description>
			<content:encoded><![CDATA[<p>I just agree with <a href="http://laforge.gnumonks.org/weblog/" target="_blank">laforge</a> and his <a href="http://laforge.gnumonks.org/weblog/2008/10/23/#20081023-android" target="_blank">Android posting</a>.</p>
<blockquote><p>Thus, Android so far was little more to me than yet-another-J2ME.  Some sandbox virtual machine environment where people can write UI apps for.  In other words: Nothing that gets me excited at all.  I want a openness where I can touch and twist the bootloader, kernel, drivers, system-level software &#8211; and among other things, UI applications.</p></blockquote>
<p>If I want to buy a closed system I would again buy Apple products&#8230; not because they are really great but because you get what you paid for <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2008/10/23/googles-android-and-the-gilded-cage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The History of .NET</title>
		<link>http://blog.ahzf.de/index.php/2008/10/03/the-history-of-net/</link>
		<comments>http://blog.ahzf.de/index.php/2008/10/03/the-history-of-net/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 14:10:03 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=400</guid>
		<description><![CDATA[Slashdot posted an interessting interview with Anders Hejlsberg, Microsoft&#8217;s leader of C# development, writer of the Turbo Pascal system, and lead architect on the Delphi language. He reveals the history behind C# and what the future holds for C# 4.0.
There is also a podcast interview from May 2008 with Anders Hejlsberg by Software Engineering Radio.
]]></description>
			<content:encoded><![CDATA[<p>Slashdot <a href="http://www.computerworld.com.au/index.php/id;1149786074;pp;2" target="_blank">posted</a> an interessting interview with <a href="http://de.wikipedia.org/wiki/Anders_Hejlsberg" target="_blank">Anders Hejlsberg</a>, Microsoft&#8217;s leader of C# development, writer of the Turbo Pascal system, and lead architect on the Delphi language. He reveals the history behind C# and what the future holds for C# 4.0.</p>
<p>There is also a <a href="http://odeo.com/episodes/22518855-Episode-97-Interview-Anders-Hejlsberg" target="_blank">podcast interview</a> from May 2008 with Anders Hejlsberg by <a href="http://odeo.com/channels/62098-Software-Engineering-Radio-the-podcast-for-professional-software-developers" target="_blank">Software Engineering Radio</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2008/10/03/the-history-of-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Design a Good API and Why it Matters</title>
		<link>http://blog.ahzf.de/index.php/2008/08/23/how-to-design-a-good-api-and-why-it-matters/</link>
		<comments>http://blog.ahzf.de/index.php/2008/08/23/how-to-design-a-good-api-and-why-it-matters/#comments</comments>
		<pubDate>Sat, 23 Aug 2008 12:50:43 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=255</guid>
		<description><![CDATA[
There is a very nice but older Google Tech Talk by Joshua Bloch on &#8220;How to Design a Good API and Why it Matters&#8221; (local copy) which was also the keynote on the Library-Centric Software Design (LCSD&#8217;05). The talk is also available as video. From the conference announcements:
&#8220;Every day around the world, software developers spend [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://lcsd05.cs.tamu.edu/slides/keynote.pdf"><img class="aligncenter size-medium wp-image-256" title="talk-apidesign" src="http://blog.ahzf.de/wp-content/uploads/2008/08/talk-apidesign-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>There is a very nice but older <a href="http://research.google.com/video.html" target="_blank">Google Tech Talk</a> by Joshua Bloch on &#8220;<a href="http://lcsd05.cs.tamu.edu/slides/keynote.pdf" target="_blank">How to Design a Good API and Why it Matters</a>&#8221; (<a href="http://www.ahzf.de/itstuff/conferences/LCSD_05-How_to_Design_a_Good_API_and_Why_it_Matters.pdf" target="_blank">local copy</a>) which was also the keynote on the <a href="http://lcsd05.cs.tamu.edu/" target="_blank">Library-Centric Software Design (LCSD&#8217;05)</a>. The talk is also available as <a href="http://lcsd05.cs.tamu.edu/slides/keynote.pdf" target="_blank">video</a>. From the conference announcements:</p>
<p><em>&#8220;Every day around the world, software developers spend much of their time working with a variety of Application Programming Interfaces (APIs). Some are integral to the core platform, some provide access to widely distributed frameworks, and some are written in-house for use by a few developers. Nearly all programmers occasionally function as API designers, whether they know it or not. A well-designed API can be a great asset to the organization that wrote it and to all who use it. Good APIs increase the pleasure and productivity of the developers who use them, the quality of the software they produce, and ultimately, the corporate bottom line. Conversely, poorly written APIs are a constant thorn in the developer&#8217;s side, and have been known to harm the bottom line to the point of bankruptcy. Given the importance of good API design, surprisingly little has been written on the subject. In this talk, I&#8217;ll attempt to help you recognize good and bad APIs and I&#8217;ll offer specific suggestions for writing good APIs and coping with bad ones.&#8221;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2008/08/23/how-to-design-a-good-api-and-why-it-matters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Security Assessment of the Internet Protocol</title>
		<link>http://blog.ahzf.de/index.php/2008/08/21/a-security-assessment-of-the-internet-protocol/</link>
		<comments>http://blog.ahzf.de/index.php/2008/08/21/a-security-assessment-of-the-internet-protocol/#comments</comments>
		<pubDate>Thu, 21 Aug 2008 22:38:22 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[The old Internet]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=224</guid>
		<description><![CDATA[The UK&#8217;s &#8220;Center for the Protection of National Infrastructure&#8221; has recently released a paper called &#8220;Security Assessment of the Internet Protocol&#8221; disposing the myths of the warfare-safe Internet design. Actually the main goal of the ARPANet was sharing the access to large supercomputers, not the security within this &#8220;mostly private&#8221; network.
Perhaps the paper is a [...]]]></description>
			<content:encoded><![CDATA[<p>The UK&#8217;s &#8220;<a href="http://www.cpni.gov.uk" target="_blank">Center for the Protection of National Infrastructure</a>&#8221; has recently released a <a href="http://www.cpni.gov.uk/Docs/InternetProtocol.pdf" target="_blank">paper</a> called &#8220;<a href="http://www.cpni.gov.uk/Docs/InternetProtocol.pdf">Security Assessment of the Internet Protocol</a>&#8221; disposing the myths of the warfare-safe Internet design. Actually the main goal of the ARPANet was sharing the access to large supercomputers, not the security within this &#8220;mostly private&#8221; network.</p>
<p>Perhaps the paper is a bit toooo short, but better than nothing in the field of <em>best practises</em><span style="font-size: 90%;"> </span>on the implementation of the basic Internet protocolls.</p>
<p><a href="http://www.cpni.gov.uk/Docs/InternetProtocol.pdf" target="_blank"><img class="aligncenter size-medium wp-image-226" title="security" src="http://blog.ahzf.de/wp-content/uploads/2008/08/security-211x300.jpg" alt="" width="211" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2008/08/21/a-security-assessment-of-the-internet-protocol/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The history of the NSF-/ARPA-/INTERNET</title>
		<link>http://blog.ahzf.de/index.php/2008/08/19/the-history-of-the-nsf-arpa-internet/</link>
		<comments>http://blog.ahzf.de/index.php/2008/08/19/the-history-of-the-nsf-arpa-internet/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 00:21:45 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Future Internet]]></category>
		<category><![CDATA[The old Internet]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=134</guid>
		<description><![CDATA[The National Science Foundation has created great and very interessting site on the history of the NSF-/ARPA-/INTERNET.

&#8220;The challenges and and possibilities are out there, waiting for the next group of dreamers to change the world once again.&#8221;
]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.nsf.gov" target="_blank">National Science Foundation</a> has created great and very interessting site on the history of the <a href="http://www.nsf.gov/news/special_reports/nsf-net/" target="_blank">NSF-/ARPA-/INTERNET</a>.</p>
<p><a href="http://blog.ahzf.de/wp-content/uploads/2008/08/nsf-net.jpg"><img class="aligncenter size-medium wp-image-135" title="nsf-net" src="http://blog.ahzf.de/wp-content/uploads/2008/08/nsf-net-296x300.jpg" alt="" width="296" height="300" /></a></p>
<p>&#8220;The challenges and and possibilities are out there, waiting for the next group of dreamers to change the world once again.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2008/08/19/the-history-of-the-nsf-arpa-internet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software defined DVB-T transmitter</title>
		<link>http://blog.ahzf.de/index.php/2008/07/30/software-defined-dvb-t-transmitter/</link>
		<comments>http://blog.ahzf.de/index.php/2008/07/30/software-defined-dvb-t-transmitter/#comments</comments>
		<pubDate>Wed, 30 Jul 2008 12:45:53 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[DVB-T]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[Software Defined Radio]]></category>
		<category><![CDATA[Wireless]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/?p=113</guid>
		<description><![CDATA[
.
Harald recently blogged about a full-featured DVB-T transmitter using a normal PC and the GNURadio / URSP hard- and software. There is also a paper on this topic &#8220;Soft-DVB: A Fully-Software GNURadio-based ETSI DVB-T Modulator&#8221; by Vincenzo Pellegrini,  Giacomo Bacci and Marco Luise presented at the WSR&#8217;08 and a additional paper on wireless protocol [...]]]></description>
			<content:encoded><![CDATA[<div class="story"><a href="http://blog.ahzf.de/wp-content/uploads/2008/08/gnuradio12.png"><img class="aligncenter size-full wp-image-248" title="gnuradio12" src="http://blog.ahzf.de/wp-content/uploads/2008/08/gnuradio12.png" alt="" width="175" height="82" /></a></div>
<div class="story">.</div>
<div class="story"><a href="http://laforge.gnumonks.org/weblog/" target="_blank">Harald</a> recently blogged about a full-featured DVB-T transmitter using a normal PC and the <a href="http://www.gnuradio.org" target="_blank">GNURadio</a> / URSP hard- and software. There is also a paper on this topic &#8220;<a href="http://wwvince.interfree.it/PellegriniBacciLuise_WSR08_CR.pdf" target="_blank">Soft-DVB: A Fully-Software GNURadio-based ETSI DVB-T Modulator</a>&#8221; by Vincenzo Pellegrini,  Giacomo Bacci and Marco Luise presented at the <a href="http://www-int.etec.uni-karlsruhe.de/seiten/conferences/wsr08/" target="_blank">WSR&#8217;08</a> and a additional paper on wireless <a href="http://staff.science.uva.nl/~delaat/sne-2007-2008/p37/report.pdf" target="_blank">protocol analysis</a>.</div>
<div class="story">.</div>
<div class="story">So what to do with the plannings of our own <a href="http://www.fem-dvb-t.de" target="_blank">FeM-DVB-T</a> stadion?</div>
<div class="story">Switch over to an SDR-approach?</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2008/07/30/software-defined-dvb-t-transmitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wofür das iPhone wirklich nützlich ist&#8230;</title>
		<link>http://blog.ahzf.de/index.php/2007/10/31/wofur-das-iphone-wirklich-nutzlich-ist/</link>
		<comments>http://blog.ahzf.de/index.php/2007/10/31/wofur-das-iphone-wirklich-nutzlich-ist/#comments</comments>
		<pubDate>Wed, 31 Oct 2007 22:49:49 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Rechenknecht]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/index.php/2007/10/31/wofur-das-iphone-wirklich-nutzlich-ist/</guid>
		<description><![CDATA[  http://www.ciscoblog.com/archives/2007/10/the_coolest_new.html
Aber das darf man Apple ja nicht vorschlagen, sonst wird man gleich wieder abgemahnt. Also merken: Götter darf man ungefragt loben, aber nicht ungefragt beratschlagen&#8230;
Beim Leo hätten sie wohl auch lieber mal jemand fragen sollen, der sich mit Betriebssystemen auskennt (ne&#8217; das sind mir jetzt zu viele Links auf Dinge die mit dem aktuellen Leo [...]]]></description>
			<content:encoded><![CDATA[<p>  <a href="http://www.ciscoblog.com/archives/2007/10/the_coolest_new.html" target="_blank">http://www.ciscoblog.com/archives/2007/10/the_coolest_new.html</a></p>
<p>Aber das darf man Apple ja nicht vorschlagen, sonst wird man gleich wieder <a href="http://cbs13.com/topstories/local_story_104012157.html" target="_blank">abgemahnt</a>. Also merken: Götter darf man ungefragt <a href="http://blog.wired.com/business/2007/10/apple-fan-goes-.html" target="_blank">loben</a>, aber nicht ungefragt beratschlagen&#8230;</p>
<p>Beim Leo hätten sie wohl auch lieber mal jemand fragen sollen, der sich mit Betriebssystemen auskennt (ne&#8217; das sind mir jetzt zu viele Links auf Dinge die mit dem aktuellen Leo nicht funktionieren)&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2007/10/31/wofur-das-iphone-wirklich-nutzlich-ist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone activation</title>
		<link>http://blog.ahzf.de/index.php/2007/07/02/iphone-activation/</link>
		<comments>http://blog.ahzf.de/index.php/2007/07/02/iphone-activation/#comments</comments>
		<pubDate>Sun, 01 Jul 2007 23:18:35 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/index.php/2007/07/02/iphone-activation/</guid>
		<description><![CDATA[Apple ist ja eine kleine nette Firma und ich mag deren Designs und mein MacBook, mein altes iBook mochte ich auch, und die zwei Apple Classics&#8230;
Aber was Apple mittlerweile anstellt ist einfach nur noch Verrat an sich selbst! Lang ist es her als noch jedes offiziell angekündigte Produkt auch &#8220;ab morgen im Laden&#8221; war. Dies [...]]]></description>
			<content:encoded><![CDATA[<p>Apple ist ja eine kleine nette Firma und ich mag deren Designs und mein MacBook, mein altes iBook mochte ich auch, und die zwei Apple Classics&#8230;</p>
<p>Aber was Apple mittlerweile anstellt ist einfach nur noch Verrat an sich selbst! Lang ist es her als noch jedes offiziell angekündigte Produkt auch &#8220;ab morgen im Laden&#8221; war. Dies war früher mal ein echtes Unterscheidungsmerkmal zu der Vamporware von Microsoft und IBM! Nicht nur &#8220;think different&#8221; sondern auch &#8220;buy different&#8221;.</p>
<p>Aber was ist nach ein paar kommerziellen Erfolgen heute noch von dieser Appple-Moral übrig? Nicht viel&#8230; ein iPhone, mit kaum echten technischen Neuerungen gegenüber bestehenden Technologien, wird monatelang angekündigt, verschoben, angekündigt und stellt sich am Ende als ein Produkt herraus was sich nicht mal Bill &#8216;the devil it self&#8217; Gates getraut hätte auf den Markt zu werfen&#8230;</p>
<ul>
<li><a href="http://www.10zenmonkeys.com/2007/06/29/expect-trouble-activating-your-iphone/" target="_blank">Zwangsaktivierungen</a> via iTunes</li>
<li>Zwangsverträge mit AT&amp;T oder 1-2 europäischen Firmen</li>
<li>SIM- und Netzlock</li>
<li>Eingelötete Akkus</li>
<li>Kein Softwaredevelopment-Kit (== geschlossene Plattform)</li>
<li>&#8230;</li>
</ul>
<p>Wo ist eigentlich die EU-Kartellbehörde wenn man sie mal braucht? Rumheulen wenn Microsoft verteilt über Jahre eine Aktivierung seiner Betriebssystemsimulation einführt und Updates und Bugfixes nur noch an &#8220;überprüfte Kunden&#8221; rausgibt und neue Produkte durch die alte Marktmacht einzuführen versucht&#8230; aber Apple solch ein Produkt auf den Markt werfen lassen?!</p>
<p>Apple ist eine wirklich tolle und aggressiv innovative Firma &#8211; solange sie ordentlich tief in der Nische leben und dort entwickeln muss. Aber wehe sie fühlt sich mal als Marktmacht, dann ist es schnell schluss mit lustig.</p>
<p>Wahrscheinlich werden wir irgendwann mal im Altersheim sitzen und darüber sinieren wie schön es früher war, als man noch Programme mit vi /emacs/edlin/cat/echo oder einer IDE entwickelt und nicht nur Widgets geklickert hat, als man mit dem Handy noch Musik hören konnte &#8211; sofern man wollte &#8211; und nicht musste um zu telefonieren&#8230; als es noch den bösen Microsoft-Wolf gab die all die dunkelgrauen Schafe gefressen hat bevor sie tief schwarz wurden <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Tja, Apple&#8230; willkommen auf der dunklen Seite der (Markt-)Macht&#8230;</p>
<p>Update:  Kaum war dieser Artikel veröffentlich ist mir das erste mal in 4 Jahren mein Mac OS abgekackt:<br />
<code><br />
panic(cpu 0 caller 0x0035E29B): mbuf address out of range 0x4208<br />
Backtrace, Format - Frame : Return Address (4 potential args on stack)<br />
0x252abb98 : 0x128d08 (0x3cc0a4 0x252abbbc 0x131de5 0x0)<br />
0x252abbd8 : 0x35e29b (0x3ecf78 0x4208 0x252abc28 0x363d6f)<br />
0x252abc28 : 0x34d18b (0x252abc5c 0x618 0x0 0x1)<br />
0x252abc68 : 0x7f53b3 (0x1 0x618 0x0 0x252abc9c)<br />
0x252abcb8 : 0x7f56cf (0x0 0x23af3410 0x417c6c4 0x417c600)<br />
0x252abce8 : 0x966007 (0x2387d000 0x3fc1584 0x586 0x252abd37)<br />
0x252abe98 : 0x960785 (0x2387d000 0x3964780 0x40000000 0x1a37c0)<br />
0x252abf08 : 0x39b3c3 (0x2387d000 0x3964780 0x1 0x3841a98)<br />
0x252abf58 : 0x39a595 (0x3964780 0x2 0x252abf78 0x4b2038)<br />
0x252abf88 : 0x39a2cb (0x396aa40 0x3e5ff5c 0x18fddee0 0xffffffff)<br />
0x252abfc8 : 0x19ad2c (0x396aa40 0x0 0x19e0b5 0x3e674c0) Backtrace<br />
terminated-invalid frame pointer 0x0<br />
Kernel loadable modules in backtrace (with dependencies):<br />
com.apple.iokit.AppleYukon(1.0.11b2)@0x95a000<br />
dependency: com.apple.iokit.IONetworkingFamily(1.5.1)@0x7ee000<br />
dependency: com.apple.iokit.IOPCIFamily(2.2)@0x584000<br />
dependency: com.apple.iokit.IOACPIFamily(1.2.0)@0x65e000<br />
com.apple.iokit.IONetworkingFamily(1.5.1)@0x7ee000</code></p>
<p><code><br />
Kernel version:<br />
Darwin Kernel Version 8.10.1: Wed May 23 16:33:00 PDT 2007;<br />
root:xnu-792.22.5~1/RELEASE_I386<br />
</code></p>
<p>Ein Schelm wer böses dabei denkt wenn der Netzwerktreiber nicht mehr mag nur weil Firefox einen apple-kritischen Blogartikel in ein WordPress geschrieben hat&#8230; <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  für fortgeschrittene Paranoiker beachte man auch das Datum des Kernelbuilds <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2007/07/02/iphone-activation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MACFUSE &amp; MacFusion</title>
		<link>http://blog.ahzf.de/index.php/2007/06/24/macfuse-macfusion/</link>
		<comments>http://blog.ahzf.de/index.php/2007/06/24/macfuse-macfusion/#comments</comments>
		<pubDate>Sun, 24 Jun 2007 19:48:56 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/index.php/2007/06/24/macfuse-macfusion/</guid>
		<description><![CDATA[Onkel Google hat ja schon vor einer Weile ein paar neue Projekte vorgestellt um die Arbeit mit einem MAC noch sehr viel angenehmer werden lassen:
MACFUSE und MACFusion
MACFUSE ist die Kernel-Erweiterung um die aus dem Linux und FreeBSD Umfeld bekannte &#8220;FUSE &#8211; File-system in USErspace&#8220;-Implementierung auch unter Mac OS X &#62;=10.4 nutzen zu können (Video).
MACFusion ist [...]]]></description>
			<content:encoded><![CDATA[<p>Onkel Google hat ja schon vor einer Weile ein paar neue Projekte vorgestellt um die Arbeit mit einem MAC noch <strong>sehr</strong> viel angenehmer werden lassen:<br />
<strong>MACFUSE und MACFusion</strong></p>
<p><a href="http://code.google.com/p/macfuse/" target="_blank">MACFUSE</a> ist die Kernel-Erweiterung um die aus dem Linux und FreeBSD Umfeld bekannte &#8220;<a href="http://fuse.sourceforge.net/" target="_blank">FUSE &#8211; File-system in USErspace</a>&#8220;-Implementierung auch unter Mac OS X &gt;=10.4 nutzen zu können (<a href="http://video.google.com/videoplay?docid=3138515991250095768" target="_blank">Video</a>).</p>
<p><a href="http://code.google.com/p/macfusion/" target="_blank">MACFusion</a> ist eine dazupassende GUI die FUSE-Filesysteme mounten kann, Favoritenverwalten und (sehr wichtig) diese beim Schlafengehen des MACs unmounten und beim Aufstehen remounten kann.</p>
<p>Aber was wäre FUSE ohne seine unzähligen 3rd-Party-Erweiterungen?!</p>
<p><a href="http://macfuse.googlecode.com/files/sshfs-0.3.0.dmg" target="_blank">SSHFS</a> kann entfernte Verzeichnisse via SCP/SFTP mounten, so das sie von allen Programmen wie ein lokales Verzeichnis benutzt werden kann. Das ganze geht auch via WebDAVFS und via FTPFS <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://osxbook.com/book/bonus/chapter11/procfs/" target="_blank">PROCFS</a> ist einfach nur cool! Apple hat es ja noch immer nicht eingesehen, dass man ein Prozess-Filesystem <strong>unbedingt</strong> haben will. PROCFS blendet einem nun via FUSE ein echts /proc ein womit man sehr einfach Informationen über Prozesse, Treiber und die Hardware bekommen kann. Was auch sehr cool ist sind die Funktionen um Bildschirmfotos bzw. Fotos von der iSight-Kamera zu bekommen oder den Sudden-Motion-Sensor abzufragen, oder oder&#8230;</p>
<p><code>cat /procfs/system/hardware/displays/0/screenshot.tiff</code></p>
<p><code>cat /procfs/system/hardware/camera/screenshot.tiff</code></p>
<p><code>cat /proc/hardware/motionsensor/data</code></p>
<p>Mit <a href="http://macfuse.googlecode.com/files/SpotlightFS-0.1.0.dmg" target="_blank">SpotlightFS</a> kann man nun sehr einfach Suchanfragen via das Filesystem stellen und deren Ausgabe recht einfach weiterverarbeiten. Im täglichen Arbeitsumfeld mag die normale GUI aber wahrscheinlich dennoch besser geeignet sein. Das ganze geht auch via <a href="http://www.kernel.org/pub/linux/kernel/people/rml/fuse/beaglefs/" target="_blank">BeagleFS</a> was dem ganzen aber imo auch nicht mehr Sinn stiftet <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a href="http://www.ntfs-3g.org/" target="_blank">NTFS-3g</a> verspricht wie der Name schon verät einen Read-/Write-Zugriff  auf Windows NTFS-Filesysteme. Der ein oder andere wird das wohl brauchen.</p>
<p><a href="http://reboot.animeirc.de/cryptofs/" target="_blank">CryptoFS</a>/EncFS beides Lösungen um verschlüsselte Dateisysteme zu realisieren. Davon gibt es noch eine ganze Menge mehr wie z.B. <a href="http://www.freenet.org.nz/phonebook/" target="_blank">PhoneBook</a> einen Filesystem welches mit mehreren Schlüsseln und damit mehreren Sicherheitsebenen arbeitet.</p>
<p><a href="http://www.mulle-kybernetik.com/software/iTunesFS/" target="_blank">iTunesFS</a>&#8230; äh naja&#8230; wozu das nützlichs ein soll versteh ich grad auch nicht <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a href="http://www.cs.helsinki.fi/u/partel/bindfs/" target="_blank">BindFS</a> wenn man ein bestehendes Verzeichnis nochmals an einem anderen Ort im Verzeichnisbaum freigeben und dabei womöglich die Berechtigungen ändern will.</p>
<p><a href="http://sourceforge.net/projects/ext2fuse">Ext2FUSE</a> wenn man auf Linux ext2-Filesysteme zugreifen will.</p>
<p><a href="http://fuse.sourceforge.net/wiki/index.php/FuseIso" target="_blank">FUSEISO</a> um ISO-Images zu mounten.</p>
<p><a href="http://parallel.vub.ac.be/~johan/compFUSEd/" target="_blank">compFUSEd</a> ist ein Filesystem welches die Dateien transparent gepackt auf Platte schreibt und beim Öffnen wieder entpackt. Ganz praktisch wenn man nicht den Üblichen Umweg via cramFS und UnionFS machen will. Alternativ gibt es auch noch <a href="http://north.one.pl/~kazik/pub/LZOlayer" target="_blank">LZOlayer_fs</a>.</p>
<p>Für Paranoiker gibt&#8217;s auch ein <a href="http://loggedfs.sourceforge.net/" target="_blank">LoggedFS</a> welches alle Operationen auf einem Filesystem protokolliert <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Das bekannte UnionFS gibts auch in einer <a href="http://podgorny.cz/moin/UnionFsFuse" target="_blank">UnionFS-FUSE</a> Implementierung welche ein paar nette Features hat, aber systembedingt nicht so schnell ist wie die normale Kernel-Implementierung.</p>
<p>Filesysteme mit Datenbank Anbindung, welche Tags oder Metadaten zu Dateien speichern und Suchen können, gibt es auch sehr viele: <a href="https://gna.org/projects/tagfs/" target="_blank">TagFS</a>, <a href="http://www.thesaguaros.com/beta/newsag/products/dbtoyfs/" target="_blank">DBToyFS</a>, <a href="http://relfs.sourceforge.net/" target="_blank">RelFS</a>, <a href="http://www.nocrew.org/~stefan/lafs/" target="_blank">LaFS</a>, &#8230; nur schaut leider keins der Projekte besonders stabil und benutzerfreundlich zugleich aus&#8230; schade <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>Und joar für FUSE gibt es auch ein <a href="http://www.wizy.org/wiki/ZFS_on_FUSE" target="_blank">ZFS</a>! Long before Apple <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2007/06/24/macfuse-macfusion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FeM-DVB-T Sendeplan 0.9</title>
		<link>http://blog.ahzf.de/index.php/2007/06/01/fem-dvb-t-sendeplan-09/</link>
		<comments>http://blog.ahzf.de/index.php/2007/06/01/fem-dvb-t-sendeplan-09/#comments</comments>
		<pubDate>Fri, 01 Jun 2007 14:58:03 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[DVB-T]]></category>
		<category><![CDATA[FeM]]></category>
		<category><![CDATA[ISWI]]></category>
		<category><![CDATA[TU Ilmenau]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/index.php/2007/06/01/fem-dvb-t-sendeplan-09/</guid>
		<description><![CDATA[
Unter www.fem-dvb-t.de/sendeplan.pl könnt ihr nun den Sendeplan in der Version 0.9 abrufen. Neben den schon bekannten Inhalten verschiedener Lectures und Veranstaltungen der Internationalen Studentenwoche Ilmenau (ISWI) und den Inhalten von ISWIsion 2007 und dem ISWIradio erwarten euch Wiederholungen alter ISWIsion 2003 und 2005 Sendungen sowie verschiedene iSTUFF-Sondersendungen.
Der geplante Sendestart ist heute 21:00 Uhr mit der [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.ahzf.de/wp-content/uploads/2007/06/iswision-iswiradio-001dvb-t4.png" alt="iswision-iswiradio-001dvb-t4.png" /><br />
Unter <a title="FeM-DVB-T Sendeplan" href="http://www.fem-dvb-t.de/sendeplan.pl">www.fem-dvb-t.de/sendeplan.pl</a> könnt ihr nun den Sendeplan in der Version 0.9 abrufen. Neben den schon bekannten Inhalten verschiedener Lectures und Veranstaltungen der <a href="http://www.iswi.org">Internationalen Studentenwoche Ilmenau (ISWI)</a> und den Inhalten von <a href="http://www.iswision.de">ISWIsion 2007</a> und dem <a href="http://www.iswiradio.de">ISWIradio</a> erwarten euch Wiederholungen alter ISWIsion 2003 und 2005 Sendungen sowie verschiedene iSTUFF-Sondersendungen.</p>
<p>Der geplante Sendestart ist heute 21:00 Uhr mit der ersten ISWIsion-Sendung.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2007/06/01/fem-dvb-t-sendeplan-09/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>All rights reversed&#8230;</title>
		<link>http://blog.ahzf.de/index.php/2007/05/01/all-rights-reversed/</link>
		<comments>http://blog.ahzf.de/index.php/2007/05/01/all-rights-reversed/#comments</comments>
		<pubDate>Tue, 01 May 2007 14:42:33 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[Rechenknecht]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/index.php/2007/05/01/all-rights-reversed/</guid>
		<description><![CDATA[Manchmal ergeben sich wirklich neue tolle Persepektiven wenn man mal seinen eingefahrenen Standpunkt verlässt, das Arbeitsblatt, das Paper, den Text den man gerade bearbeitet, mal rumdreht und schaut was dabei so alles rauskommen könnte&#8230;
Als kleine Referenzimplementierung hier ein wenig JAVA-Code von irgendwo aus dem Netz:

//save this to a file called reverse.java
//run javac reverse.java
import java.io.*;
class reverse [...]]]></description>
			<content:encoded><![CDATA[<p>Manchmal ergeben sich wirklich neue tolle Persepektiven wenn man mal seinen eingefahrenen Standpunkt verlässt, das Arbeitsblatt, das Paper, den Text den man gerade bearbeitet, mal rumdreht und schaut was dabei so alles rauskommen könnte&#8230;</p>
<p>Als kleine Referenzimplementierung hier ein wenig JAVA-Code von irgendwo aus dem Netz:<br />
<code><br />
//save this to a file called reverse.java<br />
//run javac reverse.java<br />
import java.io.*;</code></p>
<p><code>class reverse {</code></p>
<p><code>public static void main(String[] args) {</code></p>
<p><code>if (args.length != 2) {<br />
System.out.println("usage: java reverse &lt;infile&gt; &lt;outfile&gt;");<br />
System.exit(1);<br />
}<br />
</code><br />
<code>try {</code></p>
<p><code>//Create a file object directly so we can get its length<br />
File				inFile	= new File(args[0]);<br />
FileReader		fReader	= new FileReader(inFile);<br />
</code><br />
<code>//BufferedReader so we can read in the entire file at once<br />
BufferedReader	reader	= new BufferedReader(fReader);<br />
FileWriter		fWriter	= new FileWriter(args[1]);<br />
</code><br />
<code>//This assumes 1 byte per character!<br />
char[] chars = new char[ (int) inFile.length()];<br />
</code><br />
<code>fReader.read(chars,0,chars.length);<br />
for(int i=chars.length-1; i&gt;=0; i--) fWriter.write(chars[i]);<br />
</code><br />
<code>fReader.close();<br />
fWriter.close();<br />
</code><br />
<code>} catch (FileNotFoundException e) {<br />
System.out.println("infile \""+args[0]+"\" not found or outfile \""+args[1]+"\" not writeable!");<br />
} catch (Exception e) {<br />
System.out.println("error: "+e);<br />
}<br />
</code><br />
<code>}</code><br />
<code>}</code></p>
<p>Als Beispiel nehmen wir mal so eine <a href="http://de.wikipedia.org/wiki/Gedenkm%C3%BCnzen_der_Bundesrepublik_Deutschland">Gedenkmünze der Bundesrepublik Deutschland</a>:</p>
<ol>
<li>Wir laden beide Bilder runter</li>
<li>Wir drehen die Datei mit der Wertseite der Münze mit Hilfe des JAVA-Programmes um: <em>java reverse file2.jpg</em></li>
<li>Wir fügen die umgedrehte Datei an das Ende der Datei mit der Motivseite der Münze: <em>cat file1.jpg &gt;&gt; file2.jpg</em></li>
</ol>
<p>Nun haben wir eine Datei mit der Vorderseite der Münze und können ganz intuitiv die Münze/Datei umdrehen um die Rückseite der Münze zu betrachten&#8230; und wieder umdrehen um die Vorderseite zu betrachten&#8230; und&#8230; und&#8230; und&#8230; <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a href="http://blog.ahzf.de/wp-content/uploads/2007/05/180px-deutsche_gedenkmuenzen_-_waehrungsunion.jpg" title="Deutsche Gedenkmünze mit Vorder- und Rückseite in einer Datei…"><img src="http://blog.ahzf.de/wp-content/uploads/2007/05/180px-deutsche_gedenkmuenzen_-_waehrungsunion.jpg" alt="Deutsche Gedenkmünze mit Vorder- und Rückseite in einer Datei…" /></a></p>
<p>Und als kleine Hausaufgabe suchen wir uns ein interessantes JPG von diesem Blog hier und gucken was auf der Rückseite so alles notiert ist&#8230; <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Wer eine bessere Implementierung zum Betrachten der Rückseite von Dateien geschrieben hat möge den Code einfach als Kommentar an dieses Blogposting hängen&#8230;</p>
<p>Noch viel Spaß beim Dateien umdrehen&#8230;</p>
<p><strong>UPDATE:</strong>  Mit perl geht&#8217;s dank BAR doch noch immer am einfachsten: perl -e ‘print scalar reverse &lt;&gt;‘ file2.jpg &gt; file1.jpg</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2007/05/01/all-rights-reversed/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Systemhelden</title>
		<link>http://blog.ahzf.de/index.php/2007/03/25/systemhelden/</link>
		<comments>http://blog.ahzf.de/index.php/2007/03/25/systemhelden/#comments</comments>
		<pubDate>Sun, 25 Mar 2007 22:24:23 +0000</pubDate>
		<dc:creator>ahzf</dc:creator>
				<category><![CDATA[LART]]></category>
		<category><![CDATA[Rechenknecht]]></category>

		<guid isPermaLink="false">http://blog.ahzf.de/index.php/2007/03/25/systemhelden/</guid>
		<description><![CDATA[Jene, denen sonnengottgleiche Verehrung standesgemäß gebührt aber nur rabenschwarze Einfältigkeit entgegengebracht wird, mögen nun vor Freude ihre Augen weiten, denn Gerechtigkeit wird geschehen im Zeichen der Systemhelden. Erhebet euch von euren rückenmarkmarternden Bürostühlen, recket die Faust gen Neonröhre und schließet euch an, den kollegialen Schmachverbreitern zu zeigen, was eine LART-Peitsche ist.
http://www.systemhelden.com
Oder&#8230;

&#8230;und natürlich sämtliche Folgen von [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Jene, denen sonnengottgleiche Verehrung standesgemäß gebührt aber nur rabenschwarze Einfältigkeit entgegengebracht wird, mögen nun vor Freude ihre Augen weiten, denn Gerechtigkeit wird geschehen im Zeichen der Systemhelden. Erhebet euch von euren rückenmarkmarternden Bürostühlen, recket die Faust gen Neonröhre und schließet euch an, den kollegialen Schmachverbreitern zu zeigen, was eine LART-Peitsche ist.</strong><br />
<a href="http://www.systemhelden.com">http://www.systemhelden.com</a></p>
<p>Oder&#8230;</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="transparent" /><param name="src" value="http://www.youtube.com/v/odyG0F8UM1A" /><embed type="application/x-shockwave-flash" width="425" height="350" src="http://www.youtube.com/v/odyG0F8UM1A" wmode="transparent"></embed></object></p>
<p>&#8230;und natürlich sämtliche Folgen von <strong>IT Crowd</strong>.</p>
<p>Möget ihr SysAdmins im RZ der TU Ilmenau, bei der FeM e.V., beim StudiVZ und bei der Bundesbank viel Vergnügen damit haben <img src='http://blog.ahzf.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ahzf.de/index.php/2007/03/25/systemhelden/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
