<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8401870306457898144</id><updated>2011-11-27T16:21:27.887-08:00</updated><category term='upgrade 3.0'/><category term='iPhone'/><category term='jail break'/><category term='Firefox'/><category term='Add-ons'/><category term='firefox notifications'/><category term='http header'/><category term='nSIObserver'/><category term='Toolbar'/><category term='mozilla'/><category term='xpcom'/><category term='Yahoo'/><category term='browser cache'/><title type='text'>Geek Corner</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://geek-corner.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://geek-corner.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Leo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8401870306457898144.post-2343943113861432720</id><published>2010-07-18T23:16:00.000-07:00</published><updated>2010-07-18T23:16:15.059-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xpcom'/><title type='text'>XPCOM: Useful Articles on XPCOM</title><content type='html'>File I/O operations using XPCOM&lt;br /&gt;&lt;a href="https://developer.mozilla.org/en/Code_snippets/File_I//O"&gt;https://developer.mozilla.org/en/Code_snippets/File_I//O&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8401870306457898144-2343943113861432720?l=geek-corner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geek-corner.blogspot.com/feeds/2343943113861432720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8401870306457898144&amp;postID=2343943113861432720' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/2343943113861432720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/2343943113861432720'/><link rel='alternate' type='text/html' href='http://geek-corner.blogspot.com/2010/07/xpcom-useful-articles-on-xpcom.html' title='XPCOM: Useful Articles on XPCOM'/><author><name>Leo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8401870306457898144.post-2776660181545773809</id><published>2010-04-22T01:50:00.000-07:00</published><updated>2010-04-22T03:42:22.524-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nSIObserver'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox notifications'/><category scheme='http://www.blogger.com/atom/ns#' term='xpcom'/><category scheme='http://www.blogger.com/atom/ns#' term='mozilla'/><title type='text'>Firefox Notifications</title><content type='html'>For long, I have been looking for a Mozilla document which list down and describes all the notifications sent by Mozilla which extension authors can catch / listen to. I have not got such a document so far and so finally I decided to compile one. All the extension authors, if you land on this page and would like to add one please add it as comment and let's grow this list:&lt;br /&gt;&lt;br /&gt;browser-search-engine-modified:&lt;br /&gt;&lt;br /&gt;xpcom-shutdown:&lt;br /&gt;&lt;br /&gt;http-on-modify-request:&lt;br /&gt;&lt;br /&gt;http-on-examine-response:&lt;br /&gt;&lt;br /&gt;profile-before-change:&lt;br /&gt;&lt;br /&gt;profile-after-change:&lt;br /&gt;&lt;br /&gt;quit-application-requested:&lt;br /&gt;&lt;br /&gt;quit-application:&lt;br /&gt;&lt;br /&gt;quit-application-granted:&lt;br /&gt;&lt;br /&gt;network:offline-status-changed:&lt;br /&gt;&lt;br /&gt;xpinstall-restart:&lt;br /&gt;&lt;br /&gt;cookie-changed:&lt;br /&gt;&lt;br /&gt;cookie-rejected:&lt;br /&gt;&lt;br /&gt;perm-changed:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;and finally I have got this document so I though of updating this blog with the url so that others can benefit too.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="https://developer.mozilla.org/en/Observer_Notifications"&gt;https://developer.mozilla.org/en/Observer_Notifications&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/8401870306457898144-2776660181545773809?l=geek-corner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geek-corner.blogspot.com/feeds/2776660181545773809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8401870306457898144&amp;postID=2776660181545773809' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/2776660181545773809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/2776660181545773809'/><link rel='alternate' type='text/html' href='http://geek-corner.blogspot.com/2010/04/firefox-notifications.html' title='Firefox Notifications'/><author><name>Leo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8401870306457898144.post-5062716909312179519</id><published>2010-02-21T22:19:00.000-08:00</published><updated>2010-02-21T22:31:00.767-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Toolbar'/><category scheme='http://www.blogger.com/atom/ns#' term='Yahoo'/><category scheme='http://www.blogger.com/atom/ns#' term='Add-ons'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Yahoo! Firefox Toolbar</title><content type='html'>I installed Yahoo! Firefox Toolbar today and realized that it offers some great features that could be handy to and helpful in your day to day work.&lt;br /&gt;&lt;br /&gt;Please check this corner, I plan to write a review about the toolbar soon.&lt;br /&gt;&lt;br /&gt;You can download Yahoo! Firefox Toolbar from&lt;br /&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/2032"&gt;https://addons.mozilla.org/en-US/firefox/addon/2032&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8401870306457898144-5062716909312179519?l=geek-corner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geek-corner.blogspot.com/feeds/5062716909312179519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8401870306457898144&amp;postID=5062716909312179519' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/5062716909312179519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/5062716909312179519'/><link rel='alternate' type='text/html' href='http://geek-corner.blogspot.com/2010/02/yahoo-firefox-toolbar.html' title='Yahoo! Firefox Toolbar'/><author><name>Leo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8401870306457898144.post-922421148081025070</id><published>2009-07-04T23:50:00.001-07:00</published><updated>2009-07-14T04:17:46.978-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='upgrade 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='jail break'/><title type='text'>Upgrade an old Jailbroken iPhone to firmware 3.0: Part 2</title><content type='html'>Download of 3.0 version might take a lot of time depending on you internet bandwidth.&lt;br /&gt;&lt;br /&gt;Once the download of OS 3.0 completes, the installation process will start automatically. The installation seems to be doing lot of things and I have been patiently watching it doing things.&lt;br /&gt;&lt;br /&gt;For most part the installation process, it has been showing a message "Restoring iPhone firmware..."&lt;br /&gt;&lt;br /&gt;OK, after showing the above status message for long, the iPhone has got restored and it's in a completely locked state and asking for a valid SIM. The SIM that I use is not iPhone supported and that is the reason I had jailbroken it when I had started using iPhone.&lt;br /&gt;&lt;br /&gt;So, with this exercise,one thing is verified that a jailbroken iPhone cannot be directly upgraded to another jailbroken higher version of firmware. And an upgrade of firmware will always take you to a locked state and you will have to go through the jailbreaking exercise all over again. I had jailbroken my iPhone using ZipPhone utility 18 months back. I am not sure at this point if the same ZipPhone utility is going to help me jailbreak again or not. I am going to try it out and update the blog soon....the struggle to bring the iPhone back continues..........&lt;br /&gt;&lt;br /&gt;While I look around for options to jailbreak and then unlock, some of us confuse about the terminology. Let me define the terms for everyone's clarity:&lt;br /&gt;&lt;br /&gt;Jailbreaking: make the phone able to accept 3rd party application.&lt;br /&gt;&lt;br /&gt;Unlock: make the phone work with other carrier beside AT&amp;amp;T.&lt;br /&gt;&lt;br /&gt;In other to unlock, one must jailbreak the phone first, so that you can install an application, to make the phone work with all carriers.&lt;br /&gt;&lt;br /&gt;So here you go with unlocking the updated software.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Prepration:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. download "&lt;span style="font-weight: bold;"&gt;redsn0w.exe&lt;/span&gt;" from dev team blog ( official blog of apple developers)&lt;br /&gt;http://blog.iphone-dev.org/post/126908912/redsn0w-in-june&lt;br /&gt;&lt;br /&gt;2. download an appropriate boot loader file from http://www.quickpwn.com (*.ipsw file)&lt;br /&gt;&lt;br /&gt;3. download BL-39.bin and BL-46.bin (iPhone bootloader 39 and 46) ( search google and you will get lot of sites from where you can download it.&lt;br /&gt;&lt;br /&gt;4. Launch redsnow.exe from your windows machine (downloaded in step#1) and follow the instructions CAREFULLY.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://geek-corner.blogspot.com/2009/07/upgrade-old-jailbroken-iphone-to.html" style="font-size: 14pt;"&gt;Part 1&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8401870306457898144-922421148081025070?l=geek-corner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geek-corner.blogspot.com/feeds/922421148081025070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8401870306457898144&amp;postID=922421148081025070' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/922421148081025070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/922421148081025070'/><link rel='alternate' type='text/html' href='http://geek-corner.blogspot.com/2009/07/upgrade-old-jailbroken-iphone-to_04.html' title='Upgrade an old Jailbroken iPhone to firmware 3.0: Part 2'/><author><name>Leo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8401870306457898144.post-430691696989958938</id><published>2009-07-04T10:46:00.000-07:00</published><updated>2009-07-05T01:57:44.603-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='upgrade 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='jail break'/><title type='text'>Upgrade an old Jailbroken iPhone to firmware 3.0: Part 1</title><content type='html'>ohhhhh I love my iPhone. I have a 2G iPhone which I got just before 3G was about to get launched and I jail broke. It has been close to 18 months that I have been using this jail broken iPhone without any issues. I have been running it on 1.X firmware which it came with and never had any pressing need to upgrade it so far.&lt;br /&gt;&lt;br /&gt;But today the lazy me have decide to either break it or upgrade it successfully to firmware 3.0. I am not sure what's going to be the outcome of this process but I am going to try it.&lt;br /&gt;&lt;br /&gt;And I will keep updating this blog as and when I proceed further and keep documenting whatever issues I encounter for the benefit of all the other people who would like to try doing the same thing.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;1.&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Upgrade to latest iTunes 8.2&lt;/span&gt; : As a first step, I am going to install latest iTunes on my Win XP laptop. AFAIK, firmware 3.0 is supported by iTunes 8.2 only.&lt;br /&gt;&lt;br /&gt;So, I was so far running on iTunes 8.1 and I have just kicked off the iTunes update process. The update process is downloading the update bit which is 83 MB in size. So, I guess it's going to take little time before I have iTunes 8.2 installed and then I will embark on my risky journey of 3.0 upgrade with a potential danger of loosing my beloved iPhone for always :(.&lt;br /&gt;&lt;br /&gt;Ok, so after a few kinks, I could upgrade my iTunes to 8.2.0.23. I had few issue in upgrading iTunes. Just a note of advice: Close you iTunes after you have launched the iTune updater.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Backup you iPhone: &lt;/span&gt;take a backup of your current iPhone. In-case things go drastically wrong, you should not loose the many contacts and pics that you have in your iPhone.&lt;br /&gt;&lt;br /&gt;Taking iPhone back is easy. Use the following steps to take a backup:&lt;br /&gt;1. Connect you iPhone to laptop with iTunes running.&lt;br /&gt;2. Once iTunes detects your iPhone, right click on iPhone appearing on left hand panel in iTunes under "Devices" category. You will see an option to backup your iPhone.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Upgrade to firmware version 3.0&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Let's start the risky journey. While you iPhone is connected to iTunes, you would notice that iTunes in the "summary" tab have the details of what's the current firmware version that your iPhone is running and what is latest one available.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ITXyJgLJ1LI/SlBJYHQoisI/AAAAAAAAAWk/djqHipPP6f8/s1600-h/iphone.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 153px;" src="http://3.bp.blogspot.com/_ITXyJgLJ1LI/SlBJYHQoisI/AAAAAAAAAWk/djqHipPP6f8/s400/iphone.PNG" alt="" id="BLOGGER_PHOTO_ID_5354860635558021826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;My iPhone is currently running 1.1.4 firmware ( how outdated I am :( ).  I am going to click on the "Update" button that you see in the image to start the upgrade to 3.0 process ( and god knows what will happen to my iPhone after this, Let me have a last look at it ;) )&lt;br /&gt;&lt;br /&gt;1 ....2........3.......... and I have clicked on the "Update" button&lt;br /&gt;&lt;br /&gt;I am not sure, how much time this download and install process is going to take. Let's see, it's 1208PM local time that I have kicked in this process. I am hoping that at the end of it, I should have an iPhone running on firmware 3.0 and locked all over again which then I will have to jail break again.&lt;br /&gt;&lt;br /&gt;And It the download got over at 1.30PM local time.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://geek-corner.blogspot.com/2009/07/upgrade-old-jailbroken-iphone-to_04.html" style="font-size:14pt"&gt;Part 2&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8401870306457898144-430691696989958938?l=geek-corner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geek-corner.blogspot.com/feeds/430691696989958938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8401870306457898144&amp;postID=430691696989958938' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/430691696989958938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/430691696989958938'/><link rel='alternate' type='text/html' href='http://geek-corner.blogspot.com/2009/07/upgrade-old-jailbroken-iphone-to.html' title='Upgrade an old Jailbroken iPhone to firmware 3.0: Part 1'/><author><name>Leo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ITXyJgLJ1LI/SlBJYHQoisI/AAAAAAAAAWk/djqHipPP6f8/s72-c/iphone.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8401870306457898144.post-4747496544184972724</id><published>2009-03-17T04:48:00.000-07:00</published><updated>2009-03-17T04:57:21.257-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='browser cache'/><category scheme='http://www.blogger.com/atom/ns#' term='http header'/><title type='text'>browser caching</title><content type='html'>I have been struggling to get a solution to cache some of the files which are dynamically generated by PHP sitting on Apache server. A bit of investigation on HTTP Request/Response header revealed that "Last-Modified" Response header is set by the web server for static contents only like *.css/*.js, images and *.htm and not for dynamically generated content by *.aspx,*.jsp or *.php. This has been the main cause of such dymanically generated content not being cached by the browser.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A solution proposed by most of articles on web is to configure the web server to support "If Modified Since" request header. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8401870306457898144-4747496544184972724?l=geek-corner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geek-corner.blogspot.com/feeds/4747496544184972724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8401870306457898144&amp;postID=4747496544184972724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/4747496544184972724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/4747496544184972724'/><link rel='alternate' type='text/html' href='http://geek-corner.blogspot.com/2009/03/browser-caching.html' title='browser caching'/><author><name>Leo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8401870306457898144.post-8914507324789077745</id><published>2009-01-29T03:14:00.001-08:00</published><updated>2009-01-29T03:14:51.607-08:00</updated><title type='text'>Get host name from URL in javascript</title><content type='html'>&lt;div&gt; function extractHostName(url)&lt;/div&gt;&lt;div&gt;    {&lt;/div&gt;&lt;div&gt;        var idxDSlash = url.indexOf("//")&lt;/div&gt;&lt;div&gt;        if(idxDSlash &gt; 0)&lt;/div&gt;&lt;div&gt;            url = url.slice(idxDSlash+2,url.length)&lt;/div&gt;&lt;div&gt;        var idxSSlash = url.indexOf("/")&lt;/div&gt;&lt;div&gt;        if(idxSSlash &gt; 0)&lt;/div&gt;&lt;div&gt;            url = url.slice(0,idxSSlash)&lt;/div&gt;&lt;div&gt;        return url;&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/8401870306457898144-8914507324789077745?l=geek-corner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geek-corner.blogspot.com/feeds/8914507324789077745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8401870306457898144&amp;postID=8914507324789077745' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/8914507324789077745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/8914507324789077745'/><link rel='alternate' type='text/html' href='http://geek-corner.blogspot.com/2009/01/get-host-name-from-url-in-javascript.html' title='Get host name from URL in javascript'/><author><name>Leo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8401870306457898144.post-5504360209463070745</id><published>2008-11-30T21:58:00.000-08:00</published><updated>2008-12-24T01:01:46.349-08:00</updated><title type='text'>Offline Cache in Firefox</title><content type='html'>Firefox web browser maintains three different kinds of Cache,  Memory Cache, Disk Cache and Offline Cache. While all three type of Caching are equally important at different scenario, We are going to focus on Offline Caching in Firefox.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Firefox Cache can be viewed using Cache viewer by typeing "about:cache" in the URL box and hitting enter. The offlline Cache is stored at &lt;/div&gt;&lt;div&gt;Application Data\Mozilla\Firefox\Profiles\0x6pj2d8.default\OfflineCache&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The offline caching mechanism has been introduced in Firefox 3 only and is not availble in the previous versions of firefox.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8401870306457898144-5504360209463070745?l=geek-corner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geek-corner.blogspot.com/feeds/5504360209463070745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8401870306457898144&amp;postID=5504360209463070745' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/5504360209463070745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/5504360209463070745'/><link rel='alternate' type='text/html' href='http://geek-corner.blogspot.com/2008/11/offline-cache-in-firefox.html' title='Offline Cache in Firefox'/><author><name>Leo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8401870306457898144.post-6667657043852146876</id><published>2008-11-27T01:56:00.000-08:00</published><updated>2008-11-27T02:08:49.542-08:00</updated><title type='text'>Firefox: DNS Caching</title><content type='html'>To enhance the user experience and serve the web-pages faster, Firefox has in-built DNS caching mechanism. Firefox browser being compatible with multiple platforms, it does make perfect sense to not depend on the operating system for DNS caching. This caching is turned on by default and stores the IP Address of all the recently visited websites allowing Firefox to avoid a request to DNS for getting the IP Address and thus serving the page faster.&lt;br /&gt;&lt;br /&gt;The DNS Caching in Firefox has been designed keeping the normal browsing behaviour of users and could be be a problem when you want to set the IP Address manaully for some testing purpose (e.g. via a hosts file). However, for the benefit such advanced users who use hosts file to manually control the IP Address, Firefox has given a way to disable the DNS Caching feature. This is done by creating an integer preference value "&lt;b&gt;network.dnsCacheExpiration" &lt;/b&gt;in FireFox about:config and setting a value '0' (zero) for this.&lt;br /&gt;&lt;br /&gt;If Firefox DNS Caching is disabled, it uses the DNS Caching provided by OS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8401870306457898144-6667657043852146876?l=geek-corner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geek-corner.blogspot.com/feeds/6667657043852146876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8401870306457898144&amp;postID=6667657043852146876' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/6667657043852146876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/6667657043852146876'/><link rel='alternate' type='text/html' href='http://geek-corner.blogspot.com/2008/11/firefox-dns-caching.html' title='Firefox: DNS Caching'/><author><name>Leo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8401870306457898144.post-1716564943477741648</id><published>2008-09-17T02:25:00.000-07:00</published><updated>2008-09-17T02:31:43.648-07:00</updated><title type='text'>Introduction to Code Signing - Part I</title><content type='html'>&lt;div&gt;An ongoing question/issue that the Software industry has faced is, "How can end user trust a piece of software?"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A packaged software bought from a sales outlet can be trusted for it's integrity but how about the software that you download on Internet and the bits and pieces gets transmitted on Internet. It's possible to alter the code  while it's in transit and getting downloaded to user's machine. A hacker can very well inject a malicious code into this code while the code is in transit over wire.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Most of the current day browsers throw up a warning message for possible danger or threat to the systen in such cases but none actually gurantees that the code is what it claims it is.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Software industry has always been in need of an appraoch which can ensure that internet can be relied as a secured medium for software distribution. The most widely used solution for this problem is Digital Signature / Digital Certificate method.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Digital Signature:&lt;/span&gt; &lt;/div&gt;&lt;div&gt;when you want to distribute data and want to ensure the recipients that it does indeed come from you, you sing the data. Signing does not alter the data but simply bundle your signature along with the data. Signing of the data is does with the help of a private key of the software distributor.&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;span class="Apple-style-span" style="font-weight: bold;"&gt;Digital Certificate:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;A certificate is a set of data that completely identifies an entity and is issues by a Certification Authority.The data set includes the entity's public cryptographic key.When the sender of a message signs the message with it's private key, the recipient of the message can use the sender's public key to verify Sender's indentity. &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note: The Digital Certificate (public key) can only be used to verify the signature and not produce the signaure. Only private key can be used to produce a Digital Signature.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the next part of this blog, we would go into more details of Digital Signature/Digital Certificate.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8401870306457898144-1716564943477741648?l=geek-corner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geek-corner.blogspot.com/feeds/1716564943477741648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8401870306457898144&amp;postID=1716564943477741648' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/1716564943477741648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/1716564943477741648'/><link rel='alternate' type='text/html' href='http://geek-corner.blogspot.com/2008/09/introduction-to-code-signing-part-i.html' title='Introduction to Code Signing - Part I'/><author><name>Leo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8401870306457898144.post-2015913980900920555</id><published>2008-09-16T05:04:00.000-07:00</published><updated>2008-09-16T05:05:59.352-07:00</updated><title type='text'>Google on Artificial Inteliigence</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: verdana; font-size: 15px; line-height: 19px; "&gt;&lt;p&gt;The &lt;em&gt;Ignorance is Futile&lt;/em&gt; blog collected many &lt;a href="http://ignoranceisfutile.wordpress.com/2008/09/13/google-founders-artificial-intelligence-quotes-archive/" style="color: rgb(169, 64, 29); text-decoration: underline; "&gt;quotes by Google employees on the subject of Artificial Intelligence&lt;/a&gt;. I find one of the most interesting quotes to be the one from 2005 in relation to Google Book Search, formerly called Google Print (and before that, code-named Project Ocean). A Google employee &lt;a href="http://www.edge.org/3rd_culture/dyson05/dyson05_index.html" style="color: rgb(169, 64, 29); text-decoration: underline; "&gt;is quoted to have said&lt;/a&gt;, “We are not scanning all those books to be read by people ... We are scanning them to be read by an AI.”&lt;/p&gt;&lt;p&gt;Now, AI is a bit of a fuzzy term; as algorithms progress (especially the kind working on large data sets – like the web) we come to accept more and more as everyday technology which we might have considered a distant, magical AI decades ago. Now by some definitions, a real AI is the kind of thing that convinces you it’s a human talking – &lt;a href="http://en.wikipedia.org/wiki/Turing_test" style="color: rgb(169, 64, 29); text-decoration: underline; "&gt;the Turing test&lt;/a&gt;, proposed in the 1950 paper “Computing Machinery and Intelligence” describes the experiment for this, as written in Wikipedia: “a human judge engages in a natural language conversation with one human and one machine, each of which try to appear human; if the judge cannot reliably tell which is which, then the machine is said to pass the test.”&lt;/p&gt;&lt;p&gt;Google’s focus here seems to be clear: mine more and more data more intelligently to provide better services – which to connect with ads, or perhaps in the future other ways to make revenue. Such a service must not necessarily appear to be a human, Turing-test-style, to attract users. We often do hope for the service to understand and speak human language, but we wouldn’t want an AI telling us it will get back to our question in two hours after properly researching the subject, and that, by the way, it was kind of offended that we asked it such an easy question in the first place. Rather, we expect answers in non-human split-seconds, and because we know we’re talking to a machine, not a human, we also may feel anonymous when using the service, offering a much deeper glimpse into our personality than we’d otherwise would.&lt;/p&gt;&lt;p&gt;Two years ago, an internal strategic document by Google titled “&lt;a href="http://blogoscoped.com/archive/2006-10-26-n80.html" style="color: rgb(169, 64, 29); text-decoration: underline; "&gt;Big Goals and Directions - 2006&lt;/a&gt;” revealed that Google wants to have the world’s top AI research laboratory. I wonder if they consider that goal achieved by now?&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Note: This article published in &lt;a href="http://blogoscoped.com/"&gt;http://blogoscoped.com/&lt;/a&gt; and is not the original art of the author of this blog.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8401870306457898144-2015913980900920555?l=geek-corner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geek-corner.blogspot.com/feeds/2015913980900920555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8401870306457898144&amp;postID=2015913980900920555' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/2015913980900920555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/2015913980900920555'/><link rel='alternate' type='text/html' href='http://geek-corner.blogspot.com/2008/09/google-on-artificial-inteliigence.html' title='Google on Artificial Inteliigence'/><author><name>Leo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8401870306457898144.post-6262926392362836548</id><published>2008-09-16T03:31:00.000-07:00</published><updated>2008-09-16T05:01:07.843-07:00</updated><title type='text'>My Hands On Google Chrome</title><content type='html'>I have been thinking of doing this ever since the news of Google releasing a web browser broke out. Somehow the busy schedule at Work was keeping me away from doing this but finally I got my hands on this new Browser, the Google Chrome (GC), the hot topic over coffee in any tech companies these day.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first experience was good. I had kept my expectation very low inspite of the fact that it is a Google product. But the reason thats it's beta of and that too of a Browser ( after all how many people of dared to reach to stage of laucnhing a browser in the tech history ) has forced me to have low expectation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The browser has a nice look and feel with some nice features. The browser tabs are above the navigation url bar and the navigation bar can be used to perform direct searches on search engines like Yahoo,Google, Amazon etc. However, this might be confusing for a common-non-techie user. Having a seperate chrome box for performing searches might sound traditional now but I would still go for it for keeping things simple.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The surfing history and download history are tracked like other borwsers and GC has provided a nice UI to display these histories.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Opening a new tab gives you a tabbed view of the open sites and you also get a short cut to search on your preferred search engines on the new tab. However, a tabbed view is a old concept in the browser world now.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Additionally, I also found a "javascript console" and "javascript debugger" bundled with the browser itseld. This will  be handy for the developers to debug code but again this is a standard feature which is available in Firefox with the help of add-ons.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As far as I understood, GC is going to use one process per tab (like IE8) to ensure that slowdown in one tab does not hamper the functioning of another tab. The browser comes with Java Script virtual machine v8, a JS engine which compiles javascript rather than processing it and is supposed to be faster. Even though, there are few blogs suggesting that Mozill's trace monkey ( a mozilla project to improve the javascript engine performance ) is faster than v8 but I haven't got a chance to have my hands dirty on Trace monkey. Trace monkey is still under development and will get bundled with Firefox 3.1 release most likely.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With all these details, GC looks great as a beta release for a Browser and has created lot more competetition in browser market. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Let hope to see better browsers with every passing year.&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/8401870306457898144-6262926392362836548?l=geek-corner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geek-corner.blogspot.com/feeds/6262926392362836548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8401870306457898144&amp;postID=6262926392362836548' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/6262926392362836548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/6262926392362836548'/><link rel='alternate' type='text/html' href='http://geek-corner.blogspot.com/2008/09/my-hands-on-google-chrome.html' title='My Hands On Google Chrome'/><author><name>Leo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8401870306457898144.post-6989856387695842420</id><published>2008-09-14T07:08:00.000-07:00</published><updated>2008-09-14T07:19:17.395-07:00</updated><title type='text'>Google Chrome Arrives</title><content type='html'>Google Chrome is a web browser built with open source code and developed by Google. The open source code project behind Google Chrome was release on September 1, 2008 under the BSD license.&lt;br /&gt;&lt;br /&gt;Features include:&lt;br /&gt;&lt;br /&gt;    * Tabbed browsing where each tab gets its own process, leading to faster and more stable browsing. If one tab crashes, the whole browser doesn’t go down with it&lt;br /&gt;   &lt;br /&gt;    * A distinct user interface that places tabs on top of the browser window instead of right below the address bar&lt;br /&gt;   &lt;br /&gt;    * An “incognito” mode that lets you browse the web in complete privacy because it doesn’t record any of your activity&lt;br /&gt;   &lt;br /&gt;    * A new JavaScript engine built from the ground up for speed&lt;br /&gt;   &lt;br /&gt;    * Malware and phishing lists that automatically update themselves and warn you of bad websites&lt;br /&gt;&lt;br /&gt;    * A default homepage that displays your most commonly used sites and other personalized information&lt;br /&gt;&lt;br /&gt;Even though Google has claimed that the Java Script engine of this new browser is tremendously faster than the existing browsers like IE 8.0 and FF3.0. But mozilla has published some figure, claiming that their Trace Monkey Project ( A Mozilla Project to improve the performance of JS engine of Firefox Browser which is currently in progress ) has better performance than Google Chrome Browser.&lt;br /&gt;&lt;br /&gt;The initial comparison details of the performance of the two browsers is published at http://mrtopf.de/blog/web20/the-browser-war-has-started-mozilla-firefox-vs-google-chrome-on-js-speed/ .&lt;br /&gt;&lt;br /&gt;So the browser war which started in late 1990s with IE's inception and caught fire in 2003 with Mozilla jumping into the battle field has just got heated up with Google Chrome's release and even though this war is here stay with all the three major players IE/Mozilla/Google trying to out-do the other two, the end user is going to get benefited with this healy market competetion.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8401870306457898144-6989856387695842420?l=geek-corner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geek-corner.blogspot.com/feeds/6989856387695842420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8401870306457898144&amp;postID=6989856387695842420' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/6989856387695842420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/6989856387695842420'/><link rel='alternate' type='text/html' href='http://geek-corner.blogspot.com/2008/09/google-chrome-arrives.html' title='Google Chrome Arrives'/><author><name>Leo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8401870306457898144.post-3196538855716902973</id><published>2008-01-31T22:51:00.000-08:00</published><updated>2008-09-14T06:46:14.360-07:00</updated><title type='text'>The new buzz: Open ID</title><content type='html'>What is Open ID?&lt;br /&gt;&lt;br /&gt;OpenID is a decentralized Single single sign-on system. Using OpenID-enabled sites, web users do not need to remember traditional authentication tokens such as username and password. Instead, they only need to be previously registered on a website with an OpenID "identity provider" (IdP). Since OpenID is decentralized, any website can employ OpenID software as a way for users to sign in; OpenID solves the problem without relying on any centralized website to confirm digital identity.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What Problem Open ID is attempting to solve?&lt;br /&gt;&lt;br /&gt;OpenID is attempting to solve web-scale single sign-on. The number of sites which require users to sign in continues to explode, while those same users suffer from a severe case of sign-up fatigue. The most severe consequence of this is poor password management - users re-use the same password on many different sites, but this dramatically increases the chance that their password will be compromised - if just one of those sites has a security problem all of the user's accounts might be stolen.&lt;br /&gt;With OpenID, user's just need to set one password with their OpenID provider. They can securely use that account to sign in to many different sites, without needing to manage many different passwords. Rather than having dozens of potential attack targets, they need only focus on securing their relationship with one site.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;How does Open ID work?&lt;br /&gt;Coming Soon.....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8401870306457898144-3196538855716902973?l=geek-corner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geek-corner.blogspot.com/feeds/3196538855716902973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8401870306457898144&amp;postID=3196538855716902973' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/3196538855716902973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/3196538855716902973'/><link rel='alternate' type='text/html' href='http://geek-corner.blogspot.com/2008/01/new-buzz-open-id.html' title='The new buzz: Open ID'/><author><name>Leo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8401870306457898144.post-131414371428486704</id><published>2008-01-09T01:44:00.000-08:00</published><updated>2008-09-17T01:04:48.951-07:00</updated><title type='text'>What is RSS?</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: -webkit-sans-serif; font-size: 13px; line-height: 19px; "&gt;&lt;b&gt;RSS&lt;/b&gt; is a family of &lt;a href="http://en.wikipedia.org/wiki/Web_feed" title="Web feed" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;Web feed&lt;/a&gt; formats used to publish frequently updated works such as &lt;a href="http://en.wikipedia.org/wiki/Blog" title="Blog" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;blog&lt;/a&gt; entries, news headlines, audio, and video in a standardized format.&lt;sup id="cite_ref-Netsc99_1-0" class="reference" style="line-height: 1em; "&gt;&lt;a href="http://en.wikipedia.org/wiki/RSS_(file_format)#cite_note-Netsc99-1" title="" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;[2]&lt;/a&gt;&lt;/sup&gt; An RSS document (which is called a "feed," "web feed,"&lt;sup id="cite_ref-GuardWF_2-0" class="reference" style="line-height: 1em; "&gt;&lt;a href="http://en.wikipedia.org/wiki/RSS_(file_format)#cite_note-GuardWF-2" title="" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;[3]&lt;/a&gt;&lt;/sup&gt; or "channel") includes full or summarized text plus metadata such as publishing dates and authorship. Web feeds benefit publishers by letting them syndicate content quickly and automatically. They benefit readers who want to subscribe to timely updates from favored websites or to aggregate feeds from many sites into one place. RSS feeds can be read using &lt;a href="http://en.wikipedia.org/wiki/Software" title="Software" class="mw-redirect" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;software&lt;/a&gt;called an "RSS reader," "feed reader," or an "&lt;a href="http://en.wikipedia.org/wiki/Aggregator" title="Aggregator" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;aggregator&lt;/a&gt;," which can be &lt;a href="http://en.wikipedia.org/wiki/Web_application" title="Web application" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;web-based&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Application_software" title="Application software" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;desktop-based&lt;/a&gt;. A standardized &lt;a href="http://en.wikipedia.org/wiki/XML" title="XML" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;XML&lt;/a&gt; file format allows the information to be published once and viewed by many different programs. The user subscribes to a feed by entering the feed's link into the reader or by clicking an RSS icon in a browser that initiates the subscription process. The RSS reader checks the user's subscribed feeds regularly for new work, downloads any updates that it finds, and provides a &lt;a href="http://en.wikipedia.org/wiki/User_interface" title="User interface" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;user interface&lt;/a&gt; to monitor and read the feeds.&lt;/span&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/8401870306457898144-131414371428486704?l=geek-corner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geek-corner.blogspot.com/feeds/131414371428486704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8401870306457898144&amp;postID=131414371428486704' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/131414371428486704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/131414371428486704'/><link rel='alternate' type='text/html' href='http://geek-corner.blogspot.com/2008/01/what-is-rss.html' title='What is RSS?'/><author><name>Leo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8401870306457898144.post-8150438711367390257</id><published>2008-01-09T01:16:00.000-08:00</published><updated>2008-01-09T01:35:26.675-08:00</updated><title type='text'>How to add to Bookmark in IE/FF using javascript?</title><content type='html'>All the web developers would agree on one point that it has been a challenge to write a code which should behave almost identically in all the browsers. If not all the broweser it should behave consistently in Internet Explorer(IE)/Firefox(FF)/Opera. It takes a few hours to write a code which works on either IE or FF and takes another couple of hours to make that code generic enough so that it works both on IE and FF. I too was caught with this bug when I was trying to add an "Add this site to Bookmark" link to a webpage. The following code should do this desired task of adding the current website to the Bookmark of the browser:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function AddToBookmark()&lt;br /&gt;{&lt;br /&gt;      &lt;br /&gt;       title = "Webpage Title";  &lt;br /&gt;      &lt;br /&gt;       if (window.sidebar)&lt;br /&gt;      { // Mozilla Firefox Bookmark &lt;br /&gt;             window.sidebar.addPanel(title, url,"");&lt;br /&gt;       }&lt;br /&gt;      else if( window.external )&lt;br /&gt;      { // IE Favorite &lt;br /&gt;            window.external.AddFavorite( url, title);&lt;br /&gt;       }&lt;br /&gt;      else if(window.opera &amp;amp;&amp;amp; window.print)&lt;br /&gt;      { // Opera Hotlist  return true;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The code might need a few settings to be changed on a Firefox browser to behave properly and not open the saved bookmark in the side pannel of the browser.&lt;br /&gt;&lt;br /&gt;&lt;script language="JavaScript1.2" type="text/javascript"&gt;&lt;br /&gt;&lt;br /&gt;function AddToBookmark()&lt;br /&gt;{&lt;br /&gt;      title = "Webpage Title";&lt;br /&gt;     &lt;br /&gt;      if (window.sidebar) { // Mozilla Firefox Bookmark  window.sidebar.addPanel(title, url,""); }&lt;br /&gt;      else if( window.external ) { // IE Favorite&lt;br /&gt;  window.external.AddFavorite( url, title); } &lt;br /&gt;      else if(window.opera &amp;&amp; window.print) { // Opera Hotlist  &lt;br /&gt;           return true; } }&lt;br /&gt;&lt;br /&gt;      //create a link on the window.     &lt;br /&gt;&lt;br /&gt;      if (window.external) { &lt;br /&gt;document.write('&lt;a href="javascript:CreateBookmarkLink()"&gt;Add to Favorites&lt;/a&gt;');&lt;br /&gt;  } else  if (window.sidebar) {  document.write('&lt;a href="javascript:CreateBookmarkLink()"&gt;Bookmark Page&lt;/a&gt;');  } else if (window.opera &amp;&amp; window.print) { &lt;br /&gt;   document.write('&lt;a href="javascript:CreateBookmarkLink()"&gt;Add Bookmark&lt;/a&gt;'); }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8401870306457898144-8150438711367390257?l=geek-corner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geek-corner.blogspot.com/feeds/8150438711367390257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8401870306457898144&amp;postID=8150438711367390257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/8150438711367390257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/8150438711367390257'/><link rel='alternate' type='text/html' href='http://geek-corner.blogspot.com/2008/01/how-to-add-to-bookmark-in-ieff-using.html' title='How to add to Bookmark in IE/FF using javascript?'/><author><name>Leo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8401870306457898144.post-6959666303411283906</id><published>2007-06-30T16:16:00.001-07:00</published><updated>2007-06-30T16:16:25.678-07:00</updated><title type='text'>What is a Copy Constructor?</title><content type='html'>The copy constructor lets you create a new object from an existing one by initialization. A copy constructor of a class A is a nontemplate constructor in which the first parameter is of type A&amp;, const A&amp;, volatile A&amp;, or const volatile A&amp;, and the rest of its parameters (if there are any) have default values. &lt;br /&gt;&lt;br /&gt;If you do not declare a copy constructor for a class A, the compiler will implicitly declare one for you, which will be an inline public member. &lt;br /&gt;&lt;br /&gt;The following example demonstrates implicitly defined and user-defined copy constructors: &lt;br /&gt;&lt;br /&gt;#include &lt;iostream&gt;&lt;br /&gt;using namespace std;&lt;br /&gt; &lt;br /&gt;struct A {&lt;br /&gt;  int i;&lt;br /&gt;  A() : i(10) { }&lt;br /&gt;};&lt;br /&gt; &lt;br /&gt;struct B {&lt;br /&gt;  int j;&lt;br /&gt;  B() : j(20) {&lt;br /&gt;    cout &lt;&lt; "Constructor B(), j = " &lt;&lt; j &lt;&lt; endl;&lt;br /&gt;  }&lt;br /&gt; &lt;br /&gt;  B(B&amp; arg) : j(arg.j) {&lt;br /&gt;    cout &lt;&lt; "Copy constructor B(B&amp;), j = " &lt;&lt; j &lt;&lt; endl;&lt;br /&gt;  }&lt;br /&gt; &lt;br /&gt;  B(const B&amp;, int val = 30) : j(val) {&lt;br /&gt;    cout &lt;&lt; "Copy constructor B(const B&amp;, int), j = " &lt;&lt; j &lt;&lt; endl;&lt;br /&gt;  }&lt;br /&gt;};&lt;br /&gt; &lt;br /&gt;struct C {&lt;br /&gt;  C() { }&lt;br /&gt;  C(C&amp;) { }&lt;br /&gt;};&lt;br /&gt; &lt;br /&gt;int main() {&lt;br /&gt;  A a;&lt;br /&gt;  A a1(a);&lt;br /&gt;  B b;&lt;br /&gt;  const B b_const;&lt;br /&gt;  B b1(b);&lt;br /&gt;  B b2(b_const);&lt;br /&gt;  const C c_const;&lt;br /&gt;//  C c1(c_const);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;The following is the output of the above example: &lt;br /&gt;&lt;br /&gt;Constructor B(), j = 20&lt;br /&gt;Constructor B(), j = 20&lt;br /&gt;Copy constructor B(B&amp;), j = 20&lt;br /&gt;Copy constructor B(const B&amp;, int), j = 30&lt;br /&gt;&lt;br /&gt;The statement A a1(a) creates a new object from a with an implicitly defined copy constructor. The statement B b1(b) creates a new object from b with the user-defined copy constructor B::B(B&amp;). The statement B b2(b_const) creates a new object with the copy constructor B::B(const B&amp;, int). The compiler would not allow the statement C c1(c_const) because a copy constructor that takes as its first parameter an object of type const C&amp; has not been defined. &lt;br /&gt;&lt;br /&gt;The implicitly declared copy constructor of a class A will have the form A::A(const A&amp;) if the following are true: &lt;br /&gt;&lt;br /&gt;The direct and virtual bases of A have copy constructors whose first parameters have been qualified with const or const volatile &lt;br /&gt;The nonstatic class type or array of class type data members of A have copy constructors whose first parameters have been qualified with const or const volatile &lt;br /&gt;If the above are not true for a class A, the compiler will implicitly declare a copy constructor with the form A::A(A&amp;). &lt;br /&gt;&lt;br /&gt;The compiler cannot allow a program in which the compiler must implicitly define a copy constructor for a class A and one or more of the following are true: &lt;br /&gt;&lt;br /&gt;Class A has a nonstatic data member of a type which has an inaccessible or ambiguous copy constructor. &lt;br /&gt;Class A is derived from a class which has an inaccessible or ambiguous copy constructor. &lt;br /&gt;The compiler will implicitly define an implicitly declared constructor of a class A if you initialize an object of type A or an object derived from class A. &lt;br /&gt;&lt;br /&gt;An implicitly defined copy constructor will copy the bases and members of an object in the same order that a constructor would initialize the bases and members of the object.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8401870306457898144-6959666303411283906?l=geek-corner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geek-corner.blogspot.com/feeds/6959666303411283906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8401870306457898144&amp;postID=6959666303411283906' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/6959666303411283906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/6959666303411283906'/><link rel='alternate' type='text/html' href='http://geek-corner.blogspot.com/2007/06/what-is-copy-constructor.html' title='What is a Copy Constructor?'/><author><name>Leo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8401870306457898144.post-911189749611623671</id><published>2007-06-30T12:55:00.000-07:00</published><updated>2007-06-30T13:04:40.587-07:00</updated><title type='text'>What is assembly in .NET?</title><content type='html'>You must have heard the word assembly many times in .NET documentation. In this article I will share some thing about .NET assemblies.&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;What is an assembly?&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;An Assembly is a  logical unit of code&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Assembly physically exist as DLLs or EXEs&lt;/li&gt;&lt;br /&gt;&lt;li&gt;One assembly can contain one or more files&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The constituent files can include any file types like image files, text files etc. along with DLLs or EXEs&lt;/li&gt;&lt;br /&gt;&lt;li&gt;When you compile your source code by default the exe/dll generated is actually an assembly&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Unless your code is bundled as assembly it can not be used in any other application&lt;/li&gt;&lt;br /&gt;&lt;li&gt;When you talk about version of a component you are actually talking about version of the assembly to which the component belongs.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Every assembly file contains information about itself. This information is called as Assembly Manifest.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;What is assembly manifest?&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Assembly manifest is a data structure which stores information about an assembly&lt;/li&gt;&lt;br /&gt;&lt;li&gt;This information is stored within the assembly file(DLL/EXE) itself&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The information includes version information, list of constituent files etc.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;What is private and shared assembly?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The assembly which is used only by a single application is called as private assembly. Suppose you created a DLL which encapsulates your business logic. This DLL will be used by your client application only and not by any other application. In order to run the application properly your DLL must reside in the same folder in which the client application is installed. Thus the assembly is private to your application.&lt;br /&gt;Suppose that you are creating a general purpose DLL which provides functionality which will be used by variety of applications. Now, instead of each client application having its own copy of DLL you can place the DLL in 'global assembly cache'. Such assemblies are called as shared assemblies.&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;What is Global Assembly Cache?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Global assembly cache is nothing but a special disk folder where all the shared assemblies will be kept. It is located under &lt;drive&gt;:\WinNT\Assembly folder.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8401870306457898144-911189749611623671?l=geek-corner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geek-corner.blogspot.com/feeds/911189749611623671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8401870306457898144&amp;postID=911189749611623671' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/911189749611623671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8401870306457898144/posts/default/911189749611623671'/><link rel='alternate' type='text/html' href='http://geek-corner.blogspot.com/2007/06/what-is-assembly-in-net.html' title='What is assembly in .NET?'/><author><name>Leo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
