<?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>Undecided &#187; WebDev</title>
	<atom:link href="http://www.datarave.net/zfh/category/personal/webdev/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.datarave.net/zfh</link>
	<description>An open notebook</description>
	<lastBuildDate>Tue, 15 Jun 2010 15:29:05 +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>PHP &#8211; Using ARRAY_MAP to generate an ON DUPLICATE KEY UPDATE statement</title>
		<link>http://www.datarave.net/zfh/2010/02/13/1128/</link>
		<comments>http://www.datarave.net/zfh/2010/02/13/1128/#comments</comments>
		<pubDate>Sun, 14 Feb 2010 03:00:58 +0000</pubDate>
		<dc:creator>John Williams</dc:creator>
				<category><![CDATA[WebDev]]></category>

		<guid isPermaLink="false">http://www.datarave.net/zfh/?p=1128</guid>
		<description><![CDATA[This bit of code is very cool;
function getUpdateString($arrayKey, $arrayValue)
{
 return($arrayKey . &#8216;=&#8217; . $arrayValue);
}
   $values['key1'] = &#8216;value1&#8242;;
   $values['key2'] = &#8216;value2&#8242;;
   $sql = &#8216;INSERT INTO table ( &#8216; . implode(&#8216;, &#8216;,array_keys($values)) . &#8216; )
      VALUES ( &#8216; . implode(&#8216;, &#8216;,array_values($values)) . &#8216; )
      ON DUPLICATE KEY UPDATE &#8216; . implode(&#8216;, &#8216;,array_map(&#8216;getUpdateString&#8217;,array_keys($values),array_values($values)));
Returns a SQL statement:
INSERT INTO table ( key1, key2 ) VALUES ( [...]]]></description>
			<content:encoded><![CDATA[<p>This bit of code is very cool;</p>
<blockquote><p>function getUpdateString($arrayKey, $arrayValue)<br />
{<br />
 return($arrayKey . &#8216;=&#8217; . $arrayValue);<br />
}<br />
   $values['key1'] = &#8216;value1&#8242;;<br />
   $values['key2'] = &#8216;value2&#8242;;<br />
   $sql = &#8216;INSERT INTO table ( &#8216; . implode(&#8216;, &#8216;,array_keys($values)) . &#8216; )<br />
      VALUES ( &#8216; . implode(&#8216;, &#8216;,array_values($values)) . &#8216; )<br />
      ON DUPLICATE KEY UPDATE &#8216; . implode(&#8216;, &#8216;,array_map(&#8216;getUpdateString&#8217;,array_keys($values),array_values($values)));</p></blockquote>
<p>Returns a SQL statement:</p>
<blockquote><p>INSERT INTO table ( key1, key2 ) VALUES ( value1, value2 ) ON DUPLICATE KEY UPDATE key1=value1, key2=value2;</p></blockquote>
<p>Useful stuff.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.datarave.net/zfh/2010/02/13/1128/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>INSERT INTO from SELECT</title>
		<link>http://www.datarave.net/zfh/2010/02/05/insert-into-from-select/</link>
		<comments>http://www.datarave.net/zfh/2010/02/05/insert-into-from-select/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 16:58:34 +0000</pubDate>
		<dc:creator>John Williams</dc:creator>
				<category><![CDATA[WebDev]]></category>

		<guid isPermaLink="false">http://www.datarave.net/zfh/?p=1107</guid>
		<description><![CDATA[SELECT &#60;field&#62;[, ...]
INTO &#60;table&#62;
FROM &#60;table&#62;
WHERE &#60;criteria&#62;
or
INSERT INTO &#60;table&#62; ( &#60;field&#62;[, ...] )
SELECT &#60;field&#62;[, ...]
FROM &#60;table&#62;
WHERE &#60;criteria&#62;
example
INSERT INTO auth_users ( user_id, auth_id, auth_setting )
SELECT user_id, 1301 AS auth_id, &#8216;Y&#8217; AS auth_setting
FROM evedr_users
WHERE user_id &#62; 1
]]></description>
			<content:encoded><![CDATA[<blockquote><p>SELECT &lt;field&gt;[, ...]<br />
INTO &lt;table&gt;<br />
FROM &lt;table&gt;<br />
WHERE &lt;criteria&gt;</p></blockquote>
<p>or</p>
<blockquote><p>INSERT INTO &lt;table&gt; ( &lt;field&gt;[, ...] )<br />
SELECT &lt;field&gt;[, ...]<br />
FROM &lt;table&gt;<br />
WHERE &lt;criteria&gt;</p></blockquote>
<p>example</p>
<blockquote><p>INSERT INTO auth_users ( user_id, auth_id, auth_setting )<br />
SELECT user_id, 1301 AS auth_id, &#8216;Y&#8217; AS auth_setting<br />
FROM evedr_users<br />
WHERE user_id &gt; 1</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.datarave.net/zfh/2010/02/05/insert-into-from-select/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PostLevels2 v0.10.1 Bug Fix Release</title>
		<link>http://www.datarave.net/zfh/2009/01/20/postlevels2-v0101-bug-fix-release/</link>
		<comments>http://www.datarave.net/zfh/2009/01/20/postlevels2-v0101-bug-fix-release/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 23:31:53 +0000</pubDate>
		<dc:creator>John Williams</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://www.datarave.net/zfh/?p=901</guid>
		<description><![CDATA[Visit the Change Log (NOTE: You must register for a user account on the bugtracker, and you may wish to filter for only Post Levels related changes).
I&#8217;d like to thank Katy and Sine for pointing out bugs that were addressed in this release.  If you have any feature quests, please make them on the bug tracker [...]]]></description>
			<content:encoded><![CDATA[Note: There is a file embedded within this post, please visit this post to download the file.
<p>Visit the <a title="Datarave Bugtracker" href="http://www.datarave.net/bt/changelog_page.php" target="_blank">Change Log</a> (NOTE: You must register for a user account on the bugtracker, and you may wish to filter for only Post Levels related changes).</p>
<p>I&#8217;d like to thank Katy and Sine for pointing out bugs that were addressed in this release.  If you have any feature quests, please make them on the bug tracker (link above) or on the <a title="DISQUS Thread: Post Levels 2" href="http://datarave.disqus.com/post_levels_2_working_title/" target="_blank">Disqus conversation thread</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.datarave.net/zfh/2009/01/20/postlevels2-v0101-bug-fix-release/feed/</wfw:commentRss>
		<slash:comments>41</slash:comments>
		</item>
		<item>
		<title>Post Levels 2 v0.10.0</title>
		<link>http://www.datarave.net/zfh/2008/12/23/post-levels-2-v0100/</link>
		<comments>http://www.datarave.net/zfh/2008/12/23/post-levels-2-v0100/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 14:34:52 +0000</pubDate>
		<dc:creator>John Williams</dc:creator>
				<category><![CDATA[WebDev]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://www.datarave.net/zfh/?p=862</guid>
		<description><![CDATA[I&#8217;ve completed the first draft of the Post Levels 2 plugin that I&#8217;m using here.
Post Levels is a Wordpress plugin that permits the administrator to hide private posts from users with insufficient access.  This is performed by assigning a post level to each post, and a user level to each user, and a post is [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve completed the first draft of the Post Levels 2 plugin that I&#8217;m using here.</p>
Note: There is a file embedded within this post, please visit this post to download the file.
<blockquote><p>Post Levels is a Wordpress plugin that permits the administrator to hide private posts from users with insufficient access.  This is performed by assigning a post level to each post, and a user level to each user, and a post is hidden if the user level is less than the post level.  Originally authored by Felipe Fortes.</p></blockquote>
<p>This version has been tested with Wordpress 2.6.1 and 2.7 without any conflicts.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.datarave.net/zfh/2008/12/23/post-levels-2-v0100/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Post Levels / Welcome to DISQUS</title>
		<link>http://www.datarave.net/zfh/2008/12/19/post-levels-welcome-to-disqus/</link>
		<comments>http://www.datarave.net/zfh/2008/12/19/post-levels-welcome-to-disqus/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 17:37:43 +0000</pubDate>
		<dc:creator>John Williams</dc:creator>
				<category><![CDATA[WebDev]]></category>

		<guid isPermaLink="false">http://www.datarave.net/zfh/?p=844</guid>
		<description><![CDATA[A while back I signed up for a DISQUS account to comment on Fortes&#8217; discussion thread about his Post Levels plugin.  Now that I&#8217;ve spent a couple of days beating my head against a wall to understand what it was that he did and try to work out comments for the code that hopefully even [...]]]></description>
			<content:encoded><![CDATA[<p>A while back I signed up for a DISQUS account to comment on Fortes&#8217; discussion thread about his Post Levels plugin.  Now that I&#8217;ve spent a couple of days beating my head against a wall to understand what it was that he did and try to work out comments for the code that hopefully even painfully ignorant contributors (like myself) can use to start to grasp what&#8217;s going on in the code&#8230;  I decided to start a <a title="DISQUS Thread: Post Levels 2" href="http://datarave.disqus.com/post_levels_2_working_title/" target="_blank">DISQUS thread</a>.</p>
<p>All comments to this post will be integrated with DISQUS.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.datarave.net/zfh/2008/12/19/post-levels-welcome-to-disqus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RSS Tricks with Wordpress</title>
		<link>http://www.datarave.net/zfh/2008/12/04/rss-tricks-with-wordpress/</link>
		<comments>http://www.datarave.net/zfh/2008/12/04/rss-tricks-with-wordpress/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 21:05:43 +0000</pubDate>
		<dc:creator>John Williams</dc:creator>
				<category><![CDATA[WebDev]]></category>

		<guid isPermaLink="false">http://www.datarave.net/zfh/?p=761</guid>
		<description><![CDATA[Found an excellent post at Smashing Magazine about setting up Catagory specific feeds, I especially like two points in the post.  For those who are interested primarily in reading only the stuff on my Blog that is Nortel related for example, this technique is pretty cool.  I&#8217;ll have to incorporate this in to my theme.
8. [...]]]></description>
			<content:encoded><![CDATA[<p>Found an excellent <a title="Smashing Magazine: 10 useful RSS hacks for Wordpress" href="http://www.smashingmagazine.com/2008/12/02/10-useful-rss-hacks-for-wordpress/" target="_blank">post at Smashing Magazine</a> about setting up Catagory specific feeds, I especially like two points in the post.  For those who are interested primarily in reading only the stuff on my Blog that is Nortel related for example, this technique is pretty cool.  I&#8217;ll have to incorporate this in to my theme.</p>
<blockquote><p>8. Use Category-Specific RSS Feeds</p>
<p>The problem. Many blogs talk about a lot of different topics: design, programming, blogging tips, etc. Have you ever come across a blog in which you have enjoyed only one category of posts? If so, you should definitely consider offering one feed per category to your own readers.</p>
<p>The solution. Let’s say you’d like to be able to subscribe only to TheGridSystem’s tools section. The category URL is:</p>
<p>http://www.thegridsystem.org/categories/tools/To get an RSS feed for this category, you simply have to add /feed to the end of the URL:</p>
<p>http://www.thegridsystem.org/categories/tools/feedPretty easy, isn’t it? But pretty useful, too, in my opinion.</p>
<p>9. List RSS Feeds by Category</p>
<p>The problem. If you like the previous hack, you will probably also want to be able to display the names of all your category feeds in a list to your readers.</p>
<p>The solution.</p>
<p>Edit any of your theme files, where you want to list your categories and their accompanying feeds.<br />
Paste the following code:<br />
<!--p wp_list_categories('feed_image=http://www.myblog.com/image.gif&#038;feed=XML Feed&#038;optioncount=1&#038;children=0');-->Save the file. You categories will now be displayed, along with their RSS feeds!<br />
Code explanation. This hack uses only the good old wp_list_categories() function, with two parameters. The first is feed_image, which allows us to specify the URL to be displayed as a feed image. The second parameter is feed, which is used to specify the feed format.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.datarave.net/zfh/2008/12/04/rss-tricks-with-wordpress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Project Diary: Xtools (9)</title>
		<link>http://www.datarave.net/zfh/2008/11/23/project-diary-xtools-9/</link>
		<comments>http://www.datarave.net/zfh/2008/11/23/project-diary-xtools-9/#comments</comments>
		<pubDate>Sun, 23 Nov 2008 14:00:08 +0000</pubDate>
		<dc:creator>John Williams</dc:creator>
				<category><![CDATA[Nortel]]></category>
		<category><![CDATA[WebDev]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://www.datarave.net/zfh/?p=750</guid>
		<description><![CDATA[I&#8217;ve not made any updates lately because I&#8217;ve been learning AJAX coding techniques and I&#8217;ve been working instead on the hotfix parser.  AJAX has a lot debate on what exactly it is (which is weird), but the definition used in the book that I&#8217;m reading (and on Wikipedia) is that it is essentially a client-side [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve not made any updates lately because I&#8217;ve been learning <a title="Wikipedia: AJAX" href="http://en.wikipedia.org/wiki/AJAX" target="_blank">AJAX</a> coding techniques and I&#8217;ve been working instead on the hotfix parser.  AJAX has a lot debate on what exactly it is (which is weird), but the definition used in the book that I&#8217;m reading (and on Wikipedia) is that it is essentially a client-side programming technique that permits the website designer to asynchronously load content from the website to the client browser.</p>
<p>This means more streamlined content display experiences than you would normally experience from a traditional webpage.  An example would be Yahoo or Google Maps.  Both use AJAX techniques to load map data without refreshing the entire page.</p>
<p>The purpose of this education is the realization that I load a significant amount of page overhead (a wrapper, if you will) around the DNB data and that I could improve the load speed if I could convert the page to an AJAX enabled app (allowing me to load content in to the browser and then &#8220;page&#8221; between it without refreshing the page.)</p>
<p>I figure that approximately 15-20% of my page is overhead (CSS stylesheet, template information, navigation, images, etc.)  Cutting that data transfer out of each page change would be a pretty dramatic increase in my page efficiency (and make it more user friendly).</p>
<p>Granted, AJAX breaks the traditional BACK BUTTON functionality that we come to expect from our web browsers, but I think that&#8217;s a small price to pay.</p>
<p>Additionally, the hotfix parser has become much more appealing to me as a next project than the ESN parser.  I&#8217;ve been doing a lot of Microsoft hotfix patch checking on a few customer&#8217;s Contact Center and CallPilot servers at work, and this effort would have been dramatically more efficient if I had this parser.</p>
<p>I&#8217;ve completed the client-side VBScript that will capture all of the data that I require.  I&#8217;ve determined that Windows Installer is required to collect information about what programs are installed on a Server (not critical, but useful information) and even determined how to gracefully handle Windows Installer being missing (thus, preventing the collection of the Programs Installed info.)</p>
<p>Next is to start building the database tables and work on the server-side parser.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.datarave.net/zfh/2008/11/23/project-diary-xtools-9/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Project Diary: Xtools (8)</title>
		<link>http://www.datarave.net/zfh/2008/10/23/project-diary-xtools-8/</link>
		<comments>http://www.datarave.net/zfh/2008/10/23/project-diary-xtools-8/#comments</comments>
		<pubDate>Fri, 24 Oct 2008 01:00:29 +0000</pubDate>
		<dc:creator>John Williams</dc:creator>
				<category><![CDATA[Nortel]]></category>
		<category><![CDATA[WebDev]]></category>

		<guid isPermaLink="false">http://www.datarave.net/zfh/?p=723</guid>
		<description><![CDATA[Brought the 0.10.2 revision over to the production site as it fixes a number of critical bugs.  I&#8217;m still working on 0.11.0, which begins the implementation of the ESN parser.  All database tables have been generated and the upgrade code has been written in to the core plugin code so that when it&#8217;s moved over [...]]]></description>
			<content:encoded><![CDATA[<p>Brought the 0.10.2 revision over to the production site as it fixes a number of critical bugs.  I&#8217;m still working on 0.11.0, which begins the implementation of the ESN parser.  All database tables have been generated and the upgrade code has been written in to the core plugin code so that when it&#8217;s moved over to the production site, it&#8217;ll be automatically upgraded to the latest/greatest.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.datarave.net/zfh/2008/10/23/project-diary-xtools-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Project Diary: Xtools (7)</title>
		<link>http://www.datarave.net/zfh/2008/10/19/project-diary-xtools-7/</link>
		<comments>http://www.datarave.net/zfh/2008/10/19/project-diary-xtools-7/#comments</comments>
		<pubDate>Sun, 19 Oct 2008 22:12:34 +0000</pubDate>
		<dc:creator>John Williams</dc:creator>
				<category><![CDATA[Nortel]]></category>
		<category><![CDATA[WebDev]]></category>

		<guid isPermaLink="false">http://www.datarave.net/zfh/?p=702</guid>
		<description><![CDATA[
Revised all Xtools templates to continue to output the content of the page from WordPress (for notes/comments/documentation links/etc).
Documented known bugs in a publically accessible format (in preparation for adding more beta testers)

DNB Parsing, Best Practices
DNB Types [static list]


Documented best practices in a publically accessible format (same as above)
Continued work on ESN parser &#38; templates

]]></description>
			<content:encoded><![CDATA[<ol>
<li>Revised all Xtools templates to continue to output the content of the page from WordPress (for notes/comments/documentation links/etc).</li>
<li>Documented known bugs in a publically accessible format (in preparation for adding more beta testers)
<ol>
<li><a href="http://www.datarave.net/zfh/xtools/help/dnb/">DNB Parsing, Best Practices</a></li>
<li><a title="DNB Types, a static list" href="http://www.datarave.net/zfh/xtools/help/dn-types/" target="_blank">DNB Types</a> [static list]</li>
</ol>
</li>
<li>Documented best practices in a publically accessible format (same as above)</li>
<li>Continued work on ESN parser &amp; templates</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.datarave.net/zfh/2008/10/19/project-diary-xtools-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Old Verio Hosting</title>
		<link>http://www.datarave.net/zfh/2008/10/19/old-verio-hosting/</link>
		<comments>http://www.datarave.net/zfh/2008/10/19/old-verio-hosting/#comments</comments>
		<pubDate>Sun, 19 Oct 2008 14:00:15 +0000</pubDate>
		<dc:creator>John Williams</dc:creator>
				<category><![CDATA[WebDev]]></category>

		<guid isPermaLink="false">http://www.datarave.net/zfh/?p=682</guid>
		<description><![CDATA[I just discovered this week that despite the fact that I discontinued my hosting through Verio, they continued to host my content via the IP address assigned to my old website.  In fact, my old username/password still gave me access to the FTP account.
I had thought that they would wipe all of the content [...]]]></description>
			<content:encoded><![CDATA[<p>I just discovered this week that despite the fact that I discontinued my hosting through Verio, they continued to host my content via the IP address assigned to my old website.  In fact, my old username/password still gave me access to the FTP account.</p>
<p>I had thought that they would wipe all of the content when I stopped paying them&#8230;  but apparently not.  So I went and wiped the content (it was mine after all) off the old Verio server</p>
]]></content:encoded>
			<wfw:commentRss>http://www.datarave.net/zfh/2008/10/19/old-verio-hosting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
