<?xml version="1.0" encoding="UTF-8" ?>
<!-- generator="wordpress/2.1.3" --><rss 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:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"  xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>SoftwareProjects - Internet Marketing and Web Development</title>
	<link>http://www.softwareprojects.com/images/logo.png</link>
	<description>Internet Marketing and Web Development</description>

	<generator>http://www.softwareprojects.com</generator>
	<language>en</language>

		<copyright>SoftwareProjects Inc</copyright>
		<managingEditor>support@softwareprojects.com (Adrian Singer)</managingEditor>
		<webMaster>support@softwareprojects.com</webMaster>
		<category>SoftwareProjects</category>
		<ttl>3000</ttl>

		<image>
			<url>http://www.softwareprojects.com/images/logo.png</url>
			<title>SoftwareProjects - Internet Marketing and Web Development</title>
			<link>http://www.softwareprojects.com/images/logo.png</link>
			<width>142</width>
			<height>55</height>

		</image>

<item>
<title><![CDATA[Visual Search is Here!]]></title>
<link>http://www.softwareprojects.com/resources/building-content/t-visual-search-is-here-1538.html</link>
<pubDate>Thu, 24 Jul 2008 00:13:24 GMT</pubDate>
<dc:creator><![CDATA[Dawn Rossi]]></dc:creator>
<category><![CDATA[Building Content]]></category>
<guid isPermaLink="false">http://www.softwareprojects.com/resources/building-content/t-visual-search-is-here-1538.html</guid>
<description><![CDATA[So... you thought Google is the "be all" and "end all" search engine?<br />
<br />
You love Google's simple interface and think there's not much to be done on the user interface level? <br />
<br />
Think again!<br />
<br />
Meet <a href="http://www.searchme.com" target="_blank">SearchMe</a>.  The second generation of visual search, that actually works.<br />
<br />
We've all seen how Ask.com and MSN Live have been incorporating built-in images/video search as part of search results...<br />
<br />
SearchMe takes it up a notch.  All search results are displayed as screenshots, with a Mac like sexy panning interface.<br />
<br />
<img src="http://www.softwareprojects.com/blogimages/abda9b94.png" border="0" alt="" /><br />
<br />
It's kind of like <a href="http://www.snap.com" target="_blank">snap.com</a>, only much better :-)<br />
<br />
One of the cool features of SearchMe, is the ability to create custom stacks (collection of browser pages, images, videos) and embed them on your blog -<br />
<object classid='clsid<img src="images/smilies/biggrin.gif" border="0" alt="" title="Big Grin" class="inlineimg" />27CDB6E-AE6D-11cf-96B8-444553540000' id='embedded' width='600' height='375' codebase='http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab'><br />
  <param name='flashvars' value='autoPlay=false&amp;speed=1&amp;theme=black' /><br />
  <param name='movie' value='http://e.searchme.com/embed?a=sm&amp;v=1&amp;stack=77b4' /><br />
  <param name='quality' value='high' /><br />
  <param name='bgcolor' value='#FFFFFF' /><br />
  <param name='allowScriptAccess' value='always' /><br />
  <param name='allowFullScreen' value='true' /><br />
  <embed src='http://e.searchme.com/embed?a=sm&amp;v=1&amp;stack=77b4' quality='high' bgcolor='#FFFFFF' width='600' height='375' name='embedded' align='middle' play='true' loop='false' allowScriptAccess='always' type='application/x-shockwave-flash' allowFullScreen='true' pluginspage='http://www.adobe.com/go/getflashplayer' flashvars='autoPlay=false&amp;speed=1&amp;theme=black'></embed><br />
</object><br />
-<br />
<br />
Thank you Steven for the heads up]]></description>

		<wfw:commentRss>http://www.softwareprojects.com/resources/building-content/t-visual-search-is-here-1538.html</wfw:commentRss>
		<feedburner:origLink>http://www.softwareprojects.com/resources/building-content/t-visual-search-is-here-1538.html</feedburner:origLink>

</item>
<item>
<title><![CDATA[Camtasia 5 = Screen Capture Nirvana]]></title>
<link>http://www.softwareprojects.com/resources/the-basics/t-camtasia-5--screen-capture-nirvana-1536.html</link>
<pubDate>Wed, 23 Jul 2008 23:29:30 GMT</pubDate>
<dc:creator><![CDATA[Dawn Rossi]]></dc:creator>
<category><![CDATA[The Basics]]></category>
<guid isPermaLink="false">http://www.softwareprojects.com/resources/the-basics/t-camtasia-5--screen-capture-nirvana-1536.html</guid>
<description><![CDATA[<a href="http://www.techsmith.com/camtasia.asp" target="_blank">Camtasia</a> is the absolute best screen capture tool for Windows.  Period.<br />
<br />
We've been using Camtasia for more than 3 years now and blogged about this great tool several times.<br />
<br />
The latest version, Camtasia 5 (released March 2008) is soooooo much better than version 4 it's not even funny - <br />
<br />
* Less settings to mess with<br />
* Better quality<br />
* Faster processing time<br />
* Sexy animations<br />
<br />
Screen captures with Camtasia are super easy to produce.  We have a client who sends us video captures explaining the new features &amp; changes he'd like to see implemented, every single day!<br />
<br />
For best results:<br />
<br />
* When selecting capture area, use a 610 width, 517 height<br />
* Produce as SWF<br />
* Don't include browser scroll bars and toolbars as part of the capture area<br />
<br />
If you're looking for an easy way to do screen captures, test drive Camtasia 5.  You'll fall in love with it.]]></description>

		<wfw:commentRss>http://www.softwareprojects.com/resources/the-basics/t-camtasia-5--screen-capture-nirvana-1536.html</wfw:commentRss>
		<feedburner:origLink>http://www.softwareprojects.com/resources/the-basics/t-camtasia-5--screen-capture-nirvana-1536.html</feedburner:origLink>

</item>
<item>
<title><![CDATA[SoftwareProjects to attend Affiliate Summit East]]></title>
<link>http://www.softwareprojects.com/resources/the-platform-all-in-one/t-softwareprojects-to-attend-affiliate-sum-1534.html</link>
<pubDate>Thu, 17 Jul 2008 17:29:47 GMT</pubDate>
<dc:creator><![CDATA[Adrian Singer]]></dc:creator>
<category><![CDATA[The Platform: All-In-One]]></category>
<guid isPermaLink="false">http://www.softwareprojects.com/resources/the-platform-all-in-one/t-softwareprojects-to-attend-affiliate-sum-1534.html</guid>
<description><![CDATA[<a href="http://www.affiliatesummit.com" target="_blank">Affiliate Summit Boston</a> is the largest gathering of affiliates, merchants and pay-by-performance networks.<br />
 <br />
<img src="http://www.softwareprojects.com/resources/../../blogimages/c0wnNiaffsummitwest.jpg" border="0" alt="" /><br />
 <br />
We had a great time at <a href="http://www.softwareprojects.com/resources/traffic-attract-customers/t-affiliate-summit-vegas-day-1-1478.html" target="_blank">Affiliate Summit Vegas</a><br />
<br />
SoftwareProjects is once again, sending a small team of <b>rainmakers </b>to meet and network with our respected clients and partners.<br />
 <br />
Harris Fellman, Joshua Shafran, Dan Kuschell, Chris Luck, Shawn Casey, Tellman Knudson, Merlin Holmes, Amit Mehta, Felix Leshno and Joe Lavery, are a few Internet Marketing superstars who recently "discovered" SoftwareProjects and have become our raving <a href="http://www.softwareprojects.com/software-development.php" target="_blank">fans</a>.<br />
<br />
Did you know?<br />
<br />
<b>3 out of 5</b> attendees to Affiliate Summit use tools created by SoftwareProjects. <br />
 <br />
Imagine what we can do for your business.<br />
 <br />
-<br />
 <br />
We will be blogging live from the event, covering session highlights here on <a href="http://www.softwareprojects.com/resources/../../resources" target="_blank">SoftwareProjects.com</a><br />
 <br />
If you'd like to get together and learn why more than 3,000 businesses in 14 countries rely on SoftwareProjects when it comes to <a href="http://www.softwareprojects.com/resources/../../selling-online/email-marketing-spi" target="_blank">Email Marketing</a>, <a href="http://www.softwareprojects.com/resources/../../search-marketing/spi-ppc-console" target="_blank">PPC</a>, <a href="http://www.softwareprojects.com/resources/../../search-marketing/spi-media-buy" target="_blank">Media</a>, <a href="http://www.softwareprojects.com/resources/../../shopping-cart/" target="_blank">Shopping carts</a>, <a href="http://www.softwareprojects.com/resources/../../software-development.php" target="_blank">Software Development</a> or <a href="http://www.softwareprojects.com/resources/../../selling-online/spi-affiliate-manager" target="_blank">Affiliate systems</a>, please drop a comment here<br />
 <br />
See you in Boston!]]></description>

		<wfw:commentRss>http://www.softwareprojects.com/resources/the-platform-all-in-one/t-softwareprojects-to-attend-affiliate-sum-1534.html</wfw:commentRss>
		<feedburner:origLink>http://www.softwareprojects.com/resources/the-platform-all-in-one/t-softwareprojects-to-attend-affiliate-sum-1534.html</feedburner:origLink>

</item>
<item>
<title><![CDATA[How to: Block duplicate orders with SoftwareProjects Shopping Cart]]></title>
<link>http://www.softwareprojects.com/resources/the-platform-all-in-one/t-how-to-block-duplicate-orders-with-soft-1532.html</link>
<pubDate>Tue, 08 Jul 2008 22:01:38 GMT</pubDate>
<dc:creator><![CDATA[Dawn Rossi]]></dc:creator>
<category><![CDATA[The Platform: All-In-One]]></category>
<guid isPermaLink="false">http://www.softwareprojects.com/resources/the-platform-all-in-one/t-how-to-block-duplicate-orders-with-soft-1532.html</guid>
<description><![CDATA[How do you prevent a customer from <b>accidently ordering the same product twice</b>?<br />
<br />
Most shopping carts disable the "Submit order" button, but what if a customer comes back a few weeks later?  Or orders a different product that bundles an add-on product your customer already owns?<br />
<br />
Duplicate orders cost money, waste resources and annoy your customers.<br />
<br />
The <a href="http://www.softwareprojects.com/shopping-cart" target="_blank">SoftwareProjects shopping cart</a> employs two levels of protection from duplicate orders:<br />
<br />
<b>#1. Block orders of the same exact product</b><br />
<br />
When you create a new product in the Product Manager, you'll notice a checkbox that reads "Customer can purchase more than a single copy of this product".<br />
<br />
<img src="http://www.softwareprojects.com/blogimages/12f80538.png" border="0" alt="" /><br />
<br />
By default this is turned off.  Keep it turned off to prevent customers from ordering the same exact product twice.<br />
<br />
Whether customers accidently hit the submit button twice, or come back to the page a few days later, the system will prevent them from ordering the same exact product twice.<br />
<br />
<br />
<b>#2. Block orders of products from the same category</b><br />
<br />
At times, you may create multiple versions of the same product.  For example:<br />
<br />
* Same product with two different payment plans <br />
* Same product with two different commission plans<br />
* Same product with two different autoresponder or order confirmation emails.<br />
etc.<br />
<br />
Each product has a unique codename and the system does not automatically block duplicate orders when the product codename is different.<br />
<br />
To avoid duplicate orders in situations where you create multiple copies of the same product offering, use categories.<br />
<br />
Categories let you to group similar products together and then block duplicate orders of two products from the same category.<br />
<br />
<img src="http://www.softwareprojects.com/blogimages/89167a21.png" border="0" alt="" /><br />
<br />
Set "Max one product under this category" to YES and then group all similar products under this category.]]></description>

		<wfw:commentRss>http://www.softwareprojects.com/resources/the-platform-all-in-one/t-how-to-block-duplicate-orders-with-soft-1532.html</wfw:commentRss>
		<feedburner:origLink>http://www.softwareprojects.com/resources/the-platform-all-in-one/t-how-to-block-duplicate-orders-with-soft-1532.html</feedburner:origLink>

</item>
<item>
<title><![CDATA[How to move a Mission Critical Server]]></title>
<link>http://www.softwareprojects.com/resources/programming/t-how-to-move-a-mission-critical-server-1530.html</link>
<pubDate>Fri, 13 Jun 2008 20:47:10 GMT</pubDate>
<dc:creator><![CDATA[Kyle Deneen]]></dc:creator>
<category><![CDATA[Programming]]></category>
<guid isPermaLink="false">http://www.softwareprojects.com/resources/programming/t-how-to-move-a-mission-critical-server-1530.html</guid>
<description><![CDATA[Often times when switching hosts, it's imperative that there is no down time. This process will outline how to move your website to a Software <br />
<br />
Projects server.<br />
<br />
Step 1 - HTML/PHP/Media file migration<br />
<br />
Many basic hosting packages only allow FTP access. In those cases, you may be stuck transferring your site to your computer and then uploading those <br />
<br />
files to your new Software Projects hosting account.<br />
<br />
However, if you have shell access with your hosting account, there is a quick and easy way to move your files from your current host to your Software <br />
<br />
Projects hosting account using tar and SSH. See the following command as an example:<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">tar -czpf - ./ | ssh -l[user] [ip_address] tar -xzpf - -C /home/yourdomain.com/htdocs &amp;</code><hr />
</div>
<br />
Breaking that down, the first part:<br />
<br />
"tar -czpf - ./" - this part of the command tells the system to tar everything in the current directory. Assuming you were in your root directory, <br />
<br />
this wouldn't have to change at all. Otherwise replace the './' with the path to your root directory.<br />
<br />
"| ssh -l[user] [ip_address]" - this part tells the server to send the tar contents through SSH. You would replace "[user]" with the username for SSH <br />
<br />
and "[ip_address]" with the ip address of the server you are transferring to (the Software Projects server, which you could get from your account <br />
<br />
manager or engineer).<br />
<br />
"tar -xzpf - -C /home/yourdomain.com/htdocs &amp;" - this part tells the remote server (Software Projects) that it should uncompress the tar data sent <br />
<br />
over SSH into the directory specified. In the above example '/home/yourdomain.com/htdocs'. You would get this information from your Software Projects <br />
<br />
account manager or engineer.<br />
<br />
Step 2 - MySQL Database migration<br />
<br />
Typically the best way to transfer your database to Software Projects is to use the mysqldump program. This is only possible if you have shell access <br />
<br />
on your hosting account. It is possible to move the data in a single command, like so:<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">mysqldump -h[local_db_host] -u[local_db_user] -p[local_db_password] --all-databases | mysql -h[database_host] -u[database_user] -p[database_password]&nbsp; -C</code><hr />
</div>
<br />
A quick breakdown:<br />
<br />
"mysqldump -h[local_db_host] -u[local_db_user] -p[local_db_password] --all-databases" - this part of the command runs the mysqldump program which <br />
<br />
connects to your local database and dumps all databases. You would replace [local_db_host] with your current database host, [local_db_user] with your <br />
<br />
current database username and [local_db_password] with your local database password. The '--all-databases' option tells the program to dump all the <br />
<br />
databases. You can delete that part and replace it with a certain database name if you only want to transfer that database, like so:<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">mysqldump -h[local_db_host] -u[local_db_user] -p[local_db_password] dbname</code><hr />
</div>
<br />
"| mysql -h[database_host] -u[database_user] -p[database_password] -C" - this part of the command tells the server to send the dump created by <br />
<br />
mysqldump to the remote mysql server and import that dump into the database server. You would replace [database_host], [database_user] and <br />
<br />
[database_password] with the credentials given to you by your Software Projects account manager or engineer. The '-C' option tells mysql to "Compress <br />
<br />
all information sent between the client and the server if both support compression". If you specify a database name (dbname) in mysqldump portion of <br />
<br />
the command, you would want to specify that in the mysql portion of the command, something like:<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">mysqldump -h[local_db_host] -u[local_db_user] -p[local_db_password] mydatabase | mysql -h[database_host] -u[database_user] -p[database_password] -C mydatabase</code><hr />
</div>
<br />
Step 3 - SSL Setup with Nginx<br />
<br />
Setting up SSL with Nginx is very similar to apache. You create 2 files, a key file and your crt file. The key file contains the key you received when purchasing the SSL certificate for your domain. The crt file contains 2 certificates that are combined into a single file. This is your SSL certificate you received combined with the identifier certificate you received from the issuing company. For instance if you purchased a certificate from GoDaddy you may receive 3 files. The key, the certificate and the godaddy intermediate bundle (another certificate). You would combine the certificate for your domain with the intermediate key with cat command:<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">cat certificate.crt godaddy_bundle.crt > yourdomain.com.crt</code><hr />
</div>
<br />
You would place this file somewhere in the filesystem, we use /etc/nginx/. You would also place your key file in that directory. Then you would need to create a new location directive in nginx.conf for this secure server and specify these files. Here is an example:<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">&nbsp; &nbsp; # HTTPS server<BR>&nbsp; &nbsp; #<BR>&nbsp; &nbsp; server {<BR>&nbsp; &nbsp; &nbsp; &nbsp; listen&nbsp; &nbsp; &nbsp;  443;<BR>&nbsp; &nbsp; &nbsp; &nbsp; server_name&nbsp; yourdomain.com;<BR>&nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; # set SSL vars<BR>&nbsp; &nbsp; &nbsp; &nbsp; ssl&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; on;&nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; ssl_certificate&nbsp; &nbsp; &nbsp; /etc/nginx/yourdomain.com.crt;<BR>&nbsp; &nbsp; &nbsp; &nbsp; ssl_certificate_key&nbsp; /etc/nginx/yourdomain.com.nokey;<BR>&nbsp; &nbsp; &nbsp; &nbsp; ssl_session_timeout&nbsp; 5m;<BR>&nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; # pass all scripts to FastCGI server listening on 127.0.0.1:9000<BR>&nbsp; &nbsp; &nbsp; &nbsp; #<BR>&nbsp; &nbsp; &nbsp; &nbsp; location /<BR>&nbsp; &nbsp; &nbsp; &nbsp; {<BR>&nbsp; &nbsp;  <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # set the doc root <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; root&nbsp;  /home/yourdomain.com/htdocs;<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; index&nbsp; index.php;<BR><BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # pass to FastCGI<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fastcgi_pass&nbsp;  127.0.0.1:8888;<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fastcgi_index&nbsp; index.php;<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fastcgi_param SCRIPT_FILENAME /home/yourdomain.com/htdocs/$fastcgi_script_name;<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fastcgi_intercept_errors&nbsp; on;<BR>&nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; include&nbsp; &nbsp; &nbsp; &nbsp; /etc/nginx/fastcgi_top.conf;<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fastcgi_param&nbsp; DOCUMENT_ROOT&nbsp; &nbsp; /home/yourdomain.com/htdocs/;<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fastcgi_param&nbsp; HTTPS on;<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; include&nbsp; &nbsp; &nbsp; &nbsp; /etc/nginx/fastcgi_bottom.conf;<BR>&nbsp; &nbsp; &nbsp; &nbsp; }<BR>&nbsp; &nbsp; }</code><hr />
</div>
<br />
You would replace '/home/yourdomain.com/htdocs' with the root of the website on the server. You would replace /etc/nginx/yourdomain.com.crt and /etc/nginx/yourdomain.com.nokey with the names of your combined crt file and key file, respectively. Restart nginx and you should be all set.<br />
<br />
Note about sessions across sub-domains:<br />
<br />
When trying to use sessions across sub-domains, you may need to add something like the following when starting your session:<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">session_set_cookie_params(time()+3600*10,"/",".yourdomain.com");</code><hr />
</div>
<br />
This tells the session that it should work on "*.yourdomain.com" so that pages with domains such as <a href="http://www.yourdomain.com/index.php" target="_blank">www.yourdomain.com/index.php</a> and yourdomain.com/index.php could use the same session.<br />
<br />
Note about timezones:<br />
<br />
Many times the server you are hosting on and your own timezone are different, and for things like timestamps or scripts, you may want to change the timezone in those scripts to match your timezone rather than the one the server uses. In PHP you would use the putenv function, such as:<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">putenv ('TZ=EST+05EDT');</code><hr />
</div>
<br />
The above would set your timezone in the script to Eastern Standard Time in the USA.<br />
<br />
Note about password protection:<br />
<br />
You can learn how to password protect your directories under nginx with the following tutorial:<br />
<br />
<a href="http://www.softwareprojects.com/resources/programming/t-setting-up-password-protection-for-your-1518.html" target="_blank">http://www.softwareprojects.com/reso...your-1518.html</a>]]></description>

		<wfw:commentRss>http://www.softwareprojects.com/resources/programming/t-how-to-move-a-mission-critical-server-1530.html</wfw:commentRss>
		<feedburner:origLink>http://www.softwareprojects.com/resources/programming/t-how-to-move-a-mission-critical-server-1530.html</feedburner:origLink>

</item>
<item>
<title><![CDATA[The importance of Business Systems & Processes]]></title>
<link>http://www.softwareprojects.com/resources/the-basics/t-the-importance-of-business-systems-pro-1528.html</link>
<pubDate>Mon, 09 Jun 2008 11:32:08 GMT</pubDate>
<dc:creator><![CDATA[Mike Peters]]></dc:creator>
<category><![CDATA[The Basics]]></category>
<guid isPermaLink="false">http://www.softwareprojects.com/resources/the-basics/t-the-importance-of-business-systems-pro-1528.html</guid>
<description><![CDATA[In the game of life, on your path to <b>financial freedom and beyond</b>, there are several levels you will have to go through.<br />
<br />
Every level has its associated pay cap, as well as a unique set of required skills you'll need, so you can cross over to the next level.<br />
<br />
I prepared a basic diagram to visualize this:<br />
<br />
<img src="http://www.softwareprojects.com/blogimages/14c23b41.png" border="0" alt="" /><br />
<br />
<br />
<b>Level 1 - Employee Low level:</b><br />
<br />
Starting out, these are your first set of paying jobs.  No special requirements.  You exchange your time for money.  Since you don't have any skills at this point, you will typically be doing manual labour or other forms of basic clerical / administrative work.<br />
<br />
<i>To move to the next level: Develop professional skills</i><br />
<br />
<b>Level 2 - Employee High level:</b><br />
<br />
Having developed your professional skills, your time is now worth a lot more to your employer.  At the peak of this level, you can take home a comfortable $150k paycheck, although this will typically involve working long hours with a lot of stress.<br />
<br />
<i>To move to the next level: Develop sales skills</i><br />
<br />
<b>Level 3 - Self Employed / Professional</b><br />
<br />
If you have good interpersonal social skills and can sell well, you can move on up to the self employed / professional / consultant level.  While you're still exchanging time for money, you are now selling "your company's time".  You may or may not already have a few people working for you.  Either way, you get paid more for your company's time.<br />
<br />
Problem is since you are an integral part of your business, indirectly selling your own time &amp; skills, sooner or later you will hit a glass ceiling in profit earnings.  <a href="http://www.richdad.com" target="_blank">Robert Kiyosaki</a> ("Rich dad poor dad") talks in depth about the difference between being self employed vs a business owner in his books.<br />
<br />
<i>To move to the next level: Develop marketing skills</i><br />
<br />
<b>Level 4 - Small Business Owner</b><br />
<br />
Marketing is the name of the game here.  As long as you have a decent product/service/skillset to offer, great marketing will enable you to get more customers in the door, repeatedly and consistently.  <br />
<br />
Learn how to joint-venture with others, attend seminars, develop your education and participate in a mastermind of like-minded individuals. <br />
<br />
<i>To move to the next level: You need Systems &amp; Processes</i><br />
<br />
<b>Level 5 - Big Business</b><br />
<br />
Big Business is achieved when your business keeps growing rapidly without requiring your day-to-day involvement and hands-on management.  <br />
<br />
As is the case with every other game, crossing over from level 4 to level 5 is the most challenging task.  <br />
<br />
By the time you reach level 5, you have a thriving business, generating a comfortable living for you and your loved ones.  You've built the business around your unique skills and learned how to best capitalize on your personal inherent talents. <br />
<br />
Too many clients of SoftwareProjects get stuck in level 4 and can never cross over to level 5.  <br />
<br />
I'd like to dedicate this post to what it takes to grow a <b>big business</b> (8 figures and up), based on what I learned from the larger businesses we work with -<br />
<br />
The key differentiator I've seen between level 4 vs level 5 type businesses, is the type of systems and processes that power each business.<br />
<br />
<b>Business Systems &amp; Processes</b><br />
<br />
If you're an affiliate marketer, you need systems for ongoing content development, keyword research, bid management and keyword-level conversion tracking.<br />
<br />
If you're a merchant, you need systems for customer support, recurring billing, email delivery, commission tracking and customer relationship management.<br />
<br />
Having the proper business systems in place is instrumental to your growth.  A pilot cannot fly without a set of monitors and guages to guide the way and ensure everything is going well.  In the business world - what gets measured - improves, what doesn't get measured - deterioates with time.<br />
<br />
But having the proper systems in place is only half of the equation.<br />
<br />
The second half is having a set of well documented processes (read "<a href="http://www.amazon.com/E-Myth-Revisited-Small-Businesses-About/dp/0887307280" target="_blank">E-Myth</a>") to automate the growth of your business.<br />
<br />
For starters, sit down and take the time to carefully document every single process that comprises your business.   Everything from exploring new niches, doing joint-venture agreements, launching new products, singing up affiliates, product development etc.<br />
<br />
Sony, GM and HP, are some of the great companies that have survived through generations of different management, new employees and changing markets.  While none of the original management team members is still with the company, well documented processes help to maintain the company's vision and its essence.   <br />
<br />
In the book "<a href="http://www.amazon.com/Good-Great-Companies-Leap-Others/dp/0066620996" target="_blank">Good to Great</a>", Jim Collins found the reason most companies made the leap from good-to-great, surviving and thriving across several generations with no end in sight, is because they were able to preserve company vision and internal processes over time.<br />
<br />
To give a specific example, instead of having one of your technical people slap together a new product page and shoot you an email once the page is up for you to quickly review (as if you don't have a million other things to do), break down the process to steps, document each step and assign responsibility so that a new product can be launched without relying on you.<br />
<br />
 Launching a new product:<br />
<br />
* Who writes the content <br />
* Who checks it <br />
* Who creates graphic design &amp; html<br />
* Who checks it <br />
* Who uploads the content and how is it done<br />
* Who checks everything was uploaded properly<br />
* The order confirmation email<br />
* The autoresponder<br />
* Who places a test order and provides a stamp-of-approval prior to the product going live, confirming the product, order confirmation and autoresponder emails are all properly delivered.<br />
<br />
Other processes to document:<br />
<br />
* Split testing a sales sequence<br />
* Recruiting affiliates<br />
* New Product development<br />
* Recruiting sales people<br />
* Handling customer support tickets<br />
* Ongoing quality assurance - placing test orders, submitting test tickets to customer support etc.<br />
<br />
-<br />
<br />
When documenting a process, use as many details as possible to explain each step.  Write these manuals in a way where a new employee could pick them up and immediately follow the documented steps, without requiring any special training.]]></description>

		<wfw:commentRss>http://www.softwareprojects.com/resources/the-basics/t-the-importance-of-business-systems-pro-1528.html</wfw:commentRss>
		<feedburner:origLink>http://www.softwareprojects.com/resources/the-basics/t-the-importance-of-business-systems-pro-1528.html</feedburner:origLink>

</item>
<item>
<title><![CDATA[Video: Customer Manager & Help Desk Quickstart]]></title>
<link>http://www.softwareprojects.com/resources/the-platform-all-in-one/t-video-customer-manager-help-desk-quic-1526.html</link>
<pubDate>Thu, 05 Jun 2008 08:33:27 GMT</pubDate>
<dc:creator><![CDATA[Rhonda W]]></dc:creator>
<category><![CDATA[The Platform: All-In-One]]></category>
<guid isPermaLink="false">http://www.softwareprojects.com/resources/the-platform-all-in-one/t-video-customer-manager-help-desk-quic-1526.html</guid>
<description><![CDATA[Topics covered:<br />
<br />
<b>Customer Manager:</b><br />
* Search filters<br />
* How to lookup a customer<br />
* Orders, Transactions, Fulfillment records<br />
* Issuing refunds<br />
<br />
<b>Help Desk:</b><br />
* Viewing &amp; Resolving tickets<br />
* Integrated order-lookup with every ticket<br />
* Escalation<br />
<br />
<object id="csSWF" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="610" height="517" codebase="http://active.macromedia.com/flash7/cabs/ swflash.cab#version=9,0,28,0">
                <param name="src" value="http://www.softwareprojects.com/marcom/video/customermanager.swf"/>
                <param name="bgcolor" value="#1a1a1a"/>
                <param name="quality" value="best"/>
                <param name="allowScriptAccess" value="always"/>
                <param name="allowFullScreen" value="true"/>
                <param name="scale" value="showall"/>
                <param name="flashVars" value="autostart=false"/>
                <embed name="csSWF" src="http://www.softwareprojects.com/marcom/video/customermanager.swf" width="610" height="517" bgcolor="#1a1a1a" quality="best" allowScriptAccess="always" allowFullScreen="true" scale="showall" flashVars="autostart=false" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed>
            </object>]]></description>

		<wfw:commentRss>http://www.softwareprojects.com/resources/the-platform-all-in-one/t-video-customer-manager-help-desk-quic-1526.html</wfw:commentRss>
		<feedburner:origLink>http://www.softwareprojects.com/resources/the-platform-all-in-one/t-video-customer-manager-help-desk-quic-1526.html</feedburner:origLink>

</item>
<item>
<title><![CDATA[Customer Manager Filter]]></title>
<link>http://www.softwareprojects.com/resources/the-platform-all-in-one/t-customer-manager-filter-1524.html</link>
<pubDate>Tue, 03 Jun 2008 12:54:04 GMT</pubDate>
<dc:creator><![CDATA[Dawn Rossi]]></dc:creator>
<category><![CDATA[The Platform: All-In-One]]></category>
<guid isPermaLink="false">http://www.softwareprojects.com/resources/the-platform-all-in-one/t-customer-manager-filter-1524.html</guid>
<description><![CDATA[SoftwareProjects <a href="http://www.softwareprojects.com/shopping-cart/spi-customer-manager" target="_blank">Customer Manager</a> system delivers one click access to all of your customers.<br />
<br />
The main view shows: Customer name, status, Contact information, Source (Organic, Direct, Affiliate, Email), Referring Affiliate, LifeTimeValue,  outstanding Balance and Date created.<br />
<br />
The filter at the top of the screen lets you search and export customer files, using 6 powerful filters:<br />
<br />
<img src="http://www.softwareprojects.com/blogimages/d34757f2.png" border="0" alt="" /><br />
<br />
<br />
1. Filter by <b>date </b>customer record was generated<br />
<br />
2. Filter by <b>referring affiliate</b><br />
<br />
3. Filter by <b>product or products</b>, customer purchased<br />
<br />
4. Filter by <b>balance </b>(outstanding balance, paying customer etc.)<br />
<br />
5. Filter by <b>status </b>(active customer, inactive customer)<br />
<br />
6. Filter by <b>meta information</b>: name, emailaddress, phone, mailing address, credit card last 4 digits, zip code]]></description>

		<wfw:commentRss>http://www.softwareprojects.com/resources/the-platform-all-in-one/t-customer-manager-filter-1524.html</wfw:commentRss>
		<feedburner:origLink>http://www.softwareprojects.com/resources/the-platform-all-in-one/t-customer-manager-filter-1524.html</feedburner:origLink>

</item>
<item>
<title><![CDATA[How to do a Joint Venture]]></title>
<link>http://www.softwareprojects.com/resources/traffic-attract-customers/t-how-to-do-a-joint-venture-1522.html</link>
<pubDate>Sun, 01 Jun 2008 19:48:22 GMT</pubDate>
<dc:creator><![CDATA[Adrian Singer]]></dc:creator>
<category><![CDATA[Traffic - Attract Customers]]></category>
<guid isPermaLink="false">http://www.softwareprojects.com/resources/traffic-attract-customers/t-how-to-do-a-joint-venture-1522.html</guid>
<description><![CDATA[We do a lot of Joint Ventures here at SoftwareProjects.  <br />
<br />
Many turn out successful, some fail but every single one is carefully planned and monitored.  If there's no money in it after 90 days, we're out.<br />
<br />
Most businesses and entrepreneurs who approach SoftwareProjects for a Joint Venture, get rejected by our gatekeepers.  Not because it's not a good fit, but simply because most people don't know how to position and sell a JV.<br />
<br />
So I've decided to put together a basic "How to do a Joint Venture" guide, complete with a template JV Executive Summary document for you to download.<br />
<br />
<b>Step 1: Identify Potential JV Partners<br />
<br />
</b>Great tool to find JV partners: Google.<br />
<br />
In a typical JV, one partner brings <a href="http://www.softwareprojects.com/resources/traffic" target="_blank">traffic</a> and the other brings <a href="http://www.softwareprojects.com/consulting.php" target="_blank">IP</a> (Intellectual Property) to the table.<br />
<br />
Traffic = Eyeballs.  Ideally qualified eyeballs as in prospects who are actively looking for the product/service you're selling<br />
<br />
IP = Software product, an ebook, a service, business know-how, a database/list, algorithm, patent etc.<br />
<br />
Understand what you're bringing to the table and then Google for matching partners that have what you need.<br />
<br />
<u>Examples</u>: <br />
<br />
* You have a new product/service, you're looking for a partner with an existing list/website who will promote your stuff to his followers.<br />
<br />
* You're a gifted software engineer, you're looking for a marketer to help convert your skills into mega bucks.<br />
<br />
<u>Important things to remember</u>:<br />
<br />
* Stay away from Gurus.  Gurus are in the business of selling their own products and educational information to their followers.  Unless you have a prior relationship, you'll have a very hard time selling your JV to a guru.<br />
<br />
* Pick potential JV partners who are in your niche.  Someone having a huge list of people who are interested in diving equipment, is not a good fit for your vitamin products.<br />
<br />
<br />
<b>Step 2: Crunch the numbers<br />
<br />
</b>Quantify what you've got and work out a business model for the Joint Venture partnership.<br />
<br />
A joint venture is all about capitalizing on the strength of each partner, to generate more revenues than what each party could accomplish on it's own.<br />
<br />
It is very important to attach a dollar value to what each partner brings to the table.  This will help packaging the JV, keeping everyone comfortable about the agreement and determining a fair revenue split.<br />
<br />
<u>Examples</u>:<br />
<br />
* I have a product that was developed for 3 years by 2 engineers.  It sells for $49/month and we've got 100 active customers.  I am looking for traffic and willing to pay a 20% recurring commission.<br />
<br />
* I have a membership site with a monthly newsletter.  The newsletter is mailed out on the first of the month to 50,000 recipients with a 23% open rate and 11% click-through rate.<br />
<br />
* I love to travel.  I have been traveling around the world for the past 6 years and wrote 200 pages of tips on how to get by when you're traveling abroad.<br />
<br />
<br />
<b>Step 3: Package and sell the JV<br />
<br />
</b>Once you've identified a list of potential JV partners, analyzed what each partner can bring and attached a dollar value to your offering, it is time to approach the prospects and sell them on your idea.<br />
<br />
Unfortunately, this is the most important yet overlooked step.<br />
<br />
I lost count of how many times we get approached by CEOs of respectible companies, sending emails saying "financial projections are awesome", "we should really do some business together", "let's talk about a partnership" or my personal pet peeve "we have a great product, no customers yet but the market is huge!"<br />
<br />
Wakeup call.<br />
<br />
This is the information age.  We're all suffering from information overload, all trying to accomplish 10 things at once and all have a list of projects on our ToDo list that will never get done because there's not enough time.<br />
<br />
To sell a potential partner on the idea of doing a JV with you, send a short <b>one page</b> JV executive summary, outlining in a few short words what your project is about, why you feel this is a good fit and most importantly - the estimated short term opportunity cost / opportunity gain.<br />
<br />
If you can't keep everything down to one page (without reducing font size so that I need a magnifying glass to read it), delete all and start again.<br />
<br />
Luckily for you, I'm attaching our tried and tested JV Executive Summary.  You can download this template <a href="http://www.softwareprojects.com/marcom/JV_ExecutiveSummary.doc" target="_blank">here</a>.<br />
<br />
-<br />
<br />
Remember JV is a numbers game.  The more JV proposals you send out, the higher your chances are that you'll get a "yes".<br />
<br />
Follow the steps I described, use the attached JV Executive Summary template and you'll significantly increase your chances of making it happen.<br />
<br />
Good luck!]]></description>

		<wfw:commentRss>http://www.softwareprojects.com/resources/traffic-attract-customers/t-how-to-do-a-joint-venture-1522.html</wfw:commentRss>
		<feedburner:origLink>http://www.softwareprojects.com/resources/traffic-attract-customers/t-how-to-do-a-joint-venture-1522.html</feedburner:origLink>

</item>
<item>
<title><![CDATA[Recompile/upgrade nginx binary with no down-time]]></title>
<link>http://www.softwareprojects.com/resources/programming/t-recompileupgrade-nginx-binary-with-no-do-1520.html</link>
<pubDate>Sat, 31 May 2008 17:18:35 GMT</pubDate>
<dc:creator><![CDATA[Kyle Deneen]]></dc:creator>
<category><![CDATA[Programming]]></category>
<guid isPermaLink="false">http://www.softwareprojects.com/resources/programming/t-recompileupgrade-nginx-binary-with-no-do-1520.html</guid>
<description><![CDATA[How to recompile nginx and replace current binary, with no down-time:<br />
<br />
Follow the same generic steps as a regular install initially.<br />
<br />
1. Download and untar the nginx source if you don't have it on your machine already.<br />
<br />
2. Make a copy of your current nginx binary and conf. The installation usually does this automatically, but just to be safe. <br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">"cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old"<BR>"cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.old"</code><hr />
</div>
<br />
3. Run the "./configure" command. For example if you wanted to add SSL support to nginx, you would have a configure statement such as:<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">./configure --with-http_ssl_module --with-openssl=/path/to/openssl_src</code><hr />
</div>
<br />
If you have other options you need you can add those as well. To see what your current nginx has configured, run the binary with -V flag ie. <br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">"/usr/local/nginx/sbin/nginx -V"</code><hr />
</div>
<br />
4. run: "make install clean" This will install the new binary in place of the old one and makes a backup of the old one.<br />
<br />
These steps are more specific to replacing a current install without down-time:<br />
<br />
5. Send a USR2 signal to the current pid file, something like: <br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">"kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`". </code><hr />
</div>
<br />
This causes nginx master process that was running to rename its pid and start the new binary. Both will run simultaneously.<br />
<br />
8. To disable the old workers, send the old master process a WINCH signal. If your pid is '123' that would be something like: <br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">"kill -WINCH 123"</code><hr />
</div>
<br />
9. Now you can test the new nginx process to see if it's working. If it is, you can kill the old master process to allow the new one to take over. If the old master process had a PID of '123' you would do this:<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">"kill -QUIT 123"</code><hr />
</div>
<br />
If you find your new binary isn't working correctly, maybe due to a mistake during configuration, you can revert back to the old master process by doing the following. Assume your old master process has a PID of '123' and the new master process has a PID of '321':<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">"kill -HUP 123" - this will restart the workers under the old master process<BR>"kill -QUIT 321" - shuts down the new master process workers<BR>"kill -TERM 321" - shuts down the new master process</code><hr />
</div>
<br />
You can find some additional information about nginx upgrades and signals here:<br />
<br />
<a href="http://wiki.codemongers.com/NginxCommandLine#utnbotf" target="_blank">http://wiki.codemongers.com/NginxCommandLine#utnbotf</a>]]></description>

		<wfw:commentRss>http://www.softwareprojects.com/resources/programming/t-recompileupgrade-nginx-binary-with-no-do-1520.html</wfw:commentRss>
		<feedburner:origLink>http://www.softwareprojects.com/resources/programming/t-recompileupgrade-nginx-binary-with-no-do-1520.html</feedburner:origLink>

</item>
<item>
<title><![CDATA[Setting up password protection for your directories]]></title>
<link>http://www.softwareprojects.com/resources/programming/t-setting-up-password-protection-for-your-1518.html</link>
<pubDate>Fri, 16 May 2008 15:55:59 GMT</pubDate>
<dc:creator><![CDATA[Kyle Deneen]]></dc:creator>
<category><![CDATA[Programming]]></category>
<guid isPermaLink="false">http://www.softwareprojects.com/resources/programming/t-setting-up-password-protection-for-your-1518.html</guid>
<description><![CDATA[Protecting a directory on your website with HTTP Authentication can be done in a few easy steps. <br />
<br />
First, you need to create a user/password combination using a program called htpasswd. We have a script created that allows you to do just that with ease. Simply go to this url and type in your username and password to get the encrypted user/pass you will need to place into a file.<br />
<br />
<a href="http://www.softwareprojects.com/services/createhtpasswd.php" target="_blank">http://www.softwareprojects.com/serv...tehtpasswd.php</a><br />
<br />
After that you have to create a file under the directory you want protected and place that encrypted username/password into it, we will call it htaccessfile in this example. At that point you are ready to make changes to the conf file.<br />
<br />
Once you have your username and password encrypted, you would access the 'nginx.conf' file in your root website directory. This file tells our webserver how to treat the files/directories on your page. It is in here that you will make the necessary changes to enable password protection on whichever directory you may want. You need to add several lines to your 'nginx.conf':<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">location ^~ /protectthisdirectory/ {<BR>&nbsp; &nbsp; &nbsp; &nbsp; root&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /home/mydomain.com/htdocs;<BR>&nbsp; &nbsp; &nbsp; &nbsp; index&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; index.php index.html index.htm *;<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fastcgi_index&nbsp; index.php;<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fastcgi_param&nbsp; SCRIPT_FILENAME&nbsp; /home/mydomain.com/htdocs/$fastcgi_script_name;<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; include&nbsp; &nbsp; &nbsp; &nbsp; /etc/nginx/fastcgi_top.conf;<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fastcgi_param&nbsp; DOCUMENT_ROOT&nbsp; &nbsp; /home/mydomain.com/htdocs/;<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; include&nbsp; &nbsp; &nbsp; &nbsp; /etc/nginx/fastcgi_bottom.conf;<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($uri ~ \.php$) <BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  fastcgi_pass&nbsp;  127.0.0.1:8888;<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<BR>&nbsp; &nbsp; &nbsp; &nbsp; auth_basic&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "Restricted";<BR>&nbsp; &nbsp; &nbsp; &nbsp; auth_basic_user_file&nbsp; &nbsp; &nbsp; &nbsp; /home/mydomain.com/htdocs/protectthisdirectory/htaccessfile;<BR>}</code><hr />
</div>
<br />
In the above example, you would replace 'mydomain.com' with your domain, 'protectthisdirectory' with the directory you are tying to place a password on, and 'htaccessfile' with the name of your password file. <br />
<br />
Once you make these changes, our system will automatically refresh the web-server and password protection would be enabled within about 2 minutes.]]></description>

		<wfw:commentRss>http://www.softwareprojects.com/resources/programming/t-setting-up-password-protection-for-your-1518.html</wfw:commentRss>
		<feedburner:origLink>http://www.softwareprojects.com/resources/programming/t-setting-up-password-protection-for-your-1518.html</feedburner:origLink>

</item>
<item>
<title><![CDATA[A/B Split Testing]]></title>
<link>http://www.softwareprojects.com/resources/conversion-traffic-to-cash/t-ab-split-testing-1516.html</link>
<pubDate>Fri, 09 May 2008 14:35:36 GMT</pubDate>
<dc:creator><![CDATA[Adrian Singer]]></dc:creator>
<category><![CDATA[Conversion - Traffic to Cash]]></category>
<guid isPermaLink="false">http://www.softwareprojects.com/resources/conversion-traffic-to-cash/t-ab-split-testing-1516.html</guid>
<description><![CDATA[Once you have some decent <a href="http://www.softwareprojects.com/resources/traffic" target="_blank">traffic</a> hitting your site (minimum of 1,000 unique visitors per day), it's time to switch gears and focus on split testing.<br />
<br />
Split testing is the process of comparing different landing pages, offers, prices, headlines etc. to determine what works best with your traffic, yielding the highest conversion rates.<br />
<br />
The two primary forms of split testing are -<br />
<br />
<b>A/B Split Testing</b>: (simpler) Comparing two or more unique versions of a landing page.<br />
<br />
<b>Multivariate Testing</b>: (more advanced) Comparing multiple testing parameters (headline, fonts, colors, image placement etc.) all at the same time, without requiring standalone tests.<br />
<br />
-<br />
<br />
As part of this tutorial I will walk you through the process of setting up A/B split testing for your website.<br />
<br />
<b>Step 1: Rotator Script</b><br />
<br />
The rotator script will divide your traffic equally across two or more landing pages you are looking to test.<br />
<br />
Save this script as your index.php file under a new directory (for example: /redirect/index.php) and update the files names to specify where to send your traffic:<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">PHP Code:</div>
	<div class="alt2">
		<hr />
		<code style="white-space:nowrap">
		<div dir="ltr" style="text-align:left;">
			<!-- php buffer start --><code><font color="#000000"> <BR> <font color="#006600">&lt;?</font><font color="#0000CC">php <br /></font><font color="#FF9900">// Enter two or more file names and pick SID codes<br />// to identify each page. The SID code is how you<br />// will later identify each variation.<br /></font><font color="#0000CC">$pages </font><font color="#006600">= array(<br /><br /></font><font color="#CC0000">"index_control.php" </font><font color="#006600">=&gt; </font><font color="#CC0000">"Control"</font><font color="#006600">,<br /></font><font color="#CC0000">"index_freeoffer.php" </font><font color="#006600">=&gt; </font><font color="#CC0000">"FreeOffer"</font><font color="#006600">,<br /></font><font color="#CC0000">"index_expensive.php" </font><font color="#006600">=&gt; </font><font color="#CC0000">"Expensive"<br /><br /></font><font color="#006600">);<br /><br /></font><font color="#FF9900">// Pick a unique name to identify this test<br /></font><font color="#0000CC">$sid_testname </font><font color="#006600">= </font><font color="#CC0000">"Landing Page"</font><font color="#006600">;<br /><br /></font><font color="#FF9900">// DO NOT CHANGE ANYTHING BELOW THIS LINE<br /><br />// Pick a random number between 1..num_pages<br /></font><font color="#0000CC">$page_id </font><font color="#006600">= </font><font color="#0000CC">rand</font><font color="#006600">() % </font><font color="#0000CC">count</font><font color="#006600">(</font><font color="#0000CC">$pages</font><font color="#006600">);<br /><br /></font><font color="#FF9900">// Set these for easier access<br /></font><font color="#006600">foreach (</font><font color="#0000CC">$pages </font><font color="#006600">as </font><font color="#0000CC">$url </font><font color="#006600">=&gt; </font><font color="#0000CC">$sid</font><font color="#006600">) {</font><font color="#0000CC">$page_id</font><font color="#006600">--; if (</font><font color="#0000CC">$page_id</font><font color="#006600">&lt;</font><font color="#0000CC">0</font><font color="#006600">) break;}<br /><br /></font><font color="#FF9900">// Redirect to chosen page, passing SID code<br /></font><font color="#006600">if (</font><font color="#0000CC">strpos</font><font color="#006600">(</font><font color="#0000CC">$url</font><font color="#006600">,</font><font color="#CC0000">"?"</font><font color="#006600">)===</font><font color="#0000CC">false</font><font color="#006600">) </font><font color="#0000CC">$url </font><font color="#006600">.= </font><font color="#CC0000">"?"</font><font color="#006600">; else </font><font color="#0000CC">$url </font><font color="#006600">.= </font><font color="#CC0000">"&amp;"</font><font color="#006600">;<br /></font><font color="#0000CC">Header</font><font color="#006600">(</font><font color="#CC0000">"Location: $url&amp;sid_testname="</font><font color="#006600">.<br /></font><font color="#0000CC">URLEncode</font><font color="#006600">(</font><font color="#0000CC">$sid_testname</font><font color="#006600">).</font><font color="#CC0000">"&amp;sid="</font><font color="#006600">.</font><font color="#0000CC">URLEncode</font><font color="#006600">(</font><font color="#0000CC">$sid</font><font color="#006600">)); </font><font color="#0000CC">?&gt;</font> <BR> </font> <BR> </code><!-- php buffer end -->
		</div>
		</code>
		<hr />
	</div>
</div> <br />
<br />
<b>Step 2: Store SID code</b><br />
<br />
Once the rotator script redirected the traffic, we have to store the SID code in a cookie.  This way, when the conversion event takes place, we can trace back the referring SID.<br />
<br />
If your website is powered by SoftwareProjects, login to your account, click on 'Product Manager', then select 'Settings' from the menu on the left and download '<b>spi_cart.php</b>'.  Include that file on every one of your pages and you're all set.<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">PHP Code:</div>
	<div class="alt2">
		<hr />
		<code style="white-space:nowrap">
		<div dir="ltr" style="text-align:left;">
			<!-- php buffer start --><code><font color="#000000"> <BR> <font color="#006600">&lt;?</font><font color="#0000CC">php <br /></font><font color="#006600">require_once(</font><font color="#CC0000">"spi_cart.php"</font><font color="#006600">);<br /><br /></font><font color="#FF9900">// Your page content here </font><font color="#0000CC">?&gt;</font> <BR> </font> <BR> </code><!-- php buffer end -->
		</div>
		</code>
		<hr />
	</div>
</div> <br />
If you're not using SoftwareProjects, include the code below on every one of your pages.  Be sure to include this code at the top of each page:<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">PHP Code:</div>
	<div class="alt2">
		<hr />
		<code style="white-space:nowrap">
		<div dir="ltr" style="text-align:left;">
			<!-- php buffer start --><code><font color="#000000"> <BR> <font color="#006600">&lt;?</font><font color="#0000CC">php <br /></font><font color="#FF9900">// Store SID in a cookie for 90 days<br />// Replace YOURDOMAIN with your domain name<br /></font><font color="#0000CC">setcookie</font><font color="#006600">(</font><font color="#CC0000">"sid"</font><font color="#006600">,</font><font color="#0000CC">$sid</font><font color="#006600">,</font><font color="#0000CC">time</font><font color="#006600">()+</font><font color="#0000CC">3600</font><font color="#006600">*</font><font color="#0000CC">24</font><font color="#006600">*</font><font color="#0000CC">90</font><font color="#006600">,</font><font color="#CC0000">"/"</font><font color="#006600">,</font><font color="#CC0000">".YOURDOMAIN.com"</font><font color="#006600">); </font><font color="#0000CC">?&gt;</font> <BR> </font> <BR> </code><!-- php buffer end -->
		</div>
		</code>
		<hr />
	</div>
</div> <br />
<br />
<b>Step 3: Log conversion event</b><br />
<br />
If your website is powered by SoftwareProjects, you can skip this step.<br />
<br />
Otherwise, you have to manually log the conversion event and referring SID code.  This log file can later be imported into Microsoft Excel to produce a report showing conversions and sales volume by SID code.<br />
<br />
On the thank you page, displayed to customers after they successfully place an order on your website, place this code:<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">PHP Code:</div>
	<div class="alt2">
		<hr />
		<code style="white-space:nowrap">
		<div dir="ltr" style="text-align:left;">
			<!-- php buffer start --><code><font color="#000000"> <BR> <font color="#006600">&lt;?</font><font color="#0000CC">php <br /></font><font color="#FF9900">// Open temporary file under the /tmp directory<br />// called 'conversions.txt'<br /></font><font color="#0000CC">$file </font><font color="#006600">= @</font><font color="#0000CC">fopen</font><font color="#006600">(</font><font color="#CC0000">"/tmp/conversions.txt"</font><font color="#006600">,</font><font color="#CC0000">"a"</font><font color="#006600">);<br /><br /></font><font color="#FF9900">// Log conversion event and referring sid code<br />// (Be sure to replace AMOUNT with order amount)<br /></font><font color="#006600">@</font><font color="#0000CC">fwrite</font><font color="#006600">(</font><font color="#0000CC">$file</font><font color="#006600">, </font><font color="#0000CC">date</font><font color="#006600">(</font><font color="#CC0000">"Ymd"</font><font color="#006600">).</font><font color="#CC0000">","</font><font color="#006600">.</font><font color="#0000CC">number_format</font><font color="#006600">(</font><font color="#0000CC">$AMOUNT</font><font color="#006600">,</font><font color="#0000CC">2</font><font color="#006600">).<br /></font><font color="#CC0000">","</font><font color="#006600">.</font><font color="#0000CC">$_COOKIE</font><font color="#006600">&#91;</font><font color="#CC0000">'sid'</font><font color="#006600">&#93;.</font><font color="#CC0000">"rn"</font><font color="#006600">);<br /><br /></font><font color="#FF9900">// Close file<br /></font><font color="#006600">@</font><font color="#0000CC">fclose</font><font color="#006600">(</font><font color="#0000CC">$file</font><font color="#006600">); </font><font color="#0000CC">?&gt;</font> <BR> </font> <BR> </code><!-- php buffer end -->
		</div>
		</code>
		<hr />
	</div>
</div> <br />
<b>Step 4: Review A/B Split Test Results<br />
<br />
</b>Login to your SoftwareProjects account, click on 'Product Manager' and then select 'By SID code' from the menu on the left.<br />
<br />
The report will show you a breakdown of clicks, lead signups, conversions, conversion rate, sales volume, commissions and net profit, all grouped by the SID codes you picked to identify the tests you conducted:<br />
<br />
<img src="http://www.softwareprojects.com/blogimages/c77c4146.png" border="0" alt="" /><br />
<br />
<br />
--<br />
<br />
<b>In Summary:<br />
</b><br />
<b>A/B split testing</b> is a quick and easy way to optimize your conversion rates, by continually testing different versions of your landing pages, product pricing, headlines etc.<br />
<br />
Using SoftwareProjects, all you have to do to implement split-testing, is to copy and paste the rotator script (step 1) and modify the files / SID codes, to split traffic to the appropriate pages.<br />
<br />
Everything else is built-in to the SoftwareProjects <a href="http://www.softwareprojects.com/shopping-cart" target="_blank">shopping cart system</a>, so you don't have to worry about storing the SID code and passing it forward upon conversion.<br />
<br />
Get your traffic rotator script up and you'll be able to view split test data within a matter of minutes.]]></description>

		<wfw:commentRss>http://www.softwareprojects.com/resources/conversion-traffic-to-cash/t-ab-split-testing-1516.html</wfw:commentRss>
		<feedburner:origLink>http://www.softwareprojects.com/resources/conversion-traffic-to-cash/t-ab-split-testing-1516.html</feedburner:origLink>

</item>
<item>
<title><![CDATA[One Page Checkout for an Information Product]]></title>
<link>http://www.softwareprojects.com/resources/get-online-presence/t-one-page-checkout-for-an-information-pro-1514.html</link>
<pubDate>Tue, 06 May 2008 13:35:21 GMT</pubDate>
<dc:creator><![CDATA[Elizabeth Morgan]]></dc:creator>
<category><![CDATA[Get Online Presence]]></category>
<guid isPermaLink="false">http://www.softwareprojects.com/resources/get-online-presence/t-one-page-checkout-for-an-information-pro-1514.html</guid>
<description><![CDATA[This short video outlines the process of placing an order for a Make Money Online Information product.<br />
<br />
Features shown:<br />
* <a href="http://www.softwareprojects.com/selling-online/spi-lead-manager" target="_blank">Lead Capture</a> + <a href="http://www.softwareprojects.com/customer-support/spi-survey-system" target="_blank">Survey System</a><br />
* <a href="http://www.softwareprojects.com/shopping-cart" target="_blank">SoftwareProjects shopping cart</a> one-page-checkout<br />
* <a href="http://www.softwareprojects.com/resources/conversion-traffic-to-cash/t-increase-email-marketing-landing-page-conversion-1455.html" target="_blank">Prepopulate</a> form with previously entered information<br />
* <a href="http://www.softwareprojects.com/resources/the-platform-all-in-one/t-one-time-offer-generator-1492.html" target="_blank">One time offer</a><br />
* Multiple payment plans for a single product<br />
* Authorize.net Integration<br />
<br />
<object id="csSWF" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="610" height="517" codebase="http://active.macromedia.com/flash7/cabs/ swflash.cab#version=9,0,28,0">
                <param name="src" value="http://www.softwareprojects.com/marcom/video/quickcashmagic.swf"/>
                <param name="bgcolor" value="#1a1a1a"/>
                <param name="quality" value="best"/>
                <param name="allowScriptAccess" value="always"/>
                <param name="allowFullScreen" value="true"/>
                <param name="scale" value="showall"/>
                <param name="flashVars" value="autostart=false"/>
                <embed name="csSWF" src="http://www.softwareprojects.com/marcom/video/quickcashmagic.swf" width="610" height="517" bgcolor="#1a1a1a" quality="best" allowScriptAccess="always" allowFullScreen="true" scale="showall" flashVars="autostart=false" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed>
            </object>]]></description>

		<wfw:commentRss>http://www.softwareprojects.com/resources/get-online-presence/t-one-page-checkout-for-an-information-pro-1514.html</wfw:commentRss>
		<feedburner:origLink>http://www.softwareprojects.com/resources/get-online-presence/t-one-page-checkout-for-an-information-pro-1514.html</feedburner:origLink>

</item>
<item>
<title><![CDATA[Tracking First Cookie vs Last Cookie]]></title>
<link>http://www.softwareprojects.com/resources/traffic-attract-customers/t-tracking-first-cookie-vs-last-cookie-1512.html</link>
<pubDate>Sat, 03 May 2008 18:30:27 GMT</pubDate>
<dc:creator><![CDATA[Dawn Rossi]]></dc:creator>
<category><![CDATA[Traffic - Attract Customers]]></category>
<guid isPermaLink="false">http://www.softwareprojects.com/resources/traffic-attract-customers/t-tracking-first-cookie-vs-last-cookie-1512.html</guid>
<description><![CDATA[When tracking affiliate IDs or SIDs, there are two popular methodologies you can choose from:<br />
<br />
<b>1. First Cookie<br />
</b><br />
The first affiliate to refer traffic to your website earns credit for the sale.<br />
<br />
<u>Example</u>: <br />
Andrew refers Robert<br />
Jim refers Robert<br />
Robert buys<br />
- Andrew earns the credit<br />
<br />
<b>2. Last Cookie</b><br />
<br />
The last affiliate to refer traffic to your website earns credit for the sale.<br />
<br />
<u>Example</u>:<br />
Andrew refers Robert<br />
Jim refers Robert<br />
Robert buys<br />
- Jim earns the credit<br />
<br />
--<br />
<br />
Choosing which methodology you would like to go with is strictly a business decision.  Once you've made your selection, be sure to communicate this to your affiliates and motivate them accordingly.<br />
<br />
Below are the two different scripts to implement first cookie vs last cookie tracking:<br />
<br />
<b>Track affiliate referrals by First cookie:</b><br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">PHP Code:</div>
	<div class="alt2">
		<hr />
		<code style="white-space:nowrap">
		<div dir="ltr" style="text-align:left;">
			<!-- php buffer start --><code><font color="#000000"> <BR> <font color="#006600">&lt;?</font><font color="#0000CC">php <br /></font><font color="#FF9900">// If we have an affiliate ID cookie, use it<br /></font><font color="#006600">if (!empty(</font><font color="#0000CC">$_COOKIE</font><font color="#006600">&#91;</font><font color="#CC0000">'aff_id'</font><font color="#006600">&#93;)) </font><font color="#0000CC">$aff_id </font><font color="#006600">= </font><font color="#0000CC">$_COOKIE</font><font color="#006600">&#91;</font><font color="#CC0000">'aff_id'</font><font color="#006600">&#93;;<br />else<br /></font><font color="#FF9900">// (No cookie)<br />// If we have an affiliate ID in the URL, use it<br /></font><font color="#006600">if (!empty(</font><font color="#0000CC">$_GET</font><font color="#006600">&#91;</font><font color="#CC0000">'aff_id'</font><font color="#006600">&#93;)) <br />{<br /></font><font color="#0000CC">$aff_id </font><font color="#006600">= </font><font color="#0000CC">$_GET</font><font color="#006600">&#91;</font><font color="#CC0000">'aff_id'</font><font color="#006600">&#93;;<br /><br /></font><font color="#FF9900">// Save affiliate ID cookie for 90 days<br /></font><font color="#006600">@</font><font color="#0000CC">session_register</font><font color="#006600">(</font><font color="#CC0000">"aff_id"</font><font color="#006600">);<br />@</font><font color="#0000CC">setcookie</font><font color="#006600">(</font><font color="#CC0000">"aff_id"</font><font color="#006600">,</font><font color="#0000CC">$aff_id</font><font color="#006600">,</font><font color="#0000CC">time</font><font color="#006600">()+</font><font color="#0000CC">3600</font><font color="#006600">*</font><font color="#0000CC">24</font><font color="#006600">*</font><font color="#0000CC">90</font><font color="#006600">,</font><font color="#CC0000">"/"</font><font color="#006600">,</font><font color="#CC0000">".YOURDOMAIN.COM"</font><font color="#006600">);<br />} </font><font color="#0000CC">?&gt;</font> <BR> </font> <BR> </code><!-- php buffer end -->
		</div>
		</code>
		<hr />
	</div>
</div> <br />
<b>Track affiliate referrals by Last cookie:</b><br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">PHP Code:</div>
	<div class="alt2">
		<hr />
		<code style="white-space:nowrap">
		<div dir="ltr" style="text-align:left;">
			<!-- php buffer start --><code><font color="#000000"> <BR> <font color="#006600">&lt;?</font><font color="#0000CC">php <br /></font><font color="#FF9900">// If we have an affiliate ID in the URL, use it<br /></font><font color="#006600">if (!empty(</font><font color="#0000CC">$_GET</font><font color="#006600">&#91;</font><font color="#CC0000">'aff_id'</font><font color="#006600">&#93;)) <br />{<br /></font><font color="#0000CC">$aff_id </font><font color="#006600">= </font><font color="#0000CC">$_GET</font><font color="#006600">&#91;</font><font color="#CC0000">'aff_id'</font><font color="#006600">&#93;;<br /><br /></font><font color="#FF9900">// Save affiliate ID cookie for 90 days<br /></font><font color="#006600">@</font><font color="#0000CC">session_register</font><font color="#006600">(</font><font color="#CC0000">"aff_id"</font><font color="#006600">);<br />@</font><font color="#0000CC">setcookie</font><font color="#006600">(</font><font color="#CC0000">"aff_id"</font><font color="#006600">,</font><font color="#0000CC">$aff_id</font><font color="#006600">,</font><font color="#0000CC">time</font><font color="#006600">()+</font><font color="#0000CC">3600</font><font color="#006600">*</font><font color="#0000CC">24</font><font color="#006600">*</font><font color="#0000CC">90</font><font color="#006600">,</font><font color="#CC0000">"/"</font><font color="#006600">,</font><font color="#CC0000">".YOURDOMAIN.COM"</font><font color="#006600">);<br />}<br /></font><font color="#FF9900">// If we have an affiliate ID cookie, use it<br /></font><font color="#006600">else<br />if (!empty(</font><font color="#0000CC">$_COOKIE</font><font color="#006600">&#91;</font><font color="#CC0000">'aff_id'</font><font color="#006600">&#93;)) </font><font color="#0000CC">$aff_id </font><font color="#006600">= </font><font color="#0000CC">$_COOKIE</font><font color="#006600">&#91;</font><font color="#CC0000">'aff_id'</font><font color="#006600">&#93;; </font><font color="#0000CC">?&gt;</font> <BR> </font> <BR> </code><!-- php buffer end -->
		</div>
		</code>
		<hr />
	</div>
</div>]]></description>

		<wfw:commentRss>http://www.softwareprojects.com/resources/traffic-attract-customers/t-tracking-first-cookie-vs-last-cookie-1512.html</wfw:commentRss>
		<feedburner:origLink>http://www.softwareprojects.com/resources/traffic-attract-customers/t-tracking-first-cookie-vs-last-cookie-1512.html</feedburner:origLink>

</item>
<item>
<title><![CDATA[Installing MySQL 5.1 on FreeBSD]]></title>
<link>http://www.softwareprojects.com/resources/programming/t-installing-mysql-51-on-freebsd-1510.html</link>
<pubDate>Fri, 02 May 2008 22:00:02 GMT</pubDate>
<dc:creator><![CDATA[Dawn Rossi]]></dc:creator>
<category><![CDATA[Programming]]></category>
<guid isPermaLink="false">http://www.softwareprojects.com/resources/programming/t-installing-mysql-51-on-freebsd-1510.html</guid>
<description><![CDATA[This step by step tutorial is everything you need to install MySQL 5.1 (from source) on a virgin FreeBSD 4.x - 7.x machine.<br />
<br />
<b>Step 1: Install wget</b><br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">cd /usr/ports/ftp/wget<BR>make <BR>make install&nbsp; &nbsp; &nbsp; &nbsp; </code><hr />
</div>         <br />
<b>Step 2: Download MySQL 5.1 source code</b><br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">mkdir /usr/tmp<BR>cd /usr/tmp<BR>wget "http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.24-rc.tar.gz/from/http://mysql.he.net/"<BR>tar xvzf mysql-5.1.24-rc.tar.gz</code><hr />
</div> <br />
<b>Step 3: Create mysql user</b><br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">adduser </code><hr />
</div> <br />
Follow the prompts to create a mysql user and mysql group with a default directory of /usr/local/mysql<br />
<br />
<b>Step 4: Compile and Install MySQL with InnoDB support</b><br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">cd /usr/tmp/mysql-5.1.24-rc<BR>./configure --with-innodb<BR>make all<BR>make install</code><hr />
</div> <br />
<b>Step 5: Install default MySQL tables</b><br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">cd /usr/local/bin<BR>./mysql_install_db<BR>cd /usr/local<BR>chown -R mysql:mysql var</code><hr />
</div> <br />
<b>Step 6: Startup MySQL and connect to it </b><br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">/usr/local/bin/mysqld_safe &amp;<BR>/usr/local/bin/mysql</code><hr />
</div> <br />
<b>Step 7: Set MySQL to start automatically when the machine reboots</b><br />
<br />
Save the file below under /usr/local/etc/rc.d and call it mysqlstart.sh<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">/usr/local/bin/mysqld_safe &amp;</code><hr />
</div> <br />
Mark it as an executable<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">chmod 755 /usr/local/etc/rc.d/mysqlstart.sh</code><hr />
</div> <br />
<b>Step 8: Customizations</b><br />
<br />
The following steps are optional.  <br />
<br />
By this point you should have MySQL installed and running on your new FreeBSD machine.<br />
<br />
The customizations below are things that we do here at SoftwareProjects and are designed to get the most juice out of MySQL 5.1 in our environment.<br />
All of our MySQL database machines run on FreeBSD 6/7 with a minimum of 4GB memory.<br />
<br />
Shutdown the MySQL database<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">/usr/local/bin/mysqladmin shutdown</code><hr />
</div> <br />
Move the data directory to /usr/local/mysql/data<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">mv /usr/local/var /usr/local/mysql/data</code><hr />
</div> <br />
Save our custom <a href="http://www.softwareprojects.com/marcom/my.cnf" target="_blank">MySQL configuration file</a> under /etc/my.cnf <br />
<br />
Note: Be sure to assign a unique server-id and note the auto-increment field - this is useful for master/master setups.<br />
<br />
<b>Step 9: Lift process size restrictions</b><br />
<br />
FreeBSD limits process max size in memory to 512MB. We're going to want to use more for MySQL.<br />
<br />
To lift FreeBSD process size restrictions, we have to update /boot/loader.conf with:<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">sl_aacu_load="YES"<BR>kern.maxdsiz="2073741824" # 2GB<BR>kern.dfldsiz="2073741824" # 2GB<BR>#kern.maxssiz="536870912" # 512MB</code><hr />
</div> <br />
<br />
And then reboot the machine<br />
<br />
<b>Step 10: Populate database with data</b><br />
<br />
Typically when we install a new database server, we want to populate it with data from another database.<br />
<br />
The absolute easiest way to populate a secondary MySQL database machine with data from another MySQL database, is by using a script called <a href="http://www.innodb.com/support/documentation/innodb-hot-backup-manual/" target="_blank">InnoDBBackup</a> by the makers of InnoDB.<br />
<br />
Install both ibbackup and the Perl innobackup script on the master database machine (the one you are looking to transfer data from)<br />
<br />
create a backup of the database (the great thing about this is you never have to take the database down):<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">./innobackup /etc/my.cnf /usr/local/mysql/databackup</code><hr />
</div> <br />
Once the backup completes, transfer all the data over from the master to this new machine we are setting up -<br />
<br />
On the new machine we are setting up, create a new directory to hold the backup:<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">mkdir /usr/local/mysql/databackup<BR>chmod a+rw /usr/local/mysql/databackup</code><hr />
</div> <br />
On the master machine, issue this tar command:<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">tar -czpf - /usr/local/mysql/databackup --exclude mysql | ssh -lUSERNAME NEWHOST.COM tar -xzpf - -C /usr/local/mysql/databackup</code><hr />
</div> <br />
Once the tar is done, copy ibbackup and innobackup to the destination machine under /usr/tmp and run this command:<br />
<br />
<div style="margin:20px; margin-top:5px">
	<div class="smallfont" style="margin-bottom:2px">Code:</div>
	<hr /><code style="margin:0px" dir="ltr" style="text-align:left">./innobackup --apply-log /etc/my.cnf /usr/local/mysql/databackup/2008-05-02_09-34-03/backup-my.cnf </code><hr />
</div> <br />
Replace the 2008-05-02... with the name of your backup folder]]></description>

		<wfw:commentRss>http://www.softwareprojects.com/resources/programming/t-installing-mysql-51-on-freebsd-1510.html</wfw:commentRss>
		<feedburner:origLink>http://www.softwareprojects.com/resources/programming/t-installing-mysql-51-on-freebsd-1510.html</feedburner:origLink>

</item>

</channel></rss>