<?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>workblog</title>
	<atom:link href="http://iandunn.name/workblog/feed/" rel="self" type="application/rss+xml" />
	<link>http://iandunn.name/workblog</link>
	<description></description>
	<lastBuildDate>Wed, 28 Jul 2010 02:40:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Troubleshooting IIS 400.x Access Denied Errors</title>
		<link>http://iandunn.name/workblog/troubleshooting-iis-400-x-access-denied-errors/</link>
		<comments>http://iandunn.name/workblog/troubleshooting-iis-400-x-access-denied-errors/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 02:40:20 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[IIS]]></category>

		<guid isPermaLink="false">http://iandunn.name/workblog/?p=304</guid>
		<description><![CDATA[David Wang writes about troubleshooting 400.x &#8220;Access Denied&#8221; errors in IIS. The first step is to pull the substatus code out of the logs, which will give you more information on what&#8217;s going wrong and narrow down the list of causes.
]]></description>
			<content:encoded><![CDATA[<p>David Wang writes about <a href="http://blogs.msdn.com/b/david.wang/archive/2005/07/14/howto-diagnose-iis-401-access-denied.aspx">troubleshooting 400.x &#8220;Access Denied&#8221; errors in IIS</a>. The first step is to pull the substatus code out of the logs, which will give you more information on what&#8217;s going wrong and narrow down the list of causes.</p>
]]></content:encoded>
			<wfw:commentRss>http://iandunn.name/workblog/troubleshooting-iis-400-x-access-denied-errors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alternatives to Select/Multiple</title>
		<link>http://iandunn.name/workblog/alternatives-to-selectmultiple/</link>
		<comments>http://iandunn.name/workblog/alternatives-to-selectmultiple/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 16:52:00 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://iandunn.name/workblog/?p=300</guid>
		<description><![CDATA[Ryan Cramer details some of the problems with select/multiple and a few good alternatives. It&#8217;s useful in certain circumstances, but unintuitive and error-prone. Instead, you can create a list of checkboxes inside an element with overflow:auto set, or use a jQuery plugin he developed.
]]></description>
			<content:encoded><![CDATA[<p>Ryan Cramer details some of the <a href="http://www.ryancramer.com/journal/entries/select_multiple/">problems with select/multiple and a few good alternatives</a>. It&#8217;s useful in certain circumstances, but unintuitive and error-prone. Instead, you can create a list of checkboxes inside an element with overflow:auto set, or use a jQuery plugin he developed.</p>
]]></content:encoded>
			<wfw:commentRss>http://iandunn.name/workblog/alternatives-to-selectmultiple/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automated FTP Uploads/Downloads</title>
		<link>http://iandunn.name/workblog/automated-ftp-uploadsdownloads/</link>
		<comments>http://iandunn.name/workblog/automated-ftp-uploadsdownloads/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 19:57:06 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://iandunn.name/workblog/?p=298</guid>
		<description><![CDATA[ISINC has a writeup on how to pass a batch file of commands to Window&#8217;s command line FTP client. You can then create a Scheduled Task to automate them.
]]></description>
			<content:encoded><![CDATA[<p>ISINC has a writeup on how to <a href="http://www.isinc.com/2008/11/19/using-windows-xp-task-scheduler-to-automate-an-ftp-upload/">pass a batch file of commands to Window&#8217;s command line FTP client</a>. You can then create a Scheduled Task to automate them.</p>
]]></content:encoded>
			<wfw:commentRss>http://iandunn.name/workblog/automated-ftp-uploadsdownloads/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Selector Browser Compatbility</title>
		<link>http://iandunn.name/workblog/css-selector-browser-compatbility/</link>
		<comments>http://iandunn.name/workblog/css-selector-browser-compatbility/#comments</comments>
		<pubDate>Mon, 17 May 2010 18:30:20 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://iandunn.name/workblog/?p=295</guid>
		<description><![CDATA[kimblim.dk has a chart showing browser support for various CSS selectors, including pseudo selectors. It includes CSS versions 1 through 3 and all of the major browser versions.
]]></description>
			<content:encoded><![CDATA[<p>kimblim.dk has a <a href="http://kimblim.dk/css-tests/selectors/">chart showing browser support for various CSS selectors</a>, including pseudo selectors. It includes CSS versions 1 through 3 and all of the major browser versions.</p>
]]></content:encoded>
			<wfw:commentRss>http://iandunn.name/workblog/css-selector-browser-compatbility/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Error Logs with Virtuozzo</title>
		<link>http://iandunn.name/workblog/php-error-logs-with-virtuozzo/</link>
		<comments>http://iandunn.name/workblog/php-error-logs-with-virtuozzo/#comments</comments>
		<pubDate>Mon, 10 May 2010 19:26:03 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Virtuozzo/Plesk]]></category>

		<guid isPermaLink="false">http://iandunn.name/workblog/?p=278</guid>
		<description><![CDATA[Virtuozzo sets domains up to have PHP&#8217;s display_errors flag turned off by default, so that you&#8217;ll only see a blank page when there are critical errors. This is a good thing in production environments because it avoids potential security issues, but it can also be annoying when you&#8217;re trying to debug something.
Instead of displaying the [...]]]></description>
			<content:encoded><![CDATA[<p>Virtuozzo sets domains up to have PHP&#8217;s display_errors flag turned off by default, so that you&#8217;ll only see a blank page when there are critical errors. This is a good thing in production environments because it avoids potential security issues, but it can also be annoying when you&#8217;re trying to debug something.</p>
<p>Instead of displaying the errors, you can configure PHP to log them and then use the logs for debugging. For a Linux environment, you&#8217;ll need to create a file named vhost.conf inside the domain&#8217;s conf directory, <em>/var/www/vhosts/domain.name/conf</em>.</p>
<pre name="code" class="css">

&lt;Directory /var/www/vhosts/domain.name&gt;
php_value error_log /var/www/vhosts/domain.name/statistics/logs/php-errors.log
php_flag display_errors off
php_value error_reporting 6143
php_flag log_errors on
&lt;/Directory&gt;
</pre>
<p>Then create the file and assign it the right permissions</p>
<pre name="code" class="css">

cd /var/www/vhosts/domain.name/statistics/logs/
touch php-errors.log
chown apache php-errors.log
</pre>
<p>And the last thing is to tell Apache to reread the updated conf file</p>
<pre name="code" class="css">

/usr/local/psa/admin/sbin/websrvmng -a
</pre>
]]></content:encoded>
			<wfw:commentRss>http://iandunn.name/workblog/php-error-logs-with-virtuozzo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Troubleshooting htaccess</title>
		<link>http://iandunn.name/workblog/troubleshooting-htaccess/</link>
		<comments>http://iandunn.name/workblog/troubleshooting-htaccess/#comments</comments>
		<pubDate>Thu, 06 May 2010 20:18:50 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://iandunn.name/workblog/?p=274</guid>
		<description><![CDATA[If you&#8217;re troubleshooting an htaccess file and aren&#8217;t seeing any changes, no matter what you put in the file, make sure that you have permissions to execute the directives you&#8217;re using. Check Apache&#8217;s conf file to see if AllowOverride None is set for your site or directory. If it is, add the directives that you [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re <a href="http://httpd.apache.org/docs/1.3/howto/htaccess.html#troubleshoot">troubleshooting an htaccess file</a> and aren&#8217;t seeing any changes, no matter what you put in the file, make sure that you have permissions to execute the directives you&#8217;re using. Check Apache&#8217;s conf file to see if AllowOverride None is set for your site or directory. If it is, add the <a href="http://httpd.apache.org/docs/1.3/mod/core.html#allowoverride">directives</a> that you want to use, or just set AllowOverride All. You&#8217;ll need to restart the Apache service after changing the conf file. If it still isn&#8217;t working, try checking Apache&#8217;s error log.</p>
]]></content:encoded>
			<wfw:commentRss>http://iandunn.name/workblog/troubleshooting-htaccess/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making Coding Mistakes Obvious</title>
		<link>http://iandunn.name/workblog/making-coding-mistakes-obvious/</link>
		<comments>http://iandunn.name/workblog/making-coding-mistakes-obvious/#comments</comments>
		<pubDate>Mon, 03 May 2010 16:56:23 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://iandunn.name/workblog/?p=269</guid>
		<description><![CDATA[Joel Spolsky wrote an interesting article on ways to make coding mistakes obvious, like using semantic prefixes on variable names. If you have unfiltered data from the user, you can make the variable something like $usFoo so that you always remember that the data is unsafe, and won&#8217;t output it unfiltered (therefore preventing malicious code injection).
]]></description>
			<content:encoded><![CDATA[<p>Joel Spolsky wrote an interesting article on ways to <a href="http://www.joelonsoftware.com/articles/Wrong.html">make coding mistakes obvious</a>, like using semantic prefixes on variable names. If you have unfiltered data from the user, you can make the variable something like <em>$usFoo</em> so that you always remember that the data is unsafe, and won&#8217;t output it unfiltered (therefore preventing malicious code injection).</p>
]]></content:encoded>
			<wfw:commentRss>http://iandunn.name/workblog/making-coding-mistakes-obvious/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firewalling an OpenVZ node and containers</title>
		<link>http://iandunn.name/workblog/firewalling-an-openvz-node-and-containers/</link>
		<comments>http://iandunn.name/workblog/firewalling-an-openvz-node-and-containers/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 17:13:31 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[Virtuozzo/Plesk]]></category>

		<guid isPermaLink="false">http://iandunn.name/workblog/?p=266</guid>
		<description><![CDATA[The OpenVZ wiki has a nice script for firewalling an OpenVZ node and it&#8217;s containers. It creates a service and configures iptables to block all traffic to the node (except the ports you specify), but allow all traffic through to the containers, so that they can manage their own firewall. It also allows the container&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>The OpenVZ wiki has a nice script for <a href="http://wiki.openvz.org/Setting_up_an_iptables_firewall">firewalling an OpenVZ node and it&#8217;s containers</a>. It creates a service and configures iptables to block all traffic to the node (except the ports you specify), but allow all traffic through to the containers, so that they can manage their own firewall. It also allows the container&#8217;s firewalls to be managed on the node through a simple config file.</p>
]]></content:encoded>
			<wfw:commentRss>http://iandunn.name/workblog/firewalling-an-openvz-node-and-containers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Content Above Anchors Disappear</title>
		<link>http://iandunn.name/workblog/content-above-anchors-disappear/</link>
		<comments>http://iandunn.name/workblog/content-above-anchors-disappear/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 17:22:16 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://iandunn.name/workblog/?p=257</guid>
		<description><![CDATA[It turns out there&#8217;s a serous problem with the One True Layout method of creating equal height columns. All of the content above an anchor will be shifted up, making it seem like it disappeared. There aren&#8217;t any universal or reliable fixes for this, so the Faux Columns method is probably the best choice if [...]]]></description>
			<content:encoded><![CDATA[<p>It turns out there&#8217;s a serous problem with <a href="http://www.positioniseverything.net/articles/onetruelayout/equalheight">the One True Layout method of creating equal height columns</a>. All of <a href="http://www.positioniseverything.net/articles/onetruelayout/appendix/equalheightproblems#linking">the content above an anchor will be shifted up</a>, making it seem like it disappeared. There aren&#8217;t any universal or reliable fixes for this, so the <a href="http://www.alistapart.com/articles/fauxcolumns/">Faux Columns</a> method is probably the best choice if it&#8217;ll fit the design.</p>
<p><a href="http://www.positioniseverything.net/articles/onetruelayout/equalheight"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://iandunn.name/workblog/content-above-anchors-disappear/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working with Qmail&#8217;s Queue</title>
		<link>http://iandunn.name/workblog/252/</link>
		<comments>http://iandunn.name/workblog/252/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 22:21:00 +0000</pubDate>
		<dc:creator>Ian</dc:creator>
				<category><![CDATA[Spam]]></category>
		<category><![CDATA[Virtuozzo/Plesk]]></category>

		<guid isPermaLink="false">http://iandunn.name/workblog/?p=252</guid>
		<description><![CDATA[qmqtool is a great tool for viewing and changing messages in qmail&#8217;s queue. It&#8217;ll help you search for and delete spam, for instance. The FAQ has a some examples to get started with.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://freshmeat.net/projects/qmqtool/">qmqtool</a> is a great tool for viewing and changing messages in qmail&#8217;s queue. It&#8217;ll help you search for and delete spam, for instance. The <a title="qmqtool FAQ" href="http://jeremy.kister.net/code/qmqtool/current/FAQ">FAQ</a> has a some examples to get started with.</p>
]]></content:encoded>
			<wfw:commentRss>http://iandunn.name/workblog/252/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
