<?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>SitePoint » Learn CSS &#124; HTML5 &#124; JavaScript &#124; Wordpress &#124; Tutorials-Web Development &#124; Reference &#124; Books and More &#187; Open Source</title> <atom:link href="http://www.sitepoint.com/category/tech/open-source/feed/" rel="self" type="application/rss+xml" /><link>http://www.sitepoint.com</link> <description></description> <lastBuildDate>Sun, 27 May 2012 15:59:16 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /> <item><title>What&#8217;s New in Chrome 19</title><link>http://www.sitepoint.com/chrome-19-whats-new/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=chrome-19-whats-new</link> <comments>http://www.sitepoint.com/chrome-19-whats-new/#comments</comments> <pubDate>Thu, 17 May 2012 17:24:05 +0000</pubDate> <dc:creator>Craig Buckler</dc:creator> <category><![CDATA[CSS3]]></category> <category><![CDATA[Discussion]]></category> <category><![CDATA[Gems]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[News & Trends]]></category> <category><![CDATA[Open Source]]></category> <category><![CDATA[Opinion]]></category> <category><![CDATA[Web Tech]]></category> <category><![CDATA[browser]]></category> <category><![CDATA[chrome]]></category> <category><![CDATA[Google Tutorials & Articles]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=54727</guid> <description><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2011/05/518-chrome-11-50x50.png" class="attachment-thumbnail wp-post-image" alt="518-chrome-11" title="518-chrome-11" />Craig looks at several interesting features which have appeared in Google Chrome 19.]]></description> <content:encoded><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2011/05/518-chrome-11-50x50.png" class="attachment-thumbnail wp-post-image" alt="518-chrome-11" title="518-chrome-11" /><p></p><p>I doubt you noticed but Chrome 19 was released this week. I rarely mention Chrome&#8217;s updates because, well, they&#8217;re rarely worth mentioning. However, I&#8217;ve discovered a few hidden gems in the latest browser&hellip;</p><h2>Tab Syncing</h2><p>The big new feature is tab syncing. If you&#8217;re using Chrome on two or more PCs/smartphones, you <em>should</em> see an <em>&#8220;Other devices&#8221;</em> link on the new tab page. Click it and you can open synchronized links. I say <em>&#8220;should&#8221;</em> because I haven&#8217;t been able to get it working.</p><p>Tab syncing has been available in Firefox for a while so I&#8217;m surprised it&#8217;s taken quite so long to appear in Chrome. Hopefully, you&#8217;ll have better luck than I did.</p><h2>CSS3 calc() Support</h2><p>The webkit team has finally implemented one of my favorite CSS3 features: the little-known <a
href="http://www.sitepoint.com/css3-calc-function/">calc() function</a>. It allows you to define calculated dimensions, e.g.</p><pre><code>
#myelement { width: calc(50% - 2em + 4px); }
</code></pre><p>Chrome supports calc() with the -webkit prefix. Firefox uses -moz and IE9 is happy without prefixes. To use it effectively, you&#8217;ll need fallback code such as:<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><pre><code>
#myelement
{
	width: 46%;
	width: -webkit-calc(50% - 2em + 4px);
	width: -moz-calc(50% - 2em + 4px);
	width: -o-calc(50% - 2em + 4px);
	width: calc(50% - 2em + 4px);
}
</code></pre><h2>Combined Settings Page</h2><p>Choosing tool &gt; Settings now displays a side menu with History, Extensions, Settings and Help. The Help page provides a couple of links and the update checker which normally appears on the &#8220;About&#8221; dialog <em>(will that disappear soon?)</em></p><h2>New JavaScript/ECMAScript 5.1 (Harmony) Features</h2><p>A number of <a
href="http://blog.chromium.org/2012/02/future-of-javascript-take-peek-today.html">experimental JavaScript features</a> have made their way from the Harmony specification into Chrome&#8217;s V8 engine. However, they&#8217;re not available by default &#8212; you&#8217;ll need to &#8220;Enable Experimental JavaScript&#8221; in <a
href="http://www.sitepoint.com//flags" class="broken_link">chrome://flags</a>. Language structures such as collections and proxies look great, but it&#8217;ll be some time before they&#8217;re available in all browsers.</p><h2>Security and Bug Fixes</h2><p>21 issues have been fixed in Chrome 19 and Google has paid almost $15,000 to eagle-eyed security hackers.</p><p>Chrome has remained fast and stable. It looks set to knock IE from the top of the <a
href="http://www.sitepoint.com/browser-trends-may-2012/">browser usage chart</a> during the summer of 2012. I&#8217;m not convinced any other vendor can prevent Google&#8217;s domination of the web and the software we use to access it.</p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/chrome-19-whats-new/feed/</wfw:commentRss> <slash:comments>7</slash:comments> </item> <item><title>Watch Kevin Yank Introduce his NEW book &#8220;PHP &amp; MYSQL: Novice to Ninja&#8221;</title><link>http://www.sitepoint.com/watch-kevin-yank-introduce-his-new-book-php-mysql-novice-to-ninja/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=watch-kevin-yank-introduce-his-new-book-php-mysql-novice-to-ninja</link> <comments>http://www.sitepoint.com/watch-kevin-yank-introduce-his-new-book-php-mysql-novice-to-ninja/#comments</comments> <pubDate>Thu, 03 May 2012 05:42:39 +0000</pubDate> <dc:creator>Mick Gibson</dc:creator> <category><![CDATA[Open Source]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[PHP & MySQL News & Interviews]]></category> <category><![CDATA[PHP & MySQL Reviews and Apps]]></category> <category><![CDATA[PHP & MySQL Tutorials]]></category> <category><![CDATA[Server Side Coding]]></category> <category><![CDATA[Server Side Essentials]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=54224</guid> <description><![CDATA[<img
width="50" height="30" src="http://www.sitepoint.com/wp-content/uploads/1/files/2012/05/Screen-shot-2012-05-03-at-3.37.51-PM-50x30.png" class="attachment-thumbnail wp-post-image" alt="Screen shot 2012-05-03 at 3.37.51 PM" title="Screen shot 2012-05-03 at 3.37.51 PM" />&#8221; &#8230; Just as PHP and MySQL have grown from the young upstarts of the web development world into mature, stable platforms for billion-dollar businesses, this book that I’ve been writing again and again for over a decade has grown up &#8230; It’s time to write PHP like the big kids do…&#8221;  This is how Kevin Yank [...]]]></description> <content:encoded><![CDATA[<img
width="50" height="30" src="http://www.sitepoint.com/wp-content/uploads/1/files/2012/05/Screen-shot-2012-05-03-at-3.37.51-PM-50x30.png" class="attachment-thumbnail wp-post-image" alt="Screen shot 2012-05-03 at 3.37.51 PM" title="Screen shot 2012-05-03 at 3.37.51 PM" /><p></p><p><em>&#8221; &#8230; Just as PHP and MySQL have grown from the young upstarts of the web development world into mature, stable platforms for billion-dollar businesses, this book that I’ve been writing again and again for over a decade has grown up &#8230; It’s time to write PHP like the big kids do…&#8221; </em></p><p>This is how Kevin Yank describes the 5th edition of his just-released book &#8220;<a
href="http://www.sitepoint.com/launch/d724a6">PHP &amp; MYSQL: Novice to Ninja</a>&#8220;</p><p>Watch Kevin as he introduces you to his NEW book!</p><p><iframe
src="http://player.vimeo.com/video/41422400?byline=0&amp;portrait=0" frameborder="0" width="600" height="338"></iframe></p><p><strong>As part of the launch of Kevin&#8217;s book, it&#8217;s now on special with &#8211; <a
href="http://www.sitepoint.com/launch/d724a6 ">SAVINGS of up to 50%</a></strong></p><p>&nbsp;</p><p>&nbsp;</p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/watch-kevin-yank-introduce-his-new-book-php-mysql-novice-to-ninja/feed/</wfw:commentRss> <slash:comments>8</slash:comments> </item> <item><title>What&#8217;s New in Firefox 12 and Chrome 18</title><link>http://www.sitepoint.com/firefox-12-chrome-18-whats-new/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=firefox-12-chrome-18-whats-new</link> <comments>http://www.sitepoint.com/firefox-12-chrome-18-whats-new/#comments</comments> <pubDate>Wed, 25 Apr 2012 18:21:03 +0000</pubDate> <dc:creator>Craig Buckler</dc:creator> <category><![CDATA[CSS3]]></category> <category><![CDATA[Gems]]></category> <category><![CDATA[Open Source]]></category> <category><![CDATA[Web Tech]]></category> <category><![CDATA[chrome]]></category> <category><![CDATA[firefox]]></category> <category><![CDATA[Google Tutorials & Articles]]></category> <category><![CDATA[Mozilla]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=53864</guid> <description><![CDATA[Firefox 12 and Chrome 18 have been released in the past few days. Craig looks at a few (very few) of the new features.]]></description> <content:encoded><![CDATA[<p></p><p>Firefox 12 was released on April 24 and Chrome 18 appeared on April 19. Did you notice? Put it this way &#8212; I hope you weren&#8217;t expecting a gaggle of ground-breaking new features. Unlike a few of the previous editions, the new updates from Mozilla and Google are largely maintenance releases and bug fixes. But there are a few gems to keep developers happy&hellip;</p><h2>Firefox 12</h2><p>If you have the irritating User Account Control (UAC) enabled in Windows, you should notice one fewer prompt during the update process. Firefox may not upgrade as quietly as Chrome but it&#8217;s definitely a step in the right direction.</p><p>CSS3 developers can now adopt the <a
href="https://developer.mozilla.org/en/CSS/text-align-last">text-align-last</a> property. This defines how the last line in a block such as a paragraph is aligned. It&#8217;s ideal if you&#8217;re using <code>text-align: justify</code> but want to ensure two words which flow into the last line are aligned to the left.</p><p>If you often view the Page Source you&#8217;ll also be pleased to discover that line numbers are now available whether you have line-wrapping enabled or not. To be honest, I can&#8217;t believe it&#8217;s taken this long to add that feature!<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><p>Other minor improvements:</p><ul><li>Line breaks can be added to HTML title attributes.</li><li>&#8220;Find in Page&#8221; centers the result on screen.</li><li>URLs pasted into the download manager window are automatically downloaded.</li><li>A selection of bug fixes including WebGL performance on some Mac hardware.</li></ul><h2>Chrome 18</h2><p>If you thought Firefox 12 was a lightweight release, Chrome 18 is positively skinny. GPU-accelerated Canvas 2D has been enabled on capable Windows and Mac PCs. In addition, TransGaming&#8217;s SwiftShader software-based rasterizer has been included so 3D WebGL graphics can be viewed on older hardware.</p><p>Google has also addressed nine security vulnerabilities and paid $4,000 to the lucky bug hunters.</p><p>That&#8217;s it, though. There&#8217;s nothing more to see here &#8212; please move along. Perhaps IE10 will give me a little more to write about very soon&hellip;</p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/firefox-12-chrome-18-whats-new/feed/</wfw:commentRss> <slash:comments>8</slash:comments> </item> <item><title>What&#8217;s New in Firefox 11</title><link>http://www.sitepoint.com/firefox-11-whats-new/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=firefox-11-whats-new</link> <comments>http://www.sitepoint.com/firefox-11-whats-new/#comments</comments> <pubDate>Wed, 14 Mar 2012 11:44:33 +0000</pubDate> <dc:creator>Craig Buckler</dc:creator> <category><![CDATA[CSS3]]></category> <category><![CDATA[Gems]]></category> <category><![CDATA[HTML & CSS]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[News & Trends]]></category> <category><![CDATA[Open Source]]></category> <category><![CDATA[Opinion]]></category> <category><![CDATA[Web Tech]]></category> <category><![CDATA[browser]]></category> <category><![CDATA[firefox]]></category> <category><![CDATA[HTML5 Dev Center]]></category> <category><![CDATA[Mozilla]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=52683</guid> <description><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2012/03/328-firefox-4-50x50.png" class="attachment-thumbnail wp-post-image" alt="328-firefox-4" title="328-firefox-4" />Another six weeks has passed and Mozilla has released a new version Firefox. Craig looks at the new features in Firefox 11 including the stunning Style Editor and 3D Page View.]]></description> <content:encoded><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2012/03/328-firefox-4-50x50.png" class="attachment-thumbnail wp-post-image" alt="328-firefox-4" title="328-firefox-4" /><p></p><p>Where did the last six weeks go? Following the Firefox 10 release on January 31 2012, Firefox 11 was released on March 13. We rarely see major new features in Chrome, so it&#8217;s great to discover that Mozilla has added several new toys for us:</p><h2>Style Editor</h2><p>Firefox 11 provides a new stylesheet editor. Visit any page, then select <strong>Style Editor</strong> from the <strong>Web Developer</strong> menu or press Shift+F7:</p><p><img
src="http://hacks.mozilla.org/wp-content/uploads/2011/12/Style-Editor-HN-500x220.png" width="500" height="220" alt="Firefox style editor" class="center" /></p><p>While there are several excellent add-ons which offer similar functionality &#8212; <a
href="http://getfirebug.com/">Firebug</a>, the <a
href="https://addons.mozilla.org/en-US/firefox/addon/web-developer/">Web Developer Toolbar</a> and Firefox&#8217;s own <a
href="http://www.sitepoint.com/firefox-10-whats-new/">Page Inspector tool</a> &#8212; the Style Editor is dedicated to editing styles and does it very well. It&#8217;s main advantages:</p><ul><li>all stylesheet files are displayed &#8212; you can disable or enable any by clicking the &#8216;eye&#8217; icon</li><li>compressed CSS is automatically decompressed</li><li>you can add or import additional files</li><li>all changes are live &#8212; start typing and the page will re-render immediately</li><li>you can save any file to your hard disk</li><li>it&#8217;s fast and looks great.</li></ul><p>I&#8217;m a fan and will certainly use it on a day-to-day basis.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><h2>&#8220;Tilt&#8221; 3D Page Structure View</h2><p>Tilt was previously available as an add-on. It&#8217;s accessed from the Inspector tool which now offers a &#8220;3D&#8221; button (<strong>Inspect</strong> from the <strong>Web Developer</strong> menu, Ctrl+Shift+I, or &#8220;Inspect&#8221; from the context menu):</p><p><img
src="http://hacks.mozilla.org/wp-content/uploads/2011/12/CNN-3D-View-500x324.png" width="500" height="324" alt="Firefox 3D page structure" class="center" /></p><p>The view stacks elements as they are nested in the DOM and displays any which are hidden or off the page. You can zoom in and out, rotate and pan the map using +/-, a/d/w/s, and the cursors. It&#8217;s integrated with the Page Inspector so you can use the element breadcrumbs and style windows as before.</p><p>The 3D page view requires a graphic card which supports <a
href="http://www.sitepoint.com/firefox-enable-webgl-blacklisted-graphics-card/">WebGL</a>. Mine does and it runs <a
href="http://www.sitepoint.com/trigger-rally-html5-game/">Trigger Rally</a> without problems but, for some reason, 3D page view wouldn&#8217;t work on my PC. Hopefully, you&#8217;ll have better luck.</p><h2>text-size-adjust CSS property</h2><p>text-size-adjust or, more specifically, -moz-text-size-adjust is a non-standard property which caused much of the <a
href="http://www.sitepoint.com/w3c-css-webkit-prefix-crisis/">CSS vendor prefix controversy</a>. Apple introduced the property for their smartphones and tablets but has not submitted it to the W3C. However, that&#8217;s likely to change now it&#8217;s been implemented by Microsoft and Mozilla.</p><p>text-size-adjust controls how mobile devices size text and show scrollbars when zooming into a web page. It can be set to inherit, none, auto or a percentage &#8212; <a
href="https://developer.mozilla.org/en/CSS/text-size-adjust">the MDN page explains more</a>.</p><h2>outerHTML property</h2><p>outerHTML has finally made it to Firefox &#8212; it&#8217;s available in all the competing browsers and was originally implemented in IE4.</p><p>You may have encountered innerHTML which can extract or replace an element&#8217;s descendants with a serialized HTML fragment, e.g.</p><pre><code>
&lt;div id=&quot;myelement&quot;&gt;
	&lt;p&gt;Hello&lt;/p&gt;
&lt;/div&gt;
&lt;script&gt;
var m = document.getElementById(&quot;myelement&quot;);
m.innerHTML = &quot;&lt;p&gt;Goodbye&lt;/p&gt;&quot;;
&lt;/script&gt;
</code></pre><p>The resulting HTML:</p><pre><code>
&lt;div id=&quot;myelement&quot;&gt;
	&lt;p&gt;Goodbye&lt;/p&gt;
&lt;/div&gt;
</code></pre><p>outerHTML is similar to innerHTML except that it can extract or replace the selected element as well as its descendants, e.g.</p><pre><code>
&lt;div id=&quot;myelement&quot;&gt;
	&lt;p&gt;Hello&lt;/p&gt;
&lt;/div&gt;
&lt;script&gt;
var m = document.getElementById(&quot;myelement&quot;);
m.outerHTML = &quot;&lt;p&gt;Goodbye&lt;/p&gt;&quot;;
&lt;/script&gt;
</code></pre><p>The resulting HTML:</p><pre><code>
&lt;p&gt;Goodbye&lt;/p&gt;
</code></pre><p>The <code>div</code> is removed from the DOM.</p><h2>Miscellaneous Updates</h2><p>That&#8217;s not quite everything. As well as several bug fixes and speed improvements:</p><ul><li>Sync can synchronize your add-ons across devices.</li><li>Firefox can now migrate your bookmarks, history, and cookies from Google Chrome.</li><li>The default HTML5 video controls have been redesigned.</li><li>HTML5 tags are correctly highlighted when viewing the source.</li><li>Files can be stored in IndexedDB.</li><li>The moz prefix has been removed from the Websockets API.</li><li>When viewing a single image from a URL, the graphic is now centered on a gray background &#8212; <a
href="http://www.sitepoint.com/wp-content/themes/thesis/custom/images/logo.png">try it</a>.</li></ul><p>Despite the initial teething problems, Firefox gets better with every release. If you were disillusioned with v4.0+ and migrated elsewhere, I recommend you give it another try.</p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/firefox-11-whats-new/feed/</wfw:commentRss> <slash:comments>29</slash:comments> </item><div><div
class="post_box two_ads" style="float:left;padding-left:2px;"><div
id='div-gpt-ad-1328645237920-0' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328645237920-0'); });</script> </div></div></div><div
class="clear">&nbsp;</div> <item><title>5 of the Best Free HTML5 Presentation Systems</title><link>http://www.sitepoint.com/5-free-html5-presentation-systems/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=5-free-html5-presentation-systems</link> <comments>http://www.sitepoint.com/5-free-html5-presentation-systems/#comments</comments> <pubDate>Mon, 12 Mar 2012 16:47:08 +0000</pubDate> <dc:creator>Craig Buckler</dc:creator> <category><![CDATA[HTML & CSS]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[Inspiration]]></category> <category><![CDATA[Open Source]]></category> <category><![CDATA[Reviews]]></category> <category><![CDATA[CSS]]></category> <category><![CDATA[CSS3]]></category> <category><![CDATA[HTML5 Dev Center]]></category> <category><![CDATA[HTML5 Tutorials & Articles]]></category> <category><![CDATA[javascript]]></category> <category><![CDATA[presentation]]></category> <category><![CDATA[software]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=51799</guid> <description><![CDATA[<img
src="http://www.sitepoint.com/wp-content/uploads/1/files/2012/02/645-html5-presentations.jpg" class="attachment-thumbnail wp-post-image" alt="645-html5-presentations" title="645-html5-presentations" />Who needs PowerPoint, Keynote or Impress? Craig list his favorite HTML5 presentation systems; they're all free and offer an interesting alternative to their desktop competitors.]]></description> <content:encoded><![CDATA[<img
src="http://www.sitepoint.com/wp-content/uploads/1/files/2012/02/645-html5-presentations.jpg" class="attachment-thumbnail wp-post-image" alt="645-html5-presentations" title="645-html5-presentations" /><p></p><p>I have a lot of respect for Microsoft PowerPoint. It may be over-used and encourages people to create shocking slide shows, but it&#8217;s powerful and fun. I have just one criticism: all PowerPoint presentations look the same. It doesn&#8217;t matter how you change the colors, backgrounds, fonts or transitions &#8212; everyone can spot a PPT from a mile away.</p><p>Fortunately, we now have another option: HTML5. Or, more specifically, HTML5 templates powered by JavaScript with CSS3 2D/3D transitions and animations. The benefits include:</p><ul><li>it&#8217;s quicker to add a few HTML tags than use a WYSIWYG interface</li><li>you can update a presentation using a basic text editor on any device</li><li>files can be hosted on the web; you need never lose a PPT again</li><li>you can easily distribute a presentation without viewing software</li><li>it&#8217;s not PowerPoint and your audience will be amazed by your technical prowess.</li></ul><p>Admittedly, HTML5 presentations are not quite as powerful:</p><ul><li>you require web coding skills</li><li>positioning, effects and transitions are more limited</li><li>few systems offer slide notes (it&#8217;s a little awkward to show them separately)</li><li>it&#8217;s more difficult to print handouts</li></ul><p>But those are not necessarily killer drawbacks &#8212; you&#8217;re forced to concentrate on the presentation content rather than frivolous tweaks and awful animations.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><p>Here are the best HTML5 presentation systems I&#8217;ve found. Click the headings to view a demonstration &#8212; most work best in Chrome, Safari or Firefox&hellip;</p><h2><a
href="http://lab.hakim.se/reveal-js/#/">Reveal.js</a></h2><p>This is my current favorite. Slides look great and can be positioned horizontally or vertically. It&#8217;s also easy to change the CSS to add your own effects &#8212; I managed to add a rudimentary notes facility doing just that.</p><p>Slides are defined in separate <code>section</code> tags and Reveal.js offers a choice of several 3D slide transitions &hellip; although they look fairly similar.</p><p><a
href="https://github.com/hakimel/reveal.js">Download the reveal.js files&hellip;</a></p><h2><a
href="http://bartaz.github.com/impress.js">Impress.js</a></h2><p>Impress.js is, well, impressive. It&#8217;s been influenced by the commercial <a
href="http://prezi.com/">prezi.com</a>; slides are arranged in a 3-dimensional space and your view rotates and pans accordingly. I won&#8217;t attempt to explain it further &#8212; <a
href="http://bartaz.github.com/impress.js">just try it</a> and you&#8217;ll understand what I mean.</p><p>Slides are defined in <code>div</code> elements with data attributes controlling the x, y, z locations and rotations. That&#8217;s the only drawback; it&#8217;s a little difficult to visualize and define those values. Persevere, though, and you&#8217;ll be able to create some stunning and original slide shows.</p><p><a
href="https://github.com/bartaz/impress.js">Download the Impress.js files&hellip;</a></p><h2><a
href="http://html5slides.googlecode.com/svn/trunk/template/index.html">Google Slides Template</a></h2><p>As you&#8217;d expect, Google has their own HTML5 presentation template (as well as the one offered in <a
href="http://docs.google.com/">Google Docs</a>). It&#8217;s fairly basic when compared to Reveal.js or Impress.js; it&#8217;s restricted to right-to-left slide transitions and fade-in effects, but it still looks great.</p><p>Slides are defined in <code>article</code> tags and it&#8217;s easy to add extra stylesheets to override the default CSS.</p><p><a
href="http://code.google.com/p/html5slides/source/browse/trunk/template/index.html">Download the Google Slides Template file&hellip;</a></p><h2><a
href="http://imakewebthings.github.com/deck.js/">Deck.js</a></h2><p>Deck.js was one of the first HTML5 presentation systems. It looks similar to Google&#8217;s offering &#8212; perhaps a little prettier, but without slide transition effects.</p><p>Slides are defined within semantically correct <code>section</code> blocks in an outer <code>article</code>. There&#8217;s also a <a
href="http://imakewebthings.github.com/deck.js/docs">documented API</a> so it&#8217;s possible to create your own extensions.</p><p><a
href="https://github.com/imakewebthings/deck.js">Download the Deck.js files&hellip;</a></p><h2><a
href="http://pepelsbey.github.com/shower/en.htm">Shower</a></h2><p>Shower is a presentation system by Vadim Makeev of Opera Software. While it&#8217;s one of the simpler systems, it&#8217;s fast and works well in all browsers. The slide thumbnail view is especially cool (press ESC).</p><p>Shower&#8217;s main drawback is it&#8217;s convoluted HTML. Slides are defined in a <code>section</code> within a <code>div</code> within another <code>div</code> and contain their own <code>header</code> and content. A little more development could make it easier to use.</p><p><a
href="https://github.com/pepelsbey/shower">Download the Shower files&hellip;</a></p><p>Other worthy mentions:</p><ul><li><a
href="http://meyerweb.com/eric/tools/s5/s5-intro.html">S5 &#8212; A Simple Standards-Based Slide Show System</a> (<a
href="http://meyerweb.com/eric/tools/s5/">download</a>)</li><li><a
href="http://lea.verou.me/csss/sample-slideshow.html">CSSS &#8212; CSS-based SlideShow System</a> (<a
href="https://github.com/LeaVerou/CSSS">download</a>)</li><li><a
href="http://briancavalier.com/code/slides/#0">Slides</a> (<a
href="https://github.com/briancavalier/slides">download</a>)</li><li><a
href="http://slides.html5rocks.com/">HTML5Rocks</a> (no direct downloads, but you can copy the source)</li></ul><p>Have I neglected to mention your favorite HTML5 presentation system&hellip;</p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/5-free-html5-presentation-systems/feed/</wfw:commentRss> <slash:comments>15</slash:comments> </item> <item><title>Why Web Developers Will Want a Slice of Raspberry Pi</title><link>http://www.sitepoint.com/raspberry-pi-launch/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=raspberry-pi-launch</link> <comments>http://www.sitepoint.com/raspberry-pi-launch/#comments</comments> <pubDate>Wed, 29 Feb 2012 15:48:53 +0000</pubDate> <dc:creator>Craig Buckler</dc:creator> <category><![CDATA[Discussion]]></category> <category><![CDATA[Gems]]></category> <category><![CDATA[Industry Links]]></category> <category><![CDATA[Open Source]]></category> <category><![CDATA[Opinion]]></category> <category><![CDATA[Technology]]></category> <category><![CDATA[Web Tech]]></category> <category><![CDATA[device]]></category> <category><![CDATA[education]]></category> <category><![CDATA[PC]]></category> <category><![CDATA[Raspberry Pi]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=52037</guid> <description><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2012/02/647-raspberry-pi-50x50.png" class="attachment-thumbnail wp-post-image" alt="647-raspberry-pi" title="647-raspberry-pi" />Craig looks at the Raspberry Pi - a micro PC aimed at the education sector which could be ideal for web developers. The cost: just $35.]]></description> <content:encoded><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2012/02/647-raspberry-pi-50x50.png" class="attachment-thumbnail wp-post-image" alt="647-raspberry-pi" title="647-raspberry-pi" /><p></p><p>February 29 is a great day for a product release and the Raspberry Pi has been anticipated for months. It&#8217;s a mini PC about the size of a credit card. The cost: $35. You read that correctly; a fully-functional PC for the price of a decent lunch. There&#8217;s even a model for $25 if you don&#8217;t require an Ethernet connector.</p><p>Admittedly, you&#8217;ll require a case, TV/monitor, keyboard, micro USB power cable and SD card to do anything with it, but the 700MHz ARM processor and 256MB RAM and is capable of running Linux, office applications and full-screen video.</p><p><img
src="http://www.raspberrypi.org/img/modelb_blue_label.png" width="440" height="325" alt="Raspberry Pi" class="right" /></p><p>The device has been developed by the Raspberry Pi Foundation, a UK charity promoting the study of computer science, especially at school level, which hopes to put the fun back into computing. In essence, they want kids and hobbyists to experience the excitement of IT enjoyed during the late 1970s and early 80s. 8-bit computers may have been basic but they encouraged programming and experimentation.</p><p>Various editions of Linux are available for the Pi. It&#8217;ll happily run a web server, PHP, Python, Ruby, node.js and most other languages. Add a few browsers, MySQL, GIMP and decent text editor and you have a fully-fledged environment for budding web developers. It&#8217;s a great way to learn the techniques:<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><ul><li>the tools are free</li><li>it won&#8217;t matter if you trash the software or hardware</li><li>it&#8217;s far better than the tedious Microsoft Office skills taught by most schools.</li></ul><p>Hopefully, the knowledge will help tomorrow&#8217;s developers <a
href="http://www.sitepoint.com/css3-vendor-prefix-crisis-solutions/">avoid the mistakes we&#8217;re making today</a>.</p><p>It&#8217;s not only kids who&#8217;ll benefit from the Raspberry Pi. The devices may be ideal for:</p><ul><li>testing your application in different environments e.g. you could install PHP5.3 and MySQL 5.0 on one Pi, and PHP5.4 and MySQL 5.5 on another</li><li>testing multi-server set-ups for MySQL replication or parallel processing</li><li>automating back-ups</li><li>running source control systems</li><li>performing long-running data analysis tasks</li><li>demonstrating applications in locations without internet access. You could even leave Pi devices with potential customers for further evaluation.</li></ul><p>I want one. I&#8217;m sure you do too. Unfortunately, so do many other people and both online shops crashed within minutes of the launch at 6:00 UTC this morning. Did you manage to grab a slice of Raspberry Pi?</p><p>For more information, refer to <a
href="http://www.raspberrypi.org/">www.raspberrypi.org</a></p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/raspberry-pi-launch/feed/</wfw:commentRss> <slash:comments>8</slash:comments> </item> <item><title>MySQL Master-Slave Replication: Starting Replication</title><link>http://www.sitepoint.com/mysql-master-slave-replication-starting-replication/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mysql-master-slave-replication-starting-replication</link> <comments>http://www.sitepoint.com/mysql-master-slave-replication-starting-replication/#comments</comments> <pubDate>Mon, 20 Feb 2012 02:11:23 +0000</pubDate> <dc:creator>Panayotis Matsinopoulos</dc:creator> <category><![CDATA[Open Source]]></category> <category><![CDATA[PHP & MySQL Tutorials]]></category> <category><![CDATA[Web Tech]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=51619</guid> <description><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2012/02/feature7-50x50.png" class="attachment-thumbnail wp-post-image" alt="feature" title="feature" />Panayotis Matsinopolouos continues his account of how his company set up a successful MySQL Master-Slave configuration. This is the second of two parts.]]></description> <content:encoded><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2012/02/feature7-50x50.png" class="attachment-thumbnail wp-post-image" alt="feature" title="feature" /><p></p><p>In my <a
href="http://www.sitepoint.com/mysql-master-slave-replication-setting-up/">last article</a>, I took you through Phase 1 of setting up the MySQL Master-Slave relationship.</p><p>Now, we have the Master SQL Server running and serving our clients, which connect using remote IPs. Also, the Master has a replication server id (e.g. “100”) and waits for the Slave connections with a user that is allowed replication (e.g. ‘repl’).</p><p>We also have Slave SQL Node almost ready to start.</p><p>What we are going to do now is the following:</p><ol><li>On Master,<ol
style="list-style-type:lower-alpha;"><li>get the Replication Master Binary Log Coordinates</li><li>create a data snapshot using mysqldump</li><li>transfer the data on Slave</li><p> &nbsp;</ol></li><li>On Slave,<ol
style="list-style-type:lower-alpha;"><li>Restore the data snapshot</li><li>Set the Slave to start replication.</li></ol></li></ol><h2>Detailed Actions</h2><h3>On Master</h3><p>During steps 1 and 2 below, your Master database will be set to read-only mode.</p><ol><li>Get Master Coordinates</p><ol
style="list-style-type:lower-alpha;"><li>Open a MySQL shell and give:<br
/>&nbsp;<br
/> <code>mysql&gt; FLUSH TABLES WITH READ LOCK;</code><br
/>&nbsp;</li><li><strong>IMPORTANT.</strong> Leave this shell open and create another mysql client shell, i.e. another session:<br
/> &nbsp;</li><li><strong>Hence, on another session</strong>, type in the following mysql command:<br
/>&nbsp;<br
/> <code>mysql&gt; SHOW MASTER STATUS;</code><br
/>&nbsp;</li></ol><p> Write down the values for the column FILE and POSITION. You will need them later when setting up the Slave to start replication</li><li>On a command prompt, get a data snapshot:<br
/>&nbsp;<br
/> <code>os-shell&gt; mysqldump --all-databases --master-data &gt; dbdump.db</code><br
/>&nbsp;</li><p> If you have a big database, this might take quite some time. In our case, for a 25Gb database, it took something like 15 minutes.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><li>Release lock and allow your Master to play</li></ol><p>When your data dump finishes, just close the connection you opened on step 1 and your Master database server will resume serving transactions.</p><p>Now, you have a database file you can use on Slave to restore the database. You have to transfer this file to your Slave node.It might be a good idea to tar and gzip this file before transferring it and then untar and unzip it at the Slave node.</p><h3>On Slave</h3><p>Assuming that you have transferred your database dump file to Slave, you move on to work on this node as follows:</p><ol><li>Start MySQL server with <code>--skip-slave-start</code> option so that replication does not start. Here is the suggested way:</p><p>On your operating system command prompt:<br
/> &nbsp;<br
/> <code>os-shell&gt; mysqld_safe –-skip-slave-start</code><br
/> &nbsp;</li><li>Import the dump file:<br
/> &nbsp;<br
/> On another operating system command prompt:<br
/> &nbsp;<br
/> <code>os-shell&gt; mysql –u root –p &lt; dbdump.db</code><br
/> &nbsp;<br
/> This will start the import. It will take quite some time if your dump file is big.<br
/> &nbsp;<br
/> <strong>Important gotcha</strong>:: Before you start the import, make sure that you have enough space both on the datadir of MySQL and on the binary log directory too.<br
/> &nbsp;</li><li>Stop MySQL Server<br
/> &nbsp;<br
/> Assuming that import has finished successfully, and assuming that on step 1 above you started the MySQL Server skipping slave start, you need to stop this and make sure that MySQL server is not running.</p><h4>Some Problems that you might have now on Slave</h4><p>The problem that you have now is that you restored the system databases as well. These are coming from your Master server, which has a different IP. This will mean that ‘root’ user might not have any access to MySQL server now from the local Slave machine.</p><p>Also, ‘root’ might have different password. In Debian machine this is encrypted in the file <code>debian.cnf</code>” in your MySQL installation directory.</p><p>You can bring the <code>debian.cnf</code> file from your Master to your Slave machine. Or you can change/reset the ‘root’ password on your Slave machine.</p><p>Hint: You can change/reset the ‘root’ password on MySQL server as follows:</p><ul><li>Start MySQL so that it will not ask for password. Also, make sure it does not start replication:<br
/> &nbsp;<br
/> <code>os-shell&gt; mysqld_safe –-skip-slave-start –skip-grant-tables</code></li><li>Then connect with <code>mysql –u root</code> and issue a command to update ‘root’ password as follows:<br
/> &nbsp;<br
/> <code>mysql&gt; use mysql;</code><br
/> &nbsp;<br
/> <code>mysql&gt; update user set password=PASSWORD(‘new-password’) WHERE User = ‘root’;</code><br
/> &nbsp;<br
/> <code>mysql&gt; flush privileges;</code><br
/> &nbsp;</li><li>Stop MySQL Server that you started with skipping slave start and grant tables.</li></ul></li><p>&nbsp;</p><li>Start MySQL Server with skipping Slave Start<br
/> &nbsp;<br
/> <code>os-shell&gt; mysqld_safe –-skip-slave-start</code><br
/> &nbsp;</li><li>Set Master configuration on the Slave<br
/> &nbsp;<br
/> Execute the following command on a MySQL prompt:<br
/> &nbsp;<br
/> <code>mysql &gt; CHANGE MASTER TO MASTER_HOST=’10.100.10.80’, MASTER_USER=’repl’, MASTER_PASSWORD=’slavepassword’, MASTER_LOG_FILE=’mysql-bin.000003’, MASTER_LOG_POS=106; </code><br
/> &nbsp;<br
/> This is how you tell Slave how to connect to Master in order to replicate. Note the log coordinates. These are the coordinates you got from step 1 above.<br
/> &nbsp;</li><li>Stop MySQL that you have started on step 4 above.<br
/> &nbsp;</li><li>Start MySQL normally, e.g. on an OS shell:<br
/> &nbsp;<br
/> <code>os-shell&gt; /etc/ini.d/mysql start</code></li></ol><h2>Checking out that everything is OK</h2><p>Having started the slave MySQL node, you can log in and issue some commands to make sure that Slave is running OK.</p><ol><li>On mysql prompt, give the following command:<br
/> &nbsp;<br
/> <code>mysql&gt; show processlist;</code><br
/> &nbsp;<br
/> The output should be something similar to the following:</p><pre>
+----+-------------+-----------+-------+---------+------+-----------------------------------------------------------------------+------------------+
| Id | User        | Host      | db    | Command | Time | State                                                                 | Info             |
+----+-------------+-----------+-------+---------+------+-----------------------------------------------------------------------+------------------+
|  1 | system user |           | NULL  | Connect |  232 | Has read all relay log; waiting for the slave I/O thread to update it | NULL             |
|  2 | system user |           | NULL  | Connect |  232 | Waiting for master to send event                                      | NULL             |
| 39 | root        | localhost | mysql | Query   |    0 | NULL                                                                  | show processlist |
+----+-------------+-----------+-------+---------+------+-----------------------------------------------------------------------+------------------+
3 rows in set (0.00 sec)
</pre><p>&nbsp;<br
/> You can see the SQL thread that gets data from Master (in the above output is the thread with <code>Id 2</code>) and the SQL thread that executes the statements on Slave (in the output is the thread with <code>Id 1</code>).</li><li>On mysql prompt, give the following command<br
/> &nbsp;<br
/> <code>mysql&gt; show slave status;</code><br
/> &nbsp;<br
/> This will display the current status on slave. Pay attention to the <code>*_Errno</code> and <code>*_Error</code> columns. Normally, you shouldn’t see anything that indicates existence of errors there.<br
/> &nbsp;</li><li>On mysql prompt, give the following command<br
/> &nbsp;<br
/> <code>mysql&gt; show status like ‘Slave%’;</code><br
/> &nbsp;<br
/> You should see an output like the following:</p><pre>+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| Slave_open_temp_tables     | 0     |
| Slave_retried_transactions | 0     |
| Slave_running              | ON    |
+----------------------------+-------+
3 rows in set (0.00 sec)</pre><p>Pay attention to <code>Slave_running </code>being with value <code>ON</code>.</li></ol><h2>Important note on binary log time to live</h2><p>As we have said before, you can have Slave down and resynchronize as soon as you bring it up again. But do not put it out of service for quite long because, then it will be impossible to synchronize its content with Master. This is because the binary logs on Master do not leave forever.</p><p>There is the variable with name <code>expire_logs_days</code> that determines the number of days for automatic binary log file removal. Check this out. This should be 10, meaning that if you ever have your Slave down for 10 days or more, it will not be able to do replication as soon as you bring it up, and you will have to  everything from the beginning.</p><h2>Conclusion</h2><p>That was our story on how, more or less, we have implemented MySQL replication for our Fraudpointer application. The steps may not apply exactly to your particular case, but they can still give you a kick start and show you the way to implement replication the way it should work on your configuration.</p><p>Your comments are more than welcome. We want them. We need to improve this process and your feedback is absolutely valuable to us.</p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/mysql-master-slave-replication-starting-replication/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>MySQL Master-Slave Replication: Setting Up</title><link>http://www.sitepoint.com/mysql-master-slave-replication-setting-up/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mysql-master-slave-replication-setting-up</link> <comments>http://www.sitepoint.com/mysql-master-slave-replication-setting-up/#comments</comments> <pubDate>Wed, 15 Feb 2012 13:05:50 +0000</pubDate> <dc:creator>Panayotis Matsinopoulos</dc:creator> <category><![CDATA[Open Source]]></category> <category><![CDATA[PHP & MySQL Tutorials]]></category> <category><![CDATA[Web Tech]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=51500</guid> <description><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2012/02/feature7-50x50.png" class="attachment-thumbnail wp-post-image" alt="feature" title="feature" />There are very good reasons for setting up Master-Slave MySQL replication, not least being able to run backups off the Slave without impeding the performance of the Master. Panayotis Matsinopoulos explains.]]></description> <content:encoded><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2012/02/feature7-50x50.png" class="attachment-thumbnail wp-post-image" alt="feature" title="feature" /><p></p><p>Very recently, at <a
href="http://www.fraudpointer.com/">Fraudpointer.com</a>, having reached a database of 25Gb after just six months of operation, we decided to start using replication for our backend persistent storage.</p><h2>Why would you want to do that</h2><p>Replication of MySQL can be a solution to various problems that you might want to solve:</p><ul><li>Scale-out solutions</li><li>Data security</li><li>Analytics</li><li>Long-distance data distribution</li><li>Backup taken from slaves, rather than from master</li></ul><p>MySQL documentation on replication, that can be found <a
href="http://dev.mysql.com/doc/refman/5.1/en/replication.html">here</a>, is quite explanatory and gives more detail about these uses.</p><h2>Where have we been?</h2><p>Before implementing replication, we had a configuration such as the following:</p><p><img
class="alignnone size-full wp-image-51501" title="figure1" src="http://www.sitepoint.com/wp-content/uploads/2012/02/figure12.png" alt="what we had" width="651" height="182" /></p><p>We had a debian squeeze machine (name: Plato) with MySQL 5.1. installed and serving all of Fraudpointer traffic. When we decided to implement replication it was already 25Gb. A lot of transactions took place per minute, and we were facing two major problems.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><p>1)    We wanted to take daily backups and backup put a lot of load on the machine. Though the backup utility that we used (<a
href="http://www.percona.com/doc/percona-xtrabackup/index.html">Percona xtrabackup</a>) didn’t lock the database, the machine was getting quite unresponsive during backup time.</p><p>2)   We wanted to run heavy queries and get reports, very frequently. Just this was a good reason to start discussing replication.</p><h2>Where are we after replication?</h2><p>After MySQL replication, we are now in the following picture:</p><p><img
class="alignnone size-full wp-image-51502" title="figure2" src="http://www.sitepoint.com/wp-content/uploads/2012/02/figure22.png" alt="what we want" width="655" height="167" /></p><p>We now have two machines with MySQL installed. The old one, Plato, is now acting as the Master and the new one, Ares, is now acting as the Slave of the replication scheme. In our setup, the advantages of this configuration are as follows:</p><p>1)    We can get the daily backups from the Slave. No load on the production Master machine for this task.</p><p>2)   We can get our reports from the Slave node.</p><p>3)   If the Slave node is down, this is not a problem at all. Replication is performed asynchronously and when the Slave node is up and live after a downtime, it continues replication from the point it has been paused.</p><p>4)   Records that are created or updated at Master machine, are almost instantly “transferred” to Slave machine (even if asynchronously).</p><h2>How did we do that?</h2><p>Here is the process that we followed to carry out the replication:</p><h3>Assumptions</h3><ol><li>Both Master and Slave are debian squeeze machines.</li><li>Master has static IP: 10.100.10.80.</li><li>Slave has static IP: 10.100.10.103.</li><li>Master and Slave are on the same LAN.</li><li>Master has MySQL installed and you have the root password to connect to it from ‘localhost’. MySQL does not allow remote connections by default, and that was our case too.</li><li>Slave does not have MySQL installed yet.</li><li>Master debian allows incoming connections on 3306 port, the standard MySQL listening port.</li></ol><h3>PHASE 1</h3><h4>Overview</h4><p>In the first phase of the work, the overview of what we did is as follows:</p><p>1)    On Master</p><ol><li>Allow remote connections</li><li>Set bind-address</li><li>Enable binary logging</li><li>Establish a unique server ID</li><li>Restart server</li><li>Create a user for replication</li></ol><p>2)   On Slave</p><ol><li>Install MySQL</li><li>Stop MySQL</li><li>Set bind-address</li><li>Enable binary logging</li><li>Set unique server ID</li></ol><h3>Detailed Actions</h3><h4>On Master</h4><p>1)    Allow remote connections</p><p>Since you are about to change the bind address on your MySQL server, you are essentially allowing access to your MySQL server from “remote” machines. If you do not do that, after the change of the bind address and restarting of your MySQL server, users from remote or local machines will not be able to connect to your server. All the remote and local machine IPs need to be granted access for the users that access MySQL from these machines.</p><p>The following mysql commands (which can be issued using mysql shell)</p><pre>mysql&gt; grant all on *.* to bar@’10.100.10.55’ identified by ‘bar_password’;
mysql&gt; flush privileges;</pre><p>allow the user ‘bar’ to connect to this MySQL server and to all databases from the machine with IP ’10.100.10.55’. This is necessary even if the user connects from the machine that MySQL server is installed.</p><p>Hence, connect to your MySQL server using mysql and set these commands accordingly before proceeding to the following.  Don’t forget that this is true for the ‘root’ user too, even if he connects from the local machine.</p><p>2)   Set bind-address to the IP of the machine.</p><p>This is done inside the <code>my.cnf</code> file. <code>bind-address</code> is a configuration parameter of the section <code>[mysqld]</code>. Set it to the IP of your Master machine. In our case, it was 10.100.10.80. Note that if you have enabled <code>skip-networking</code> you need to disable it.</p><p>3)   Set binary log file pattern</p><p>The parameter is called <code>log_bin</code> and it should exist in the <code>[mysqld]</code> section. Note that the full path to the binary log file should be given. Example: <code>/var/log/mysql/mysql-bin.log</code>.</p><p><strong>Important gotcha</strong>: make sure that the folder/disk has enough space to write the binary logs there.</p><p>4)   Set server id</p><p>This is the Master replication server ID. It has to be unique among all the ids used in the whole replication setup. For example, set this to “100” and make sure that you set “101” on your Slave (see later).</p><p>The parameter is <code>server-id</code> and should be set in the section <code>[mysqld]</code>.</p><p>5)   <code>innodb_flush_log_at_trx_commit</code> and <code>sync_binlog</code></p><p>These should be set to “1”, both of them. According to MySQL documentation <em>for the greatest possible durability and consistency in a replication setup using InnoDB with transactions … you have to do this.</em> More on this you can find <a
href="http://dev.mysql.com/doc/refman/5.1/en/innodb-parameters.html#sysvar_innodb_flush_log_at_trx_commit">here</a>.</p><p>These parameters are set in section <code>[mysqld]</code>.</p><p>6)   RESTART MySQL Server</p><p>Having done all the necessary changes on the configuration file of MySQL Server and having granted access to all existing users to be able to connect using their IP, you can restart your MySQL Server.</p><p>7)   Create user for replication</p><p>You need to create a user that will have the right to work as the replication/slave client. The following commands:</p><pre>mysql&gt; create user ‘repl’@’10.100.10.103’ identified by ‘slavepassword’;
mysql&gt; grant all on *.* to ‘repl’@’10.100.10.103’;
mysql&gt; flush privileges;</pre><p>are creating the user ‘repl’ and give him the right to do replication from the slave machine with IP 10.100.10.103 using the specified password.</p><h4>On Slave</h4><p>1)    Install MySQL Server</p><p>On Slave machine you need to install MySQL Server.</p><p>2)   Stop MySQL server</p><p>You do not need to have it running, for the time being. Proceed with changing MySQL configuration parameters to support Slave replication.</p><p>3)   <code>bind-address</code></p><p>Set <code>bind-address</code> to the value of the IP of your Slave machine. In our case was 10.100.100.103. The parameter should be set in the <code>[mysqld]</code> section.</p><p>4)   <code>log_bin</code></p><p>Set the full path to the binary log file. For example: <code>/var/mysql/log/mysql-bin.log</code>. The parameter is set in the <code>[mysqld]</code> section of the <code>my.cnf</code> file.</p><p><strong>Important gotcha</strong>:: make sure that your binary log folder has lots of space. You will need it.</p><p>5)   <code>server-id</code></p><p>You need to give the server ID for the Slave node for this replication setup. Put for example “101”. It has to be different from the server IDs of the Master and other Slave nodes in your configuration.</p><p>Do not start Slave MySQL server. You still do not need to do that.</p><p>You are done for now. Phase 1 is finished.</p><p>In Phase 2, we will start replication.</p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/mysql-master-slave-replication-setting-up/feed/</wfw:commentRss> <slash:comments>8</slash:comments> </item><div><div
class="post_box two_ads" style="float:left;padding-left:2px;"><div
id='div-gpt-ad-1328645237920-1' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328645237920-1'); });</script> </div></div></div><div
class="clear">&nbsp;</div> <item><title>What&#8217;s New in Firefox 10</title><link>http://www.sitepoint.com/firefox-10-whats-new/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=firefox-10-whats-new</link> <comments>http://www.sitepoint.com/firefox-10-whats-new/#comments</comments> <pubDate>Wed, 01 Feb 2012 14:00:54 +0000</pubDate> <dc:creator>Craig Buckler</dc:creator> <category><![CDATA[HTML & CSS]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[Open Source]]></category> <category><![CDATA[Technology]]></category> <category><![CDATA[firefox]]></category> <category><![CDATA[Firefox 10]]></category> <category><![CDATA[HTML5 Dev Center]]></category> <category><![CDATA[Mozilla]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=50995</guid> <description><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2010/05/328-firefox-4-50x50.png" class="attachment-thumbnail wp-post-image" alt="328-firefox-4" title="328-firefox-4" />It's too late to upgrade to Firefox 9 - version 10 has been released. While we're becoming used to lightweight sets of new features, Craig finds a surprising number of additions in the new browser.]]></description> <content:encoded><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2010/05/328-firefox-4-50x50.png" class="attachment-thumbnail wp-post-image" alt="328-firefox-4" title="328-firefox-4" /><p></p><p>Firefox reached double-digit version numbers on January 31, 2012. It&#8217;s been a mere <a
href="http://www.sitepoint.com/firefox-9-whats-new/">six weeks since we received Firefox 9.0</a> but there are several interesting features in the new version&hellip;</p><h2>Page Inspector</h2><p>Firefox now has it&#8217;s own built-in page inspector. To launch it, select <strong>Inspect</strong> from the <strong>Web Developer</strong> menu, point to an element and choose &#8220;Inspect&#8221; from the right-click context menu, or press Ctrl+Shift+I. The active element will be highlighted and a bar appears at the bottom of the window showing a clickable breadcrumb trail of the DOM hierarchy.</p><p>The <strong>HTML</strong> button shows the element&#8217;s location in the page source while <strong>Style</strong> displays an editable list of applied CSS rules and properties.</p><p><img
src="http://blogs.sitepointstatic.com/images/tech/633-firefox-10-inspector.png" width="600" height="580" alt="Firefox Inspector" class="center" /></p><p>Let&#8217;s be honest: it&#8217;s not <a
href="http://www.sitepoint.com/firebug-19-new-features/">Firebug</a>. But it looks good, works well and will be invaluable on those rare occasions when Firebug isn&#8217;t available. I was a little concerned the Inspector would clash with Firebug in some way but I&#8217;m yet to encounter a problem.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><h2>CSS 3D Transforms</h2><p>Like the webkit browsers, Firefox 10 now supports CSS 3D transforms which allow you to rotate, skew and translate objects in three-dimensional space. You&#8217;ll require the -moz prefix but I suspect more developers will experiment with the effects now they&#8217;re supported in Firefox, Chrome, Safari and IE10.</p><h2>Fullscreen API</h2><p>The fullscreen API is another webkit feature which has been implemented in Firefox 10. You guessed correctly &#8212; it allows a page to launch the browser in full-screen mode which makes it ideal for videos, games and other interactive media.</p><p>Before hackers and pop-up advertisers become too excited, you should note that the browser places several restrictions on the feature and users cannot be placed in fullscreen mode without their knowledge or consent. The API is not particularly stable; the <a
href="http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html">W3C Fullscreen specification</a> is an early draft and there are minor differences between the webkit and gecko implementations.</p><h2>Visibility API</h2><p>The visibility API allows you to check three new document true/false properties:</p><ul><li><strong>visible</strong> &#8212; your document is the foreground tab of a non-minimized window</li><li><strong>hidden</strong> &#8212; your document is either a background tab or on a minimized window</li><li><strong>prerender</strong> &#8212; your document is being pre-rendered and is not visible to the user</li></ul><p>It&#8217;s simple but allow us to make more efficient and usable web pages. For example, changing tabs could automatically pause a video or slow down Ajax requests.</p><h2>Dynamic Forward Button</h2><p>The Forward navigation button now automatically hides itself when there&#8217;s no page to forward to! I&#8217;ve not heard anyone complain about wasted toolbar space, but it&#8217;s a logical interface enhancement since the button&#8217;s rarely used.</p><p><img
src="http://blogs.sitepointstatic.com/images/tech/633-firefox-10-forward.png" width="194" height="84" alt="Firefox hidden forward button" class="center" /></p><h2>Better Add-On Compatibility</h2><p><em>Probably</em>. Until version 10, Firefox assumed add-ons were incompatible if they were marked as valid for an earlier version. This was rarely the case and you could often force an add-on to install by changing the supported browser number. Mozilla has now reversed the policy; any extension which is compatible with Firefox 4.0 and doesn&#8217;t contain compiled code is presumed to be compatible.</p><p>Add-on issues have not been stopped completely, but the situation has improved considerably since last year.</p><p>Overall, Firefox 10 is a solid release with a good number of features. Say goodbye to version 9.0 and upgrade today &hellip; because version 11 will be with us on March 13, 2012.</p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/firefox-10-whats-new/feed/</wfw:commentRss> <slash:comments>21</slash:comments> </item> <item><title>PHPMaster: How I Chose My Programming Editor</title><link>http://feedproxy.google.com/~r/PHPMaster_feed/~3/y6hnYOzYB8U/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=phpmaster-how-i-chose-my-programming-editor</link> <comments>http://feedproxy.google.com/~r/PHPMaster_feed/~3/y6hnYOzYB8U/#comments</comments> <pubDate>Fri, 13 Jan 2012 23:32:42 +0000</pubDate> <dc:creator>J Armando Jeronymo</dc:creator> <category><![CDATA[.NET]]></category> <category><![CDATA[Color]]></category> <category><![CDATA[Community]]></category> <category><![CDATA[debug]]></category> <category><![CDATA[Design]]></category> <category><![CDATA[DR]]></category> <category><![CDATA[frameworks]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[Java]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[Open Source]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[plugins]]></category> <category><![CDATA[S3]]></category> <category><![CDATA[UX]]></category> <category><![CDATA[Web Tech]]></category> <category><![CDATA[Windows]]></category> <category><![CDATA[netbeans]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=50239</guid> <description><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2012/01/aebc63699691-150x150-50x50.jpg" class="attachment-thumbnail wp-post-image" alt="Thumbnail" title="Thumbnail" /> For many years I used a code editor that is now discontinued by its developers, and the introduction of HTML5 and CSS3 led me to look for an editor that supports the new tags and properties. In this article I’ll share the criteria and process I used to find an editor suitable for making quick fixes and a development environment for large-scale projects. My initial candidate list contained over 30 popular Linux, Java, Windows and XUL software packages which had at least one stable release after January 1, 2010: Arachnophilia, Bluefish, Bluegriffon, CoffeeCup HTML Editor, Dreamweaver, Eclipse PDT, Emacs, Expression Web, Geany, gedit, HTML-Kit, jEdit, Kate, KDevelop, Komodo Edit, KWrite, Netbeans, Notepad++, Notepad2, OpenBEXI, PHPEdit, PHPEd Pro, PHPStorm, Programmer’s Notepad, PSPad, RadPHP, Scite, SeaMonkey, Vim, WebDev, WebMatrix, and Zend Studio. You can google each program for their specific details]]></description> <content:encoded><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2012/01/aebc63699691-150x150-50x50.jpg" class="attachment-thumbnail wp-post-image" alt="Thumbnail" title="Thumbnail" /><p></p><p><img
src="http://www.sitepoint.com/wp-content/uploads/2012/01/aebc63699691-150x150-50x50.jpg" alt="" /> For many years I used a code editor that is now discontinued by its developers, and the introduction of HTML5 and CSS3 led me to look for an editor that supports the new tags and properties. In this article I’ll share the criteria and process I used to find an editor suitable for making quick fixes and a development environment for large-scale projects. My initial candidate list contained over 30 popular Linux, Java, Windows and XUL software packages which had at least one stable release after January 1, 2010: Arachnophilia, Bluefish, Bluegriffon, CoffeeCup HTML Editor, Dreamweaver, Eclipse PDT, Emacs, Expression Web, Geany, gedit, HTML-Kit, jEdit, Kate, KDevelop, Komodo Edit, KWrite, Netbeans, Notepad++, Notepad2, OpenBEXI, PHPEdit, PHPEd Pro, PHPStorm, Programmer’s Notepad, PSPad, RadPHP, Scite, SeaMonkey, Vim, WebDev, WebMatrix, and Zend Studio. You can google each program for their specific details</p><p>Read More:<br
/> <a
title="PHPMaster: How I Chose My Programming Editor" href="http://feedproxy.google.com/~r/PHPMaster_feed/~3/y6hnYOzYB8U/" target="_blank">PHPMaster: How I Chose My Programming Editor</a></p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://feedproxy.google.com/~r/PHPMaster_feed/~3/y6hnYOzYB8U/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>RubySource: Rubylutions for 2012</title><link>http://rubysource.com/rubylutions-for-2012/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rubysource-rubylutions-for-2012</link> <comments>http://rubysource.com/rubylutions-for-2012/#comments</comments> <pubDate>Fri, 30 Dec 2011 22:53:59 +0000</pubDate> <dc:creator>Glenn Goodrich</dc:creator> <category><![CDATA[.NET]]></category> <category><![CDATA[Community]]></category> <category><![CDATA[Content]]></category> <category><![CDATA[Design]]></category> <category><![CDATA[DR]]></category> <category><![CDATA[Gems]]></category> <category><![CDATA[General]]></category> <category><![CDATA[Misc]]></category> <category><![CDATA[node]]></category> <category><![CDATA[Open Source]]></category> <category><![CDATA[Opinion]]></category> <category><![CDATA[Outside Ruby]]></category> <category><![CDATA[rails]]></category> <category><![CDATA[ruby]]></category> <category><![CDATA[Tech]]></category> <category><![CDATA[twitter]]></category> <category><![CDATA[Web Tech]]></category> <category><![CDATA[misc]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=49782</guid> <description><![CDATA[ Sometimes the idea for an article strikes me out-of-the-blue, like a lightning bolt or an airborne toxin. The quality of these sudden onset ideas varies greatly, and it usually directly proportional with the number of beers I’ve had pre-idea strike. My most recent attack hit me in bed as I was drifting off. It said: “Write a post about Ruby resolutions for the new year. ]]></description> <content:encoded><![CDATA[<p></p><p> Sometimes the idea for an article strikes me out-of-the-blue, like a lightning bolt or an airborne toxin. The quality of these sudden onset ideas varies greatly, and it usually directly proportional with the number of beers I’ve had pre-idea strike. My most recent attack hit me in bed as I was drifting off. It said: “Write a post about Ruby resolutions for the new year.</p><p>More here:<br
/> <a
target="_blank" href="http://rubysource.com/rubylutions-for-2012/" title="RubySource: Rubylutions for 2012">RubySource: Rubylutions for 2012</a></p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://rubysource.com/rubylutions-for-2012/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>What&#8217;s New in Firefox 9.0</title><link>http://www.sitepoint.com/firefox-9-whats-new/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=firefox-9-whats-new</link> <comments>http://www.sitepoint.com/firefox-9-whats-new/#comments</comments> <pubDate>Wed, 21 Dec 2011 16:25:27 +0000</pubDate> <dc:creator>Craig Buckler</dc:creator> <category><![CDATA[CSS Tutorials]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[News & Trends]]></category> <category><![CDATA[Open Source]]></category> <category><![CDATA[Web Tech]]></category> <category><![CDATA[firefox]]></category> <category><![CDATA[Firefox 9]]></category> <category><![CDATA[HTML5 Dev Center]]></category> <category><![CDATA[Mozilla]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=49538</guid> <description><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2010/05/328-firefox-4-50x50.png" class="attachment-thumbnail wp-post-image" alt="328-firefox-4" title="328-firefox-4" />If you've been holding off installing Firefox 8.0, you're too late - Mozilla released Firefox 9.0 on December 20, 2011. Craig looks at the new features and future prospects for the browser.]]></description> <content:encoded><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2010/05/328-firefox-4-50x50.png" class="attachment-thumbnail wp-post-image" alt="328-firefox-4" title="328-firefox-4" /><p></p><p>Firefox 9.0 is out? Seriously? I suppose it&#8217;s been six weeks since <a
href="http://www.sitepoint.com/firefox-8-whats-new/">version 8.0 was released on November 8, 2011</a>. If you&#8217;ve not received an automatic update yet, select Help &gt; About Firefox and hit the <strong>Check for Updates</strong> button. If all else fails, head over to <a
href="http://getfirefox.com/">getfirefox.com</a> and download it manually.</p><p>The add-on compatibility issue appears to have improved significantly. None of my extensions were disabled but I can&#8217;t promise you&#8217;ll have the same experience.</p><p>On the surface, little appears to have changed. Mozilla is claiming improved HTML5, CSS and MathML support. They have also published a <a
href="https://www.mozilla.org/en-US/firefox/9.0/releasenotes/buglist.html">long list of bug</a> and <a
href="https://www.mozilla.org/security/known-vulnerabilities/firefox.html#firefox9">security fixes</a> to illustrate how busy they&#8217;ve been. Mac OS users may notice improved theme integration and two finger swipe navigation but, for the rest of us, the main changes are under the hood&hellip;</p><h2>Improved JavaScript Performance</h2><p>Mozilla are claiming a 20-30% performance boost for JavaScript in Firefox 9.0. It&#8217;s primarily been achieved using Type Inference (TI); a feature in the SpiderMonkey JavaScript engine which analyzes statements and variable values as a program executes to determine types. The information is used during JIT compilation to generate more efficient code.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><p>It&#8217;s impressive. While I doubt you&#8217;ll experience a 30% speed increase in the wild, the early benchmarks show promise. Mozilla has certainly closed the gap on competitors, if not overtaken them.</p><h2>New CSS3 font-stretch property</h2><p>The new <code>font-stretch</code> property selects a normal, condensed, or extended face from a font family:</p><ul><li>font-stretch: ultra-condensed</li><li>font-stretch: extra-condensed</li><li>font-stretch: condensed</li><li>font-stretch: semi-condensed</li><li>font-stretch: normal</li><li>font-stretch: semi-expanded</li><li>font-stretch: expanded</li><li>font-stretch: extra-expanded</li><li>font-stretch: ultra-expanded</li></ul><p>Typefaces will only appear differently if you have a specific font type installed. Remember that many fonts don&#8217;t offer condensed or expanded types.</p><h2>Improved CSS3 text-overflow Support</h2><p>Firefox has supported <code>text-overflow: ellipses</code> since <a
href="http://www.sitepoint.com/whats-new-in-firefox-7/">version 7 was released in September</a>. The property shows &#8216;&hellip;&#8217; at the right-most end of a text string which overflows its container.</p><p>Firefox 9.0 allows you to truncate either end of the text with a hard clip, ellipses or a custom string. For example, if &#8220;12345678&#8243; was centered in an element which was too small;</p><pre><code>text-overflow: ',' ellipsis;</code></pre><p>could result in &#8220;,3456&hellip;&#8221;</p><p>For more information, refer to the <a
href="https://developer.mozilla.org/en/CSS/text-overflow">text-overflow reference at MDN</a>.</p><h2>A More Promising Future?</h2><p>Mozilla has been losing ground to Google&#8217;s Chrome browser but Firefox 9.0 feels fast, stable and has fewer of the compatibility issues which held back earlier versions.</p><p>The organization has also announced a three-year extension to its search partnership with Google. The original deal &#8212; <a
href="http://www.sitepoint.com/mozilla-pushes-firefox-36-update/">worth $100 million per year and 84% of Mozilla&#8217;s total revenues</a> &#8212; ended earlier this month. Neither company has revealed the financial details; Google is certain to have renegotiated the terms, but it was hardly likely to ignore the preferred browser of one in four web users.</p><p>It&#8217;s also evident that Mozilla is trying to differentiate itself from the others &#8212; <a
href="https://www.mozilla.org/en-US/firefox/9.0/whatsnew/">view their Firefox 9.0 video</a>. While it&#8217;s a stomach-churning set of moralistic cliches (<em>independently spirited people</em>, <em>we value values</em>, <em>we believe in you</em>, etc), it&#8217;s true that Mozilla is the only browser vendor without ulterior business motives or commercial interests to protect. The web would be a lesser place without them.</p><p>If you&#8217;re considering the Firefox 9.0 update, it&#8217;s best to do so now. Firefox 10.0 is due on January 31, 2012.</p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/firefox-9-whats-new/feed/</wfw:commentRss> <slash:comments>14</slash:comments> </item> <item><title>How to Enable WebGL for Blocked Graphics Cards in Firefox</title><link>http://www.sitepoint.com/firefox-enable-webgl-blacklisted-graphics-card/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=firefox-enable-webgl-blacklisted-graphics-card</link> <comments>http://www.sitepoint.com/firefox-enable-webgl-blacklisted-graphics-card/#comments</comments> <pubDate>Tue, 20 Dec 2011 15:56:53 +0000</pubDate> <dc:creator>Craig Buckler</dc:creator> <category><![CDATA[Disaster]]></category> <category><![CDATA[Gems]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[Open Source]]></category> <category><![CDATA[User Experience]]></category> <category><![CDATA[firefox]]></category> <category><![CDATA[GPU]]></category> <category><![CDATA[graphics cards]]></category> <category><![CDATA[HTML5 Dev Center]]></category> <category><![CDATA[WebGL]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=48222</guid> <description><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2011/11/608-firefox-enable-webgl-50x50.png" class="attachment-thumbnail wp-post-image" alt="608-firefox-enable-webgl" title="608-firefox-enable-webgl" />Craig reveals how you can run WebGL applications in Firefox even if your graphics card has been blacklisted. It's dangerous, but worth the risk to play X-Wing!]]></description> <content:encoded><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2011/11/608-firefox-enable-webgl-50x50.png" class="attachment-thumbnail wp-post-image" alt="608-firefox-enable-webgl" title="608-firefox-enable-webgl" /><p></p><p>WebGL is amazing. Take a look at <a
href="http://oos.moxiecode.com/js_webgl/xwing/">X-Wing</a> or <a
href="http://www.firstpersontetris.com/">First-Person Tetris</a> in Firefox. What do you mean it&#8217;s not working?</p><p>My laptop&#8217;s two years old but, despite having a reasonable dedicated graphics card, WebGL is disabled in Firefox. Mozilla blacklist specific GPUs based on the driver version number, i.e.</p><ul><li>NVIDIA cards require a driver numbered 8.17.12.5721 or greater</li><li>AMD/ATI cards are 8.741.0.0 or greater</li><li>Intel cards normally require 6.14.11 on XP, 7.15.10 on Vista or 8.15.10 on 7 (although some products are completely blocked)</li><li>Macs require OS version 10.6 or newer</li></ul><p>In general, blacklisting is a good thing. You don&#8217;t want WebGL crashing the browser because your card doesn&#8217;t support the right number of Z/Stencil ROP Units, 128-bit floating point HDR, anisotropic texture filtering or some other bizarre feature no one understands.</p><p>Unfortunately, hardware vendors stop producing drivers for legacy products <em>(anything released before last Tuesday)</em>. In some cases, your PC vendor will insist on releasing their own modified driver updates and there&#8217;s no guarantee they&#8217;ll do that. Your graphics card may be WebGL-compatible, but it&#8217;ll be blocked in Firefox if the driver version is 0.0.0.1 behind the approved list. Type &#8220;about:support&#8221; in the address bar and scroll down to the &#8220;Graphics&#8221; section at the bottom to discover whether your card is suitable.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><p>And all you Chrome users can stop giggling &#8212; Google is adopting GPU blacklists in their browser shortly.</p><h2 style="color:#c00">Big Red Warning</h2><p>We&#8217;re about to bypass Firefox&#8217;s GPU blacklist. It&#8217;s a dumb thing to do and involves tinkering with dangerous configuration settings. Do this at your own risk: I can&#8217;t accept responsibility for any catastrophic PC failures, migraines, plagues, explosions or spontaneous human combustion caused by these changes &hellip; <em>But it&#8217;s worth the risk to play <a
href="http://oos.moxiecode.com/js_webgl/xwing/">X-Wing</a></em>!</p><h2>Here Be Dragons</h2><p>Type <strong>about:config</strong> in Firefox&#8217;s address bar and make the following changes:</p><ul><li>To enable WebGL, set <strong>webgl.force-enabled</strong> to <strong>true</strong>.</li><li>To enable Layers Acceleration, set <strong>layers.acceleration.force-enabled</strong> to <strong>true</strong></li><li>To enable Direct2D in Windows Vista/7, set <strong>gfx.direct2d.force-enabled</strong> to <strong>true</strong></li></ul><p>Now, cross your fingers, restart Firefox and try running a WebGL application. It&#8217;s probably best to undo those changes if smoke starts pouring from your PC.</p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/firefox-enable-webgl-blacklisted-graphics-card/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>What&#8217;s New in WordPress 3.3</title><link>http://www.sitepoint.com/wordpress-33-whats-new/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=wordpress-33-whats-new</link> <comments>http://www.sitepoint.com/wordpress-33-whats-new/#comments</comments> <pubDate>Tue, 13 Dec 2011 17:50:41 +0000</pubDate> <dc:creator>Craig Buckler</dc:creator> <category><![CDATA[Open Source]]></category> <category><![CDATA[Web Tech]]></category> <category><![CDATA[wordpress]]></category> <category><![CDATA[mysql]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[WordPress]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=49274</guid> <description><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2010/11/wordpress-logo-115x115.jpg" class="attachment-thumbnail wp-post-image" alt="wordpress-logo-115x115" title="wordpress-logo-115x115" />Craig looks at the new features in WordPress 3.3 - the web's most widely-used Content Management System.]]></description> <content:encoded><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2010/11/wordpress-logo-115x115.jpg" class="attachment-thumbnail wp-post-image" alt="wordpress-logo-115x115" title="wordpress-logo-115x115" /><p></p><p><a
href="http://wordpress.org/">WordPress 3.3</a> has been released. The world&#8217;s most popular CMS and blogging tool has been tidied and polished further to make web publishing even easier. It&#8217;s been downloaded 65 million times since v3.0 was released and is estimated to run 15% of all websites (or 22% of all new websites).</p><p>Existing users can upgrade with single click. I&#8217;ve rarely experienced problems doing that but it still makes me nervous. Back-up your files and database before proceeding.</p><p>Let&#8217;s see what goodies WordPress 3.3 has to offer&hellip;</p><h2>Revamped Interface</h2><p>HTML5 responsive design techniques have been implemented to help WordPress work on small-screen devices such as tablets. As you reduce the screen size, features such as the side menu automatically collapse.</p><p>If you suffer from aching fingers, v3.3&#8242;s new flyout sub-menus make it possible to access any administrative screen with a single click.</p><p><img
src="http://blogs.sitepointstatic.com/images/tech/617-wordpress-33-menus.png" width="336" height="153" alt="WordPress 3.3 flyout menu" class="center" /></p><p>The (previously optional) admin bar and the header have been combined into a single toolbar. It saves space, is less obtrusive and provides quick access to help, comments quick add links and your profile. That said, I suspect it may cause compatibility issues with some plug-ins &#8212; it&#8217;s definitely a feature you should test before going live.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><p>Finally, WordPress helps you discover new features with pointers which appear the first time you see them:</p><p><img
src="http://blogs.sitepointstatic.com/images/tech/617-wordpress-33-pointer.png" width="375" height="231" alt="WordPress 3.3 feature pointers" class="center" /></p><h2>Drag and Drop Media Upload</h2><p>Assuming you&#8217;ve got a decent HTML5 browser, you&#8217;ll never need to use the clunky &#8220;browse files&#8221; dialog again. One or more images or other media can be dragged into the media upload box.</p><p>In addition, there&#8217;s now a single upload panel for all media &#8212; no matter what file types you want to add. WordPress also supports RAR and 7z archive formats.</p><h2>New Tumblr Importer</h2><p>WordPress can now import content directly from Tumblr. Tumblog posts can be converted to a matching WordPress post format.</p><h2>Better Co-operation</h2><p>If you&#8217;ve ever received the <em>&#8220;Warning: Bob is currently editing this post&#8221;</em> message, you&#8217;ll be pleased to hear that co-editing activity lags should be a thing of the past.</p><h2>There&#8217;s More&hellip;</h2><p>Version 3.3 also offers:</p><ul><li>a new dashboard welcome screen for fresh installations</li><li>a new post-update changelog screen</li><li>more flexible and faster permalinks</li><li>an overhaul of the editor API</li><li>a new WP_Screen API for working with admin panels</li><li>a new <code>is_main_query()</code> for determining whether you&#8217;re in the main loop</li></ul><h2>Time to Upgrade?</h2><p>Few people will experience problems but they inevitably crop up with new software releases. If the whole of your business depends on WordPress, it might be advisable to let others find the issues and wait for version 3.3.1. If past experience is anything to go by, that&#8217;ll be available within a few weeks.</p><p>Have you upgraded to WordPress 3.3? Is it the best version ever or has your installation exploded?</p><p>Download WordPress 3.3 from <a
href="http://wordpress.org/download/">wordpress.org/download</a></p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/wordpress-33-whats-new/feed/</wfw:commentRss> <slash:comments>29</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using memcached
Database Caching 46/57 queries in 0.066 seconds using memcached
Object Caching 3124/3126 objects using memcached

Served from: www.sitepoint.com @ 2012-05-27 10:09:05 -->
