<?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"
	>

<channel>
	<title>Paul McNally's Blog</title>
	<atom:link href="http://paulmcnally.info/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://paulmcnally.info</link>
	<description>A LAMP Developer's WebLog</description>
	<pubDate>Fri, 29 Jan 2010 12:49:57 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Apple&#8217;s New iPad Tablet PC</title>
		<link>http://paulmcnally.info/?p=34</link>
		<comments>http://paulmcnally.info/?p=34#comments</comments>
		<pubDate>Fri, 29 Jan 2010 12:48:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[apple]]></category>

		<category><![CDATA[iPad]]></category>

		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[iPod]]></category>

		<category><![CDATA[pc]]></category>

		<category><![CDATA[tablet]]></category>

		<guid isPermaLink="false">http://paulmcnally.info/?p=34</guid>
		<description><![CDATA[Since apple&#8217;s keynote the other day announcing their new iPad tablet PC
I must admit that I am quite taken by it. Performance aside, it &#8217;s just beautiful. Attracting me to it like a crow to milk bottle tops. It basically looks like someone zapped an iPhone with an enlargement ray. But this is not unnecessarily [...]]]></description>
			<content:encoded><![CDATA[<p>Since apple&#8217;s keynote the other day announcing their new iPad tablet PC<br />
I must admit that I am quite taken by it. Performance aside, it &#8217;s just beautiful. Attracting me to it like a crow to milk bottle tops. It basically looks like someone zapped an iPhone with an enlargement ray. But this is not unnecessarily a bad thing, given the iPhone is also a thing of beauty. That&#8217;s one area where apple have always excelled. Creating beautiful, high-end items.</p>
<p></p>
<p>Being a consumer and high-usage computer user who has never (yet) delved into the<br />
apple computer market (although like many people I have an iPod, and it&#8217;s not my first, and I use an iMac at work) I am extremely taken by this new tablet and very tempted to fork out the £700 or so<br />
for one of my own.<br />
<img style="float: left;border:2px solid #CCC;margin:5px" src="http://paulmcnally.info/ipadOnABudget.png" alt="iPad on a budget" width="250" height="250" /><br />
The iPad looks like it can handle those everyday requirements such as web browsing, photo&#8217;s, email<br />
and video with ease and as a bonus it is also compatible with the 14,000 apps designed for the iPhone<br />
out of the box. Also, it&#8217;s ebook reading application looks great and easy to read, possibly<br />
making devices such as the Amazon kindle already obsolete.</p>
<p>Being a linux user, Im wondering of I could get it to control my Linux media centre. I would certainly<br />
have fun trying! However, I think if I was to buy another apple device, as I have been tempted to do on so many occasions due to their extraordinarily good functionality aswell as their great looks then I would still have to buy an iPhone. Because, lets face it, the iPad is just an iPhone that you can&#8217;t fit in your pocket.<br />
That doesn&#8217;t stop me wanting one though. Bravo apple on creating another excellent device!</p>
]]></content:encoded>
			<wfw:commentRss>http://paulmcnally.info/?feed=rss2&amp;p=34</wfw:commentRss>
		</item>
		<item>
		<title>Back on the academia train with the Open University.</title>
		<link>http://paulmcnally.info/?p=33</link>
		<comments>http://paulmcnally.info/?p=33#comments</comments>
		<pubDate>Fri, 22 Jan 2010 11:11:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[BSc (Honours) Information Technology and Computing]]></category>

		<category><![CDATA[Cert IT &amp; Comp (open)]]></category>

		<category><![CDATA[Certificate in Information Technology and Computing]]></category>

		<category><![CDATA[Data computing and information]]></category>

		<category><![CDATA[M150]]></category>

		<category><![CDATA[Networked living: exploring information and communicati]]></category>

		<category><![CDATA[OU]]></category>

		<category><![CDATA[T175]]></category>

		<category><![CDATA[The Open University]]></category>

		<guid isPermaLink="false">http://paulmcnally.info/?p=33</guid>
		<description><![CDATA[After a year of no academic study, I have once again reached the point where I need to quench my thirst for knowledge. For what is life if it is boring? and attaining new knowledge and new skills is rarely boring.
So here I find myself back on that education train with The Open University. One [...]]]></description>
			<content:encoded><![CDATA[<p>After a year of no academic study, I have once again reached the point where I need to quench my thirst for knowledge. For what is life if it is boring? and attaining new knowledge and new skills is rarely boring.</p>
<p>So here I find myself back on that education train with The Open University. One of the best education establishments that I have had the pleasure to be a part of.</p>
<p>This time I find myself studying for the undergraduate <a href="http://www3.open.ac.uk/study/undergraduate/qualification/C47.htm" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www3.open.ac.uk');">Certificate in Information Technology and Computing.</a> which comprises of the two level 1 (translate: first year of University) courses <a href="http://www3.open.ac.uk/study/undergraduate/course/m150.htm" onclick="javascript:pageTracker._trackPageview ('/outbound/www3.open.ac.uk');">Data, computing and information  (M150)</a> and <a href="http://www3.open.ac.uk/study/undergraduate/course/t175.htm" onclick="javascript:pageTracker._trackPageview ('/outbound/www3.open.ac.uk');">Networked living: exploring information and communication technologies  (T175).</a></p>
<p>I have decided to study these two courses for two reasons. Firstly because they make up the Cert IT &amp; Comp (open) certification, and secondly because they are the two compulsory level one courses in the <a href="http://www3.open.ac.uk/study/undergraduate/qualification/B13.htm" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/www3.open.ac.uk');">BSc (Honours) Information Technology and Computing</a>. So not only will I have started working towards a new degree, but I will also obtain an interim qualification along the way!</p>
<p>Originally I decided to study just M150, but after receiving the course materials the other day, which I must say, after studying 6 OU courses in the past, has the highest quality of course materials so far. I really was impressed when I opened the box delivered to me. Contained inside are 3 DVD&#8217;s containing all the software that I would need to complete the course (unfortunately most of it is for Windows users, whereas I&#8217;m a Linux user), detailed course outline and guide, a glossary, but most of all 16 high quality glossy booklets with all the course material enclosed.</p>
<p>What more could you ask for? Well if that was not enough, there was also the online resources, which include a series of podcasts, tutorials and student/tutor conferencing. Brilliant.</p>
<p>Looking through the booklets correcting the errata that was emailed to me from the University I did notice however that the content was rather basic. The M150 course is more for beginners than someone at my level, and although the course was a compulsory course as part of the degree, I realised that this course would be very easy for me and I would not learn very much from the course that I did not already know. It was at this point that I started to consider studying the other of the two courses at the same time. But, given that I work full time and have other commitments, would I have the time to study both courses concurrently? Well I have decided to give it a go.</p>
<p>However, the deadline for signing up to the T175 course is today and I have not managed to sign up successfully yet as the online registration is currently down. Fortunately, my office is just round the corner from an OU regional office and maybe I can pop in there on my lunch and sign up.</p>
<p>I&#8217;m quite eager to see if the course materials for T175 will be as high quality as M150, but no matter what, these courses will give me something to write about here on here!</p>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://paulmcnally.info/?feed=rss2&amp;p=33</wfw:commentRss>
		</item>
		<item>
		<title>Linux MAN pages in paper/pdf format?</title>
		<link>http://paulmcnally.info/?p=31</link>
		<comments>http://paulmcnally.info/?p=31#comments</comments>
		<pubDate>Tue, 15 Dec 2009 11:33:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[lpic]]></category>

		<category><![CDATA[lpic-1]]></category>

		<category><![CDATA[man pages]]></category>

		<category><![CDATA[manual]]></category>

		<guid isPermaLink="false">http://paulmcnally.info/?p=31</guid>
		<description><![CDATA[As a professional web developer, the benefits of using a Linux platform for development
have been quite obvious to me for quite some time. Not only is there a vast range of
open source tools at your disposal to help you in the development process, such as IDE&#8217;s
and graphics editor&#8217;s but the community support for certain distro&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>As a professional web developer, the benefits of using a Linux platform for development<br />
have been quite obvious to me for quite some time. Not only is there a vast range of<br />
open source tools at your disposal to help you in the development process, such as IDE&#8217;s<br />
and graphics editor&#8217;s but the community support for certain distro&#8217;s such as Ubuntu<br />
is extraordinarily good.</p>
<p>As a Linux user, like many other I take advantage of the Linux man pages. When I&#8217;m unsure<br />
how to use a particular command line tool or command simply typing <strong>man &lt;commandname&gt; </strong><br />
will display the manual page for that command.</p>
<p>A few months ago I decided that it would be good for my career if I was to study for the Linux<br />
LPIC-1 (Linux Professional Institute) certification. I have bought several books to help me, however<br />
I thought it would be a nice resource to have either a paper copy (or even a pdf) of the Linux MAN pages.<br />
So far, to my dismay, I have been unsuccessful in locating either format of this handy resource, All I<br />
have been able to find is the software version. There must be a PDF somewhere, I&#8217;ll have to keep looking&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://paulmcnally.info/?feed=rss2&amp;p=31</wfw:commentRss>
		</item>
		<item>
		<title>How smart is Smarty?</title>
		<link>http://paulmcnally.info/?p=30</link>
		<comments>http://paulmcnally.info/?p=30#comments</comments>
		<pubDate>Wed, 18 Feb 2009 00:26:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Web Design &amp; Development]]></category>

		<category><![CDATA[.tpl]]></category>

		<category><![CDATA[smarty]]></category>

		<category><![CDATA[templates]]></category>

		<category><![CDATA[templating]]></category>

		<guid isPermaLink="false">http://paulmcnally.info/?p=30</guid>
		<description><![CDATA[I started using the smarty template engine today for one of the applications that I develop at work. The application previously used a home-made templating system that was much more primitive in comparison. It was basically a string replacement engine.
I had started reading the documentation on the Smarty website a few days ago, and I [...]]]></description>
			<content:encoded><![CDATA[<p>I started using the <a href="http://www.smarty.net/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.smarty.net');">smarty template engine</a> today for one of the applications that I develop at work. The application previously used a home-made templating system that was much more primitive in comparison. It was basically a string replacement engine.</p>
<p>I had started reading the documentation on the Smarty website a few days ago, and I must say, I am impressed with what this so-called &#8220;template engine&#8221; can do.</p>
<p>I quote <em>template engine</em> because on the offset, that&#8217;s what Smarty appears to be. But upon further investigation it becomes apparent that Smarty is much more than this.<code></code> During the day or so that I have been using Smarty, i have come to appreciate it&#8217;s built-in function base, that takes care of things such as loops and conditionals with ease. Meaning that it really can be used as a full presentation layer instead of a string replacement/templating system.</p>
<p>This ability to have conditionals and language constructs purely in the presentation layer means that one can use PHP to obtain and sort the required data, into arrays if necessary and then pass on the raw data to the template which can then decide what to do with it, or how to display it. This is the limitation of more simple string replacement templating systems.</p>
<p>Although I am still new to the Smarty way of doing things, the more i discover about Smarty, such as it&#8217;s built-in language file support, and auto-generation of HTML select/option tags given an associative array the more I like it.</p>
<p>Only time will tell if it can cut the mustard though, once it&#8217;s been implemented on the whole application and tested. But from what I&#8217;ve read, it&#8217;s up to the job.</p>
]]></content:encoded>
			<wfw:commentRss>http://paulmcnally.info/?feed=rss2&amp;p=30</wfw:commentRss>
		</item>
		<item>
		<title>An Excellent Open Source Text Editor&#8230; Komodo Edit</title>
		<link>http://paulmcnally.info/?p=29</link>
		<comments>http://paulmcnally.info/?p=29#comments</comments>
		<pubDate>Tue, 17 Feb 2009 00:26:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://paulmcnally.info/?p=29</guid>
		<description><![CDATA[My programmer&#8217;s editor of choice for quite a while now has been Zend Studio 5.5, it has many useful tools like built-in function reference and code completion. It allows you to create your own colour schemes (unlike the new Zend Studio 6) and debug code.
As a secondary editor i would use Gedit on linux and [...]]]></description>
			<content:encoded><![CDATA[<p>My programmer&#8217;s editor of choice for quite a while now has been Zend Studio 5.5, it has many useful tools like built-in function reference and code completion. It allows you to create your own colour schemes (unlike the new Zend Studio 6) and debug code.</p>
<p>As a secondary editor i would use Gedit on linux and <a href="http://www.contexteditor.org/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.contexteditor.org');">Context</a> on Windows. Every now and again i take a look at what editors are available as oftern the editor a developer uses is a matter of personal taste.</p>
<p>Not long ago I came across the <a href="http://www.openkomodo.com/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.openkomodo.com');">open-komodo project</a>, which provides a free multi-platform version of the Komodo IDE as the text editor Komodo Edit, and I love it.<br />
<img src="http://img87.imageshack.us/img87/2272/komodoeditwin32fd8.png" alt="" style="float:left;padding:1.6em" /></p>
<p>Komodo Edit has dynamic language support for Perl, PHP, Python, Ruby, Tcl, JavaScript, CSS, HTML, and XML, it also supports template languages like RHTML, Template-Toolkit, HTML-Smarty and Django.</p>
<p>Komodo Edit has many of the tools that I like about Zend Studio, such as code auto-completion and calltips, multi-language file support (great!), syntax coloring and syntax checking, Vi emulation, Emacs key bindings!</p>
<p>What more could you as from an open source editor? What&#8217;s that? you want more? How about firefox like extensability? The open komodo community has a wealth of extensions for the editor from Mootools API to jQuery tools. Check it out, I hope you likeit as much as I do.</p>
]]></content:encoded>
			<wfw:commentRss>http://paulmcnally.info/?feed=rss2&amp;p=29</wfw:commentRss>
		</item>
		<item>
		<title>SVN on Linux and Windows</title>
		<link>http://paulmcnally.info/?p=28</link>
		<comments>http://paulmcnally.info/?p=28#comments</comments>
		<pubDate>Mon, 16 Feb 2009 23:18:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Web Design &amp; Development]]></category>

		<category><![CDATA[Concurent Versions System]]></category>

		<category><![CDATA[CVS]]></category>

		<category><![CDATA[RapidSVN]]></category>

		<category><![CDATA[subversion]]></category>

		<category><![CDATA[SVN]]></category>

		<category><![CDATA[TortoiseSVN]]></category>

		<category><![CDATA[versioning]]></category>

		<guid isPermaLink="false">http://paulmcnally.info/?p=28</guid>
		<description><![CDATA[Working within a development team on applications usually requires some sort of version control. Version control software such as the newer Subversion (SVN), and older Concurrent Versions System (CVS) store a version of the developmental code internally in a &#8220;repository&#8221; and allow as many people as required to &#8220;check out&#8221; or obtain a copy for [...]]]></description>
			<content:encoded><![CDATA[<p>Working within a development team on applications usually requires some sort of version control. Version control software such as the newer Subversion (SVN), and older Concurrent Versions System (CVS) store a version of the developmental code internally in a &#8220;repository&#8221; and allow as many people as required to &#8220;check out&#8221; or obtain a copy for themselves. These applications have many uses, but the main uses are the distribution of code, and the subsequent saving of updated code once a developer has finished working on it. All version control software have this functionality. Plus the ability to lock files that are being worked on and  prevent or merge multiple modifications to the same code. In short, they are an indispensable tool for multi-developer applications.</p>
<div align="center"></div>
<p>Developers who use Microsoft Windows and need access to an SVN ro CVS repository have the option of using an extremely good, open source GUI client called TortoiseSVN (or TortoiseCVS as required).</p>
<p>TortoiseSVN won the <a href="http://www.sourceforge.net" title="SourceForge.net" onclick="javascript:pageTracker._trackPageview ('/outbound/www.sourceforge.net');">SourceForge.net</a> 2007 Community Choice Award for Best Tool or Utility for Developers. Using this GUI client means that the user can perform many actions that would require a more in depth knowledge from the command line.</p>
<p>Unix and Linux users do not have the luxury of the TortoiseSVN GUI client to perform actions on a CVS/SVN repository. There are alternatives, such as RapidCVN which is cross platform but I&#8217;ve never tried it so can&#8217;t comment. Maybe I will at some point.</p>
<p>Whichever Operating system that you use, it&#8217;s always useful to be able to get by without a GUI client from the command line. So here&#8217;s just a few useful commands&#8230;</p>
<p><strong><span style="text-decoration: underline;">SVN Checkout</span></strong></p>
<p>svn co url [destination_directory]</p>
<p>or</p>
<p>svn checkout url [destination_directory]</p>
<p><strong><span style="text-decoration: underline;">Ignore a directory</span></strong></p>
<p>svn propset svn:ignore directory &#8216;dir_name&#8217;</p>
<p><strong><span style="text-decoration: underline;">Show status of files and dirs</span></strong></p>
<p>svn status</p>
<p><strong><span style="text-decoration: underline;">Add a file</span></strong></p>
<p>svn add file_name</p>
<p><strong><span style="text-decoration: underline;">Commit</span></strong></p>
<p>svn commit [file_name] [-m "some comment"]</p>
<p>If you require more, there is a useful resource of commands <a href="http://wiki.greenstone.org/wiki/index.php/Useful_SVN_Commands" onclick="javascript:pageTracker._trackPageview ('/outbound/wiki.greenstone.org');">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://paulmcnally.info/?feed=rss2&amp;p=28</wfw:commentRss>
		</item>
		<item>
		<title>A really simple introduction to templating using PHP</title>
		<link>http://paulmcnally.info/?p=25</link>
		<comments>http://paulmcnally.info/?p=25#comments</comments>
		<pubDate>Sat, 01 Nov 2008 00:09:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Web Design &amp; Development]]></category>

		<category><![CDATA[.tpl]]></category>

		<category><![CDATA[application development]]></category>

		<category><![CDATA[business logic]]></category>

		<category><![CDATA[presentation logic]]></category>

		<category><![CDATA[templates]]></category>

		<category><![CDATA[templating]]></category>

		<category><![CDATA[tiers]]></category>

		<guid isPermaLink="false">http://paulmcnally.info/?p=25</guid>
		<description><![CDATA[When developers talk about application development they often spout things like
&#8220;When developing an application it is beneficial to separate business logic from the presentation logic&#8221;
Which all sounds very technical and intellectual, but what are they going on about when they say things like this?
Imagine a simple website. Three pages liked together by hypertext links. Each [...]]]></description>
			<content:encoded><![CDATA[<p>When developers talk about application development they often spout things like</p>
<p><strong>&#8220;When developing an application it is beneficial to separate business logic from the presentation logic&#8221;</strong></p>
<p>Which all sounds very technical and intellectual, but what are they going on about when they say things like this?</p>
<p>Imagine a simple website. Three pages liked together by hypertext links. Each of the pages contain text and images hard coded as HTML and the files have a .html extension. There&#8217;s no processing behind the scenes, no PHP/ASP or Java, the pages content never changes. These are called <em>static pages</em>. It would be fair to say that this website is almost completely made up of <strong>presentation logic</strong>. Logic, or code concerned with display and not processing any information.</p>
<p>Now, imagine a PHP scrpt that a form on this website posts it&#8217;s information to when someone clicks the submit button. Let&#8217;s call it &#8216;process_form.php&#8217;, and lets say this form takes the information posted to it, checks the information is usable, and then redirects you to another page depending on what you entered in the form. This processing of information would be an example of <strong>business logic</strong>.<br />
<br />
Often In web applications, business logic and presentation logic, along with CRUD (database logic)  are often fused into single scripts. Such as having a single PHP script that does some processing and outputs the result in HTML format. Though often useful, this can become problematic and cumbersome if you wanted to change the way your web page looked without changing the way it does any processing.</p>
<p>Along comes templating&#8230;</p>
<p>Templates allow you to seperate your static content from your processing. This way, you could easily change your static content without worrying about the processing code getting in the way and vice versa.</p>
<p>A simple HTML file could look like this:</p>
<div class="codeblock">&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;Title Text&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
This is the content<br />
&lt;/body&gt;<br />
&lt;/html&gt;</div>
<p>If we wanted to output PHP in this file we could do something like this:</p>
<div class="codeblock">&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;Title Text&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;?php echo &#8216;This is the content&#8217; ?&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</div>
<p>This would be an example of single-tier, or fused logic. Which makes it difficult to just change our HTML because the HTML and PHP are intertwined in a single layer. Say we created a template file of our original HTML file that looked like this and gave it the extension .tpl</p>
<div class="codeblock">&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;{TITLE}&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
{CONTENT}<br />
&lt;/body&gt;<br />
&lt;/html&gt;</div>
<p>In this example we have replaced the content withcontent placeholders that we can reference later on.</p>
<p>Now, we can produce a simple PHP function that will replace the placeholders with our content after our PHP business logic layer has finished with it. The function may look something like this:</p>
<div class="codeblock">function render($array,$template){</p>
<p>$template = file_get_contents($template);</p>
<p>foreach ($array as $key=&gt;$value){<br />
$template = str_replace(&#8217;{&#8217;.strtoupper($key).&#8217;}',$value,$template);<br />
}</p>
<p>echo $template;<br />
}</p>
</div>
<p>This way, from our PHP business logic layer, we can easily produce our presentation layer with any data we like without having to alter the template in any way. An example of calling our template from the business logic layer would be something like this:</p>
<div class="codeblock">render(array(&#8217;title&#8217;=&gt;&#8217;The Page Title&#8217;,'content&#8217;=&gt;&#8217;This is the page content&#8217;),&#8217;template.tpl&#8217;);</div>
]]></content:encoded>
			<wfw:commentRss>http://paulmcnally.info/?feed=rss2&amp;p=25</wfw:commentRss>
		</item>
		<item>
		<title>Haunted by register_globals security issues</title>
		<link>http://paulmcnally.info/?p=24</link>
		<comments>http://paulmcnally.info/?p=24#comments</comments>
		<pubDate>Thu, 09 Oct 2008 18:06:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[PHP settings]]></category>

		<category><![CDATA[register_globals]]></category>

		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://paulmcnally.info/?p=24</guid>
		<description><![CDATA[Yesterday I went to an interview for a new job. As with many programming/developer jobs after a bit of a chat the interviewer and a lead developer gave me a small test on my PHP knowledge.
I was given 3 pieces of paper with some PHP code on them that was intentionally erroneous and given 15 [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I went to an interview for a new job. As with many programming/developer jobs after a bit of a chat the interviewer and a lead developer gave me a small test on my PHP knowledge.</p>
<p>I was given 3 pieces of paper with some PHP code on them that was intentionally erroneous and given 15 minutes to mark all the errors on them.</p>
<p>Hindsight is a beautiful thing I suppose. After leaving the interview something came to mind that i didnt notice straight away.</p>
<p>The code was using something like this:</p>
<div class="codeblock">// define $loginstatus = true only if user is authenticated<br />
if (login_user()) {<br />
$loginstatus = true;<br />
}</div>
<p>Because we didn&#8217;t first initialize the $loginstatus variable as false using:</p>
<div class="codeblock">$loginstatus = false;</div>
<p>the variable might be defined through using the register_globals setting instead, such as from a GET URL query string from a posted form, e.g.</p>
<p><strong>auth.php?loginstatus=1</strong></p>
<p>So, anyone can be seen as authenticated when testing like this!</p>
<div class="codeblock">if ($loginstatus) {<br />
// show logged in stuff<br />
}</div>
<p>Oh boy! how dangerous could that be! Even though register_globals had been turned off since PHP 4.2.6 as default, it sould not be taken for granted as when it is turned on can be a security loophole, which is why it&#8217;s scheduled for removal.</p>
<p>I cant believe I missed it at the time (although it did come to me afterwards) It&#8217;s <em>that</em> easy to create a potentially unsecure application.</p>
<p>As of PHP 6 though this can no longer happen, as the register_globals PHP setting is being removed comletely. Good.</p>
]]></content:encoded>
			<wfw:commentRss>http://paulmcnally.info/?feed=rss2&amp;p=24</wfw:commentRss>
		</item>
		<item>
		<title>Passed the MySQL Dev II Exam - Now a CMDEV</title>
		<link>http://paulmcnally.info/?p=23</link>
		<comments>http://paulmcnally.info/?p=23#comments</comments>
		<pubDate>Wed, 24 Sep 2008 01:57:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Web Design &amp; Development]]></category>

		<category><![CDATA[Certification]]></category>

		<category><![CDATA[databases]]></category>

		<category><![CDATA[MySQL]]></category>

		<category><![CDATA[MySQL Developer]]></category>

		<guid isPermaLink="false">http://paulmcnally.info/?p=23</guid>
		<description><![CDATA[I took the second MySQL Certification exam on Friday and I am now proud to call myself a &#8220;Certified MySQL 5.0 Developer&#8221;. It always feels good to add another qualification to the list, and reinforces the fact that I am actually a LAMP developer and not just a PHP developer.
For those of you who don&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>I took the second MySQL Certification exam on Friday and I am now proud to call myself a &#8220;Certified MySQL 5.0 Developer&#8221;. It always feels good to add another qualification to the list, and reinforces the fact that I am actually a <a href="http://en.wikipedia.org/wiki/LAMP_(software_bundle)" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">LAMP</a> developer and not just a PHP developer.</p>
<p>For those of you who don&#8217;t know, MySQL (or Sun or whatever) offer two different certification routes, <a href="http://www.mysql.com/certification/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.mysql.com');">Developer (CMDEV) and Database Administrator (CMDBA)</a>.</p>
<p>The Developer certification, supposedly designed for developers who use MySQL for back-end data storage and processing such as integration with web applications, and the DBA certification, more for those sysadmins who optimize ,tune and maintain MySQL servers.</p>
<p>Some people may not like this about me, but when it comes to application development I&#8217;m a bit of a perfectionist. I put a lot of effort into what I do and I try really hard to get things exactly right. I only bring this up because in some respects it explains my <em>disappointment</em> with the exam.</p>
<p>There were so many visible errors that I was actually <em>angry</em> whilst taking the exam. The numerous errors consisted in simple misspellings of SQL keywords, to missing spaces between parts of SQL queries and repeated words. One question gave a multiple choice of four SQL queries, asking you to select the correct one. In actuality they were all wrong! If I had cut and paste each of those queries as they stood into the mysql client program, none of them would have succeeded.For a company that has such a great product I am saddened by the low spelling quality of the exam questions.</p>
<p>The questions themselves, on the whole were fair. If you could settle with selecting the &#8220;best&#8221; or &#8220;closest&#8221; answer instead of the &#8220;correct&#8221; one. The range of topics tested fairly accurately matches the breakdown stated in the <a href="http://www.mysql.com/certification/studyguides/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.mysql.com');">MySQL Certification Study Guide</a> (ISBN 0-672-32812-7), which was almost single handedly my source for study material. The questions given on the supplied CD are exceptionally useful.</p>
<p>There are several things that bother me about this certification at the moment though. Exam spelling mistakes apart, there are <strong>only 525 people worldwide</strong> who hold the <a href="http://www.mysql.com/certification/candidates.php?exam=3" onclick="javascript:pageTracker._trackPageview ('/outbound/www.mysql.com');">MySQL 5.0 Developer Certification</a>, with <strong>only 30 certificate holders here in the UK </strong>(USA holding the most at 204). I am the only person in  the whole North-west of England who holds the certification. Now this could be for several reasons, either the CMDEV is:</p>
<ol>
<li>Not very good and not worth having</li>
<li>Not recognised by employers</li>
<li>Its really hard to pass</li>
<li>People do not know about it.</li>
</ol>
<p>I think It&#8217;s safe to rule out 1 &amp; 3. I think the certification testing was adequate and the difficulty level was intermediate. Fair for a cert of this nature.</p>
<p>This leaves 2 &amp; 4. Which in my eyes are related. In my opinion, a certification for developers using the most widely used and successful Open Source RDBMS available should be more widely recognised and utilised by employers and developers.</p>
<p>I think that MySQL /Sun need to increase people&#8217;s awareness of their certification program as this could be a very handy little cert to have.</p>
]]></content:encoded>
			<wfw:commentRss>http://paulmcnally.info/?feed=rss2&amp;p=23</wfw:commentRss>
		</item>
		<item>
		<title>Introducing Google Chrome - Google&#8217;s maiden voyage into the web browser market.</title>
		<link>http://paulmcnally.info/?p=22</link>
		<comments>http://paulmcnally.info/?p=22#comments</comments>
		<pubDate>Sat, 06 Sep 2008 08:29:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[chrome]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[user agent]]></category>

		<category><![CDATA[web browser]]></category>

		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://paulmcnally.info/?p=22</guid>
		<description><![CDATA[
Released as a beta on the 2nd September, Google&#8217;s entrance into the User agent market doesn&#8217;t really come as a surprise. But the oucome may be!
Google Chrome, which utilises the WebKit rendering engine, originally created as part of the KDE Konquror browser library, and later part part of apple&#8217;s Safari browser has some interesting features.
The [...]]]></description>
			<content:encoded><![CDATA[<p></p>
<p><img class="alignleft" style="float: left;" src="/wp-content/uploads/Google_Chrome.jpg" alt="Googlr Chrome Logo" width="216" height="216" />Released as a beta on the 2nd September, Google&#8217;s entrance into the User agent market doesn&#8217;t really come as a surprise. But the oucome may be!</p>
<p><a href="http://www.google.com/chrome" onclick="javascript:pageTracker._trackPageview ('/outbound/www.google.com');">Google Chrome</a>, which utilises the WebKit rendering engine, originally created as part of the KDE Konquror browser library, and later part part of apple&#8217;s Safari browser has some interesting features.</p>
<p>The first thing that I noticed is that there is no Home button. Instead, Chrome&#8217;s URL address bar doubles up as a search engine search box, set to google as default (naturally!), but can just as easily be set to yahoo, MSN or whatever through the options settings.</p>
<p>Chrome&#8217;s URL address bar has a few other tricks up it&#8217;s sleeve. Just like in Firefox, typing in Chrome&#8217;s &#8220;Omnibox&#8221; (the name google have given given to the multi-purpose URL bar) will unleash the power of it&#8217;s auto-suggest functionality.</p>
<p>Now, with this feature, Google seem to have got it right where Mozilla Firefox 3 got it wrong. Google&#8217;s auto-suggest feature will suggest a few (of the most popular or similar) search terms, but will also auto-suggest the closest matches to previous searches or website addresses you have typed in. But only the explicit URL&#8217;s you have typed in, not all the similar search queries etc like FF3&#8217;s address bar. Bravo Google! Thumbs up! <img src='http://paulmcnally.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Not having a home page button did leave me a little disorientated though. I like having a starting point. Not to say that Chrome doesn&#8217;t have a starting page per se. It has a handy &#8220;home&#8221; page, which has an Opera-like Speed-dial feel to it, which displays thumbnails of your most visited web pages. Nothing amazing really. Similar can be seen in Opera, and as an add-on to Firefox.</p>
<p>What Chrome adds to this is the auto-population of the list with your most visited sites. Could be useful. Not sure if I like this feature yet though. What would be nice, is some kind of blacklist, for sites you don&#8217;t want to show up in this list. Or at least a way of deleting individual items from this list or from your browsing history without having to delete data for the whole day.</p>
<p>Chrome does have &#8216;incognito&#8217; mode. A kind of safe mode where browsing history and search history is not saved and no cookies are saved etc. I like this functionality, however I would still prefer <strong>more</strong> <strong>control</strong> over what Google Chrome was saving in its browsing history in normal mode.I would also prefer if Google added a home button, just like other user agents which would take me to the default page, instead of having to open a new tab every time I want to get there. Overall, I think Google&#8217;s history centric approach to browsing needs a bit more customisability, but has potential.</p>
<p>Chrome&#8217;s tabs are useful too. The ability to drag tabs from the chrome window into a separate window stands out as a useful function. The only problem I encountered was that the tab close button is very close to the new tab button. I have already opened several new tabs when meaning to close another. It could be disastrous if I was to happen the other way round!</p>
<p><strong>As a web developer</strong> I&#8217;m very fond of the developer-orientated add-ons that are available for Firefox. Especially the web developer toolbar. It would seem in comparrison that Chrome&#8217;s developer tools are very limited.  Just possessing the bare minimum of a source code viewer (with clickable links for some URI&#8217;s such as images, opening them in a new tab) and a JavaScript console and debugger.</p>
<p>Google Chrome does not support any extensions at the moment and I wouldn&#8217;t expect it to compete with FF in that department, but some simple things like a spell checker would be nice.</p>
<p>Google Chrome&#8217;s first release has passed the <a href="http://en.wikipedia.org/wiki/Acid1" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">Acid1</a> and <a href="http://www.webstandards.org/action/acid2/#content-main" onclick="javascript:pageTracker._trackPageview ('/outbound/www.webstandards.org');">Acid2</a> tests, but failed the Acid3 test with a score of 78/100 which is better that both Internet Explorer 7 and Firefox 3.  The Acid tests test how well a browser complies with a given set of Web standards. So Google have something to be prowd of here also.</p>
<p>One of the best things about Google Chrome in my opinion is its V8 JavaScript engine. An Open Source JavaScript engine Developed by a Google team in Denmark. The V8 JavaScript engine increases performance by compiling JavaScript to native machine code before running it, rather than to bytecode or interpreting it. Thus, JavaScript applications will run at the speed of a compiled binary. The end result means that JavaScript applications, according to Google, run approximately <a href="http://en.wikipedia.org/wiki/V8_JavaScript_engine" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">twice as fast as Firefox 3 and Safari 4 beta</a>.</p>
<p>The major concern I have with Google Chrome is the data collection functionality of the &#8220;Omnibox&#8221; search bar. <strong>Information entered into the Omnibox search bar is automatically sent back to, and stored by Google, along with the computer&#8217;s IP address even before the user presses enter.</strong> An <a href="http://news.cnet.com/8301-13860_3-10031661-56.html?tag=txt" onclick="javascript:pageTracker._trackPageview ('/outbound/news.cnet.com');">article posted on CNET News by </a><span class="author"><a href="http://news.cnet.com/8301-13860_3-10031661-56.html?tag=txt" onclick="javascript:pageTracker._trackPageview ('/outbound/news.cnet.com');">Ina Fried</a> provides more detail on this &#8220;feature&#8221; and how to disable it. But, I fear, many people will not disable it and personally I feel this is an invasion of a user&#8217;s privacy and more information than Google should be allowed to collect. It is for similar reasons that I have been put off using Google&#8217;s search engine in recent times. I feel that with their browsing history &#8220;features&#8221; that they are attempting to collect too much information about me without my consent and I don&#8217;t like this.</span></p>
<p>Overall, I think Google Chrome is a nice looking, fast browser with some interesting features but could do with some more customisability.</p>
<p>You can download <a href="http://www.google.com/chrome" onclick="javascript:pageTracker._trackPageview ('/outbound/www.google.com');">Google Chrome for Windows here</a>, while OS X and Linux versions are still under development.</p>
]]></content:encoded>
			<wfw:commentRss>http://paulmcnally.info/?feed=rss2&amp;p=22</wfw:commentRss>
		</item>
	</channel>
</rss>
