• Feed RSS

Quick Tip: 4 Ways to Auto-Refresh your Browser when Designing new Sites

Quick Tip: 4 Ways to Auto-Refresh your Browser when Designing new Sites: "

You know the drill: make some edits to your document, click save, switch over to your browser, refresh it, and then observe the changes. Wouldn’t it be convenient if there was to auto-refresh your browser at a provided interval? That way, for instance, every three seconds, the browser will automatically refresh. Granted, this isn’t too practical for heavy websites, however, when you’re first beginning the design of a new website, it’s quite convenient! I’ll show you a couple of ways of achieving this.







Option 1: Meta Tag



Did you know that, with the addition of a single meta tag into your document, you can instruct the browser to automatically reload at a provided interval?

<meta http-equiv="refresh" content="3" />

Placed within the head tag of your document, this meta tag will instruct the browser to refresh every three seconds. Pretty nifty!


You must remove this tag before you launch your site! It should only be used for initial development purposes.




Option 2: TextMate Commands



Those of you who use TextMate, or E-Text-Editor on the PC, may not be taking advantage of commands as much as you should. Did you know that there is a shell script built in to TextMate that will also force the browser to reload as soon as you press the applicable key trigger?


Simply open the “Bundles” menu, and load the bundle editor.

TextMate Bundle Editor

Within the HTML tab, you’ll find a “Refresh Running Browsers” script. Memorize, or change the activation key (in my case, Apple + R), return to your document, and try it out. This is the preferred solution if you use either of these two code editors.



Option 3: XRefresh


XRefresh


A Firefox Add-on, called XRefresh, will monitor your project folder, and, every time it detects a change to the source files, it’ll reload Firefox. This one works great, but requires a bit of work to get up and running.




Option 4: Coda: Lively



Coda users may not be familiar with one of my favorite plugins, called Lively. Like the options above, this allows Coda users to immediately observe the changes they make to their projects in real-time. If you use Coda, this is a must-have.




So what’s your preferred method? Personally, I tend to stick with options two and four. How about you?
"
read more

Start Using HTML5 WebSockets Today

Start Using HTML5 WebSockets Today: "
One of the cool new features of HTML5 is WebSockets, which let us talk to the server without using AJAX requests. In this tutorial, we’ll review the process of running a WebSocket server in PHP, and then building a client to send and receive messages to it over the WebSocket protocol.





What are WebSockets?



WebSockets is a technique for two-way communication over one (TCP) socket, a type of PUSH technology. At the moment, it’s still being standardized by the W3C; however, the latest versions of Chrome and Safari have support for WebSockets.





What do WebSockets Replace?


Websockets can replace long-polling. This is an interesting concept; the client sends a request to the server – now, rather than the server responding with data it may not have, it essentially keeps the connection open until the fresh, up-to-date data is ready to be sent – the client next receives this, and sends another request. This has its benefits: decreased latency being one of them, as a connection which has already been opened does not require a new connection to be established. However, long-polling isn’t really a piece of fancy technology: it’s also possible for a request to time-out, and thus a new connection will be needed anyway.

Many Ajax applications makes use of the above – this can often be attributed to poor resource utilization.

Wouldn’t it be great if the server could wake up one morning and send its data to clients who are willing to listen without some sort of pre established connection? Welcome to the world of PUSH technology!



Step 1: Get the WebSocket Server


This tutorial will focus more on the client building rather than server implementation.

I’m using XAMPP on Windows 7 to run the PHP server locally. Grab a copy of phpwebsockets which is a WebSocket server in PHP. (Note: I experienced some problems with this version, I made some changes to it and will including it in the source files) There are various WebSocket implementations; if one doesn’t work, you can try another or just continue with the tutorial.


Start the Apache server





Step 2: Change URLs and Ports


Change the server according to your setup, for example in setup.class.php:

public function __construct($host='localhost',$port=8000,$max=100)
{
$this->createSocket($host,$port);
}

Browse through the files and make changes where appropriate.



Step 3: Start Building the Client


Lets get a basic template up; this is my client.php file:

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

<title>WebSockets Client</title>

</head>
<body>
<div id="wrapper">

<div id="container">

<h1>WebSockets Client</h1>

<div id="chatLog">

</div><!-- #chatLog -->
<p id="examples">e.g. try 'hi', 'name', 'age', 'today'</p>

<input id="text" type="text" />
<button id="disconnect">Disconnect</button>

</div><!-- #container -->

</div>
</body>
</html>​

So in this code we’re creating a simple template: we have a box for the chat log, an input box, and one disconnect button.



Step 4: Add Some CSS


Nothing fancy, just space some elements out.

body {
font-family:Arial, Helvetica, sans-serif;
}
#container{
border:5px solid grey;
width:800px;
margin:0 auto;
padding:10px;
}
#chatLog{
padding:5px;
border:1px solid black;
}
#chatLog p {
margin:0;
}
.event {
color:#999;
}
.warning{
font-weight:bold;
color:#CCC;
}



Step 5: WebSocket Events


First, let’s try and understand the idea of WebSocket events.


The Events


We’ll be using three events:

  • onopen: When a socket has opened
  • onmessage: When a message has been received
  • onclose: When a socket has been closed

But how can we implement this?

First create a WebSocket object

var socket = new WebSocket('ws://localhost:8000/socket/server/startDaemon.php');

And checking for events is as simple as:

socket.onopen = function(){
alert('Socket has been opened!');
}

But what about when we receive a message?

socket.onmessage = function(msg){
alert(msg); //Awesome!
}

However, let’s avoid using alert boxes, and actually integrate what we’ve learned into the client page.



Step 6: JavaScript


Ok, so let’s get started. First we put our code in jQuery’s document ready function, then we check whether the user has a WebSockets-enabled browser. If they do not, we append a link to Chrome in the HTML.

$(document).ready(function() {
if(!("WebSocket" in window)){
$('#chatLog, input, button, #examples').fadeOut("fast");
$('<p>Oh no, you need a browser that supports WebSockets. How about <a href="http://www.google.com/chrome">Google Chrome</a>?</p>').appendTo('#container');
}else{

//The user has WebSockets

connect();

function connect(){
//the connect function code is below

}
});

As you can see, if the user has WebSockets then we call a connect() function. This is the core of the functionality: we’ll start with the open, close and receive events.

We’ll define the URL of our server

var socket;
var host = 'ws://localhost:8000/socket/server/startDaemon.php';

Wait, where’s the http in that URL? Oh right, it’s a WebSocket URL, so it’s using a different protocol. Here’s a breakdown of the pieces of our URL:


Let’s continue with our connect() function. We will put our code within a try/catch block; so if something goes wrong, we can let the user know. We create a new WebSocket, and pass the message to a message function which I’ll explain later. We create our onopen, onmessage and onclose functions. Note that we also show the user the socket status; this is not necessary, but I’m including it here as it can be helpful for debugging.

  • CONNECTING = 0
  • OPEN = 1
  • CLOSED = 2

function connect(){
try{

var socket;
var host = "ws://localhost:8000/socket/server/startDaemon.php";
var socket = new WebSocket(host);

message('<p class="event">Socket Status: '+socket.readyState);

socket.onopen = function(){
message('<p class="event">Socket Status: '+socket.readyState+' (open)');
}

socket.onmessage = function(msg){
message('<p class="message">Received: '+msg.data);
}

socket.onclose = function(){
message('<p class="event">Socket Status: '+socket.readyState+' (Closed)');
}   

} catch(exception){
message('<p>Error'+exception);
}
}

The message() function is fairly simple, it takes in some text that we want to show the user and appends it to the chatLog. We create the appropriate class for paragraph tags in the socket event functions which is why there is only one closing paragraph tag in the message function.

function message(msg){
$('#chatLog').append(msg+'</p>');
}



So Far…


If you’ve been following up to this point, well done! We’ve managed to create a basic HTML/CSS template, create and establish a WebSocket connection and keep the user updated as progress was made with the connection.




Step 7: Sending Data


Now rather than having a submit button, we can detect when the user presses return on their keyboard, and run the send function. The ’13′ you see below is the ASCII key for the enter button.

$('#text').keypress(function(event) {
if (event.keyCode == '13') {
send();
}
});

And here’s the send() function:

function send(){

var text = $('#text').val();
if(text==""){
message('<p class="warning">Please enter a message');
return ;
}
try{
socket.send(text);
message('<p class="event">Sent: '+text)
} catch(exception){
message('<p class="warning"> Error:' + exception);
}

$('#text').val("");

}

Remember what you see above may be a chunky bit of code, but in reality, the code we really need is:

socket.send(); //Thanks JavaScript

The extra code is doing a number of things: detecting if the user didn’t enter anything but still hit return, clearing the input box, and calling the message functions.



Step 8: Closing the Socket


Closing the socket is fairly straightforward: attach a click handler to our disconnect button and we’re done!


$('#disconnect').click(function(){
socket.close();
});



The Completed JavaScript


$(document).ready(function() {

if(!("WebSocket" in window)){
$('#chatLog, input, button, #examples').fadeOut("fast");
$('<p>Oh no, you need a browser that supports WebSockets. How about <a href="http://www.google.com/chrome">Google Chrome</a>?</p>').appendTo('#container');
}else{
//The user has WebSockets

connect();

function connect(){
var socket;
var host = "ws://localhost:8000/socket/server/startDaemon.php";

try{
var socket = new WebSocket(host);

message('<p class="event">Socket Status: '+socket.readyState);

socket.onopen = function(){
message('<p class="event">Socket Status: '+socket.readyState+' (open)');
}

socket.onmessage = function(msg){
message('<p class="message">Received: '+msg.data);
}

socket.onclose = function(){
message('<p class="event">Socket Status: '+socket.readyState+' (Closed)');
}   

} catch(exception){
message('<p>Error'+exception);
}

function send(){
var text = $('#text').val();

if(text==""){
message('<p class="warning">Please enter a message');
return ;
}
try{
socket.send(text);
message('<p class="event">Sent: '+text)

} catch(exception){
message('<p class="warning">');
}
$('#text').val("");
}

function message(msg){
$('#chatLog').append(msg+'</p>');
}

$('#text').keypress(function(event) {
if (event.keyCode == '13') {
send();
}
}); 

$('#disconnect').click(function(){
socket.close();
});

}//End connect

}//End else

});



Step 9: Run the WebSocket Server


We will need command line access. Luckily, XAMPP has a handy shell option. Click ‘Shell’ on the XAMPP control panel, and type in:

php -q path\to\server.php

You have now started a WebSocket server!




Finished


When the page loads, a WebSocket connection will attempt to be established (try editing the code so the user has connect/disconnect option). Then, the user can enter messages and receive messages from the server.




That’s it!


Thanks for reading; I hope you enjoyed this tutorial! Remember, as exciting as WebSockets may be, things may change. You can refer here to keep up to date on the W3C WebSocket API.
"
read more

Incredible Services and Products

Incredible Services and Products: "

Okay, okay; this may be a thank you posting for the wonderful sponsors of our massive HTML5 competition, however, it’s important for me to note that I refused to accept sponsors of any product that I didn’t honestly feel was fantastic. What this means is that, as the editor of Nettuts+, I fully endorse each and every one of the following services and products, and, in fact, use many of them on a daily basis! That’s why I asked these companies to sponsor the competition!






1. TechSmith


TechSmith

TechSmith has been extremely generous to Envato in the last few years. Luckily, that has no effect on the fact that the products they provide — everything from Camtasia Studio to Jing Pro, are amazing.

Did you know that I personally use their products every single day? When you watch screencasts from Nettuts+, they were recorded with Camtasia Studio for Mac. When I send out quickie videos and images, I use Jing Pro to distribute them on Twitter. Not only that, but they’re constantly updating their products, and support both Windows and Mac.

“We’ve stayed on top of the screen capture and recording game since the launch of Snagit nearly 20-years-ago.”




2. Media Temple


Media Temple


In addition to being my personal web host of choice, Media Temple is hugely respected around the web as being one of the premier web hosts. Whether hosting jQuery, or Starbucks, or even Django’s site, MediaTemple can handle the load! They come highly recommended.



Media Temple hosts websites. Big and Small. For years we’ve taken complex technology and simplified it for the everyday website owner. Our products are designed to be powerful, affordable and relevant. Please take a look around; perhaps (mt) is a good choice for your next project.”





3. FormStack


FormStack


Do we recommend FormStack? Well consider this; the submission form to enter the HTML5 competition…was created with FormStack. Their service is incredibly simple to use.



“Formstack’s easy form builder gives businesses and organizations an easy way to build any type of online form, integrate it with their website and begin collecting data. ”




4. Wufoo


Wufoo

At Envato, we use Wufoo as well. If you haven’t heard Chris, from CSS-Tricks praise Wufoo enough, let us assure you that their service comes with the highest recommendation from Nettuts+. I even use them on my own personal sites!


“What is Wufoo? Wufoo strives to be the easiest way to collect information over the Internet. Our HTML form builder helps you create contact forms, online surveys, and invitations so you can collect the data, registrations and online payments you need without writing a single line of code.





5. FusionCharts


Fusion Charts

FusionCharts has long been regarded as the premier solution for rendering animated graphs and charts for your business. Just browse through their various demos if you don’t believe me!

“FusionCharts v3 helps you create animated and interactive Flash charts for web and desktop applications. It livens up your applications by converting monotonous data into exciting visuals. “




6. Pagelime


PageLime

We’ve published PageLime tutorials a couple of times on Nettuts+ recently. The huge advantage with their service is that zero coding is required on your part. This makes it significantly appealing to non-tech savvy folks. Most recently, they’ve launched a reseller program, as well as a new navigation manager.


Pagelime is a brandable CMS that lets your clients manage their content. No installation, no coding to integrate, and no wasted time. Just add the cms-editable CSS class to any HTML element on your site and Pagelime does the rest.”





7. Campaign Monitor


Campaign Monitor

There’s a reason why Facebook, Ebay, and Twitter utilize Campaign Monitor’s services: they’re the best! In fact, their email CSS guide has been proven to be a bible for me, when creating designs optimized for email. They even contributed a tutorial to Nettuts+ not too long ago on the state of CSS3 in email designs.

Send beautiful email campaigns, track the results, and manage your subscribers.”




8. Snippets


Snippets

If you’ve watched my tutorials, you might have noticed a little scissors icon in my menu bar. That’s for Snippets. It’s an incredible code snippet management tool for Mac, that I use on a daily basis. Even better, it has support for Snipplr uploading — which Envato recently purchased!



“Snippets is a powerful application for Mac OS X that stores the most valuable pieces of code you can reuse in different projects many times.”





9. Querious


Querious

In need of a kick-ass MySQL database management app for Mac? I was, and Querious proved to be the best tool for the job. I use it often in my SQL-based video tutorials.

“Querious is a MySQL database management application written from the ground up for Mac OS X. Unlike mindless Mac OS X ports of applications originally made for Windows or Linux, Querious works the way you’d naturally expect it to as a Mac OS X app.”




10. Miva Merchant


Miva Merchant

Miva Merchant has been around for a long time, and is one of the top providers of e-commerce solutions on the web.

Miva Merchant is a leading supplier of e-commerce software and services to small and medium-sized businesses. We provide online merchants, developers, web designers and web hosts with the information and technology needed to be successful in today’s online selling environment.




11. Rockable Press


Rockable Press

Envato’s publishing branch, Rockable Press, is in full force these days — especially with the release of our CEO’s newest book, “How to Build a Successful Blog Business,” which I’m currently reading through. To be objective…it’s fantastic.



“At Rockable Press, we produce simple, straight forward how-to guides and resources for web and creative professionals. We are a small web publishing outfit operated by Envato with authors based around the world. ”





12. jQuery Enlightenment


jQuery Enlightenment

To this day, jQuery Enlightement holds the spot as my most recommended book on jQuery. Written by Cody Lindley, the book is succinct, and cuts out all of the fluff. As a result, you learn everything you need to know…as quickly as possible. Not only that, but he utilizes JSBin to provide clickable code examples for all of the demos. This has proven to be an extremely smart decision on his part, and you’ll surely see others adopting this same method in the future.



jQuery Enlightenment was written to express, in short-order, the concepts essential to intermediate and advanced jQuery development. Its purpose is to instill in you, the reader, practices that jQuery developers take as common knowledge. Each chapter contains concepts essential to becoming a seasoned jQuery developer.”




13. WP Structure Theme


WP Structure Theme

Chris Robinson is far and away one of the best authors on ThemeForest, and this theme is a perfect example of his talents.

“Months in development WP Structure is a highly flexible and heavily optioned premium theme, to be used for almost anything business, portfolio, blog, magazine & more!”

"
read more

Over 50 Free SEO Tools and Much, Much More about Using SEO Techniques

Over 50 Free SEO Tools and Much, Much More about Using SEO Techniques: "
SEO tools are something that every freelancer with a website or blog can use. A proper understanding of SEO techniques can provide greater exposure for your business by increasing the traffic to your website.

In this post, I’ll touch on some of the basics about SEO (or search engine optimization), share a few basic techniques, and provide a list of over 50 free tools that you can use to analyze how well your freelance website is doing in the search results.

What is SEO?


For those of you who are not familiar with SEO, the term stands for search engine optimization. It refers to statistics and tools that you can use to analyze how a website indexed by the major search engines such as Google, Yahoo, Bing, MSN, and others.

Ranking well in the search results can be important for a business because most people turn to the search engines when they are looking for a product or service. However, few people look at the results that appear after the first few pages. This means that if you are a freelance web designer and your web design site appears on page ten of the search engine results, prospective clients using a search tool are less likely to find your website than if your web design site appears on page one of the search engine results.

The matter is made even more complex by the fact that many search engines, such as Google for example, have recently started to personalize their search results to the individual user. For more details on this change, Danny Sullivan discusses personalized search engine results in detail at Search Engine Land.

In fact, search engines frequently tweak and update the algorithms that they use to determine search results. They do this so often that a whole field of SEO specialists has formed. Those who are really serious about getting the best search engine results or about understanding how their website is currently doing in the search engines should consult a specialist. (Personally, I’m not a SEO specialist, but I do think that most freelancers can benefit from using a few basic SEO techniques).

There are two areas that most freelancers will want to think about when considering SEO for their freelancing website–their website design and their content.

SEO in Your Website Design


There are some strategies you can use when you design your freelancing website to make sure that it is search engine friendly. We’ve covered a few of these strategies before in our post, 10 SEO Techniques All Top Web Sites Should Use, but in case you missed that post here those points are again:

  • Pay attention to the title tag
  • Make use of the description and keyword meta tags
  • Include alt attributes on images
  • Use title attributes and descriptive text on links
  • Create a sitemap
  • Publish content that is relevant to your site’s purpose
  • Link out and receive links in from reputable sites
  • Use social media
  • Don’t use Adobe Flash or splash pages

A change to our original advice is that the Google and Yahoo search engines apparently no longer use the keyword meta tag. However, thinking through the process of what search terms (key words) might apply to your site is not a bad idea. It’s also important to remember that other search engines may still use the keyword meta tag.

SEO in Your Content


If you’re a freelance writer, you’ve probably been contacted at least once by a client or would-be client who has asked you to pack a piece of web content with an exact phrase, or phrases. The request can make for very awkward wording and, in a worst case scenario, make the content virtually unreadable.

The phrases or words that search engine users are likely to search for are referred to as keywords. The reason that a writer may be asked to repeat a certain word in an article or blog post is because the client may be hoping to achieve a certain key word density. Keyword density refers to the number of times that a keyword appears on a page. Theoretically, if a keyword or keyword phrase is used just enough times, the page in which it appears will rank higher in the search results. That is why some clients request web content that is packed with certain words or phrases. Using your keywords in the title of your page and in internal headings will also help your page range better for that phrase.

However, using a keyword excessively in web content is known as keyword stuffing. Those who use keyword stuffing mistakenly think that they are improving their rankings in the search engines. Actually, the practice can harm your search engine rankings. Even worse, keyword stuffing can frustrate your readers and cause them to mistakenly believe that your site is a spam site.

Many SEO specialists are now also recommending that content be optimized for something that they are calling social SEO. Social SEO simply means that your content is written with social media sites (such as Facebook and Twitter) in mind. It’s important to consider social media sites because more and more users are using these sites to discover content. If your freelance business blog ranks well in social media, it makes it that much easier for your clients to find you.

A Few More Words About SEO




Once again, it’s important to remember that search engines are constantly changing and evolving to meet the needs of their users. Google, and other search engines, update their search algorithms regularly in order to improve the quality of the information that their engine returns.

Search engine optimization techniques that worked well a decade ago may not work well today. Likewise, search engine optimization techniques that work well today may not work well in a decade.

Over 50 Free SEO Tools




Now that we’ve discussed SEO theory, it’s time to share some free SEO tools. Keep in mind that most of the organizations that offer free SEO tools also offer paid SEO services. Some of these tools may represent trial offers, so read the fine print before downloading any tool.

As I stated earlier, if you are serious about using SEO for your freelance business website or blog it is not a bad idea to get a consultation from one of these companies. If you decide to get some help with SEO, remember that not all companies have the same level of expertise, so make your selection carefully.

Here is the list of over 50 free SEO tools by source (in alphabetical order by the site where they are found):

PR Search

  1. Link Popularity Checker–Shows inbound links for Google, Yahoo, MSN, AltaVista, Allintheweb & HotBot.
  2. MSN Position Search–MSN Search for up to 15 keywords on one domain.
  3. Page Rank Search–Google search results with PAGE RANK bar and inbound links.
  4. Yahoo Rank Position–Shows Yahoo rank position, number of entries indexed.
  5. Google Rank Position–Shows Google rank position, PAGE RANK, number of entries indexed, DMOZ and Google Dir status.

SEOBench

  1. Google vs Yahoo Graph–Graphically shows the top 50 in Google and Yahoo linked.
  2. Keyword Density Analysis–Determines density of one, two, and three word phrases.
  3. Multi Datacenter PageRank Checker–Checks page rank values across all Google data centers.

SEO Book (You must register to use these tools.)

  1. Rank Checker–Checks the rank of your site on Google, Yahoo, and Bing.
  2. SEO Toolbar–Allows you to view SEO data as you browse.
  3. SEO for Firefox–Adds SEO information to Google and Yahoo search results
  4. Myriad Search–Meta search that examines Google, Yahoo, MSN and Ask Jeeves.

SEOMoz (You must be logged in to use these tools.)

  1. Open Site Explorer–View site’s analytics on custom API.
  2. Linkscape–Professional inlink tool.
  3. SEO Toolbar for Firefox–Linkscape as a toolbar for Firefox.
  4. Term Target–Examines a specific page to see which keywords are used.
  5. Popular Searches–View the most popular sources for a specific date on a number of well-known sites including Technorati, Flickr, Del.icio.us, Yahoo Buzz, Google Hot Trends, eBay Pulse, AOL Hot searches, Lycos, Ask, and Amazon.
  6. Trifecta–Provides an estimate of the importance of a page, blog, or domain.
  7. Term Extractor–Analyzes a page and shows keywords.
  8. GeoTargeting Detection–Checks to see if your website is set up for geo targeting searches.
  9. SEO Toolbox–Includes many free SEO tools.



SEO Toolset


  1. SEMToolBarTM–Downloadable toolbar lets you view SEO information as your browse.
  2. Search Engine Optimization/KSP Tool–Provides Google and Yahoo search engine statistics for specified keywords.
  3. Check Server–Looks for issues that prevent your site from being crawled by the search engines.
  4. View Page Source–Shows the source code of a URL.

WebConfs

  1. Domain Age Tool–Determines the age of the domains entered.
  2. Domain Stats Tool–Enter domain and find out domain age, number of pages indexed, and number of backlinks.
  3. HTTP/HTTPS Header Check–Lets you examine the HTTP headers from the web server after you request a URL.
  4. Search Engine Friendly Redirect-Enter URL–Checks your redirect to see how SE friendly it is.
  5. Website Keyword Suggestions–Provides keyword suggestions along and keyword traffic estimates for the entered website.
  6. Backlink Anchor Text Analyzer–Blacklink analyzer that shows URL and anchor text.
  7. Check Yahoo Page Rank–Allows you to check the Yahoo WebRank of up to five URLs at a time.
  8. URL Rewriting Tool-Creates Mod–Rewrites rules to convert dynamic URLs to static looking URLs.
  9. Search Engine Spider Simulator–Displays page content minus code.
  10. Similar Page Checker–Compares pages for similar content.

Webmaster Toolkit

  1. Keyword Research Tool–Tool returns similar keywords found in the meta keywords of sites searched by your choice of nine search engines.
  2. Link Appeal-Enter UR–Rates for link appeal.
  3. Link Popularity Checker-Enter URL–Displays backlinks on five search engines.
  4. Search Engine Position Checker-Enter URL/Keyword–Displays top 50 for nine search engines.
  5. HTML Header View–Shows HTTP headers the web server is sending.
  6. Web Page Analyzer-Enter URL/Keyword–Checks copy for optimization.



WebSeoAnalytics

  1. WebSEOAnalysis–Comprehensive website analysis. (Exclusive)
  2. Keyword Battle–Shows how your site ranks for a particular list of keywords (Exclusive)
  3. Keyword Analyzer–Allows you to determine the percentage of keywords in a particular page.
  4. Duplicate Content–Lets you compare content between two URLs.
  5. HTML Validation–Determines whether a list of URLs are valid according to W3C standards.
  6. PageRank Check–Lets you check your site’s page rank.
  7. Multi DC PageRank–Lets you check your site’s page rank across multiple data centers.
  8. Indexed Pages–Shows which pages on your site are indexed in Google, Yahoo, and Bing.
  9. Link Popularity–Shows the number of incoming links to a URL.
  10. Reputation Tracker–Tracks recent social media mentions of your site.
  11. Domain Info–Provides the current status of your domain name.
  12. Site Submitter–Allows you to submit your site to major search engines and directories and includes recent traffic statistics.

What About You?


We’ve provided some basic information about search engine optimization. We’ve shared some SEO techniques. We’ve also listed some free SEO tools for you to explore.

Do you use search engine optimization for your freelance website or blog? What tips do you have? What are your favorite tools?
"
read more

15 Web Alternatives to Popular Desktop Software

15 Web Alternatives to Popular Desktop Software: "
Web applications have come a long way. They used to be amateur imitations of their desktop counterparts, with only one or two functions and not at all practical. But my, have these web apps grown. Web apps these days have become so powerful and useful that in some cases, they’ve begun to replace desktop software.

Desktop programs are great and all, but they don’t provide the same benefits as web apps that make use of cloud computing. With most web apps, you only need a browser and an internet connection to access all your data online. That beats having to install annoying programs any day. To give you a better sense of how useful web apps have become, I’ve compiled a list of web tools and apps that can very well replace some desktop programs. I hope you take the time to try them all out. You’ll be surprised how well they work.

Without further ado, here are some great web alternatives to the popular desktop programs we all love.



Sliderocket


Replaces: Microsoft PowerPoint

SlideRocket
SlideRocket

Sliderocket is a fully functional presentation web app that allows you to create, manage, edit, and share presentations on the fly. It offers many of the same features present in PowerPoint and then some. Sliderocket is an awesome tool and if you want to read more about it, take a look at our in-depth review of Sliderocket.

Acrobat.com


Replaces: Microsoft Office, Adobe Acrobat

Acrobat
Acrobat

Acrobat.com is a suite of web applications by Adobe that replaces your office suite. The online suite includes services like Buzzword, Tables, and Presentation which replace Microsoft Word, Excel, and Powerpoint respectively. Acrobat.com also offers other features, allowing users to convert files into PDFs, hold online meetings, and collaborate with one another. All of its services are free (with some limitations), but users can subscribe to different plans for more features. Check out the pricing section for more details.

Aviary


Replaces: Adobe Photoshop, Illustrator, Soundbooth

Aviary
Aviary

We have already covered a list of online image editors, and of that list, my favorite would have to be Aviary. The Aviary web suite offers powerful tools that allow you to edit images, vectors, and even audio! Take a look at the huge list of the tools included in their suite:

• Phoenix: Image Editor

• Toucan: Color Editor

• Myna: Audio Editor

• Peacock: Effects Editor

• Raven: Vector Editor

• Falcon: Image Markup

• Roc: Music Creator. Check out our in-depth review of Roc.

Mint


Replaces: Quicken

Mint
Mint

If you’re still using Quicken to manage your money, it’s time to toss it out and move on to the better solution: Mint.com. Mint is a very popular personal-finance tool that allows you to keep track your credit card transactions, balance your budget, and create charts or graphs to help you visualize your spending. Mint is the free and secure way to manage your money online. In fact, Mint has been so successful that the makers of Quicken and TurboTax purchased it in 2009. What are you waiting for? Hurry up and sign up!

Kongregate


Replaces: Desktop Gaming

Kongregate
Kongregate

Forget about your desktop gaming – why waste space when you can play awesome games online? Kongregate is an online gaming community with a library of over 30,000 flash games. Not only do you have access to a variety of games, but you can also gain points, chat, and unlock achievements for the games you play. Developers can upload their own games and even make money off ad revenue for their games! If you’re looking for more online games to replace desktop games, take a look at our game roundups.

JayCut


Replaces: Video Editing Software

JayCut
JayCut

JayCut is a very easy to use and powerful online video editor. With Jaycut, you can create videos with the same tools used in desktop programs. Add clips, transitions, audio, effects, and more with their simple UI. When you finish editing a video, you can choose to download it or export it directly to YouTube. Export up to 20 videos a month with 2GB of storage under a free plan, or pay monthly for a better plan.

WobZip


Replaces: Unzipping Software

WobZip
WobZip

Have you ever tried to open a compressed file only to find out you don’t have the right unzipping software to do the job? In comes WobZip, an online tool that helps you uncompress your files. It supports a variety of compression formats, including the popular ZIP, RAR, and 7z formats. You can upload a zipped file from your computer or direct WobZip to a URL. The best part? WobZip will scan the files using BitDefender to make sure there isn’t a nasty virus lurking around.

Zamzar


Replaces: File Conversion Software

Zamzar
Zamzar

Instead of downloading dozens of different programs to convert a file, you can always use the Zamzar, the free online file conversion tool. Can’t open a crucial .docx or .pptx file and your boss is screaming in your ear? No problem, just upload and convert your files using Zamzar. Zamzar supports dozens of image, document, video, and music formats and is the only tool you will ever need to convert files.

Hulu


Replaces: TV Tuner Software

Hulu
Hulu

I’m a cheap guy who spends all his time on the computer. How could I watch my favorite TV shows without leaving my computer? Well, I could purchase a TV tuner and install their lame software or I could head to Hulu.com and watch my favorite shows for free. Hulu is a website that offers streaming video of popular TV shows and movies in the US. It is ad supported, but allows you to watch your favorite shows from the comfort of your computer. Although Hulu is a U.S. only website, there are ways to access Hulu from outside the U.S.

Meebo


Replaces: Desktop Chat Clients

Meebo
Meebo

With Meebo, you can chat with your friends from anywhere as long as you have a browser and an internet connection. Meebo is an online tool that allows you to login to any major IM network, including AIM, MSN, GTalk, and Facebook. You don’t even need to create an account, just input your IM information and you’re ready to go. If you take the 20 seconds to set up a Meebo account, you can login to multiple accounts at once. This sure beats downloading and managing three IM programs at once, doesn’t it?

TokBox


Replaces: Video Chat

TokBox
TokBox

TokBox is an online video chatting app that enables you to chat with up to 20 people for free. There are no downloads required, just sign up and start a video chat! Invite your friends via social networks or IM and set up a chat in just minutes. TokBox is free to use, but if you’d like more options, you can sign up for monthly plans. TokBox may be free, but you’re going to need your own microphone and webcam.

Moof


Replaces: iTunes

Moof
Moof

You may have a huge iTunes library, but what happens when you go out and forget to bring your iPod along? Moof is the solution. Moof is another web app that streams music online, but I think of it as an iTunes alternative. You can export your entire iTunes library as an .xml file and upload that to Moof, so you can have a full backup of your music online. Where does Moof get all its music from? Youtube. Yeah, I know, it’s a little disappointing, but the quality isn’t that bad. Don’t like Moof? Check out our roundup of the top apps for music streaming.

ESET Online Virus Scanner


Replaces: Anti-Virus Software

ESET
ESET

While the ESET Online Virus scanner is a great alternative to Anti-Virus programs, you shouldn’t literally replace your Anti-Virus program. Think of this tool as a backup tool, in case your Anti-Virus software malfunctions. Made by the folks that brought you NOD32, the ESET online scanner uses the same threat signatures as NOD32 and allows you to scan your computer from your browser. It may take a while, but after the scan, suspicious files will be quarantined for you to restore or permanently delete. A great tool for your security toolbox.

Bitlet


Replaces: BitTorrent Client

BitLet
BitLet

When you don’t have access to a BitTorrent client on your computer, you can use the BitLet app to download your torrents. BitLet is a Java based file sharing protocol that allows you to download torrent files from your browser. Just upload a .torrent file from your computer or direct BitLet to the torrent URL and it’ll do the rest for you.

iCloud


Replaces: Operating System

iCloud
iCloud

We’ve already covered dozens of web alternatives to desktop software, but why not go a bit further and include a web app that replaces your entire operating system? Meet iCloud, the future of operating systems. iCloud is a very slick web operating system that gives you access to hundreds of built in applications, including an office suite, a media player, a chat client, nifty games, and much more. You have 3 GB of free storage and can opt to buy more if needed. You can get everything you need in this web OS. For those of you interested in Web OSes, be sure to read our article about other operating systems that utilize cloud computing.

Conclusion


As the world turns to cloud computing, we’re only going to see more and more web apps that function like their desktop counterparts. I’ve only listed a few of the web alternatives to desktop software, and I’m sure there are many more out there. As these web applications become more powerful and appeal to the masses in terms of functionality, we may soon see a decline in desktop programs as we all move towards the web and the cloud. Is this the end of desktop software? Who knows, we’ll have to wait and see.

Do you use any web apps in place of desktop programs? What do you think is going to be the future for desktop programs? Share your comments below!

Like the intro. image? Get the high resolution vector at GraphicRiver.net by author iqbalbaskara.
"
read more

Pines Notify jQuery Plugin

Pines Notify jQuery Plugin: "
Pines Notify is jQuery notification plugin. It is very easy to implement, flexible, and provides numerous options for all kinds of notifications. It uses the jQuery UI CSS library for styling, which means it is fully and easily themeable.



Since Pines Notify uses jQuery UI, you can change look and feel of notification windows using ThemeRoller. You can do further customization, by modifying widget-specific classes referenced within the jquery.pnotify.default.css stylesheet.



Features


  • Timed hiding with visual effects
  • Sticky (no automatic hiding) notices
  • Optional hide button
  • Supports dynamically updating text, title, icon, type…
  • Stacks allow notice sets to stack independently
  • Control stack direction and push to top or bottom
  • Supports HTML (including forms) in title and text
  • Variable opacity
  • Supports Pines icons/jQuery UI icons/any CSS based icons
  • Supports custom classes for individual notice styling
  • Standard and custom effects
  • Optional drop shadows
  • Callbacks for various events, which can cancel events
  • History viewer allows user to review previous notices
  • XHTML 1.0 Strict compliance
  • ThemeRoller Ready

Developed by Hunter Perrin; Pines Notify is available for download under GNU Affero GPL License. You can find further information, demos & download on Pines Notify Website.


Similar Posts:


"
read more

Making a Custom YouTube Video Player With YouTube’s APIs

Making a Custom YouTube Video Player With YouTube’s APIs: "
Video presentations are a great addition to any product page. With a presentation you can showcase your product’s features without making the visitor read through long paragraphs of text. But apart from producing the video, you still need to manually convert it and find (or code) some sort of flash player that will display it on your site.

The other possible path is that you upload it to a video sharing site such as youtube, but you are going to have a rough time trying to incorporate the player into your design.

Luckily for us, YouTube does provide a solution to this problem – their chromeless player (a stripped down version of the regular embeddable player), which allow you to build and style your own custom controls. This way you have both a quick and secure way to include videos in your pages, and the freedom to customize any way you might want to.

The Idea


Today we are going to make a jQuery plugin which uses YouTube’s chromeless player, and creates our own set of minimalistic controls, which allows for perfect integration with your designs. The supported controls include a Play/Pause/Replay button, and a clickable progress bar.

The plugin is going to use YouTube’s gdata api to determine whether embedding has been allowed for the video, and fetch extensive information about it, such as title, description, tags, screenshots & more, which you can use to improve the plugin.

Using the plugin to embed videos is extremely easy:

// Embed a video into the #player div:
$('#player').youTubeEmbed('http://www.youtube.com/watch?v=u1zgFlCw8Aw');

// Chaining is also supported:
$('#player').youTubeEmbed('http://www.youtube.com/watch?v=u1zgFlCw8Aw');
.youTubeEmbed('http://www.youtube.com/watch?v=AsdfFdwlzdAw');

You can also specify a width for the embedded video (the height will be calculated automatically depending on the aspect ratio), and choose to disable the progress bar:

$('#player').youTubeEmbed({
video   : 'http://www.youtube.com/watch?v=u1zgFlCw8Aw',
width   : 600,   // Height is calculated automatically
progressBar : false  // Hide the progress bar
});

You can grab the plugin from the download button above, and start with the first step.

Step 1 – XHTML


Our plugin depends on jQuery SWFObject to embed the SWF files in the page. Below you can see the combined markup that is generated by both of the plugins.

youtube-player.html


<div class="flashContainer" style="width: 640px; height: 360px;">

<object height="360" width="640" id="video_26ELpS3Wc4Q" type="application/x-shockwave-flash"
data="http://www.youtube.com/apiplayer?enablejsapi=1&version=3">

<param value="always" name="allowScriptAccess">
<param value="transparent" name="wmode">
<param value="video_id=26ELpS3Wc4Q&playerapiid=26ELpS3Wc4Q"
name="flashvars">
<param value="http://www.youtube.com/apiplayer?enablejsapi=1&version=3"
name="movie">

</object>

<div class="controlDiv play"></div>

<div class="progressBar">
<div class="elapsed"></div>
</div>
</div>

The .flashContainerDiv is dynamically created by the plugin for each video on the page. It is populated with the embed code generated by SWFObject, the .controlDiv (which acts as a play/pause button) and the progress bar.

As mentioned above, the insertion of the player itself is handled by the SWFObject plugin. Depending on the browser, it can output either an object element, or a non-standard embed element for IE. This lifts the burden from us and allows us to concentrate on tasks such as querying YouTube’s APIs and building the player controls.

Custom YouTube Player
Custom YouTube Player

Step 2 – jQuery


The plugin’s code is located in the youTubeEmbed-jquery-1.0.js file. However, before being able to use it, you need to include the latest version of the jQuery library in the page, along with the jQuery SWFObject plugin and lastly script.js, which inserts two videos in the demonstration page and handles the submissions of the preview form.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script src="jquery.swfobject.1-1-1.min.js"></script>
<script src="youTubeEmbed/youTubeEmbed-jquery-1.0.js"></script>
<script src="script.js"></script>

Before we start digging into the player plugin’s code, lets take a look at a sample response from YouTube’s gdata api. It can give you a lot of useful information about a video, including duration, access control (both of which used by the plugin) and all sorts of additional data such as title, description, tags, screenshots and more.

Sample JSON response


{
'id': 'u1zgFlCw8Aw',
'uploaded': '2008-03-05T01:22:17.000Z',
'updated': '2010-07-23T01:02:42.000Z',
'uploader': 'GoogleDevelopers',
'category': 'People',
'title': 'The YouTube API: Upload, Player APIs and more!',
'description': 'Listen to the YouTube APIs and Tools team talk about...',
'tags': ['youtube', 'launch', 'api', 'engineering'],
'thumbnail': {
'sqDefault': 'http://i.ytimg.com/vi/u1zgFlCw8Aw/default.jpg',
'hqDefault': 'http://i.ytimg.com/vi/u1zgFlCw8Aw/hqdefault.jpg'
},
'player': {
'default': 'http://www.youtube.com/watch?v=u1zgFlCw8Aw',
'mobile': 'http://m.youtube.com/details?v=u1zgFlCw8Aw'
},
'content': {
'1': 'rtsp://v4.cache5.c.youtube.com/CiILE..',
'5': 'http://www.youtube.com/v/u1zgFlCw8Aw?f..',
'6': 'rtsp://v3.cache4.c.youtube.com/CiILENy73..'
},
'duration': 259,
'location': 'san bruno, ca',
'rating': 4.3,
'likeCount': '119',
'ratingCount': 144,
'viewCount': 251024,
'favoriteCount': 164,
'commentCount': 118,
'accessControl': {
'syndicate': 'allowed',
'commentVote': 'allowed',
'rate': 'allowed',
'list': 'allowed',
'comment': 'allowed',
'embed': 'allowed',
'videoRespond': 'allowed'
}
}

All the fields of this response objects are available as properties in the data variable (data.fieldname). You could potentially modify the plugin to show the title with a link to the video page on youtube, or show the rating of the video.

Now lets dive directly into the script’s source code.

youTubeEmbed-jquery-1.0.js – Part 1


(function($){

$.fn.youTubeEmbed = function(settings){

// Settings can be either a URL string,
// or an object

if(typeof settings == 'string'){
settings = {'video' : settings}
}

// Default values

var def = {
width  : 640,
progressBar : true
};

settings = $.extend(def,settings);

var elements = {
originalDIV : this, // The "this" of the plugin
container : null, // A container div, inserted by the plugin
control  : null, // The control play/pause button
player  : null, // The flash player
progress : null, // Progress bar
elapsed  : null // The light blue elapsed bar
};

try{ 

settings.videoID = settings.video.match(/v=(\w+)/)[1];

// safeID is a stripped version of videoID,
// ready for use as a JavaScript function name

settings.safeID = settings.videoID.replace(/[^a-z0-9]/ig,'');

} catch (e){
// If the url was invalid, just return the "this"
return elements.originalDIV;
}

// Fetch data about the video from YouTube's API

var youtubeAPI = 'http://gdata.youtube.com/feeds/api/videos?v=2&alt=jsonc';

$.get(youtubeAPI,{'q':settings.videoID},function(response){

var data = response.data;

if(!data.totalItems || data.items[0].accessControl.embed!="allowed"){

// If the video was not found, or embedding is not allowed;

return elements.originalDIV;
}

// data holds API info about the video:

data = data.items[0];

settings.ratio = 3/4;
if(data.aspectRatio == "widescreen"){
settings.ratio = 9/16;
}

settings.height = Math.round(settings.width*settings.ratio);

We start by defining our script as a jQuery plugin by adding it as a function to the $.fn object. To make the code easier to follow and read, I put all the elements of the page, such as the control and the progressBar divs in a structure called elements.

After extracting the id of the video (a unique 11 character sequence after the ?v= parameter), we send a JSONP request to youtube’s gdata API. Depending on whether such a video exists, and on whether embedding is allowed on it, we proceed with calculating the aspect ratio. The height of the video is calculated by using this ratio and multiplying it to the width.

youTubeEmbed-jquery-1.0.js – Part 2


// Creating a container inside the original div, which will
// hold the object/embed code of the video

elements.container = $('<div>',{className:'flashContainer',css:{
width : settings.width,
height : settings.height
}}).appendTo(elements.originalDIV);

// Embedding the YouTube chromeless player
// and loading the video inside it:

elements.container.flash({
swf   : 'http://www.youtube.com/apiplayer?enablejsapi=1&version=3',
id   : 'video_'+settings.safeID,
height  : settings.height,
width  : settings.width,
allowScriptAccess:'always',
wmode  : 'transparent',
flashvars : {
"video_id"  : settings.videoID,
"playerapiid" : settings.safeID
}
});

// We use get, because we need the DOM element
// itself, and not a jquery object:

elements.player = elements.container.flash().get(0);

// Creating the control Div. It will act as a ply/pause button

elements.control = $('<div>',{className:'controlDiv play'})
.appendTo(elements.container);

// If the user wants to show the progress bar:

if(settings.progressBar){
elements.progress = $('<div>',{className:'progressBar'})
.appendTo(elements.container);

elements.elapsed = $('<div>',{className:'elapsed'})
.appendTo(elements.progress);

elements.progress.click(function(e){

// When a click occurs on the progress bar, seek to the
// appropriate moment of the video.

var ratio = (e.pageX-elements.progress.offset().left)/elements.progress.outerWidth();

elements.elapsed.width(ratio*100+'%');
elements.player.seekTo(Math.round(data.duration*ratio), true);
return false;
});

}

In the second part of the code, we use the SWFObject plugin to generate the embed code of the youtube chromeless player. Notice that the id of the video is passed as a flashvar so the player can load it directly. The safeID variable (a JavaScript safe version of the videoid) becomes the value of the id parameter of the to-be generated object element. This way we can later fetch the DOM element by running document.getElementById(‘video_’+settings.safeID) and get access to the methods which control the youtube player (play, pause etc).

youTubeEmbed-jquery-1.0.js – Part 3


var initialized = false;

// Creating a global event listening function for the video
// (required by YouTube's player API):

window['eventListener_'+settings.safeID] = function(status){

var interval;

if(status==-1) // video is loaded
{
if(!initialized)
{
// Listen for a click on the control button:

elements.control.click(function(){
if(!elements.container.hasClass('playing')){

// If the video is not currently playing, start it:

elements.control.removeClass('play replay').addClass('pause');
elements.container.addClass('playing');
elements.player.playVideo();

if(settings.progressBar){
interval = window.setInterval(function(){
elements.elapsed.width(
((elements.player.getCurrentTime()/data.duration)*100)+'%'
);
},1000);
}

} else {

// If the video is currently playing, pause it:

elements.control.removeClass('pause').addClass('play');
elements.container.removeClass('playing');
elements.player.pauseVideo();

if(settings.progressBar){
window.clearInterval(interval);
}
}
});

initialized = true;
}
else{
// This will happen if the user has clicked on the
// YouTube logo and has been redirected to youtube.com

if(elements.container.hasClass('playing'))
{
elements.control.click();
}
}
}

In order to be able to control the video player, we need to be notified when certain events (like playback stopped, video ready etc) occur. Normally, this would mean that we need to pass a callback function, which is executed by the player every time such an event happens.

Unfortunately, flash can only execute functions if they are defined in the global scope and cannot see the functions which are defined inside the plugin. However, by creating functions with unique names (with the safeID) and explicitly adding them to the window object we can make this happen. If it weren’t for this little trick, it would be impossible for the plugin to work.

youTubeEmbed-jquery-1.0.js – Part 4


if(status==0){ // video has ended
elements.control.removeClass('pause').addClass('replay');
elements.container.removeClass('playing');
}
}

// This global function is called when the player is loaded.
// It is shared by all the videos on the page:

if(!window.onYouTubePlayerReady)
{
window.onYouTubePlayerReady = function(playerID){
document.getElementById('video_'+playerID).addEventListener('onStateChange','eventListener_'+playerID);
}
}
},'jsonp');

return elements.originalDIV;
}

})(jQuery);

The event listening function we created in the previous section of the code, is attached to the player with the addEventListener method. It is called every time when a “stateChange” occurs (playback start, playback pause, end of playback etc). A numeric code is passed to the event listening function as a parameter, corresponding to the event.

Now lets take a look at how our plugin is used.

script.js


$(document).ready(function(){

$('#player').youTubeEmbed('http://www.youtube.com/watch?v=u1zgFlCw8Aw');

/*
//You can alternatively pass an object:

$('#player').youTubeEmbed({
video   : 'http://www.youtube.com/watch?v=u1zgFlCw8Aw',
width   : 600,   // Height is calculated automatically
progressBar : false  // Hide the progress bar
});

*/

});

You just need to call the youTubeEmbed() method and pass it either a string or a configuration object. If a string is passed, it is assumed to be the URL of a YouTube video. If you are passing an object make sure that you are passing the video property with a correct video URL.

Video Playing with a Progress Bar
Video Playing with a Progress Bar

Step 3 – CSS


Finally we are left with applying a few CSS styles to the player. They will change the design of the player controls and define the way they are positioned in the player window.

youTubeEmbed-jquery-1.0.css


.flashContainer{

/* Setting the container to relative positioning
so we can center the control div */

position:relative;
overflow:hidden;
}

.progressBar{
display:none;
position:absolute;
width:auto;
height:8px;
left:20px;
right:105px;
bottom:20px;
background-color:#141414;
overflow:hidden;
cursor:pointer;

/* A light CSS3 bottom highlight */

-moz-box-shadow:0 1px 0 rgba(255, 255, 255, 0.3);
-webkit-box-shadow:0 1px 0 rgba(255, 255, 255, 0.3);
box-shadow:0 1px 0 rgba(255, 255, 255, 0.3);
}

.progressBar .elapsed{
position:absolute;
width:0;
height:100%;
background-color:#1fa2f6;
border-right:1px solid #49AFF0;
}

.controlDiv{
/* Centering the control div */
position:absolute;
width:120px;
height:120px;
cursor:pointer;
top:50%;
left:50%;
margin:-60px 0 0 -60px;
}

.controlDiv.play{
background:url('img/play.png') no-repeat center center;
}

.controlDiv.replay{
background:url('img/replay.png') no-repeat center center;
}

.controlDiv.pause{
background:url('img/pause.png') no-repeat -99999px;
}

.flashContainer:hover .controlDiv.pause{
background-position:center center;
}

/* Only show the progress bar when the video is playing */

.flashContainer.playing:hover .progressBar{
display:block;
}

To customize the look of the player you just need to change the color values above. Also you can edit the png files with the play/pause buttons. Clearly this is much easier than modifying the looks of the default youtube player. It also strips all of the unnecessary chrome and leaves you with what matters most – your video.

With this our Custom YouTube Player plugin is complete!
"
read more

19 Important Features to Look for in a Web Host

19 Important Features to Look for in a Web Host: "
If you’re reading this, you probably develop websites. We don’t make websites to let them sit on our own computers: we set them free on the web. While it’s often more fun to create the website than to worry about hosting it, web hosting isn’t a decision you should make quickly. In this roundup, I’ll point out 19 things you should look for when choosing your web host.



1. Amount of Storage



Ive Drive Unibody External icon by The Iconfactory, Inc.


When choosing your web hosting, one of your primary concerns will obviously be “How much data can I store?” For most small and medium web sites, you’ll find that several gigabytes should be plenty of storage. Some hosts may offer “unlimited storage”: caveat emptor! If you read the fine print (usually, the Terms and Services) you’ll find that it’s unlimited until you go over the “normal site usage.” If you think you might be close to or over whatever “normal” is, make sure you know what you can use before buying … or go with a host that sets clear limits.



2. Amount of Bandwidth



When looking for a web host, you’ll often see storage and bandwidth hand in hand. What is bandwidth? It’s the amount of data that your host will let you and your visitors upload and download (cumulatively) in a given month. Say your website is 1 megabyte of data and your monthly bandwidth is 10 MB. At the beginning of the month, you upload the entire site; now you’ve used up one MB of bandwidth. If a visitor to your site views every page, they will have downloaded 1MB of data. That means you can have up to 9 visitors in that month (assuming each views your whole site). After that, your web host will either not allow any more visitors, or (more likely) charge you extra per MB. Of course, your bandwidth is something you’ll want to keep an eye on, especially if you run a fairly popular site or do something media intensive (like host your own video, or high-res photos). Just like storage, some hosts offer “unlimited” bandwidth; again, if you think you’ll be in a grey area, find out the limits or choose a host that sets the bar where all can see it.



3. Number of Domains and Subdomains



Once you’re running one site, there’s a good chance it won’t be long until you’ve got a second one up … and then a third. It would be a pain to have to manage a hosting account for each site you own, so make sure your web host will let you host multiple domains. Often, there will be a limit on how many domains you can have on one account; make sure it will accomodate you! Usually, there will be a section in the admin panel for adding your domains and choosing which sub-folders each one will point to. The same is true for sub-domains.



4. Email Accounts and Features



Many web hosts also offer email account for your domains. You’ll want to know how many email accounts they’ll let you set up; also, don’t forget to check out their selections for receiving that mail. Do they have a webmail interface? Multiple ones that you can select from? How about integration with Google Apps (for the Gmail interface)? Can you get your mail in your client of choice via IMAP, or do they only offer POP?



5. Database Support



Database icons (including post preview icon) by barrymieny


Now-a-days, even small websites seem to have a database on the back end. You’ll want to make sure you can use the type of database you’re comfortable with. Most hosts today offer MySQL; that’s probably enough for most people, but if you’d prefer PostsgreSQL, Oracle, SQL Server, or another flavour, don’t settle for anything less. Remember, if they aren’t advertising it, they probably don’t offer it!



6. Framework Support and Easy-Install



A lot of web hosts offer support for popular frameworks, blogging systems, or CMSes. I think it’s safe to say that the majority of Nettuts’ readers are WordPress fans: it’s always nice when your web host offers a one-click install (or at least a super easy set-up) for WordPress or your CMS of choice.



7. Mobile App or Website



For most people, this will probably be a nice extra; however, I’m sure there’s something who will find having a mobile app to access your site administration / statistics on the go indespensible. While I only know of two hosts (MediaTemple and SliceHost) that currently offer iPhone and Android apps (MediaTemple’s Android app is forthcoming ), I’m sure most hosts will follow their lead. Both offer mobile websites as well, and I’m sure other hosts have the same.



8. Tech Support



This one is very important: find out exactly what your prospective host offers for tech support: can you phone them? At what times? Do they have a support email address? A ticket system? What’s their promised response time? How about a live chat? Do they have a wiki or library of help articles / tutorials? Don’t choose a host until you know exactly what support they offer; you’ll be happy for it later, trust me!



9. Shell Access



If you’re a little more advanced, you might want to consider choosing a host that offers shell access: that’s logging into your server from the command line over SSH. You’ll be able to securely copy files up and down, change file permissions for whole groups of files quickly and easily, and perform a multitude of other tasks. If you want this feature, you’ll know all that you do with it!



10. .htaccess Files



Here’s another important one: you’ll want the ability to add your own .htaccess files to your directories. What’s a .htaccess file? It’s a configuration file used by Apache server. You can use them to password protect directories, re-write URLs, redirect pages, and more. Check out the many good tuts here on Nettuts+ to get familiar with them.



11. Cron jobs



Cron jobs are another great feature to have on your web host (and there’s a good chance you’ll have them if you’ve got shell access). Cron is a “time-based job scheduler” (thanks, Wikipedia) that you can use to perform tasks on the server at given times. To learn more about how to use Cron and what you can do with it, check out the great Cron tutorial we ran back in January.



12. Language Support



This should go without saying, but make sure the host you plan to choose offers support for the server-side languages you want to use. If you plan to pick up Ruby on Rails in the next few months, you probably want to see it on the list of supported frameworks. If you want to use Django, make sure there’s Python support. Don’t lock yourself into having PHP as your only option (unless you’re sure that’s all you’ll ever want or need!).



13. Free AdWords



While not a necessarily something you need, it’s something you’ll probably want to take advantage of: many hosts offer some Google AdWords credit (usually ~$50, I’ve found) or some other form of advertising. Even if you’d rather use another advertising proxy, you can’t beat free: you might as well use it!



14. Site Backup



Don’t think that your web host is any less suseptible to data loss than your own computers; remember, servers are just big computers that everyone can read files from! What backup options, if any, does your host provide? You’ll want to back up both your site files and databases. If they don’t offer backup, figure out how you’ll be able to do it yourself: this might be one of the places that shell access and cron come in handy!



15. Choice of OS



For most people, this won’t be a big issue. Of course, if you’re developing in ASP.NET, you’ll need Windows hosting; that’s a little harder to find, and often a bit more expensive, but if you’re a Microsoft developer, the extra cost will be worth it. (If you’re interesting in learning about ASP.NET, check out our great tuts on the subject.) If you’re using an open source language, you probably won’t need to worry about which Linux/Unix distribution you’ll get; however, some hosts give you options, and some developers may have preferences, so it’s worth mentioning.



16. Extra Applications



We already talked about content management systems, but sometimes you’ll want a something more. Several hosts offer set-ups for social features like forums, bulletin boards, mailing lists. If you’ll be running an online store, some hosts offer setups for eCommerce solutions.



17. Up-to-Date-ness



If you can, find out what software versions the host you are considering offers. Some hosts aren’t quick to upgrade to the latest offering, while others will let you choose which version you want. There are few things worse than signing up for a year of hosting only to discover your host is running PHP 4.x (yes, I’ve made that mistake).



18. Up-Time



I’m sure I don’t have to convince you that it’s important to know that your visitors will be able to get to your site when they try! Find out how reliable your prospective host is; when you’re doing this, it’s important to read the fine print. Often, hosts will stretch the truth a bit (claiming 99.9% uptime, not counting almost everything that could go wrong), so make sure you understand exactly what “100% uptime” means. It would be a wise move to google around and see what other users and reviewers have said about the host.



19. Free Domain



While you may already have a domain name, there’s no such thing as too many of them. Most hosts offer this, but all else being equal, a shiny new domain name is a good enough reason to go with one host over the other.



Conclusion: What’s your tip?


I’m sure you’ve got some great tips for choosing a web hosting solution. If you do, don’t hesitate to share them in the comments! Also, let us know what hosts you’ve found reliable and which ones have come back to bite you.
"
read more