<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>web2.0goodies.com</title>
	<atom:link href="http://web2.0goodies.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://web2.0goodies.com/blog</link>
	<description>Tips, Tricks, and How To's for Web 2.0</description>
	<lastBuildDate>Wed, 28 Jul 2010 16:54:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>nicEdit Firefox center and right align bug patch.</title>
		<link>http://web2.0goodies.com/blog/javascript/nicedit-firefox-center-and-right-align-bug-patch/</link>
		<comments>http://web2.0goodies.com/blog/javascript/nicedit-firefox-center-and-right-align-bug-patch/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 16:54:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[firefox]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[workarounds]]></category>
		<category><![CDATA[wysiwyg editors]]></category>

		<guid isPermaLink="false">http://web2.0goodies.com/blog/javascript/nicedit-firefox-center-and-right-align-bug-patch/</guid>
		<description><![CDATA[If you are using nicEdit on content editable areas instead of the iFrame method, then you may have run across the FireFox bug that prevents you from changing the text alignment on the first line of a content editable element.&#160; As a work around, change the nicCommand method in nicEdit.js (Line 610 or so), to [...]]]></description>
			<content:encoded><![CDATA[<p>If you are using nicEdit on content editable areas instead of the iFrame method, then you may have run across the FireFox bug that prevents you from changing the text alignment on the first line of a content editable element.&nbsp; </p>
<p>As a work around, change the nicCommand method in nicEdit.js (Line 610 or so), to be this:</p>
<pre>
nicCommand : function(cmd, args) {
        if ((cmd == 'justifyright') || (cmd == 'justifyleft') || (cmd ==
        'justifycenter') || (cmd == 'justifyfull')) {
              try {
                 document.execCommand(cmd, false, null);
              }
              catch (e) {
                 //special case for Mozilla Bug #442186
                 if (e &amp;&amp; e.result == 2147500037) {
                    //probably firefox bug 442186 - workaround
                    var range = window.getSelection().getRangeAt(0);
                    var dummy = document.createElement('div');

                     //To restore the range after collapsing for triple click bug...
                     var restoreSelection = false;
                    dummy.style.height="1px;";

                    //find node with contentEditable

                    //Triple Click selection Problem in mozilla, the selection contains the content editable div, which creates a problem for some reason, so we collapse the selection to the end, and then re-select everything...
                    if(range.startContainer.contentEditable == 'true'){
                        window.getSelection().collapseToEnd();
                        restoreSelection = true;
                    }

                    var ceNode = window.getSelection().getRangeAt(0).startContainer;

                    while (ceNode &amp;&amp; ceNode.contentEditable != 'true')
                       ceNode = ceNode.parentNode;

                    if (!ceNode) throw 'Selected node is not editable!';

                    ceNode.insertBefore(dummy, ceNode.childNodes[0]);
                    document.execCommand(cmd, false, null);
                    dummy.parentNode.removeChild(dummy);

                     //RestoreSelection if we changed it...
                     if(restoreSelection){
                        window.getSelection().addRange(range);
                     }
                 } else if (console &amp;&amp; console.log) console.log(e);
              }
           } else {
              document.execCommand(cmd, false, args);
      }
    }
</pre>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=10a8a059-a566-8e45-9330-fcfb2c7438f2" /></div>
]]></content:encoded>
			<wfw:commentRss>http://web2.0goodies.com/blog/javascript/nicedit-firefox-center-and-right-align-bug-patch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Things I Learned Today</title>
		<link>http://web2.0goodies.com/blog/php5/things-i-learned-today/</link>
		<comments>http://web2.0goodies.com/blog/php5/things-i-learned-today/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 05:13:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[php5]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://web2.0goodies.com/blog/php5/things-i-learned-today/</guid>
		<description><![CDATA[Uniserver on Windows REQUIRES the .htaccess file to have the &#8220;Options +ExecCGI +FollowSymLinks&#8221; line in it&#8230; Or else you get a 403 forbidden on every page you try to access.]]></description>
			<content:encoded><![CDATA[<p>Uniserver on Windows REQUIRES the .htaccess file to have the &#8220;Options +ExecCGI +FollowSymLinks&#8221; line in it&#8230; Or else you get a 403 forbidden on every page you try to access.</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=ae4d07ac-462b-8b0b-9334-1f6df4e05f49" /></div>
]]></content:encoded>
			<wfw:commentRss>http://web2.0goodies.com/blog/php5/things-i-learned-today/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Facebook Profile Tab Application (FBML)</title>
		<link>http://web2.0goodies.com/blog/facebook/facebook-profile-tab-application-fbml/</link>
		<comments>http://web2.0goodies.com/blog/facebook/facebook-profile-tab-application-fbml/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 03:17:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[FBML]]></category>
		<category><![CDATA[Profile Tabs]]></category>
		<category><![CDATA[facebook]]></category>

		<guid isPermaLink="false">http://web2.0goodies.com/blog/?p=102</guid>
		<description><![CDATA[To Start with, setup your application with these instructions: (Insert link here). Receiving Facebook Posts You FBML application will receive information from Facebook in the form of a signed post. To determine if a post from facebook is authentic, there is an algorithm described here. I have written a class I use that looks like [...]]]></description>
			<content:encoded><![CDATA[<p>To Start with, setup your application with these instructions:  (Insert link here).</p>
<h3>Receiving Facebook Posts</h3>
<p>You FBML application will receive information from Facebook in the form of a signed post.  <a href=" http://wiki.developers.facebook.com/index.php/Verifying_The_Signature">To determine if a post from facebook is authentic, there is an algorithm described here.</a></p>
<p>I have written a class I use that looks like this:  </p>
<pre name="code" class="php">
require_once('config.php');

class Joey_Facebook{
	public static function getFacebookParams(){
		if(!isset($_POST['fb_sig'])) throw new Joey_Facebook_Exception("No Facebook Signatore Parameter");

	    $parameters = $_POST;    

	    if(self::authenticatePayloadFromFacebook($parameters, FACEBOOK_APPLICATION_SECRET)){
	    	return $parameters;
	    }
	    else{
	    	throw new Joey_Facebook_Exception("Parameters Do Not Authenticate!");
	    }
	}

	private static function authenticatePayloadFromFacebook($parameters, $application_secret){
		ksort($parameters);
	    $payload = '';

		foreach ($parameters as $key => $value) {
	        if ($key != 'fb_sig') {
	            $payload .= substr($key, 7) . '=' . $value;
	        }
	    }

	    if (md5($payload . $application_secret) == $parameters['fb_sig']) {
	    	return true;
	    }
	    else{
	    	return false;
	    }
	}
}

class Joey_Facebook_Exception extends Exception{
	public $msg;
	public function __construct($msg){
		$this->msg = $msg;
	}
}
</pre>
<p>Once you have authenticated the request,  you can now use the data in it.  The important data (to me) is&#8230;</p>
<p>When a user has granted your appliation basic permissions, the $_POST['fb_sig_user'] is the facebook users id.  Your application can use this to store and retrieve database records, display customized content, etc&#8230;</p>
<p>If your application is viewed via a profile tab, the profile owner&#8217;s fbid is in $_POST['fb_sig_profile_id'].</p>
<p>With these two basic pieces of information you can essentialy embed basic web applications into Facebook.  You can gather much more information from the post, and also use Facebook&#8217;s API (btw&#8230;  It does need to be de-mistified&#8230;) to gather more information about the user and add more social features to your application.</p>
<h3>Getting a user to &#8220;Add Application&#8221;</h3>
<p><a href="http://wiki.developers.facebook.com/index.php/Authorization_and_Authentication_for_Canvas_Page_Applications_on_Facebook">To redirect the user to the basic add application page, view the details on this page.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://web2.0goodies.com/blog/facebook/facebook-profile-tab-application-fbml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>oEmbed &#8211; Easily get the information you need to embed content from viddler, flickr, hooloo, etc&#8230; in your pages.</title>
		<link>http://web2.0goodies.com/blog/uncategorized/oembed-easily-get-the-information-you-need-to-embed-content-from-viddler-flickr-hooloo-etc-in-your-pages/</link>
		<comments>http://web2.0goodies.com/blog/uncategorized/oembed-easily-get-the-information-you-need-to-embed-content-from-viddler-flickr-hooloo-etc-in-your-pages/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 22:11:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://web2.0goodies.com/blog/uncategorized/oembed-easily-get-the-information-you-need-to-embed-content-from-viddler-flickr-hooloo-etc-in-your-pages/</guid>
		<description><![CDATA[oEmbed is an open standard that allows you to pass a url to an oEmbed provider and get back information about that resource. i.e. Pass a hulu url to hulu&#8217;s oEmbed service: http://www.hulu.com/api/oembed.xml?url=http%3A//www.hulu.com/watch/20807/late-night-with-conan-obrien-wed-may-21-2008&#160; and you&#8217;ll get back a json object with details of the video (thumbnail size and url, etc..) and on some oembed services [...]]]></description>
			<content:encoded><![CDATA[<p>oEmbed is an open standard that allows you to pass a url to an oEmbed provider and get back information about that resource.</p>
<p>i.e. Pass a hulu url to hulu&#8217;s oEmbed service: <a href="http://www.hulu.com/api/oembed.xml?url=http%3A//www.hulu.com/watch/20807/late-night-with-conan-obrien-wed-may-21-2008">http://www.hulu.com/api/oembed.xml?url=http%3A//www.hulu.com/watch/20807/late-night-with-conan-obrien-wed-may-21-2008</a>&nbsp; and you&#8217;ll get back a json object with details of the video (thumbnail size and url, etc..) and on some oembed services the html needed to embed the video.</p>
<p>For more information, check out this page: http://www.oembed.com/</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=1df587c0-e0fc-8147-8fa0-cee11de39d0b" /></div>
]]></content:encoded>
			<wfw:commentRss>http://web2.0goodies.com/blog/uncategorized/oembed-easily-get-the-information-you-need-to-embed-content-from-viddler-flickr-hooloo-etc-in-your-pages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Facebook f8 announces new Easy to use API</title>
		<link>http://web2.0goodies.com/blog/facebook/facebook-f8-announces-new-easy-to-use-api/</link>
		<comments>http://web2.0goodies.com/blog/facebook/facebook-f8-announces-new-easy-to-use-api/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 22:18:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Social Media]]></category>
		<category><![CDATA[facebook]]></category>

		<guid isPermaLink="false">http://web2.0goodies.com/blog/uncategorized/facebook-f8-announces-new-easy-to-use-api/</guid>
		<description><![CDATA[If you are a serious web developer that wants to ride the wave into the next decade, you MUST integrate with Social Networking / Media in your apps. Fortunatly, facebook just released a new API that is a piece of cake to use. WAY WAY WAY easier than their old one. Check out the video [...]]]></description>
			<content:encoded><![CDATA[<p>If you are a serious web developer that wants to ride the wave into the next decade, you MUST integrate with Social Networking / Media in your apps.  Fortunatly, facebook just released a new API that is a piece of cake to use.  WAY WAY WAY easier than their old one.</p>
<p>Check out the video about it&#8217;s features here:    (The best stuff is half way through the video)  </p>
<p><a href="http://www.facebook.com/f8">http://www.facebook.com/f8</a></p>
]]></content:encoded>
			<wfw:commentRss>http://web2.0goodies.com/blog/facebook/facebook-f8-announces-new-easy-to-use-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>phpMiniAdmin</title>
		<link>http://web2.0goodies.com/blog/php5/phpminiadmin/</link>
		<comments>http://web2.0goodies.com/blog/php5/phpminiadmin/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 00:06:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://web2.0goodies.com/blog/?p=94</guid>
		<description><![CDATA[I&#8217;ve used phpMyAdmin for a while, but I find it to be a little heavyweight at times. Sometimes I just want to run a simple query. The MySQL client is obtuse to use sometimes. So I went on a search for alternatives. I now use phpMiniAdmin almost exclusively. It&#8217;s extremely light weight, fast and has [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve used phpMyAdmin for a while, but I find it to be a little heavyweight at times.  Sometimes I just want to run a simple query.  The MySQL client is obtuse to use sometimes.  So I went on a search for alternatives.</p>
<p>I now use <a href="http://phpminiadmin.sourceforge.net/">phpMiniAdmin</a> almost exclusively.  It&#8217;s extremely light weight, fast and has LOTS of neat features.  It provides everything I need 99.9% of the time. And it&#8217;s easier to configure then phpMyAdmin.</p>
]]></content:encoded>
			<wfw:commentRss>http://web2.0goodies.com/blog/php5/phpminiadmin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Atmosphere Talk &#8211; Mobile Internet</title>
		<link>http://web2.0goodies.com/blog/web/google-atmosphere-talk-mobile-internet/</link>
		<comments>http://web2.0goodies.com/blog/web/google-atmosphere-talk-mobile-internet/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 20:50:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://web2.0goodies.com/blog/uncategorized/google-atmosphere-talk-mobile-internet/</guid>
		<description><![CDATA[I watched this talk on You Tube by Mary Meeker who is the Managing Director for Morgan Stanley (A Big Wall Street Company, A Good One). It is extremely informative and filled with facts. httpv://www.youtube.com/eventsatgoogle#p/u/8/X1w1FvgdZnE]]></description>
			<content:encoded><![CDATA[<p>I watched this talk on You Tube by Mary Meeker who is the Managing Director for Morgan Stanley (A Big Wall Street Company,  A Good One).  It is extremely informative and filled with facts.</p>
<p><center>httpv://www.youtube.com/eventsatgoogle#p/u/8/X1w1FvgdZnE</center></p>
]]></content:encoded>
			<wfw:commentRss>http://web2.0goodies.com/blog/web/google-atmosphere-talk-mobile-internet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML 5 Freature Overview Presentation With Sample Code</title>
		<link>http://web2.0goodies.com/blog/uncategorized/html-5-freature-overview-presentation-with-sample-code/</link>
		<comments>http://web2.0goodies.com/blog/uncategorized/html-5-freature-overview-presentation-with-sample-code/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 17:29:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://web2.0goodies.com/blog/uncategorized/html-5-freature-overview-presentation-with-sample-code/</guid>
		<description><![CDATA[At work Shawn Lonas sent this out to all of us, it&#8217;s a really good concise overview of some html5 features. http://apirocks.com/html5/html5.html]]></description>
			<content:encoded><![CDATA[<p>At work Shawn Lonas sent this out to all of us,  it&#8217;s a really good concise overview of some html5 features.</p>
<p><a href="http://apirocks.com/html5/html5.html#slide1">http://apirocks.com/html5/html5.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://web2.0goodies.com/blog/uncategorized/html-5-freature-overview-presentation-with-sample-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magento &#8211; WOW!</title>
		<link>http://web2.0goodies.com/blog/php5/magento-wow/</link>
		<comments>http://web2.0goodies.com/blog/php5/magento-wow/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 05:55:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[php5]]></category>

		<guid isPermaLink="false">http://web2.0goodies.com/blog/?p=86</guid>
		<description><![CDATA[Some say that Magento is horrible to work with. I say they are wrong. Magento is one of the most well designed pieces of software I&#8217;ve ever seen. Complete inversion of control. Awesome extendability. Sweet seperation of concerns. Proper use of classes, it&#8217;s all there. But&#8230; It&#8217;s under documented, and it has a few core [...]]]></description>
			<content:encoded><![CDATA[<p>Some say that Magento is horrible to work with.  I say they are wrong.  Magento is one of the most well designed pieces of software I&#8217;ve ever seen.  Complete inversion of control.  Awesome extendability.  Sweet seperation of concerns.  Proper use of classes, it&#8217;s all there.</p>
<p>But&#8230;  It&#8217;s under documented, and it has a few core concepts you have to understand before it makes sense.</p>
<p>Recently I need to make a new shipping method for myhomefurniturestore.com.  Fortunatly for me, <a href="http://blog.magentomagik.com/adding-new-shipping-module-in-magento/">magentomagick had a great article</a> that had instructions start to finish (except for two details that are mentioned in the comments) for just such a task.</p>
]]></content:encoded>
			<wfw:commentRss>http://web2.0goodies.com/blog/php5/magento-wow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get more pageviews!  How to add a &#8220;Post to Facebook&#8221; button to your site!</title>
		<link>http://web2.0goodies.com/blog/facebook/get-more-pageviews-how-to-add-a-post-to-facebook-button-to-your-site/</link>
		<comments>http://web2.0goodies.com/blog/facebook/get-more-pageviews-how-to-add-a-post-to-facebook-button-to-your-site/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 07:01:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Social Media]]></category>
		<category><![CDATA[facebook]]></category>

		<guid isPermaLink="false">http://web2.0goodies.com/blog/?p=78</guid>
		<description><![CDATA[This is so so easy&#8230; Every site on the web should have one of these&#8230; All you have to do, is paste the code from here: http://www.facebook.com/facebook-widgets/share.php Onto your site&#8230; See: Share with my friends.]]></description>
			<content:encoded><![CDATA[<p>This is so so easy&#8230;  Every site on the web should have one of these&#8230;</p>
<p>All you have to do, is paste the code from here: <a href="http://www.facebook.com/facebook-widgets/share.php">http://www.facebook.com/facebook-widgets/share.php</a></p>
<p>Onto your site&#8230;</p>
<p>See: <a name="fb_share" type="button_count" href="http://www.facebook.com/sharer.php">Share with my friends.</a><script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" type="text/javascript"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://web2.0goodies.com/blog/facebook/get-more-pageviews-how-to-add-a-post-to-facebook-button-to-your-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
