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

<channel>
	<title>Programmers.biz</title>
	<atom:link href="http://programmers.biz/feed" rel="self" type="application/rss+xml" />
	<link>http://programmers.biz</link>
	<description>Everything related to programmers and programming business</description>
	<pubDate>Tue, 16 Mar 2010 01:00:07 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>15 Flash Websites with Fancy Use of Video</title>
		<link>http://programmers.biz/programming-articles/15-flash-websites-with-fancy-use-of-video</link>
		<comments>http://programmers.biz/programming-articles/15-flash-websites-with-fancy-use-of-video#comments</comments>
		<pubDate>Tue, 16 Mar 2010 01:00:07 +0000</pubDate>
		<dc:creator>Programmers.biz Admin</dc:creator>
		
		<category><![CDATA[Programming Articles]]></category>

		<guid isPermaLink="false">http://programmers.biz/programming-articles/15-flash-websites-with-fancy-use-of-video</guid>
		<description><![CDATA[Nowadays, there are a lot of people that prefer using videos  to bring their websites to life. This is a smart choice if you&#8217;re planning to deliver and promote a product to your audience. It also give&#8230;
Post from: Programmers.biz
<p>Post from: <a href="http://programmers.biz">Programmers.biz</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Nowadays, there are a lot of people that prefer using videos  to bring their websites to life. This is a smart choice if you&#8217;re planning to deliver and promote a product to your audience. It also give&#8230;</p>
<p>Post from: <a href="http://programmers.biz">Programmers.biz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://programmers.biz/programming-articles/15-flash-websites-with-fancy-use-of-video/feed</wfw:commentRss>
		</item>
		<item>
		<title>About Custom Web Development</title>
		<link>http://programmers.biz/programming-articles/about-custom-web-development</link>
		<comments>http://programmers.biz/programming-articles/about-custom-web-development#comments</comments>
		<pubDate>Tue, 16 Mar 2010 01:00:07 +0000</pubDate>
		<dc:creator>Programmers.biz Admin</dc:creator>
		
		<category><![CDATA[Programming Articles]]></category>

		<guid isPermaLink="false">http://programmers.biz/programming-articles/about-custom-web-development</guid>
		<description><![CDATA[Custom web coding lets service providers to create a highly targeted online surfing session for possible customers. A web administrator which can offer a personal surfing experience must find it much quicker to get repeat consumers and promote future business. Let us face it, not all webpages are made equally.
Post from: Programmers.biz
<p>Post from: <a href="http://programmers.biz">Programmers.biz</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Custom web coding lets service providers to create a highly targeted online surfing session for possible customers. A web administrator which can offer a personal surfing experience must find it much quicker to get repeat consumers and promote future business. Let us face it, not all webpages are made equally.</p>
<p>Post from: <a href="http://programmers.biz">Programmers.biz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://programmers.biz/programming-articles/about-custom-web-development/feed</wfw:commentRss>
		</item>
		<item>
		<title>Learning Server-Side JavaScript with Node.js</title>
		<link>http://programmers.biz/programming/learning-server-side-javascript-with-nodejs</link>
		<comments>http://programmers.biz/programming/learning-server-side-javascript-with-nodejs#comments</comments>
		<pubDate>Tue, 16 Mar 2010 01:00:07 +0000</pubDate>
		<dc:creator>Programmers.biz Admin</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://programmers.biz/programming/learning-server-side-javascript-with-nodejs</guid>
		<description><![CDATA[Node.js is all the buzz at the moment, and makes creating high performance, real-time web applications easy.  It allows JavaScript to be used end to end, both on the server and on the client.  This tutorial will walk you through the installation of Node and your first &#8220;Hello World&#8221; program, to building a [...]<p>Post from: <a href="http://programmers.biz">Programmers.biz</a></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://nodejs.org/">Node.js</a> is all the buzz at the moment, and makes creating high performance, real-time web applications easy.  It allows JavaScript to be used end to end, both on the server and on the client.  This tutorial will walk you through the installation of Node and your first &#8220;Hello World&#8221; program, to building a scalable streaming Twitter server.</p>
<p><span></span></p>
<h2>What is Node.js? </h2>
<div>
<a href="http://nodejs.org/"><br />
<img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/b8547_node.jpg" alt="NodeJS" /><br />
</a>
</div>
<p>JavaScript has traditionally only run in the web browser, but recently there has been considerable interest in bringing it to the server side as well, thanks to the <a href="http://commonjs.org/">CommonJS project</a>.  Other server-side JavaScript environments include <a href="http://www.jaxer.org/">Jaxer</a> and <a href="http://narwhaljs.org/">Narwhal</a>.  However, <a href="http://nodejs.org/">Node.js</a> is a bit different from these solutions, because it is event-based rather than thread based.  Web servers like Apache that are used to serve PHP and other CGI scripts are thread based because they spawn a system thread for every incoming request.  While this is fine for many applications, the thread based model does not scale well with many long-lived connections like you would need in order to serve real-time applications like <a href="http://friendfeed.com/">Friendfeed</a> or <a href="http://wave.google.com/">Google Wave</a>.  </p>
<blockquote><p>
&#8220;Every I/O operation in Node.js is asynchronous&#8230;&#8221;
</p>
</blockquote>
<p>Node.js, uses an event loop instead of threads, and is able to scale to millions of concurrent connections.  It takes advantage of the fact that servers spend most of their time waiting for I/O operations, like reading a file from a hard drive, accessing an external web service or waiting for a file to finish being uploaded, because these operations are much slower than in memory operations.  Every I/O operation in Node.js is asynchronous, meaning that the server can continue to process incoming requests while the I/O operation is taking place.  JavaScript is extremely well suited to event-based programming because it has anonymous functions and closures which make defining inline callbacks a cinch, and JavaScript developers already know how to program in this way.  This event-based model makes Node.js very fast, and makes scaling real-time applications very easy.</p>
<hr />
<h2><span>Step 1</span> Installation </h2>
<p>Node.js runs on Unix based systems, such as Mac OS X, Linux, and FreeBSD.  Unfortunately, Windows is not yet supported, so if you are a Windows user, you can install it on Ubuntu Linux using Virtualbox.  To do so, follow <a href="http://www.psychocats.net/ubuntu/virtualbox">this tutorial</a>.  You will need to use the terminal to install and run Node.js.</p>
<ol>
<li>Download the latest release of Node.js from <a href="http://nodejs.org/#download">nodejs.org</a> (the latest version at the time of this writing is 0.1.31) and unzip it.</li>
<li>Open the terminal, and run the following commands.
<pre>cd /path/to/nodejs
make
sudo make install
		</pre>
<p>		A lot of messages will be outputted to the terminal as Node.js is compiled and installed.
	</li>
</ol>
<div><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/b8547_1.jpg" border="0" /></div>
<hr />
<h2><span>Step 2</span> Hello World! </h2>
<p>Every new technology starts with a &#8220;Hello World!&#8221; tutorial, so we will create a simple HTTP server that serves up that message.  First, however, you have to understand the Node.js module system.  In Node, functionality is encapsulated in modules which must be loaded in order to be used.  There are many modules listed in the <a href="http://nodejs.org/api.html">Node.js documentation</a>.  You load these modules by using the <code>require</code> function like so: </p>
<pre>
var sys = require("sys");
</pre>
<p>This loads the sys module, which contains functions for dealing with system level tasks like printing output to the terminal.  To use a function in a module, you call it on the variable that you stored the module in, in our case <code>sys</code>.</p>
<pre>
sys.puts("Hello World!");
</pre>
<p>Running these two lines is as simple as running the <code>node</code> command with the filename of the javascript file as an argument.</p>
<pre>
node test.js
</pre>
<p>This will output &#8220;Hello World!&#8221; to the command line when run.</p>
<div><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/b8547_2.jpg" border="0" /></div>
<p>To create an HTTP server, you must <code>require</code> the <code>http</code> module.</p>
<pre>
var sys = require("sys"),
    http = require("http");

http.createServer(function(request, response) {
    response.sendHeader(200, {"Content-Type": "text/html"});
    response.write("Hello World!");
    response.close();
}).listen(8080);

sys.puts("Server running at http://localhost:8080/");
</pre>
<p>This script imports the <code>sys</code> and <code>http</code> modules, and creates an HTTP server.  The anonymous function that is passed into <code>http.createServer</code> will be called whenever a request comes in to the server.  Once the server is created, it is told to listen on port 8080.  When a request to the server comes in, we first send HTTP headers with the content type and status code of 200 (successful).  Then we send &#8220;Hello World!&#8221; and close the connection.  You might notice that we have to explicitly close the connection.  This will make it very easy to stream data to the client without closing the connection.  If you run this script and go to <code>http://localhost:8080/</code> in your browser, you will see &#8220;Hello World!&#8221;</p>
<div><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/f06d9_3.jpg" border="0" /></div>
<hr />
<h2><span>Step 3</span> A Simple Static File Server </h2>
<p>OK, so we have built an HTTP server, but it doesn&#8217;t send anything except for &#8220;Hello World,&#8221; no matter what URL you go to.  Any HTTP server must be able to send static files such as HTML files, images and other files.  The following code does just that:</p>
<pre>
var sys = require("sys"),
    http = require("http"),
    url = require("url"),
    path = require("path"),
    fs = require("fs");

http.createServer(function(request, response) {
    var uri = url.parse(request.url).pathname;
    var filename = path.join(process.cwd(), uri);
    path.exists(filename, function(exists) {
    	if(!exists) {
    		response.sendHeader(404, {"Content-Type": "text/plain"});
    		response.write("404 Not Found\n");
    		response.close();
    		return;
    	}

    	fs.readFile(filename, "binary", function(err, file) {
    		if(err) {
    			response.sendHeader(500, {"Content-Type": "text/plain"});
    			response.write(err + "\n");
    			response.close();
    			return;
    		}

    		response.sendHeader(200);
    		response.write(file, "binary");
    		response.close();
    	});
    });
}).listen(8080);

sys.puts("Server running at http://localhost:8080/");
</pre>
<p>We start by requiring all of the modules that we will need in our code.  This includes the <code>sys</code>, <code>http</code>, <code>url</code>, <code>path</code>, and <code>fs</code> or filesystem modules.  Next we create an HTTP server like we did before.  This time, we will use the <code>url</code> module to parse the incoming URL of the request and find the pathname of the file being accessed.  We find the actual filename on the server&#8217;s hard drive by using <code>path.join</code>, which joins <code>process.cwd()</code>, or the current working directory, with the path to the file being requested.  Next, we check if the file exists, which is an asynchronous operation and thus requires a callback.  If the file does not exist, a 404 Not Found message is sent to the user and the function returns.  Otherwise, we read the file using the <code>fs</code> module using the &#8220;binary&#8221; encoding, and send the file to the user.  If there is an error reading the file, we present the error message to the user, and close the connection.  Because all of this is asynchronous, the server is able to serve other requests while reading the file from the disk no matter how large it is.</p>
<p>If you run this example, and navigate to <code>http://localhost:8080/path/to/file</code>, that file will be shown in your browser.</p>
<div><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/f06d9_4.jpg" border="0" /></div>
<hr />
<h2><span>Step 4</span> A Real Time Tweet Streamer </h2>
<p>Building on our static file server, we will build a server in Node.js that streams tweets to a client that is served through our static file server.  To start, we will need one extra module in this example: the <code>events</code> module.  Node has a concept called an <code>EventEmitter</code>, which is used all over to handle event listeners for asynchronous tasks.  Much like in jQuery or another client side JavaScript framework where you bind event listeners to things like mouse clicks, and AJAX requests, Node allows you to bind event listeners to many things, some of which we have already used.  These include every I/O operation, such as reading a file, writing a file, checking if a file exists, waiting for HTTP requests, etc.  The <code>EventEmitter</code> abstracts the logic of binding, unbinding, and triggering such event listeners.  We will be using an <code>EventEmitter</code> to notify listeners when new tweets are loaded.  The first few lines of our tweet streamer imports all of the required modules, and defines a function for handling static files, which was taken from our previous example.</p>
<pre>
var sys = require("sys"),
    http = require("http"),
    url = require("url"),
    path = require("path"),
    fs = require("fs"),
    events = require("events");

function load_static_file(uri, response) {
	var filename = path.join(process.cwd(), uri);
	path.exists(filename, function(exists) {
		if(!exists) {
			response.sendHeader(404, {"Content-Type": "text/plain"});
			response.write("404 Not Found\n");
			response.close();
			return;
		}

		fs.readFile(filename, "binary", function(err, file) {
			if(err) {
				response.sendHeader(500, {"Content-Type": "text/plain"});
				response.write(err + "\n");
				response.close();
				return;
			}

			response.sendHeader(200);
			response.write(file, "binary");
			response.close();
		});
	});
}
</pre>
<p>We have used the <code>http</code> module to create a server before, but it is also possible to create an HTTP client using the module.  We will be creating an HTTP client to load tweets from Twitter&#8217;s public timeline, which is performed by the <code>get_tweets</code> function.</p>
<pre>
var twitter_client = http.createClient(80, "api.twitter.com");

var tweet_emitter = new events.EventEmitter();

function get_tweets() {
	var request = twitter_client.request("GET", "/1/statuses/public_timeline.json", {"host": "api.twitter.com"});

	request.addListener("response", function(response) {
		var body = "";
		response.addListener("data", function(data) {
			body += data;
		});

		response.addListener("end", function() {
			var tweets = JSON.parse(body);
			if(tweets.length &gt; 0) {
				tweet_emitter.emit("tweets", tweets);
			}
		});
	});

	request.close();
}

setInterval(get_tweets, 5000);
</pre>
<p>First, we create an HTTP client on port 80 to api.twitter.com, and create a new <code>EventEmitter</code>.  The <code>get_tweets</code> function creates an HTTP &#8220;GET&#8221; request to Twitter&#8217;s public timeline, and adds an event listener that will be triggered when Twitter&#8217;s servers respond.  Because Node.js is asynchronous, the data in the body of the response comes in chunks, which are picked up by the response&#8217;s &#8220;data&#8221; listener.  This listener simply appends the chunk to the <code>body</code> variable.  Once all of the chunks have come in, the &#8220;end&#8221; listener is triggered, and we parse the incoming JSON data.  If more than one tweet is returned, we <code>emit</code> the &#8220;tweets&#8221; event on our <code>tweet_emitter</code>, and pass in the array of new tweets.  This will trigger all of the event listeners listening for the &#8220;tweets&#8221; event, and send the new tweets to each client.  We retreive the new tweets every five seconds, by using <code>setInterval</code>.</p>
<p>Finally, we need to create the HTTP server to handle requests.</p>
<pre>
http.createServer(function(request, response) {
    var uri = url.parse(request.url).pathname;
    if(uri === "/stream") {

    	var listener = tweet_emitter.addListener("tweets", function(tweets) {
    		response.sendHeader(200, { "Content-Type" : "text/plain" });
    		response.write(JSON.stringify(tweets));
    		response.close();

    		clearTimeout(timeout);
    	});

    	var timeout = setTimeout(function() {
    		response.sendHeader(200, { "Content-Type" : "text/plain" });
    		response.write(JSON.stringify([]));
    		response.close();

    		tweet_emitter.removeListener(listener);
    	}, 10000);

    }
    else {
    	load_static_file(uri, response);
    }
}).listen(8080);

sys.puts("Server running at http://localhost:8080/");
</pre>
<p>Just as we did with our static file server, we create an HTTP server that listens on port 8080.  We parse the requested URL, and if the URL is equal to <code>"/stream"</code>, we will handle it, otherwise we pass the request off to our static file server.  Streaming consists of creating a listener to listen for new tweets on our <code>tweet_emitter</code>, which will be triggered by our <code>get_tweets</code> function.  We also create a timer to kill requests tht last over 10 seconds by sending them an empty array.  When new tweets come in, we send the tweets as JSON data, and clear the timer.  You will see how this works better after seeing the client side code, which is below.  Save it as <code>test.html</code> in the same directory as the server side JavaScript.</p>
<pre>
&lt;!DOCTYPE html&gt;
&lt;html&gt;
	&lt;head&gt;
		&lt;title&gt;Tweet Streamer&lt;/title&gt;
		&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"&gt;&lt;/script&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;ul id="tweets"&gt;&lt;/ul&gt;
		&lt;script type="text/javascript"&gt;
		var tweet_list = $("#tweets");

		function load_tweets() {
			$.getJSON("/stream", function(tweets) {
				$.each(tweets, function() {
					$("&lt;li&gt;").html(this.text).prependTo(tweet_list);
				});
				load_tweets();
			});
		}

		setTimeout(load_tweets, 1000);
		&lt;/script&gt;
	&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Here, we have a simple HTML page that imports the jQuery library and defines an unordered list to put the tweets in.  Our client side JavaScript caches the tweet list, and runs the <code>load_tweets</code> function after one second.  This gives the browser enough time to finish loading the page before we start the AJAX request to the server.  The <code>load_tweets</code> function is very simple: It uses jQuery&#8217;s <code>getJSON</code> function to load <code>/stream</code>.  When a response comes in, we loop through all of the tweets and prepend them to the tweet list.  Then, we call <code>load_tweets</code> again.  This effectively creates a loop that loads new tweets, which times out after ten seconds because of the timeout on the server.  Whenever there are new tweets, they are pushed to the client which maintains a continuous connection to the server.  This technique is called long-polling.</p>
<p>If you run the server using <code>node</code> and go to <code>http://localhost:8080/test.html</code>, you will see the Twitter public timeline stream into your browser.</p>
<div><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/f06d9_5.jpg" border="0" /></div>
<hr />
<h2>Next Steps </h2>
<p>Node.js is a very exciting technology that makes it easy to create high performance real time applications.  I hope you can see its benefit, and can use it in some of your own applications.  Because of Node&#8217;s great module system, it is easy to use prewritten code in your application, and there are many third party modules available for just about everything &#8211; including database connection layers, templating engines, mail clients, and even entire frameworks connecting all of these things together.  You can see a complete list of modules on the <a href="http://wiki.github.com/ry/node/modules">Node.js wiki</a>, and more Node tutorials can be found on <a href="http://howtonode.org/">How To Node</a>.  I would also recommend that you watch a video from JSConf, in which Ryan Dahl, the creator of Node, describes the design philosophy behind Node.  That is available <a href="http://blip.tv/file/2899135">here</a>.</p>
<p>I hope you have enjoyed this tutorial.  If you have any comments, you can leave one here or send me a message on <a href="http://twitter.com/devongovett">Twitter</a>.  Happy noding!</p>
<p><a href="http://feedads.g.doubleclick.net/~a/wmmZruXav-KgIjnqRy6hb61SA4s/0/da"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/f06d9_di" border="0"></img></a><br />
<a href="http://feedads.g.doubleclick.net/~a/wmmZruXav-KgIjnqRy6hb61SA4s/1/da"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/f06d9_di" border="0"></img></a></p>
<div>
<a href="http://feeds.feedburner.com/~ff/nettuts?a=ndZ5-XeHlao:U3WClRUQdOs:yIl2AUoC8zA"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/f06d9_nettuts?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/nettuts?a=ndZ5-XeHlao:U3WClRUQdOs:F7zBnMyn0Lo"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/41e80_nettuts?i=ndZ5-XeHlao:U3WClRUQdOs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/nettuts?a=ndZ5-XeHlao:U3WClRUQdOs:V_sGLiPBpWU"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/41e80_nettuts?i=ndZ5-XeHlao:U3WClRUQdOs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/nettuts?a=ndZ5-XeHlao:U3WClRUQdOs:gIN9vFwOqvQ"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/41e80_nettuts?i=ndZ5-XeHlao:U3WClRUQdOs:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/nettuts?a=ndZ5-XeHlao:U3WClRUQdOs:TzevzKxY174"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/41e80_nettuts?d=TzevzKxY174" border="0"></img></a>
</div>
<p><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/41e80_ndZ5-XeHlao" height="1" width="1" /></p>
<p>Post from: <a href="http://programmers.biz">Programmers.biz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://programmers.biz/programming/learning-server-side-javascript-with-nodejs/feed</wfw:commentRss>
		</item>
		<item>
		<title>Banner design importance</title>
		<link>http://programmers.biz/programming-articles/banner-design-importance</link>
		<comments>http://programmers.biz/programming-articles/banner-design-importance#comments</comments>
		<pubDate>Sun, 14 Mar 2010 03:00:07 +0000</pubDate>
		<dc:creator>Programmers.biz Admin</dc:creator>
		
		<category><![CDATA[Programming Articles]]></category>

		<guid isPermaLink="false">http://programmers.biz/programming-articles/banner-design-importance</guid>
		<description><![CDATA[Web site design can become expensive work. Before your company starts out on the World-Wide-Web, be sure such costs are necessary. Your business can have a professional looking web site by simply orde&#8230;
Post from: Programmers.biz
<p>Post from: <a href="http://programmers.biz">Programmers.biz</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Web site design can become expensive work. Before your company starts out on the World-Wide-Web, be sure such costs are necessary. Your business can have a professional looking web site by simply orde&#8230;</p>
<p>Post from: <a href="http://programmers.biz">Programmers.biz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://programmers.biz/programming-articles/banner-design-importance/feed</wfw:commentRss>
		</item>
		<item>
		<title>Teach Me to Build My Own Website</title>
		<link>http://programmers.biz/programming-articles/teach-me-to-build-my-own-website</link>
		<comments>http://programmers.biz/programming-articles/teach-me-to-build-my-own-website#comments</comments>
		<pubDate>Sun, 14 Mar 2010 03:00:07 +0000</pubDate>
		<dc:creator>Programmers.biz Admin</dc:creator>
		
		<category><![CDATA[Programming Articles]]></category>

		<guid isPermaLink="false">http://programmers.biz/programming-articles/teach-me-to-build-my-own-website</guid>
		<description><![CDATA[There are several steps required to successfully build your own website. Here are some of the steps I took or looked at when I decided to build my own website.
Post from: Programmers.biz
<p>Post from: <a href="http://programmers.biz">Programmers.biz</a></p>
]]></description>
			<content:encoded><![CDATA[<p>There are several steps required to successfully build your own website. Here are some of the steps I took or looked at when I decided to build my own website.</p>
<p>Post from: <a href="http://programmers.biz">Programmers.biz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://programmers.biz/programming-articles/teach-me-to-build-my-own-website/feed</wfw:commentRss>
		</item>
		<item>
		<title>How to Build a Lava-Lamp Style Navigation Menu</title>
		<link>http://programmers.biz/programming/how-to-build-a-lava-lamp-style-navigation-menu</link>
		<comments>http://programmers.biz/programming/how-to-build-a-lava-lamp-style-navigation-menu#comments</comments>
		<pubDate>Sun, 14 Mar 2010 03:00:06 +0000</pubDate>
		<dc:creator>Programmers.biz Admin</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://programmers.biz/programming/how-to-build-a-lava-lamp-style-navigation-menu</guid>
		<description><![CDATA[
A couple weeks ago, I created a screencast that demonstrated how to build a three-level navigation menu. In a response email, one of our readers requested a tutorial on how to build a lava-lamp style menu. Luckily, it&#8217;s quite a simple task, especially when using a JavaScript library. We&#8217;ll build one from scratch today.



  [...]<p>Post from: <a href="http://programmers.biz">Programmers.biz</a></p>
]]></description>
			<content:encoded><![CDATA[<p>
A <a href="http://net.tutsplus.com/tutorials/design-tutorials/how-to-build-and-enhance-a-3-level-navigation-menu/">couple weeks ago</a>, I created a screencast that demonstrated how to build a three-level navigation menu. In a response email, one of our readers requested a tutorial on how to build a lava-lamp style menu. Luckily, it&#8217;s quite a simple task, especially when using a JavaScript library. We&#8217;ll build one from scratch today.
</p>
<p><span></span></p>
<div>
   <img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/a7772_screenshot.jpg" alt="Screenshot" />
</div>
<h2>Prefer a Screencast? </h2>
<div>
</div>
<h2><span>Step 1</span> Create the Mark-up</h2>
<p>
Before we can create this neat functionality, we need a base from which to work from. In your favorite code editor, create an unordered list for your navigation, and import both jQuery and jQuery UI, via Google.
</p>
<pre>
&lt;!DOCTYPE html&gt;

&lt;html lang="en"&gt;
&lt;head&gt;
	&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;
	&lt;title&gt;SpasticNav  Plugin&lt;/title&gt;
	&lt;link rel="stylesheet" href="css/style.css" type="text/css" media="screen" /&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;div id="container"&gt;

	&lt;ul id="nav"&gt;
		&lt;li id="selected"&gt;&lt;a href="#"&gt;Home&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="#"&gt;About&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="#"&gt;Blog&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="#"&gt;More About My Portfolio&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="#"&gt;Contact&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;

&lt;/div&gt;

&lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript"&gt;&lt;/script&gt;	

&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"&gt;&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Note how we gave an id of &#8220;selected&#8221; to the home page. This is fairly standard in most websites; it allows use to target the current page, and style that particular list item accordingly. </p>
<p>Next, we must decide how to best implement the lava-lamp functionality. To allow for reusability, we&#8217;ll package this little script into a plugin, and call it like: </p>
<pre>
$('#nav').spasticNav();
</pre>
<p>
Since we&#8217;ve decided to build a plugin, let&#8217;s go ahead and create a new file for that script, and reference it in our mark-up. We&#8217;ll call it jquery.spasticNav.js.
</p>
<pre>
&lt;script type="text/javascript" src="js/jquery.spasticNav.js"&gt;&lt;/script&gt;	

&lt;script type="text/javascript"&gt;
$('#nav').spasticNav();
&lt;/script&gt;
&lt;/body&gt;
</pre>
<h2><span>Step 2</span> Beginning the Plugin</h2>
<p>
To reduce the number of global variables that we must create, as well as remove any possibilities of the $ symbol clashing with other JavaScript libraries, let&#8217;s wrap our plugin in a self-executing anonymous function.
</p>
<pre>
(function($) {

})(jQuery);
</pre>
<p>Now, jQuery will be passed into our plugin, and will be represented via the $ symbol. </p>
<p>Next, it&#8217;s generally a best practice to give the users of the plugin as much flexibility as possible. As such, we&#8217;ll give them the option of passing in an object-literal when they call the plugin to override a handful of settings. As I see it, they should be able to: </p>
<ul>
<li>Set the amount of overlap for our little blob. This refers to how much the blob will exceed the height of the navigation menu. </li>
<li>Set the speed </li>
<li>Set a reset, which causes the blob to move back to the current page item (assuming that the user never clicks on a link) </li>
<li>Set the color of the blob. This can be accomplished with CSS, but it&#8217;s a nice convenience, nonetheless. </li>
<li>Set the easing option. </li>
</ul>
<p>Now, we&#8217;ll name our plugin, and make it equal to a function. $.fn is simply an alias for jquery.prototype. </p>
<pre>
$.fn.spasticNav = function(options) {

};
</pre>
<p>Knowing that we&#8217;ll be allowing these overrides, we must make sure that we accept an &#8220;options&#8221; parameter. </p>
<h2><span>Step 3</span> Configuration Options </h2>
<p>Now that we&#8217;ve named our plugin, the next step is to create the configuration options. </p>
<pre>
options = $.extend({
	overlap : 20,
	speed : 500,
	reset : 1500,
	color : '#0b2b61',
	easing : 'easeOutExpo'
}, options);
</pre>
<p>Above, we&#8217;re taking the options variable, setting some default properties and values, and then extending it with whatever (if anything) the user passes in when they call the plugin. That way, the options they pass will override our default settings. For example, if, when I call this plugin, I pass: </p>
<pre>
$('#nav').spasticNav({
   speed : 2000,
   easing : 'easeOutElastic'
});
</pre>
<p>
Those two properties will override the default settings, while the remainder of the options will remain the same.
</p>
<h2><span>Step 4</span> Implementing the Functionality </h2>
<p>
Now, we&#8217;re ready to cycle through each element that was passed to this plugin, and implement the lava-lamp functionality. Remember, we can&#8217;t assume that the user is going to pass a single element to this plugin. They could, if they wanted, reference a class, which refers to multiple items that should receive this functionality. As such, we&#8217;ll call this.each to iterate over each item in the wrapped set.
</p>
<pre>
return this.each(function() {

});
</pre>
<p>Within this function, we&#8217;ll create some variables. Not all of them will immediately have values, but since the JavaScript engine will hoist all variable names to the top of the function anyways (behind the scenes), it&#8217;s generally a best practice to declare them at the top, and then initialize them later. </p>
<pre>
var nav = $(this),
	currentPageItem = $('#selected', nav),
	blob,
	reset;
</pre>
<ul>
<li><strong>nav : </strong> &#8220;Caches&#8221; <em>this</em>, wrapped in the jQuery object. </li>
<li><strong>currentPageItem : </strong> Contains the list item with an id of selected. We pass a second parameter to set the context to search from. That way, we don&#8217;t have to traverse the entire dom to find this element.  </li>
<li><strong>blob : </strong> For lack of a better word, this variable will reference the highlighter, that will follow our mouse when we hover over the menu. </li>
<li><strong>reset : </strong> This will store a reference to the setTimeout function that will create later. It&#8217;s needed in order to call clearTimeout. More on this soon&#8230; </li>
</ul>
<p>Now that we&#8217;ve declared/initialized our variables, let&#8217;s create the actual blob, so to speak. </p>
<pre>
$('&lt;li id="blob"&gt;&lt;/li&gt;').css({
	width : currentPageItem.outerWidth(),
	height : currentPageItem.outerHeight() + options.overlap,
	left : currentPageItem.position().left,
	top : currentPageItem.position().top - options.overlap / 2,
	backgroundColor : options.color
}).appendTo(this);
</pre>
<p>
The reason why we&#8217;re calling the CSS method, rather than simply adding a class, is because these values will vary depending on the current page&#8217;s list item. As such, we must use JavaScript to retrieve they values.
</p>
<ul>
<li><strong>width: </strong> Get the width of currentPageItem, including any borders and padding. </li>
<li><strong>height: </strong> Get the height of currentPageItem, including any borders and padding. Also, add the amount of overlap, to make the blob extend outside of the menu. </li>
<li><strong>left: </strong> Sets the left property of the blob equal to the left position of the currentPageItem. (We must set a positioning context in our CSS for this value to take effect.)</li>
<li><strong>top: </strong> Sets the top value as well, and vertically centers the blob. </li>
<li><strong>backgroundColor: </strong> Sets the background color. </li>
</ul>
<p>Finally, we append this new list item to <em>this</em>, or #nav. </p>
<p>Next, we need to store a reference to #blob. That way, we don&#8217;t have to search the DOM everytime we wish to access it. We declared the <em>blob</em> variable at the top of the function. Now, let&#8217;s initialize it. </p>
<pre>
blob = $('#blob', nav);
</pre>
<h2><span>Step 5</span> The Hover Event </h2>
<p>
We must now &#8220;listen&#8221; for when the user hovers over one of the list items (excluding the blob of course) in our navigation menu. When they do, we&#8217;ll set the width and left properties of the blob equal to that of the currently hovered list item.
</p>
<pre>
$('li:not(#blob)', nav).hover(function() {
	// mouse over
	clearTimeout(reset);
	blob.animate(
		{
			left : $(this).position().left,
			width : $(this).width()
		},
		{
			duration : options.speed,
			easing : options.easing,
			queue : false
		}
	);
}, function() {
	// mouse out
	reset = setTimeout(function() {
		blob.animate({
			width : currentPageItem.outerWidth(),
			left : currentPageItem.position().left
		}, options.speed)
	}, options.reset);

});
</pre>
<p>To summarize the script above&#8230; </p>
<ul>
<li>Get all list items &#8211; not the #blob &#8211; within the navigation menu, and when they&#8217;re hovered over, run a function. </li>
<li>Animate the blob, and set its left and width values equal to that of the hovered list item. </li>
<li>Pass an object literal as the second parameter of animate, and set the duration and easing equal to what we set in our configuration options. Set queue to false to prevent animation build-up. </li>
<li>When they mouse out, call setTimeOut, which will push the blob back to the current page item. If we didn&#8217;t do this, and the user didn&#8217;t click on a navigation link, the menu would show that they were on<br />
a different page entirely. This will, after a second or so, animate the blob back to currentPageItem. </li>
</ul>
<p>And that&#8217;s all there is to it! This is a super simple plugin. The next step is to style our navigation menu. </p>
<h2><span>Step 6</span> Styling the Menu </h2>
<p>Without any styling, our menu should look similar to this: </p>
<div>
   <img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/a7772_unstyled.png" alt="Unstyled mark-up" />
</div>
<p>Let&#8217;s first style the &#8220;nav&#8221; ul. Open your style.css file, and add: </p>
<pre>
#nav {
	position: relative;
	background: #292929;
	float: left;
}
</pre>
<div>
   <img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/adeac_two-nav.png" alt="Styling the navigation menu" />
</div>
<p>
Next, we&#8217;ll style each list item.
</p>
<pre>
#nav li {
	float: left;
	list-style: none;
	border-right: 1px solid #4a4a4a;
	border-left: 1px solid black;
}
</pre>
<p>This simply floats each list item to the left, and adds a border to each side. </p>
<div>
   <img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/adeac_three-navli.png" alt="Styling the list items" />
</div>
<p>Moving along, we next must style the anchor tags within our navigation menu. </p>
<pre>
#nav li a {
	color: #e3e3e3;
	position: relative;
	z-index: 2;
	float: left;
	font-size: 30px;
	font-family: helvetica, arial, sans-serif;
	text-decoration: none;
	padding: 30px 45px;
}
</pre>
<p>We&#8217;re setting a color, floating them to the left, setting some font values, and a healthy amount of padding. Take note of the z-index property. This is a necessity, and will be explained shortly. However, remember that, in order to adjust the z-index, we must set a positioning context, which we&#8217;ve done. </p>
<div>
   <img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/adeac_four-nava.png" alt="Styling the anchor tags" />
</div>
<p>Because we&#8217;re not implementing a full reset stylesheet, let&#8217;s ensure that we zero out any default margins and padding on our ul and li, just to save any potential headaches. </p>
<pre>
ul, li {
	margin: 0; padding: 0;
}
</pre>
<p>The last step is to style the blob itself! </p>
<pre>
#blob {
	border-right: 1px solid #0059ec;
	border-left: 1px solid #0059ec;
	position: absolute;
	top: 0;
	z-index : 1;
	background: #0b2b61;
	background: -moz-linear-gradient(top, #0b2b61, #1153c0);
	background: -webkit-gradient(linear, left top, left bottom, from(#0b2b61), to(#1153c0));
	-moz-border-radius: 4px;
	-webkit-border-radius: 4px;
	-moz-box-shadow: 2px 3px 10px #011331;
	-webkit-box-shadow: 2px 3px 10px #011331;
}
</pre>
<p>Once again, we set some pretty colors for our borders, and add some background colors (including CSS3 gradients/borders/shadows for Firefox and Safari/Chrome). Once again, we see that z-index property. Without this, the blob will display above all of the text in the navigation menu. To counter this, we must be sure that its z-index property is LOWER than the list item&#8217;s! We also must set the position to absolute in order to adjust its top and left values with our plugin. </p>
<div>
   <img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/a7772_screenshot.jpg" alt="Screenshot" />
</div>
<h2>Conclusion</h2>
<p>That&#8217;s all there is to it! With minimal effort, we&#8217;ve created a really neat looking navigation menu from scratch. Let me know if you have any questions! Thanks for reading and watching. </p>
<p><a href="http://feedads.g.doubleclick.net/~a/zz6Sof1P3eoUnVEXnR8OWsz2UZw/0/da"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/adeac_di" border="0"></img></a><br />
<a href="http://feedads.g.doubleclick.net/~a/zz6Sof1P3eoUnVEXnR8OWsz2UZw/1/da"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/adeac_di" border="0"></img></a></p>
<div>
<a href="http://feeds.feedburner.com/~ff/nettuts?a=D6XYq_6zWvM:q0e-MSVLTQI:yIl2AUoC8zA"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/adeac_nettuts?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/nettuts?a=D6XYq_6zWvM:q0e-MSVLTQI:F7zBnMyn0Lo"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/fe1f4_nettuts?i=D6XYq_6zWvM:q0e-MSVLTQI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/nettuts?a=D6XYq_6zWvM:q0e-MSVLTQI:V_sGLiPBpWU"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/fe1f4_nettuts?i=D6XYq_6zWvM:q0e-MSVLTQI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/nettuts?a=D6XYq_6zWvM:q0e-MSVLTQI:gIN9vFwOqvQ"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/fe1f4_nettuts?i=D6XYq_6zWvM:q0e-MSVLTQI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/nettuts?a=D6XYq_6zWvM:q0e-MSVLTQI:TzevzKxY174"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/fe1f4_nettuts?d=TzevzKxY174" border="0"></img></a>
</div>
<p><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/fe1f4_D6XYq_6zWvM" height="1" width="1" /></p>
<p>Post from: <a href="http://programmers.biz">Programmers.biz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://programmers.biz/programming/how-to-build-a-lava-lamp-style-navigation-menu/feed</wfw:commentRss>
		</item>
		<item>
		<title>Using SOA Consulting and Development to Improve Your Business Valu</title>
		<link>http://programmers.biz/programming-articles/using-soa-consulting-and-development-to-improve-your-business-valu</link>
		<comments>http://programmers.biz/programming-articles/using-soa-consulting-and-development-to-improve-your-business-valu#comments</comments>
		<pubDate>Fri, 12 Mar 2010 02:00:11 +0000</pubDate>
		<dc:creator>Programmers.biz Admin</dc:creator>
		
		<category><![CDATA[Programming Articles]]></category>

		<guid isPermaLink="false">http://programmers.biz/programming-articles/using-soa-consulting-and-development-to-improve-your-business-valu</guid>
		<description><![CDATA[The main function of SOA is to move company ITs from an outdated system architecture, based on autonomous applications tightly coupled together by custom integration processes, to a modern type&#8230;
Post from: Programmers.biz
<p>Post from: <a href="http://programmers.biz">Programmers.biz</a></p>
]]></description>
			<content:encoded><![CDATA[<p><b>The main function of SOA</b> is to move company ITs from an outdated system architecture, based on autonomous applications tightly coupled together by custom integration processes, to a modern type&#8230;</p>
<p>Post from: <a href="http://programmers.biz">Programmers.biz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://programmers.biz/programming-articles/using-soa-consulting-and-development-to-improve-your-business-valu/feed</wfw:commentRss>
		</item>
		<item>
		<title>How to Build a Website Into a Cash Cow</title>
		<link>http://programmers.biz/programming-articles/how-to-build-a-website-into-a-cash-cow</link>
		<comments>http://programmers.biz/programming-articles/how-to-build-a-website-into-a-cash-cow#comments</comments>
		<pubDate>Fri, 12 Mar 2010 02:00:10 +0000</pubDate>
		<dc:creator>Programmers.biz Admin</dc:creator>
		
		<category><![CDATA[Programming Articles]]></category>

		<guid isPermaLink="false">http://programmers.biz/programming-articles/how-to-build-a-website-into-a-cash-cow</guid>
		<description><![CDATA[There are myriads of people who have all discovered that a lot of money stands to be made on the internet. Their main problem however is that they do not know how to build a website from the ground up, and turn it into a prospective business.
Post from: Programmers.biz
<p>Post from: <a href="http://programmers.biz">Programmers.biz</a></p>
]]></description>
			<content:encoded><![CDATA[<p>There are myriads of people who have all discovered that a lot of money stands to be made on the internet. Their main problem however is that they do not know how to build a website from the ground up, and turn it into a prospective business.</p>
<p>Post from: <a href="http://programmers.biz">Programmers.biz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://programmers.biz/programming-articles/how-to-build-a-website-into-a-cash-cow/feed</wfw:commentRss>
		</item>
		<item>
		<title>CodeIgniter from Scratch: File Operations</title>
		<link>http://programmers.biz/programming/codeigniter-from-scratch-file-operations</link>
		<comments>http://programmers.biz/programming/codeigniter-from-scratch-file-operations#comments</comments>
		<pubDate>Fri, 12 Mar 2010 02:00:08 +0000</pubDate>
		<dc:creator>Programmers.biz Admin</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://programmers.biz/programming/codeigniter-from-scratch-file-operations</guid>
		<description><![CDATA[In today&#8217;s episode, we are going to be working with several helper functions, related to files, directories, and downloads. We are going to learn how to read, write, download files, and retrieve information about both files and directories. Also at the end we will build a small file browser that utilizes jQuery as well.

Catch Up

Day [...]<p>Post from: <a href="http://programmers.biz">Programmers.biz</a></p>
]]></description>
			<content:encoded><![CDATA[<p>In today&#8217;s episode, we are going to be working with several helper functions, related to files, directories, and downloads. We are going to learn how to read, write, download files, and retrieve information about both files and directories. Also at the end we will build a small file browser that utilizes jQuery as well.</p>
<p><span></span></p>
<h2>Catch Up</h2>
<ul>
<li><a href="http://net.tutsplus.com/videos/screencasts/codeigniter-from-scratch-day-1/">Day 1: Getting Started With the Framework</a></li>
<li><a href="http://net.tutsplus.com/videos/screencasts/codeigniter-from-scratch-day-2/">Day 2: Database Selecting Methods</a></li>
<li><a href="http://net.tutsplus.com/videos/screencasts/codeigniter-from-scratch-day-3/">Day 3: Sending Emails</a></li>
<li><a href="http://net.tutsplus.com/videos/screencasts/codeigniter-from-scratch-day-4-newsletter-signup/">Day 4: Newsletter Signup</a></li>
<li><a href="http://net.tutsplus.com/videos/screencasts/codeigniter-from-scratch-day-5-crud/">Day 5: CRUD</a></li>
<li><a href="http://net.tutsplus.com/videos/screencasts/codeigniter-from-scratch-day-6-login/">Day 6: Login</a></li>
<li><a href="http://net.tutsplus.com/videos/screencasts/codeigniter-from-scratch-day-7-pagination/">Day 7: Pagination</a></li>
<li><a href="http://net.tutsplus.com/videos/screencasts/codeigniter-from-scratch-day-8-ajax/">Day 8: AJAX</a></li>
<li><a href="http://net.tutsplus.com/videos/screencasts/codeigniter-from-scratch-file-uploading-and-image-manipulation/">Day 9: File Uploading and Image Manipulation</a></li>
<li><a href="http://net.tutsplus.com/tutorials/php/codeigniter-from-scratch-the-calendar-library/">Day 10: The Calendar Library</a></li>
<li><a href="http://net.tutsplus.com/tutorials/php/codeigniter-from-scratch-file-operations/">Day 11: File and Directory Operations</a></li>
</ul>
<h2>Day 11: File Operations</h2>
<div>
<div><a href="http://get.adobe.com/flashplayer/">Get the Flash Player</a> to see this player.</div>
</p></div>
</p>
<div>
   <img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/535f6_ss.png" alt="Final Example" />
</div>
<p><a href="http://feedads.g.doubleclick.net/~a/S45-IndtbAZc1usPy1uOneTB8lM/0/da"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/535f6_di" border="0"></img></a><br />
<a href="http://feedads.g.doubleclick.net/~a/S45-IndtbAZc1usPy1uOneTB8lM/1/da"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/65c96_di" border="0"></img></a></p>
<div>
<a href="http://feeds.feedburner.com/~ff/nettuts?a=9ZFzOtJPBSE:s9dEubNtVAQ:yIl2AUoC8zA"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/65c96_nettuts?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/nettuts?a=9ZFzOtJPBSE:s9dEubNtVAQ:F7zBnMyn0Lo"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/65c96_nettuts?i=9ZFzOtJPBSE:s9dEubNtVAQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/nettuts?a=9ZFzOtJPBSE:s9dEubNtVAQ:V_sGLiPBpWU"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/65c96_nettuts?i=9ZFzOtJPBSE:s9dEubNtVAQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/nettuts?a=9ZFzOtJPBSE:s9dEubNtVAQ:gIN9vFwOqvQ"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/65c96_nettuts?i=9ZFzOtJPBSE:s9dEubNtVAQ:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/nettuts?a=9ZFzOtJPBSE:s9dEubNtVAQ:TzevzKxY174"><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/65c96_nettuts?d=TzevzKxY174" border="0"></img></a>
</div>
<p><img src="http://programmers.biz/wp-content/plugins/wp-o-matic/cache/65c96_9ZFzOtJPBSE" height="1" width="1" /></p>
<p>Post from: <a href="http://programmers.biz">Programmers.biz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://programmers.biz/programming/codeigniter-from-scratch-file-operations/feed</wfw:commentRss>
		</item>
		<item>
		<title>Web Development Services - Contribution of Programming and Testing</title>
		<link>http://programmers.biz/programming-articles/web-development-services-contribution-of-programming-and-testing</link>
		<comments>http://programmers.biz/programming-articles/web-development-services-contribution-of-programming-and-testing#comments</comments>
		<pubDate>Wed, 10 Mar 2010 02:00:19 +0000</pubDate>
		<dc:creator>Programmers.biz Admin</dc:creator>
		
		<category><![CDATA[Programming Articles]]></category>

		<guid isPermaLink="false">http://programmers.biz/programming-articles/web-development-services-contribution-of-programming-and-testing</guid>
		<description><![CDATA[Contribution of Programming:
Web Development Services include development of basic websites to highly complex and structured websites. Earlier local personal computer revolutionized the&#8230;
Post from: Programmers.biz
<p>Post from: <a href="http://programmers.biz">Programmers.biz</a></p>
]]></description>
			<content:encoded><![CDATA[<p><b>Contribution of Programming:</b></p>
<p>Web Development Services include development of basic websites to highly complex and structured websites. Earlier local personal computer revolutionized the&#8230;</p>
<p>Post from: <a href="http://programmers.biz">Programmers.biz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://programmers.biz/programming-articles/web-development-services-contribution-of-programming-and-testing/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
