<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss 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" version="2.0">

<channel>
	<title>Micromicon Blog</title>
	
	<link>http://www.micromicon.com/blog</link>
	<description>The Weblog of Micromicon</description>
	<pubDate>Thu, 20 Nov 2008 05:01:05 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/MicromiconBlog" type="application/rss+xml" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">1779266</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.feedburner.com</feedburner:feedburnerHostname><item>
		<title>PHP: Establish Class for MySQL Connections</title>
		<link>http://www.micromicon.com/blog/2008/11/20/php-establish-class-for-mysql-connections/</link>
		<comments>http://www.micromicon.com/blog/2008/11/20/php-establish-class-for-mysql-connections/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 05:01:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Technology Review]]></category>

		<guid isPermaLink="false">http://www.micromicon.com/blog/2008/11/20/php-establish-class-for-mysql-connections/</guid>
		<description><![CDATA[Basic Class for creating a database connection
Class MySQLConnection
{
// &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;
// variable initialisation
// &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;
var $SERVER = &#8220;hostname&#8221;; // Server name
var $USER = &#8220;dbusername&#8221;; // Database username
var $PWD = &#8220;dbpassword&#8221;; // Database password
var $DBNAME = &#8220;dbname&#8221;; // Database name
var $DBCONN = &#8220;&#8221;;
// &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
// flag an error and terminate
// &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
function db_error($strText)
{
$errno = mysql_errno();
$errmsgmsg = mysql_error();
echo &#8220;ERROR: $strText Error: ($errno) [...]]]></description>
			<content:encoded><![CDATA[<p>Basic Class for creating a database connection</p>
<p><code>Class MySQLConnection<br />
{<br />
// &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
// variable initialisation<br />
// &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
var $SERVER = &#8220;hostname&#8221;; // Server name<br />
var $USER = &#8220;dbusername&#8221;; // Database username<br />
var $PWD = &#8220;dbpassword&#8221;; // Database password<br />
var $DBNAME = &#8220;dbname&#8221;; // Database name<br />
var $DBCONN = &#8220;&#8221;;<br />
// &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
// flag an error and terminate<br />
// &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
function db_error($strText)<br />
{<br />
$errno = mysql_errno();<br />
$errmsgmsg = mysql_error();<br />
echo &#8220;ERROR: $strText Error: ($errno) $errmsg )&#8221;;<br />
exit;<br />
}<br />
// &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
// attempt database initialisation<br />
// &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
function init_db ()<br />
{<br />
// create connection string and attempt connection<br />
$dbconn = mysql_connect($this-&gt;SERVER,$this-&gt;USER,$this-&gt;PWD);<br />
if (!$dbconn) { $this-&gt;db_error(&#8221;Database Connection Failed&#8221;); }<br />
// attempt to open the chosen database<br />
if (!mysql_select_db($this-&gt;DBASE,$dbconn)) { $this-&gt;error(&#8221;Unable To Select Database&#8221;); }<br />
// make the connection available<br />
$this-&gt;DBCONN = $dbconn;<br />
}<br />
} // Class MySQLConnection<br />
?&gt;</code></p>
<p><a>Go to Source</a></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.micromicon.com%2Fblog%2F2008%2F11%2F20%2Fphp-establish-class-for-mysql-connections%2F';
  addthis_title  = 'PHP%3A+Establish+Class+for+MySQL+Connections';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://www.micromicon.com/blog/2008/11/20/php-establish-class-for-mysql-connections/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dealing with unexpected input</title>
		<link>http://www.micromicon.com/blog/2008/10/29/dealing-with-unexpected-input/</link>
		<comments>http://www.micromicon.com/blog/2008/10/29/dealing-with-unexpected-input/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 07:29:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Technology Review]]></category>

		<guid isPermaLink="false">http://www.micromicon.com/blog/2008/10/29/dealing-with-unexpected-input/</guid>
		<description><![CDATA[Since the introduction of the Suggest a Website link in the Eggnchips project, a few interesting observations have been noted, the biggest of which is the amount of HTML that has tried to be inserted into the description field in order to try and stuff it with extra links; another thing has been a few attempted SQL [...]]]></description>
			<content:encoded><![CDATA[<p>Since the introduction of the <a href="http://www.eggnchips.com/index.php?p=s">Suggest a Website</a> link in the Eggnchips project, a few interesting observations have been noted, the biggest of which is the amount of HTML that has tried to be inserted into the description field in order to try and stuff it with extra links; another thing has been a few attempted SQL injections. Had these fields gone straight into the database no doubt trouble would have ensured and with the SQL injections the system might have become compromised.</p>
<p><img src="http://www.eggnchips.com/images/eggnchips-link.png" alt="" width="400" height="717" /></p>
<p>At least there is a way around this using <a title="Removing HTML Tags from Strings" rel="bookmark" href="http://www.sl8r.co.uk/2008/10/28/php-removing-html-tags-from-strings/"><span>PHP: Removing HTML Tags from Strings</span></a> and <a title="Avoiding mySQL Injections" rel="bookmark" href="http://www.sl8r.co.uk/2008/04/30/php-avoiding-mysql-injections/"><span>PHP: Avoiding mySQL Injections</span></a>. There are also a few other tricks up our sleeves to combat this sort of activity but more investigation and research needs to be carried out on the effective mechanisms for securing input data. One possibility would be to allow only text based input but that could ultimately prove difficult in a multi-lingual environment.</p>
<p> </p>
<p> </p>
<p><img src="http://feeds.feedburner.com/~r/EggnchipsBlog/~4/434598227" height="1" width="1" /><br />
<a>Go to Source</a></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.micromicon.com%2Fblog%2F2008%2F10%2F29%2Fdealing-with-unexpected-input%2F';
  addthis_title  = 'Dealing+with+unexpected+input';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://www.micromicon.com/blog/2008/10/29/dealing-with-unexpected-input/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PHP: Removing HTML Tags from Strings</title>
		<link>http://www.micromicon.com/blog/2008/10/29/php-removing-html-tags-from-strings/</link>
		<comments>http://www.micromicon.com/blog/2008/10/29/php-removing-html-tags-from-strings/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 07:29:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Technology Review]]></category>

		<guid isPermaLink="false">http://www.micromicon.com/blog/2008/10/29/php-removing-html-tags-from-strings/</guid>
		<description><![CDATA[Using text fields on web based forms to obtain information from a website user can often lead to unexpected string inputs. A typical unexpected input might be a field that asks a user to submit a link and a description - spammers may use this description field to stuff with extra links.
Fortunately, PHP has the command strip_tags [...]]]></description>
			<content:encoded><![CDATA[<p>Using text fields on web based forms to obtain information from a website user can often lead to unexpected string inputs. A typical unexpected input might be a field that asks a user to submit a link and a description - spammers may use this description field to stuff with extra links.</p>
<p>Fortunately, PHP has the command strip_tags to remove these tags.</p>
<p><code>$myString = "&lt;p&gt;&lt;a href='gohere.html'&gt;This is some text&lt;/a&gt;&lt;/p&gt;";<br />
$newString = strip_tags($myString);</code></p>
<p>You can allow specified tags by using the option parameter of strip_tags, so to include the &lt;p&gt; tag in the string above but remove the &lt;a&gt; tag use this command</p>
<p><code>$newString = strip_tags($myString,"&lt;a&gt;");</code></p>
<p>It would also be useful to use the mysql_real_escape_string in this instance to avoid <a href="http://www.sl8r.co.uk/2008/04/30/php-avoiding-mysql-injections/">SQL Injections</a>.</p>
<p><a>Go to Source</a></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.micromicon.com%2Fblog%2F2008%2F10%2F29%2Fphp-removing-html-tags-from-strings%2F';
  addthis_title  = 'PHP%3A+Removing+HTML+Tags+from+Strings';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://www.micromicon.com/blog/2008/10/29/php-removing-html-tags-from-strings/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PHP: Session Variables</title>
		<link>http://www.micromicon.com/blog/2008/10/23/php-session-variables/</link>
		<comments>http://www.micromicon.com/blog/2008/10/23/php-session-variables/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 07:27:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Technology Review]]></category>

		<guid isPermaLink="false">http://www.micromicon.com/blog/2008/10/23/php-session-variables/</guid>
		<description><![CDATA[Session variables used to need registering however now they are more in line with _POST variables, so:
On the page to activate Session Handling use
session_start();
You can always check the Session is working by obtaining the Session ID using
session_id();
Now variables can be registered and used using the form
$_SESSION['variable'] = &#8220;value&#8221;;
Removal of a session variable can be performed [...]]]></description>
			<content:encoded><![CDATA[<p>Session variables used to need registering however now they are more in line with _POST variables, so:</p>
<p>On the page to activate Session Handling use</p>
<p><code>session_start();</code></p>
<p>You can always check the Session is working by obtaining the Session ID using</p>
<p><code>session_id();</code></p>
<p>Now variables can be registered and used using the form</p>
<p><code>$_SESSION['variable'] = &#8220;value&#8221;;</code></p>
<p>Removal of a session variable can be performed using</p>
<p><code>session_unset( $_SESSION['variable'] );</code></p>
<p>Alternatively just calling session_unset(); would remove all session variables but maintain the session ID.</p>
<p>To finally close the session use</p>
<p><code>session_destroy();</code></p>
<p><a>Go to Source</a></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.micromicon.com%2Fblog%2F2008%2F10%2F23%2Fphp-session-variables%2F';
  addthis_title  = 'PHP%3A+Session+Variables';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://www.micromicon.com/blog/2008/10/23/php-session-variables/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Excuse the mess whilst I am redoing the pretty dificult bit</title>
		<link>http://www.micromicon.com/blog/2008/10/22/excuse-the-mess-whilst-i-am-redoing-the-pretty-dificult-bit/</link>
		<comments>http://www.micromicon.com/blog/2008/10/22/excuse-the-mess-whilst-i-am-redoing-the-pretty-dificult-bit/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 22:09:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.micromicon.com/blog/?p=36</guid>
		<description><![CDATA[Whilst we re-organise the network in the background (we are redoing the pretty dificult bit at the moment)  the service may fluctuate intermittently for a short period of time - probably about fifteen to twentey minutes. It should not take too long and once the we are finished redoing the pretty dificult bit at the [...]]]></description>
			<content:encoded><![CDATA[<p>Whilst we re-organise the network in the background (we are redoing the pretty dificult bit at the moment)  the service may fluctuate intermittently for a short period of time - probably about fifteen to twentey minutes. It should not take too long and once the we are finished redoing the pretty dificult bit at the back end normal service should be resumed - not only that but you should notice things have improved somewhat.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.micromicon.com%2Fblog%2F2008%2F10%2F22%2Fexcuse-the-mess-whilst-i-am-redoing-the-pretty-dificult-bit%2F';
  addthis_title  = 'Excuse+the+mess+whilst+I+am+redoing+the+pretty+dificult+bit';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://www.micromicon.com/blog/2008/10/22/excuse-the-mess-whilst-i-am-redoing-the-pretty-dificult-bit/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PHP: Process Technorati API</title>
		<link>http://www.micromicon.com/blog/2008/10/05/php-process-technorati-api/</link>
		<comments>http://www.micromicon.com/blog/2008/10/05/php-process-technorati-api/#comments</comments>
		<pubDate>Sun, 05 Oct 2008 15:58:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Technology Review]]></category>

		<guid isPermaLink="false">http://www.micromicon.com/blog/2008/10/05/php-process-technorati-api/</guid>
		<description><![CDATA[Processing the Technorati API allows you to receive information about your blog and rankings logged with the Technorati service. An example of extracting various pieces of information is here
&#60;!--p$url = &#8220;www.yourchosendomain.com&#8221;;
$apikey = &#8220;putyourapikeyhere&#8221;;
$service = &#8220;http://api.technorati.com/bloginfo?key=&#8221; . $apikey . &#8220;&#38;url=&#8221; .urlencode($url);
// call the service and get results
$xmlresult = file_get_contents($service);
// results found?
if ($xmlresult === false)
{ die(&#8221;Unable to [...]]]></description>
			<content:encoded><![CDATA[<p>Processing the Technorati API allows you to receive information about your blog and rankings logged with the Technorati service. An example of extracting various pieces of information is here</p>
<p><code>&lt;!--p<br />$url = &#8220;www.yourchosendomain.com&#8221;;<br />
$apikey = &#8220;putyourapikeyhere&#8221;;<br />
$service = &#8220;http://api.technorati.com/bloginfo?key=&#8221; . $apikey . &#8220;&amp;url=&#8221; .urlencode($url);<br />
// call the service and get results<br />
$xmlresult = file_get_contents($service);<br />
// results found?<br />
if ($xmlresult === false)<br />
{ die(&#8221;Unable to process request&#8221;); }<br />
// attempt to process xml<br />
$error = null;<br />
if (!$dom = domxml_open_mem($xmlresult, DOMXML_LOAD_PARSING ))<br />
{ die(&#8221;Unable to parse XML&#8221;); }<br />
else<br />
{<br />
echo get_details( $dom,&#8221;name&#8221; );<br />
echo get_details( $dom,&#8221;url&#8221; );<br />
echo get_details( $dom,&#8221;inboundblogs&#8221; );<br />
echo get_details( $dom,&#8221;rank&#8221; );<br />
}<br />
// search elements until target tag found<br />
function get_details( $dom,$searchtag )<br />
{<br />
$root = $dom-&gt;document_element();<br />
$node = $root-&gt;first_child();<br />
$myitem = $root-&gt;get_elements_by_tagname($searchtag);<br />
// loop through elements<br />
for($i=0;$i { echo &#8220;&lt;p&gt;&#8221; . $searchtag . &#8221; is [" . $myitem[$i]-&gt;get_content() . &#8220;]&lt;/p&gt;&#8221;; }<br />
}<br />
?&gt;</code></p>
<p><a>Go to Source</a></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.micromicon.com%2Fblog%2F2008%2F10%2F05%2Fphp-process-technorati-api%2F';
  addthis_title  = 'PHP%3A+Process+Technorati+API';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://www.micromicon.com/blog/2008/10/05/php-process-technorati-api/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PHP: XML element information</title>
		<link>http://www.micromicon.com/blog/2008/10/05/php-xml-element-information/</link>
		<comments>http://www.micromicon.com/blog/2008/10/05/php-xml-element-information/#comments</comments>
		<pubDate>Sun, 05 Oct 2008 15:58:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Technology Review]]></category>

		<guid isPermaLink="false">http://www.micromicon.com/blog/2008/10/05/php-xml-element-information/</guid>
		<description><![CDATA[Obtaining information regarding elements in XML is relatively straight forward
&#60;!--p// xml input file
$xmldoc = &#8220;sitemap.xml&#8221;;
// test to open file
if ( !$dom = domxml_open_file($xmldoc) )
{
echo &#8220;The file cannot be loaded.&#8221;;
}
else
{
// show top level item
$elem = $dom-&#62;document_element();
print_r( $elem );
}
?&#62;
Go to Source

  addthis_url    = 'http%3A%2F%2Fwww.micromicon.com%2Fblog%2F2008%2F10%2F05%2Fphp-xml-element-information%2F';
  addthis_title  = 'PHP%3A+XML+element+information';
  addthis_pub   [...]]]></description>
			<content:encoded><![CDATA[<p>Obtaining information regarding elements in XML is relatively straight forward</p>
<p><code>&lt;!--p<br />// xml input file<br />
$xmldoc = &#8220;sitemap.xml&#8221;;<br />
// test to open file<br />
if ( !$dom = domxml_open_file($xmldoc) )<br />
{<br />
echo &#8220;The file cannot be loaded.&#8221;;<br />
}<br />
else<br />
{<br />
// show top level item<br />
$elem = $dom-&gt;document_element();<br />
print_r( $elem );<br />
}<br />
?&gt;</code></p>
<p><a>Go to Source</a></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.micromicon.com%2Fblog%2F2008%2F10%2F05%2Fphp-xml-element-information%2F';
  addthis_title  = 'PHP%3A+XML+element+information';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://www.micromicon.com/blog/2008/10/05/php-xml-element-information/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Stages of database design</title>
		<link>http://www.micromicon.com/blog/2008/09/24/stages-of-database-design/</link>
		<comments>http://www.micromicon.com/blog/2008/09/24/stages-of-database-design/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 23:07:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Technology Review]]></category>

		<guid isPermaLink="false">http://www.micromicon.com/blog/2008/09/24/stages-of-database-design/</guid>
		<description><![CDATA[There are six primary stages in the development of a database system:
• Requirements Analysis
Pull together information to understand the problem domain and document the requirement.
• Conceptual Design
Identify Entities and high-level Relationships between them.
• Logical Design
Identify Attributes, Constraints, Keys and perform Normalisation.
• Physical Design
Translate the logical design to physical SQL commands and tables. Specify all the [...]]]></description>
			<content:encoded><![CDATA[<p>There are six primary stages in the development of a database system:</p>
<p>• Requirements Analysis</p>
<p>Pull together information to understand the problem domain and document the requirement.</p>
<p>• Conceptual Design</p>
<p>Identify Entities and high-level Relationships between them.</p>
<p>• Logical Design</p>
<p>Identify Attributes, Constraints, Keys and perform Normalisation.</p>
<p>• Physical Design</p>
<p>Translate the logical design to physical SQL commands and tables. Specify all the tables (from the entities) and the features of the tables including columns (from the Attributes), Primary Keys and Foreign Keys (from the relationships).</p>
<p>• Testing</p>
<p>Ensure suitability of system and identify potential bugs or design errors.</p>
<p>• Review</p>
<p>Highligh made during development of system together with a final evaluation of the tools and techniques.</p>
<p><a>Go to Source</a></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.micromicon.com%2Fblog%2F2008%2F09%2F24%2Fstages-of-database-design%2F';
  addthis_title  = 'Stages+of+database+design';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://www.micromicon.com/blog/2008/09/24/stages-of-database-design/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Data Normalisation Concepts</title>
		<link>http://www.micromicon.com/blog/2008/09/24/data-normalisation-concepts/</link>
		<comments>http://www.micromicon.com/blog/2008/09/24/data-normalisation-concepts/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 23:07:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Technology Review]]></category>

		<guid isPermaLink="false">http://www.micromicon.com/blog/2008/09/24/data-normalisation-concepts/</guid>
		<description><![CDATA[Functional Dependencies describe the relationship in terms of constraints between Attributes in a proposed table and are also used to identify Keys. Normalisation also uses Functional Dependencies to assemble tables of Attributes into one of the following Normal Forms:
• First Normal Form (1NF) requires no duplicate records in a proposed table and no repeating groups [...]]]></description>
			<content:encoded><![CDATA[<p>Functional Dependencies describe the relationship in terms of constraints between Attributes in a proposed table and are also used to identify Keys. Normalisation also uses Functional Dependencies to assemble tables of Attributes into one of the following Normal Forms:</p>
<p>• First Normal Form (1NF) requires no duplicate records in a proposed table and no repeating groups of similar information. Each Attribute must hold an atomic value and there must be a candidate key.</p>
<p>• Second Normal Form (2NF) requires First Normal Form. If the proposed table has no composite candidate keys (i.e. a single Attribute is the candidate key) then it qualifies for 2NF. However, if a composite candidate key exists then Attributes other than the candidate key must not be dependent upon part/or the entire candidate key.</p>
<p>• Third Normal Form (3NF) requires Second Normal Form. In addition, there must be no non-trivial Functional Dependencies between non-prime key Attribute. Basically, this means that all the Attributes that are not part of a primary key are compared with each other to ensure uniqueness.</p>
<p><a>Go to Source</a></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.micromicon.com%2Fblog%2F2008%2F09%2F24%2Fdata-normalisation-concepts%2F';
  addthis_title  = 'Data+Normalisation+Concepts';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://www.micromicon.com/blog/2008/09/24/data-normalisation-concepts/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Building a bot, phase I</title>
		<link>http://www.micromicon.com/blog/2008/08/28/building-a-bot-phase-i/</link>
		<comments>http://www.micromicon.com/blog/2008/08/28/building-a-bot-phase-i/#comments</comments>
		<pubDate>Thu, 28 Aug 2008 20:38:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Technology Review]]></category>

		<guid isPermaLink="false">http://www.micromicon.com/blog/2008/08/28/building-a-bot-phase-i/</guid>
		<description><![CDATA[Bots are a popular search engine activity. When users recommend sites they are sometimes asked to enter information such as Title, URL, Description and possibly some Keywords. Some search engines however simply require a URL and the essential information is automatically retrieved using an automated mechanism - bots.
Bots are ideal for this repetitive automated activity [...]]]></description>
			<content:encoded><![CDATA[<p>Bots are a popular search engine activity. When users recommend sites they are sometimes asked to enter information such as Title, URL, Description and possibly some Keywords. Some search engines however simply require a URL and the essential information is automatically retrieved using an automated mechanism - bots.</p>
<p>Bots are ideal for this repetitive automated activity by taking a work queue (a given list of URLs) and producing a set of information that can be passed to the next stage in the submission process. Even though these techniques are called bots they are essentially just software programs that run either at a scheduled time or in a loop constantly checking the work queue.</p>
<p>In addition to the usual information a bot can periodically extract additional words from body text itself by parsing out html tags, removing stop words and building a word frequency table. A word frequency table is simply a list of words with the number of times a word appears in the given text.</p>
<p>Recently I have been working to find a way of automatically extracting information for a given URL by accessing the html from a submitted URL, parsing the relevant information and using this information as input to the submission process. Information is often placed as meta tags in the HEAD section of html but I have found this process so far to somewhat hit and miss as some sites include the information and others do not. For those that do not an additional ways needs to be identified to provide a suitable link title and description - it may be the case that this will always require some user intervention but further analysis should identify more.</p>
<p>The bot also needs to be aware of the period of time since the last change of a web page to ensure that valuable information or updates is not missed and that processing power isn&#8217;t wasted on a link that does not change very much. The way we can address this is by producing a hash for a page and comparing it with a previously stored hash.</p>
<p>A hash, simply put is the result of a consistent algorithm applied to information. MD5 is a well known hash mechanism that I may investigate in a later article. For now a simple example to demonstrate a hash would be to calculate a check digit by taking letter values of a phrase, adding them together then finding the modulus using a number say 27 (allowing 26 letters and the space), in the example the first two phrases give the same answer however the third phrase with one letter different gives a much different check digit.</p>
<p><a href="http://www.eggnchips.com/blog/wp-content/uploads/2008/07/checkdigit.png"><img style="0px" src="http://www.eggnchips.com/blog/wp-content/uploads/2008/07/checkdigit-thumb.png" border="0" alt="checkdigit" width="640" height="204" /></a></p>
<p>I have a working program up and running - but not in bot mode yet -but can be initiated manually. I need to add the loop code to continually check the work queue for submitted URLs.</p>
<div>Technorati Tags: <a rel="tag" href="http://technorati.com/tags/search">search</a>,<a rel="tag" href="http://technorati.com/tags/engine">engine</a>,<a rel="tag" href="http://technorati.com/tags/hash">hash</a>,<a rel="tag" href="http://technorati.com/tags/bot">bot</a></div>
<p><img src="http://feeds.feedburner.com/~r/EggnchipsBlog/~4/341629436" height="1" width="1" /><br />
<a>Go to Source</a></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.micromicon.com%2Fblog%2F2008%2F08%2F28%2Fbuilding-a-bot-phase-i%2F';
  addthis_title  = 'Building+a+bot%2C+phase+I';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://www.micromicon.com/blog/2008/08/28/building-a-bot-phase-i/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
