<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" version="2.0">
  <channel>
    <title>bb|!bb ... WHO CARES? JUST GO ON. - coden</title>
    <link>http://oldblog.holgerferstl.de/</link>
    <description>Holgers Blog</description>
    <language>en-us</language>
    <copyright>Your Name Here</copyright>
    <lastBuildDate>Mon, 14 Apr 2008 17:28:01 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>sephi@gmx.net</managingEditor>
    <webMaster>sephi@gmx.net</webMaster>
    <item>
      <trackback:ping>http://oldblog.holgerferstl.de/Trackback.aspx?guid=9b4468e2-8832-47c8-84cf-bf6e62a2c724</trackback:ping>
      <pingback:server>http://oldblog.holgerferstl.de/pingback.aspx</pingback:server>
      <pingback:target>http://oldblog.holgerferstl.de/PermaLink,guid,9b4468e2-8832-47c8-84cf-bf6e62a2c724.aspx</pingback:target>
      <dc:creator>Your Name Here</dc:creator>
      <wfw:comment>http://oldblog.holgerferstl.de/CommentView,guid,9b4468e2-8832-47c8-84cf-bf6e62a2c724.aspx</wfw:comment>
      <wfw:commentRss>http://oldblog.holgerferstl.de/SyndicationService.asmx/GetEntryCommentsRss?guid=9b4468e2-8832-47c8-84cf-bf6e62a2c724</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <title>Deep inside me...</title>
      <guid isPermaLink="false">http://oldblog.holgerferstl.de/PermaLink,guid,9b4468e2-8832-47c8-84cf-bf6e62a2c724.aspx</guid>
      <link>http://oldblog.holgerferstl.de/2008/04/14/DeepInsideMe.aspx</link>
      <pubDate>Mon, 14 Apr 2008 17:28:01 GMT</pubDate>
      <description>&lt;p&gt;
... you will find a lot of persons. 
&lt;/p&gt;
&lt;p&gt;
No, i am not schizophrenic (i believe), but last weekend i played around a little
with the new Silverlight 2 Deepzoom Control [0].
&lt;/p&gt;
&lt;p&gt;
... and that's the result: my cat, my city, my self ;-) (only visible in IE with latest
Silverlight plugin)&lt;br&gt;
&lt;iframe border=1 marginwidth=0 marginheight=0 src="http://spielwiese.holgerferstl.de/mydeepzoom/Default.html" frameborder=1 width=600 height=400&gt;
&lt;/p&gt;
&gt;
&lt;br&gt;
&lt;font size=1&gt;use mouse for zooming and moving&lt;/font&gt;&gt;
&lt;p&gt;
What you need are some big very detailed images and the deep zoom composer [5], which
generates the tiles. Then reference the generated output to the MultiScaleImage Control:
&lt;/p&gt;
&lt;p&gt;
&lt;img height=107 alt=msiSnippet.png src="http://oldblog.holgerferstl.de/content/binary/Silverlight/msiSnippet.png" width=421 border=0&gt;
&lt;/p&gt;
&lt;p&gt;
The hardest but also funniest thing was to get a nice detailed picture. I only found
the virtual pixel town [1] from a german pixel project. Unfortunately most of the
good panorama gigapixel images cost a lot, so i decided to generate my own ones;)
The first is a sweet "fear-me" cat [2]. I converted it to ascii text with the help
of the mosascii m2 tool [3]. And the big mosaic of myself i created with andrea mosaic
[4].
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Notes&lt;/strong&gt;:&lt;br&gt;
[0] Thanks Jeff Prosis for his Expression Blend Solution (&lt;a href="http://www.wintellect.com/cs/blogs/jprosise/archive/2008/04/01/silverlight-deep-zoom.aspx"&gt;http://www.wintellect.com/cs/blogs/jprosise/archive/2008/04/01/silverlight-deep-zoom.aspx&lt;/a&gt;)&lt;br&gt;
[1] &lt;a href="http://www.vo-pixeltown.com/"&gt;http://www.vo-pixeltown.com/&lt;/a&gt;
&lt;br&gt;
[2] &lt;a href="http://allcutecats.blogspot.com/2007/09/fear-me-kitten.html"&gt;http://allcutecats.blogspot.com/2007/09/fear-me-kitten.html&lt;/a&gt;
&lt;br&gt;
[3] &lt;a href="http://www.mosasciim2.com/"&gt;http://www.mosasciim2.com&lt;/a&gt;
&lt;br&gt;
[4] &lt;a href="http://www.andreaplanet.com/andreamosaic/"&gt;http://www.andreaplanet.com/andreamosaic/&lt;/a&gt;
&lt;br&gt;
[5] &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=457b17b7-52bf-4bda-87a3-fa8a4673f8bf&amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=457b17b7-52bf-4bda-87a3-fa8a4673f8bf&amp;displaylang=en&lt;/a&gt;
&lt;br&gt;
[6] DeepZoom Memorabilia: &lt;a href="http://memorabilia.hardrock.com/"&gt;http://memorabilia.hardrock.com/&lt;/a&gt; 
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=9b4468e2-8832-47c8-84cf-bf6e62a2c724" /&gt;</description>
      <comments>http://oldblog.holgerferstl.de/CommentView,guid,9b4468e2-8832-47c8-84cf-bf6e62a2c724.aspx</comments>
      <category>coden</category>
      <category>private</category>
    </item>
    <item>
      <trackback:ping>http://oldblog.holgerferstl.de/Trackback.aspx?guid=8e70e2c1-3fd2-4e4b-ab2b-d5454d2c0a13</trackback:ping>
      <pingback:server>http://oldblog.holgerferstl.de/pingback.aspx</pingback:server>
      <pingback:target>http://oldblog.holgerferstl.de/PermaLink,guid,8e70e2c1-3fd2-4e4b-ab2b-d5454d2c0a13.aspx</pingback:target>
      <dc:creator>Your Name Here</dc:creator>
      <wfw:comment>http://oldblog.holgerferstl.de/CommentView,guid,8e70e2c1-3fd2-4e4b-ab2b-d5454d2c0a13.aspx</wfw:comment>
      <wfw:commentRss>http://oldblog.holgerferstl.de/SyndicationService.asmx/GetEntryCommentsRss?guid=8e70e2c1-3fd2-4e4b-ab2b-d5454d2c0a13</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Maybe someone remember my old 3D Blogreader[1], i wrote some times ago. It was a windows
application based on directX.<br />
The last Weeks i played a little with WPF[2] and thought it would be nice to recreate
my blog reader in a xbap browser application.
</p>
        <p align="left">
          <a href="http://spielwiese.holgerferstl.de/wpfblogreader/wpfblogreaderv2.xbap">
            <img height="273" alt="WPFBlogReaderScreenshot.jpg" src="http://oldblog.holgerferstl.de/content/binary/blogreader/WPFBlogReaderScreenshot.jpg" width="400" border="0" />
          </a>
        </p>
        <p>
... so, <a href="http://spielwiese.holgerferstl.de/wpfblogreader/wpfblogreaderv2.xbap">here</a>[3]
is it. To run you will need Windows Vista and <strong>IE7 </strong>or WinXP with the
latest .NET3.0 Framework.
</p>
        <p>
And please forgive me the colorschemes and styles ... i'am a developer, not a designer
;)
</p>
        <p>
Thanks to the WPF3D Team[4]. They made it possible to interact with 2D elements in
a 3D world.<br />
Thanks to Lee from thewpfblog[5] for his listbox style 
<br />
Thanks to charles petzold[6] for the xaml clock
</p>
        <p>
[1] <a href="http://oldblog.holgerferstl.de/default.aspx#a1681962f-3121-437a-b497-84ba43ff7379">http://oldblog.holgerferstl.de/default.aspx#a1681962f-3121-437a-b497-84ba43ff7379</a><br />
[2] <a href="http://en.wikipedia.org/wiki/Windows_Presentation_Foundation">http://en.wikipedia.org/wiki/Windows_Presentation_Foundation</a><br />
[3] <a href="http://spielwiese.holgerferstl.de/wpfblogreader/wpfblogreaderv2.xbap">http://spielwiese.holgerferstl.de/wpfblogreader/wpfblogreaderv2.xbap</a><br />
[4] <a href="http://blogs.msdn.com/wpf3d/default.aspx">http://blogs.msdn.com/wpf3d/default.aspx</a><br />
[5] <a href="http://thewpfblog.com/">http://thewpfblog.com/</a><br />
[6] <a href="http://www.charlespetzold.com/blog/blog.xml">http://www.charlespetzold.com/blog/blog.xml</a><br /></p>
        <img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=8e70e2c1-3fd2-4e4b-ab2b-d5454d2c0a13" />
      </body>
      <title>WPF BlogReader</title>
      <guid isPermaLink="false">http://oldblog.holgerferstl.de/PermaLink,guid,8e70e2c1-3fd2-4e4b-ab2b-d5454d2c0a13.aspx</guid>
      <link>http://oldblog.holgerferstl.de/2007/01/21/WPFBlogReader.aspx</link>
      <pubDate>Sun, 21 Jan 2007 19:43:33 GMT</pubDate>
      <description>&lt;p&gt;
Maybe someone remember my old 3D Blogreader[1], i wrote some times ago. It was a windows
application based on directX.&lt;br&gt;
The last Weeks i played a little with WPF[2] and thought it would be nice to recreate
my blog reader in a xbap browser application.
&lt;/p&gt;
&lt;p align=left&gt;
&lt;a href="http://spielwiese.holgerferstl.de/wpfblogreader/wpfblogreaderv2.xbap"&gt;&lt;img height=273 alt=WPFBlogReaderScreenshot.jpg src="http://oldblog.holgerferstl.de/content/binary/blogreader/WPFBlogReaderScreenshot.jpg" width=400 border=0&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
... so, &lt;a href="http://spielwiese.holgerferstl.de/wpfblogreader/wpfblogreaderv2.xbap"&gt;here&lt;/a&gt;[3]
is it. To run you will need Windows Vista and &lt;strong&gt;IE7 &lt;/strong&gt;or WinXP with the
latest .NET3.0 Framework.
&lt;/p&gt;
&lt;p&gt;
And please forgive me the colorschemes and styles ... i'am a developer, not a designer
;)
&lt;/p&gt;
&lt;p&gt;
Thanks to the WPF3D Team[4]. They made it possible to interact with 2D elements in
a 3D world.&lt;br&gt;
Thanks to Lee from thewpfblog[5] for his listbox style 
&lt;br&gt;
Thanks to charles petzold[6] for the xaml clock
&lt;/p&gt;
&lt;p&gt;
[1] &lt;a href="http://oldblog.holgerferstl.de/default.aspx#a1681962f-3121-437a-b497-84ba43ff7379"&gt;http://oldblog.holgerferstl.de/default.aspx#a1681962f-3121-437a-b497-84ba43ff7379&lt;/a&gt;
&lt;br&gt;
[2] &lt;a href="http://en.wikipedia.org/wiki/Windows_Presentation_Foundation"&gt;http://en.wikipedia.org/wiki/Windows_Presentation_Foundation&lt;/a&gt;
&lt;br&gt;
[3] &lt;a href="http://spielwiese.holgerferstl.de/wpfblogreader/wpfblogreaderv2.xbap"&gt;http://spielwiese.holgerferstl.de/wpfblogreader/wpfblogreaderv2.xbap&lt;/a&gt;
&lt;br&gt;
[4] &lt;a href="http://blogs.msdn.com/wpf3d/default.aspx"&gt;http://blogs.msdn.com/wpf3d/default.aspx&lt;/a&gt;
&lt;br&gt;
[5] &lt;a href="http://thewpfblog.com/"&gt;http://thewpfblog.com/&lt;/a&gt;
&lt;br&gt;
[6] &lt;a href="http://www.charlespetzold.com/blog/blog.xml"&gt;http://www.charlespetzold.com/blog/blog.xml&lt;/a&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=8e70e2c1-3fd2-4e4b-ab2b-d5454d2c0a13" /&gt;</description>
      <comments>http://oldblog.holgerferstl.de/CommentView,guid,8e70e2c1-3fd2-4e4b-ab2b-d5454d2c0a13.aspx</comments>
      <category>coden</category>
    </item>
    <item>
      <trackback:ping>http://oldblog.holgerferstl.de/Trackback.aspx?guid=a0affef8-eb07-4ad8-8942-be5d481dbc0f</trackback:ping>
      <pingback:server>http://oldblog.holgerferstl.de/pingback.aspx</pingback:server>
      <pingback:target>http://oldblog.holgerferstl.de/PermaLink,guid,a0affef8-eb07-4ad8-8942-be5d481dbc0f.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://oldblog.holgerferstl.de/CommentView,guid,a0affef8-eb07-4ad8-8942-be5d481dbc0f.aspx</wfw:comment>
      <wfw:commentRss>http://oldblog.holgerferstl.de/SyndicationService.asmx/GetEntryCommentsRss?guid=a0affef8-eb07-4ad8-8942-be5d481dbc0f</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Now it's time for another tool. Here is it, my c# implementation of a genetic art
tool based on sharpNEAT [1]. Inspired by the genart tool fom mattias fagerlund [2]
which is based on delphiNeat[3] i create just for fun my own version of it with some
new features like
</p>
        <p>
- history (it's possible to go back in a previous generation and track another evolution)<br />
- the user has more posibilities to affect the color calculations<br />
- there are more options to influence the picture generating.<br />
- math. expression (which will compile at runtime and affect the network signals)<br />
- save/load several genomes<br />
- save/load color schemes
</p>
        <p>
take a look
</p>
        <p align="center">
          <img height="418" alt="genart.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/genart.jpg" width="555" border="0" />
        </p>
        <p align="center">
 
</p>
        <p>
here are some black/white generated pictures
</p>
        <p align="center">
          <img height="75" alt="button.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/button.jpg" width="100" border="0" /> <img height="75" alt="chronometer_small.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/chronometer_small.jpg" width="100" border="0" /> <img height="75" alt="eye.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/eye.jpg" width="100" border="0" /> <img height="75" alt="face.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/face.jpg" width="100" border="0" /> <img height="75" alt="phone.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/phone.jpg" width="100" border="0" /></p>
        <p align="center">
 <img height="75" alt="sign.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/sign.jpg" width="100" border="0" /> <img height="75" alt="wiredcross_small.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/wiredcross_small.jpg" width="100" border="0" /> <img height="75" alt="skull.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/skull.jpg" width="100" border="0" /> <img height="75" alt="spool.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/spool.jpg" width="100" border="0" /> <img height="75" alt="tentacle.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/tentacle.jpg" width="100" border="0" /></p>
        <p align="center">
 <img height="75" alt="watership.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/watership.jpg" width="100" border="0" /> <img height="75" alt="whatever.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/whatever.jpg" width="100" border="0" /> <img height="75" alt="whatever2.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/whatever2.jpg" width="100" border="0" /> <img height="75" alt="xray.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/xray.jpg" width="100" border="0" /> <img height="75" alt="10.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/colored/10.jpg" width="100" border="0" /></p>
        <p align="center">
 
</p>
        <p>
and here some colorful 
</p>
        <p align="center">
          <img height="75" alt="1.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/colored/1.jpg" width="100" border="0" />  <img height="75" alt="13.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/colored/13.jpg" width="100" border="0" /> <img height="75" alt="14_texture.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/colored/14_texture.jpg" width="100" border="0" /> <img height="75" alt="12.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/colored/12.jpg" width="100" border="0" /> <img height="75" alt="15.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/colored/15.jpg" width="100" border="0" /></p>
        <p align="center">
 <img height="75" alt="16.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/colored/16.jpg" width="100" border="0" /> <img height="75" alt="18_pig.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/colored/18_pig.jpg" width="100" border="0" /> <img height="75" alt="19.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/colored/19.jpg" width="100" border="0" /> <img height="75" alt="2.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/colored/2.jpg" width="100" border="0" /> <img height="75" alt="3.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/colored/3.jpg" width="100" border="0" /></p>
        <p align="center">
 <img height="75" alt="4.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/colored/4.jpg" width="100" border="0" /> <img height="75" alt="7.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/colored/7.jpg" width="100" border="0" /> <img height="75" alt="8.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/colored/8.jpg" width="100" border="0" /> <img height="75" alt="bird.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/colored/bird.jpg" width="100" border="0" /> <img height="75" alt="eule.jpg" src="http://oldblog.holgerferstl.de/content/binary/genart/colored/eule.jpg" width="100" border="0" /></p>
        <p>
          <br />
To run it you need <strong>.NET Framework 2.0 final.</strong> If you want play a little
with it look here [4].<br />
Or if you want to see the full source and extend it, download the whole Visual Studio
2005 solution [5].
</p>
        <p>
Some tips:
</p>
        <p>
- the more complex a network is, it's expedient to lightly increase the network iterations
for better pictures.<br />
- play with the mutation parameters, it's important for good results.<br />
- play a little with the math. expression for the network input signals.<br />
- tip: mirrorX/mirrorY in addition with "colored noise" and the "wired" color scheme
gets the "real" pictures, then just play with the zoomfactor ;)
</p>
        <p>
          <br />
While i was coding this tool, a question is flashed in my mind. I see that all networks
have the _same_ input signals, and these are constant. But all networks create an
individual picture of the signal. Now, just map this to the human brains ... you see
the parallelism? ... is all out there only an illusion?
</p>
        <p>
          <br />
life is a game.
</p>
        <p>
[1] <a href="/tracker.aspx?page=http://sharpneat.sourceforge.net/" target="_blank">http://sharpneat.sourceforge.net/</a><br />
[2] <a href="/tracker.aspx?page=http://www.cambrianlabs.com/mattias/GeneticArt/" target="_blank">http://www.cambrianlabs.com/mattias/GeneticArt/</a><br />
[3] <a href="/tracker.aspx?page=http://www.cambrianlabs.com/mattias/DelphiNEAT/" target="_blank">http://www.cambrianlabs.com/mattias/DelphiNEAT/</a><br />
[4] <a href="/tracker.aspx?File=GenArt.zip">GenArt.zip, just the exe and some color
schemes (130 kb), need .NET 2.0 to run</a> <br />
[5] <a href="/tracker.aspx?File=GenArtSolution.zip">GeneticArt full source (VS2005
Solution) (670kb)</a></p>
        <img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=a0affef8-eb07-4ad8-8942-be5d481dbc0f" />
      </body>
      <title>Genetic Art</title>
      <guid isPermaLink="false">http://oldblog.holgerferstl.de/PermaLink,guid,a0affef8-eb07-4ad8-8942-be5d481dbc0f.aspx</guid>
      <link>http://oldblog.holgerferstl.de/2006/02/08/GeneticArt.aspx</link>
      <pubDate>Wed, 08 Feb 2006 21:55:10 GMT</pubDate>
      <description>&lt;p&gt;
Now it's time for another tool. Here is it, my c# implementation of a genetic art
tool based on sharpNEAT [1]. Inspired by the genart tool fom mattias fagerlund [2]
which is based on delphiNeat[3] i create just for fun my own version of it with some
new features like
&lt;/p&gt;
&lt;p&gt;
- history (it's possible to go back in a previous generation and track another evolution)&lt;br&gt;
- the user has more posibilities to affect the color calculations&lt;br&gt;
- there are more options to influence the picture generating.&lt;br&gt;
- math. expression (which will compile at runtime and affect the network signals)&lt;br&gt;
- save/load several genomes&lt;br&gt;
- save/load color schemes
&lt;/p&gt;
&lt;p&gt;
take a look
&lt;/p&gt;
&lt;p align=center&gt;
&lt;img height=418 alt=genart.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/genart.jpg" width=555 border=0&gt;
&lt;/p&gt;
&lt;p align=center&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
here are some black/white generated pictures
&lt;/p&gt;
&lt;p align=center&gt;
&lt;img height=75 alt=button.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/button.jpg" width=100 border=0&gt;&amp;nbsp;&lt;img height=75 alt=chronometer_small.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/chronometer_small.jpg" width=100 border=0&gt;&amp;nbsp;&lt;img height=75 alt=eye.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/eye.jpg" width=100 border=0&gt;&amp;nbsp;&lt;img height=75 alt=face.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/face.jpg" width=100 border=0&gt;&amp;nbsp;&lt;img height=75 alt=phone.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/phone.jpg" width=100 border=0&gt;
&lt;/p&gt;
&lt;p align=center&gt;
&amp;nbsp;&lt;img height=75 alt=sign.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/sign.jpg" width=100 border=0&gt;&amp;nbsp;&lt;img height=75 alt=wiredcross_small.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/wiredcross_small.jpg" width=100 border=0&gt;&amp;nbsp;&lt;img height=75 alt=skull.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/skull.jpg" width=100 border=0&gt;&amp;nbsp;&lt;img height=75 alt=spool.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/spool.jpg" width=100 border=0&gt;&amp;nbsp;&lt;img height=75 alt=tentacle.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/tentacle.jpg" width=100 border=0&gt;
&lt;/p&gt;
&lt;p align=center&gt;
&amp;nbsp;&lt;img height=75 alt=watership.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/watership.jpg" width=100 border=0&gt;&amp;nbsp;&lt;img height=75 alt=whatever.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/whatever.jpg" width=100 border=0&gt;&amp;nbsp;&lt;img height=75 alt=whatever2.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/whatever2.jpg" width=100 border=0&gt;&amp;nbsp;&lt;img height=75 alt=xray.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/blackwhite/xray.jpg" width=100 border=0&gt;&amp;nbsp;&lt;img height=75 alt=10.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/colored/10.jpg" width=100 border=0&gt;
&lt;/p&gt;
&lt;p align=center&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
and here some colorful 
&lt;/p&gt;
&lt;p align=center&gt;
&lt;img height=75 alt=1.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/colored/1.jpg" width=100 border=0&gt;&amp;nbsp;&amp;nbsp;&lt;img height=75 alt=13.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/colored/13.jpg" width=100 border=0&gt;&amp;nbsp;&lt;img height=75 alt=14_texture.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/colored/14_texture.jpg" width=100 border=0&gt;&amp;nbsp;&lt;img height=75 alt=12.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/colored/12.jpg" width=100 border=0&gt;&amp;nbsp;&lt;img height=75 alt=15.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/colored/15.jpg" width=100 border=0&gt;
&lt;/p&gt;
&lt;p align=center&gt;
&amp;nbsp;&lt;img height=75 alt=16.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/colored/16.jpg" width=100 border=0&gt;&amp;nbsp;&lt;img height=75 alt=18_pig.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/colored/18_pig.jpg" width=100 border=0&gt;&amp;nbsp;&lt;img height=75 alt=19.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/colored/19.jpg" width=100 border=0&gt;&amp;nbsp;&lt;img height=75 alt=2.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/colored/2.jpg" width=100 border=0&gt;&amp;nbsp;&lt;img height=75 alt=3.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/colored/3.jpg" width=100 border=0&gt;
&lt;/p&gt;
&lt;p align=center&gt;
&amp;nbsp;&lt;img height=75 alt=4.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/colored/4.jpg" width=100 border=0&gt;&amp;nbsp;&lt;img height=75 alt=7.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/colored/7.jpg" width=100 border=0&gt;&amp;nbsp;&lt;img height=75 alt=8.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/colored/8.jpg" width=100 border=0&gt;&amp;nbsp;&lt;img height=75 alt=bird.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/colored/bird.jpg" width=100 border=0&gt;&amp;nbsp;&lt;img height=75 alt=eule.jpg src="http://oldblog.holgerferstl.de/content/binary/genart/colored/eule.jpg" width=100 border=0&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
To run it you need &lt;strong&gt;.NET Framework 2.0 final.&lt;/strong&gt; If you want play a little
with it look here [4].&lt;br&gt;
Or if you want to see the full source and extend it, download the whole Visual Studio
2005 solution [5].
&lt;/p&gt;
&lt;p&gt;
Some tips:
&lt;/p&gt;
&lt;p&gt;
- the more complex a network is, it's expedient to lightly increase the network iterations
for better pictures.&lt;br&gt;
- play with the mutation parameters, it's important for good results.&lt;br&gt;
- play a little with the math. expression for the network input signals.&lt;br&gt;
- tip: mirrorX/mirrorY in addition with "colored noise" and the "wired" color scheme
gets the "real" pictures, then just play with the zoomfactor ;)
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
While i was coding this tool, a question is flashed in my mind. I see that all networks
have the _same_ input signals, and these are constant. But all networks create an
individual picture of the signal. Now, just map this to the human brains ... you see
the parallelism? ... is all out there only an illusion?
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
life is a game.
&lt;/p&gt;
&lt;p&gt;
[1] &lt;a href="/tracker.aspx?page=http://sharpneat.sourceforge.net/" target=_blank&gt;http://sharpneat.sourceforge.net/&lt;/a&gt;
&lt;br&gt;
[2] &lt;a href="/tracker.aspx?page=http://www.cambrianlabs.com/mattias/GeneticArt/" target=_blank&gt;http://www.cambrianlabs.com/mattias/GeneticArt/&lt;/a&gt;
&lt;br&gt;
[3] &lt;a href="/tracker.aspx?page=http://www.cambrianlabs.com/mattias/DelphiNEAT/" target=_blank&gt;http://www.cambrianlabs.com/mattias/DelphiNEAT/&lt;/a&gt;
&lt;br&gt;
[4] &lt;a href="/tracker.aspx?File=GenArt.zip"&gt;GenArt.zip, just the exe and some color
schemes (130 kb), need .NET 2.0 to run&lt;/a&gt;&amp;nbsp;&lt;br&gt;
[5] &lt;a href="/tracker.aspx?File=GenArtSolution.zip"&gt;GeneticArt full source (VS2005
Solution) (670kb)&lt;/a&gt; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=a0affef8-eb07-4ad8-8942-be5d481dbc0f" /&gt;</description>
      <comments>http://oldblog.holgerferstl.de/CommentView,guid,a0affef8-eb07-4ad8-8942-be5d481dbc0f.aspx</comments>
      <category>coden</category>
      <category>dddwik</category>
      <category>tddwnb</category>
    </item>
    <item>
      <trackback:ping>http://oldblog.holgerferstl.de/Trackback.aspx?guid=da265cf3-806b-4608-810d-025c64eb3460</trackback:ping>
      <pingback:server>http://oldblog.holgerferstl.de/pingback.aspx</pingback:server>
      <pingback:target>http://oldblog.holgerferstl.de/PermaLink,guid,da265cf3-806b-4608-810d-025c64eb3460.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://oldblog.holgerferstl.de/CommentView,guid,da265cf3-806b-4608-810d-025c64eb3460.aspx</wfw:comment>
      <wfw:commentRss>http://oldblog.holgerferstl.de/SyndicationService.asmx/GetEntryCommentsRss?guid=da265cf3-806b-4608-810d-025c64eb3460</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I think one of the finest feature in visual studio 2005 is the debugger visualizer.
</p>
        <p>
What? You  don't know what this is? Well, visualizers are Visual Studio debugger
user interface components which allow to display a variable or object in a meaningful
way that is appropriate to its data type. The standard visualizers are Html, Text
and Xml for any string object and the DataSet visualizer for DataSets, DataViews and
DataTables. 
</p>
        <p>
Today i was in a situation where i missing an <strong>image visualizer</strong>. So
i had to write my own and what shall i say ... its so easy. And now, for all people
out there who don't have the will or the time to implement its own visualizer here
are the good news: you can use my one ;-)  
</p>
        <p>
Just copy <a href="http://oldblog.holgerferstl.de/tracker.aspx?File=ImageVisualizer.dll"><strong>this
dll</strong></a>either in 
</p>
        <p>
Install path\Microsoft Visual Studio 8\Common7\Packages\Debugger\Visualizers<br />
-or-<br />
My Documents\Visual Studio 2005\Visualizers
</p>
        <p>
Then restart the debug process and have fun.
</p>
        <p>
          <img alt="" hspace="0" src="http://oldblog.holgerferstl.de/content/binary/imagevisualizer.jpg" align="baseline" border="0" />
        </p>
        <p>
          <br />
The result should be like in the picture above. Just choose my visualizer and you
will see the image in a new window. There, if you double click on the image its size
mode will switch between stretch and normal. Nothing special but it works.
</p>
        <p>
bye .. and feel free to "reflector it" ;-)
</p>
        <img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=da265cf3-806b-4608-810d-025c64eb3460" />
      </body>
      <title>Visual Studio Image Visualizer</title>
      <guid isPermaLink="false">http://oldblog.holgerferstl.de/PermaLink,guid,da265cf3-806b-4608-810d-025c64eb3460.aspx</guid>
      <link>http://oldblog.holgerferstl.de/2006/01/16/VisualStudioImageVisualizer.aspx</link>
      <pubDate>Mon, 16 Jan 2006 23:03:09 GMT</pubDate>
      <description>&lt;p&gt;
I think one of the finest feature in visual studio 2005 is the debugger visualizer.
&lt;/p&gt;
&lt;p&gt;
What? You&amp;nbsp; don't know what this is? Well, visualizers are Visual Studio debugger
user interface components which allow to display a variable or object in a meaningful
way that is appropriate to its data type. The standard visualizers are Html, Text
and Xml for any string object and the DataSet visualizer for DataSets, DataViews and
DataTables. 
&lt;/p&gt;
&lt;p&gt;
Today i was in a situation where i missing an &lt;strong&gt;image visualizer&lt;/strong&gt;. So
i had to write my own and what shall i say ... its so easy. And now, for all people
out there who don't have the will or the time to implement its own visualizer here
are the good news: you can use my one ;-)&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
Just copy &lt;a href="http://oldblog.holgerferstl.de/tracker.aspx?File=ImageVisualizer.dll"&gt;&lt;strong&gt;this
dll&lt;/strong&gt; &lt;/a&gt;either in 
&lt;/p&gt;
&lt;p&gt;
Install path\Microsoft Visual Studio 8\Common7\Packages\Debugger\Visualizers&lt;br&gt;
-or-&lt;br&gt;
My Documents\Visual Studio 2005\Visualizers
&lt;/p&gt;
&lt;p&gt;
Then restart the debug process and have fun.
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="" hspace=0 src="http://oldblog.holgerferstl.de/content/binary/imagevisualizer.jpg" align=baseline border=0&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
The result should be like in the picture above. Just choose my visualizer and you
will see the image in a new window. There, if you double click on the image its size
mode will switch between stretch and normal. Nothing special but it works.
&lt;/p&gt;
&lt;p&gt;
bye .. and feel free to "reflector it" ;-)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=da265cf3-806b-4608-810d-025c64eb3460" /&gt;</description>
      <comments>http://oldblog.holgerferstl.de/CommentView,guid,da265cf3-806b-4608-810d-025c64eb3460.aspx</comments>
      <category>coden</category>
    </item>
    <item>
      <trackback:ping>http://oldblog.holgerferstl.de/Trackback.aspx?guid=bc70d845-acb1-4d1a-884b-f0e7ca455e9a</trackback:ping>
      <pingback:server>http://oldblog.holgerferstl.de/pingback.aspx</pingback:server>
      <pingback:target>http://oldblog.holgerferstl.de/PermaLink,guid,bc70d845-acb1-4d1a-884b-f0e7ca455e9a.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://oldblog.holgerferstl.de/CommentView,guid,bc70d845-acb1-4d1a-884b-f0e7ca455e9a.aspx</wfw:comment>
      <wfw:commentRss>http://oldblog.holgerferstl.de/SyndicationService.asmx/GetEntryCommentsRss?guid=bc70d845-acb1-4d1a-884b-f0e7ca455e9a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Ich weiss nicht, wer sich das ausgedacht hatte, aber da gab's mal ein Codezone Code-Slogan
für das <a href="http://oldblog.holgerferstl.de/tracker.aspx?page=https://www.codezone.info/Magazin.Codezone">Codezone
Magazin</a>, welches folgendermaßen aussah:
</p>
        <p>
          <em>   If Not (you.FirstPoem = "hello world!") Then<br />
     CodeZone.Keepout(you)<br />
   End If</em>
        </p>
        <p>
          <br />
Da ich nicht der große VB Fan bin, würde ich lieber einen der folgenden C# Alternativen
sehen.
</p>
        <p>
          <strong>die Standardumsetzung</strong>
          <br />
          <em>   if (you.FirstPoem != "hello world!")<br />
     CodeZone.Keepout(you);</em>
        </p>
        <p>
          <strong>oder als Einzeiler </strong>
          <font size="1">(der leider nicht wirklich funktioniert,
da die else Bedingung fehlt)</font>
          <br />
          <em>   you.FirstPoem != "hello world!" ? CodeZone.Keepout(you) : ;</em>
        </p>
        <p>
          <strong>aber wie wär es denn mit dieser special .NET 2.0 Version?<br /></strong>
          <em>   if (String.IsNullOrEmpty(you.Poems.Find(delegate(string
poem) { return poem == "hello world!"? true:false; })))<br />
      CodeZone.Keepout(you);</em>
        </p>
        <p>
... bei generics schlägt doch das Entwicklerherz gleich höher :-)
</p>
        <img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=bc70d845-acb1-4d1a-884b-f0e7ca455e9a" />
      </body>
      <title>Codezone Magazin Code-Slogan</title>
      <guid isPermaLink="false">http://oldblog.holgerferstl.de/PermaLink,guid,bc70d845-acb1-4d1a-884b-f0e7ca455e9a.aspx</guid>
      <link>http://oldblog.holgerferstl.de/2006/01/07/CodezoneMagazinCodeSlogan.aspx</link>
      <pubDate>Sat, 07 Jan 2006 03:03:02 GMT</pubDate>
      <description>&lt;p&gt;
Ich weiss nicht, wer sich das ausgedacht hatte, aber da gab's mal ein Codezone Code-Slogan
für das &lt;a href="http://oldblog.holgerferstl.de/tracker.aspx?page=https://www.codezone.info/Magazin.Codezone"&gt;Codezone
Magazin&lt;/a&gt;, welches folgendermaßen aussah:
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;&amp;nbsp;&amp;nbsp; If Not (you.FirstPoem = "hello world!") Then&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; CodeZone.Keepout(you)&lt;br&gt;
&amp;nbsp;&amp;nbsp; End If&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
Da ich nicht der große VB Fan bin, würde ich lieber einen der folgenden C# Alternativen
sehen.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;die Standardumsetzung&lt;/strong&gt;
&lt;br&gt;
&lt;em&gt;&amp;nbsp;&amp;nbsp; if (you.FirstPoem != "hello world!")&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;CodeZone.Keepout(you);&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;oder als Einzeiler &lt;/strong&gt;&lt;font size=1&gt;(der leider nicht wirklich funktioniert,
da die else Bedingung fehlt)&lt;/font&gt;
&lt;br&gt;
&lt;em&gt;&amp;nbsp;&amp;nbsp; you.FirstPoem != "hello world!" ? CodeZone.Keepout(you) : ;&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;aber wie wär es denn mit dieser special .NET 2.0 Version?&lt;br&gt;
&lt;/strong&gt;&lt;em&gt;&amp;nbsp;&amp;nbsp; if (String.IsNullOrEmpty(you.Poems.Find(delegate(string
poem) { return poem == "hello world!"? true:false; })))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; CodeZone.Keepout(you);&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
... bei generics schlägt doch das Entwicklerherz gleich höher :-)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=bc70d845-acb1-4d1a-884b-f0e7ca455e9a" /&gt;</description>
      <comments>http://oldblog.holgerferstl.de/CommentView,guid,bc70d845-acb1-4d1a-884b-f0e7ca455e9a.aspx</comments>
      <category>coden</category>
    </item>
    <item>
      <trackback:ping>http://oldblog.holgerferstl.de/Trackback.aspx?guid=ff506ba6-bff6-4d49-9c93-7736d5b16057</trackback:ping>
      <pingback:server>http://oldblog.holgerferstl.de/pingback.aspx</pingback:server>
      <pingback:target>http://oldblog.holgerferstl.de/PermaLink,guid,ff506ba6-bff6-4d49-9c93-7736d5b16057.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://oldblog.holgerferstl.de/CommentView,guid,ff506ba6-bff6-4d49-9c93-7736d5b16057.aspx</wfw:comment>
      <wfw:commentRss>http://oldblog.holgerferstl.de/SyndicationService.asmx/GetEntryCommentsRss?guid=ff506ba6-bff6-4d49-9c93-7736d5b16057</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you have switched to the new Visual Studio 2005 and .NET Framework 2.0 ... and
now you get errors like "<em>Cross-thread operation not valid: Control 'Form1' accessed
from a thread other than the thread it was created on</em>." in your applications
that was working fine before ...
</p>
        <p>
then
</p>
        <p>
A) you can oldschool like refactor the code to use the BeginInvoke method for
multi threading. 
</p>
        <p>
B) you can newschool like use the new Backgroundworker class. (very nice)
</p>
        <p>
C) or if you are lazy, just diable the messages with 
<br /><font size="2">System.Windows.Forms.</font><font color="#008080" size="2">Form</font><font size="2">.CheckForIllegalCrossThreadCalls
= </font><font color="#0000ff" size="2">false</font><font size="2">; 
</font></p>
        <p>
;-)
</p>
        <img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=ff506ba6-bff6-4d49-9c93-7736d5b16057" />
      </body>
      <title>Cross-thread operation not valid</title>
      <guid isPermaLink="false">http://oldblog.holgerferstl.de/PermaLink,guid,ff506ba6-bff6-4d49-9c93-7736d5b16057.aspx</guid>
      <link>http://oldblog.holgerferstl.de/2005/09/23/CrossthreadOperationNotValid.aspx</link>
      <pubDate>Fri, 23 Sep 2005 00:12:35 GMT</pubDate>
      <description>&lt;p&gt;
If you have switched to the new Visual Studio 2005 and .NET Framework 2.0 ... and
now you get errors like "&lt;em&gt;Cross-thread operation not valid: Control 'Form1' accessed
from a thread other than the thread it was created on&lt;/em&gt;." in your applications
that was working fine before ...
&lt;/p&gt;
&lt;p&gt;
then
&lt;/p&gt;
&lt;p&gt;
A) you can oldschool like refactor the code to use the BeginInvoke&amp;nbsp;method&amp;nbsp;for
multi threading. 
&lt;/p&gt;
&lt;p&gt;
B) you can newschool like use the new Backgroundworker class. (very nice)
&lt;/p&gt;
&lt;p&gt;
C) or if you are lazy, just diable the messages with 
&lt;br&gt;
&lt;font size=2&gt;System.Windows.Forms.&lt;/font&gt;&lt;font color=#008080 size=2&gt;Form&lt;/font&gt;&lt;font size=2&gt;.CheckForIllegalCrossThreadCalls
= &lt;/font&gt;&lt;font color=#0000ff size=2&gt;false&lt;/font&gt;&lt;font size=2&gt;; 
&lt;/p&gt;
&gt; 
&lt;p&gt;
;-)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=ff506ba6-bff6-4d49-9c93-7736d5b16057" /&gt;</description>
      <comments>http://oldblog.holgerferstl.de/CommentView,guid,ff506ba6-bff6-4d49-9c93-7736d5b16057.aspx</comments>
      <category>coden</category>
      <category>dddwik</category>
    </item>
    <item>
      <trackback:ping>http://oldblog.holgerferstl.de/Trackback.aspx?guid=230abd16-41b9-423a-b2ad-3f676b9586e3</trackback:ping>
      <pingback:server>http://oldblog.holgerferstl.de/pingback.aspx</pingback:server>
      <pingback:target>http://oldblog.holgerferstl.de/PermaLink,guid,230abd16-41b9-423a-b2ad-3f676b9586e3.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://oldblog.holgerferstl.de/CommentView,guid,230abd16-41b9-423a-b2ad-3f676b9586e3.aspx</wfw:comment>
      <wfw:commentRss>http://oldblog.holgerferstl.de/SyndicationService.asmx/GetEntryCommentsRss?guid=230abd16-41b9-423a-b2ad-3f676b9586e3</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Sicher kam der eine oder andere Programmierer schon einmal in die Situation durch
ein Enum zu iterieren, um die Werte einfach nur irgendwo in der richtigen Reihenfolge
anzuzeigen. Zum Beispiel:<br /><font color="#0000ff" size="2">     enum</font><font size="2"><font color="#000000"> MyEnum{Montag,
Dienstag, Mittwoch, Donnerstag, Freitag};</font></font></p>
        <p>
Nichts leichter als das, da gibt es ja die verschiedensten Möglichkeiten, z.B.:
</p>
        <font size="2">
          <p>
A) Umständlich<br /><br /></p>
        </font>
        <font color="#0000ff" size="2">     foreach</font>
        <font size="2"> (</font>
        <font color="#0000ff" size="2">int</font>
        <font size="2"> item </font>
        <font color="#0000ff" size="2">in</font>
        <font size="2"> MyEnum.GetValues(</font>
        <font color="#0000ff" size="2">typeof</font>
        <font size="2">(MyEnum))){ 
<br />
          MyEnum myEnum = (MyEnum)item;<br />
          Console.WriteLine(myEnum +
"," ); 
<br />
     }
<p>
bzw. 
<br /></p></font>
        <font color="#0000ff" size="2">     foreach</font>
        <font size="2"> (</font>
        <font color="#0000ff" size="2">object</font>
        <font size="2"> item </font>
        <font color="#0000ff" size="2">in</font>
        <font size="2"> Enum.GetValues(</font>
        <font color="#0000ff" size="2">typeof</font>
        <font size="2">(MyEnum)))<br />
          Console.WriteLine(item); 
<p><br />
B) Lesbar<br /></p></font>
        <font color="#0000ff" size="2">
          <br />
     for</font>
        <font size="2"> (MyEnum day=MyEnum.Montag; day&lt;=MyEnum.Freitag;
day++)<br />
            Console.WriteLine(day); 
<p><br />
oder C) über die Enum.GetNames() Methode<br /><br /></p></font>
        <font color="#0000ff" size="2">     foreach</font>
        <font size="2"> (</font>
        <font color="#0000ff" size="2">string</font>
        <font size="2"> item </font>
        <font color="#0000ff" size="2">in</font>
        <font size="2"> Enum.GetNames(</font>
        <font color="#0000ff" size="2">typeof</font>
        <font size="2">(MyEnum)))<br />
            Console.WriteLine(item
+ "," ); 
</font>
        <p>
Gut und schön, das alles funktioniert leider nur solange korrekt, bis man den
Werten eigene Integerwerte zuweist. Gerade Methode B) ist sehr anfällig auf Wert-Veränderungen.
</p>
        <p>
Bereits bei einer kleinen Änderungen wie:<br /><font color="#0000ff" size="2">   enum</font><font size="2"><font color="#000000"> MyEnum{Montag=-2,
Dienstag, Mittwoch, Donnerstag, Freitag=-4};<br /><br /></font></font>liefert Methode B) aufgrund der angegebenen Bedingung nichts mehr zurück. 
<br />
A) und C) sind da ein klein wenig resistenter und erzeugen folgenden sinnfreien Output:
"Mittwoch, Donnerstag, Freitag, Montag, Dienstag"
</p>
        <p>
          <br />
Ok, noch ein Schritt weiter:<br /><font color="#0000ff" size="2">   enum</font><font size="2"><font color="#000000"> MyEnum{Montag=0,
Dienstag=-1, Mittwoch=4, Donnerstag=-2, Freitag};</font></font></p>
        <p>
Methode B) liefert auch hier nichts zurück.<br />
Methode A) ergibt  "Montag, Mittwoch, Donnerstag, Dienstag, Dienstag"<br />
Aber wo ist der Freitag?? Hier trennt sich die Spreu vom Weizen.<br />
Lediglich Methode C) war so fair und hat sich den Freitag nicht einbehalten: --&gt;<br />
"Montag, Mittwoch, Donnerstag, Dienstag, Freitag", die Reihenfolge ist dennoch nicht
erwünscht.
</p>
        <p>
Ein letzter Versuch, am Freitag kommt noch eine 1 ran:<br /><font color="#0000ff" size="2">enum</font><font size="2"><font color="#000000"> MyEnum{Montag=0,
Dienstag=-1, Mittwoch=4, Donnerstag=-2, Freitag=1};<br /><br /></font></font>Methode B) zeigt nun wenigstens den Wochenstart: "Montag" und schluckt
den Rest. A) und C) sind sich auch wieder einig mit "Montag, Freitag, Mittwoch, Donnerstag,
Dienstag"
</p>
        <p>
          <br />
Nun gut, wer es bis hier her geschafft hat, bekommt nun ein Wissenbonus ;-)<br />
Denn es gibt eine Möglichkeit die richtige Reihenfolge darzustellen. Und zwar
mit Hilfe von Reflections, was so aussieht:
</p>
        <font size="2">
          <p>
     Type type = 
</p>
        </font>
        <font color="#0000ff" size="2">typeof</font>
        <font size="2">(MyEnum);<br />
     System.Reflection.FieldInfo[] fis = type.GetFields(); 
<br /></font>
        <font color="#0000ff" size="2">     foreach</font>
        <font size="2">(System.Reflection.FieldInfo
fi </font>
        <font color="#0000ff" size="2">in</font>
        <font size="2"> fis){<br /></font>
        <font color="#0000ff" size="2">         
if</font>
        <font size="2">(fi.IsStatic)<br />
              
Console.WriteLine(fi.Name + "," );<br />
     }</font>
        <p>
Ist  nicht wirklich lesbarer, aber funktioniert zumindest in allen obigen Fällen
korrekt.
</p>
        <p>
that's all folks
</p>
        <img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=230abd16-41b9-423a-b2ad-3f676b9586e3" />
      </body>
      <title>Enum, das unbekannte Wesen. Oder wie werde ich Herrscher meines Codes.</title>
      <guid isPermaLink="false">http://oldblog.holgerferstl.de/PermaLink,guid,230abd16-41b9-423a-b2ad-3f676b9586e3.aspx</guid>
      <link>http://oldblog.holgerferstl.de/2005/08/09/EnumDasUnbekannteWesenOderWieWerdeIchHerrscherMeinesCodes.aspx</link>
      <pubDate>Tue, 09 Aug 2005 23:51:07 GMT</pubDate>
      <description>&lt;p&gt;
Sicher kam der eine oder andere Programmierer schon einmal in die Situation durch
ein Enum zu iterieren, um die Werte einfach nur irgendwo in der richtigen Reihenfolge
anzuzeigen. Zum Beispiel:&lt;br&gt;
&lt;font color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; enum&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; MyEnum{Montag,
Dienstag, Mittwoch, Donnerstag, Freitag};&lt;/font&gt;
&lt;/p&gt;
&gt; 
&lt;p&gt;
Nichts leichter als das, da gibt es ja die verschiedensten M&amp;#246;glichkeiten, z.B.:
&lt;/p&gt;
&lt;font size=2&gt; 
&lt;p&gt;
A) Umst&amp;#228;ndlich&lt;br&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach&lt;/font&gt;&lt;font size=2&gt; (&lt;/font&gt;&lt;font color=#0000ff size=2&gt;int&lt;/font&gt;&lt;font size=2&gt; item &lt;/font&gt;&lt;font color=#0000ff size=2&gt;in&lt;/font&gt;&lt;font size=2&gt; MyEnum.GetValues(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;typeof&lt;/font&gt;&lt;font size=2&gt;(MyEnum))){ 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyEnum myEnum = (MyEnum)item;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(myEnum +
"," ); 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&gt;
&lt;p&gt;
bzw. 
&lt;br&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach&lt;/font&gt;&lt;font size=2&gt; (&lt;/font&gt;&lt;font color=#0000ff size=2&gt;object&lt;/font&gt;&lt;font size=2&gt; item &lt;/font&gt;&lt;font color=#0000ff size=2&gt;in&lt;/font&gt;&lt;font size=2&gt; Enum.GetValues(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;typeof&lt;/font&gt;&lt;font size=2&gt;(MyEnum)))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(item); &gt;
&lt;p&gt;
&lt;br&gt;
B) Lesbar&lt;br&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for&lt;/font&gt;&lt;font size=2&gt; (MyEnum day=MyEnum.Montag; day&amp;lt;=MyEnum.Freitag;
day++)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(day); &gt;
&lt;p&gt;
&lt;br&gt;
oder C) &amp;#252;ber die Enum.GetNames() Methode&lt;br&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach&lt;/font&gt;&lt;font size=2&gt; (&lt;/font&gt;&lt;font color=#0000ff size=2&gt;string&lt;/font&gt;&lt;font size=2&gt; item &lt;/font&gt;&lt;font color=#0000ff size=2&gt;in&lt;/font&gt;&lt;font size=2&gt; Enum.GetNames(&lt;/font&gt;&lt;font color=#0000ff size=2&gt;typeof&lt;/font&gt;&lt;font size=2&gt;(MyEnum)))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; Console.WriteLine(item
+ "," ); &gt;
&lt;/font&gt; 
&lt;p&gt;
Gut und sch&amp;#246;n, das alles funktioniert leider nur solange korrekt, bis man den
Werten eigene Integerwerte zuweist. Gerade Methode B) ist sehr anf&amp;#228;llig auf Wert-Ver&amp;#228;nderungen.
&lt;/p&gt;
&lt;p&gt;
Bereits bei einer kleinen &amp;#196;nderungen wie:&lt;br&gt;
&lt;font color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp; enum&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; MyEnum{Montag=-2,
Dienstag, Mittwoch, Donnerstag, Freitag=-4};&lt;br&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/font&gt;liefert Methode B) aufgrund der angegebenen Bedingung nichts mehr zur&amp;#252;ck. 
&lt;br&gt;
A) und C) sind da ein klein wenig resistenter und erzeugen folgenden sinnfreien Output:
"Mittwoch, Donnerstag, Freitag, Montag, Dienstag"
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
Ok, noch ein Schritt weiter:&lt;br&gt;
&lt;font color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;enum&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; MyEnum{Montag=0,
Dienstag=-1, Mittwoch=4, Donnerstag=-2, Freitag};&lt;/font&gt;
&lt;/p&gt;
&gt; 
&lt;p&gt;
Methode B) liefert auch hier nichts zur&amp;#252;ck.&lt;br&gt;
Methode A) ergibt&amp;nbsp; "Montag, Mittwoch, Donnerstag, Dienstag, Dienstag"&lt;br&gt;
Aber wo ist der Freitag?? Hier trennt sich die Spreu vom Weizen.&lt;br&gt;
Lediglich Methode C) war so fair und hat sich den Freitag nicht einbehalten: --&amp;gt;&lt;br&gt;
"Montag, Mittwoch, Donnerstag, Dienstag, Freitag", die Reihenfolge ist dennoch nicht
erw&amp;#252;nscht.
&lt;/p&gt;
&lt;p&gt;
Ein letzter Versuch, am Freitag kommt noch eine 1 ran:&lt;br&gt;
&lt;font color=#0000ff size=2&gt;enum&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; MyEnum{Montag=0,
Dienstag=-1, Mittwoch=4, Donnerstag=-2, Freitag=1};&lt;br&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/font&gt;Methode B) zeigt nun wenigstens den Wochenstart: "Montag" und schluckt
den Rest. A) und C) sind sich auch wieder einig mit "Montag, Freitag, Mittwoch, Donnerstag,
Dienstag"
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
Nun gut, wer es bis hier her geschafft hat, bekommt nun ein Wissenbonus ;-)&lt;br&gt;
Denn es gibt eine M&amp;#246;glichkeit die richtige Reihenfolge darzustellen. Und zwar
mit&amp;nbsp;Hilfe von Reflections, was so aussieht:
&lt;/p&gt;
&lt;font size=2&gt; 
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type type = 
&lt;/font&gt;&lt;font color=#0000ff size=2&gt;typeof&lt;/font&gt;&lt;font size=2&gt;(MyEnum);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Reflection.FieldInfo[] fis = type.GetFields(); 
&lt;br&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach&lt;/font&gt;&lt;font size=2&gt;(System.Reflection.FieldInfo
fi &lt;/font&gt;&lt;font color=#0000ff size=2&gt;in&lt;/font&gt;&lt;font size=2&gt; fis){&lt;br&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
if&lt;/font&gt;&lt;font size=2&gt;(fi.IsStatic)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Console.WriteLine(fi.Name + "," );&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&gt;
&lt;p&gt;
Ist&amp;nbsp; nicht wirklich lesbarer, aber funktioniert zumindest in allen obigen F&amp;#228;llen
korrekt.
&lt;/p&gt;
&lt;p&gt;
that's all folks
&lt;/p&gt;
&lt;img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=230abd16-41b9-423a-b2ad-3f676b9586e3" /&gt;</description>
      <comments>http://oldblog.holgerferstl.de/CommentView,guid,230abd16-41b9-423a-b2ad-3f676b9586e3.aspx</comments>
      <category>coden</category>
      <category>dddwik</category>
    </item>
    <item>
      <trackback:ping>http://oldblog.holgerferstl.de/Trackback.aspx?guid=ebcab74b-7490-409a-9504-984c6c6cf32a</trackback:ping>
      <pingback:server>http://oldblog.holgerferstl.de/pingback.aspx</pingback:server>
      <pingback:target>http://oldblog.holgerferstl.de/PermaLink,guid,ebcab74b-7490-409a-9504-984c6c6cf32a.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://oldblog.holgerferstl.de/CommentView,guid,ebcab74b-7490-409a-9504-984c6c6cf32a.aspx</wfw:comment>
      <wfw:commentRss>http://oldblog.holgerferstl.de/SyndicationService.asmx/GetEntryCommentsRss?guid=ebcab74b-7490-409a-9504-984c6c6cf32a</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Einige .NET Entwickler werden die GetHashCode() Funktion kennen, ist sie doch
meist (situationsbedingt) recht nützlich. Aber Achtung vor falscher
Anwendung. Man könnte meinen, dass bei den großen Hash-Werten (Int32) auch
genügend Spielraum für die Kombination (sprich Addition) der einzelnen Werte
zur Verfügung steht. 
</p>
        <p>
Dies sollte man jedoch vermeiden. Ich habe erst neulich einige Zeit damit verbracht
einen Bug zu finden, der daraus resultierte, weil
</p>
        <p>
"<strong>2307</strong>".GetHashCode() + "<strong>IA0/7</strong>".GetHashCode() + "<strong>RBL-RRB2</strong>".GetHashCode()<br />
und 
<br />
"<strong>2305</strong>".GetHashCode() + "<strong>IA0/6</strong>".GetHashCode()
+ "<strong>RBL-RRB1</strong>".GetHashCode()
</p>
        <p>
tatsächlich dieselbe Summe (2048949580) besitzen.
</p>
        <p>
Also immer dran denken, niemals Hashwerte addieren, dann lieber alles als einen String
interpretieren und diesen dann hashen. Denn "<strong>2307IA0/7RBL-RRB2</strong>".GetHashCode()
ist nicht gleich "<strong>2305IA0/6RBL-RRB1</strong>".GetHashCode()
</p>
        <img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=ebcab74b-7490-409a-9504-984c6c6cf32a" />
      </body>
      <title>Vorsicht beim arbeiten mit der GetHashCode() Funktion</title>
      <guid isPermaLink="false">http://oldblog.holgerferstl.de/PermaLink,guid,ebcab74b-7490-409a-9504-984c6c6cf32a.aspx</guid>
      <link>http://oldblog.holgerferstl.de/2005/04/04/VorsichtBeimArbeitenMitDerGetHashCodeFunktion.aspx</link>
      <pubDate>Mon, 04 Apr 2005 14:23:33 GMT</pubDate>
      <description>&lt;p&gt;
Einige&amp;nbsp;.NET Entwickler werden die GetHashCode() Funktion kennen, ist sie doch
meist&amp;nbsp;(situationsbedingt)&amp;nbsp;recht n&amp;#252;tzlich. Aber Achtung vor falscher
Anwendung. Man k&amp;#246;nnte meinen, dass bei den gro&amp;#223;en Hash-Werten (Int32) auch
gen&amp;#252;gend Spielraum f&amp;#252;r die Kombination (sprich Addition) der einzelnen Werte
zur Verf&amp;#252;gung steht. 
&lt;/p&gt;
&lt;p&gt;
Dies sollte man jedoch vermeiden. Ich habe erst neulich einige Zeit damit verbracht
einen Bug zu finden, der daraus resultierte, weil
&lt;/p&gt;
&lt;p&gt;
"&lt;strong&gt;2307&lt;/strong&gt;".GetHashCode() + "&lt;strong&gt;IA0/7&lt;/strong&gt;".GetHashCode() + "&lt;strong&gt;RBL-RRB2&lt;/strong&gt;".GetHashCode()&lt;br&gt;
und 
&lt;br&gt;
"&lt;strong&gt;2305&lt;/strong&gt;".GetHashCode()&amp;nbsp;+ "&lt;strong&gt;IA0/6&lt;/strong&gt;".GetHashCode()
+ "&lt;strong&gt;RBL-RRB1&lt;/strong&gt;".GetHashCode()
&lt;/p&gt;
&lt;p&gt;
tats&amp;#228;chlich dieselbe Summe (2048949580) besitzen.
&lt;/p&gt;
&lt;p&gt;
Also immer dran denken, niemals Hashwerte addieren, dann lieber alles als einen String
interpretieren und diesen dann hashen. Denn "&lt;strong&gt;2307IA0/7RBL-RRB2&lt;/strong&gt;".GetHashCode()
ist nicht gleich "&lt;strong&gt;2305IA0/6RBL-RRB1&lt;/strong&gt;".GetHashCode()
&lt;/p&gt;
&lt;img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=ebcab74b-7490-409a-9504-984c6c6cf32a" /&gt;</description>
      <comments>http://oldblog.holgerferstl.de/CommentView,guid,ebcab74b-7490-409a-9504-984c6c6cf32a.aspx</comments>
      <category>coden</category>
    </item>
    <item>
      <trackback:ping>http://oldblog.holgerferstl.de/Trackback.aspx?guid=6b49ae7e-afcc-46e9-ba28-b29cf95183de</trackback:ping>
      <pingback:server>http://oldblog.holgerferstl.de/pingback.aspx</pingback:server>
      <pingback:target>http://oldblog.holgerferstl.de/PermaLink,guid,6b49ae7e-afcc-46e9-ba28-b29cf95183de.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://oldblog.holgerferstl.de/CommentView,guid,6b49ae7e-afcc-46e9-ba28-b29cf95183de.aspx</wfw:comment>
      <wfw:commentRss>http://oldblog.holgerferstl.de/SyndicationService.asmx/GetEntryCommentsRss?guid=6b49ae7e-afcc-46e9-ba28-b29cf95183de</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
After many hours of search for a possibility to change the name and bitmap of my custom
user controls in the Visual Studio Toolbox, here is the solution.
</p>
        <p>
          <strong>1)</strong> Set the ToolboxItem Attribute to the UserControl<br /><br /><font size="1">[ToolboxItem(<font color="#0000ff">typeof</font>(MyToolboxItem))]<br /><font color="#0000ff">public</font><font color="#0000ff">class</font> MyUserControl
: System.Windows.Forms.UserControl {...}</font></p>
        <p>
          <strong>2)</strong> create a class, derived from ToolboxItem class<br /><br /><font color="#0000ff" size="1">using</font><font size="1"><font color="#000000"> System.Runtime.Serialization;<br /></font><font color="#0000ff">using</font></font><font color="#000000" size="1"> System.Drawing.Design;<br /></font><br /><font size="1">[Serializable]<br /><font color="#0000ff">public</font><font color="#0000ff">class</font> MyToolboxItem
: ToolboxItem{<br /><font color="#0000ff">   public</font> MyToolboxItem() : <font color="#0000ff">base</font>(){<br /><font size="2"><font size="1">       DoMagic();<br /></font></font></font><font size="1">   }<br /></font><font size="1"><font color="#0000ff"><br />
   public</font> MyToolboxItem (Type type) : <font color="#0000ff">base</font>(type){<br />
       DoMagic();<br /></font><font size="1">   }<br /></font><font size="1"><font color="#0000ff" size="2"><font size="1"><br />
   void</font></font><font color="#000000"> DoMagic(){<br />
       <font color="#008000">//set the desired
text</font><br /></font><font color="#0000ff">       base</font>.DisplayName
= "MyText";<br /><font color="#008000">       //load the embedded resource
bitmap</font><br /><font color="#0000ff">       base</font>.Bitmap = <font color="#0000ff">new </font><font size="2"><font size="1">System.Drawing.Bitmap(GetType().Module.Assembly.GetManifestResourceStream("MyBitmap.bmp"));<br />
    }</font></font></font></p>
        <p>
          <font size="1">
            <font color="#0000ff">
              <font color="#008000">   //a very special
constructor<br /></font>   private</font> MyToolboxItem (SerializationInfo info, StreamingContext
context) {<br /></font>
          <font size="1">
            <font color="#0000ff">       base</font>.Deserialize(info,
context);<br /></font>
          <font size="1">   }<br /></font>
          <font size="1">}</font>
        </p>
        <p>
          <font size="1">
            <font size="2">some notes:<br />
At First, if you try to "override" the <em>DisplayName</em> and <em>Bitmap</em> properties,
it won't work. It will only work, if these base properties are set in the constructor
... very strange.<br /><br />
Second, the private deserialize constructor must be set, else the ToolboxItem will
throw an exception if you try to insert it in the form  ...  many thanks
to reflector for solving this problem *g*</font>
          </font>
        </p>
        <img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=6b49ae7e-afcc-46e9-ba28-b29cf95183de" />
      </body>
      <title>visual studio customization, 2nd</title>
      <guid isPermaLink="false">http://oldblog.holgerferstl.de/PermaLink,guid,6b49ae7e-afcc-46e9-ba28-b29cf95183de.aspx</guid>
      <link>http://oldblog.holgerferstl.de/2005/02/28/visualStudioCustomization2nd.aspx</link>
      <pubDate>Mon, 28 Feb 2005 23:27:58 GMT</pubDate>
      <description>&lt;p&gt;
After many hours of search for a possibility to change the name and bitmap of my custom
user controls in the Visual Studio Toolbox, here is the solution.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;1)&lt;/strong&gt; Set the ToolboxItem Attribute to the UserControl&lt;br&gt;
&lt;br&gt;
&lt;font size=1&gt;[ToolboxItem(&lt;font color=#0000ff&gt;typeof&lt;/font&gt;(MyToolboxItem))]&lt;br&gt;
&lt;font color=#0000ff&gt;public&lt;/font&gt; &lt;font color=#0000ff&gt;class&lt;/font&gt; MyUserControl :
System.Windows.Forms.UserControl {...}&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;2)&lt;/strong&gt; create a class, derived from ToolboxItem class&lt;br&gt;
&lt;br&gt;
&lt;font color=#0000ff size=1&gt;using&lt;/font&gt;&lt;font size=1&gt;&lt;font color=#000000&gt; System.Runtime.Serialization;&lt;br&gt;
&lt;/font&gt;&lt;font color=#0000ff&gt;using&lt;/font&gt;&lt;/font&gt;&lt;font color=#000000 size=1&gt; System.Drawing.Design;&lt;br&gt;
&lt;/font&gt;
&lt;br&gt;
&lt;font size=1&gt;[Serializable]&lt;br&gt;
&lt;font color=#0000ff&gt;public&lt;/font&gt; &lt;font color=#0000ff&gt;class&lt;/font&gt; MyToolboxItem :
ToolboxItem{&lt;br&gt;
&lt;font color=#0000ff&gt;&amp;nbsp;&amp;nbsp; public&lt;/font&gt; MyToolboxItem() : &lt;font color=#0000ff&gt;base&lt;/font&gt;(){&lt;br&gt;
&lt;font size=2&gt;&lt;font size=1&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DoMagic();&lt;br&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size=1&gt;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;/font&gt;&lt;font size=1&gt;&lt;font color=#0000ff&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; public&lt;/font&gt; MyToolboxItem (Type type) : &lt;font color=#0000ff&gt;base&lt;/font&gt;(type){&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DoMagic();&lt;br&gt;
&lt;/font&gt;&lt;font size=1&gt;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;/font&gt;&lt;font size=1&gt;&lt;font color=#0000ff size=2&gt;&lt;font size=1&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;void&lt;/font&gt;&lt;/font&gt;&lt;font color=#000000&gt; DoMagic(){&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#008000&gt;//set the&amp;nbsp;desired text&lt;/font&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font color=#0000ff&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base&lt;/font&gt;.DisplayName
= "MyText";&lt;br&gt;
&lt;font color=#008000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //load the embedded resource
bitmap&lt;/font&gt;
&lt;br&gt;
&lt;font color=#0000ff&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base&lt;/font&gt;.Bitmap = &lt;font color=#0000ff&gt;new &lt;/font&gt;&lt;font size=2&gt;&lt;font size=1&gt;System.Drawing.Bitmap(GetType().Module.Assembly.GetManifestResourceStream("MyBitmap.bmp"));&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&gt;&gt;&lt;font size=1&gt;&lt;font color=#0000ff&gt;&lt;font color=#008000&gt;&amp;nbsp;&amp;nbsp; //a very special
constructor&lt;br&gt;
&lt;/font&gt;&amp;nbsp;&amp;nbsp; private&lt;/font&gt; MyToolboxItem (SerializationInfo info, StreamingContext
context) {&lt;br&gt;
&lt;/font&gt;&lt;font size=1&gt;&lt;font color=#0000ff&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;base&lt;/font&gt;.Deserialize(info,
context);&lt;br&gt;
&lt;/font&gt;&lt;font size=1&gt;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;/font&gt;&lt;font size=1&gt;}&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=1&gt;&lt;font size=2&gt;some notes:&lt;br&gt;
At First, if you try to "override" the &lt;em&gt;DisplayName&lt;/em&gt; and &lt;em&gt;Bitmap&lt;/em&gt; properties,
it won't work. It will only work, if these base properties are set in the constructor
... very strange.&lt;br&gt;
&lt;br&gt;
Second, the private deserialize constructor must be set, else the ToolboxItem will
throw an exception if you try to insert it in the form&amp;nbsp; ...&amp;nbsp; many thanks
to reflector for solving this problem *g*&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=6b49ae7e-afcc-46e9-ba28-b29cf95183de" /&gt;</description>
      <comments>http://oldblog.holgerferstl.de/CommentView,guid,6b49ae7e-afcc-46e9-ba28-b29cf95183de.aspx</comments>
      <category>coden</category>
      <category>dddwik</category>
      <category>faq</category>
    </item>
    <item>
      <trackback:ping>http://oldblog.holgerferstl.de/Trackback.aspx?guid=5ae50eb8-0e0d-4d6d-acd8-e382743fca7a</trackback:ping>
      <pingback:server>http://oldblog.holgerferstl.de/pingback.aspx</pingback:server>
      <pingback:target>http://oldblog.holgerferstl.de/PermaLink,guid,5ae50eb8-0e0d-4d6d-acd8-e382743fca7a.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://oldblog.holgerferstl.de/CommentView,guid,5ae50eb8-0e0d-4d6d-acd8-e382743fca7a.aspx</wfw:comment>
      <wfw:commentRss>http://oldblog.holgerferstl.de/SyndicationService.asmx/GetEntryCommentsRss?guid=5ae50eb8-0e0d-4d6d-acd8-e382743fca7a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <strong>Question<br /></strong>How to install a .NET usercontrol library in Visual Studio, so that it appears
in the reference list and in the customize toolbox list <strong>without</strong> explicit
add the dll manually?
</p>
        <p align="center">
          <img src="http://oldblog.holgerferstl.de/content/binary/ucivsi.jpg" border="0" />
        </p>
        <p align="center">
 
</p>
        <p align="left">
          <strong>Answer</strong>
          <br />
Just add the path of the dll into the following registry key: <strong><font size="1">HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders</font></strong></p>
        <p align="center">
          <img src="http://oldblog.holgerferstl.de/content/binary/registry.jpg" border="0" />
        </p>
        <img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=5ae50eb8-0e0d-4d6d-acd8-e382743fca7a" />
      </body>
      <title>visual studio customization</title>
      <guid isPermaLink="false">http://oldblog.holgerferstl.de/PermaLink,guid,5ae50eb8-0e0d-4d6d-acd8-e382743fca7a.aspx</guid>
      <link>http://oldblog.holgerferstl.de/2005/02/22/visualStudioCustomization.aspx</link>
      <pubDate>Tue, 22 Feb 2005 23:19:45 GMT</pubDate>
      <description>&lt;p&gt;
&lt;strong&gt;Question&lt;br&gt;
&lt;/strong&gt;How to install a .NET usercontrol library in Visual Studio, so that it appears
in the reference list and in the customize toolbox list &lt;strong&gt;without&lt;/strong&gt; explicit
add the dll manually?
&lt;/p&gt;
&lt;p align=center&gt;
&lt;img src="http://oldblog.holgerferstl.de/content/binary/ucivsi.jpg" border=0&gt;
&lt;/p&gt;
&lt;p align=center&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p align=left&gt;
&lt;strong&gt;Answer&lt;/strong&gt;
&lt;br&gt;
Just add the path of the dll into the&amp;nbsp;following registry key: &lt;strong&gt;&lt;font size=1&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p align=center&gt;
&lt;img src="http://oldblog.holgerferstl.de/content/binary/registry.jpg" border=0&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=5ae50eb8-0e0d-4d6d-acd8-e382743fca7a" /&gt;</description>
      <comments>http://oldblog.holgerferstl.de/CommentView,guid,5ae50eb8-0e0d-4d6d-acd8-e382743fca7a.aspx</comments>
      <category>coden</category>
      <category>faq</category>
    </item>
    <item>
      <trackback:ping>http://oldblog.holgerferstl.de/Trackback.aspx?guid=b2d1888a-6f6f-4e27-825b-ca2d6f2d4cc8</trackback:ping>
      <pingback:server>http://oldblog.holgerferstl.de/pingback.aspx</pingback:server>
      <pingback:target>http://oldblog.holgerferstl.de/PermaLink,guid,b2d1888a-6f6f-4e27-825b-ca2d6f2d4cc8.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://oldblog.holgerferstl.de/CommentView,guid,b2d1888a-6f6f-4e27-825b-ca2d6f2d4cc8.aspx</wfw:comment>
      <wfw:commentRss>http://oldblog.holgerferstl.de/SyndicationService.asmx/GetEntryCommentsRss?guid=b2d1888a-6f6f-4e27-825b-ca2d6f2d4cc8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
3 einfache Regeln: Die Abstoßung, die Anziehung und die Anpassung/Angleichung. Diese
drei Grundregeln sind es, die das Verhalten eines Schwarmes im kleinen, einer Gesellschaft
im Großen, bestimmen. Ob nun Fische im Aquarium, Möwen am Strand oder Menschen beim
Shopping. Man kann quasi jede Art von Intelligentem Verhalten auf wenige, einfache
Regeln zurückführen. 
</p>
        <p>
Wie auch immer, ich habe das mal computertechnisch umgesetzt und heraus kam folgender
Schwarmsimulator.
</p>
        <p>
        </p>
        <p align="center">
          <a href="/tracker.aspx?File=flocksim.zip">
            <img src="/content/binary/flock12.jpg" border="0" />
          </a>
        </p>
        <p>
Features
</p>
        <ol>
          <li>
Jedes einzelne Individuum in dem Schwarm kann manipuliert werden, d.h. Sichtweite,
Mindestabstand, Geschwindigkeit, Farbe und Gesinnung (klassische Gut-Neutral-Böse
Trinität) kann einstellt werden. 
</li>
          <li>
(Zufalls-)Einstellungen können für den ganzen Schwarm übernommen werden. 
</li>
          <li>
Die Basisregeln können einzeln aktiviert/deaktiviert werden. 
</li>
          <li>
Die Bewegungsrichtung kann einem Individuum "aufgedrückt" werden (mit gedrückter linker
Maustaste über den Screen schieben und loslassen) 
</li>
          <li>
Nichts machen und einfach nur zuschauen ;-)</li>
        </ol>
        <p>
Wer ihn mal testen möchte, sollte über ausreichend Ressourcen Verfügen. Da die Simulation
sehr rechenintensiv ist und ich auch nicht sooo sehr Wert auf Performante Programmierung
gelegt habe, sollten mind. 1.5GHz zur Verfügung stehen. Achso, und das .NET Framework
natürlich. Die benötigten DirectX dlls' sind im zip enthalten.
</p>
        <p>
          <br />
Mehr Infos zu diesem Thema gibt es auf den Seiten von <a href="/tracker.aspx?page=http://www.red3d.com/cwr/boids/" target="_blank">Craig
Reynold's</a>, der die Schwarm-Regeln das erste mal bereits 1986 beschrieb. Anregungen
zur technischen Umsetzung fand ich in dem Buch <a href="/tracker.aspx?page=http://www.oreilly.com/catalog/ai/" target="_blank">AI
for Game Developers (O'Reilly)</a><br /></p>
        <p>
... So, und wieder ein Teil meines Lebensinhaltes erfüllt ...
</p>
        <p align="center">
          <img src="/content/binary/SDL.jpg" border="0" />
        </p>
        <p align="left">
          <font color="#ffffff">Keywords: Flocksimulator flock simulator boid boids herd</font>
        </p>
        <img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=b2d1888a-6f6f-4e27-825b-ca2d6f2d4cc8" />
      </body>
      <title>Das regelbasierte Leben</title>
      <guid isPermaLink="false">http://oldblog.holgerferstl.de/PermaLink,guid,b2d1888a-6f6f-4e27-825b-ca2d6f2d4cc8.aspx</guid>
      <link>http://oldblog.holgerferstl.de/2005/02/17/DasRegelbasierteLeben.aspx</link>
      <pubDate>Thu, 17 Feb 2005 00:28:48 GMT</pubDate>
      <description>&lt;p&gt;
3 einfache Regeln: Die Abstoßung, die Anziehung und die Anpassung/Angleichung. Diese
drei Grundregeln sind es, die das Verhalten eines Schwarmes im kleinen, einer Gesellschaft
im Großen, bestimmen. Ob nun Fische im Aquarium, Möwen am Strand oder Menschen beim
Shopping. Man kann quasi jede Art von Intelligentem Verhalten auf wenige, einfache
Regeln zurückführen. 
&lt;/p&gt;
&lt;p&gt;
Wie auch immer, ich habe das mal computertechnisch umgesetzt und heraus kam folgender
Schwarmsimulator.
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p align=center&gt;
&lt;a href="/tracker.aspx?File=flocksim.zip"&gt;&lt;img src="/content/binary/flock12.jpg" border=0&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Features
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Jedes einzelne Individuum in dem Schwarm kann manipuliert werden, d.h. Sichtweite,
Mindestabstand, Geschwindigkeit, Farbe und Gesinnung (klassische Gut-Neutral-Böse
Trinität) kann einstellt werden. 
&lt;li&gt;
(Zufalls-)Einstellungen können für den ganzen Schwarm übernommen werden. 
&lt;li&gt;
Die Basisregeln können einzeln aktiviert/deaktiviert werden. 
&lt;li&gt;
Die Bewegungsrichtung kann einem Individuum "aufgedrückt" werden (mit gedrückter linker
Maustaste über den Screen schieben und loslassen) 
&lt;li&gt;
Nichts machen und einfach nur zuschauen ;-)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Wer ihn mal testen möchte, sollte über ausreichend Ressourcen Verfügen. Da die Simulation
sehr rechenintensiv ist und ich auch nicht sooo sehr Wert auf Performante Programmierung
gelegt habe, sollten mind. 1.5GHz zur Verfügung stehen. Achso, und das .NET Framework
natürlich. Die benötigten DirectX dlls' sind im zip enthalten.
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
Mehr Infos zu diesem Thema gibt es auf den Seiten von &lt;a href="/tracker.aspx?page=http://www.red3d.com/cwr/boids/" target=_blank&gt;Craig
Reynold's&lt;/a&gt;, der die Schwarm-Regeln das erste mal bereits 1986 beschrieb. Anregungen
zur technischen Umsetzung fand ich in dem Buch &lt;a href="/tracker.aspx?page=http://www.oreilly.com/catalog/ai/" target=_blank&gt;AI
for Game Developers (O'Reilly)&lt;/a&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
... So, und wieder ein Teil meines Lebensinhaltes erfüllt ...
&lt;/p&gt;
&lt;p align=center&gt;
&lt;img src="/content/binary/SDL.jpg" border=0&gt;
&lt;/p&gt;
&lt;p align=left&gt;
&lt;font color=#ffffff&gt;Keywords: Flocksimulator flock simulator boid boids herd&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=b2d1888a-6f6f-4e27-825b-ca2d6f2d4cc8" /&gt;</description>
      <comments>http://oldblog.holgerferstl.de/CommentView,guid,b2d1888a-6f6f-4e27-825b-ca2d6f2d4cc8.aspx</comments>
      <category>coden</category>
      <category>dddwik</category>
    </item>
    <item>
      <trackback:ping>http://oldblog.holgerferstl.de/Trackback.aspx?guid=e1d2338a-818d-4134-8935-d7b6ee4a8a1b</trackback:ping>
      <pingback:server>http://oldblog.holgerferstl.de/pingback.aspx</pingback:server>
      <pingback:target>http://oldblog.holgerferstl.de/PermaLink,guid,e1d2338a-818d-4134-8935-d7b6ee4a8a1b.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://oldblog.holgerferstl.de/CommentView,guid,e1d2338a-818d-4134-8935-d7b6ee4a8a1b.aspx</wfw:comment>
      <wfw:commentRss>http://oldblog.holgerferstl.de/SyndicationService.asmx/GetEntryCommentsRss?guid=e1d2338a-818d-4134-8935-d7b6ee4a8a1b</wfw:commentRss>
      <slash:comments>10</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Was haben .NET und Golf gemeinsam? Richtig, beides kann ein lustiger Zeitvertreib
sein.<br />
So war auch die zweite Aufgabe von <a href="http://oldblog.holgerferstl.de/tracker.aspx?page=http://www.codefairway.net/" target="_blank">CodeFairway</a> mit
dem Ziel verbunden, die anagrammatischen (bzw. palindromischen) Zahlen und deren Quersummen
in einem gegebenen Intervall mit so wenig Codebytes wie möglich zu berechnen. 
<br /><br />
Palindrome? Anagramme? <a href="http://oldblog.holgerferstl.de/tracker.aspx?page=http://de.wikipedia.org/wiki/Palindrom" target="_blank">Guckst
du hier</a>. 
</p>
        <p>
Wie bekommt man nun die Anzahl Palindrome in einem Intervall heraus? Ganz einfach,
nach der Bruteforce Methode, d.h. man testet eine Zahl nach der anderen und summiert
die Anagramme auf. Die Siegerin des Turniers wurde übrigens Claudia Krolopp mit folgendem
Code:
</p>
        <p>
          <font color="#006400">public void Off(int a,int z,out int e,out int o)<br />
{<br />
  for(o=e=0;z&gt;=a&amp;z&gt;99;z--)<br />
  for(int r=0,t=z,s=t;t&gt;0;s+=z==r?s%2&gt;0?o++:e++:t/=10)r=r*10+t%10;<br />
}</font>
          <br />
          <br />
Lustig, nicht? Der Nachteil an solchen Methoden ist jedenfalls die Komplexität. Je
größer das Intervall wird, desto länger dauert die Berechnung. Bei der heutigen Durchschnitts-Rechenleistung
der Computer versagen diese Ansätze bei Zahlenintervallen &gt; 10 Stellen.
</p>
        <p>
Deswegen habe ich mir einen anderen Weg überlegt. Der macht sich zu Nutze, dass in
jeder Zahl selbst die Anzahl der Anagramme für das aktuelle Intervall versteckt ist.
Diese muss nur berechnet und mit der Anzahl der vohergehenenden Intervalle addiert
werden. Wie ich das genau mache, kannst du <a href="http://oldblog.holgerferstl.de/PN/howtocalulatepalindromicnumbers.aspx" target="_blank">hier</a> nachlesen.
</p>
        <p>
Diese Methode hat den Vorteil, dass er auf jede beliebig große Zahl angewendet werden
kann. Bei meiner Implementation ist nur aus computertechnischen Gründen die Anzahl
der Stellen auf 9223372036854775807 begrenzt, also bitte nicht übertreiben ;-)
</p>
        <p>
Hier gehts zu eine <a href="http://oldblog.holgerferstl.de/PN/PN.aspx" target="_blank">Online
Version</a><br />
Und hier kannst du eine <a href="http://oldblog.holgerferstl.de/Tracker.aspx?File=palindromicNumbers.zip">Offline
Version</a> downloaden. Voraussetzung ist nur das .NET Framework.<br /><br />
Screenshot Offline Version:
</p>
        <p align="center">
          <a href="http://oldblog.holgerferstl.de/tracker.aspx?File=palindromicNumbers.zip">
            <img src="http://oldblog.holgerferstl.de/content/binary/palindromicnumbers.JPG" border="0" />
          </a>
        </p>
        <br />
        <br />
Info: Bei beiden Applikationen gehen die Palindrom-Zahlen erst ab 3 Stellen (also
der 101) los. 
<p></p><p>
btw, dass ich mit dieser Methode nur letzter im Turnier wurde (ca. 580 Byte), muss
ich nicht extra erwähnen, oder? :-)
</p><img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=e1d2338a-818d-4134-8935-d7b6ee4a8a1b" /></body>
      <title>Wenn es mal wieder länger dauert ...</title>
      <guid isPermaLink="false">http://oldblog.holgerferstl.de/PermaLink,guid,e1d2338a-818d-4134-8935-d7b6ee4a8a1b.aspx</guid>
      <link>http://oldblog.holgerferstl.de/2005/02/01/WennEsMalWiederL%c3%a4ngerDauert.aspx</link>
      <pubDate>Tue, 01 Feb 2005 23:45:14 GMT</pubDate>
      <description>&lt;p&gt;
Was haben .NET und Golf gemeinsam? Richtig, beides kann ein lustiger Zeitvertreib
sein.&lt;br&gt;
So war auch die zweite Aufgabe von &lt;a href="http://oldblog.holgerferstl.de/tracker.aspx?page=http://www.codefairway.net/" target=_blank&gt;CodeFairway&lt;/a&gt;&amp;nbsp;mit
dem Ziel verbunden, die anagrammatischen (bzw. palindromischen) Zahlen und deren Quersummen
in einem gegebenen Intervall mit so wenig Codebytes wie möglich zu berechnen. 
&lt;br&gt;
&lt;br&gt;
Palindrome? Anagramme? &lt;a href="http://oldblog.holgerferstl.de/tracker.aspx?page=http://de.wikipedia.org/wiki/Palindrom" target=_blank&gt;Guckst
du hier&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Wie bekommt man nun die Anzahl Palindrome in einem Intervall heraus? Ganz einfach,
nach der Bruteforce Methode, d.h. man testet eine Zahl nach der anderen und summiert
die Anagramme auf. Die Siegerin des Turniers wurde übrigens Claudia Krolopp mit folgendem
Code:
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#006400&gt;public void Off(int a,int z,out int e,out int o)&lt;br&gt;
{&lt;br&gt;
&amp;nbsp; for(o=e=0;z&amp;gt;=a&amp;amp;z&amp;gt;99;z--)&lt;br&gt;
&amp;nbsp; for(int r=0,t=z,s=t;t&amp;gt;0;s+=z==r?s%2&amp;gt;0?o++:e++:t/=10)r=r*10+t%10;&lt;br&gt;
}&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
Lustig, nicht? Der Nachteil an solchen Methoden ist jedenfalls die Komplexität. Je
größer das Intervall wird, desto länger dauert die Berechnung. Bei der heutigen Durchschnitts-Rechenleistung
der Computer versagen diese Ansätze bei Zahlenintervallen &amp;gt; 10 Stellen.
&lt;/p&gt;
&lt;p&gt;
Deswegen habe ich mir einen anderen Weg überlegt. Der macht sich zu Nutze, dass in
jeder Zahl selbst die Anzahl der Anagramme für das aktuelle Intervall versteckt ist.
Diese muss nur berechnet und mit der Anzahl der vohergehenenden Intervalle addiert
werden. Wie ich das genau mache, kannst du &lt;a href="http://oldblog.holgerferstl.de/PN/howtocalulatepalindromicnumbers.aspx" target=_blank&gt;hier&lt;/a&gt;&amp;nbsp;nachlesen.
&lt;/p&gt;
&lt;p&gt;
Diese Methode hat den Vorteil, dass er auf jede beliebig große Zahl angewendet werden
kann. Bei meiner Implementation ist nur aus computertechnischen Gründen die Anzahl
der Stellen auf 9223372036854775807 begrenzt, also bitte nicht übertreiben ;-)
&lt;/p&gt;
&lt;p&gt;
Hier gehts zu eine &lt;a href="http://oldblog.holgerferstl.de/PN/PN.aspx" target=_blank&gt;Online
Version&lt;/a&gt;
&lt;br&gt;
Und hier kannst du eine &lt;a href="http://oldblog.holgerferstl.de/Tracker.aspx?File=palindromicNumbers.zip"&gt;Offline
Version&lt;/a&gt; downloaden. Voraussetzung ist nur das .NET Framework.&lt;br&gt;
&lt;br&gt;
Screenshot Offline Version:
&lt;/p&gt;
&lt;p align=center&gt;
&lt;a href="http://oldblog.holgerferstl.de/tracker.aspx?File=palindromicNumbers.zip"&gt;&lt;img src="http://oldblog.holgerferstl.de/content/binary/palindromicnumbers.JPG" border=0&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;br&gt;
&lt;br&gt;
Info: Bei beiden Applikationen gehen die&amp;nbsp;Palindrom-Zahlen erst ab 3 Stellen (also
der&amp;nbsp;101) los. 
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
btw, dass ich mit dieser Methode nur letzter im Turnier wurde (ca. 580 Byte), muss
ich nicht extra erwähnen, oder? :-)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=e1d2338a-818d-4134-8935-d7b6ee4a8a1b" /&gt;</description>
      <comments>http://oldblog.holgerferstl.de/CommentView,guid,e1d2338a-818d-4134-8935-d7b6ee4a8a1b.aspx</comments>
      <category>coden</category>
      <category>dddwni</category>
      <category>tddwnb</category>
    </item>
    <item>
      <trackback:ping>http://oldblog.holgerferstl.de/Trackback.aspx?guid=95c3f0e5-4f82-4c90-9a51-927d1fb9fb69</trackback:ping>
      <pingback:server>http://oldblog.holgerferstl.de/pingback.aspx</pingback:server>
      <pingback:target>http://oldblog.holgerferstl.de/PermaLink,guid,95c3f0e5-4f82-4c90-9a51-927d1fb9fb69.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://oldblog.holgerferstl.de/CommentView,guid,95c3f0e5-4f82-4c90-9a51-927d1fb9fb69.aspx</wfw:comment>
      <wfw:commentRss>http://oldblog.holgerferstl.de/SyndicationService.asmx/GetEntryCommentsRss?guid=95c3f0e5-4f82-4c90-9a51-927d1fb9fb69</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Einige kennen vielleicht folgendes Scenario. Man hat in seiner VS Solution ein WebProjekt
mit einer Installer-Klasse und ein WebSetup-Projekt. Das Setup-Projekt wird mit Hilfe
benutzerdefinierter Aktionen (custom actions) erweitert. Z.B. damit der Benutzer während
der Installation diverse Daten angeben kann. In der Installer Klasse wird daraufhin
die Install-Methode Überschrieben, um die eingegebenen Daten dort zu verarbeiten.
</p>
        <p>
Das sieht in etwa so aus:
</p>
        <font size="2">
          <p>
1. [RunInstaller(
</p>
        </font>
        <font color="#0000ff" size="2">true</font>
        <font size="2">)]<br /></font>
        <font color="#0000ff" size="2">
          <font color="#003300">2. </font>public</font>
        <font size="2">
        </font>
        <font color="#0000ff" size="2">class</font>
        <font size="2"> Installer1
: System.Configuration.Install.Installer{<br /><font size="2">3.    public</font><font size="2"></font><font size="2">override</font><font size="2"></font><font size="2">void</font><font size="2"> Install(IDictionary
stateSaver) {<br /></font></font>
        <font size="2">
          <font size="2">
            <font size="2">4.       
string</font>
            <font size="2"> serverName = </font>
            <font size="2">this</font>
            <font size="2">.Context.Parameters["ServerName"];<br /></font>
          </font>
        </font>
        <font size="2">
          <font size="2">
            <font color="#008000" size="2">
              <font color="#003300">5.</font>       
// hier irgendwas mit den Parametern machen. <br /></font>6.        base.Install (stateSaver);<br /></font>
        </font>7.    }<br />
8. }
<p><br />
Dann wird die Setup.exe generiert und ausgeführt. Doch wie kann ich nun meinen Code
zur Laufzeit debuggen?<br />
Man muss dazu folgende Dinge beachten:
</p><p dir="ltr" style="MARGIN-RIGHT: 0px">
1) Der Debugmodus des Web-Projektes muss in den Zustand: "Wartet auf das Anhängen
an einen externen Prozess" gebracht werden.
</p><p dir="ltr" style="MARGIN-RIGHT: 0px" align="center"><img src="/content/binary/InstallerDebugConfig.jpg" border="0" /></p><p dir="ltr" style="MARGIN-RIGHT: 0px">
 
</p><p dir="ltr" style="MARGIN-RIGHT: 0px">
2) Der Debugger funktioniert nur, wenn vorher ein managed Code aufgerufen wurde. Zusätzlich
sollte während der Installation Zeit bleiben den Debugger zu aktivieren. Daher ist
es am besten, wenn man eine Messagebox in der InstallMethode aufruft. Also einfach
zwischen Zeile 3 und 4 ein <strong>MessageBox.Show("DebugMe");</strong> eintragen.
</p><p dir="ltr" style="MARGIN-RIGHT: 0px">
3) Wenn dann während der Installation die MessageBox erscheint, kann in aller Ruhe
dem Debugger der Installationsprozess übergeben werden. Das geht über das Menu "Debuggen"
--&gt; "Prozesse". In der dortigen Liste sucht man sich den richtigen InstallProzess
(msiexec.exe) heraus. Aufpassen, daß man auch den richtigen erwischt, denn unglücklicherweise
ist es nicht der, in dem der Titel erscheint, sondern der vom Typ .Net.
</p><p align="center"><img src="/content/binary/InstallerDebugProcess.jpg" border="0" /></p><p>
 
</p><p>
Wenn alles geklappt hat, kann man nun den eigenen Code debuggen. Ach nochwas, der
BreakPoint muss hinter die MessageBox.Show() Methode gesetzt werden ;-) 
</p><p>
thats was it.
</p><img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=95c3f0e5-4f82-4c90-9a51-927d1fb9fb69" /></body>
      <title>Wie debugged man einen Customize WebSetup Installer</title>
      <guid isPermaLink="false">http://oldblog.holgerferstl.de/PermaLink,guid,95c3f0e5-4f82-4c90-9a51-927d1fb9fb69.aspx</guid>
      <link>http://oldblog.holgerferstl.de/2004/05/13/WieDebuggedManEinenCustomizeWebSetupInstaller.aspx</link>
      <pubDate>Thu, 13 May 2004 19:00:47 GMT</pubDate>
      <description>&lt;p&gt;
Einige kennen vielleicht folgendes Scenario. Man hat in seiner VS Solution ein WebProjekt
mit einer Installer-Klasse und ein WebSetup-Projekt. Das Setup-Projekt wird mit Hilfe
benutzerdefinierter Aktionen (custom actions) erweitert. Z.B. damit der Benutzer während
der Installation diverse Daten angeben kann. In der Installer Klasse wird daraufhin
die Install-Methode Überschrieben, um die eingegebenen Daten dort zu verarbeiten.
&lt;/p&gt;
&lt;p&gt;
Das sieht in etwa so aus:
&lt;/p&gt;
&lt;font size=2&gt; 
&lt;p&gt;
1. [RunInstaller(
&lt;/font&gt;&lt;font color=#0000ff size=2&gt;true&lt;/font&gt;&lt;font size=2&gt;)]&lt;br&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt;&lt;font color=#003300&gt;2. &lt;/font&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color=#0000ff size=2&gt;class&lt;/font&gt;&lt;font size=2&gt; Installer1
: System.Configuration.Install.Installer{&lt;br&gt;
&lt;font size=2&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp; public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font size=2&gt;override&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font size=2&gt;void&lt;/font&gt;&lt;font size=2&gt; Install(IDictionary
stateSaver) {&lt;br&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;font size=2&gt;&lt;font size=2&gt;4.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
string&lt;/font&gt;&lt;font size=2&gt; serverName = &lt;/font&gt;&lt;font size=2&gt;this&lt;/font&gt;&lt;font size=2&gt;.Context.Parameters["ServerName"];&lt;br&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;font size=2&gt;&lt;font color=#008000 size=2&gt;&lt;font color=#003300&gt;5.&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
// hier irgendwas mit den Parametern machen.&amp;nbsp;&lt;br&gt;
&lt;/font&gt;6.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base.Install (stateSaver);&lt;br&gt;
&lt;/font&gt;&lt;/font&gt;7.&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br&gt;
8. }&gt;
&lt;p&gt;
&lt;br&gt;
Dann wird die Setup.exe generiert und ausgeführt. Doch wie kann ich nun meinen Code
zur Laufzeit debuggen?&lt;br&gt;
Man muss dazu folgende Dinge beachten:
&lt;/p&gt;
&lt;p dir=ltr style="MARGIN-RIGHT: 0px"&gt;
1) Der Debugmodus des Web-Projektes muss in den Zustand: "Wartet auf das Anhängen
an einen externen Prozess" gebracht werden.
&lt;/p&gt;
&lt;p dir=ltr style="MARGIN-RIGHT: 0px" align=center&gt;
&lt;img src="/content/binary/InstallerDebugConfig.jpg" border=0&gt;
&lt;/p&gt;
&lt;p dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p dir=ltr style="MARGIN-RIGHT: 0px"&gt;
2) Der Debugger funktioniert nur, wenn vorher ein managed Code aufgerufen wurde. Zusätzlich
sollte während der Installation Zeit bleiben den Debugger zu aktivieren. Daher ist
es am besten, wenn man eine Messagebox in der InstallMethode aufruft. Also einfach
zwischen Zeile 3 und 4 ein &lt;strong&gt;MessageBox.Show("DebugMe");&lt;/strong&gt; eintragen.
&lt;/p&gt;
&lt;p dir=ltr style="MARGIN-RIGHT: 0px"&gt;
3) Wenn dann während der Installation die MessageBox erscheint, kann in aller Ruhe
dem Debugger der Installationsprozess übergeben werden. Das geht über das Menu "Debuggen"
--&amp;gt; "Prozesse". In der dortigen Liste sucht man sich den richtigen InstallProzess
(msiexec.exe) heraus. Aufpassen, daß man auch den richtigen erwischt, denn unglücklicherweise
ist es nicht der, in dem der Titel erscheint, sondern der vom Typ .Net.
&lt;/p&gt;
&lt;p align=center&gt;
&lt;img src="/content/binary/InstallerDebugProcess.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Wenn alles geklappt hat, kann man nun den eigenen Code debuggen. Ach nochwas, der
BreakPoint muss hinter die MessageBox.Show() Methode gesetzt werden ;-) 
&lt;/p&gt;
&lt;p&gt;
thats was it.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=95c3f0e5-4f82-4c90-9a51-927d1fb9fb69" /&gt;</description>
      <comments>http://oldblog.holgerferstl.de/CommentView,guid,95c3f0e5-4f82-4c90-9a51-927d1fb9fb69.aspx</comments>
      <category>coden</category>
    </item>
    <item>
      <trackback:ping>http://oldblog.holgerferstl.de/Trackback.aspx?guid=75ea8000-06dc-437a-a2bd-4d33b1e1e72b</trackback:ping>
      <pingback:server>http://oldblog.holgerferstl.de/pingback.aspx</pingback:server>
      <pingback:target>http://oldblog.holgerferstl.de/PermaLink,guid,75ea8000-06dc-437a-a2bd-4d33b1e1e72b.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://oldblog.holgerferstl.de/CommentView,guid,75ea8000-06dc-437a-a2bd-4d33b1e1e72b.aspx</wfw:comment>
      <wfw:commentRss>http://oldblog.holgerferstl.de/SyndicationService.asmx/GetEntryCommentsRss?guid=75ea8000-06dc-437a-a2bd-4d33b1e1e72b</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
... wenn du ein typisiertes Dateset aus einer XSD generiert hast und möchtest
das XML-Outputformat etwas umstrukturieren (aus Elementen werden Attribute etc.),
geht das mit der ColumnMapping Eigenschaft. (müsste bei allen Datasets klappen)
</p>
        <p>
Bsp. <font color="#008000" size="2">Person.Content.GuidColumn.<strong>ColumnMapping</strong> =
MappingType.Attribute;<br /></font>Dabei ist Person das typisierte DS (generiert aus  der Person.xsd),
Content eine DataTable und GuidColumn eine Spalte der Table.
</p>
        <font size="2">
          <p>
Ineinander verschieben der einzelnen Datatables geht übrigens mit <strong>SetParentRow</strong>();<font size="2"><font color="#008000" size="2"><font size="2"></font></font></font></p>
        </font>
        <img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=75ea8000-06dc-437a-a2bd-4d33b1e1e72b" />
      </body>
      <title>Nicht vergessen Holger ...</title>
      <guid isPermaLink="false">http://oldblog.holgerferstl.de/PermaLink,guid,75ea8000-06dc-437a-a2bd-4d33b1e1e72b.aspx</guid>
      <link>http://oldblog.holgerferstl.de/2004/04/15/NichtVergessenHolger.aspx</link>
      <pubDate>Thu, 15 Apr 2004 15:22:15 GMT</pubDate>
      <description>&lt;p&gt;
... wenn du ein typisiertes Dateset aus einer XSD generiert hast und m&amp;#246;chtest
das XML-Outputformat&amp;nbsp;etwas umstrukturieren (aus Elementen werden Attribute etc.),
geht das mit der ColumnMapping Eigenschaft. (m&amp;#252;sste bei allen Datasets klappen)
&lt;/p&gt;
&lt;p&gt;
Bsp. &lt;font color=#008000 size=2&gt;Person.Content.GuidColumn.&lt;strong&gt;ColumnMapping&lt;/strong&gt; =
MappingType.Attribute;&lt;br&gt;
&lt;/font&gt;Dabei ist Person das typisierte DS (generiert aus&amp;nbsp;&amp;nbsp;der Person.xsd),
Content eine&amp;nbsp;DataTable und GuidColumn eine Spalte der&amp;nbsp;Table.
&lt;/p&gt;
&lt;font size=2&gt; 
&lt;p&gt;
Ineinander verschieben der einzelnen Datatables geht &amp;#252;brigens mit &lt;strong&gt;SetParentRow&lt;/strong&gt;();&lt;font size=2&gt;&lt;font color=#008000 size=2&gt;&lt;font size=2&gt;
&lt;/p&gt;
&lt;/font&gt;&gt;&gt;&gt;&lt;img width="0" height="0" src="http://oldblog.holgerferstl.de/aggbug.ashx?id=75ea8000-06dc-437a-a2bd-4d33b1e1e72b" /&gt;</description>
      <comments>http://oldblog.holgerferstl.de/CommentView,guid,75ea8000-06dc-437a-a2bd-4d33b1e1e72b.aspx</comments>
      <category>coden</category>
      <category>dddwni</category>
    </item>
  </channel>
</rss>