<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Zend Framework Blog &#187; Uncategorized</title>
	<atom:link href="http://blog.richardknop.com/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.richardknop.com</link>
	<description>Zend Framework, PHP, Django, Python, SQL, MySQL, PostgreSQL, Oracle, PL/SQL, data model patterns, OOP, design patterns, JavaScript, jQuery, HTML, XHTML, CSS, XML, web services &#38; APIs, Security, E-commerce and much more</description>
	<lastBuildDate>Sat, 04 Feb 2012 19:47:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>MAMP 2.0.5 PHP PEAR not working</title>
		<link>http://blog.richardknop.com/2012/02/mamp-2-0-5-php-pear-not-working/</link>
		<comments>http://blog.richardknop.com/2012/02/mamp-2-0-5-php-pear-not-working/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 19:33:28 +0000</pubDate>
		<dc:creator>Richard Knop</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.richardknop.com/?p=743</guid>
		<description><![CDATA[After installing MAMP 2.0.5 on my Macbook I have found out PEAR doesn&#8217;t work (I wanted to use it to install PHPUnit for unit testing). This solves the problem: #rm /Applications/MAMP/bin/php/php5.3.6/conf/pear.conf Once you delete that file PEAR will start working so you can install PHPUnit.]]></description>
			<content:encoded><![CDATA[<p>After installing MAMP 2.0.5 on my Macbook I have found out PEAR doesn&#8217;t work (I wanted to use it to install PHPUnit for unit testing). This solves the problem:</p>
<pre>#rm /Applications/MAMP/bin/php/php5.3.6/conf/pear.conf</pre>
<p>Once you delete that file PEAR will start working so you can install PHPUnit.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardknop.com/2012/02/mamp-2-0-5-php-pear-not-working/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Set default encoding in Eclipse to UTF-8</title>
		<link>http://blog.richardknop.com/2011/09/set-default-encoding-in-eclipse-to-utf-8/</link>
		<comments>http://blog.richardknop.com/2011/09/set-default-encoding-in-eclipse-to-utf-8/#comments</comments>
		<pubDate>Sat, 10 Sep 2011 20:24:29 +0000</pubDate>
		<dc:creator>Richard Knop</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.richardknop.com/?p=660</guid>
		<description><![CDATA[Just add this line to eclipse.ini: -Dfile.encoding=UTF-8]]></description>
			<content:encoded><![CDATA[<p>Just add this line to eclipse.ini:</p>
<pre>-Dfile.encoding=UTF-8</pre>
<p> <img src='http://blog.richardknop.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardknop.com/2011/09/set-default-encoding-in-eclipse-to-utf-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Back online</title>
		<link>http://blog.richardknop.com/2011/02/back-online/</link>
		<comments>http://blog.richardknop.com/2011/02/back-online/#comments</comments>
		<pubDate>Wed, 09 Feb 2011 16:05:09 +0000</pubDate>
		<dc:creator>Richard Knop</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.richardknop.com/?p=632</guid>
		<description><![CDATA[It&#8217;s good to be back online. This blog has been down for few weeks because I had some problems with my previous host. I lost some files so it took me a while to restore all data from the backup. Fortunatelly, I haven&#8217;t lost any written data (posts, pages etc). The only files missing were [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s good to be back online. This blog has been down for few weeks because I had some problems with my previous host. I lost some files so it took me a while to restore all data from the backup. Fortunatelly, I haven&#8217;t lost any written data (posts, pages etc). The only files missing were media files like images. I have uploaded back those pictures I had in the backup, I will try to replace the rest of them with new similar images soon.</p>
<p>I have already drawn new pictures for <a href="http://blog.richardknop.com/2009/05/adjacency-list-model/">Adjacency list model</a> and <a href="http://blog.richardknop.com/2009/05/nested-set-model/">Nested set model</a> posts. They don&#8217;t look quite as good as the previous ones. That&#8217;s because I have used GIMP to draw them this time and I have put only a little effort into it because I&#8217;m kinda busy right now <img src='http://blog.richardknop.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardknop.com/2011/02/back-online/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>500 Internal Server Error</title>
		<link>http://blog.richardknop.com/2009/12/500-internal-server-error/</link>
		<comments>http://blog.richardknop.com/2009/12/500-internal-server-error/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 00:19:16 +0000</pubDate>
		<dc:creator>Richard Knop</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.richardknop.com/?p=519</guid>
		<description><![CDATA[I have recently switched web hosting provider and had to move my personal website and blog over to the new one. I have encountered a simple problem when trying to get my personal website to work (it&#8217;s a Zend Framework application). I got the 500 Internal Server Error: The problem lied in this .htaccess rule: [...]]]></description>
			<content:encoded><![CDATA[<p>I have recently switched web hosting provider and had to move my personal website and blog over to the new one. I have encountered a simple problem when trying to get my personal website to work (it&#8217;s a Zend Framework application). I got the 500 Internal Server Error:</p>
<p><img class="alignnone size-full wp-image-520" title="500 Internal Server Error" src="http://blog.richardknop.com/wp-content/uploads/2009/12/500-internal-server-error.gif" alt="500 Internal Server Error" width="571" height="327" /></p>
<p>The problem lied in this .htaccess rule:</p>
<pre>php_flag magic_quotes_gpc off</pre>
<p>So I just commented the line and the error went away.</p>
<p>The line&#8217;s purpose was to make sure magic quotes are turned off in PHP.  You can use it if your web host supports it, if not just add this to your bootstrap file:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">protected <span class="kw2">function</span> _initGetRidOfMagicQuotes<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">    <span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">get_magic_quotes_gpc</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">        <span class="kw2">function</span> stripslashes_deep<span class="br0">&#40;</span><span class="re1">$value</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">            <span class="re1">$value</span> <span class="sy0">=</span> <span class="kw3">is_array</span><span class="br0">&#40;</span><span class="re1">$value</span><span class="br0">&#41;</span> ?</div>
</li>
<li class="li1">
<div class="de1">            <span class="kw3">array_map</span><span class="br0">&#40;</span><span class="st0">&#39;stripslashes_deep&#39;</span><span class="sy0">,</span> <span class="re1">$value</span><span class="br0">&#41;</span> <span class="sy0">:</span></div>
</li>
<li class="li1">
<div class="de1">            <span class="kw3">stripslashes</span><span class="br0">&#40;</span><span class="re1">$value</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">            <span class="kw1">return</span> <span class="re1">$value</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">        <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">        <span class="re1">$_POST</span> <span class="sy0">=</span> <span class="kw3">array_map</span><span class="br0">&#40;</span><span class="st0">&#39;stripslashes_deep&#39;</span><span class="sy0">,</span> <span class="re1">$_POST</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">        <span class="re1">$_GET</span> <span class="sy0">=</span> <span class="kw3">array_map</span><span class="br0">&#40;</span><span class="st0">&#39;stripslashes_deep&#39;</span><span class="sy0">,</span> <span class="re1">$_GET</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">        <span class="re1">$_COOKIE</span> <span class="sy0">=</span> <span class="kw3">array_map</span><span class="br0">&#40;</span><span class="st0">&#39;stripslashes_deep&#39;</span><span class="sy0">,</span> <span class="re1">$_COOKIE</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;       <span class="re1">$_REQUEST</span> <span class="sy0">=</span> <span class="kw3">array_map</span><span class="br0">&#40;</span><span class="st0">&#39;stripslashes_deep&#39;</span><span class="sy0">,</span> <span class="re1">$_REQUEST</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">   &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardknop.com/2009/12/500-internal-server-error/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Perceptron in ANSI C</title>
		<link>http://blog.richardknop.com/2009/11/perceptron-in-ansi-c/</link>
		<comments>http://blog.richardknop.com/2009/11/perceptron-in-ansi-c/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 14:49:11 +0000</pubDate>
		<dc:creator>Richard Knop</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.richardknop.com/?p=508</guid>
		<description><![CDATA[One of my school assignments was to write a simple ANSI C Perceptron algorithm that would be able to separate points on a two dimensional plane into two sets (-1 and 1). Fortunately, while reading a Wikipedia article about Perceptron, I have found a great external link at the bottom of it: C# implementation of [...]]]></description>
			<content:encoded><![CDATA[<p>One of my school assignments was to write a simple ANSI C Perceptron algorithm that would be able to separate points on a two dimensional plane into two sets (-1 and 1). Fortunately, while reading a <a href="http://en.wikipedia.org/wiki/Perceptron">Wikipedia article about Perceptron</a>, I have found a great external link at the bottom of it: <a href="http://dynamicnotions.blogspot.com/2008/09/single-layer-perceptron.html">C# implementation of a Perceptron</a>. This helped me a lot to understand how the Perceptron works and how to implement it programatically.</p>
<p>What I have done is rewrite the code snippet from <a href="http://dynamicnotions.blogspot.com/">John Wakefield</a> in the C language. Instead of data type double I used two integer arrays (one denotes x and the other one y coordinates of points from a training set). Plus I have added a simple code do draw a nice graph of the training set and its linear separation. I used <a href="http://www.libgd.org/Main_Page">GD</a> to draw the image. I would also like to thank <a href="http://stackoverflow.com/users/97160/amro">Amro</a> for helping me finish this algorithm.</p>
<p><img class="alignnone size-full wp-image-507" title="Perceptron linear separation" src="http://blog.richardknop.com/wp-content/uploads/2009/11/training.png" alt="Perceptron linear separation" width="600" height="600" /></p>
<p>Here&#8217;s the entire code:</p>
<div class="geshi no c">
<ol>
<li class="li1">
<div class="de1"><span class="co2">#include &lt;stdio.h&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#include &lt;stdlib.h&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#include &lt;gd.h&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#include &lt;math.h&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#define NUMEL &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;208</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#define LEARNING_RATE &nbsp; &nbsp;0.1</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#define MAX_ITERATION &nbsp; &nbsp;100</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">float</span> randomFloat<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw4">float</span> r <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">float</span><span class="br0">&#41;</span>rand<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">/</span> <span class="br0">&#40;</span><span class="kw4">float</span><span class="br0">&#41;</span>RAND_MAX;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> r;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">int</span> calculateOutput<span class="br0">&#40;</span><span class="kw4">float</span> weights<span class="br0">&#91;</span><span class="br0">&#93;</span>, <span class="kw4">float</span> x, <span class="kw4">float</span> y<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw4">float</span> sum <span class="sy0">=</span> x <span class="sy0">*</span> weights<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> <span class="sy0">+</span> y <span class="sy0">*</span> weights<span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">+</span> weights<span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="br0">&#40;</span>sum &gt;<span class="sy0">=</span> <span class="nu0">0</span><span class="br0">&#41;</span> ? <span class="nu0">1</span> <span class="sy0">:</span> <span class="nu0">-1</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">int</span> main<span class="br0">&#40;</span><span class="kw4">int</span> argc, <span class="kw4">char</span> <span class="sy0">*</span>argv<span class="br0">&#91;</span><span class="br0">&#93;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; srand<span class="br0">&#40;</span>time<span class="br0">&#40;</span><span class="kw2">NULL</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw4">float</span> x<span class="br0">&#91;</span>NUMEL<span class="br0">&#93;</span>, y<span class="br0">&#91;</span>NUMEL<span class="br0">&#93;</span>, weights<span class="br0">&#91;</span><span class="nu0">3</span><span class="br0">&#93;</span>, localError, globalError, a, b;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw4">int</span> outputs<span class="br0">&#91;</span>NUMEL<span class="br0">&#93;</span>, patternCount, i, p, iteration, output;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; FILE <span class="sy0">*</span>fp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>fp <span class="sy0">=</span> fopen<span class="br0">&#40;</span><span class="st0">&quot;training-set.txt&quot;</span>, <span class="st0">&quot;r&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">==</span> <span class="kw2">NULL</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;Cannot open file.<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; exit<span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; i <span class="sy0">=</span> <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">while</span> <span class="br0">&#40;</span>fscanf<span class="br0">&#40;</span>fp, <span class="st0">&quot;%f %f %d&quot;</span>, <span class="sy0">&amp;</span>x<span class="br0">&#91;</span>i<span class="br0">&#93;</span>, <span class="sy0">&amp;</span>y<span class="br0">&#91;</span>i<span class="br0">&#93;</span>, <span class="sy0">&amp;</span>outputs<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="sy0">!=</span> EOF<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>outputs<span class="br0">&#91;</span>i<span class="br0">&#93;</span> <span class="sy0">==</span> <span class="nu0">0</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; outputs<span class="br0">&#91;</span>i<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="nu0">-1</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;%.4f %.4f %d<span class="es0">\n</span>&quot;</span>, x<span class="br0">&#91;</span>i<span class="br0">&#93;</span>, y<span class="br0">&#91;</span>i<span class="br0">&#93;</span>, outputs<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; i<span class="sy0">++</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; patternCount <span class="sy0">=</span> i;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; system<span class="br0">&#40;</span><span class="st0">&quot;PAUSE&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; weights<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> <span class="sy0">=</span> randomFloat<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; weights<span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">=</span> randomFloat<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; weights<span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span> <span class="sy0">=</span> randomFloat<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; iteration <span class="sy0">=</span> <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">do</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; iteration<span class="sy0">++</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; globalError <span class="sy0">=</span> <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span>p <span class="sy0">=</span> <span class="nu0">0</span>; p &lt; patternCount; p<span class="sy0">++</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; output <span class="sy0">=</span> calculateOutput<span class="br0">&#40;</span>weights, x<span class="br0">&#91;</span>p<span class="br0">&#93;</span>, y<span class="br0">&#91;</span>p<span class="br0">&#93;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; localError <span class="sy0">=</span> outputs<span class="br0">&#91;</span>p<span class="br0">&#93;</span> <span class="sy0">-</span> output;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Update weights.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; weights<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> <span class="sy0">+=</span> LEARNING_RATE <span class="sy0">*</span> localError <span class="sy0">*</span> x<span class="br0">&#91;</span>p<span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; weights<span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">+=</span> LEARNING_RATE <span class="sy0">*</span> localError <span class="sy0">*</span> y<span class="br0">&#91;</span>p<span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; weights<span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span> <span class="sy0">+=</span> LEARNING_RATE <span class="sy0">*</span> localError;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; globalError <span class="sy0">+=</span> <span class="br0">&#40;</span>localError <span class="sy0">*</span> localError<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/* Root Mean Squared Error */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;Iteration %d : RMSE = %.4f<span class="es0">\n</span>&quot;</span>, iteration,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sqrt<span class="br0">&#40;</span>globalError <span class="sy0">/</span> patternCount<span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">while</span> <span class="br0">&#40;</span>globalError <span class="sy0">!=</span> <span class="nu0">0</span> <span class="sy0">&amp;&amp;</span> iteration &lt;<span class="sy0">=</span> MAX_ITERATION<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// Display network generalisation.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;X &nbsp; &nbsp; &nbsp; Y &nbsp; &nbsp; Output<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw4">float</span> j, k;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span>j <span class="sy0">=</span> <span class="nu0">-1</span>; j &lt;<span class="sy0">=</span> <span class="nu0">1</span>; j <span class="sy0">+=</span> .<span class="nu0">5</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span>j <span class="sy0">=</span> <span class="nu0">-1</span>; j &lt;<span class="sy0">=</span> <span class="nu0">1</span>; j <span class="sy0">+=</span> .<span class="nu0">5</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Calculate output.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw4">int</span> output <span class="sy0">=</span> calculateOutput<span class="br0">&#40;</span>weights, j, k<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;%.4f %.4f %s<span class="es0">\n</span>&quot;</span>, j, k, <span class="br0">&#40;</span>output <span class="sy0">==</span> <span class="nu0">1</span><span class="br0">&#41;</span> ? <span class="st0">&quot;Blue&quot;</span> <span class="sy0">:</span> <span class="st0">&quot;Red&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// Display modified weights.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;Modified weights: %.2f %.2f<span class="es0">\n</span>&quot;</span>, weights<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>, weights<span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// Create image representation.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; gdImagePtr im;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; im <span class="sy0">=</span> gdImageCreateTrueColor<span class="br0">&#40;</span><span class="nu0">600</span>, <span class="nu0">600</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>im <span class="sy0">!=</span> <span class="nu0">0</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">// Allocate colors.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw4">int</span> white <span class="sy0">=</span> gdImageColorAllocate<span class="br0">&#40;</span>im, <span class="nu0">255</span>, <span class="nu0">255</span>, <span class="nu0">255</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw4">int</span> lightGrey <span class="sy0">=</span> gdImageColorAllocate<span class="br0">&#40;</span>im, <span class="nu0">220</span>, <span class="nu0">220</span>, <span class="nu0">220</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw4">int</span> black <span class="sy0">=</span> gdImageColorAllocate<span class="br0">&#40;</span>im, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw4">int</span> blue <span class="sy0">=</span> gdImageColorAllocate<span class="br0">&#40;</span>im, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">255</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw4">int</span> red <span class="sy0">=</span> gdImageColorAllocate<span class="br0">&#40;</span>im, <span class="nu0">255</span>, <span class="nu0">0</span>, <span class="nu0">0</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw4">int</span> green <span class="sy0">=</span> gdImageColorAllocate<span class="br0">&#40;</span>im, <span class="nu0">0</span>, <span class="nu0">200</span>, <span class="nu0">50</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">// White flood fill.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gdImageFill<span class="br0">&#40;</span>im, <span class="nu0">0</span>, <span class="nu0">0</span>, lightGrey<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">// Points.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw4">float</span> cx, cy;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">for</span> <span class="br0">&#40;</span>i <span class="sy0">=</span> <span class="nu0">0</span>; i &lt; patternCount; i<span class="sy0">++</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">// Calculate output.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw4">int</span> output <span class="sy0">=</span> calculateOutput<span class="br0">&#40;</span>weights, x<span class="br0">&#91;</span>i<span class="br0">&#93;</span>, y<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cx <span class="sy0">=</span> floor<span class="br0">&#40;</span><span class="nu0">300</span> <span class="sy0">+</span> <span class="nu0">30</span><span class="sy0">*</span>x<span class="br0">&#91;</span>i<span class="br0">&#93;</span> <span class="sy0">+</span> <span class="nu0">0.5</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cy <span class="sy0">=</span> floor<span class="br0">&#40;</span><span class="nu0">300</span> <span class="sy0">-</span> <span class="nu0">30</span><span class="sy0">*</span>y<span class="br0">&#91;</span>i<span class="br0">&#93;</span> <span class="sy0">+</span> <span class="nu0">0.5</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw4">int</span> color <span class="sy0">=</span> <span class="br0">&#40;</span>output <span class="sy0">==</span> <span class="nu0">1</span><span class="br0">&#41;</span> ? blue <span class="sy0">:</span> red;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gdImageFilledEllipse<span class="br0">&#40;</span>im, <span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span>cx, <span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span>cy, <span class="nu0">5</span>, <span class="nu0">5</span>, color<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">// Linear separation</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;a <span class="sy0">=</span> <span class="sy0">-</span>weights<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> <span class="sy0">/</span> weights<span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;b <span class="sy0">=</span> <span class="sy0">-</span>weights<span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span> <span class="sy0">/</span> weights<span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;Decision boundary (line) equation: y = %.4fx + %.4f<span class="es0">\n</span>&quot;</span>, a, b<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">// x = -10 =&gt; y = -10a+b</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">// x = 10 =&gt; y = 10*a + b</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gdImageLine<span class="br0">&#40;</span>im, <span class="nu0">0</span>, <span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span><span class="br0">&#40;</span><span class="nu0">300</span> <span class="sy0">+</span> <span class="nu0">300</span><span class="sy0">*</span>a <span class="sy0">-</span> <span class="nu0">30</span><span class="sy0">*</span>b<span class="br0">&#41;</span>, <span class="nu0">600</span>, <span class="br0">&#40;</span><span class="nu0">300</span> <span class="sy0">-</span> <span class="nu0">300</span><span class="sy0">*</span>a <span class="sy0">-</span> <span class="nu0">30</span><span class="sy0">*</span>b<span class="br0">&#41;</span>, green<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">// X coordinate.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gdImageLine<span class="br0">&#40;</span>im, <span class="nu0">0</span>, <span class="nu0">300</span>, <span class="nu0">600</span>, <span class="nu0">300</span>, black<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">// Y coordinate.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gdImageLine<span class="br0">&#40;</span>im, <span class="nu0">300</span>, <span class="nu0">0</span>, <span class="nu0">300</span>, <span class="nu0">600</span>, black<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fp <span class="sy0">=</span> fopen<span class="br0">&#40;</span><span class="st0">&quot;training.png&quot;</span>, <span class="st0">&quot;wb&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span>fp <span class="sy0">!=</span> <span class="nu0">0</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gdImagePng<span class="br0">&#40;</span>im, fp<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fclose<span class="br0">&#40;</span>fp<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; gdImageDestroy<span class="br0">&#40;</span>im<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; system<span class="br0">&#40;</span><span class="st0">&quot;PAUSE&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>I used the <a href="http://www.bloodshed.net/devcpp.html">Dev C++</a> to write the program. Here is <a href="http://www.libgd.org/Devcppexample1">how to use GD in Dev C++</a>.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 655px; width: 1px; height: 1px;">#include &lt;stdio.h&gt;<br />
#include &lt;stdlib.h&gt;<br />
#include &lt;gd.h&gt;<br />
#include &lt;math.h&gt;</p>
<p>float randomFloat()<br />
{<br />
srand(time(NULL));<br />
float r = (float)rand() / (float)RAND_MAX;<br />
return r;<br />
}</p>
<p>int calculateOutput(float weights[], float x, float y)<br />
{<br />
float sum = x * weights[0] + y * weights[1];<br />
return (sum &gt;= 0) ? 1 : -1;<br />
}</p>
<p>int main(int argc, char *argv[])<br />
{<br />
// X coordinates of the training set.<br />
float x[] = {<br />
-3.2, 1.1, 2.7, -1<br />
};</p>
<p>// Y coordinates of the training set.<br />
float y[] = {<br />
1.5, 3.3, 5.12, 2.1<br />
};</p>
<p>// The training set outputs.<br />
int outputs[] = {<br />
1, -1, -1, 1<br />
};</p>
<p>int patternCount = sizeof(x) / sizeof(int);</p>
<p>float weights[2];<br />
weights[0] = randomFloat();<br />
weights[1] = randomFloat();</p>
<p>float learningRate = 0.01;</p>
<p>int iteration = 0;<br />
int i, p;<br />
float globalError;</p>
<p>do {</p>
<p>globalError = 0;<br />
int p = 0; // iterator<br />
for (p = 0; p &lt; patternCount; p++)<br />
{<br />
// Calculate output.<br />
int output = calculateOutput(weights, x[p], y[p]);</p>
<p>// Calculate error.<br />
float localError = outputs[p] &#8211; output;</p>
<p>if (localError != 0)<br />
{<br />
// Update weights.<br />
for (i = 0; i &lt; 2; i++)<br />
{<br />
float add = learningRate * localError;<br />
if (i == 0)<br />
{<br />
add *= x[p];<br />
}<br />
else if (i == 1)<br />
{<br />
add *= y[p];<br />
}<br />
weights[i] +=  add;<br />
}<br />
}</p>
<p>// Convert error to absolute value.<br />
globalError += fabs(localError);</p>
<p>printf(&#8220;Iteration %d Error %5.2f\n&#8221;, iteration, globalError);</p>
<p>iteration++;<br />
}</p>
<p>} while (globalError != 0);</p>
<p>// Display network generalisation.<br />
printf(&#8220;X       Y     Output\n&#8221;);<br />
float j, k;<br />
for (j = -1; j &lt;= 1; j += .5)<br />
{<br />
for (j = -1; j &lt;= 1; j += .5)<br />
{<br />
// Calculate output.<br />
int output = calculateOutput(weights, j, k);<br />
printf(&#8220;%5.2f  %5.2f  %s\n&#8221;, j, k, (output == 1) ? &#8220;Blue&#8221; : &#8220;Red&#8221;);<br />
}<br />
}</p>
<p>// Display modified weights.<br />
printf(&#8220;Modified weights: %5.2f %5.2f\n&#8221;, weights[0], weights[1]);</p>
<p>// Create image representation.<br />
gdImagePtr im;<br />
FILE *fp;<br />
im = gdImageCreateTrueColor(600, 600);<br />
if (im != 0)<br />
{<br />
// So the points are further from each other<br />
// and the graph is more readable.<br />
int multiplier = 50;</p>
<p>// Allocate colors.<br />
int white = gdImageColorAllocate(im, 255, 255, 255);<br />
int lightGrey = gdImageColorAllocate(im, 220, 220, 220);<br />
int black = gdImageColorAllocate(im, 0, 0, 0);<br />
int blue = gdImageColorAllocate(im, 0, 0, 255);<br />
int red = gdImageColorAllocate(im, 255, 0, 0);<br />
int green = gdImageColorAllocate(im, 0, 200, 50);</p>
<p>// White flood fill.<br />
gdImageFill(im, 0, 0, lightGrey);</p>
<p>// Points.<br />
float cx, cy;<br />
for (i = 0; i &lt; patternCount; i++)<br />
{<br />
// Calculate output.<br />
int output = calculateOutput(weights, x[i], y[i]);</p>
<p>cx = floor(300 + multiplier*x[i] + 0.5);<br />
cy = floor(300 &#8211; multiplier*y[i] + 0.5);</p>
<p>int color = (output == 1) ? blue : red;</p>
<p>gdImageFilledEllipse(im, (int)cx, (int)cy, 10, 10, color);<br />
}</p>
<p>// Linear separation.<br />
float a = 0, b = 0;<br />
for (i = 0; i &lt; patternCount; i++)<br />
{<br />
int fx = (a &gt; 0 &amp;&amp; b &gt; 0) ? 1 : 0;<br />
a += learningRate * (y[i] &#8211; fx) * x[i];<br />
b += learningRate * (y[i] &#8211; fx);<br />
}<br />
printf(&#8220;y = %5.2fx + %5.2f\n&#8221;, a, b);<br />
// x = -300 =&gt; y = -300*a + b<br />
// x = 300 =&gt; y = 300*a + b<br />
gdImageLine(im, -2, (int)(300 + multiplier*300*a + b), 598, (int)(300 &#8211; multiplier*300*a + b), green);<br />
gdImageLine(im, -1, (int)(300 + multiplier*300*a + b), 599, 300 &#8211; (int)(multiplier*300*a + b), green);<br />
gdImageLine(im, 0, (int)(300 + multiplier*300*a + b), 600, 300 &#8211; (int)(multiplier*300*a + b), green);<br />
gdImageLine(im, 1, (int)(300 + multiplier*300*a + b), 601, 300 &#8211; (int)(multiplier*300*a + b), green);<br />
gdImageLine(im, 2, (int)(300 + multiplier*300*a + b), 602, 300 &#8211; (int)(multiplier*300*a + b), green);</p>
<p>// X coordinate.<br />
gdImageLine(im, 0, 300, 600, 300, black);</p>
<p>// Y coordinate.<br />
gdImageLine(im, 300, 0, 300, 600, black);</p>
<p>fp = fopen(&#8220;training.png&#8221;, &#8220;wb&#8221;);<br />
if (fp != 0)<br />
{<br />
gdImagePng(im, fp);<br />
fclose(fp);<br />
}<br />
}<br />
gdImageDestroy(im);</p>
<p>system(&#8220;PAUSE&#8221;);<br />
return 0;<br />
}</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardknop.com/2009/11/perceptron-in-ansi-c/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Free Windows Server 2008 R2 Standard Edition</title>
		<link>http://blog.richardknop.com/2009/10/free-windows-server-2008-r2-standard-edition/</link>
		<comments>http://blog.richardknop.com/2009/10/free-windows-server-2008-r2-standard-edition/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 15:49:07 +0000</pubDate>
		<dc:creator>Richard Knop</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.richardknop.com/?p=502</guid>
		<description><![CDATA[If you are a high school or college student you can download Windows Server 2008 R2 Standard Edition for free from the Microsoft DreamSpark website. You can also download Visual Studio, Expression Studio and other useful applications for free. The only thing you need is a valid Hotmail e-mail account and an ISIC card number. [...]]]></description>
			<content:encoded><![CDATA[<p>If you are a high school or college student you can download Windows Server 2008 R2 Standard Edition for free from the <a href="http://www.dreamspark.com/">Microsoft DreamSpark</a> website. You can also download Visual Studio, Expression Studio and other useful applications for free.</p>
<p>The only thing you need is a valid <a href="http://www.hotmail.com/">Hotmail</a> e-mail account and an ISIC card number. It&#8217;s very easy <img src='http://blog.richardknop.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardknop.com/2009/10/free-windows-server-2008-r2-standard-edition/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Changing MAC address in Windows Vista</title>
		<link>http://blog.richardknop.com/2009/10/changing-mac-address-in-windows-vista/</link>
		<comments>http://blog.richardknop.com/2009/10/changing-mac-address-in-windows-vista/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 22:41:37 +0000</pubDate>
		<dc:creator>Richard Knop</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.richardknop.com/?p=492</guid>
		<description><![CDATA[As promised, here&#8217;s how to change your MAC address in Windows Vista (this method will hopefully also work in Windows 7). Go to Start -&#62; Control Panel -&#62; View network status and tasks -&#62; Manage network connections (in the left sidebar). Choose the connection for which you want to change the MAC address, right click [...]]]></description>
			<content:encoded><![CDATA[<p>As promised, here&#8217;s how to change your MAC address in Windows Vista (this method will hopefully also work in Windows 7).</p>
<p>Go to Start -&gt; Control Panel -&gt; View network status and tasks -&gt; Manage network connections (in the left sidebar).</p>
<p>Choose the connection for which you want to change the MAC address, right click on it and select &#8220;Properties&#8221;.</p>
<p>Click on the &#8220;Configure&#8221; button and go to &#8220;Advanced&#8221; tab. In the &#8220;Property&#8221; box look for &#8220;Network address&#8221;. Now you should see a window like this:</p>
<p><img class="alignnone size-full wp-image-494" title="Changing MAC address in Windows Vista" src="http://blog.richardknop.com/wp-content/uploads/2009/10/mac-address.gif" alt="Changing MAC address in Windows Vista" width="433" height="483" /></p>
<p>Instead of &#8220;000000000000&#8243; fill in your desired MAC address and press &#8220;OK&#8221; button. Open the command prompt and check that the MAC address got changed:</p>
<pre>ipconfig /all</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardknop.com/2009/10/changing-mac-address-in-windows-vista/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to change your MAC address</title>
		<link>http://blog.richardknop.com/2009/10/how-to-change-your-mac-address/</link>
		<comments>http://blog.richardknop.com/2009/10/how-to-change-your-mac-address/#comments</comments>
		<pubDate>Sat, 17 Oct 2009 20:31:15 +0000</pubDate>
		<dc:creator>Richard Knop</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.richardknop.com/?p=484</guid>
		<description><![CDATA[From time to time you will need to change the MAC address of your computer. My Internet provider, for instance, allows me to connect only my desktop PC to the Internet. To connect my laptop I had to change its MAC address to the same MAC address my desktop PC has. First, donwload Macshift and [...]]]></description>
			<content:encoded><![CDATA[<p>From time to time you will need to change the MAC address of your computer. My Internet provider, for instance, allows me to connect only my desktop PC to the Internet. To connect my laptop I had to change its MAC address to the same MAC address my desktop PC has.</p>
<p>First, donwload <a href="http://devices.natetrue.com/macshift/">Macshift</a> and save it to some convenient location like C:\ and extract it.</p>
<p>Second, you must know the name of the connection you want to change. Usually it will be the Ethernet called &#8220;Local Area Connection&#8221;.</p>
<p>Third, open the command line (Start -&gt; Run -&gt; &#8220;cmd&#8221;) and type:</p>
<pre>cd C:\macshift</pre>
<p>The above command moved you to the C:\macshift directory. Now type (just substitute 012345123456 with an actual MAC address):</p>
<pre>macshift 012345123456 -i "Local Area Connection"</pre>
<p>If you want to find out what MAC addres your PC has, type in the command line:</p>
<pre>ipconfig /all</pre>
<p>And look for &#8220;Physical Address&#8221;.</p>
<p>However, this works only in Windows XP. I will cover <a href="http://blog.richardknop.com/2009/10/changing-mac-address-in-windows-vista/">Windows Vista/Seven</a> in my next post.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardknop.com/2009/10/how-to-change-your-mac-address/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Summer UniversITy 2009</title>
		<link>http://blog.richardknop.com/2009/06/summer-university-2009/</link>
		<comments>http://blog.richardknop.com/2009/06/summer-university-2009/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 12:59:53 +0000</pubDate>
		<dc:creator>Richard Knop</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.richardknop.com/?p=399</guid>
		<description><![CDATA[So instead of sun bathing I am going to attend the Summer UniversITy 2009 course organized by T-Systems in cooperation with my college. The course I&#8217;m taking is aimed at Linux OS and its administration. I already have some experience with Unix/Linux systems (from college mainly) so I shouldn&#8217;t have any problem with the course. [...]]]></description>
			<content:encoded><![CDATA[<p>So instead of sun bathing I am going to attend the Summer UniversITy 2009 course organized by T-Systems in cooperation with my college. The course I&#8217;m taking is aimed at Linux OS and its administration. I already have some experience with Unix/Linux systems (from college mainly) so I shouldn&#8217;t have any problem with the course.</p>
<p>The course will last 2.5 weeks from 6.7. to 23.7.2009 which means I won&#8217;t probably post that much during that time <img src='http://blog.richardknop.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardknop.com/2009/06/summer-university-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using pseudocode to develop algorithms</title>
		<link>http://blog.richardknop.com/2009/05/using-pseudocode-to-develop-algorithms/</link>
		<comments>http://blog.richardknop.com/2009/05/using-pseudocode-to-develop-algorithms/#comments</comments>
		<pubDate>Fri, 22 May 2009 20:29:05 +0000</pubDate>
		<dc:creator>Richard Knop</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Pseudocode]]></category>

		<guid isPermaLink="false">http://blog.richardknop.com/?p=223</guid>
		<description><![CDATA[I am used to jumping right into programming and just come up with algorithmical solutions on the go but lately I&#8217;ve been playing a bit with pseudocode. The idea is simple. Before you start programming, you write the algorithm down in a simple informal language &#8211; pseudocode. The pseudocode usually uses some conventions from normal [...]]]></description>
			<content:encoded><![CDATA[<p>I am used to jumping right into programming and just come up with algorithmical solutions on the go but lately I&#8217;ve been playing a bit with <a href="http://en.wikipedia.org/wiki/Pseudocode">pseudocode</a>. The idea is simple. Before you start programming, you write the algorithm down in a simple informal language &#8211; pseudocode.</p>
<p>The pseudocode usually uses some conventions from normal programming languages (like if/else, while, for and other statements) but things not important for humans are omitted &#8211; the aim is to describe the algorithm in a way clear to humans not machines. Here&#8217;s an example of my pseudocode:</p>
<pre>get the latest articles

for all articles
    if article is published
        write title
        write content
        write number of comments
    endif
endfor</pre>
<p>As you can see there are no rules. No variables declarations and no system-specific code. Personally, I like to use if/endif, for/endfor to make the code more readable.</p>
<p>Why use it? It can save lots of time as translating algorithms to a specific language is much easier when you already have all business logic described. There&#8217;s also a chance you will find and fix potential issues before the real programming.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.richardknop.com/2009/05/using-pseudocode-to-develop-algorithms/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

