<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>CatsWhoCode.com</title>
	
	<link>http://www.catswhocode.com/blog</link>
	<description>BloggingCodingAndEvenMore</description>
	<lastBuildDate>Thu, 02 Jul 2009 13:20:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Catswhocode" type="application/rss+xml" /><feedburner:emailServiceId>Catswhocode</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Google website optimizer. What’s that all about?</title>
		<link>http://feedproxy.google.com/~r/Catswhocode/~3/B5SX_FJ7hy8/google-website-optimizer-tutorial</link>
		<comments>http://www.catswhocode.com/blog/google-website-optimizer-tutorial#comments</comments>
		<pubDate>Thu, 02 Jul 2009 13:20:58 +0000</pubDate>
		<dc:creator>Cristian Antohe</dc:creator>
				<category><![CDATA[Web development]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[ROI]]></category>
		<category><![CDATA[website optimizer]]></category>

		<guid isPermaLink="false">http://www.catswhocode.com/blog/?p=2089</guid>
		<description><![CDATA[Trying to find the best layout or keywords we look at out competition, ask colleagues and friends for their opinion, spend countless hours building the perfect banner. But how do we know if it's effective. With Google Website Optimizer we can not test different solutions and find out which one converts better!<p><em>Get 20% off on the <a href="http://www.wprecipes.com/myhomepro.html">MyHomePro Premium WordPress Theme</a> by using this exclusive code: <strong>wpcats20</strong>.</em></p>
]]></description>
			<content:encoded><![CDATA[<p>Designers and developers are constantly scratching their head, trying to find that perfect layout, the best keywords, what color make users more willing to interact with your website or what banner design is most effective at generating clicks.</p>
<p>We make deductions based on our project specifications and create "the best" possible version and then publish it. However, no matter how experienced we are, users are not always predictable and our "best" version could turn out to be the worst.</p>
<p>With <a rel="nofollow" href="http://www.google.com/websiteoptimizer">Google Website Optimizer Tool</a>, we can now measure the effectiveness of different solutions, by allowing you to test different versions of your site content and thus  determining what will best attract users and lead them to convert on your site.</p>
<h2>The Experiment</h2>
<p><img src="http://www.catswhocode.com/blog/wp-content/uploads/2009/06/cwc_tshirt.jpg" alt="cwc_tshirt" width="200" height="200" class="alignright size-full wp-image-2108" style="float:right; margin:0 0 10px 10px;" />The idea is that we'll have two landing pages for our fictional product, a "Cats who Code" tshirt. Each page will have a different background color (red and blue). By the end of the experiment we'll know which page converted best by the number of orders from each page.</p>
<p>To start using this free tool you'll need a Google account. After we sign in we can just go ahead and create a new experiment. </p>
<p><img class="aligncenter size-full wp-image-2103" src="http://www.catswhocode.com/blog/wp-content/uploads/2009/06/create_experiment.jpg" alt="create_experiment" width="590" height="332" /></p>
<p>There are two types of experiments you can do:</p>
<ul>
<li>A/B Experiment - The simplest way to start testing fast. This method compares the performance of entirely different versions of a page.</li>
<li>Multivariate Experiment - The most robust way to test lots of ideas. This method compares the performance of content variations in multiple locations on a page.</li>
</ul>
<p>We'll go with the A/B experiment, as that is faster and easier to set up.</p>
<p>Luckily, the Google Website Optimizer team has made this quite easy to understand and implement. We'll need three things before we can continue:</p>
<ol>
<li>The initial page you would like to test. I'll call this 'index.html'. This is the blue version one.</li>
<li>The alternate version of our test page. This will be called 'index-red.html'. These URLs could be bookmarked by your users, so after your experiment finishes, you may want to keep these URLs valid.</li>
<li>Identify your conversion page. In out example that will be represented by the 'order.html' page. For you this might be the page displayed after a user signs up for a newsletter, or fills out a contact form.</li>
</ol>
<p>Once we have these three pages setup we can go forward and build our experiment. Google will ask you where your pages are located.</p>
<p><img src="http://www.catswhocode.com/blog/wp-content/uploads/2009/06/identify.jpg" alt="identify" width="590" height="599" class="aligncenter size-full wp-image-2115" style="border:1px solid #ccc" /></p>
<h2>Setting up the JavaScript code</h2>
<p>The next step is basically the most "technically challenging" one. We have two options: <em>your web team will install and validate JavaScript tags</em> or <em>You will install and validate the JavaScript tags</em>. Since most of us like to do things our self we'll go ahead and insert the JavaScript.</p>
<p><img src="http://www.catswhocode.com/blog/wp-content/uploads/2009/06/validation.jpg" alt="validation" width="590" height="367" class="aligncenter size-full wp-image-2116" style="border:1px solid #ccc" /></p>
<p>There are 4 JavaScript codes that you need to copy-paste into your 3 pages. To make matters easy the Website Optimizer team included some really user friendly code validations that will tell you the exact error in case you get one, so instead of spending time searching for a typo you can set up your experiment fast and painless. </p>
<p>The code will have to be inserted inside:</p>
<ul>
<li>The Original page - at the beginning and at the end of it</li>
<li>The Variation page - at the end of the source code</li>
<li>The Conversion page - also at the end of the source code</li>
</ul>
<p><img src="http://www.catswhocode.com/blog/wp-content/uploads/2009/06/invalid.jpg" alt="invalid" width="590" height="391" class="aligncenter size-full wp-image-2119" /></p>
<p>Now all we have to do is start it and wait for the results to come in. It's recommended to have at least 100 conversions per page or it won't be conclusive. </p>
<h2>Learn More</h2>
<p>While this is a simple example, you now have some basic knowledge to build on. Google not only developed an extremely useful tool to help your website convert, but also produced all the needed information to educate it's users, so even if you don't want or need Google Website optimizer, just by reading the <a href="http://www.google.com/support/websiteoptimizer/">documentation</a> you'll definitely learn something new.</p>
<p>If you're still not convinced visit the <a href="http://www.google.com/websiteoptimizer/workout/">Workout</a> page from Google, where 4 case studies are presented with insight on the workflow and actual results from real life projects. </p>
<p><em>Get 20% off on the <a href="http://www.wprecipes.com/myhomepro.html">MyHomePro Premium WordPress Theme</a> by using this exclusive code: <strong>wpcats20</strong>.</em></p>
<img src="http://feeds.feedburner.com/~r/Catswhocode/~4/B5SX_FJ7hy8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.catswhocode.com/blog/google-website-optimizer-tutorial/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://www.catswhocode.com/blog/google-website-optimizer-tutorial</feedburner:origLink></item>
		<item>
		<title>10 awesome things to do with cURL</title>
		<link>http://feedproxy.google.com/~r/Catswhocode/~3/j0FKiB6HqVM/10-awesome-things-to-do-with-curl</link>
		<comments>http://www.catswhocode.com/blog/10-awesome-things-to-do-with-curl#comments</comments>
		<pubDate>Mon, 29 Jun 2009 15:25:38 +0000</pubDate>
		<dc:creator>Jean-Baptiste Jung</dc:creator>
				<category><![CDATA[Web development]]></category>

		<guid isPermaLink="false">http://www.catswhocode.com/blog/?p=2052</guid>
		<description><![CDATA[cURL, and its PHP extension libcURL, are tools which can be used to simulate a web browser. In fact, it can for example, submit forms. In this article, I'm going to show you 10 incredible things that you can do using PHP and cURL.<p><em>Get 20% off on the <a href="http://www.wprecipes.com/myhomepro.html">MyHomePro Premium WordPress Theme</a> by using this exclusive code: <strong>wpcats20</strong>.</em></p>
]]></description>
			<content:encoded><![CDATA[<h2>Acknowledgments</h2>
<p><strong>New to cURL?</strong> If yes, check out the following articles to learn the purposes and basics of cURL/libcurl.</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/CURL" target="blank">cURL Wikipedia page</a></li>
<li><a href="http://curl.haxx.se/docs/httpscripting.html" target="blank">cURL tutorial: Using cURL to automate HTTP jobs </a></li>
</ul>
<p>Please note that some of the techniques shown here can be used for "blackhat" methods. The goal of this article is only educationnal, please do not use any of the snippets below for illegal stuff.</p>
<h2>1 - Update your Facebook status</h2>
<p>Wanna update your facebook status, but don't want to go to facebook.com, login, and finally being able to update your status? Simply save the following code on your server, define the variables, and voilà!</p>
<pre>
&lt;?PHP
/*******************************
*	Facebook Status Updater
*	Christian Flickinger
*	http://nexdot.net/blog
*	April 20, 2007
*******************************/

$status = 'YOUR_STATUS';
$first_name = 'YOUR_FIRST_NAME';
$login_email = 'YOUR_LOGIN_EMAIL';
$login_pass = 'YOUR_PASSWORD';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://login.facebook.com/login.php?m&amp;amp;next=http%3A%2F%2Fm.facebook.com%2Fhome.php');
curl_setopt($ch, CURLOPT_POSTFIELDS,'email='.urlencode($login_email).'&amp;pass='.urlencode($login_pass).'&amp;login=Login');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIEJAR, &quot;my_cookies.txt&quot;);
curl_setopt($ch, CURLOPT_COOKIEFILE, &quot;my_cookies.txt&quot;);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, &quot;Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3&quot;);
curl_exec($ch);

curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_URL, 'http://m.facebook.com/home.php');
$page = curl_exec($ch);

curl_setopt($ch, CURLOPT_POST, 1);
preg_match('/name=&quot;post_form_id&quot; value=&quot;(.*)&quot; \/&gt;'.ucfirst($first_name).'/', $page, $form_id);
curl_setopt($ch, CURLOPT_POSTFIELDS,'post_form_id='.$form_id[1].'&amp;status='.urlencode($status).'&amp;update=Update');
curl_setopt($ch, CURLOPT_URL, 'http://m.facebook.com/home.php');
curl_exec($ch);
?&gt;
</pre>
<p><strong>Source:</strong> <a href="http://codesnippets.joyent.com/posts/show/1204">http://codesnippets.joyent.com/posts/show/1204</a></p>
<h2>2 - Get download speed of your webserver</h2>
<p>Do you ever wanted to know the exact download speed of your webserver (or any other?) If yes, you'll love that code. You just have to initialize the $url variable with any resources from the webserver (images, pdf, etc), place the file on your server and point your browser to it. The output will be a full report of download speed.</p>
<pre>
&lt;?php error_reporting(E_ALL | E_STRICT);

// Initialize cURL with given url
$url = 'http://download.bethere.co.uk/images/61859740_3c0c5dbc30_o.jpg';
$ch = curl_init($url);

curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, 'Sitepoint Examples (thread 581410; http://www.sitepoint.com/forums/showthread.php?t=581410)');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);

set_time_limit(65);

$execute = curl_exec($ch);
$info = curl_getinfo($ch);

// Time spent downloading, I think
$time = $info['total_time']
      - $info['namelookup_time']
      - $info['connect_time']
      - $info['pretransfer_time']
      - $info['starttransfer_time']
      - $info['redirect_time'];

// Echo friendly messages
header('Content-Type: text/plain');
printf(&quot;Downloaded %d bytes in %0.4f seconds.\n&quot;, $info['size_download'], $time);
printf(&quot;Which is %0.4f mbps\n&quot;, $info['size_download'] * 8 / $time / 1024 / 1024);
printf(&quot;CURL said %0.4f mbps\n&quot;, $info['speed_download'] * 8 / 1024 / 1024);

echo &quot;\n\ncurl_getinfo() said:\n&quot;, str_repeat('-', 31 + strlen($url)), &quot;\n&quot;;
foreach ($info as $label =&gt; $value)
{
	printf(&quot;%-30s %s\n&quot;, $label, $value);
}
?&gt;
</pre>
<p><strong>Source:</strong> <a href="http://cowburn.info/2008/11/29/download-speed-php-curl">http://cowburn.info/2008/11/29/download-speed-php-curl</a></p>
<h2>3 - Myspace login using cURL</h2>
<pre>
&lt;?php

function login( $data, $useragent = 'Mozilla 4.01', $proxy = false ) {
    $ch = curl_init();
    $hash = crc32( $data['email'].$data['pass'] );
    $hash = sprintf( &quot;%u&quot;, $hash );
    $randnum = $hash.rand( 0, 9999999 );
    if( $proxy ) curl_setopt( $ch, CURLOPT_PROXY, $proxy );
    curl_setopt( $ch, CURLOPT_COOKIEJAR, '/tmp/cookiejar-'.$randnum );
    curl_setopt( $ch, CURLOPT_COOKIEFILE, '/tmp/cookiejar-'.$randnum );
    curl_setopt( $ch, CURLOPT_USERAGENT, $useragent );
    curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1 );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt( $ch, CURLOPT_POST, 0);
    curl_setopt( $ch, CURLOPT_URL, 'http://www.myspace.com' );
    $page = curl_exec( $ch );
    preg_match( '/MyToken=(.+?)&quot;/i', $page, $token );
    if( $token[1] ) {
        curl_setopt( $ch, CURLOPT_URL, 'http://login.myspace.com/index.cfm?fuseaction=login.process&amp;MyToken='.$token[1] );
        curl_setopt( $ch, CURLOPT_REFERER, 'http://www.myspace.com' );
        curl_setopt( $ch, CURLOPT_HTTPHEADER, Array( 'Content-Type: application/x-www-form-urlencoded' ) );
        curl_setopt( $ch, CURLOPT_POST, 1 );
        $postfields = 'NextPage=&amp;email='.urlencode( $data['mail'] ).'&amp;password='.urlencode( $data['pass'] ).'&amp;loginbutton.x=&amp;loginbutton.y=';
        curl_setopt( $ch, CURLOPT_POSTFIELDS, $postfields );
        $page = curl_exec( $ch );
        if( strpos( $page, 'SignOut' ) !== false ) {
                return $randnum;
        }
        else {
            preg_match( '/MyToken=(.+?)&quot;/i', $page, $token );
            preg_match( '/replace\(&quot;([^\&quot;]+)&quot;/', $page, $redirpage );
            if( $token[1] ) {
                curl_setopt( $ch, CURLOPT_POST, 0 );
                curl_setopt( $ch, CURLOPT_URL, 'http://home.myspace.com/index.cfm?&amp;fuseaction=user&amp;Mytoken='.$token[1] );
                $page = curl_exec( $ch );
                curl_close( $ch );
                if( strpos( $page, 'SignOut' ) !== false ) {
                    return $randnum;
                }
            }
            elseif( $redirpage[1] ) {
                curl_setopt( $ch, CURLOPT_REFERER, 'http://login.myspace.com/index.cfm?fuseaction=login.process&amp;MyToken='.$token[1] );
                curl_setopt( $ch, CURLOPT_URL, $redirpage[1] );
                curl_setopt( $ch, CURLOPT_POST, 0 );
                $page = curl_exec( $ch );
                curl_close( $ch );
                if( strpos( $page, 'SignOut' ) !== false ) {
                    return $randnum;
                }
            }
        }
    }
    return false;
}
?&gt;
</pre>
<p><strong>Source:</strong> <a href="http://www.seo-blackhat.com/article/myspace-login-function-php-curl.html">http://www.seo-blackhat.com/article/myspace-login-function-php-curl.html</a></p>
<h2>4 - Publish a post on your WordPress blog, using cURL</h2>
<p>I know that most of you enjoy WordPress, so here is a nice "hack" as the ones I regulary publish on my other blog <a href="http://www.wprecipes.com">WpRecipes</a>.<br />
This function can post on your WordPress blog. You don't need to login to your WP dashboard etc.<br />
Though, you must activate the XMLRPC posting option in your WordPress blog. If this option isn't activated, the code will not be able to insert anything into WordPress database. Another thing, make sure the XMLRPC functions are activated on your php.ini file.</p>
<pre>
function wpPostXMLRPC($title,$body,$rpcurl,$username,$password,$category,$keywords='',$encoding='UTF-8')
{
    $title = htmlentities($title,ENT_NOQUOTES,$encoding);
    $keywords = htmlentities($keywords,ENT_NOQUOTES,$encoding);

    $content = array(
        'title'=&gt;$title,
        'description'=&gt;$body,
        'mt_allow_comments'=&gt;0,  // 1 to allow comments
        'mt_allow_pings'=&gt;0,  // 1 to allow trackbacks
        'post_type'=&gt;'post',
        'mt_keywords'=&gt;$keywords,
        'categories'=&gt;array($category)
    );
    $params = array(0,$username,$password,$content,true);
    $request = xmlrpc_encode_request('metaWeblog.newPost',$params);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
    curl_setopt($ch, CURLOPT_URL, $rpcurl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 1);
    $results = curl_exec($ch);
    curl_close($ch);
    return $results;
?&gt;
</pre>
<p><strong>Source:</strong> <a href="http://porn-sex-viagra-casino-spam.com/coding/poster-automatiquement-sur-wordpress-avec-php/">http://porn-sex-viagra-casino-spam.com/coding/poster-automatiquement-sur-wordpress-avec-php/</a></p>
<h2>5 - Test the existence of a given url</h2>
<p>I know, it sounds basic. In fact, <em>it is basic</em>, but it is also very useful, especially when you have to work with external resources. </p>
<pre>
&lt;?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, &quot;http://www.jellyandcustard.com/&quot;);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch)
echo $data;
?&gt;</pre>
<p><strong>Source:</strong> <a href="http://www.jellyandcustard.com/2006/05/31/determining-if-a-url-exists-with-curl/">http://www.jellyandcustard.com/2006/05/31/determining-if-a-url-exists-with-curl/</a></p>
<h2>6 - Post comments on WordPress blogs</h2>
<p>In a previous article, <a href="http://www.catswhocode.com/blog/how-spammers-spams-your-blog-comments">I have discussed how spammers spams your WordPress blog</a>. To do so, they simply have to fill the $postfields array with the info they want to display and load the page.<br />
Of course, this code is only for educationnal purposes.</p>
<pre>&lt;?php
$postfields = array();
$postfields["action"] = "submit";
$postfields["author"] = "Spammer";
$postfields["email"] = "spammer@spam.com";
$postfields["url"] = "http://www.iamaspammer.com/";
$postfields["comment"] = "I am a stupid spammer.";
$postfields["comment_post_ID"] = "123";
$postfields["_wp_unfiltered_html_comment"] = "0d870b294b";
//Url of the form submission
$url = "http://www.ablogthatdoesntexist.com/blog/suggerer_site.php?action=meta_pass&amp;id_cat=0";
$useragent = "Mozilla/5.0";
$referer = $url; 

//Initialize CURL session
$ch = curl_init($url);
//CURL options
curl_setopt($ch, CURLOPT_POST, 1);
//We post $postfields data
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
//We define an useragent (Mozilla/5.0)
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
//We define a refferer ($url)
curl_setopt($ch, CURLOPT_REFERER, $referer);
//We get the result page in a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//We exits CURL
$result = curl_exec($ch);
curl_close($ch);

//Finally, we display the result
echo $result;
?&gt;
</pre>
<p><strong>Source:</strong> <a href="http://www.catswhocode.com/blog/how-spammers-spams-your-blog-comments">http://www.catswhocode.com/blog/how-spammers-spams-your-blog-comments</a></p>
<h2>7 - Follow your Adsense earnings with an RSS reader </h2>
<p>Most bloggers uses Adsense on their blog and (try to) make money with Google. This excellent snippet allows you to follow your Adsense earnings...with a RSS reader! Definitely awesome.<br />
<em>(Script too big to be displayed on the blog, click <a href="http://planetozh.com/download/rss-adsense.txt">here to preview</a>)</em><br />
<strong>Source:</strong> <a href="http://planetozh.com/blog/my-projects/track-adsense-earnings-in-rss-feed/">http://planetozh.com/blog/my-projects/track-adsense-earnings-in-rss-feed/</a></p>
<h2>8 - Get feed subscribers count in full text</h2>
<p>If you're a blogger, you're probably using the popular FeedBurner service, which allo you to know how many people grabbed your rss feed. Feedburner have a chicklet to proudly display your subscriber count on your blog. I personally like the chicklet's look, but I heard lots of bloggers complaining about it. happilly, cURL can simply grab the count value and return it to you as a variable so you can display it as you want on your blog.</p>
<pre>
//get cool feedburner count
$whaturl=&quot;https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=feedburner-id&quot;;

//Initialize the Curl session
$ch = curl_init();

//Set curl to return the data instead of printing it to the browser.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//Set the URL
curl_setopt($ch, CURLOPT_URL, $whaturl);

//Execute the fetch
$data = curl_exec($ch);

//Close the connection
curl_close($ch);
$xml = new SimpleXMLElement($data);
$fb = $xml-&gt;feed-&gt;entry['circulation'];
//end get cool feedburner count
</pre>
<p><strong>Source:</strong> <a href="http://www.hongkiat.com/blog/display-google-feed-subscriber-count-in-text/">http://www.hongkiat.com/blog/display-google-feed-subscriber-count-in-text/</a></p>
<h2>9 - Get the content of a webpage into a PHP variable</h2>
<p>This is a very basic thing to do with cURL, but with endless possibilities. Once you have a webpage in a PHP variable, you can for example, retrieve a particular information on the page to use on your own website.</p>
<pre>
&lt;?php
    ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "example.com");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($ch);
    curl_close($ch);
?&gt;
</pre>
<p>&nbsp;</p>
<h2>10 - Post to Twitter using PHP and cURL</h2>
<p>Twitter is very popular since some time now, and you probably already have an account there. (<a href="http://www.twitter.com/catswhocode">We have one too</a>) So, what about using cURL to tweet from your server without connectiong to Twitter?</p>
<pre>
&lt;?php
// Set username and password
$username = 'username';
$password = 'password';
// The message you want to send
$message = 'is twittering from php using curl';
// The twitter API address
$url = 'http://twitter.com/statuses/update.xml';
// Alternative JSON version
// $url = 'http://twitter.com/statuses/update.json';
// Set up and execute the curl process
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, &quot;$url&quot;);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_POST, 1);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, &quot;status=$message&quot;);
curl_setopt($curl_handle, CURLOPT_USERPWD, &quot;$username:$password&quot;);
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);
// check for success or failure
if (empty($buffer)) {
    echo 'message';
} else {
    echo 'success';
}
?&gt;
</pre>
<p><strong>Source:</strong> <a href="http://morethanseven.net/2007/01/20/posting-to-twitter-using-php/">http://morethanseven.net/2007/01/20/posting-to-twitter-using-php/</a></p>
<p><em>Get 20% off on the <a href="http://www.wprecipes.com/myhomepro.html">MyHomePro Premium WordPress Theme</a> by using this exclusive code: <strong>wpcats20</strong>.</em></p>
<img src="http://feeds.feedburner.com/~r/Catswhocode/~4/j0FKiB6HqVM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.catswhocode.com/blog/10-awesome-things-to-do-with-curl/feed</wfw:commentRss>
		<slash:comments>40</slash:comments>
		<feedburner:origLink>http://www.catswhocode.com/blog/10-awesome-things-to-do-with-curl</feedburner:origLink></item>
		<item>
		<title>10 incredibly cool WordPress shortcodes</title>
		<link>http://feedproxy.google.com/~r/Catswhocode/~3/n8nxI4bn2CY/10-incredibly-cool-wordpress-shortcodes</link>
		<comments>http://www.catswhocode.com/blog/10-incredibly-cool-wordpress-shortcodes#comments</comments>
		<pubDate>Thu, 25 Jun 2009 13:48:40 +0000</pubDate>
		<dc:creator>Jean-Baptiste Jung</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.catswhocode.com/blog/?p=2024</guid>
		<description><![CDATA[Introduced in WordPress 2.5, shortcodes are a very easy way to display lot of things on your blog posts by inserting a very simple code. In this article, I'm going to show 10 incredible things shortcodes can do.<p><em>Get 20% off on the <a href="http://www.wprecipes.com/myhomepro.html">MyHomePro Premium WordPress Theme</a> by using this exclusive code: <strong>wpcats20</strong>.</em></p>
]]></description>
			<content:encoded><![CDATA[<h2>How shortcodes works</h2>
<p>There's already tons of quality articles about WordPress shortcodes. If you're new to WordPress shortcode, you should consider reading theses posts:</p>
<ul>
<li><a href="http://www.wprecipes.com/how-to-save-time-by-using-wordpress-shortcodes">Using WordPress shortcodes</a></li>
<li><a href="http://codex.wordpress.org/Shortcode_API">WordPress Codex: Shortcodes reference</a></li>
</ul>
<p>Regarding this article, the codes have to be pasted on your theme functions.php file. Then simply use the shortcode as displayed (Usage...)</p>
<h2>1 - Displaying related posts</h2>
<p>Related posts are definitely a great way to get your visitors staying longer on your blog. Sure, there's tons of plugins to display them, but what about a simple shortcode?</p>
<pre>
function related_posts_shortcode( $atts ) {
	extract(shortcode_atts(array(
	    'limit' =&gt; '5',
	), $atts));

	global $wpdb, $post, $table_prefix;

	if ($post-&gt;ID) {
		$retval = '&lt;ul&gt;';
 		// Get tags
		$tags = wp_get_post_tags($post-&gt;ID);
		$tagsarray = array();
		foreach ($tags as $tag) {
			$tagsarray[] = $tag-&gt;term_id;
		}
		$tagslist = implode(',', $tagsarray);

		// Do the query
		$q = &quot;SELECT p.*, count(tr.object_id) as count
			FROM $wpdb-&gt;term_taxonomy AS tt, $wpdb-&gt;term_relationships AS tr, $wpdb-&gt;posts AS p WHERE tt.taxonomy ='post_tag' AND tt.term_taxonomy_id = tr.term_taxonomy_id AND tr.object_id  = p.ID AND tt.term_id IN ($tagslist) AND p.ID != $post-&gt;ID
				AND p.post_status = 'publish'
				AND p.post_date_gmt &lt; NOW()
 			GROUP BY tr.object_id
			ORDER BY count DESC, p.post_date_gmt DESC
			LIMIT $limit;&quot;;

		$related = $wpdb-&gt;get_results($q);
 		if ( $related ) {
			foreach($related as $r) {
				$retval .= '&lt;li&gt;&lt;a title=&quot;'.wptexturize($r-&gt;post_title).'&quot; href=&quot;'.get_permalink($r-&gt;ID).'&quot;&gt;'.wptexturize($r-&gt;post_title).'&lt;/a&gt;&lt;/li&gt;';
			}
		} else {
			$retval .= '
	&lt;li&gt;No related posts found&lt;/li&gt;';
		}
		$retval .= '&lt;/ul&gt;';
		return $retval;
	}
	return;
}
add_shortcode('related_posts', 'related_posts_shortcode');
</pre>
<p><strong>Usage:</strong></p>
<pre>[related_posts]</pre>
<p><strong><br />
Source: </strong><a href="http://blue-anvil.com/archives/8-fun-useful-shortcode-functions-for-wordpress">http://blue-anvil.com/archives/8-fun-useful-shortcode-functions-for-wordpress</a></p>
<h2>2 - Show a Google chart</h2>
<p>The <a href="http://code.google.com/intl/fr/apis/chart/" target="blank">Google Charts API</a> is probably the easiest way to create dynamic charts online. here is a shortcode to make the process even easier on your WordPress blog.</p>
<pre>
function chart_shortcode( $atts ) {
	extract(shortcode_atts(array(
	    'data' =&gt; '',
	    'colors' =&gt; '',
	    'size' =&gt; '400x200',
	    'bg' =&gt; 'ffffff',
	    'title' =&gt; '',
	    'labels' =&gt; '',
	    'advanced' =&gt; '',
	    'type' =&gt; 'pie'
	), $atts));

	switch ($type) {
		case 'line' :
			$charttype = 'lc'; break;
		case 'xyline' :
			$charttype = 'lxy'; break;
		case 'sparkline' :
			$charttype = 'ls'; break;
		case 'meter' :
			$charttype = 'gom'; break;
		case 'scatter' :
			$charttype = 's'; break;
		case 'venn' :
			$charttype = 'v'; break;
		case 'pie' :
			$charttype = 'p3'; break;
		case 'pie2d' :
			$charttype = 'p'; break;
		default :
			$charttype = $type;
		break;
	}

	if ($title) $string .= '&amp;chtt='.$title.'';
	if ($labels) $string .= '&amp;chl='.$labels.'';
	if ($colors) $string .= '&amp;chco='.$colors.'';
	$string .= '&amp;chs='.$size.'';
	$string .= '&amp;chd=t:'.$data.'';
	$string .= '&amp;chf='.$bg.'';

	return '&lt;img title=&quot;'.$title.'&quot; src=&quot;http://chart.apis.google.com/chart?cht='.$charttype.''.$string.$advanced.'&quot; alt=&quot;'.$title.'&quot; /&gt;';
}
add_shortcode('chart', 'chart_shortcode');
</pre>
<p><strong>Usage:</strong></p>
<pre>[chart data="41.52,37.79,20.67,0.03" bg="F7F9FA" labels="Reffering+sites|Search+Engines|Direct+traffic|Other" colors="058DC7,50B432,ED561B,EDEF00" size="488x200" title="Traffic Sources" type="pie"]</pre>
<p><strong>Source:</strong> <a href="http://blue-anvil.com/archives/8-fun-useful-shortcode-functions-for-wordpress">http://blue-anvil.com/archives/8-fun-useful-shortcode-functions-for-wordpress</a></p>
<h2>3 - Integrate Adsense ads</h2>
<p>Adsense is probably the easiest way to make money online and most bloggers are using it in order to earn an online income. using widgets , you can easily add Adsense ads in your blog sidebar, but the best way to get clicks from visitors is definitely to integrate Adsense in your posts. The whole process is incredibly easy, using WordPress shortcodes.</p>
<pre>
function showads() {
    return '&lt;script type="text/javascript">&lt;!--
google_ad_client = "pub-3637220125174754";
google_ad_slot = "4668915978";
google_ad_width = 468;
google_ad_height = 60;
//-->
&lt;/script>
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
&lt;/script>
';
}

add_shortcode('adsense', 'showads');
</pre>
<p><strong>Usage:</strong></p>
<pre>[adsense]</pre>
<p><strong>Source:</strong> <a href="http://www.wprecipes.com/how-to-embed-adsense-anywhere-on-your-posts">http://www.wprecipes.com/how-to-embed-adsense-anywhere-on-your-posts</a></p>
<h2>4 - Display member-info content using a WordPress shortcode</h2>
<p>Since some months, more and more blogs are creating "members-only" section, featuring premium downloads and infos. Do you know how easy is it to display some "member-only" content on your blog, using a shortcode?</p>
<pre>
function access_check_shortcode( $attr, $content = null ) {
    extract( shortcode_atts( array( 'capability' => 'read' ), $attr ) );
    if ( current_user_can( $capability ) &#038;& !is_null( $content ) &#038;& !is_feed() )
        return $content;

    return 'Sorry, only registered members can see this text.';
}

add_shortcode( 'access', 'access_check_shortcode' );
</pre>
<p>Usage:</p>
<pre>[access capability="switch_themes"]</pre>
<p><strong>Source:</strong> <a href="http://justintadlock.com/archives/2009/05/09/using-shortcodes-to-show-members-only-content">http://justintadlock.com/archives/2009/05/09/using-shortcodes-to-show-members-only-content</a></p>
<h2>5 - Embeddable RSS feed reader</h2>
<p>Among other great things, WordPress have a built-in RSS reader, used to display feeds on your dashboard. I already shown <a href="http://www.wprecipes.com/how-to-display-any-rss-feed-on-your-wordpress-blog" target="blank">how you can use it on your blog sidebar</a> (or header, footer, etc...), but with a shortcode, you can even insert it on your posts.</p>
<pre>
//This file is needed to be able to use the wp_rss() function.
include_once(ABSPATH.WPINC.'/rss.php');

function readRss($atts) {
    extract(shortcode_atts(array(
	"feed" => 'http://',
      "num" => '1',
    ), $atts));

    return wp_rss($feed, $num);
}

add_shortcode('rss', 'readRss');
</pre>
<p><strong>Usage: </strong></p>
<pre>
[rss feed="http://feeds2.feedburner.com/Catswhocode" num="5"]
</pre>
<p><strong>Source:</strong> <a href="http://www.smashingmagazine.com/2009/02/02/mastering-wordpress-shortcodes/">http://www.smashingmagazine.com/2009/02/02/mastering-wordpress-shortcodes/</a></p>
<h2>6 - Automatically create a short url for Twitter</h2>
<p>If you're on <a href="http://www.twitter.com/catswhocode" target="blank">Twitter</a>, you know how short urls are usefull. But a definitely boring thing when you want to tweet a blog post is to create the short url yourself. So, what about using a shortcode to make your readers life easier? </p>
<pre>
function subzane_shorturl($atts) {
	extract(shortcode_atts(array(
		'url' => '',
		'name' => '',
), $atts));
$request = 'http://u.nu/unu-api-simple?url=' . urlencode($url);
$short_url = file_get_contents($request);
	if (substr($short_url, 0, 4) == 'http')    {
		$name = empty($name)?$short_url:$name;
		return '&lt;a href="'.$short_url.'">'.$name.'&lt;/a>';
	} else {
		$name = empty($name)?$url:$name;
		return '&lt;a href="'.$url.'">'.$name.'&lt;/a>';
	}
}
add_shortcode('shorturl', 'subzane_shorturl');
</pre>
<p><strong>Usage:</strong></p>
<pre>[shorturl name="shortcode" url="http://codex.wordpress.org/Shortcode_API"]</pre>
<p><strong>Source:</strong> <a href="http://www.subzane.com/2009/05/shortcode-advantage-unus-url-shortener/">http://www.subzane.com/2009/05/shortcode-advantage-unus-url-shortener/</a></p>
<h2>7 - Display the last image attached to post</h2>
<p>Instead of dealing with image url, a simple shortcode can retrieve and display the last image attached to post:</p>
<pre>
function sc_postimage($atts, $content = null) {
	extract(shortcode_atts(array(
		&quot;size&quot; =&gt; 'thumbnail',
		&quot;float&quot; =&gt; 'none'
	), $atts));
	$images =&amp; get_children( 'post_type=attachment&amp;post_mime_type=image&amp;post_parent=' . get_the_id() );
	foreach( $images as $imageID =&gt; $imagePost )
	$fullimage = wp_get_attachment_image($imageID, $size, false);
	$imagedata = wp_get_attachment_image_src($imageID, $size, false);
	$width = ($imagedata[1]+2);
	$height = ($imagedata[2]+2);
	return '&lt;div class=&quot;postimage&quot; style=&quot;width: '.$width.'px; height: '.$height.'px; float: '.$float.';&quot;&gt;'.$fullimage.'&lt;/div&gt;';
}
add_shortcode(&quot;postimage&quot;, &quot;sc_postimage&quot;);
</pre>
<p><strong>Usage:</strong></p>
<pre>[postimage]</pre>
<p><strong>Source:</strong> <a href="http://www.wprecipes.com/wordpress-shortcode-easily-display-the-last-image-attached-to-post">http://www.wprecipes.com/wordpress-shortcode-easily-display-the-last-image-attached-to-post</a></p>
<h2>8 - Add administration notes on posts</h2>
<p>If you're owning a multi-author blog, it should be useful to be able to leave messages on posts that can only be seen by other admins. For example, the blog owner should add a message on a post, asking the writer to correct a mistake or add more info.</p>
<pre>
add_shortcode( 'note', 'sc_note' );

function sc_note( $atts, $content = null ) {
	 if ( current_user_can( 'publish_posts' ) )
		return '&lt;div class="note">'.$content.'&lt;/div>';
	return '';
}
</pre>
<p><strong>Usage:</strong> </p>
<pre>[note]This is a personal note that only admins can see![/note]</pre>
<p><strong>Source:</strong> <a href="http://www.wprecipes.com/add-private-notes-to-your-wordpress-blog-posts">http://www.wprecipes.com/add-private-notes-to-your-wordpress-blog-posts</a></p>
<h2>9 - Remove WordPress automatic formatting</h2>
<p>If you're used to display code snippets on your blog, you know that WordPress automatic formatting can be a pain for developers. The solution is simple: Using a shortcode to remove the auto-formatting functions on certain portions of text.</p>
<pre>
function my_formatter($content) {
	$new_content = '';
	$pattern_full = '{(\[raw\].*?\[/raw\])}is';
	$pattern_contents = '{\[raw\](.*?)\[/raw\]}is';
	$pieces = preg_split($pattern_full, $content, -1, PREG_SPLIT_DELIM_CAPTURE);

	foreach ($pieces as $piece) {
		if (preg_match($pattern_contents, $piece, $matches)) {
			$new_content .= $matches[1];
		} else {
			$new_content .= wptexturize(wpautop($piece));
		}
	}

	return $new_content;
}

remove_filter('the_content', 'wpautop');
remove_filter('the_content', 'wptexturize');

add_filter('the_content', 'my_formatter', 99);
</pre>
<p><strong>Usage: </strong></p>
<pre>[raw]This portion of text will not be automatically formatted by WP.[/raw]</pre>
<p><strong>Source:</strong> <a href="http://wordpress.org/support/topic/280732">http://wordpress.org/support/topic/280732</a></p>
<h2>10 - Display your blog stats using shortcodes</h2>
<p>Ever wished to be able to display your blog stats, in real time? Thanks to Wesley and his "Blog Stats" plugin, you can display stats info as such as number of posts, number of comments, average comments per post, google pagerank, alexa rank, etc, using simple shortcodes.<br />
The Blog Stats plugin can be downloaded <a href="http://www.improvingtheweb.com/wordpress-plugins/blog-stats/" target="blank">here</a> and have to be installed on your blog just as you install any other plugin.<br />
<strong>Usage: </strong></p>
<pre>
&#91;pagerank]
&#91;feedburner_subscribers]
&#91;alexa_rank]
&#91;technorati_authority]
&#91;technorati_rank]
&#91;user_count]
&#91;post_count]
&#91;page_count]
&#91;comment_count]
&#91;trackback_count]
&#91;avg_comments_per_post]
&#91;category_count]
&#91;tag_count]
&#91;link_count]
&#91;google_backlinks]
&#91;yahoo_backlinks]
&#91;delicious_bookmarks]
</pre>
<p>Source: <a href="http://www.improvingtheweb.com/wordpress-plugins/blog-stats/">http://www.improvingtheweb.com/wordpress-plugins/blog-stats/</a></p>
<p><em>By the way, did you already visited our new sponsor <a href="http://www.catswhocode.com/blog/dathemes.html">DaThemes</a>? They provide awesome WordPress themes as well as a great <a href="http://www.catswhocode.com/blog/dathemes.html">affiliate program</a> that you can join and make money.</em></p>
<p><em>Get 20% off on the <a href="http://www.wprecipes.com/myhomepro.html">MyHomePro Premium WordPress Theme</a> by using this exclusive code: <strong>wpcats20</strong>.</em></p>
<img src="http://feeds.feedburner.com/~r/Catswhocode/~4/n8nxI4bn2CY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.catswhocode.com/blog/10-incredibly-cool-wordpress-shortcodes/feed</wfw:commentRss>
		<slash:comments>57</slash:comments>
		<feedburner:origLink>http://www.catswhocode.com/blog/10-incredibly-cool-wordpress-shortcodes</feedburner:origLink></item>
		<item>
		<title>Happy birthday Cats Who Code! One year of blogging in review</title>
		<link>http://feedproxy.google.com/~r/Catswhocode/~3/vNeOrBLZNfU/happy-birthday-cats-who-code-one-year-of-blogging-in-review</link>
		<comments>http://www.catswhocode.com/blog/happy-birthday-cats-who-code-one-year-of-blogging-in-review#comments</comments>
		<pubDate>Mon, 22 Jun 2009 12:14:03 +0000</pubDate>
		<dc:creator>Jean-Baptiste Jung</dc:creator>
				<category><![CDATA[Blogging Tips]]></category>

		<guid isPermaLink="false">http://www.catswhocode.com/blog/?p=1947</guid>
		<description><![CDATA[These days, Cats Who Code is turning 1 year old. Let's see in details what happened to the blog (and my other blogs too) during this time. Traffic, articles, we'll discuss everything.<p><em>Get 20% off on the <a href="http://www.wprecipes.com/myhomepro.html">MyHomePro Premium WordPress Theme</a> by using this exclusive code: <strong>wpcats20</strong>.</em></p>
]]></description>
			<content:encoded><![CDATA[<h2>The story</h2>
<p>Back in June 2008, I was blogging since almost a year on Lyxia.org, a blog in French language that I have sold since. Together with a friend, we decided that it should be really cool to create a blog in English to share our knowledges with people worldwide. </p>
<p>We had to pick up a domain name. It wasn't easy, as always. I first tried to find something like "webdevmagazine.com", but all the interesting names were already taken. So, as both me and Michael (the friend I was starting Cats Who Code with) are cats lovers, I came up with the name <em>Cats Who Code</em>, which I found original, funny and catchy. 1 year later, I still really love that name.</p>
<p>So, Cats Who Code were born. I created the first blog theme, which was pretty simple and not so pretty. For our first articles, Michael and I translated posts from our respective blogs. While I was in holidays in New York City, one of our early articles, <a href="http://www.catswhocode.com/blog/100-vim-commands-every-programmer-should-know">100 Vim commands that every programmer should know</a> hitted Delicious.com frontpage, which was very encouraging. At the time, our feedburner count was something like 70 readers.<br/></p>
<div align="center">
<img src="http://www.catswhocode.com/blog/wp-content/uploads/2009/06/logo.png" alt=""/><br />
<em>Cats Who Code first logo, used from June to December 2008.</em>
</div>
<p>In august 2008, Cats Who Code did a great performance by placing two GNU/Linux related articles on Digg frontpage. On August 18, we had 18000+ unique visitors, which is still our absolute traffic record. As the blog was starting to grow, it required us to work more on it. I started to work a lot and to publish WordPress related posts on WpHacks to attract some new readers for Cats Who Code. At the time, I was contacted by Packt Publishing for writing a book about WordPress. I accepted, and after 9 months of hard work, the book is going to be released soon.</p>
<p>October 2008 was definitely an important month in my life as a blogger. Inspired by the WordPress book I just started to write, I decided to launch a new blog, focused on providing small but usefull WordPress hacks, tips and tricks. This blog is a great business model because the posts takes approximately only 10/15 minutes to be written. I didn't expected it, but 2 months after launching, <a href="http://www.wprecipes.com">WpRecipes</a> already had 1000 rss suscribers, while Cats Who Code only had 700. </p>
<p>WpRecipes allowed me to sell lots of premium WordPress themes and benefit of affiliate programs. My online revenue was multiplied by two, which I think was great.</p>
<p>As 2009 was arriving, Cats Who Code became an established blog with an average 3000 unique visitors per day and 1000 rss suscribers. WpRecipes had almost 2000 rss readers, and the average unique visitors per day were 1000, which was not bad at all for a blog having only two months!<br/><br />
Sadly, at this time I was <s>fucked</s> "Smart"priced by Google. My Adsense income was divided by 10, so I decided to focus more on direct advertising. It worked more on WpRecipes than on Cats Who Code, probably due to the fact that CWC was more generic than WpRecipes, which is only focused on one thing, WordPress.</p>
<p>At the beginning of 2009, I launched <a href="http://www.psdrecipes.com">PsdRecipes</a> with my friend <a href="http://www.werewp.com">Jeremy Herve</a>, and relaunched <a href="http://wpvote.com">WpVote</a>, the Digg site for everything WordPress. Sadly, none of theses sites managed to get an efficient online recognition. While I still think they're both great sites, it didn't attracted people as Cats Who Code and WpRecipes did. You can't win everytime. At the same time, <a href="http://www.catswhocode.com/blog/how-to-sell-a-blog-efficiently">I sold my first blog</a>, Lyxia.org, for $3500 because I didn't had the time to maintain it.</p>
<p>The story continues with two great thing that allowed me to earn more money online: The first is BuySellAds.com, an advertising marketplace where you can sell ads on your blog. At first, I didn't wanted to join because they take 25% of your revenue, and though that I'd make more money by selling ads directly on my blog. But I finally decided to give a try. I had nothing to loose anyways.<br/><br />
I was susprised, but 2 weeks after creating my account, BSA had already sold the two ad spots available on Cats Who Code and WpRecipes, for a total amount of $105 (after they took their 25%). At the time, I understood that the 25% they good is nothing because BSA allowed me to sell more ads, and sell it at a higher price than I used to sold it directly on my blogs.</p>
<p>The second good thing at the time was <a href="http://www.catswhocode.com/blog/wpwebhost.html">WpWebHost</a>. This company, which provides a WordPress friendly hosting, contacted me and asked to join their affiliate program. They also gave me free hosting, so I switched most of my sites on their servers, and I'm very happy with.<br/><br />
With their killer affiliate program, <a href="http://www.catswhocode.com/blog/wpwebhost.html">WpWebhost</a> pays me a nice amount of money every month.</p>
<p>May 2009 was also an important month, because for the first time, I bought a blog. The blog is <a href="http://psdvibe.com">PsdVibe</a>, and it focus on providing Photoshop tutorials and resources. When I bought the blog, it has 750 rss readers. Three weeks later, the count jumped to 1200. One of the greatest thing of having multiple blogs is that you can use one to promote the other, and vice-versa. I used this technique a lot and had great results.</p>
<h2>The blog today</h2>
<p>Currently:</p>
<ul>
<li>Cats Who Code have +/- 2500 rss suscribers and an average 3500 unique visitors per day.</li>
<li>WpRecipes have 3600+ rss readers and an average 1500 unique visitors per day.</li>
<li>PsdVibe have 1200+ rss readers, and an average 3500 unique visitors per day.</li>
</ul>
<h2>And now...A new design!</h2>
<p>...Happy birthday Cats Who Code! And of course, thanks to each of you for enjoying reading this blog.<br />
To celebrate the first one year, I have redesigned the blog, making it looking a lot more profesional (In my opinion, of course!) Also, we have a new mascot, designed by talented Ukrainian designer <a href="http://greenbubbles.org.ua/portfolio/">Zira</a>. The new mascot is a drawing of my cat.</p>
<h2>Any plans for the future?</h2>
<p>I talked about the past, I talked about today, so now let's talk about the future.<br />
My main plan is to continue my works on my 3 most important blogs. Don't forget that most of the time, success is exponentional. As an example, when I started Cats Who Code, popular Web Design/Web development blog Six Revisions had 6000 suscribers. Now, one year later, it has 20000+! In fact, it took me 7 months to reach 1000 suscribers on cats Who Code, while 3 months later, I had 2000. <strong>The most difficult time for a blog is when you start it</strong>.</p>
<p>Cats Who Code had some talented contributors in the past year: Michael, Hayes Potter and Alex Denning, the only Cats Who Code guest author who ever made Delicious frontpage. For the upcoming year, I'd like to get more guest authors, so if you'd like to contribute to any of my blogs, don't hesitate to <a href="http://www.catswhocode.com/blog/contact">contact me</a>.</p>
<p><em>Get 20% off on the <a href="http://www.wprecipes.com/myhomepro.html">MyHomePro Premium WordPress Theme</a> by using this exclusive code: <strong>wpcats20</strong>.</em></p>
<img src="http://feeds.feedburner.com/~r/Catswhocode/~4/vNeOrBLZNfU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.catswhocode.com/blog/happy-birthday-cats-who-code-one-year-of-blogging-in-review/feed</wfw:commentRss>
		<slash:comments>38</slash:comments>
		<feedburner:origLink>http://www.catswhocode.com/blog/happy-birthday-cats-who-code-one-year-of-blogging-in-review</feedburner:origLink></item>
		<item>
		<title>10 astonishing CSS hacks and techniques</title>
		<link>http://feedproxy.google.com/~r/Catswhocode/~3/B4j1wV-Lq9E/10-astonishing-css-hacks-and-techniques</link>
		<comments>http://www.catswhocode.com/blog/10-astonishing-css-hacks-and-techniques#comments</comments>
		<pubDate>Tue, 16 Jun 2009 13:58:39 +0000</pubDate>
		<dc:creator>Jean-Baptiste Jung</dc:creator>
				<category><![CDATA[Web development]]></category>

		<guid isPermaLink="false">http://www.catswhocode.com/blog/?p=1682</guid>
		<description><![CDATA[Well, I guess that almost all of you knows CSS and what it can do for you. But some astonishing techniques still remains obscure for a lot of developers. In this article, let's see 10 cross browser css techniques to definitely enhance your designs.<p><em>Get 20% off on the <a href="http://www.wprecipes.com/myhomepro.html">MyHomePro Premium WordPress Theme</a> by using this exclusive code: <strong>wpcats20</strong>.</em></p>
]]></description>
			<content:encoded><![CDATA[<h2>1 - Cross browser inline block</h2>
<p><img src="http://www.catswhocode.com/blog/wp-content/uploads/2009/03/inline-block-479.jpg" alt="" /></p>
<pre>
&lt;style&gt;
    li {
        width: 200px;
        min-height: 250px;
        border: 1px solid #000;
        display: -moz-inline-stack;
        display: inline-block;
        margin: 5px;
        zoom: 1;
        *display: inline;
        _height: 250px;
    }
&lt;/style&gt;

&lt;ul&gt;
        &lt;li&gt;
                &lt;div&gt;
                        &lt;h4&gt;This is awesome&lt;/h4&gt;
                        &lt;img src=&quot;http://farm4.static.flickr.com/3623/3279671785_d1f2e665b6_s.jpg&quot; alt=&quot;lobster&quot; width=&quot;75&quot; height=&quot;75&quot;/&gt;
                &lt;/div&gt;
        &lt;/li&gt;
        &lt;li&gt;
                &lt;!-- etc ... --&gt;
        &lt;/li&gt;
&lt;/ul&gt;
</pre>
<p><strong>Source: <a href="http://www.webinventif.fr/inline-block/">Cross browser inline-block property</a></strong></p>
<h2>2 - Disable Textarea resizing for Safari</h2>
<p><img src="http://www.catswhocode.com/blog/wp-content/uploads/2009/03/resize-textarea.png" alt="" /></p>
<pre>
/ * Supports: car, both, horizontal, none, vertical * /
textarea }
      resize: none;
}
</pre>
<h2>3 - Cross browser rounded corners</h2>
<p><img src="http://www.catswhocode.com/blog/wp-content/uploads/2009/03/rounded-corners1.png" alt=""/></p>
<pre>
.rounded{
    -moz-border-radius: 5px; /* Firefox */
    -webkit-border-radius: 5px; /* Safari */
}
</pre>
<p><strong>Source: <a href="http://www.css3.info/preview/rounded-border/">Border-radius: create rounded corners with CSS!</a></strong></p>
<h2>4 - Cross browser min-height property</h2>
<p><img src="http://www.catswhocode.com/blog/wp-content/uploads/2009/03/min-height.png" alt="" /></p>
<pre>
selector {
  min-height:500px;
  height:auto !important;
  height:500px;
}
</pre>
<p>Source: <a href="http://www.dustindiaz.com/min-height-fast-hack/" target="blank">Min-height fast hack</a></p>
<h2>5 - Image Rollover Borders That Do Not Change Layout</h2>
<p><img src="http://www.catswhocode.com/blog/wp-content/uploads/2009/03/borderrolls.jpg" alt=""/></p>
<pre>
#example-one a img, #example-one a {
    border: none;
    overflow: hidden;
    float: left;
}

#example-one a:hover {
    border: 3px solid black;
}

#example-one a:hover img {
    margin: -3px;
}
</pre>
<p><strong>Source: <a href="http://css-tricks.com/image-rollover-borders-that-do-not-change-layout/">Image rollovers that do not change layout</a></strong></p>
<h2>6 - Cross browser transparency</h2>
<p><img src="http://www.catswhocode.com/blog/wp-content/uploads/2009/03/transparency.png" alt="" /></p>
<pre>
.transparent_class {
	filter:alpha(opacity=50);
	-moz-opacity:0.5;
	-khtml-opacity: 0.5;
	opacity: 0.5;
}
</pre>
<p>Source: <a href="http://css-tricks.com/css-transparency-settings-for-all-broswers/">CSS transparency settings for all browsers</a></p>
<h2>7 - Lighbox in pure CSS: No Javascript needed!</h2>
<p><img src="http://www.catswhocode.com/blog/wp-content/uploads/2009/03/lightbox.jpg" alt=""/><br />
Source: <a href="http://www.emanueleferonato.com/2007/08/22/create-a-lightbox-effect-only-with-css-no-javascript-needed/">Lightbox effect in pure CSS: No javascript needed!</a></p>
<h2>8 - Cross browser pure css tooltips</h2>
<p><img src="http://www.catswhocode.com/blog/wp-content/uploads/2009/03/pure-css-tooltip.png" alt=""/></p>
<pre>
&lt;style type=&quot;text/css&quot;&gt;
a:hover {
    background:#ffffff;
    text-decoration:none;} /*BG color is a must for IE6*/

a.tooltip span {
    display:none;
    padding:2px 3px;
    margin-left:8px;
    width:130px;
}

a.tooltip:hover span{
    display:inline;
    position:absolute;
    background:#ffffff;
    border:1px solid #cccccc;
    color:#6c6c6c;
}
&lt;/style&gt;

Easy &lt;a class=&quot;tooltip&quot; href=&quot;#&quot;&gt;Tooltip&lt;span&gt;This is the crazy little Easy Tooltip Text.&lt;/span&gt;&lt;/a&gt;.
</pre>
<p><strong>Source: <a href="http://www.kollermedia.at/archive/2008/03/24/easy-css-tooltip/">Easy CSS Tooltip</a></strong></p>
<h2>9 - Set color of selected text (Firefox/Safari only)</h2>
<p><img src="http://www.catswhocode.com/blog/wp-content/uploads/2009/03/text-selection.png" alt=""/></p>
<pre>
::selection {
    background: #ffb7b7; /* Safari */
}

::-moz-selection {
    background: #ffb7b7; /* Firefox */
}
</pre>
<p><strong>Source: <a href="http://css.dzone.com/news/overriding-default-text-select" target="blank">Use CSS to Override Default Text Selection Color</a></strong></p>
<h2>10 - Add File Type Icons next to your links</h2>
<p><img src="http://www.catswhocode.com/blog/wp-content/uploads/2009/06/file-icons.jpg" alt="" /></p>
<pre>
    a[href^="http://"] {
    background:transparent url(../images/external.png) center right no-repeat;
    display:inline-block;
    padding-right:15px;
}
</pre>
<p><strong>Source: <a href="http://web-kreation.com/index.php/html-css/add-file-type-icons-next-to-your-links-with-css/" target="blank">Add File Type Icons next to your links with CSS</a></strong></p>
<p><em>Get 20% off on the <a href="http://www.wprecipes.com/myhomepro.html">MyHomePro Premium WordPress Theme</a> by using this exclusive code: <strong>wpcats20</strong>.</em></p>
<img src="http://feeds.feedburner.com/~r/Catswhocode/~4/B4j1wV-Lq9E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.catswhocode.com/blog/10-astonishing-css-hacks-and-techniques/feed</wfw:commentRss>
		<slash:comments>62</slash:comments>
		<feedburner:origLink>http://www.catswhocode.com/blog/10-astonishing-css-hacks-and-techniques</feedburner:origLink></item>
		<item>
		<title>Using keyboard shortcuts in Javascript</title>
		<link>http://feedproxy.google.com/~r/Catswhocode/~3/we8MOy5M0hE/using-keyboard-shortcuts-in-javascript</link>
		<comments>http://www.catswhocode.com/blog/using-keyboard-shortcuts-in-javascript#comments</comments>
		<pubDate>Tue, 09 Jun 2009 10:20:10 +0000</pubDate>
		<dc:creator>Jean-Baptiste Jung</dc:creator>
				<category><![CDATA[Web development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[keyboard shortcuts]]></category>

		<guid isPermaLink="false">http://www.catswhocode.com/blog/?p=35</guid>
		<description><![CDATA[If you want to enhance your web app, Javascript keyboards shortcuts is definitely something to consider. In this article, you'll learn to use JS keyboard shortcuts, with and without the JQuery framework.<p><em>Get 20% off on the <a href="http://www.wprecipes.com/myhomepro.html">MyHomePro Premium WordPress Theme</a> by using this exclusive code: <strong>wpcats20</strong>.</em></p>
]]></description>
			<content:encoded><![CDATA[<h2>Keyboard shorcuts on the web, let's talk about it</h2>
<p>The most important thing to think about when implementing Javascript keyboard shortcuts on a web app is to avoid redefining shortcuts provided by the client's browser. Imagine that you're using a web app, you want to close the tab by pressing Cmd+W, and the web app trigger an action, just because the developer redefined a keyboard shortcut used by your browser...How annoying. This is why I recommend to avoid using the Ctrl (Windows) or Cmd (Mac) key for your web app shortcuts. You should definitely use another key as such as F1, for example.</p>
<p>As you may already know, Javascript have lots of useful event listeners. For keyboard shortcuts, we'll use <em>onkeyup</em>,<br />
which allow you to perform an action when a key is pressed. Then, we'll just have to compare the returned value with the keyboard code associated with the key used by one of our custom defined keyboard shortcuts.</p>
<p>Keyboard codes are simple code consisting of 2 or 3 numbers. Each keyboard key have its own keyboard code. For exemple, the Ctrl key code is 17.<br/><br />
For a full reference of keyboard keys, scroll down to the end of this post.</p>
<h2>Examples</h2>
<p>In the following example, we're simply going to verify the key pressed down by the user. If the key pressed are Ctrl+S, a function will be triggered.</p>
<p>First example, without JQuery:</p>
<pre>
var isCtrl = false;
document.onkeyup=function(e) {
    if(e.which == 17) isCtrl=false;
}document.onkeydown=function(e){
    if(e.which == 17) isCtrl=true;
    if(e.which == 83 &amp;&amp; isCtrl == true) {
         alert('Keyboard shortcuts are cool!');
         return false;
    }
}</pre>
<p>Example with the JQuery framework:</p>
<pre>
var isCtrl = false;$(document).keyup(function (e) {
if(e.which == 17) isCtrl=false;
}).keydown(function (e) {
    if(e.which == 17) isCtrl=true;
    if(e.which == 83 &amp;&amp; isCtrl == true) {
        alert('Keyboard shortcuts + JQuery are even more cool!');
 	return false;
 }
});</pre>
<p>In theses examples, we started by verifying that the <em>Ctrl</em> is pressed by the user. If yes, the initial value of the <em>isCtrl</em> variable is set to <em>true</em>. If the keys are released, <em>isCtrl</em> will be set to <em>false</em> again.<br/><br />
Once done, we have to verify that the second pressed key is <em>S</em>. As the shortcut consists of a keyboard combination, we also have to check that is <em>isCtrl</em> variable have <em>true</em> as a value.<br/><br />
If both the <em>isCtrl</em> variable ius set to <em>true</em> and the second pressed key is <em>S</em>, then we can trigger a Javascript alert to display a message. Of course, in a "real" web app, you'll use a more useful function <img src='http://www.catswhocode.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h2>Keyboard codes reference</h2>
<table border="0" width="600">
<tr>
<th width="200">Key</th>
<th width="400">Keyboard code</th>
</tr>
<tr>
<td>Backspace</td>
<td>8</td>
</tr>
<tr>
<td>Tab</td>
<td>9</td>
</tr>
<tr>
<td>Enter</td>
<td>13</td>
</tr>
<tr>
<td>Shift</td>
<td>16</td>
</tr>
<tr>
<td>Ctrl</td>
<td>17</td>
</tr>
<tr>
<td>Alt</td>
<td>18</td>
</tr>
<tr>
<td>Pause</td>
<td>19</td>
</tr>
<tr>
<td>Capslock</td>
<td>20</td>
</tr>
<tr>
<td>Esc</td>
<td>27</td>
</tr>
<tr>
<td>Page up</td>
<td>33</td>
</tr>
<tr>
<td>Page down</td>
<td>34</td>
</tr>
<tr>
<td>End</td>
<td>35</td>
</tr>
<tr>
<td>Home</td>
<td>36</td>
</tr>
<tr>
<td>Left arrow</td>
<td>37</td>
</tr>
<tr>
<td>Up arrow</td>
<td>38</td>
</tr>
<tr>
<td>Right arrow</td>
<td>39</td>
</tr>
<tr>
<td>Down arrow</td>
<td>40</td>
</tr>
<tr>
<td>Insert</td>
<td>45</td>
</tr>
<tr>
<td>Delete</td>
<td>46</td>
</tr>
<tr>
<td>0</td>
<td>48</td>
</tr>
<tr>
<td>1</td>
<td>49</td>
</tr>
<tr>
<td>2</td>
<td>50</td>
</tr>
<tr>
<td>3</td>
<td>51</td>
</tr>
<tr>
<td>4</td>
<td>52</td>
</tr>
<tr>
<td>5</td>
<td>53</td>
</tr>
<tr>
<td>6</td>
<td>54</td>
</tr>
<tr>
<td>7</td>
<td>55</td>
</tr>
<tr>
<td>8</td>
<td>56</td>
</tr>
<tr>
<td>9</td>
<td>57</td>
</tr>
<tr>
<td>a</td>
<td>65</td>
</tr>
<tr>
<td>b</td>
<td>66</td>
</tr>
<tr>
<td>c</td>
<td>67</td>
</tr>
<tr>
<td>d</td>
<td>68</td>
</tr>
<tr>
<td>e</td>
<td>69</td>
</tr>
<tr>
<td>f</td>
<td>70</td>
</tr>
<tr>
<td>g</td>
<td>71</td>
</tr>
<tr>
<td>h</td>
<td>72</td>
</tr>
<tr>
<td>i</td>
<td>73</td>
</tr>
<tr>
<td>j</td>
<td>74</td>
</tr>
<tr>
<td>k</td>
<td>75</td>
</tr>
<tr>
<td>l</td>
<td>76</td>
</tr>
<tr>
<td>m</td>
<td>77</td>
</tr>
<tr>
<td>n</td>
<td>78</td>
</tr>
<tr>
<td>o</td>
<td>79</td>
</tr>
<tr>
<td>p</td>
<td>80</td>
</tr>
<tr>
<td>q</td>
<td>81</td>
</tr>
<tr>
<td>r</td>
<td>82</td>
</tr>
<tr>
<td>s</td>
<td>83</td>
</tr>
<tr>
<td>t</td>
<td>84</td>
</tr>
<tr>
<td>u</td>
<td>85</td>
</tr>
<tr>
<td>v</td>
<td>86</td>
</tr>
<tr>
<td>w</td>
<td>87</td>
</tr>
<tr>
<td>x</td>
<td>88</td>
</tr>
<tr>
<td>y</td>
<td>89</td>
</tr>
<tr>
<td>z</td>
<td>90</td>
</tr>
<tr>
<td>0 (numpad)</td>
<td>96</td>
</tr>
<tr>
<td>1 (numpad)</td>
<td>97</td>
</tr>
<tr>
<td>2 (numpad)</td>
<td>98</td>
</tr>
<tr>
<td>3 (numpad)</td>
<td>99</td>
</tr>
<tr>
<td>4 (numpad)</td>
<td>100</td>
</tr>
<tr>
<td>5 (numpad)</td>
<td>101</td>
</tr>
<tr>
<td>6 (numpad)</td>
<td>102</td>
</tr>
<tr>
<td>7 (numpad)</td>
<td>103</td>
</tr>
<tr>
<td>8 (numpad)</td>
<td>104</td>
</tr>
<tr>
<td>9 (numpad)</td>
<td>105</td>
</tr>
<tr>
<td>*</td>
<td>106</td>
</tr>
<tr>
<td>+</td>
<td>107</td>
</tr>
<tr>
<td>-</td>
<td>109</td>
</tr>
<tr>
<td>.</td>
<td>110</td>
</tr>
<tr>
<td>/</td>
<td>111</td>
</tr>
<tr>
<td>F1</td>
<td>112</td>
</tr>
<tr>
<td>F2</td>
<td>113</td>
</tr>
<tr>
<td>F3</td>
<td>114</td>
</tr>
<tr>
<td>F4</td>
<td>115</td>
</tr>
<tr>
<td>F5</td>
<td>116</td>
</tr>
<tr>
<td>F6</td>
<td>117</td>
</tr>
<tr>
<td>F7</td>
<td>118</td>
</tr>
<tr>
<td>F8</td>
<td>119</td>
</tr>
<tr>
<td>F9</td>
<td>120</td>
</tr>
<tr>
<td>F10</td>
<td>121</td>
</tr>
<tr>
<td>F11</td>
<td>122</td>
</tr>
<tr>
<td>F12</td>
<td>123</td>
</tr>
<tr>
<td>=</td>
<td>187</td>
</tr>
<tr>
<td>Coma</td>
<td>188</td>
</tr>
<tr>
<td>Slash /</td>
<td>191</td>
</tr>
<tr>
<td>Backslash \</td>
<td>220</td>
</tr>
</table>
<p><em>Get 20% off on the <a href="http://www.wprecipes.com/myhomepro.html">MyHomePro Premium WordPress Theme</a> by using this exclusive code: <strong>wpcats20</strong>.</em></p>
<img src="http://feeds.feedburner.com/~r/Catswhocode/~4/we8MOy5M0hE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.catswhocode.com/blog/using-keyboard-shortcuts-in-javascript/feed</wfw:commentRss>
		<slash:comments>28</slash:comments>
		<feedburner:origLink>http://www.catswhocode.com/blog/using-keyboard-shortcuts-in-javascript</feedburner:origLink></item>
		<item>
		<title>10 excellent website layout tutorials courtesy of psdvibe.com</title>
		<link>http://feedproxy.google.com/~r/Catswhocode/~3/C1YmExMw2EM/10-excellent-website-layout-tutorials-courtesy-of-psdvibecom</link>
		<comments>http://www.catswhocode.com/blog/10-excellent-website-layout-tutorials-courtesy-of-psdvibecom#comments</comments>
		<pubDate>Thu, 04 Jun 2009 11:46:59 +0000</pubDate>
		<dc:creator>Jean-Baptiste Jung</dc:creator>
				<category><![CDATA[Web design]]></category>

		<guid isPermaLink="false">http://www.catswhocode.com/blog/?p=1919</guid>
		<description><![CDATA[Do you know PsdVibe? This blog provide lots of useful Photoshop tutorials for webdesigners. To celebrate my recent aquisition of this website, let's see a list of 10 absolutely incredible website layout tutorials from PsdVibe.<p><em>Get 20% off on the <a href="http://www.wprecipes.com/myhomepro.html">MyHomePro Premium WordPress Theme</a> by using this exclusive code: <strong>wpcats20</strong>.</em></p>
]]></description>
			<content:encoded><![CDATA[<h2>A few words about PsdVibe</h2>
<p>PsdVide has been created at the end of 2008 by Matthew Heidenreich. This blog focus on provide <strong>Adobe Photoshop resources, freebies, and of course, great tutorials</strong> as such as the ones showcased in this post. In May 2009, I became PsdVibe new owner.<br />
My goal is to take this great site to a higher level by providing lots of useful tutorials and resources for modern webdesigners. If you enjoy what you're going to see in this post, <strong>do not hesitate to grab <a href="http://feeds2.feedburner.com/psdvibe">PsdVibe rss feed</a></strong>!</p>
<h2>Create a modern blog layout</h2>
<p><a href="http://psdvibe.com/2009/06/01/create-a-modern-blog-layout/"><img src="http://psdvibe.com/tutorials/modern_blog_layout/final.jpg" alt="" /></a></p>
<h2>Design Studio Layout</h2>
<p><a href="http://psdvibe.com/2009/05/19/design-studio-layout-2/"><img src="http://psdvibe.com/tutorials/design_studio_layout_2/Picture%2052.jpg" alt="" /></a></p>
<h2>Clean Photo Gallery Website Layout</h2>
<p><a href="http://psdvibe.com/2009/04/28/clean-photo-gallery-website-layout/"><img src="http://psdvibe.com/tutorials/photo_gallery_layout/Picture%2036.jpg" alt="" /></a></p>
<h2>MyBlues WordPress Style Layout</h2>
<p><a href="http://psdvibe.com/2009/03/22/myblues-wordpress-style-layout/"><img src="http://psdvibe.com/tutorials/myblues_wordpress_layout/Picture%2041.jpg" alt="" /></a></p>
<h2>Tutorial Site Blog Design</h2>
<p><a href="http://psdvibe.com/2009/02/11/tutorial-site-blog-design/"><img src="http://psdvibe.com/tutorials/tutorial_site/Picture%2038.jpg" alt="" /></a></p>
<h2>Corporate Business Layout</h2>
<p><a href="http://psdvibe.com/2009/03/15/corporate-business-layout/"><img src="http://psdvibe.com/tutorials/corporate_layout_2/Picture%2016.jpg" alt="" /></a></p>
<h2>Watercolored Design Studio Blog Layout</h2>
<p><a href="http://psdvibe.com/2009/04/12/watercolored-design-studio-blog-layout/"><img src="http://psdvibe.com/tutorials/watercolor_design_studio_layout/Picture%2039.jpg" alt="" /></a></p>
<h2>Design Lab TV Styled Layout</h2>
<p><a href="http://psdvibe.com/2009/03/04/design-lab-tv-styled-layout/"><img src="http://psdvibe.com/tutorials/tv_styled_design_layout/Picture%2033.jpg" alt="" /></a></p>
<h2>GreenPress WordPress Theme Design</h2>
<p><a href="http://psdvibe.com/2009/03/02/greenpress-wordpress-theme-design/"><img src="http://psdvibe.com/tutorials/greenpress_wordpress/Picture%2033.jpg" alt="" /></a></p>
<h2>Website Gallery Layout Design</h2>
<p><a href="http://psdvibe.com/2009/02/16/website-gallery-layout-design/"><img src="http://psdvibe.com/tutorials/website_gallery_layout/Picture%2021.jpg" alt="" /></a></p>
<p><em>Get 20% off on the <a href="http://www.wprecipes.com/myhomepro.html">MyHomePro Premium WordPress Theme</a> by using this exclusive code: <strong>wpcats20</strong>.</em></p>
<img src="http://feeds.feedburner.com/~r/Catswhocode/~4/C1YmExMw2EM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.catswhocode.com/blog/10-excellent-website-layout-tutorials-courtesy-of-psdvibecom/feed</wfw:commentRss>
		<slash:comments>29</slash:comments>
		<feedburner:origLink>http://www.catswhocode.com/blog/10-excellent-website-layout-tutorials-courtesy-of-psdvibecom</feedburner:origLink></item>
		<item>
		<title>PHP: Display Adobe PSD files on a web page</title>
		<link>http://feedproxy.google.com/~r/Catswhocode/~3/B4zxxMUqC4k/php-display-adobe-psd-files-on-a-web-page</link>
		<comments>http://www.catswhocode.com/blog/php-display-adobe-psd-files-on-a-web-page#comments</comments>
		<pubDate>Sun, 31 May 2009 18:05:12 +0000</pubDate>
		<dc:creator>Jean-Baptiste Jung</dc:creator>
				<category><![CDATA[Web development]]></category>

		<guid isPermaLink="false">http://www.catswhocode.com/blog/?p=1905</guid>
		<description><![CDATA[Any webdesigner know the PSD filetype, which is the Adobe Photoshop format. PSDs have a lot of great features, as such as layers, but they can't being read by a browser. Unless you use this great PHP class!<p><em>Get 20% off on the <a href="http://www.wprecipes.com/myhomepro.html">MyHomePro Premium WordPress Theme</a> by using this exclusive code: <strong>wpcats20</strong>.</em></p>
]]></description>
			<content:encoded><![CDATA[<h2>The classPhpPsdReader.php Class</h2>
<p>The classPhpPsdReader.php Class was created by Tim de Koning in 2007. It is based on the GD library, which can do numerous operations on images with PHP, but sadly, can't open PSD files.</p>
<p>The classPhpPsdReader.php Class can be downloaded for free on <a href="http://www.phpclasses.org/browse/package/3627.html">PhpClasses.org</a>. It is compatible with both PHP4 and PHP5.</p>
<h2>Usage</h2>
<p>Nothing hard here. Once you have downloaded the <em>classPhpPsdReader.php</em> class and uploaded it on your server, you're now ready to display PSD throught a web browser.<br />
To do so, just refer to the following code example:</p>
<pre>&lt;?php
// Send header to client browser
header("Content-type: image/jpeg");
// Includes the requested class
include_once('classPhpPsdReader.php');
// Finally display the PSD on the screen
imagejpeg(imagecreatefrompsd('yourPsdFile.psd'));
?&gt;</pre>
<h2>The result</h2>
<p><img src="http://www.catswhocode.com/blog/wp-content/uploads/2009/05/read-psd-with-php.png" alt="Reading psd files with php" /><br />
Great tool for people who are, like me, both webdevelopers and webdesigners!</p>
<p><em>On another note, I just purchased a new blog to complete my network. The blog is called PsdVibe and you can have a look <a href="http://psdvibe.com">here</a>. The blog focus on providing Adobe Photoshop tutorials, resources and freebies.</em></p>
<p><em>Get 20% off on the <a href="http://www.wprecipes.com/myhomepro.html">MyHomePro Premium WordPress Theme</a> by using this exclusive code: <strong>wpcats20</strong>.</em></p>
<img src="http://feeds.feedburner.com/~r/Catswhocode/~4/B4zxxMUqC4k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.catswhocode.com/blog/php-display-adobe-psd-files-on-a-web-page/feed</wfw:commentRss>
		<slash:comments>27</slash:comments>
		<feedburner:origLink>http://www.catswhocode.com/blog/php-display-adobe-psd-files-on-a-web-page</feedburner:origLink></item>
		<item>
		<title>Elegant Themes releases the ebusiness WordPress Theme</title>
		<link>http://feedproxy.google.com/~r/Catswhocode/~3/s32Dq3vNiGk/elegant-themes-releases-the-ebusiness-wordpress-theme</link>
		<comments>http://www.catswhocode.com/blog/elegant-themes-releases-the-ebusiness-wordpress-theme#comments</comments>
		<pubDate>Thu, 21 May 2009 13:54:16 +0000</pubDate>
		<dc:creator>Jean-Baptiste Jung</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.catswhocode.com/blog/?p=1885</guid>
		<description><![CDATA[It is very amazing to see the evolution of premium WordPress themes. As a friend of many theme author, I have seen many great themes these days, but one particulary pleased me: The ebusiness theme by Elegant Themes.<p><em>Get 20% off on the <a href="http://www.wprecipes.com/myhomepro.html">MyHomePro Premium WordPress Theme</a> by using this exclusive code: <strong>wpcats20</strong>.</em></p>
]]></description>
			<content:encoded><![CDATA[<h2>One more premium WordPress Theme?</h2>
<p>The premium WordPress Theme market goes very well: Every month, new themes are released, and new people/companies join the market. It is a good thing because it's great to have the more choice possible, but too much choice can easily make your choice harder.<br/><br />
After reviewing the whole <a href="http://www.elegantthemes.com">Elegant Themes</a> service a few months ago, I went into their latest release, called <a href="http://www.elegantthemes.com/blog/theme-additions/new-theme-ebusiness/">eBusiness</a>.</p>
<h2>Colors schemes</h2>
<p>As a very advanced theme, eBusiness not only have a great layout, it also come with 9 color schemes and 3 different layouts:<br />
<a href="http://www.elegantthemes.com/blog/theme-additions/new-theme-ebusiness/"><img src="http://www.catswhocode.com/blog/wp-content/uploads/2009/05/preview-ebusiness-1.jpg" alt="eBusiness Theme by ElegantThemes"/></a></p>
<p><a href="http://www.elegantthemes.com/blog/theme-additions/new-theme-ebusiness/"><img src="http://www.catswhocode.com/blog/wp-content/uploads/2009/05/preview-ebusiness-1-2.jpg" alt="eBusiness Theme by ElegantThemes"/></a></p>
<p><a href="http://www.elegantthemes.com/blog/theme-additions/new-theme-ebusiness/"><img src="http://www.catswhocode.com/blog/wp-content/uploads/2009/05/preview-ebusiness-1-3.jpg" alt="eBusiness Theme by ElegantThemes"/></a></p>
<h2>Advanced features</h2>
<p>Let's have a look to eBusiness features:</p>
<ul>
<li>Threaded Comments </li>
<li>Optional Blog-style Structure</li>
<li>Gravatar ready</li>
<li>Firefox compatible</li>
<li>IE7 + IE6 compatible</li>
<li>Advertisement Ready </li>
<li>Widget ready sidebars</li>
<li>Theme Option Pages </li>
<li>Custom thumbnail images</li>
<li>PSD files</li>
<li>Valid XHTML + CSS</li>
<li>Smooth tabless design</li>
</ul>
<p>Great, isn't it? But it isn't over: eBusiness also have built-in thumbnails resizing, a control panel where you can set up options for the theme and an advertising manager. Also, althought <a href="http://www.elegantthemes.com/blog/theme-additions/new-theme-ebusiness/">eBusiness</a> has been created to be used as a CMS, you can still use it as a blog, thanks to the optionnal layout.</p>
<h2>But...How much is it?</h2>
<p>Now that I have shown you how advanced the ebusiness Theme is, I can easily guess that you're asking yourself "<em>Well, but how much such a theme costs?</em>". To answer your question, the ebusiness theme can be downloaded for no extra cost by any Elegant Theme member. <br/><br />
<a href="http://www.elegantthemes.com">Elegant Themes</a> membership cost only $20/year, and once you're a member you can download and use any of their themes and get premium support if needed. So, the eBusiness theme will cost you only $20. </p>
<p>Have you seen many great premium themes for such a low sum? Honestly, I haven't. So if you're looking to a cheap way to make your blog looking really professional, what about <a href="http://www.elegantthemes.com/blog/theme-additions/new-theme-ebusiness/">purchasing the eBusiness theme</a>?</p>
<p><em>Get 20% off on the <a href="http://www.wprecipes.com/myhomepro.html">MyHomePro Premium WordPress Theme</a> by using this exclusive code: <strong>wpcats20</strong>.</em></p>
<img src="http://feeds.feedburner.com/~r/Catswhocode/~4/s32Dq3vNiGk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.catswhocode.com/blog/elegant-themes-releases-the-ebusiness-wordpress-theme/feed</wfw:commentRss>
		<slash:comments>45</slash:comments>
		<feedburner:origLink>http://www.catswhocode.com/blog/elegant-themes-releases-the-ebusiness-wordpress-theme</feedburner:origLink></item>
		<item>
		<title>10 Easy Ways to Secure your WordPress Blog</title>
		<link>http://feedproxy.google.com/~r/Catswhocode/~3/nKREqJR7Y9o/10-easy-ways-to-secure-your-wordpress-blog</link>
		<comments>http://www.catswhocode.com/blog/10-easy-ways-to-secure-your-wordpress-blog#comments</comments>
		<pubDate>Tue, 05 May 2009 14:56:32 +0000</pubDate>
		<dc:creator>Alex Denning</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.catswhocode.com/blog/?p=1861</guid>
		<description><![CDATA[Securing your blog is important. With WordPress so popular these days, it's becoming a bigger and bigger target for hackers. In this post we'll look at ten easy ways to secure your WordPress blog.<p><em>Get 20% off on the <a href="http://www.wprecipes.com/myhomepro.html">MyHomePro Premium WordPress Theme</a> by using this exclusive code: <strong>wpcats20</strong>.</em></p>
]]></description>
			<content:encoded><![CDATA[<p><em>Guest post by Alex Denning, <a href="http://twitter.com/AlexDenning">a Twitter fan</a> who recently launched his new blog, <a href="http://nometech.com/">Nometech.com, where he blogs about WordPress, blogging and web design.</a></em></p>
<h2>1. WP Security Scan</h2>
<p>This very easy to use plugin will sort out some of the basic security issues with WordPress - it'll change your database's name and alert you to flaws in your installation's security, amongst other features.</p>
<p><a href="http://wordpress.org/extend/plugins/wp-security-scan/">Download</a>.</p>
<h2>2. Protect your plugins</h2>
<p>Plugins are an easy way for a hacker to get access to your blog if they've got flaws in them. An easy way for hackers to find out which plugins you're using is to go to /wp-content/plugins/, and they'll find all the plugins that you're using. The solution? Put a blank index.html file in the wp-content/plugins/ folder.</p>
<h2>3. Update WordPress</h2>
<p>This is super-easy to do, but a surprising number of people don't do it: update WordPress. If you're super-security-conscious then don't upgrade to the next big release immediately (ie 2.8), wait for the bug fixes to come in (ie wait for 2.8.1).</p>
<h2>4. Pick a good password</h2>
<p>Common sense. Use a good password. Don't use the same password that you use on every site, create something that is easily memorable, with a mix of UPPER and lower case and some numbers in there too. Change your password regularly too.</p>
<h2>5. Change the admin user name</h2>
<p>By default, the WordPress user name is admin. [Lots]% of people don't change it. Why should you change it? If a hacker has your username, he's halfway there to getting into your site, he just has to guess your password. If the hacker has to guess your username as well, then that's twice as much work to do. It's super easy to migrate posts from one user to another, just create your new user and then delete the admin user. You'll be given the option to migrate posts to another user.</p>
<h2>6. Protect your WP-Config.php file</h2>
<p>Your WP-Config.php contains your database name, database username and database password. It's something to protect.</p>
<p>Just add the following code to your .htaccess file:</p>
<pre># protect wpconfig.php

order allow,deny from all</pre>
<p>Source -<a href="http://www.nometech.com/blog/a-to-z-of-wordpress-htaccess-hacks/"> Nometech.com</a></p>
<h2>7. Hide your WordPress version</h2>
<p>First off, go into your header.php file and remove the meta data (something like &lt;meta name="generator" etc). Trouble is, WordPress adds in the meta data automatically! How do you remove it? Paste this code into your functions.php file.</p>
<pre>&lt;?php remove_action('wp_header', 'wp_generator'); ?&gt;</pre>
<p>Source - <a href="http://www.problogdesign.com/wordpress/11-best-ways-to-improve-wordpress-security/">ProBlogDesign</a></p>
<h2>8. Limit the number of times user can enter their password (wrongly)</h2>
<p>The <a href="http://wordpress.org/extend/plugins/login-lockdown/">Login LockDown plugin</a> will lock out users if they enter their password wrong too many times. You can choose how many times users can enter their password and also how long they're locked out for via a neat options page.</p>
<p>Source - <a href="http://wordpress.org/extend/plugins/login-lockdown/">WP Plugin Directory</a></p>
<h2>9. Limit WP-Admin access by IP</h2>
<p>This isn't something that I do personally, as I blog on a fair number of different computers, but if you're just on the one, with a fixed IP, then this is a great hack for you: you can restrict access to the wp-admin directory with a spluginimple .htaccess hack:</p>
<pre>order deny, allow
allow from a.b.c.d. #your static ip
deny from all</pre>
<p>Source - <a href="http://www.nometech.com/blog/a-to-z-of-wordpress-htaccess-hacks/">Nometech</a></p>
<h2>10. Login via SSL</h2>
<p>If your host has an SSL certificate then you can use this great little plugin to login via SSL. The Admin SSL plugin "secures login page, admin area, posts, pages - whatever you want - using Private or Shared SSL."</p>
<p>Source - <a href="http://wordpress.org/extend/plugins/admin-ssl-secure-admin/">WP Plugin Directory</a>, via <a href="http://www.makeuseof.com/tag/18-useful-plugins-and-hacks-to-protect-your-wordpress-blog/">MakeUseOf.com</a></p>
<h2>And finally</h2>
<p>It is very easy to get bogged down in plugins, but bear this in mind: a strong password that is changed regularly, and a couple of .htaccess hacks (<a href="http://www.nometech.com/blog/a-to-z-of-wordpress-htaccess-hacks/">this post might help</a>) will keep the casual hacker out.</p>
<p><strong>If you've enjoyed this post then please do take a look at <a href="http://nometech.com/">Nometech.com, my new blog</a>, and perhaps even subscribe to the <a href="http://feeds2.feedburner.com/Nometech">RSS feed</a>. If you're on <a href="http://twitter.com/AlexDenning">Twitter </a>too then new followers are always welcome!</strong></p>
<p><em>Get 20% off on the <a href="http://www.wprecipes.com/myhomepro.html">MyHomePro Premium WordPress Theme</a> by using this exclusive code: <strong>wpcats20</strong>.</em></p>
<img src="http://feeds.feedburner.com/~r/Catswhocode/~4/nKREqJR7Y9o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.catswhocode.com/blog/10-easy-ways-to-secure-your-wordpress-blog/feed</wfw:commentRss>
		<slash:comments>85</slash:comments>
		<feedburner:origLink>http://www.catswhocode.com/blog/10-easy-ways-to-secure-your-wordpress-blog</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.818 seconds. --><!-- Cached page generated by WP-Super-Cache on 2009-07-06 07:05:40 -->
