<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4259479084086531350</id><updated>2018-08-28T20:27:56.126+05:30</updated><category term="News"/><category term="Softwares"/><category term="Tips"/><category term="Google"/><category term="Cool Stuff"/><category term="Windows"/><category term="Linked"/><category term="Web Apps"/><category term="Tutorials"/><category term="javascript"/><category term="Linux"/><category term="Twitter"/><category term="PHP"/><category term="Customisations"/><category term="Round-Ups"/><category term="Hacking"/><category term="css"/><category term="Mobile"/><category term="Ubuntu"/><category term="blogging"/><category term="et cetera"/><category term="Firefox"/><category term="Best Of The Week"/><category term="Deviations"/><category term="Projects"/><category term="jQuery"/><category term="Gadgets"/><category term="Resources"/><category term="userscripts"/><category term="Apple"/><category term="Donuts"/><category term="Mozilla"/><category term="Photoshop"/><category term="url"/><category term="ASCII"/><category term="Books"/><category term="Templates"/><category term="python"/><category term="Facebook"/><category term="Wordpress"/><title type='text'>Technabled</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.technabled.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default?orderby=published'/><link rel='alternate' type='text/html' href='http://www.technabled.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default?start-index=26&amp;max-results=25&amp;orderby=published'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>310</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-5649301752442333505</id><published>2013-01-27T13:24:00.000+05:30</published><updated>2013-01-27T13:24:22.825+05:30</updated><title type='text'>SplinterNet Allows P2P Microblogging over Bluetooth</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-X-n_AKc7DN4/UQTc0QlXDSI/AAAAAAAABDs/3YzN70Dcfl8/s1600/splintertext.png&quot; imageanchor=&quot;1&quot; style=&quot;clear:left; float:left;margin-right:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; width=&quot;240&quot; src=&quot;http://3.bp.blogspot.com/-X-n_AKc7DN4/UQTc0QlXDSI/AAAAAAAABDs/3YzN70Dcfl8/s400/splintertext.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;SplinterNet is a new project that allows P2P microblogging over bluetooth to avoid government censorship. It&#39;s currently in beta and available only as an Android application. This server-less messaging is completely anonymous to prevent government retaliation. While you can send a SplinterNet message to your buddy via bluetooth, one can also post the message to the internet as well if one has access to internet.  A post can contain text and image. Each screen has a &quot;panic button&quot; to quickly get out of the screen. Messages can be marked as important, too. Important posts are synced first.  Website: &lt;a href=&quot;https://github.com/megamattron/SplinterNet&quot;&gt;https://github.com/megamattron/SplinterNet&lt;/a&gt;License: Open Source</content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/5649301752442333505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=5649301752442333505&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/5649301752442333505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/5649301752442333505'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2013/01/splinternet-allows-p2p-microblogging.html' title='SplinterNet Allows P2P Microblogging over Bluetooth'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-X-n_AKc7DN4/UQTc0QlXDSI/AAAAAAAABDs/3YzN70Dcfl8/s72-c/splintertext.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-2619422345124628534</id><published>2011-12-04T08:03:00.001+05:30</published><updated>2011-12-04T08:16:18.589+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Tips"/><category scheme="http://www.blogger.com/atom/ns#" term="Wordpress"/><title type='text'>QuickTip: How To Prevent Google Analytics From Tracking Your Visits in Wordpress</title><content type='html'>&lt;div style=&#39;clear:both;text-align:center;float:left;margin:0px 4px 4px 0px;&#39;&gt;&lt;img src=&#39;http://2.bp.blogspot.com/_SBJEWv17HbY/TMalHHSFWqI/AAAAAAAAAEQ/iAlTpXVazPE/s1600/1288086792_Wordpress.png&#39;/&gt;&lt;/div&gt;Google Analytics is the web&#39;s most favorite tracking application used by millions. They are also rolling out real-time analytics. But if you&#39;re the admin of a site and you&#39;re testing several features of a site, you probably won&#39;t want to a track your visits. Here&#39;s how you can do that in Wordpress. Google Analytics&#39; tracking code is inserted inside the &amp;lt;head&amp;gt; tag. So, you can restrict this insertion using the following codes in your theme&#39;s header.php file: &lt;pre name=&#39;code&#39; class=&#39;html&#39;&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;if(!current_user_can(&#39;edit_users&#39;)):&lt;br /&gt;?&amp;gt;&lt;br /&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;  var _gaq = _gaq || [];&lt;br /&gt;  _gaq.push([&#39;_setAccount&#39;, &#39;UA-XXXXXX-X&#39;]);&lt;br /&gt;  _gaq.push([&#39;_setDomainName&#39;, &#39;domain.tld&#39;]);&lt;br /&gt;  _gaq.push([&#39;_trackPageview&#39;]);&lt;br /&gt;&lt;br /&gt;  (function() {&lt;br /&gt;    var ga = document.createElement(&#39;script&#39;); ga.type = &#39;text/javascript&#39;; ga.async = true;&lt;br /&gt;    ga.src = (&#39;https:&#39; == document.location.protocol ? &#39;https://ssl&#39; : &#39;http://www&#39;) + &#39;.google-analytics.com/ga.js&#39;;&lt;br /&gt;    var s = document.getElementsByTagName(&#39;script&#39;)[0]; s.parentNode.insertBefore(ga, s);&lt;br /&gt;  })();&lt;br /&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;&lt;/pre&gt;This is pretty simple: it checks whether the logged in user is admin. If not, it inserts the tracking codes. You can find more about &lt;a href=&quot;http://codex.wordpress.org/Roles_and_Capabilities&quot;&gt;Roles and Permissions in Wordpress&lt;/a&gt;. &lt;strong&gt;Note:&lt;/strong&gt; Do change &lt;em&gt;UA-XXXXXX-X&lt;/em&gt; and &lt;em&gt;domain.tld&lt;/em&gt; with correct values.</content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/2619422345124628534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=2619422345124628534&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/2619422345124628534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/2619422345124628534'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2011/12/prevent-google-analytics-from-tracking.html' title='QuickTip: How To Prevent Google Analytics From Tracking Your Visits in Wordpress'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_SBJEWv17HbY/TMalHHSFWqI/AAAAAAAAAEQ/iAlTpXVazPE/s72-c/1288086792_Wordpress.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-6307897763495900912</id><published>2011-09-16T06:43:00.000+05:30</published><updated>2011-09-19T07:25:58.129+05:30</updated><title type='text'>Freebie: Social Port WordPress Plugin</title><content type='html'>&lt;div style=&quot;clear: both; float: left; margin: 0px 2px 4px 0px; text-align: center;&quot;&gt;&lt;img src=&quot;http://adcdn.files.wordpress.com/2011/09/teaser.jpg&quot; /&gt;&lt;/div&gt;SocialPort is a social-media Wordpress plugin that lets readers easy access to social-media bookmarking sites. It&#39;s just like bookmarking buttons — but what makes it stand out is that it adds a fixed &lt;em&gt;port&lt;/em&gt; containing all the links. No matter how lengthy your page is, SocialPort sticks to the page. To make it unobtrusive, I have added an option for the readers to hide the port. This happens to be my first ever WP plugin! So, it&#39;s probably simpler in the way it works. &lt;br /&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;img src=&quot;http://adcdn.files.wordpress.com/2011/09/promo.jpg&quot; /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a class=&quot;download-link read demo&quot; href=&quot;http://lab.abhisekdutta.in/wpworks/social-port/2011/09/14/features/&quot;&gt;Demo&lt;/a&gt; &lt;a class=&quot;download-link&quot; href=&quot;http://www.box.net/shared/1i7aoygh9rc96gzy29en&quot;&gt;Download&lt;/a&gt;&lt;/div&gt;&lt;h4 class=&quot;c0&quot;&gt;Installation&lt;/h4&gt;The ZIP file contains social-port directory. Extract the directory and upload the entire directory to your plugins directory in wordpress installation. (&lt;em&gt;The plugins directory is inside &lt;strong&gt;wp-content/&lt;/strong&gt; directory&lt;/em&gt;) Now, in your WordPress Dashboard, go to &lt;em&gt;Plugins&lt;/em&gt;. You&#39;d find Social Port appearing among the list of plugins. Just activate it clicking the link. &lt;br /&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span id=&quot;goog_1418699786&quot;&gt;&lt;/span&gt;&lt;img id=&quot;:current_picnik_image&quot; src=&quot;http://adcdn.files.wordpress.com/2011/09/plugins-list.png&quot; /&gt;&lt;span id=&quot;goog_1418699787&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;h4 class=&quot;c0&quot;&gt;Admin Section&lt;/h4&gt;Once Social-port is installed, you can access the admin section inside your plugins menu in WordPress Dashboard. &lt;br /&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;img src=&quot;http://adcdn.files.wordpress.com/2011/09/admin_menu_item.png&quot; /&gt;&lt;/div&gt;The admin section comes with a host of options to control how Social Port acts &lt;br /&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;img src=&quot;http://adcdn.files.wordpress.com/2011/09/admin_menu_break.png&quot; /&gt;&lt;/div&gt;&lt;strong&gt;&lt;em&gt;1.&lt;/em&gt;&lt;/strong&gt; SocialPort comes in three vibrant colors. You can choose from Orange, Black and Blue.&lt;br /&gt;&lt;strong&gt;&lt;em&gt;2.&lt;/em&gt;&lt;/strong&gt; You can decide on what text you&#39;d like to show beside the buttons.&lt;br /&gt;&lt;strong&gt;&lt;em&gt;3.&lt;/em&gt;&lt;/strong&gt; You can link the RSS button to your Feedburner feed address. You can leave it blank if you want to link to the default feed address.&lt;br /&gt;&lt;strong&gt;&lt;em&gt;4.&lt;/em&gt;&lt;/strong&gt; The toggler can be positioned either at Bottom Right or at Bottom Left.&lt;br /&gt;&lt;strong&gt;&lt;em&gt;5.&lt;/em&gt;&lt;/strong&gt; You can let readers open a new tab/window if they click the links. Leave it unchecked to open links in the same window/tab. &lt;br /&gt;&lt;h4 class=&quot;c0&quot;&gt;Removing Links&lt;/h4&gt;Social Port comes with links to 7 popular social-sharing sites. If you want to remove buttons of any of them, you can do so by changing the &lt;em&gt;socialport.tpl&lt;/em&gt; file. You can find it inside the &lt;em&gt;tpls&lt;/em&gt; directory.&lt;br /&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;img src=&quot;http://adcdn.files.wordpress.com/2011/09/tpl_location.png&quot; /&gt;&lt;/div&gt;The buttons are stacked this way: &lt;br /&gt;&lt;pre class=&quot;html&quot; name=&quot;code&quot;&gt;&amp;lt;!--Twitter Button Start--&amp;gt;&lt;br /&gt;&amp;lt;div class=&#39;social-port-button twitter&#39;&amp;gt;&lt;br /&gt;	&amp;lt;a href=&quot;http://twitter.com/home/?status=[+title+]+[+permalink+]&quot; title=&#39;Share this on Twitter&#39; [+target_window+]&amp;gt;Share on Twitter&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;!-- Twitter Button End --&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Stumbleupon Button Start --&amp;gt;&lt;br /&gt;&amp;lt;div class=&#39;social-port-button stumbleupon&#39;&amp;gt;&lt;br /&gt;	&amp;lt;a href=&#39;http://stumbleupon.com/submit?url=[+permalink+]&amp;amp;title=[+title+]&#39; title=&#39;Share this on StumbleUpon&#39; [+target_window+]&amp;gt;Share on Stumbleupon&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;!-- Stumbleupon Button End --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Facebook Button Start --&amp;gt;&lt;br /&gt;&amp;lt;div class=&#39;social-port-button facebook&#39;&amp;gt;&lt;br /&gt;	&amp;lt;a href=&#39;http://facebook.com/share.php?u=[+permalink+]&#39; title=&#39;Share with your friends on Facebook&#39; [+target_window+]&amp;gt;Share on Facebook&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;!-- Facebook Button End --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Digg Button Start --&amp;gt;&lt;br /&gt;&amp;lt;div class=&#39;social-port-button digg&#39;&amp;gt;&lt;br /&gt;	&amp;lt;a href=&#39;http://digg.com/submit?phase=2&amp;amp;url=[+permalink+]&amp;amp;title=[+title+]&#39; title=&#39;Share this on Digg&#39; [+target_window+]&amp;gt;Share on Digg&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;!-- Digg Button End --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Delicious Button Start --&amp;gt;&lt;br /&gt;&amp;lt;div class=&#39;social-port-button delicious&#39;&amp;gt;&lt;br /&gt;	&amp;lt;a href=&#39;http://del.icio.us/post?url=[+permalink+]&amp;amp;title=[+title+]&#39; title=&#39;Save this on Delicious&#39; [+target_window+]&amp;gt;Share on Delicious&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;!-- Delicious Button End --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Reddit Button Start --&amp;gt;&lt;br /&gt;&amp;lt;div class=&#39;social-port-button reddit&#39;&amp;gt;&lt;br /&gt;	&amp;lt;a href=&#39;http://www.reddit.com/submit?url=[+permalink+]&#39; title=&#39;Share this on Reddit&#39; [+target_window+]&amp;gt;Share on Reddit&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;!-- Reddit Button End --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- LinkedIn Button Start --&amp;gt;&lt;br /&gt;&amp;lt;div class=&#39;social-port-button linkedin&#39;&amp;gt;&lt;br /&gt;	&amp;lt;a href=&#39;http://www.linkedin.com/shareArticle?mini=true&amp;amp;url=[+permalink+]&amp;amp;title=[+title+]&#39; title=&#39;Share this on Linkedin&#39; [+target_window+]&amp;gt;Share on LinkedIn&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;!-- LinkedIn Button End --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Feed Button Start --&amp;gt;&lt;br /&gt;&amp;lt;div class=&#39;social-port-button feed&#39;&amp;gt;&lt;br /&gt;	&amp;lt;a href=&#39;[+feed_url+]&#39; title=&#39;Grab the feed&#39;&amp;gt;Grab the feed&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;!-- Feed Button End --&amp;gt;&lt;br /&gt;&lt;/pre&gt;So, for instance, if you&#39;d like to remove the StumbleUpon button, you can remove the following lines: &lt;br /&gt;&lt;pre class=&quot;html&quot; name=&quot;code&quot;&gt;&amp;lt;!-- Stumbleupon Button Start --&amp;gt;&lt;br /&gt;&amp;lt;div class=&#39;social-port-button stumbleupon&#39;&amp;gt;&lt;br /&gt;	&amp;lt;a href=&#39;http://stumbleupon.com/submit?url=[+permalink+]&amp;amp;title=[+title+]&#39; title=&#39;Share this on StumbleUpon&#39; [+target_window+]&amp;gt;Share on Stumbleupon&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;!-- Stumbleupon Button End --&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;h4 class=&quot;c0&quot;&gt; Sources, Credits and Support&lt;/h4&gt;The icons are from &lt;a href=&quot;http://code.google.com/p/smartwoork/downloads/detail?name=SocialMediaBookmarkIcon.zip&amp;amp;can=2&amp;amp;q=&quot;&gt;here&lt;/a&gt;. Please use the comment section for issues related to this plugin. While I cannot guarantee full support, I would try my best to help you. Cheers!</content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/6307897763495900912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=6307897763495900912&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/6307897763495900912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/6307897763495900912'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2011/09/social-port-wordpress-plugin.html' title='Freebie: Social Port WordPress Plugin'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-5421172279912827353</id><published>2011-08-23T21:41:00.002+05:30</published><updated>2011-08-23T21:53:49.264+05:30</updated><title type='text'>HOW-TO: AJAX Search Suggestions in Input Fields</title><content type='html'>&lt;div style=&quot;clear: both; float: left; margin: 0px 3px 0px 0px; text-align: center;&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_xssgjcTr0ag/TT-aw3JrxBI/AAAAAAAAATM/1luIldNQIbE/s144/peoplesearchbysocialsecuritynumber.jpg&quot; /&gt;&lt;/div&gt;Today we are going to create AJAX search suggestions inside input text fields. This is different from AJAX Auto-suggest or &lt;a href=&quot;http://www.technabled.com/2009/03/how-to-build-animated-ajax-search-with.html&quot;&gt;AJAX Live Search&lt;/a&gt;. The idea is simple — we are going to show the user suggestive terms as (s)he types. When the user hits the enter key, the suggestion is sent as the query. This feature was there in Google&#39;s search-box before they launched Google Instant search. (I recently added this nice feature on &lt;a href=&quot;http://s.technabled.com/PulsePro/&quot;&gt;PulsePro&lt;/a&gt;&#39;s Admin Panel.) Let&#39;s build it together! &lt;br /&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;img alt=&quot;Search Suggest Screenshot&quot; src=&quot;http://adcdn.files.wordpress.com/2011/08/search-suggest.png&quot; /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a class=&quot;download-link read demo&quot; href=&quot;http://lab.abhisekdutta.in/search_suggest/&quot;&gt;Demo&lt;/a&gt; &lt;a class=&quot;download-link&quot; href=&quot;http://www.box.net/shared/e9d8clks3514hm4kabee&quot;&gt;Download&lt;/a&gt;&lt;/div&gt;&lt;h4 class=&quot;c0&quot;&gt;    What we need&lt;/h4&gt;All we need is PHP 5 and a simple database table to search. For the purpose of this tutorial, let us create table called &lt;em&gt;world&lt;/em&gt;. You can find the SQL for the table &lt;a href=&quot;http://dev.mysql.com/doc/index-other.html&quot;&gt;here&lt;/a&gt; at MySQL&#39;s site or download the source files of the tutorial. (If you&#39;re super beginner with MySQL, &lt;a href=&quot;http://dev.mysql.com/doc/world-setup/en/world-setup.html&quot;&gt;here&#39;s&lt;/a&gt; how you can set this up.) &lt;strong&gt;Note&lt;/strong&gt; that the database is pretty big so it may take some time to execute the SQL commands. &lt;br /&gt;There are three tables inside the world database. We only need the city table for this tutorial. The structure is like the following: &lt;br /&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;img src=&quot;http://adcdn.files.wordpress.com/2011/08/city-table.png&quot; /&gt;&lt;/div&gt;We are going to let the users search the city names. So, the &lt;em&gt;Name&lt;/em&gt; field is our hero! &lt;br /&gt;&lt;h4 class=&quot;c0&quot;&gt;          CSS Files and Structure&lt;/h4&gt;By the time we end this tutorial, the directory structure would be like this: 	&lt;br /&gt;&lt;div style=&quot;clear: both; text-align: center;&quot;&gt;&lt;img src=&quot;http://adcdn.files.wordpress.com/2011/08/directory-structure.png&quot; /&gt;	&lt;/div&gt;In &lt;em&gt;index.php&lt;/em&gt; file, we add the following lines:&lt;br /&gt;&lt;pre class=&quot;html&quot; name=&quot;code&quot;&gt;&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&amp;gt;&lt;br /&gt;&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;AJAX Search Suggest in Textfield&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;script type=&#39;text/javascript&#39; src=&#39;http://code.jquery.com/jquery-1.6.2.min.js&#39;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type=&#39;text/javascript&#39; src=&#39;searchSuggest.js&#39;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;link rel=&#39;stylesheet&#39; href=&#39;style.css&#39;&amp;gt;&amp;lt;/link&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;div id=&#39;wrapper&#39;&amp;gt;&lt;br /&gt;&amp;lt;form action=&quot;http://google.com/&quot; method=&#39;get&#39;&amp;gt;&lt;br /&gt;	&amp;lt;div class=&quot;infoWrapper&quot;&amp;gt;&lt;br /&gt;		&amp;lt;div class=&quot;infoTitle&quot;&amp;gt;Search Cities&amp;lt;/div&amp;gt;&lt;br /&gt;		&amp;lt;div class=&quot;infoContent&quot;&amp;gt;&lt;br /&gt;			&amp;lt;input type=&quot;text&quot; id=&quot;redText&quot; disabled=&quot;disabled&quot; autocomplete=&quot;off&quot; value=&quot;&quot; class=&#39;text long&#39;/&amp;gt;&lt;br /&gt;			&amp;lt;input type=&quot;text&quot; autocomplete=&quot;off&quot; id=&quot;search&quot; value=&quot;&quot; name=&quot;q&quot; class=&#39;text long search&#39;/&amp;gt;&lt;br /&gt;		&amp;lt;/div&amp;gt;&lt;br /&gt;	&amp;lt;/div&amp;gt;&lt;br /&gt;	&amp;lt;div class=&quot;infoWrapper&quot;&amp;gt;&lt;br /&gt;		&amp;lt;div class=&quot;infoTitle&quot;&amp;gt;&amp;nbsp;&amp;lt;/div&amp;gt;&lt;br /&gt;		&amp;lt;div class=&quot;infoContent&quot;&amp;gt;&lt;br /&gt;			&amp;lt;input type=&quot;submit&quot; value=&#39;Google Search&#39; id=&#39;search_button&#39; /&amp;gt;&lt;br /&gt;		&amp;lt;/div&amp;gt;&lt;br /&gt;	&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;This is fairly simple file. The only thing that needs attention is the presence of a disabled &lt;em&gt;input&lt;/em&gt; element. We are going to place this disabled input field &lt;em&gt;behind&lt;/em&gt; the text input where the user actually types. Also note that we have turned off autocomplete. This is to prevent any unwanted text suggestions that the &lt;em&gt;browser&lt;/em&gt; may show.&lt;br /&gt;But how on earth could we possibly put the disabled text field behind active text input? Well, the following CSS (inside style.css) will do the magic.&lt;br /&gt;&lt;pre class=&quot;css&quot; name=&quot;code&quot;&gt;html, body, div, h1, h2, h3, h4, h5, h6, ul, ol, dl, li, dt, dd, p, blockquote,&lt;br /&gt;pre, form, fieldset, table, th, td { margin: 0; padding: 0; }&lt;br /&gt;&lt;br /&gt;body {&lt;br /&gt;font-size: 14px;&lt;br /&gt;line-height:1.3em;&lt;br /&gt;text-align:center;&lt;br /&gt;font-family:Arial, sans-serif;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;a, a:visited {&lt;br /&gt;outline:none;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.clear {&lt;br /&gt;clear:both;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#wrapper {&lt;br /&gt;width:960px;&lt;br /&gt;margin:0 auto;&lt;br /&gt;text-align:left;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;Generic Form styles&lt;br /&gt;**/&lt;br /&gt;.infoWrapper {&lt;br /&gt;	clear:both;&lt;br /&gt;	margin-bottom:10px;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.infoTitle {&lt;br /&gt;	color:#808080;&lt;br /&gt;	float:left;&lt;br /&gt;	width:230px;&lt;br /&gt;	text-align:right;&lt;br /&gt;	margin-right:5px;&lt;br /&gt;	line-height:29px;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.infoContent {&lt;br /&gt;	padding-left:130px;&lt;br /&gt;	text-align: left;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.text{&lt;br /&gt;    border-color: #CCCCCC #C3C3C3 #DDDDDD;&lt;br /&gt;    border-style: solid;&lt;br /&gt;    border-width: 1px;&lt;br /&gt;    font-size: 14px;&lt;br /&gt;    margin-right: 4px;&lt;br /&gt;    padding: 5px;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.text.long {&lt;br /&gt;	width:350px;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;Form Elements&lt;br /&gt;**/&lt;br /&gt;#redText, #search {&lt;br /&gt;	background: none repeat scroll 0 0 transparent;&lt;br /&gt;	padding-left: 5px;&lt;br /&gt;	padding-right:17px;&lt;br /&gt;	position: absolute;&lt;br /&gt;	z-index: 100;&lt;br /&gt;	text-transform: lowercase;&lt;br /&gt;	line-height:1.3em;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#redText {&lt;br /&gt;	z-index:99;&lt;br /&gt;	color:red;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#search_button {&lt;br /&gt;	margin-top:10px;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;The first few lines (up to line 23) are to reset browser specific styles. (It&#39;s a good practice to use these styles in almost all HTML files.) Then, there are some generic form styles to prettify our form. What needs attention is here:&lt;br /&gt;&lt;pre class=&quot;css&quot; name=&quot;code&quot;&gt;#redText, #search {&lt;br /&gt;	background: transparent;&lt;br /&gt;	padding-left: 5px;&lt;br /&gt;	padding-right:17px;&lt;br /&gt;	position: absolute;&lt;br /&gt;	z-index: 100;&lt;br /&gt;	text-transform: lowercase;&lt;br /&gt;	line-height:1.3em;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#redText {&lt;br /&gt;	z-index:99;&lt;br /&gt;	color:red;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;em&gt;redText&lt;/em&gt; is the id of the disabled input and &lt;em&gt;search&lt;/em&gt; is the id of active input field. We have positioned both absolutely. This makes one overlap on the other. Next, we set the &lt;em&gt;z-index&lt;/em&gt; of disabled input less than the active input. This brings the active input to the front. The other property to notice is that we are forcing the user to type in lowercase (&lt;em&gt;text-transform: lowercase&lt;/em&gt;). It&#39;s not a good practice but this makes things easier for us developers (at least for this tutorial). &lt;br /&gt;&lt;h4 class=&quot;c0&quot;&gt;        Server Side Data Handling&lt;/h4&gt;Now, we are going to work with &lt;em&gt;ajax.php&lt;/em&gt;. 	&lt;br /&gt;&lt;pre class=&quot;php&quot; name=&quot;code&quot;&gt;&amp;lt;?php&lt;br /&gt;//connect to mysql and select db&lt;br /&gt;mysql_connect(&#39;YOUR_HOSTNAME&#39;, &#39;YOUR_USERNAME&#39;, &#39;YOUR_PASSWORD&#39;) or die(&quot;Cannot connect to database!&quot;);&lt;br /&gt;mysql_select_db(&#39;world&#39;) or die(&quot;Cannot select database!&quot;);&lt;br /&gt;&lt;br /&gt;$result = array();&lt;br /&gt;$search_text = urldecode(filter_var(trim($_POST[&#39;q&#39;]))); // $_POST[&#39;q&#39;] is the search string which user types. It is sent via ajax&lt;br /&gt;$q = &quot;SELECT * FROM City WHERE `Name` LIKE &#39;{$search_text}%&#39;&quot;;&lt;br /&gt;$r = mysql_query($q);&lt;br /&gt;if(mysql_num_rows($r)&amp;gt;0){&lt;br /&gt;	$row = mysql_fetch_assoc($r);&lt;br /&gt;	$result[&#39;suggestion&#39;] = $row[&#39;Name&#39;];&lt;br /&gt;}&lt;br /&gt;echo json_encode($result);&lt;br /&gt;?&amp;gt;&lt;br /&gt;	&lt;/pre&gt;Here we first connect to MySQL and select the &lt;em&gt;world&lt;/em&gt; database. (Make sure you change YOUR_HOSTNAME, YOUR_USERNAME and YOUR_PASSWORD with proper credentials.) Then we create an empty array &lt;strong&gt;&lt;em&gt;$result&lt;/em&gt;&lt;/strong&gt;. We also santize the search string with &lt;a href=&quot;http://php.net/manual/en/function.filter-var.php&quot;&gt;filter_var&lt;/a&gt;. Next we query the &lt;em&gt;City&lt;/em&gt; table with: &lt;br /&gt;&lt;pre class=&quot;sql&quot; name=&quot;code&quot;&gt;SELECT * FROM City WHERE `Name` LIKE &#39;{$search_text}%&#39;&lt;br /&gt;&lt;/pre&gt;This SQL statement finds the rows whose &lt;em&gt;Name&lt;/em&gt; field starts with the search string. In case of several matches, we just need the first match. So we find the first match and set the &lt;em&gt;suggestion&lt;/em&gt; with: &lt;br /&gt;&lt;pre class=&quot;php&quot; name=&quot;code&quot;&gt;	$row = mysql_fetch_assoc($r);&lt;br /&gt;	$result[&#39;suggestion&#39;] = $row[&#39;Name&#39;];&lt;br /&gt;&lt;/pre&gt;Finally, we encode the array as a JSON output. &lt;br /&gt;&lt;h4 class=&quot;c0&quot;&gt;       JavaScript&lt;/h4&gt;Next we move to &lt;em&gt;searchSuggest.js&lt;/em&gt; and put the following code inside it: &lt;br /&gt;&lt;pre class=&quot;javascript&quot; name=&quot;code&quot;&gt;$(function(){&lt;br /&gt;	$(&quot;#search&quot;).keyup(function(e){&lt;br /&gt;		$this = $(this);&lt;br /&gt;		$searchBtn = $(&#39;#search_button&#39;);&lt;br /&gt;		search_text = $this.val();&lt;br /&gt;		$(&#39;#redText&#39;).val(&#39;&#39;);&lt;br /&gt;		if(search_text){&lt;br /&gt;			$(&quot;#redText&quot;).css({&quot;background&quot;:&quot;#FFF url(&#39;images/spinner.gif&#39;) right center no-repeat&quot;});&lt;br /&gt;			$.ajax({&lt;br /&gt;				url: &quot;ajax.php&quot;,&lt;br /&gt;				type: &quot;post&quot;,&lt;br /&gt;				dataType: &quot;json&quot;,&lt;br /&gt;				data: &quot;q=&quot;+encodeURIComponent($this.val()),&lt;br /&gt;				error: function(){&lt;br /&gt;					// pass&lt;br /&gt;				},&lt;br /&gt;				success: function(obj){&lt;br /&gt;					$(&quot;#redText&quot;).css({&quot;background-image&quot;:&quot;none&quot;});&lt;br /&gt;					if(&#39;suggestion&#39; in obj) {&lt;br /&gt;						if(obj.suggestion!=null){&lt;br /&gt;							$(&#39;#redText&#39;).val(obj.suggestion);&lt;br /&gt;							if(e.keyCode === 39){ // right arrow key pressed&lt;br /&gt;								$(&#39;#redText&#39;).val(&#39;&#39;);&lt;br /&gt;								$this.val(obj.suggestion);&lt;br /&gt;							} else if(e.keyCode === 13) { // enter pressed&lt;br /&gt;								$(&quot;form&quot;).submit();&lt;br /&gt;							}&lt;br /&gt;						}&lt;br /&gt;					}&lt;br /&gt;				}&lt;br /&gt;			});&lt;br /&gt;		}&lt;br /&gt;	});&lt;br /&gt;	&lt;br /&gt;	$(&quot;form&quot;).submit(function(e){&lt;br /&gt;		e.preventDefault();&lt;br /&gt;		suggestion = $(&quot;#redText&quot;).val();&lt;br /&gt;		if(suggestion!=&#39;&#39;){&lt;br /&gt;			q = suggestion;&lt;br /&gt;			$(&quot;#search&quot;).val(suggestion);&lt;br /&gt;		} else {&lt;br /&gt;			q = $(&quot;#search&quot;).val();&lt;br /&gt;		}&lt;br /&gt;		location.href = &quot;http://google.com/#q=&quot;+q;&lt;br /&gt;	});&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;Lot of code. Let&#39;s break this down into smaller parts. First, when the user types into the text-field, we clear out the disabled text-field (#redText) where we are going to place the suggestions. Then, as the user types and as we make an ajax request, we show an animated loading image at the right side of the input field, with the following line:&lt;br /&gt;&lt;pre class=&quot;javascript&quot; name=&quot;code&quot;&gt;$(&quot;#redText&quot;).css({&quot;background&quot;:&quot;#FFF url(&#39;images/spinner.gif&#39;) right center no-repeat&quot;});&lt;br /&gt;&lt;/pre&gt;Then, we make ajax request to &lt;em&gt;ajax.php&lt;/em&gt;, which we already created in the last step. Note that we didn&#39;t do anything if we fail to make ajax call (the &lt;em&gt;error&lt;/em&gt; property of ajax call). This is because we don&#39;t want to interrupt the user while typing. When we receive ajax response, we first hide the animated background. Then, we check if there is at all any suggestion sent via ajax (i.e. if there is any City name matching the typed characters). The following codes are important here:&lt;br /&gt;&lt;pre class=&quot;javascript&quot; name=&quot;code&quot;&gt;if(&#39;suggestion&#39; in obj) {&lt;br /&gt;	if(obj.suggestion!=null){&lt;br /&gt;		$(&#39;#redText&#39;).val(obj.suggestion);&lt;br /&gt;		if(e.keyCode === 39){ // right arrow key pressed&lt;br /&gt;			$(&#39;#redText&#39;).val(&#39;&#39;);&lt;br /&gt;			$this.val(obj.suggestion);&lt;br /&gt;		} else if(e.keyCode === 13) { // enter pressed&lt;br /&gt;			$(&quot;form&quot;).submit();&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;If &lt;em&gt;suggestion&lt;/em&gt; exists, we set the value of the disabled input text (&lt;strong&gt;&lt;em&gt;redText&lt;/em&gt;&lt;/strong&gt;) to the suggestion. Next, we go a bit further and do something more. If the user presses the right arrow key, we set the value of the active text field to the suggestion. Again, if the user presses Enter key, we submit the form.&lt;br /&gt;So, what happens if user submits the form?&lt;br /&gt;&lt;pre class=&quot;javascript&quot; name=&quot;code&quot;&gt;$(&quot;form&quot;).submit(function(e){&lt;br /&gt;		e.preventDefault();&lt;br /&gt;		suggestion = $(&quot;#redText&quot;).val();&lt;br /&gt;		if(suggestion!=&#39;&#39;){&lt;br /&gt;			q = suggestion;&lt;br /&gt;			$(&quot;#search&quot;).val(suggestion);&lt;br /&gt;		} else {&lt;br /&gt;			q = $(&quot;#search&quot;).val();&lt;br /&gt;		}&lt;br /&gt;		location.href = &quot;http://google.com/#q=&quot;+q;&lt;br /&gt;	});&lt;br /&gt;&lt;/pre&gt;We first check if there is any suggestion. If there is, we set the value of the active text field to the suggestion and set the search query (&lt;em&gt;q&lt;/em&gt;). If there is no suggestion, search query is the same as the text user typed in. Then, we take the user to the Google search page for the search query.&lt;br /&gt;Of course, if your site is &lt;strong&gt;&lt;em&gt;http://example.com&lt;/em&gt;&lt;/strong&gt; and your search results page is &lt;strong&gt;&lt;em&gt;http://example.com/search&lt;/em&gt;&lt;/strong&gt;, the last step would be something like:&lt;br /&gt;&lt;pre class=&quot;javascript&quot; name=&quot;code&quot;&gt;location.href = &quot;http://example.com/search/?q=&quot;+q;&lt;br /&gt;&lt;/pre&gt;And that&#39;s all! Hope you enjoyed the tutorial. Don&#39;t forget to check out &lt;a href=&quot;http://www.technabled.com/search/label/Tutorials&quot;&gt;other tutorials&lt;/a&gt; and &lt;a href=&quot;http://feeds.feedburner.com/Cyber-buffsBlog&quot;&gt;subscribe to the feed&lt;/a&gt;!</content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/5421172279912827353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=5421172279912827353&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/5421172279912827353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/5421172279912827353'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2011/08/ajax-search-suggestions-in-input-fields.html' title='HOW-TO: AJAX Search Suggestions in Input Fields'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_xssgjcTr0ag/TT-aw3JrxBI/AAAAAAAAATM/1luIldNQIbE/s72-c/peoplesearchbysocialsecuritynumber.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-4622575774250288672</id><published>2011-08-17T15:39:00.004+05:30</published><updated>2011-08-17T15:41:07.332+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="css"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><category scheme="http://www.blogger.com/atom/ns#" term="Projects"/><category scheme="http://www.blogger.com/atom/ns#" term="Resources"/><title type='text'>PulsePro Vote Component with Admin Panel</title><content type='html'>&lt;div style=&quot;clear: both; float: left; margin: 0px 4px 4px 0px; text-align: center;&quot;&gt;&lt;img src=&quot;http://adcdn.files.wordpress.com/2011/08/teaser.jpg&quot; /&gt;&lt;/div&gt;It&#39;s been almost a month since I released a premium version of PulseLite — the open source PHP AJAX Voting component. It has got plenty of features. The documentation lets you integrate this component with your existing web-site. If you are building a web-application (or has an existing one), PulsePro is the perfect choice to let your users interact with your application. What makes PulsePro stand out from other vote-components is its ability to let users cancel votes — just like &lt;b&gt;Reddit, YouTube, Facebook Like, Google +1, StackOverflow&lt;/b&gt; among many other popular web-applications. &lt;br /&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;img src=&quot;http://adcdn.files.wordpress.com/2011/08/promo.jpg&quot; /&gt;&lt;/div&gt;Here are some of the features PulsePro comes with: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Easy to install.&lt;/li&gt;&lt;li&gt;Secure and XSS-proof.&lt;/li&gt;&lt;li&gt;Five different styles to match your web-application.&lt;/li&gt;&lt;li&gt;Prevents multiple voting.&lt;/li&gt;&lt;li&gt;Cross-browser compliant.&lt;/li&gt;&lt;li&gt;Comes with an &lt;strong&gt;Admin Panel&lt;/strong&gt; that lists top voted items and more.&lt;/li&gt;&lt;li&gt;Ban IP addresses.&lt;/li&gt;&lt;li&gt;Enable/Disable voting on certain items.&lt;/li&gt;&lt;/ul&gt;If you have a web-site or web-application, you may want to let your readers/users vote on items. Not only that, you may want to check how your posts/items are performing, which are the most popular ones, which are the least. The admin area that comes with this component is perfect for this purpose. If some items are performing bad, you know where to improve. In short, PulsePro lets you check the pulse of your application! &lt;br /&gt;&lt;div style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a class=&quot;download-link read demo&quot; href=&quot;http://codecanyon.net/item/pulsepro-vote-component-with-unvote-choice/full_screen_preview/375541?ref=cyberbuff&quot;&gt;Demo&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://s.technabled.com/PulsePro&quot;&gt;&lt;img original=&quot;http://envato.s3.amazonaws.com/referrer_adverts/cc_180x100_v3.gif&quot; src=&quot;http://envato.s3.amazonaws.com/referrer_adverts/cc_180x100_v3.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/4622575774250288672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=4622575774250288672&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/4622575774250288672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/4622575774250288672'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2011/08/ajax-up-down-vote-with-admin-panel.html' title='PulsePro Vote Component with Admin Panel'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-91914637794612921</id><published>2011-07-01T07:31:00.000+05:30</published><updated>2011-07-01T07:31:11.249+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Customisations"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><category scheme="http://www.blogger.com/atom/ns#" term="Projects"/><category scheme="http://www.blogger.com/atom/ns#" term="Resources"/><category scheme="http://www.blogger.com/atom/ns#" term="Templates"/><title type='text'>Freebie: Clean AJAX Contact Form</title><content type='html'>&lt;div style=&#39;clear:both;text-align:center;float:left;margin:0px 5px 3px 0px;&#39;&gt;&lt;img src=&#39;http://4.bp.blogspot.com/-LYdyIv3pJ7o/TdbJ1qllHpI/AAAAAAAAAHY/8PTOKWlrXcM/s200/logo2-new.gif&#39; alt=&#39;&#39; /&gt;&lt;/div&gt;Building on top of the &lt;a href=&#39;http://www.technabled.com/2011/06/ajax-contact-form-with-recaptcha.html&#39; title=&#39;&#39;&gt;AJAX Contact Form&lt;/a&gt; and modifying one of &lt;a href=&#39;http://wufoo.com&#39; title=&#39;&#39;&gt;Wufoo&lt;/a&gt;&#39;s elegant forms available at the &lt;a href=&#39;http://wufoo.com/gallery&#39; title=&#39;&#39;&gt;gallery&lt;/a&gt;, I made a more secure, easy-to-install AJAX Contact Form with more features. It&#39;s available for download and takes just a couple of minutes to configure and get it running. Perfect for your website &amp;mdash; whether personal or professional.&lt;br /&gt;&lt;div style=&#39;clear:both;text-align:center;&#39; class=&#39;tutorial-image&#39;&gt;&lt;img src=&#39;http://4.bp.blogspot.com/-eOPgsi2snRY/TgcwBiVoF0I/AAAAAAAAA8k/jJehY7xzBv8/s1600/promo.png&#39;/&gt;&lt;/div&gt;&lt;div style=&#39;clear:both;text-align:center;&#39; class=&#39;&#39;&gt;&lt;a href=&#39;http://lab.abhisekdutta.in/contact&#39; title=&#39;Try Demo&#39; class=&#39;download-link read demo&#39;&gt;Demo&lt;/a&gt; &lt;a href=&#39;http://www.box.net/shared/rbphbboo5rm928emps8o&#39; class=&#39;download-link&#39; title=&#39;Download the files&#39;&gt;Download&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;h4 class=&#39;c0&#39;&gt;Features&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;AJAX Form Validation&lt;/li&gt;&lt;li&gt;XSS-proof&lt;/li&gt;&lt;li&gt;Super easy to install. Just edit a configuration file and upload.&lt;/li&gt;&lt;li&gt;Open Source. Fully customisable.&lt;/li&gt;&lt;li&gt;HTML5 Features&lt;/li&gt;&lt;li&gt;Cross-browser compatible&lt;/li&gt;&lt;li&gt;No database required. PHP 5.2+&lt;/li&gt;&lt;/ul&gt;&lt;h4 class=&#39;c0&#39;&gt;Installation&lt;/h4&gt;Download the zip file and unpack. Edit the &lt;em&gt;config.php&lt;/em&gt; file. You&#39;d need API keys from &lt;a href=&#39;http://google.com/recaptcha&#39; title=&#39;&#39;&gt;reCAPTCHA&lt;/a&gt;. Under &lt;em&gt;My Sites&lt;/em&gt;, create a new site and check the field that says &lt;em&gt;Enable this key on all domains (global key)&lt;/em&gt;. Note the &lt;em&gt;public&lt;/em&gt; and &lt;em&gt;private&lt;/em&gt; keys. Edit the &lt;em&gt;PRIV_KEY&lt;/em&gt; and &lt;em&gt;PUB_KEY&lt;/em&gt; values in &lt;em&gt;config.php&lt;/em&gt;. Also, edit the email-address and subject line. Upload the files to your server and it&#39;s ready! (Also, replace &lt;em&gt;images/cflogo.png&lt;/em&gt; with your logo.)&lt;br /&gt;&lt;h4 class=&#39;c0&#39;&gt;Mail Format&lt;/h4&gt;When someone fills in the contact form and sends message using this form, you&#39;d receive a mail with the following information:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sender&#39;s Name&lt;/li&gt;&lt;li&gt;Sender&#39;s Email&lt;/li&gt;&lt;li&gt;The body of the message&lt;/li&gt;&lt;li&gt;IP Address of the sender&lt;/li&gt;&lt;li&gt;Time and Date when the message was sent&lt;/li&gt;&lt;/ul&gt;&lt;h4 class=&#39;c0&#39;&gt;Troubleshooting&lt;/h4&gt;If you do not recieve mails, it&#39;s probably the server settings. Ask your server administrator.&lt;br /&gt;&lt;h4 class=&#39;c0&#39;&gt;Customizations&lt;/h4&gt;If you need any customization, you can &lt;a href=&#39;mailto:abhisek.dutt@gmail.com&#39; rel=&#39;nofollow&#39;&gt;mail me&lt;/a&gt; for a quote.</content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/91914637794612921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=91914637794612921&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/91914637794612921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/91914637794612921'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2011/07/freebie-clean-ajax-contact-form.html' title='Freebie: Clean AJAX Contact Form'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-LYdyIv3pJ7o/TdbJ1qllHpI/AAAAAAAAAHY/8PTOKWlrXcM/s72-c/logo2-new.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-8386823277765124666</id><published>2011-06-28T10:46:00.006+05:30</published><updated>2011-07-01T19:05:56.655+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><category scheme="http://www.blogger.com/atom/ns#" term="Tutorials"/><title type='text'>How to Create an AJAX Contact Form with reCAPTCHA</title><content type='html'>&lt;div style=&#39;clear:both;text-align:center;float:left;margin:0px 5px 3px 0px;&#39;&gt;&lt;img src=&#39;http://4.bp.blogspot.com/-LYdyIv3pJ7o/TdbJ1qllHpI/AAAAAAAAAHY/8PTOKWlrXcM/s200/logo2-new.gif&#39;/&gt;&lt;br /&gt;&lt;/div&gt;Today we are going to create a nifty contact form powered by AJAX and &lt;a href=&#39;http://www.google.com/recaptcha&#39;&gt;reCAPTCHA&lt;/a&gt;. reCAPTCHA, now acquired by Google, was a project by Carnegie Mellon University that aims to stop bots from spamming websites. reCAPTCHA serves more than 200 million captchas everyday. It is almost impossible that you have not been challenged to type those distorted wavy words.&lt;br /&gt;&lt;div class=&#39;tip&#39;&gt;&lt;strong&gt;Did you know?&lt;/strong&gt; reCAPTCHA words are case-insensitive. In most cases, while typing the words, we find it hard to capitalize certain characters. Well, we can just get away without capitalizing. The words entered by humans are used to digitize books. The words are from scanned old books. You can learn more &lt;a href=&#39;http://www.google.com/recaptcha/learnmore&#39; title=&#39;&#39;&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div style=&#39;clear:both;text-align:center;&#39;&gt;&lt;a href=&#39;http://www.box.net/shared/jlnko8749bt1rhh2ql3n&#39; title=&#39;Download Source Files&#39; class=&#39;download-link&#39;&gt;Download&lt;/a&gt; &lt;a href=&#39;http://lab.abhisekdutta.in/contact/tutorial/&#39; title=&#39;Try the Demo&#39; class=&#39;download-link read demo&#39;&gt;Demo&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;strong&gt;Update:&lt;/strong&gt; A simple yet &lt;em&gt;powerful AJAX contact form&lt;/em&gt; that is easy to install, is available for download. You can read about it &lt;a href=&#39;http://www.technabled.com/2011/07/freebie-clean-ajax-contact-form.html&#39;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;h4 class=&#39;c0&#39;&gt;Get The Keys&lt;/h4&gt;We would need API keys from reCAPTCHA to show captchas. You can sign in with your Google account at &lt;a href=&#39;http://google.com/recaptcha&#39; title=&#39;&#39;&gt;reCAPTCHA&lt;/a&gt; and get a pair of API keys after adding a domain. (It is not necessary to own a domain, just check the the field that says &quot;Enable this key on all domains (global key)&quot; and the keys will work on all domains.) The first key is a public key, served via javascript and the second one is a private key to handle server-side requests. Also, download the &lt;a href=&#39;http://code.google.com/p/recaptcha/downloads/list?q=label:phplib-Latest&#39; title=&#39;&#39;&gt;reCAPTCHA PHP library&lt;/a&gt;.&lt;br /&gt;&lt;h4 class=&#39;c0&#39;&gt;Layout&lt;/h4&gt;Once we are ready with the keys and the library, let&#39;s begin building the form. The form we are going to create will be simple and easy to navigate. Here is how the layout is made:&lt;br /&gt;&lt;div class=&#39;tutorial-image&#39; style=&#39;clear:both;text-align:center;&#39;&gt;&lt;a href=&#39;http://3.bp.blogspot.com/-tw2t4RSEGEA/Tgcz13iaXcI/AAAAAAAAA8s/xTtftSxYWZ0/s1600/tutorial-layout.jpg&#39; title=&#39;Click to zoom&#39;&#39;&gt;&lt;img src=&#39;http://3.bp.blogspot.com/-tw2t4RSEGEA/Tgcz13iaXcI/AAAAAAAAA8s/xTtftSxYWZ0/s440/tutorial-layout.jpg&#39;/&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;First, we create an index.php file and put the following lines of code inside it.&lt;br /&gt;&lt;pre name=&#39;code&#39; class=&#39;html&#39;&gt;&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&amp;gt; &lt;br /&gt;&amp;lt;head&amp;gt; &lt;br /&gt;&amp;lt;title&amp;gt;Contact Form With reCaptcha&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;style type=&#39;text/css&#39;&amp;gt; &lt;br /&gt;body {&lt;br /&gt;font-size: 14px;&lt;br /&gt;line-height:1.3em;&lt;br /&gt;text-align:center;&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;#wrapper {&lt;br /&gt;width:600px;&lt;br /&gt;margin:0 auto;&lt;br /&gt;text-align:left;&lt;br /&gt;padding:6px;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.message {&lt;br /&gt; text-align:left;&lt;br /&gt; width:100%;&lt;br /&gt; padding:15px 22px;&lt;br /&gt; display:none;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.loader {&lt;br /&gt; background:url(&quot;images/ajax-loader.gif&quot;) no-repeat center left;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.success {&lt;br /&gt; background:url(&quot;images/success.png&quot;) no-repeat center left;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.error {&lt;br /&gt; background:url(&quot;images/error.png&quot;) no-repeat center left;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.infoWrapper {&lt;br /&gt; clear:both;&lt;br /&gt; margin-top:10px;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.infoTitle {&lt;br /&gt; color:#808080;&lt;br /&gt; float:left;&lt;br /&gt; width:110px;&lt;br /&gt; text-align:right;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.infoContent {&lt;br /&gt; padding-left:130px;&lt;br /&gt; text-align: left;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;label {&lt;br /&gt; cursor:pointer;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.input-text {&lt;br /&gt; border:1px solid #808080;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.long {&lt;br /&gt; width:450px;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.tall {&lt;br /&gt; height:150px;&lt;br /&gt;}&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;&amp;lt;script type=&#39;text/javascript&#39; src=&#39;http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js&#39;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type=&quot;text/javascript&quot; src=&quot;functions.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;div id=&#39;wrapper&#39;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;h4&amp;gt;Contact Us&amp;lt;/h4&amp;gt;&lt;br /&gt;&amp;lt;div class=&#39;message&#39;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;form name=&#39;contact&#39; id=&#39;contact&#39;&amp;gt;&lt;br /&gt; &amp;lt;div class=&quot;infoWrapper&quot;&amp;gt;&lt;br /&gt;  &amp;lt;div class=&quot;infoTitle&quot;&amp;gt;&lt;br /&gt;   &amp;lt;label for=&#39;name&#39;&amp;gt;Name&amp;lt;/label&amp;gt;&lt;br /&gt;  &amp;lt;/div&amp;gt;&lt;br /&gt;  &amp;lt;div class=&quot;infoContent&quot;&amp;gt;&lt;br /&gt;   &amp;lt;input type=&quot;text&quot; name=&#39;name&#39; id=&#39;title&#39; class=&#39;input-text long&#39; /&amp;gt;&lt;br /&gt;  &amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;div class=&quot;infoWrapper&quot;&amp;gt;&lt;br /&gt;  &amp;lt;div class=&quot;infoTitle&quot;&amp;gt;&lt;br /&gt;   &amp;lt;label for=&#39;email&#39;&amp;gt;Email&amp;lt;/label&amp;gt;&lt;br /&gt;  &amp;lt;/div&amp;gt;&lt;br /&gt;  &amp;lt;div class=&quot;infoContent&quot;&amp;gt;&lt;br /&gt;   &amp;lt;input type=&quot;text&quot; name=&#39;email&#39; id=&#39;title&#39; class=&#39;input-text long&#39; /&amp;gt;&lt;br /&gt;  &amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;div class=&quot;infoWrapper&quot;&amp;gt;&lt;br /&gt;  &amp;lt;div class=&quot;infoTitle&quot;&amp;gt;&lt;br /&gt;   &amp;lt;label for=&quot;message&quot;&amp;gt;Message&amp;lt;/label&amp;gt;&lt;br /&gt;  &amp;lt;/div&amp;gt;&lt;br /&gt;  &amp;lt;div class=&quot;infoContent&quot;&amp;gt;&lt;br /&gt;   &amp;lt;textarea name=&#39;message&#39; id=&#39;note&#39; class=&#39;input-text long tall&#39;&amp;gt;&amp;lt;/textarea&amp;gt;&lt;br /&gt;  &amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;div class=&quot;infoWrapper&quot;&amp;gt;&lt;br /&gt;  &amp;lt;div class=&quot;infoTitle&quot;&amp;gt;&lt;br /&gt;   &amp;lt;label for=&quot;&quot;&amp;gt;Are you human?&amp;lt;/label&amp;gt;&lt;br /&gt;  &amp;lt;/div&amp;gt;&lt;br /&gt;  &amp;lt;div class=&quot;infoContent&quot;&amp;gt;&lt;br /&gt;   &amp;lt;!-- reCAPTCHA code goes here --&amp;gt;&lt;br /&gt;  &amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;div class=&quot;infoWrapper&quot;&amp;gt;&lt;br /&gt;  &amp;lt;div class=&quot;infoTitle&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;  &amp;lt;div class=&quot;infoContent&quot;&amp;gt;&lt;br /&gt;   &amp;lt;input type=&#39;submit&#39; value=&#39;Send Message&#39;/&amp;gt;&lt;br /&gt;  &amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;Now, that&#39;s a lot of code that needs to be explained.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The first few CSS styles inside the &amp;lt;style&amp;gt; tag are pretty self-explanatory. The &lt;em&gt;message&lt;/em&gt; class is shown at the top of the form when it is submitted. The &lt;em&gt;error&lt;/em&gt;, &lt;em&gt;success&lt;/em&gt;, and &lt;em&gt;loader&lt;/em&gt; classes are to identify the kind of message shown. We will add the classnames via jQuery.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Each section inside the form is wrapped inside &lt;em&gt;infoWrapper&lt;/em&gt; class. The labels are the wrapped in &lt;em&gt;infoTitle&lt;/em&gt; class and each input field in &lt;em&gt;infoContent&lt;/em&gt; class. The other classes (&lt;em&gt;input-text, long&lt;/em&gt; and &lt;em&gt;tall&lt;/em&gt;) are to prettify the form-elements.&lt;/li&gt;&lt;li&gt;We have also added jQuery javascript library and a &lt;em&gt;functions.js&lt;/em&gt; file (we would later create).&lt;/li&gt;&lt;li&gt;We have added an empty div with &lt;em&gt;message&lt;/em&gt; class. The text will be filled in and determined via AJAX.&lt;/li&gt;&lt;li&gt;The form, as explained earlier, is simple and minimal in its approach.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Note&lt;/strong&gt; that we have commented the section where we are going to put the reCAPTCHA code.&lt;/li&gt;&lt;/ul&gt;&lt;h4 class=&#39;c0&#39;&gt;Integrate reCAPTCHA&lt;/h4&gt;Now that we have the form, it&#39;s time to integrate reCAPTCHA. We add the following lines of code at the top of the index.php file:&lt;br /&gt;&lt;pre name=&#39;code&#39; class=&#39;php&#39;&gt;&amp;lt;?php&lt;br /&gt;include_once(&quot;recaptchalib.php&quot;);&lt;br /&gt;define(&quot;PUB_KEY&quot;, &quot;YOUR PUBLIC KEY HERE&quot;);&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;recaptchalib.php is the PHP library. Of course, you need to replace &quot;YOUR PUBLIC KEY HERE&quot; with your actual public key. Next, we add the following codes inside the form where the reCAPTCHA codes should be (the commented section, remember?)&lt;br /&gt;&lt;pre name=&#39;code&#39; class=&#39;php&#39;&gt;&amp;lt;?php echo recaptcha_get_html(PUB_KEY); ?&amp;gt;&lt;br /&gt;&lt;/pre&gt;Now, if you reload the page, reCAPTCHA words should be there. Next we are going to handle the form response via ajax.&lt;br /&gt;&lt;h4 class=&#39;c0&#39;&gt;Server Side&lt;/h4&gt;We create an ajax.php file and inside it, we put the following lines of code:&lt;br /&gt;&lt;pre name=&#39;code&#39; class=&#39;php&#39;&gt;&amp;lt;?php&lt;br /&gt;require_once(&#39;recaptchalib.php&#39;);&lt;br /&gt;define(&quot;PRIV_KEY&quot;, &quot;YOUR PRIVATE KEY HERE&quot;);&lt;br /&gt;&lt;br /&gt;$name = filter_var($_POST[&#39;name&#39;]);&lt;br /&gt;$message = filter_var($_POST[&#39;message&#39;]);&lt;br /&gt;$email = filter_var($_POST[&#39;email&#39;]);&lt;br /&gt;&lt;br /&gt;if(in_array(&#39;&#39;, array($name, $message, $email))) {&lt;br /&gt;//one (or more) of the required fields is empty&lt;br /&gt;$result = &quot;field_error&quot;;&lt;br /&gt;} else {&lt;br /&gt; $resp = recaptcha_check_answer (PRIV_KEY, $_SERVER[&quot;REMOTE_ADDR&quot;], $_POST[&quot;recaptcha_challenge_field&quot;], $_POST[&quot;recaptcha_response_field&quot;]);&lt;br /&gt; if (!$resp-&amp;gt;is_valid) {&lt;br /&gt;     //Captcha was entered incorrectly&lt;br /&gt;  $result = &quot;captcha_error&quot;;&lt;br /&gt;   } else {&lt;br /&gt;     //Captcha was entered correctly&lt;br /&gt;     $result = &quot;success&quot;;&lt;br /&gt;     //You can enter your mail functions here. It&#39;s like:&lt;br /&gt;     // mail(&quot;yourmail@domain.com&quot;, &quot;Email Subject&quot;, $message);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;echo $result;&lt;br /&gt;?&amp;gt;&lt;br /&gt; &lt;/pre&gt;Let&#39;s break it down.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;We included the recaptchalib.php library and the private key.&lt;/li&gt;&lt;li&gt;We sanitize the form data with &lt;a href=&#39;http://php.net/manual/en/function.filter-var.php&#39; title=&#39;&#39;&gt;filter_var&lt;/a&gt;&lt;/li&gt;&lt;li&gt;We check if any of the form data is empty with &lt;a href=&#39;http://php.net/manual/en/function.in-array.php&#39; title=&#39;&#39;&gt;in_array&lt;/a&gt;. If any of them is indeed empty, we set the value of &lt;em&gt;$result&lt;/em&gt; variable to be &lt;em&gt;field_error&lt;/em&gt;&lt;/li&gt;&lt;li&gt;If none of the fields are empty, we check the answer for the reCAPTCHA words with &lt;em&gt;recaptcha_check_answer&lt;/em&gt;. This function is defined inside the recaptchalib.php library.&lt;/li&gt;&lt;li&gt;The return value of &lt;em&gt;recaptcha_check_answer&lt;/em&gt; is a PHP object. The object has a &lt;em&gt;$is_valid&lt;/em&gt; variable value which is true if the words are typed correctly. So, we check whether the response is valid or not. If it&#39;s not valid, we set &lt;em&gt;$result&lt;/em&gt; to &lt;em&gt;captcha_error&lt;/em&gt;, and if it&#39;s valid &lt;em&gt;$result&lt;/em&gt; is &lt;em&gt;success&lt;/em&gt;. (After this point, you can mail the message to your mail address or save it to a database, as per your requirement.)&lt;/li&gt;&lt;li&gt;And finally we output &lt;em&gt;$result&lt;/em&gt;&lt;br /&gt;&lt;/ul&gt;So, ajax.php outputs any of the three values &amp;mdash; (1) field_error (when one or more fields is/are empty), (2) captcha_error (when typed words don&#39;t match with the captcha) and (3) success (&lt;em&gt;voila&lt;/em&gt;).  &lt;h4 class=&#39;c0&#39;&gt;jQuery Functions&lt;/h4&gt;We now create functions.js file. And inside it we put the following lines of code:  &lt;pre name=&#39;code&#39; class=&#39;javascript&#39;&gt;$(function(){&lt;br /&gt; $(&quot;#contact&quot;).submit(function(){&lt;br /&gt;  $(&quot;.message&quot;).removeClass(&quot;success&quot;).removeClass(&quot;error&quot;).addClass(&quot;loader&quot;).html(&quot;Sending message&quot;).fadeIn(&quot;slow&quot;);&lt;br /&gt;  $.ajax({&lt;br /&gt;   type: &quot;POST&quot;,&lt;br /&gt;   url: &quot;ajax.php&quot;,&lt;br /&gt;   data: $(this).serialize(),&lt;br /&gt;   dataType: &#39;text&#39;,&lt;br /&gt;   success: function(msg){&lt;br /&gt;    switch(msg) {&lt;br /&gt;     case &quot;field_error&quot;: // one or more fields is/are empty&lt;br /&gt;      $(&quot;.message&quot;).removeClass(&quot;loader&quot;).addClass(&quot;error&quot;);&lt;br /&gt;      $(&quot;.message&quot;).html(&quot;Please fill in all the required fields.&quot;);&lt;br /&gt;      break;&lt;br /&gt;     case &quot;captcha_error&quot;: // captcha wasn&#39;t typed correctly&lt;br /&gt;      $(&quot;.message&quot;).removeClass(&quot;loader&quot;).addClass(&quot;error&quot;);&lt;br /&gt;      $(&quot;.message&quot;).html(&quot;Please type the words correctly and try again!&quot;);&lt;br /&gt;      break;&lt;br /&gt;     case &quot;success&quot;: // all good&lt;br /&gt;      $(&quot;.message&quot;).removeClass(&quot;loader&quot;).addClass(&quot;success&quot;);&lt;br /&gt;      $(&quot;.message&quot;).html(&quot;Your message has been sent. You&#39;ll soon hear from us!&quot;);&lt;br /&gt;      break;&lt;br /&gt;     default: // Hmm. The default case. You never know.&lt;br /&gt;      alert(&quot;Something is wrong. Please try again.&quot;);&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  });&lt;br /&gt;  Recaptcha.reload();&lt;br /&gt;  return false;&lt;br /&gt; });&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;When the form is submitted, the above javascript removes &lt;em&gt;success&lt;/em&gt; and &lt;em&gt;error&lt;/em&gt; classes from the message section and adds the &lt;em&gt;loader&lt;/em&gt; class to show that the message is being sent. While this is being shown to the user, an AJAX call is made that sends the form data to our ajax.php file. The response from ajax.php is then filtered with a &lt;a href=&#39;http://www.w3schools.com/js/js_switch.asp&#39; title=&#39;&#39;&gt;switch&lt;/a&gt;. In each cases, the &lt;em&gt;loader&lt;/em&gt; class is removed from the message section and appropriate class is added alongwith message texts. And whatever the case is, we always reload the captcha with &lt;em&gt;Recaptcha.reload()&lt;/em&gt;. This function is provided in the javascript served via &lt;em&gt;recaptcha_get_html&lt;/em&gt; PHP function. &lt;div class=&#39;tip&#39;&gt;If you&#39;re working with reCAPTCHA (whether on this contact form or some commenting system), you can use &lt;code&gt;Recaptcha.reload()&lt;/code&gt; to reload the captcha without reloading the form. Helpful for form validation.&lt;/div&gt; (&lt;strong&gt;Update:&lt;/strong&gt; A simple yet &lt;em&gt;powerful AJAX contact form&lt;/em&gt; that is easy to install, is available for download. You can read about it &lt;a href=&#39;http://www.technabled.com/2011/07/freebie-clean-ajax-contact-form.html&#39;&gt;here&lt;/a&gt;.)&lt;br /&gt;And that&#39;s it! This is just the basics of how things work. So go ahead customize and let us know in the comments. :-)</content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/8386823277765124666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=8386823277765124666&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/8386823277765124666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/8386823277765124666'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2011/06/ajax-contact-form-with-recaptcha.html' title='How to Create an AJAX Contact Form with reCAPTCHA'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-LYdyIv3pJ7o/TdbJ1qllHpI/AAAAAAAAAHY/8PTOKWlrXcM/s72-c/logo2-new.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-3788274727767691992</id><published>2011-05-05T12:34:00.000+05:30</published><updated>2011-05-05T12:34:52.487+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="css"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="Projects"/><title type='text'>Highlight Rows of Table Using jQuery</title><content type='html'>&lt;div style=&#39;clear:both;text-align:center;float:left;margin:0px 4px 4px;&#39;&gt;&lt;a href=&#39;http://codecanyon.net/?ref=cyberbuff&#39;&gt;&lt;img src=&#39;http://envato.s3.amazonaws.com/referrer_adverts/cc_125x125_v4.gif&#39;/&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;It’s been couple of months since I made a jQuery plug-in that lets you highlight rows of a tale. This feature is similar to GMail’s “Select Mails” option. The plugin has &lt;b&gt;two components&lt;/b&gt; — you can trigger the plugin to &lt;b&gt;select each row of a table&lt;/b&gt;, or you can fire the plugin on a single check-box to select all the rows of the table. You can try the &lt;a href=&quot;http://codecanyon.net/item/gmailstyle-highlight-table-rows-with-jquery/full_screen_preview/158052?ref=cyberbuff&quot;&gt;demo here&lt;/a&gt;. It’s &lt;a href=&quot;http://codecanyon.net/item/gmailstyle-highlight-table-rows-with-jquery/158052?ref=cyberbuff&quot;&gt;on sale&lt;/a&gt; on CodeCanyon for $3. All documentation and demo files are available for download.&lt;br /&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://codecanyon.net/item/gmailstyle-highlight-table-rows-with-jquery/158052?ref=cyberbuff&quot; imageanchor=&quot;1&quot; style=&quot;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-MXPoYb-uaUU/TcJJ0jbibiI/AAAAAAAAA8Q/47_VhqITs_E/s640/jquery.checkRow.screenshot.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&#39;clear:both;text-align:center;&#39;&gt;&lt;a href=&#39;http://codecanyon.net/item/gmailstyle-highlight-table-rows-with-jquery/full_screen_preview/158052?ref=cyberbuff&#39; class=&#39;download-link demo read&#39;&gt;Demo&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/3788274727767691992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=3788274727767691992&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/3788274727767691992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/3788274727767691992'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2011/05/highlight-rows-of-table-using-jquery.html' title='Highlight Rows of Table Using jQuery'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-MXPoYb-uaUU/TcJJ0jbibiI/AAAAAAAAA8Q/47_VhqITs_E/s72-c/jquery.checkRow.screenshot.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-4595063084683257675</id><published>2011-05-03T11:21:00.000+05:30</published><updated>2011-05-03T11:21:26.750+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apple"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Softwares"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>Install Multiple Applications in One Go with Ninite</title><content type='html'>&lt;div style=&#39;clear:both;text-align:center;float:left;margin:0px 4px 4px;&#39;&gt;&lt;img src=&#39;http://4.bp.blogspot.com/_10omWdb3QFI/TRuHRDajSFI/AAAAAAAAAA0/kUg4x2G7Mtw/s1600/ninite-icon.jpg&#39;/&gt;&lt;br /&gt;&lt;/div&gt;The worst part about installing a new operating system on a hard-drive is installing the required applications once the OS is installed and functional. Not only you have to download each of the application executables, you would have to click through the installation procedure. If you’re configuring a shared computer, the task is even bigger, since more applications need to be installed to cater to every-one&#39;s requirement.&lt;br /&gt;&lt;br /&gt;However, you can take a shortcut — by using Ninite. It’s a cross-platform application that installs several popular applications in one go. You don’t have to click through the installation wizard and un-check useless components of an application — Ninite does it for you.&lt;br /&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-VmFhfZKfu7c/Tb-W_8tp9oI/AAAAAAAAA8I/s-zzkaoHVdc/s1600/ninite-installer-air-firefox-chrome-flash-java-python-utorrent-recuva-teracopy-etc.jpg&quot; imageanchor=&quot;1&quot; style=&quot;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/-VmFhfZKfu7c/Tb-W_8tp9oI/AAAAAAAAA8I/s-zzkaoHVdc/s440/ninite-installer-air-firefox-chrome-flash-java-python-utorrent-recuva-teracopy-etc.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;You can visit the &lt;a href=&quot;http://ninite.com&quot;&gt;Ninite&lt;/a&gt; website and choose which applications you want to install in your system. Once the choice is made, hit the “Get Installer” button and Ninite will send you a tiny installer (~250KiB). If you run the installer, all the applications you previously chose, will be installed one by one. All you can do is sit back and enjoy (or walk away).&lt;br /&gt;&lt;br /&gt;The available applications are some of the best free and open source applications, including Firefox, Chrome, Audacity, VLC, OpenOffice among many others.&lt;br /&gt;&lt;br /&gt;Ninite always installs the latest version of the application, no matter when you downloaded the original Ninite-installer. Among one of its many features, Ninite never installs Ad-ware on your machine.&lt;br /&gt;&lt;br /&gt;Even if the applications are already installed in your machine, you can simply run the Ninite-installer to update all the applications. So, you can use it as a mass-updater, too.&lt;br /&gt;&lt;br /&gt;It detects the PC’s language and fetches the installation files in the same language. So you don’t have to worry about choosing the right language for the applications.&lt;br /&gt;&lt;br /&gt;There is also a premium version of Ninite that lets you choose applications right inside the Ninite-installer. It also gives access to some nifty command-line features, otherwise unavailable on the free version.</content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/4595063084683257675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=4595063084683257675&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/4595063084683257675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/4595063084683257675'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2011/05/install-multiple-applications-in-one-go.html' title='Install Multiple Applications in One Go with Ninite'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_10omWdb3QFI/TRuHRDajSFI/AAAAAAAAAA0/kUg4x2G7Mtw/s72-c/ninite-icon.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-8074942070298699346</id><published>2011-04-03T21:31:00.001+05:30</published><updated>2011-04-03T21:31:25.260+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cool Stuff"/><category scheme="http://www.blogger.com/atom/ns#" term="Tips"/><title type='text'>Manage Your Distractions and Get Things Done in your IM</title><content type='html'>&lt;div style=&#39;clear:both;text-align:center;float:left;&#39;&gt;&lt;img src=&#39;http://1.bp.blogspot.com/_SYWPj9HHkdQ/TCp_Yv4yoSI/AAAAAAAABLk/nBg12xPX4Cg/s144/tasks.GTD.jpg&#39;/&gt;&lt;br /&gt;&lt;/div&gt;So, you have a lot to do everyday. You start your day by making a list of things you have to do on that day. All through the day, your mind comes across many ideas (or tasks) which need to be done. But you manage to forget them because of distractions and for other reasons. What if you can keep track of your ideas and get things done? While &lt;a href=&quot;http://technabled.com/search?q=evernote&quot;&gt;Evernote&lt;/a&gt; is a great way to take notes and to-do’s lists, here is a simpler way.&lt;br /&gt;&lt;br /&gt;GTD Stack is an instant message bot that keeps track of your ideas and to-do’s. All you have to do is to add &lt;b&gt;gtdstack@appspot.com&lt;/b&gt; to your GTalk Friendlist and you’re done. It’s surprisingly simple and minimal. Just ask the bot “How to add a task?” and you get help right there. Here are some of the most used commands:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;p &amp;lt;project name&amp;gt;&lt;/b&gt; adds a new project (if project not created ) / switches to project &lt;project name&gt; (if project is already created)&lt;/li&gt;&lt;li&gt;&lt;b&gt;a &amp;lt;task&amp;gt;&lt;/b&gt; adds a task to the current project.&lt;/li&gt;&lt;li&gt;&lt;b&gt;l&lt;/b&gt; lists all the tasks from the current project&lt;/li&gt;&lt;li&gt;&lt;b&gt;L&lt;/b&gt; lists all the tasks across all projects.&lt;/li&gt;&lt;li&gt;&lt;b&gt;g &amp;lt;task#&amp;gt;&lt;/b&gt; switches to &lt;task#&gt; as the current task&lt;/li&gt;&lt;li&gt;&lt;b&gt;d&lt;/b&gt; marks the current task as done (and deletes the task)&lt;/li&gt;&lt;/ul&gt;Note that the commands are case-sensitive.&lt;br /&gt;&lt;br /&gt;The bot is created by the brilliantly talented &lt;a href=&quot;http://twitter.com/hiway&quot;&gt;Harshad Sharma&lt;/a&gt;. It’s created on Google’s AppEngine platform. The &lt;a href=&quot;https://bitbucket.org/hiway/gtdstack/wiki/Home&quot;&gt;source-code is available&lt;/a&gt; on BitBucket. In an email, he pointed out the following, regarding case-sensitivity of the commands:&lt;br /&gt;&lt;blockquote&gt;Case sensitivity is used for a very practical purpose, though I understand it may be a little painful for newbies, I&#39;ll urge them to adapt to it... This app has a very low learning curve for basic use, and it gradually gets steep as you want more and more form the app — I think its fair. A flat learning curve is achievable, but the interface becomes less usable once you&#39;ve reached a power user status - the case with most GTD apps.&lt;/blockquote&gt;He’s also working on email-to-add tasks. For the moment if you enter the command &lt;b&gt;email&lt;/b&gt;, the bot sends an email to your chat ID with all the tasks. &lt;br /&gt;You can &lt;a href=&quot;http://twitter.com/gtdstack&quot;&gt;follow @gtdstack&lt;/a&gt; on Twitter for updates.</content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/8074942070298699346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=8074942070298699346&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/8074942070298699346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/8074942070298699346'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2011/04/get-things-done-in-your-im.html' title='Manage Your Distractions and Get Things Done in your IM'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_SYWPj9HHkdQ/TCp_Yv4yoSI/AAAAAAAABLk/nBg12xPX4Cg/s72-c/tasks.GTD.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-5102476277581989090</id><published>2011-02-17T07:02:00.015+05:30</published><updated>2011-08-17T15:48:57.224+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><category scheme="http://www.blogger.com/atom/ns#" term="Projects"/><title type='text'>Create Up-Down Voting in Your Web-application with Pulse Lite</title><content type='html'>&lt;div style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-UOkKcSFFE_4/TWpXEdPT0wI/AAAAAAAAA7A/Uj6kwj8D6C8/s1600/thumb.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;100&quot; src=&quot;http://1.bp.blogspot.com/-UOkKcSFFE_4/TWpXEdPT0wI/AAAAAAAAA7A/Uj6kwj8D6C8/s320/thumb.jpg&quot; width=&quot;100&quot; /&gt;&lt;/a&gt;&lt;/div&gt;It’s been more than two years since I posted &lt;a href=&quot;http://www.technabled.com/2009/02/reddit-style-voting-with-php-mysql-and.html&quot;&gt;a simple tutorial&lt;/a&gt; on Thumbs Up Thumbs Down Voting with PHP, MySQL and jQuery. That post receives the second most page-views on this blog. People created voting scripts on it. More and more talks happened on its security. Some even mailed me. And admittedly, it was least secure. Refresh the page and vote again! But then again, it was just to show how things work and not meant for production at all.&lt;br /&gt;&lt;div style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-W5IxQBQxQsM/TWpWwI4CFCI/AAAAAAAAA64/EAUrgvAz2cM/s1600/banner.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/-W5IxQBQxQsM/TWpWwI4CFCI/AAAAAAAAA64/EAUrgvAz2cM/s600/banner.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Over the past few weekends, I was working on a PHP Script that’s easy to integrate and somewhat more secure. Pulse Lite is a free and open-source thumbs-up thumbs-down ajax voting script written in PHP, using MySQL database. The requirements are minimal — PHP 5.2 or above, and MySQL. You can integrate it with your existing web-application in a matter of minutes.&lt;br /&gt;&lt;div style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a class=&quot;download-link read&quot; href=&quot;http://abhisek.iblogger.org/labs/pulse/&quot;&gt;Demo&lt;/a&gt; &lt;a class=&quot;download-link&quot; href=&quot;http://www.box.net/shared/bodl0rei6x&quot;&gt;Download&lt;/a&gt;&lt;/div&gt;&lt;h4 class=&quot;c0&quot;&gt;Features&lt;/h4&gt;&lt;ul class=&quot;&quot; id=&quot;&quot;&gt;&lt;li&gt;Easy to integrate!&lt;/li&gt;&lt;li&gt;Free and open-source!&lt;/li&gt;&lt;li&gt;Requirements: PHP 5.2+ and MySQL&lt;/li&gt;&lt;li&gt;Easy to customise!&lt;/li&gt;&lt;li&gt;Let’s you choose the format of the vote results!&lt;/li&gt;&lt;li&gt;Does not mess with your data! Only a single table contains the votes and other data.&lt;/li&gt;&lt;li&gt;Ready for your next project!&lt;/li&gt;&lt;li&gt;&lt;strong&gt;New in v2:&lt;/strong&gt; Now, with two new styles — YouTube-styled and Reddit-styled buttons!&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/cyberbuff/Pulse-Lite&quot;&gt;Github repository&lt;/a&gt; is ready to be forked!&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;UPDATE:&lt;/b&gt; A premium version of PulseLite — PulsePro — is now &lt;a href=&quot;http://www.technabled.com/2011/08/ajax-up-down-vote-with-admin-panel.html&quot;&gt;available&lt;/a&gt;! Here&#39;s a comparison of what you get! &lt;br /&gt;&lt;div style=&quot;clear: both; text-align: center;&quot;&gt;&lt;img src=&quot;http://adcdn.files.wordpress.com/2011/08/compare-table.jpg&quot; /&gt;&lt;/div&gt;&lt;h4 class=&quot;c0&quot;&gt;Security&lt;/h4&gt;The script uses a two-fold security measurement — it logs the IP of the user and sets a cookie. So whenever a user tries to vote on an item, the script checks the IP and the cookie. If they exist in the database (IP) and on users machine (cookie), the script stops the user from voting.&lt;br /&gt;This is not bulletproof, though. The user can use a different IP address and clear the cookie in order to vote again. And apparently, there is no bulletproof security measurement for such a situation. The best possible case is when a user is logged in and votes on an item. We can then lock user’s ID and stop voting next time s/he tries. A premium version is under work which will have more features. Stay in touch!&lt;br /&gt;&lt;h4 class=&quot;c0&quot;&gt;Installation&lt;/h4&gt;&lt;ul class=&quot;&quot; id=&quot;&quot;&gt;&lt;li&gt;Download the zip file (link is at the top). Unzip and run the SQL file included in it.&lt;/li&gt;&lt;li&gt;Edit pulse.config.php file inside the main Pulse directory. Fill in your database credentials. Also, fill in PULSE_DIR with the absolute path of the Pulse directory (i.e. the path of the Pulse directory inside your server)&lt;/li&gt;&lt;li&gt;Edit /assets/js/pulse.core.js file. Edit the value of u (i.e. the line that starts with var u). Set the value of u to the same value as PULSE_DIR&lt;/li&gt;&lt;li&gt;Include Pulse.vote.class.php to the file(s) where you want to show pulse. Create an instance of Pulse.&lt;br /&gt;&lt;pre class=&quot;php&quot; name=&quot;code&quot;&gt;include(&quot;Pulse/Pulse.vote.class.php&quot;);&lt;br /&gt;$pulse = new Pulse();&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Inside the head tag, add these lines to include necessary JS and CSS files.&lt;br /&gt;&lt;pre class=&quot;php&quot; name=&quot;code&quot;&gt;&amp;lt;?php echo Pulse::css(); ?&amp;gt;&lt;br /&gt;&amp;lt;?php echo Pulse::javascript(); ?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Inside the loop of the items (which are to be voted), add this line.&lt;br /&gt;&lt;pre class=&quot;php&quot; name=&quot;code&quot;&gt;&amp;lt;?php echo $pulse-&amp;gt;voteHTML($item_id); ?&amp;gt;&lt;/pre&gt;Here $item_id is the id of the item which is to be voted. Add the above line wherever you want to show the vote buttons&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You can specify the format in which the results are to be shown. Just after you create the $pulse instance, add this line.&lt;br /&gt;&lt;pre class=&quot;php&quot; name=&quot;code&quot;&gt;$pulse-&amp;gt;setFormat(&quot;{up} like it, {down} don&#39;t&quot;);&lt;/pre&gt;Here {up} will be replaced by the number of upvotes and {down} with that of downvotes. You can also use {balance} for the difference between upvotes and downvotes.&lt;/li&gt;&lt;/ul&gt;&lt;h4 class=&quot;c0&quot;&gt;Support&lt;/h4&gt;While this is an open-source project, &lt;strike&gt;I cannot guarantee providing support for the installation&lt;/strike&gt; you can send me a &lt;a href=&quot;mailto:abhisek.dutt@gmail.com&quot;&gt;mail&lt;/a&gt; in case you need any installation and customization, for a quote. All necessary installation guide and database structure are included with the source. An extensive sample installation can be found &lt;a href=&quot;http://www.scribd.com/full/48997492?access_key=key-1x4gb5gx7m5odh8dzeru&quot;&gt;here&lt;/a&gt; for a better understanding.&lt;br /&gt;&lt;br /&gt;Would you find any issues, feel free to discuss in the comment section. I hope you would enjoy using it as much as I did building it. </content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/5102476277581989090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=5102476277581989090&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/5102476277581989090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/5102476277581989090'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2011/02/pulse-lite-reddit-ajax-up-down-voting.html' title='Create Up-Down Voting in Your Web-application with Pulse Lite'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-UOkKcSFFE_4/TWpXEdPT0wI/AAAAAAAAA7A/Uj6kwj8D6C8/s72-c/thumb.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-689395036227942603</id><published>2011-01-30T21:17:00.002+05:30</published><updated>2011-01-30T21:20:35.974+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cool Stuff"/><category scheme="http://www.blogger.com/atom/ns#" term="Tips"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Apps"/><title type='text'>Create Your Own Cartoon Avatars for Free</title><content type='html'>&lt;div style=&#39;clear:both;text-align:center;float:left;margin:0px 5px 0px 0px;&#39;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_FX3RmPElUpc/TUWGglYBe-I/AAAAAAAAA6k/PDsFvEWtJmU/s1600/envato_avatar.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;80&quot; width=&quot;80&quot; src=&quot;http://3.bp.blogspot.com/_FX3RmPElUpc/TUWGglYBe-I/AAAAAAAAA6k/PDsFvEWtJmU/s320/envato_avatar.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;You must have come across many online avatars that resemble the person, but with a twist — it’s a cartoon and not the original photo of the person. It looks cool and — even more — it lets you stay anonymous while showing the world the same features that you have in reality. Here’s how you can create your own cartoon avatars for free.&lt;br /&gt;&lt;br /&gt;Enter &lt;a href=&quot;http://faceyourmanga.com/faceyourmanga_eng.html&quot;&gt;FaceYourManga.com&lt;/a&gt;. It’s a simple web-application that lets you create your cartoon avatars for free. You can choose from a variety of features — face, nose, mouth, hair, beard, glasses, even tattoos and piercing!&lt;br /&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_FX3RmPElUpc/TUWHquiOFPI/AAAAAAAAA6s/RsZHmtxwr-U/s1600/faceyourmanga.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;192&quot; width=&quot;320&quot; src=&quot;http://4.bp.blogspot.com/_FX3RmPElUpc/TUWHquiOFPI/AAAAAAAAA6s/RsZHmtxwr-U/s320/faceyourmanga.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Once you’re done creating the avatar, you have to enter your email in order to get the download link. You can even buy and print the image in high-resolution digital format for €1.50.&lt;br /&gt;&lt;br /&gt;&lt;div class=&#39;tip&#39;&gt;&lt;strong&gt;Tip:&lt;/strong&gt; If you don’t want to share your email with web-applications that claims to share download links via email, you can use &lt;a href=&quot;http://10minutemail.com&quot;&gt;10 Minute Mail&lt;/a&gt;. Once you enter this site, it gives you a unique email ID valid for &lt;i&gt;only 10 minutes&lt;/i&gt;. It is accessible only by you. Mails are automatically loaded. So you don’t need to refresh the page. If you don’t receive the mail within 10 minutes, you can extend the time for another 10 minutes.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/689395036227942603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=689395036227942603&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/689395036227942603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/689395036227942603'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2011/01/create-cartoon-profile-avatar-image.html' title='Create Your Own Cartoon Avatars for Free'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_FX3RmPElUpc/TUWGglYBe-I/AAAAAAAAA6k/PDsFvEWtJmU/s72-c/envato_avatar.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-5816971786986139276</id><published>2011-01-24T15:20:00.004+05:30</published><updated>2011-01-30T06:38:00.373+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Customisations"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="Projects"/><category scheme="http://www.blogger.com/atom/ns#" term="Tips"/><title type='text'>Enable or Disable Form Elements with jQuery Plugin</title><content type='html'>&lt;div style=&#39;clear:both;text-align:center;float:left;margin:0px 4px 4px 0px;&#39;&gt;&lt;a href=&#39;http://codecanyon.net?ref=cyberbuff&#39;&gt;&lt;img src=&#39;http://envato.s3.amazonaws.com/referrer_adverts/cc_125x125_v4.gif&#39;/&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Over the last weekend I developed a nifty jQuery form plug-in, which lets you interact with various form elements based on user inputs. The item is up &lt;a href=&quot;http://s.technabled.com/jquery-foggle&quot;&gt;for sale at CodeCanyon&lt;/a&gt; for $3. You can check out a &lt;a href=&quot;http://abhisek.iblogger.org/labs/foggle/&quot;&gt;demo here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Consider the following situation. You have a form where user updates his/her profile. If the user has a website, he/she can enter the URL field of the form. But he/she does not have a website (or does not want to share), the URL field is disabled. So, you want to enable that field based on user input.&lt;br /&gt;&lt;br /&gt;While you can achieve the same by writing some amount of JavaScript for each such field, this plug-in makes it a breeze. It takes only two parameters and does the same for you in just one line of code. :-)&lt;br /&gt;&lt;div style=&#39;clear:both;text-align:center;&#39;&gt;&lt;a href=&#39;http://abhisek.iblogger.org/labs/foggle/&#39; class=&#39;download-link read demo&#39;&gt;Demo&lt;/a&gt;&lt;br /&gt;&lt;a href=&#39;http://s.technabled.com/jquery-foggle&#39;&gt;&lt;img src=&#39;http://envato.s3.amazonaws.com/referrer_adverts/cc_180x100_v3.gif&#39;/&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/5816971786986139276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=5816971786986139276&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/5816971786986139276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/5816971786986139276'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2011/01/enable-disable-form-elements-with.html' title='Enable or Disable Form Elements with jQuery Plugin'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-6387329993797260922</id><published>2011-01-13T09:05:00.004+05:30</published><updated>2011-01-13T09:10:56.533+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Customisations"/><category scheme="http://www.blogger.com/atom/ns#" term="Firefox"/><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="Hacking"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Softwares"/><category scheme="http://www.blogger.com/atom/ns#" term="Tips"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>Capslock Hack: Use Capslock to Search the Web and More</title><content type='html'>&lt;div style=&#39;clear:both;text-align:center;float:left;margin:0px 5px 3px 0px;&#39;&gt;&lt;img src=&#39;http://2.bp.blogspot.com/_FX3RmPElUpc/TSpVS8e-0jI/AAAAAAAAA6U/2ycC-DBfUZ0/s128/AppleCapsLock.jpg&#39;/&gt;&lt;br /&gt;&lt;/div&gt;On a standard US &lt;a href=&quot;http://en.wikipedia.org/wiki/Keyboard_layout&quot;&gt;keyboard layout&lt;/a&gt;, Capslock is probably the least used key. Most people use the shift key to type in uppercase letters. Google’s own netbook, the &lt;a href=&quot;http://en.wikipedia.org/wiki/Cr48&quot;&gt;Cr-48&lt;/a&gt; has replaced the capslock key with a dedicated “Search” key, enabling users to search the web just by hitting the button. I made some quick coding on &lt;a href=&quot;http://www.autohotkey.com/&quot;&gt;Autohotkey&lt;/a&gt; to get the same functionality on Firefox and Google Chrome.&lt;br /&gt;&lt;br /&gt;It does three things:&lt;ul&gt;&lt;li&gt;If no web-browser instance is active, it starts the Windows Explorer search.&lt;/li&gt;&lt;li&gt;If Google Chrome is active, it opens a new tab and lets you search the web.&lt;/li&gt;&lt;li&gt;If Firefox is active, it puts the cursor to the search box on top right.&lt;/li&gt;&lt;/ul&gt;You can use any of the following two methods to use the functionality on your Windows PC&lt;br /&gt;&lt;strong&gt;1.&lt;/strong&gt; Install AutoHotkey and on your favourite text-editor paste the following lines.&lt;br /&gt;&lt;pre name=&#39;code&#39; class=&#39;html&#39;&gt;; Hit Capslock to search&lt;br /&gt;Capslock::&lt;br /&gt;SetTitleMatchMode 2&lt;br /&gt;IfWinNotActive, Google Chrome or Firefox&lt;br /&gt;Send, {F3}&lt;br /&gt;IfWinActive, Google Chrome&lt;br /&gt;Send, ^t&lt;br /&gt;Send, ^k&lt;br /&gt;IfWinActive, Firefox&lt;br /&gt;Send, ^k&lt;br /&gt;Return&lt;br /&gt;&lt;/pre&gt;Then, save it with .ahk extension. Just double click the file (after you have installed AutoHotkey) and your capslock is remapped to the new search button.&lt;br /&gt;&lt;strong&gt;2.&lt;/strong&gt; If the lines of code look daunting and you don’t want to install AutoHotkey, at all, I have good news for you. Just download the zip file at the end of this post and fire up the “capslock_as_search.exe” file. And there you go.&lt;br /&gt;&lt;h4 class=&#39;c0&#39;&gt;Bonus&lt;/h4&gt;Although it’s a personal choice, I find it great to have the backspace key around my left hand. “Try it, use it for a week, you&#39;ll never turn back” (&lt;a href=&quot;http://twitter.com/#!/hiway/status/8057449319759872&quot;&gt;@hiway&lt;/a&gt;) Just in case if anyone finds it useful here is the code:&lt;br /&gt;&lt;pre name=&#39;code&#39; class=&#39;html&#39;&gt;; Hit Capslock to backspace&lt;br /&gt;Capslock::Backspace&lt;/pre&gt;As earlier, if you don’t want to use and install AutoHotkey, you can just download the zip file at the end of the post and fire up “capslock_as_backspace.exe”&lt;br /&gt;If you’re on Linux system, &lt;a href=&quot;http://michaeljaylissner.com/blog/remap-caps-lock-as-backspace&quot;&gt;this post&lt;/a&gt; may help you.&lt;br /&gt;&lt;div style=&#39;clear:both;text-align:center;&#39;&gt;&lt;a href=&#39;http://www.box.net/shared/mory7av4yg&#39; class=&#39;download-link&#39;&gt;Download&lt;/a&gt;&lt;/div&gt;See also:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&#39;http://ad1987.blogspot.com/2009/07/5-windows7-shortcuts-you-can-use-on.html&#39;&gt;5 Windows 7 Shortcuts You Can Use in Windows XP&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#39;http://ad1987.blogspot.com/2009/07/5-portable-applications-to-instantly.html&#39;&gt;5 Portable Applications to Instantly Boost Your Productivity&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&#39;http://www.technabled.com/2009/05/5-notepad-tips-that-just-work.html&#39;&gt;6 Notepad++ Tricks That Just Works&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/6387329993797260922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=6387329993797260922&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/6387329993797260922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/6387329993797260922'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2011/01/capslock-as-websearch-and-backspace.html' title='Capslock Hack: Use Capslock to Search the Web and More'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_FX3RmPElUpc/TSpVS8e-0jI/AAAAAAAAA6U/2ycC-DBfUZ0/s72-c/AppleCapsLock.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-1035460656221944233</id><published>2011-01-07T05:11:00.001+05:30</published><updated>2011-01-07T05:11:34.381+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hacking"/><category scheme="http://www.blogger.com/atom/ns#" term="Softwares"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>How to Download Songs from Last FM</title><content type='html'>&lt;div style=&#39;clear:both;text-align:center;float:left;margin:0px 4px 4px 0px;&#39;&gt;&lt;img src=&#39;http://icons2.iconarchive.com/icons/custom-icon-design/sweet-social-media/128/Last-fm-icon.png&#39;/&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href=&quot;http://last.fm/&quot;&gt;LastFM&lt;/a&gt; is the Facebook of music. You can discover and listen to new music, find “real” people who listen to the same kind of music as you do. You can even “scrobble” songs (much like a Tweet, except that you update with the song you’re listening to).&lt;br /&gt;&lt;br /&gt;What if you can download the MP3s that you’re playing there? Although, LastFM does offer &lt;a href=&quot;http://www.last.fm/music/+free-music-downloads&quot;&gt;free songs&lt;/a&gt; from time to time, you can’t download songs from radios, play-lists and recommended play-list. Here are three of the best applications that let you download songs right from LastFM’s server.&lt;br /&gt;&lt;h4 class=&#39;c0&#39;&gt;TheLastRipper&lt;/h4&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_FX3RmPElUpc/TSZOz42AF5I/AAAAAAAAA50/D96uJu8F598/s1600/the-last-ripper.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-right:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; width=&quot;244&quot; src=&quot;http://4.bp.blogspot.com/_FX3RmPElUpc/TSZOz42AF5I/AAAAAAAAA50/D96uJu8F598/s320/the-last-ripper.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;http://code.google.com/p/thelastripper/&quot;&gt;TheLastRipper&lt;/a&gt; records songs from LastFM’s radios and brings them to your hard-drive. It also adds tags and downloads album arts for each song. The MP3 files are organised in the following fashion: Artist &gt; Album &gt; “SongNumber - track name” (you can customize this pattern too). This means that songs are organized in a deep folder structure. You can even tune into a LastFM radio simply by entering the URL.&lt;br /&gt;&lt;h4 class=&#39;c0&#39;&gt;LastFM Downloader&lt;/h4&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_FX3RmPElUpc/TSZPXA2xwLI/AAAAAAAAA58/H9qnrbEyoTI/s1600/last-fm-downloader.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;196&quot; width=&quot;320&quot; src=&quot;http://2.bp.blogspot.com/_FX3RmPElUpc/TSZPXA2xwLI/AAAAAAAAA58/H9qnrbEyoTI/s320/last-fm-downloader.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;This tiny little application doesn’t need any installation. Just fire it up and start downloading. &lt;a href=&quot;http://thesz.diecru.eu/content/lastfm.php&quot;&gt;Last FM Downloader&lt;/a&gt; only supports tuning in via URL. You can restrict the number of songs you want to download. Downloaded songs are organised in deep folder structure. Since you can only download after you tune in through URL, you might have to play around with the structure of LastFM URLs. Not recommended for average computer users.&lt;br /&gt;&lt;h4 class=&#39;c0&#39;&gt;LastSharp&lt;/h4&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_FX3RmPElUpc/TSZPmdX4E0I/AAAAAAAAA6E/ucMHXz22X_A/s1600/last-sharp.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;190&quot; width=&quot;320&quot; src=&quot;http://2.bp.blogspot.com/_FX3RmPElUpc/TSZPmdX4E0I/AAAAAAAAA6E/ucMHXz22X_A/s320/last-sharp.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;http://dev.xscheme.de/&quot;&gt;LastSharp&lt;/a&gt; is probably the best downloader. It downloads a play-list of 30 tracks. You can select which of these songs you want to download, unlike LastRipper and LFDownloader which continue to download. It lets you choose which of the artists’ songs you want to download, leaving aside the others. The songs are organised in deep folder layout which can be customised. It also includes a built-in audio player to play downloaded songs. One of the interesting features is that it doesn’t download songs that are already downloaded, even if the play-list repeats the songs or a different play-list has the same songs.&lt;br /&gt;&lt;br /&gt;Here’s comparison of the features.&lt;br /&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_FX3RmPElUpc/TSZRs3AALtI/AAAAAAAAA6M/KjBQQfCFnAM/s1600/last-fm-downloader-features.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/_FX3RmPElUpc/TSZRs3AALtI/AAAAAAAAA6M/KjBQQfCFnAM/s1600/last-fm-downloader-features.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;em&gt;Disclaimer: This blog and its author(s) do not condone software piracy. The above post is for information only and should not be taken as a promotion of copyright infringement.&lt;/em&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/1035460656221944233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=1035460656221944233&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/1035460656221944233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/1035460656221944233'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2011/01/last-fm-mp3-download.html' title='How to Download Songs from Last FM'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_FX3RmPElUpc/TSZOz42AF5I/AAAAAAAAA50/D96uJu8F598/s72-c/the-last-ripper.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-6216324930539654413</id><published>2011-01-06T06:18:00.002+05:30</published><updated>2011-01-06T06:27:38.628+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="et cetera"/><title type='text'>AbhiTech is Now Technabled!</title><content type='html'>&lt;div style=&#39;clear:both;text-align:center;float:left;margin:0px 5px 5px 0px;&#39;&gt;&lt;img src=&#39;http://27.media.tumblr.com/avatar_f5ff44cbfdac_128.png&#39;/&gt;&lt;br /&gt;&lt;/div&gt;It’s been 5 years since this blog started. First it was by the name “Cyberbuff’s Blog” and later by “AbhiTech”. It was crying for a makeover. So, I thought about buying new domain and giving it a professional “look.” So here we are.&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Although the look remains the same, a lot has changed with this update. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Apart from getting a new web-address, Technabled now has a logo that’s a mash-up of the power button and the Latin T.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://etc.technabled.com&quot;&gt;Et Cetera&lt;/a&gt;, a Tumblog, is now a part of Technabled. Et Cetera is updated almost everyday with interesting links from around the web. Do subscribe to the feed to keep connected!&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://twitter.com/technabled&quot;&gt;Twitter profile for Technabled&lt;/a&gt; offers tips, tricks on daily basis. Do follow!&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://facebook.com/technabled&quot;&gt;Facebook’s fan-page&lt;/a&gt; now has a “vanity” url -- http://facebook.com/technabled You can tag our page by adding @technabled in your updates. “Like” our fan-page to get updates on Facebook!&lt;/li&gt;&lt;li&gt;If you want to contact me, please do so at abhisek@technabled.com I would love to hear from you.&lt;/li&gt;&lt;/ul&gt;The content remains the same -- technology. Enjoy your stay here! If you any suggestion, criticism (or any other feedback) to share, please do so in the comments section!</content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/6216324930539654413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=6216324930539654413&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/6216324930539654413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/6216324930539654413'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2011/01/abhitech-is-now-technabled.html' title='AbhiTech is Now Technabled!'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-3649643476475275848</id><published>2010-07-24T07:24:00.003+05:30</published><updated>2010-07-24T07:26:27.083+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cool Stuff"/><category scheme="http://www.blogger.com/atom/ns#" term="News"/><title type='text'>India&#39;s $35 Tablet PC</title><content type='html'>&lt;div style=&quot;clear: both; text-align: center;float:left;margin-right:5px;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/_FX3RmPElUpc/TEpFktVJbtI/AAAAAAAAA4Q/G4wFMbfXWH8/s144/201769-india_tablet_original.jpg&quot; /&gt;&lt;/div&gt;The minimum amount of money an iPad can cost you is $499. But if you don&#39;t bother about the high-end features iPad provides and you just want to browse the net, then forking out $499 is not a good idea. Well, you can get a &lt;strong&gt;touch tablet &#39;PC&#39; for less than $50&lt;/strong&gt;. India&#39;s HRD ministry has unveiled a prototype. &lt;br /&gt;HRD Minister Mr. Kapil Sibal has unveiled a prototype of a touch tablet that costs only $35 and can be used to browse webpages, word processing, and even video conferencing. The technicalities of the device are unknown but it doesn&#39;t use hard-disk. Instead it &lt;strong&gt;uses memory cards &amp;mdash; much like mobile phones&lt;/strong&gt;. It runs on a battery but it is &lt;strong&gt;solar power option&lt;/strong&gt; too.  &lt;div style=&#39;clear:both;text-align:center;&#39; class=&#39;tutorial-image&#39;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_FX3RmPElUpc/TEpGprwFaNI/AAAAAAAAA4U/S4yrjTDS3BM/s1600/overview.png&quot; /&gt; &lt;/div&gt;The price will be even lower for students for whom the Government is ready to subsidise even more. The cost of this tablet for a student will be around $20.&lt;br /&gt;The reponse from the private sector has been lukewarm since the profitability of the device is being questioned. &lt;br /&gt;[Via &lt;a href=&quot;http://www.bbc.co.uk/news/world-south-asia-10740817&quot;&gt;BBC South-Asia&lt;/a&gt;]</content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/3649643476475275848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=3649643476475275848&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/3649643476475275848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/3649643476475275848'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2010/07/cheap-tablet-pc.html' title='India&#39;s $35 Tablet PC'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_FX3RmPElUpc/TEpFktVJbtI/AAAAAAAAA4Q/G4wFMbfXWH8/s72-c/201769-india_tablet_original.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-5647345962632053600</id><published>2010-07-09T06:31:00.001+05:30</published><updated>2010-07-09T06:32:05.853+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Tips"/><title type='text'>5 Common Misconceptions about Evernote</title><content type='html'>&lt;div style=&quot;clear: both; float: left; text-align: center;&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_WzZXEFhUG5Y/SwZ1BQjGTeI/AAAAAAAAAD0/-HHRvXHyAYQ/s72/evernote_logo1.jpg&quot; /&gt; &lt;/div&gt;&lt;a href=&quot;http://evernote.com&quot;&gt;Evernote&lt;/a&gt; is probably the best and the most popular note-taking application on the web. Evernote recently reached &lt;a href=&quot;http://blog.evernote.com/2010/05/04/evernote-reaches-three-million-users/&quot; title=&quot;Evernote has 3 million users&quot;&gt;3 million users&lt;/a&gt; which is a great news for Evernote fanboys (and fangirls). But even after so much success, people still have misconceptions about the application. From security woes to limited functionalities, some people write it off for various reasons. This post is about some of those commonly held myths. Feel free to add your comments. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Misconception 1: Evernote is a note taking application. Very little possibilities. It&#39;s not for everyone.&lt;/strong&gt;&lt;br /&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/rinux/631345826/&quot; title=&quot;Post-it® notes by riNux, on Flickr&quot;&gt;&lt;img alt=&quot;Post-it® notes&quot; height=&quot;333&quot; src=&quot;http://farm2.static.flickr.com/1201/631345826_d7158ef086.jpg&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Possibilities with Evernote are enormous. Every once in a while Evernote publishes &lt;a href=&quot;http://blog.evernote.com/category/tips_stories/&quot;&gt;Tips&lt;/a&gt; on how to use Evernote more effectively. From using it for planning your house to store your gym&#39;s schedule, you can do a lot with Evernote. If you&#39;re still not conviced, consider reading the following two articles: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.openforum.com/idea-hub/topics/the-world/article/14-practical-ways-to-use-evernote-guy-kawasaki&quot;&gt;14 Practical Ways to Use Evernote&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://blog.evernote.com/2010/01/20/6-ways-evernote-can-boost-your-productivity-guest-post-by-joshua-zerkel/#more-5049&quot;&gt;6 Ways Evernote Can Boost Your Productivity&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;Misconception 2: You cannot share your notes with any one. Your notes are caged!&lt;/strong&gt; &lt;br /&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/jup3nep/1441463927/&quot; title=&quot;Prisoner no. 04/4 by Katarina 2353, on Flickr&quot;&gt;&lt;img alt=&quot;Prisoner no. 04/4&quot; height=&quot;500&quot; src=&quot;http://farm2.static.flickr.com/1035/1441463927_55fd1e5242.jpg&quot; width=&quot;389&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Evernote lets you share entire &#39;notebooks&#39;. &lt;a href=&quot;http://blog.evernote.com/2008/04/21/publishing-sharing-your-notes/&quot;&gt;Here&lt;/a&gt; are detailed instructions how to do so. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Misconception 3: Your notes and documents are not secure.&lt;/strong&gt; &lt;br /&gt;EverNote makes a back-up of your notes in at least 5 disks. So data-loss is virtually impossible. Still EverNote has a well chalked out &lt;a href=&quot;http://www.evernote.com/about/privacy/&quot;&gt;privacy policy&lt;/a&gt; which ensures your notes are safe.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Misconception 4: For free users, EverNote provides 40 MB sync bandwidth every month. This is too little.&lt;/strong&gt;&lt;br /&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/eisfrei/78932427/&quot; title=&quot;more bandwidth &amp;amp;&amp;amp; more sandwich by EisFrei, on Flickr&quot;&gt;&lt;img alt=&quot;more bandwidth &amp;amp;&amp;amp; more sandwich&quot; height=&quot;500&quot; src=&quot;http://farm1.static.flickr.com/41/78932427_5899693b89.jpg&quot; width=&quot;375&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Sync bandwidth is the amount of data you send to EverNote and not the actual amount of data your notes takes in their drives. With 40 MB sync bandwidth, you can make 20,000 typed notes, 270 web clips, 400 Camera Phone images. That&#39;s much more than you need. Still in case, you ran out of bandwidth, you can go premium for $5 a month ot $45 a year. Premium accounts get 500 MB sync bandwidth a month, along with other features. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Misconception 5: There&#39;s no Symbian client for Evernote.&lt;/strong&gt;&lt;br /&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_FX3RmPElUpc/TDZ0W_hFUnI/AAAAAAAAA4M/RSevBHWoeUc/s1600/Scr000028.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;http://1.bp.blogspot.com/_FX3RmPElUpc/TDZ0W_hFUnI/AAAAAAAAA4M/RSevBHWoeUc/s320/Scr000028.jpg&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;There &lt;em&gt;is&lt;/em&gt; one &lt;a href=&quot;http://www.allaboutsymbian.com/news/item/10967_Evernote_for_Symbian_live_and_.php&quot;&gt;EverNote client for Symbian-based smart-phones&lt;/a&gt;, although not officially supported by Evernote. It works on all phones based on S60 5th Edition.</content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/5647345962632053600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=5647345962632053600&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/5647345962632053600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/5647345962632053600'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2010/07/common-misconceptions-evernote.html' title='5 Common Misconceptions about Evernote'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_WzZXEFhUG5Y/SwZ1BQjGTeI/AAAAAAAAAD0/-HHRvXHyAYQ/s72-c/evernote_logo1.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-4486381707992247589</id><published>2010-07-01T15:32:00.004+05:30</published><updated>2010-07-03T06:45:29.727+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="News"/><category scheme="http://www.blogger.com/atom/ns#" term="Round-Ups"/><title type='text'>6 Striking Features on New Digg</title><content type='html'>&lt;div style=&#39;clear:both;text-align:center;float:left&#39;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_f7K7JijP_mY/SCqyt1Ixq9I/AAAAAAAAAOc/23kr5VUt1_c/s72/digg-logo.jpg&quot; /&gt; &lt;/div&gt;Digg has launched an invite-only preview of its newest user-interface designs that it will be launching for the public later this year. Apart from little changes here and there, these are some of the striking new features that would surely make it more social and usable.&lt;br /&gt;1. &lt;strong&gt;Twitter style links:&lt;/strong&gt; Profiles of each user will be accessbile through Twitter style URLs. i.e. &lt;em&gt;digg.com/username&lt;/em&gt; &lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_FX3RmPElUpc/TCxewOAfMeI/AAAAAAAAA3o/4tfUi1Sdnvk/s1600/0.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/_FX3RmPElUpc/TCxewOAfMeI/AAAAAAAAA3o/4tfUi1Sdnvk/s1600/0.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;2. &lt;strong&gt;You can follow users.&lt;/strong&gt; Just like Twitter. Once you sign in, you would be presented with a list of popular profiles on Digg whom you might like to follow. Updates from those you follow is available on the &lt;em&gt;My News&lt;/em&gt; page. That&#39;s the same page as Twitter timeline. &lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_FX3RmPElUpc/TCxf4aA4VCI/AAAAAAAAA3s/InSigHIi2hs/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/_FX3RmPElUpc/TCxf4aA4VCI/AAAAAAAAA3s/InSigHIi2hs/s400/1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;3. &lt;strong&gt;Connect Social Networks:&lt;/strong&gt; Joining the likes of most social networks, Digg will offer you to connect to Facebook, Twitter and Google to add new people whom you already know. &lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_FX3RmPElUpc/TCxgrQwJCGI/AAAAAAAAA3w/BamhdKwMYq4/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;153&quot; src=&quot;http://1.bp.blogspot.com/_FX3RmPElUpc/TCxgrQwJCGI/AAAAAAAAA3w/BamhdKwMYq4/s320/2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Once connected, you can see a list of people from the same network. You can follow them right from that page. It&#39;s that simple! &lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_FX3RmPElUpc/TCxhXuuRFII/AAAAAAAAA30/XsbTcFl37wU/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/_FX3RmPElUpc/TCxhXuuRFII/AAAAAAAAA30/XsbTcFl37wU/s400/3.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;4. &lt;strong&gt;Simplified link submission:&lt;/strong&gt; In just a couple of clicks, you can submit links to Digg. You can submit links right from the &lt;em&gt;My News&lt;/em&gt; page. Just after you enter the URL, the title and the embedded images are loaded on the fly. All you have to do is to enter a description and hit the button. No more horrible captchas. It&#39;s simpler than ever before. &lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_FX3RmPElUpc/TCxjpYKHAmI/AAAAAAAAA34/HAyos0ulDpw/s1600/9.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;259&quot; src=&quot;http://3.bp.blogspot.com/_FX3RmPElUpc/TCxjpYKHAmI/AAAAAAAAA34/HAyos0ulDpw/s320/9.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;You can even comment on the newly submitted URL right from there! &lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_FX3RmPElUpc/TCxkCQhi9mI/AAAAAAAAA38/Pnl2cBEsfNo/s1600/10.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;194&quot; src=&quot;http://4.bp.blogspot.com/_FX3RmPElUpc/TCxkCQhi9mI/AAAAAAAAA38/Pnl2cBEsfNo/s320/10.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;5. &lt;strong&gt;Auto-submit content:&lt;/strong&gt; Now, you can auto-submit content to Digg from any feed item. You don&#39;t have to visit Digg to submit a link everytime you make a new post. Just add the feed to Digg and everytime you post, it will auto-publish the content. &lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_FX3RmPElUpc/TCxk9Hd5LcI/AAAAAAAAA4A/eyM8eIMz7Xg/s1600/6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;124&quot; src=&quot;http://3.bp.blogspot.com/_FX3RmPElUpc/TCxk9Hd5LcI/AAAAAAAAA4A/eyM8eIMz7Xg/s320/6.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;6. &lt;strong&gt;Twitter-style &lt;em&gt;Load more&lt;/em&gt; widget:&lt;/strong&gt; You can stay on the same page and keep borwsing through Digg&#39;s interesting links. All you have to do is to click on the &lt;em&gt;Load More&lt;/em&gt; link once you&#39;re done reading everything on that page. With this, Digg has done away with pagination which is irritating for some users. &lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_FX3RmPElUpc/TCxl20Gl-PI/AAAAAAAAA4E/UQRzsjIe7RE/s1600/7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;192&quot; src=&quot;http://2.bp.blogspot.com/_FX3RmPElUpc/TCxl20Gl-PI/AAAAAAAAA4E/UQRzsjIe7RE/s320/7.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/4486381707992247589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=4486381707992247589&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/4486381707992247589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/4486381707992247589'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2010/07/6-striking-features-on-new-digg.html' title='6 Striking Features on New Digg'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_f7K7JijP_mY/SCqyt1Ixq9I/AAAAAAAAAOc/23kr5VUt1_c/s72-c/digg-logo.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-711942398069639597</id><published>2010-06-25T06:33:00.002+05:30</published><updated>2010-06-25T06:36:58.468+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cool Stuff"/><category scheme="http://www.blogger.com/atom/ns#" term="News"/><title type='text'>Free Calls from Skype to Qualifying Countries for the World Cup</title><content type='html'>&lt;div style=&#39;clear:both;text-align:center;float:left;&#39;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_mf5OyzbmAcY/SF0YmT-r1QI/AAAAAAAAA1Y/RGacqGost2g/s72/skype-logo.jpg&quot; /&gt; &lt;/div&gt;&lt;a href=&quot;http://ad1987.blogspot.com/search?q=skype&quot;&gt;Skype&lt;/a&gt;, the most popular VoIP service provider, is offering a month of free calls from Skype to any number around the world, to celebrate 2010 Fifa World Cup. This offer is valid for 30 countries which are qualified for the World Cup 2010. You can check the announcement &lt;a href=&quot;http://blogs.skype.com/en/2010/06/free_calls_for_a_month.html&quot;&gt;here&lt;/a&gt;. Out of these 30 countries, Skype offers unlimited calls to landline numbers in some of the countries (including the US, Australia, France, Germany among many other countries). But Skype charges a nominal fee of 1 Euro for all this plans. Payment can be made through any of the &lt;a href=&quot;http://www.skype.com/intl/en-us/features/prices/ways-to-pay/&quot;&gt;three options&lt;/a&gt; Skype offers. &lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_FX3RmPElUpc/TCP_40F5XeI/AAAAAAAAA3k/9wfJEkKU_Co/s1600/nominal-charges-skype-calls.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/_FX3RmPElUpc/TCP_40F5XeI/AAAAAAAAA3k/9wfJEkKU_Co/s1600/nominal-charges-skype-calls.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/711942398069639597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=711942398069639597&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/711942398069639597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/711942398069639597'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2010/06/free-calls-from-skype-to-qualifying.html' title='Free Calls from Skype to Qualifying Countries for the World Cup'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_mf5OyzbmAcY/SF0YmT-r1QI/AAAAAAAAA1Y/RGacqGost2g/s72-c/skype-logo.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-8719942417667179175</id><published>2010-06-13T06:38:00.000+05:30</published><updated>2010-06-13T06:38:14.184+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><category scheme="http://www.blogger.com/atom/ns#" term="Round-Ups"/><title type='text'>11 PHP Voting Scripts and Tutorials</title><content type='html'>&lt;div style=&#39;clear:both;text-align:center;float:left;&#39;&gt;&lt;img src=&#39;http://4.bp.blogspot.com/_FX3RmPElUpc/TBQvM8pFCsI/AAAAAAAAA3Y/VIgcm89k87Q/s1600/php.png&#39;/&gt;&lt;br /&gt;&lt;/div&gt;Ever since I wrote the tutorial on &lt;a href=&quot;http://ad1987.blogspot.com/2009/02/reddit-style-voting-with-php-mysql-and.html&quot;&gt;Reddit-style Voting With PHP, MySQL and jQuery&lt;/a&gt;, I get around 300 visitors everyday with keywords like &lt;em&gt;&quot;php voting&quot;&lt;/em&gt;, &lt;em&gt;&quot;jquery votes&quot;&lt;/em&gt;, &lt;em&gt;&quot;jquery vote up down&quot;&lt;/em&gt;, &lt;em&gt;&quot;php vote tutorial&quot;&lt;/em&gt;, &lt;em&gt;&quot;votes php mysql&quot;&lt;/em&gt; and many other keywords. So I thought about writing a round-up of voting scripts and tutorials using PHP as the server-side language. Here are the tutorials and scripts that might be of your use. If you think I missed anything, do let me know in the comment section. You can also have a look at the &lt;a href=&quot;http://ad1987.blogspot.com/search/label/Round-Ups&quot;&gt;round-up section&lt;/a&gt; for more such round-ups. :-) &lt;h4 class=&#39;c0&#39;&gt;Scripts&lt;/h4&gt;1. &lt;a href=&quot;http://colorpowered.com/colorrating/&quot;&gt;ColorRating&lt;/a&gt;: A well-documented, easy to use voting script. Higly configurable and easy to integrate with your database. It uses jQuery for a nice animated effect. &lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_FX3RmPElUpc/S7F0Yee4qgI/AAAAAAAAA1M/SpbcaDW-kVg/s1600-h/color-rating-screenie.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/_FX3RmPElUpc/S7F0Yee4qgI/AAAAAAAAA1M/SpbcaDW-kVg/s1600/color-rating-screenie.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;2. &lt;a href=&quot;http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=267&amp;amp;lngWId=8&quot;&gt;PHP Voting by Richard Silvers&lt;/a&gt;: A &quot;fairly&quot; simple PHP voting script. It allows users to vote and view the total results of the vote. &lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_FX3RmPElUpc/S7F5GZDpeTI/AAAAAAAAA1Y/gKTy7wdMKP8/s1600-h/PIC200123610228137.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/_FX3RmPElUpc/S7F5GZDpeTI/AAAAAAAAA1Y/gKTy7wdMKP8/s1600/PIC200123610228137.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;3.&lt;a href=&#39;http://orkans-tmp.22web.net/star_rating/&#39;&gt;Star Rating Widget&lt;/a&gt;: The Star Rating widget is a plugin for the jQuery javascript library that creates a non-obstrusive star rating control based on a set of radio buttons or select option.&lt;br /&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_FX3RmPElUpc/TBN0N28bvTI/AAAAAAAAA3E/kqNdZFgF5rA/s1600/star-rating-widget.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/_FX3RmPElUpc/TBN0N28bvTI/AAAAAAAAA3E/kqNdZFgF5rA/s1600/star-rating-widget.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h4 class=&#39;c0&#39;&gt;Commercial Solutions&lt;/h4&gt;1. &lt;a href=&#39;http://codecanyon.net/item/ajax-feature-request-voting/102513?ref=cyberbuff&#39;&gt;Ajax Feature Request and Voting&lt;/a&gt; ($14): It&#39;s simple and a lot like Dropbox&#39;s &lt;a href=&#39;https://www.dropbox.com/votebox&#39;&gt;votebox&lt;/a&gt; page.&lt;br /&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_FX3RmPElUpc/TBPkUCEQ44I/AAAAAAAAA3M/E7w00RwT8vo/s1600/codecanyon-ajax-feature-request-voting.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;238&quot; src=&quot;http://2.bp.blogspot.com/_FX3RmPElUpc/TBPkUCEQ44I/AAAAAAAAA3M/E7w00RwT8vo/s320/codecanyon-ajax-feature-request-voting.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;2. &lt;a href=&#39;http://codecanyon.net/item/thumbsup/50411?ref=cyberbuff&#39;&gt;ThumbsUp&lt;/a&gt; ($17): This is probably the best commercial script that is available. It comes with a slew of options &amp;mdash; in various shapes and sizes. AJAXed!&lt;br /&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_FX3RmPElUpc/TBQo5O_sJVI/AAAAAAAAA3Q/cQgix9ukBoI/s1600/thumbs-up-code-canyon.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/_FX3RmPElUpc/TBQo5O_sJVI/AAAAAAAAA3Q/cQgix9ukBoI/s400/thumbs-up-code-canyon.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h4 class=&#39;c0&#39;&gt;Tutorials&lt;/h4&gt;1. &lt;a href=&quot;http://www.9lessons.info/2009/08/vote-with-jquery-ajax-and-php.html&quot;&gt;Voting system with jQuery, Ajax and PHP&lt;/a&gt;: A very detailed tutorial on Dzone like voting system with jQuery, Ajax and PHP. This script helps you to display user votes on blog post. &lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_FX3RmPElUpc/S7F1ofwJnQI/AAAAAAAAA1Q/Do3_3B5yyYY/s1600-h/Dzone-like-voting-system-with-jQuery-Ajax-and-PHP.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/_FX3RmPElUpc/S7F1ofwJnQI/AAAAAAAAA1Q/Do3_3B5yyYY/s400/Dzone-like-voting-system-with-jQuery-Ajax-and-PHP.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;2. &lt;a href=&quot;http://www.codeproject.com/KB/HTML/phpoll.aspx&quot;&gt;A Simple PHP Polling/Voting System&lt;/a&gt;: This article will illustrate how to create a very simple, clean polling or voting system using PHP 5.0 and the DOMDocument object model. This allows the polling system to read and write polling results to XML, instead of say, a MySQL database like many conventional polling systems. &lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_FX3RmPElUpc/S7F4Mu9PSpI/AAAAAAAAA1U/dDRU1KTFEKg/s1600-h/phpoll.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/_FX3RmPElUpc/S7F4Mu9PSpI/AAAAAAAAA1U/dDRU1KTFEKg/s400/phpoll.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;3. &lt;a href=&quot;http://www.phptoys.com/e107_plugins/content/content.php?content.51&quot;&gt;Creating a simple file based polling script&lt;/a&gt;: This tutorial will show you how to create a simple, file based polling system where you can easily setup new polls. No database is required for this script and you only have to maintain one config file.&lt;br /&gt;4. &lt;a href=&quot;http://net.tutsplus.com/tutorials/javascript-ajax/creating-a-dynamic-poll-with-jquery-and-php/&quot;&gt;Creating a Dynamic Poll with jQuery and PHP&lt;/a&gt;: This tutorial shows how to create a simple polling system that doesn&#39;t need a page-refresh to show the results. &lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_FX3RmPElUpc/S7YwV8XcS6I/AAAAAAAAA1o/uB99G0idFM0/s1600-h/net-tuts-poll-results.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/_FX3RmPElUpc/S7YwV8XcS6I/AAAAAAAAA1o/uB99G0idFM0/s1600/net-tuts-poll-results.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;5. &lt;a href=&#39;http://www.jotlab.com/2008/04/11/tutorial-how-to-build-a-poll-system-in-php-and-mysql/&#39;&gt;How to Build a Poll System with PHP and MySQL&lt;/a&gt; [&lt;a href=&quot;http://www.jotlab.com/tutorials/poll/index.php&quot;&gt;Demo&lt;/a&gt;]: This is pretty simple tutorial that explains how to polling with PHP and MySQL works. It offers the source-code, too.&lt;br /&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_FX3RmPElUpc/TBN38w6KhYI/AAAAAAAAA3I/xo5wungbcMA/s1600/jotlab-poll.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/_FX3RmPElUpc/TBN38w6KhYI/AAAAAAAAA3I/xo5wungbcMA/s1600/jotlab-poll.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;6. &lt;a href=&#39;http://tutorialzine.com/2009/11/jquery-sort-vote/&#39;&gt;Sort &amp; Vote – A jQuery Poll&lt;/a&gt;: This is a very detailed tutorial on an innovative concept of polling with jQuery. The end result lets users drag items in order of preference and then submit it for polling!&lt;br /&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_FX3RmPElUpc/TBQsBjRm7fI/AAAAAAAAA3U/h0aZYmwHahk/s1600/sort-and-vote-jquery-poll.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;126&quot; src=&quot;http://2.bp.blogspot.com/_FX3RmPElUpc/TBQsBjRm7fI/AAAAAAAAA3U/h0aZYmwHahk/s320/sort-and-vote-jquery-poll.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h4 class=&#39;c0&#39;&gt;Bonus&lt;/h4&gt;&lt;a href=&quot;http://www.vlkomarov.info/projects/jquery/very-simple-rating-system/&quot;&gt;Very Simple Rating System - AJAX via jQuery, JSON&lt;/a&gt;: I guess, it&#39;s in Russian. Digg-like voting using jQuery, JSON.</content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/8719942417667179175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=8719942417667179175&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/8719942417667179175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/8719942417667179175'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2010/06/11-php-voting-scripts-and-tutorials.html' title='11 PHP Voting Scripts and Tutorials'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_FX3RmPElUpc/TBQvM8pFCsI/AAAAAAAAA3Y/VIgcm89k87Q/s72-c/php.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-8325432621598389245</id><published>2010-06-05T20:06:00.001+05:30</published><updated>2010-06-05T20:28:42.335+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cool Stuff"/><category scheme="http://www.blogger.com/atom/ns#" term="Softwares"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>Record Skype Calls for Free with iFreeRecorder</title><content type='html'>&lt;div style=&#39;clear:both;text-align:center;float:left;&#39;&gt; &lt;img src=&quot;http://4.bp.blogspot.com/_mf5OyzbmAcY/SF0YmT-r1QI/AAAAAAAAA1Y/RGacqGost2g/s72/skype-logo.jpg&quot; /&gt;&lt;/div&gt;&lt;a href=&quot;http://skype.com&quot;&gt;Skype&lt;/a&gt; is an award-winning IM platform that is hugely popular for making calls to other Skype users and phones across the world. A lot of the companies regularly buy Skype Credits to make calls to their clients. And it&#39;s much cheaper to make calls from Skype than from usual phones since it uses Voice Over Internet Protocol (VoIP). If you use it for the purpose of making calls, you may want to record calls that you made just to keep track them. iFreeRecorder is an application that does the job and that, too, with many options to choose from.  iFreeRecorder uses Skype API to record calls.&lt;br/&gt; Once you intall iFreeRecorder (Skype must be installed first, of course), you&#39;d have to give access to use Skype&#39;s API. &lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt; &lt;a href=&quot;http://4.bp.blogspot.com/_FX3RmPElUpc/TApgi6rrU5I/AAAAAAAAA2s/l91NDCmU_hM/s1600/ifree.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;77&quot; src=&quot;http://4.bp.blogspot.com/_FX3RmPElUpc/TApgi6rrU5I/AAAAAAAAA2s/l91NDCmU_hM/s320/ifree.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt; Once you allow access to Skype&#39;s API, you&#39;re ready to go. &lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt; &lt;a href=&quot;http://2.bp.blogspot.com/_FX3RmPElUpc/TAphSUIo_UI/AAAAAAAAA2w/7DWWtHYTd8I/s1600/ifree-options.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;73&quot; src=&quot;http://2.bp.blogspot.com/_FX3RmPElUpc/TAphSUIo_UI/AAAAAAAAA2w/7DWWtHYTd8I/s320/ifree-options.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt; iFreeRecorder comes with a bunch of options — from MP3 quality selection to auto-record calls.  &lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt; &lt;a href=&quot;http://4.bp.blogspot.com/_FX3RmPElUpc/TAph7lkX1DI/AAAAAAAAA28/vKU4vkfP7Tk/s1600/ifree-quality-options.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/_FX3RmPElUpc/TAph7lkX1DI/AAAAAAAAA28/vKU4vkfP7Tk/s320/ifree-quality-options.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://2.bp.blogspot.com/_FX3RmPElUpc/TAph7HyJNYI/AAAAAAAAA24/bsjRcUpIwqs/s1600/ifree-options2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;http://2.bp.blogspot.com/_FX3RmPElUpc/TAph7HyJNYI/AAAAAAAAA24/bsjRcUpIwqs/s320/ifree-options2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://3.bp.blogspot.com/_FX3RmPElUpc/TAph6lFKTWI/AAAAAAAAA20/BDdKk-IhEv8/s1600/ifree-call-record-options.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;http://3.bp.blogspot.com/_FX3RmPElUpc/TAph6lFKTWI/AAAAAAAAA20/BDdKk-IhEv8/s320/ifree-call-record-options.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt; &lt;/div&gt; It also offers a history option that keeps track of all your recorded calls. You can also record conference calls! &lt;br/&gt; &lt;a href=&quot;http://www.ifree-recorder.com/index.htm&quot;&gt;iFreeRecorder&lt;/a&gt; is an innovative and very useful tool. It comes as a freeware but if you find it useful, do consider donating.  </content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/8325432621598389245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=8325432621598389245&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/8325432621598389245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/8325432621598389245'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2010/06/record-skype-calls-for-free-with.html' title='Record Skype Calls for Free with iFreeRecorder'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_mf5OyzbmAcY/SF0YmT-r1QI/AAAAAAAAA1Y/RGacqGost2g/s72-c/skype-logo.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-2602110431926915733</id><published>2010-05-06T17:50:00.002+05:30</published><updated>2010-05-07T05:41:45.587+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cool Stuff"/><category scheme="http://www.blogger.com/atom/ns#" term="css"/><category scheme="http://www.blogger.com/atom/ns#" term="Softwares"/><title type='text'>Code Faster HTML with Zen Coding</title><content type='html'>&lt;div style=&quot;text-align: center; margin: 0px 3px 3px 0px; float: left; clear: both&quot;&gt;&lt;img src=&quot;http://code.google.com/p/zen-coding/logo?logo_id=1257697522&quot;&gt; &lt;/div&gt;Do you code in HTML? Does the sight of lines of HTML makes you sick? Do you want to speed up your workflow? If &quot;Yes!&quot; is the answer to any of these questions, then you must try Zen Coding — a powerful tool to write lines of HTML (and CSS) in just a few letters. Zen Coding uses simple abbreviations (which you can hardly forget) to expand them into valid HTML syntax. The best part of it is its robust integration with almost every popular IDE.  &lt;h4 class=&quot;c0&quot;&gt;How It Works&lt;/h4&gt;Once you install Zen Coding plug-in to your favorite text-editor, you are ready to go. For example, type the following in your text-editor: &lt;pre class=&quot;html&quot; name=&quot;code&quot;&gt;div#wrapper&amp;gt;div#right+div#left&lt;br /&gt;&lt;/pre&gt;Now, hit CTRL+E and see the magic: &lt;pre class=&quot;html&quot; name=&quot;code&quot;&gt;&amp;lt;div id=&quot;wrapper&quot;&amp;gt;&lt;br /&gt;&amp;lt;div id=&quot;right&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div id=&quot;left&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/pre&gt;The short-codes are so self-explanatory that you hardly need any time to catch how they work. Zen Coding also supports expanding CSS short-codes. You can find a &lt;strong&gt;cheatsheet of all the available short codes&lt;/strong&gt; in the download section. Geeks, you can even write &lt;strong&gt;your own custom short-codes and expansions&lt;/strong&gt;! &lt;br /&gt;&lt;h4 class=&quot;c0&quot;&gt;Supported IDEs&lt;/h4&gt;&lt;a href=&quot;http://code.google.com/p/zen-coding/&quot;&gt;Zen Coding&lt;/a&gt; fully supports a bunch of popular text-editors including &lt;strong&gt;&lt;a href=&quot;http://ad1987.blogspot.com/search?q=notepad++&quot;&gt;Notepad++&lt;/a&gt;, Textmate, Coda, Komodo, Aptana/Eclipse, GEdit, Dreamweaver, Emacs, Vim&lt;/strong&gt;. You can even include Zen Coding features in &amp;lt;textarea&amp;gt; fields in your browser.</content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/2602110431926915733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=2602110431926915733&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/2602110431926915733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/2602110431926915733'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2010/05/code-faster-html-with-zen-coding.html' title='Code Faster HTML with Zen Coding'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-5782226470065189927</id><published>2010-04-22T07:17:00.004+05:30</published><updated>2010-04-23T06:38:19.351+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="Tips"/><title type='text'>How to Add Facebook&#39;s Like Button to Your Site</title><content type='html'>&lt;div style=&quot;clear: both; float: left; text-align: center;&quot;&gt;&lt;img src=&quot;http://docs.google.com/File?id=dc2gvxt4_22d7bkbkg7_b&quot; /&gt; &lt;/div&gt;&lt;a href=&quot;http://ad1987.blogspot.com/search?q=facebook&quot;&gt;Facebook&lt;/a&gt; recently launched the &lt;b&gt;&quot;Like&quot; button feature&lt;/b&gt;, in a bid to gain more access to sites. This new feature enables users to share content with only one single click. The links to the pages will appear on users&#39; profiles and on a friends&#39; timelines. Facebook also changed the word &quot;Fan&quot; (for pages) to &quot;Like&quot;. Facebook Devs say, &lt;b&gt;&quot;the average user clicks &quot;Like&quot; on nine pieces of content each month.&quot;&lt;/b&gt; So &quot;&lt;a href=&quot;http://en.wikipedia.org/wiki/Vox_populi&quot;&gt;vox populi, vox dei&lt;/a&gt;&quot;! Here are some ways you can integrate Facebook&#39;s like button to your blog. &lt;br /&gt;&lt;h4 class=&quot;c0&quot;&gt;For Blogger&lt;/h4&gt;Put the following code where you want to show the button. &lt;br /&gt;&lt;pre class=&quot;html&quot; name=&quot;code&quot;&gt;&amp;lt;iframe allowTransparency=&#39;true&#39; expr:src=&#39;&quot;http://www.facebook.com/plugins/like.php?href=&quot; + data:post.url + &quot;&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&quot;&#39; frameborder=&#39;0&#39; scrolling=&#39;no&#39; style=&#39;border:none; overflow:hidden; width:450px; height:70px&#39;/&amp;gt;&lt;/pre&gt;&lt;h4 class=&quot;c0&quot;&gt;For &#39;Classic&#39; Blogger&lt;/h4&gt;Put the following code where you want to show the button. (&lt;strong&gt;Update:&lt;/strong&gt; This code is updated and works perfectly with Blogger. &lt;em&gt;Thanks, Kristina!&lt;/em&gt;)&lt;br /&gt;&lt;pre class=&quot;html&quot; name=&quot;code&quot;&gt;&amp;lt;iframe src=&quot;http://www.facebook.com/plugins/like.php?href=&amp;lt;$BlogItemPermalinkURL$&amp;gt;&amp;amp;layout=button_count&amp;amp;show_faces=true&amp;amp;width=75&amp;amp;action=like&amp;amp;colorscheme=light&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; allowTransparency=&quot;true&quot; style=&quot;border:none; overflow:hidden; width:75px; height:20px&quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/pre&gt;&lt;h4 class=&quot;c0&quot;&gt;For Wordpress&lt;/h4&gt;Put the following code where you want to show the button.&lt;br /&gt;&lt;pre class=&quot;html&quot; name=&quot;code&quot;&gt;&amp;lt;iframe src=&quot;http://www.facebook.com/plugins/like.php?href=&amp;lt;?php the_permalink(); ?&amp;gt;&amp;amp;layout=button_count&amp;amp;show_faces=true&amp;amp;width=75&amp;amp;action=like&amp;amp;colorscheme=light&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; allowTransparency=&quot;true&quot; style=&quot;border:none; overflow:hidden; width:75px; height:20px&quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/pre&gt;&lt;br /&gt;This is a really awesome feature Facebook has come up with. With a little tweaking, you can easily come up with what Facebook Blog shows in the sidebar (see the screenshot below).&lt;br /&gt;&lt;div class=&quot;tutorial-image&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_FX3RmPElUpc/S8-qBmb5WwI/AAAAAAAAA2U/GodEdhNvRfc/s1600/facebook-blog-popular-posts-like-button.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/_FX3RmPElUpc/S8-qBmb5WwI/AAAAAAAAA2U/GodEdhNvRfc/s1600/facebook-blog-popular-posts-like-button.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;You can read more about the API &lt;a href=&quot;http://developers.facebook.com/docs/reference/plugins/like&quot;&gt;here&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/5782226470065189927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=5782226470065189927&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/5782226470065189927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/5782226470065189927'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2010/04/how-to-add-facebook-like-button-to-your.html' title='How to Add Facebook&amp;#39;s Like Button to Your Site'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_FX3RmPElUpc/S8-qBmb5WwI/AAAAAAAAA2U/GodEdhNvRfc/s72-c/facebook-blog-popular-posts-like-button.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4259479084086531350.post-2544056654247257530</id><published>2010-04-15T05:33:00.001+05:30</published><updated>2010-04-15T05:33:50.693+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="News"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter"/><title type='text'>Google&#39;s Experiment with Twitter: FollowFinder</title><content type='html'>&lt;div style=&quot;text-align: center; margin: 0px 4px 4px 0px; float: left; clear: both&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_NJiJ2hbWd24/Sn9FP3HLPBI/AAAAAAAAAUY/-WLvwxJHoic/s72/google-logo.png&quot;&gt; &lt;/div&gt;&lt;a href=&quot;http://ad1987.blogspot.com/search?q=google&quot;&gt;Google&lt;/a&gt; is testing a new service called FollowFinder &lt;strong&gt;to find similar users on &lt;/strong&gt;&lt;a href=&quot;http://ad1987.blogspot.com/search?q=twitter&quot;&gt;&lt;strong&gt;Twitter&lt;/strong&gt;&lt;/a&gt;. The product is currently in beta — you can try it in Google Labs. After the &lt;a href=&quot;http://googleblog.blogspot.com/2010/04/replay-it-google-search-across-twitter.html&quot;&gt;launch of real-time search results&lt;/a&gt;, this is probably Google&#39;s first experiment with Twitter. FollowFinder runs on Google&#39;s &lt;a href=&quot;http://code.google.com/appengine/&quot;&gt;AppEngine platform&lt;/a&gt;. In their own words,&amp;nbsp; &lt;blockquote&gt;&quot;Follow Finder analyzes public social graph information (following and follower lists) on Twitter to find people you might want to follow.&quot;&lt;/blockquote&gt; &lt;div style=&quot;text-align: center; clear: both&quot; class=&quot;tutorial-image&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_7ZYqYi4xigk/S8YmZNs5CXI/AAAAAAAAF10/eq616058q34/s1600/screenfinal.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_7ZYqYi4xigk/S8YmZNs5CXI/AAAAAAAAF10/eq616058q34/s400/screenfinal.png&quot;&gt;&lt;/a&gt; &lt;/div&gt;&lt;a href=&quot;http://www.followfinder.googlelabs.com/&quot;&gt;FollowFinder&lt;/a&gt; gives you &lt;strong&gt;two lists of people&lt;/strong&gt; — the first one is based on &lt;strong&gt;people you follow&lt;/strong&gt; and the second one is based on the&lt;strong&gt; people who have same followers&lt;/strong&gt; as you have. You don&#39;t have to log-in to Google or Twitter to use FollowFinder — just &lt;strong&gt;enter any Twitter username&lt;/strong&gt; and find similar followers. You can also follow people right from FollowFinder — there&#39;s a button below every Twitter user. It feels more like Twitter than inside Google. Even Twitter’ &lt;a href=&quot;http://blog.twitter.com/2010/02/flying-around-with-hovercards.html&quot;&gt;Hovercards&lt;/a&gt; works inside FollowFinder.&lt;br&gt;Google&#39;s latest offerings have focused more on Twitter than Google Buzz. It is not clear whether these new product launches are an admission that &lt;strong&gt;Google Buzz is a failure&lt;/strong&gt;.    </content><link rel='replies' type='application/atom+xml' href='http://www.technabled.com/feeds/2544056654247257530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4259479084086531350&amp;postID=2544056654247257530&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/2544056654247257530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4259479084086531350/posts/default/2544056654247257530'/><link rel='alternate' type='text/html' href='http://www.technabled.com/2010/04/google-experiment-with-twitter.html' title='Google&amp;#39;s Experiment with Twitter: FollowFinder'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_NJiJ2hbWd24/Sn9FP3HLPBI/AAAAAAAAAUY/-WLvwxJHoic/s72-c/google-logo.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>