<?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>JPennington.net&#187; Tutorials</title>
	<atom:link href="http://www.jpennington.net/category/tutorials/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jpennington.net</link>
	<description>The online ramblings of a web programmer</description>
	<lastBuildDate>Mon, 15 Feb 2010 01:32:16 +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 Calendar Instructions</title>
		<link>http://www.jpennington.net/2009/07/11/php-calendar-instructions/</link>
		<comments>http://www.jpennington.net/2009/07/11/php-calendar-instructions/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 12:44:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php calendar]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.jpennington.net/?p=194</guid>
		<description><![CDATA[You can download the class here.
The PHP Calendar is a class that generates a calendar for a given month and year.  Best of all, it is extremely easy to use and can easily be extended to do whatever you want.

Create and Display The Calendar
Creating and displaying the calendar is very easy and can be [...]]]></description>
			<content:encoded><![CDATA[<p>You can download the class <a href="/resources/php/php_calendar.zip">here</a>.</p>
<p>The PHP Calendar is a class that generates a calendar for a given month and year.  Best of all, it is extremely easy to use and can easily be extended to do whatever you want.<br />
<span id="more-194"></span></p>
<h2>Create and Display The Calendar</h2>
<p>Creating and displaying the calendar is very easy and can be done with only two lines of code.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$calendar</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Calendar<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2009</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$calendar</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">generate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>The constructor takes in two variables.  The first one for the month, and the second one for the year.  The generate() method generates the calendar in an HTML table.</p>
<h2>Other Functionality</h2>
<p>There are a number of functions in the class that modify the way the calendar renders.</p>
<p>shortMonthTags() &#8211; Show the month as three letter abbreviation instead of the entire month name</p>
<p>longMonthTags() &#8211; Show the full month name (default functionality)</p>
<p>longDayTags() &#8211; Show the days with their full name</p>
<p>shortDayTags() &#8211; Show the tags with their single character abbreviations (default functionality)</p>
<p>addDayLink($day, $url) &#8211; Makes the $day number link to $url</p>
<p>getNextMonthYear() &#8211; Gets the next month relative to the current calendar month and year</p>
<p>getPreviousMonthYear() &#8211; Gets the previous month relative to the current calendar month and year</p>
<p>getCurrentMonthYear() &#8211; Gets the current month and year (The real time, not the month and year of the current calendar)</p>
<p>setNextMonthContent($string) &#8211; Sets the content of the box to the right of the Month and Year.  Generally this will be a link to the next month.</p>
<p>setPreviousMonthContent($string) &#8211; Sets the content of the box to the left of the Month and Year.  Generally this will be a link to the previous month.</p>
<p>set($var, $val) &#8211; Universal set function.  Set any $var with the value $val.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jpennington.net/2009/07/11/php-calendar-instructions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Authorize.net Instructions</title>
		<link>http://www.jpennington.net/2009/07/11/authorizenet-instructions/</link>
		<comments>http://www.jpennington.net/2009/07/11/authorizenet-instructions/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 12:39:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[authorize.net]]></category>
		<category><![CDATA[authorizenet]]></category>
		<category><![CDATA[instructions]]></category>
		<category><![CDATA[integration]]></category>

		<guid isPermaLink="false">http://www.jpennington.net/?p=191</guid>
		<description><![CDATA[You can download the Authorize.net class here.
The Authorize.net Class is used to interact with Authorize.net in order to authorize and capture funds off of a credit card.  In order to use the Authorize.net service you have to sign up for an account on at Authorize.net.  In order to use this class correctly you [...]]]></description>
			<content:encoded><![CDATA[<p>You can download the Authorize.net class <a href="/resources/php/authorizenet.zip">here</a>.</p>
<p>The Authorize.net Class is used to interact with Authorize.net in order to authorize and capture funds off of a credit card.  In order to use the Authorize.net service you have to sign up for an account on at <a href="http://www.authorize.net" target="_blank">Authorize.net</a>.  In order to use this class correctly you have to have the API Login and Transaction Key for your account.</p>
<p><span id="more-191"></span><br />
The first thing you have to do to use the class is to set your API Login and Transaction Key into the constant values in the class.  You can find these values on lines 23 and 24 of the class.  Line 25 is a Boolean value weather you want to use the live server or the development system.  By default it is set to the development environment.  To move to the live environment simply change the value from false to true.</p>
<h2>Create New Authorization</h2>
<p>Creating an authorization requests the right to take funds from a credit card at a later point.  This is ideal for e-Commerce applications as you are not supposed to take money from the customer until you know you are going to ship the order.  Authorizations are generally good for 30 days.  After 30 days you can no longer capture funds based on the authorization.  In order to create the authorization you call the authorize method of the class with the following paramaters:</p>
<p>$authorizenet = new AuthorizeNetAIM();</p>
<p>$authorizenet-&gt;authorize($amount, $cc_number, $cvv, $expire, $first_name, $last_name, $address, $city, $state, $zip, $country);</p>
<p>Variable Description</p>
<p>$amount (required):  The dollar amount you want to authorize</p>
<p>$cc_number (required): The credit card number you want to authorize funds against</p>
<p>$cvv (required): The Credit Card Verification Number that is found on the back of most credit cards.  This number is usually 3 digits, but is 4 digits for American Express</p>
<p>$expire (required): The expiration date of the credit card.  For best results it should be in the format of MMYY or MMYYYY.</p>
<p>$first_name (required): The first name of the card holder</p>
<p>$last_name (required): The last name of the card holder</p>
<p>$address (optional): The street address of the card holder</p>
<p>$city (optional): The city of the card holder</p>
<p>$state (optional): State abbreviation of the card holder</p>
<p>$zip (optional): The zip code of the card holder</p>
<p>$country (optional): The country of the card holder</p>
<p>It should be noted that while many of these paramaters are optional, based on your Authorize.net account it could effect the outcome of your authorization.</p>
<h2>Create Authorization and Capture All At Once</h2>
<p>This is generally called &#8220;Auth Capture&#8221; as it creates an authorization and captures the funds immediately.  This is best suited for situations where the customer receives their good or services right up front (a brick and morter store, or a consulting services).  It works exactly the same as a regular authorization with regards to the paramaters it takes in.  Here is the syntax:</p>
<p>$authorizenet = new AuthorizeNetAIM();</p>
<p>$authorizenet-&gt;authorize_capture($amount, $cc_number, $cvv, $expire, $first_name, $last_name, $address, $city, $state, $zip, $country);</p>
<p>(See above for description of parameters and if they are required or optional)</p>
<h2>Capture Funds</h2>
<p>Capture funds is used to actually take money from a credit card based on a previous authorization.  Here is the syntax:</p>
<p>$authorizenet = new AuthorizeNetAIM();</p>
<p>$authorizenet-&gt;capture($amount, $transaction_id, $authorization_number, $cc_number, $expire);</p>
<p>Variable Description</p>
<p>$amount (required): The amount you want to capture.  This value cannot be higher than the amount you requested from the initial authorization</p>
<p>$transaction_id (required): The transaction ID that Authorize.net gave you when you created your initial authorization</p>
<p>$authorization_number (required): The authorization number that Authorize.net gave you when you created your initial authorization</p>
<p>$cc_number (required): The credit card number that you created the initial authorization with</p>
<p>$expire (required): The expiration date of the credit card</p>
<h2>Issue Credit</h2>
<p>Credit is used to credit funds back onto a credit card.  You must have an open authorization on the card to be able to credit funds back to a credit card.  You call the function with the following syntax:</p>
<p>$authorizenet = new AuthorizeNetAIM();</p>
<p>$authorizenet-&gt;credit($amount, $cc_number, $cc_expire, $trans_id)</p>
<p>Variable Description</p>
<p>$amount (required): The amount of money you want to credit back to the account</p>
<p>$cc_number (required): The credit card number</p>
<p>$cc_expire (required): The credit card expiration number</p>
<p>$trans_id (required): The transaction ID from the initial authorization</p>
<p>Void Authorization</p>
<p>Void authorization is used when you no longer want to interact with Authorize.net using a specific authorization.  This would be used if a customer cancels their order.  To void an authorization use the following syntax:</p>
<p>$authorizenet = new AuthorizeNetAIM();</p>
<p>$authorizenet-&gt;void_authorization($trans_id);</p>
<p>Variable Description</p>
<p>$trans_id (required): The transaction ID from the original authorization</p>
<p>Function Response</p>
<p>Each one of the methods of this class return a specifically designed array that will give you all the information for the results.  When running the functons simply do a print_r on the result to see the results.  Here are the results that come back from Authorize.net</p>
<p>response_code, response_subcode, &#8216;response_reason_code, response_reason_text, authorization_code, avs_response, transaction_id, invoice_number, description, amount, method, transaction_type, customer_id, first_name, last_name, company</p>
<p>If you have any questions please post a comment or contact me.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jpennington.net/2009/07/11/authorizenet-instructions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax with jQuery</title>
		<link>http://www.jpennington.net/2009/01/31/ajax-with-jquery/</link>
		<comments>http://www.jpennington.net/2009/01/31/ajax-with-jquery/#comments</comments>
		<pubDate>Sat, 31 Jan 2009 19:00:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[instructions]]></category>
		<category><![CDATA[jquery ajax]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.jpennington.net/?p=139</guid>
		<description><![CDATA[Here is the code we are using for today&#8217;s discussion on using jQuery to add Ajax to a website.  You can download a copy of everything required to do this project here.

Today&#8217;s example utilizes the PHP Calendar object I recently released along with a Javascript library called jQuery.  We will generate a calendar [...]]]></description>
			<content:encoded><![CDATA[<p>Here is the code we are using for today&#8217;s discussion on using jQuery to add Ajax to a website.  You can download a copy of everything required to do this project <a href="http://www.jpennington.net/resources/php/ajax_calendar.zip">here</a>.<br />
<span id="more-139"></span><br />
Today&#8217;s example utilizes the PHP Calendar object I recently released along with a Javascript library called jQuery.  We will generate a calendar that will be able to switch month and years using Ajax.</p>
<h2>What is Ajax?</h2>
<p>Ajax is a way to call back to the webserver without refreshing the entire page.  This is done through Javascript.  There is a very lengthy discussion I could have with you about this, but there are better <a href="http://en.wikipedia.org/wiki/AJAX">resources</a> out there about how it actually works.  All you really need to know is that you can use it to call back to the webserver to do whatever you want to.  It can be used to add an item to a shopping cart or update a certain part of the page to streamline a process.</p>
<h2>On To The Code</h2>
<p>I am going to assume you know how the calendar object works.  If not please read the PHP Calendar Instructions Page.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?</span>
<span style="color: #666666; font-style: italic;">// Import the PHP Calendar Object</span>
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'object.calendar.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'action'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'action'</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'ajax_generate'</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$month</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'month'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$year</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'year'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$calendar</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Calendar<span style="color: #009900;">&#40;</span><span style="color: #000088;">$month</span><span style="color: #339933;">,</span> <span style="color: #000088;">$year</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$next_month</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$calendar</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getNextMonthYear</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$previous_month</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$calendar</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getPreviousMonthYear</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$calendar</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setNextMonthContent</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'&lt;a href=&quot;javascript:ajaxChangeCalendar('</span><span style="color: #339933;">.</span><span style="color: #000088;">$next_month</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'month'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">', '</span><span style="color: #339933;">.</span><span style="color: #000088;">$next_month</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'year'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">')&quot;&gt; &gt; &lt;/a&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$calendar</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setPreviousMonthContent</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'&lt;a href=&quot;javascript:ajaxChangeCalendar('</span><span style="color: #339933;">.</span><span style="color: #000088;">$previous_month</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'month'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">', '</span><span style="color: #339933;">.</span><span style="color: #000088;">$previous_month</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'year'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">')&quot;&gt; &lt; &lt;/a&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$calendar</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">generate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&lt;html&gt;
&lt;head&gt;
	&lt;script type=&quot;text/javascript&quot; src=&quot;jquery.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&nbsp;
&lt;body&gt;
&nbsp;
	&lt;div id=&quot;calendar_group&quot;&gt;
		<span style="color: #000000; font-weight: bold;">&lt;?</span>
		<span style="color: #000088;">$month</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$year</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2009</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$calendar</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Calendar<span style="color: #009900;">&#40;</span><span style="color: #000088;">$month</span><span style="color: #339933;">,</span> <span style="color: #000088;">$year</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$next_month</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$calendar</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getNextMonthYear</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$previous_month</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$calendar</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getPreviousMonthYear</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$calendar</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setNextMonthContent</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'&lt;a href=&quot;javascript:ajaxChangeCalendar('</span><span style="color: #339933;">.</span><span style="color: #000088;">$next_month</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'month'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">', '</span><span style="color: #339933;">.</span><span style="color: #000088;">$next_month</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'year'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">')&quot;&gt; &gt; &lt;/a&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$calendar</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setPreviousMonthContent</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'&lt;a href=&quot;javascript:ajaxChangeCalendar('</span><span style="color: #339933;">.</span><span style="color: #000088;">$previous_month</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'month'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">', '</span><span style="color: #339933;">.</span><span style="color: #000088;">$previous_month</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'year'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">')&quot;&gt; &lt; &lt;/a&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$calendar</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">generate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;/div&gt;
	<span style="color: #000000; font-weight: bold;">&lt;?</span>
	<span style="color: #000088;">$current_month</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$calendar</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getCurrentMonthYear</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;a href=&quot;javascript:ajaxChangeCalendar(<span style="color: #000000; font-weight: bold;">&lt;?=</span><span style="color: #000088;">$current_month</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'month'</span><span style="color: #009900;">&#93;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>, <span style="color: #000000; font-weight: bold;">&lt;?=</span><span style="color: #000088;">$current_month</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'year'</span><span style="color: #009900;">&#93;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>)&quot;&gt;Current Month&lt;/a&gt;
	&lt;br/&gt;&lt;br/&gt;
	&lt;select name=&quot;move_to_month&quot; id=&quot;move_to_month&quot;&gt;
		<span style="color: #000000; font-weight: bold;">&lt;?</span>
		<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">&lt;=</span><span style="color: #cc66cc;">12</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;option value=&quot;<span style="color: #000000; font-weight: bold;">&lt;?=</span><span style="color: #000088;">$i</span><span style="color: #000000; font-weight: bold;">?&gt;</span>&quot;&gt;<span style="color: #000000; font-weight: bold;">&lt;?=</span><span style="color: #000088;">$i</span><span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/option&gt;<span style="color: #000000; font-weight: bold;">&lt;?</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;/select&gt;
	&lt;select name=&quot;move_to_year&quot; id=&quot;move_to_year&quot;&gt;
		<span style="color: #000000; font-weight: bold;">&lt;?</span>
		<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">1900</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">&lt;=</span><span style="color: #cc66cc;">2020</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;option value=&quot;<span style="color: #000000; font-weight: bold;">&lt;?=</span><span style="color: #000088;">$i</span><span style="color: #000000; font-weight: bold;">?&gt;</span>&quot;&gt;<span style="color: #000000; font-weight: bold;">&lt;?=</span><span style="color: #000088;">$i</span><span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/option&gt;<span style="color: #000000; font-weight: bold;">&lt;?</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;/select&gt;
	&lt;input type=&quot;button&quot; value=&quot;Go To&quot; onclick=&quot;ajaxChangeCalendar( document.getElementById('move_to_month').value, document.getElementById('move_to_year').value )&quot; /&gt;
	&lt;script type=&quot;text/javascript&quot;&gt;
		function ajaxChangeCalendar( month, year ) {
			var redraw = $.ajax({
							type: &quot;POST&quot;,
							async: false,
							url: &quot;ajax_calendar.php&quot;,
							data: &quot;action=ajax_generate&amp;month=&quot; + month + &quot;&amp;year=&quot;+year
						}).responseText;
			$(&quot;#calendar_group&quot;).html(redraw);
		}
	&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre></td></tr></table></div>

<p>The first thing I am going to bring your attention to is including the jQuery library on line 22.  So as you can see we are generating a calendar on lines 29-36.  The Next and Previous Month Content.  What we are going to put in there is a link that calls a Javascript function called ajaxChangeCalendar.You will also notice that we call this function on lines 42 and 59.  Line 42 moves the calendar to the current month and year, while the button on line 59 uses the values from the dropdown menu to determine where to go.</p>
<p>Now for the meat and potatoes of Ajax, the ajaxChangeCalendar function.  You will notice that we are utilizing jQuery&#8217;s Ajax functionality.  We set the type to Post (It could easily be Get if you wanted to), async is set to false, set the URL and the data that should be put into POST.  The $.ajax will do all the work for you.  It reaches out and takes the text it received and puts it into the variable redraw.</p>
<p>We then take that text and use replace the HTML in the calendar_group div with the value of redraw.</p>
<p>That seems simple right?  It really is.  Now let&#8217;s talk about how we get the data that goes into redraw.  This can be found on lines 4-18.  You will notice that it looks exactly the same as the code that generated the calendar initially, except for the fact that the month and possibly year have changed.  What is happening is that you are outputting the HTML code that will replace the HTML in the calendar_group div.</p>
<p>Also, notice the exit() being called on line 15.  We do not want any more HTML to output after the table.  Otherwise you will have the entire page put into the value of redraw and that will in turn redraw the entire page.  That would defeat the purpose of Ajax in the first place.</p>
<p>Anyways, I hope this helps to explain how you can use jQuery to put Ajax on your site.  This was a very simple example but you can do a whole lot more with Ajax if you put your mind to it.  If you have any questions post a comment or submit it in the contact form.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jpennington.net/2009/01/31/ajax-with-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Authorize.net Instructions Loaded</title>
		<link>http://www.jpennington.net/2009/01/28/authorizenet-instructions-loaded/</link>
		<comments>http://www.jpennington.net/2009/01/28/authorizenet-instructions-loaded/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 11:50:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.jpennington.net/?p=130</guid>
		<description><![CDATA[I have loaded the instructions for how to use the Authorize.net class.  You can access it on the right side of the site under Pages.  If anyone has questions about it make sure you ask them through the fancy new contact form that is also on the right.  Sorry about the CAPTCHA, but I just [...]]]></description>
			<content:encoded><![CDATA[<p>I have loaded the instructions for how to use the Authorize.net class.  You can access it on the right side of the site under Pages.  If anyone has questions about it make sure you ask them through the fancy new contact form that is also on the right.  Sorry about the CAPTCHA, but I just don&#8217;t want to try and shovel through the spam.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jpennington.net/2009/01/28/authorizenet-instructions-loaded/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ternary Operator &#8211; Your Best Friend</title>
		<link>http://www.jpennington.net/2009/01/23/ternary-operator-your-best-friend/</link>
		<comments>http://www.jpennington.net/2009/01/23/ternary-operator-your-best-friend/#comments</comments>
		<pubDate>Sat, 24 Jan 2009 02:37:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[? operator]]></category>
		<category><![CDATA[inline if statement]]></category>
		<category><![CDATA[ternary]]></category>
		<category><![CDATA[ternary operatior]]></category>

		<guid isPermaLink="false">http://www.jpennington.net/?p=91</guid>
		<description><![CDATA[If you have never used the Ternary Operator, or ? operator, your life is about to change.  The ternary operator is used as a shorthand for if .. else structures that can really clean up your code.

Take this for example:
1.  if( $use_live_server ) {
2.    $url = "http://www.thelivesite.com"
3.  } else {
4.  [...]]]></description>
			<content:encoded><![CDATA[<p>If you have never used the Ternary Operator, or ? operator, your life is about to change.  The ternary operator is used as a shorthand for if .. else structures that can really clean up your code.<br />
<span id="more-91"></span><br />
Take this for example:</p>
<pre>1.  if( $use_live_server ) {
2.    $url = "http://www.thelivesite.com"
3.  } else {
4.    $url = "http://www.thedevsite.com";
5.  }</pre>
<p>This block of code sets which URL we want to connect to based on if a variable called $use_live_server.  While the block of code is perfectly valid, there is a much better way to do the exact same thing in a single line of code.</p>
<pre><span style="font-size: x-small;">1.  $url = $use_live_server ? "http://www.thelivesite.com" : "http://www.thedevsite.com";</span></pre>
<p>That one line of code does the exact same thing and once you understand how this works.  Here is how the ternary operator works:</p>
<pre>$variable = $expression_to_evaulate ? true : false</pre>
<p>You do not necessaryly have to have a variable that is true or false.  You can do any expression you need to.</p>
<p>So now that you know about the ternary operator, you can start using it and it will improve the quality of your code.  In the Authorize.net class you will notice this being used on line 41:</p>
<pre><span style="font-size: x-small;">$this-&gt;transact_url = AUTH_NET_USE_LIVE_API ? "https://secure.authorize.net/gateway/transact.dll" : "https://test.authorize.net/gateway/transact.dll";</span></pre>
<p>This line is setting the URL to connect to for the object based on the constant AUTH_NET_USE_LIVE_API.</p>
<p>If you have any questions about this go ahead and post a comment or contact me.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jpennington.net/2009/01/23/ternary-operator-your-best-friend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cURL to Connect To Another System</title>
		<link>http://www.jpennington.net/2009/01/23/curl-to-connect-to-another-system/</link>
		<comments>http://www.jpennington.net/2009/01/23/curl-to-connect-to-another-system/#comments</comments>
		<pubDate>Sat, 24 Jan 2009 02:34:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[connection]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[integrating]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.jpennington.net/?p=96</guid>
		<description><![CDATA[cURL is a very useful tool used to progmatically connect and interact with other systems to do various tasks like download a Web Page or RSS feed.  It is also used to send information to another computer and get a response.

1. $ch = curl_init($url);
2. curl_setopt($ch, CURLOPT_HEADER, 0);
3. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
4. curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
5. $result = [...]]]></description>
			<content:encoded><![CDATA[<p>cURL is a very useful tool used to progmatically connect and interact with other systems to do various tasks like download a Web Page or RSS feed.  It is also used to send information to another computer and get a response.<br />
<span id="more-96"></span></p>
<pre>1. $ch = curl_init($url);
2. curl_setopt($ch, CURLOPT_HEADER, 0);
3. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
4. curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
5. $result = curl_exec ($ch);</pre>
<p>These 5 lines of code do a lot.  In line 1 you begin creating your transaction by calling curl_init() and passing the URL you want to connect to (in this case we have a variable called $url).</p>
<p>Lines 2-4 set different options for the transaction.  The CURLOPT_HEADER option is set to zero to signify we do not want the header information in the response. CURLOPT_RETURNTRANSFER tells cURL to assign the data we receive to a variable rather than simply output it to the screen.  CURLOPT_POSTFIELDS sets what data we want to send in the header of our request. This is a very important option when interacting with other systems as this is generally where you will put your XML or other header data that is required by the system you are connecting with.</p>
<p>Line 5 actually executes the request.  It will reach out to the $url, with $fields in the POST areas of varaibles and putting the data we received into the variable $result.</p>
<p>You can now process the data in whatever way you need to for your application.  In the Authorize.net class the data gets passed to the parse_response() function to format the data in such a way that we can easily work with it.</p>
<p>If you have any questions about cURL post a comment and I will answer to the best of my ability.  To read more about cURL you can refer to the PHP documentation <a href="http://us3.php.net/manual/en/book.curl.php" target="_blank">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jpennington.net/2009/01/23/curl-to-connect-to-another-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upcoming Series on Authorize.net</title>
		<link>http://www.jpennington.net/2009/01/23/upcoming-series-on-authorize-net/</link>
		<comments>http://www.jpennington.net/2009/01/23/upcoming-series-on-authorize-net/#comments</comments>
		<pubDate>Fri, 23 Jan 2009 22:24:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[authorize.net]]></category>
		<category><![CDATA[authorizenet]]></category>

		<guid isPermaLink="false">http://www.jpennington.net/?p=82</guid>
		<description><![CDATA[I am preparing a number of posts built around a class I created that interacts with Authorize.net.  I will explain more about it later but you can download it now here.
]]></description>
			<content:encoded><![CDATA[<p>I am preparing a number of posts built around a class I created that interacts with Authorize.net.  I will explain more about it later but you can download it now <a href="/resources/php/authorizenet.zip">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jpennington.net/2009/01/23/upcoming-series-on-authorize-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Create Your Own Virtual Development Server</title>
		<link>http://www.jpennington.net/2009/01/18/create-your-own-virtual-development-server/</link>
		<comments>http://www.jpennington.net/2009/01/18/create-your-own-virtual-development-server/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 14:59:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[development server]]></category>
		<category><![CDATA[virtual server]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[vmware server]]></category>

		<guid isPermaLink="false">http://www.jpennington.net/?p=27</guid>
		<description><![CDATA[Every web developer needs a good environment to develop their applications.  The problem is that not everyone has the money or desire to have an entire computer dedicated to this task.  Luckily with computer power increasing and the cost decreasing, it is very easy to setup an dedicated Linux development environment for free.

Getting Started
The first [...]]]></description>
			<content:encoded><![CDATA[<p>Every web developer needs a good environment to develop their applications.  The problem is that not everyone has the money or desire to have an entire computer dedicated to this task.  Luckily with computer power increasing and the cost decreasing, it is very easy to setup an dedicated Linux development environment for free.<br />
<span id="more-27"></span><br />
<strong>Getting Started</strong></p>
<p>The first thing you need is to do is choose an environment to create a virtual machine.  For this tutorial I am going to use VMware Server.  Generally I try to use open source software, but VMware is simply the best virtulization software out there.  VMware Server can be downloaded <a href="http://www.vmware.com/products/server/" target="_blank">here</a>.  Please note that I am going to use version 1.x, not the newer 2.x.  I find that the 2.x version takes up more resources and does things a little differently than I like.  You can do the 2.x if you like.  It is just my preference.</p>
<p>You now need to determine what OS you want to install.  You can install any OS you want, but this tutorial will cover Ubuntu server.  By default it comes with no GUI which is great since it will take very little system resources.  You can download Ubuntu <a href="http://www.ubuntu.com/getubuntu/download" target="_blank">here</a>.</p>
<p><strong>Creating The Virtual Machine and Installing Linux</strong></p>
<p>Now that you have VMware Server installed and you have your ISO image, you are now ready to create a virtual machine.</p>
<p>Click &#8220;New Virtual Machine&#8221; and follow the directions in the wizard.</p>
<p><img class="alignnone size-full wp-image-30" title="vmware1" src="http://www.jpennington.net/wp-content/uploads/2009/01/vmware11.png" alt="vmware1" width="426" height="306" /></p>
<p>Click New Virtual Machine</p>
<p><img class="alignnone size-full wp-image-31" title="vmware2" src="http://www.jpennington.net/wp-content/uploads/2009/01/vmware2.png" alt="vmware2" width="441" height="388" /></p>
<p>Click Next</p>
<p><img class="alignnone size-full wp-image-32" title="vmware3" src="http://www.jpennington.net/wp-content/uploads/2009/01/vmware3.png" alt="vmware3" width="441" height="388" /></p>
<p>Typical will do for about 99% of all situations.</p>
<p><img class="alignnone size-full wp-image-33" title="vmware4" src="http://www.jpennington.net/wp-content/uploads/2009/01/vmware4.png" alt="vmware4" width="441" height="388" /></p>
<p>This tutorial is going to go through installing Ubuntu Linux so make sure you set the correct OS.</p>
<p><img class="alignnone size-full wp-image-34" title="vmware5" src="http://www.jpennington.net/wp-content/uploads/2009/01/vmware5.png" alt="vmware5" width="441" height="388" /></p>
<p>Now we need to determine where we are going to put the VM.  You can put this where ever you want.</p>
<p><img class="alignnone size-full wp-image-35" title="vmware6" src="http://www.jpennington.net/wp-content/uploads/2009/01/vmware6.png" alt="vmware6" width="441" height="388" /></p>
<p>I always do bridged networking.  It makes things easier for dealing with IP addresses and the like.</p>
<p><img class="alignnone size-full wp-image-36" title="vmware7" src="http://www.jpennington.net/wp-content/uploads/2009/01/vmware7.png" alt="vmware7" width="441" height="388" /></p>
<p>Now determine the size of the VM.  You will want to think ahead on this one as increasing the size of a VM is a pain.  I also unclick the Allocate all disk space now.  They say that it increases performance if it is allocated up front.  I have not had any problems with performance when not allocating all the space.  Finally click finish.</p>
<p><img class="alignnone size-full wp-image-37" title="vmware8" src="http://www.jpennington.net/wp-content/uploads/2009/01/vmware8.png" alt="vmware8" width="511" height="368" /></p>
<p>Now you have a virtual machine created.  Now you can run this with the 512 MB of RAM but that is taking into account that a GUI is going to be running full time.  For install I usually like to cut that down to 256 MB to help the install go faster.  After install you can cut it down depending on what you are doing.  For PHP you can easily take it down to 64 MB and Ruby on Rails works better with at least 128 MB.  To adjust the RAM simply double click on the RAM and make the adjustment.</p>
<p><img class="alignnone size-full wp-image-38" title="vmware9" src="http://www.jpennington.net/wp-content/uploads/2009/01/vmware9.png" alt="vmware9" width="314" height="458" /></p>
<p>You can leave this value as is or take it down to 256MB.  It is up to you.</p>
<p><img class="alignnone size-full wp-image-39" title="vmware10" src="http://www.jpennington.net/wp-content/uploads/2009/01/vmware10.png" alt="vmware10" width="314" height="421" /></p>
<p>Now you have to mount the iso you downloaded from the internet.  Just double click the CD-ROM icon in the main window and click Use ISO image and browse to the file.</p>
<p>Now go ahead and hit the green play button and start up your virtual machine.  I am not going to go into deep details into the install of Ubuntu.  For the most part you will just hit enter and follow the on screen prompts.  Just make sure at the end of the install you have installed the LAMP server and the OpenSSH server.  See you at the end!</p>
<p><strong>Assign A Static IP Address To The Server</strong></p>
<p>Assigning a static IP address to your server makes life a lot easier.  You always know where to go in your web browser to access it.  To do that you have to modify your network interfaces file (I do not know if that is its real name, but that&#8217;s what I call it).  The smart thing to do is create a backup of your network interfaces file.  To do that you type the following command:</p>
<p>cp /etc/network/interfaces ~</p>
<p>That will create a copy of the file in your home directory.  To restore the file you type:</p>
<p>sudo cp ~/interfaces /etc/network/interfaces</p>
<p>To edit the file you type the following command:</p>
<p>sudo nano /etc/network/interfaces</p>
<p>Nano is a very simple text editor.  You will have to modify this file to fit your network.  This can be tricky to figure out.  I will gie you the specs for my network and hopefully they will works for you.</p>
<p>Here is what is in my file.</p>
<p>auto lo<br />
iface lo inet loopback</p>
<p>auto eth0<br />
iface eth0 inet static<br />
address 192.168.1.101<br />
netmask 255.255.255.0<br />
network 192.168.0.0<br />
broadcast 192.168.1.255<br />
gateway 192.168.1.1</p>
<p>Now I wish I could give you a rhyme or reason for those numbers.  My routers IP address is 192.168.1.1.  The rest of the numbers I basically stumbled upon by looking at a known good configuration.  The netmask should be in your router config panel.  The address is the IP address you want the VM to have.  Network and Broadcast are the tricky ones.  Hopefully this works for you.</p>
<p><strong>Install Webmin</strong></p>
<p>Now that you have Ubuntu installed and on a static IP you will probably want to have a way to manage everything on the server.  Since there is no GUI on the server you will want to have a graphical way to mange some aspects of the server.  Luckily there is webmin.  It is a web based solution to allow you to manage your server.  To get Webmin you have to download it directly from their site.  To do that login to your Virtual Machine and enter the following command:</p>
<p>wget http://prdownloads.sourceforge.net/webadmin/webmin_1.441_all.deb</p>
<p>This will download the current (as of this writing) version of Webmin.  Now you have to install the package.  You can do that by typing:</p>
<p><span class="fullpost">sudo dpkg -i webmin_1.441_all.deb</span></p>
<p><span class="fullpost">If you get any messages saying that you are missing some libraries enter the following command after the installiation is complete:</span></p>
<p><span class="fullpost">sudo apt- get install -f</span></p>
<p><span class="fullpost">That will resolve any issues with missing libraries.<br />
</span></p>
<p><span class="fullpost">Now you can go to any machine on your network and type https://&lt;ip_address&gt;:10000 and you will get Webmin.</span></p>
<p><span class="fullpost"><img class="alignnone size-full wp-image-44" title="webmin1" src="http://www.jpennington.net/wp-content/uploads/2009/01/webmin1.png" alt="webmin1" width="842" height="642" /></span></p>
<p><span class="fullpost">Just enter your username and password to login.  Very simple!</span></p>
<p><span class="fullpost">You will notice that this thing is ugly!  I had a hard time using it because its layout is not ideal.  Luckily there is a way to fix that. </span></p>
<p><span class="fullpost"><img class="alignnone size-full wp-image-45" title="webmin2" src="http://www.jpennington.net/wp-content/uploads/2009/01/webmin2.png" alt="webmin2" width="842" height="642" /></span></p>
<p><span class="fullpost">Click Webmin in the upper left corner then Webmin Configuration.  Then click the icon Webmin Themes.</span></p>
<p><img class="alignnone size-full wp-image-46" title="webmin3" src="http://www.jpennington.net/wp-content/uploads/2009/01/webmin3.png" alt="webmin3" width="842" height="642" /></p>
<p><span class="fullpost">We are going to install a theme that is based on OSX Tiger.  It is the most user friendly theme I have seen. To isntall it you click the radio button From ftp or http URL and enter &#8220;http://www.stress-free.co.nz/files/theme-stressfree.tar.gz&#8221; into the text box and hit Install Theme.  After the install is done it might look a little odd and maybe show an error.  All you have to do is go back to the root URL of Webmin and you should be fine.</span></p>
<p><span class="fullpost">Now you have a nice easy to manage server.</span></p>
<p><span class="fullpost"><strong>FTP Server</strong></span></p>
<p><span class="fullpost">You have just about everything you need to do development on your server except one thing.  FTP.  Luckily now that we have Webmin installed we can do that in a snap.  At the top you will see Servers.  Hover your mouse and see the popup menu.  Go down until you see ProFTPD Server and click on that.  You will see a message saying that it is not installed, but they can do that for you.  Simply click on the link and watch Webmin do all the heavy lifting for you!  You can now connect to your server via FTP which will make development on your server a snap!</span></p>
<p><span class="fullpost"><strong>Conclusion</strong></span></p>
<p><span class="fullpost">This should give you a good start on a development server.  Go ahead and play around in Webmin.  It really makes things a lot easier for you.  If you have any questions or comments or suggestions leave a comment below.<br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jpennington.net/2009/01/18/create-your-own-virtual-development-server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	<img style='margin:0;padding:0;border:0;' width='1px' height='1px' src="http://www.jpennington.net/wp-content/plugins/mystat/mystat.php?act=time_load&id=52208&rnd=369969132" /></channel>
</rss>
