<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" gd:etag="W/&quot;CEEDRX4_eip7ImA9WhRUFkw.&quot;"><id>tag:blogger.com,1999:blog-18392152</id><updated>2012-01-26T13:17:54.042-08:00</updated><category term="hack" /><category term="javascript" /><category term="photography" /><category term="twitter" /><category term="feelings" /><category term="Article" /><category term="Review" /><category term="Photos" /><category term="twimr" /><category term="Comments" /><category term="Events" /><category term="Humour" /><category term="yql" /><category term="Future" /><category term="demo" /><title>Markandey's Blog</title><subtitle type="html">/*Welcome! On this blog I have posted my Code, My Hacks, my Reviews, my Opinion, my Life, my Feelings, my Photos, my Interests &amp;amp; everything about me.*/</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.markandey.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.markandey.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>141</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/MarkandeyBlog" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="markandeyblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>17.429925</geo:lat><geo:long>78.423479</geo:long><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/3.0/" /><logo>http://creativecommons.org/images/public/somerights20.gif</logo><entry gd:etag="W/&quot;CEEDRX4-fCp7ImA9WhRUFkw.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-4475663612645732433</id><published>2012-01-26T13:17:00.000-08:00</published><updated>2012-01-26T13:17:54.054-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-26T13:17:54.054-08:00</app:edited><title>Sublime Text Editor (screen cast)</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PIH3wK0yx_caURCg529eavNIQRM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PIH3wK0yx_caURCg529eavNIQRM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PIH3wK0yx_caURCg529eavNIQRM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PIH3wK0yx_caURCg529eavNIQRM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Sublime text is really nice editor . Watch the screenshot to see some awesome features of it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="360" src="http://www.youtube.com/embed/BCFuqf3P_Xc" width="480"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #303030; color: #30ff30; padding: 10px; text-align: center;"&gt;
&lt;style&gt;
.mytable tr,.mytable td{
 border:1px solid #555;

}
.mytable,.mytable tr,.mytable td {
 color: #30ff30;
}
.str{
 font-size:120%;
 font-weight:bold;
}
&lt;/style&gt;
&lt;br /&gt;
&amp;nbsp;&lt;table class="mytable"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style="color: #d0e0e3;"&gt;Open File Command Window&lt;/span&gt;&lt;br /&gt;
(type text for file name and @ for function&lt;br /&gt;
: for line number)
&lt;/td&gt;&lt;td&gt;cmd+p
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style="color: #cfe2f3;"&gt;Open command Window&lt;/span&gt;&lt;br /&gt;
(Package Controll etc.)
&lt;/td&gt;&lt;td&gt;cmd+shift+p


&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class="str"&gt;
&lt;span style="color: #cfe2f3;"&gt;Shortcuts To Remember&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Find:
&lt;/td&gt;&lt;td&gt;cmd+f
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Find Selection (quick find)
&lt;/td&gt;&lt;td&gt;cmd+alt+G
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Swap Line
&lt;/td&gt;&lt;td&gt;ctr+cmd+down
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi Column Selection
&lt;/td&gt;&lt;td&gt;ctrl+shift+up/down
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scope Selection
&lt;/td&gt;&lt;td&gt;cmd+shift+space
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Brackets Select
&lt;/td&gt;&lt;td&gt;ctrl+shit+M
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Indentation Select
&lt;/td&gt;&lt;td&gt;cmd+shift+j
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tag Select
&lt;/td&gt;&lt;td&gt;cmd+shift+a
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Line Select
&lt;/td&gt;&lt;td&gt;cmd+L
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-4475663612645732433?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=-ukD1Ttzolo:PWpRaLuzaSs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=-ukD1Ttzolo:PWpRaLuzaSs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=-ukD1Ttzolo:PWpRaLuzaSs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=-ukD1Ttzolo:PWpRaLuzaSs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=-ukD1Ttzolo:PWpRaLuzaSs:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=-ukD1Ttzolo:PWpRaLuzaSs:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=-ukD1Ttzolo:PWpRaLuzaSs:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=-ukD1Ttzolo:PWpRaLuzaSs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=-ukD1Ttzolo:PWpRaLuzaSs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=-ukD1Ttzolo:PWpRaLuzaSs:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/4475663612645732433/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2012/01/sublime-text-editor-screen-cast.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/4475663612645732433?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/4475663612645732433?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2012/01/sublime-text-editor-screen-cast.html" title="Sublime Text Editor (screen cast)" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/BCFuqf3P_Xc/default.jpg" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CEINQnY5eCp7ImA9WhRVF0U.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-1234969316684291084</id><published>2011-12-25T14:47:00.000-08:00</published><updated>2012-01-16T22:43:13.820-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-16T22:43:13.820-08:00</app:edited><title>Flipboard Like UI on iPhone Safari ( JavaScript + CSS3)</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pKaRgvPRctl5WL0Wr7z7R0hU484/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pKaRgvPRctl5WL0Wr7z7R0hU484/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pKaRgvPRctl5WL0Wr7z7R0hU484/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pKaRgvPRctl5WL0Wr7z7R0hU484/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
I was trying to make Flipboard like UI in CSS3 and JavaScript!! I quickly made it to work on chrome, but it sucked on iPhone, and it took ages for me to make it work.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="color: #cc0000; font-size: large;"&gt;How I made it?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
My approach is simple I used basic CSS3 attribute&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #303030; color: #30ff30; padding: 10px;"&gt;
&lt;pre&gt;-webkit-transform: rotateX(180deg);
-webkit-transition-duration: 2s;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;span style="color: #cc0000; font-size: large;"&gt;Step-1:&lt;/span&gt;&lt;br /&gt;
To achieve complete flip of a page you need to add CSS style of -webkit-transform: rotateX(180deg);&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;a href="http://www.purplegene.com/static/flip0.html" target="_blank"&gt;Demo-0&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Problem with 180 flip is your HTML content goes upside down, to simulate flipboard like animation you can not flip it complete 180 degrees&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #cc0000; font-size: large;"&gt;Step-2:&lt;/span&gt;&lt;br /&gt;
Then i decided to just flip 90 degree and back to zero degree &lt;a href="http://www.purplegene.com/static/flip1.html" target="_blank"&gt;Demo-1&lt;/a&gt;, To fake half page flip i added a mask on it so that one half of animation is not visible &lt;a href="http://www.purplegene.com/static/flip2.html" target="_blank"&gt;Demo-2&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this concept of mine I went ahead and made &lt;b&gt;&lt;a href="http://www.purplegene.com/static/flip3.html" target="_blank"&gt;full page flip demo&lt;/a&gt;&lt;/b&gt; for iPhone here &lt;a href="http://www.purplegene.com/static/flip3.html" target="_blank"&gt;Demo-3&lt;/a&gt;.&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;img height="200/" src="http://chart.apis.google.com/chart?cht=qr&amp;amp;chs=200x200&amp;amp;chl=http%3A//www.purplegene.com/static/flip3.html&amp;amp;chld=H|0" width="200" /&gt;&lt;br /&gt;
Scan to see demo on iPhone&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="360" src="http://www.youtube.com/embed/zoXBFAGwMwg" width="480"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #cc0000;"&gt;&lt;b&gt;Problems on iPhone's Safari&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #cc0000;"&gt;1) z-order problem on webkit, with 3D transform&lt;/span&gt;&lt;br /&gt;
This mask thing could not work properly because In &amp;nbsp;iPhone's safari when a object is &amp;nbsp;3D transformed , z-order does not work properly. &amp;nbsp;I worked around it by making one half of page to transparent.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #cc0000;"&gt;2) Touch Events of iPhone&lt;/span&gt;&lt;br /&gt;
Touch events on iPhone have some serious problem, i encountered weird problem with event propagation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Feel free to ask any&amp;nbsp;question about the Demo,&amp;nbsp;Please let me know if You have better solution to emulate Flipboard UI. &lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;b&gt;&lt;a href="https://github.com/markandey/flipui" target="_blank"&gt;Fork on GitHub&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-1234969316684291084?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=P1cU3mihVMc:xV-lMTgGSgY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=P1cU3mihVMc:xV-lMTgGSgY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=P1cU3mihVMc:xV-lMTgGSgY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=P1cU3mihVMc:xV-lMTgGSgY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=P1cU3mihVMc:xV-lMTgGSgY:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=P1cU3mihVMc:xV-lMTgGSgY:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=P1cU3mihVMc:xV-lMTgGSgY:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=P1cU3mihVMc:xV-lMTgGSgY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=P1cU3mihVMc:xV-lMTgGSgY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=P1cU3mihVMc:xV-lMTgGSgY:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/1234969316684291084/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2011/12/flipboard-like-ui-on-iphone-safari.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/1234969316684291084?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/1234969316684291084?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2011/12/flipboard-like-ui-on-iphone-safari.html" title="Flipboard Like UI on iPhone Safari ( JavaScript + CSS3)" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/zoXBFAGwMwg/default.jpg" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0MCQH05cSp7ImA9WhRXF08.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-9139730515036133024</id><published>2011-12-23T21:00:00.000-08:00</published><updated>2011-12-24T02:11:01.329-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-24T02:11:01.329-08:00</app:edited><title>Curl Request with custom IP and hostname (in php)</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DcaFyupq3Y2hWq5U_JQKAlVgED4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DcaFyupq3Y2hWq5U_JQKAlVgED4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DcaFyupq3Y2hWq5U_JQKAlVgED4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DcaFyupq3Y2hWq5U_JQKAlVgED4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;There could be&amp;nbsp;following&amp;nbsp;instances you might encounter while doing curl!&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;Scenarios&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;If host-name used in RequestURL, is not in public domain.&lt;/li&gt;
&lt;li&gt;If you are trying to avoid load&amp;nbsp;balancer routing,&amp;nbsp;while curling to a local domain.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;If single server serves multiple hostnames, and hostnames are not yet registered.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;Here is what you have to do!!&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Curl with url by IP-Address. (that might return 400 error if server is serving multiple domain.)&lt;/li&gt;
&lt;li&gt;To solve this include host in HTTP header.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;How To do it?&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="color: red;"&gt;In PHP&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="background-attachment: initial; background-clip: initial; background-color: #303030; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;"&gt;
&lt;pre&gt;&lt;span style="color: #66ff66;"&gt;$ipaddress='&lt;/span&gt;&lt;span style="color: #cfe2f3;"&gt;10.14.9.7&lt;/span&gt;&lt;span style="color: #66ff66;"&gt;';
$url=&lt;/span&gt;&lt;span style="color: #cfe2f3;"&gt;'path/to/file?&lt;/span&gt;&lt;span style="color: #66ff66;"&gt;';
$session = curl_init('&lt;/span&gt;&lt;span style="color: #cfe2f3;"&gt;http://&lt;/span&gt;&lt;span style="color: #66ff66;"&gt;'.$ipaddress.$url);
$headers = array("Host: ".$http_host);     
curl_setopt($session, CURLOPT_HTTPHEADER, $headers);
curl_setopt($session, CURLOPT_RETURNTRANSFER,true);
curl_setopt($session, CURLOPT_TIMEOUT, $timeout);
$content = curl_exec($session);
&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color: #66ff66;"&gt;echo $content&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
This how to get local ip and hostname in php 
&lt;br /&gt;
&lt;div class="code" style="background-attachment: initial; background-clip: initial; background-color: #303030; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;"&gt;
&lt;pre&gt;&lt;span style="color: #66ff66;"&gt;$ipaddress=$_SERVER['SERVER_ADDR'];
$hostname=$_SERVER['HTTP_HOST'];&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="color: red;"&gt;In&amp;nbsp;command line&amp;nbsp;curl&lt;/span&gt;&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;div class="code" style="background: #303030; color: #66ff66; padding: 10px;"&gt;
&lt;pre&gt; curl "http://10.14.9.7/path/to/file" -H "Host: myhostname.com"&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-9139730515036133024?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=cgFaQa86tmM:NCUONNHrihM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=cgFaQa86tmM:NCUONNHrihM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=cgFaQa86tmM:NCUONNHrihM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=cgFaQa86tmM:NCUONNHrihM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=cgFaQa86tmM:NCUONNHrihM:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=cgFaQa86tmM:NCUONNHrihM:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=cgFaQa86tmM:NCUONNHrihM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=cgFaQa86tmM:NCUONNHrihM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=cgFaQa86tmM:NCUONNHrihM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=cgFaQa86tmM:NCUONNHrihM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/9139730515036133024/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2011/12/curl-request-with-custom-ip-and.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/9139730515036133024?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/9139730515036133024?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2011/12/curl-request-with-custom-ip-and.html" title="Curl Request with custom IP and hostname (in php)" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DE4ARng5fyp7ImA9WhRXEU0.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-5702261154437021638</id><published>2011-12-16T10:45:00.000-08:00</published><updated>2011-12-16T23:29:07.627-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-16T23:29:07.627-08:00</app:edited><title>jquery plugin to fix color contrast ratio between background and foreground</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pCbnNZj-vjkloh14GNHwQkBu-Qw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pCbnNZj-vjkloh14GNHwQkBu-Qw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pCbnNZj-vjkloh14GNHwQkBu-Qw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pCbnNZj-vjkloh14GNHwQkBu-Qw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
There might me&amp;nbsp;scenario&amp;nbsp;when you are fetching &amp;nbsp;html snippet from external source, what if color specified in the external html is not working on your page due to different background&amp;nbsp;foreground&amp;nbsp;definitions. is there jQuery Plugin exists which can fix contrast ratio so that text is still readable?&lt;br /&gt;
&lt;br /&gt;
Yes this is jQuery plugin which automatically analyses the contrast ratio between foreground and background and corrects automatically to make it readable.&lt;br /&gt;
&lt;br /&gt;
Its very simple to use. include &amp;nbsp;javascript &lt;a href="http://www.purplegene.com/js/fixColors.js"&gt;from here&lt;/a&gt;&amp;nbsp;and call function fixColors.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: #303030; color: #66ff66; padding: 10px;"&gt;
&lt;pre&gt;&amp;lt;script src="http://www.purplegene.com/js/fixColors.js"&amp;gt;
&amp;lt;/script&amp;gt;
&amp;lt;scrip&amp;gt;
$('div').fixColors();
&amp;lt;/scrip&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;b&gt;&lt;a href="http://www.purplegene.com/static/contrast.html" style="background-color: white;"&gt;&lt;span style="color: blue; font-size: large;"&gt;Here is plugin page &lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: -webkit-auto;"&gt;
Core logic of this code exists in function&amp;nbsp;&lt;span style="text-align: -webkit-auto;"&gt;&lt;span style="white-space: pre-wrap;"&gt;getColorInfo which returns various information about any color, like brightness of color and maximum color contrasting color, etc. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style="background-attachment: initial; background-clip: initial; background-color: #303030; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;"&gt;
&lt;pre&gt;&lt;span style="color: #66ff66;"&gt;function &lt;/span&gt;&lt;span style="color: magenta;"&gt;getColorInfo&lt;/span&gt;&lt;span style="color: #66ff66;"&gt;(strColor){
      &amp;nbsp; &lt;/span&gt;&lt;span style="color: #fff2cc;"&gt;//regEx to parse rgb(10,10,10)&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color: #66ff66;"&gt;        var match=strColor.match(/&lt;/span&gt;&lt;span style="color: #cfe2f3;"&gt;rgba[ \t]*\([ \t]*([0-9.]+)[ \t]*,[ \t]*([0-9.]+)[ \t]*,[ \t]*([0-9.]+)[ \t]*,[ \t]*([0-9.]+)[ \t]*\)&lt;/span&gt;&lt;span style="color: #66ff66;"&gt;/);
        var isAlpha=true;
        if(match===null){
            match=strColor.match(/&lt;/span&gt;&lt;span style="color: #cfe2f3;"&gt;rgb[ \t]*\([ \t]*([0-9.]+)[ \t]*,[ \t]*([0-9.]+)[ \t]*,[ \t]*([0-9.]+)[ \t]*\)&lt;/span&gt;&lt;span style="color: #66ff66;"&gt;/);
            isAlpha=false;
        }
        var r = match[1]*1, g = match[2]*1,b = match[3]*1, a = match[4]*1;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color: #66ff66;"&gt;        //
        var brightness = (r * 299 + g * 587 + b * 114) / 1000, cb = 20;
        if (brightness &amp;lt; 127) {
            cb = 235;
        }
        isTransparent=(isAlpha)&amp;amp;&amp;amp;(a===0);
        var rgbOnly='rgb('+r+','+g+','+b+')';
        var maxContrast = "rgb(" + cb+"," +cb+"," +cb+")";
        return {'r':r,'g':g,'b':b,'a':a,  
            'brightness':brightness,
            'maxContrast':maxContrast,
            'rgb':rgbOnly,
            'isAlpha':isAlpha,
            'isTransparent':isTransparent
        };
    }
&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;span style="font-size: large;"&gt;&lt;a href="https://github.com/markandey/fixColors.js"&gt;fork github Repo&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-5702261154437021638?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=hvW7Bj-fdmI:r0ZLkiwUuJM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=hvW7Bj-fdmI:r0ZLkiwUuJM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=hvW7Bj-fdmI:r0ZLkiwUuJM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=hvW7Bj-fdmI:r0ZLkiwUuJM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=hvW7Bj-fdmI:r0ZLkiwUuJM:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=hvW7Bj-fdmI:r0ZLkiwUuJM:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=hvW7Bj-fdmI:r0ZLkiwUuJM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=hvW7Bj-fdmI:r0ZLkiwUuJM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=hvW7Bj-fdmI:r0ZLkiwUuJM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=hvW7Bj-fdmI:r0ZLkiwUuJM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/5702261154437021638/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2011/12/jquery-plugin-to-fix-color-contrast.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/5702261154437021638?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/5702261154437021638?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2011/12/jquery-plugin-to-fix-color-contrast.html" title="jquery plugin to fix color contrast ratio between background and foreground" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkUEQ3cyeSp7ImA9WhRSE0Q.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-3974190964254836327</id><published>2011-11-11T06:14:00.001-08:00</published><updated>2011-11-15T15:03:22.991-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-15T15:03:22.991-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Article" /><category scheme="http://www.blogger.com/atom/ns#" term="hack" /><title>This is how to fake Siri on chrome</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JOnciIz2UHCqwt61OxUOj4JUm38/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JOnciIz2UHCqwt61OxUOj4JUm38/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JOnciIz2UHCqwt61OxUOj4JUm38/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JOnciIz2UHCqwt61OxUOj4JUm38/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;When Apple declared Siri , everyone knew that siri is not magical, &amp;nbsp;all technology involved in siri is already present. Here is how you can make your own.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://bit.ly/sirichrome" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="287" src="http://4.bp.blogspot.com/-32fQugVUpFs/TsEwIs9ltEI/AAAAAAAAHLU/LNp6XlcWabA/s400/bom.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Voice Recognition&lt;/b&gt;&lt;br /&gt;
Voice input is a &lt;a href="http://www.w3.org/2005/Incubator/htmlspeech/2010/10/google-api-draft.html"&gt;proposed HTML5 feature&lt;/a&gt; by Google. Its already&amp;nbsp;experimentally&amp;nbsp;available in latest versions of chrome.&lt;br /&gt;
&lt;div style="background: #303030; color: #38c01d; margin: 15px; padding: 15px;"&gt;
&lt;pre&gt;&amp;lt;input id="speech" type="text" x-webkit-speech onspeechchange="startSearch"&amp;gt;

&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Intelligence with Wolfram Alpha&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://www.wolframalpha.com/"&gt;Wolfram Alpha&lt;/a&gt; is one of the most awesome search engine (or Computational Knowledge Engine in their terms). They have open API to make your own app. &lt;br /&gt;
&lt;div style="background: #303030; color: #38c01d; margin: 15px; padding: 15px;"&gt;
&lt;pre&gt;"http://api.wolframalpha.com/v2/query?"+q+"&amp;amp;appid="+key;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Text-To-Speech&lt;/b&gt;&lt;br /&gt;
&lt;span style="background-color: transparent;"&gt;Recently chrome brought up the&lt;/span&gt;&lt;a href="http://code.google.com/chrome/extensions/tts.html" style="background-color: transparent;"&gt; tts support in its chrome extension&lt;/a&gt;&lt;span style="background-color: transparent;"&gt;, which can be used to give voice to you Siri hack.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;div style="background: #303030; color: #38c01d; margin: 15px; padding: 15px;"&gt;
&lt;pre&gt;chrome.tts.speak(
    utterance,
    options,
    function() {
      if (chrome.extension.lastError) {
        console.log('Error: ' + chrome.extension.lastError.message);
      }
    });
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;b&gt;&lt;a href="https://chrome.google.com/webstore/detail/ggdpdjbjioohmgdhmegcbnodpdcamhpj" target="_blank"&gt;Demo&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-3974190964254836327?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=eckQ4lLqVbc:A8uUKDg6qx8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=eckQ4lLqVbc:A8uUKDg6qx8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=eckQ4lLqVbc:A8uUKDg6qx8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=eckQ4lLqVbc:A8uUKDg6qx8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=eckQ4lLqVbc:A8uUKDg6qx8:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=eckQ4lLqVbc:A8uUKDg6qx8:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=eckQ4lLqVbc:A8uUKDg6qx8:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=eckQ4lLqVbc:A8uUKDg6qx8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=eckQ4lLqVbc:A8uUKDg6qx8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=eckQ4lLqVbc:A8uUKDg6qx8:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/3974190964254836327/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2011/11/this-is-how-to-fake-siri-on-chrome.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/3974190964254836327?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/3974190964254836327?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2011/11/this-is-how-to-fake-siri-on-chrome.html" title="This is how to fake Siri on chrome" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-32fQugVUpFs/TsEwIs9ltEI/AAAAAAAAHLU/LNp6XlcWabA/s72-c/bom.png" height="72" width="72" /><thr:total>3</thr:total></entry><entry gd:etag="W/&quot;A04AQHo8eCp7ImA9WhRSEU0.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-5477566719525182798</id><published>2011-10-17T21:43:00.000-07:00</published><updated>2011-11-12T06:59:01.470-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T06:59:01.470-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Article" /><title>Simple two (or multi) column layout that works</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/otWVvH3RcgIQFo-vGswtQw5RCag/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/otWVvH3RcgIQFo-vGswtQw5RCag/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/otWVvH3RcgIQFo-vGswtQw5RCag/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/otWVvH3RcgIQFo-vGswtQw5RCag/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Hi There!&lt;br /&gt;
&lt;br /&gt;
2 Column layout is very&amp;nbsp;painful&amp;nbsp;does not work often. Here is a very simple 2 colum layout that works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: #303030; color: #38c01d; margin: 15px; padding: 15px;"&gt;
&lt;pre&gt;&amp;lt;style&amp;gt;
           .grid{
  margin:0px;
  padding:0px;
  
  
     }
     .grid:after{
        content: "\0020";
        display: block;
        height: 0;
        clear: both;
        visibility: hidden;
        overflow:hidden;
     }
     .left{
  float:left;
  margin:0px;
  padding:0px;
  overflow:hidden;
  width:49%;
  
     }
     .right{
  float:right;
  margin:0px;
  padding:0px;
  overflow:hidden;
  width:49%;
     }
&amp;lt;/style&amp;gt;
&amp;lt;div class="grid"&amp;gt;
      &amp;lt;div class="left"&amp;gt;
   Left Stuff Goes Here 
      &amp;lt;/div&amp;gt;
      &amp;lt;div class="right"&amp;gt;
   Right Stuff Goes Here 
      &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;
To make 3 or more column layout follow the same strategy , just distribute the width of children (e.g. left and right) and keep adding them, all the children will float left and last child will float right. 

Such multicolumn layout can be well nested to achieve complex grids .&lt;br /&gt;
&amp;nbsp;Thanks,&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-5477566719525182798?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=B9ISNytQjnY:nLZSbvf4aN0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=B9ISNytQjnY:nLZSbvf4aN0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=B9ISNytQjnY:nLZSbvf4aN0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=B9ISNytQjnY:nLZSbvf4aN0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=B9ISNytQjnY:nLZSbvf4aN0:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=B9ISNytQjnY:nLZSbvf4aN0:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=B9ISNytQjnY:nLZSbvf4aN0:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=B9ISNytQjnY:nLZSbvf4aN0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=B9ISNytQjnY:nLZSbvf4aN0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=B9ISNytQjnY:nLZSbvf4aN0:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/5477566719525182798/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2011/10/simple-two-or-multi-column-layout-that.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/5477566719525182798?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/5477566719525182798?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2011/10/simple-two-or-multi-column-layout-that.html" title="Simple two (or multi) column layout that works" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;A04FRHo7fCp7ImA9WhRSEU0.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-6459511389614556134</id><published>2011-10-12T12:52:00.000-07:00</published><updated>2011-11-12T06:58:35.404-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T06:58:35.404-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Article" /><category scheme="http://www.blogger.com/atom/ns#" term="hack" /><title>Design of cross domain POST API in Javascript</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mFQva5vwlerC72PcT8tiuIbG9Co/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mFQva5vwlerC72PcT8tiuIbG9Co/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mFQva5vwlerC72PcT8tiuIbG9Co/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mFQva5vwlerC72PcT8tiuIbG9Co/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Hi There,&lt;br /&gt;
&lt;br /&gt;
As all of you know that cross domain POST is not allowed in javascript. Many APIs&amp;nbsp;requires&amp;nbsp;post method, such APIs become hard to use with javascript. We can not move back to GET method&amp;nbsp;because&amp;nbsp;the input set is limited( restricted by length or URL) on GET. &amp;nbsp;So in this article i am suggeting a Post JSON API design which should be followed for making API javascript friendly.&lt;br /&gt;
&lt;br /&gt;
Lets say i am designing a API which requires "text" &amp;nbsp;as input in POST, and returns an JSON response.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;API URL: &lt;i&gt;&lt;span class="Apple-style-span" style="color: #cc0000;"&gt;http://api.xyz.com/myapi&lt;/span&gt;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/i&gt;API Input: &amp;nbsp;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #cc0000;"&gt;text as POST field.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;API Output: &lt;span class="Apple-style-span" style="color: #cc0000;"&gt;JSON object.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;1) &lt;b&gt;&lt;i&gt;How client can invoke the API?&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;of-course&amp;nbsp;cross domain HTTPXMLrequest is not allowed&lt;br /&gt;
Another popular technique of &amp;nbsp;injecting script tag with callback to get cross domain JSON (jsonp) can not be used becuase it can only do GET request. so how to do a POST to differnet domain?&amp;nbsp;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #cc0000;"&gt;Solution is you can use iframes&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;.&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Create an iframe in javascript&lt;/li&gt;
&lt;li&gt;Create a form whose method is POST, action is API URL and target is the iframe.&lt;/li&gt;
&lt;li&gt;Create hidden input as "text" and assigned the value whatever you want.&lt;/li&gt;
&lt;li&gt;Submitted the form.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;br /&gt;
Here is the code&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="background-attachment: initial; background-clip: initial; background-color: #303030; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; margin-bottom: 15px; margin-left: 15px; margin-right: 15px; margin-top: 15px; padding-bottom: 15px; padding-left: 15px; padding-right: 15px; padding-top: 15px;"&gt;
&lt;pre&gt;&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;function crossDomainPost(url, text) {
    &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #cfe2f3;"&gt;// Add the iframe with a unique name&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;
    var iframe = document.createElement("iframe");
    var uniqueNameOfFrame = "sum";
    document.body.appendChild(iframe);
    iframe.style.display = "none";
    iframe.contentWindow.name = uniqueNameOfFrame;

    &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #cfe2f3;"&gt;// construct a form with hidden inputs, targeting the iframe&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;
    var form = document.createElement("form");
    form.target = uniqueNameOfFrame;
    form.action = url;
    form.method = "POST";

    &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #cfe2f3;"&gt;// repeat for each parameter&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;
    var input = document.createElement("input");
    input.type = "hidden";
    input.name = "text";
    input.value = text;
    form.appendChild(input);
    document.body.appendChild(form);

    form.submit();
}
&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;2) How to read the output back?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
Now since form is submitted in iframe, whatever is happening in iframe is not accesible to main window and vise versa becuase these two iframes are not from the same domain. So this is where you should follow my proposed design,&lt;br /&gt;
The API maker will return an HTML page with script block in which it sends &lt;b&gt;message&lt;/b&gt; to parent window.&lt;br /&gt;
e. g. Output of PAI &amp;nbsp;goes like this.&lt;br /&gt;
&lt;div style="background: #303030; color: #38c01d; margin: 15px; padding: 15px;"&gt;
&lt;pre&gt;&amp;lt;html&amp;gt;
&amp;lt;script&amp;gt;
var json={your-data}
window.parent.postMessage(json,"*");
&amp;lt;/script&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
This is how client will read in his javscript code&lt;br /&gt;
&lt;div style="background: #303030; color: #38c01d; margin: 15px; padding: 15px;"&gt;
&lt;pre&gt;window.addEventListener("message", function (event) {
      my_callbac(event.data);
}, false);
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;Note: message posted is HTML5 API may not be available in many browsers.&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;Thanks and enjoy!!!!!&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-6459511389614556134?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=eos_hnN_Owc:IlRZ0_r5MuE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=eos_hnN_Owc:IlRZ0_r5MuE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=eos_hnN_Owc:IlRZ0_r5MuE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=eos_hnN_Owc:IlRZ0_r5MuE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=eos_hnN_Owc:IlRZ0_r5MuE:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=eos_hnN_Owc:IlRZ0_r5MuE:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=eos_hnN_Owc:IlRZ0_r5MuE:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=eos_hnN_Owc:IlRZ0_r5MuE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=eos_hnN_Owc:IlRZ0_r5MuE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=eos_hnN_Owc:IlRZ0_r5MuE:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/6459511389614556134/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2011/10/design-of-cross-domain-post-api-in.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/6459511389614556134?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/6459511389614556134?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2011/10/design-of-cross-domain-post-api-in.html" title="Design of cross domain POST API in Javascript" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;A04DQXg7cCp7ImA9WhRSEU0.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-532894418240426595</id><published>2011-10-06T06:41:00.001-07:00</published><updated>2011-11-12T06:59:30.608-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T06:59:30.608-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Article" /><title>iSad</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aFFpzqXdVWHX5BdyvaCb15fRbJo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aFFpzqXdVWHX5BdyvaCb15fRbJo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/aFFpzqXdVWHX5BdyvaCb15fRbJo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aFFpzqXdVWHX5BdyvaCb15fRbJo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;As you know that Steve Jobs is no more with us&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&amp;nbsp;To to express your &amp;nbsp;condolences please change your DP to this photo (Next 5 days...)&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Thanks, and share this message!!!!&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-0QtgznIjLa0/To2wBpLbaBI/AAAAAAAAHKk/ze6igEk4SuI/s1600/steve+jobs+1955-2011.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="457" src="http://1.bp.blogspot.com/-0QtgznIjLa0/To2wBpLbaBI/AAAAAAAAHKk/ze6igEk4SuI/s640/steve+jobs+1955-2011.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-532894418240426595?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=j0xVs-nZ4uA:r9L-HQoO-wc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=j0xVs-nZ4uA:r9L-HQoO-wc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=j0xVs-nZ4uA:r9L-HQoO-wc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=j0xVs-nZ4uA:r9L-HQoO-wc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=j0xVs-nZ4uA:r9L-HQoO-wc:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=j0xVs-nZ4uA:r9L-HQoO-wc:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=j0xVs-nZ4uA:r9L-HQoO-wc:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=j0xVs-nZ4uA:r9L-HQoO-wc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=j0xVs-nZ4uA:r9L-HQoO-wc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=j0xVs-nZ4uA:r9L-HQoO-wc:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/532894418240426595/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2011/10/isad.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/532894418240426595?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/532894418240426595?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2011/10/isad.html" title="iSad" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-0QtgznIjLa0/To2wBpLbaBI/AAAAAAAAHKk/ze6igEk4SuI/s72-c/steve+jobs+1955-2011.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A04DQXg5eCp7ImA9WhRSEU0.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-8833586660768060105</id><published>2011-10-03T09:30:00.000-07:00</published><updated>2011-11-12T06:59:30.620-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T06:59:30.620-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Article" /><title>How complex is to remove javascript from HTML? (to prevent XSS)</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GKTyMUk9Cxp2N-Y7acunUPuhFd0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GKTyMUk9Cxp2N-Y7acunUPuhFd0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GKTyMUk9Cxp2N-Y7acunUPuhFd0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GKTyMUk9Cxp2N-Y7acunUPuhFd0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Hi,&lt;br /&gt;
There are few situations where you want your users to enter plain HTML but you do not want&amp;nbsp;them&amp;nbsp;to execute javascript. Problem seems very simple but its very complex.&lt;br /&gt;
&lt;br /&gt;
In this article I will let you know the complexity of doing this rather proposing any solution.&lt;br /&gt;
&lt;br /&gt;
Lets start with the ways javascript can appear in an HTML document. Here are few things &amp;nbsp;I am listing.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;1. In script tag&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
javascript typically appears in an script tag e.g&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;lt;script src="http://www.someurl.com"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;alert('hi javascript')&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;2. In event attributes&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
Next simple way in which javascript can appear in your HTML is as event handler.&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;lt;div onclick="alert('hi javascript')"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Though &lt;a href="http://www.w3.org/TR/REC-html40/interact/scripts.html#h-18.2.4"&gt;w3c document describes following&lt;/a&gt; attributes as intrinsic events but depending on browser implementation it might&amp;nbsp;change&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;i&gt;onunload&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp; onclick&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp; ondblclick&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp; onmousedown&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp; onmouseup&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp; onmouseover&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp; onmousemove&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp; onmouseout&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp; onfocus&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp; onblur&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp; onkeypress&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp; onkeydown&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp; onkeyup&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp; onsubmit&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp; onreset&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp; onselect&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp; onchange&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp; onerror &amp;lt;-- img onerror event&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;3. In&amp;nbsp;anchor&amp;nbsp;&lt;i&gt;href&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;lt;a href="javascript:alert('hi javascript')"&amp;gt;Click Me&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;4. &amp;nbsp;In&amp;nbsp;&lt;i&gt;href&lt;/i&gt; and &lt;i&gt;src&lt;/i&gt; tag of some media tags&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
In some of the older browsers (e.g. IE6) img src tag can contain javascript.&lt;br /&gt;
e.g.&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;lt;img src="javascript:alert('hi javascript')"/&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
this situation might also&amp;nbsp;appear&amp;nbsp;in various ways as&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;lt;TABLE background="javascript:alert('hi')" or&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;lt;LINK REL="stylesheet" href="javascript:alert('hi');"&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;lt;BGSOUND SRC="javascript:alert('hi javascript');"&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;5. &lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;In CSS attributes&lt;/span&gt;&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;html{&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;nbsp;background: #28d expression("alert('hi javascript')");&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
this can appear in any place where CSS can appear i.e. external CSS, style block or inline style attribute.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;6. base64 encoded svg can contain script tag&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;lt;EMBED SRC="data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs aW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAw IiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIlh TUyIpOzwvc2NyaXB0Pjwvc3ZnPg==" type="image/svg+xml" AllowScriptAccess="always"&amp;gt;&amp;lt;/EMBED&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;7. Encoded Scenario&amp;nbsp;of any of the above case.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Any of the above case may or may appear as encoded format e.g.&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;lt;a href="javascript:alert('hi javascript');"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;/span&gt;is same as&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;lt;a href="&amp;amp;#x6A;&amp;amp;#x61;&amp;amp;#x76;&amp;amp;#x61;&amp;amp;#x73;&amp;amp;#x63;&amp;amp;#x72;&amp;amp;#x69;&amp;amp;#x70;&amp;amp;#x74;&amp;amp;#x3A;&amp;amp;#x61;&amp;amp;#x6C;&amp;amp;#x65;&amp;amp;#x72;&amp;amp;#x74;&amp;amp;#x28;&amp;amp;#x27;&amp;amp;#x68;&amp;amp;#x69;&amp;amp;#x20;&amp;amp;#x6A;&amp;amp;#x61;&amp;amp;#x76;&amp;amp;#x61;&amp;amp;#x73;&amp;amp;#x63;&amp;amp;#x72;&amp;amp;#x69;&amp;amp;#x70;&amp;amp;#x74;&amp;amp;#x27;&amp;amp;#x29;&amp;amp;#x3B;"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Important Note:&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
1) code might appear in upper case or lower are e.g&amp;nbsp;"&lt;b&gt;javascript:&lt;/b&gt;" can be writtent as &lt;b&gt;JaVaScript:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
2)&amp;nbsp;&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;lt;script&amp;gt;&lt;/span&gt; tag can appear as multiline&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;lt;s&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;c&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;r&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;i&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;p&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;t&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
3) since html attribute values may or may not be wrapped under quotes&lt;br /&gt;
url like&amp;nbsp;&lt;span class="Apple-style-span" style="color: red;"&gt;http://www.yahoo.com+&amp;nbsp;onmouseover&amp;nbsp;="alert('hi')"&lt;/span&gt; might generate code like this&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;lt;a href=http://www.yahoo.com onmouseover="alert('hi')"/&amp;gt;&lt;/span&gt; &amp;nbsp;which is wrong!!!!!!!!!&lt;br /&gt;
&lt;br /&gt;
4) Usefull Links&lt;br /&gt;
&lt;a href="http://coding.smashingmagazine.com/2011/01/11/keeping-web-users-safe-by-sanitizing-input-data/"&gt;http://coding.smashingmagazine.com/2011/01/11/keeping-web-users-safe-by-sanitizing-input-data/&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://ha.ckers.org/xss.html"&gt;http://ha.ckers.org/xss.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-8833586660768060105?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=qN5elK4QI0s:Yt2L-49ox8w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=qN5elK4QI0s:Yt2L-49ox8w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=qN5elK4QI0s:Yt2L-49ox8w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=qN5elK4QI0s:Yt2L-49ox8w:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=qN5elK4QI0s:Yt2L-49ox8w:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=qN5elK4QI0s:Yt2L-49ox8w:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=qN5elK4QI0s:Yt2L-49ox8w:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=qN5elK4QI0s:Yt2L-49ox8w:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=qN5elK4QI0s:Yt2L-49ox8w:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=qN5elK4QI0s:Yt2L-49ox8w:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/8833586660768060105/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2011/10/how-complex-is-to-remove-javascript.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/8833586660768060105?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/8833586660768060105?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2011/10/how-complex-is-to-remove-javascript.html" title="How complex is to remove javascript from HTML? (to prevent XSS)" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A04DQXg6eip7ImA9WhRSEU0.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-5636108703398706501</id><published>2011-07-30T05:08:00.000-07:00</published><updated>2011-11-12T06:59:30.612-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T06:59:30.612-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Article" /><title>How to get user location in javascript (YUI)</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_GpzJBnjCP5OYSj4k-cljhIrWb4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_GpzJBnjCP5OYSj4k-cljhIrWb4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_GpzJBnjCP5OYSj4k-cljhIrWb4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_GpzJBnjCP5OYSj4k-cljhIrWb4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Hey Guys ,&lt;br /&gt;
Here is a simple code to get User's Location (lat and lan) in javascript using &lt;a href="http://yuilibrary.com/"&gt;YUI&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Why Not to use HTML5?&lt;/b&gt;&lt;br /&gt;
Html5 is not yet&amp;nbsp;supported&amp;nbsp;by many browsers and have no fall back. &lt;a href="http://yuilibrary.com/"&gt;YUI&lt;/a&gt; implementation falls back up to ip based location.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: #303030; color: #38c01d; margin: 15px; padding: 15px;"&gt;
&amp;lt;html&amp;gt; &lt;br/&gt;&amp;lt;head&amp;gt; &lt;br/&gt;&amp;lt;meta http-equiv=&amp;quot;content-type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt; &lt;br/&gt;&amp;lt;title&amp;gt;Location using YUI (with fallback)&amp;lt;/title&amp;gt; &lt;br/&gt;&amp;lt;script src=&amp;quot;http://yui.yahooapis.com/3.4.0pr3/build/yui/yui-min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt; &lt;br/&gt;&amp;lt;script&amp;gt; &lt;br/&gt;YUI({gallery: 'gallery-2011.05.12-13-26'}).use('gallery-geo', function(Y) {&lt;br/&gt;Y.Geo.getCurrentPosition(function(response){&lt;br/&gt;if (response.success){&lt;br/&gt;console.log(response.coords.latitude);&lt;br/&gt;console.log(response.coords.longitude);&lt;br/&gt;var e=document.getElementById('geolocation');&lt;br/&gt;e.innerHTML=&amp;quot;Your Location :&amp;quot;+response.coords.latitude+&amp;quot;,&amp;quot;+response.coords.longitude;&lt;br/&gt;}&lt;br/&gt;});&lt;br/&gt;});&lt;br/&gt;&amp;lt;/script&amp;gt; &lt;br/&gt;&amp;lt;body&amp;gt; &lt;br/&gt;&amp;lt;div id=&amp;quot;geolocation&amp;quot; &amp;gt; &lt;br/&gt;&amp;lt;/div&amp;gt; &lt;br/&gt;&amp;lt;/body&amp;gt; &lt;br/&gt;&amp;lt;/head&amp;gt; &lt;br/&gt;&amp;lt;/html&amp;gt;
&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;br /&gt;
&lt;b&gt;&lt;a href="http://www.purplegene.com/static/geoyui.html"&gt;Demo&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: left;"&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;Note: If you host the file locally, e.g. file:// , it might not work due to security issues.&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-5636108703398706501?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=mXYN4tpLSDI:aKkn-9M6hVw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=mXYN4tpLSDI:aKkn-9M6hVw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=mXYN4tpLSDI:aKkn-9M6hVw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=mXYN4tpLSDI:aKkn-9M6hVw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=mXYN4tpLSDI:aKkn-9M6hVw:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=mXYN4tpLSDI:aKkn-9M6hVw:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=mXYN4tpLSDI:aKkn-9M6hVw:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=mXYN4tpLSDI:aKkn-9M6hVw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=mXYN4tpLSDI:aKkn-9M6hVw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=mXYN4tpLSDI:aKkn-9M6hVw:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/5636108703398706501/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2011/07/how-to-get-user-location-using-html-yui.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/5636108703398706501?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/5636108703398706501?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2011/07/how-to-get-user-location-using-html-yui.html" title="How to get user location in javascript (YUI)" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A04DQXg7fSp7ImA9WhRSEU0.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-1446016294526450495</id><published>2011-07-18T14:39:00.000-07:00</published><updated>2011-11-12T06:59:30.605-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T06:59:30.605-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Article" /><title>How to play youtube video in loop ???</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EIRAVGJAFKM10b3zZbIayP_2-Po/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EIRAVGJAFKM10b3zZbIayP_2-Po/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EIRAVGJAFKM10b3zZbIayP_2-Po/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EIRAVGJAFKM10b3zZbIayP_2-Po/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Its very simple!&lt;br /&gt;
&lt;br /&gt;
1) Click on "watch later" button to add the video in "watch later" playlist.&lt;br /&gt;
2) Play this playlist.&lt;br /&gt;
3) select autoplay option (remove other videos from the list if you want)&lt;br /&gt;
&lt;br /&gt;
congratulation you just created a loop.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;div style="text-align: center;"&gt;
Here is Video Demo, how to do that&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="349" src="http://www.youtube.com/embed/hA25Z56GEJ8" width="425"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-1446016294526450495?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=O1sJosYAleQ:ckPzN9IlYhE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=O1sJosYAleQ:ckPzN9IlYhE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=O1sJosYAleQ:ckPzN9IlYhE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=O1sJosYAleQ:ckPzN9IlYhE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=O1sJosYAleQ:ckPzN9IlYhE:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=O1sJosYAleQ:ckPzN9IlYhE:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=O1sJosYAleQ:ckPzN9IlYhE:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=O1sJosYAleQ:ckPzN9IlYhE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=O1sJosYAleQ:ckPzN9IlYhE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=O1sJosYAleQ:ckPzN9IlYhE:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/1446016294526450495/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2011/07/how-to-play-youtube-video-in-loop.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/1446016294526450495?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/1446016294526450495?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2011/07/how-to-play-youtube-video-in-loop.html" title="How to play youtube video in loop ???" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/hA25Z56GEJ8/default.jpg" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUcARnc4eip7ImA9WhdXEEU.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-7461082654240659138</id><published>2011-06-23T02:41:00.000-07:00</published><updated>2011-08-23T00:04:07.932-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-23T00:04:07.932-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Article" /><title>Yahoo! Open Hack India is Here</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/y4E5Ud0XeqostiuJwQwLBk8DAyU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y4E5Ud0XeqostiuJwQwLBk8DAyU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/y4E5Ud0XeqostiuJwQwLBk8DAyU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y4E5Ud0XeqostiuJwQwLBk8DAyU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Hi ,&lt;br /&gt;
India's most awesome developer event '&lt;a href="http://developer.yahoo.com/hackday/"&gt;Yahoo Open Hack Day&lt;/a&gt;' is back. &amp;nbsp;Here is few tips if you are planning to attend.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Text Editors&lt;/b&gt;&lt;br /&gt;
On HackDay you need to come up with the hack in just 24 hours of time, Which is short time, so make yourself ready with right tools.&lt;br /&gt;
If you already have your&amp;nbsp;favorite&amp;nbsp;text editors make sure that they are &amp;nbsp;javascript/HTML/CSS ready. If you Do not have one I will&amp;nbsp;recommend&amp;nbsp;you to use Komodo Edit (on all platforms). Komodo has&amp;nbsp;built-in&amp;nbsp;support for web&amp;nbsp;languages&amp;nbsp;like HTML, Javascript and CSS. &amp;nbsp;I will strongly recommend you to use Komodo but you have some more options here&lt;br /&gt;
Notepad++( for windows).&lt;br /&gt;
Textmate&amp;nbsp;on Mac is fair deal.&lt;br /&gt;
Vi (try installing&amp;nbsp;&lt;a href="http://www.vim.org/scripts/script.php?script_id=2540"&gt;snipmate&lt;/a&gt;&amp;nbsp;and other useful vi plugins) &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Brush up on Javascript HTML and CSS&lt;/b&gt;&lt;br /&gt;
Though your are free to hack in any language possible, I will&amp;nbsp;recommend&amp;nbsp;you to learn javascript(CSS and &amp;amp; HTML). Yahoo hack day is the best place to get your hands dirty on these languages. Javascript is most popular language in the world already and it&amp;nbsp;spreading&amp;nbsp;on all possible computing device. &amp;nbsp;So better you make up your mind to learn them. Era of things like GWT and ASP.net (where you bypass these languages to get the things done) is Over.&lt;br /&gt;
Watch&amp;nbsp;&lt;a href="http://www.youtube.com/watch?v=NLqswS6r-e0"&gt;this video&lt;/a&gt;&amp;nbsp;to know how to start writing and executing javascript. Here is&amp;nbsp;&lt;a href="http://www.youtube.com/watch?v=hQVTIJBZook"&gt;awesome video&lt;/a&gt;&amp;nbsp;to know deeper in javascript. This is from Doug Crockford, based on his book "Javascript Good parts" available for&amp;nbsp;&lt;a href="http://www.amazon.com/JavaScript-The-Good-Parts-ebook/dp/B0026OR2ZY/ref=tmm_kin_title_0?ie=UTF8&amp;amp;m=AH9CGK6QR37LL"&gt;Kindle&lt;/a&gt;. (do you know kindle is available for PC?).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;YQL / YUI3 / jQuery&lt;/b&gt;&lt;br /&gt;
YQL is best things ever invented after AJAX and JSON. YQL has tables for&amp;nbsp;almost&amp;nbsp; all popular ajax/REST APIs on web. Just spend a lil bit of time to understand YQL and I will promise you will have easy time on hack day.&lt;br /&gt;
YQL is awesome for doing &lt;a href="http://www.markandey.com/2010/10/yql-page-scraping-yes-anyone-can-do-it.html"&gt;page scraping&lt;/a&gt;. You can also &lt;a href="http://www.markandey.com/2010/07/chrome-extension-to-do-yql-page.html"&gt;try my hack&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://yuilibrary.com/"&gt;YUI3&lt;/a&gt; is very&amp;nbsp;professional&amp;nbsp;javascript&amp;nbsp;library&amp;nbsp;to work with, but since this is going to be a&amp;nbsp;hack-day, i will&amp;nbsp;personally&amp;nbsp;recommend&amp;nbsp;you to use jQuery for quick win.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Web Browser (+firebug)&lt;/b&gt;&lt;br /&gt;
firefox (with&amp;nbsp;&lt;a href="http://getfirebug.com/"&gt;firebug&lt;/a&gt;/&lt;a href="http://developer.yahoo.com/yslow/"&gt;Yslow&lt;/a&gt;&amp;nbsp;plugin) is very popular browser&amp;nbsp;among&amp;nbsp;web developers. You can use chrome as well. The whole idea behind having firebug is you will be able to debug your code right in the browser. Chrome developer tool is not bad, &amp;nbsp;you can &lt;a href="http://www.youtube.com/watch?v=7cqh7MGLgaM"&gt;watch this video&lt;/a&gt; to get&amp;nbsp;familiar about it.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Other things&lt;/b&gt;&lt;br /&gt;
Get a &amp;nbsp;Camera, there will several moments to capture.&lt;br /&gt;
Do not bring any food , you will get hell lot of that right at the venue.&lt;br /&gt;
I have &lt;a href="http://www.markandey.com/p/hacks.html"&gt;quite a few of hacks posted on my blog&lt;/a&gt; they will be a good example of how to quickly create a hack , but they are not winning hacks ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-7461082654240659138?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=hnXGGCKk1MA:8Znl12IwJag:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=hnXGGCKk1MA:8Znl12IwJag:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=hnXGGCKk1MA:8Znl12IwJag:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=hnXGGCKk1MA:8Znl12IwJag:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=hnXGGCKk1MA:8Znl12IwJag:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=hnXGGCKk1MA:8Znl12IwJag:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=hnXGGCKk1MA:8Znl12IwJag:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=hnXGGCKk1MA:8Znl12IwJag:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=hnXGGCKk1MA:8Znl12IwJag:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=hnXGGCKk1MA:8Znl12IwJag:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/7461082654240659138/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2011/06/yahoo-open-hack-india-is-here.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/7461082654240659138?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/7461082654240659138?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2011/06/yahoo-open-hack-india-is-here.html" title="Yahoo! Open Hack India is Here" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A08GRns5cSp7ImA9WhZUFUs.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-775875694241484823</id><published>2011-05-23T08:50:00.000-07:00</published><updated>2011-06-08T14:50:27.529-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-08T14:50:27.529-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Article" /><title>3 Things to fix window management on Mac (for Windows-7 users)</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WkwkijsVX2tQ2cy2AazZ73V6qDU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WkwkijsVX2tQ2cy2AazZ73V6qDU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WkwkijsVX2tQ2cy2AazZ73V6qDU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WkwkijsVX2tQ2cy2AazZ73V6qDU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Hey Guys,&lt;br /&gt;
I recently switched to mac (Snow Leopard) from windows7. Window&amp;nbsp;management&amp;nbsp;on Windows has been always good compare to the mac, except the feature like expose which is missing on Windows for long time.&lt;br /&gt;
&lt;br /&gt;
When you&amp;nbsp;switch&amp;nbsp;on mac &amp;nbsp;you might miss couple of feature related to window management. Here is few things you need to fix.&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;1)&amp;nbsp;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Capability&amp;nbsp;to maximize windows&lt;/span&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
Window maximizing on Mac sucks, when you maximize it, window will just increase its height to fill the screen and width will remain same. Windows users are&amp;nbsp;definitely&amp;nbsp;not use to this, so to fix this you need a application called &lt;b&gt;&lt;a href="http://www.macupdate.com/app/mac/30591/right-zoom"&gt;RightZoom&lt;/a&gt;. &amp;nbsp;&lt;/b&gt;It will simply fix the&amp;nbsp;default&amp;nbsp;behavior&amp;nbsp;of green button. RightZoom is free.&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;a href="http://www.macupdate.com/app/mac/30591/right-zoom"&gt;Download RightZoom&lt;/a&gt;&lt;/div&gt;2) &lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Aero Snap&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://windows.microsoft.com/en-US/windows7/products/features/snap"&gt;Window snapping&lt;/a&gt; on the edges was an awesome feature added in windows7. It made the life real easy when you trying to keep 2 windows side by side. Though exact feature is not available on mac via various paid&amp;nbsp;utilities&amp;nbsp;but the &lt;b&gt;&lt;a href="http://code.google.com/p/shiftit/"&gt;ShiftIt&lt;/a&gt;&amp;nbsp;&lt;/b&gt;Is good enough to bring kind of similar&amp;nbsp;experience&amp;nbsp;on mac and its free.&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://code.google.com/p/shiftit/downloads/list"&gt;Download ShiftIt&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
3)&amp;nbsp;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Capability&lt;/b&gt;&lt;b&gt;&amp;nbsp;to Go Fullscreen&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
Most of the application on mac don't go fullscreen, &amp;nbsp;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&amp;nbsp;I&amp;nbsp;seriously&amp;nbsp;hate this, To fix this problem You can use&amp;nbsp;&lt;b&gt;&lt;a href="http://ianhenderson.org/megazoomer.html"&gt;MegaZoomer&lt;/a&gt;, &lt;/b&gt;Which will introduce a shortcut to go full screen in most of the application. This is application is also free. Megazoomer is &lt;a href="http://culater.net/software/SIMBL/SIMBL.php"&gt;SIMBL&lt;/a&gt;&amp;nbsp;plugin, download and install SIMBL first and then copy the Megazoomer in the plug in directory. You might have to restart the machine after&amp;nbsp;installation.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;a href="http://ianhenderson.org/index.html"&gt;Download MegaZoomer&lt;/a&gt;&lt;br /&gt;
&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;Thanks&amp;nbsp;for reading !&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-775875694241484823?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=-1fGg_lTCxY:pLt2ohxbx9E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=-1fGg_lTCxY:pLt2ohxbx9E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=-1fGg_lTCxY:pLt2ohxbx9E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=-1fGg_lTCxY:pLt2ohxbx9E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=-1fGg_lTCxY:pLt2ohxbx9E:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=-1fGg_lTCxY:pLt2ohxbx9E:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=-1fGg_lTCxY:pLt2ohxbx9E:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=-1fGg_lTCxY:pLt2ohxbx9E:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=-1fGg_lTCxY:pLt2ohxbx9E:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=-1fGg_lTCxY:pLt2ohxbx9E:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/775875694241484823/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2011/05/3-things-to-fix-window-management-on.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/775875694241484823?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/775875694241484823?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2011/05/3-things-to-fix-window-management-on.html" title="3 Things to fix window management on Mac (for Windows-7 users)" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;A0YMQX8_eCp7ImA9WhZVEk8.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-1572613513752831267</id><published>2011-04-15T14:18:00.000-07:00</published><updated>2011-05-24T02:26:20.140-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-24T02:26:20.140-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="hack" /><title>Online XSLT Editor</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dcEIilNOYn2vVe-NH16wDbyOGvA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dcEIilNOYn2vVe-NH16wDbyOGvA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dcEIilNOYn2vVe-NH16wDbyOGvA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dcEIilNOYn2vVe-NH16wDbyOGvA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Hey Guys,&lt;br /&gt;
I just created an XSLT Editor. Its very useful for writing quick XSLT for XML you have in hand.&lt;br /&gt;
As soon as you type XSLT code you will see the preview in output window in real time.&lt;br /&gt;
&lt;br /&gt;
I hope this will be&amp;nbsp;useful&amp;nbsp;for you guys. Feel free to share!&lt;br /&gt;
&lt;br /&gt;
Here &lt;a href="http://www.purplegene.com/static/transform.html"&gt;is the direct link&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.purplegene.com/static/transform.html" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://4.bp.blogspot.com/-WpdwcABSJNc/Tai19ni1o9I/AAAAAAAAHEg/XTrlAdZwfts/s400/Screen+shot+2011-04-16+at+2.47.08+AM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-1572613513752831267?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=v9N24W2-pYQ:W-HeVp9Fr3U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=v9N24W2-pYQ:W-HeVp9Fr3U:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=v9N24W2-pYQ:W-HeVp9Fr3U:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=v9N24W2-pYQ:W-HeVp9Fr3U:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=v9N24W2-pYQ:W-HeVp9Fr3U:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=v9N24W2-pYQ:W-HeVp9Fr3U:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=v9N24W2-pYQ:W-HeVp9Fr3U:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=v9N24W2-pYQ:W-HeVp9Fr3U:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=v9N24W2-pYQ:W-HeVp9Fr3U:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=v9N24W2-pYQ:W-HeVp9Fr3U:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/1572613513752831267/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2011/04/online-xslt-editor.html#comment-form" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/1572613513752831267?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/1572613513752831267?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2011/04/online-xslt-editor.html" title="Online XSLT Editor" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-WpdwcABSJNc/Tai19ni1o9I/AAAAAAAAHEg/XTrlAdZwfts/s72-c/Screen+shot+2011-04-16+at+2.47.08+AM.png" height="72" width="72" /><thr:total>7</thr:total></entry><entry gd:etag="W/&quot;CUIGQn46fSp7ImA9WhZaEUQ.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-8388613687928706158</id><published>2011-02-12T13:51:00.000-08:00</published><updated>2011-06-27T09:52:03.015-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-27T09:52:03.015-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Article" /><title>What it takes to make your own RSS Feed Reader in HTML5?</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fiBdY1HjJwoFxhrdvFt1pzL9PGk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fiBdY1HjJwoFxhrdvFt1pzL9PGk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fiBdY1HjJwoFxhrdvFt1pzL9PGk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fiBdY1HjJwoFxhrdvFt1pzL9PGk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Before I tell you the list of all the APIs and Resources that I used to make my feed reader, jump to this page (use Chrome) to get a &lt;a href="http://www.purplegene.com/reader"&gt;Demo of what I have created&lt;/a&gt;.&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;a href="http://www.purplegene.com/reader"&gt;&lt;span class="Apple-style-span" style="background-color: #0b5394; color: white; font-size: large;"&gt;DEMO&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;b&gt;&lt;i&gt;&lt;a href="https://chrome.google.com/webstore/detail/lgjiekambmjckfnbedchbjiamngedppn?hl=en-US"&gt;PurpleGene Feed Reader&lt;/a&gt;&lt;/i&gt;&lt;/b&gt; is a HTML5 (offline) web application for feed reading. No user-name &amp;amp; password required to use this feed reader.&lt;br /&gt;
&lt;br /&gt;
Here is the list of all resources you need to build something like this one.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.purplegene.com/reader" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="186" src="http://2.bp.blogspot.com/-zLzv3obIq1M/TVcENWbCQ_I/AAAAAAAAHCw/cRK6emo9KfA/s400/screanshot.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: #cc0000; font-size: large;"&gt;1) Doctype:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
Any html5 page should be having a html5 dock-type. dock-type declaration will make all the browser to switch into html5 mode and they will render your page as per the new standard.&lt;br /&gt;
html5's doctype declaration is like this&lt;br /&gt;
&lt;div style="background: #303030; padding: 15px;"&gt;&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&amp;lt;!DOCTYPE HTML&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #cc0000; font-size: large;"&gt;2)Cache-Manifest :&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
In HTML5 Cache-Manifest is a way to declare the list of resources that should be&amp;nbsp;cached&amp;nbsp;to run the application offline.&lt;br /&gt;
This file lists all the resources like images and&amp;nbsp;JavaScript&amp;nbsp;required to run your page. cache-manifest is a page linked through your app's main html code.&lt;br /&gt;
&lt;br /&gt;
Here is how my webpage has linked its cache manifest&lt;br /&gt;
&lt;div style="background: #303030; padding: 15px;"&gt;&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&amp;lt;html manifest="cache-manifest-reader?version=1.0"&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;Note that URL /cache-manifest should be served with correct MIME type. Which is &amp;nbsp;'&lt;i&gt;text/cache-manifest&lt;/i&gt;'.&lt;br /&gt;
To know &lt;a href="http://www.w3.org/TR/html5/offline.html#manifests"&gt;more details about cache-manifest, go here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Real life example of cache-manifest is here(my FeedReader)&amp;nbsp;&lt;a href="http://www.purplegene.com/cache-manifest-reader"&gt;http://www.purplegene.com/cache-manifest-reader&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: #cc0000; font-size: large;"&gt;3)Google's Feed API&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
Feed API is not HTML5 Feature. I am using &lt;a href="http://code.google.com/apis/feed/v1/"&gt;Google's AJAX Feed API&lt;/a&gt; to gather feeds.&lt;br /&gt;
&lt;br /&gt;
A quick code&amp;nbsp;example&amp;nbsp;of &lt;a href="http://code.google.com/apis/ajax/playground/#load_feed"&gt;Google' Feed API is here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #cc0000; font-size: large;"&gt;&lt;b&gt;4)Google's Web Fonts (CSS3 web-fonts)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
CSS3 supports web fonts, luckily Google hosts many awesome fonts online for you.&lt;br /&gt;
Here is google's font directory &lt;a href="http://code.google.com/webfonts"&gt;http://code.google.com/webfonts&lt;/a&gt;&lt;br /&gt;
To use any font you just have to include the fontface declaration in your page using google's web fonts API'&lt;br /&gt;
e.g.&lt;br /&gt;
&lt;div style="background: #303030; color: #38c01d; padding: 15px;"&gt;&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&lt;br /&gt;
&amp;lt;link href="http://fonts.googleapis.com/css?family=Goudy+Bookletter+1911" rel="stylesheet" type="text/css"&amp;gt;&amp;lt;/link&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
And then simply use it in your CSS&lt;br /&gt;
&lt;div style="background: #303030; padding: 15px;"&gt;&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;h1 {&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;font-family: 'Goudy Bookletter 1911', arial, serif;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-4md8yv78bMU/TVcEnGl6MOI/AAAAAAAAHC0/i7vrwQVPo6g/s1600/webfonts.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="195" src="http://4.bp.blogspot.com/-4md8yv78bMU/TVcEnGl6MOI/AAAAAAAAHC0/i7vrwQVPo6g/s320/webfonts.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #cc0000; font-size: large;"&gt;5)jQuery&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
For me its very hard to continue any javascript development without using &lt;a href="http://jquery.com/"&gt;jquery&lt;/a&gt;, jquery simply makes your life easier while manipulating the DOM. I am using jquery for keyboard shortcuts ,all DOM manipulations &amp;amp; animation.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #cc0000; font-size: large;"&gt;&lt;b&gt;7)HTML5 Local storage&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
HTML5 local-storage API is awesome!! Using this you can save any data (from JSON) to local persistent store with a very simple javascript calls&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: #303030; padding: 15px;"&gt;&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&amp;nbsp;&amp;nbsp;function GetOfflineData(ItemName) {&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; return JSON.parse(window.localStorage.getItem(ItemName));&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&amp;nbsp;&amp;nbsp;function SetOfflineData(JsonData,ItemName) {&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; window.localStorage.setItem(ItemName, JSON.stringify(JsonData));&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #cc0000;"&gt;Pit Fall&lt;/span&gt; &lt;i&gt;(&lt;/i&gt;&lt;/b&gt;&lt;i&gt;circular&amp;nbsp;json object)&lt;/i&gt;&lt;br /&gt;
Note that at any point of time if your JSON will go cyclic then JSON.stringify function will fail to do that.&lt;br /&gt;
here is example of cyclic &lt;span class="Apple-style-span" style="color: #274e13;"&gt;JSON&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #274e13;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div style="background: #303030; color: #38c01d; padding: 15px;"&gt;&lt;span class="Apple-style-span"&gt;var json={"hello":"{"test1":1}}&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;json.hello.parent=json;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
so solution to the problem is either you don't use something like that, or pass a function as second argument to the stringify function to let it know that parent member should be avoided.&lt;br /&gt;
like this&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: #303030; color: #38c01d; padding: 15px;"&gt;&lt;span class="Apple-style-span"&gt;JSON.stringify(json, function(prop, val) {&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return ((prop&amp;nbsp;=== 'parent') ? undefined :&amp;nbsp;val);&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;})&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #cc0000; font-size: large;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #cc0000; font-size: large;"&gt;&lt;b&gt;8)bitly APIs for link shortening (twitter sharing)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;bitly has a very clean REST API for link shortening, here is a example to shorten a link.&lt;br /&gt;
&lt;div style="background: #303030; padding: 15px;"&gt;&amp;nbsp;&amp;nbsp; &lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;function TryShorteningLink(longlink) {&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var login = Configuration.Configuration.bitly.user;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var key = Configuration.Configuration.bitly.key;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var url = 'http://api.bit.ly/v3/shorten?login=' + login + '&amp;amp;apiKey=' + key + '&amp;amp;longUrl=' + escape(longlink) + '&amp;amp;format=json&amp;amp;callback=?';&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$.getJSON(url, function(result) {&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (result.status_code === 200) {&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;alert('link is shoten now!!'+ result.data.url)&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;});&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;catch (err) {}&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #cc0000; font-size: large;"&gt;9)Icons&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
I am terrible designer, I know that if i will try to make something colorful i will mess the things up. So i always stick to&amp;nbsp;minimalistic&amp;nbsp;approach&amp;nbsp;,&amp;nbsp;To&amp;nbsp;designs&amp;nbsp;the icons i just used character&amp;nbsp;written&amp;nbsp;on a blue circle. To make it looks little better that circle has minimal gradient.&lt;br /&gt;
I used &lt;a href="http://code.google.com/p/svg-edit/"&gt;this svg editor&lt;/a&gt; to create them, then exported to PNG format.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: #cc0000; font-size: large;"&gt;10)Configuration Editor&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
Since most of your offline data will be stored in JSON , it was much better idea to expose the JSON editor itself for configuration editing.&amp;nbsp;If you look at the configuration panel , you will see a nice JSON editor, this editor is created by me and you can &lt;a href="http://www.markandey.com/2011/02/json-editor-using-yui-treeview.html"&gt;get that from here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #cc0000; font-size: large;"&gt;&lt;b&gt;11) &amp;nbsp;CSS3&amp;nbsp;Column&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #cc0000; font-size: large;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ZCP5nzUolnI/TVcDkJnaVUI/AAAAAAAAHCo/K_kUnBBi9ic/s1600/css3col.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="222" src="http://4.bp.blogspot.com/-ZCP5nzUolnI/TVcDkJnaVUI/AAAAAAAAHCo/K_kUnBBi9ic/s400/css3col.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The SneakPeek View of my Feed Reader uses CSS3&amp;nbsp;columns&amp;nbsp;&lt;span class="Apple-style-span" style="color: #cc0000; font-size: x-small;"&gt;(This is not yet supported by Opera and IE9)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: #303030; padding: 15px;"&gt;&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;div#multicolumn1 {&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;-moz-column-count: 3;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;-moz-column-gap: 20px;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;-webkit-column-count: 3;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;-webkit-column-gap: 20px;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;column-count: 3;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;column-gap: 20px;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Thanks for reading&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-8388613687928706158?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=Dr9Wi6POuxg:RGp-NHkr774:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=Dr9Wi6POuxg:RGp-NHkr774:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=Dr9Wi6POuxg:RGp-NHkr774:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=Dr9Wi6POuxg:RGp-NHkr774:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=Dr9Wi6POuxg:RGp-NHkr774:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=Dr9Wi6POuxg:RGp-NHkr774:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=Dr9Wi6POuxg:RGp-NHkr774:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=Dr9Wi6POuxg:RGp-NHkr774:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=Dr9Wi6POuxg:RGp-NHkr774:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=Dr9Wi6POuxg:RGp-NHkr774:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/8388613687928706158/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2011/02/what-it-takes-to-make-your-own-feed.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/8388613687928706158?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/8388613687928706158?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2011/02/what-it-takes-to-make-your-own-feed.html" title="What it takes to make your own RSS Feed Reader in HTML5?" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-zLzv3obIq1M/TVcENWbCQ_I/AAAAAAAAHCw/cRK6emo9KfA/s72-c/screanshot.png" height="72" width="72" /><thr:total>3</thr:total></entry><entry gd:etag="W/&quot;CUYEQXc-eSp7ImA9WhdXEEU.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-3888455507313483915</id><published>2011-02-08T11:34:00.000-08:00</published><updated>2011-08-23T00:05:00.951-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-23T00:05:00.951-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="hack" /><title>JSON Editor Using YUI TreeView</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/z6VngrTpGxrQUC7HupGTr4Dra8I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z6VngrTpGxrQUC7HupGTr4Dra8I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/z6VngrTpGxrQUC7HupGTr4Dra8I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z6VngrTpGxrQUC7HupGTr4Dra8I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Hey Guys,&lt;br /&gt;
&lt;br /&gt;
I have created a JSON Editor, using &lt;a href="http://developer.yahoo.com/yui/treeview/"&gt;YUI TreeView&lt;/a&gt;. &lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;a href="http://www.purplegene.com/static/JsonEditor.html"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="background-color: blue; color: white; font-size: large;"&gt;Live Demo&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;/div&gt;
Its very simple to Use!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All functionality is&amp;nbsp;wrapped&amp;nbsp;in&amp;nbsp;&lt;b&gt;jsonEditor.js&lt;/b&gt; , which is tiny JavaScript library,which can be used for making your own JSON editor.&lt;br /&gt;
&lt;br /&gt;
This&amp;nbsp;library&amp;nbsp;is simple to use. &amp;nbsp;Here is what you need to do.&lt;br /&gt;
&lt;br /&gt;
Create a div with some ID lets say treeView and then a create&amp;nbsp;text-area&amp;nbsp;with id as "textEdit".&lt;br /&gt;
Pass this 2 parameter in jsonEditor constructor, Thats it You are done!&lt;br /&gt;
Here is sample code&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: #303030; color: #38c01d; padding: 10px;"&gt;
/*Do This on Dom ready*/&lt;br /&gt;
je=new jsonEditor('textEdit','treeView');&lt;br /&gt;
je.setJSON(sampleJson);&lt;br /&gt;
//console.log(je.getJSON());&lt;/div&gt;
&lt;br /&gt;
This Uses &lt;a href="http://yuilibrary.com/"&gt;YUI&lt;/a&gt; &amp;amp; &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; so make sure you are including these libraries in your page.&lt;br /&gt;
&lt;br /&gt;
Here are all dependencies, put these in head part of HTML:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: #303030; color: #38c01d; overflow: scroll; padding: 10px;"&gt;
&amp;lt;link rel="stylesheet" href="http://yui.yahooapis.com/2.8.0r4/build/reset-fonts-grids/reset-fonts-grids.css" type="text/css"&amp;gt;&lt;br /&gt;
&amp;lt;link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/2.8.2r1/build/fonts/fonts-min.css" /&amp;gt; &lt;br /&gt;
&amp;lt;link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/2.8.2r1/build/treeview/assets/skins/sam/treeview.css" /&amp;gt; &lt;br /&gt;
&amp;lt;script type="text/javascript" src="http://yui.yahooapis.com/2.8.2r1/build/yahoo-dom-event/yahoo-dom-event.js"&amp;gt;&amp;lt;/script&amp;gt; &lt;br /&gt;
&amp;lt;script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/treeview/treeview-min.js"&amp;gt;&amp;lt;/script&amp;gt; &lt;br /&gt;
&amp;lt;script type="text/javascript" src="http://www.purplegene.com/js/jsonEditor.js"&amp;gt;&amp;lt;/script&amp;gt;  &lt;br /&gt;
&amp;lt;script type="text/javascript" src="http://www.google.com/jsapi"&amp;gt;&amp;lt;/script&amp;gt; &lt;br /&gt;
&amp;lt;script type="text/javascript"&amp;gt; &lt;br /&gt;
google.load("jquery", "1.4.2");&lt;br /&gt;
&amp;lt;/script&amp;gt; &lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is screenshot&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://www.purplegene.com/static/JsonEditor.html" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="313" src="http://4.bp.blogspot.com/_sFmKMtGguSE/TVGb_Z3hqLI/AAAAAAAAHCk/m3NpTgwipRo/s400/Screenshot.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;Note: &amp;nbsp;This is Only Tested in Firefox and chrome. Use at your own risk! Do not hotlink my js file.&lt;/span&gt;&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-3888455507313483915?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=dwr6gak91T4:teG4lS48G8g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=dwr6gak91T4:teG4lS48G8g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=dwr6gak91T4:teG4lS48G8g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=dwr6gak91T4:teG4lS48G8g:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=dwr6gak91T4:teG4lS48G8g:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=dwr6gak91T4:teG4lS48G8g:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=dwr6gak91T4:teG4lS48G8g:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=dwr6gak91T4:teG4lS48G8g:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=dwr6gak91T4:teG4lS48G8g:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=dwr6gak91T4:teG4lS48G8g:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/3888455507313483915/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2011/02/json-editor-using-yui-treeview.html#comment-form" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/3888455507313483915?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/3888455507313483915?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2011/02/json-editor-using-yui-treeview.html" title="JSON Editor Using YUI TreeView" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_sFmKMtGguSE/TVGb_Z3hqLI/AAAAAAAAHCk/m3NpTgwipRo/s72-c/Screenshot.png" height="72" width="72" /><thr:total>7</thr:total></entry><entry gd:etag="W/&quot;DkECQX0yfCp7ImA9Wx9VE08.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-8650245318908100218</id><published>2011-01-28T15:52:00.000-08:00</published><updated>2011-01-29T10:11:00.394-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-29T10:11:00.394-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="demo" /><category scheme="http://www.blogger.com/atom/ns#" term="Article" /><title>Which browser is faster as of now?? (DOM+JavaScript)</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ThaQUaPFJqT4kRqei-iyh0_ZC1o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ThaQUaPFJqT4kRqei-iyh0_ZC1o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ThaQUaPFJqT4kRqei-iyh0_ZC1o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ThaQUaPFJqT4kRqei-iyh0_ZC1o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Hi Guys,&lt;br /&gt;
When it comes to&amp;nbsp;performance&amp;nbsp;of Browsers its not just JavaScript. Speed of DOM plays very important role in the performance.&lt;br /&gt;
Today I have&amp;nbsp;quickly&amp;nbsp;written small test function to Test JavaScript+DOM&amp;nbsp;performance&amp;nbsp;on all&amp;nbsp;major&amp;nbsp;browsers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: #3d85c6; font-size: large;"&gt;&lt;b&gt;Demo&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;iframe allowfullscreen="" class="youtube-player" frameborder="0" height="390" src="http://www.youtube.com/embed/_92LDBJ1ueA" title="YouTube video player" type="text/html" width="480"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
So here I have the test code&lt;br /&gt;
&lt;iframe height="800" src="http://www.purplegene.com/script?url=https://gist.github.com/801261.js?file=DomJavaScript.html" width="100%"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-8650245318908100218?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=iDE8wKKa-eU:_Kx3YbjChS4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=iDE8wKKa-eU:_Kx3YbjChS4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=iDE8wKKa-eU:_Kx3YbjChS4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=iDE8wKKa-eU:_Kx3YbjChS4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=iDE8wKKa-eU:_Kx3YbjChS4:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=iDE8wKKa-eU:_Kx3YbjChS4:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=iDE8wKKa-eU:_Kx3YbjChS4:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=iDE8wKKa-eU:_Kx3YbjChS4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=iDE8wKKa-eU:_Kx3YbjChS4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=iDE8wKKa-eU:_Kx3YbjChS4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/8650245318908100218/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2011/01/which-browser-is-fastest-as-of-now.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/8650245318908100218?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/8650245318908100218?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2011/01/which-browser-is-fastest-as-of-now.html" title="Which browser is faster as of now?? (DOM+JavaScript)" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/_92LDBJ1ueA/default.jpg" height="72" width="72" /><thr:total>3</thr:total></entry><entry gd:etag="W/&quot;C0QDQ307fCp7ImA9Wx9bEUg.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-4428749822229222558</id><published>2011-01-13T12:37:00.000-08:00</published><updated>2011-02-19T13:36:12.304-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-19T13:36:12.304-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="hack" /><title>Faster and Better way to embed code on blog</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KPfs1EXqVU7PnFMFqjrm-90RF74/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KPfs1EXqVU7PnFMFqjrm-90RF74/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KPfs1EXqVU7PnFMFqjrm-90RF74/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KPfs1EXqVU7PnFMFqjrm-90RF74/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;If your blog posts often contain some code snippet then read this post.&lt;br /&gt;
While embedding code on your blog, you might have felt these problems&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;&lt;b&gt;1)Syntax highlighting&lt;/b&gt;&lt;/div&gt;&lt;b&gt;2)Escaping &lt;/b&gt;(i.e. &amp;nbsp;if ur code contains html then you need to escape your code)&lt;br /&gt;
&lt;b&gt;3)Code editing &amp;amp; Versioning &lt;/b&gt;(i.e.&amp;nbsp;&amp;nbsp;Once you got the escaped &amp;amp; highlighted code, editing becomes tough)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All these problems will be solved if you host all your code snippet on &lt;a href="https://gist.github.com/"&gt;GitHub as Gist&amp;nbsp;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;Solution is: use GitHub Gist!!&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
As most of you already be knowing that GitHub is a web-based code hosting service that uses the Git revision control system. GitHub has a feature called Gist where you can store (and version it) small code snippet without actually going through any git problems.&lt;br /&gt;
You can version edit and host your code as Gist, additionally you can embed this code on your blog &lt;b&gt;&lt;i&gt;which comes with syntax&amp;nbsp;highlighting&amp;nbsp;and character escaping for free!&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: #cc0000;"&gt;One Problem Though!!!&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
Github Gist embedding comes as script tag (&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;which loads your Code)&lt;/span&gt;. &lt;br /&gt;
Problem with putting such code in middle of the blog post is, When user loads your page, entire page loading will be blocked until this script is loaded .i.e. Your blog page will load slower!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;So how to keep it faster?&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
Typically to solve this problem people use script tag injection in DOM using some light&amp;nbsp;weight&amp;nbsp;script. This method will not work here because GitHub Gist embed method uses document.write to bring the content inline.&lt;br /&gt;
&lt;br /&gt;
Other simple solution is Use iframe, I have created a small web handler on&amp;nbsp;&lt;a href="http://purplegene.com/"&gt;PurpleGene.com&lt;/a&gt; to embed this code and then you can include this page as iframe. note that iframes load in parallel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is How&lt;br /&gt;
suppose you have a gist like this &lt;br /&gt;
https://gist.github.com/764648&lt;br /&gt;
&lt;br /&gt;
Then embed code will be &lt;br /&gt;
&lt;div style="background: #303030; color: #38c01d;padding:15px;"&gt;&lt;pre&gt;&amp;lt;script src="https://gist.github.com/764648.js?file=Qompress.cs"&amp;gt;&amp;lt;/script&amp;gt;
&lt;/pre&gt;&lt;/div&gt;Now If you want to embed this code just &lt;br /&gt;
1)Replace script tag with iFrame &lt;br /&gt;
2)Append URL http://www.purplegene.com/script?url= in src field&lt;br /&gt;
3)Beatify by giving attribute as width="100%" height="300" or what ever you want. &lt;br /&gt;
Your final code will be &lt;br /&gt;
&lt;div style="background: #303030; color: #38c01d;padding:15px;"&gt;&lt;pre&gt;&amp;lt;iframe width="100%" height="300" src="http://www.purplegene.com/script?url=https://gist.github.com/764648.js?file=Qompress.cs"&amp;gt;&amp;lt;br /&amp;gt;
&amp;lt;/iframe&amp;gt;
&lt;/pre&gt;&lt;/div&gt;Thats it Have fun!!!!!!&lt;br /&gt;
&lt;br /&gt;
PS:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;PurpleGene.com is owned by me, so assume it to be safe, if do not trust me then you can simply go ahead and create a small app on appengine for free and use it!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-4428749822229222558?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=HSrHXxPjFRI:gQfKhv5MV24:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=HSrHXxPjFRI:gQfKhv5MV24:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=HSrHXxPjFRI:gQfKhv5MV24:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=HSrHXxPjFRI:gQfKhv5MV24:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=HSrHXxPjFRI:gQfKhv5MV24:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=HSrHXxPjFRI:gQfKhv5MV24:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=HSrHXxPjFRI:gQfKhv5MV24:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=HSrHXxPjFRI:gQfKhv5MV24:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=HSrHXxPjFRI:gQfKhv5MV24:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=HSrHXxPjFRI:gQfKhv5MV24:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/4428749822229222558/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2011/01/4-common-problems-of-embbeding-code-in.html#comment-form" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/4428749822229222558?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/4428749822229222558?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2011/01/4-common-problems-of-embbeding-code-in.html" title="Faster and Better way to embed code on blog" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><thr:total>6</thr:total></entry><entry gd:etag="W/&quot;AkQBQH86eSp7ImA9Wx9XGUk.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-4720909333054435841</id><published>2011-01-04T03:05:00.000-08:00</published><updated>2011-01-13T11:52:31.111-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-13T11:52:31.111-08:00</app:edited><title>Compress and Decompress in C#.net</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DC3MeD3otOeVvyTJ1R2B-T0iTSM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DC3MeD3otOeVvyTJ1R2B-T0iTSM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DC3MeD3otOeVvyTJ1R2B-T0iTSM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DC3MeD3otOeVvyTJ1R2B-T0iTSM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Hi Guys,&lt;br /&gt;
Just wanted to share a very simple code example to compress and decompress in c#.net.&lt;br /&gt;
&lt;br /&gt;
Here it goes.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe width="100%" height="300" src="http://www.purplegene.com/script?url=https://gist.github.com/764648.js?file=Qompress.cs"&gt;&lt;br /&gt;
&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;From File????&lt;/b&gt;&lt;br /&gt;
If you are trying to compress and de-compress a file then use this to read into a file.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;To Read from File&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;pre&gt;byte[] rawData = File.ReadAllBytes(FileName);
&lt;/pre&gt;&lt;b&gt;&lt;i&gt;To Write to a File&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;pre&gt;File.WriteAllBytes(filename,rawData)
&lt;/pre&gt;&lt;br /&gt;
Thanks,&lt;br /&gt;
Have Fun&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-4720909333054435841?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=-SFC6wg2K94:lILtlPB1vGA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=-SFC6wg2K94:lILtlPB1vGA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=-SFC6wg2K94:lILtlPB1vGA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=-SFC6wg2K94:lILtlPB1vGA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=-SFC6wg2K94:lILtlPB1vGA:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=-SFC6wg2K94:lILtlPB1vGA:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=-SFC6wg2K94:lILtlPB1vGA:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=-SFC6wg2K94:lILtlPB1vGA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=-SFC6wg2K94:lILtlPB1vGA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=-SFC6wg2K94:lILtlPB1vGA:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/4720909333054435841/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2011/01/compress-and-decompress-in-cnet.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/4720909333054435841?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/4720909333054435841?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2011/01/compress-and-decompress-in-cnet.html" title="Compress and Decompress in C#.net" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkMNSXw6eSp7ImA9Wx9XGUk.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-5269641767359684978</id><published>2010-11-18T12:33:00.000-08:00</published><updated>2011-01-13T11:54:58.211-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-13T11:54:58.211-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="hack" /><title>How To Reorganize your pictures based on Exif data (into folders)</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/M491QVIR81_TdG6NX9GtN-nmmk8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/M491QVIR81_TdG6NX9GtN-nmmk8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/M491QVIR81_TdG6NX9GtN-nmmk8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/M491QVIR81_TdG6NX9GtN-nmmk8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Hi ,&lt;br /&gt;
Its often good Idea to reorganize your pictures (images) into folders based on date when its taken.&lt;br /&gt;
I have written a small python script which does nothing but displays a command suggestion to move your files in directories.&lt;br /&gt;
&lt;br /&gt;
Here is script &lt;br /&gt;
&lt;br /&gt;
&lt;iframe width="100%" height="300" src="http://www.purplegene.com/script?url=https://gist.github.com/708717.js?file=Info.py"&gt;&lt;br /&gt;
&lt;/iframe&gt;&lt;br /&gt;
&lt;b&gt;How To Use&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Lets say you have saved above script in a file info.py. &lt;br /&gt;
so if your execute this script &lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;b&gt;$./info.py filename m&lt;/b&gt;&lt;/div&gt;this will print the month and year part of the date when this picture is taken.&lt;br /&gt;
so based on your need (whether you want to achieve yearly/monthly or daily) chose the right option.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_sFmKMtGguSE/TOWMFhHMg2I/AAAAAAAAHBE/I4p7I5fdQIw/s1600/Screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="348" src="http://1.bp.blogspot.com/_sFmKMtGguSE/TOWMFhHMg2I/AAAAAAAAHBE/I4p7I5fdQIw/s640/Screenshot.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;b&gt;Sample output&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
If you use this script &amp;nbsp;with find command it will recursively print the command suggestion for all file. Save this output in a file and execute like a shell script (or batch file if you are on windows).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is command to get the monthly archival command-list &lt;br /&gt;
&lt;pre style="text-align: center;"&gt;&lt;b&gt;$find . -name *.JPG -type f -exec ./info.py {} m \;&lt;/b&gt;
&lt;/pre&gt;&lt;br /&gt;
Note:&lt;br /&gt;
1.make sure that there is a space after m and \; &lt;br /&gt;
2.If you are on windows u need cygwin for find comand.&lt;br /&gt;
3.this python script uses PIL library (so you need python and PIL library)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_sFmKMtGguSE/TOWMLP6yy-I/AAAAAAAAHBI/mTEplYUXANs/s1600/Screenshot-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="227" src="http://1.bp.blogspot.com/_sFmKMtGguSE/TOWMLP6yy-I/AAAAAAAAHBI/mTEplYUXANs/s640/Screenshot-1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;Sample output with find&amp;nbsp;command&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-5269641767359684978?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=9TJYn4Bomkc:S89A5rFgUQg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=9TJYn4Bomkc:S89A5rFgUQg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=9TJYn4Bomkc:S89A5rFgUQg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=9TJYn4Bomkc:S89A5rFgUQg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=9TJYn4Bomkc:S89A5rFgUQg:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=9TJYn4Bomkc:S89A5rFgUQg:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=9TJYn4Bomkc:S89A5rFgUQg:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=9TJYn4Bomkc:S89A5rFgUQg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=9TJYn4Bomkc:S89A5rFgUQg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=9TJYn4Bomkc:S89A5rFgUQg:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/5269641767359684978/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2010/11/how-to-reorganize-your-pictures-based.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/5269641767359684978?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/5269641767359684978?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2010/11/how-to-reorganize-your-pictures-based.html" title="How To Reorganize your pictures based on Exif data (into folders)" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_sFmKMtGguSE/TOWMFhHMg2I/AAAAAAAAHBE/I4p7I5fdQIw/s72-c/Screenshot.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEMCR30_cSp7ImA9Wx9UEUQ.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-8036262500896644688</id><published>2010-11-03T13:12:00.000-07:00</published><updated>2011-02-08T12:21:06.349-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-08T12:21:06.349-08:00</app:edited><title>How to remove "New Twitter notification" blue bar from twitter home page (Bookmarklet)</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0J7FXQlBHHGZm_Xi1jYqCNFMslM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0J7FXQlBHHGZm_Xi1jYqCNFMslM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0J7FXQlBHHGZm_Xi1jYqCNFMslM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0J7FXQlBHHGZm_Xi1jYqCNFMslM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Hi Guys,&lt;br /&gt;
If you are not using "new twitter" interface then you might be finding very annoying to see that blue bar at the top of twitter home page. Here is a very simple way to fix it.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_sFmKMtGguSE/TNHAu05Gp_I/AAAAAAAAHAc/ZlegtXJNldk/s1600/Screenshot-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="193" src="http://3.bp.blogspot.com/_sFmKMtGguSE/TNHAu05Gp_I/AAAAAAAAHAc/ZlegtXJNldk/s320/Screenshot-3.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Drag and Drop&amp;nbsp;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;span class="Apple-style-span" style="background-color: #073763;"&gt;&lt;a href="javascript:$(&amp;quot;.phoenix-banner-outer&amp;quot;).remove();;%20void%200"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;this bookmark-let&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;on your bookmark bar and click it&amp;nbsp;every-time&amp;nbsp;u see that bar, it will give you hell lot of satisfaction. &lt;br /&gt;
&lt;br /&gt;
If you are a chrome user and dont want to click this&amp;nbsp;bookmark-let&amp;nbsp;all the time, &lt;a href="https://chrome.google.com/extensions/detail/mmldmlpbclbmdhcgflocidndmkkehnif"&gt;use this extension&lt;/a&gt;. This extension will fix the problem for ever.&lt;br /&gt;
&lt;br /&gt;
Thanks for reading, have fun.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/prScx3UOAPc?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/prScx3UOAPc?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-8036262500896644688?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=qywqmLEtcSY:wLj7ycfqvoQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=qywqmLEtcSY:wLj7ycfqvoQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=qywqmLEtcSY:wLj7ycfqvoQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=qywqmLEtcSY:wLj7ycfqvoQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=qywqmLEtcSY:wLj7ycfqvoQ:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=qywqmLEtcSY:wLj7ycfqvoQ:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=qywqmLEtcSY:wLj7ycfqvoQ:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=qywqmLEtcSY:wLj7ycfqvoQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=qywqmLEtcSY:wLj7ycfqvoQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=qywqmLEtcSY:wLj7ycfqvoQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/8036262500896644688/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2010/11/how-to-remove-new-twitter-notification.html#comment-form" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/8036262500896644688?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/8036262500896644688?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2010/11/how-to-remove-new-twitter-notification.html" title="How to remove &quot;New Twitter notification&quot; blue bar from twitter home page (Bookmarklet)" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_sFmKMtGguSE/TNHAu05Gp_I/AAAAAAAAHAc/ZlegtXJNldk/s72-c/Screenshot-3.png" height="72" width="72" /><thr:total>8</thr:total></entry><entry gd:etag="W/&quot;CUIFR3s4eSp7ImA9Wx9XGUg.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-5916833761560196773</id><published>2010-10-29T07:54:00.000-07:00</published><updated>2011-01-13T13:18:36.531-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-13T13:18:36.531-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="yql" /><title>YQL Page Scraping (Yes, anyone can do it)</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2TKaA1ptRsURY8sYorYyYY6K4uE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2TKaA1ptRsURY8sYorYyYY6K4uE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2TKaA1ptRsURY8sYorYyYY6K4uE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2TKaA1ptRsURY8sYorYyYY6K4uE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;One of the most common use of YQL is getting data from any page on the internet(page scraping/Web scraping), thats why some of the people say yql can do&lt;br /&gt;
"&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Select * from Internet&lt;/span&gt;&lt;/b&gt;"&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;What is YQL?&lt;/b&gt;&lt;br /&gt;
YQL or Yahoo Query Language is an expressive SQL-like language that lets you query, filter, and join data across Web services.&lt;br /&gt;
Every YQL statements gets translated into a URL (a REST query) which gives back the data u queried. &lt;br /&gt;
All data from YQL can be consumed in form of JSON or XML. Here is a demo html and JavaScript Code which is using YQL Rest API to consume data in JSON.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe width="100%" height="300" src="http://www.purplegene.com/script?url=https://gist.github.com/708723.js?file=yqlscraptest.html"&gt;&lt;br /&gt;&lt;br /&gt;
&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
You can simply copy paste above code in an html file and load in browser to see its functionality. Code loads JSON from YQL via a script tag at the bottom of page. This JSON comes with a callback function named '&lt;b&gt;&lt;i&gt;renderYQL&lt;/i&gt;&lt;/b&gt;', the function will &lt;b&gt;render&lt;/b&gt; the json on your page. function &lt;i&gt;renderYQL&lt;/i&gt; is defined above in the html (well before your json might arrive).&lt;br /&gt;
&lt;br /&gt;
Play around with it change URL and XPATH to get different data from internet!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;More Resources?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;You can automate the URL and XPATH madness using my &lt;b&gt;&lt;i&gt;Chrome extension&lt;/i&gt;&lt;/b&gt; &lt;a href="https://chrome.google.com/extensions/detail/bkmllkjbfbeephbldeflbnpclgfbjfmn"&gt;ChromYQLip&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Flickr &lt;a href="http://developer.yahoo.com/blogs/ydn/posts/2010/04/building_flickr_urls_from_yql_flickrphotossearch_results/"&gt;Photo Search Using YQL&amp;nbsp;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Many More &lt;a href="http://www.wait-till-i.com/tag/yql"&gt;Articles About YQL (sample etc)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ScreenCast On &lt;a href="http://www.freshclickmedia.com/blog/2010/03/web-scraping-with-yql-jquery-and-jsonp/"&gt;YQL Web scraping&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-5916833761560196773?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=i7e1RXsoAJ4:gSscfgHXEHk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=i7e1RXsoAJ4:gSscfgHXEHk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=i7e1RXsoAJ4:gSscfgHXEHk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=i7e1RXsoAJ4:gSscfgHXEHk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=i7e1RXsoAJ4:gSscfgHXEHk:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=i7e1RXsoAJ4:gSscfgHXEHk:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=i7e1RXsoAJ4:gSscfgHXEHk:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=i7e1RXsoAJ4:gSscfgHXEHk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=i7e1RXsoAJ4:gSscfgHXEHk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=i7e1RXsoAJ4:gSscfgHXEHk:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/5916833761560196773/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2010/10/yql-page-scraping-yes-anyone-can-do-it.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/5916833761560196773?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/5916833761560196773?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2010/10/yql-page-scraping-yes-anyone-can-do-it.html" title="YQL Page Scraping (Yes, anyone can do it)" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkAARHg6fip7ImA9Wx5VFE0.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-4679836906759023126</id><published>2010-10-06T14:32:00.000-07:00</published><updated>2010-10-06T14:32:25.616-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-06T14:32:25.616-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="hack" /><title>How to hack URL Shorteners to store your Images (icons)?</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/t01ymVKUPaVNjbzsoGsZkW0i9pA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t01ymVKUPaVNjbzsoGsZkW0i9pA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/t01ymVKUPaVNjbzsoGsZkW0i9pA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t01ymVKUPaVNjbzsoGsZkW0i9pA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;i&gt;Note:This is not very useful hack , but lil fun&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
What URL shortners do? They take a long url and gives back a small one, that is&lt;br /&gt;
1.They can be used for compression.&lt;br /&gt;
2.They can be used to store any long data in short format.&lt;br /&gt;
&lt;br /&gt;
As you know that an image can be represented in form of data uri as well, something like this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;img src="data:image/jpg;base64,blah blah;" /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
here "blah blah" is the base64&amp;nbsp;incoded&amp;nbsp;image data.&lt;br /&gt;
&lt;br /&gt;
On My site I created a handler which spits a small html with img tag with the src field as whatever given to this handler in query string!&lt;br /&gt;
&lt;br /&gt;
if query is a data uri then it will display the image in your browser, and this image will be hosted no where but in the URL u just created!&lt;br /&gt;
&lt;br /&gt;
Since this url is long u can shorten with bit.ly and get a shorter version.&lt;br /&gt;
&lt;br /&gt;
Thats it you just stored an image on bit.ly&lt;br /&gt;
&lt;br /&gt;
Here is the Demo&amp;nbsp;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;a href="http://bit.ly/b6ZBXV"&gt;http://bit.ly/b6ZBXV&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-4679836906759023126?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=_dTYCSVDlvY:wuLYXdtCttE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=_dTYCSVDlvY:wuLYXdtCttE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=_dTYCSVDlvY:wuLYXdtCttE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=_dTYCSVDlvY:wuLYXdtCttE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=_dTYCSVDlvY:wuLYXdtCttE:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=_dTYCSVDlvY:wuLYXdtCttE:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=_dTYCSVDlvY:wuLYXdtCttE:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=_dTYCSVDlvY:wuLYXdtCttE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=_dTYCSVDlvY:wuLYXdtCttE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=_dTYCSVDlvY:wuLYXdtCttE:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/4679836906759023126/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2010/10/how-to-hack-url-shorteners-to-store.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/4679836906759023126?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/4679836906759023126?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2010/10/how-to-hack-url-shorteners-to-store.html" title="How to hack URL Shorteners to store your Images (icons)?" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A08FQnY-fSp7ImA9Wx5XGUQ.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-6886843875988665181</id><published>2010-09-20T09:23:00.000-07:00</published><updated>2010-09-20T09:23:33.855-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-20T09:23:33.855-07:00</app:edited><title>Selecting the right web host is not a child's play</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OMDXmOJskQ5WedcdUAtUow2Y7rU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OMDXmOJskQ5WedcdUAtUow2Y7rU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OMDXmOJskQ5WedcdUAtUow2Y7rU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OMDXmOJskQ5WedcdUAtUow2Y7rU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Finding a reliable webhosting company is not as easy as it seems. Since the company will be responsible for keeping your website up and running, it is extremely important to choose the best services. There are literally thousands of webhosting companies that offer appealing packages, so you should determine exactly what you need for your website. Here are a few guidelines for you to take note of.&lt;br /&gt;
&lt;br /&gt;
It is recommended to do some research and read customer reviews and testimonials before choosing a web host. There are many customers writing in to express their satisfaction, so you should check out those companies. It is very difficult to assess web hosting agencies and their service quality based on the information they provide. This is why you should search for accurate details from various sources. &lt;br /&gt;
&lt;br /&gt;
There are a few companies that offer professional webhosting services. For instance, Just Host is an excellent option for those who need dedicated server, unlimited disk space, unlimited email accounts, free site builder, free instant setup, and free domain for life. The company provides a money back guarantee too, so be sure to have a look and review the web hosting plans available. &lt;br /&gt;
&lt;br /&gt;
In case you are searching for &lt;a href="http://www.webhostingsearch.com/dedicated-server.php"&gt;cheap dedicated server&lt;/a&gt;, free domain registration, free quick setup, and free maintenance services, check out Dream Host. The company is highly specialized in cheap web hosting, server collocation, VPS hosting, and dedicated hosting. All plans include unlimited MySQL databases, unlimited domains hosted, unlimited discussion lists, Perl support, SSL Secure Servers, enhanced web security, and account upgrades. &lt;br /&gt;
&lt;br /&gt;
For the best domain services, Go Daddy is a great choice. Being one of the most popular webhosting companies, Go Daddy provides three basic plans featuring unlimited bandwidth, website statistics, free email addresses, daily backups, 24/7 FTP access, and Ad Credits from MySpace, Google, and Facebook. Customers also receive Fotolia photo credits and free access to the best firewalls, routers, and servers. &lt;br /&gt;
&lt;br /&gt;
If you want to become an authority in your field and increase the popularity of your website in search engines, it is essential to opt for the best &lt;a href="http://www.webhostingsearch.com/"&gt;webhosting&lt;/a&gt; services. Slow performance is unacceptable to most Internet users, so be sure to select a company that offers reliable hosting plans. Make sure the agency you're interested in provides customer service and support. They must have a team of experts who can solve any issue and get your website running again whenever you need technical help. Keep in mind that your service provider must be updated with the latest trends in technology on a constant basis. &lt;br /&gt;
&lt;br /&gt;
In case you have an ecommerce website that requires high security such as credit card payment and processing, as well as banking transactional activities, it is advisable to opt for dedicated web hosting. Try to find a reputable company that offers cheap dedicated server, list mailing management, traffic statistics, and shopping carts. Last but not least, select a web host that provides message boards, forums, and chat rooms. These services allow you to get in touch with other webmasters and online business owners and share your ideas. More than that, these features will help you find out what your customers have to say about your services and products. What matters the most is to find a hosting provider that delivers the greatest amount of bandwidth, the highest quality services, and the best customer response for a competitive price.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-6886843875988665181?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=b7o-ONP52Wk:2ol2eSw6lAg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=b7o-ONP52Wk:2ol2eSw6lAg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=b7o-ONP52Wk:2ol2eSw6lAg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=b7o-ONP52Wk:2ol2eSw6lAg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=b7o-ONP52Wk:2ol2eSw6lAg:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=b7o-ONP52Wk:2ol2eSw6lAg:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=b7o-ONP52Wk:2ol2eSw6lAg:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=b7o-ONP52Wk:2ol2eSw6lAg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=b7o-ONP52Wk:2ol2eSw6lAg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=b7o-ONP52Wk:2ol2eSw6lAg:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/6886843875988665181/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2010/09/selecting-right-web-host-is-not-childs.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/6886843875988665181?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/6886843875988665181?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2010/09/selecting-right-web-host-is-not-childs.html" title="Selecting the right web host is not a child's play" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><thr:total>5</thr:total></entry><entry gd:etag="W/&quot;C0UAR387fyp7ImA9Wx9bEUg.&quot;"><id>tag:blogger.com,1999:blog-18392152.post-1076529966543496702</id><published>2010-09-14T16:00:00.000-07:00</published><updated>2011-02-19T13:34:06.107-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-19T13:34:06.107-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Review" /><category scheme="http://www.blogger.com/atom/ns#" term="Article" /><title>Best Way to Implement Paging On AppEngine (Python)</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QeZMFJQwpcE6x0MtCGgzWnFXSfQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QeZMFJQwpcE6x0MtCGgzWnFXSfQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QeZMFJQwpcE6x0MtCGgzWnFXSfQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QeZMFJQwpcE6x0MtCGgzWnFXSfQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Hi,&lt;br /&gt;
I was trying to do pagination on AppEngine, and was trying to find best solution because pagination is not just the matter of solving, that might be easy but question is what is the best way to do it so that performance is also good and you are not overloading the db queries. I evaluated various libraries available online for paging and found that this library is best one &lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://code.google.com/p/he3-appengine-lib/wiki/PagedQuery"&gt;http://code.google.com/p/he3-appengine-lib/wiki/PagedQuery&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Read the API Documentation here, its very easy to use. It wraps your db object so you might not have to do too much of refactoring in your existing code.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Here is example of python code using this library &lt;/b&gt;&lt;br /&gt;
&lt;div style="background-attachment: initial; background-clip: initial; background-color: #303030; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; padding: 15px;"&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;from google.appengine.ext import db
from google.appengine.ext.webapp import RequestHandler, WSGIApplication
import paging;
from paging import *

class SomeStuff(db.Model):
  userHandle= db.StringProperty()
  date = db.DateTimeProperty(auto_now_add=True)
 
def getMyStuff(user,page):
 query = SomeStuff.all()
 query.filter('userHandle =', user);
 query.order("-date")
        #Here i am using the class from library, 
        #download the code from link given above
 myPagedQuery = &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #6fa8dc;"&gt;PagedQuery&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #38c01d;"&gt;(query, 10)
 ret={};
 if page&amp;gt;1:
  ret["results"] = myPagedQuery.fetch_page(page);
 else:
  ret["results"] = myPagedQuery.fetch_page();
 ret["nextPageExists"] = myPagedQuery.has_page(page+1);
 if page-1 &amp;gt;0:
  ret["prevPageExists"] = myPagedQuery.has_page(page-1);
 else:
  ret["prevPageExists"]=False;
 return ret;
class UserPage(RequestHandler):
    def get(self):
        screenname=get_current_user();
        page=self.request.get("page", default_value="1");
 page=int(page);
 pageinfo=getMyStuff(screenname,page);
 stuffs=pageinfo["results"];
 next_page=None;
 prev_page=None;
 if pageinfo["nextPageExists"]: next_page=page+1;
 if pageinfo["prevPageExists"]: prev_page=page-1;
 template_values = {
  "screenname":screenname,
  "stuffs":stuffs,
  "next_page":next_page,
  "prev_page":prev_page
            }
 path = os.path.join(os.path.dirname(__file__), 'userpage.html');
 self.response.out.write(template.render(path, template_values));
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And here is the page template &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: #303030; color: #38c01d; padding: 15px;"&gt;&lt;pre&gt;&amp;lt;ul&amp;gt;
{%for stuff in stuffs%}
 &amp;lt;li&amp;gt;
  {{stuff.date|timesince}} ago
 &amp;lt;/li&amp;gt;
{%endfor%}
&amp;lt;/ul&amp;gt;
{% if prev_page %}   
&amp;lt;a href="/page?page={{prev_page}}"&amp;gt;Previous Page&amp;lt;/a&amp;gt;   
{% endif %}   

{% if next_page %}   
&amp;lt;a href="/page?page={{next_page}}"&amp;gt;Next Page&amp;lt;/a&amp;gt;   
{% endif %}   
&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18392152-1076529966543496702?l=www.markandey.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=G3MNERgLEU8:rt_3MdPWj0U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=G3MNERgLEU8:rt_3MdPWj0U:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=G3MNERgLEU8:rt_3MdPWj0U:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=G3MNERgLEU8:rt_3MdPWj0U:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=G3MNERgLEU8:rt_3MdPWj0U:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=G3MNERgLEU8:rt_3MdPWj0U:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=G3MNERgLEU8:rt_3MdPWj0U:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=G3MNERgLEU8:rt_3MdPWj0U:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?i=G3MNERgLEU8:rt_3MdPWj0U:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/MarkandeyBlog?a=G3MNERgLEU8:rt_3MdPWj0U:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/MarkandeyBlog?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.markandey.com/feeds/1076529966543496702/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.markandey.com/2010/09/best-way-to-implement-paging-on.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/1076529966543496702?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/18392152/posts/default/1076529966543496702?v=2" /><link rel="alternate" type="text/html" href="http://www.markandey.com/2010/09/best-way-to-implement-paging-on.html" title="Best Way to Implement Paging On AppEngine (Python)" /><author><name>Markandey Singh</name><uri>https://profiles.google.com/102471843118365384780</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-oYINMPh3nQE/AAAAAAAAAAI/AAAAAAAAHH0/r25io43iXdY/s512-c/photo.jpg" /></author><thr:total>2</thr:total></entry></feed>

