<?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>beer planet &#187; Tutorials</title> <atom:link href="http://beerpla.net/category/tutorials/feed/" rel="self" type="application/rss+xml" /><link>http://beerpla.net</link> <description>where things have nothing to do with beer - tutorials, tips, how-tos, thoughts, hacks, and other techy nonsense</description> <lastBuildDate>Fri, 06 Jan 2012 08:50:59 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <atom:link rel='hub' href='http://beerpla.net/?pushpress=hub'/> <item><title>How To Fix ERROR_NOT_FOUND 0&#215;80070490 During Windows 7 SP1 Installation</title><link>http://beerpla.net/2011/05/06/how-to-fix-error_not_found-0x80070490-during-windows-7-sp1-installation/</link> <comments>http://beerpla.net/2011/05/06/how-to-fix-error_not_found-0x80070490-during-windows-7-sp1-installation/#comments</comments> <pubDate>Fri, 06 May 2011 18:21:20 +0000</pubDate> <dc:creator>Artem Russakovskii</dc:creator> <category><![CDATA[Technology]]></category> <category><![CDATA[Tutorials]]></category> <category><![CDATA[0x80070490]]></category> <category><![CDATA[490]]></category> <category><![CDATA[64 bit]]></category> <category><![CDATA[7]]></category> <category><![CDATA[ERROR_NOT_FOUND]]></category> <category><![CDATA[fix]]></category> <category><![CDATA[install]]></category> <category><![CDATA[installation]]></category> <category><![CDATA[problem]]></category> <category><![CDATA[solve]]></category> <category><![CDATA[SP1]]></category> <category><![CDATA[windows]]></category> <category><![CDATA[windows 7]]></category> <category><![CDATA[x64]]></category> <guid
isPermaLink="false">http://beerpla.net/2011/05/06/how-to-fix-error_not_found-0x80070490-during-windows-7-sp1-installation/</guid> <description><![CDATA[<p><a
href="http://beerpla.net/wp-content/uploads/2011/05/image.png" class="lightview" rel="gallery['1583']" title="image"><img
style="margin: 0px 10px 10px 0px; display: inline; float: left" title="image" alt="image" align="left" src="http://beerpla.net/wp-content/uploads/2011/05/image_thumb.png" width="150" height="150" /></a>Well, this one took ages. And whenever something takes me ages, rather than write it down in my personal notes, I prefer to put it out online for everyone with the same problem to easily find and benefit from.</p><p>The problem I&#039;m talking about today is trying to upgrade your Windows 7 installation to SP1 by applying Microsoft&#039;s update KB976932, called &#34;Windows 7 Service Pack 1 for x64-based Systems&#34; and getting nothing but a failure every time. The same problem may affect 32-bit systems as well, and I&#039;m not sure what the update number for that would be, but the solution should work for either one.</p><p><a
href="http://beerpla.net/wp-content/uploads/2011/05/SNAGHTML3837080.png" class="lightview" rel="gallery['1583']" title="SNAGHTML3837080"><img
style="margin: 0px auto; display: block; float: none" title="SNAGHTML3837080" alt="SNAGHTML3837080" src="http://beerpla.net/wp-content/uploads/2011/05/SNAGHTML3837080_thumb.png" width="566" height="395" /></a></p><p>The update starts just fine, chugs along for 10 minutes or so, then...<div
class=clear></div> <a
href="http://beerpla.net/2011/05/06/how-to-fix-error_not_found-0x80070490-during-windows-7-sp1-installation/" class="read_more"><div
class=excerpt-end>Read the rest of this article &#187;</div></a></p>]]></description> <content:encoded><![CDATA[<p><a
href="http://beerpla.net/wp-content/uploads/2011/05/image.png" class="lightview" rel="gallery['1583']" title="image"><img
style="margin: 0px 10px 10px 0px; display: inline; float: left" title="image" alt="image" align="left" src="http://beerpla.net/wp-content/uploads/2011/05/image_thumb.png" width="150" height="150" /></a>Well, this one took ages. And whenever something takes me ages, rather than write it down in my personal notes, I prefer to put it out online for everyone with the same problem to easily find and benefit from.</p><p>The problem I&#039;m talking about today is trying to upgrade your Windows 7 installation to SP1 by applying Microsoft&#039;s update KB976932, called &quot;Windows 7 Service Pack 1 for x64-based Systems&quot; and getting nothing but a failure every time. The same problem may affect 32-bit systems as well, and I&#039;m not sure what the update number for that would be, but the solution should work for either one.</p><p><a
href="http://beerpla.net/wp-content/uploads/2011/05/SNAGHTML3837080.png" class="lightview" rel="gallery['1583']" title="SNAGHTML3837080"><img
style="margin: 0px auto; display: block; float: none" title="SNAGHTML3837080" alt="SNAGHTML3837080" src="http://beerpla.net/wp-content/uploads/2011/05/SNAGHTML3837080_thumb.png" width="566" height="395" /></a></p><p>The update starts just fine, chugs along for 10 minutes or so, then reboots the system and starts performing more operations, when suddenly one of them fails about 10% down the road, reboots, and reverts the whole process. You end up with this message (code 80070490) and a failure for which there are a lot of useless &quot;solutions&quot; on the web that just don&#039;t work.</p><p>Except for one. I can&#039;t take credit for it &#8211; all I did was spend a month weeding through the crap, retrying, and getting nowhere, until a genius by the name <a
href="http://social.technet.microsoft.com/profile/ben-is/?type=forum">Ben-IS</a> came up with exactly the right diagnosis and <a
href="http://social.technet.microsoft.com/Forums/en-US/w7itproinstall/thread/bfb3e5b5-a3bd-4124-b4d6-7fb437ac7b74/">provided exactly the right solution</a>. This solution, in my own interpretation, is below.</p><h2>Step 1</h2><p>We are going to use a utility called <a
href="http://en.wikipedia.org/wiki/System_File_Checker">SFC</a> (System File Checker or Windows Resource Checker), which is part of the Windows installation. It will help diagnose the problem.</p><p>Open up a command prompt (cmd) as administrator and run</p><blockquote><p>sfc /scannow</p></blockquote><p>This will run for a while and produce a file called CBS.log which you can find in %WINDIR%\Logs\CBS (usually C:\Windows\Logs\CBS). See this <a
href="http://support.microsoft.com/kb/929833">KB929833</a> for more info on SFC and CBS (Component Based Servicing).</p><blockquote><p>sfc /scannow</p><p>Beginning system scan.&#160; This process will take some time.</p><p>Beginning verification phase of system scan. <br
/>Verification 100% complete.</p><p>Windows Resource Protection did not find any integrity violations.</p></blockquote><p>Even though there are no integrity violations, we should have enough info in the log to diagnose the problem.</p><h2>Step 2</h2><p>Unfortunately, Windows overwrote my CBS.log, so I&#039;ll go by the one Ben-IS provided.</p><p>Open up CBS.log and look for something like <strong>Failed uninstalling driver updates</strong> or <strong>0&#215;80070490 &#8211; ERROR_NOT_FOUND.</strong></p><p>If you have this line, which you should if you&#039;re reading this post, you should also see lines similar to these a few lines above:</p><blockquote><p>2011-04-14 12:02:33, Info CBS Doqe: q-uninstall: Inf: usbvideo.inf, Ranking: 2, Device-Install: 0, Key: 598, Identity: <strong>usbvideo.inf</strong>, Culture=neutral, Type=driverUpdate, Version=6.1.7600.16543, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=amd64, versionScope=NonSxS</p><p>2011-04-14 12:02:33, Info CBS Doqe: q-uninstall: Inf: sffdisk.inf, Ranking: 2, Device-Install: 0, Key: 599, Identity: sffdisk.inf, Culture=neutral, Type=driverUpdate, Version=6.1.7600.16438, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=amd64, versionScope=NonSxS</p><p>2011-04-14 12:02:33, Info CBS Doqe: q-uninstall: Inf: sdbus.inf, Ranking: 2, Device-Install: 0, Key: 600, Identity: sdbus.inf, Culture=neutral, Type=driverUpdate, Version=6.1.7600.16438, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=amd64, versionScope=NonSxS</p></blockquote><p>One of these .inf files is the culprit, and we&#039;re going to find out which one in the next step.</p><h2>Step 3</h2><p>Now open up a different log file located at <strong>%WINDIR%\inf\setupapi.dev.log </strong>(normally c:\Windows\inf\setupapi.dev.log).</p><p>Look for a line that contains <strong>Failed to find driver update</strong> or <strong>FAILURE(0&#215;00000490)</strong>.</p><p>Note the exact path to the .inf file that failed. In my case, it was:</p><blockquote><p>sto: Failed to find driver update &#039;<strong>C:\Windows\WinSxS\amd64_usbvideo.inf_31bf3856ad364e35_6.1.7600.16543_none_8a1a2513d42628c3\usbvideo.inf</strong>&#039; in Driver Store. Error = 0&#215;00000490</p></blockquote><h2>Step 4</h2><p>This is the key to the whole operation. Open up the command prompt again (cmd) as administrator and run</p><blockquote><p>pnputil &#8211; a INSERT_FILE_NAME_FROM_STEP_3</p></blockquote><p>For example, I ran</p><blockquote><p>pnputil -a C:\Windows\WinSxS\amd64_usbvideo.inf_31bf3856ad364e35_6.1.7600.16543_none_8a1a2513d42628c3\usbvideo.inf</p></blockquote><p>You should see the following dialog:</p><p><a
href="http://beerpla.net/wp-content/uploads/2011/05/SNAGHTML3a03ec7.png" class="lightview" rel="gallery['1583']" title="SNAGHTML3a03ec7"><img
style="margin: 0px auto; display: block; float: none" title="SNAGHTML3a03ec7" alt="SNAGHTML3a03ec7" src="http://beerpla.net/wp-content/uploads/2011/05/SNAGHTML3a03ec7_thumb.png" width="516" height="308" /></a></p><p>Choose <strong>Install this driver software anyway</strong>.</p><p>The end result should be something like this:</p><blockquote><p>pnputil -a C:\Windows\WinSxS\amd64_usbvideo.inf_31bf3856ad364e35_6.1.7600.16543_none_8a1a2513d42628c3\usbvideo.inf <br
/>Microsoft PnP Utility</p><p>Processing inf :&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; usbvideo.inf <br
/>Driver package added successfully. <br
/>Published name :&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; oem69.inf</p><p>Total attempted:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 1 <br
/>Number successfully imported: 1</p></blockquote><p>Repeat this step for any failures found in step 3.</p><h2>Step 5</h2><p>Apply the SP1 Windows Update again &#8211; it should now install successfully.</p><p>And voila &#8211; enjoy your SP1!</p><p>Microsoft has failed to fix this incredibly cryptic problem, leaving it up to the users to figure out why their SP1 updates are not installing. Thanks to people like Ben-IS, solutions no longer involve head-banging, postal rage, and <a
href="http://www.reddit.com/r/fffffffuuuuuuuuuuuu/">f7u12</a>.</p><div
class="shr-bookmarks shr-bookmarks-expand"><ul
class="socials"><li
class="shr-twitter"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Fix+ERROR_NOT_FOUND+0x80070490+During+Windows+7+SP1+Installation&amp;link=http://beerpla.net/2011/05/06/how-to-fix-error_not_found-0x80070490-during-windows-7-sp1-installation/&amp;notes=Well%2C%20this%20one%20took%20ages.%20And%20whenever%20something%20takes%20me%20ages%2C%20rather%20than%20write%20it%20down%20in%20my%20personal%20notes%2C%20I%20prefer%20to%20put%20it%20out%20online%20for%20everyone%20with%20the%20same%20problem%20to%20easily%20find%20and%20benefit%20from.%20%20The%20problem%20I%27m%20talking%20about%20today%20is%20trying%20to%20upgrade%20your%20Windows%207%20installation%20to%20S&amp;short_link=http://bit.ly/kX8eQf&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a></li><li
class="shr-facebook"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Fix+ERROR_NOT_FOUND+0x80070490+During+Windows+7+SP1+Installation&amp;link=http://beerpla.net/2011/05/06/how-to-fix-error_not_found-0x80070490-during-windows-7-sp1-installation/&amp;notes=Well%2C%20this%20one%20took%20ages.%20And%20whenever%20something%20takes%20me%20ages%2C%20rather%20than%20write%20it%20down%20in%20my%20personal%20notes%2C%20I%20prefer%20to%20put%20it%20out%20online%20for%20everyone%20with%20the%20same%20problem%20to%20easily%20find%20and%20benefit%20from.%20%20The%20problem%20I%27m%20talking%20about%20today%20is%20trying%20to%20upgrade%20your%20Windows%207%20installation%20to%20S&amp;short_link=http://bit.ly/kX8eQf&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a></li><li
class="shr-googlebuzz"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Fix+ERROR_NOT_FOUND+0x80070490+During+Windows+7+SP1+Installation&amp;link=http://beerpla.net/2011/05/06/how-to-fix-error_not_found-0x80070490-during-windows-7-sp1-installation/&amp;notes=Well%2C%20this%20one%20took%20ages.%20And%20whenever%20something%20takes%20me%20ages%2C%20rather%20than%20write%20it%20down%20in%20my%20personal%20notes%2C%20I%20prefer%20to%20put%20it%20out%20online%20for%20everyone%20with%20the%20same%20problem%20to%20easily%20find%20and%20benefit%20from.%20%20The%20problem%20I%27m%20talking%20about%20today%20is%20trying%20to%20upgrade%20your%20Windows%207%20installation%20to%20S&amp;short_link=http://bit.ly/kX8eQf&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a></li><li
class="shr-reddit"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Fix+ERROR_NOT_FOUND+0x80070490+During+Windows+7+SP1+Installation&amp;link=http://beerpla.net/2011/05/06/how-to-fix-error_not_found-0x80070490-during-windows-7-sp1-installation/&amp;notes=Well%2C%20this%20one%20took%20ages.%20And%20whenever%20something%20takes%20me%20ages%2C%20rather%20than%20write%20it%20down%20in%20my%20personal%20notes%2C%20I%20prefer%20to%20put%20it%20out%20online%20for%20everyone%20with%20the%20same%20problem%20to%20easily%20find%20and%20benefit%20from.%20%20The%20problem%20I%27m%20talking%20about%20today%20is%20trying%20to%20upgrade%20your%20Windows%207%20installation%20to%20S&amp;short_link=http://bit.ly/kX8eQf&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a></li><li
class="shr-hackernews"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Fix+ERROR_NOT_FOUND+0x80070490+During+Windows+7+SP1+Installation&amp;link=http://beerpla.net/2011/05/06/how-to-fix-error_not_found-0x80070490-during-windows-7-sp1-installation/&amp;notes=Well%2C%20this%20one%20took%20ages.%20And%20whenever%20something%20takes%20me%20ages%2C%20rather%20than%20write%20it%20down%20in%20my%20personal%20notes%2C%20I%20prefer%20to%20put%20it%20out%20online%20for%20everyone%20with%20the%20same%20problem%20to%20easily%20find%20and%20benefit%20from.%20%20The%20problem%20I%27m%20talking%20about%20today%20is%20trying%20to%20upgrade%20your%20Windows%207%20installation%20to%20S&amp;short_link=http://bit.ly/kX8eQf&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a></li><li
class="shr-delicious"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Fix+ERROR_NOT_FOUND+0x80070490+During+Windows+7+SP1+Installation&amp;link=http://beerpla.net/2011/05/06/how-to-fix-error_not_found-0x80070490-during-windows-7-sp1-installation/&amp;notes=Well%2C%20this%20one%20took%20ages.%20And%20whenever%20something%20takes%20me%20ages%2C%20rather%20than%20write%20it%20down%20in%20my%20personal%20notes%2C%20I%20prefer%20to%20put%20it%20out%20online%20for%20everyone%20with%20the%20same%20problem%20to%20easily%20find%20and%20benefit%20from.%20%20The%20problem%20I%27m%20talking%20about%20today%20is%20trying%20to%20upgrade%20your%20Windows%207%20installation%20to%20S&amp;short_link=http://bit.ly/kX8eQf&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a></li><li
class="shr-stumbleupon"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Fix+ERROR_NOT_FOUND+0x80070490+During+Windows+7+SP1+Installation&amp;link=http://beerpla.net/2011/05/06/how-to-fix-error_not_found-0x80070490-during-windows-7-sp1-installation/&amp;notes=Well%2C%20this%20one%20took%20ages.%20And%20whenever%20something%20takes%20me%20ages%2C%20rather%20than%20write%20it%20down%20in%20my%20personal%20notes%2C%20I%20prefer%20to%20put%20it%20out%20online%20for%20everyone%20with%20the%20same%20problem%20to%20easily%20find%20and%20benefit%20from.%20%20The%20problem%20I%27m%20talking%20about%20today%20is%20trying%20to%20upgrade%20your%20Windows%207%20installation%20to%20S&amp;short_link=http://bit.ly/kX8eQf&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a></li><li
class="shr-mail"> <a
href="http://www.shareaholic.com/api/share/?title=How%20To%20Fix%20ERROR_NOT_FOUND%200x80070490%20During%20Windows%207%20SP1%20Installation&amp;link=http://beerpla.net/2011/05/06/how-to-fix-error_not_found-0x80070490-during-windows-7-sp1-installation/&amp;notes=Well%2C%20this%20one%20took%20ages.%20And%20whenever%20something%20takes%20me%20ages%2C%20rather%20than%20write%20it%20down%20in%20my%20personal%20notes%2C%20I%20prefer%20to%20put%20it%20out%20online%20for%20everyone%20with%20the%20same%20problem%20to%20easily%20find%20and%20benefit%20from.%20%20The%20problem%20I%27m%20talking%20about%20today%20is%20trying%20to%20upgrade%20your%20Windows%207%20installation%20to%20S&amp;short_link=http://bit.ly/kX8eQf&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=201&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a></li></ul><div
style="clear: both;"></div></div> Similar Posts:<ul><li><a
href="http://beerpla.net/2007/07/09/how-to-download-and-install-windows-media-player-11-bypassing-wga/" rel="bookmark" title="July 9, 2007">How To Download And Install Windows Media Player 11 Bypassing WGA</a></li><li><a
href="http://beerpla.net/2008/07/23/how-to-check-if-the-local-svn-revision-is-up-to-date/" rel="bookmark" title="July 23, 2008">How To Check If The Local SVN Revision Is Up-To-Date</a></li><li><a
href="http://beerpla.net/2009/05/18/how-to-fix-redrawing-problems-in-your-vnc/" rel="bookmark" title="May 18, 2009">How To Fix Redrawing Problems In Your VNC</a></li><li><a
href="http://beerpla.net/2010/01/05/how-to-fix-intermittent-mysql-errcode-13-errors-on-windows/" rel="bookmark" title="January 5, 2010">How To Fix Intermittent MySQL Errcode 13 Errors On Windows</a></li><li><a
href="http://beerpla.net/2007/07/09/the-repositories-for-apt-get-in-suse-102/" rel="bookmark" title="July 9, 2007">The Repositories For apt-get In SUSE 10.2</a></li></ul><p><a
class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbeerpla.net%2F2011%2F05%2F06%2Fhow-to-fix-error_not_found-0x80070490-during-windows-7-sp1-installation%2F&amp;title=How%20To%20Fix%20ERROR_NOT_FOUND%200%26%23215%3B80070490%20During%20Windows%207%20SP1%20Installation" id="wpa2a_2"><img
src="http://beerpla.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded> <wfw:commentRss>http://beerpla.net/2011/05/06/how-to-fix-error_not_found-0x80070490-during-windows-7-sp1-installation/feed/</wfw:commentRss> <slash:comments>50</slash:comments> </item> <item><title>How To Dynamically Increase Memory Limits When Interfacing With WordPress Using XML-RPC (Windows Live Writer, Etc)</title><link>http://beerpla.net/2010/11/06/how-to-dynamically-increase-memory-limits-when-interfacing-with-wordpress-using-xml-rpc-windows-live-writer-etc/</link> <comments>http://beerpla.net/2010/11/06/how-to-dynamically-increase-memory-limits-when-interfacing-with-wordpress-using-xml-rpc-windows-live-writer-etc/#comments</comments> <pubDate>Sat, 06 Nov 2010 09:00:44 +0000</pubDate> <dc:creator>Artem Russakovskii</dc:creator> <category><![CDATA[Performance]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Tips]]></category> <category><![CDATA[Tutorials]]></category> <category><![CDATA[Wordpress]]></category> <category><![CDATA[apache]]></category> <category><![CDATA[error 500]]></category> <category><![CDATA[limit]]></category> <category><![CDATA[memory]]></category> <category><![CDATA[out of memory]]></category> <category><![CDATA[rpc]]></category> <category><![CDATA[server error]]></category> <category><![CDATA[web server]]></category> <category><![CDATA[Windows Live Writer]]></category> <category><![CDATA[WLW]]></category> <category><![CDATA[xml]]></category> <category><![CDATA[xml-rpc]]></category> <category><![CDATA[xmlrpc]]></category> <guid
isPermaLink="false">http://beerpla.net/2010/11/06/how-to-dynamically-increase-memory-limits-when-interfacing-with-wordpress-using-xml-rpc-windows-live-writer-etc/</guid> <description><![CDATA[<p>Today&#039;s snippet is tremendously helpful if you are using an XML-RPC WordPress interface to read and publish your articles and are running into <em><strong>500 Server Error</strong></em> issues due to running out of memory, manifesting themselves in something like this error message: <em><strong>&#34;Invalid Server Response &#8211; The response to the metaWeblog.newMediaObject method received from the weblog server was invalid&#34;</strong></em>.</p><p>For example, my regular PHP memory allocation is 32MB or so, but if I load up Windows Live Writer, my favorite publishing tool, and ask it to load 1000 of the latest blog posts, I will undoubtedly get a server error back.</p><p>One solution would be to increase the memory allocated to PHP to something higher, like 256MB, which is how I...<div
class=clear></div> <a
href="http://beerpla.net/2010/11/06/how-to-dynamically-increase-memory-limits-when-interfacing-with-wordpress-using-xml-rpc-windows-live-writer-etc/" class="read_more"><div
class=excerpt-end>Read the rest of this article &#187;</div></a></p>]]></description> <content:encoded><![CDATA[<p>Today&#039;s snippet is tremendously helpful if you are using an XML-RPC WordPress interface to read and publish your articles and are running into <em><strong>500 Server Error</strong></em> issues due to running out of memory, manifesting themselves in something like this error message: <em><strong>&quot;Invalid Server Response &#8211; The response to the metaWeblog.newMediaObject method received from the weblog server was invalid&quot;</strong></em>.</p><p>For example, my regular PHP memory allocation is 32MB or so, but if I load up Windows Live Writer, my favorite publishing tool, and ask it to load 1000 of the latest blog posts, I will undoubtedly get a server error back.</p><p>One solution would be to increase the memory allocated to PHP to something higher, like 256MB, which is how I used to get around the issue. I say &quot;get around&quot; because it&#039;s not a good solution &#8211; if someone finds a page that uses a lot of memory on your site, they could easily kill not only your web server but the whole machine due to swap death. Keeping a lower memory limit allows you to run your web server, such as Apache, with more children, thus serving more requests without getting overloaded.</p><p>So, I&#039;ve looked into the WordPress core and came up with what I think is a proper fix &#8211; dynamic memory limit tweaking when dealing with XML-RPC only. Here is the code &#8211; add it to your <em><strong>functions.php</strong></em> and you should be golden:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td
class="code"><pre>/**
* Dynamically increase allowed memory limit for XML-RPC only.
*
* @param array $methods
* @return array
*/
function my_xmlrpc_methods($methods) {
  ini_set('memory_limit', '256M');
  return $methods;
}
add_action('xmlrpc_methods', 'my_xmlrpc_methods');</pre></td></tr></table></div><p>The code is pretty self-explanatory: it hooks into a WordPress hook that fires only for XML-RPC requests and adjusts the memory limit on the fly. No more out of memory errors and I&#039;m able to load 1000 posts in Windows Live Writer without problems.</p><div
class="shr-bookmarks shr-bookmarks-expand"><ul
class="socials"><li
class="shr-twitter"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Dynamically+Increase+Memory+Limits+When+Interfacing+With+Wordpress+Using+XML-RPC+%28Windows+Live+Writer%2C+Etc%29&amp;link=http://beerpla.net/2010/11/06/how-to-dynamically-increase-memory-limits-when-interfacing-with-wordpress-using-xml-rpc-windows-live-writer-etc/&amp;notes=Today%27s%20snippet%20is%20tremendously%20helpful%20if%20you%20are%20using%20an%20XML-RPC%20Wordpress%20interface%20to%20read%20and%20publish%20your%20articles%20and%20are%20running%20into%20500%20Server%20Error%20issues%20due%20to%20running%20out%20of%20memory%2C%20manifesting%20themselves%20in%20something%20like%20this%20error%20message%3A%20%26quot%3BInvalid%20Server%20Response%20-%20The%20respon&amp;short_link=http://bit.ly/cOxNJ3&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a></li><li
class="shr-facebook"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Dynamically+Increase+Memory+Limits+When+Interfacing+With+Wordpress+Using+XML-RPC+%28Windows+Live+Writer%2C+Etc%29&amp;link=http://beerpla.net/2010/11/06/how-to-dynamically-increase-memory-limits-when-interfacing-with-wordpress-using-xml-rpc-windows-live-writer-etc/&amp;notes=Today%27s%20snippet%20is%20tremendously%20helpful%20if%20you%20are%20using%20an%20XML-RPC%20Wordpress%20interface%20to%20read%20and%20publish%20your%20articles%20and%20are%20running%20into%20500%20Server%20Error%20issues%20due%20to%20running%20out%20of%20memory%2C%20manifesting%20themselves%20in%20something%20like%20this%20error%20message%3A%20%26quot%3BInvalid%20Server%20Response%20-%20The%20respon&amp;short_link=http://bit.ly/cOxNJ3&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a></li><li
class="shr-googlebuzz"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Dynamically+Increase+Memory+Limits+When+Interfacing+With+Wordpress+Using+XML-RPC+%28Windows+Live+Writer%2C+Etc%29&amp;link=http://beerpla.net/2010/11/06/how-to-dynamically-increase-memory-limits-when-interfacing-with-wordpress-using-xml-rpc-windows-live-writer-etc/&amp;notes=Today%27s%20snippet%20is%20tremendously%20helpful%20if%20you%20are%20using%20an%20XML-RPC%20Wordpress%20interface%20to%20read%20and%20publish%20your%20articles%20and%20are%20running%20into%20500%20Server%20Error%20issues%20due%20to%20running%20out%20of%20memory%2C%20manifesting%20themselves%20in%20something%20like%20this%20error%20message%3A%20%26quot%3BInvalid%20Server%20Response%20-%20The%20respon&amp;short_link=http://bit.ly/cOxNJ3&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a></li><li
class="shr-reddit"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Dynamically+Increase+Memory+Limits+When+Interfacing+With+Wordpress+Using+XML-RPC+%28Windows+Live+Writer%2C+Etc%29&amp;link=http://beerpla.net/2010/11/06/how-to-dynamically-increase-memory-limits-when-interfacing-with-wordpress-using-xml-rpc-windows-live-writer-etc/&amp;notes=Today%27s%20snippet%20is%20tremendously%20helpful%20if%20you%20are%20using%20an%20XML-RPC%20Wordpress%20interface%20to%20read%20and%20publish%20your%20articles%20and%20are%20running%20into%20500%20Server%20Error%20issues%20due%20to%20running%20out%20of%20memory%2C%20manifesting%20themselves%20in%20something%20like%20this%20error%20message%3A%20%26quot%3BInvalid%20Server%20Response%20-%20The%20respon&amp;short_link=http://bit.ly/cOxNJ3&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a></li><li
class="shr-hackernews"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Dynamically+Increase+Memory+Limits+When+Interfacing+With+Wordpress+Using+XML-RPC+%28Windows+Live+Writer%2C+Etc%29&amp;link=http://beerpla.net/2010/11/06/how-to-dynamically-increase-memory-limits-when-interfacing-with-wordpress-using-xml-rpc-windows-live-writer-etc/&amp;notes=Today%27s%20snippet%20is%20tremendously%20helpful%20if%20you%20are%20using%20an%20XML-RPC%20Wordpress%20interface%20to%20read%20and%20publish%20your%20articles%20and%20are%20running%20into%20500%20Server%20Error%20issues%20due%20to%20running%20out%20of%20memory%2C%20manifesting%20themselves%20in%20something%20like%20this%20error%20message%3A%20%26quot%3BInvalid%20Server%20Response%20-%20The%20respon&amp;short_link=http://bit.ly/cOxNJ3&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a></li><li
class="shr-delicious"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Dynamically+Increase+Memory+Limits+When+Interfacing+With+Wordpress+Using+XML-RPC+%28Windows+Live+Writer%2C+Etc%29&amp;link=http://beerpla.net/2010/11/06/how-to-dynamically-increase-memory-limits-when-interfacing-with-wordpress-using-xml-rpc-windows-live-writer-etc/&amp;notes=Today%27s%20snippet%20is%20tremendously%20helpful%20if%20you%20are%20using%20an%20XML-RPC%20Wordpress%20interface%20to%20read%20and%20publish%20your%20articles%20and%20are%20running%20into%20500%20Server%20Error%20issues%20due%20to%20running%20out%20of%20memory%2C%20manifesting%20themselves%20in%20something%20like%20this%20error%20message%3A%20%26quot%3BInvalid%20Server%20Response%20-%20The%20respon&amp;short_link=http://bit.ly/cOxNJ3&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a></li><li
class="shr-stumbleupon"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Dynamically+Increase+Memory+Limits+When+Interfacing+With+Wordpress+Using+XML-RPC+%28Windows+Live+Writer%2C+Etc%29&amp;link=http://beerpla.net/2010/11/06/how-to-dynamically-increase-memory-limits-when-interfacing-with-wordpress-using-xml-rpc-windows-live-writer-etc/&amp;notes=Today%27s%20snippet%20is%20tremendously%20helpful%20if%20you%20are%20using%20an%20XML-RPC%20Wordpress%20interface%20to%20read%20and%20publish%20your%20articles%20and%20are%20running%20into%20500%20Server%20Error%20issues%20due%20to%20running%20out%20of%20memory%2C%20manifesting%20themselves%20in%20something%20like%20this%20error%20message%3A%20%26quot%3BInvalid%20Server%20Response%20-%20The%20respon&amp;short_link=http://bit.ly/cOxNJ3&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a></li><li
class="shr-mail"> <a
href="http://www.shareaholic.com/api/share/?title=How%20To%20Dynamically%20Increase%20Memory%20Limits%20When%20Interfacing%20With%20Wordpress%20Using%20XML-RPC%20%28Windows%20Live%20Writer%2C%20Etc%29&amp;link=http://beerpla.net/2010/11/06/how-to-dynamically-increase-memory-limits-when-interfacing-with-wordpress-using-xml-rpc-windows-live-writer-etc/&amp;notes=Today%27s%20snippet%20is%20tremendously%20helpful%20if%20you%20are%20using%20an%20XML-RPC%20Wordpress%20interface%20to%20read%20and%20publish%20your%20articles%20and%20are%20running%20into%20500%20Server%20Error%20issues%20due%20to%20running%20out%20of%20memory%2C%20manifesting%20themselves%20in%20something%20like%20this%20error%20message%3A%20%26quot%3BInvalid%20Server%20Response%20-%20The%20respon&amp;short_link=http://bit.ly/cOxNJ3&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=201&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a></li></ul><div
style="clear: both;"></div></div> Similar Posts:<ul><li><a
href="http://beerpla.net/2011/11/16/how-to-disableblock-external-http-requests-in-wordpress/" rel="bookmark" title="November 16, 2011">How To: Disable/Block External HTTP Requests In WordPress</a></li><li><a
href="http://beerpla.net/2010/01/15/follow-up-to-loading-css-and-js-conditionally/" rel="bookmark" title="January 15, 2010">Follow-up To Loading CSS And JS Conditionally</a></li><li><a
href="http://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/" rel="bookmark" title="January 13, 2010">[WordPress Plugin Development] How To Include CSS and JavaScript Conditionally And Only When Needed By The Posts</a></li><li><a
href="http://beerpla.net/2010/10/15/how-to-add-shortcode-support-to-wordpress-comments-and-sidebars/" rel="bookmark" title="October 15, 2010">How To Add Shortcode Support To WordPress Comments And Sidebar Widgets</a></li><li><a
href="http://beerpla.net/2009/09/21/solr-how-to-fix-java-io-ioexception-directory-foo-exists-and-is-a-directory-but-cannot-be-listed-list-returned-null/" rel="bookmark" title="September 21, 2009">[Solr] How To Fix java.io.IOException: directory FOO exists and is a directory, but cannot be listed: list() returned null</a></li></ul><p><a
class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbeerpla.net%2F2010%2F11%2F06%2Fhow-to-dynamically-increase-memory-limits-when-interfacing-with-wordpress-using-xml-rpc-windows-live-writer-etc%2F&amp;title=How%20To%20Dynamically%20Increase%20Memory%20Limits%20When%20Interfacing%20With%20WordPress%20Using%20XML-RPC%20%28Windows%20Live%20Writer%2C%20Etc%29" id="wpa2a_4"><img
src="http://beerpla.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded> <wfw:commentRss>http://beerpla.net/2010/11/06/how-to-dynamically-increase-memory-limits-when-interfacing-with-wordpress-using-xml-rpc-windows-live-writer-etc/feed/</wfw:commentRss> <slash:comments>8</slash:comments> </item> <item><title>How To Add Shortcode Support To WordPress Comments And Sidebar Widgets</title><link>http://beerpla.net/2010/10/15/how-to-add-shortcode-support-to-wordpress-comments-and-sidebars/</link> <comments>http://beerpla.net/2010/10/15/how-to-add-shortcode-support-to-wordpress-comments-and-sidebars/#comments</comments> <pubDate>Sat, 16 Oct 2010 03:20:26 +0000</pubDate> <dc:creator>Artem Russakovskii</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Tips]]></category> <category><![CDATA[Tutorials]]></category> <category><![CDATA[Wordpress]]></category> <category><![CDATA[action]]></category> <category><![CDATA[add]]></category> <category><![CDATA[comment]]></category> <category><![CDATA[filter]]></category> <category><![CDATA[shortcode]]></category> <category><![CDATA[sidebar]]></category> <category><![CDATA[support]]></category> <category><![CDATA[trigger]]></category> <guid
isPermaLink="false">http://beerpla.net/2010/10/15/how-to-add-shortcode-support-to-wordpress-comments-and-sidebars/</guid> <description><![CDATA[<p>WordPress has a great way of letting you use simple text tags called shortcodes to provide a whole bunch of functionality, including custom PHP code. In this article, I&#039;m assuming that you already know what shortcodes do and how they operate (if you don&#039;t, head over here: <a
href="http://codex.wordpress.org/Shortcode_API">Shortcode_API</a>).</p><p>One glaring omission in the way shortcodes are set up by default is that they only get triggered in the content of your post, leaving the sidebar and comments out. I&#039;m sure this is done for security, so that your readers can&#039;t screw something up by posting shortcodes they&#039;re not supposed to &#8211; after all, shortcodes are PHP snippets on the backend.</p><p>However, let&#039;s assume you really know what you&#039;re doing...<div
class=clear></div> <a
href="http://beerpla.net/2010/10/15/how-to-add-shortcode-support-to-wordpress-comments-and-sidebars/" class="read_more"><div
class=excerpt-end>Read the rest of this article &#187;</div></a></p>]]></description> <content:encoded><![CDATA[<p>WordPress has a great way of letting you use simple text tags called shortcodes to provide a whole bunch of functionality, including custom PHP code. In this article, I&#039;m assuming that you already know what shortcodes do and how they operate (if you don&#039;t, head over here: <a
href="http://codex.wordpress.org/Shortcode_API">Shortcode_API</a>).</p><p>One glaring omission in the way shortcodes are set up by default is that they only get triggered in the content of your post, leaving the sidebar and comments out. I&#039;m sure this is done for security, so that your readers can&#039;t screw something up by posting shortcodes they&#039;re not supposed to &#8211; after all, shortcodes are PHP snippets on the backend.</p><p>However, let&#039;s assume you really know what you&#039;re doing and you want, for example, to allow certain shortcodes in the comments and all shortcodes in the sidebar. It&#039;s your site and you should be able to do whatever you want with it. For instance, I wanted to provide a way to include QR codes using a <a
href="http://www.androidpolice.com/2010/09/15/new-androidpolice-com-feature-instant-qr-magic-hover-on-any-link-in-any-post-to-get-the-corresponding-qr-code-poll/">[qr] shortcode syntax that I&#039;d written</a> both in the sidebar and in the comments, except in the comments that was the only shortcode I wanted to allow my readers to use.</p><p>Since these cases can get complicated, let&#039;s start simple and then progressively get deeper.</p><h2>Allow all shortcodes in the sidebar</h2><p>Assuming you want to enable shortcodes in the <a
href="http://wordpress.org/extend/plugins/php-code-widget/">PHP Code Widget</a> widgets (I believe this is the most common way to add PHP support to the sidebar), use this code:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
</pre></td><td
class="code"><pre>add_filter('widget_execphp', 'do_shortcode');</pre></td></tr></table></div><p>If you have some other widgets in mind, you have to find out the right filter and use it just like above.</p><h2>Allow only whitelisted shortcodes in the comments</h2><p>Since I don&#039;t want <em>all</em> shortcodes to fire here, things get slightly trickier.</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td
class="code"><pre>function init_common_shortcodes() {
  add_shortcode('qr', 'my_shortcode_qr');
}
&nbsp;
function init_comment_shortcodes() {
  remove_all_shortcodes();
  init_common_shortcodes();
  add_filter('comment_text', 'do_shortcode');
}
&nbsp;
init_common_shortcodes();
add_filter('comments_template', 'init_comment_shortcodes');</pre></td></tr></table></div><p>The code above will remove all shortcodes when it gets to comments and reinitialize only the whitelisted one called &quot;<strong>[</strong>qr<strong>]</strong>&quot;, which is exactly what I wanted.</p><p><div
class="note"><div
class="noteclassic"><strong>Note</strong>: If your code somehow uses shortcodes after the comments (such as a sidebar or a custom post query), you will need the trick in the next section.</div></div></p><h2>Allow all shortcodes in the sidebar AND only whitelisted ones in the comments</h2><p>At this point, things get slightly tricky because if I combine the previous 2 solutions into 1, by the time WordPress gets to the sidebar, it&#039;ll be left without any shortcodes at all &#8211; they&#039;ve been removed by the code dealing with comments. Therefore, I need to save the shortcodes before dealing with comments and then restore them after the comments and before the sidebar.</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
</pre></td><td
class="code"><pre>function my_remove_all_shortcodes() {
  global $shortcode_tags;
  global $temp_shortcode_tags;
  $temp_shortcode_tags = $shortcode_tags;
  remove_all_shortcodes();
}
&nbsp;
function my_restore_all_shortcodes() {
  global $shortcode_tags;
  global $temp_shortcode_tags;
  if(!empty($temp_shortcode_tags)) {
    $shortcode_tags = $temp_shortcode_tags;
  }
}
&nbsp;
function init_common_shortcodes() {
  add_shortcode('qr', 'my_shortcode_qr');
}
&nbsp;
function init_comment_shortcodes() {
  my_remove_all_shortcodes();
  init_common_shortcodes();
  add_filter('comment_text', 'do_shortcode');
}
&nbsp;
add_filter('comments_template', 'init_comment_shortcodes');
add_filter('dynamic_sidebar', 'my_restore_all_shortcodes');
add_filter('widget_execphp', 'do_shortcode');
init_common_shortcodes();</pre></td></tr></table></div><p>Here is what the code does:</p><ol><li>Initialize custom shortcodes that I want to add all over the place.</li><li>When WP gets to the comment block, it removes all shortcodes (again, for security) and re-initializes only the ones I want, but this time remembers them so that they can be restored later.</li><li>After the comments, when WP gets to the dynamic sidebar, it restores all the shortcodes and applies them to each <a
href="http://wordpress.org/extend/plugins/php-code-widget/">PHP Code Widget</a>.</li></ol><p>And there you have it. Of course, the code may need tweaking for your own scenario but the ideas are all there. If you spot an error or know of an easier/better way, please let me know.</p><div
class="shr-bookmarks shr-bookmarks-expand"><ul
class="socials"><li
class="shr-twitter"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Add+Shortcode+Support+To+Wordpress+Comments+And+Sidebar+Widgets&amp;link=http://beerpla.net/2010/10/15/how-to-add-shortcode-support-to-wordpress-comments-and-sidebars/&amp;notes=Wordpress%20has%20a%20great%20way%20of%20letting%20you%20use%20simple%20text%20tags%20called%20shortcodes%20to%20provide%20a%20whole%20bunch%20of%20functionality%2C%20including%20custom%20PHP%20code.%20In%20this%20article%2C%20I%27m%20assuming%20that%20you%20already%20know%20what%20shortcodes%20do%20and%20how%20they%20operate%20%28if%20you%20don%27t%2C%20head%20over%20here%3A%20Shortcode_API%29.%0D%0AOne%20glarin&amp;short_link=http://bit.ly/am7MRr&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a></li><li
class="shr-facebook"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Add+Shortcode+Support+To+Wordpress+Comments+And+Sidebar+Widgets&amp;link=http://beerpla.net/2010/10/15/how-to-add-shortcode-support-to-wordpress-comments-and-sidebars/&amp;notes=Wordpress%20has%20a%20great%20way%20of%20letting%20you%20use%20simple%20text%20tags%20called%20shortcodes%20to%20provide%20a%20whole%20bunch%20of%20functionality%2C%20including%20custom%20PHP%20code.%20In%20this%20article%2C%20I%27m%20assuming%20that%20you%20already%20know%20what%20shortcodes%20do%20and%20how%20they%20operate%20%28if%20you%20don%27t%2C%20head%20over%20here%3A%20Shortcode_API%29.%0D%0AOne%20glarin&amp;short_link=http://bit.ly/am7MRr&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a></li><li
class="shr-googlebuzz"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Add+Shortcode+Support+To+Wordpress+Comments+And+Sidebar+Widgets&amp;link=http://beerpla.net/2010/10/15/how-to-add-shortcode-support-to-wordpress-comments-and-sidebars/&amp;notes=Wordpress%20has%20a%20great%20way%20of%20letting%20you%20use%20simple%20text%20tags%20called%20shortcodes%20to%20provide%20a%20whole%20bunch%20of%20functionality%2C%20including%20custom%20PHP%20code.%20In%20this%20article%2C%20I%27m%20assuming%20that%20you%20already%20know%20what%20shortcodes%20do%20and%20how%20they%20operate%20%28if%20you%20don%27t%2C%20head%20over%20here%3A%20Shortcode_API%29.%0D%0AOne%20glarin&amp;short_link=http://bit.ly/am7MRr&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a></li><li
class="shr-reddit"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Add+Shortcode+Support+To+Wordpress+Comments+And+Sidebar+Widgets&amp;link=http://beerpla.net/2010/10/15/how-to-add-shortcode-support-to-wordpress-comments-and-sidebars/&amp;notes=Wordpress%20has%20a%20great%20way%20of%20letting%20you%20use%20simple%20text%20tags%20called%20shortcodes%20to%20provide%20a%20whole%20bunch%20of%20functionality%2C%20including%20custom%20PHP%20code.%20In%20this%20article%2C%20I%27m%20assuming%20that%20you%20already%20know%20what%20shortcodes%20do%20and%20how%20they%20operate%20%28if%20you%20don%27t%2C%20head%20over%20here%3A%20Shortcode_API%29.%0D%0AOne%20glarin&amp;short_link=http://bit.ly/am7MRr&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a></li><li
class="shr-hackernews"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Add+Shortcode+Support+To+Wordpress+Comments+And+Sidebar+Widgets&amp;link=http://beerpla.net/2010/10/15/how-to-add-shortcode-support-to-wordpress-comments-and-sidebars/&amp;notes=Wordpress%20has%20a%20great%20way%20of%20letting%20you%20use%20simple%20text%20tags%20called%20shortcodes%20to%20provide%20a%20whole%20bunch%20of%20functionality%2C%20including%20custom%20PHP%20code.%20In%20this%20article%2C%20I%27m%20assuming%20that%20you%20already%20know%20what%20shortcodes%20do%20and%20how%20they%20operate%20%28if%20you%20don%27t%2C%20head%20over%20here%3A%20Shortcode_API%29.%0D%0AOne%20glarin&amp;short_link=http://bit.ly/am7MRr&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a></li><li
class="shr-delicious"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Add+Shortcode+Support+To+Wordpress+Comments+And+Sidebar+Widgets&amp;link=http://beerpla.net/2010/10/15/how-to-add-shortcode-support-to-wordpress-comments-and-sidebars/&amp;notes=Wordpress%20has%20a%20great%20way%20of%20letting%20you%20use%20simple%20text%20tags%20called%20shortcodes%20to%20provide%20a%20whole%20bunch%20of%20functionality%2C%20including%20custom%20PHP%20code.%20In%20this%20article%2C%20I%27m%20assuming%20that%20you%20already%20know%20what%20shortcodes%20do%20and%20how%20they%20operate%20%28if%20you%20don%27t%2C%20head%20over%20here%3A%20Shortcode_API%29.%0D%0AOne%20glarin&amp;short_link=http://bit.ly/am7MRr&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a></li><li
class="shr-stumbleupon"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Add+Shortcode+Support+To+Wordpress+Comments+And+Sidebar+Widgets&amp;link=http://beerpla.net/2010/10/15/how-to-add-shortcode-support-to-wordpress-comments-and-sidebars/&amp;notes=Wordpress%20has%20a%20great%20way%20of%20letting%20you%20use%20simple%20text%20tags%20called%20shortcodes%20to%20provide%20a%20whole%20bunch%20of%20functionality%2C%20including%20custom%20PHP%20code.%20In%20this%20article%2C%20I%27m%20assuming%20that%20you%20already%20know%20what%20shortcodes%20do%20and%20how%20they%20operate%20%28if%20you%20don%27t%2C%20head%20over%20here%3A%20Shortcode_API%29.%0D%0AOne%20glarin&amp;short_link=http://bit.ly/am7MRr&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a></li><li
class="shr-mail"> <a
href="http://www.shareaholic.com/api/share/?title=How%20To%20Add%20Shortcode%20Support%20To%20Wordpress%20Comments%20And%20Sidebar%20Widgets&amp;link=http://beerpla.net/2010/10/15/how-to-add-shortcode-support-to-wordpress-comments-and-sidebars/&amp;notes=Wordpress%20has%20a%20great%20way%20of%20letting%20you%20use%20simple%20text%20tags%20called%20shortcodes%20to%20provide%20a%20whole%20bunch%20of%20functionality%2C%20including%20custom%20PHP%20code.%20In%20this%20article%2C%20I%27m%20assuming%20that%20you%20already%20know%20what%20shortcodes%20do%20and%20how%20they%20operate%20%28if%20you%20don%27t%2C%20head%20over%20here%3A%20Shortcode_API%29.%0D%0AOne%20glarin&amp;short_link=http://bit.ly/am7MRr&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=201&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a></li></ul><div
style="clear: both;"></div></div> Similar Posts:<ul><li><a
href="http://beerpla.net/2010/01/31/how-to-remove-inline-hardcoded-recent-comments-sidebar-widget-style-from-your-wordpress-theme/" rel="bookmark" title="January 31, 2010">How To Remove Inline Hardcoded Recent Comments Sidebar Widget Style From Your WordPress Theme</a></li><li><a
href="http://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/" rel="bookmark" title="January 13, 2010">[WordPress Plugin Development] How To Include CSS and JavaScript Conditionally And Only When Needed By The Posts</a></li><li><a
href="http://beerpla.net/2010/03/21/how-to-diagnose-and-fix-incorrect-post-comment-counts-in-wordpress/" rel="bookmark" title="March 21, 2010">How To Diagnose And Fix Incorrect Post Comment Counts In WordPress</a></li><li><a
href="http://beerpla.net/2011/11/16/how-to-disableblock-external-http-requests-in-wordpress/" rel="bookmark" title="November 16, 2011">How To: Disable/Block External HTTP Requests In WordPress</a></li><li><a
href="http://beerpla.net/2008/04/15/mysql-conference-liveblogging-disaster-is-inevitable-are-you-prepared-tuesday-425pm/" rel="bookmark" title="April 15, 2008">MySQL Conference Liveblogging: Disaster Is Inevitable &#8211; Are You Prepared? (Tuesday 4:25PM)</a></li></ul><p><a
class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbeerpla.net%2F2010%2F10%2F15%2Fhow-to-add-shortcode-support-to-wordpress-comments-and-sidebars%2F&amp;title=How%20To%20Add%20Shortcode%20Support%20To%20WordPress%20Comments%20And%20Sidebar%20Widgets" id="wpa2a_6"><img
src="http://beerpla.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded> <wfw:commentRss>http://beerpla.net/2010/10/15/how-to-add-shortcode-support-to-wordpress-comments-and-sidebars/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>[WordPress Plugin Development] How To Include CSS and JavaScript Conditionally And Only When Needed By The Posts</title><link>http://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/</link> <comments>http://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/#comments</comments> <pubDate>Wed, 13 Jan 2010 17:15:00 +0000</pubDate> <dc:creator>Artem Russakovskii</dc:creator> <category><![CDATA[Tips]]></category> <category><![CDATA[Tutorials]]></category> <category><![CDATA[Wordpress]]></category> <category><![CDATA[action]]></category> <category><![CDATA[admin_print_scripts]]></category> <category><![CDATA[admin_print_styles]]></category> <category><![CDATA[conditional]]></category> <category><![CDATA[CSS]]></category> <category><![CDATA[enqueue]]></category> <category><![CDATA[hook]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[js]]></category> <category><![CDATA[load]]></category> <category><![CDATA[optimization]]></category> <category><![CDATA[Performance]]></category> <category><![CDATA[script]]></category> <category><![CDATA[style]]></category> <category><![CDATA[time]]></category> <category><![CDATA[wp_enqueue_script]]></category> <category><![CDATA[wp_enqueue_style]]></category> <category><![CDATA[wp_print_scripts]]></category> <category><![CDATA[wp_print_styles]]></category> <guid
isPermaLink="false">http://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/</guid> <description><![CDATA[<h2>Introduction</h2><p><img
style="margin: 0px 10px 10px 0px; display: inline" title="wordpress logo" alt="wordpress logo" align="left" src="http://beerpla.net/wp-content/uploads/WordpressPluginWritersTakeNoteHowToInclu_863C/image_3.png" width="150" height="150" /> In this tutorial, I am going to introduce a WordPress technique that I believe was unpublished until I <a
href="http://wordpress.org/support/topic/350167" rel="nofollow">raised the question</a> a few days ago on the WordPress forums.</p><p>In short, the problem I was trying to solve was <strong><em>plugins unnecessarily loading their JavaScript and CSS on *every* page of the blog, even when doing so would achieve absolutely nothing and the plugin wouldn&#039;t do any work</em></strong>.</p><p><div
class="note"><div
class="notetip"><strong>Update #1:</strong> I have posted a <a
href="http://beerpla.net/2010/01/15/follow-up-to-loading-css-and-js-conditionally/">follow-up</a> in response to some comments received around the web.</div></div></p><p><div
class="note"><div
class="notetip"><strong>Update #2:</strong> There is a solution that can be considered a compromise as it works well for loading JavaScript but doesn&#039;t handle CSS.</div></div></p><p>I briefly mentioned this approach here but but Scribu...<div
class=clear></div> <a
href="http://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/" class="read_more"><div
class=excerpt-end>Read the rest of this article &#187;</div></a></p>]]></description> <content:encoded><![CDATA[<h2>Introduction</h2><p><img
style="margin: 0px 10px 10px 0px; display: inline" title="wordpress logo" alt="wordpress logo" align="left" src="http://beerpla.net/wp-content/uploads/WordpressPluginWritersTakeNoteHowToInclu_863C/image_3.png" width="150" height="150" /> In this tutorial, I am going to introduce a WordPress technique that I believe was unpublished until I <a
href="http://wordpress.org/support/topic/350167" rel="nofollow">raised the question</a> a few days ago on the WordPress forums.</p><p>In short, the problem I was trying to solve was <strong><em>plugins unnecessarily loading their JavaScript and CSS on *every* page of the blog, even when doing so would achieve absolutely nothing and the plugin wouldn&#039;t do any work</em></strong>.</p><p><div
class="note"><div
class="notetip"><strong>Update #1:</strong> I have posted a <a
href="http://beerpla.net/2010/01/15/follow-up-to-loading-css-and-js-conditionally/">follow-up</a> in response to some comments received around the web.</div></div></p><p><div
class="note"><div
class="notetip"><strong>Update #2:</strong> There is a solution that can be considered a compromise as it works well for loading JavaScript but doesn&#039;t handle CSS.</p><p>I briefly mentioned this approach here but but Scribu decided to expand on it by providing a nice Jedi-themed tutorial. It is available <a
href="http://scribu.net/wordpress/optimal-script-loading.html" rel="nofollow">here</a>.</div></div></p><p>Let me explain using this example:</p><ul><li>a code formatter plugin only does something useful when it sees a [code] shortcode in any post on the page.</li><li>most of your posts do not contain the [code] shortcode as you don't include code snippets that often or you only started using this particular plugin recently.</li><li>the plugin, however, loads the CSS and JS (which are most likely <a
href="http://qbnz.com/highlighter/" rel="nofollow">GeSHi</a> and take up loads of space) on every page.</li><li>these CSS and JS do absolutely nothing on most page loads.</li><li>bandwidth is wasted, extra DNS and HTTP requests are processed, the browser is slowed down, and for what? For no good reason, other than the plugin author didn't know how to achieve this conditional loading.</li></ul><p>If you think about it, there are many plugins that only do something once in a blue moon. Table of contents, text manipulators, galleries, sliders, etc, etc. If only they loaded their frontend code strictly when necessary, most page loads would suddenly become much lighter.</p><p>So what can we do to solve this? Let's look at a few techniques.</p><h2>Loading CSS And JS In Place?</h2><p>Here's one, albeit pretty bad, solution - only print the CSS and JS includes if and when you determine somewhere in the middle of loading the posts that the scripts and styles are indeed needed, then set a flag to avoid printing them again. In our example, that would be when the plugin detects the [code] shortcode.</p><p>This, however, is a mediocre solution because, while it's not a bad idea to load Javascript in the footer, <a
href="http://developer.yahoo.com/performance/rules.html" rel="nofollow">CSS should be loaded in the header</a>, otherwise the page might look unformatted until the CSS is reached.</p><p>Additionally, it's not the cleanest and most robust solution because you shouldn't be writing &lt;script&gt; and &lt;style&gt; tags manually but rather using <a
href="http://codex.wordpress.org/Function_Reference/wp_enqueue_style" rel="nofollow">wp_enqueue_style()</a> and <a
href="http://codex.wordpress.org/Function_Reference/wp_enqueue_script" rel="nofollow">wp_enqueue_script()</a> functions.</p><h2>What's This About wp_enqueue_FOO?</h2><p>Now, you might say: &quot;What's this about <strong><em>wp_enqueue_style()</em></strong>, <strong><em>wp_enqueue_script()</em></strong>, and then hooking into <strong><em>'wp_print_scripts'</em></strong>, <strong><em>'wp_print_styles'</em></strong>, <strong><em>'admin_print_scripts'</em></strong>, and <strong><em>'admin_print_styles'</em></strong> hooks&quot;? You know about these, right? Right??</p><p>Allow me to explain this, in my opinion, greatest and most underused WordPress paradigm in a short refresher:</p><p><div
class="note"><div
class="noteclassic">WordPress has a great system of queuing up the scripts and styles your script will need to use and printing them all in one go, rather than hooking into wp_head and printing &lt;style&gt; and &lt;script&gt; tags manually.</p><p>This queuing system achieves 2 main goals:</p><ul><li>the <strong><em>same scripts are not loaded multiple times</em></strong>, such as <a
href="http://jquery.com/" rel="nofollow">jQuery</a>, <a
href="http://script.aculo.us/" rel="nofollow">scriptaculous</a>, or any other custom script or style your plugins may share between each other or even other plugins.</li><li>it introduces support for establishing <strong><em>dependencies</em></strong>. You can specify that your script or style depends on another script or style, and WordPress will take care of loading them in the right order. Guaranteed.</li><li>oh what the hell, here's a 3rd one: <strong><em>elegance</em></strong>.</li></ul><p>Here is the way this usually works:</p><ul><li>in the beginning of your plugin you attach to <strong><em>wp_print_scripts</em></strong> and/or <strong><em>wp_print_styles</em></strong> hooks. For example:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
</pre></td><td
class="code"><pre>add_action( 'wp_print_scripts', 'enqueue_my_scripts' );
add_action( 'wp_print_styles', 'enqueue_my_styles' );</pre></td></tr></table></div><p>What this will do is call the functions in the 2nd parameter when it's time to execute any functions associated with the hooks in the 1st parameter. It is the main principle behind the WordPress plugin architecture.</li><li>looking at the script example, in the <strong><em>enqueue_my_scripts()</em></strong> function, you can do something like:<div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
</pre></td><td
class="code"><pre>wp_enqueue_script( 'my_awesome_script', '/script.js', array( 'jquery' ));</pre></td></tr></table></div><p>which would queue up your script to be printed later but only after jQuery.</p><p>If you or some other plugin calls <strong><em>wp_enqueue_script()</em></strong> with the same first parameter (unique handle), it will just be ignored, rather than printed to the page twice.</li><li>styles are exactly the same, except you use <strong><em>wp_enqueue_style()</em></strong></li></ul><p>There is a variation of this functionality for the admin styles and scripts - all you have to do is change the hooks to <strong><em>admin_print_styles</em></strong> and <strong><em>admin_print_scripts</em></strong>. Ozh made a nice post on this topic <a
href="http://planetozh.com/blog/2008/04/how-to-load-javascript-with-your-wordpress-plugin/" rel="nofollow">here</a> - check it out.</p><p></div></div></p><h2>Enqueuing Alone Is Not Enough</h2><p>Enqueuing is great for loading your JS and CSS but using it alone doesn't achieve the conditional behavior that we are looking for here.</p><p>This is a classic case of Chicken or the Egg, because WordPress makes only one pass through all of the content.</p><p>You see, since the header needs to be printed before the content, <strong><em>wp_print_scripts</em></strong> and <strong><em>wp_print_styles</em></strong> hooks are triggered before you even get to the posts. If you enqueue a script or style from within the 'the_content' hook, for example, the queued up scripts and styles will never get printed. It's too late to print them then anyway, as you're already in the middle of printing the posts.</p><h2>The Solution</h2><p>What we need to do is take a step back, before even printing the header, and then peek ahead.</p><p>Sure, this adds an extra pass over some data, but since no filters are applied during this process and if you avoid regular expressions (using stripos(), for example), this extra pass should be quite negligible.</p><p><div
class="note"><div
class="notewarning">A word of warning though: I'd rather see false positives (enqueuing when it's not needed) than false negatives (miss enqueuing when it's needed), so please do your matching wisely and test well.</div></div></p><p>The upside, however, can be potentially very substantial.</p><p>Credit goes to <a
href="http://twitter.com/white_shadow" rel="nofollow">@white_shadow</a> for the idea.</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td
class="code"><pre>add_filter('the_posts', 'conditionally_add_scripts_and_styles'); // the_posts gets triggered before wp_head
function conditionally_add_scripts_and_styles($posts){
	if (empty($posts)) return $posts;
&nbsp;
	$shortcode_found = false; // use this flag to see if styles and scripts need to be enqueued
	foreach ($posts as $post) {
		if (stripos($post-&gt;post_content, '[code]') !== false) {
			$shortcode_found = true; // bingo!
			break;
		}
	}
&nbsp;
	if ($shortcode_found) {
		// enqueue here
		wp_enqueue_style('my-style', '/style.css');
		wp_enqueue_script('my-script', '/script.js');
	}
&nbsp;
	return $posts;
}</pre></td></tr></table></div><p>This simple function fires before the header gets printed, as it's attached to the 'the_posts' hook. However, this time it has full access to the posts' content.</p><p>I have tested this method and it works really well - if you have heavy scripts in your plugin, please do us, users, a favor and incorporate this logic into it.</p><h2>Conclusion</h2><p>In this tutorial, you have seen a method of loading scripts and styles for you plugin conditionally. This technique allows for less bloated pages and faster page loads.</p><p>Plugin developers, what is your take on this solution? Do you use another method? Please share in the comments.</p><div
class='post_blob_1'>Our <a
href="http://www.test-king.com/exams/HP0-D07.htm">HP0-D07</a> study guides will help you to pass your <a
href="http://www.test-king.com/exams/642-436.htm">642-436</a> and <a
href="http://www.test-king.com/exams/640-816.htm">640-816</a> exam on first attempt guaranteed.</div><div
class="shr-bookmarks shr-bookmarks-expand"><ul
class="socials"><li
class="shr-twitter"> <a
href="http://www.shareaholic.com/api/share/?title=%5BWordpress+Plugin+Development%5D+How+To+Include+CSS+and+JavaScript+Conditionally+And+Only+When+Needed+By+The+Posts&amp;link=http://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/&amp;notes=Introduction%0D%0A%20In%20this%20tutorial%2C%20I%20am%20going%20to%20introduce%20a%20Wordpress%20technique%20that%20I%20believe%20was%20unpublished%20until%20I%20raised%20the%20question%20a%20few%20days%20ago%20on%20the%20Wordpress%20forums.%0D%0AIn%20short%2C%20the%20problem%20I%20was%20trying%20to%20solve%20was%20plugins%20unnecessarily%20loading%20their%20JavaScript%20and%20CSS%20on%20%2Aevery%2A%20page%20of&amp;short_link=http://bit.ly/aH8tGB&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a></li><li
class="shr-facebook"> <a
href="http://www.shareaholic.com/api/share/?title=%5BWordpress+Plugin+Development%5D+How+To+Include+CSS+and+JavaScript+Conditionally+And+Only+When+Needed+By+The+Posts&amp;link=http://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/&amp;notes=Introduction%0D%0A%20In%20this%20tutorial%2C%20I%20am%20going%20to%20introduce%20a%20Wordpress%20technique%20that%20I%20believe%20was%20unpublished%20until%20I%20raised%20the%20question%20a%20few%20days%20ago%20on%20the%20Wordpress%20forums.%0D%0AIn%20short%2C%20the%20problem%20I%20was%20trying%20to%20solve%20was%20plugins%20unnecessarily%20loading%20their%20JavaScript%20and%20CSS%20on%20%2Aevery%2A%20page%20of&amp;short_link=http://bit.ly/aH8tGB&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a></li><li
class="shr-googlebuzz"> <a
href="http://www.shareaholic.com/api/share/?title=%5BWordpress+Plugin+Development%5D+How+To+Include+CSS+and+JavaScript+Conditionally+And+Only+When+Needed+By+The+Posts&amp;link=http://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/&amp;notes=Introduction%0D%0A%20In%20this%20tutorial%2C%20I%20am%20going%20to%20introduce%20a%20Wordpress%20technique%20that%20I%20believe%20was%20unpublished%20until%20I%20raised%20the%20question%20a%20few%20days%20ago%20on%20the%20Wordpress%20forums.%0D%0AIn%20short%2C%20the%20problem%20I%20was%20trying%20to%20solve%20was%20plugins%20unnecessarily%20loading%20their%20JavaScript%20and%20CSS%20on%20%2Aevery%2A%20page%20of&amp;short_link=http://bit.ly/aH8tGB&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a></li><li
class="shr-reddit"> <a
href="http://www.shareaholic.com/api/share/?title=%5BWordpress+Plugin+Development%5D+How+To+Include+CSS+and+JavaScript+Conditionally+And+Only+When+Needed+By+The+Posts&amp;link=http://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/&amp;notes=Introduction%0D%0A%20In%20this%20tutorial%2C%20I%20am%20going%20to%20introduce%20a%20Wordpress%20technique%20that%20I%20believe%20was%20unpublished%20until%20I%20raised%20the%20question%20a%20few%20days%20ago%20on%20the%20Wordpress%20forums.%0D%0AIn%20short%2C%20the%20problem%20I%20was%20trying%20to%20solve%20was%20plugins%20unnecessarily%20loading%20their%20JavaScript%20and%20CSS%20on%20%2Aevery%2A%20page%20of&amp;short_link=http://bit.ly/aH8tGB&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a></li><li
class="shr-hackernews"> <a
href="http://www.shareaholic.com/api/share/?title=%5BWordpress+Plugin+Development%5D+How+To+Include+CSS+and+JavaScript+Conditionally+And+Only+When+Needed+By+The+Posts&amp;link=http://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/&amp;notes=Introduction%0D%0A%20In%20this%20tutorial%2C%20I%20am%20going%20to%20introduce%20a%20Wordpress%20technique%20that%20I%20believe%20was%20unpublished%20until%20I%20raised%20the%20question%20a%20few%20days%20ago%20on%20the%20Wordpress%20forums.%0D%0AIn%20short%2C%20the%20problem%20I%20was%20trying%20to%20solve%20was%20plugins%20unnecessarily%20loading%20their%20JavaScript%20and%20CSS%20on%20%2Aevery%2A%20page%20of&amp;short_link=http://bit.ly/aH8tGB&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a></li><li
class="shr-delicious"> <a
href="http://www.shareaholic.com/api/share/?title=%5BWordpress+Plugin+Development%5D+How+To+Include+CSS+and+JavaScript+Conditionally+And+Only+When+Needed+By+The+Posts&amp;link=http://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/&amp;notes=Introduction%0D%0A%20In%20this%20tutorial%2C%20I%20am%20going%20to%20introduce%20a%20Wordpress%20technique%20that%20I%20believe%20was%20unpublished%20until%20I%20raised%20the%20question%20a%20few%20days%20ago%20on%20the%20Wordpress%20forums.%0D%0AIn%20short%2C%20the%20problem%20I%20was%20trying%20to%20solve%20was%20plugins%20unnecessarily%20loading%20their%20JavaScript%20and%20CSS%20on%20%2Aevery%2A%20page%20of&amp;short_link=http://bit.ly/aH8tGB&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a></li><li
class="shr-stumbleupon"> <a
href="http://www.shareaholic.com/api/share/?title=%5BWordpress+Plugin+Development%5D+How+To+Include+CSS+and+JavaScript+Conditionally+And+Only+When+Needed+By+The+Posts&amp;link=http://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/&amp;notes=Introduction%0D%0A%20In%20this%20tutorial%2C%20I%20am%20going%20to%20introduce%20a%20Wordpress%20technique%20that%20I%20believe%20was%20unpublished%20until%20I%20raised%20the%20question%20a%20few%20days%20ago%20on%20the%20Wordpress%20forums.%0D%0AIn%20short%2C%20the%20problem%20I%20was%20trying%20to%20solve%20was%20plugins%20unnecessarily%20loading%20their%20JavaScript%20and%20CSS%20on%20%2Aevery%2A%20page%20of&amp;short_link=http://bit.ly/aH8tGB&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a></li><li
class="shr-mail"> <a
href="http://www.shareaholic.com/api/share/?title=%5BWordpress%20Plugin%20Development%5D%20How%20To%20Include%20CSS%20and%20JavaScript%20Conditionally%20And%20Only%20When%20Needed%20By%20The%20Posts&amp;link=http://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/&amp;notes=Introduction%0D%0A%20In%20this%20tutorial%2C%20I%20am%20going%20to%20introduce%20a%20Wordpress%20technique%20that%20I%20believe%20was%20unpublished%20until%20I%20raised%20the%20question%20a%20few%20days%20ago%20on%20the%20Wordpress%20forums.%0D%0AIn%20short%2C%20the%20problem%20I%20was%20trying%20to%20solve%20was%20plugins%20unnecessarily%20loading%20their%20JavaScript%20and%20CSS%20on%20%2Aevery%2A%20page%20of&amp;short_link=http://bit.ly/aH8tGB&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=201&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a></li></ul><div
style="clear: both;"></div></div> Similar Posts:<ul><li><a
href="http://beerpla.net/2010/01/15/follow-up-to-loading-css-and-js-conditionally/" rel="bookmark" title="January 15, 2010">Follow-up To Loading CSS And JS Conditionally</a></li><li><a
href="http://beerpla.net/2010/01/31/how-to-remove-inline-hardcoded-recent-comments-sidebar-widget-style-from-your-wordpress-theme/" rel="bookmark" title="January 31, 2010">How To Remove Inline Hardcoded Recent Comments Sidebar Widget Style From Your WordPress Theme</a></li><li><a
href="http://beerpla.net/2010/11/06/how-to-dynamically-increase-memory-limits-when-interfacing-with-wordpress-using-xml-rpc-windows-live-writer-etc/" rel="bookmark" title="November 6, 2010">How To Dynamically Increase Memory Limits When Interfacing With WordPress Using XML-RPC (Windows Live Writer, Etc)</a></li><li><a
href="http://beerpla.net/2010/02/20/how-to-view-a-specific-svn-revision-in-your-browser/" rel="bookmark" title="February 20, 2010">How To View A Specific SVN Revision In Your Browser</a></li><li><a
href="http://beerpla.net/2010/03/21/how-to-diagnose-and-fix-incorrect-post-comment-counts-in-wordpress/" rel="bookmark" title="March 21, 2010">How To Diagnose And Fix Incorrect Post Comment Counts In WordPress</a></li></ul><p><a
class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbeerpla.net%2F2010%2F01%2F13%2Fwordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts%2F&amp;title=%5BWordPress%20Plugin%20Development%5D%20How%20To%20Include%20CSS%20and%20JavaScript%20Conditionally%20And%20Only%20When%20Needed%20By%20The%20Posts" id="wpa2a_8"><img
src="http://beerpla.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded> <wfw:commentRss>http://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/feed/</wfw:commentRss> <slash:comments>68</slash:comments> </item> <item><title>How To Export/Import Your ExpanDrive/SFTPDrive Drives And Settings</title><link>http://beerpla.net/2010/01/09/how-to-exportimport-your-expandrivesftpdrive-drives-and-settings/</link> <comments>http://beerpla.net/2010/01/09/how-to-exportimport-your-expandrivesftpdrive-drives-and-settings/#comments</comments> <pubDate>Sat, 09 Jan 2010 21:59:12 +0000</pubDate> <dc:creator>Artem Russakovskii</dc:creator> <category><![CDATA[Linux]]></category> <category><![CDATA[Tips]]></category> <category><![CDATA[Tutorials]]></category> <category><![CDATA[drive]]></category> <category><![CDATA[expandrive]]></category> <category><![CDATA[export]]></category> <category><![CDATA[import]]></category> <category><![CDATA[settings]]></category> <category><![CDATA[sftpdrive]]></category> <guid
isPermaLink="false">http://beerpla.net/2010/01/09/how-to-exportimport-your-expandrivesftpdrive-drives-and-settings/</guid> <description><![CDATA[<p><img
style="margin: 0px 10px 10px 0px; display: inline" title="ExpanDrive logo" alt="ExpanDrive logo" align="left" src="http://beerpla.net/wp-content/uploads/HowToExportImportYourExpanDriveDrivesAnd_C2EB/image_6.png" width="150" height="140" /> <a
href="http://www.expandrive.com" rel="nofollow">ExpanDrive</a> (formerly SFTPDrive) is a very handy Windows and Mac application that lets you take any SSH connection and mount it as a local drive. It saves me countless annoyances because I don&#039;t have to use a proprietary sftp uploader &#8211; in fact, I can simply open any file with my favorite editor, directly on the newly mounted drive.</p><h2>The Problem</h2><p>The problem with ExpandDrive is &#8211; it&#039;s quite simplistic. So simplistic that it doesn&#039;t offer an easy way to export its drive list and the associated settings. Because of that, you will have to enter all the drives all over again in case you reinstall Windows or want to replicate them to another computer.</p><p>Of course,...<div
class=clear></div> <a
href="http://beerpla.net/2010/01/09/how-to-exportimport-your-expandrivesftpdrive-drives-and-settings/" class="read_more"><div
class=excerpt-end>Read the rest of this article &#187;</div></a></p>]]></description> <content:encoded><![CDATA[<p><img
style="margin: 0px 10px 10px 0px; display: inline" title="ExpanDrive logo" alt="ExpanDrive logo" align="left" src="http://beerpla.net/wp-content/uploads/HowToExportImportYourExpanDriveDrivesAnd_C2EB/image_6.png" width="150" height="140" /> <a
href="http://www.expandrive.com" rel="nofollow">ExpanDrive</a> (formerly SFTPDrive) is a very handy Windows and Mac application that lets you take any SSH connection and mount it as a local drive. It saves me countless annoyances because I don&#039;t have to use a proprietary sftp uploader &#8211; in fact, I can simply open any file with my favorite editor, directly on the newly mounted drive.</p><h2>The Problem</h2><p>The problem with ExpandDrive is &#8211; it&#039;s quite simplistic. So simplistic that it doesn&#039;t offer an easy way to export its drive list and the associated settings. Because of that, you will have to enter all the drives all over again in case you reinstall Windows or want to replicate them to another computer.</p><p>Of course, there is a workaround.</p><h2>The Workaround</h2><p>The workaround involves the following easy steps and, as I don&#039;t have a Mac, works only on Windows:</p><p><strong><font
size="5">1.</font></strong> On the source computer, load the registry editor by opening the run menu (WinKey+R) and typing in &#039;regedit&#039;.</p><p><strong><font
size="5">2.</font></strong> Expand the following location: HKEY_CURRENT_USER\Software\ExpanDrive. If you have SFTPDrive, install ExpanDrive first, which should migrate the old settings to this location. <br
/>Inside, you should find these 2 subfolders: Hostkeys and Sessions</p><p><a
href="http://beerpla.net/wp-content/uploads/HowToExportImportYourExpanDriveDrivesAnd_C2EB/image.png" class="lightview" rel="gallery['1341']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToExportImportYourExpanDriveDrivesAnd_C2EB/image_thumb.png" width="160" height="112" /></a></p><p><strong><font
size="5">3.</font></strong> Right click on ExpanDrive, select Export, and then save the reg file as expandrive.reg while making sure the &quot;Selected branch&quot; is selected in the Save dialog:</p><p><a
href="http://beerpla.net/wp-content/uploads/HowToExportImportYourExpanDriveDrivesAnd_C2EB/image_3.png" class="lightview" rel="gallery['1341']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToExportImportYourExpanDriveDrivesAnd_C2EB/image_thumb_3.png" width="143" height="183" /></a>&#160;<a
href="http://beerpla.net/wp-content/uploads/HowToExportImportYourExpanDriveDrivesAnd_C2EB/image_4.png" class="lightview" rel="gallery['1341']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToExportImportYourExpanDriveDrivesAnd_C2EB/image_thumb_4.png" width="554" height="189" /></a>&#160;</p><p><font
size="5"><strong>4.</strong></font> Close ExpanDrive on your new computer, transfer expandrive.reg to it, and then execute it. Click &quot;Yes&quot; at the following dialog:</p><p><a
href="http://beerpla.net/wp-content/uploads/HowToExportImportYourExpanDriveDrivesAnd_C2EB/image_5.png" class="lightview" rel="gallery['1341']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToExportImportYourExpanDriveDrivesAnd_C2EB/image_thumb_5.png" width="524" height="117" /></a></p><p><font
size="5"><strong>5. </strong></font>Reopen ExpanDrive and you should now have all your drives.</p><p><div
class="note"><div
class="notewarning">For some reason, the public/private key settings did not get carried over, even though it seemed like they would. You may need to enter them again for the lack of a better method.</div></div></p><p>If anyone has a better method, comments about the one above, or a way to carry over the public/private key settings, please share in the comments.</p><div
class="shr-bookmarks shr-bookmarks-expand"><ul
class="socials"><li
class="shr-twitter"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Export%2FImport+Your+ExpanDrive%2FSFTPDrive+Drives+And+Settings&amp;link=http://beerpla.net/2010/01/09/how-to-exportimport-your-expandrivesftpdrive-drives-and-settings/&amp;notes=%20ExpanDrive%20%28formerly%20SFTPDrive%29%20is%20a%20very%20handy%20Windows%20and%20Mac%20application%20that%20lets%20you%20take%20any%20SSH%20connection%20and%20mount%20it%20as%20a%20local%20drive.%20It%20saves%20me%20countless%20annoyances%20because%20I%20don%27t%20have%20to%20use%20a%20proprietary%20sftp%20uploader%20-%20in%20fact%2C%20I%20can%20simply%20open%20any%20file%20with%20my%20favorite%20editor%2C%20di&amp;short_link=http://bit.ly/csrxin&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a></li><li
class="shr-facebook"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Export%2FImport+Your+ExpanDrive%2FSFTPDrive+Drives+And+Settings&amp;link=http://beerpla.net/2010/01/09/how-to-exportimport-your-expandrivesftpdrive-drives-and-settings/&amp;notes=%20ExpanDrive%20%28formerly%20SFTPDrive%29%20is%20a%20very%20handy%20Windows%20and%20Mac%20application%20that%20lets%20you%20take%20any%20SSH%20connection%20and%20mount%20it%20as%20a%20local%20drive.%20It%20saves%20me%20countless%20annoyances%20because%20I%20don%27t%20have%20to%20use%20a%20proprietary%20sftp%20uploader%20-%20in%20fact%2C%20I%20can%20simply%20open%20any%20file%20with%20my%20favorite%20editor%2C%20di&amp;short_link=http://bit.ly/csrxin&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a></li><li
class="shr-googlebuzz"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Export%2FImport+Your+ExpanDrive%2FSFTPDrive+Drives+And+Settings&amp;link=http://beerpla.net/2010/01/09/how-to-exportimport-your-expandrivesftpdrive-drives-and-settings/&amp;notes=%20ExpanDrive%20%28formerly%20SFTPDrive%29%20is%20a%20very%20handy%20Windows%20and%20Mac%20application%20that%20lets%20you%20take%20any%20SSH%20connection%20and%20mount%20it%20as%20a%20local%20drive.%20It%20saves%20me%20countless%20annoyances%20because%20I%20don%27t%20have%20to%20use%20a%20proprietary%20sftp%20uploader%20-%20in%20fact%2C%20I%20can%20simply%20open%20any%20file%20with%20my%20favorite%20editor%2C%20di&amp;short_link=http://bit.ly/csrxin&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a></li><li
class="shr-reddit"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Export%2FImport+Your+ExpanDrive%2FSFTPDrive+Drives+And+Settings&amp;link=http://beerpla.net/2010/01/09/how-to-exportimport-your-expandrivesftpdrive-drives-and-settings/&amp;notes=%20ExpanDrive%20%28formerly%20SFTPDrive%29%20is%20a%20very%20handy%20Windows%20and%20Mac%20application%20that%20lets%20you%20take%20any%20SSH%20connection%20and%20mount%20it%20as%20a%20local%20drive.%20It%20saves%20me%20countless%20annoyances%20because%20I%20don%27t%20have%20to%20use%20a%20proprietary%20sftp%20uploader%20-%20in%20fact%2C%20I%20can%20simply%20open%20any%20file%20with%20my%20favorite%20editor%2C%20di&amp;short_link=http://bit.ly/csrxin&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a></li><li
class="shr-hackernews"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Export%2FImport+Your+ExpanDrive%2FSFTPDrive+Drives+And+Settings&amp;link=http://beerpla.net/2010/01/09/how-to-exportimport-your-expandrivesftpdrive-drives-and-settings/&amp;notes=%20ExpanDrive%20%28formerly%20SFTPDrive%29%20is%20a%20very%20handy%20Windows%20and%20Mac%20application%20that%20lets%20you%20take%20any%20SSH%20connection%20and%20mount%20it%20as%20a%20local%20drive.%20It%20saves%20me%20countless%20annoyances%20because%20I%20don%27t%20have%20to%20use%20a%20proprietary%20sftp%20uploader%20-%20in%20fact%2C%20I%20can%20simply%20open%20any%20file%20with%20my%20favorite%20editor%2C%20di&amp;short_link=http://bit.ly/csrxin&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a></li><li
class="shr-delicious"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Export%2FImport+Your+ExpanDrive%2FSFTPDrive+Drives+And+Settings&amp;link=http://beerpla.net/2010/01/09/how-to-exportimport-your-expandrivesftpdrive-drives-and-settings/&amp;notes=%20ExpanDrive%20%28formerly%20SFTPDrive%29%20is%20a%20very%20handy%20Windows%20and%20Mac%20application%20that%20lets%20you%20take%20any%20SSH%20connection%20and%20mount%20it%20as%20a%20local%20drive.%20It%20saves%20me%20countless%20annoyances%20because%20I%20don%27t%20have%20to%20use%20a%20proprietary%20sftp%20uploader%20-%20in%20fact%2C%20I%20can%20simply%20open%20any%20file%20with%20my%20favorite%20editor%2C%20di&amp;short_link=http://bit.ly/csrxin&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a></li><li
class="shr-stumbleupon"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Export%2FImport+Your+ExpanDrive%2FSFTPDrive+Drives+And+Settings&amp;link=http://beerpla.net/2010/01/09/how-to-exportimport-your-expandrivesftpdrive-drives-and-settings/&amp;notes=%20ExpanDrive%20%28formerly%20SFTPDrive%29%20is%20a%20very%20handy%20Windows%20and%20Mac%20application%20that%20lets%20you%20take%20any%20SSH%20connection%20and%20mount%20it%20as%20a%20local%20drive.%20It%20saves%20me%20countless%20annoyances%20because%20I%20don%27t%20have%20to%20use%20a%20proprietary%20sftp%20uploader%20-%20in%20fact%2C%20I%20can%20simply%20open%20any%20file%20with%20my%20favorite%20editor%2C%20di&amp;short_link=http://bit.ly/csrxin&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a></li><li
class="shr-mail"> <a
href="http://www.shareaholic.com/api/share/?title=How%20To%20Export%2FImport%20Your%20ExpanDrive%2FSFTPDrive%20Drives%20And%20Settings&amp;link=http://beerpla.net/2010/01/09/how-to-exportimport-your-expandrivesftpdrive-drives-and-settings/&amp;notes=%20ExpanDrive%20%28formerly%20SFTPDrive%29%20is%20a%20very%20handy%20Windows%20and%20Mac%20application%20that%20lets%20you%20take%20any%20SSH%20connection%20and%20mount%20it%20as%20a%20local%20drive.%20It%20saves%20me%20countless%20annoyances%20because%20I%20don%27t%20have%20to%20use%20a%20proprietary%20sftp%20uploader%20-%20in%20fact%2C%20I%20can%20simply%20open%20any%20file%20with%20my%20favorite%20editor%2C%20di&amp;short_link=http://bit.ly/csrxin&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=201&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a></li></ul><div
style="clear: both;"></div></div> Similar Posts:<ul><li><a
href="http://beerpla.net/2007/08/10/how-to-resizegrow-vmware-linux-disks-and-partitions/" rel="bookmark" title="August 10, 2007">How To Resize/Grow VMware Linux Disks and Partitions</a></li><li><a
href="http://beerpla.net/2009/11/17/is-your-simplifymedia-for-winamp-broken-on-a-64-bit-windows-7-heres-how-to-fix-it/" rel="bookmark" title="November 17, 2009">Is Your Simplifymedia For Winamp Broken On A 64 Bit Windows 7? Here&#039;s How To Fix It</a></li><li><a
href="http://beerpla.net/2009/10/24/are-you-a-stackoverflow-com-superuser-com-serverfault-com-fan-heres-a-greasemonkey-script-to-keep-track-of-your-accounts-on-all-of-them/" rel="bookmark" title="October 24, 2009">StackOverflow.com, SuperUser.com, ServerFault.com Fan? Here&#039;s A Greasemonkey Script To Keep Track Of All Your Accounts</a></li><li><a
href="http://beerpla.net/2009/11/04/android-auto-formatting-android-xml-files-with-eclipse/" rel="bookmark" title="November 4, 2009">[Android] Auto Formatting Android XML Files With Eclipse</a></li><li><a
href="http://beerpla.net/2010/03/01/the-most-awesome-vpn-tip-how-to-make-windows-automatically-use-your-local-wifilan-connection-directly-for-requests-that-dont-need-to-go-through-vpn/" rel="bookmark" title="March 1, 2010">The Most Awesome VPN Tip: How To Make Windows Automatically Use Your Local WiFi/LAN Connection Directly For Requests That Don&#039;t Need To Go Through VPN</a></li></ul><p><a
class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbeerpla.net%2F2010%2F01%2F09%2Fhow-to-exportimport-your-expandrivesftpdrive-drives-and-settings%2F&amp;title=How%20To%20Export%2FImport%20Your%20ExpanDrive%2FSFTPDrive%20Drives%20And%20Settings" id="wpa2a_10"><img
src="http://beerpla.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded> <wfw:commentRss>http://beerpla.net/2010/01/09/how-to-exportimport-your-expandrivesftpdrive-drives-and-settings/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>[Android] Auto Formatting Android XML Files With Eclipse</title><link>http://beerpla.net/2009/11/04/android-auto-formatting-android-xml-files-with-eclipse/</link> <comments>http://beerpla.net/2009/11/04/android-auto-formatting-android-xml-files-with-eclipse/#comments</comments> <pubDate>Thu, 05 Nov 2009 02:44:54 +0000</pubDate> <dc:creator>Artem Russakovskii</dc:creator> <category><![CDATA[Android]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Java]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Tips]]></category> <category><![CDATA[Tutorials]]></category> <category><![CDATA[auto format]]></category> <category><![CDATA[autoformat]]></category> <category><![CDATA[automatic]]></category> <category><![CDATA[clean up]]></category> <category><![CDATA[cleanup]]></category> <category><![CDATA[format]]></category> <category><![CDATA[indentation]]></category> <category><![CDATA[tag]]></category> <category><![CDATA[xml]]></category> <guid
isPermaLink="false">http://beerpla.net/2009/11/04/android-auto-formatting-android-xml-files-with-eclipse/</guid> <description><![CDATA[<p><img
style="margin: 0px 10px 10px 0px; display: inline" title="image" alt="image" align="left" src="http://beerpla.net/wp-content/uploads/AndroidAutoFormattingAndroidXMLFilesWith_14588/image_thumb.png" width="150" height="109" /> In this article I will describe the problem I&#039;ve had with Eclipse&#039;s handling of XML file formatting as well as the best way to fix it.</p><p>&#160;</p><p>I use Eclipse to do my Android development for a few reasons:</p><ul><li>it&#039;s the only IDE fully supported by the Android dev team</li><li>it has a visual Layout/Resources builder that transforms XML files into corresponding visual representations</li><li>it&#039;s free and open source</li><li>I&#039;ve been using Eclipse for many years and am very familiar with it</li></ul><p><div
class="note"><div
class="noteclassic">In order to use the visual features in Eclipse when developing for Android, you need to install <a
href="http://developer.android.com/sdk/eclipse-adt.html" rel="nofollow">the ADT plugin</a> provided by Google</div></div></p><h2>The Problem</h2><p>However, one thing about...<div
class=clear></div> <a
href="http://beerpla.net/2009/11/04/android-auto-formatting-android-xml-files-with-eclipse/" class="read_more"><div
class=excerpt-end>Read the rest of this article &#187;</div></a></p>]]></description> <content:encoded><![CDATA[<p><img
style="margin: 0px 10px 10px 0px; display: inline" title="image" alt="image" align="left" src="http://beerpla.net/wp-content/uploads/AndroidAutoFormattingAndroidXMLFilesWith_14588/image_thumb.png" width="150" height="109" /> In this article I will describe the problem I&#039;ve had with Eclipse&#039;s handling of XML file formatting as well as the best way to fix it.</p><p>&#160;</p><p>I use Eclipse to do my Android development for a few reasons:</p><ul><li>it&#039;s the only IDE fully supported by the Android dev team</li><li>it has a visual Layout/Resources builder that transforms XML files into corresponding visual representations</li><li>it&#039;s free and open source</li><li>I&#039;ve been using Eclipse for many years and am very familiar with it</li></ul><p><div
class="note"><div
class="noteclassic">In order to use the visual features in Eclipse when developing for Android, you need to install <a
href="http://developer.android.com/sdk/eclipse-adt.html" rel="nofollow">the ADT plugin</a> provided by Google</div></div></p><h2>The Problem</h2><p>However, one thing about Eclipse Android development has bothered me for a while &#8211; and that is XML formatting by the visual tools. See, if you open an XML file in Eclipse and use the Layout/Resources tab (which functions as either a visual UI builder or a visual frontend to resource management), Eclipse creates the XML representation of what you&#039;re building and dumps it into the file you&#039;re editing. The problem is, this XML is not formatted in any way &#8211; Eclipse just writes it in a single line, which looks absolutely horrible and is essentially unusable.</p><p>For example, I had this beautifully formatted XML file with a sample Android menu. After using the Layout tab to add another item, I ended up with an single ugly unindented line for it.</p><p><a
href="http://beerpla.net/wp-content/uploads/AndroidAutoFormattingAndroidXMLFilesWith_14588/image_3.png" class="lightview" rel="gallery['1215']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/AndroidAutoFormattingAndroidXMLFilesWith_14588/image_thumb_3.png" width="700" height="189" /></a></p><h2>The Solution</h2><p>Here&#039;s how to solve this in an almost fully automated fashion, using formatting rules that I think result in the most readable file. There is no need for external tools &#8211; Eclipse provides everything needed.</p><ul><li>open up Window-&gt;Preferences-&gt;XML-&gt;XML Files-&gt;Editor <br
/><a
href="http://beerpla.net/wp-content/uploads/AndroidAutoFormattingAndroidXMLFilesWith_14588/image_4.png" class="lightview" rel="gallery['1215']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/AndroidAutoFormattingAndroidXMLFilesWith_14588/image_thumb_4.png" width="636" height="667" /></a></li><li>check the &quot;Split multiple attributes each on a new line&quot; and adjust other options according to your liking (such as Indent using spaces and Indentation size)</li><li>press OK to save the options</li><li>all you have to do now is press Ctrl-Shift-F or select Source-&gt;Format</li></ul><p>Let&#039;s see what this does to the XML I showed above:</p><p><a
href="http://beerpla.net/wp-content/uploads/AndroidAutoFormattingAndroidXMLFilesWith_14588/image_5.png" class="lightview" rel="gallery['1215']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/AndroidAutoFormattingAndroidXMLFilesWith_14588/image_thumb_5.png" width="573" height="333" /></a> It&#039;s a beauty, isn&#039;t it? Eclipse&#039;s Auto Format is one of its best features (yes, you can apply it to your Android Java code too as well as pretty much any other document format).</p><h2>Bonus &#8211; XML Cleanup</h2><p>As an added bonus, Eclipse also offers a Cleanup XML option, which can do the following:</p><ul><li>compress empty element tags</li><li>insert required attributes</li><li>insert missing tags</li><li>quote attribute values</li><li>format source (as above)</li><li>convert line delimiters to Windows, UNIX, or Mac</li></ul><p>You can access the Cleanup option via Source-&gt;Cleanup</p><p><a
href="http://beerpla.net/wp-content/uploads/AndroidAutoFormattingAndroidXMLFilesWith_14588/image_6.png" class="lightview" rel="gallery['1215']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/AndroidAutoFormattingAndroidXMLFilesWith_14588/image_thumb_6.png" width="225" height="247" /></a> Running Cleanup on my already pretty clean XML file turned the last &lt;item&gt; into this:</p><p><a
href="http://beerpla.net/wp-content/uploads/AndroidAutoFormattingAndroidXMLFilesWith_14588/image_7.png" class="lightview" rel="gallery['1215']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/AndroidAutoFormattingAndroidXMLFilesWith_14588/image_thumb_7.png" width="554" height="104" /></a> The first option compressed the &lt;item&gt;&lt;/item&gt; declaration to simply &lt;item /&gt;. Neat, isn&#039;t it?</p><h2>Final Words</h2><p><strong>+</strong> Clean is good.</p><p><strong>+</strong> Uniform is good.</p><p><strong>+</strong> Use Ctrl-Shift-F and make it a habit.</p><p><strong>+</strong> Create a keyboard shortcut to the Cleanup function by going to Window-&gt;Preferences-&gt;General-&gt;Keys and use it instead of Ctrl-Shift-F (since it already formats as part of the Cleanup).</p><p><strong>?</strong> I&#039;d like to know if there is a way to apply auto formatting upon save, automatically. Do you?</p><div
class="shr-bookmarks shr-bookmarks-expand"><ul
class="socials"><li
class="shr-twitter"> <a
href="http://www.shareaholic.com/api/share/?title=%5BAndroid%5D+Auto+Formatting+Android+XML+Files+With+Eclipse&amp;link=http://beerpla.net/2009/11/04/android-auto-formatting-android-xml-files-with-eclipse/&amp;notes=%20In%20this%20article%20I%20will%20describe%20the%20problem%20I%27ve%20had%20with%20Eclipse%27s%20handling%20of%20XML%20file%20formatting%20as%20well%20as%20the%20best%20way%20to%20fix%20it.%20%20%26%23160%3B%20%20I%20use%20Eclipse%20to%20do%20my%20Android%20development%20for%20a%20few%20reasons%3A%20%20%20%20%20it%27s%20the%20only%20IDE%20fully%20supported%20by%20the%20Android%20dev%20team%20%20%20%20%20it%20has%20a%20visual%20Layout%2FReso&amp;short_link=http://bit.ly/cNm6Ld&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a></li><li
class="shr-facebook"> <a
href="http://www.shareaholic.com/api/share/?title=%5BAndroid%5D+Auto+Formatting+Android+XML+Files+With+Eclipse&amp;link=http://beerpla.net/2009/11/04/android-auto-formatting-android-xml-files-with-eclipse/&amp;notes=%20In%20this%20article%20I%20will%20describe%20the%20problem%20I%27ve%20had%20with%20Eclipse%27s%20handling%20of%20XML%20file%20formatting%20as%20well%20as%20the%20best%20way%20to%20fix%20it.%20%20%26%23160%3B%20%20I%20use%20Eclipse%20to%20do%20my%20Android%20development%20for%20a%20few%20reasons%3A%20%20%20%20%20it%27s%20the%20only%20IDE%20fully%20supported%20by%20the%20Android%20dev%20team%20%20%20%20%20it%20has%20a%20visual%20Layout%2FReso&amp;short_link=http://bit.ly/cNm6Ld&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a></li><li
class="shr-googlebuzz"> <a
href="http://www.shareaholic.com/api/share/?title=%5BAndroid%5D+Auto+Formatting+Android+XML+Files+With+Eclipse&amp;link=http://beerpla.net/2009/11/04/android-auto-formatting-android-xml-files-with-eclipse/&amp;notes=%20In%20this%20article%20I%20will%20describe%20the%20problem%20I%27ve%20had%20with%20Eclipse%27s%20handling%20of%20XML%20file%20formatting%20as%20well%20as%20the%20best%20way%20to%20fix%20it.%20%20%26%23160%3B%20%20I%20use%20Eclipse%20to%20do%20my%20Android%20development%20for%20a%20few%20reasons%3A%20%20%20%20%20it%27s%20the%20only%20IDE%20fully%20supported%20by%20the%20Android%20dev%20team%20%20%20%20%20it%20has%20a%20visual%20Layout%2FReso&amp;short_link=http://bit.ly/cNm6Ld&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a></li><li
class="shr-reddit"> <a
href="http://www.shareaholic.com/api/share/?title=%5BAndroid%5D+Auto+Formatting+Android+XML+Files+With+Eclipse&amp;link=http://beerpla.net/2009/11/04/android-auto-formatting-android-xml-files-with-eclipse/&amp;notes=%20In%20this%20article%20I%20will%20describe%20the%20problem%20I%27ve%20had%20with%20Eclipse%27s%20handling%20of%20XML%20file%20formatting%20as%20well%20as%20the%20best%20way%20to%20fix%20it.%20%20%26%23160%3B%20%20I%20use%20Eclipse%20to%20do%20my%20Android%20development%20for%20a%20few%20reasons%3A%20%20%20%20%20it%27s%20the%20only%20IDE%20fully%20supported%20by%20the%20Android%20dev%20team%20%20%20%20%20it%20has%20a%20visual%20Layout%2FReso&amp;short_link=http://bit.ly/cNm6Ld&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a></li><li
class="shr-hackernews"> <a
href="http://www.shareaholic.com/api/share/?title=%5BAndroid%5D+Auto+Formatting+Android+XML+Files+With+Eclipse&amp;link=http://beerpla.net/2009/11/04/android-auto-formatting-android-xml-files-with-eclipse/&amp;notes=%20In%20this%20article%20I%20will%20describe%20the%20problem%20I%27ve%20had%20with%20Eclipse%27s%20handling%20of%20XML%20file%20formatting%20as%20well%20as%20the%20best%20way%20to%20fix%20it.%20%20%26%23160%3B%20%20I%20use%20Eclipse%20to%20do%20my%20Android%20development%20for%20a%20few%20reasons%3A%20%20%20%20%20it%27s%20the%20only%20IDE%20fully%20supported%20by%20the%20Android%20dev%20team%20%20%20%20%20it%20has%20a%20visual%20Layout%2FReso&amp;short_link=http://bit.ly/cNm6Ld&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a></li><li
class="shr-delicious"> <a
href="http://www.shareaholic.com/api/share/?title=%5BAndroid%5D+Auto+Formatting+Android+XML+Files+With+Eclipse&amp;link=http://beerpla.net/2009/11/04/android-auto-formatting-android-xml-files-with-eclipse/&amp;notes=%20In%20this%20article%20I%20will%20describe%20the%20problem%20I%27ve%20had%20with%20Eclipse%27s%20handling%20of%20XML%20file%20formatting%20as%20well%20as%20the%20best%20way%20to%20fix%20it.%20%20%26%23160%3B%20%20I%20use%20Eclipse%20to%20do%20my%20Android%20development%20for%20a%20few%20reasons%3A%20%20%20%20%20it%27s%20the%20only%20IDE%20fully%20supported%20by%20the%20Android%20dev%20team%20%20%20%20%20it%20has%20a%20visual%20Layout%2FReso&amp;short_link=http://bit.ly/cNm6Ld&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a></li><li
class="shr-stumbleupon"> <a
href="http://www.shareaholic.com/api/share/?title=%5BAndroid%5D+Auto+Formatting+Android+XML+Files+With+Eclipse&amp;link=http://beerpla.net/2009/11/04/android-auto-formatting-android-xml-files-with-eclipse/&amp;notes=%20In%20this%20article%20I%20will%20describe%20the%20problem%20I%27ve%20had%20with%20Eclipse%27s%20handling%20of%20XML%20file%20formatting%20as%20well%20as%20the%20best%20way%20to%20fix%20it.%20%20%26%23160%3B%20%20I%20use%20Eclipse%20to%20do%20my%20Android%20development%20for%20a%20few%20reasons%3A%20%20%20%20%20it%27s%20the%20only%20IDE%20fully%20supported%20by%20the%20Android%20dev%20team%20%20%20%20%20it%20has%20a%20visual%20Layout%2FReso&amp;short_link=http://bit.ly/cNm6Ld&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a></li><li
class="shr-mail"> <a
href="http://www.shareaholic.com/api/share/?title=%5BAndroid%5D%20Auto%20Formatting%20Android%20XML%20Files%20With%20Eclipse&amp;link=http://beerpla.net/2009/11/04/android-auto-formatting-android-xml-files-with-eclipse/&amp;notes=%20In%20this%20article%20I%20will%20describe%20the%20problem%20I%27ve%20had%20with%20Eclipse%27s%20handling%20of%20XML%20file%20formatting%20as%20well%20as%20the%20best%20way%20to%20fix%20it.%20%20%26%23160%3B%20%20I%20use%20Eclipse%20to%20do%20my%20Android%20development%20for%20a%20few%20reasons%3A%20%20%20%20%20it%27s%20the%20only%20IDE%20fully%20supported%20by%20the%20Android%20dev%20team%20%20%20%20%20it%20has%20a%20visual%20Layout%2FReso&amp;short_link=http://bit.ly/cNm6Ld&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=201&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a></li></ul><div
style="clear: both;"></div></div> Similar Posts:<ul><li><a
href="http://beerpla.net/2008/04/09/some-useful-vim-commands-my-vim-cheatsheet/" rel="bookmark" title="April 9, 2008">Some Useful vim Commands &#8211; My vim Cheatsheet</a></li><li><a
href="http://beerpla.net/2009/10/15/installing-the-android-plugin-for-eclipse/" rel="bookmark" title="October 15, 2009">Installing The Android Plugin For Eclipse</a></li><li><a
href="http://beerpla.net/2010/09/29/how-to-update-eclipse-from-galileo-3-5-to-helios-3-6-in-place-without-reinstalling/" rel="bookmark" title="September 29, 2010">How To Update Eclipse From Galileo (3.5) To Helios (3.6) In-Place Without Reinstalling</a></li><li><a
href="http://beerpla.net/2010/01/18/wordpress-developers-how-do-you-make-a-living-poll-discussion/" rel="bookmark" title="January 18, 2010">WordPress Developers &#8211; How Do You Make A Living [Poll + Discussion]?</a></li><li><a
href="http://beerpla.net/2008/12/22/mastering-the-linux-shell-bash-shortcuts-explained/" rel="bookmark" title="December 22, 2008">Mastering The Linux Shell &#8211; Bash Shortcuts Explained (Now With Cheat Sheets)</a></li></ul><p><a
class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbeerpla.net%2F2009%2F11%2F04%2Fandroid-auto-formatting-android-xml-files-with-eclipse%2F&amp;title=%5BAndroid%5D%20Auto%20Formatting%20Android%20XML%20Files%20With%20Eclipse" id="wpa2a_12"><img
src="http://beerpla.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded> <wfw:commentRss>http://beerpla.net/2009/11/04/android-auto-formatting-android-xml-files-with-eclipse/feed/</wfw:commentRss> <slash:comments>9</slash:comments> </item> <item><title>2 Gmail Tricks I Bet You Didn&#039;t Know About</title><link>http://beerpla.net/2009/08/17/2-gmail-tricks-i-bet-you-didnt-know-about/</link> <comments>http://beerpla.net/2009/08/17/2-gmail-tricks-i-bet-you-didnt-know-about/#comments</comments> <pubDate>Mon, 17 Aug 2009 17:00:00 +0000</pubDate> <dc:creator>Artem Russakovskii</dc:creator> <category><![CDATA[Awesomeness]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[My Favorites]]></category> <category><![CDATA[Technology]]></category> <category><![CDATA[Tutorials]]></category> <category><![CDATA[account]]></category> <category><![CDATA[address]]></category> <category><![CDATA[dot]]></category> <category><![CDATA[easy]]></category> <category><![CDATA[email]]></category> <category><![CDATA[fast]]></category> <category><![CDATA[gmail]]></category> <category><![CDATA[hint]]></category> <category><![CDATA[more]]></category> <category><![CDATA[plus]]></category> <category><![CDATA[power]]></category> <category><![CDATA[sign]]></category> <category><![CDATA[tip]]></category> <category><![CDATA[trick]]></category> <category><![CDATA[unique]]></category> <category><![CDATA[user]]></category> <category><![CDATA[username]]></category> <guid
isPermaLink="false">http://beerpla.net/?p=1110</guid> <description><![CDATA[<p>OK, maybe you did know them &#8211; just see for yourself.</p><h2>Introduction</h2><p>The tricks I am going to describe allow you to create unique gmail addresses that still hit your existing gmail inbox, without actually making new gmail accounts.</p><p>This can be useful in a variety of situations when you need to use multiple email addresses without having the pain of maintaining them, such as</p><ul><li>using unique emails while registering for the same service more than once (say, paypal)</li><li>giving out a unique email address to see if you start getting spam to it later &#8211; that way you know exactly who to blame for it</li><li>more generally, easily create email rules to sort incoming emails into</li></ul><p>...<div
class=clear></div> <a
href="http://beerpla.net/2009/08/17/2-gmail-tricks-i-bet-you-didnt-know-about/" class="read_more"><div
class=excerpt-end>Read the rest of this article &#187;</div></a></p>]]></description> <content:encoded><![CDATA[<p>OK, maybe you did know them &#8211; just see for yourself.</p><h2>Introduction</h2><p>The tricks I am going to describe allow you to create unique gmail addresses that still hit your existing gmail inbox, without actually making new gmail accounts.</p><p>This can be useful in a variety of situations when you need to use multiple email addresses without having the pain of maintaining them, such as</p><ul><li>using unique emails while registering for the same service more than once (say, paypal)</li><li>giving out a unique email address to see if you start getting spam to it later &#8211; that way you know exactly who to blame for it</li><li>more generally, easily create email rules to sort incoming emails into folders, delete them, mark as important, etc.</li></ul><p>The hints are not new by any means but it seems like most gmail users are not aware of them. So, without further ado:</p><h2>Gmail Ignores Dots In Gmail Addresses</h2><p>Did you know this? I sure didn&#039;t, until today, when I read a <a
href="http://streetmakarov.livejournal.com/7242.html" rel="nofollow">blog post</a> by a fellow Russian blogger streetmakarov. Apparently, gmail completely ignores dots, so you can insert them anywhere you want in your email address.</p><p>Thus, <a
href="mailto:foo.bar@gmail.com">foo.bar@gmail.com</a> is the same as <a
href="mailto:foobar@gmail.com">foobar@gmail.com</a>, which is the same as <a
href="mailto:f.o.o.b.a.r@gmail.com">f.o.o.b.a.r@gmail.com</a>, etc &#8211; they will all arrive in the same inbox.</p><p>This begs the question &#8211; what if I registered <a
href="mailto:foo.bar@gmail.com">foo.bar@gmail.com</a> while someone else already owns <a
href="mailto:foobar@gmail.com">foobar@gmail.com</a>? Well, some digg and arstechnica users <a
href="http://digg.com/security/Confirmed:_Gmail_dot_bug_sends_your_email_to_other_users_" rel="nofollow">got their panties</a> in a bunch over this a while ago, just to realize that gmail doesn&#039;t allow registering accounts that would clash in any way &#8211; so if I already own <a
href="mailto:foobar@gmail.com">foobar@gmail.com</a>, nobody can register <a
href="mailto:foo.bar@gmail.com">foo.bar@gmail.com</a> or any other combination.</p><h2>You Can Append a &quot;+ANYTHINGYOUWANT&quot; To Your Username</h2><p>I think this trick is even more awesome and flexible than the previous one. If your email is <a
href="mailto:foobar@gmail.com">foobar@gmail.com</a>, then you can use <a
href="mailto:foobar+blabla@gmail.com">foobar+blabla@gmail.com</a>, <a
href="mailto:foobar+monkeybananas@gmail.com">foobar+monkeybananas@gmail.com</a>, etc and those will still land in your original inbox.</p><p>This makes it even easier to track the addresses you give out. For example, when I register new twitter accounts, I enter my email as <a
href="mailto:myrealemail+mynewtwittername@gmail.com">myrealemail+mynewtwittername@gmail.com</a> and then set up a filter in Outlook to filter those out to a separate folder. Simple, painless, and effective.</p><p>The only downside to this method is some sites foolishly (or purposely) disallow plus signs in email addresses. Oh well, you can use trick #1 for those.</p><h2>Conclusion</h2><p>Do you know other tricks related to &quot;uniquefying&quot; your gmail address? Feel free to share in the comments.</p><div
class="shr-bookmarks shr-bookmarks-expand"><ul
class="socials"><li
class="shr-twitter"> <a
href="http://www.shareaholic.com/api/share/?title=2+Gmail+Tricks+I+Bet+You+Didn%27t+Know+About&amp;link=http://beerpla.net/2009/08/17/2-gmail-tricks-i-bet-you-didnt-know-about/&amp;notes=OK%2C%20maybe%20you%20did%20know%20them%20-%20just%20see%20for%20yourself.%20%20Introduction%20%20The%20tricks%20I%20am%20going%20to%20describe%20allow%20you%20to%20create%20unique%20gmail%20addresses%20that%20still%20hit%20your%20existing%20gmail%20inbox%2C%20without%20actually%20making%20new%20gmail%20accounts.%20%20This%20can%20be%20useful%20in%20a%20variety%20of%20situations%20when%20you%20need%20to%20use%20m&amp;short_link=http://bit.ly/9QVCom&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a></li><li
class="shr-facebook"> <a
href="http://www.shareaholic.com/api/share/?title=2+Gmail+Tricks+I+Bet+You+Didn%27t+Know+About&amp;link=http://beerpla.net/2009/08/17/2-gmail-tricks-i-bet-you-didnt-know-about/&amp;notes=OK%2C%20maybe%20you%20did%20know%20them%20-%20just%20see%20for%20yourself.%20%20Introduction%20%20The%20tricks%20I%20am%20going%20to%20describe%20allow%20you%20to%20create%20unique%20gmail%20addresses%20that%20still%20hit%20your%20existing%20gmail%20inbox%2C%20without%20actually%20making%20new%20gmail%20accounts.%20%20This%20can%20be%20useful%20in%20a%20variety%20of%20situations%20when%20you%20need%20to%20use%20m&amp;short_link=http://bit.ly/9QVCom&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a></li><li
class="shr-googlebuzz"> <a
href="http://www.shareaholic.com/api/share/?title=2+Gmail+Tricks+I+Bet+You+Didn%27t+Know+About&amp;link=http://beerpla.net/2009/08/17/2-gmail-tricks-i-bet-you-didnt-know-about/&amp;notes=OK%2C%20maybe%20you%20did%20know%20them%20-%20just%20see%20for%20yourself.%20%20Introduction%20%20The%20tricks%20I%20am%20going%20to%20describe%20allow%20you%20to%20create%20unique%20gmail%20addresses%20that%20still%20hit%20your%20existing%20gmail%20inbox%2C%20without%20actually%20making%20new%20gmail%20accounts.%20%20This%20can%20be%20useful%20in%20a%20variety%20of%20situations%20when%20you%20need%20to%20use%20m&amp;short_link=http://bit.ly/9QVCom&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a></li><li
class="shr-reddit"> <a
href="http://www.shareaholic.com/api/share/?title=2+Gmail+Tricks+I+Bet+You+Didn%27t+Know+About&amp;link=http://beerpla.net/2009/08/17/2-gmail-tricks-i-bet-you-didnt-know-about/&amp;notes=OK%2C%20maybe%20you%20did%20know%20them%20-%20just%20see%20for%20yourself.%20%20Introduction%20%20The%20tricks%20I%20am%20going%20to%20describe%20allow%20you%20to%20create%20unique%20gmail%20addresses%20that%20still%20hit%20your%20existing%20gmail%20inbox%2C%20without%20actually%20making%20new%20gmail%20accounts.%20%20This%20can%20be%20useful%20in%20a%20variety%20of%20situations%20when%20you%20need%20to%20use%20m&amp;short_link=http://bit.ly/9QVCom&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a></li><li
class="shr-hackernews"> <a
href="http://www.shareaholic.com/api/share/?title=2+Gmail+Tricks+I+Bet+You+Didn%27t+Know+About&amp;link=http://beerpla.net/2009/08/17/2-gmail-tricks-i-bet-you-didnt-know-about/&amp;notes=OK%2C%20maybe%20you%20did%20know%20them%20-%20just%20see%20for%20yourself.%20%20Introduction%20%20The%20tricks%20I%20am%20going%20to%20describe%20allow%20you%20to%20create%20unique%20gmail%20addresses%20that%20still%20hit%20your%20existing%20gmail%20inbox%2C%20without%20actually%20making%20new%20gmail%20accounts.%20%20This%20can%20be%20useful%20in%20a%20variety%20of%20situations%20when%20you%20need%20to%20use%20m&amp;short_link=http://bit.ly/9QVCom&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a></li><li
class="shr-delicious"> <a
href="http://www.shareaholic.com/api/share/?title=2+Gmail+Tricks+I+Bet+You+Didn%27t+Know+About&amp;link=http://beerpla.net/2009/08/17/2-gmail-tricks-i-bet-you-didnt-know-about/&amp;notes=OK%2C%20maybe%20you%20did%20know%20them%20-%20just%20see%20for%20yourself.%20%20Introduction%20%20The%20tricks%20I%20am%20going%20to%20describe%20allow%20you%20to%20create%20unique%20gmail%20addresses%20that%20still%20hit%20your%20existing%20gmail%20inbox%2C%20without%20actually%20making%20new%20gmail%20accounts.%20%20This%20can%20be%20useful%20in%20a%20variety%20of%20situations%20when%20you%20need%20to%20use%20m&amp;short_link=http://bit.ly/9QVCom&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a></li><li
class="shr-stumbleupon"> <a
href="http://www.shareaholic.com/api/share/?title=2+Gmail+Tricks+I+Bet+You+Didn%27t+Know+About&amp;link=http://beerpla.net/2009/08/17/2-gmail-tricks-i-bet-you-didnt-know-about/&amp;notes=OK%2C%20maybe%20you%20did%20know%20them%20-%20just%20see%20for%20yourself.%20%20Introduction%20%20The%20tricks%20I%20am%20going%20to%20describe%20allow%20you%20to%20create%20unique%20gmail%20addresses%20that%20still%20hit%20your%20existing%20gmail%20inbox%2C%20without%20actually%20making%20new%20gmail%20accounts.%20%20This%20can%20be%20useful%20in%20a%20variety%20of%20situations%20when%20you%20need%20to%20use%20m&amp;short_link=http://bit.ly/9QVCom&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a></li><li
class="shr-mail"> <a
href="http://www.shareaholic.com/api/share/?title=2%20Gmail%20Tricks%20I%20Bet%20You%20Didn%27t%20Know%20About&amp;link=http://beerpla.net/2009/08/17/2-gmail-tricks-i-bet-you-didnt-know-about/&amp;notes=OK%2C%20maybe%20you%20did%20know%20them%20-%20just%20see%20for%20yourself.%20%20Introduction%20%20The%20tricks%20I%20am%20going%20to%20describe%20allow%20you%20to%20create%20unique%20gmail%20addresses%20that%20still%20hit%20your%20existing%20gmail%20inbox%2C%20without%20actually%20making%20new%20gmail%20accounts.%20%20This%20can%20be%20useful%20in%20a%20variety%20of%20situations%20when%20you%20need%20to%20use%20m&amp;short_link=http://bit.ly/9QVCom&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=201&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a></li></ul><div
style="clear: both;"></div></div> Similar Posts:<ul><li><a
href="http://beerpla.net/2011/06/13/goodbye-outlook-i-dont-need-you-anymore-gmail-now-lets-you-paste-images-directly-from-clipboard/" rel="bookmark" title="June 13, 2011">[Updated x3] Goodbye Outlook, I Don&#039;t Need You Anymore &#8211; Gmail Now Lets You Paste Images Directly From Clipboard</a></li><li><a
href="http://beerpla.net/2009/11/26/how-i-doubled-my-android-phones-htc-hero-battery-life-or-just-how-much-email-polling-affects-your-battery/" rel="bookmark" title="November 26, 2009">How I Doubled My Android Phone&#039;s (HTC Hero) Battery Life or Just How Much Email Polling Affects Your Battery</a></li><li><a
href="http://beerpla.net/2009/07/14/how-to-fix-palm-pres-error-sending-mail-problem-7/" rel="bookmark" title="July 14, 2009">How To Fix Palm Pre&#039;s &quot;Error Sending Mail&quot; Problem</a></li><li><a
href="http://beerpla.net/2009/02/12/how-to-fight-clickjacking-using-the-recent-twitter-hijacking-as-an-example/" rel="bookmark" title="February 12, 2009">How To Fight Clickjacking (Using The Recent Twitter Hijacking As An Example)</a></li><li><a
href="http://beerpla.net/2010/02/03/how-not-to-implement-a-web-application-that-handles-external-authentication-using-betwittered-com-as-an-example/" rel="bookmark" title="February 3, 2010">How *Not* To Implement A Web Application That Handles External Authentication, Using BeTwittered.com As An Example</a></li></ul><p><a
class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbeerpla.net%2F2009%2F08%2F17%2F2-gmail-tricks-i-bet-you-didnt-know-about%2F&amp;title=2%20Gmail%20Tricks%20I%20Bet%20You%20Didn%26%23039%3Bt%20Know%20About" id="wpa2a_14"><img
src="http://beerpla.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded> <wfw:commentRss>http://beerpla.net/2009/08/17/2-gmail-tricks-i-bet-you-didnt-know-about/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>How To Properly Set SVN svn:externals Property In SVN Command Line</title><link>http://beerpla.net/2009/06/20/how-to-properly-set-svn-svnexternals-property-in-svn-command-line/</link> <comments>http://beerpla.net/2009/06/20/how-to-properly-set-svn-svnexternals-property-in-svn-command-line/#comments</comments> <pubDate>Sun, 21 Jun 2009 02:01:26 +0000</pubDate> <dc:creator>Artem Russakovskii</dc:creator> <category><![CDATA[Linux]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[SVN]]></category> <category><![CDATA[Technology]]></category> <category><![CDATA[Tutorials]]></category> <category><![CDATA[Wordpress]]></category> <category><![CDATA[error]]></category> <category><![CDATA[external]]></category> <category><![CDATA[externals]]></category> <category><![CDATA[how]]></category> <category><![CDATA[propget]]></category> <category><![CDATA[propset]]></category> <category><![CDATA[set]]></category> <category><![CDATA[svn:externals]]></category> <guid
isPermaLink="false">http://beerpla.net/2009/06/20/how-to-properly-set-svn-svnexternals-property-in-svn-command-line/</guid> <description><![CDATA[<h2>Introduction</h2><p>Every time I have to deal with <a
href="http://svnbook.red-bean.com/en/1.0/ch07s03.html" rel="nofollow">svn:externals</a> in SVN, I forget the command line syntax. Every single damn time. Normally, I use SVN GUI clients, such as <a
href="http://www.smartsvn.com/" rel="nofollow">SmartSVN</a>, which make it very simple to add an svn:externals property. But for command line, it always takes looking at 25 different sites on google, which are all incredibly unhelpful for this question for some reason. Trying &#34;svn help propset&#34; on the command line was bloated and equally useless.</p><p>So this time I needed to write it down and make sure everyone who needed help with svn:externals would find exactly what they need here. I hope this page will soon come up on top of all the...<div
class=clear></div> <a
href="http://beerpla.net/2009/06/20/how-to-properly-set-svn-svnexternals-property-in-svn-command-line/" class="read_more"><div
class=excerpt-end>Read the rest of this article &#187;</div></a></p>]]></description> <content:encoded><![CDATA[<h2>Introduction</h2><p>Every time I have to deal with <a
href="http://svnbook.red-bean.com/en/1.0/ch07s03.html" rel="nofollow">svn:externals</a> in SVN, I forget the command line syntax. Every single damn time. Normally, I use SVN GUI clients, such as <a
href="http://www.smartsvn.com/" rel="nofollow">SmartSVN</a>, which make it very simple to add an svn:externals property. But for command line, it always takes looking at 25 different sites on google, which are all incredibly unhelpful for this question for some reason. Trying &quot;svn help propset&quot; on the command line was bloated and equally useless.</p><p>So this time I needed to write it down and make sure everyone who needed help with svn:externals would find exactly what they need here. I hope this page will soon come up on top of all the unhelpful results on google for &quot;propset svn:externals&quot; and other related queries.</p><h2>The Problem</h2><p>I want to set a simple svn:externals property in one of my project&#039;s directories, lets say &#039;plugins&#039; (talking about WordPress here). The outcome would be a directory called &#039;akismet&#039; within &#039;plugins&#039; that points to a remote svn url.</p><p>Various combinations of trying to do it produced pathetic results, like</p><div
class="wp_syntax"><div
class="code"><pre>svn propset svn:externals akismet http://plugins.svn.wordpress.org/akismet/trunk
svn: Setting property on non-local target 'http://plugins.svn.wordpress.org/akismet/trunk' needs a base revision</pre></div></div><div
class="wp_syntax"><div
class="code"><pre>svn propset svn:externals . akismet http://plugins.svn.wordpress.org/akismet/trunk
svn: Error parsing svn:externals property on 'akismet': '.'</pre></div></div><div
class="wp_syntax"><div
class="code"><pre>svn propset svn:externals akismet http://plugins.svn.wordpress.org/akismet/trunk akismet
svn: Setting property on non-local target 'http://plugins.svn.wordpress.org/akismet/trunk' needs a base revision</pre></div></div><h2>The Solution</h2><p>Finally, thanks to <a
href="http://www.nabble.com/svn:externals-example-td16552909.html" rel="nofollow">this post</a>, I found the right command:</p><div
class="wp_syntax"><div
class="code"><pre>svn propset svn:externals 'akismet http://plugins.svn.wordpress.org/akismet/trunk' .
property 'svn:externals' set on '.'</pre></div></div><p>Note that dot at the end of the command and the quotes around the directory name and url.</p><p>Now commit via</p><div
class="wp_syntax"><div
class="code"><pre>svn commit</pre></div></div><p>and then</p><div
class="wp_syntax"><div
class="code"><pre>svn up
Fetching external item into 'akismet'
A    akismet/akismet.gif
A    akismet/akismet.php
A    akismet/readme.txt
Updated external to revision 127962.
&nbsp;
Updated to revision 16.</pre></div></div><p>There, was it that hard, forum gurus and blog fiends?</p><p><strong>Edit</strong>: in order to set multiple directory/url pairs in a single svn:externals property, you should put the individual dir/url pairs into a file (let&#039;s call it &#039;svn.externals&#039;), like so</p><div
class="wp_syntax"><div
class="code"><pre>akismet http://svn.wp-plugins.org/akismet/trunk
all-in-one-seo-pack http://svn.wp-plugins.org/all-in-one-seo-pack/trunk</pre></div></div><p>and then apply the property using</p><div
class="wp_syntax"><div
class="code"><pre>svn propset svn:externals -F svn.externals .</pre></div></div><p>You should also just check in &#039;svn.externals&#039; to easily keep track of it.</p><p.One thing I haven't figured out yet is how to perform the same multi-operation without using a file. How does one do it on a single command line?</p><div
class="shr-bookmarks shr-bookmarks-expand"><ul
class="socials"><li
class="shr-twitter"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Properly+Set+SVN+svn%3Aexternals+Property+In+SVN+Command+Line&amp;link=http://beerpla.net/2009/06/20/how-to-properly-set-svn-svnexternals-property-in-svn-command-line/&amp;notes=Introduction%0D%0AEvery%20time%20I%20have%20to%20deal%20with%20svn%3Aexternals%20in%20SVN%2C%20I%20forget%20the%20command%20line%20syntax.%20Every%20single%20damn%20time.%20Normally%2C%20I%20use%20SVN%20GUI%20clients%2C%20such%20as%20SmartSVN%2C%20which%20make%20it%20very%20simple%20to%20add%20an%20svn%3Aexternals%20property.%20But%20for%20command%20line%2C%20it%20always%20takes%20looking%20at%2025%20different%20si&amp;short_link=http://bit.ly/bpA8jU&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a></li><li
class="shr-facebook"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Properly+Set+SVN+svn%3Aexternals+Property+In+SVN+Command+Line&amp;link=http://beerpla.net/2009/06/20/how-to-properly-set-svn-svnexternals-property-in-svn-command-line/&amp;notes=Introduction%0D%0AEvery%20time%20I%20have%20to%20deal%20with%20svn%3Aexternals%20in%20SVN%2C%20I%20forget%20the%20command%20line%20syntax.%20Every%20single%20damn%20time.%20Normally%2C%20I%20use%20SVN%20GUI%20clients%2C%20such%20as%20SmartSVN%2C%20which%20make%20it%20very%20simple%20to%20add%20an%20svn%3Aexternals%20property.%20But%20for%20command%20line%2C%20it%20always%20takes%20looking%20at%2025%20different%20si&amp;short_link=http://bit.ly/bpA8jU&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a></li><li
class="shr-googlebuzz"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Properly+Set+SVN+svn%3Aexternals+Property+In+SVN+Command+Line&amp;link=http://beerpla.net/2009/06/20/how-to-properly-set-svn-svnexternals-property-in-svn-command-line/&amp;notes=Introduction%0D%0AEvery%20time%20I%20have%20to%20deal%20with%20svn%3Aexternals%20in%20SVN%2C%20I%20forget%20the%20command%20line%20syntax.%20Every%20single%20damn%20time.%20Normally%2C%20I%20use%20SVN%20GUI%20clients%2C%20such%20as%20SmartSVN%2C%20which%20make%20it%20very%20simple%20to%20add%20an%20svn%3Aexternals%20property.%20But%20for%20command%20line%2C%20it%20always%20takes%20looking%20at%2025%20different%20si&amp;short_link=http://bit.ly/bpA8jU&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a></li><li
class="shr-reddit"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Properly+Set+SVN+svn%3Aexternals+Property+In+SVN+Command+Line&amp;link=http://beerpla.net/2009/06/20/how-to-properly-set-svn-svnexternals-property-in-svn-command-line/&amp;notes=Introduction%0D%0AEvery%20time%20I%20have%20to%20deal%20with%20svn%3Aexternals%20in%20SVN%2C%20I%20forget%20the%20command%20line%20syntax.%20Every%20single%20damn%20time.%20Normally%2C%20I%20use%20SVN%20GUI%20clients%2C%20such%20as%20SmartSVN%2C%20which%20make%20it%20very%20simple%20to%20add%20an%20svn%3Aexternals%20property.%20But%20for%20command%20line%2C%20it%20always%20takes%20looking%20at%2025%20different%20si&amp;short_link=http://bit.ly/bpA8jU&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a></li><li
class="shr-hackernews"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Properly+Set+SVN+svn%3Aexternals+Property+In+SVN+Command+Line&amp;link=http://beerpla.net/2009/06/20/how-to-properly-set-svn-svnexternals-property-in-svn-command-line/&amp;notes=Introduction%0D%0AEvery%20time%20I%20have%20to%20deal%20with%20svn%3Aexternals%20in%20SVN%2C%20I%20forget%20the%20command%20line%20syntax.%20Every%20single%20damn%20time.%20Normally%2C%20I%20use%20SVN%20GUI%20clients%2C%20such%20as%20SmartSVN%2C%20which%20make%20it%20very%20simple%20to%20add%20an%20svn%3Aexternals%20property.%20But%20for%20command%20line%2C%20it%20always%20takes%20looking%20at%2025%20different%20si&amp;short_link=http://bit.ly/bpA8jU&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a></li><li
class="shr-delicious"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Properly+Set+SVN+svn%3Aexternals+Property+In+SVN+Command+Line&amp;link=http://beerpla.net/2009/06/20/how-to-properly-set-svn-svnexternals-property-in-svn-command-line/&amp;notes=Introduction%0D%0AEvery%20time%20I%20have%20to%20deal%20with%20svn%3Aexternals%20in%20SVN%2C%20I%20forget%20the%20command%20line%20syntax.%20Every%20single%20damn%20time.%20Normally%2C%20I%20use%20SVN%20GUI%20clients%2C%20such%20as%20SmartSVN%2C%20which%20make%20it%20very%20simple%20to%20add%20an%20svn%3Aexternals%20property.%20But%20for%20command%20line%2C%20it%20always%20takes%20looking%20at%2025%20different%20si&amp;short_link=http://bit.ly/bpA8jU&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a></li><li
class="shr-stumbleupon"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Properly+Set+SVN+svn%3Aexternals+Property+In+SVN+Command+Line&amp;link=http://beerpla.net/2009/06/20/how-to-properly-set-svn-svnexternals-property-in-svn-command-line/&amp;notes=Introduction%0D%0AEvery%20time%20I%20have%20to%20deal%20with%20svn%3Aexternals%20in%20SVN%2C%20I%20forget%20the%20command%20line%20syntax.%20Every%20single%20damn%20time.%20Normally%2C%20I%20use%20SVN%20GUI%20clients%2C%20such%20as%20SmartSVN%2C%20which%20make%20it%20very%20simple%20to%20add%20an%20svn%3Aexternals%20property.%20But%20for%20command%20line%2C%20it%20always%20takes%20looking%20at%2025%20different%20si&amp;short_link=http://bit.ly/bpA8jU&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a></li><li
class="shr-mail"> <a
href="http://www.shareaholic.com/api/share/?title=How%20To%20Properly%20Set%20SVN%20svn%3Aexternals%20Property%20In%20SVN%20Command%20Line&amp;link=http://beerpla.net/2009/06/20/how-to-properly-set-svn-svnexternals-property-in-svn-command-line/&amp;notes=Introduction%0D%0AEvery%20time%20I%20have%20to%20deal%20with%20svn%3Aexternals%20in%20SVN%2C%20I%20forget%20the%20command%20line%20syntax.%20Every%20single%20damn%20time.%20Normally%2C%20I%20use%20SVN%20GUI%20clients%2C%20such%20as%20SmartSVN%2C%20which%20make%20it%20very%20simple%20to%20add%20an%20svn%3Aexternals%20property.%20But%20for%20command%20line%2C%20it%20always%20takes%20looking%20at%2025%20different%20si&amp;short_link=http://bit.ly/bpA8jU&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=201&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a></li></ul><div
style="clear: both;"></div></div> Similar Posts:<ul><li><a
href="http://beerpla.net/2010/02/20/how-to-view-a-specific-svn-revision-in-your-browser/" rel="bookmark" title="February 20, 2010">How To View A Specific SVN Revision In Your Browser</a></li><li><a
href="http://beerpla.net/2008/06/16/how-to-svn-update-all-your-wordpress-plugins-in-one-go/" rel="bookmark" title="June 16, 2008">How To SVN Update All Your WordPress Plugins In One Go</a></li><li><a
href="http://beerpla.net/2011/11/16/how-to-disableblock-external-http-requests-in-wordpress/" rel="bookmark" title="November 16, 2011">How To: Disable/Block External HTTP Requests In WordPress</a></li><li><a
href="http://beerpla.net/2008/03/29/beer-planet-upgraded-to-wordpress-25/" rel="bookmark" title="March 29, 2008">Beer Planet Upgraded To WordPress 2.5</a></li><li><a
href="http://beerpla.net/2010/03/06/how-to-show-hiddeninvisible-files-in-total-commander-both-locally-and-on-an-ftp-server/" rel="bookmark" title="March 6, 2010">How To Show Hidden/Invisible Files In Total Commander, Both Locally And On An FTP Server</a></li></ul><p><a
class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbeerpla.net%2F2009%2F06%2F20%2Fhow-to-properly-set-svn-svnexternals-property-in-svn-command-line%2F&amp;title=How%20To%20Properly%20Set%20SVN%20svn%3Aexternals%20Property%20In%20SVN%20Command%20Line" id="wpa2a_16"><img
src="http://beerpla.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded> <wfw:commentRss>http://beerpla.net/2009/06/20/how-to-properly-set-svn-svnexternals-property-in-svn-command-line/feed/</wfw:commentRss> <slash:comments>30</slash:comments> </item> <item><title>Essential Firefox Extensions (Plugins, Add-Ons) &#8211; A Comprehensive Guide :: Part 2 :: Pragmatic Extensions</title><link>http://beerpla.net/2009/06/10/essential-firefox-extensions-plugins-add-ons-a-comprehensive-guide-part-2-pragmatic-extensions/</link> <comments>http://beerpla.net/2009/06/10/essential-firefox-extensions-plugins-add-ons-a-comprehensive-guide-part-2-pragmatic-extensions/#comments</comments> <pubDate>Wed, 10 Jun 2009 18:13:00 +0000</pubDate> <dc:creator>Artem Russakovskii</dc:creator> <category><![CDATA[My Favorites]]></category> <category><![CDATA[Stuff]]></category> <category><![CDATA[Technology]]></category> <category><![CDATA[Tutorials]]></category> <category><![CDATA[Twitter]]></category> <category><![CDATA[addon]]></category> <category><![CDATA[all-in-one gestures]]></category> <category><![CDATA[collection]]></category> <category><![CDATA[download statusbar]]></category> <category><![CDATA[extension]]></category> <category><![CDATA[Firefox]]></category> <category><![CDATA[google gears]]></category> <category><![CDATA[google toolbar]]></category> <category><![CDATA[greasemonkey]]></category> <category><![CDATA[gtranslate]]></category> <category><![CDATA[iimmgg tools]]></category> <category><![CDATA[linkification]]></category> <category><![CDATA[list]]></category> <category><![CDATA[opendownload]]></category> <category><![CDATA[plugin]]></category> <category><![CDATA[pragmatic]]></category> <category><![CDATA[quickrestart]]></category> <category><![CDATA[remove cookie(s) for site]]></category> <category><![CDATA[resizable textarea]]></category> <category><![CDATA[searchstatus]]></category> <category><![CDATA[seo toolbar]]></category> <category><![CDATA[show myip]]></category> <category><![CDATA[showip]]></category> <category><![CDATA[signature]]></category> <category><![CDATA[tab mix plus]]></category> <category><![CDATA[tryagain]]></category> <category><![CDATA[view cookies]]></category> <guid
isPermaLink="false">http://beerpla.net/?p=779</guid> <description><![CDATA[<h1>Introduction</h1><p>Welcome to part 2 of the Essential Firefox Extensions And Tips – A Comprehensive Guide series. In this article I’m going to describe a number of time saving pragmatic extensions that make me a better, faster, more efficient browser user (browserer?).</p><h1>Pragmatic Extensions</h1><h2><a
href="http://addons.mozilla.org/firefox/addon/12">All-in-One Gestures</a></h2><p>All-in-One Gestures introduces customizable gestures for all kinds of actions. To perform a gesture, hold the right (by default) button and move the mouse in the specified direction, drawing the needed shape.</p><p><div
class="note"><div
class="noteclassic">Btw, I believe Opera has gestures without any extensions, so Opera users should feel right at home using All-in-One Gestures.</div></div></p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image361.png" class="lightview" rel="gallery['779']" title="image_thumb12"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb12" alt="image_thumb12" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb12.png" width="349" height="454" /></a></p><p>I use it mostly for 3 things: history back/forward and close tab (see below). Once you start using gestures, there is...<div
class=clear></div> <a
href="http://beerpla.net/2009/06/10/essential-firefox-extensions-plugins-add-ons-a-comprehensive-guide-part-2-pragmatic-extensions/" class="read_more"><div
class=excerpt-end>Read the rest of this article &#187;</div></a></p>]]></description> <content:encoded><![CDATA[<h1>Introduction</h1><p>Welcome to part 2 of the Essential Firefox Extensions And Tips – A Comprehensive Guide series. In this article I’m going to describe a number of time saving pragmatic extensions that make me a better, faster, more efficient browser user (browserer?).</p><h1>Pragmatic Extensions</h1><h2><a
href="http://addons.mozilla.org/firefox/addon/12">All-in-One Gestures</a></h2><p>All-in-One Gestures introduces customizable gestures for all kinds of actions. To perform a gesture, hold the right (by default) button and move the mouse in the specified direction, drawing the needed shape.</p><p><div
class="note"><div
class="noteclassic">Btw, I believe Opera has gestures without any extensions, so Opera users should feel right at home using All-in-One Gestures.</div></div></p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image361.png" class="lightview" rel="gallery['779']" title="image_thumb12"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb12" alt="image_thumb12" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb12.png" width="349" height="454" /></a></p><p>I use it mostly for 3 things: history back/forward and close tab (see below). Once you start using gestures, there is no going back.</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image391.png" class="lightview" rel="gallery['779']" title="image_thumb131"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb131" alt="image_thumb131" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb131.png" width="385" height="242" /></a></p><h2><a
href="https://addons.mozilla.org/en-US/firefox/addon/26">Download Statusbar</a></h2><p>Download Statusbar is a handy extension that will show your downloads on a dedicated bar right above the status bar. It also adds a much needed “Delete from system” option to each download (why, Firefox, would you not give me an option to delete my downloads at all?). The Download Statusbar only shows up if there’s at least one download not dismissed yet. Double clicking on a finished file will both launch and remove it from the bar.</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image31%5B2%5D.png" class="lightview" rel="gallery['779']" title="image_thumb1"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb1" alt="image_thumb1" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb1.png" width="655" height="245" /></a></p><p
align="center"><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image6%5B1%5D.png" class="lightview" rel="gallery['779']" title="image_thumb21[1]"><img
style="display: inline" title="image_thumb21[1]" alt="image_thumb21[1]" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb211.png" width="182" height="180" /></a></p><h2><a
href="https://addons.mozilla.org/en-US/firefox/addon/207">OpenDownload</a></h2><p>Running downloaded files without saving them is probably the only Internet Explorer feature I actually missed, until I found OpenDownload that is. This extension will give you an option to launch a download upon completion in addition to just saving it. I don’t have to worry about finding and deleting it from my system later as it goes to Firefox’s temporary folder.</p><p><a
href="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image.png" class="lightview" rel="gallery['779']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb.png" width="439" height="412" /></a></p><h2><a
href="https://addons.mozilla.org/en-US/firefox/addon/1122">Tab Mix Plus</a></h2><p>This extension is very powerful and versatile. It controls various aspects of the browser tabs, windows, session, and mouse. Here are the settings I find useful:</p><ul><li>open links that open in a new window in a new tab instead</li><li>open all javascript popups in tabs (I hate popups)</li><li>in fact, I enable the single window mode, in which all attempts to open a new window – by webpages or by you, including starting a new Firefox – will be redirected to a new tab</li><li>highlight unread tabs, which would italicize the tab titles of pages that had something new loaded since you last opened them</li><li>show progress meter on tabs</li><li>close tab button on all tabs (instead of a single one on the right side)</li><li>hide the <em>new tab </em>button that occupies extra space</li><li>customize the tab menu options</li></ul><p>Here are some option screens:</p><p
align="center"><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image311.png" class="lightview" rel="gallery['779']" title="image_thumb111"><img
style="display: inline" title="image_thumb111" alt="image_thumb111" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb111.png" width="261" height="286" /></a> <a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image9%5B1%5D.png" class="lightview" rel="gallery['779']" title="image_thumb3"><img
style="display: inline" title="image_thumb3" alt="image_thumb3" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb3.png" width="261" height="286" /></a></p><p
align="center"><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image121%5B1%5D.png" class="lightview" rel="gallery['779']" title="image_thumb4[1]"><img
style="display: inline" title="image_thumb4[1]" alt="image_thumb4[1]" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb41_3.png" width="261" height="284" /></a> <a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image15.png" class="lightview" rel="gallery['779']" title="image_thumb5"><img
style="display: inline" title="image_thumb5" alt="image_thumb5" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb5.png" width="208" height="240" /></a></p><p
align="center"><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image121.png" class="lightview" rel="gallery['779']" title="image_thumb41"><img
style="display: inline" title="image_thumb41" alt="image_thumb41" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb41.png" width="261" height="95" /></a></p><h2><a
href="http://toolbar.google.com/">Google Toolbar</a></h2><p>The google toolbar is historically sort of a must for me. It adds a couple of nice features on top of the default search box and frees the latter, so that I can set it to another search engine (IMDB in my case). With the amount of searching one does on google daily, the sheer number of clicks and keystrokes saved will be in the thousands. Daily. I search a lot, OK?</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image181.png" class="lightview" rel="gallery['779']" title="image_thumb6"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb6" alt="image_thumb6" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb6.png" width="674" height="33" /></a></p><p>In addition to providing an always present search bar, the toolbar carries a number of useful features, such as live search suggest, instant PageRank (unneeded if you install SEO Toolbar or SearchStatus), search Gmail and News buttons (and many others), clickable search terms good for in-page search, highlighting of the said terms, a simple autofill (though I use an irreplaceable AI Roboform instead), spell check (Firefox has one built-in now), translate (I use the gTranslate extension instead). All in all, one can do without google toolbar, depending on the needed functionality.</p><p><div
class="note"><div
class="notetip">Don’t be afraid to install more toolbars than you need at any given time as you can always hide the ones you don’t want to see by right clicking the top menu bar:</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image6.png" class="lightview" rel="gallery['779']" title="image_thumb2[1]"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb2[1]" alt="image_thumb2[1]" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb21.png" width="275" height="204" /></a></div></div></p><h2><a
href="https://addons.mozilla.org/en-US/firefox/addon/190">Linkification</a></h2><p>Linkification is a really pragmatic extension. It hyperlinks any url-looking strings that aren’t already hyperlinked. Take a look.</p><p>Linkification off: <a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image241.png" class="lightview" rel="gallery['779']" title="image_thumb8"><img
style="display: inline" title="image_thumb8" alt="image_thumb8" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb8.png" width="36" height="31" /></a></p><p>&#160;</p><p><a
href="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsA_14941/image_4.png" class="lightview" rel="gallery['779']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsA_14941/image_thumb_4.png" width="701" height="114" /></a></p><p>Linkification on: <a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image27.png" class="lightview" rel="gallery['779']" title="image_thumb9[1]"><img
style="display: inline" title="image_thumb9[1]" alt="image_thumb9[1]" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb91.png" width="34" height="29" /></a></p><p><a
href="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsA_14941/image_5.png" class="lightview" rel="gallery['779']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsA_14941/image_thumb_5.png" width="701" height="114" /></a></p><p>The extension has a variety of options to satisfy even savvy users but I found that defaults work really well. If for some reason you want to momentarily turn off linkification, just tap the <a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image27.png" class="lightview" rel="gallery['779']" title="image_thumb9[1]"><img
style="display: inline" title="image_thumb9[1]" alt="image_thumb9[1]" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb91_3.png" width="34" height="29" /></a> button in the tray and the page will revert to its original form. By the way, if you really want to put it to the test, install it and head over to the comprehensive <a
href="http://yellow5.us/firefox/testcases.txt">test case list</a>.</p><h2><a
href="https://addons.mozilla.org/en-US/firefox/addon/748">Greasemonkey</a></h2><p>Greasemonkey is the most versatile extension available for Firefox, as it’s essentially a whole framework for scripts that can manipulate any aspect of any page. Head over to <a
href="http://userscripts.org">userscripts.org</a> and take a look at the myriads of scripts written and submitted by other Greasemonkey users.</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image36.png" class="lightview" rel="gallery['779']" title="image_thumb121"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb121" alt="image_thumb121" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb121.png" width="606" height="526" /></a></p><p>Still not clear what these can do? Let me list some that I use and their brief functionality:</p><ul><li><a
href="http://userscripts.org/scripts/show/9004">Digg Top 10 Direct</a> – automatically rewrites the digg’s top 10 links to go straight to the articles, instead of the digg comment page. Clicking on the digg icon still goes to the comments page though, and I think this is the ideal functionality.</li><li><a
href="http://userscripts.org/scripts/show/792">Google Image Relinker</a> – rewrites google image search urls to go directly to the corresponding images rather than the page they were found on.</li><li><a
href="http://userscripts.org/scripts/show/13333">YousableTubeFix</a> – adds a small smart menu that dynamically shows which qualities a given youtube video is available in and automatically picks the best one, adds download links to the each quality (FLV and MP4), resizes the player to your liking, and a few other things. It is also quite customizable.</li></ul><p><a
href="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb1311.png" class="lightview" rel="gallery['779']" title="image_thumb13[1]"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb13[1]" alt="image_thumb13[1]" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb131_3.png" width="680" height="353" /></a></p><ul><li>The now world famous <a
href="http://userscripts.org/scripts/show/40617" rel="nofollow" target="_blank">Troy&#039;s Twitter Script</a> that I <a
href="http://beerpla.net/2009/03/17/twitter-autocomplete-auto-url-expansion-auto-url-shortener-auto-pagination-rt-button-nested-replies-inline-media-embed-search-tabs-and-more/" target="_blank">reviewed</a> a few week ago &#8211; it does everything Twitter currently doesn&#039;t, including Autocomplete, Auto URL Expansion, Auto URL Shortener, RT Button, Nested Replies, Inline Media Embed, Search Tabs, and more.</li><li><a
href="http://gr.aiderss.com/">AideRSS Google Reader Integration</a> – adds AideRSS feed rank to each entry in Google Reader, which allows eyeballing more important articles within a few seconds of seeing a feed. Also available as a separate extension for those not using Greasemonkey.</li></ul><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image42.png" class="lightview" rel="gallery['779']" title="image_thumb14"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb14" alt="image_thumb14" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb14.png" width="512" height="348" /></a></p><h2><a
href="https://addons.mozilla.org/en-US/firefox/addon/4530">Show MyIP</a></h2><p>Show MyIP does exactly what it says: it displays your current IP. What I like about it is that it queries for it on demand, after you left or right click the icon. This approach avoids unnecessary queries going around.</p><p
align="center"><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image9.png" class="lightview" rel="gallery['779']" title="image_thumb3[1]"><img
style="display: inline" title="image_thumb3[1]" alt="image_thumb3[1]" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb31_3.png" width="49" height="37" /></a> -&gt; <a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image12%5B1%5D.png" class="lightview" rel="gallery['779']" title="image_thumb4"><img
style="display: inline" title="image_thumb4" alt="image_thumb4" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb4.png" width="51" height="35" /></a> -&gt; <a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image21%5B1%5D.png" class="lightview" rel="gallery['779']" title="image_thumb7[1]"><img
style="display: inline" title="image_thumb7[1]" alt="image_thumb7[1]" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb71_3.png" width="110" height="32" /></a></p><p>What I don’t like about it is that there seems to be no way to copy this IP to clipboard. Ideally, a right click option would work great (that’s the way the next extension ShowIP does it). I left a comment about this fact on the extension’s page, so hopefully the author will implement it shortly.</p><p>Also, if an error occurs, be prepared for some good old German cursing:</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image18%5B1%5D.png" class="lightview" rel="gallery['779']" title="image_thumb6[1]"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb6[1]" alt="image_thumb6[1]" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb61.png" width="323" height="116" /></a></p><h2><a
href="https://addons.mozilla.org/en-US/firefox/addon/590">ShowIP</a></h2><p>ShowIP, in contrast to Show MyIP, actually displays the IP(s) of the website I’m currently on. It then allows me to copy it (or all of them) into clipboard and provides quick information links, such as whois, ip2country, and traceroute.</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image24%5B1%5D.png" class="lightview" rel="gallery['779']" title="image_thumb8[1]"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb8[1]" alt="image_thumb8[1]" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb81.png" width="406" height="220" /></a></p><p>ShowIP is useful for both developers who want to know which dev server they’re currently working on as well as regular users who are interested in the location or whois of a site they’re visiting.</p><p><div
class="note"><div
class="notetip">If only the country where a site is hosted is needed, then you are probably better off using Flagfox, described in part 3 of the series.</div></div></p><h2><a
href="https://addons.mozilla.org/en-US/firefox/addon/8290">iimmgg.com Tools</a></h2><p><a
href="http://iimmgg.com">iimmgg.com</a> is a picture hosting site similar to <a
href="http://tinypic.com" rel="nofollow">tinypic.com</a> and <a
href="http://photobucket.com" rel="nofollow">photobucket.com</a>. Generally, it allows quick picture uploading with thumbnail creation. This extension makes this process insanely simple, I can’t say enough praise how good my user experience was with this extension. Check this out.</p><p>The extension has 2 modes:</p><p>1. If you right click on a picture, there’s a single option to upload it to <a
href="http://iimmgg.com">iimmgg.com</a>:</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image39.png" class="lightview" rel="gallery['779']" title="image_thumb13"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb13" alt="image_thumb13" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb13.png" width="218" height="85" /></a></p><p>As soon as you click Upload, you are almost immediately redirected to a <a
href="http://www.iimmgg.com/image/5c5391b463ad2ca5678a596be8cd3889">page on iimmgg.com with your picture</a> and thumbnails already generated. Swoosh, that was fast. Internally, the extension sends the user to something like <a
title="http://www.iimmgg.com/upload.php?u=http%3A//beerpla.net/wp-content/uploads/BenefitsofMUNI_1E7D/image.png&amp;r=about:blank&amp;s=1&amp;t=" href="http://www.iimmgg.com/upload.php?u=http%3A//beerpla.net/wp-content/uploads/BenefitsofMUNI_1E7D/image.png&amp;r=about:blank&amp;s=1&amp;t=">http://www.iimmgg.com/upload.php?u=http%3A//beerpla.net/wp-content/uploads/BenefitsofMUNI_1E7D/image.png&amp;r=about:blank&amp;s=1&amp;t=</a>, which then redirects to the <a
href="http://www.iimmgg.com/image/5c5391b463ad2ca5678a596be8cd3889">final picture</a>.</p><p>2. If you right click anywhere else on the page, there are now 3 ways to capture an image to <a
href="http://iimmgg.com">iimmgg.com</a>:</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image27%5B1%5D.png" class="lightview" rel="gallery['779']" title="image_thumb9"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb9" alt="image_thumb9" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb9.png" width="334" height="69" /></a></p><p>Select either of the 3 options: Visible Page, Full Page, or Select Area. Let’s say I select Select Area. A resizable overlay that I can drag it around to select the area I want shows up. Brilliant.</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image30.png" class="lightview" rel="gallery['779']" title="image_thumb10"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb10" alt="image_thumb10" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb10.png" width="522" height="317" /></a></p><p>After I figure out what I want to capture, I click on the Capture Selected Area button in a bar that just showed up (btw, the styling of both the bar and the selector are very reminiscent of the Web Developer extension):</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image33.png" class="lightview" rel="gallery['779']" title="image_thumb11[2]"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb11[2]" alt="image_thumb11[2]" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb112_3.png" width="753" height="30" /></a></p><p>The next and final prompt shows up with the Image Format selection (PNG – High Quality, JPEG – High Quality, JPEG – Medium Quality, and JPEG – Low Quality), SFW selection, and capture name:</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image42%5B1%5D.png" class="lightview" rel="gallery['779']" title="image_thumb14[1]"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb14[1]" alt="image_thumb14[1]" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb141.png" width="509" height="307" /></a></p><p>Click Capture and upload (or save to disk, which is not as fun but also useful):</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image45.png" class="lightview" rel="gallery['779']" title="image_thumb15"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb15" alt="image_thumb15" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb15.png" width="202" height="125" /></a></p><p>Voila – <a
href="http://www.iimmgg.com/image/c18960b613b1ee22ce9818e02d9dcb22">the picture</a> is ready for sharing.</p><p><div
class="note"><div
class="noteclassic"><a
href="http://iimmgg.com">iimmgg.com</a> doesn’t support hotlinking.</div></div></p><h2><a
href="https://addons.mozilla.org/en-US/firefox/addon/1595">Remove Cookie(s) for Site</a></h2><p>Remove Cookie(s) for Site does exactly what it says – removes all cookies that belong to a domain and all subdomains of the site you’re currently on. Right click anywhere on the page, click Remove Cookie(s) for Site and the taskbar will update with the number of cookies removed.</p><p
align="center"><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image48.png" class="lightview" rel="gallery['779']" title="image_thumb16"><img
style="display: inline" title="image_thumb16" alt="image_thumb16" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb16.png" width="230" height="72" /></a> -&gt; <a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image51.png" class="lightview" rel="gallery['779']" title="image_thumb17[1]"><img
style="display: inline" title="image_thumb17[1]" alt="image_thumb17[1]" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb171.png" width="140" height="24" /></a></p><p>You can also pull out a nice little button to a location of your choosing, like so:</p><p
align="center"><a
href="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsA_14941/image.png" class="lightview" rel="gallery['779']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsA_14941/image_thumb.png" width="241" height="82" /></a></p><p>Oftentimes I don’t even bother looking for a logout button – deleting all cookies is a lot faster.</p><h2><a
href="https://addons.mozilla.org/en-US/firefox/addon/578">Signature</a></h2><p>Signature, as you probably guessed, inserts a signature into a text form. It supports as many signatures as you want. The uses can be versatile, here are just some:</p><ul><li>the obvious “first and last name” signature</li><li>a full signature with your site link which can help in site promotion. Mine, for example, is<ul>Artem <br
/><a
href="http://beerpla.net">http://beerpla.net</a> <br
/><a
href="http://twitter.com/ArtemR">http://twitter.com/ArtemR</a></ul></li><li>disclaimers</li><li>coined replies to emails</li><li>various addresses</li><li>repetitive urls</li><li>any other frequently used set of strings that you have to continuously copy-paste</li></ul><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image54.png" class="lightview" rel="gallery['779']" title="image_thumb18[1]"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb18[1]" alt="image_thumb18[1]" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb181.png" width="350" height="141" /></a></p><p><div
class="note"><div
class="notetip">Don’t use a mouse when inserting a signature. Due to the fact that Insert Signature conveniently places itself at the top of the menu, it’s much quicker to use the keyboard button that simulates right click (most laptops and keyboards have it), click down, then right, then select signature, and press Enter.</div></div></p><h2><a
href="https://addons.mozilla.org/en-US/firefox/addon/3559">QuickRestart</a></h2><p>QuickRestart adds a Restart Firefox option to the File menu. This is quite handy, especially when you have a lot of extensions and it may take Firefox 30 seconds to shut down.</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image57.png" class="lightview" rel="gallery['779']" title="image_thumb19"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb19" alt="image_thumb19" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb19.png" width="200" height="153" /></a></p><p><strike>The only downside of this is that it seems to lose the protected and locked tab properties set by Tab Mix Plus. Shutting down Firefox and starting it manually does not lose such properties.</strike> This is no longer a problem in the latest Tab Mix Plus version.</p><h2><a
href="https://addons.mozilla.org/en-US/firefox/addon/3818">Resizeable Textarea</a></h2><p>Ever seen a comment box this big and got annoyed by the idiot who designed it?</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image60.png" class="lightview" rel="gallery['779']" title="image_thumb20"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb20" alt="image_thumb20" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb20.png" width="369" height="205" /></a></p><p>Fear not, as Resizeable Textarea adds resize capabilities to any text area. Move the cursor to the bottom or right borders, or the bottom-right corner, and drag all you want:</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image63%5B1%5D.png" class="lightview" rel="gallery['779']" title="image_thumb21[2]"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb21[2]" alt="image_thumb21[2]" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb212.png" width="482" height="256" /></a></p><h2><a
href="https://addons.mozilla.org/en-US/firefox/addon/2462" rel="nofollow" target="_blank">TryAgain</a></h2><p>TryAgain is a great and very simple extension. It retries loading a failed page up to 5 times instead of just sitting there. This screenshot explains everything:</p><p><a
href="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsA_14941/image_3.png" class="lightview" rel="gallery['779']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsA_14941/image_thumb_3.png" width="620" height="410" /></a></p><h2><a
href="https://addons.mozilla.org/en-US/firefox/addon/315">View Cookies</a></h2><p>View Cookies is a simple extension that adds a Cookies tab to the VIew Page Info box. The tab allows viewing, removing, and copying cookie info for the site you’re currently visiting. There is a number of extensions that do similar things, like Firebug and Remove Cookie(s) for Site, but I install View Cookies anyway because its functionality makes sense.</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image69.png" class="lightview" rel="gallery['779']" title="image_thumb23"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb23" alt="image_thumb23" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb23.png" width="218" height="224" /></a></p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image66%5B1%5D.png" class="lightview" rel="gallery['779']" title="image_thumb22"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb22" alt="image_thumb22" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb22.png" width="464" height="438" /></a></p><h2><a
href="http://gears.google.com/">Google Gears</a></h2><p>Google Gears is a very useful extension, and it’s a shame that a lot of people don’t seem to understand what it does. Think of it as simply a secure local cache (developed by Google). Quite a few popular websites support Gears, and I think it is best to just give a few examples of actual usage.</p><p><div
class="note"><div
class="noteclassic">One limitation of Gears that I am not sure can be overcome yet is you have to open a Gears-enabled site while you still have Internet connection. Once it is open, you are free to lose your Internet connection, and Gears will kick in. This is why I always keep a page with Google Calendar and rememberthemilk open.</div></div></p><ul><li>gmail.com – gmail rolled out offline email support quite recently, which is the most useful implementation of Gears to date.</li><li>wordpress – if you host a wordpress blog, you can opt in to cache a few hundred files in Gears that will speed up the wordpress admin interface. WordPress calls this Turbo mode.</li><li>rememberthemilk.com – RTM, the most advanced and functional TODO list site, offers an excellent implementation of Gears. If you lose your connection, you are free to create, modify, and delete any tasks you want – all the changes will be synchronized when you go back online.</li><li>google reader – the reader can download feed items for offline viewing but the implementation is not very good – you have to explicitly go offline by clicking a <a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image84%5B1%5D.png" class="lightview" rel="gallery['779']" title="image_thumb28"><img
style="display: inline" title="image_thumb28" alt="image_thumb28" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb28.png" width="16" height="16" /></a> button, at which point Gears will download 2000 items.</li></ul><p><div
class="note"><div
class="noteclassic">Installing Gears on its own will technically not do anything for you. You will need to enable support for each site individually. For example, Offline gmail is available from the gmail Labs by clicking on <a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image102.png" class="lightview" rel="gallery['779']" title="image_thumb34"><img
style="display: inline" title="image_thumb34" alt="image_thumb34" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb34.png" width="17" height="16" /></a> in the top right corner.</div></div></p><p>From a technical standpoint, Gears uses a local SQLite database for storage. The Gears security model is described <a
href="http://code.google.com/apis/gears/security.html">here</a>.</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image72.png" class="lightview" rel="gallery['779']" title="image_thumb24[1]"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb24[1]" alt="image_thumb24[1]" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb241.png" width="442" height="544" /></a></p><h2><a
href="https://addons.mozilla.org/en-US/firefox/addon/918">gTranslate</a></h2><p>GTranslate translates selected text into a language of your choice. It can be set to autodetect the source language or forced to a specific one. I must say so far it worked very well and detected the source language automatically without flaw.</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image93.png" class="lightview" rel="gallery['779']" title="image_thumb31[1]"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb31[1]" alt="image_thumb31[1]" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb311.png" width="246" height="246" /></a></p><p>Once the translation is received, gTranslate shows it and links to the <a
href="http://www.google.com/translate_t?text=вы трус и подлец&amp;langpair=ru|en&amp;ie=UTF8" rel="nofollow">google translate page</a>:</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image96.png" class="lightview" rel="gallery['779']" title="image_thumb32"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb32" alt="image_thumb32" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb32.png" width="495" height="168" /></a></p><p>Additionally, if the selected text is in an editable field, gTranslate will offer an option to replace the selection with its translation:</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image99.png" class="lightview" rel="gallery['779']" title="image_thumb33"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb33" alt="image_thumb33" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb33.png" width="454" height="83" /></a></p><h2><a
href="https://addons.mozilla.org/en-US/firefox/addon/321">SearchStatus</a></h2><p>SearchStatus is a useful and relatively simple SEO extension. It shows a quick roundup of page rankings for the current page from <a
href="http://www.google.com" rel="nofollow">Google</a> (PageRank), <a
href="http://www.alexa.com" rel="nofollow">Alexa</a>, and <a
href="http://www.compete.com" rel="nofollow">Compete</a>. This lets me quickly check how popular [or lame] the site I’m on is and keep tabs on my own online properties. Right clicking each metric grants access to a few useful shortcuts and for the <span
style="text-decoration: line-through">lazy</span> pragmatic, right clicking the little <a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image72%5B1%5D.png" class="lightview" rel="gallery['779']" title="image_thumb24"><img
style="display: inline" title="image_thumb24" alt="image_thumb24" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb24.png" width="35" height="32" /></a> symbol has such links as Show Whois, Show robots.txt, Show sitemap.xml, and others.</p><p
align="center"><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image69%5B1%5D.png" class="lightview" rel="gallery['779']" title="image_thumb23[1]"><img
style="display: inline" title="image_thumb23[1]" alt="image_thumb23[1]" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb231.png" width="299" height="285" /></a> <a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image45%5B1%5D.png" class="lightview" rel="gallery['779']" title="image_thumb15[1]"><img
style="display: inline" title="image_thumb15[1]" alt="image_thumb15[1]" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb151.png" width="138" height="58" /></a> <a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image511.png" class="lightview" rel="gallery['779']" title="image_thumb17"><img
style="display: inline" title="image_thumb17" alt="image_thumb17" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb17.png" width="250" height="163" /></a></p><p>Another not so obvious but useful feature of this extension is the ability to mark rel=’nofollow’ links. You rightfully obsessed SEO junkies can quickly see which parts of your site leak the valuable link juice and which ones don’t. Take a look at these nofollow links that SearchStatus marked with light red background:</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image54%5B1%5D.png" class="lightview" rel="gallery['779']" title="image_thumb18"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb18" alt="image_thumb18" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb18.png" width="516" height="299" /></a></p><h2><a
href="http://tools.seobook.com/firefox/seo-for-firefox.html">SEO Toolbar</a></h2><p>This toolbar is probably going to be useful for relatively hardcore SEO fiends as most people would do just fine with the above SearchStatus extension. The toolbar seems a bit bulky and slow but has a ton of SEO related functionality. It is, of course, free. It shows Google PageRank, Yahoo linkdomain, Yahoo page links, DMOZ directory, Yahoo directory, Best of the web directory, Archive.org, Compete uniques, and SEMRush traffic value:</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image75.png" class="lightview" rel="gallery['779']" title="image_thumb25"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb25" alt="image_thumb25" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb25.png" width="749" height="33" /></a></p><p>It also links to a bunch of tools, like quantcast analysis, google trends, and alexa:</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image63.png" class="lightview" rel="gallery['779']" title="image_thumb211"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb211" alt="image_thumb211" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb211_3.png" width="192" height="291" /></a></p><p>For a quick, more in-depth, exportable overview, press the info button <a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image90.png" class="lightview" rel="gallery['779']" title="image_thumb30"><img
style="display: inline" title="image_thumb30" alt="image_thumb30" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb30.png" width="25" height="24" /></a>:</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image87.png" class="lightview" rel="gallery['779']" title="image_thumb29"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb29" alt="image_thumb29" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb29.png" width="546" height="429" /></a></p><p>However, the 2 most useful to me features are probably the Rank Checker <a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image84.png" class="lightview" rel="gallery['779']" title="image_thumb28[1]"><img
style="display: inline" title="image_thumb28[1]" alt="image_thumb28[1]" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb281.png" width="46" height="35" /></a>:</p><p><a
href="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb221_3.png" class="lightview" rel="gallery['779']" title="image_thumb22[1]"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb22[1]" alt="image_thumb22[1]" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb221.png" width="680" height="314" /></a></p><p>and Compare Sites <a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image81.png" class="lightview" rel="gallery['779']" title="image_thumb27"><img
style="display: inline" title="image_thumb27" alt="image_thumb27" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb27.png" width="36" height="31" /></a>:</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image78.png" class="lightview" rel="gallery['779']" title="image_thumb26"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb26" alt="image_thumb26" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb26.png" width="488" height="789" /></a></p><p><div
class="note"><div
class="notetip">I customized the toolbar and removed the useless search box and a few pointless buttons by dragging them out:</p><p><a
href="file:///C:/Documents%20and%20Settings/Artem/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles3D5156FB/image93%5B1%5D.png" class="lightview" rel="gallery['779']" title="image_thumb31"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image_thumb31" alt="image_thumb31" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOn_1015B/image_thumb31.png" width="322" height="206" /></a></div></div></p><h1>End of Part 2</h1><p>This marks the end of part 2 in the series. I expect this page to update pretty often, whenever I find new extensions, so bookmark it using your favorite method by clicking the button below.</p><p>The next part in the series (available soon) will describe a number of useful web development extensions.</p><div
class="shr-bookmarks shr-bookmarks-expand"><ul
class="socials"><li
class="shr-twitter"> <a
href="http://www.shareaholic.com/api/share/?title=Essential+Firefox+Extensions+%28Plugins%2C+Add-Ons%29+%26ndash%3B+A+Comprehensive+Guide+%3A%3A+Part+2+%3A%3A+Pragmatic+Extensions&amp;link=http://beerpla.net/2009/06/10/essential-firefox-extensions-plugins-add-ons-a-comprehensive-guide-part-2-pragmatic-extensions/&amp;notes=Introduction%20%20Welcome%20to%20part%202%20of%20the%20Essential%20Firefox%20Extensions%20And%20Tips%20%E2%80%93%20A%20Comprehensive%20Guide%20series.%20In%20this%20article%20I%E2%80%99m%20going%20to%20describe%20a%20number%20of%20time%20saving%20pragmatic%20extensions%20that%20make%20me%20a%20better%2C%20faster%2C%20more%20efficient%20browser%20user%20%28browserer%3F%29.%20%20Pragmatic%20Extensions%20%20All-in-O&amp;short_link=http://bit.ly/aC9xoQ&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a></li><li
class="shr-facebook"> <a
href="http://www.shareaholic.com/api/share/?title=Essential+Firefox+Extensions+%28Plugins%2C+Add-Ons%29+%26ndash%3B+A+Comprehensive+Guide+%3A%3A+Part+2+%3A%3A+Pragmatic+Extensions&amp;link=http://beerpla.net/2009/06/10/essential-firefox-extensions-plugins-add-ons-a-comprehensive-guide-part-2-pragmatic-extensions/&amp;notes=Introduction%20%20Welcome%20to%20part%202%20of%20the%20Essential%20Firefox%20Extensions%20And%20Tips%20%E2%80%93%20A%20Comprehensive%20Guide%20series.%20In%20this%20article%20I%E2%80%99m%20going%20to%20describe%20a%20number%20of%20time%20saving%20pragmatic%20extensions%20that%20make%20me%20a%20better%2C%20faster%2C%20more%20efficient%20browser%20user%20%28browserer%3F%29.%20%20Pragmatic%20Extensions%20%20All-in-O&amp;short_link=http://bit.ly/aC9xoQ&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a></li><li
class="shr-googlebuzz"> <a
href="http://www.shareaholic.com/api/share/?title=Essential+Firefox+Extensions+%28Plugins%2C+Add-Ons%29+%26ndash%3B+A+Comprehensive+Guide+%3A%3A+Part+2+%3A%3A+Pragmatic+Extensions&amp;link=http://beerpla.net/2009/06/10/essential-firefox-extensions-plugins-add-ons-a-comprehensive-guide-part-2-pragmatic-extensions/&amp;notes=Introduction%20%20Welcome%20to%20part%202%20of%20the%20Essential%20Firefox%20Extensions%20And%20Tips%20%E2%80%93%20A%20Comprehensive%20Guide%20series.%20In%20this%20article%20I%E2%80%99m%20going%20to%20describe%20a%20number%20of%20time%20saving%20pragmatic%20extensions%20that%20make%20me%20a%20better%2C%20faster%2C%20more%20efficient%20browser%20user%20%28browserer%3F%29.%20%20Pragmatic%20Extensions%20%20All-in-O&amp;short_link=http://bit.ly/aC9xoQ&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a></li><li
class="shr-reddit"> <a
href="http://www.shareaholic.com/api/share/?title=Essential+Firefox+Extensions+%28Plugins%2C+Add-Ons%29+%26ndash%3B+A+Comprehensive+Guide+%3A%3A+Part+2+%3A%3A+Pragmatic+Extensions&amp;link=http://beerpla.net/2009/06/10/essential-firefox-extensions-plugins-add-ons-a-comprehensive-guide-part-2-pragmatic-extensions/&amp;notes=Introduction%20%20Welcome%20to%20part%202%20of%20the%20Essential%20Firefox%20Extensions%20And%20Tips%20%E2%80%93%20A%20Comprehensive%20Guide%20series.%20In%20this%20article%20I%E2%80%99m%20going%20to%20describe%20a%20number%20of%20time%20saving%20pragmatic%20extensions%20that%20make%20me%20a%20better%2C%20faster%2C%20more%20efficient%20browser%20user%20%28browserer%3F%29.%20%20Pragmatic%20Extensions%20%20All-in-O&amp;short_link=http://bit.ly/aC9xoQ&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a></li><li
class="shr-hackernews"> <a
href="http://www.shareaholic.com/api/share/?title=Essential+Firefox+Extensions+%28Plugins%2C+Add-Ons%29+%26ndash%3B+A+Comprehensive+Guide+%3A%3A+Part+2+%3A%3A+Pragmatic+Extensions&amp;link=http://beerpla.net/2009/06/10/essential-firefox-extensions-plugins-add-ons-a-comprehensive-guide-part-2-pragmatic-extensions/&amp;notes=Introduction%20%20Welcome%20to%20part%202%20of%20the%20Essential%20Firefox%20Extensions%20And%20Tips%20%E2%80%93%20A%20Comprehensive%20Guide%20series.%20In%20this%20article%20I%E2%80%99m%20going%20to%20describe%20a%20number%20of%20time%20saving%20pragmatic%20extensions%20that%20make%20me%20a%20better%2C%20faster%2C%20more%20efficient%20browser%20user%20%28browserer%3F%29.%20%20Pragmatic%20Extensions%20%20All-in-O&amp;short_link=http://bit.ly/aC9xoQ&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a></li><li
class="shr-delicious"> <a
href="http://www.shareaholic.com/api/share/?title=Essential+Firefox+Extensions+%28Plugins%2C+Add-Ons%29+%26ndash%3B+A+Comprehensive+Guide+%3A%3A+Part+2+%3A%3A+Pragmatic+Extensions&amp;link=http://beerpla.net/2009/06/10/essential-firefox-extensions-plugins-add-ons-a-comprehensive-guide-part-2-pragmatic-extensions/&amp;notes=Introduction%20%20Welcome%20to%20part%202%20of%20the%20Essential%20Firefox%20Extensions%20And%20Tips%20%E2%80%93%20A%20Comprehensive%20Guide%20series.%20In%20this%20article%20I%E2%80%99m%20going%20to%20describe%20a%20number%20of%20time%20saving%20pragmatic%20extensions%20that%20make%20me%20a%20better%2C%20faster%2C%20more%20efficient%20browser%20user%20%28browserer%3F%29.%20%20Pragmatic%20Extensions%20%20All-in-O&amp;short_link=http://bit.ly/aC9xoQ&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a></li><li
class="shr-stumbleupon"> <a
href="http://www.shareaholic.com/api/share/?title=Essential+Firefox+Extensions+%28Plugins%2C+Add-Ons%29+%26ndash%3B+A+Comprehensive+Guide+%3A%3A+Part+2+%3A%3A+Pragmatic+Extensions&amp;link=http://beerpla.net/2009/06/10/essential-firefox-extensions-plugins-add-ons-a-comprehensive-guide-part-2-pragmatic-extensions/&amp;notes=Introduction%20%20Welcome%20to%20part%202%20of%20the%20Essential%20Firefox%20Extensions%20And%20Tips%20%E2%80%93%20A%20Comprehensive%20Guide%20series.%20In%20this%20article%20I%E2%80%99m%20going%20to%20describe%20a%20number%20of%20time%20saving%20pragmatic%20extensions%20that%20make%20me%20a%20better%2C%20faster%2C%20more%20efficient%20browser%20user%20%28browserer%3F%29.%20%20Pragmatic%20Extensions%20%20All-in-O&amp;short_link=http://bit.ly/aC9xoQ&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a></li><li
class="shr-mail"> <a
href="http://www.shareaholic.com/api/share/?title=Essential%20Firefox%20Extensions%20%28Plugins%2C%20Add-Ons%29%20%26ndash%3B%20A%20Comprehensive%20Guide%20%3A%3A%20Part%202%20%3A%3A%20Pragmatic%20Extensions&amp;link=http://beerpla.net/2009/06/10/essential-firefox-extensions-plugins-add-ons-a-comprehensive-guide-part-2-pragmatic-extensions/&amp;notes=Introduction%20%20Welcome%20to%20part%202%20of%20the%20Essential%20Firefox%20Extensions%20And%20Tips%20%E2%80%93%20A%20Comprehensive%20Guide%20series.%20In%20this%20article%20I%E2%80%99m%20going%20to%20describe%20a%20number%20of%20time%20saving%20pragmatic%20extensions%20that%20make%20me%20a%20better%2C%20faster%2C%20more%20efficient%20browser%20user%20%28browserer%3F%29.%20%20Pragmatic%20Extensions%20%20All-in-O&amp;short_link=http://bit.ly/aC9xoQ&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=201&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a></li></ul><div
style="clear: both;"></div></div> Similar Posts:<ul><li><a
href="http://beerpla.net/2009/04/11/essential-firefox-extensions-plugins-add-ons-and-tips-a-comprehensive-guide-part-1-tips/" rel="bookmark" title="April 11, 2009">Essential Firefox Extensions (Plugins, Add-Ons) And Tips &ndash; A Comprehensive Guide :: Part 1 :: Tips</a></li><li><a
href="http://beerpla.net/2009/11/11/skype-extension-for-firefox-is-a-piece-of-crap-leaks-memory-hangs-firefox-clubs-baby-seals/" rel="bookmark" title="November 11, 2009">Skype Extension For Firefox Is A Piece Of Crap &#8211; Leaks Memory, Hangs Firefox, Clubs Baby Seals</a></li><li><a
href="http://beerpla.net/2009/05/13/firefox-being-slow-especially-switching-tabs-high-cpu-load-memory-problems-are-you-using-firecookie-for-firebug/" rel="bookmark" title="May 13, 2009">Firefox Being Slow, Especially Switching Tabs, High CPU Load, Memory Problems? Are You Using Firecookie For Firebug?</a></li><li><a
href="http://beerpla.net/2009/02/12/how-to-fight-clickjacking-using-the-recent-twitter-hijacking-as-an-example/" rel="bookmark" title="February 12, 2009">How To Fight Clickjacking (Using The Recent Twitter Hijacking As An Example)</a></li><li><a
href="http://beerpla.net/2008/09/03/thoughts-on-google-chrome/" rel="bookmark" title="September 3, 2008">Thoughts on Google Chrome</a></li></ul><p><a
class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbeerpla.net%2F2009%2F06%2F10%2Fessential-firefox-extensions-plugins-add-ons-a-comprehensive-guide-part-2-pragmatic-extensions%2F&amp;title=Essential%20Firefox%20Extensions%20%28Plugins%2C%20Add-Ons%29%20%26ndash%3B%20A%20Comprehensive%20Guide%20%3A%3A%20Part%202%20%3A%3A%20Pragmatic%20Extensions" id="wpa2a_18"><img
src="http://beerpla.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded> <wfw:commentRss>http://beerpla.net/2009/06/10/essential-firefox-extensions-plugins-add-ons-a-comprehensive-guide-part-2-pragmatic-extensions/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>How To Make Your Site Lightning Fast* By Compressing (deflate/gzip) Your HTML, Javascript, CSS, XML, etc In Apache</title><link>http://beerpla.net/2009/06/09/how-to-make-your-site-lightning-fast-by-compressing-deflategzip-your-html-javascript-css-xml-etc-in-apache/</link> <comments>http://beerpla.net/2009/06/09/how-to-make-your-site-lightning-fast-by-compressing-deflategzip-your-html-javascript-css-xml-etc-in-apache/#comments</comments> <pubDate>Tue, 09 Jun 2009 17:02:00 +0000</pubDate> <dc:creator>Artem Russakovskii</dc:creator> <category><![CDATA[CSS]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[Linux]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Technology]]></category> <category><![CDATA[Tutorials]]></category> <category><![CDATA[Wordpress]]></category> <category><![CDATA[apache]]></category> <category><![CDATA[compress]]></category> <category><![CDATA[compression]]></category> <category><![CDATA[deflate]]></category> <category><![CDATA[fast]]></category> <category><![CDATA[faster]]></category> <category><![CDATA[gzip]]></category> <category><![CDATA[html]]></category> <category><![CDATA[js]]></category> <category><![CDATA[minify]]></category> <category><![CDATA[mod_deflate]]></category> <category><![CDATA[smaller]]></category> <category><![CDATA[text]]></category> <category><![CDATA[xml]]></category> <guid
isPermaLink="false">http://beerpla.net/?p=982</guid> <description><![CDATA[<p><span
style="font-size: xx-small">* Lightning Fast is a blatant exaggeration. Got you to look though, didn&#039;t it?</span></p><h2>Introduction</h2><p>Whether you are a web developer or a self-hosting business owner, the only excuse for not activating compression capabilities of your web server can be that you didn&#039;t know about it. And now that you are reading this, there is no excuse left at all.</p><p>Here is how big a single page of this blog was before compression was enabled on CSS and Javascript files (computed by <a
href="http://developer.yahoo.com/yslow/" rel="nofollow">YSlow</a>):</p><p><a
href="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_3.png" class="lightview" rel="gallery['982']" title="image"><img
style="display: inline; margin-left: 0px; margin-right: 0px" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_thumb_3.png" width="132" height="24" /></a></p><p>And here it is after compression:</p><p><a
href="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_4.png" class="lightview" rel="gallery['982']" title="image"><img
style="display: inline; margin-left: 0px; margin-right: 0px" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_thumb_4.png" width="136" height="28" /></a></p><p>As you see, the difference is quite substantial &#8211; almost 30% savings.</p><p>Compressing your HTML, XML, Javascript, CSS, etc pages will mean less data transferred between the...<div
class=clear></div> <a
href="http://beerpla.net/2009/06/09/how-to-make-your-site-lightning-fast-by-compressing-deflategzip-your-html-javascript-css-xml-etc-in-apache/" class="read_more"><div
class=excerpt-end>Read the rest of this article &#187;</div></a></p>]]></description> <content:encoded><![CDATA[<p><span
style="font-size: xx-small">* Lightning Fast is a blatant exaggeration. Got you to look though, didn&#039;t it?</span></p><h2>Introduction</h2><p>Whether you are a web developer or a self-hosting business owner, the only excuse for not activating compression capabilities of your web server can be that you didn&#039;t know about it. And now that you are reading this, there is no excuse left at all.</p><p>Here is how big a single page of this blog was before compression was enabled on CSS and Javascript files (computed by <a
href="http://developer.yahoo.com/yslow/" rel="nofollow">YSlow</a>):</p><p><a
href="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_3.png" class="lightview" rel="gallery['982']" title="image"><img
style="display: inline; margin-left: 0px; margin-right: 0px" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_thumb_3.png" width="132" height="24" /></a></p><p>And here it is after compression:</p><p><a
href="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_4.png" class="lightview" rel="gallery['982']" title="image"><img
style="display: inline; margin-left: 0px; margin-right: 0px" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_thumb_4.png" width="136" height="28" /></a></p><p>As you see, the difference is quite substantial &#8211; almost 30% savings.</p><p>Compressing your HTML, XML, Javascript, CSS, etc pages will mean less data transferred between the server and the client which:</p><ul><li>reduces the bandwidth usage.</li><li>provides faster page rendering which in turn leads to less user frustration, higher conversion rates, lower bounce rate, etc etc etc.</li></ul><p>Compression is especially important for users with slow connections as every kilobyte of your code is that much more painful to them.</p><p>Compression can be very effective &#8211; you can easily shrink your text, code (HTML, XML, Javascript, CSS, etc) to 10% of the original size (of course, your mileage may vary). 100KB page that needs only 10KB to transfer? Sign me up!</p><p>So, before I talk about the solution, let me describe what exactly happens when compression is turned on and how it affects older browsers that don&#039;t support it.</p><p><div
class="note"><div
class="notetip"></p><p><a
href="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_17.png" class="lightview" rel="gallery['982']" title="image"><img
style="margin: 0px auto 10px; display: block; float: none" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_thumb_17.png" width="292" height="177" /></a> <strong>Are you using jQuery?</strong></p><p>Did you know that a minified jQuery file is <strong>55KB</strong>? In order to achieve the advertised <strong>19KB</strong>, you would still need to compress the .js file using the methods listed here.</div></div></p><h2>Compression Mechanism Explained</h2><p>In order for compression to work in the first place, the web server (Apache in my example) needs to support it. This is achieved by enabling one of Apache modules called mod_deflate. The server will then be able to compress the data to the DEFLATE standard using either the zlib (also known as deflate) or gzip implementations. Yeah, DEFLATE is both the standard the one of its implementations, for those confused. I know I was. This is best described in <a
href="http://en.wikipedia.org/wiki/Gzip#Other_uses" rel="nofollow">this Wikipedia article</a>.</p><p>The following mechanism is used:</p><ul><li>the server with a compression extension enabled is able to serve either compressed (smaller) or uncompressed (larger) pages, depending on what the client supports.</li><li>the client (that is, your browser) sends a special header called &quot;Accept-Encoding&quot; listing the DEFLATE implementations it&#039;s capable of decompressing. For example &quot;gzip,deflate&quot;.</li><li>the server picks the best compression supported by the client (if any), compresses the files, and sends them over to the client.</li><li>the client receives the compressed files and decompresses them.</li></ul><p><div
class="note"><div
class="notetip"><strong>Are you using a load blancer?</strong></p><p>If you are using a load balancer, it may already be configured to compress pages that pass through it. In that case, there is no need to separately configure compression on your web servers. In fact, it should be off to save CPU.</div></div></p><h2>Are Your Pages Already Compressed? Test Them!</h2><p>If you are not sure whether you are already serving compressed pages or not, test them! My favorite way is by using <a
href="http://www.charlesproxy.com/" rel="nofollow">Charles HTTP Debugger</a>. Another option is by downloading <a
href="http://getfirebug.com/" rel="nofollow">Firebug</a> for Firefox and installing Yahoo&#039;s <a
href="http://developer.yahoo.com/yslow/" rel="nofollow">YSlow</a> or Google&#039;s <a
href="http://code.google.com/speed/page-speed/" rel="nofollow">Page Speed</a>. Just look at the response headers to see if compression is on (look for the Content-Encoding header). Here are some before and after examples:</p><h3>Theme CSS</h3><p><a
href="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_5.png" class="lightview" rel="gallery['982']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_thumb_5.png" width="427" height="36" /></a></p><p>Before:</p><p><a
href="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_6.png" class="lightview" rel="gallery['982']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_thumb_6.png" width="266" height="136" /></a></p><p>After:</p><p><a
href="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_7.png" class="lightview" rel="gallery['982']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_thumb_7.png" width="267" height="161" /></a></p><h3>jQuery</h3><p><a
href="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_8.png" class="lightview" rel="gallery['982']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_thumb_8.png" width="469" height="39" /></a></p><p>Before:</p><p><a
href="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_9.png" class="lightview" rel="gallery['982']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_thumb_9.png" width="263" height="132" /></a></p><p>After:</p><p><a
href="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_10.png" class="lightview" rel="gallery['982']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_thumb_10.png" width="273" height="168" /></a></p><h2>Solution</h2><p>Create a .htaccess file in the top directory of your site with the following contents:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td
class="code"><pre># DEFLATE by type - html, text, css, xml
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml
&nbsp;
# DEFLATE by type - javascript
AddOutputFilterByType DEFLATE application/x-javascript application/javascript text/javascript text/x-js text/x-javascript
&nbsp;
# DEFLATE by extension
AddOutputFilter DEFLATE js css htm html xml</pre></td></tr></table></div><p>Alternatively, you could put these lines into your Apache config within the Directory directive.</p><p>The <a
href="http://httpd.apache.org/docs/2.2/mod/core.html#addoutputfilterbytype" rel="nofollow">AddOutputFilterByType</a> directive adds DEFLATE filters to certain MIME types. I tried to assemble some of the common ones but feel free to add more, as each server may be configured differently and give out MIME types different from mine.</p><p><div
class="note"><div
class="notetip">You can find your own server&#039;s MIME type definitions in the file that the TypesConfig directive is pointing to (mine is /etc/mime.types).</div></div></p><p>The <a
href="http://httpd.apache.org/docs/2.2/mod/mod_mime.html#addoutputfilter" rel="nofollow">AddOutputFilter</a> directive binds the DEFLATE filter to specific file extensions, just in case they are not served with a proper MIME type. Feel free to add to this list as well.</p><h2>Caveats</h2><p>1. In order to use this whole compression/deflate/gzip business, your Apache server must first have mod_deflate enabled. Without it, you will get the HTTP 500 error (Internal Server error). You can check which mods you already have enabled by checking with the output of phpinfo() function.</p><p><a
href="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_13.png" class="lightview" rel="gallery['982']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_thumb_13.png" width="606" height="97" /></a></p><p>In order to enable mod_deflate, uncomment the line with &quot;deflate_module&quot; in your Apache config file. The location of this config file is highly dependant on your system. Some examples include</p><ul><li>/etc/apache2/httpd.conf</li><li>/etc/httpd/conf/httpd.conf</li><li>c:\wamp\bin\apache\Apache2.2.11\conf\httpd.conf</li><li>some other place where your system stores Apache config files (read the special note below for OpenSUSE).</li></ul><p>Here&#039;s what you should have:</p><div
class="wp_syntax"><div
class="code"><pre>LoadModule deflate_module modules/mod_deflate.so</pre></div></div><p>On OpenSUSE, you actually enable modules a bit differently. Go to /etc/sysconfig/apache2 and look for APACHE_MODULES=. Then add &quot;deflate&quot; to the list, if it&#039;s not already there.</p><p>Now, restart Apache and check the output of phpinfo() again.</p><p>2. Adding AddOutputFilter and AddOutputFilterByType to .htaccess requires such overrides to be authorized by the main Apache configuration for that directory, otherwise it will return error 500 as well. The option you are looking for is called &quot;AllowOverride&quot; and mine was set to &quot;AllowOverride AuthConfig&quot; which wasn&#039;t enough. Changing it to</p><div
class="wp_syntax"><div
class="code"><pre>AllowOverride AuthConfig FileInfo</pre></div></div><p>or just</p><div
class="wp_syntax"><div
class="code"><pre>AllowOverride All</pre></div></div><p>fixes the problem. You can find more info about AllowOverride <a
href="http://httpd.apache.org/docs/1.3/mod/core.html#allowoverride" rel="nofollow">here</a>.</p><p>3. In WordPress, if you are using Google Gears (<a
href="http://en.blog.wordpress.com/2008/07/02/gears/" rel="nofollow">Turbo mode</a>) for caching some core WordPress files, they will not show up compressed. That is because they&#039;re not served by the remote server but rather reside locally (think of it as permanent cache). I was very confused at first when I didn&#039;t see jQuery.js in the HTTP log and YSlow reported it uncompressed.</p><h2>Are you a WordPress user?</h2><p>If you are a WordPress user, don&#039;t assume WordPress is going to automatically compress your pages. In fact, as you install more and more plugins, the payload becomes larger and larger with those additional CSS and Javascript files.</p><p>You owe it to yourself and to your users to immediately enable compression on your blog.</p><p>Here is what happened after I enabled compression on this blog.</p><p>Before:</p><p><a
href="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_11.png" class="lightview" rel="gallery['982']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_thumb_11.png" width="676" height="418" /></a></p><p>After:</p><p><a
href="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_12.png" class="lightview" rel="gallery['982']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_thumb_12.png" width="440" height="115" /></a></p><h2>Bonus &#8211; WP Minify</h2><p>For even better results, I suggest you have a look at my good friend and talented WordPress master Thaya&#039;s plugin called <a
href="http://omninoggin.com/wordpress-plugins/wp-minify-wordpress-plugin/">WP Minify</a>. It preprocesses and aggregates all or most of your CSS and Javascript into just 2 files, thus saving on the number of HTTP requests. It also minifies content to achieve smaller size.</p><p>My blog before WP Minify:</p><p><a
href="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_14.png" class="lightview" rel="gallery['982']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_thumb_14.png" width="413" height="62" /></a></p><p>After WP Minify:</p><p><a
href="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_15.png" class="lightview" rel="gallery['982']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToCompressdeflategzipYourPagesJavascr_11A9F/image_thumb_15.png" width="408" height="59" /></a></p><p>&#160;</p><p>That&#039;s all folks. Let me know if something was unclear and I&#039;ll be glad to clarify it.</p><p>A few references that pointed me in the right direction and allowed me to provide a more complete solution:</p><ul><li><a
title="http://brightscape.net/compress-jquery-even-further/" href="http://brightscape.net/compress-jquery-even-further/">http://brightscape.net/compress-jquery-even-further/</a></li><li><a
title="http://brightscape.net/compress-your-web-pages-with-mod_deflate/" href="http://brightscape.net/compress-your-web-pages-with-mod_deflate/">http://brightscape.net/compress-your-web-pages-with-mod_deflate/</a></li></ul><div
class="shr-bookmarks shr-bookmarks-expand"><ul
class="socials"><li
class="shr-twitter"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Make+Your+Site+Lightning+Fast%2A+By+Compressing+%28deflate%2Fgzip%29+Your+HTML%2C+Javascript%2C+CSS%2C+XML%2C+etc+In+Apache&amp;link=http://beerpla.net/2009/06/09/how-to-make-your-site-lightning-fast-by-compressing-deflategzip-your-html-javascript-css-xml-etc-in-apache/&amp;notes=%2A%20Lightning%20Fast%20is%20a%20blatant%20exaggeration.%20Got%20you%20to%20look%20though%2C%20didn%27t%20it%3F%20%20Introduction%20%20Whether%20you%20are%20a%20web%20developer%20or%20a%20self-hosting%20business%20owner%2C%20the%20only%20excuse%20for%20not%20activating%20compression%20capabilities%20of%20your%20web%20server%20can%20be%20that%20you%20didn%27t%20know%20about%20it.%20And%20now%20that%20you%20are%20re&amp;short_link=http://bit.ly/c6Upm4&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a></li><li
class="shr-facebook"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Make+Your+Site+Lightning+Fast%2A+By+Compressing+%28deflate%2Fgzip%29+Your+HTML%2C+Javascript%2C+CSS%2C+XML%2C+etc+In+Apache&amp;link=http://beerpla.net/2009/06/09/how-to-make-your-site-lightning-fast-by-compressing-deflategzip-your-html-javascript-css-xml-etc-in-apache/&amp;notes=%2A%20Lightning%20Fast%20is%20a%20blatant%20exaggeration.%20Got%20you%20to%20look%20though%2C%20didn%27t%20it%3F%20%20Introduction%20%20Whether%20you%20are%20a%20web%20developer%20or%20a%20self-hosting%20business%20owner%2C%20the%20only%20excuse%20for%20not%20activating%20compression%20capabilities%20of%20your%20web%20server%20can%20be%20that%20you%20didn%27t%20know%20about%20it.%20And%20now%20that%20you%20are%20re&amp;short_link=http://bit.ly/c6Upm4&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a></li><li
class="shr-googlebuzz"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Make+Your+Site+Lightning+Fast%2A+By+Compressing+%28deflate%2Fgzip%29+Your+HTML%2C+Javascript%2C+CSS%2C+XML%2C+etc+In+Apache&amp;link=http://beerpla.net/2009/06/09/how-to-make-your-site-lightning-fast-by-compressing-deflategzip-your-html-javascript-css-xml-etc-in-apache/&amp;notes=%2A%20Lightning%20Fast%20is%20a%20blatant%20exaggeration.%20Got%20you%20to%20look%20though%2C%20didn%27t%20it%3F%20%20Introduction%20%20Whether%20you%20are%20a%20web%20developer%20or%20a%20self-hosting%20business%20owner%2C%20the%20only%20excuse%20for%20not%20activating%20compression%20capabilities%20of%20your%20web%20server%20can%20be%20that%20you%20didn%27t%20know%20about%20it.%20And%20now%20that%20you%20are%20re&amp;short_link=http://bit.ly/c6Upm4&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a></li><li
class="shr-reddit"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Make+Your+Site+Lightning+Fast%2A+By+Compressing+%28deflate%2Fgzip%29+Your+HTML%2C+Javascript%2C+CSS%2C+XML%2C+etc+In+Apache&amp;link=http://beerpla.net/2009/06/09/how-to-make-your-site-lightning-fast-by-compressing-deflategzip-your-html-javascript-css-xml-etc-in-apache/&amp;notes=%2A%20Lightning%20Fast%20is%20a%20blatant%20exaggeration.%20Got%20you%20to%20look%20though%2C%20didn%27t%20it%3F%20%20Introduction%20%20Whether%20you%20are%20a%20web%20developer%20or%20a%20self-hosting%20business%20owner%2C%20the%20only%20excuse%20for%20not%20activating%20compression%20capabilities%20of%20your%20web%20server%20can%20be%20that%20you%20didn%27t%20know%20about%20it.%20And%20now%20that%20you%20are%20re&amp;short_link=http://bit.ly/c6Upm4&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a></li><li
class="shr-hackernews"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Make+Your+Site+Lightning+Fast%2A+By+Compressing+%28deflate%2Fgzip%29+Your+HTML%2C+Javascript%2C+CSS%2C+XML%2C+etc+In+Apache&amp;link=http://beerpla.net/2009/06/09/how-to-make-your-site-lightning-fast-by-compressing-deflategzip-your-html-javascript-css-xml-etc-in-apache/&amp;notes=%2A%20Lightning%20Fast%20is%20a%20blatant%20exaggeration.%20Got%20you%20to%20look%20though%2C%20didn%27t%20it%3F%20%20Introduction%20%20Whether%20you%20are%20a%20web%20developer%20or%20a%20self-hosting%20business%20owner%2C%20the%20only%20excuse%20for%20not%20activating%20compression%20capabilities%20of%20your%20web%20server%20can%20be%20that%20you%20didn%27t%20know%20about%20it.%20And%20now%20that%20you%20are%20re&amp;short_link=http://bit.ly/c6Upm4&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a></li><li
class="shr-delicious"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Make+Your+Site+Lightning+Fast%2A+By+Compressing+%28deflate%2Fgzip%29+Your+HTML%2C+Javascript%2C+CSS%2C+XML%2C+etc+In+Apache&amp;link=http://beerpla.net/2009/06/09/how-to-make-your-site-lightning-fast-by-compressing-deflategzip-your-html-javascript-css-xml-etc-in-apache/&amp;notes=%2A%20Lightning%20Fast%20is%20a%20blatant%20exaggeration.%20Got%20you%20to%20look%20though%2C%20didn%27t%20it%3F%20%20Introduction%20%20Whether%20you%20are%20a%20web%20developer%20or%20a%20self-hosting%20business%20owner%2C%20the%20only%20excuse%20for%20not%20activating%20compression%20capabilities%20of%20your%20web%20server%20can%20be%20that%20you%20didn%27t%20know%20about%20it.%20And%20now%20that%20you%20are%20re&amp;short_link=http://bit.ly/c6Upm4&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a></li><li
class="shr-stumbleupon"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Make+Your+Site+Lightning+Fast%2A+By+Compressing+%28deflate%2Fgzip%29+Your+HTML%2C+Javascript%2C+CSS%2C+XML%2C+etc+In+Apache&amp;link=http://beerpla.net/2009/06/09/how-to-make-your-site-lightning-fast-by-compressing-deflategzip-your-html-javascript-css-xml-etc-in-apache/&amp;notes=%2A%20Lightning%20Fast%20is%20a%20blatant%20exaggeration.%20Got%20you%20to%20look%20though%2C%20didn%27t%20it%3F%20%20Introduction%20%20Whether%20you%20are%20a%20web%20developer%20or%20a%20self-hosting%20business%20owner%2C%20the%20only%20excuse%20for%20not%20activating%20compression%20capabilities%20of%20your%20web%20server%20can%20be%20that%20you%20didn%27t%20know%20about%20it.%20And%20now%20that%20you%20are%20re&amp;short_link=http://bit.ly/c6Upm4&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a></li><li
class="shr-mail"> <a
href="http://www.shareaholic.com/api/share/?title=How%20To%20Make%20Your%20Site%20Lightning%20Fast%2A%20By%20Compressing%20%28deflate%2Fgzip%29%20Your%20HTML%2C%20Javascript%2C%20CSS%2C%20XML%2C%20etc%20In%20Apache&amp;link=http://beerpla.net/2009/06/09/how-to-make-your-site-lightning-fast-by-compressing-deflategzip-your-html-javascript-css-xml-etc-in-apache/&amp;notes=%2A%20Lightning%20Fast%20is%20a%20blatant%20exaggeration.%20Got%20you%20to%20look%20though%2C%20didn%27t%20it%3F%20%20Introduction%20%20Whether%20you%20are%20a%20web%20developer%20or%20a%20self-hosting%20business%20owner%2C%20the%20only%20excuse%20for%20not%20activating%20compression%20capabilities%20of%20your%20web%20server%20can%20be%20that%20you%20didn%27t%20know%20about%20it.%20And%20now%20that%20you%20are%20re&amp;short_link=http://bit.ly/c6Upm4&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=201&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a></li></ul><div
style="clear: both;"></div></div> Similar Posts:<ul><li><a
href="http://beerpla.net/2008/03/29/beer-planet-upgraded-to-wordpress-25/" rel="bookmark" title="March 29, 2008">Beer Planet Upgraded To WordPress 2.5</a></li><li><a
href="http://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/" rel="bookmark" title="January 13, 2010">[WordPress Plugin Development] How To Include CSS and JavaScript Conditionally And Only When Needed By The Posts</a></li><li><a
href="http://beerpla.net/2009/06/21/hidden-features-of-perl-php-javascript-c-c-c-java-ruby-python-and-others-collection-of-incredibly-useful-lists/" rel="bookmark" title="June 21, 2009">Hidden Features Of Perl, PHP, Javascript, C, C++, C#, Java, Ruby, Python, And Others [Collection Of Incredibly Useful Lists]</a></li><li><a
href="http://beerpla.net/2006/06/12/rendr-a-live-awesome-csshtml-rendering-tool/" rel="bookmark" title="June 12, 2006">Rendr &#8211; a Live Awesome CSS/HTML Rendering Tool</a></li><li><a
href="http://beerpla.net/2010/02/20/how-to-view-a-specific-svn-revision-in-your-browser/" rel="bookmark" title="February 20, 2010">How To View A Specific SVN Revision In Your Browser</a></li></ul><p><a
class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbeerpla.net%2F2009%2F06%2F09%2Fhow-to-make-your-site-lightning-fast-by-compressing-deflategzip-your-html-javascript-css-xml-etc-in-apache%2F&amp;title=How%20To%20Make%20Your%20Site%20Lightning%20Fast%2A%20By%20Compressing%20%28deflate%2Fgzip%29%20Your%20HTML%2C%20Javascript%2C%20CSS%2C%20XML%2C%20etc%20In%20Apache" id="wpa2a_20"><img
src="http://beerpla.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded> <wfw:commentRss>http://beerpla.net/2009/06/09/how-to-make-your-site-lightning-fast-by-compressing-deflategzip-your-html-javascript-css-xml-etc-in-apache/feed/</wfw:commentRss> <slash:comments>20</slash:comments> </item> <item><title>Essential Firefox Extensions (Plugins, Add-Ons) And Tips &#8211; A Comprehensive Guide :: Part 1 :: Tips</title><link>http://beerpla.net/2009/04/11/essential-firefox-extensions-plugins-add-ons-and-tips-a-comprehensive-guide-part-1-tips/</link> <comments>http://beerpla.net/2009/04/11/essential-firefox-extensions-plugins-add-ons-and-tips-a-comprehensive-guide-part-1-tips/#comments</comments> <pubDate>Sat, 11 Apr 2009 22:32:00 +0000</pubDate> <dc:creator>Artem Russakovskii</dc:creator> <category><![CDATA[Awesomeness]]></category> <category><![CDATA[My Favorites]]></category> <category><![CDATA[Technology]]></category> <category><![CDATA[Tutorials]]></category> <category><![CDATA[add-on]]></category> <category><![CDATA[addon]]></category> <category><![CDATA[comprehensive]]></category> <category><![CDATA[extension]]></category> <category><![CDATA[Firefox]]></category> <category><![CDATA[guide]]></category> <category><![CDATA[keyboard]]></category> <category><![CDATA[plugin]]></category> <category><![CDATA[restore]]></category> <category><![CDATA[session]]></category> <category><![CDATA[shortcut]]></category> <category><![CDATA[tip]]></category> <guid
isPermaLink="false">http://beerpla.net/?p=753</guid> <description><![CDATA[<h1>Introduction</h1><p>In this article I’m going to discuss a number of useful Firefox extensions and tips. This list is not a “COMPLETE GUIDE TO FIREFOX!!!111!” but a collection of <em>some</em>, albeit many, extensions and techniques I find useful, with detailed descriptions and illustrations. I try to make my reviews as personal as possible and express my own points of view, so I will not be using any boring official descriptions altogether. Short, concise, and useful – that is my goal.</p><p>Right now I use 53 extensions in total. If you think that’s a lot, you might be right. However, because Firefox is so mature and new extensions come out every day, it is not as crazy of a number as...<div
class=clear></div> <a
href="http://beerpla.net/2009/04/11/essential-firefox-extensions-plugins-add-ons-and-tips-a-comprehensive-guide-part-1-tips/" class="read_more"><div
class=excerpt-end>Read the rest of this article &#187;</div></a></p>]]></description> <content:encoded><![CDATA[<h1>Introduction</h1><p>In this article I’m going to discuss a number of useful Firefox extensions and tips. This list is not a “COMPLETE GUIDE TO FIREFOX!!!111!” but a collection of <em>some</em>, albeit many, extensions and techniques I find useful, with detailed descriptions and illustrations. I try to make my reviews as personal as possible and express my own points of view, so I will not be using any boring official descriptions altogether. Short, concise, and useful – that is my goal.</p><p>Right now I use 53 extensions in total. If you think that’s a lot, you might be right. However, because Firefox is so mature and new extensions come out every day, it is not as crazy of a number as it was 2 years ago. Firefox gets faster, I download more extensions, and the end result is I’m happier as a user because Firefox suddenly provides me with a lot more features at approximately the same running speed. I plan on continuing to increase this number.</p><p><div
class="note"><div
class="noteclassic">Note that if you have a limited amount of RAM, installing so many extensions might start overflowing the memory and will significantly slow down the system if you run out of it.</div></div></p><p>Here’s a quick slightly obsolete screenshot of the extensions I’m using:</p><p><a
href="/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsF_8A0A/firefoxextensions1.gif" class="lightview" rel="gallery['753']" title="firefox-extensions1"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="firefox-extensions1" border="0" alt="firefox-extensions1" src="/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsF_8A0A/firefoxextensions1_thumb.gif" width="650" /></a></p><p>&#160;</p><h1>Firefox Tips</h1><p>Before describing extensions, I wanted to mention a few tips about Firefox itself. If you are interested in extensions, proceed to <a
href="http://beerpla.net/2009/06/10/essential-firefox-extensions-plugins-add-ons-a-comprehensive-guide-part-2-pragmatic-extensions/">part 2</a> right away, however I urge you to read these too.</p><h2 align="center"><strong>Using the bookmarks bar and shortened names</strong></h2><p>You can fit a lot of quick bookmarks on the little bookmark bar if you shorten the names to 1 or 2 characters.</p><p><a
href="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsF_8A0A/image_3.png" class="lightview" rel="gallery['753']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsF_8A0A/image_thumb_3.png" width="640" height="59" /></a></p><h2 align="center"><strong>Using keywords for bookmarks</strong></h2><p>A little less known trick is to use the keywords property of your bookmarks. For example, here I assign a keyword ‘d’ to my <a
href="http://www.digg.com">digg.com</a> bookmark. Then I can just go to the url bar, type in ‘d’, Enter and voila &#8211; digg starts loading.</p><p
align="center"><a
href="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsF_8A0A/image_4.png" class="lightview" rel="gallery['753']" title="image"><img
style="display: inline" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsF_8A0A/image_thumb_4.png" width="190" height="286" /></a>&#160; <a
href="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsF_8A0A/image_5.png" class="lightview" rel="gallery['753']" title="image"><img
style="display: inline" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsF_8A0A/image_thumb_5.png" width="336" height="231" /></a></p><h2 align="center"><strong>Protecting and locking tabs</strong></h2><p>Protect a tab will prevent you from closing it.</p><p>I use this functionality on my most frequently visited sites – so frequently that I never want to close them. They include the iGoogle homepage, Google calendar, Remember The Milk TODO list, my Trac tickets at work, and a few other things.</p><p>These protected states are saved even if you close and open Firefox (but unfortunately, not if you use QuickRestart described in <a
href="http://beerpla.net/2009/06/10/essential-firefox-extensions-plugins-add-ons-a-comprehensive-guide-part-2-pragmatic-extensions/">part 2</a>). Protected windows are marked by a <a
href="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsF_8A0A/image_77.png" class="lightview" rel="gallery['753']" title="image"><img
style="display: inline" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsF_8A0A/image_thumb_77.png" width="15" height="15" /></a> symbol.</p><p><a
href="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsF_8A0A/image_6.png" class="lightview" rel="gallery['753']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsF_8A0A/image_thumb_6.png" width="243" height="265" /></a></p><p><a
href="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsF_8A0A/image_7.png" class="lightview" rel="gallery['753']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsF_8A0A/image_thumb_7.png" width="563" height="39" /></a></p><p><div
class="note"><div
class="notetip">You can protect a tab by Shift-clicking on it and lock it by Alt-clicking (these are customizable in Tab Mix Plus settings)</div></div></p><p>Locking a tab is similar, but instead of not being able to close it, you are not able to change the url. Any url change attempts will produce a new tab. I personally never use this feature but some may find it handy. Locked windows are marked by a <a
href="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsF_8A0A/image_78.png" class="lightview" rel="gallery['753']" title="image"><img
style="display: inline" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsF_8A0A/image_thumb_78.png" width="23" height="16" /></a> symbol.</p><p>Note that you need the Tab Mix Plus extension (described in <a
href="http://beerpla.net/2009/06/10/essential-firefox-extensions-plugins-add-ons-a-comprehensive-guide-part-2-pragmatic-extensions/">part 2</a>) for these tricks.</p><h2 align="center"><strong>Restoring sessions</strong></h2><p>While Firefox 3 now has a built-in session restore feature, it’s not very robust. That is why I still use the Tab Mix Plus (described in <a
href="http://beerpla.net/2009/06/10/essential-firefox-extensions-plugins-add-ons-a-comprehensive-guide-part-2-pragmatic-extensions/">part 2</a>) session restore feature set. TMP’s session manager remembers protect and lock statuses, tab history, selected tab, and everything else about the session. I will describe TMP in more detail later.</p><p><a
href="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsF_8A0A/image_8.png" class="lightview" rel="gallery['753']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsF_8A0A/image_thumb_8.png" width="377" height="412" /></a></p><h2 align="center"><strong>Using keyboard shortcuts</strong></h2><p>In my experience, keyboard shortcuts are primarily used by power users, while the rest of the population uses a mouse. However, shortcuts are immensely effective time savers and, if you mouse a lot, will provide a relief for your wrist. Let’s take a look at a few easy and important ones.</p><h3><strong>Ctrl-L and TABs</strong></h3><p>Ctrl-L will put the focus on the url bar, no matter where you are on the page. It is equivalent to F6 in IE, except it’s actually robust. So, when I’m ready to type in the name of the site, my fingers are already on the keyboard. Ctrl-L doesn’t even require extra movements.</p><p>TAB (the key, not the Firefox tab) once after you’ve pressed Ctrl-L and you’re in the Firefox search bar (the one I set to imdb a bit later in the article). TAB twice and you’re in the Google toolbar, if you have it installed.</p><h3><strong>Ctrl-Enter and Shift-Enter</strong></h3><p>Ctrl-Enter is a tremendous time saver. It appends “.com” to whatever you have in the url bar and prepends “http://www.”. Type in “google”, press Ctrl-Enter, and voila, you’re at <a
href="http://www.google.com">www.google.com</a>. Similarly, Shift-Enter, appends “.net”.</p><h3><strong>Ctrl-T</strong></h3><p>Ctrl-T opens a new tab.</p><h3><strong>Ctrl-Shift-T</strong></h3><p>Ctrl-Shift-T opens the last closed tab(s), in the order they were closed.</p><h3><strong>Ctrl-Alt-T</strong></h3><p>Ctrl-Alt-T duplicates the current tab. Yet again, this is a feature of Tab Mix Plus (described in <a
href="http://beerpla.net/2009/06/10/essential-firefox-extensions-plugins-add-ons-a-comprehensive-guide-part-2-pragmatic-extensions/">part 2</a>). Oh how much I love you, TMP.</p><h3><strong>Ctrl-TAB, Ctrl-Shift-TAB</strong></h3><p>Ctrl-TAB is probably the most frequently used key combination. It cycles between tabs forward while Ctrl-Shift-TAB does it backwards.</p><h3><strong>Ctrl-W</strong></h3><p>Ctrl-W closes the current tab.</p><h3><strong>Space</strong></h3><p>Pressing space is a quick way to scroll down one page. It’s a lot of times more convenient than finding the small PgDn button, especially if you have <a
href="http://thefingersyouhaveusedtodialaretoofat.thisisarecording.com/" rel="nofollow">fat fingers</a>.</p><h2 align="center"><strong>Setting the Firefox search bar to IMDB</strong></h2><p>Because I already use the Google Toolbar (one of the most useful toolbars out there) there is little point keeping Firefox’s default search box set to Google. I prefer IMDB (Internet Movie DataBase) myself but you can easily set it to another search engine.</p><p><a
href="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsF_8A0A/image_10.png" class="lightview" rel="gallery['753']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/EssentialFirefoxExtensionsPluginsAddOnsF_8A0A/image_thumb_10.png" width="351" height="269" /></a></p><h1>End of Part 1</h1><p>This marks the end of part 1 in the series. Proceed to <a
href="http://beerpla.net/2009/06/10/essential-firefox-extensions-plugins-add-ons-a-comprehensive-guide-part-2-pragmatic-extensions/">part 2</a>.</p><div
class="shr-bookmarks shr-bookmarks-expand"><ul
class="socials"><li
class="shr-twitter"> <a
href="http://www.shareaholic.com/api/share/?title=Essential+Firefox+Extensions+%28Plugins%2C+Add-Ons%29+And+Tips+%26ndash%3B+A+Comprehensive+Guide+%3A%3A+Part+1+%3A%3A+Tips&amp;link=http://beerpla.net/2009/04/11/essential-firefox-extensions-plugins-add-ons-and-tips-a-comprehensive-guide-part-1-tips/&amp;notes=Introduction%20%20In%20this%20article%20I%E2%80%99m%20going%20to%20discuss%20a%20number%20of%20useful%20Firefox%20extensions%20and%20tips.%20This%20list%20is%20not%20a%20%E2%80%9CCOMPLETE%20GUIDE%20TO%20FIREFOX%21%21%21111%21%E2%80%9D%20but%20a%20collection%20of%20some%2C%20albeit%20many%2C%20extensions%20and%20techniques%20I%20find%20useful%2C%20with%20detailed%20descriptions%20and%20illustrations.%20I%20try%20to%20make%20m&amp;short_link=http://bit.ly/97pUp4&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a></li><li
class="shr-facebook"> <a
href="http://www.shareaholic.com/api/share/?title=Essential+Firefox+Extensions+%28Plugins%2C+Add-Ons%29+And+Tips+%26ndash%3B+A+Comprehensive+Guide+%3A%3A+Part+1+%3A%3A+Tips&amp;link=http://beerpla.net/2009/04/11/essential-firefox-extensions-plugins-add-ons-and-tips-a-comprehensive-guide-part-1-tips/&amp;notes=Introduction%20%20In%20this%20article%20I%E2%80%99m%20going%20to%20discuss%20a%20number%20of%20useful%20Firefox%20extensions%20and%20tips.%20This%20list%20is%20not%20a%20%E2%80%9CCOMPLETE%20GUIDE%20TO%20FIREFOX%21%21%21111%21%E2%80%9D%20but%20a%20collection%20of%20some%2C%20albeit%20many%2C%20extensions%20and%20techniques%20I%20find%20useful%2C%20with%20detailed%20descriptions%20and%20illustrations.%20I%20try%20to%20make%20m&amp;short_link=http://bit.ly/97pUp4&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a></li><li
class="shr-googlebuzz"> <a
href="http://www.shareaholic.com/api/share/?title=Essential+Firefox+Extensions+%28Plugins%2C+Add-Ons%29+And+Tips+%26ndash%3B+A+Comprehensive+Guide+%3A%3A+Part+1+%3A%3A+Tips&amp;link=http://beerpla.net/2009/04/11/essential-firefox-extensions-plugins-add-ons-and-tips-a-comprehensive-guide-part-1-tips/&amp;notes=Introduction%20%20In%20this%20article%20I%E2%80%99m%20going%20to%20discuss%20a%20number%20of%20useful%20Firefox%20extensions%20and%20tips.%20This%20list%20is%20not%20a%20%E2%80%9CCOMPLETE%20GUIDE%20TO%20FIREFOX%21%21%21111%21%E2%80%9D%20but%20a%20collection%20of%20some%2C%20albeit%20many%2C%20extensions%20and%20techniques%20I%20find%20useful%2C%20with%20detailed%20descriptions%20and%20illustrations.%20I%20try%20to%20make%20m&amp;short_link=http://bit.ly/97pUp4&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a></li><li
class="shr-reddit"> <a
href="http://www.shareaholic.com/api/share/?title=Essential+Firefox+Extensions+%28Plugins%2C+Add-Ons%29+And+Tips+%26ndash%3B+A+Comprehensive+Guide+%3A%3A+Part+1+%3A%3A+Tips&amp;link=http://beerpla.net/2009/04/11/essential-firefox-extensions-plugins-add-ons-and-tips-a-comprehensive-guide-part-1-tips/&amp;notes=Introduction%20%20In%20this%20article%20I%E2%80%99m%20going%20to%20discuss%20a%20number%20of%20useful%20Firefox%20extensions%20and%20tips.%20This%20list%20is%20not%20a%20%E2%80%9CCOMPLETE%20GUIDE%20TO%20FIREFOX%21%21%21111%21%E2%80%9D%20but%20a%20collection%20of%20some%2C%20albeit%20many%2C%20extensions%20and%20techniques%20I%20find%20useful%2C%20with%20detailed%20descriptions%20and%20illustrations.%20I%20try%20to%20make%20m&amp;short_link=http://bit.ly/97pUp4&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a></li><li
class="shr-hackernews"> <a
href="http://www.shareaholic.com/api/share/?title=Essential+Firefox+Extensions+%28Plugins%2C+Add-Ons%29+And+Tips+%26ndash%3B+A+Comprehensive+Guide+%3A%3A+Part+1+%3A%3A+Tips&amp;link=http://beerpla.net/2009/04/11/essential-firefox-extensions-plugins-add-ons-and-tips-a-comprehensive-guide-part-1-tips/&amp;notes=Introduction%20%20In%20this%20article%20I%E2%80%99m%20going%20to%20discuss%20a%20number%20of%20useful%20Firefox%20extensions%20and%20tips.%20This%20list%20is%20not%20a%20%E2%80%9CCOMPLETE%20GUIDE%20TO%20FIREFOX%21%21%21111%21%E2%80%9D%20but%20a%20collection%20of%20some%2C%20albeit%20many%2C%20extensions%20and%20techniques%20I%20find%20useful%2C%20with%20detailed%20descriptions%20and%20illustrations.%20I%20try%20to%20make%20m&amp;short_link=http://bit.ly/97pUp4&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a></li><li
class="shr-delicious"> <a
href="http://www.shareaholic.com/api/share/?title=Essential+Firefox+Extensions+%28Plugins%2C+Add-Ons%29+And+Tips+%26ndash%3B+A+Comprehensive+Guide+%3A%3A+Part+1+%3A%3A+Tips&amp;link=http://beerpla.net/2009/04/11/essential-firefox-extensions-plugins-add-ons-and-tips-a-comprehensive-guide-part-1-tips/&amp;notes=Introduction%20%20In%20this%20article%20I%E2%80%99m%20going%20to%20discuss%20a%20number%20of%20useful%20Firefox%20extensions%20and%20tips.%20This%20list%20is%20not%20a%20%E2%80%9CCOMPLETE%20GUIDE%20TO%20FIREFOX%21%21%21111%21%E2%80%9D%20but%20a%20collection%20of%20some%2C%20albeit%20many%2C%20extensions%20and%20techniques%20I%20find%20useful%2C%20with%20detailed%20descriptions%20and%20illustrations.%20I%20try%20to%20make%20m&amp;short_link=http://bit.ly/97pUp4&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a></li><li
class="shr-stumbleupon"> <a
href="http://www.shareaholic.com/api/share/?title=Essential+Firefox+Extensions+%28Plugins%2C+Add-Ons%29+And+Tips+%26ndash%3B+A+Comprehensive+Guide+%3A%3A+Part+1+%3A%3A+Tips&amp;link=http://beerpla.net/2009/04/11/essential-firefox-extensions-plugins-add-ons-and-tips-a-comprehensive-guide-part-1-tips/&amp;notes=Introduction%20%20In%20this%20article%20I%E2%80%99m%20going%20to%20discuss%20a%20number%20of%20useful%20Firefox%20extensions%20and%20tips.%20This%20list%20is%20not%20a%20%E2%80%9CCOMPLETE%20GUIDE%20TO%20FIREFOX%21%21%21111%21%E2%80%9D%20but%20a%20collection%20of%20some%2C%20albeit%20many%2C%20extensions%20and%20techniques%20I%20find%20useful%2C%20with%20detailed%20descriptions%20and%20illustrations.%20I%20try%20to%20make%20m&amp;short_link=http://bit.ly/97pUp4&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a></li><li
class="shr-mail"> <a
href="http://www.shareaholic.com/api/share/?title=Essential%20Firefox%20Extensions%20%28Plugins%2C%20Add-Ons%29%20And%20Tips%20%26ndash%3B%20A%20Comprehensive%20Guide%20%3A%3A%20Part%201%20%3A%3A%20Tips&amp;link=http://beerpla.net/2009/04/11/essential-firefox-extensions-plugins-add-ons-and-tips-a-comprehensive-guide-part-1-tips/&amp;notes=Introduction%20%20In%20this%20article%20I%E2%80%99m%20going%20to%20discuss%20a%20number%20of%20useful%20Firefox%20extensions%20and%20tips.%20This%20list%20is%20not%20a%20%E2%80%9CCOMPLETE%20GUIDE%20TO%20FIREFOX%21%21%21111%21%E2%80%9D%20but%20a%20collection%20of%20some%2C%20albeit%20many%2C%20extensions%20and%20techniques%20I%20find%20useful%2C%20with%20detailed%20descriptions%20and%20illustrations.%20I%20try%20to%20make%20m&amp;short_link=http://bit.ly/97pUp4&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=201&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a></li></ul><div
style="clear: both;"></div></div> Similar Posts:<ul><li><a
href="http://beerpla.net/2009/08/18/delicious-com-quietly-rolls-out-domain-and-url-searchingfiltering-finally/" rel="bookmark" title="August 18, 2009">Delicious.com [Quietly] Rolls Out Domain And Url Searching/Filtering. Finally!</a></li><li><a
href="http://beerpla.net/2009/06/10/essential-firefox-extensions-plugins-add-ons-a-comprehensive-guide-part-2-pragmatic-extensions/" rel="bookmark" title="June 10, 2009">Essential Firefox Extensions (Plugins, Add-Ons) &ndash; A Comprehensive Guide :: Part 2 :: Pragmatic Extensions</a></li><li><a
href="http://beerpla.net/2009/05/13/firefox-being-slow-especially-switching-tabs-high-cpu-load-memory-problems-are-you-using-firecookie-for-firebug/" rel="bookmark" title="May 13, 2009">Firefox Being Slow, Especially Switching Tabs, High CPU Load, Memory Problems? Are You Using Firecookie For Firebug?</a></li><li><a
href="http://beerpla.net/2008/04/09/some-useful-vim-commands-my-vim-cheatsheet/" rel="bookmark" title="April 9, 2008">Some Useful vim Commands &#8211; My vim Cheatsheet</a></li><li><a
href="http://beerpla.net/2008/09/03/thoughts-on-google-chrome/" rel="bookmark" title="September 3, 2008">Thoughts on Google Chrome</a></li></ul><p><a
class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbeerpla.net%2F2009%2F04%2F11%2Fessential-firefox-extensions-plugins-add-ons-and-tips-a-comprehensive-guide-part-1-tips%2F&amp;title=Essential%20Firefox%20Extensions%20%28Plugins%2C%20Add-Ons%29%20And%20Tips%20%26ndash%3B%20A%20Comprehensive%20Guide%20%3A%3A%20Part%201%20%3A%3A%20Tips" id="wpa2a_22"><img
src="http://beerpla.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded> <wfw:commentRss>http://beerpla.net/2009/04/11/essential-firefox-extensions-plugins-add-ons-and-tips-a-comprehensive-guide-part-1-tips/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>[Perl] Finding Files, The Fun And Elegant Way</title><link>http://beerpla.net/2009/04/08/perl-finding-files-the-fun-and-elegant-way/</link> <comments>http://beerpla.net/2009/04/08/perl-finding-files-the-fun-and-elegant-way/#comments</comments> <pubDate>Wed, 08 Apr 2009 14:00:00 +0000</pubDate> <dc:creator>Artem Russakovskii</dc:creator> <category><![CDATA[Awesomeness]]></category> <category><![CDATA[Linux]]></category> <category><![CDATA[Perl]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Tutorials]]></category> <category><![CDATA[efficient]]></category> <category><![CDATA[elegant]]></category> <category><![CDATA[file]]></category> <category><![CDATA[find]]></category> <category><![CDATA[follow]]></category> <category><![CDATA[fun]]></category> <category><![CDATA[robust]]></category> <category><![CDATA[search]]></category> <category><![CDATA[skip]]></category> <category><![CDATA[SVN]]></category> <category><![CDATA[symlink]]></category> <guid
isPermaLink="false">http://beerpla.net/2009/04/08/perl-finding-files-the-fun-and-elegant-way/</guid> <description><![CDATA[<p>No matter what programming language you use, there comes a time when you need to search for a file somewhere on the file system. Here, I want to talk about accomplishing this task in Perl. There are many ways of doing so, most of them boring, but I want to discuss the fun and elegant way &#8211; using <a
href="http://search.cpan.org/dist/File-Find-Rule/lib/File/Find/Rule.pm" rel="nofollow">File::Find::Rule</a>.</p><p>Let me briefly discuss some of the other methods first.</p><h2>Limited</h2><p>Using glob() (or &#60;&#62;, TODO verify) you can find files in a single directory, using only the limited shell wildcard support. For example,</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
</pre></td><td
class="code"><pre>my @files = glob(&#34;tmp*&#34;);</pre></td></tr></table></div><p><div
class="note"><div
class="noteclassic">I prefer glob() to &#60;&#62; because glob()&#039;s parameters can be more than just text (for ex functions) while &#60;&#62;</div></div>...<div
class=clear></div> <a
href="http://beerpla.net/2009/04/08/perl-finding-files-the-fun-and-elegant-way/" class="read_more"><div
class=excerpt-end>Read the rest of this article &#187;</div></a></p>]]></description> <content:encoded><![CDATA[<p>No matter what programming language you use, there comes a time when you need to search for a file somewhere on the file system. Here, I want to talk about accomplishing this task in Perl. There are many ways of doing so, most of them boring, but I want to discuss the fun and elegant way &#8211; using <a
href="http://search.cpan.org/dist/File-Find-Rule/lib/File/Find/Rule.pm" rel="nofollow">File::Find::Rule</a>.</p><p>Let me briefly discuss some of the other methods first.</p><h2>Limited</h2><p>Using glob() (or &lt;&gt;, TODO verify) you can find files in a single directory, using only the limited shell wildcard support. For example,</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
</pre></td><td
class="code"><pre>my @files = glob(&quot;tmp*&quot;);</pre></td></tr></table></div><p><div
class="note"><div
class="noteclassic">I prefer glob() to &lt;&gt; because glob()&#039;s parameters can be more than just text (for ex functions) while &lt;&gt; treats everything inside as text.</div></div></p><h2>Boring</h2><p><a
title="http://search.cpan.org/~nwclark/perl-5.8.9/lib/File/Find.pm" href="http://search.cpan.org/~nwclark/perl-5.8.9/lib/File/Find.pm">File::Find</a> is the de facto standard for searching in Perl.</p><p>This method finds files that end in .pl in &quot;.&quot; and &quot;../SomeDir&quot;, following symlinks:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td
class="code"><pre>#!/usr/bin/perl -w
&nbsp;
use File::Find;
use Data::Dumper;
use File::Basename;
my @directories_to_search = (&quot;.&quot;, &quot;../SomeDir&quot;);
my @file_list = ();
&nbsp;
find(
  { wanted =&gt;
    sub {
      if ( basename($File::Find::name) =~ /\.pl$/i )
      {
        push @file_list, $File::Find::name;
      }
    },
    follow =&gt; 1
  },
  @directories_to_search
);
print Dumper @file_list;</pre></td></tr></table></div><p>It works fine, except it&#039;s horribly ugly and boring. Let&#039;s have a look at something more fun.</p><h2>The Fun And Elegant Way</h2><p><a
title="http://search.cpan.org/dist/File-Find-Rule/lib/File/Find/Rule.pm" href="http://search.cpan.org/dist/File-Find-Rule/lib/File/Find/Rule.pm" rel="nofollow">File::Find::Rule</a>. Just have a look at this beauty.</p><p>Just like above, find all .pl files in &quot;.&quot; and &quot;../SomeDir&quot;, following symlinks:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
</pre></td><td
class="code"><pre>print Dumper (File::Find::Rule-&gt;name(&quot;*.pl&quot;)-&gt;file-&gt;extras({ follow =&gt; 1 })-&gt;
in(&quot;.&quot;, &quot;../SomeDir&quot;));</pre></td></tr></table></div><p>Same as above, except bypass .svn directories (shaves off a ton of time with a lot of directories):</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
</pre></td><td
class="code"><pre>print Dumper (File::Find::Rule-&gt;not(File::Find::Rule-&gt;directory-&gt;name('.svn')-&gt;
prune-&gt;discard)-&gt;name(&quot;*.pl&quot;)-&gt;file-&gt;extras({ follow =&gt; 1 })-&gt;in(&quot;.&quot;, &quot;../SomeDir&quot;));</pre></td></tr></table></div><p>Find all .log files that are older than 24 hours in &quot;.&quot;</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
</pre></td><td
class="code"><pre>my $epoch_time_1_day_ago = time() - 60*60*24;
print Dumper (File::Find::Rule-&gt;file-&gt;name(&quot;*.log&quot;)-&gt;
mtime(&quot;&lt;$epoch_time_1_day_ago&quot;)-&gt;in('.'));</pre></td></tr></table></div><p>Be sure to read the <a
href="http://search.cpan.org/dist/File-Find-Rule/lib/File/Find/Rule.pm" rel="nofollow">File::Find::Rule</a> perldoc for more options and remember: have fun with your code!<a
href="http://www.weblocal.ca"></a></p><p>Thanks to <a
href="http://perlbuzz.com/" rel="nofollow">Perlbuzz</a> and Andy Lester for <a
href="http://perlbuzz.com/mechanix/2008/05/optimizing-file-searches-with.html" rel="nofollow">pointing me</a> to this library a few months ago.</p><div
class="shr-bookmarks shr-bookmarks-expand"><ul
class="socials"><li
class="shr-twitter"> <a
href="http://www.shareaholic.com/api/share/?title=%5BPerl%5D+Finding+Files%2C+The+Fun+And+Elegant+Way&amp;link=http://beerpla.net/2009/04/08/perl-finding-files-the-fun-and-elegant-way/&amp;notes=No%20matter%20what%20programming%20language%20you%20use%2C%20there%20comes%20a%20time%20when%20you%20need%20to%20search%20for%20a%20file%20somewhere%20on%20the%20file%20system.%20Here%2C%20I%20want%20to%20talk%20about%20accomplishing%20this%20task%20in%20Perl.%20There%20are%20many%20ways%20of%20doing%20so%2C%20most%20of%20them%20boring%2C%20but%20I%20want%20to%20discuss%20the%20fun%20and%20elegant%20way%20-%20using%20Fil&amp;short_link=http://bit.ly/caZusS&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a></li><li
class="shr-facebook"> <a
href="http://www.shareaholic.com/api/share/?title=%5BPerl%5D+Finding+Files%2C+The+Fun+And+Elegant+Way&amp;link=http://beerpla.net/2009/04/08/perl-finding-files-the-fun-and-elegant-way/&amp;notes=No%20matter%20what%20programming%20language%20you%20use%2C%20there%20comes%20a%20time%20when%20you%20need%20to%20search%20for%20a%20file%20somewhere%20on%20the%20file%20system.%20Here%2C%20I%20want%20to%20talk%20about%20accomplishing%20this%20task%20in%20Perl.%20There%20are%20many%20ways%20of%20doing%20so%2C%20most%20of%20them%20boring%2C%20but%20I%20want%20to%20discuss%20the%20fun%20and%20elegant%20way%20-%20using%20Fil&amp;short_link=http://bit.ly/caZusS&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a></li><li
class="shr-googlebuzz"> <a
href="http://www.shareaholic.com/api/share/?title=%5BPerl%5D+Finding+Files%2C+The+Fun+And+Elegant+Way&amp;link=http://beerpla.net/2009/04/08/perl-finding-files-the-fun-and-elegant-way/&amp;notes=No%20matter%20what%20programming%20language%20you%20use%2C%20there%20comes%20a%20time%20when%20you%20need%20to%20search%20for%20a%20file%20somewhere%20on%20the%20file%20system.%20Here%2C%20I%20want%20to%20talk%20about%20accomplishing%20this%20task%20in%20Perl.%20There%20are%20many%20ways%20of%20doing%20so%2C%20most%20of%20them%20boring%2C%20but%20I%20want%20to%20discuss%20the%20fun%20and%20elegant%20way%20-%20using%20Fil&amp;short_link=http://bit.ly/caZusS&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a></li><li
class="shr-reddit"> <a
href="http://www.shareaholic.com/api/share/?title=%5BPerl%5D+Finding+Files%2C+The+Fun+And+Elegant+Way&amp;link=http://beerpla.net/2009/04/08/perl-finding-files-the-fun-and-elegant-way/&amp;notes=No%20matter%20what%20programming%20language%20you%20use%2C%20there%20comes%20a%20time%20when%20you%20need%20to%20search%20for%20a%20file%20somewhere%20on%20the%20file%20system.%20Here%2C%20I%20want%20to%20talk%20about%20accomplishing%20this%20task%20in%20Perl.%20There%20are%20many%20ways%20of%20doing%20so%2C%20most%20of%20them%20boring%2C%20but%20I%20want%20to%20discuss%20the%20fun%20and%20elegant%20way%20-%20using%20Fil&amp;short_link=http://bit.ly/caZusS&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a></li><li
class="shr-hackernews"> <a
href="http://www.shareaholic.com/api/share/?title=%5BPerl%5D+Finding+Files%2C+The+Fun+And+Elegant+Way&amp;link=http://beerpla.net/2009/04/08/perl-finding-files-the-fun-and-elegant-way/&amp;notes=No%20matter%20what%20programming%20language%20you%20use%2C%20there%20comes%20a%20time%20when%20you%20need%20to%20search%20for%20a%20file%20somewhere%20on%20the%20file%20system.%20Here%2C%20I%20want%20to%20talk%20about%20accomplishing%20this%20task%20in%20Perl.%20There%20are%20many%20ways%20of%20doing%20so%2C%20most%20of%20them%20boring%2C%20but%20I%20want%20to%20discuss%20the%20fun%20and%20elegant%20way%20-%20using%20Fil&amp;short_link=http://bit.ly/caZusS&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a></li><li
class="shr-delicious"> <a
href="http://www.shareaholic.com/api/share/?title=%5BPerl%5D+Finding+Files%2C+The+Fun+And+Elegant+Way&amp;link=http://beerpla.net/2009/04/08/perl-finding-files-the-fun-and-elegant-way/&amp;notes=No%20matter%20what%20programming%20language%20you%20use%2C%20there%20comes%20a%20time%20when%20you%20need%20to%20search%20for%20a%20file%20somewhere%20on%20the%20file%20system.%20Here%2C%20I%20want%20to%20talk%20about%20accomplishing%20this%20task%20in%20Perl.%20There%20are%20many%20ways%20of%20doing%20so%2C%20most%20of%20them%20boring%2C%20but%20I%20want%20to%20discuss%20the%20fun%20and%20elegant%20way%20-%20using%20Fil&amp;short_link=http://bit.ly/caZusS&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a></li><li
class="shr-stumbleupon"> <a
href="http://www.shareaholic.com/api/share/?title=%5BPerl%5D+Finding+Files%2C+The+Fun+And+Elegant+Way&amp;link=http://beerpla.net/2009/04/08/perl-finding-files-the-fun-and-elegant-way/&amp;notes=No%20matter%20what%20programming%20language%20you%20use%2C%20there%20comes%20a%20time%20when%20you%20need%20to%20search%20for%20a%20file%20somewhere%20on%20the%20file%20system.%20Here%2C%20I%20want%20to%20talk%20about%20accomplishing%20this%20task%20in%20Perl.%20There%20are%20many%20ways%20of%20doing%20so%2C%20most%20of%20them%20boring%2C%20but%20I%20want%20to%20discuss%20the%20fun%20and%20elegant%20way%20-%20using%20Fil&amp;short_link=http://bit.ly/caZusS&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a></li><li
class="shr-mail"> <a
href="http://www.shareaholic.com/api/share/?title=%5BPerl%5D%20Finding%20Files%2C%20The%20Fun%20And%20Elegant%20Way&amp;link=http://beerpla.net/2009/04/08/perl-finding-files-the-fun-and-elegant-way/&amp;notes=No%20matter%20what%20programming%20language%20you%20use%2C%20there%20comes%20a%20time%20when%20you%20need%20to%20search%20for%20a%20file%20somewhere%20on%20the%20file%20system.%20Here%2C%20I%20want%20to%20talk%20about%20accomplishing%20this%20task%20in%20Perl.%20There%20are%20many%20ways%20of%20doing%20so%2C%20most%20of%20them%20boring%2C%20but%20I%20want%20to%20discuss%20the%20fun%20and%20elegant%20way%20-%20using%20Fil&amp;short_link=http://bit.ly/caZusS&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=201&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a></li></ul><div
style="clear: both;"></div></div> Similar Posts:<ul><li><a
href="http://beerpla.net/2009/03/05/perl-how-to-get-the-path-of-an-included-library-pm-regardless-of-current-directory/" rel="bookmark" title="March 5, 2009">[Perl] How To Get The Path Of An Included Library (.pm), Regardless Of Current Directory</a></li><li><a
href="http://beerpla.net/2007/10/28/ftprush-cleanup-script/" rel="bookmark" title="October 28, 2007">FTPRush Cleanup Script</a></li><li><a
href="http://beerpla.net/2008/03/21/quick-snippet-finding-if-a-file-has-a-media-extension-using-regex/" rel="bookmark" title="March 21, 2008">Quick Perl Snippet: Finding If A File Has A Media Extension Using Regex</a></li><li><a
href="http://beerpla.net/2008/07/23/how-to-check-if-the-local-svn-revision-is-up-to-date/" rel="bookmark" title="July 23, 2008">How To Check If The Local SVN Revision Is Up-To-Date</a></li><li><a
href="http://beerpla.net/2008/10/11/how-to-sort-folders-the-same-way-as-files-in-total-commander/" rel="bookmark" title="October 11, 2008">How To Sort Folders The Same Way As Files In Total Commander</a></li></ul><p><a
class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbeerpla.net%2F2009%2F04%2F08%2Fperl-finding-files-the-fun-and-elegant-way%2F&amp;title=%5BPerl%5D%20Finding%20Files%2C%20The%20Fun%20And%20Elegant%20Way" id="wpa2a_24"><img
src="http://beerpla.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded> <wfw:commentRss>http://beerpla.net/2009/04/08/perl-finding-files-the-fun-and-elegant-way/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>How To Fight Clickjacking (Using The Recent Twitter Hijacking As An Example)</title><link>http://beerpla.net/2009/02/12/how-to-fight-clickjacking-using-the-recent-twitter-hijacking-as-an-example/</link> <comments>http://beerpla.net/2009/02/12/how-to-fight-clickjacking-using-the-recent-twitter-hijacking-as-an-example/#comments</comments> <pubDate>Thu, 12 Feb 2009 19:43:53 +0000</pubDate> <dc:creator>Artem Russakovskii</dc:creator> <category><![CDATA[Programming]]></category> <category><![CDATA[Security]]></category> <category><![CDATA[Tutorials]]></category> <category><![CDATA[Twitter]]></category> <category><![CDATA[attack]]></category> <category><![CDATA[click]]></category> <category><![CDATA[clickjacking]]></category> <category><![CDATA[combat]]></category> <category><![CDATA[fight]]></category> <category><![CDATA[Firefox]]></category> <category><![CDATA[ie]]></category> <category><![CDATA[injection]]></category> <category><![CDATA[internet explorer]]></category> <category><![CDATA[jacking]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[noscript]]></category> <category><![CDATA[protect]]></category> <category><![CDATA[twitter]]></category> <category><![CDATA[xss]]></category> <guid
isPermaLink="false">http://beerpla.net/2009/02/12/how-to-fight-clickjacking-using-the-recent-twitter-hijacking-as-an-example/</guid> <description><![CDATA[<h2><img
style="margin: 0px 10px 10px 0px; display: inline" title="image" alt="image" align="left" src="http://beerpla.net/wp-content/uploads/HowToFightClickjackingUsingTheRecentTwit_8F77/image.png" width="150" height="138" /> Introduction</h2><p><a
href="http://en.wikipedia.org/wiki/Clickjacking">Clickjacking</a> is a malicious technique of tricking web users into revealing confidential information or taking control of their computer while clicking on seemingly innocuous web pages. A vulnerability across a variety of browsers and platforms, a clickjacking takes the form of embedded code or script that can execute without the user&#039;s knowledge, such as clicking on a button that appears to perform another function (credit: Wikipedia).</p><p>Clickjacking is hard to combat. From a technical standpoint, the attack is executed using a combination of <a
href="http://en.wikipedia.org/wiki/Css">CSS</a> and <a
href="http://en.wikipedia.org/wiki/IFrame">iFrames</a>, which are both harmless web technologies, and relies mostly on tricking users by means of social engineering. Additionally, the only server side technique against clickjacking known to me is “<a...<div
class=clear></div> <a
href="http://beerpla.net/2009/02/12/how-to-fight-clickjacking-using-the-recent-twitter-hijacking-as-an-example/" class="read_more"><div
class=excerpt-end>Read the rest of this article &#187;</div></a></p>]]></description> <content:encoded><![CDATA[<h2><img
style="margin: 0px 10px 10px 0px; display: inline" title="image" alt="image" align="left" src="http://beerpla.net/wp-content/uploads/HowToFightClickjackingUsingTheRecentTwit_8F77/image.png" width="150" height="138" /> Introduction</h2><p><a
href="http://en.wikipedia.org/wiki/Clickjacking">Clickjacking</a> is a malicious technique of tricking web users into revealing confidential information or taking control of their computer while clicking on seemingly innocuous web pages. A vulnerability across a variety of browsers and platforms, a clickjacking takes the form of embedded code or script that can execute without the user&#039;s knowledge, such as clicking on a button that appears to perform another function (credit: Wikipedia).</p><p>Clickjacking is hard to combat. From a technical standpoint, the attack is executed using a combination of <a
href="http://en.wikipedia.org/wiki/Css">CSS</a> and <a
href="http://en.wikipedia.org/wiki/IFrame">iFrames</a>, which are both harmless web technologies, and relies mostly on tricking users by means of social engineering. Additionally, the only server side technique against clickjacking known to me is “<a
href="http://en.wikipedia.org/wiki/Framekiller">frame breaking</a>”, which would cause a legitemate site to break out of any iFrames it may be embedded in. This is not always the desired behavior and is generally frowned upon.</p><p><div
class="note"><div
class="noteclassic"><a
href="http://en.wikipedia.org/wiki/Cross-site_scripting">XSS</a> and <a
href="http://www.codinghorror.com/blog/archives/001171.html">CSRF</a> are examples of similar malicious web attacks.</div></div></p><h2>Generic Example</h2><p>In laymen’s terms, clickjacking means that it is quite possible for websites to trick you into, for example, clicking a button to show a cute kitty while in reality prompting a deletion of all your hotmail email. A malicious site uses an iFrame (which essentially allows embedding sites within other sites) with hotmail loaded inside and hidden using CSS (which is a web language for styling HTML elements). A button named “Show Me The Next Awwww Kitty” is then placed by the malicious site and positioned below the iFrame layer (manipulated by CSS, yet again). However, because the iFrame is hidden, it looks like the “Aww” button is all you’re clicking. Wrong!</p><p><a
href="http://beerpla.net/wp-content/uploads/HowToFightClickjackingUsingTheRecentTwit_8F77/image_3.png" class="lightview" rel="gallery['774']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToFightClickjackingUsingTheRecentTwit_8F77/image_thumb.png" width="351" height="92" /></a>&#160;</p><h2>Latest Example: Twitter</h2><p>This morning a new, though harmless, epidemic hit twitter. Hundreds and thousands of messages saying “Don’t Click: <a
href="http://tinyurl.com/amgzs6" rel="nofollow">http://tinyurl.com/amgzs6</a>” started showing up. Clicking the link shows a simple page with 1 button:</p><p><a
href="http://beerpla.net/wp-content/uploads/HowToFightClickjackingUsingTheRecentTwit_8F77/image_4.png" class="lightview" rel="gallery['774']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToFightClickjackingUsingTheRecentTwit_8F77/image_thumb_3.png" width="183" height="129" /></a> Clicking (which I of course did) uses clickjacking to repost the message to your own twitter account. Take a look yourself: <a
title="http://search.twitter.com/search?q=don%27t+click" href="http://search.twitter.com/search?q=don%27t+click" rel="nofollow">http://search.twitter.com/search?q=don%27t+click</a>.</p><p><a
href="http://beerpla.net/wp-content/uploads/HowToFightClickjackingUsingTheRecentTwit_8F77/image_5.png" class="lightview" rel="gallery['774']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToFightClickjackingUsingTheRecentTwit_8F77/image_thumb_4.png" width="504" height="492" /></a></p><p>All of these are a result of an experiment by <a
href="http://www.korben.info/petit-cours-de-twitt-jacking.html" rel="nofollow">some French guys</a> to mess around with twitter and show the effects of clickjacking. Thank you for that, French guys. Creating awareness via the most social platform on the web is the best thing they could do for us.</p><p><div
class="note"><div
class="notetip">Twitter rolled out a quick fix, using the very “frame breaking” technique I mentioned earlier. Now any site trying to embed twitter in an iFrame will redirect to it.</div></div></p><h2>Fight Clickjacking</h2><p><img
style="margin: 0px 10px 0px 0px; display: inline" title="image" alt="image" align="left" src="http://beerpla.net/wp-content/uploads/HowToFightClickjackingUsingTheRecentTwit_8F77/image_6.png" width="150" height="150" /> James Padolsey recently wrote an excellent <a
href="http://james.padolsey.com/general/clickjacking-twitter/">blog post about clickjacking</a> and mentioned Twitter specifically. Because clickjacking relies mostly on social hacking (i.e. tricking people into clicking malicious links and buttons), Twitter is nothing but a perfect platform. James gives some nice background info and code examples. He correctly highlights, as I did earlier, that clickjacking is not a software bug – it’s a malicious technique exploiting harmless technologies.</p><h4>So how does one fight clickjacking?</h4><p>At this point the most reliable way is to use Firefox and the <a
href="http://noscript.net/">NoScript extension</a>. NoScript provides a simple, yet amazingly effective feature, called <a
href="http://noscript.net/faq#qa7_4">ClearClick</a>. From their site:</p><p>“…it&#039;s enabled by default, protecting NoScript users from Clickjacking everywhere: it even remains active if you switch NoScript in the less safe <em>Allow scripts globally</em> mode. How does it work? Clickjacking hides or displaces or partially covers something you wouldn&#039;t want to click, if you could see it in its original context. ClearClick does the opposite: whenever you click a plugin object or a framed page, it takes a screenshot of it alone and opaque (i.e. an image of it with no transparencies and no overlaying objects), then compares it with a screenshot of the parent page as you can see it. If the two images differ, a clickjacking attack is probably happening and NoScript raises a &quot;ClearClick warning&quot;, showing you the contextualized and &quot;clear&quot; object you were about to click, so you can evaluate by yourself if that was really something you wanted to do.”</p><p>Did ClearClick work in the earlier twitter attack? Sure did! After I clicked the “Don’t click” button Noscript promptly popped up a warning showing the hidden iFrame (since the original malicious page has been removed, I found <a
href="http://www.korben.info/twitter/ohoh.html" rel="nofollow">another similar page</a> from the same author for screenshot purposes).</p><p><a
href="http://beerpla.net/wp-content/uploads/HowToFightClickjackingUsingTheRecentTwit_8F77/image_7.png" class="lightview" rel="gallery['774']" title="image"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="image" alt="image" src="http://beerpla.net/wp-content/uploads/HowToFightClickjackingUsingTheRecentTwit_8F77/image_thumb_5.png" width="426" height="426" /></a>&#160;</p><p>So, even if you don’t want to enable NoScript globally, install it anyway, just for ClearClick.</p><p><div
class="note"><div
class="noteclassic">Using a browser other than Firefox? The best technique you should use is, as a general rule, don’t click on suspicious buttons and links on pages you are not familiar with. Remember: you’re on the Internet and it is full of traps.</div></div></p><p>That about covers what I had to say about clickjacking. Stay safe, folks!</p><div
class="shr-bookmarks shr-bookmarks-expand"><ul
class="socials"><li
class="shr-twitter"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Fight+Clickjacking+%28Using+The+Recent+Twitter+Hijacking+As+An+Example%29&amp;link=http://beerpla.net/2009/02/12/how-to-fight-clickjacking-using-the-recent-twitter-hijacking-as-an-example/&amp;notes=%20Introduction%20%20Clickjacking%20is%20a%20malicious%20technique%20of%20tricking%20web%20users%20into%20revealing%20confidential%20information%20or%20taking%20control%20of%20their%20computer%20while%20clicking%20on%20seemingly%20innocuous%20web%20pages.%20A%20vulnerability%20across%20a%20variety%20of%20browsers%20and%20platforms%2C%20a%20clickjacking%20takes%20the%20form%20of%20embedde&amp;short_link=http://bit.ly/bXYPgv&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a></li><li
class="shr-facebook"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Fight+Clickjacking+%28Using+The+Recent+Twitter+Hijacking+As+An+Example%29&amp;link=http://beerpla.net/2009/02/12/how-to-fight-clickjacking-using-the-recent-twitter-hijacking-as-an-example/&amp;notes=%20Introduction%20%20Clickjacking%20is%20a%20malicious%20technique%20of%20tricking%20web%20users%20into%20revealing%20confidential%20information%20or%20taking%20control%20of%20their%20computer%20while%20clicking%20on%20seemingly%20innocuous%20web%20pages.%20A%20vulnerability%20across%20a%20variety%20of%20browsers%20and%20platforms%2C%20a%20clickjacking%20takes%20the%20form%20of%20embedde&amp;short_link=http://bit.ly/bXYPgv&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a></li><li
class="shr-googlebuzz"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Fight+Clickjacking+%28Using+The+Recent+Twitter+Hijacking+As+An+Example%29&amp;link=http://beerpla.net/2009/02/12/how-to-fight-clickjacking-using-the-recent-twitter-hijacking-as-an-example/&amp;notes=%20Introduction%20%20Clickjacking%20is%20a%20malicious%20technique%20of%20tricking%20web%20users%20into%20revealing%20confidential%20information%20or%20taking%20control%20of%20their%20computer%20while%20clicking%20on%20seemingly%20innocuous%20web%20pages.%20A%20vulnerability%20across%20a%20variety%20of%20browsers%20and%20platforms%2C%20a%20clickjacking%20takes%20the%20form%20of%20embedde&amp;short_link=http://bit.ly/bXYPgv&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a></li><li
class="shr-reddit"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Fight+Clickjacking+%28Using+The+Recent+Twitter+Hijacking+As+An+Example%29&amp;link=http://beerpla.net/2009/02/12/how-to-fight-clickjacking-using-the-recent-twitter-hijacking-as-an-example/&amp;notes=%20Introduction%20%20Clickjacking%20is%20a%20malicious%20technique%20of%20tricking%20web%20users%20into%20revealing%20confidential%20information%20or%20taking%20control%20of%20their%20computer%20while%20clicking%20on%20seemingly%20innocuous%20web%20pages.%20A%20vulnerability%20across%20a%20variety%20of%20browsers%20and%20platforms%2C%20a%20clickjacking%20takes%20the%20form%20of%20embedde&amp;short_link=http://bit.ly/bXYPgv&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a></li><li
class="shr-hackernews"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Fight+Clickjacking+%28Using+The+Recent+Twitter+Hijacking+As+An+Example%29&amp;link=http://beerpla.net/2009/02/12/how-to-fight-clickjacking-using-the-recent-twitter-hijacking-as-an-example/&amp;notes=%20Introduction%20%20Clickjacking%20is%20a%20malicious%20technique%20of%20tricking%20web%20users%20into%20revealing%20confidential%20information%20or%20taking%20control%20of%20their%20computer%20while%20clicking%20on%20seemingly%20innocuous%20web%20pages.%20A%20vulnerability%20across%20a%20variety%20of%20browsers%20and%20platforms%2C%20a%20clickjacking%20takes%20the%20form%20of%20embedde&amp;short_link=http://bit.ly/bXYPgv&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a></li><li
class="shr-delicious"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Fight+Clickjacking+%28Using+The+Recent+Twitter+Hijacking+As+An+Example%29&amp;link=http://beerpla.net/2009/02/12/how-to-fight-clickjacking-using-the-recent-twitter-hijacking-as-an-example/&amp;notes=%20Introduction%20%20Clickjacking%20is%20a%20malicious%20technique%20of%20tricking%20web%20users%20into%20revealing%20confidential%20information%20or%20taking%20control%20of%20their%20computer%20while%20clicking%20on%20seemingly%20innocuous%20web%20pages.%20A%20vulnerability%20across%20a%20variety%20of%20browsers%20and%20platforms%2C%20a%20clickjacking%20takes%20the%20form%20of%20embedde&amp;short_link=http://bit.ly/bXYPgv&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a></li><li
class="shr-stumbleupon"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Fight+Clickjacking+%28Using+The+Recent+Twitter+Hijacking+As+An+Example%29&amp;link=http://beerpla.net/2009/02/12/how-to-fight-clickjacking-using-the-recent-twitter-hijacking-as-an-example/&amp;notes=%20Introduction%20%20Clickjacking%20is%20a%20malicious%20technique%20of%20tricking%20web%20users%20into%20revealing%20confidential%20information%20or%20taking%20control%20of%20their%20computer%20while%20clicking%20on%20seemingly%20innocuous%20web%20pages.%20A%20vulnerability%20across%20a%20variety%20of%20browsers%20and%20platforms%2C%20a%20clickjacking%20takes%20the%20form%20of%20embedde&amp;short_link=http://bit.ly/bXYPgv&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a></li><li
class="shr-mail"> <a
href="http://www.shareaholic.com/api/share/?title=How%20To%20Fight%20Clickjacking%20%28Using%20The%20Recent%20Twitter%20Hijacking%20As%20An%20Example%29&amp;link=http://beerpla.net/2009/02/12/how-to-fight-clickjacking-using-the-recent-twitter-hijacking-as-an-example/&amp;notes=%20Introduction%20%20Clickjacking%20is%20a%20malicious%20technique%20of%20tricking%20web%20users%20into%20revealing%20confidential%20information%20or%20taking%20control%20of%20their%20computer%20while%20clicking%20on%20seemingly%20innocuous%20web%20pages.%20A%20vulnerability%20across%20a%20variety%20of%20browsers%20and%20platforms%2C%20a%20clickjacking%20takes%20the%20form%20of%20embedde&amp;short_link=http://bit.ly/bXYPgv&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=201&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a></li></ul><div
style="clear: both;"></div></div> Similar Posts:<ul><li><a
href="http://beerpla.net/2009/10/29/modern-day-frame-busting-with-x-frame-options-and-this-content-cannot-be-displayed-in-a-frame-warnings/" rel="bookmark" title="October 29, 2009">Modern-Day Frame Busting With X-FRAME-OPTIONS And &quot;This content cannot be displayed in a frame&quot; Warnings</a></li><li><a
href="http://beerpla.net/2009/12/20/enable-a-twitter-retweet-rt-button-that-lets-you-add-comments-before-retweeting/" rel="bookmark" title="December 20, 2009">Enable A Twitter Retweet (RT) Button That Lets You Add Comments Before Retweeting</a></li><li><a
href="http://beerpla.net/2010/02/03/how-not-to-implement-a-web-application-that-handles-external-authentication-using-betwittered-com-as-an-example/" rel="bookmark" title="February 3, 2010">How *Not* To Implement A Web Application That Handles External Authentication, Using BeTwittered.com As An Example</a></li><li><a
href="http://beerpla.net/2009/10/24/are-you-a-stackoverflow-com-superuser-com-serverfault-com-fan-heres-a-greasemonkey-script-to-keep-track-of-your-accounts-on-all-of-them/" rel="bookmark" title="October 24, 2009">StackOverflow.com, SuperUser.com, ServerFault.com Fan? Here&#039;s A Greasemonkey Script To Keep Track Of All Your Accounts</a></li><li><a
href="http://beerpla.net/2009/06/21/hidden-features-of-perl-php-javascript-c-c-c-java-ruby-python-and-others-collection-of-incredibly-useful-lists/" rel="bookmark" title="June 21, 2009">Hidden Features Of Perl, PHP, Javascript, C, C++, C#, Java, Ruby, Python, And Others [Collection Of Incredibly Useful Lists]</a></li></ul><p><a
class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbeerpla.net%2F2009%2F02%2F12%2Fhow-to-fight-clickjacking-using-the-recent-twitter-hijacking-as-an-example%2F&amp;title=How%20To%20Fight%20Clickjacking%20%28Using%20The%20Recent%20Twitter%20Hijacking%20As%20An%20Example%29" id="wpa2a_26"><img
src="http://beerpla.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded> <wfw:commentRss>http://beerpla.net/2009/02/12/how-to-fight-clickjacking-using-the-recent-twitter-hijacking-as-an-example/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> </channel> </rss>
