<?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-1847570233403726070</id><updated>2012-01-31T12:42:39.024+05:30</updated><category term='story'/><category term='Gwt'/><category term='High Tech'/><category term='buddhism'/><category term='computer security'/><category term='windows xp'/><category term='GSoC'/><category term='sinhala'/><category term='law'/><category term='CSE'/><category term='streaming'/><category term='encosys'/><category term='ceb'/><category term='Fun'/><category term='Java'/><category term='Video'/><category term='anti-virus'/><title type='text'>ISURU SENADHEERA'S BLOG</title><subtitle type='html'>the personal cyber space of a software guy</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>49</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-7894994125947205279</id><published>2011-03-09T13:01:00.000+05:30</published><updated>2011-03-09T13:01:25.576+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='buddhism'/><category scheme='http://www.blogger.com/atom/ns#' term='story'/><title type='text'>Having Peace of Mind - A Lesson from Buddha</title><content type='html'>Recently I got this story via an email from one of my colleague. It would be worth to take few minutes and think about our mind.&lt;br /&gt;&lt;br /&gt;Once Buddha was travelling with a few of his followers. While they were passing a lake, Buddha told one of his disciples, "I am thirsty. Do get me some water from the lake."&lt;br /&gt;&lt;br /&gt;The disciple walked up to the lake. At that moment, a bullock cart started crossing through the lake. As a result, the water became very muddy and turbid. The disciple thought, "How can I give this muddy water to Buddha to drink?" &lt;br /&gt;&lt;br /&gt;So he came back and told Buddha, "The water in there is very muddy. I don't think it is fit to drink." &lt;br /&gt;&lt;br /&gt;After about half an hour, again Buddha asked the same disciple to go back to the lake. The disciple went back, and found that the water was still muddy. He returned and informed Buddha about the same. &lt;br /&gt;&lt;br /&gt;After sometime, again Buddha asked the same disciple to go back. This time, the disciple found the mud had settled down, and the water was clean and clear. So he collected some water in a pot and brought it to Buddha. &lt;br /&gt;&lt;br /&gt;Buddha looked at the water, and then he looked up at the disciple and said," See what you did to make the water clean. You let it be, and the mud settled down on its own -- and you have clear water. &lt;br /&gt;&lt;br /&gt;Your mind is like that too ! When it is disturbed, just let it be. Give it a little time. It will settle down on its own. You don't have to put in any effort to calm it down. It will happen. It is effortless." &lt;br /&gt;&lt;br /&gt;Having 'Peace of Mind' is not a strenuous job; it is an effortless process!&lt;br /&gt;&lt;br /&gt;TREAT EVERYONE WITH POLITENESS &lt;br /&gt;EVEN THOSE WHO ARE RUDE TO YOU &lt;br /&gt;NOT BECAUSE THEY ARE NOT NICE&lt;br /&gt;BUT BECAUSE YOU ARE NICE.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-7894994125947205279?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/7894994125947205279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=7894994125947205279' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/7894994125947205279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/7894994125947205279'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2011/03/having-peace-of-mind-lesson-from-buddha.html' title='Having Peace of Mind - A Lesson from Buddha'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-4404514295873879147</id><published>2011-01-08T20:12:00.003+05:30</published><updated>2011-02-20T15:06:52.843+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Gwt'/><title type='text'>Change default behaivior of typeAhead in a Ext-Gwt Combobox</title><content type='html'>Recently I encountered with a incident where I had to filter the list of a Ext-Gwt combo box so that the list get fetched with the options which 'contains' the typed characters. Typeahead in Ext-Gwt combo box can be enabled by setting typeahead attribute true.&lt;br /&gt;&lt;blockquote&gt;combo.setTypeAhead(boolean typeAhead);&lt;/blockquote&gt;But the default behaviour of the typeahead is to fetch the combo box list with the options which 'starting' with the typed characters. I had to get my brain troubled in searching the resources on the internet over few hours. but I couldn't find the solution.&lt;br /&gt;&lt;br /&gt;Later, Hasith Yaggahavita; the team leader found the solution by going through the Gwt combo box source. What he had done was to extend the Gwt combo box component and to override the protected method onTypeAhead() to do nothing. Then he had written a custom StoreFilter with the logic to filter options which 'contains' the typed characters.&lt;br /&gt;&lt;br /&gt;A sample code for the above implementation would be as follows &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;import com.gwtext.client.widgets.form.ComboBox&lt;br /&gt;import com.extjs.gxt.ui.client.data.BaseListLoader;&lt;br /&gt;import com.extjs.gxt.ui.client.data.ListLoadResult;&lt;br /&gt;import com.extjs.gxt.ui.client.data.ListLoader;&lt;br /&gt;import com.extjs.gxt.ui.client.data.RpcProxy;&lt;br /&gt;import com.extjs.gxt.ui.client.store.ListStore;&lt;br /&gt;import com.extjs.gxt.ui.client.store.Store;&lt;br /&gt;import com.extjs.gxt.ui.client.store.StoreFilter;&lt;br /&gt;&lt;br /&gt;public class ContainsTypeAheadComboBox extends ComboBox {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ContainsTypeAheadComboBoxComponent() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setMinChars(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setQueryDelay(300);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setTriggerAction(TriggerAction.ALL);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setRpcProxy(RpcProxy&lt;list&gt;&lt;combobox&gt;&amp;gt; proxy) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ListLoader&lt;listloadresult&gt;&lt;comboboxmodel&gt;&amp;gt; loader = new BaseListLoader&lt;listloadresult&gt;&lt;combobox&gt;&amp;gt;(proxy);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ListStore&lt;combobox&gt; listStore = new ListStoreExt(loader);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listStore.addFilter(new ContainsStoreFilter());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setStore(listStore);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void onTypeAhead() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //this method is overriden to avoid typeahead&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //feature selecting the first data item in to combo box text field&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * The Class extending ListStore to ignore the 'beginsWith' behavior&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class ListStoreExt extends ListStore &lt;comboboxmodel&gt; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ListStoreExt(ListLoader&lt;listloadresult&gt;&lt;combobox&gt;&amp;gt; loader) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super(loader);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.filtersEnabled = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void filter(String property, String beginsWith)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // ignore the 'beginsWith' string since we filter for 'contains'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.filter(property);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * The Class that filter according to 'contains' instead of 'beginswith'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class ContainsStoreFilter implements StoreFilter&lt;combobox&gt; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean select(Store&lt;combobox&gt; store, ComboBox parent, ComboBox item, String property) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String v = getRawValue();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( v == null || "".equals(v)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (item != null &amp;amp;&amp;amp; item.getText() != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return item.getText().toLowerCase().indexOf(v.toLowerCase()) &amp;gt;= 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/combobox&gt;&lt;/combobox&gt;&lt;/combobox&gt;&lt;/listloadresult&gt;&lt;/comboboxmodel&gt;&lt;/combobox&gt;&lt;/combobox&gt;&lt;/listloadresult&gt;&lt;/comboboxmodel&gt;&lt;/listloadresult&gt;&lt;/combobox&gt;&lt;/list&gt;&lt;/blockquote&gt;&lt;br /&gt;Reference Ext-Gwt combo box:&lt;br /&gt;&lt;a href="http://gwt-ext.com/docs/2.0.4/com/gwtext/client/widgets/form/ComboBox.html"&gt;http://gwt-ext.com/docs/2.0.4/com/gwtext/client/widgets/form/ComboBox.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-4404514295873879147?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/4404514295873879147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=4404514295873879147' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/4404514295873879147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/4404514295873879147'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2011/01/change-default-behaivior-of-typeahead.html' title='Change default behaivior of typeAhead in a Ext-Gwt Combobox'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-7005764975578699557</id><published>2011-01-08T17:38:00.001+05:30</published><updated>2011-01-08T17:40:25.171+05:30</updated><title type='text'>What are the Symptoms of Swine Flu</title><content type='html'>As swine flu spreads fast throughout the country, it is important to know the symptoms of the disease so you can recognize it in yourself and others at an early stage. The following information is extracted from an email I got recently&lt;br /&gt;&lt;br /&gt;Usually symptoms of swine flu have generally proved mild. However a small number of patients may develop more serious illness.  Many of these people have other underlying health conditions, such as heart or lung disease, that put them at increased risk.&lt;br /&gt;&lt;br /&gt;Typical symptoms are:&lt;br /&gt;&lt;br /&gt;    * A sudden fever - 100 degrees F or above&lt;br /&gt;    * A sudden cough&lt;br /&gt;&lt;br /&gt;Other symptoms may include:&lt;br /&gt;&lt;br /&gt;    * Headaches&lt;br /&gt;    * Tiredness&lt;br /&gt;    * Chills&lt;br /&gt;    * Cough and sneezing&lt;br /&gt;    * Headache&lt;br /&gt;    * Weakness and fatigue&lt;br /&gt;    * Aching muscles and joints&lt;br /&gt;    * Sore throat&lt;br /&gt;    * Runny nose&lt;br /&gt;    * Diarrhea or stomach upset&lt;br /&gt;    * Loss of appetite&lt;br /&gt;&lt;br /&gt;You must see a doctor immediately if:&lt;br /&gt;&lt;br /&gt;    * you have a serious existing illness that weakens your immune system, such as cancer&lt;br /&gt;    * you are pregnant&lt;br /&gt;    * you have a sick child under one&lt;br /&gt;    * your condition suddenly gets much worse&lt;br /&gt;    * your condition is still getting worse after seven days (five for a child)&lt;br /&gt;&lt;br /&gt;High-risk groups&lt;br /&gt;For most people, swine flu is a mild illness. Some people get better by staying in bed, drinking plenty of water and taking over-the-counter flu medication.&lt;br /&gt;&lt;br /&gt;However, some groups of people are more at risk of serious illness if they catch swine flu, and will need to start taking antiviral medication as it is confirmed that they have it.&lt;br /&gt;&lt;br /&gt;It is already known that you are particularly at risk if you have:&lt;br /&gt;&lt;br /&gt;    * chronic (long-term) lung disease,&lt;br /&gt;    * chronic heart disease,&lt;br /&gt;    * chronic kidney disease,&lt;br /&gt;    * chronic liver disease,&lt;br /&gt;    * chronic neurological disease (neurological disorders include motor neurone disease, multiple sclerosis and Parkinson's disease),&lt;br /&gt;    * immunosuppressant (whether caused by disease or treatment) or&lt;br /&gt;    * Diabetes mellitus.&lt;br /&gt;&lt;br /&gt;Also at risk are:&lt;br /&gt;&lt;br /&gt;    * patients who have had drug treatment for asthma within the past three years,&lt;br /&gt;    * pregnant women,&lt;br /&gt;    * people aged 65 and older, and&lt;br /&gt;    * Young children under five.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It is vital that people in these higher-risk groups who catch swine flu get antiviral and start taking them as soon as possible.&lt;br /&gt;&lt;br /&gt;As with any sort of influenza, how bad and how long the symptoms last will depend on treatment and the patient's individual circumstances.&lt;br /&gt;&lt;br /&gt;Most cases reported in India have been relatively mild, with those affected starting to recover within a week. Persons with swine flu infection should be considered potentially contagious for up to 7 days following illness onset. Persons who continue to be ill longer than 7 days after illness onset should be considered potentially contagious until symptoms have resolved. Children, especially younger children, might potentially be contagious for longer periods.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-7005764975578699557?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/7005764975578699557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=7005764975578699557' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/7005764975578699557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/7005764975578699557'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2011/01/what-are-symptoms-of-swine-flu.html' title='What are the Symptoms of Swine Flu'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-4809868883737592813</id><published>2010-01-16T09:53:00.001+05:30</published><updated>2010-01-16T09:53:52.262+05:30</updated><title type='text'>30 second Speech by Bryan Dyson (CEO of Coca Cola)</title><content type='html'>&lt;span style="font-weight: bold;"&gt;VERY SHORT, MOST EFFECTIVE AND HOW TRUE...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;30 second Speech by Bryan Dyson (CEO of Coca Cola)&lt;br /&gt;&lt;br /&gt;"Imagine life as a game in which you are juggling some five balls in the air. You name them - Work, Family, Health, Friends and Spirit and you're keeping all of these in the Air.&lt;br /&gt;&lt;br /&gt;You will soon understand that work is a rubber ball. If you drop it, it will bounce back.&lt;br /&gt;&lt;br /&gt;But the other four Balls - Family, Health, Friends and Spirit - are made of glass. If you drop one of these; they will be irrevocably scuffed, marked, nicked, damaged or even shattered. They will never be the same. You must understand that and strive for it."&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;WORK EFFICIENTLY DURING OFFICE HOURS AND LEAVE ON TIME. GIVE THE REQUIRED TIME TO YOUR FAMILY, FRIENDS &amp;amp; HAVE PROPER REST. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-4809868883737592813?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/4809868883737592813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=4809868883737592813' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/4809868883737592813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/4809868883737592813'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2010/01/30-second-speech-by-bryan-dyson-ceo-of.html' title='30 second Speech by Bryan Dyson (CEO of Coca Cola)'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-2013097935149368988</id><published>2009-11-23T01:30:00.000+05:30</published><updated>2009-11-23T01:31:10.059+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Video'/><category scheme='http://www.blogger.com/atom/ns#' term='High Tech'/><title type='text'>The Sixth Sence Comming Up!!</title><content type='html'>WoW.. This is amazing. Must watch&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/mUdDhWfpqxg&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/mUdDhWfpqxg&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-2013097935149368988?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/2013097935149368988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=2013097935149368988' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/2013097935149368988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/2013097935149368988'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2009/11/sixth-sence-comming-up.html' title='The Sixth Sence Comming Up!!'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-5687382511627732816</id><published>2009-11-23T01:15:00.002+05:30</published><updated>2009-11-23T01:16:12.397+05:30</updated><title type='text'>Believe it or not! Here comes the Chrome OS !!</title><content type='html'>&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ANMrzw7JFzA&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/ANMrzw7JFzA&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-5687382511627732816?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/5687382511627732816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=5687382511627732816' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/5687382511627732816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/5687382511627732816'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2009/11/believe-it-or-not-here-comes-chrome-os.html' title='Believe it or not! Here comes the Chrome OS !!'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-463578591392313256</id><published>2009-11-23T01:07:00.002+05:30</published><updated>2009-11-23T01:14:02.615+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows xp'/><title type='text'>Windows "Magics" and Explenations</title><content type='html'>Last week, one of my colleague has forwarded some bugs to the company tech talk. Sometimes back, this email was circulating through the web uncovering some bug in Windows calling "Magics"&lt;br /&gt;&lt;br /&gt;Here I post those magics and explanations for them.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;MAGIC #1&lt;/span&gt;&lt;br /&gt;An Indian found that nobody can create a FOLDER anywhere on the Computer&lt;br /&gt;which can be named as "CON". This is something funny and inexplicable...&lt;br /&gt;At Microsoft the whole Team, couldn't answer why this happened!&lt;br /&gt;TRY IT NOW, IT WILL NOT CREATE A "CON" FOLDER&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Explanation:&lt;/span&gt;&lt;br /&gt;Not  only folder named ‘con’. Following names also not possible.&lt;br /&gt;NUL, COM1, COM2, COM3, LPT1, LPT2, LPT3,COM1 to COM9 and LPT1 to LPT9. ( these are systems variables)&lt;br /&gt;But there is a way to create above named folders in windows.&lt;br /&gt;&lt;br /&gt;Try these steps.&lt;br /&gt;1) go to run dialog.&lt;br /&gt;2) type cmd/command (command prompt gets opened)&lt;br /&gt;3) go to root directory like C:\ or D:\ etc&lt;br /&gt;4) type md\\.\\c:\\con ....(here is done)&lt;br /&gt;5) check the folder on the respected drive.&lt;br /&gt;&lt;br /&gt;This is because MS-DOS Device Driver Names Cannot be Used as File Names&lt;br /&gt;http://support.microsoft.com/kb/74496/en-us&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;MAGIC #2&lt;/span&gt;&lt;br /&gt;For those of you using Windows, do the following:&lt;br /&gt;1.) Open an empty notepad file&lt;br /&gt;2.) Type "Bush hid the facts" (without the quotes)&lt;br /&gt;3.) Save it as whatever you want.&lt;br /&gt;4.) Close it, and re-open it.&lt;br /&gt;Noticed the weird bug? No one can explain!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Explanation:&lt;/span&gt;&lt;br /&gt;This is a string parsing bug in the parser. Any string with letters 4-3-3-5 will cause this&lt;br /&gt;http://en.wikipedia.org/wiki/Bush_hid_the_facts&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;MAGIC #3&lt;/span&gt;&lt;br /&gt;Again this is something funny and can't be explained... At Microsoft the&lt;br /&gt;whole Team, including Bill Gates, couldn't answer why this happened!&lt;br /&gt;It was discovered by a Brazilian. Try it out yourself...&lt;br /&gt;Open Microsoft Word and type&lt;br /&gt;=rand (200, 99)&lt;br /&gt;And then press ENTER&lt;br /&gt;And see the magic.....!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Explanation:&lt;/span&gt;&lt;br /&gt;This is a documented function in Word&lt;br /&gt;http://support.microsoft.com/kb/212251&lt;br /&gt;&lt;br /&gt;&lt;input id="gwProxy" type="hidden"&gt;&lt;!--Session data--&gt;&lt;input onclick="jsCall();" id="jsProxy" type="hidden"&gt;&lt;div id="refHTML"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-463578591392313256?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/463578591392313256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=463578591392313256' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/463578591392313256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/463578591392313256'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2009/11/windows-magics-and-explenations.html' title='Windows &quot;Magics&quot; and Explenations'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-2572182891607504938</id><published>2009-09-14T14:32:00.001+05:30</published><updated>2009-09-14T14:34:19.001+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSE'/><category scheme='http://www.blogger.com/atom/ns#' term='GSoC'/><title type='text'>University of Moratuwa tops the Top 10 Schools in 2009 and all-time!</title><content type='html'>University of Moratuwa tops the global Top 10 Schools in 2009 by # of&lt;br /&gt;Accepted Students, with 22 applications:&lt;br /&gt;&lt;br /&gt;Sri Lanka - University of Moratuwa - 22&lt;br /&gt;Brazil - University of Campinas / UNICAMP - 12&lt;br /&gt;China - Graduate University of Chinese Academy of Sciences - 11&lt;br /&gt;Romania - Polytechnic University Of Bucharest - 11&lt;br /&gt;Poland - Gdansk University of Technology - 10&lt;br /&gt;Austria - Vienna University of Technology - 9&lt;br /&gt;India - Birla Institute of Technology and Science Pilani, Goa campus - 9&lt;br /&gt;Sweden - Royal Institute of Technology - 9&lt;br /&gt;India - Institute of Technology, Banaras Hindu University - 8&lt;br /&gt;Singapore - National University of Singapore - 8&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;University of Moratuwa also tops the all time list: Top 10 Schools 2005&lt;br /&gt;- 2009 by # of Accepted Students&lt;br /&gt;&lt;br /&gt;Sri Lanka - University of Moratuwa - 79&lt;br /&gt;Brazil - University of Campinas / UNICAMP - 37&lt;br /&gt;Canada - University of Toronto - 34&lt;br /&gt;Austria - Vienna University of Technology - 31&lt;br /&gt;China - Graduate University of Chinese Academy of Sciences - 30&lt;br /&gt;United States - University of Illinois at Urbana-Champaign - 28&lt;br /&gt;Poland - Wroclaw University of Technology - 27&lt;br /&gt;Hungary - Budapest University of Technology and Economics - 21&lt;br /&gt;Canada - Carleton University - 21&lt;br /&gt;Romania - Alexandru Ioan Cuza University of Iasi - 20&lt;br /&gt;&lt;br /&gt;Congratulations - great feat indeed!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-2572182891607504938?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/2572182891607504938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=2572182891607504938' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/2572182891607504938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/2572182891607504938'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2009/09/university-of-moratuwa-tops-top-10.html' title='University of Moratuwa tops the Top 10 Schools in 2009 and all-time!'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-3707999785473220467</id><published>2009-08-03T17:08:00.000+05:30</published><updated>2009-08-03T17:09:00.040+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='law'/><title type='text'>Stuff to know with Police</title><content type='html'>&lt;p class="MsoNormal"&gt;1. A single Cop, CANNOT stop you on the road ! (it's  prohibited and you are not suppose to Stop either !)&lt;/p&gt;  &lt;p class="MsoNormal"&gt;2. A single cop CANNOT seize your driving license !&lt;/p&gt;  &lt;p class="MsoNormal"&gt;3. Only a 'traffic control' cop has the authority to request  anything MORE than your NIC when you are behind wheels.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;4. A single traffic cop NEVER can press charges against you.  HE MUST HAVE A WITNESS IF DOES SO.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;5. That's why you always find 'two' cops together&lt;/p&gt;  &lt;p class="MsoNormal"&gt;6. Police is a peace controlling force. NOT AN ARMED FORCE  !!! They are prohibited by LAW to carry anything more than a BATON ! (but due to  the prevailing WAR, they are issued Guns by a supreme  court ruling,till the war  ENDS)&lt;/p&gt;  &lt;p class="MsoNormal"&gt;7. So, if a Cop pulls a gun on you, YOU CAN sue him !!!&lt;/p&gt;  &lt;p class="MsoNormal"&gt;8. If a COP claims that you are drunk, you have the FULL  right  to ask for a 'balloon test', if they DO NOT HAVE it in their possession  on the time of your request, you can GO.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;9. Only Traffic Cops have the RIGHT to stop any moving  vehicle. (that's why you find at least 1 normal cop in every checkpoint even  though they are manned by Army)&lt;/p&gt;  &lt;p class="MsoNormal"&gt;10. COPS, CANNOT ENTER YOUR HOME OR WORK PREMISES without a  court Order. You have the FULLEST right ASK for it, if they try to enter and  also      DENY their entrance if you 'feel' like it.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;11. A traffic cop CANNOT seize your driving license UNTIL he  fully states the crime you have committed and the relating penal code violation.  If he is unsuccessful in stating them, you can go free&lt;/p&gt;  &lt;p class="MsoNormal"&gt;12. If a traffic cop seizes your license by force and ask you  to come to the police station to collect it. DO NOT GO ! Lodge a complain  directly to Police commission or the  Provincial IGP', YOU can get the cop  SACKED for his misconduct and unruly behaviour.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;13. (for girls), If a COP asks for your Identifications and   (if you think he's doing it on purpose to harass you) you CAN deny his request.  He cannot arrest you ! you have the RIGHT to request for a Female Police  officer.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;14. (for Girls) If you are asked to be Body checked, it's  your right to get it done by a female cop. If they don't have one in present,  DENY their action.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-3707999785473220467?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/3707999785473220467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=3707999785473220467' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/3707999785473220467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/3707999785473220467'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2009/08/stuff-to-know-with-police.html' title='Stuff to know with Police'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-986530873752356379</id><published>2009-05-10T09:28:00.010+05:30</published><updated>2009-05-10T11:32:43.702+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ceb'/><category scheme='http://www.blogger.com/atom/ns#' term='encosys'/><title type='text'>CEB's New Energy and Costing System - EnCoSys</title><content type='html'>&lt;a href="http://www.ceb.lk/"&gt;Ceylon Electricity Board&lt;/a&gt; (CEB), the prime electricity supplier of the country, is a government statutory body corporate established in Sri Lanka under an Act of Parliament No.17 of&lt;br /&gt;1969. Its main functionalty are the development and coordination of the Generation,&lt;br /&gt;supply and distribution of Electrical Energy.&lt;br /&gt;&lt;br /&gt;Over the past years, CEB was not so successful in minimizing the energy loss in the their transmission network and hence the energy loss still remains as a considerable amount. Recently, we got to know that CEB's manual way of energy calculation is one reason for that. Due to the unefficiency of this process, the management is unable to attain actual figures of the energy losses and hence they have to work based on estimatations.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_p61uxQ-3SUY/SgZohdAJhmI/AAAAAAAAC6Y/k-IwA1inlkU/s1600-h/logo_new.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 157px; height: 85px;" src="http://3.bp.blogspot.com/_p61uxQ-3SUY/SgZohdAJhmI/AAAAAAAAC6Y/k-IwA1inlkU/s320/logo_new.gif" alt="" id="BLOGGER_PHOTO_ID_5334065732597155426" border="0" /&gt;&lt;/a&gt;With the coordination from CEB's depeuty general manager Mr. M.G. Tillekeratne, a team of undergraduates from &lt;a href="http://www.cse.mrt.ac.lk/"&gt;Department of Computer Science and Engineering&lt;/a&gt;, &lt;a href="http://www.mrt.ac.lk/"&gt;University of Moratuwa&lt;/a&gt; has developed an &lt;span style="font-weight: bold;"&gt;en&lt;/span&gt;ergy calculation and &lt;span style="font-weight: bold;"&gt;co&lt;/span&gt;sting &lt;span style="font-weight: bold;"&gt;sys&lt;/span&gt;tem (EnCoSys) for CEB in order to overcome the above stituation.&lt;br /&gt;&lt;br /&gt;EnCoSys is a web based system designed totally according to CEB requirements. It can be considered as a re-implementation of one of their internal project, ECCS which was an attempt to develop such a system using Delphi4 with Informix as the back-end database few years back. However, with the change of CEB management ECCS had been discontinued. With the new EnCCoSys system, it enables CEB to keep track of energy transfers and associated costs between its three divisions, namely;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Generation division&lt;/li&gt;&lt;li&gt;Transmission division and&lt;/li&gt;&lt;li&gt;Distribution division&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_p61uxQ-3SUY/SgZnvuTIxtI/AAAAAAAAC5Q/wMR7Yut68bs/s1600-h/Login.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 180px;" src="http://3.bp.blogspot.com/_p61uxQ-3SUY/SgZnvuTIxtI/AAAAAAAAC5Q/wMR7Yut68bs/s320/Login.jpg" alt="" id="BLOGGER_PHOTO_ID_5334064878246741714" border="0" /&gt;&lt;/a&gt;Login Screen&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_p61uxQ-3SUY/SgZoYpFiPuI/AAAAAAAAC54/SCODngtD3LM/s1600-h/Main.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 180px;" src="http://1.bp.blogspot.com/_p61uxQ-3SUY/SgZoYpFiPuI/AAAAAAAAC54/SCODngtD3LM/s320/Main.jpg" alt="" id="BLOGGER_PHOTO_ID_5334065581222149858" border="0" /&gt;&lt;/a&gt;Main menu&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;As a whole, system is intended to keep track of energy transfers between generation, transmission and distribution divisions of Ceylon Electricity Board. It provides facility to the board to accurately measure and calculate the energy transfer costs. The application is capable of performing the following basic features.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Generation Entity Hierarchy Management&lt;/li&gt;&lt;li&gt;Meter Management&lt;/li&gt;&lt;li&gt;Distribution Entity Management&lt;/li&gt;&lt;li&gt;IPP and Mini-Hydro Management&lt;/li&gt;&lt;li&gt;Total Energy/Cost Calculation&lt;/li&gt;&lt;li&gt;Report Generation &lt;/li&gt;&lt;li&gt;Calculation of the Transmission loss&lt;/li&gt;&lt;li&gt;Meter Reading Tracking&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_p61uxQ-3SUY/SgZnvqTVx-I/AAAAAAAAC5Y/ERRC7PQccNk/s1600-h/AddRdng.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 180px;" src="http://4.bp.blogspot.com/_p61uxQ-3SUY/SgZnvqTVx-I/AAAAAAAAC5Y/ERRC7PQccNk/s320/AddRdng.jpg" alt="" id="BLOGGER_PHOTO_ID_5334064877173852130" border="0" /&gt;&lt;/a&gt;Adding new meter reading&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;At each station, meter readings will be fetched to the system in monthly basis.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_p61uxQ-3SUY/SgZnwEPLbII/AAAAAAAAC5o/qYGwQKx7BVY/s1600-h/Formula+builder.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 180px;" src="http://4.bp.blogspot.com/_p61uxQ-3SUY/SgZnwEPLbII/AAAAAAAAC5o/qYGwQKx7BVY/s320/Formula+builder.jpg" alt="" id="BLOGGER_PHOTO_ID_5334064884135718018" border="0" /&gt;&lt;/a&gt;EnCoSys Equation Builder&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;EnCoSys's equation builder eanbles its users to define and store energy equations for each meterpoint. During the energy/cost calculation, these equations are  interprited dynamically with each meter readings for appropriate cycles,  and then solved to the final figure.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_p61uxQ-3SUY/SgZnwM-G6XI/AAAAAAAAC5w/_s0pThNIlsY/s1600-h/Generation.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 180px;" src="http://3.bp.blogspot.com/_p61uxQ-3SUY/SgZnwM-G6XI/AAAAAAAAC5w/_s0pThNIlsY/s320/Generation.jpg" alt="" id="BLOGGER_PHOTO_ID_5334064886480038258" border="0" /&gt;&lt;/a&gt;Generation division - Sub Control Pannel&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_p61uxQ-3SUY/SgZnv8GYDJI/AAAAAAAAC5g/NRM-GsDKB6k/s1600-h/Confirmation.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 180px;" src="http://4.bp.blogspot.com/_p61uxQ-3SUY/SgZnv8GYDJI/AAAAAAAAC5g/NRM-GsDKB6k/s320/Confirmation.jpg" alt="" id="BLOGGER_PHOTO_ID_5334064881951313042" border="0" /&gt;&lt;/a&gt;Central Confirmation Page&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;In order to introduce new technologies to CEB IT division, EnCoSys has been developed with Microsoft .NET platform. The web system uses ASP.NET 2.0 and EnCoSys core is developed with C# .NET.  According to a pervious requiement of porting to Informix database server, all the database communication was done through odbc layer with generic SQL commands, so that it could be possible to port EnCoSys to any database server having associared odbc driver.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_p61uxQ-3SUY/SgZoYle0u-I/AAAAAAAAC6A/xnkaDA4byCU/s1600-h/Messeges.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 180px;" src="http://3.bp.blogspot.com/_p61uxQ-3SUY/SgZoYle0u-I/AAAAAAAAC6A/xnkaDA4byCU/s320/Messeges.jpg" alt="" id="BLOGGER_PHOTO_ID_5334065580254477282" border="0" /&gt;&lt;/a&gt;EnCoSys Messaging System&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_p61uxQ-3SUY/SgZoY_XZ0DI/AAAAAAAAC6I/7BjeZ-b__Bw/s1600-h/Reports2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 180px;" src="http://1.bp.blogspot.com/_p61uxQ-3SUY/SgZoY_XZ0DI/AAAAAAAAC6I/7BjeZ-b__Bw/s320/Reports2.jpg" alt="" id="BLOGGER_PHOTO_ID_5334065587202674738" border="0" /&gt;&lt;/a&gt;Energy Report&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Further, EnCoSys has a properly designed, easily exitensible architecture though it was developed according to rapid application developement approach due to time constrains. The requirement engineering process was undergone comprehensively with hours of discussions at CEB.&lt;br /&gt;&lt;br /&gt;The architectural release was handed over to CEB's internal development team at CEB headoffice on 2nd March. Furthermore a knowledge transfer workshop was conducted at the same place. We hope that they will continue with the system deploy EnCoSys there in the near future.&lt;br /&gt;&lt;br /&gt;Dhanuka Senarathne, Harshana Porawagama, Isuru Senadheera, Janaka Padukka, Lahiru Samarakoon, Rajeev Prasad (EnCoSys Development Team)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-986530873752356379?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/986530873752356379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=986530873752356379' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/986530873752356379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/986530873752356379'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2009/05/cebs-new-energy-and-cost-calulation.html' title='CEB&apos;s New Energy and Costing System - EnCoSys'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_p61uxQ-3SUY/SgZohdAJhmI/AAAAAAAAC6Y/k-IwA1inlkU/s72-c/logo_new.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-7195585610079154601</id><published>2009-04-29T12:05:00.006+05:30</published><updated>2009-04-29T12:33:05.744+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='streaming'/><category scheme='http://www.blogger.com/atom/ns#' term='Video'/><title type='text'>Internet Broadcasting with Mogulus</title><content type='html'>Recently when I was exploring flash streaming over internet, I found an interesting powerful broadacasting platform called Mogulus. Local tv broadcaster, ITN is testing their streamings these days and used Mogulus sometimes back. Well it worked very well, with a good video quality than others.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.mogulus.com/"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 152px; height: 64px;" src="http://1.bp.blogspot.com/_p61uxQ-3SUY/Sff2st81nNI/AAAAAAAAC44/HGjvzRCyOkA/s320/image-mogulus.gif" alt="" id="BLOGGER_PHOTO_ID_5329999932125715666" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.mogulus.com/"&gt;Mogulus&lt;/a&gt; is one of the most powerful live broadcast platforms on the internet. Mogulus' browser-based Studio application is a powerful platform to create LIVE, scheduled and on-demand internet television to broadcast anywhere on the web through a single player widget.&lt;br /&gt;&lt;br /&gt;The virtual studio is a great application where you can feel like working in a real tv station environment. It offres the following features.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;tream LIVE with any USB or DV camera&lt;/li&gt;&lt;li&gt;Mix multiple cameras and clips in real-time&lt;/li&gt;&lt;li&gt;Add broadcast graphics&lt;/li&gt;&lt;li&gt;Server-based recording for instant on-demand replays&lt;/li&gt;&lt;li&gt;Stream remotely using a datacard or mobile phone&lt;/li&gt;&lt;li&gt;YouTube and Media RSS Feed import&lt;/li&gt;&lt;li&gt;Create automated 24/7 channels from clips&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Mogulus offers both Free (ad-supported) and Pro (white-label, no-ads, pay for usage) packages. Its unique features include the ability to mix multiple live cameras, imported videos clips, and overlay graphics. With Mogulus, you can also broadcast live from a mobile phone; use a customizable flash player with integrated chat; and develop a branded channel page on &lt;a href="http://www.mogulus.com/"&gt;Mogulus.com&lt;/a&gt; that incorporates interactive chat.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_p61uxQ-3SUY/Sff6MI6_U-I/AAAAAAAAC5I/LO-k6fkB_oc/s1600-h/studio.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 491px; height: 123px;" src="http://1.bp.blogspot.com/_p61uxQ-3SUY/Sff6MI6_U-I/AAAAAAAAC5I/LO-k6fkB_oc/s320/studio.JPG" alt="" id="BLOGGER_PHOTO_ID_5330003770476549090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Later, when I was browsing there, I found that "Ranaviru" channel launched sometimes back to broadacst defence news is also operating on Mogulus at &lt;a href="http://www.mogulus.com/ranavirutv"&gt;http://www.mogulus.com/ranavirutv&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_p61uxQ-3SUY/Sff2s_NjipI/AAAAAAAAC5A/PtuGjuJkzfk/s1600-h/image-procaster.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 145px; height: 145px;" src="http://4.bp.blogspot.com/_p61uxQ-3SUY/Sff2s_NjipI/AAAAAAAAC5A/PtuGjuJkzfk/s320/image-procaster.jpg" alt="" id="BLOGGER_PHOTO_ID_5329999936759237266" border="0" /&gt;&lt;/a&gt;Further, Mogulus recently announced the launch of PROCASTER, a free software download available at &lt;a href="http://www.procaster.com/"&gt;www.procaster.com&lt;/a&gt; that allows you to create live streaming video content with incredible ease and unprecedented production value.&lt;br /&gt;&lt;br /&gt;PROCASTER offers the simplest-to-use broadcast experience, with simple user interface. In addition to high-quality video, you can broadcast whatever is on your computer screens live, including presentations, images, and even video and graphics-intensive video games. PROCASTER even streams the most demanding of computer applications; graphics-intensive high-end video games, enabling creation of a whole new form of entertainment around GameCasting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-7195585610079154601?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/7195585610079154601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=7195585610079154601' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/7195585610079154601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/7195585610079154601'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2009/04/internet-broadcasting-with-mogulus.html' title='Internet Broadcasting with Mogulus'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_p61uxQ-3SUY/Sff2st81nNI/AAAAAAAAC44/HGjvzRCyOkA/s72-c/image-mogulus.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-4162423916343047994</id><published>2009-04-26T18:40:00.002+05:30</published><updated>2009-04-26T19:17:52.621+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='anti-virus'/><category scheme='http://www.blogger.com/atom/ns#' term='computer security'/><title type='text'>Testing an Anti-Virus Software</title><content type='html'>If you want some way of checking that you have deployed your anti-virus software correctly,there exists a test file to do that easily.&lt;br /&gt;&lt;br /&gt;This test file has been provided to European Institute for Computer Anti-Virus Research (EICAR) for distribution as the "EICAR Standard Anti-Virus Test File". It is safe to pass around, because it is&lt;span style="font-weight: bold;"&gt; not a virus&lt;/span&gt;, and does not include any fragments of viral code. Every Anti-virus vendor do this test before every release of their product, in order to ensure that it really works. Hence most products react to it as if it were a virus.&lt;br /&gt;&lt;br /&gt;The file is actually  a legitimate DOS program, and produces sensible results when run (it prints the message "EICAR-STANDARD-ANTIVIRUS-TEST-FILE!").&lt;br /&gt;&lt;br /&gt;It is also short and simple - in fact, it consists entirely of printable ASCII characters, so that it can easily be created with a regular text editor. Any anti-virus product that supports the EICAR test file should detect it in any file providing that the file starts with the following 68 characters, and is exactly 68 bytes long:&lt;br /&gt;&lt;br /&gt;X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*&lt;br /&gt;&lt;br /&gt;The first 68 characters is the known string. It may be optionally appended by any combination of whitespace characters with the total file length not exceeding 128 characters.&lt;br /&gt;&lt;br /&gt;In order to facilitate various scenarios, they provide 4 files for download at &lt;a href="http://www.eicar.org"&gt;http://www.eicar.org&lt;/a&gt;. (You can download it by following "Anti-Malware Test File" link on the top right corner of the site.)&lt;br /&gt;&lt;br /&gt;The first, eicar.com, contains the ASCII string as described above. The second file, eicar.com.txt, is a copy of this file with a different filename. Some readers reported problems when downloading the first file, which can be circumvented when using the second version. Just download and rename the file to "eicar.com". That will do the trick. The third version contains the test file inside a zip ARCHIVEe. A good anti-virus scanner will spot a 'virus' inside an ARCHIVEe. The last version is a zip ARCHIVEes containing the third file. This file can be used to see whether the virus scanner checks ARCHIVEes more than only one level deep.&lt;br /&gt;&lt;br /&gt;Once downloaded run your Anti-Virus scanner. It should detect at least the file "eicar.com". Good scanners will detect the 'virus' in the single zip Archive and may be even in the double zip Archive. Once detected the scanner might not allow you any access to the file(s) anymore. You might not even be allowed by the scanner to delete these files. This is caused by the scanner which puts the file into quarantine. The test file will be treated just like any other real virus infected file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-4162423916343047994?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/4162423916343047994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=4162423916343047994' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/4162423916343047994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/4162423916343047994'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2009/04/testing-anti-virus-software.html' title='Testing an Anti-Virus Software'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-2541898988308217870</id><published>2009-04-17T19:10:00.002+05:30</published><updated>2009-04-17T19:15:36.356+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Video'/><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><title type='text'>Summer of ‘69 - Manipal University Theme Song</title><content type='html'>Wonderfully created by Manipal University. A must see..... &lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/uW_92tOcJfs&amp;amp;color1=0xd6d6d6&amp;amp;color2=0xf0f0f0&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/uW_92tOcJfs&amp;amp;color1=0xd6d6d6&amp;amp;color2=0xf0f0f0&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-2541898988308217870?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/2541898988308217870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=2541898988308217870' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/2541898988308217870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/2541898988308217870'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2009/04/summer-of-69-manipal-university-theme.html' title='Summer of ‘69 - Manipal University Theme Song'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-3699167840732470372</id><published>2009-04-15T21:56:00.001+05:30</published><updated>2009-04-15T22:20:57.147+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='sinhala'/><title type='text'>CSE බ්ලොග් යොමුව</title><content type='html'>අපේ නිමලෙ මේ දවස්වල අලුත් වැඩකට අතගහල. අපේ CSE 05 කන්ඩායමේ කොම්පියුටර් ඉන්ජිනේරුවොටිකගෙ බ්ලොග් ලිපිනයන් එකම වහලක් යටට ගන්න එක තමා මේ අලුත්ම වැඩේ. වහලක් කිව්වට ඉතින් මේක වහලක්ම නෙවේ. අන්තර්ජංජාල පොත් යොමු පිටුවක් කිව්වොත් තමා වඩා නිවැරදි. :)&lt;br /&gt;&lt;br /&gt;ඉතින් කැම්පස් එකේ මේ අන්තිම දවස් ටිකේදි නිමලෙගෙ මේ අලුත් වැඩේ බොහොම හොද එකක් කියල තමයි මගේ නම් අදහස. මොකද ඉතින් ආපහු කට්ටිය එකතු කරගන්නත් ලේසිවෙන එකක් නැහැනෙ. ඒක නිසා මේක පස්සට හොඩ මතක සටහනක් වෙන්නැතෑ. ඇරත් පුදුම දැනුම් සම්භාරයක්නෙ මේවයෙ තියෙන්නෙ.&lt;br /&gt;&lt;br /&gt;ඔක්කොම කියල කියල තාම වැදගත්ම දේ කියන්න බැරි උනානෙ. &lt;a href="http://delicious.com/talkout/CSE05"&gt;http://delicious.com/talkout/CSE05&lt;/a&gt; තමයි ඒකට යන පුරුක. ඕකෙ මගෙ මේ බ්ලොග් එකෙ ලිපිනයත් ඇති. අනෙ ඉතින් මමයි මගෙ බ්ලොග් ලිවිල්ලයි..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-3699167840732470372?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/3699167840732470372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=3699167840732470372' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/3699167840732470372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/3699167840732470372'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2009/04/cse.html' title='CSE බ්ලොග් යොමුව'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-5555661736739130313</id><published>2009-04-15T14:47:00.002+05:30</published><updated>2009-04-15T15:24:15.223+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='sinhala'/><title type='text'>ආවඩා ආයුබෝවේවා!!</title><content type='html'>මෙදා සැරේ සිංහල අලුත් අයුරුද්දෙන් පස්සෙ පරණ බ්ලොග් එකේ අලු ගසල බසල දාලා ගන්න හිතුව. පහුගිය මාස ගානටම මගෙ බ්ලොග් එක දිහා ඇහැක් ඇරලා බලන්න උනෙ නැහැ නෙව. ඉතින් මේ අලුත් අවුරුද්දෙ හාහාපුරා කියලා බ්ලොග් එකට අලුත් මූනතක් දාලම තමයි වැඩේ පටන් ගත්තෙ.&lt;br /&gt;&lt;br /&gt;අහා. ඒකෙන් මේකෙන් මට කට්ටියට සුබ පතන්නත් බැරි උනා නෙව. ඕන්න එහෙනම් 120ට 220ක් ආවඩා ආයුබෝ වේවා කියල මුලු අවුරුද්දම කිරියෙන් පැනියෙන් ඉතිරෙන්න ඕනෙ. මේ අබුද්දස්ස කාලෙ ඖරුද්දට සුබ පතන එකත් දැන් වෙළද දැන්වීමක් වෙලා නෙව.මේ ඊයෙ පෙරේදා මගෙ යාලුවෙක් ඔය ඔක්කොම දැන්වීම් ටික එකතු කරලා හරි අපූරු සුබපැතුමක් එවල තිබ්බා මේ විදියට. "මේ ලබුවාවු නව වසර කිරියෙන්, පැනියෙන් සහ නෙස්ටොමොල්ට් රෙඩ් රයිස් අන්ඩ් ගොටුකොල වලින් පරි පූර්න වූ සුබම සුබ අල්ටිමේට් තීත්ත අලුත් අවුරුද්දක් වීවා. ඔබලා හට ඇති සියලු ප්රාර්තනා ඉහල උත්කර්ශන විදියට ලගා වී සියලු සැප සම්පත් සහ නීරොගි දිවියක් උඩාවෙවා...!!" බලමුකො ඒකෙත් හැටි. :)&lt;br /&gt;&lt;br /&gt;කතාවෙන් කතාවෙන් මට ඒකත් අමතක උනා නෙව. අලුත් අවුරුද්දෙ සිංහලෙන්ම ලියන්න හිත හිතා ඉන්නකොට මට හම්බ උනා හරි අපූරු බඩුවක්. ඒක තමා කොළඹ විශ්ව විද්‍යාලයේ පරිගනක අංශයෙන් හදපු යුනිකෝඩ් එසැනින් පරිවර්තකය. අපිට පුරුදු SMS සිංග්ලිශ් වලින්ම ලියන්න පුලුවන් නිසා හරි ලේසි. අනික සිංහල යුනිකෝඩ් ඇර වෙන මොනවත් ස්ථාපනය කරන්නත් කරදර වෙන්න ඕනෙ නැහැ නෙව. ඔය පල්ලෙහායින් තියෙන පුරුකෙන් එතැනට ගියහැකි. http://www.ucsc.cmb.ac.lk/ltrl/services/feconverter/t1.html&lt;br /&gt;&lt;br /&gt;If you can not read this, please install Sinhala Unicode in your computer from here. http://locallanguages.lk/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-5555661736739130313?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/5555661736739130313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=5555661736739130313' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/5555661736739130313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/5555661736739130313'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2009/04/blog-post.html' title='ආවඩා ආයුබෝවේවා!!'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-2778651458549443622</id><published>2008-09-02T18:27:00.002+05:30</published><updated>2008-09-02T18:44:06.842+05:30</updated><title type='text'>Well done beijing</title><content type='html'>&lt;span style="font-family: verdana;"&gt;Woow woow woow.... What can i say... It was the most wonderful Olympics I have ever seen. I don't think London can even come closer to it in 2012. The special thing was that China made it a ceremony of humans, not the technology. I would like to congradulate &lt;/span&gt;&lt;em style="font-family: verdana;"&gt;Director&lt;/em&gt;&lt;span style="font-family: verdana;"&gt; Zhang Yimou for the marvellous job done.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;I am proud to be an Asian!!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-2778651458549443622?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/2778651458549443622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=2778651458549443622' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/2778651458549443622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/2778651458549443622'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/09/well-done-beijing.html' title='Well done beijing'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-5867736644052128435</id><published>2008-07-31T17:55:00.003+05:30</published><updated>2008-08-01T14:56:07.572+05:30</updated><title type='text'>Send Free SMS to Mobitel (Sri Lanka)</title><content type='html'>&lt;span style="font-family:arial;"&gt;You may wonder how these people send free SMS to mobitel. It’s not a wonder or a magic. There are some companies offering email to SMS service. In Sri Lanka only Mobitel is offering this service.&lt;br /&gt;What you need to do is simply send a mail to &lt;/span&gt;&lt;a href="mailto:phoneNumber@mobitel.lk"&gt;&lt;span style="font-family:arial;"&gt;phoneNumber@sms.mobitel.lk&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;. For example, if you wanna send a SMS to 071-5373891 then simply send a mail to &lt;/span&gt;&lt;a href="mailto:94715373891@mobitel.lk"&gt;&lt;span style="font-family:arial;"&gt;94715373891@sms.mobitel.lk&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;!&lt;br /&gt;If you know PHP or ASP or Perl then you can use this concept to create a widget that can send SMS to user.&lt;br /&gt;You can get phone number as an input and then if you can generate an email as I described above then you have created the widget. I have already created a &lt;/span&gt;&lt;span style="font-family:arial;"&gt;widget to send free SMS&lt;/span&gt;&lt;span style="font-family:arial;"&gt; using PHP. Here is the source code of that.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Client side&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;color:#000099;"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;color:#000099;"&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;root_j@hotmail.com&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;form method="POST" action="send.php"&amp;gt;&lt;br /&gt;&amp;lt;pp&amp;gt;&lt;br /&gt;Number :-&amp;lt;input type="text" name="num" size="20"&amp;gt; Type online the Mobitel&lt;br /&gt;number without 0 eg:- 714XXXXXX&amp;lt;br&amp;gt;&lt;br /&gt;email:-&amp;lt;input type="text" name="email" size="20"&amp;gt;&amp;lt;br&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;color:#000099;"&gt;Message&amp;lt;textarea rows="2" name="mess" cols="20"&amp;gt;&amp;lt;/textarea&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;&amp;lt;input type="submit" value="Submit" name="B1"p&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;color:#000099;"&gt;&amp;lt;input type="reset" value="Reset" name="B2"&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:arial;"&gt;server Side save it as send.php&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:courier new;font-size:85%;color:#ff6600;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;color:#ff6600;"&gt;&amp;lt;?php&lt;br /&gt;$num=$_POST['num'];&lt;br /&gt;$p_email=$_POST['email'];&lt;br /&gt;$p_mess=$_POST['mess'];&lt;br /&gt;$sendem = "94".$num."@sms.mobitel.lk";&lt;br /&gt;$to = $sendem;&lt;br /&gt;$subject = $p_email;&lt;br /&gt;$message = $p_mess;&lt;br /&gt;$from = $p_email;&lt;br /&gt;$headers = "From: $from";&lt;br /&gt;mail($to,$subject,$message,$headers);&lt;br /&gt;echo "Message send!!";&lt;br /&gt;echo "&amp;lt;br&amp;amp;gt";&lt;br /&gt;?&amp;amp;gt&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Recenly I heard that Dialog is also lanching such a service for MMS. You just want to send a mail to &lt;a href="mailto:yournumber@mms.dialog.lk"&gt;yournumber@mms.dialog.lk&lt;/a&gt; and receiver will get it as a MMS.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Unfortunately other operators such as Tigo, Hutch doesn’t offer such service!!! If you need to send them mail then you need to buy a SMS gateway, which is very expensive.&lt;/span&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-5867736644052128435?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/5867736644052128435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=5867736644052128435' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/5867736644052128435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/5867736644052128435'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/07/send-free-sms-to-mobitel-sri-lanka.html' title='Send Free SMS to Mobitel (Sri Lanka)'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-7219795736595464110</id><published>2008-05-13T20:23:00.000+05:30</published><updated>2008-05-13T20:23:36.046+05:30</updated><title type='text'>UoM Tops GSoc 2008</title><content type='html'>&lt;span style="font-family:arial;"&gt;Wooo, it is amazing. This year,  it is a total of 24 awards for the &lt;/span&gt;&lt;a style="font-family: arial;" href="http://www.mrt.ac.lk/"&gt;University of Moratuwa&lt;/a&gt;&lt;span style="font-family:arial;"&gt;, and it is the rank one in the world!!! Apparently University of Moratuwa, Sri Lanka had the &lt;/span&gt;&lt;a style="font-family: arial;" href="http://google-opensource.blogspot.com/2008/05/this-weeks-top-10s-universities-for.html"&gt;most number of Google Summer of Code applicants and accepted proposals&lt;/a&gt;&lt;span style="font-family:arial;"&gt; this year!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;That's awesome! I'm proud to be an undergraduate of &lt;/span&gt;&lt;a style="font-family: arial;" href="http://www.cse.mrt.ac.lk/"&gt;department of Computer Science of Engineering&lt;/a&gt;&lt;span style="font-family:arial;"&gt;, Univ. of Moratuwa as CSE  students started with one award 3 years ago and have bagged 18 GSoC awards  this year. There is one ENTC student and another first year student&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;from the  Faculty of Engineering. With a total of 24 awards for the entire&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;University.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Congratulations to all GSocers at University of Moratuwa !!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Keep Rocking !!!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-7219795736595464110?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://google-opensource.blogspot.com/2008/05/this-weeks-top-10s-universities-for.html' title='UoM Tops GSoc 2008'/><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/7219795736595464110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=7219795736595464110' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/7219795736595464110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/7219795736595464110'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/05/uom-tops-gsoc-2008.html' title='UoM Tops GSoc 2008'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-1796689006115103026</id><published>2008-04-25T15:33:00.025+05:30</published><updated>2008-05-05T16:57:06.529+05:30</updated><title type='text'>SQL Server 2008 - The hierarchyid data type</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_p61uxQ-3SUY/SBGtJ50WrbI/AAAAAAAAB24/ntSlkoX7ihw/s1600-h/untitled3.bmp"&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;Hierarchical data in SQL Server are almost always stored using the Parent/Child approach. This approach requires that a relationship occurs between two columns of the same table. Also, in some scenarios the XML data type can be used for this purpose. Examples of hierarchical data are typically an organizational structure of employees, or folders in a computer file system. Tables for such scenarios can be depicted through the following example:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_p61uxQ-3SUY/SBGstZ0WraI/AAAAAAAAB2w/UL66AwnpWXM/s1600-h/untitled2.bmp"&gt;&lt;span style="font-family:arial;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5193121741359459746" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" height="120" alt="" src="http://3.bp.blogspot.com/_p61uxQ-3SUY/SBGstZ0WraI/AAAAAAAAB2w/UL66AwnpWXM/s320/untitled2.bmp" width="486" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;SQL Server 2008 introduces a new CLR data type called hierarchyid to make storing and querying hierarchical data much easier. Unlike the parent/child approach which focused on maintaining relationships among records, this approach stores data by keeping track of the hierarchical level of each record and its position within its given level. The data stored in a hierarchyid field looks similar to how directory structures in a file system are organized, except using numbers such like the sketch below.&lt;br /&gt;&lt;/span&gt;&lt;a href="http://4.bp.blogspot.com/_p61uxQ-3SUY/SBGtgp0WrcI/AAAAAAAAB3A/RTNP1wjC02Y/s1600-h/untitled3.bmp"&gt;&lt;span style="font-family:arial;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5193122621827755458" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_p61uxQ-3SUY/SBGtgp0WrcI/AAAAAAAAB3A/RTNP1wjC02Y/s320/untitled3.bmp" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;The entity instance at the helm of the hierarchy is recorded as the root (/). Subordinates of the root are recorded with their position numbers, such as /1/ for the first subordinate and /2/ for the second and so on. If by any chance&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;a subordinate is to be inserted between /1/ and /2/, it would be recorded as /1.1/ (since 1.1 naturally appears between 1 and 2, yet remember that this is not a decimal numbering system),&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;and if a subordinate is to be inserted before /1/ it would be added as /0/,&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;and to insert a subordinate in between /1/ and /1.1/ would result in the value /1.0/ &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;But, all the above values are in the same level of the hierarchy (i.e. direct children of the root). Hierarchyid comes with several functions that you could use for various kinds of manipulations. It is also optimized to handle tree structures more efficiently, than the traditional parent/child approach. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Populating a column with hierarchyid values does not automatically relate the records of the table to each other, since there is no relationship defined between the records. It is up to the application to perform the placement of the records such that the hierarchy is properly formed. Take for instance the process of drawing an organizational chart for a business: The logical structure of the hierarchy is first drawn, then the employees are added to the sections of the hierarchy. Each section of the chart may not always be filled at once, since new employees may join the various ranks of the business at later times, neither is there a rule stating that the employees should be added to each section of the diagram in a particular order, such as a top-down method. Similarly the hierarchyid data type also possesses its own hierarchical structure defined within it. It is up to the application to pick the appropriate node, retrieve its value and then use it to insert into the table.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Getting down to business&lt;/strong&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Let us put the hierarchyid data type into use by creating a table of employees. The Employees table will be a simple one similar to the one used in Books Online: &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;1. &lt;em&gt;Creating the table&lt;/em&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;CREATE TABLE&lt;/span&gt; [dbo].[Employees] &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;( [EmployeeID] &lt;span style="color:#3366ff;"&gt;hierarchyid &lt;/span&gt;NOT NULL, &lt;span style="color:#009900;"&gt;-- Primary Key of the HierarchyID data type&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;[EmployeeCode]&lt;span style="color:#3333ff;"&gt; char&lt;/span&gt;(4) NOT NULL, &lt;span style="color:#33cc00;"&gt;-- Business Key that uniquely identifies employees&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;[Name] &lt;span style="color:#3366ff;"&gt;varchar&lt;/span&gt;(20) NOT NULL, &lt;span style="color:#009900;"&gt;-- Name of the employee&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;[Title] &lt;span style="color:#3366ff;"&gt;varchar&lt;/span&gt;(20) NULL, &lt;span style="color:#009900;"&gt;-- Employee's title&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3366ff;"&gt;PRIMARY KEY CLUSTERED&lt;/span&gt; ([EmployeeID] &lt;span style="color:#3333ff;"&gt;ASC&lt;/span&gt;), &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3366ff;"&gt;CONSTRAINT&lt;/span&gt; unqEmployeeCode &lt;span style="color:#3333ff;"&gt;UNIQUE&lt;/span&gt; ([EmployeeCode]) &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;) &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#3333ff;"&gt;GO &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;span style="font-family:arial;"&gt;Note that the EmployeeID field has been set as the primary key and the EmployeeCode field has been assigned a unique constraint. The EmployeeCode is just a business key used to identify the entity.&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;2. &lt;em&gt;Populating the Table&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Let us start off the population by inserting the record of the top employee. This employee would be considered the root, hence let us add this record first (not that it requires to be done so). In situations where there is no single top employee, but three or four such people, we could forget about the root node, and go about adding nodes from the next level onwards. Let us take into account the following diagram which depicts our employees' organizational structure:&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_p61uxQ-3SUY/SBG0P50WrdI/AAAAAAAAB3I/8BpgMUpi688/s1600-h/untitled4.bmp"&gt;&lt;span style="font-family:arial;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5193130030646341074" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 476px; CURSOR: hand; HEIGHT: 195px; TEXT-ALIGN: center" height="145" alt="" src="http://1.bp.blogspot.com/_p61uxQ-3SUY/SBG0P50WrdI/AAAAAAAAB3I/8BpgMUpi688/s320/untitled4.bmp" width="402" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;span style="font-family:arial;"&gt;Since the root employee, let us start off by inserting employee E013's record:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;INSERT INTO&lt;/span&gt; Employees (EmployeeID, EmployeeCode, Name, Title) &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;VALUES&lt;/span&gt; (hierarchyid::GetRoot(), &lt;span style="color:#ff0000;"&gt;'E013'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'R. Weisz'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'Manager'&lt;/span&gt;) &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;GO &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;We call the static GetRoot() function to return a hierarchyid value representing "root". &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;SELECT &lt;/span&gt;EmployeeID.ToString()&lt;span style="color:#3333ff;"&gt; AS&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;'EmployeeID_String'&lt;/span&gt;, *&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;FROM&lt;/span&gt; Employees&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#3333ff;"&gt;GO &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/* Results:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;EmployeeID_String EmployeeID EmployeeCode Name Title&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;------------------ ---------- ------------- -------- -------&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#009900;"&gt;/ 0x E013 R. Weisz Manager&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;(1 row(s) affected)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#009900;"&gt;*/&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Since the hierarchyid value is not easily understandable, we need to cast it into a string by using the ToString() function. Note that it displays the value as "root" (/). Convert and Cast functions work as well. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Our next steps would be to insert the subordinate records. This process requires no specific order of insertion. Yet there are several options we need to look at before performing the inserts. Subordinates or child nodes can be placed (relative to the parent): &lt;/span&gt;&lt;a href="http://2.bp.blogspot.com/_p61uxQ-3SUY/SBG66J0WreI/AAAAAAAAB3Q/sprX2im3U50/s1600-h/untitled5.bmp"&gt;&lt;span style="font-family:arial;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5193137353565580770" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_p61uxQ-3SUY/SBG66J0WreI/AAAAAAAAB3Q/sprX2im3U50/s320/untitled5.bmp" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;In order to add a child node we need to use the GetDescendant() method to generate a hierarchyid value from the specified parent node. The GetDescendant() method accepts two parameters: child1 and child2 which represent the two child nodes between which the new node is to be inserted. Therefore, &lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;if child1 and child2 are both NULL, no children exist; hence generate an id for a new child &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;if child1 is NULL and child2 is NOT NULL, generate an id for a new child before child2 &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;if child1 is NOT NULL and child2 is NULL, generate an id for a new child after child1 &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;if child1 and child2 are both NOT NULL, generate an id for a new child between child1 and child2. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;DECLARE&lt;/span&gt; @ParentID &lt;span style="color:#3333ff;"&gt;hierarchyid&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;SELECT&lt;/span&gt; @ParentID = &lt;span style="color:#3333ff;"&gt;hierarchyid&lt;/span&gt;::GetRoot()&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;I&lt;span style="color:#3333ff;"&gt;NSERT INTO&lt;/span&gt; Employees (EmployeeID, EmployeeCode, Name, Title)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;VALUES&lt;/span&gt; (@ParentID.GetDescendant(NULL, NULL), &lt;span style="color:#ff0000;"&gt;'E292'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'N. Portman'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'Executive'&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;GO &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#009900;"&gt;/* &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#009900;"&gt;Results:&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#009900;"&gt;EmployeeID_String EmployeeCode Name Title&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#009900;"&gt;-------------------- ------------ ------------- -----------&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/ E013 R. Weisz Manager&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/ E292 N. Portman Executive&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#009900;"&gt;(2 row(s) affected)&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;*/&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;The @ParentID variable is used to obtain a reference to the parent node, which in this case is the root node. If the parent is not the root node, then the reference should be obtained from the appropriate record in the table. Similarly let us also add code to insert the rest of E013's children in the following sequence:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;E094 as a child before an existing child node (before E292)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;E732 as a child after an existing child node (after E292)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;E256 as a child between two existing child nodes (between E292 and E732)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;DECLARE&lt;/span&gt; @ParentID &lt;span style="color:#3333ff;"&gt;hierarchyid&lt;/span&gt;, @ChildID &lt;span style="color:#3333ff;"&gt;hierarchyid&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3366ff;"&gt;SELECT&lt;/span&gt; @ParentID = &lt;span style="color:#3333ff;"&gt;hierarchyid&lt;/span&gt;::GetRoot() &lt;span style="color:#006600;"&gt;-- Retrieve Parent ID&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;SELECT&lt;/span&gt; @ChildID = EmployeeID &lt;span style="color:#3333ff;"&gt;FROM&lt;/span&gt; Employees &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;WHERE&lt;/span&gt; EmployeeCode = 'E292' &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#006600;"&gt;-- Retrieve the only existing Child's ID&lt;br /&gt;-- Insert Employee E094 before E292&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#3333ff;"&gt;INSERT INTO&lt;/span&gt; Employees (EmployeeID, EmployeeCode, Name, Title)&lt;span style="color:#3333ff;"&gt;VALUES&lt;/span&gt; (@ParentID.GetDescendant(NULL, @ChildID), &lt;span style="color:#cc0000;"&gt;'E094'&lt;/span&gt;, &lt;span style="color:#cc0000;"&gt;'N. Jones'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'Executive'&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/*&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;EmployeeID_String EmployeeID EmployeeCode Name Title&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;------------------- ------------ ------------ ------------ ----------&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/ 0x E013 R. Weisz Manager&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/0/ 0x48 E094 N. Jones Executive&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/ 0x58 E292 N. Portman Executive&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;(3 row(s) affected)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;*/&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;-- Insert Employee E732 after E292&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;INSERT INTO&lt;/span&gt; Employees (EmployeeID, EmployeeCode, Name, Title)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;VALUES&lt;/span&gt; (@ParentID.GetDescendant(@ChildID, NULL), &lt;span style="color:#ff0000;"&gt;'E732'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'E. Cuthbert'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'Executive'&lt;/span&gt;) &lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;/*&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;EmployeeID_String EmployeeID EmployeeCode Name Title&lt;/span&gt; &lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;------------------- ------------ ------------ ------------ ----------&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/ 0x E013 R. Weisz Manager&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/0/ 0x48 E094 N. Jones Executive&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/ 0x58 E292 N. Portman Executive&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/2/ 0x68 E732 E. Cuthbert Executive&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;(4 row(s) affected)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;*/&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:Arial;color:#009900;"&gt;&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;DECLARE&lt;/span&gt; @ChildID2 hierarchyidSELECT @ChildID2 = EmployeeID &lt;span style="color:#3333ff;"&gt;FROM &lt;/span&gt;Employees &lt;span style="color:#3333ff;"&gt;WHERE&lt;/span&gt; EmployeeCode =&lt;span style="color:#ff0000;"&gt; 'E732'&lt;/span&gt; &lt;span style="color:#009900;"&gt;-- Retrieve the ID of Employee E732&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;-- Insert Employee E256 between E292 and E732&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;INSERT INTO&lt;/span&gt; Employees (EmployeeID, EmployeeCode, Name, Title)&lt;span style="color:#3333ff;"&gt;VALUES &lt;/span&gt;(@ParentID.GetDescendant(@ChildID, @ChildID2), '&lt;span style="color:#ff0000;"&gt;E256'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'A. Hathaway'&lt;/span&gt;,&lt;span style="color:#ff0000;"&gt; 'Specialist'&lt;/span&gt;) &lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;/*&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;EmployeeID_String EmployeeID EmployeeCode Name Title&lt;/span&gt; &lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;------------------- ------------ ------------ ------------ ----------&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/ 0x E013 R. Weisz Manager&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/0/ 0x48 E094 N. Jones Executive&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/ 0x58 E292 N. Portman Executive&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1.1/ 0x62C0 E256 A. Hathaway Specialist&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/2/ 0x68 E732 E. Cuthbert Executive&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;(5 row(s) affected)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#009900;"&gt;*/&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#009900;"&gt;&lt;br /&gt;&lt;/span&gt;Similarly we could also add subordinates to the second level of employees that we just added. Much more simpler would be a stored procedure such as the one below:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3366ff;"&gt;CREATE PROC&lt;/span&gt; InsertEmployee&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;(&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;@ParentCode &lt;span style="color:#3333ff;"&gt;char&lt;/span&gt;(4),&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;@EmployeeCode &lt;span style="color:#3333ff;"&gt;char&lt;/span&gt;(4),&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;@Name &lt;span style="color:#3333ff;"&gt;varchar&lt;/span&gt;(20),&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;@Title &lt;span style="color:#3333ff;"&gt;varchar&lt;/span&gt;(20)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#3333ff;"&gt;AS&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#3333ff;"&gt;BEGIN&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;DECLARE&lt;/span&gt; @ParentID &lt;span style="color:#3333ff;"&gt;hierarchyid&lt;/span&gt;, @ChildID1 &lt;span style="color:#3333ff;"&gt;hierarchyid&lt;/span&gt;, @ChildID2 &lt;span style="color:#3333ff;"&gt;hierarchyid&lt;/span&gt;, @ChildID &lt;span style="color:#3333ff;"&gt;hierarchyid&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;IF&lt;/span&gt; @ParentCode &lt;span style="color:#3333ff;"&gt;IS NOT NULL&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;SELECT&lt;/span&gt; @ParentID = EmployeeID &lt;span style="color:#3333ff;"&gt;FROM&lt;/span&gt; Employees &lt;span style="color:#3333ff;"&gt;WHERE&lt;/span&gt; EmployeeCode = @ParentCode&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#3333ff;"&gt;ELSE&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;SET&lt;/span&gt; @ParentID = &lt;span style="color:#3333ff;"&gt;hierarchyid&lt;/span&gt;::GetRoot()&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#3333ff;"&gt;SET TRANSACTION ISOLATION LEVEL SERIALIZABLE&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#3333ff;"&gt;BEGIN TRANSACTION&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;SELECT&lt;/span&gt; @ChildID2 = &lt;span style="color:#ff6666;"&gt;MIN&lt;/span&gt;(EmployeeID) &lt;span style="color:#3333ff;"&gt;FROM&lt;/span&gt; Employees&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;WHERE&lt;/span&gt; EmployeeCode &gt; @EmployeeCode &lt;span style="color:#3333ff;"&gt;AND&lt;/span&gt; EmployeeID.GetAncestor(1) = @ParentID&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;SELECT&lt;/span&gt; @ChildID1 = &lt;span style="color:#ff6666;"&gt;MAX&lt;/span&gt;(EmployeeID) &lt;span style="color:#3333ff;"&gt;FROM&lt;/span&gt; Employees&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;WHERE&lt;/span&gt; EmployeeCode &lt; @EmployeeCode &lt;span style="color:#3333ff;"&gt;AND&lt;/span&gt; EmployeeID.GetAncestor(1) = @ParentID&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;INERT INTO&lt;/span&gt; Employees (EmployeeID, EmployeeCode, Name, Title)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;VALUES&lt;/span&gt; (@ParentID.GetDescendant(@ChildID1, @ChildID2), @EmployeeCode, @Name, @Title)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#3333ff;"&gt;COMMIT TRANSACTION&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#3333ff;"&gt;END&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#3333ff;"&gt;GO&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;&lt;span style="font-family:arial;"&gt;TRUNCATE TABLE &lt;span style="color:#000000;"&gt;InsertEmployee&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="color:#3333ff;"&gt;EXEC&lt;/span&gt; InsertEmployee NULL, &lt;span style="color:#ff0000;"&gt;'E013'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'R. Weisz'&lt;/span&gt;, &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;'Manager&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="color:#3333ff;"&gt;EXEC&lt;/span&gt; InsertEmployee &lt;span style="color:#ff0000;"&gt;'E013'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'E256'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'A. Hathaway'&lt;/span&gt;, &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;'Specialist'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="color:#3333ff;"&gt;EXEC&lt;/span&gt; InsertEmployee &lt;span style="color:#ff0000;"&gt;'E013'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'E094'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'N. Jones'&lt;/span&gt;, &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;'Executive'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="color:#3333ff;"&gt;EXEC&lt;/span&gt; InsertEmployee &lt;span style="color:#ff0000;"&gt;'E013'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'E792'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'E. Cuthbert'&lt;/span&gt;, &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;'Executive'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="color:#3333ff;"&gt;EXEC&lt;/span&gt; InsertEmployee &lt;span style="color:#ff0000;"&gt;'E013'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'E292'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'N. Portman'&lt;/span&gt;, &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;'Executive'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="color:#3333ff;"&gt;EXEC&lt;/span&gt; InsertEmployee &lt;span style="color:#ff0000;"&gt;'E094'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'E049'&lt;/span&gt;,&lt;span style="color:#ff0000;"&gt; 'S. Johansson'&lt;/span&gt;, &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;'Associate'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="color:#3333ff;"&gt;EXEC&lt;/span&gt; InsertEmployee &lt;span style="color:#ff0000;"&gt;'E256'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'E148'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'K. Knightley'&lt;/span&gt;, &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;'Intern'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="color:#3333ff;"&gt;EXEC&lt;/span&gt; InsertEmployee &lt;span style="color:#ff0000;"&gt;'E148'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'E940'&lt;/span&gt;, &lt;span style="color:#ff0000;"&gt;'H. Swank'&lt;/span&gt;, &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;'Special Intern'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;The above stored procedure accepts the parent code to which the record has to be added under, the employee code, name and title of the new employee. This stored procedure however does not add a record for the root node, since it assumes that multiple employees could be at the top level of the employee hierarchy. It also adds the new employee in ascending order of the employee code.&lt;br /&gt;Selecting Subordinates and Levels&lt;br /&gt;The following two methods show how descendants of a particular node are retrieved.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;DECLARE&lt;/span&gt; @CurEmployeeID &lt;span style="color:#3333ff;"&gt;hierarchyid&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;SELECT&lt;/span&gt; @CurEmployeeID = EmployeeID &lt;span style="color:#3366ff;"&gt;FROM&lt;/span&gt; Employees &lt;span style="color:#3366ff;"&gt;WHERE&lt;/span&gt; EmployeeCode = &lt;span style="color:#ff0000;"&gt;'E256'&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;-- Code A&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;SELECT&lt;/span&gt; EmployeeID.ToString() AS 'EmployeeID_String', *&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;FROM&lt;/span&gt; Employees&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;WHERE&lt;/span&gt; @CurEmployeeID.IsDescendant(EmployeeID) = 1&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/*&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;EmployeeID_String EmployeeCode Name Title&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;-------------------- ------------ -------------- ---------------&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/1/ E256 A. Hathaway Specialist&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/1/1/ E148 K. Knightley Intern&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/1/1/1/ E940 H. Swank Special Intern&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;(3 row(s) affected)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;*/&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;-- Code B&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;SELECT&lt;/span&gt; EmployeeID.ToString() AS 'EmployeeID_String', *&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;FROM&lt;/span&gt; Employees&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;WHERE&lt;/span&gt; EmployeeID.GetAncestor(1) = @CurEmployeeID&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/*&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;EmployeeID_String EmployeeCode Name Title&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;-------------------- ------------ -------------- ---------------&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/1/1/ E148 K. Knightley Intern&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;(1 row(s) affected)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;*/&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:Arial;color:#009900;"&gt;&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;In the above code section, Code A uses the IsDescendant() function which returns true if the specified node is a descendant of the current node, hence the above code returns the sub-hierarchy of records. Code B makes use of the GetAncestor() function which gets the ancestor of the specified node at a given level. Therefore it returns the record of the node which has the current node as its ancestor at Level 1.&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The following code uses the GetLevel() function to display the level of each node in the hierarchy.&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;SELECT&lt;/span&gt; EmployeeID.ToString() AS 'EmployeeID_String', EmployeeID.GetLevel() AS 'Level', * &lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;FROM&lt;/span&gt; Employees&lt;/span&gt; &lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/*&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;EmployeeID_String Level EmployeeID EmployeeCode Name Title&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;-------------------- ------ ------------ ------------ -------------- ---------------&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/ 1 0x58 E013 R. Weisz Manager&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/0/ 2 0x5A40 E094 N. Jones Executive&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/0/1/ 3 0x5A56 E049 S. Johansson Associate&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/1/ 2 0x5AC0 E256 A. Hathaway Specialist&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/1/1/ 3 0x5AD6 E148 K. Knightley Intern&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/1/1/1/ 4 0x5AD6B0 E940 H. Swank Special Intern&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/1.1/ 2 0x5B16 E292 N. Portman Executive&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/2/ 2 0x5B40 E792 E. Cuthbert Executive&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;(8 row(s) affected)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;*/&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Reordering Nodes&lt;br /&gt;Then, there are situations when a record is required to be shifted under a new parent node. To perform this action we use the Reparent() function, which requires two parameters: the old parent hierarchyid and the new one. The following code shows how this can be done:&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;DECLARE&lt;/span&gt; @CurEmployeeID hierarchyid, @OldParentID hierarchyid, @NewParentID hierarchyid&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;SELECT&lt;/span&gt; @CurEmployeeID = EmployeeID&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;FROM&lt;/span&gt; Employees&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;WHERE&lt;/span&gt; EmployeeCode = &lt;span style="color:#ff0000;"&gt;'E049'&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;SELECT&lt;/span&gt; @OldParentID = EmployeeID.GetAncestor(1) -- Retrieve the Current Parent ID&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;FROM&lt;/span&gt; Employees WHERE EmployeeID = @CurEmployeeID&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;SELECT&lt;/span&gt; @NewParentID = EmployeeID -- Retrieve the New (Target) Parent ID&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;FROM&lt;/span&gt; Employees &lt;span style="color:#3333ff;"&gt;WHERE&lt;/span&gt; EmployeeCode = &lt;span style="color:#ff0000;"&gt;'E292'&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;UPDATE&lt;/span&gt; EmployeesSET EmployeeID = @CurEmployeeID.Reparent(@OldParentID, @NewParentID)WHERE EmployeeID = @CurEmployeeID&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/*&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;EmployeeID_String EmployeeID EmployeeCode Name Title&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;-------------------- ------------- ------------ ------------- ---------------&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/ 0x58 E013 R. Weisz Manager&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/0/ 0x5A40 E094 N. Jones Executive&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/1 0x5AC0 E256 A. Hathaway Specialist&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/1/1/ 0x5AD6 E148 K. Knightley Intern&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/1/1/1/ 0x5AD6B0 E940 H. Swank Special Intern&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/1.1/ 0x5B16 E292 N. Portman Executive&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/1.1/1/ 0x5B16B0 E049 S. Johansson Associate&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;/1/2/ 0x5B40 E792 E. Cuthbert Executive&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;(8 row(s) affected)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#009900;"&gt;*/&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Indexing HierarchyID&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;HierarchyID supports two types of indexing: &lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Depth-first&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Breadth-first &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;table style="WIDTH: 661px; HEIGHT: 116px"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;tbody&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;tr&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Depth-first index&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_p61uxQ-3SUY/SBhaOZ0WrfI/AAAAAAAAB3g/oVUuLTMKX6I/s1600-h/depth.bmp"&gt;&lt;span style="font-family:arial;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5195001373667012082" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_p61uxQ-3SUY/SBhaOZ0WrfI/AAAAAAAAB3g/oVUuLTMKX6I/s320/depth.bmp" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;(Image taken from SQL Server 2008 February CTP Books Online)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;A depth-first index stores nodes of a sub-hierarchy next to each other, thereby boosting queries that request for data under a particular hierarchy. An example would be a query requesting for "All employees reporting to A. Hathaway including their subordinates all the way down."&lt;br /&gt;The following code shows how to create a depth-first index on the Employees table:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;CREATE CLUSTERED INDEX&lt;/span&gt; Employees_DepthFirst&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;ON&lt;/span&gt; Employees (EmployeeID)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Breadth-first index&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_p61uxQ-3SUY/SBhatJ0WrgI/AAAAAAAAB3o/szf_vCsBMGg/s1600-h/breadth.bmp"&gt;&lt;span style="font-family:arial;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5195001901947989506" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_p61uxQ-3SUY/SBhatJ0WrgI/AAAAAAAAB3o/szf_vCsBMGg/s320/breadth.bmp" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Image taken from SQL Server 2008 February CTP Books Online)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;A breadth-first index stores the immediate subordinate nodes of a particular node together, thereby boosting queries that request for immediate children of a particular node. An example would be a query requesting for "All employees who directly report to A. Hathaway."&lt;br /&gt;The following code shows how to create a breadth-first index on the Employees table. To create a breadth-first index, you require the level of each node. This could be done by creating a calculated column using the GetLevel() function.&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;ALTER&lt;/span&gt; &lt;span style="color:#3333ff;"&gt;TABLE&lt;/span&gt; Employees&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;ADD&lt;/span&gt; [Level] AS EmployeeID.GetLevel()&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;GO&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;CREATE UNIQUE INDEX&lt;/span&gt; Employees_BreadthFirst&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;ON&lt;/span&gt; Employees ([Level], [EmployeeID])&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;color:#3366ff;"&gt;GO&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;The option of using either or both index types on your hierarchyid table depends on the types of queries and the frequency of running them.&lt;br /&gt;A little more facts about hierarchyid&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Supposing that x and y are two hierarchyid values; x &lt;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Arbitrary deletions are possible in a table with hierarchyid, but it could leave orphaned sub-trees. Hence, it is required that the application performs all required validations.&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Hierarchyid data types are extremely compact in size. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Though drawbacks such as the need for application based consistency maintenance is present, the hierarchyid data type provides improved querying over the parent/child and XML methods in many cases, and requires a little getting used to since it is a CLR data type. Code in this article was written and tested on SQL Server 2008 CTP - February 2008. Refer SQL Server 2008 Books Online for more information and tutorials.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-1796689006115103026?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/1796689006115103026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=1796689006115103026' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/1796689006115103026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/1796689006115103026'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/04/sql-server-2008-hierarchyid-data-type.html' title='SQL Server 2008 - The hierarchyid data type'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_p61uxQ-3SUY/SBGstZ0WraI/AAAAAAAAB2w/UL66AwnpWXM/s72-c/untitled2.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-8781187914638882281</id><published>2008-04-11T14:39:00.004+05:30</published><updated>2008-04-11T14:42:13.963+05:30</updated><title type='text'>Happy Sinhala &amp; Hindu New Year</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_p61uxQ-3SUY/R_8q6JfEO4I/AAAAAAAAB08/a5WcL_3sukc/s1600-h/new+year.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5187912474221099906" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 368px; CURSOR: hand; HEIGHT: 207px; TEXT-ALIGN: center" height="215" alt="" src="http://2.bp.blogspot.com/_p61uxQ-3SUY/R_8q6JfEO4I/AAAAAAAAB08/a5WcL_3sukc/s320/new+year.jpg" width="362" border="0" /&gt;&lt;/a&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/1847570233403726070-8781187914638882281?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/8781187914638882281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=8781187914638882281' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/8781187914638882281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/8781187914638882281'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/04/happy-sinhala-hindu-new-year.html' title='Happy Sinhala &amp; Hindu New Year'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_p61uxQ-3SUY/R_8q6JfEO4I/AAAAAAAAB08/a5WcL_3sukc/s72-c/new+year.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-533349945621185587</id><published>2008-04-07T16:08:00.004+05:30</published><updated>2008-04-07T17:06:31.537+05:30</updated><title type='text'>Sri Lanka urges world to 'wake-up' on terror</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_p61uxQ-3SUY/R_n7BjI2w4I/AAAAAAAAB00/ihr80oM-X3s/s1600-h/lk.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5186452449924662146" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 199px; CURSOR: hand; HEIGHT: 98px" height="163" alt="" src="http://4.bp.blogspot.com/_p61uxQ-3SUY/R_n7BjI2w4I/AAAAAAAAB00/ihr80oM-X3s/s320/lk.gif" width="310" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:arial;"&gt;The suicide assassination of a top Sri Lankan minister should be a "wake-up call" to the international community to combat terrorism, the foreign minister said.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;"&gt;Sri Lanka's highways minister Jeyaraj Fernandopulle, 55, was killed together with 13 others in a blast at the start of a marathon outside the capital Colombo.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:arial;"&gt;On Sunday morning (6 April), scores of runners and onlookers gathered at the starting line of the marathon in Weliweriya, about 20 kilometers (12 miles) from the capital Colombo, as part of the national celebrations of the upcoming Sinhalese New Year.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:arial;"&gt;Jeyaraj Fernandopulle, the Minister of Highways, approached the starting line with a flag he planned to wave to start the race when the bomb exploded.&lt;br /&gt;The Minister died on the spot, along with 13 others including former Olympic marathoner K.A. Karunaratne and national athletics coach Lakshman de Alwis, in total more than 90 were wounded. &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:arial;"&gt;Karunaratne competed in the 1992 Olympic marathon and the 1993 World Championships. He won gold in the marathon and 10,000 meters at the 1991 South Asian Games, defending his marathon title in 1993.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;We utterly condemn this outrage by LTTE. To target those innocently involved in a sporting event is reprehensible.&lt;/strong&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/1847570233403726070-533349945621185587?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/533349945621185587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=533349945621185587' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/533349945621185587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/533349945621185587'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/04/sri-lanka-urges-world-to-wake-up-on.html' title='Sri Lanka urges world to &apos;wake-up&apos; on terror'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_p61uxQ-3SUY/R_n7BjI2w4I/AAAAAAAAB00/ihr80oM-X3s/s72-c/lk.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-8285992045528680808</id><published>2008-04-04T15:05:00.001+05:30</published><updated>2008-04-04T15:10:56.411+05:30</updated><title type='text'>Dynamic Stored Procedures</title><content type='html'>&lt;span style="font-family:arial;"&gt;Can you change the behavior of your SP on the fly. You just create a SQL as a String and Execute that with EXEC.&lt;br /&gt;&lt;/span&gt;  &lt;a title="http://www.4guysfromrolla.com/webtech/020600-1.shtml" href="http://www.4guysfromrolla.com/webtech/020600-1.shtml"&gt;&lt;span style="font-family:arial;"&gt;http://www.4guysfromrolla.com/webtech/020600-1.shtml&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;br /&gt;If you would like the query plan, sp_executeSQL can be used for optimizations,&lt;br /&gt;  &lt;/span&gt;&lt;a title="http://www.4guysfromrolla.com/webtech/sqlguru/q120899-2.shtml" href="http://www.4guysfromrolla.com/webtech/sqlguru/q120899-2.shtml"&gt;&lt;span style="font-family:Arial;"&gt;http://www.4guysfromrolla.com/webtech/sqlguru/q120899-2.shtml&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-8285992045528680808?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/8285992045528680808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=8285992045528680808' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/8285992045528680808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/8285992045528680808'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/04/dynamic-stored-procedures.html' title='Dynamic Stored Procedures'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-5374967618359923597</id><published>2008-04-04T13:55:00.002+05:30</published><updated>2008-04-04T14:00:10.583+05:30</updated><title type='text'>2008 April Fools Jokes by popular web sites</title><content type='html'>&lt;span style="font-family:arial;"&gt;&gt; Google’s Custom time.&lt;/span&gt;&lt;a href="http://mail.google.com/mail/help/customtime/index.html"&gt;&lt;span style="font-family:arial;"&gt;http://mail.google.com/mail/help/customtime/index.html&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&gt; Google’s virgle project&lt;/span&gt;&lt;a href="http://www.google.com/virgle/index.html"&gt;&lt;span style="font-family:arial;"&gt;http://www.google.com/virgle/index.html&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&gt; Google’s search the future beta (launched in google.au on 1st April &lt;/span&gt;&lt;a href="http://www.google.com.au/intl/en/gday/index.html"&gt;&lt;span style="font-family:arial;"&gt;http://www.google.com.au/intl/en/gday/index.html&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&gt; Microsoft and Yahoo agrees on buyout price (before this yahoo denied Microsoft’s offer to buy out yahoo)&lt;/span&gt;&lt;a href="http://www.infoworld.com/article/08/04/01/14FE-april-fool-microsoft-yahoo_1.html"&gt;&lt;span style="font-family:arial;"&gt;http://www.infoworld.com/article/08/04/01/14FE-april-fool-microsoft-yahoo_1.html&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&gt; Goal.com (England Replace Expelled Spain at Euro 2008)&lt;/span&gt;&lt;a href="http://www.goal.com/en/Articolo.aspx?ContenutoId=642832"&gt;&lt;span style="font-family:arial;"&gt;http://www.goal.com/en/Articolo.aspx?ContenutoId=642832&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&gt; freewebs.com (this redirects everything to a fake google.com and below you’ll see “2008® April Fools” &lt;/span&gt;&lt;a href="http://aprilfoolsdayontheweb.com/"&gt;&lt;span style="font-family:arial;"&gt;http://aprilfoolsdayontheweb.com&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&gt; Scientists Harness Kinetic Energy from Keyboards (Best april fool’s day blog post)&lt;/span&gt;&lt;a href="http://bobmccarty.com/2008/04/01/scientists-harness-kinetic-energy-from-keyboards/"&gt;&lt;span style="font-family:arial;"&gt;http://bobmccarty.com/2008/04/01/scientists-harness-kinetic-energy-from-keyboards/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Have FuN !! :-)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-5374967618359923597?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/5374967618359923597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=5374967618359923597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/5374967618359923597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/5374967618359923597'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/04/2008-april-fools-jokes-by-popular-web.html' title='2008 April Fools Jokes by popular web sites'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-7885481656151101272</id><published>2008-04-04T11:47:00.000+05:30</published><updated>2008-04-04T11:48:39.037+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><title type='text'>Dolls in a mans life :)</title><content type='html'>&lt;span style="font-family:arial;"&gt;The three Dolls in a man's life are:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;1........His Daughter, 'Baby doll'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;2........His Girlfriend, 'Barbie doll'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;3........His Wife, '&lt;strong&gt;Panadol &lt;/strong&gt;' !!  :-)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-7885481656151101272?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/7885481656151101272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=7885481656151101272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/7885481656151101272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/7885481656151101272'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/04/dolls-in-mans-life.html' title='Dolls in a mans life :)'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-4799747292087383594</id><published>2008-04-03T16:38:00.000+05:30</published><updated>2008-04-03T16:43:11.172+05:30</updated><title type='text'>Micro waved water - a MUST read</title><content type='html'>&lt;span style="font-family:arial;color:#000000;"&gt;A 26-year old decided to have a cup of coffee. He took a cup of water and put it in the microwave to heat it up (something that he had done numerous times before).&lt;br /&gt;I am not sure how long he set the timer for, but he told me he wanted to bring the water to a boil.&lt;br /&gt;&lt;br /&gt;When the timer shut the oven off, he removed the cup from the oven. As he looked into the cup, he noted that the water was not boiling, but instantly the water in the cup 'blew up' into his face. The cup remained intact until he threw it out of his hand but all the water had flown out into his face due to the build up of energy.&lt;br /&gt;&lt;br /&gt;His whole face is blistered and he has 1st and 2nd degree burns to his face, which may leave scarring. He also may have lost partial sight in his left eye.&lt;br /&gt;&lt;br /&gt;While at the hospital, the doctor who was attending to him stated that this is fairly common occurrence and water (alone) should never be heated in a microwave oven.. If water is heated in this manner, something should be placed in the cup to diffuse the energy such as: a wooden stir stick, tea bag, etc. It is however a much safer choice to boil the water in a tea kettle.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;span style="color:#666600;"&gt;&lt;strong&gt;General Electric's (GE) response:&lt;br /&gt;&lt;/strong&gt;Thanks for contacting us. I will be happy to assist you.&lt;br /&gt;&lt;br /&gt;The e-mail that you received is correct.  Micro waved water and other liquids do not always bubble when they reach the boiling point. They can actually get superheated and not bubble at all.&lt;br /&gt;&lt;br /&gt;The superheated liquid will bubble up out of the cup when it is moved or when something like a spoon or tea bag is put into it.&lt;br /&gt;&lt;br /&gt;To prevent this from happening and causing injury,&lt;br /&gt;Do not heat any liquid for more than two minutes per cup.&lt;br /&gt;&lt;br /&gt;After heating, let the cup stand in the microwave for thirty seconds before moving it or adding anything into it.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-4799747292087383594?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/4799747292087383594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=4799747292087383594' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/4799747292087383594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/4799747292087383594'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/04/micro-waved-water-must-read.html' title='Micro waved water - a MUST read'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-6943455647415916451</id><published>2008-04-02T17:39:00.000+05:30</published><updated>2008-04-02T17:42:14.542+05:30</updated><title type='text'>Java Programming Style Guidelines</title><content type='html'>&lt;span style="font-family:arial;"&gt;While a given development environment (IDE) can improve the readability of code by access visibility, color coding, automatic formatting and so on, the programmer should never rely on such features. Source code should always be considered larger than the IDE it is developed within and should be written in a way that maximize its readability independent of any IDE.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;This document lists Java coding recommendations common in the Java development community.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://geosoft.no/development/javastyle.html"&gt;&lt;span style="font-family:arial;"&gt;http://geosoft.no/development/javastyle.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;The recommendations are based on established standards collected from a number of sources, individual experience, local requirements/needs, as well as suggestions&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-6943455647415916451?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/6943455647415916451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=6943455647415916451' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/6943455647415916451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/6943455647415916451'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/04/java-programming-style-guidelines.html' title='Java Programming Style Guidelines'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-758135271041085403</id><published>2008-04-02T13:08:00.000+05:30</published><updated>2008-04-02T13:18:22.330+05:30</updated><title type='text'>SQL Injection: What is it?</title><content type='html'>&lt;span style="font-family:arial;"&gt;SQL Injection is one of the many web attack mechanisms used by hackers to steal data from organizations. It is perhaps one of the most common application layer attack techniques used today. It is the type of attack that takes advantage of improper coding of your web applications that allows hacker to inject SQL commands into say a login form to allow them to gain access to the data held within your database.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;In essence, SQL Injection arises because the fields available for user input allow SQL statements to pass through and query the database directly.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;SQL Injection: An In-depth Explanation&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Web applications allow legitimate website visitors to submit and retrieve data to/from a database over the Internet using their preferred web browser. Databases are central to modern websites – they store data needed for websites to deliver specific content to visitors and render information to customers, suppliers, employees and a host of stakeholders. User credentials, financial and payment information, company statistics may all be resident within a database and accessed by legitimate users through off-the-shelf and custom web applications. Web applications and databases allow you to regularly run your business.&lt;br /&gt;SQL Injection is the hacking technique which attempts to pass SQL commands (statements) through a web application for execution by the backend database. If not sanitized properly, web applications may result in SQL Injection attacks that allow hackers to view information from the database and/or even wipe it out.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Such features as login pages, support and product request forms, feedback forms, search pages, shopping carts and the general delivery of dynamic content, shape modern websites and provide businesses with the means necessary to communicate with prospects and customers. These website features are all examples of web applications which may be either purchased off-the-shelf or developed as bespoke programs.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;These website features are all susceptible to SQL Injection attacks which arise because the fields available for user input allow SQL statements to pass through and query the database directly.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;SQL Injection: A Simple Example&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Take a simple login page where a legitimate user would enter his username and password combination to enter a secure area to view his personal details or upload his comments in a forum.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;When the legitimate user submits his details, an SQL query is generated from these details and submitted to the database for verification. If valid, the user is allowed access. In other words, the web application that controls the login page will communicate with the database through a series of planned commands so as to verify the username and password combination. On verification, the legitimate user is granted appropriate access.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Through SQL Injection, the hacker may input specifically crafted SQL commands with the intent of bypassing the login form barrier and seeing what lies behind it. This is only possible if the inputs are not properly sanitised (i.e., made invulnerable) and sent directly with the SQL query to the database. SQL Injection vulnerabilities provide the means for a hacker to communicate directly to the database.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The technologies vulnerable to this attack are dynamic script languages including ASP, ASP.NET, PHP, JSP, and CGI. All an attacker needs to perform an SQL Injection hacking attack is a web browser, knowledge of SQL queries and creative guess work to important table and field names. The sheer simplicity of SQL Injection has fuelled its popularity.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Why is it possible to pass SQL queries directly to a database that is hidden behind a firewall and any other security mechanism?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Firewalls and similar intrusion detection mechanisms provide little or no defense against full-scale SQL Injection web attacks.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Since your website needs to be public, security mechanisms will allow public web traffic to communicate with your web application/s (generally over port 80/443). The web application has open access to the database in order to return (update) the requested (changed) information.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;In SQL Injection, the hacker uses SQL queries and creativity to get to the database of sensitive corporate data through the web application.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;SQL or Structured Query Language is the computer language that allows you to store, manipulate, and retrieve data stored in a relational database (or a collection of tables which organise and structure data). SQL is, in fact, the only way that a web application (and users) can interact with the database. Examples of relational databases include Oracle, Microsoft Access, MS SQL Server, MySQL, and Filemaker Pro, all of which use SQL as their basic building blocks.&lt;br /&gt;SQL commands include SELECT, INSERT, DELETE and DROP TABLE. DROP TABLE is as ominous as it sounds and in fact will eliminate the table with a particular name.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;In the legitimate scenario of the login page example above, the SQL commands planned for the web application may look like the following:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#3366ff;"&gt;SELECT count(*)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#3366ff;"&gt;FROM users_list_table&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#3366ff;"&gt;WHERE username=’FIELD_USERNAME’&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#3366ff;"&gt;AND password=’FIELD_PASSWORD”&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;In plain English, this SQL command (from the web application) instructs the database to match the username and password input by the legitimate user to the combination it has already stored.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Each type of web application is hard coded with specific SQL queries that it will execute when performing its legitimate functions and communicating with the database. If any input field of the web application is not properly sanitised, a hacker may inject additional SQL commands that broaden the range of SQL commands the web application will execute, thus going beyond the original intended design and function.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;A hacker will thus have a clear channel of communication (or, in layman terms, a tunnel) to the database irrespective of all the intrusion detection systems and network security equipment installed before the physical database server.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Is my database at risk to SQL Injection?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;SQL Injection is one of the most common application layer attacks currently being used on the Internet. Despite the fact that it is relatively easy to protect against SQL Injection, there are a large number of web applications that remain vulnerable.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;According to the Web Application Security Consortium (WASC) 9% of the total hacking incidents reported in the media until 27th July 2006 were due to SQL Injection. More recent data from our own research shows that about 50% of the websites we have scanned this year are susceptible to SQL Injection vulnerabilities.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;It may be difficult to answer the question whether your web site and web applications are vulnerable to SQL Injection especially if you are not a programmer or you are not the person who has coded your web applications.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Our experience leads us to believe that there is a significant chance that your data is already at risk from SQL Injection.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Whether an attacker is able to see the data stored on the database or not, really depends on how your website is coded to display the results of the queries sent. What is certain is that the attacker will be able to execute arbitrary SQL Commands on the vulnerable system, either to compromise it or else to obtain information.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;If improperly coded, then you run the risk of having your customer and company data compromised.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;What an attacker gains access to also depends on the level of security set by the database. The database could be set to restrict to certain commands only. A read access normally is enabled for use by web application back ends.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Even if an attacker is not able to modify the system, he would still be able to read valuable information.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;What is the impact of SQL Injection?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Once an attacker realizes that a system is vulnerable to SQL Injection, he is able to inject SQL Query / Commands through an input form field. This is equivalent to handing the attacker your database and allowing him to execute any SQL command including DROP TABLE to the database!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;An attacker may execute arbitrary SQL statements on the vulnerable system. This may compromise the integrity of your database and/or expose sensitive information. Depending on the back-end database in use, SQL injection vulnerabilities lead to varying levels of data/system access for the attacker. It may be possible to manipulate existing queries, to UNION (used to select related information from two tables) arbitrary data, use subselects, or append additional queries.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;In some cases, it may be possible to read in or write out to files, or to execute shell commands on the underlying operating system. Certain SQL Servers such as Microsoft SQL Server contain stored and extended procedures (database server functions). If an attacker can obtain access to these procedures, it could spell disaster.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Unfortunately the impact of SQL Injection is only uncovered when the theft is discovered. Data is being unwittingly stolen through various hack attacks all the time. The more expert of hackers rarely get caught.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Example of a SQLInjection Attack&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Here is a sample basic HTML form with two inputs, login and password.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#3366ff;"&gt;&amp;lt;form method="post" action="http://testasp.acunetix.com/login.asp"&amp;gt; &amp;lt;input name="tfUName" type="text" id="tfUName"&amp;gt; &amp;lt;input name="tfUPass" type="password" id="tfUPass"&amp;gt; &amp;lt;/form&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The easiest way for the login.asp to work is by building a database query that looks like this:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#3366ff;"&gt;SELECT id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#3366ff;"&gt;FROM logins&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#3366ff;"&gt;WHERE username = '$username'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#3366ff;"&gt;AND password = '$password’&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;If the variables $username and $password are requested directly from the user's input, this can easily be compromised. Suppose that we gave "Joe" as a username and that the following string was provided as a password: anything' OR 'x'='x&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#3366ff;"&gt;SELECT id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#3366ff;"&gt;FROM logins&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#3366ff;"&gt;WHERE username = 'Joe'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#3366ff;"&gt;AND password = 'anything' OR 'x'='x'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;As the inputs of the web application are not properly sanitised, the use of the single quotes has turned the WHERE SQL command into a two-component clause.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The 'x'='x' part guarantees to be true regardless of what the first part contains.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;This will allow the attacker to bypass the login form without actually knowing a valid username / password combination!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-758135271041085403?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/758135271041085403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=758135271041085403' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/758135271041085403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/758135271041085403'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/04/sql-injection-what-is-it.html' title='SQL Injection: What is it?'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-74159254382054191</id><published>2008-04-02T12:53:00.000+05:30</published><updated>2008-04-02T13:41:08.693+05:30</updated><title type='text'>Cross site Scripting</title><content type='html'>&lt;strong&gt;&lt;span style="font-family:verdana;"&gt;What is Cross site Scripting?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Hackers are constantly experimenting with a wide repertoire of hacking techniques to compromise websites and web applications and make off with a treasure trove of sensitive data including credit card numbers, social security numbers and even medical records. Cross Site Scripting (also known as &lt;/span&gt;&lt;a title="http://www.acunetix.com/websitesecurity/xss.htm" href="http://www.acunetix.com/websitesecurity/xss.htm"&gt;&lt;span style="font-family:arial;"&gt;XSS&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; or CSS) is generally believed to be one of the most common application layer hacking techniques.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_p61uxQ-3SUY/R_M06zI2w0I/AAAAAAAAB0M/i88qe6n2u0w/s1600-h/untitled.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5184545780797981506" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_p61uxQ-3SUY/R_M06zI2w0I/AAAAAAAAB0M/i88qe6n2u0w/s320/untitled.bmp" border="0" /&gt;&lt;/a&gt;&lt;strong&gt;&lt;span style="font-family:verdana;"&gt; &lt;/span&gt;&lt;span style="font-family:arial;"&gt;In general, cross-site scripting refers to that hacking technique that leverages vulnerabilities in the code of a web application to allow an attacker to send malicious content from an end-user and collect some type of data from the victim.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Today, websites rely heavily on complex web applications to deliver different output or content to a wide variety of users according to set preferences and specific needs. This arms organizations with the ability to provide better value to their customers and prospects. However, dynamic websites suffer from serious vulnerabilities rendering organizations helpless and prone to cross site scripting attacks on their data.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;"A web page contains both text and HTML markup that is generated by the server and interpreted by the client browser. Web sites that generate only static pages are able to have full control over how the browser interprets these pages. Web sites that generate dynamic pages do not have complete control over how their outputs are interpreted by the client. The heart of the issue is that if mistrusted content can be introduced into a dynamic page, neither the web site nor the client has enough information to recognize that this has happened and take protective actions." (CERT Coordination Center).&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Cross Site Scripting allows an attacker to embed malicious &lt;/span&gt;&lt;a title="http://www.acunetix.com/websitesecurity/javascript.htm" href="http://www.acunetix.com/websitesecurity/javascript.htm"&gt;&lt;span style="font-family:arial;"&gt;JavaScript&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;, VBScript, ActiveX, HTML, or Flash into a vulnerable dynamic page to fool the user, executing the script on his machine in order to gather data. The use of XSS might compromise private information, manipulate or steal cookies, create requests that can be mistaken for those of a valid user, or execute malicious code on the end-user systems. The data is usually formatted as a hyperlink containing malicious content and which is distributed over any possible means on the internet.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;As a hacking tool, the attacker can formulate and distribute a custom-crafted CSS URL just by using a browser to test the dynamic website response. The attacker also needs to know some HTML, JavaScript and a dynamic language, to produce a URL which is not too suspicious-looking, in order to attack a XSS vulnerable website.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Any web page which passes parameters to a database can be vulnerable to this hacking technique. Usually these are present in Login forms, Forgot Password forms, etc…&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;N.B.&lt;/strong&gt; Often people refer to Cross Site Scripting as CSS or XSS, which is can be confused with Cascading Style Sheets (CSS).&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Is your site vulnerable to Cross Site Scripting&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Our experience leads us to conclude that the cross-site scripting vulnerability is one of the most highly widespread flaw on the Internet and will occur anywhere a web application uses input from a user in the output it generates without validating it. Our own research shows that over a third of the organizations applying for our free audit service are vulnerable to Cross Site Scripting. And the trend is upward.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Example of a Cross Site Scripting attack&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;As a simple example, imagine a search engine site which is open to an XSS attack. The query screen of the search engine is a simple single field form with a submit button. Whereas the results page, displays both the matched results and the text you are looking for.&lt;/p&gt;&lt;p&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br /&gt;Search Results for "XSS Vulnerability" &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;To be able to bookmark pages, search engines generally leave the entered variables in the URL address. In this case the URL would look like:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://test.searchengine.com/search.php?q=XSS%20"&gt;&lt;span style="font-family:arial;"&gt;http://test.searchengine.com/search.php?q=XSS%20&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Vulnerability&lt;br /&gt;Next we try to send the following query to the search engine:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&amp;lt;script type="text/javascript"&amp;gt; alert('This is an XSS Vulnerability') &amp;lt;/script&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;By submitting the query to search.php, it is encoded and the resulting URL would be something like:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;http://test.searchengine.com/search.php?q=%3Cscript%3&lt;br /&gt;Ealert%28%91This%20is%20an%20XSS%20Vulnerability%92%2&lt;br /&gt;9%3C%2Fscript%3E&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Upon loading the results page, the test search engine would probably display no results for the search but it will display a JavaScript alert which was injected into the page by using the XSS vulnerability&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;How to check for Cross site scripting vulnerabilities&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;To check for Cross site scripting vulnerabilities, use a Web Vulnerability Scanner. A Web Vulnerability Scanner crawls your entire website and automatically checks for Cross Site Scripting vulnerabilities. It will indicate which URLs/scripts are vulnerable to these attacks so that you can fix the vulnerability easily. Besides Cross site scripting vulnerabilities a web application scanner will also check for &lt;/span&gt;&lt;a title="http://www.acunetix.com/websitesecurity/sql-injection.htm" href="http://www.acunetix.com/websitesecurity/sql-injection.htm"&gt;&lt;span style="font-family:arial;"&gt;SQL injection&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; &amp;amp; other web vulnerabilities.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Preventing Cross Site Scripting attacks&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;To prevent these attacks, dangerous characters must be filtered out from the web application inputs. These should be filtered out both in their ASCII and HEX values.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Out of the 100,000 websites scanned by Acunetix WVS, 42% were found to be vulnerable to Cross Site Scripting. XSS is extremely dangerous and the number of the attacks is on the rise. Hackers are manipulating these vulnerabilities to steal organizations’ sensitive data. Can you afford to be next?&lt;br /&gt;&lt;br /&gt;Cross Site Scripting allows an attacker to embed malicious JavaScript, VBScript, ActiveX, HTML, or Flash into a vulnerable dynamic page to fool the user, executing the script on his machine in order to gather data. Exploited Cross Site Scripting is commonly used to achieve the following malicious results:&lt;br /&gt;&lt;br /&gt;Identity theft&lt;br /&gt;Accessing sensitive or restricted information&lt;br /&gt;Gaining free access to otherwise paid for content&lt;br /&gt;Spying on user’s web browsing habits&lt;br /&gt;Altering browser functionality&lt;br /&gt;Public defamation of an individual or corporation&lt;br /&gt;Web application defacement&lt;br /&gt;Denial of Service attacks&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Scan your website for Cross Site Scripting Vulnerabilities at no cost&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Acunetix WVS Free Edition will scan your website for Cross Site Scripting vulnerabilities and it will also reveal the essential information related to it: such as the location of the vulnerability and techniques to fix the problem.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-74159254382054191?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/74159254382054191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=74159254382054191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/74159254382054191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/74159254382054191'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/04/cross-site-scripting.html' title='Cross site Scripting'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_p61uxQ-3SUY/R_M06zI2w0I/AAAAAAAAB0M/i88qe6n2u0w/s72-c/untitled.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-4867592591683288662</id><published>2008-03-18T13:33:00.000+05:30</published><updated>2008-03-18T13:34:50.800+05:30</updated><title type='text'>Mobile Phone Testing Platform on Internet</title><content type='html'>&lt;span style="font-family:arial;"&gt;Mobile Complete offers about a thousand disassembled cell phones of every description, wired to servers. The phones run live for real-time 24/7 remote testing.&lt;br /&gt;DeviceAnywhere is a revolutionary online service of MobileComplete that provides access to hundreds of real handsets, on live worldwide networks, remotely over the Internet - for all your dev/porting/testing needs.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Read more at&lt;/span&gt;&lt;br /&gt;&lt;a title="http://www.wired.com/gadgets/wireless/news/2007/10/iphone_dev_platform" href="http://www.wired.com/gadgets/wireless/news/2007/10/iphone_dev_platform"&gt;&lt;span style="font-family:arial;"&gt;http://www.wired.com/gadgets/wireless/news/2007/10/iphone_dev_platform&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-4867592591683288662?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/4867592591683288662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=4867592591683288662' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/4867592591683288662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/4867592591683288662'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/03/mobile-phone-testing-platform-on.html' title='Mobile Phone Testing Platform on Internet'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-7668969965278287057</id><published>2008-03-18T13:29:00.000+05:30</published><updated>2008-03-18T13:32:05.231+05:30</updated><title type='text'>Tri Lingual Email</title><content type='html'>Get Your Tri Lingual Email Address from &lt;strong&gt;ICTA&lt;/strong&gt;&lt;br /&gt;It's COOL !!&lt;br /&gt;&lt;br /&gt;&lt;a title="http://www.esrilanka.lk/esrilanka/src/login.php" href="http://www.esrilanka.lk/esrilanka/src/login.php"&gt;http://www.esrilanka.lk/esrilanka/src/login.php&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-7668969965278287057?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/7668969965278287057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=7668969965278287057' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/7668969965278287057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/7668969965278287057'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/03/tri-lingual-email.html' title='Tri Lingual Email'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-8176887057149053944</id><published>2008-03-11T18:05:00.000+05:30</published><updated>2008-03-11T18:09:56.577+05:30</updated><title type='text'>Good Read on TCP/IP</title><content type='html'>&lt;span style="font-family:arial;"&gt;Have you ever wondered how data reaches your computer from all over the world as you browse the Internet? You may have heard of TCP/IP, but what exactly is it doing to reach that single Web server over in the United States, all the way from Sri Lanka? How does that information reach you?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Read this!!&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.newartisans.com/blog_files/life.and.times.tcp.packet.php#unique-entry-id-42"&gt;&lt;span style="font-family:arial;"&gt;http://www.newartisans.com/blog_files/life.and.times.tcp.packet.php#unique-entry-id-42&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-8176887057149053944?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/8176887057149053944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=8176887057149053944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/8176887057149053944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/8176887057149053944'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/03/good-read-on-tcpip.html' title='Good Read on TCP/IP'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-1878318200100698734</id><published>2008-03-11T18:03:00.000+05:30</published><updated>2008-03-11T18:05:47.945+05:30</updated><title type='text'>Global Incidents Map</title><content type='html'>&lt;span style="font-family:arial;"&gt;This is interesting!  When you click on the website link below, a world Map comes up showing what strange &amp;amp; dangerous things are happening right now in every country in the entire world &amp;amp; is updated every few minutes. You can move the map around, zero in on any one area &amp;amp; actually up-load the story of what is going on. It is amazing when you can see the things that are happening anywhere, sometimes right in your own state or even your city.  Global Incident Map:  There is a lot happening in our world every minute.  This "map" updates every 460 seconds...constantly 24/7. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a title="http://www.globalincidentmap.com/home.php" href="http://www.globalincidentmap.com/home.php" target="_blank"&gt;&lt;span style="font-family:arial;"&gt;http://www.globalincidentmap.com/home.php&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Click on any icon on the map for text update information.  It's not  just about Terrorism - it's about everything happening every minute some  place in the world of terrorism threats, explosions, airline   incidents, etc.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-1878318200100698734?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/1878318200100698734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=1878318200100698734' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/1878318200100698734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/1878318200100698734'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/03/global-incidents-map.html' title='Global Incidents Map'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-1439891670968905236</id><published>2008-03-03T18:34:00.001+05:30</published><updated>2008-03-03T18:34:40.375+05:30</updated><title type='text'>An Online RegX Generator</title><content type='html'>An effective online Regular Expression generator&lt;br /&gt;&lt;br /&gt;&lt;a title="http://www.txt2re.com/index-csharp.php3" href="http://www.txt2re.com/index-csharp.php3"&gt;http://www.txt2re.com/index-csharp.php3&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-1439891670968905236?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/1439891670968905236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=1439891670968905236' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/1439891670968905236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/1439891670968905236'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/03/online-regx-generator.html' title='An Online RegX Generator'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-3749762175841278498</id><published>2008-03-03T18:30:00.000+05:30</published><updated>2008-03-03T18:33:06.210+05:30</updated><title type='text'>SQL Trigger Order Control</title><content type='html'>&lt;span style="font-family:arial;"&gt;Good quick read on controlling the firing order of 2 or 3 triggers which fire on the same table action. (More than 3 triggers can NOT be controlled)&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;span style="color:#660000;"&gt;&lt;span style="font-size:85%;"&gt;I have two triggers defined on my table which are set to fire on the same table actions (i.e. an INSERT, DELETE, UPDATE transaction).  The second trigger that fires is dependent on the first fired trigger.  How can I make sure that they fire in the correct order to enforce my business logic?  In addition, as our system changes, what are some of the caveats that I need to be aware of when managing the trigger firing order?&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;a title="http://www.mssqltips.com/tip.asp?tip=" href="http://www.mssqltips.com/tip.asp?tip=1409"&gt;&lt;span style="font-family:arial;"&gt;http://www.mssqltips.com/tip.asp?tip=1409&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-3749762175841278498?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/3749762175841278498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=3749762175841278498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/3749762175841278498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/3749762175841278498'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/03/sql-trigger-order-control.html' title='SQL Trigger Order Control'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-169841084435433041</id><published>2008-03-03T18:29:00.000+05:30</published><updated>2008-03-03T18:30:07.822+05:30</updated><title type='text'>Now I'm going to love .NET</title><content type='html'>.NET Framework Source Code now available&lt;br /&gt;&lt;br /&gt;&lt;a title="http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx" href="http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-169841084435433041?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/169841084435433041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=169841084435433041' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/169841084435433041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/169841084435433041'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/03/now-im-going-to-love-net.html' title='Now I&apos;m going to love .NET'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-3951462011955606163</id><published>2008-02-29T18:33:00.000+05:30</published><updated>2008-02-29T18:35:06.323+05:30</updated><title type='text'>Defend Your ASP.NET Web Sites against Evil Bots</title><content type='html'>&lt;span style="font-family:arial;"&gt;Robots are taking control of the Internet! Don’t let them overwhelm your Web site with their unrelenting, self-serving probes. Now you can fight back with this free control that allows you to discriminate between human and computer visitors.&lt;br /&gt;While this might sound like a sci-fi promotion for the next Terminator or Transformers movie, in a way, that ominous sci-fi future is already here. But don’t be too afraid — just like in the movies, there are robots here to help us, too. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Find more about Defending Your ASP.NET Web Sites against Evil Bots at&lt;/span&gt;&lt;br /&gt;&lt;a href="http://steveorr.net/articles/CAPTCHASP.aspx"&gt;&lt;span style="font-family:arial;"&gt;http://steveorr.net/articles/CAPTCHASP.aspx&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-3951462011955606163?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/3951462011955606163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=3951462011955606163' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/3951462011955606163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/3951462011955606163'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/02/defend-your-aspnet-web-sites-against.html' title='Defend Your ASP.NET Web Sites against Evil Bots'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-5589957621637138733</id><published>2008-02-28T18:55:00.000+05:30</published><updated>2008-02-28T18:57:37.653+05:30</updated><title type='text'>How to use java script with ASP.NET 2.0</title><content type='html'>ASP.NET 2.0 has made quite a few enhancements over ASP.NET 1.x in terms of handling common client-side tasks. It has also created new classes, properties and method of working with JavaScript code. This article explores the enhancements and the various ways of injecting JavaScript programmatically into ASP.NET 2.0 pages.&lt;br /&gt;&lt;br /&gt;More info can be found at;&lt;br /&gt;&lt;a href="http://dotnetslackers.com/articles/aspnet/JavaScript_with_ASP_NET_2_0_Pages_Part1.aspx"&gt;http://dotnetslackers.com/articles/aspnet/JavaScript_with_ASP_NET_2_0_Pages_Part1.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-5589957621637138733?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/5589957621637138733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=5589957621637138733' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/5589957621637138733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/5589957621637138733'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/02/how-to-use-java-script-with-aspnet-20.html' title='How to use java script with ASP.NET 2.0'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-3422339027823328612</id><published>2008-02-28T18:50:00.000+05:30</published><updated>2008-02-28T18:55:07.510+05:30</updated><title type='text'>Unlocker</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Ever had such an annoying message given by Windows? &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5172020663836675858" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_p61uxQ-3SUY/R8a1ZCb3DxI/AAAAAAAAA-I/y3-kNdu1WGc/s400/untitled.bmp" border="0" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;It has many other flavors:&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;color:#993300;"&gt;&gt;&gt; Cannot delete file:&lt;br /&gt;&gt;&gt; Access is deniedThere has been a sharing violation.&lt;br /&gt;&gt;&gt; The source or destination file may be in use.&lt;br /&gt;&gt;&gt; The file is in use by another program or user.&lt;br /&gt;&gt;&gt; Make sure the disk is not full or write-protected and that the file is not currently in use.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Unlocker is the solution!&lt;/strong&gt;&lt;br /&gt;For more information refer the following URL. &lt;/span&gt;&lt;a title="http://ccollomb.free.fr/unlocker/" href="http://ccollomb.free.fr/unlocker/"&gt;&lt;span style="font-family:arial;"&gt;http://ccollomb.free.fr/unlocker/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-3422339027823328612?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/3422339027823328612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=3422339027823328612' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/3422339027823328612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/3422339027823328612'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/02/ever-had-such-annoying-message-given-by.html' title='Unlocker'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_p61uxQ-3SUY/R8a1ZCb3DxI/AAAAAAAAA-I/y3-kNdu1WGc/s72-c/untitled.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-8516026908501961224</id><published>2008-02-28T18:27:00.002+05:30</published><updated>2008-02-28T18:32:43.871+05:30</updated><title type='text'>Top 10 Largest Databases in the World</title><content type='html'>&lt;span style="color:#990000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;We all collected things as children. Rocks, baseball cards, Barbies, perhaps even bugs -- we all tried to gather up as much stuff as possible to compile the biggest most interesting collection possible. Some of you may have even been able to amass a collection of items numbering into the hundreds (or thousands).&lt;br /&gt;As the story always goes, we got older, our collections got smaller, and eventually our interests died out...until now.&lt;br /&gt;There are currently organizations around the world in the business of amassing collections of things, and their collections number into and above the trillions. In many cases these collections, or databases, consist of items we use every day.&lt;br /&gt;In this list, we cover the top 10 largest databases in the world:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;10. Library of Congress&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Not even the digital age can prevent the world's largest library from ending up on this list. The &lt;/span&gt;&lt;a title="http://www.loc.gov/" href="http://www.loc.gov/"&gt;&lt;span style="font-family:times new roman;"&gt;Library of Congress&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; (LC) boasts more than 130 million items ranging from cook books to colonial newspapers to U.S. government proceedings. It is estimated that the text portion of the Library of Congress would comprise 20 terabytes of data. The LC expands at a rate of 10,000 items per day and takes up close to &lt;/span&gt;&lt;a title="http://en.wikipedia.org/wiki/Library_of_congress" href="http://en.wikipedia.org/wiki/Library_of_congress"&gt;&lt;span style="font-family:times new roman;"&gt;530 miles of shelf space&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; -- talk about a lengthy search for a book.&lt;br /&gt;If you're researching a topic and cannot find the right information on the internet, the Library of Congress should be your destination of choice. For users researching U.S. history, around 5 million pieces from the LC's collection can be found online at &lt;/span&gt;&lt;a title="http://memory.loc.gov/ammem/index.html" href="http://memory.loc.gov/ammem/index.html"&gt;&lt;span style="font-family:times new roman;"&gt;American Memory&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt;.&lt;br /&gt;Unfortunately for us, the Library of Congress has no plans of digitizing the entirety of its contents and limits the people who can check out materials to Supreme Court Justices, members of Congress, their respective staff, and a select few other government officials; however, anyone with a valid Reader Identification Card (the LC's library card) can access the collection.&lt;br /&gt;By the Numbers&lt;br /&gt;130 million items (books, photographs, maps, etc)&lt;br /&gt;29 million books&lt;br /&gt;10,000 new items added each day&lt;br /&gt;530 miles of shelves&lt;br /&gt;5 million digital documents&lt;br /&gt;20 terabytes of text data&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;9. Central Intelligence Agency&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;a title="http://www.cia.gov/" href="http://www.cia.gov/"&gt;&lt;span style="font-family:times new roman;"&gt;The Central Intelligence Agency&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; (CIA) is in the business of collecting and distributing information on people, places and things, so it should come as no surprise that they end up on this list. Although little is known about the overall size of the CIA's database, it is certain that the agency has amassed a great deal of information on both the public and private sectors via field work and digital intrusions.&lt;br /&gt;Portions of the CIA database available to the public include the &lt;/span&gt;&lt;a title="http://en.wikipedia.org/wiki/Freedom_of_Information_Act_(United_States)" href="http://en.wikipedia.org/wiki/Freedom_of_Information_Act_(United_States)"&gt;&lt;span style="font-family:times new roman;"&gt;Freedom of Information Act&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; (FOIA) &lt;/span&gt;&lt;a title="http://www.foia.cia.gov/" href="http://www.foia.cia.gov/"&gt;&lt;span style="font-family:times new roman;"&gt;Electronic Reading Room&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt;, &lt;/span&gt;&lt;a title="https://www.cia.gov/cia/publications/factbook/index.html" href="https://www.cia.gov/cia/publications/factbook/index.html"&gt;&lt;span style="font-family:times new roman;"&gt;The World Fact Book&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt;, and &lt;/span&gt;&lt;a title="https://www.cia.gov/cia/publications/" href="https://www.cia.gov/cia/publications/"&gt;&lt;span style="font-family:times new roman;"&gt;various other intelligence related publications&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt;. The FOIA library includes hundreds of thousands of official (and occasionally ultra-sensitive) U.S. government documents made available to the public electronically. The library grows at a rate of 100 articles per month and contains topics ranging from nuclear development in Pakistan to the type of beer available during the Korean War. The World Fact Book boasts general information on every country and territory in the world including maps, population numbers, military capabilities and more.&lt;br /&gt;By the Numbers&lt;br /&gt;100 FOIA items added each month&lt;br /&gt;Comprehensive statistics on more than 250 countries and entities&lt;br /&gt;Unknown number of classified information&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:times new roman;"&gt;&lt;span style="color:#990000;"&gt;8. Amazon&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;a title="http://www.amazon.com/" href="http://www.amazon.com/"&gt;&lt;span style="font-family:times new roman;"&gt;Amazon&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt;, the world's biggest retail store, maintains extensive records on its 59 million active customers including general personal information (phone number address, etc), receipts, wishlists, and virtually any sort of data the website can extract from its users while they are logged on. Amazon also keeps more than &lt;/span&gt;&lt;a title="http://en.wikipedia.org/wiki/Amazon.com" href="http://en.wikipedia.org/wiki/Amazon.com"&gt;&lt;span style="font-family:times new roman;"&gt;250,000 full text books&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; available online and allows users to comment and interact on virtually every page of the website, making Amazon one of the world's largest online communities.&lt;br /&gt;This data coupled with millions of items in inventory Amazon sells each year -- and the millions of items in inventory Amazon associates sell -- makes for one very large database. Amazon's two largest databases combine for more than &lt;/span&gt;&lt;a title="http://www.wintercorp.com/VLDB/2005_TopTen_Survey/2005TopTenWinners.pdf" href="http://www.wintercorp.com/VLDB/2005_TopTen_Survey/2005TopTenWinners.pdf"&gt;&lt;span style="font-family:times new roman;"&gt;42 terabytes of data&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt;, and that's only the beginning of things. If Amazon published the total number of databases they maintain and volume of data each database contained, the amount of data we know Amazon houses would increase substantially.&lt;br /&gt;But still, you say 42 terabytes, that doesn't sound like so much. In relative terms, 42 terabytes of data would convert to &lt;/span&gt;&lt;a title="http://www.theadminzone.com/forums/showthread.php?s=" href="http://www.theadminzone.com/forums/showthread.php?s=c3134256e523c77bca455b322ce9eb4a&amp;amp;t=22544&amp;amp;page=2" t="22544&amp;amp;page="&gt;&lt;span style="font-family:times new roman;"&gt;37 trillion forum posts&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt;.&lt;br /&gt;By the Numbers&lt;br /&gt;59 million active customers&lt;br /&gt;More than 42 terabytes of data&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;7. YouTube&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;After less than two years of operation &lt;/span&gt;&lt;a title="http://www.youtube.com/" href="http://www.youtube.com/"&gt;&lt;span style="font-family:times new roman;"&gt;YouTube&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; has amassed the largest video library (and subsequently one of the largest databases) in the world. YouTube currently boasts a user base that watches more than 100 million clips per day accounting for more than 60% of all videos watched online.&lt;br /&gt;In August of 2006, the Wall Street Journal projected YouTube's database to the sound of &lt;/span&gt;&lt;a title="http://online.wsj.com/public/article/SB115689298168048904-5wWyrSwyn6RfVfz9NwLk774VUWc_20070829.html?mod=" href="http://online.wsj.com/public/article/SB115689298168048904-5wWyrSwyn6RfVfz9NwLk774VUWc_20070829.html?mod=rss_free"&gt;&lt;span style="font-family:times new roman;"&gt;45 terabytes of videos&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt;. While that figure doesn't sound terribly high relative to the amount of data available on the internet, YouTube has been experiencing a period of substantial growth (more than &lt;/span&gt;&lt;a title="http://www.youtube.com/t/fact_sheet" href="http://www.youtube.com/t/fact_sheet"&gt;&lt;span style="font-family:times new roman;"&gt;65,000 new videos per day&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt;) since that figures publication, meaning that YouTube's database size has potentially more than doubled in the last 5 months.&lt;br /&gt;Estimating the size of YouTube's database is particularly difficult due to the varying sizes and lengths of each video. However if one were truly ambitious (and a bit forgiving) we could project that the YouTube database will expect to grow as much as 20 terabytes of data in the next month.&lt;br /&gt;Given: 65,000 videos per day X 30 days per month = 1,950,000 videos per month; 1 terabyte = 1,048,576 megabytes. If we assume that each video has a size of 1MB, YouTube would expect to grow 1.86 terabytes next month. Similarly, if we assume that each video has a size of 10MB, YouTube would expect to grow 18.6 terabytes next month.&lt;br /&gt;By the Numbers&lt;br /&gt;100 million videos watched per day&lt;br /&gt;65,000 videos added each day&lt;br /&gt;60% of all videos watched online&lt;br /&gt;At least 45 terabytes of videos&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;6. ChoicePoint&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Imagine having to search through a phone book containing &lt;/span&gt;&lt;a title="http://web.monroecc.edu/ETSTechNEWS/pagespergigabyte" href="http://web.monroecc.edu/ETSTechNEWS/pagespergigabyte"&gt;&lt;span style="font-family:times new roman;"&gt;a billion pages&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; for a phone number. When the employees at &lt;/span&gt;&lt;a title="http://www.choicepoint.com/" href="http://www.choicepoint.com/"&gt;&lt;span style="font-family:times new roman;"&gt;ChoicePoint&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; want to know something about you, they have to do just that. If printed out, the ChoicePoint database would extend to the moon and back 77 times.&lt;br /&gt;ChoicePoint is in the business of acquiring information about the American population -- addresses and phone numbers, driving records, criminal histories, etc., ChoicePoint has it all. For the most part, the data found in ChoicePoint's database is sold to the highest bidders, including the American government.&lt;br /&gt;But how much does ChoicePoint really know? In 2002 ChoicePoint was able to help authorities &lt;/span&gt;&lt;a title="http://www.businessweek.com/magazine/content/05_04/b3917056_mz005.htm" href="http://www.businessweek.com/magazine/content/05_04/b3917056_mz005.htm"&gt;&lt;span style="font-family:times new roman;"&gt;solve a serial rapist case&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; in Philadelphia and Fort Collins after producing a list of 6 potential suspects by data mining their DNA and personal records databases. In 2001 ChoicePoint was able to identify the remains of World Trade Center victims by matching DNA found in bone fragments to the information provided by victim's family members in conjunction to data found in their databases.&lt;br /&gt;By the Numbers&lt;br /&gt;250 terabytes of personal data&lt;br /&gt;Information on 250 million people&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;5. Sprint&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;a title="http://www.sprint.com/" href="http://www.sprint.com/"&gt;&lt;span style="font-family:times new roman;"&gt;Sprint&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; is one of the world's largest telecommunication companies as it offers mobile services to more than &lt;/span&gt;&lt;a title="http://en.wikipedia.org/wiki/List_of_mobile_network_operators" href="http://en.wikipedia.org/wiki/List_of_mobile_network_operators"&gt;&lt;span style="font-family:times new roman;"&gt;53 million subscribers&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt;, and prior to being sold in May of 2006, offered local and long distance land line packages.&lt;br /&gt;Large telecommunication companies like Sprint are notorious for having immense databases to keep track of all of the calls taking place on their network. Sprint's database processes more than &lt;/span&gt;&lt;a title="http://www.dmreview.com/awards/wcs/2006/HP.cfm" href="http://www.dmreview.com/awards/wcs/2006/HP.cfm"&gt;&lt;span style="font-family:times new roman;"&gt;365 million call detail records&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; and operational measurements per day. The Sprint database is spread across &lt;/span&gt;&lt;a title="http://www.wintercorp.com/VLDB/2005_TopTen_Survey/2005TopTenWinners.pdf" href="http://www.wintercorp.com/VLDB/2005_TopTen_Survey/2005TopTenWinners.pdf"&gt;&lt;span style="font-family:times new roman;"&gt;2.85 trillion database rows&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; making it the database with the largest number of rows (data insertions if you will) in the world. At its peak, the database is subjected to more than 70,000 call detail record insertions per second.&lt;br /&gt;By the Numbers&lt;br /&gt;2.85 trillion database rows.&lt;br /&gt;365 million call detail records processed per day&lt;br /&gt;At peak, 70,000 call detail record insertions per second&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;4. Google&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Although there is not much known about the true size of &lt;/span&gt;&lt;a title="http://www.google.com/" href="http://www.google.com/"&gt;&lt;span style="font-family:times new roman;"&gt;Google's&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; database (Google keeps their information locked away in a vault that would put Fort Knox to shame), there is much known about the amount of and types of information Google collects.&lt;br /&gt;On average, Google is subjected to &lt;/span&gt;&lt;a title="http://searchenginewatch.com/showPage.html?page=" href="http://searchenginewatch.com/showPage.html?page=2156461"&gt;&lt;span style="font-family:times new roman;"&gt;91 million searches per day&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt;, which accounts for close to 50% of all internet search activity. Google stores each and every search a user makes into its databases. After a years worth of searches, this figure amounts to more than 33 trillion database entries. Depending on the type of architecture of Google's databases, this figure could comprise hundreds of terabytes of information.&lt;br /&gt;Google is also in the business of collecting information on its users. Google combines the queries users search for with information provided by the Google cookies stored on a user's computer to create virtual profiles.&lt;br /&gt;To top it off, Google is currently experiencing record &lt;/span&gt;&lt;a title="http://en.wikipedia.org/wiki/Google" href="http://en.wikipedia.org/wiki/Google"&gt;&lt;span style="font-family:times new roman;"&gt;expansion&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; rates by assimilating into various realms of the internet including digital media (Google Video, YouTube), advertising (Google Ads), email (GMail), and more. Essentially, the more Google expands, the more information their databases will be subjected to.&lt;br /&gt;In terms of internet databases, Google is king.&lt;br /&gt;By the Numbers&lt;br /&gt;91 million searches per day&lt;br /&gt;accounts for 50% of all internet searches&lt;br /&gt;Virtual profiles of countless number of users&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;3. AT&amp;amp;T&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Similar to Sprint, the United States' &lt;/span&gt;&lt;a title="http://en.wikipedia.org/wiki/American_Telephone_&amp;amp;_Telegraph_Company" href="http://en.wikipedia.org/wiki/American_Telephone_&amp;amp;_Telegraph_Company"&gt;&lt;span style="font-family:times new roman;"&gt;oldest telecommunications company&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; &lt;/span&gt;&lt;a title="http://www.att.com/" href="http://www.att.com/"&gt;&lt;span style="font-family:times new roman;"&gt;AT&amp;amp;T&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; maintains one of the world's largest databases. Architecturally speaking, the largest AT&amp;amp;T database is the cream of the crop as it boasts titles including the largest volume of data in one unique database (&lt;/span&gt;&lt;a title="http://www.research.att.com/~daytona/" href="http://www.research.att.com/~daytona/"&gt;&lt;span style="font-family:times new roman;"&gt;312 terabytes&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt;) and the second largest number of rows in a unique database (1.9 trillion), which comprises AT&amp;amp;T's extensive calling records.&lt;br /&gt;The &lt;/span&gt;&lt;a title="http://www.nytimes.com/2006/02/25/technology/25data.html?pagewanted=" href="http://www.nytimes.com/2006/02/25/technology/25data.html?pagewanted=2&amp;amp;ei=5090&amp;amp;en=5583a492b312609b&amp;amp;ex=1298523600&amp;amp;partner=rssuserland&amp;amp;emc=rss" ei="5090&amp;amp;en=" ex="1298523600&amp;amp;partner=" emc="rss"&gt;&lt;span style="font-family:times new roman;"&gt;1.9 trillion calling records&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; include data on the number called, the time and duration of the call and various other billing categories. AT&amp;amp;T is so meticulous with their records that they've maintained calling data from decades ago -- long before the technology to store hundreds of terabytes of data ever became available. Chances are, if you're reading this have made a call via AT&amp;amp;T, the company still has all of your call's information.&lt;br /&gt;By the Numbers&lt;br /&gt;323 terabytes of information&lt;br /&gt;1.9 trillion phone call records&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;2. National Energy Research Scientific Computing Center&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;The second largest database in the world belongs to the &lt;/span&gt;&lt;a title="http://www.nersc.gov/" href="http://www.nersc.gov/"&gt;&lt;span style="font-family:times new roman;"&gt;National Energy Research Scientific Computing Center&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; (NERSC) in Oakland, California. NERSC is owned and operated by the &lt;/span&gt;&lt;a title="http://en.wikipedia.org/wiki/Lawrence_Berkeley_National_Laboratory" href="http://en.wikipedia.org/wiki/Lawrence_Berkeley_National_Laboratory"&gt;&lt;span style="font-family:times new roman;"&gt;Lawrence Berkeley National Laboratory&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; and the U.S. Department of Energy. The database is privy to a host of information including atomic enegry research, high energy physics experiements, simulations of the early universe and more. Perhaps our best bet at traveling back in time is to fire up NERSC's supercomputers and observe the big bang.&lt;br /&gt;The NERSC database encompasses &lt;/span&gt;&lt;a title="http://www.nersc.gov/about/" href="http://www.nersc.gov/about/"&gt;&lt;span style="font-family:times new roman;"&gt;2.8 petabytes&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; of information and is operated by more than 2,000 computational scientists. To put the size of NERSC into perspective, the total amount of spoken words in the history of humanity is estimated to be at &lt;/span&gt;&lt;a title="http://en.wikipedia.org/wiki/Exabyte" href="http://en.wikipedia.org/wiki/Exabyte"&gt;&lt;span style="font-family:times new roman;"&gt;5 exabytes&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt;; in relative terms, the NERSC database is equivalent to 0.055% of the size of that figure.&lt;br /&gt;Although that may not seem a lot at first glance, when you factor in that 6 billion humans around the globe speak more than &lt;/span&gt;&lt;a title="http://itre.cis.upenn.edu/~myl/languagelog/archives/003420.html" href="http://itre.cis.upenn.edu/~myl/languagelog/archives/003420.html"&gt;&lt;span style="font-family:times new roman;"&gt;2,000 words a day&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt;, the sheer magnitude of that number becomes apparent.&lt;br /&gt;By the Numbers&lt;br /&gt;2.8 petabytes of data&lt;br /&gt;Operated by 2,000 computational scientists&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;1. World Data Centre for Climate&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;If you had a 35 million euro super computer lying around what would you use it for? The stock market? Building your own internet? Try extensive climate research -- if there's a machine out there that has the answer for global warming, this one might be it. Operated by the &lt;/span&gt;&lt;a title="http://www.mpimet.mpg.de/en/home.html" href="http://www.mpimet.mpg.de/en/home.html"&gt;&lt;span style="font-family:times new roman;"&gt;Max Planck Institute for Meteorology&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; and &lt;/span&gt;&lt;a title="http://www.dkrz.de/dkrz/intro_s" href="http://www.dkrz.de/dkrz/intro_s"&gt;&lt;span style="font-family:times new roman;"&gt;German Climate Computing Centre&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt;, &lt;/span&gt;&lt;a title="http://www.mad.zmaw.de/wdc-for-climate/" href="http://www.mad.zmaw.de/wdc-for-climate/"&gt;&lt;span style="font-family:times new roman;"&gt;The World Data Centre for Climate&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; (WDCC) is the largest database in the world.&lt;br /&gt;The WDCC boasts &lt;/span&gt;&lt;a title="http://www.mad.zmaw.de/fileadmin/extern/PI_Linux_DB_final.pdf" href="http://www.mad.zmaw.de/fileadmin/extern/PI_Linux_DB_final.pdf"&gt;&lt;span style="font-family:times new roman;"&gt;220 terabytes of data&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; readily accessible on the web including information on climate research and anticipated climatic trends, as well as 110 terabytes (or 24,500 DVD's) worth of climate simulation data. To top it off, six petabytes worth of additional information are stored on magnetic tapes for easy access. How much data is six petabyte you ask? Try &lt;/span&gt;&lt;a title="http://pcbunn.cithep.caltech.edu/presentations/giod_status_sep97/tsld013.htm" href="http://pcbunn.cithep.caltech.edu/presentations/giod_status_sep97/tsld013.htm"&gt;&lt;span style="font-family:times new roman;"&gt;3 times the amount&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; of ALL the U.S. academic research libraries contents combined.&lt;br /&gt;By the Numbers&lt;br /&gt;220 terabytes of web data&lt;br /&gt;6 petabytes of additional data&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:times new roman;color:#cc6600;"&gt;* Additional Databases&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#cc6600;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:times new roman;"&gt;The following databases were unique (and massive) in their own right, and just fell short of the cut on our top 10 list.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;strong&gt;Nielsen Media Research / Nielsen Net Ratings&lt;/strong&gt;&lt;br /&gt;Best known for its television audience size and composition rating abilities, the U.S. firm &lt;/span&gt;&lt;a title="http://www.nielsenmedia.com/" href="http://www.nielsenmedia.com/"&gt;&lt;span style="font-family:times new roman;"&gt;Nielsen Media Research&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; is in the business of measuring mass-media audiences including television, radio, print media, and the internet. The database required to process such statistics as Google's daily internet searches is nothing short of massive.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;strong&gt;Myspace&lt;/strong&gt;&lt;br /&gt;It would seem appropriate that the world's largest social networking site, &lt;/span&gt;&lt;a title="http://www.myspace.com/" href="http://www.myspace.com/"&gt;&lt;span style="font-family:times new roman;"&gt;Myspace&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt;, has a rather large database to keep up with all of its user's content.&lt;br /&gt;United States Customs&lt;br /&gt;The &lt;/span&gt;&lt;a title="http://www.mad.zmaw.de/wdc-for-climate/" href="http://www.mad.zmaw.de/wdc-for-climate/"&gt;&lt;span style="font-family:times new roman;"&gt;U.S. Customs&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; database is unique in that it requires information on hundreds of thousands of people and objects entering and leaving the United States borders instantaneously. For this to be possible, the database was special programmed to process queries near instantaneously.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;strong&gt;HPSS&lt;/strong&gt;&lt;br /&gt;There are various databases around the world using technology similar to that found in our countdown's second largest database NERSC. The technology is known as &lt;/span&gt;&lt;a title="http://www.hpss-collaboration.org/hpss/about/collaboration.jsp" href="http://www.hpss-collaboration.org/hpss/about/collaboration.jsp"&gt;&lt;span style="font-family:times new roman;"&gt;High Performance Storage System&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:times new roman;"&gt; or HPSS. Several other massive HPSS databases include Lawrence Livermore National Laboratory, Sandia National Laboratories, Los Alamos National Laboratory, Commissariat a l'Energie Atomique Direction des Applications Militaires, and more.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-8516026908501961224?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/8516026908501961224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=8516026908501961224' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/8516026908501961224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/8516026908501961224'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/02/top-10-largest-databases-in-world.html' title='Top 10 Largest Databases in the World'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-9025027252591598526</id><published>2008-02-28T18:27:00.001+05:30</published><updated>2008-02-28T18:27:37.653+05:30</updated><title type='text'>C# Generics</title><content type='html'>Good article which shows beauty of generics.&lt;br /&gt;&lt;a title="http://msdn2.microsoft.com/en-us/library/ms379564(vs.80).aspx" href="http://msdn2.microsoft.com/en-us/library/ms379564(vs.80).aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms379564(vs.80).aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-9025027252591598526?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/9025027252591598526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=9025027252591598526' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/9025027252591598526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/9025027252591598526'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/02/c-generics.html' title='C# Generics'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-3242251199717571139</id><published>2008-02-28T18:22:00.000+05:30</published><updated>2008-02-28T18:26:56.093+05:30</updated><title type='text'>Google's famous MapReduce algorithm</title><content type='html'>MapReduce is a distributed programming model intended for processing massive amounts of data in large clusters. Find more about this at;&lt;br /&gt;&lt;br /&gt;&lt;a title="http://www.theserverside.com/tt/knowledgecenter-tc/knowledgecenter-tc.tss?l=" href="http://www.theserverside.com/tt/knowledgecenter-tc/knowledgecenter-tc.tss?l=MapReduce"&gt;http://www.theserverside.com/tt/knowledgecenter-tc/knowledgecenter-tc.tss?l=MapReduce&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-3242251199717571139?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/3242251199717571139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=3242251199717571139' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/3242251199717571139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/3242251199717571139'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/02/googles-famous-mapreduce-algorithm.html' title='Google&apos;s famous MapReduce algorithm'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-2295510758013271148</id><published>2008-02-28T18:21:00.000+05:30</published><updated>2008-02-28T18:22:09.122+05:30</updated><title type='text'>Performance Comparison between SQL server 2005 32bit and 64bit versions</title><content type='html'>Quite interesting findings,&lt;br /&gt;&lt;br /&gt;&lt;a title="http://sqlblog.com/blogs/linchi_shea/archive/2007/01/02/32-bit-vs-x64.aspx" href="http://sqlblog.com/blogs/linchi_shea/archive/2007/01/02/32-bit-vs-x64.aspx"&gt;http://sqlblog.com/blogs/linchi_shea/archive/2007/01/02/32-bit-vs-x64.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-2295510758013271148?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/2295510758013271148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=2295510758013271148' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/2295510758013271148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/2295510758013271148'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/02/performance-comparison-between-sql.html' title='Performance Comparison between SQL server 2005 32bit and 64bit versions'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-6941243241388668832</id><published>2008-02-28T18:20:00.001+05:30</published><updated>2008-02-28T18:20:51.446+05:30</updated><title type='text'>Dynamic Stored Procedures</title><content type='html'>&lt;span &gt;Can you change the behavior of your SP on the fly. You just create a SQL as a String and Execute that with EXEC.&lt;br /&gt;                &lt;/span&gt;&lt;a title="http://www.4guysfromrolla.com/webtech/020600-1.shtml" href="http://www.4guysfromrolla.com/webtech/020600-1.shtml"&gt;&lt;span &gt;http://www.4guysfromrolla.com/webtech/020600-1.shtml&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span &gt;&lt;br /&gt;If you would like the query plan, sp_executeSQL can be used for optimizations,&lt;br /&gt;                &lt;/span&gt;&lt;a title="http://www.4guysfromrolla.com/webtech/sqlguru/q120899-2.shtml" href="http://www.4guysfromrolla.com/webtech/sqlguru/q120899-2.shtml"&gt;&lt;span &gt;http://www.4guysfromrolla.com/webtech/sqlguru/q120899-2.shtml&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-6941243241388668832?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/6941243241388668832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=6941243241388668832' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/6941243241388668832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/6941243241388668832'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/02/dynamic-stored-procedures.html' title='Dynamic Stored Procedures'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-4307278455340579842</id><published>2008-02-28T18:19:00.001+05:30</published><updated>2008-02-28T18:19:54.894+05:30</updated><title type='text'>Top 10 Icon Design Mistakes</title><content type='html'>Top 10 Icon Design Mistakes - Must for BA/UI guys&lt;br /&gt;&lt;br /&gt;&lt;a title="http://turbomilk.com/truestories/cookbook/criticism/10-mistakes-in-icon-design/" href="http://turbomilk.com/truestories/cookbook/criticism/10-mistakes-in-icon-design/"&gt;http://turbomilk.com/truestories/cookbook/criticism/10-mistakes-in-icon-design/&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/1847570233403726070-4307278455340579842?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/4307278455340579842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=4307278455340579842' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/4307278455340579842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/4307278455340579842'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/02/top-10-icon-design-mistakes.html' title='Top 10 Icon Design Mistakes'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-4362080877568447292</id><published>2008-02-28T18:00:00.000+05:30</published><updated>2008-02-28T18:01:25.571+05:30</updated><title type='text'>Running IE6 and IE7 on the same computer</title><content type='html'>&lt;span style="font-family:arial;"&gt;For checking for browser compatibility checks, you might need to run both versions of IE on the same computer.&lt;br /&gt;But currently, it is not possible since IE 7 overwrites IE 6.&lt;br /&gt;There’s a solution provided by the following site to overcome this problem.&lt;br /&gt;&lt;/span&gt;&lt;a title="http://tredosoft.com/Multiple_IE" href="http://tredosoft.com/Multiple_IE"&gt;&lt;span style="font-family:arial;"&gt;http://tredosoft.com/Multiple_IE&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;They provide IE 3, 4, 5.5 &amp;amp; 6.&lt;br /&gt;For IE 7, you can use the conventional installer available at &lt;/span&gt;&lt;a title="http://download.microsoft.com/download/3/8/8/38889DC1-848C-4BF2-8335-86C573AD86D9/IE7-WindowsXP-x86-enu.exe" href="http://download.microsoft.com/download/3/8/8/38889DC1-848C-4BF2-8335-86C573AD86D9/IE7-WindowsXP-x86-enu.exe"&gt;&lt;span style="font-family:arial;"&gt;http://download.microsoft.com/download/3/8/8/38889DC1-848C-4BF2-8335-86C573AD86D9/IE7-WindowsXP-x86-enu.exe&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-4362080877568447292?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/4362080877568447292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=4362080877568447292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/4362080877568447292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/4362080877568447292'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/02/running-ie6-and-ie7-on-same-computer.html' title='Running IE6 and IE7 on the same computer'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-3222498229970717159</id><published>2008-02-28T17:59:00.000+05:30</published><updated>2008-02-28T18:00:21.587+05:30</updated><title type='text'>Semantic Web Concept</title><content type='html'>&lt;span style="font-family:arial;"&gt;What is semantic web?&lt;br /&gt;&lt;/span&gt;&lt;a title="http://www.w3.org/2001/sw/" href="http://www.w3.org/2001/sw/"&gt;&lt;span style="font-family:arial;"&gt;http://www.w3.org/2001/sw/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Example(Check the different dimension of presenting data)&lt;br /&gt;&lt;/span&gt;&lt;a title="http://www.silobreaker.com/" href="http://www.silobreaker.com/"&gt;&lt;span style="font-family:arial;"&gt;http://www.silobreaker.com/&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-3222498229970717159?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/3222498229970717159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=3222498229970717159' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/3222498229970717159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/3222498229970717159'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/02/semantic-web-concept.html' title='Semantic Web Concept'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-6864080419544117208</id><published>2008-02-28T17:52:00.000+05:30</published><updated>2008-02-28T17:58:23.412+05:30</updated><title type='text'>Understanding the difference between “IS NULL” and “= NULL”</title><content type='html'>&lt;span style="font-family:arial;"&gt;When a variable is created in SQL with the declare statement it is created with no data and stored in the variable table (vtable) inside SQLs memory space. The vtable contains the name and memory address of the variable. However, when the variable is created no memory address is allocated to the variable and thus the variable is not defined in terms of memory.&lt;br /&gt;&lt;br /&gt;When you SET the variable it is allotted a memory address and the initial data is stored in that address. When you SET the value again the data in the memory address pointed to by the variable is then changed to the new value.&lt;br /&gt;&lt;br /&gt;Now for the difference and why each behaves the way it does.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;“= NULL”&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;“= NULL” is an expression of value. Meaning, if the variable has been set and memory created for the storage of data it has a value. A variable can in fact be set to NULL which means the data value of the objects is unknown. If the value has been set like so:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;DECLARE @val CHAR(4)&lt;br /&gt; SET @val = NULL&lt;br /&gt;&lt;br /&gt;You have explicitly set the value of the data to unknown and so when you do:&lt;br /&gt;&lt;br /&gt;If @val = NULL&lt;br /&gt;It will evaluate as a &lt;strong&gt;true&lt;/strong&gt; expression.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;But if I do:&lt;br /&gt;&lt;br /&gt;DECLARE @val CHAR(4)&lt;br /&gt;If @val =  NULL&lt;br /&gt;It will evaluate to &lt;strong&gt;false&lt;/strong&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The reason for this is the fact that I am checking for NULL as the value of @val. Since I have not SET the value of @val no memory address has been assigned and therefore no value exists for @val.&lt;br /&gt;&lt;br /&gt;Note: See section on SET ANSI_NULLS (ONOFF) due to differences in SQL 7 and 2000 defaults that cause examples to not work. This is based on SQL 7.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#660000;"&gt;&lt;strong&gt;“IS NULL”&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;color:#660000;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Now “IS NULL” is a little trickier and is the preferred method for evaluating the condition of a variable being NULL. When you use the “IS NULL” clause, it checks both the address of the variable and the data within the variable as being unknown. So if I for example do:&lt;br /&gt;&lt;br /&gt;DECLARE @val CHAR(4)&lt;br /&gt; If @val IS NULL&lt;br /&gt;            PRINT ‘TRUE’&lt;br /&gt;ELSE&lt;br /&gt;            PRINT ‘FALSE’&lt;br /&gt;&lt;br /&gt;SET @val = NULL&lt;br /&gt;If @val IS NULL&lt;br /&gt;            PRINT ‘TRUE’&lt;br /&gt;ELSE&lt;br /&gt;            PRINT ‘FALSE’&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Both outputs will be TRUE. The reason is in the first @val IS NULL I have only declared the variable and no address space for data has been set which “IS NULL” check for. And in the second the value has been explicitly set to NULL which “IS NULL” checks also.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;color:#990000;"&gt;SET ANSI_NULLS (ONOFF)&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;color:#990000;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Now let me throw a kink in the works. In the previous examples you see that = NULL will work as long as the value is explicitly set. However, when you SET ANSI_NULLS ON things will behave a little different.&lt;br /&gt;&lt;br /&gt;Ex.&lt;br /&gt; DECLARE @val CHAR(4)&lt;br /&gt; SET @val = NULL&lt;br /&gt; SET ANSI_NULLS ON&lt;br /&gt; If @val =NULL&lt;br /&gt;            PRINT ‘TRUE’&lt;br /&gt;ELSE&lt;br /&gt;            PRINT ‘FALSE’&lt;br /&gt;&lt;br /&gt;SET ANSI_NULLS OFF&lt;br /&gt; If @val =NULL&lt;br /&gt;            PRINT ‘TRUE’&lt;br /&gt;ELSE&lt;br /&gt;            PRINT ‘FALSE’&lt;br /&gt;&lt;br /&gt;You will note the first time you run the = NULL statement after doing SET ANSI_NULLS ON you get a FALSE and after setting OFF you get a TRUE. The reason is as follows.&lt;br /&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Excerpt from SQL BOL article “SET ANSI_NULLS”&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The SQL-92 standard requires that an equals (=) or not equal to (&lt;&gt;) comparison against a null value evaluates to FALSE. When SET ANSI_NULLS is ON, a SELECT statement using WHERE column_name = NULL returns zero rows even if there are null values in column_name. A SELECT statement using WHERE column_name &lt;&gt; NULL returns zero rows even if there are nonnull values in column_name.&lt;br /&gt;When SET ANSI_NULLS is OFF, the Equals (=) and Not Equal To (&lt;&gt;) comparison operators do not follow the SQL-92 standard. A SELECT statement using WHERE column_name = NULL returns the rows with null values in column_name. A SELECT statement using WHERE column_name &lt;&gt; NULL returns the rows with nonnull values in the column. In addition, a SELECT statement using WHERE column_name &lt;&gt; XYZ_value returns all rows that are not XYZ value and that are not NULL.&lt;br /&gt;End Excerpt&lt;br /&gt;&lt;br /&gt;So as defined by SQL92, “= NULL” should always evaluate false. So even setting the value explicitly means you will never meet the = NULL if condition and your code may not work as intended. The biggest reason where = NULL will shoot you in the foot is this, SQL 7 when shipped and installed is defaulted to ANSI_NULL OFF but SQL 2000 is defaulted to ANSI_NULL ON. Of course you can alter this several ways but if you upgraded a database from 7 to 2000 and found the = NULL worked only when you set if explicitly when you roll out a default 2000 server your code now breaks and can cause data issues.&lt;br /&gt;&lt;br /&gt;Yet another reason to use IS NULL instead as under SQL 92 guidelines it is still going to evaluate to TRUE and thus your code is safer for upgrading the server.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;Summary&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;If summary unless you need to check that the value of a variable was set to equal NULL and you have set ANSI_NULLS ON, then always use the “IS NULL” clause  to validate if a variable is NULL. By using = NULL instead you can cause yourself a lot of headaches in trying to troubleshoot issues that may arise from it, now or unexpectedly in the future.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-6864080419544117208?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/6864080419544117208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=6864080419544117208' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/6864080419544117208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/6864080419544117208'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/02/understanding-difference-between-is.html' title='Understanding the difference between “IS NULL” and “= NULL”'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-652383854262483365</id><published>2008-02-28T17:51:00.000+05:30</published><updated>2008-02-28T17:52:06.505+05:30</updated><title type='text'>Find tons of mp3s in google</title><content type='html'>&lt;span style="font-family:arial;"&gt;Here’s a little search query that allow you to find easily tons of mp3 in Google&lt;br /&gt;&lt;/span&gt;&lt;a title="http://www.google.com/search?q=" href="http://www.blogger.com/(php%7Chtm%7Chtml%7Casp)%20+%20“index%20of”%20+(mp3%7Cogg%7Cwma)%20+mozart" target="_blank"&gt;&lt;span style="font-family:arial;"&gt;-inurl:(phphtmhtmlasp) + “index of” +(mp3oggwma) +mozart&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Obviously you can change “mozart” with everything you want&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-652383854262483365?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/652383854262483365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=652383854262483365' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/652383854262483365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/652383854262483365'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/02/find-tons-of-mp3s-in-google.html' title='Find tons of mp3s in google'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1847570233403726070.post-5827891781402808671</id><published>2008-02-28T17:07:00.000+05:30</published><updated>2008-02-28T17:36:15.471+05:30</updated><title type='text'>"*=" vs OUTER JOIN in T-SQL</title><content type='html'>&lt;span style="font-family:arial;"&gt;I have recently got some problems with a query in T-SQL. I just put the LEFT JOIN down in the WHERE clause as *=, and it worked as it should.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;select col1, col2, col3 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;from table1 LEFT JOIN table2 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;ON tablecol1 = tablecol2 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;where &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;table1_key = table2_key &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;and table1_category = 1 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;and table2_category = 2 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;vs&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;select col1, col2, col3 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;from table1, table2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;where &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;table1_key = table2_key &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;and table1_category = 1 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;and table2_category = 2 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;and table1_key *= table2_key &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Table1 contains 1000's of activities, and additional activity-info is located in table2 (sometimes not present), so i want to print Null-values when there are no additional activity-info. With example1 i get only 172 rows, but 1000+ rows then executing the second one. Therefore I was looking for the differences in those two examples and found the following interesting explanation.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Here is how OUTER JOINs work in SQL-92.  Assume you are given: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Table1     Table2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;   a   b       a   c &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt; ====     ====== &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt; 1   w        1   r &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt; 2   x        2   s &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt; 3   y        3   t &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt; 4   z &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;and the outer join expression : &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Table1  LEFT OUTER JOIN  Table2  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;ON Table1.a = Table2.a      &lt;== join condition     &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;AND Table2.c = 't';      &lt;== single table condition &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;We call Table1 the "&lt;strong&gt;preserved table&lt;/strong&gt;" and Table2 the "&lt;strong&gt;unpreserved table&lt;/strong&gt;" in the query.  What I am going to give you is a little different, but equivalent to the ANSI/ISO standards. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;1)  We build the CROSS JOIN of the two tables.  Scan each row in the result set. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;2)  If the predicate tests TRUE for that row, then you keep it. You also remove all rows derived &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;         from it from the CROSS JOIN&lt;br /&gt;3)  If the predicate tests FALSE or UNKNOWN for that row, then keep the columns from the &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;      preserved table, convert all the columns from the unpreserved table to NULLs and remove the  duplicates.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;So let us execute this by hand:&lt;br /&gt;Let @ = passed the first predicate  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Let * = passed the second predicate &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Table1 CROSS JOIN Table2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  a   b         a   c&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  ========================= &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  1   w       1   r @&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  1   w       2   s &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  1   w       3   t *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  2   x       1   r&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  2   x       2   s @&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  2   x       3   t *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  3   y       1   r&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  3   y       2   s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  3   y       3   t @* &lt;== the TRUE set&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  4   z       1   r&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  4   z       2   s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  4   z       3   t * &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt; Table1 LEFT OUTER JOIN Table2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  a   b        a   c&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  =========================&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  3   y     3      t      &lt;= only TRUE row&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  -----------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  1   w     NULL   NULL   Sets of duplicates&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  1   w     NULL   NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  1   w     NULL   NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  -----------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  2   x     NULL   NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  2   x     NULL   NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  2   x     NULL   NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  3   y     NULL   NULL  &lt;== derived from the TRUE set - Remove&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  3   y     NULL   NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  -----------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  4   z     NULL   NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  4   z     NULL   NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  4   z     NULL   NULL &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;the final results:&lt;br /&gt; Table1 LEFT OUTER JOIN Table2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  a   b        a   c&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  =========================&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  1   w     NULL   NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  2   x     NULL   NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  3   y     3      t&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  4   z     NULL   NULL &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;The basic rule is that every row in the preserved table is represented in the results in at least one result row. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;There are limitations and very serious problems with the extended equality version of an outer join used in some diseased mutant products.  Consider the two Chris Date tables &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt; Suppliers               SupParts&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  supno                supno  partno qty&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  =========   ==============&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  S1                       S1   P1    100&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  S2                      S1   P2    250&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  S3                      S2   P1    100&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;                             S2   P2    250 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;and let's do an extended equality outer join like this:&lt;br /&gt;SELECT *   FROM Supplier, SupParts  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;WHERE Supplier.supno *= SupParts.supno&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;    AND qty &lt;&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;If I do the outer first, I get: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt; Suppliers LOJ SupParts&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  supno supno partno qty&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  =======================&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  S1     S1   P1    100&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  S1     S1   P2    250&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  S2     S2   P1    100&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  S2     S2   P2    250&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  S3   NULL  NULL   NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Then I apply the (qty &lt; 200) predicate and get&lt;br /&gt; Suppliers LOJ SupParts&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  supno supno partno qty&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  ===================&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  S1   S1   P1    100&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  S2   S2   P1    100 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Doing it in the opposite order&lt;br /&gt; Suppliers LOJ SupParts&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  supno supno partno qty&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  ===================&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  S1   S1   P1    100&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  S2   S2   P1    100&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  S3   NULL NULL  NULL &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Sybase does it one way, Oracle does it the other and Centura (nee Gupta) lets you pick which one -- the worst of both non-standard worlds!  In SQL-92, you have a choice and can force the order of execution. Either do the predicates after the join ... &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;SELECT *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;    FROM Supplier&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;         LEFT OUTER JOIN         SupParts&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;         ON Supplier.supno = SupParts.supno&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;  WHERE qty &lt;&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;... or do it in the joining:&lt;br /&gt; SELECT *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;   FROM Supplier&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        LEFT OUTER JOIN        SupParts&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        ON Supplier.supno = SupParts.supno&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;           AND qty &lt;&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Another problem is that you cannot show the same table as preserved and unpreserved in the extended equality version, but it is easy in SQL- 92.  For example to find the students who have taken Math 101 and might have taken Math 102: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt; SELECT C1.student, C1.math, C2.math&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;   FROM (SELECT * FROM Courses WHERE math = 101) AS C1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        LEFT OUTER JOIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        (SELECT * FROM Courses WHERE math = 102) AS C2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        ON C1.student = C2.student; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1847570233403726070-5827891781402808671?l=isurusndr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://isurusndr.blogspot.com/feeds/5827891781402808671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1847570233403726070&amp;postID=5827891781402808671' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/5827891781402808671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1847570233403726070/posts/default/5827891781402808671'/><link rel='alternate' type='text/html' href='http://isurusndr.blogspot.com/2008/02/vs-outer-join-in-t-sql.html' title='&quot;*=&quot; vs OUTER JOIN in T-SQL'/><author><name>Isuru Senadheera</name><uri>https://profiles.google.com/103692503897188222601</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-eZgpU56nXgg/AAAAAAAAAAI/AAAAAAAAAAA/GkbsoFQ5b9s/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry></feed>
