<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5337827601128114885</id><updated>2026-05-18T12:06:11.425+05:30</updated><category term="ASP - Active Server Page"/><category term="Apple iCloud"/><category term="Bendable computer"/><category term="DRDO SCIENTIST ENTRY TEST"/><category term="HTML intoduction"/><category term="How to be a Programmer"/><category term="Introduction to Mobile Computing and Communications"/><category term="Keep Your Computer Safe"/><category term="Software"/><category term="Tips on how to troubleshoot a computer"/><category term="c -sharp notes"/><title type='text'>Computer Technology</title><subtitle type='html'>Dear Friends this blog contains the information regarding computer peripherals and the technology beyond the computer. Now a days nothing is possible without computer.This blog lets you to know about the computer technology.....                                </subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://computerscienze.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://computerscienze.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>lohith kumar</name><uri>http://www.blogger.com/profile/08530468303679081678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqHVxoT0zNNgw32kuE1WItEktjohP6UwVgbL74SJ-5omOek28-G9GNdlhHGvXGx7XybeksRrVMbegL3t4wFN9Bs1YA_db1jMRT7z_aT1ytriw1Y9GxtHx5gmpbmZOzTw/s220/1000_tiger_parts_seized.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5337827601128114885.post-3891733429062363069</id><published>2014-12-12T11:07:00.000+05:30</published><updated>2014-12-16T10:19:59.985+05:30</updated><title type='text'>Troubleshooting-Repair Pendrive / Flashdrive/ External Hard drive</title><content type='html'>&lt;!--Troubleshooting-Repairing-formatting-error-problem-in-not-detecting-Pendrive-Flashdrive-External-Hard-drive-hard-disk--&gt;

&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hello friends thanks for jumping in. Hope you are all fed up with the Pendrive /Flashdrive /External Hard drive when its not working properly. Here are the few solutions which will help you to come out of this problem. Cheer up!!!&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
&lt;u&gt;Method 1:&lt;/u&gt;&lt;/h2&gt;
&lt;div&gt;
Insert your&amp;nbsp;Pendrive/Flashdrive/External Hard drive to the rear USB port. If you find the removable storage media is showing in My computer its well and good, if not come on don&#39;t worry follow the next method. Even after Showing the removable disk you are not able to open it, if you try so it will show Not responding in the My computer Title bar.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So in such situation we can find 2 alternative steps to format the&amp;nbsp;Pendrive/Flashdrive/External Hard drive,&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
Step 1: open command prompt (press start button and type cmd or press widows button + R then type cmd Then command prompt will appear.&lt;/h3&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYcMKpeP0cSDOGs9n2VL2R8e1_QYOYfjD8RxfQ5VP9XJkHH4x-IqJSvO8xEbxDV809cgXGtodgbcgfuEELTFSpy4MxR4lJ3RkZIP_Cwk8zQ3h-NWr1Ep5kYIKaJR8Y8dvaX9u2eHh45ftq/s1600/cmd+prompt.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYcMKpeP0cSDOGs9n2VL2R8e1_QYOYfjD8RxfQ5VP9XJkHH4x-IqJSvO8xEbxDV809cgXGtodgbcgfuEELTFSpy4MxR4lJ3RkZIP_Cwk8zQ3h-NWr1Ep5kYIKaJR8Y8dvaX9u2eHh45ftq/s1600/cmd+prompt.png&quot; height=&quot;164&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Make sure that you know your removable media name, whether it is E, F,G,N etc.if not check how many drive partition are there in my computer if 3 partition like C, D, E then the removable media will be F.&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;So type format f: &amp;nbsp;(press enter) you can replace F by your removable media name.&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCOAYqB0Szw9GuZk8B_whkgSdKS6le5PZ0cVHj5NFD68OOmC31236tamVUa42bhpM8dPeqKB7wHJy0IuSj13vfc7dGYgpR0G9PeG0j4wZ54B84kJEKMGEln_ZipejM2ZBaAzqVNnXlxqPE/s1600/format+cmd.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCOAYqB0Szw9GuZk8B_whkgSdKS6le5PZ0cVHj5NFD68OOmC31236tamVUa42bhpM8dPeqKB7wHJy0IuSj13vfc7dGYgpR0G9PeG0j4wZ54B84kJEKMGEln_ZipejM2ZBaAzqVNnXlxqPE/s1600/format+cmd.png&quot; height=&quot;162&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;b&gt;Now press enter and wait until your drive will get formatted.&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;h2 style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;b&gt;&lt;u&gt;Method 2:&lt;/u&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Insert your&amp;nbsp;Pendrive /Flashdrive /External Hard drive at the rear USB port.&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Go to control panel -&amp;gt; Administrative tools -&amp;gt;Computer management -&amp;gt;Disk management&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
(in windows 7 and higher versions you select small icons in view by drop down list at the right top corner of the control panel then follow&amp;nbsp;Administrative tools -&amp;gt;Computer management -&amp;gt;Disk management)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBsjfqCHR5-Hvea46WermHRvw8vL6XwWlABRLL5g7REh7NntJjrsymEcl1gSu_Z0ms4P0LbrNQpqZDNj6AKqI53N4ubeRu2DtrvI4gZedkP4vUQySvwbcNG_OLDFCifisM7OuvRRWg5hfa/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBsjfqCHR5-Hvea46WermHRvw8vL6XwWlABRLL5g7REh7NntJjrsymEcl1gSu_Z0ms4P0LbrNQpqZDNj6AKqI53N4ubeRu2DtrvI4gZedkP4vUQySvwbcNG_OLDFCifisM7OuvRRWg5hfa/s1600/3.png&quot; height=&quot;227&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;clear: both; text-align: left;&quot;&gt;
Congrats!!! you are done :)&lt;/h4&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If not please revert back here..&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;u&gt;&lt;script&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;
&lt;u&gt;  (function(i,s,o,g,r,a,m){i[&#39;GoogleAnalyticsObject&#39;]=r;i[r]=i[r]||function(){&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;
&lt;u&gt;  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;
&lt;u&gt;  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;
&lt;u&gt;  })(window,document,&#39;script&#39;,&#39;//www.google-analytics.com/analytics.js&#39;,&#39;ga&#39;);&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;
&lt;u&gt;&lt;br&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;
&lt;u&gt;  ga(&#39;create&#39;, &#39;UA-57619133-1&#39;, &#39;auto&#39;);&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;
&lt;u&gt;  ga(&#39;send&#39;, &#39;pageview&#39;);&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;
&lt;u&gt;&lt;br&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;
&lt;u&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;
&lt;u&gt;&lt;/script&gt;&lt;/u&gt;&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerscienze.blogspot.com/feeds/3891733429062363069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerscienze.blogspot.com/2014/12/how-to-repair-or-format.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/3891733429062363069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/3891733429062363069'/><link rel='alternate' type='text/html' href='http://computerscienze.blogspot.com/2014/12/how-to-repair-or-format.html' title='Troubleshooting-Repair Pendrive / Flashdrive/ External Hard drive'/><author><name>lohith kumar</name><uri>http://www.blogger.com/profile/08530468303679081678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqHVxoT0zNNgw32kuE1WItEktjohP6UwVgbL74SJ-5omOek28-G9GNdlhHGvXGx7XybeksRrVMbegL3t4wFN9Bs1YA_db1jMRT7z_aT1ytriw1Y9GxtHx5gmpbmZOzTw/s220/1000_tiger_parts_seized.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYcMKpeP0cSDOGs9n2VL2R8e1_QYOYfjD8RxfQ5VP9XJkHH4x-IqJSvO8xEbxDV809cgXGtodgbcgfuEELTFSpy4MxR4lJ3RkZIP_Cwk8zQ3h-NWr1Ep5kYIKaJR8Y8dvaX9u2eHh45ftq/s72-c/cmd+prompt.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337827601128114885.post-1490326850300038546</id><published>2014-11-13T14:36:00.000+05:30</published><updated>2014-12-12T11:31:06.881+05:30</updated><title type='text'>How to increase Battery Life and reduce data usage in Android phones</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 10pt; text-align: left;&quot;&gt;
&lt;strong&gt;N&lt;/strong&gt;ow a day’s smart phones can be used for several purpose but
we need to compromise with its battery life. Even though smart phone batteries
are growing bigger every year, we&#39;re not seeing such a benefit because our
Android devices are demanding more and more out of them. &lt;br /&gt;
&lt;br /&gt;
Follow the simple ways to increase the battery life of your Android smart phone.&lt;/div&gt;
&lt;br /&gt;
&lt;h3 class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 10pt; text-align: left;&quot;&gt;
&lt;em&gt;Use power saving mode&lt;/em&gt;&lt;/h3&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 10pt;&quot;&gt;
&lt;span style=&quot;font-family: Calibri;&quot;&gt;Most Android device manufacturers have added some form of
power-saving mode in their smartphones. shut down specific apps when the
battery dwindles below a predetermined level.&lt;br /&gt;
&lt;br /&gt;
Android Lollipop has a battery saver option built in (which means most phones running
Android 5 will too in the future). If you can&#39;t find a power saving option,
check out an app like Juice Defender.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h3 class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 10pt; text-align: left;&quot;&gt;
&lt;em&gt;Automate your phone&lt;/em&gt;&lt;/h3&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 10pt;&quot;&gt;
&lt;span style=&quot;font-family: Calibri;&quot;&gt;You don&#39;t need your phone syncing away through the night, so
why not introduce a bedtime routine that automatically silences it and kills
your data and Wi-Fi connections? With apps like AutomateIt and Tasker, you can
also automatically turn things on and off based on triggers and rules you
define.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h3 class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 10pt; text-align: left;&quot;&gt;
&lt;em&gt;Uninstall or disable apps&lt;/em&gt;&lt;/h3&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 10pt;&quot;&gt;
&lt;span style=&quot;font-family: Calibri;&quot;&gt;Navigate to the Settings &amp;gt; Apps and flick over to the
&#39;All&#39; tab to find a complete list of your apps. Anything in the list that you
don&#39;t use is a candidate for the uninstall pile. In their infinite wisdom,
manufacturers sometimes block you from uninstalling their apps, but you usually
have the option to disable them instead, and it&#39;s worth doing.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h3 class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 10pt; text-align: left;&quot;&gt;
&lt;em&gt;Hibernate or freeze apps&lt;/em&gt;&lt;/h3&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 10pt;&quot;&gt;
&lt;span style=&quot;font-family: Calibri;&quot;&gt;You may also consider installing Greenify to get a good look
at what is running and automatically hibernate apps that you aren&#39;t using, so
they aren&#39;t eating system resources unless you start them up.&lt;br /&gt;
You&#39;ll need to root your device to really take full advantage, which is simple
enough but will take a little time to manage if you&#39;re new to the process. If
you do decide to root then you may also consider Titanium Backup Pro for
freezing unwanted apps.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h3 class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 10pt; text-align: left;&quot;&gt;
&lt;em&gt;Streamline your home screen&lt;/em&gt;&lt;/h3&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 10pt;&quot;&gt;
&lt;span style=&quot;font-family: Calibri;&quot;&gt;The busier your home screen, the more battery life it&#39;s
going to suck. Get rid of widgets that you don&#39;t need, and consider reducing
refresh rates. Animation costs power, so ditch the live wallpapers.&lt;br /&gt;
&lt;br /&gt;
If you have a phone with an AMOLED display (such as nearly all of the high end
Samsung Galaxy models or the new Moto X), then use a dark background for the
home screen and a dark theme in general. The technology achieves deep blacks by
not lighting up those pixels and so dark backgrounds can save you some power.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h3 class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 10pt; text-align: left;&quot;&gt;
&lt;em&gt;Tweak display settings&lt;/em&gt;&lt;/h3&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 10pt;&quot;&gt;
&lt;span style=&quot;font-family: Calibri;&quot;&gt;Your screen brightness is going to have a big impact on your
battery. Don&#39;t rely on auto-brightness because it will generally be set higher
than you really need. Reduce brightness manually and keep it as low as is
comfortable. You can always pull down the notification shade and tweak it
quickly via the quick settings when you have to.&lt;br /&gt;
&lt;br /&gt;
You should also reduce the screen time out in display settings under sleep. The
faster your Android device fades to black when not in use, the more power
you&#39;ll save.&lt;/span&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
&lt;em&gt;Turn off vibrations&lt;/em&gt;&lt;/h3&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 10pt;&quot;&gt;
&lt;span style=&quot;font-family: Calibri;&quot;&gt;When it comes to Android phones and tablets, vibrations can
be an unnecessary battery killer. Fortunately, you can control it manually.&lt;br /&gt;
&lt;br /&gt;
Start with haptic feedback for key presses. You&#39;ll usually find the option to
turn &#39;Vibrate on keypress&#39; off in Settings &amp;gt; Language &amp;amp; Input in the
options for the keyboard you are using. You could also turn off &#39;Sound on
Keypress&#39; for extra saving.&lt;br /&gt;
&lt;br /&gt;
You can also go into Settings &amp;gt; Sound and turn off &#39;Vibrate when Ringing&#39;.
You&#39;ll find a Vibrate option that you can turn off in your SMS app settings as
well.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h3 class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 10pt; text-align: left;&quot;&gt;
&lt;em&gt;Turn off notifications&lt;/em&gt;&lt;/h3&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 10pt;&quot;&gt;
&lt;span style=&quot;font-family: Calibri;&quot;&gt;Do you need to know every time someone likes a post or
comments on something you&#39;ve engaged with on Facebook? Do you want to hear
about the latest special offer or new app in your notification shade?&lt;br /&gt;
&lt;br /&gt;
When you install any app, it automatically gains the right to fire
notifications at you, but you can stop it in Settings &amp;gt; Apps by tapping on
the app and clearing the &#39;Show Notifications&#39; box.&lt;/span&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;

&amp;nbsp;&lt;em&gt;Turn off GPS&lt;/em&gt;&lt;/h3&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 10pt;&quot;&gt;
&lt;span style=&quot;font-family: Calibri;&quot;&gt;Go to Settings &amp;gt; Location and you can see which services
and apps are trying to track you. Switch the mode to lower accuracy or just
turn it off and you can save a lot of power.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h3 class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 10pt; text-align: left;&quot;&gt;
&lt;em&gt;Under - clocking the CPU&lt;/em&gt;&lt;/h3&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin: 0cm 0cm 10pt;&quot;&gt;
&lt;span style=&quot;font-family: Calibri;&quot;&gt;If you&#39;re willing to root then you can sweep away bloatware
and get an optimized custom ROM, you can even download an app like SetCPU for
Root Users and tell your processor to run at a slower speed in order to use
less power. It&#39;s an extreme step, but it definitely has an impact.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Calibri;&quot;&gt;&lt;script&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;
&lt;font face=&quot;Calibri&quot;&gt;&amp;nbsp; (function(i,s,o,g,r,a,m){i[&#39;GoogleAnalyticsObject&#39;]=r;i[r]=i[r]||function(){&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;
&lt;font face=&quot;Calibri&quot;&gt;&amp;nbsp; (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;
&lt;font face=&quot;Calibri&quot;&gt;&amp;nbsp; m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;
&lt;font face=&quot;Calibri&quot;&gt;&amp;nbsp; })(window,document,&#39;script&#39;,&#39;//www.google-analytics.com/analytics.js&#39;,&#39;ga&#39;);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;
&lt;font face=&quot;Calibri&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;
&lt;font face=&quot;Calibri&quot;&gt;&amp;nbsp; ga(&#39;create&#39;, &#39;UA-57619133-1&#39;, &#39;auto&#39;);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;
&lt;font face=&quot;Calibri&quot;&gt;&amp;nbsp; ga(&#39;send&#39;, &#39;pageview&#39;);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;
&lt;font face=&quot;Calibri&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;
&lt;font face=&quot;Calibri&quot;&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;
&lt;font face=&quot;Calibri&quot;&gt;&lt;/script&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computerscienze.blogspot.com/feeds/1490326850300038546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerscienze.blogspot.com/2014/11/how-to-reduce-battery-life-and-date.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/1490326850300038546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/1490326850300038546'/><link rel='alternate' type='text/html' href='http://computerscienze.blogspot.com/2014/11/how-to-reduce-battery-life-and-date.html' title='How to increase Battery Life and reduce data usage in Android phones'/><author><name>lohith kumar</name><uri>http://www.blogger.com/profile/08530468303679081678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqHVxoT0zNNgw32kuE1WItEktjohP6UwVgbL74SJ-5omOek28-G9GNdlhHGvXGx7XybeksRrVMbegL3t4wFN9Bs1YA_db1jMRT7z_aT1ytriw1Y9GxtHx5gmpbmZOzTw/s220/1000_tiger_parts_seized.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337827601128114885.post-4559574689104089198</id><published>2013-04-30T11:36:00.000+05:30</published><updated>2014-12-12T11:31:44.980+05:30</updated><title type='text'>Bendable Smartphones</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background: white; line-height: 16.5pt; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiL1mPYl0Qmvrqd2Wz1mxVu465MGKtiWAUiqGqRxnIUTbqUOQphI8mbY4rDF7iz7xjQeSHjFBUsSDKFks-oRgAijvJ604zVr44VlgnX0YYu9swfXvxn9rtIKu9aerkMLH9D_W-JCWZaX-TR/s1600/llooooo.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiL1mPYl0Qmvrqd2Wz1mxVu465MGKtiWAUiqGqRxnIUTbqUOQphI8mbY4rDF7iz7xjQeSHjFBUsSDKFks-oRgAijvJ604zVr44VlgnX0YYu9swfXvxn9rtIKu9aerkMLH9D_W-JCWZaX-TR/s1600/llooooo.jpg&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial, sans-serif; font-size: 10.5pt;&quot;&gt;Researchers, including
an Indian origin scientist, have developed prototypes for gen-next
shape-shifting smartphones and mobile devices that can change form
on-demand.&amp;nbsp;The research introduces the term &#39;shape resolution&#39; and its ten
features, to describe the resolution of an interactive device, in addition to
display and touch resolution.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background: white; line-height: 16.5pt; margin-bottom: .0001pt; margin-bottom: 0in; text-indent: .5in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background: white; line-height: 16.5pt; margin-bottom: .0001pt; margin-bottom: 0in; text-indent: .5in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, sans-serif; font-size: 10.5pt;&quot;&gt;The research, led by Dr Anne Roudaut and Professor Sriram
Subramanian, from the University of Bristol&#39;s Department of Computer Science,
have used &#39;shape resolution&#39; to compare the resolution of six prototypes the
team have built using the latest technologies in shape changing material, such
as shape memory alloy and electro active polymer.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background: white; line-height: 16.5pt; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background: white; line-height: 16.5pt; margin-bottom: .0001pt; margin-bottom: 0in; text-indent: .5in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, sans-serif; font-size: 10.5pt;&quot;&gt;One example of a device is the team&#39;s concept of Morphees,
self-actuated flexible mobile devices that can change shape on-demand to better
fit the many services they are likely to support.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background: white; line-height: 16.5pt; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, sans-serif; font-size: 10.5pt;&quot;&gt;The team believes
Morphees will be the next generation of mobile devices, where users can
download applications that embed a dedicated form factor, for instance the
&quot;stress ball app&quot; that collapses the device in on itself or the
&quot;game app&quot; that makes it adopt a console-like shape.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background: white; line-height: 16.5pt; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background: white; line-height: 16.5pt; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, sans-serif; font-size: 10.5pt;&quot;&gt;&quot;The interesting
thing about our work is that we are a step towards enabling our mobile devices
to change shape on-demand,&quot; Roudaut, Research Assistant in the Department
of Computer Science&#39;s Bristol Interaction and Graphics group, said.&amp;nbsp;&quot;Imagine
downloading a game application on the app-store and that the mobile phone would
shape-shift into a console-like shape in order to help the device to be grasped
properly.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background: white; line-height: 16.5pt; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background: white; line-height: 16.5pt; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, sans-serif; font-size: 10.5pt;&quot;&gt;&quot;The device could
also transform into a sphere to serve as a stress ball, or bend itself to hide
the screen when a password is being typed so passers-by can&#39;t see private
information,&quot; said Roudaut.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background: white; line-height: 16.5pt; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, sans-serif; font-size: 10.5pt;&quot;&gt;By comparing the shape
resolution of their prototypes, the researchers have created insights to help
designers towards creating high shape resolution Morphees.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background: white; line-height: 16.5pt; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;background: white; line-height: 16.5pt; margin-bottom: .0001pt; margin-bottom: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, sans-serif; font-size: 10.5pt;&quot;&gt;In future, the team
hopes to build higher shape resolution Morphees by investigating the flexibility
of materials.&amp;nbsp;They are also interested in exploring other kinds of
deformations that the prototypes did not explore, such as porosity and
stretchability.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;
&lt;script&gt;&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; (function(i,s,o,g,r,a,m){i[&#39;GoogleAnalyticsObject&#39;]=r;i[r]=i[r]||function(){&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; })(window,document,&#39;script&#39;,&#39;//www.google-analytics.com/analytics.js&#39;,&#39;ga&#39;);&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; ga(&#39;create&#39;, &#39;UA-57619133-1&#39;, &#39;auto&#39;);&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; ga(&#39;send&#39;, &#39;pageview&#39;);&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;&lt;/p&gt;
&lt;p&gt;
&lt;/script&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computerscienze.blogspot.com/feeds/4559574689104089198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerscienze.blogspot.com/2013/04/bendable-smartphones.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/4559574689104089198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/4559574689104089198'/><link rel='alternate' type='text/html' href='http://computerscienze.blogspot.com/2013/04/bendable-smartphones.html' title='Bendable Smartphones'/><author><name>lohith kumar</name><uri>http://www.blogger.com/profile/08530468303679081678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqHVxoT0zNNgw32kuE1WItEktjohP6UwVgbL74SJ-5omOek28-G9GNdlhHGvXGx7XybeksRrVMbegL3t4wFN9Bs1YA_db1jMRT7z_aT1ytriw1Y9GxtHx5gmpbmZOzTw/s220/1000_tiger_parts_seized.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiL1mPYl0Qmvrqd2Wz1mxVu465MGKtiWAUiqGqRxnIUTbqUOQphI8mbY4rDF7iz7xjQeSHjFBUsSDKFks-oRgAijvJ604zVr44VlgnX0YYu9swfXvxn9rtIKu9aerkMLH9D_W-JCWZaX-TR/s72-c/llooooo.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337827601128114885.post-4094497557402685446</id><published>2013-02-08T14:21:00.004+05:30</published><updated>2014-12-12T11:31:58.965+05:30</updated><title type='text'>How To Turn Your Boring Old Laptop Into A Cool Touch Screen Machine</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: white; font-family: arial; font-size: 14.44444465637207px; line-height: 21.99652862548828px; margin-top: 5px; padding: 0px;&quot;&gt;
Windows 8 - Microsoft&#39;s new touchscreen operating system - will run just fine on PCs designed for Windows 7. But you won&#39;t be able to take advantage of the new touch capabilities the OS enables unless you scrap your existing PC and upgrade to a new computer.&lt;/div&gt;
&lt;div style=&quot;background-color: white; font-family: arial; font-size: 14.44444465637207px; line-height: 21.99652862548828px; margin-top: 5px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; font-family: arial; font-size: 14.44444465637207px; line-height: 21.99652862548828px; margin-top: 5px; padding: 0px;&quot;&gt;
At the &lt;b&gt;Consumer Electronics Show&amp;nbsp;(CES) &lt;/b&gt;in Las Vegas, a company out of China demonstrated a peripheral that combines a &lt;b&gt;stylus and either a USB or wireless receiver to touch-enable &lt;/b&gt;a non-touchscreen LCD monitor or laptop screen.&lt;/div&gt;
&lt;div style=&quot;background-color: white; font-family: arial; font-size: 14.44444465637207px; line-height: 21.99652862548828px; margin-top: 5px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; font-family: arial; font-size: 14.44444465637207px; line-height: 21.99652862548828px; margin-top: 5px; padding: 0px;&quot;&gt;
The technology has made its way to the United States via Shenzhen Yifang Digital Technology Co. Ltd., mercifully shortened to Yifang Digital, whose E Fun brand markets the APEN Touch8 system in the United States. Got that?&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkK3tydogVwsNBkb8Sv2jckRc0fK71-G2-N-y7e5NdoUlrDl5e578PUu7n2Mb5aMz9WUHgFY3p5SZZuE4dZxeQgV9cpDi6JaB3-5cz8i0RwhBtjhXjBtb9WtXvpjdKvn28THfzMkHH3n64/s1600/Touch+8+close.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkK3tydogVwsNBkb8Sv2jckRc0fK71-G2-N-y7e5NdoUlrDl5e578PUu7n2Mb5aMz9WUHgFY3p5SZZuE4dZxeQgV9cpDi6JaB3-5cz8i0RwhBtjhXjBtb9WtXvpjdKvn28THfzMkHH3n64/s320/Touch+8+close.jpg&quot; height=&quot;240&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; font-family: arial; font-size: 14.44444465637207px; line-height: 21.99652862548828px; margin-top: 5px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; font-family: arial; font-size: 14.44444465637207px; line-height: 21.99652862548828px; margin-top: 5px; padding: 0px;&quot;&gt;
Discovering the &lt;b&gt;Touch8 digitizer&lt;/b&gt; was a happy coincidence. Wandering though CES&#39; maze of booths, you never quite know what you&#39;ll find. In the rear of the South Hall, for example, Trojan was handing out thousands of vibrators. So there&#39;s that.&lt;/div&gt;
&lt;div style=&quot;background-color: white; font-family: arial; font-size: 14.44444465637207px; line-height: 21.99652862548828px; margin-top: 5px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-family: Arial; font-size: 14px; margin: 0px; padding: 0px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; font-family: arial; font-size: 14.44444465637207px; line-height: 21.99652862548828px; margin-top: 5px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-family: Arial; font-size: 14px; margin: 0px; padding: 0px;&quot;&gt;Yifang was showing off several versions of the Touch8, including a &lt;b&gt;USB-powered model&lt;/b&gt; and one that used wireless technology. According to Eric Ju, an account development manager with the digital pen business unit within Yifang, the company is attempting to license or has already licensed the technology to accessory vendor Targus, which is marketing a very similar device known as the Touch Pen.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; font-family: arial; font-size: 14.44444465637207px; line-height: 21.99652862548828px; margin-top: 5px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-family: Arial; font-size: 14px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; font-family: arial; font-size: 14.44444465637207px; line-height: 21.99652862548828px; margin-top: 5px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-family: Arial; font-size: 14px;&quot;&gt;The Targus Touch Pen costs $99.99 and will be available during the second quarter; the Touch8 will be available this quarter for $79.99. Targus representatives, who were likely flying home from Las Vegas, could not be reached for comment.&lt;/span&gt;The Touch8 system, and presumably the Touch Pen as well, both use a receiver that mounts to one side of your screen.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: white; font-family: arial; font-size: 14.44444465637207px; line-height: 21.99652862548828px; margin-top: 5px; padding: 0px;&quot;&gt;
A combination of ultrasonic and infrared beams detects the stylus&#39; soft, fuzzy tip, orienting it on the screen. Touch8 learns the boundaries of the available touchscreen real estate. The stylus itself requires power, but it can be used for 500 hours (about 62 days of 8-hour workdays) without replacing the small, watch-sized batteries that power it.&lt;/div&gt;
&lt;div style=&quot;background-color: white; margin-top: 5px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size: 14px; line-height: 21.9965286254883px;&quot;&gt;&lt;script&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;
&lt;font face=&quot;arial&quot;&gt;&lt;span style=&quot;font-size: 14px; line-height: 21.9965286254883px;&quot;&gt;&amp;nbsp; (function(i,s,o,g,r,a,m){i[&#39;GoogleAnalyticsObject&#39;]=r;i[r]=i[r]||function(){&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;
&lt;font face=&quot;arial&quot;&gt;&lt;span style=&quot;font-size: 14px; line-height: 21.9965286254883px;&quot;&gt;&amp;nbsp; (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;
&lt;font face=&quot;arial&quot;&gt;&lt;span style=&quot;font-size: 14px; line-height: 21.9965286254883px;&quot;&gt;&amp;nbsp; m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;
&lt;font face=&quot;arial&quot;&gt;&lt;span style=&quot;font-size: 14px; line-height: 21.9965286254883px;&quot;&gt;&amp;nbsp; })(window,document,&#39;script&#39;,&#39;//www.google-analytics.com/analytics.js&#39;,&#39;ga&#39;);&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;
&lt;font face=&quot;arial&quot;&gt;&lt;span style=&quot;font-size: 14px; line-height: 21.9965286254883px;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;
&lt;font face=&quot;arial&quot;&gt;&lt;span style=&quot;font-size: 14px; line-height: 21.9965286254883px;&quot;&gt;&amp;nbsp; ga(&#39;create&#39;, &#39;UA-57619133-1&#39;, &#39;auto&#39;);&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;
&lt;font face=&quot;arial&quot;&gt;&lt;span style=&quot;font-size: 14px; line-height: 21.9965286254883px;&quot;&gt;&amp;nbsp; ga(&#39;send&#39;, &#39;pageview&#39;);&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;
&lt;font face=&quot;arial&quot;&gt;&lt;span style=&quot;font-size: 14px; line-height: 21.9965286254883px;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;
&lt;font face=&quot;arial&quot;&gt;&lt;span style=&quot;font-size: 14px; line-height: 21.9965286254883px;&quot;&gt;&lt;/script&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computerscienze.blogspot.com/feeds/4094497557402685446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerscienze.blogspot.com/2013/02/how-to-turn-your-boring-old-laptop-into.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/4094497557402685446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/4094497557402685446'/><link rel='alternate' type='text/html' href='http://computerscienze.blogspot.com/2013/02/how-to-turn-your-boring-old-laptop-into.html' title='How To Turn Your Boring Old Laptop Into A Cool Touch Screen Machine'/><author><name>lohith kumar</name><uri>http://www.blogger.com/profile/08530468303679081678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqHVxoT0zNNgw32kuE1WItEktjohP6UwVgbL74SJ-5omOek28-G9GNdlhHGvXGx7XybeksRrVMbegL3t4wFN9Bs1YA_db1jMRT7z_aT1ytriw1Y9GxtHx5gmpbmZOzTw/s220/1000_tiger_parts_seized.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkK3tydogVwsNBkb8Sv2jckRc0fK71-G2-N-y7e5NdoUlrDl5e578PUu7n2Mb5aMz9WUHgFY3p5SZZuE4dZxeQgV9cpDi6JaB3-5cz8i0RwhBtjhXjBtb9WtXvpjdKvn28THfzMkHH3n64/s72-c/Touch+8+close.jpg" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337827601128114885.post-8998659512517522226</id><published>2012-06-29T23:15:00.001+05:30</published><updated>2014-12-12T11:33:11.535+05:30</updated><title type='text'>Now, smartphones that can detect radiation</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
TOKYO: Mobile phone operator Softbank Corpsaid it would soon begin selling smartphoneswith radiation detectors, tapping into concerns that atomic hotspots remain along Japan&#39;s eastern coast more than a year after theFukushima crisis. 

Parts of northeastern Japan are still off-limits due to high radiation levels after the Fukushima nuclear plant was devastated by a huge earthquake and tsunami, triggering meltdowns and spewing radiation. 

Anti-nuclear sentiment is high, with advocacy groups in Tokyo and other cities calling for radiation monitoring at schools and other public facilities. 

&quot;The threat from the nuclear accident cannot be seen by the human eye and continues to be a concern for many people, especially for mothers with small children,&quot; said Softbank founder and president, Masayoshi Son, standing in front of an aerial photo of the crippled plant. &lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8GGXFgncR-zSGMDkQLvZ8ncycXrFrl9e1MzVvOv-yPkM_f92XCX1ODjaBxu2G1KHI2bv4kC1ThpMWrcLmnPt6Z2uHCJUEuLoUqDWxJC9_yWZt_iVAvlQF633OxJIoBf9My_oucwXAu-aw/s1600/images.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8GGXFgncR-zSGMDkQLvZ8ncycXrFrl9e1MzVvOv-yPkM_f92XCX1ODjaBxu2G1KHI2bv4kC1ThpMWrcLmnPt6Z2uHCJUEuLoUqDWxJC9_yWZt_iVAvlQF633OxJIoBf9My_oucwXAu-aw/s320/images.jpg&quot; height=&quot;203&quot; width=&quot;248&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
The smartphone in the company&#39;s &quot;Pantone&quot; series will come in eight bright colors and include customized IC chips made by Sharp that measure radiation levels in microsieverts per hour. 

The phone, which goes on sale this summer, can also keep track of each location a user tests for radiation levels. 

Son, who emerged as an outspoken critic of nuclear power and advocate of renewable energy sources after last year&#39;s quake, told vendors and reporters that the smartphone was more portable and user-friendly than conventional Geiger counters. 

Softbank, Japan&#39;s No. 3 mobile phone operator, has not set a price on the new smartphone yet, but Son told reporters after the event that it would be in an affordable price range.

&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script&gt;&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; (function(i,s,o,g,r,a,m){i[&#39;GoogleAnalyticsObject&#39;]=r;i[r]=i[r]||function(){&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; })(window,document,&#39;script&#39;,&#39;//www.google-analytics.com/analytics.js&#39;,&#39;ga&#39;);&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; ga(&#39;create&#39;, &#39;UA-57619133-1&#39;, &#39;auto&#39;);&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; ga(&#39;send&#39;, &#39;pageview&#39;);&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;&lt;/p&gt;
&lt;p&gt;
&lt;/script&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computerscienze.blogspot.com/feeds/8998659512517522226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerscienze.blogspot.com/2012/06/now-smartphones-that-can-detect.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/8998659512517522226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/8998659512517522226'/><link rel='alternate' type='text/html' href='http://computerscienze.blogspot.com/2012/06/now-smartphones-that-can-detect.html' title='Now, smartphones that can detect radiation'/><author><name>lohith kumar</name><uri>http://www.blogger.com/profile/08530468303679081678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqHVxoT0zNNgw32kuE1WItEktjohP6UwVgbL74SJ-5omOek28-G9GNdlhHGvXGx7XybeksRrVMbegL3t4wFN9Bs1YA_db1jMRT7z_aT1ytriw1Y9GxtHx5gmpbmZOzTw/s220/1000_tiger_parts_seized.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8GGXFgncR-zSGMDkQLvZ8ncycXrFrl9e1MzVvOv-yPkM_f92XCX1ODjaBxu2G1KHI2bv4kC1ThpMWrcLmnPt6Z2uHCJUEuLoUqDWxJC9_yWZt_iVAvlQF633OxJIoBf9My_oucwXAu-aw/s72-c/images.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337827601128114885.post-1291397180270950488</id><published>2012-01-15T09:15:00.010+05:30</published><updated>2014-12-12T11:33:47.898+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Tips on how to troubleshoot a computer"/><title type='text'>Computer Troubleshooting Tips</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
The first step to keep your computer running at it&#39;s peak performance is preventative maintenance. You can save yourself costly repair by spending 30 minutes a week running a few free programs that will keep your computer running like new. You are probably thinking, &quot;this is a great idea, but how much is this going to cost me?&quot; Well, it is not going to cost you a thing, other than about 30 minutes of your time per week! Here are the things that you are going to need to get started.&lt;br /&gt;
&lt;br /&gt;
The first thing that you are going to want to do is to get rid of the unneeded files that accumulate from browsing the Internet and installing software. There is a great program that is free called CCleaner (formally know as Crap Cleaner). This nifty little program does all of the work for you, it deletes your temporary internet and temporary files. Temporary internet files are just like the name implies, files that are stored temporarily while you are browsing the internet. Temporary files are files that are only needed while programs are being installed. CCleaner knows where these files are located and will remove them once it is ran. You can download CCleaner from the Software section of this website. Once the program is downloaded you need to install it. To install it you can double click on the file and then click next and accept the default values. Next you will need to click run cleaner, next click on the Registry button and click scan for issues, then click fix selected issues, click no and then click fix all selected issues and that&#39;s it your done!&lt;br /&gt;
&lt;br /&gt;
The next piece of software that you will need is called Spybot Search and Destroy and it is also a free program that removes spyware and tracking cookies from your computer. It can be downloaded from the Software section of this website. Once it is downloaded you will need to install it by double clicking on the file. You can accept the default vales for this as well. Once the program is installed it will open the first time run wizard which will create a backup of your registry as well as download updates and immunize your system, you will need to click create registry backup. Once it is done you will need to click on search for updates and then select a download location. Next you will need to click on immunize this system. OK the hard part is over, lets get down to letting the program do it&#39;s work.The next step is to click on check for problems and then wait, it will take around 15 to 30 minutes depending on the speed of your computer. You will see anything that it finds in the window pain below. It is safe to remove anything that it finds. You see what each problem is and what it is by clicking on the blue arrows to the right and then click on a individual result to see what it is. Next you will need to lick on the fix selected problems button. And you are done!&lt;br /&gt;
&lt;br /&gt;
For more details on troubleshooting techniques, refer the below links of &lt;b&gt;DIRECTION.COM&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;a href=&quot;http://www.directron.com/strategy.html&quot; target=&quot;_blank&quot;&gt;Common Troubleshooting Techniques &amp;amp; Strategies&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.directron.com/mon1.html&quot; target=&quot;_blank&quot;&gt;Troubleshooting - Monitor&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.directron.com/mot.html&quot; target=&quot;_blank&quot;&gt;Troubleshooting - Motherboard&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.directron.com/hdts.html&quot; target=&quot;_blank&quot;&gt;Troubleshooting - Hard Drive&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.directron.com/troub1.html&quot;&gt;Troubleshooting - Sound&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.directron.com/net1.html&quot; target=&quot;_blank&quot;&gt;Troubleshooting - Network&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.directron.com/mod1.html&quot; target=&quot;_blank&quot;&gt;Troubleshooting - Modem&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.directron.com/cas.html&quot; target=&quot;_blank&quot;&gt;Troubleshooting - Case &amp;amp; PS&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.directron.com/troub.html&quot; target=&quot;_blank&quot;&gt;Troubleshooting - Video&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.directron.com/hdts.html&quot; target=&quot;_blank&quot;&gt;Troubleshooting - HardDrive&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.directron.com/formatdrive.html&quot; target=&quot;_blank&quot;&gt;Troubleshooting - Hard Drive Partition and Formatting&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.directron.com/howtomainsys.html&quot; target=&quot;_blank&quot;&gt;How to Maintain a System?&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script&gt;&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; (function(i,s,o,g,r,a,m){i[&#39;GoogleAnalyticsObject&#39;]=r;i[r]=i[r]||function(){&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; })(window,document,&#39;script&#39;,&#39;//www.google-analytics.com/analytics.js&#39;,&#39;ga&#39;);&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; ga(&#39;create&#39;, &#39;UA-57619133-1&#39;, &#39;auto&#39;);&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; ga(&#39;send&#39;, &#39;pageview&#39;);&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;&lt;/p&gt;
&lt;p&gt;
&lt;/script&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computerscienze.blogspot.com/feeds/1291397180270950488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerscienze.blogspot.com/2012/01/computer-troubleshooting-tips.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/1291397180270950488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/1291397180270950488'/><link rel='alternate' type='text/html' href='http://computerscienze.blogspot.com/2012/01/computer-troubleshooting-tips.html' title='Computer Troubleshooting Tips'/><author><name>lohith kumar</name><uri>http://www.blogger.com/profile/08530468303679081678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqHVxoT0zNNgw32kuE1WItEktjohP6UwVgbL74SJ-5omOek28-G9GNdlhHGvXGx7XybeksRrVMbegL3t4wFN9Bs1YA_db1jMRT7z_aT1ytriw1Y9GxtHx5gmpbmZOzTw/s220/1000_tiger_parts_seized.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337827601128114885.post-8331445852949803932</id><published>2011-06-07T21:13:00.002+05:30</published><updated>2014-12-12T11:34:08.488+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apple iCloud"/><title type='text'>Apple iCloud</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Apple® introduced iCloud®on June 6, 2011 in San Francisco , a breakthrough set of free new cloud services that work seamlessly with applications on your iPhone®, iPad®, iPod touch®, Mac® or PC to automatically and wirelessly store your content in iCloud and automatically and wirelessly push it to all your devices. When anything changes on one of your devices, all of your devices are wirelessly updated almost instantly.&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
“Today it is a real hassle and very frustrating to keep all your information and content up-to-date across all your devices,” said Steve Jobs, Apple’s CEO. “iCloud keeps your important information and content up to date across all your devices. All of this happens automatically and wirelessly, and because it’s integrated into our apps you don’t even need to think about it—it all just works.” &lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
The free iCloud services include:&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul style=&quot;margin-top: 0in;&quot; type=&quot;disc&quot;&gt;&lt;object class=&quot;BLOGGER-youtube-video&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0&quot; data-thumbnail-src=&quot;http://0.gvt0.com/vi/O_C1TZIT-qQ/0.jpg&quot; height=&quot;266&quot; style=&quot;clear: right; float: right;&quot; width=&quot;320&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/O_C1TZIT-qQ&amp;fs=1&amp;source=uds&quot; /&gt;&lt;param name=&quot;bgcolor&quot; value=&quot;#FFFFFF&quot; /&gt;&lt;embed width=&quot;320&quot; height=&quot;266&quot; src=&quot;http://www.youtube.com/v/O_C1TZIT-qQ&amp;fs=1&amp;source=uds&quot; type=&quot;application/x-shockwave-flash&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l0 level1 lfo1; tab-stops: list .5in;&quot;&gt;The      former MobileMe® services—Contacts, Calendar and Mail—all completely      re-architected and rewritten to work seamlessly with iCloud. Users can      share calendars with friends and family, and the ad-free push Mail account      is hosted at me.com. Your inbox and mailboxes are kept up-to-date across      all your iOS devices and computers.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul style=&quot;margin-top: 0in;&quot; type=&quot;disc&quot;&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l0 level1 lfo1; tab-stops: list .5in;&quot;&gt;The      App Store™ and iBookstore℠ now download purchased iOS apps and books to      all your devices, not just the device they were purchased on. In addition,      the App Store and iBookstore now let you see your purchase history, and      simply tapping the iCloud icon will download any apps and books to any iOS      device (up to 10 devices) at no additional cost.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul style=&quot;margin-top: 0in;&quot; type=&quot;disc&quot;&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l0 level1 lfo1; tab-stops: list .5in;&quot;&gt;iCloud      Backup automatically and securely backs up your iOS devices to iCloud      daily over Wi-Fi when you charge your iPhone, iPad or iPod touch. Backed      up content includes purchased music, apps and books, Camera Roll (photos      and videos), device settings and app data. If you replace your iOS device,      just enter your Apple ID and password during setup and iCloud restores      your new device. &lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul style=&quot;margin-top: 0in;&quot; type=&quot;disc&quot;&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l0 level1 lfo1; tab-stops: list .5in;&quot;&gt;iCloud      Storage seamlessly stores all documents created using iCloud Storage APIs,      and automatically pushes them to all your devices. When you change a      document on any device, iCloud automatically pushes the changes to all      your devices. Apple’s Pages®, Numbers® and Keynote® apps already take      advantage of iCloud Storage. Users get up to 5GB of free storage for their      mail, documents and backup—which is more amazing since the storage for      music, apps and books purchased from Apple, and the storage required by      Photo Stream doesn’t count towards this 5GB total. Users will be able to      buy even more storage, with details announced when iCloud ships this fall.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul style=&quot;margin-top: 0in;&quot; type=&quot;disc&quot;&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l0 level1 lfo1; tab-stops: list .5in;&quot;&gt;iCloud’s      innovative Photo Stream service automatically uploads the photos you take      or import on any of your devices and wirelessly pushes them to all your      devices and computers. So you can use your iPhone to take a dozen photos      of your friends during the afternoon baseball game, and they will be ready      to share with the entire group on your iPad (or even Apple TV®) when you      return home. Photo Stream is built into the photo apps on all iOS devices,      iPhoto® on Macs, and saved to the Pictures folder on a PC. To save space,      the last 1,000 photos are stored on each device so they can be viewed or      moved to an album to save forever. Macs and PCs will store all photos from      the Photo Stream, since they have more storage. iCloud will store each      photo in the cloud for 30 days, which is plenty of time to connect your      devices to iCloud and automatically download the latest photos from Photo      Stream via Wi-Fi.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul style=&quot;margin-top: 0in;&quot; type=&quot;disc&quot;&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l0 level1 lfo1; tab-stops: list .5in;&quot;&gt;iTunes®      in the Cloud lets you download your previously purchased iTunes music to      all your iOS devices at no additional cost, and new music purchases can be      downloaded automatically to all your devices. In addition, music not      purchased from iTunes can gain the same benefits by using iTunes Match, a      service that replaces your music with a 256 kbps AAC DRM-free version if      we can match it to the over 18 million songs in the iTunes Store®, it      makes the matched music available in minutes (instead of weeks to upload      your entire music library), and uploads only the small percentage of      unmatched music. iTunes Match will be available this fall for a $24.99      annual fee. Apple today is releasing a free beta version of iTunes in the      Cloud, without iTunes Match, for iPhone, iPad and iPod touch users running      iOS 4.3. iTunes in the Cloud will support all iPhones that iOS 5 supports      this fall.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Apple is ready to ramp iCloud in its three data centers, including the third recently completed in Maiden, NC. Apple has invested over $500 million in its Maiden data center to support the expected customer demand for the free iCloud services.&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;Pricing &amp;amp; Availability&lt;/b&gt; &lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;
The iCloud beta and Cloud Storage APIs are available immediately to iOS and Mac Developer Program members at developer.apple.com. iCloud will be available this fall concurrent with iOS 5. Users can sign up for iCloud for free on an iPhone, iPad or iPod touch running iOS 5 or a Mac running Mac OS® X Lion with a valid Apple ID. iCloud includes 5GB of free cloud storage for Mail, Document Storage and Backup. Purchased music, apps, books and Photo Stream do not count against the storage limit. iTunes Match will be available for $24.99 per year (US only). &lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
iTunes in the Cloud is available today in the US and requires iTunes 10.3 and iOS 4.3.3. Automatic download of apps and books is available today. Using iCloud with a PC requires Windows Vista or Windows 7; Outlook 2010 or 2007 is recommended for accessing contacts and calendars. &lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Apple designs Macs, the best personal computers in the world, along with OS X, iLife, iWork and professional software. Apple leads the digital music revolution with its iPods and iTunes online store. Apple has reinvented the mobile phone with its revolutionary iPhone and App Store, and has recently introduced iPad 2 which is defining the future of mobile media and computing devices.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Reference: &amp;nbsp;&lt;a href=&quot;http://www.apple.com/pr/library/2011/06/06icloud.html&quot;&gt;http://www.apple.com/pr/library/2011/06/06icloud.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script&gt;&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; (function(i,s,o,g,r,a,m){i[&#39;GoogleAnalyticsObject&#39;]=r;i[r]=i[r]||function(){&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; })(window,document,&#39;script&#39;,&#39;//www.google-analytics.com/analytics.js&#39;,&#39;ga&#39;);&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; ga(&#39;create&#39;, &#39;UA-57619133-1&#39;, &#39;auto&#39;);&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; ga(&#39;send&#39;, &#39;pageview&#39;);&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;&lt;/p&gt;
&lt;p&gt;
&lt;/script&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computerscienze.blogspot.com/feeds/8331445852949803932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerscienze.blogspot.com/2011/06/apple-icloud.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/8331445852949803932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/8331445852949803932'/><link rel='alternate' type='text/html' href='http://computerscienze.blogspot.com/2011/06/apple-icloud.html' title='Apple iCloud'/><author><name>lohith kumar</name><uri>http://www.blogger.com/profile/08530468303679081678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqHVxoT0zNNgw32kuE1WItEktjohP6UwVgbL74SJ-5omOek28-G9GNdlhHGvXGx7XybeksRrVMbegL3t4wFN9Bs1YA_db1jMRT7z_aT1ytriw1Y9GxtHx5gmpbmZOzTw/s220/1000_tiger_parts_seized.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337827601128114885.post-9158610866598973004</id><published>2011-05-06T08:12:00.002+05:30</published><updated>2014-12-12T11:34:29.882+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bendable computer"/><title type='text'>Bendable computer</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Queen&#39;s University team designs bendable computer that it sees replacing paper. A research team at Queen&#39;s University has entered the race to slim down tablets and smartphones with a plastic, flexible prototype that&#39;s just about paper thin. The Kingston, Ont.-based school&#39;s Human Media Lab has unveiled a type of e-paper technology nicknamed the Paper Phone, which is described as a bendable iPhone.The device measures in at 9.5 centimeters diagonally and its electronics are housed in a thin, flexible film that can be rolled up. It has a grayscale E Ink screen — which looks like the display on Amazon&#39;s Kindle e-reader — and has a few applications that can make phone calls, play music, read eBooks and maps.&lt;/div&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/Rl-qygUEE2c?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;br /&gt;
Rather than using buttons or touch screen controls, the plastic device responds to different bends. Commands are triggered by bending the corners of the device, or rolling the right edge backward or forward. Users can also use a stylus to write on the screen.&lt;br /&gt;
&lt;br /&gt;
As technology evolves and gets cheaper, a high-resolution color screen capable of playing video would be integrated into the device, as well as some touch screen controls, says creator Roel Vertegaal.&lt;br /&gt;
While he admits that the technology would likely need at least five to 10 years to go mass market in a sophisticated way, he boldly claims the research team is onto a game-changing technology.&lt;br /&gt;
&quot;It&#39;s a replacement for the computer as we know it, it&#39;s going to change everything,&quot; Vertegaal says.&lt;br /&gt;
While the prototype cost about $7,000 to make, he imagines they could be cheaply mass produced in a few years.And because the technology would eventually be so inexpensive, consumers and businesses could conceivably own multiple e-paper sheets in different sizes — including huge desk-covering displays— and have them stacked on their desks or in a bag. Users could choose to use just one sheet, or multitask with a pile of electronic paper.&lt;br /&gt;
&lt;br /&gt;
Eventually, the devices will also be designed to fold, Vertegaal says, so you could carry around a huge screen that neatly folds into a shirt pocket. But the Queen&#39;s researchers have competition in the development of e-paper type products. Arizona State University has partnered with the likes of Boeing, HP and Lockheed Martin in researching similar technology and is expected to conduct a test sometime this year with the U.S. Army.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script&gt;&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; (function(i,s,o,g,r,a,m){i[&#39;GoogleAnalyticsObject&#39;]=r;i[r]=i[r]||function(){&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; })(window,document,&#39;script&#39;,&#39;//www.google-analytics.com/analytics.js&#39;,&#39;ga&#39;);&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; ga(&#39;create&#39;, &#39;UA-57619133-1&#39;, &#39;auto&#39;);&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; ga(&#39;send&#39;, &#39;pageview&#39;);&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;&lt;/p&gt;
&lt;p&gt;
&lt;/script&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computerscienze.blogspot.com/feeds/9158610866598973004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerscienze.blogspot.com/2011/05/bendable-computer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/9158610866598973004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/9158610866598973004'/><link rel='alternate' type='text/html' href='http://computerscienze.blogspot.com/2011/05/bendable-computer.html' title='Bendable computer'/><author><name>lohith kumar</name><uri>http://www.blogger.com/profile/08530468303679081678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqHVxoT0zNNgw32kuE1WItEktjohP6UwVgbL74SJ-5omOek28-G9GNdlhHGvXGx7XybeksRrVMbegL3t4wFN9Bs1YA_db1jMRT7z_aT1ytriw1Y9GxtHx5gmpbmZOzTw/s220/1000_tiger_parts_seized.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337827601128114885.post-5742462768542794757</id><published>2011-02-24T03:51:00.001+05:30</published><updated>2011-02-24T04:02:07.164+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Keep Your Computer Safe"/><title type='text'>Keep Your Computer Safe from USB</title><content type='html'>USB security software is an essential solution to have in many scenarios, especially in larger commercial networks where information seep out is something that needs to be prevented as much as possible. Also, for businesses which habitually rely on their computers for their day-to-day functioning, it is of important that computers do not end up getting down by malware or other technical problems. In commercial or public networks especially, unobstructed usage of USB devices is something that should be avoided, since USB drives can contain malware or be used for leaking important, confidential information. &lt;br /&gt;
&lt;br /&gt;
USB security software provides users with an important additional safeguard that will give network administrators and the owners of home computers alike a higher degree of power over how other people use their systems. One such solution which provides everything you need for USB security is  USB Security software. Using this solution, you can help protect your computers from the connection of any illegal USB devices, though it will not simply block off the ports entirely. What it does allow you to set limitations on is hardware such as USB memory card readers, flash disks and other removable USB storage. The program will not cause any tribulations for other types of USB device such as USB printers, keyboards and other input devices. These can continue to be used as normal. &lt;br /&gt;
&lt;br /&gt;
USB Security will allow you to secure individual computers such as in the case of home use or entire networks. This makes the software extremely versatile, making it highly useful in all sorts of different scenarios ranging from small, single computer home installations or entire networks over extensive commercial installations. When used on a network-wide basis, USB Security can also be centrally deployed and managed, allowing network administrators to easily enforce their security policies from one, central location. Helping to control file transfers, guard against potential information leak and prevent infections from malware, this simple, yet powerful utility provides a solution that in many cases should be considered essential. &lt;br /&gt;
&lt;iframe src=&quot;http://rcm.amazon.com/e/cm?t=comput07f-20&amp;o=1&amp;p=8&amp;l=bpl&amp;asins=B002Y27P3M&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr&quot; style=&quot;align:left;padding-top:5px;width:131px;height:245px;padding-right:10px;&quot;align=&quot;left&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
Using the program&#39;s settings, administrators can easily set a white-list of USB devices deemed as safe. These can include devices such as printers, scanners, or anything else in addition to USB storage devices which are explicitly acceptable by the administrator. It is perfectly possible, an easy, to allow access to specific USB storage devices which, using the software, you can consign passwords to for added security. This means, that when such a device is linked to a computer running USB security, it will prompt the user for a password before they can continue. &lt;br /&gt;
&lt;br /&gt;
USB Security is also completely inconspicuous. It runs invisibly in the background and is completely barely visible to PC users. It will not open fire on the user with any warning messages or pop-up windows unless explicitly configured by the system administrator to do so. Another thing that administrators will certainly realize is the fact that the software can be installed and managed from the central server computer. Settings can be applied this way for all of the computers across the network.</content><link rel='replies' type='application/atom+xml' href='http://computerscienze.blogspot.com/feeds/5742462768542794757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerscienze.blogspot.com/2011/02/keep-your-computer-safe-from-usb.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/5742462768542794757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/5742462768542794757'/><link rel='alternate' type='text/html' href='http://computerscienze.blogspot.com/2011/02/keep-your-computer-safe-from-usb.html' title='Keep Your Computer Safe from USB'/><author><name>lohith kumar</name><uri>http://www.blogger.com/profile/08530468303679081678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqHVxoT0zNNgw32kuE1WItEktjohP6UwVgbL74SJ-5omOek28-G9GNdlhHGvXGx7XybeksRrVMbegL3t4wFN9Bs1YA_db1jMRT7z_aT1ytriw1Y9GxtHx5gmpbmZOzTw/s220/1000_tiger_parts_seized.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337827601128114885.post-7467855747535168937</id><published>2010-12-31T00:02:00.001+05:30</published><updated>2010-12-31T00:46:24.688+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Software"/><title type='text'>Software Engineering</title><content type='html'>&quot;Software&quot; redirects here. For other uses, see Software (disambiguation).&lt;br /&gt;
Computer software, or just software, is &lt;b&gt;the collection of computer programs and related data that provide the instructions telling a computer what to do&lt;/b&gt;. We can also say software refers to one or more computer programs and data held in the storage of the computer for some purposes. Program software performs the function of the program it implements, either by directly providing instructions to the computer hardware or by serving as input to another piece of software. The term was coined to contrast to the old term hardware (meaning physical devices). In contrast to hardware, software is intangible, meaning it &quot;cannot be touched&quot;.[1] Software is also sometimes used in a more narrow sense, meaning application software only. Sometimes the term includes data that has not traditionally been associated with computers, such as film, tapes, and records.[2]&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Examples of computer software include:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Application software includes end-user applications of computers such as word processors or video games, and ERP software for groups of users.&lt;br /&gt;
Middleware controls and co-ordinates distributed systems.&lt;br /&gt;
Programming languages define the syntax and semantics of computer programs. For example, many mature banking applications were written in the COBOL language, originally invented in 1959. Newer applications are often written in more modern programming languages.&lt;br /&gt;
System software includes operating systems, which govern computing resources. Today[when?] large[quantify] applications running on remote machines such as Websites are considered[by whom?] to be system software, because[citation needed] the end-user interface is generally through a graphical user interface, such as a web browser.&lt;br /&gt;
Testware is software for testing hardware or a software package.&lt;br /&gt;
Firmware is low-level software often stored on electrically programmable memory devices. Firmware is given its name because it is treated like hardware and run (&quot;executed&quot;) by other software programs.&lt;br /&gt;
&lt;br /&gt;
Shrinkware is the older name given to consumer-purchased software, because it was often sold in retail stores in a shrink-wrapped box.&lt;br /&gt;
Device drivers control parts of computers such as disk drives, printers, CD drives, or computer monitors.&lt;br /&gt;
&lt;br /&gt;
Programming tools help conduct computing tasks in any category listed above. For programmers, these could be tools for debugging or reverse engineering older legacy systems in order to check source code compatibility.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Contents&lt;/b&gt;&lt;br /&gt;
1 History&lt;br /&gt;
2 Overview&lt;br /&gt;
3 Types of software&lt;br /&gt;
3.1 System software&lt;br /&gt;
3.2 Programming software&lt;br /&gt;
3.3 Application software&lt;br /&gt;
4 Software topics&lt;br /&gt;
4.1 Architecture&lt;br /&gt;
4.2 Documentation&lt;br /&gt;
4.3 Library&lt;br /&gt;
4.4 Standard&lt;br /&gt;
4.5 Execution&lt;br /&gt;
4.6 Quality and reliability&lt;br /&gt;
4.7 License&lt;br /&gt;
4.8 Patents&lt;br /&gt;
5 Design and implementation&lt;br /&gt;
6 Industry and organizations&lt;br /&gt;
7 References&lt;br /&gt;
8 External links&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;History&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
For the history prior to 1946, see History of computing hardware.&lt;br /&gt;
The first theory about software was proposed by Alan Turing in his 1935 essay Computable numbers with an application to the Entscheidungsproblem (Decision problem).[3] The term &quot;software&quot; was first used in print by John W. Tukey in 1958[citation needed]. Colloquially, the term is often used to mean application software. In computer science and software engineering, software is all information processed by computer system, programs and data.[4] The academic fields studying software are computer science and software engineering.&lt;br /&gt;
&lt;br /&gt;
The history of computer software is most often traced back to the first software bug in 1946[citation needed]. As more and more programs enter the realm of firmware, and the hardware itself becomes smaller, cheaper and faster as predicted by Moore&#39;s law, elements of computing first considered to be software, join the ranks of hardware. Most hardware companies today have more software programmers on the payroll than hardware designers[citation needed], since software tools have automated many tasks of Printed circuit board engineers. Just like the Auto industry, the Software industry has grown from a few visionaries operating out of their garage with prototypes. Steve Jobs and Bill Gates were the Henry Ford and Louis Chevrolet of their times[citation needed], who capitalized on ideas already commonly known before they started in the business. In the case of Software development, this moment is generally agreed to be the publication in the 1980s of the specifications for the IBM Personal Computer published by IBM employee Philip Don Estridge. Today his move would be seen as a type of crowd-sourcing.&lt;br /&gt;
Until that time, software was bundled with the hardware by Original equipment manufacturers (OEMs) such as Data General, Digital Equipment and IBM[citation needed]. When a customer bought a minicomputer, at that time the smallest computer on the market, the computer did not come with Pre-installed software, but needed to be installed by engineers employed by the OEM. Computer hardware companies not only bundled their software, they also placed demands on the location of the hardware in a refrigerated space called a computer room. Most companies had their software on the books for 0 dollars, unable to claim it as an asset (this is similar to financing of popular music in those days). When Data General introduced the Data General Nova, a company called Digidyne wanted to use its RDOS operating system on its own hardware clone. Data General refused to license their software (which was hard to do, since it was on the books as a free asset), and claimed their &quot;bundling rights&quot;. The Supreme Court set a precedent called Digidyne v. Data General in 1985. The Supreme Court let a 9th circuit decision stand, and Data General was eventually forced into licensing the Operating System software because it was ruled that restricting the license to only DG hardware was an illegal tying arrangement.[5] Soon after, IBM &#39;published&#39; its DOS source for free, and Microsoft was born. Unable to sustain the loss from lawyer&#39;s fees, Data General ended up being taken over by EMC Corporation. The Supreme Court decision made it possible to value software, and also purchase Software patents. The move by IBM was almost a protest at the time. Few in the industry believed that anyone would profit from it other than IBM (through free publicity). Microsoft and Apple were able to thus cash in on &#39;soft&#39; products. It is hard to imagine today that people once felt that software was worthless without a machine. There are many successful companies today that sell only software products, though there are still many common software licensing problems due to the complexity of designs and poor documentation, leading to patent trolls.&lt;br /&gt;
&lt;br /&gt;
With open software specifications and the possibility of software licensing, new opportunities arose for software tools that then became the de facto standard, such as DOS for operating systems, but also various proprietary word processing and spreadsheet programs. In a similar growth pattern, proprietary development methods became standard Software development methodology.&lt;br /&gt;
&lt;br /&gt;
A layer structure showing where operating system is located on generally used software systems on desktops&lt;br /&gt;
Software includes all the various forms and roles that digitally stored data may have and play in a computer (or similar system), regardless of whether the data is used as code for a CPU, or other interpreter, or whether it represents other kinds of information. Software thus encompasses a wide array of products that may be developed using different techniques such as ordinary programming languages, scripting languages, microcode, or an FPGA configuration.&lt;br /&gt;
The types of software include web pages developed in languages and frameworks like HTML, PHP, Perl, JSP, ASP.NET, XML, and desktop applications like OpenOffice.org, Microsoft Word developed in languages like C, C++, Java, C#, or Smalltalk. Application software usually runs on an underlying software operating systems such as Linux or Microsoft Windows. Software (or firmware) is also used in video games and for the configurable parts of the logic systems of automobiles, televisions, and other consumer electronics.&lt;br /&gt;
Computer software is so called to distinguish it from computer hardware, which encompasses the physical interconnections and devices required to store and execute (or run) the software. At the lowest level, executable code consists of machine language instructions specific to an individual processor. A machine language consists of groups of binary values signifying processor instructions that change the state of the computer from its preceding state. Programs are an ordered sequence of instructions for changing the state of the computer in a particular sequence. It is usually written in high-level programming languages that are easier and more efficient for humans to use (closer to natural language) than machine language. High-level languages are compiled or interpreted into machine language object code. Software may also be written in an assembly language, essentially, a mnemonic representation of a machine language using a natural language alphabet. Assembly language must be assembled into object code via an assembler.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Types of software&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This section does not cite any references or sources.&lt;br /&gt;
Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed. (August 2010)&lt;br /&gt;
Practical computer systems divide software systems into three major classes[citation needed]: system software, programming software and application software, although the distinction is arbitrary, and often blurred.&lt;br /&gt;
[edit]System software&lt;br /&gt;
System software provides the basic functions for computer usage and helps run the computer &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;hardware and system. It includes a combination of the following:&lt;/b&gt;&lt;br /&gt;
device drivers&lt;br /&gt;
operating systems&lt;br /&gt;
servers&lt;br /&gt;
utilities&lt;br /&gt;
window systems&lt;br /&gt;
&lt;br /&gt;
System software is responsible for managing a variety of independent hardware components, so that they can work together harmoniously. Its purpose is to unburden the application software programmer from the often complex details of the particular computer being used, including such accessories as communications devices, printers, device readers, displays and keyboards, and also to partition the computer&#39;s resources such as memory and processor time in a safe and stable manner.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Programming software&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Programming software usually provides tools to assist a programmer in writing computer programs, and software using different programming languages in a more convenient way. The tools include:&lt;br /&gt;
compilers&lt;br /&gt;
debuggers&lt;br /&gt;
interpreters&lt;br /&gt;
linkers&lt;br /&gt;
text editors&lt;br /&gt;
An Integrated development environment (IDE) is a single application that attempts to manage all these functions.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Application software&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
System software does not aim at a certain application fields. In contrast,different application software offers different functions based on users and the area it served.Application software is developed for some certain purpose,which either can be a certain program or a collection of some programmes,such as a graphic browser or the data base management system. Application software allows end users to accomplish one or more specific (not directly computer development related) tasks. Typical applications include:&lt;br /&gt;
industrial automation&lt;br /&gt;
business software&lt;br /&gt;
video games&lt;br /&gt;
quantum chemistry and solid state physics software&lt;br /&gt;
telecommunications (i.e., the Internet and everything that flows on it)&lt;br /&gt;
databases&lt;br /&gt;
educational software&lt;br /&gt;
Mathematical software&lt;br /&gt;
medical software&lt;br /&gt;
molecular modeling software&lt;br /&gt;
image editing&lt;br /&gt;
spreadsheet&lt;br /&gt;
simulation software&lt;br /&gt;
Word processing&lt;br /&gt;
Decision making software&lt;br /&gt;
Application software exists for and has impacted a wide variety of topics.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Software topics&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Architecture:&lt;br /&gt;
&lt;br /&gt;
See also: Software architecture&lt;br /&gt;
Users often see things differently than programmers. People who use modern general purpose computers (as opposed to embedded systems, analog computers and supercomputers) usually see three layers of software performing a variety of tasks: platform, application, and user software.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Platform software&lt;/b&gt;: Platform includes the firmware, device drivers, an operating system, and typically a graphical user interface which, in total, allow a user to interact with the computer and its peripherals (associated equipment). Platform software often comes bundled with the computer. On a PC you will usually have the ability to change the platform software.&lt;br /&gt;
Application software: Application software or Applications are what most people think of when they think of software. Typical examples include office suites and video games. Application software is often purchased separately from computer hardware. Sometimes applications are bundled with the computer, but that does not change the fact that they run as independent applications. Applications are usually independent programs from the operating system, though they are often tailored for specific platforms. Most users think of compilers, databases, and other &quot;system software&quot; as applications.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;User-written software&lt;/b&gt;: End-user development tailors systems to meet users&#39; specific needs. User software include spreadsheet templates and word processor templates. Even email filters are a kind of user software. Users create this software themselves and often overlook how important it is. Depending on how competently the user-written software has been integrated into default application packages, many users may not be aware of the distinction between the original packages, and what has been added by co-workers.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Documentation&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Main article: Software documentation&lt;/b&gt;&lt;br /&gt;
Most software has software documentation so that the end user can understand the program, what it does, and how to use it. Without clear documentation, software can be hard to use—especially if it is very specialized and relatively complex like Photoshop or AutoCAD.&lt;br /&gt;
Developer documentation may also exist, either with the code as comments and/or as separate files, detailing how the programs works and can be modified.&lt;br /&gt;
Library&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Main article: Software library&lt;/b&gt;&lt;br /&gt;
An executable is almost always not sufficiently complete for direct execution. Software libraries include collections of functions and functionality that may be embedded in other applications. Operating systems include many standard Software libraries, and applications are often distributed with their own libraries.&lt;br /&gt;
Standard&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Main article: Software standard&lt;/b&gt;&lt;br /&gt;
Since software can be designed using many different programming languages and in many different operating systems and operating environments, software standard is needed so that different software can understand and exchange information between each other. For instance, an email sent from a Microsoft Outlook should be readable from Yahoo! Mail and vice versa.&lt;br /&gt;
Execution&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Main article: Execution (computing)&lt;/b&gt;&lt;br /&gt;
Computer software has to be &quot;loaded&quot; into the computer&#39;s storage (such as the hard drive or memory). Once the software has loaded, the computer is able to execute the software. This involves passing instructions from the application software, through the system software, to the hardware which ultimately receives the instruction as machine code. Each instruction causes the computer to carry out an operation – moving data, carrying out a computation, or altering the control flow of instructions.&lt;br /&gt;
&lt;br /&gt;
Data movement is typically from one place in memory to another. Sometimes it involves moving data between memory and registers which enable high-speed data access in the CPU. Moving data, especially large amounts of it, can be costly. So, this is sometimes avoided by using &quot;pointers&quot; to data instead. Computations include simple operations such as incrementing the value of a variable data element. More complex computations may involve many operations and data elements together.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Quality and reliability&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Main articles&lt;/b&gt;: Software quality, Software testing, and Software reliability&lt;br /&gt;
Software quality is very important, especially for commercial and system software like Microsoft Office, Microsoft Windows and Linux. If software is faulty (buggy), it can delete a person&#39;s work, crash the computer and do other unexpected things. Faults and errors are called &quot;bugs.&quot; Many bugs are discovered and eliminated (debugged) through software testing. However, software testing rarely – if ever – eliminates every bug; some programmers say that &quot;every program has at least one more bug&quot; (Lubarsky&#39;s Law). All major software companies, such as Microsoft, Novell and Sun Microsystems, have their own software testing departments with the specific goal of just testing. Software can be tested through unit testing, regression testing and other methods, which are done manually, or most commonly, automatically, since the amount of code to be tested can be quite large. For instance, NASA has extremely rigorous software testing procedures for many operating systems and communication functions. Many NASA based operations interact and identify each other through command programs called software. This enables many people who work at NASA to check and evaluate functional systems overall. Programs containing command software enable hardware engineering and system operations to function much easier together.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;License&lt;/b&gt;&lt;br /&gt;
Main article: Software license&lt;br /&gt;
The software&#39;s license gives the user the right to use the software in the licensed environment. Some software comes with the license when purchased off the shelf, or an OEM license when bundled with hardware. Other software comes with a free software license, granting the recipient the rights to modify and redistribute the software. Software can also be in the form of freeware or shareware.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Patents&lt;/b&gt;&lt;br /&gt;
Main articles: Software patent and Software patent debate&lt;br /&gt;
Software can be patented; however, software patents can be controversial in the software industry with many people holding different views about it. The controversy over software patents is that a specific algorithm or technique that the software has may not be duplicated by others and is considered an intellectual property and copyright infringement depending on the severity.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Design and implementation&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Main articles: Software development, Computer programming, and Software engineering&lt;br /&gt;
Design and implementation of software varies depending on the complexity of the software. For instance, design and creation of Microsoft Word software will take much more time than designing and developing Microsoft Notepad because of the difference in functionalities in each one.&lt;br /&gt;
Software is usually designed and created (coded/written/programmed) in integrated development environments (IDE) like Eclipse, Emacs and Microsoft Visual Studio that can simplify the process and compile the program. As noted in different section, software is usually created on top of existing software and the application programming interface (API) that the underlying software provides like GTK+, JavaBeans or Swing. Libraries (APIs) are categorized for different purposes. For instance, JavaBeans library is used for designing enterprise applications, Windows Forms library is used for designing graphical user interface (GUI) applications like Microsoft Word, and Windows Communication Foundation is used for designing web services. Underlying computer programming concepts like quicksort, hashtable, array, and binary tree can be useful to creating software. When a program is designed, it relies on the API. For instance, if a user is designing a Microsoft Windows desktop application, he/she might use the .NET Windows Forms library to design the desktop application and call its APIs like Form1.Close() and Form1.Show()[6] to close or open the application and write the additional operations him/herself that it need to have. Without these APIs, the programmer needs to write these APIs him/herself. Companies like Sun Microsystems, Novell, and Microsoft provide their own APIs so that many applications are written using their software libraries that usually have numerous APIs in them.&lt;br /&gt;
Computer software has special economic characteristics that make its design, creation, and distribution different from most other economic goods.[7][8] A person who creates software is called a programmer, software engineer, software developer, or code monkey, terms that all have a similar meaning.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Industry and organizations&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Main article: Software industry&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
A great variety of software companies and programmers in the world comprise a software industry . Software can be quite a profitable industry: Bill Gates, the founder of Microsoft was the richest person in the world in 2009 largely by selling the Microsoft Windows and Microsoft Office software products. The same goes for Larry Ellison, largely through his Oracle database software. Through time the software industry has become increasingly specialized.&lt;br /&gt;
Non-profit software organizations include the Free Software Foundation, GNU Project and Mozilla Foundation. Software standard organizations like the W3C, IETF develop software standards so that most software can interoperate through standards such as XML, HTML, HTTP or FTP.&lt;br /&gt;
Other well-known large software companies include Novell, SAP, Symantec, Adobe Systems, and Corel, while small companies often provide innovation.&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
^ &quot;Wikipedia&quot;&lt;br /&gt;
^ &quot;Wordreference.com: WordNet 2.0&quot;. Princeton University, Princeton, NJ. Retrieved 2007-08-19.&lt;br /&gt;
^ software..(n.d.). Dictionary.com Unabridged (v 1.1). Retrieved 2007-04-13, from Dictionary.com website: http://dictionary.reference.com/browse/software&lt;br /&gt;
^ Hally, Mike (2005:79). Electronic brains/Stories from the dawn of the computer age. British Broadcasting Corporation and Granta Books, London. ISBN 1-86207-663-4.&lt;br /&gt;
^ Leonhardt, David (July 28, 2000). &quot;John Tukey, 85, Statistician; Coined the Word &#39;Software&#39;&quot;. New York Times.&lt;br /&gt;
^ Tying Arrangements and the Computer Industry: Digidyne Corp. vs. Data General&lt;br /&gt;
^ &quot;MSDN Library&quot;. Retrieved 2010-06-14.&lt;br /&gt;
^ v. Engelhardt, Sebastian (2008): &quot;The Economic Properties of Software&quot;, Jena Economic Research Papers, Volume 2 (2008), Number 2008-045. (in Adobe pdf format)&lt;br /&gt;
^ &quot;Why Open Source Is The Optimum Economic Paradigm for Software&quot; by Dan Kaminsky 1999</content><link rel='replies' type='application/atom+xml' href='http://computerscienze.blogspot.com/feeds/7467855747535168937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerscienze.blogspot.com/2010/12/software-engineering.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/7467855747535168937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/7467855747535168937'/><link rel='alternate' type='text/html' href='http://computerscienze.blogspot.com/2010/12/software-engineering.html' title='Software Engineering'/><author><name>lohith kumar</name><uri>http://www.blogger.com/profile/08530468303679081678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqHVxoT0zNNgw32kuE1WItEktjohP6UwVgbL74SJ-5omOek28-G9GNdlhHGvXGx7XybeksRrVMbegL3t4wFN9Bs1YA_db1jMRT7z_aT1ytriw1Y9GxtHx5gmpbmZOzTw/s220/1000_tiger_parts_seized.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337827601128114885.post-6309953068465640351</id><published>2010-03-28T09:10:00.003+05:30</published><updated>2010-12-29T23:06:00.298+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="DRDO SCIENTIST ENTRY TEST"/><title type='text'>Engineers you can become scientist..!</title><content type='html'>&lt;b&gt;The following are the syllabus for the scientist entrance test for the respective engineering branch.&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Chemical Engineering – CH&lt;br /&gt;
&lt;br /&gt;
Process Calculations and Thermodynamics: Laws of conservation of mass and energy; use of tie components; recycle, bypass and purge calculations; degree of freedom analysis. First and Second laws of thermodynamics. First law application to close and open systems. Second law and Entropy Thermodynamic properties of pure substances: equation of state and departure function, properties of mixtures: partial molar properties, fugacity, excess properties and activity coefficients; phase equilibria: predicting VLE of systems; chemical reaction equilibria.&lt;br /&gt;
Fluid Mechanics and Mechanical Operations: Fluid statics, Newtonian and non-Newtonian fluids, Bernoulli equation, Macroscopic friction factors, energy balance, dimensional analysis, shell balances, flow through pipeline systems, flow meters, pumps and compressors, packed and fluidized beds, elementary boundary layer theory, size reduction and size separation; free and hindered settling; centrifuge and cyclones; thickening and classification, filtration, mixing and agitation; conveying of solids.&lt;br /&gt;
Heat Transfer: Conduction, convection and radiation, heat transfer coefficients, steady and unsteady heat conduction, boiling, condensation and evaporation; types of heat exchangers and evaporators and their design.&lt;br /&gt;
Mass Transfer: Fick’s laws, molecular diffusion in fluids, mass transfer coefficients, film, penetration and surface renewal theories; momentum, heat and mass transfer analogies; stagewise and continuous contacting and stage efficiencies; HTU &amp; NTU concepts design and operation of equipment for distillation, absorption, leaching, liquid-liquid extraction, drying, humidification, dehumidification and adsorption.&lt;br /&gt;
Chemical Reaction Engineering: Theories of reaction rates; kinetics of homogeneous reactions, interpretation of kinetic data, single and multiple reactions in ideal reactors, non-ideal reactors; residence time distribution, single parameter model; non-isothermal reactors; kinetics of heterogeneous catalytic reactions; diffusion effects in catalysis.&lt;br /&gt;
Instrumentation and Process Control: Measurement of process variables; sensors, transducers and their dynamics, transfer functions and dynamic responses of simple systems, process reaction curve, controller modes (P, PI, and PID); control valves; analysis of closed loop systems including stability, frequency response and controller tuning, cascade, feed forward control.&lt;br /&gt;
Plant Design and Economics: Process design and sizing of chemical engineering equipment such as compressors, heat exchangers, multistage contactors; principles of process economics and cost estimation including total annualized cost, cost indexes, rate of return, payback period, discounted cash flow, optimization in design.Chemical Technology: Inorganic chemical industries; sulfuric acid, NaOH, fertilizers (Ammonia, Urea, SSP and TSP); natural products industries (Pulp and Paper, Sugar, Oil, and Fats); petroleum refining and petrochemicals; polymerization industries; polyethylene, polypropylene, PVC and polyester synthetic fibers.&lt;br /&gt;
&lt;br /&gt;
2. Computer Science and Engineering – CS&lt;br /&gt;
Theory of Computation: Regular languages and finite automata, Context free languages and Push-down automata, Recursively enumerable sets and Turing machines, Undecidability; NP-completeness.&lt;br /&gt;
Digital Logic: Logic functions, Minimization, Design and synthesis of combinational and sequential circuits; Number representation and computer arithmetic (fixed and floating point).&lt;br /&gt;
Computer Organization and Architecture: Machine instructions and addressing modes, ALU and data-path, CPU control design, Memory interface, I/O interface (Interrupt and DMA mode), Instruction pipelining, Cache and main memory, Secondary storage.&lt;br /&gt;
Programming and Data Structures: Programming in C; Functions, Recursion, Parameter passing, Scope, Binding; Abstract data types, Arrays, Stacks, Queues, Linked Lists, Trees, Binary search trees, Binary heaps. Algorithms: Analysis, Asymptotic notation, Notions of space and time complexity, Worst and average case analysis; Design: Greedy approach, Dynamic programming, Divide-and-conquer; Tree and graph traversals, Connected components, Spanning trees, Shortest paths; Hashing, Sorting, Searching.&lt;br /&gt;
Compiler Design: Lexical analysis, Parsing, Syntax directed translation, Runtime environments, Intermediate and target code generation, Basics of code optimization.&lt;br /&gt;
Operating System: Processes, Threads, Inter-process communication, Concurrency, Synchronization, Deadlock, CPU scheduling, Memory management and virtual memory, File systems, I/O systems, Protection and security.&lt;br /&gt;
Databases: ER-model, Relational model (relational algebra, tuple calculus), Database design (integrity constraints, normal forms), Query languages (SQL), File structures (sequential files, indexing, B and B+ trees), Transactions and concurrency control.&lt;br /&gt;
Computer Networks: ISO/OSI stack, LAN technologies (Ethernet, Token ring), Flow and error control techniques, Routing algorithms, Congestion control, TCP/UDP and sockets, IP(v4), Application layer protocols (icmp, dns, smtp, pop, ftp, http); Basic concepts of hubs, switches, gateways, and routers.&lt;br /&gt;
3. Electronics and Communication Engineering – EC&lt;br /&gt;
&lt;br /&gt;
Networks: Network graphs: matrices associated with graphs; incidence, fundamental cut set and fundamental circuit matrices. Solution methods: nodal and mesh analysis. Network theorems: superposition, Thevenin and Norton’s maximum power transfer, Wye-Delta transformation. Steady state sinusoidal analysis using phasors. Linear constant coefficient differential equations; time domain analysis of simple RLC circuits, Solution of network equations using Laplace transform: frequency domain analysis of RLC circuits. 2-port network parameters: driving point and transfer functions. State equations for networks.&lt;br /&gt;
Electronic Devices: Energy bands in silicon, intrinsic and extrinsic silicon. Carrier transport in silicon: diffusion current, drift current, mobility, and resistivity. Generation and recombination of carriers. p-n junction diode, Zener diode, tunnel diode, BJT, JFET, MOS capacitor, MOSFET, LED, p-I-n and avalanche photo diode, Basics of LASERs. Device technology: integrated circuits fabrication process, oxidation, diffusion, ion implantation, photolithography, n-tub, p-tub and twin-tub CMOS process.&lt;br /&gt;
Analog Circuits: Small Signal Equivalent circuits of diodes, BJTs, MOSFETs and analog CMOS. Simple diode circuits, clipping, clamping, rectifier. Biasing and bias stability of transistor and FET amplifiers. Amplifiers: single-and multi-stage, differential and operational, feedback, and power. Frequency response of amplifiers. Simple op-amp circuits. Filters. Sinusoidal oscillators; criterion for oscillation; single-transistor and op-amp configurations. Function generators and wave-shaping circuits, 555 Timers. Power supplies.&lt;br /&gt;
Digital Circuits: Boolean algebra, minimization of Boolean functions; logic gates; digital IC families (DTL, TTL, ECL, MOS, CMOS). Combinatorial circuits: arithmetic circuits, code converters, multiplexers, decoders, PROMs and PLAs. Sequential circuits: latches and flip-flops, counters and shift-registers. Sample and hold circuits, ADCs, DACs. Semiconductor memories. Microprocessor(8085): architecture, programming, memory and I/O interfacing.&lt;br /&gt;
Signals and Systems: Definitions and properties of Laplace transform, continuous-time and discrete-time Fourier series, continuous-time and discrete-time Fourier Transform, DFT and FFT, z-transform. Sampling theorem. Linear Time-Invariant (LTI) Systems: definitions and properties; causality, stability, impulse response, convolution, poles and zeros, parallel and cascade structure, frequency response, group delay, phase delay. Signal transmission through LTI systems.&lt;br /&gt;
Control Systems: Basic control system components; block diagrammatic description, reduction of block diagrams. Open loop and closed loop (feedback) systems and stability analysis of these systems. Signal flow graphs and their use in determining transfer functions of systems; transient and steady state analysis of LTI control systems and frequency response. Tools and techniques for LTI control system analysis: root loci, Routh-Hurwitz criterion, Bode and Nyquist plots. Control system compensators: elements of lead and lag compensation, elements of Proportional-Integral-Derivative (PID) control. State variable representation and solution of state equation of LTI control systems.&lt;br /&gt;
Communications: Random signals and noise: probability, random variables, probability density function, autocorrelation, power spectral density. Analog communication systems: amplitude and angle modulation and demodulation systems, spectral analysis of these operations, superheterodyne receivers; elements of hardware, realizations of analog communication systems; signal-to-noise ratio (SNR) calculations for amplitude modulation (AM) and frequency modulation (FM) for low noise conditions. Fundamentals of information theory and channel capacity theorem. Digital communication systems: pulse code modulation (PCM), differential pulse code modulation (DPCM), digital modulation schemes: amplitude, phase and frequency shift keying schemes (ASK, PSK, FSK), matched filter receivers, bandwidth consideration and probability of error calculations for these schemes. Basics of TDMA, FDMA and CDMA and GSM.&lt;br /&gt;
Electromagnetics: Elements of vector calculus: divergence and curl; Gauss’ and Stokes’ theorems, Maxwell’s equations: differential and integral forms. Wave equation, Poynting vector. Plane waves: propagation through various media; reflection and refraction; phase and group velocity; skin depth. Transmission lines: characteristic impedance; impedance transformation; Smith chart; impedance matching; S parameters, pulse excitation. Waveguides: modes in rectangular waveguides; boundary conditions; cut-off frequencies; dispersion relations. Basics of propagation in dielectric waveguide and optical fibers. Basics of Antennas: Dipole antennas; radiation pattern; antenna gain.&lt;br /&gt;
&lt;br /&gt;
4. Electrical Engineering – EE&lt;br /&gt;
Electric Circuits and Fields: Network graph, KCL, KVL, node and mesh analysis, transient response of dc and ac networks; sinusoidal steady-state analysis, resonance, basic filter concepts; ideal current and voltage sources, Thevenin’s, Norton’s and Superposition and Maximum Power Transfer theorems, two-port networks, three phase circuits; Gauss Theorem, electric field and potential due to point, line, plane and spherical charge distributions; Ampere’s and Biot-Savart’s laws; inductance; dielectrics; capacitance.&lt;br /&gt;
Signals and Systems: Representation of continuous and discrete-time signals; shifting and scaling operations; linear, time-invariant and causal systems; Fourier series representation of continuous periodic signals; sampling theorem; Fourier, Laplace and Z transforms.&lt;br /&gt;
Electrical Machines: Single phase transformer - equivalent circuit, phasor diagram, tests, regulation and efficiency; three phase transformers - connections, parallel operation; auto-transformer; energy conversion principles; DC machines - types, windings, generator characteristics, armature reaction and commutation, starting and speed control of motors; three phase induction motors - principles, types, performance characteristics, starting and speed control; single phase induction motors; synchronous machines – performance, regulation and parallel operation of generators, motor starting, characteristics and applications; servo and stepper motors.&lt;br /&gt;
Power Systems: Basic power generation concepts; transmission line models and performance; cable performance, insulation; corona and radio interference; distribution systems; per-unit quantities; bus impedance and admittance matrices; load flow; voltage control; power factor correction; economic operation; symmetrical components; fault analysis; principles of over-current, differential and distance protection; solid state relays and digital protection; circuit breakers; system stability concepts, swing curves and equal area criterion; HVDC transmission and FACTS concepts.&lt;br /&gt;
Control Systems: Principles of feedback; transfer function; block diagrams; steady-state errors; Routh and Niquist techniques; Bode plots; root loci; lag, lead and lead-lag compensation; state space model; state transition matrix, controllability and observability. Electrical and Electronic Measurements: Bridges and potentiometers; PMMC, moving iron, dynamometer and induction type instruments; measurement of voltage, current, power, energy and power factor; instrument transformers; digital voltmeters and multimeters; phase, time and frequency measurement; Q-meters; oscilloscopes; potentiometric recorders; error analysis.&lt;br /&gt;
Analog and Digital Electronics: Characteristics of diodes, BJT, FET; amplifiers – biasing, equivalent circuit and frequency response; oscillators and feedback amplifiers; operational amplifiers - characteristics and applications; simple active filters; VCOs and timers; combinational and sequential logic circuits; multiplexer; Schmitt trigger; multi-vibrators; sample and hold circuits; A/D and D/A converters; 8-bit microprocessor basics, architecture, programming and interfacing.&lt;br /&gt;
Power Electronics and Drives: Semiconductor power diodes, transistors, thyristors, triacs, GTOs, MOSFETs and IGBTs - static characteristics and principles of operation; triggering circuits; phase control rectifiers; bridge converters – fully controlled and half controlled; principles of choppers and inverters; basis concepts of adjustable speed dc and ac drives.&lt;br /&gt;
5. Mechanical Engineering – ME&lt;br /&gt;
&lt;br /&gt;
Engineering Mechanics: Free body diagrams and equilibrium; trusses and frames; virtual work; kinematics&lt;br /&gt;
and dynamics of particles and of rigid bodies in plane motion, including impulse and momentum (linear and&lt;br /&gt;
angular) and energy formulations; impact.&lt;br /&gt;
Strength of Materials: Stress and strain, stress-strain relationship and elastic constants, Mohr’s circle for&lt;br /&gt;
plane stress and plane strain, thin cylinders; shear force and bending moment diagrams; bending and shear&lt;br /&gt;
stresses; deflection of beams; torsion of circular shafts; Euler’s theory of columns; strain energy methods;&lt;br /&gt;
thermal stresses.&lt;br /&gt;
Theory of Machines: Displacement, velocity and acceleration analysis of plane mechanisms; dynamic analysis of slider-crank mechanism; gear trains; flywheels.&lt;br /&gt;
Vibrations: Free and forced vibration of single degree of freedom systems; effect of damping; vibration isolation; resonance, critical speeds of shafts.&lt;br /&gt;
Design: Design for static and dynamic loading; failure theories; fatigue strength and the S-N diagram; principles of the design of machine elements such as bolted, riveted and welded joints, shafts, spur gears, rolling and sliding contact bearings, brakes and clutches.&lt;br /&gt;
Fluid Mechanics: Fluid properties; fluid statics, manometry, buoyancy; control-volume analysis of mass, momentum and energy; fluid acceleration; differential equations of continuity and momentum; Bernoulli’s equation; viscous flow of incompressible fluids; boundary layer; elementary turbulent flow; flow through pipes, head losses in pipes, bends etc.&lt;br /&gt;
Heat-Transfer: Modes of heat transfer; one dimensional heat conduction, resistance concept, electrical analogy, unsteady heat conduction, fins; dimensionless parameters in free and forced convective heat transfer, various correlations for heat transfer in flow over flat plates and through pipes; thermal boundary layer; effect of turbulence; radiative heat transfer, black and grey surfaces, shape factors, network analysis; heat exchanger performance, LMTD and NTU methods.&lt;br /&gt;
Thermodynamics: Zeroth, First and Second laws of thermodynamics; thermodynamic system and processes; Carnot cycle. irreversibility and availability; behaviour of ideal and real gases, properties of pure substances, calculation of work and heat in ideal processes; analysis of thermodynamic cycles related to energy conversion.&lt;br /&gt;
Applications: Power Engineering: Steam Tables, Rankine, Brayton cycles with regeneration and reheat. I.C. Engines: air-standard Otto, Diesel cycles. Refrigeration and air-conditioning: Vapour refrigeration cycle, heat pumps, gas refrigeration, Reverse Brayton cycle; moist air: psychrometric chart, basic psychrometric processes. Turbomachinery: Pelton-wheel, Francis and Kaplan turbines — impulse and reaction principles, velocity diagrams.&lt;br /&gt;
Engineering Materials: Structure and properties of engineering materials, heat treatment, stress-strain diagrams for engineering materials.&lt;br /&gt;
Metal Casting: Design of patterns, moulds and cores; solidification and cooling; riser and gating design, design considerations.&lt;br /&gt;
Forming: Plastic deformation and yield criteria; fundamentals of hot and cold working processes; load estimation for bulk (forging, rolling, extrusion, drawing) and sheet (shearing, deep drawing, bending) metal forming processes; principles of powder metallurgy.&lt;br /&gt;
Joining: Physics of welding, brazing and soldering; adhesive bonding; design considerations in welding.&lt;br /&gt;
Machining and Machine Tool Operations: Mechanics of machining, single and multi-point cutting tools, tool geometry and materials, tool life and wear; economics of machining; principles of non-traditional machining processes; principles of work holding, principles of design of jigs and fixtures Metrology and Inspection: Limits, fits and tolerances; linear and angular measurements; comparators; gauge design; interferometry; form and finish measurement; alignment and testing methods; tolerance analysis in manufacturing and assembly.&lt;br /&gt;
• Computer Integrated Manufacturing: Basic concepts of CAD/CAM and their integration tools.&lt;br /&gt;
• Production Planning and Control: Forecasting models, aggregate production planning, scheduling, materials requirement planning.&lt;br /&gt;
• Inventory Control: Deterministic and probabilistic models; safety stock inventory control systems.&lt;br /&gt;
• Operations Research: Linear programming, simplex and duplex method, transportation, assignment, network flow models, simple queuing models, PERT and CPM.</content><link rel='replies' type='application/atom+xml' href='http://computerscienze.blogspot.com/feeds/6309953068465640351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerscienze.blogspot.com/2010/03/drdo-scientist-entry-test.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/6309953068465640351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/6309953068465640351'/><link rel='alternate' type='text/html' href='http://computerscienze.blogspot.com/2010/03/drdo-scientist-entry-test.html' title='Engineers you can become scientist..!'/><author><name>lohith kumar</name><uri>http://www.blogger.com/profile/08530468303679081678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqHVxoT0zNNgw32kuE1WItEktjohP6UwVgbL74SJ-5omOek28-G9GNdlhHGvXGx7XybeksRrVMbegL3t4wFN9Bs1YA_db1jMRT7z_aT1ytriw1Y9GxtHx5gmpbmZOzTw/s220/1000_tiger_parts_seized.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337827601128114885.post-6768455000578094395</id><published>2010-01-26T16:08:00.000+05:30</published><updated>2010-02-14T17:38:53.647+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Introduction to Mobile Computing and Communications"/><title type='text'>Introduction to Mobile Computing and Communications</title><content type='html'>The most familiar aspect of mobile computing technology is the hand phone. About two decades ago, a hand phone was bulky and was only used for voice communication. It was merely an extension of the fixed line telephony that allowed users to keep in touch with colleagues. Now the hand phone is not only used for voice communication, it is also used to send text and multimedia messages. Future mobile devices will not only enable Internet access, but will also support high-speed data services.&lt;br /&gt;
&lt;br /&gt;
In addition to the hand phone, various types of mobile devices are now available, for example, personal digital assistants (PDAs) and pocket personal computers (PCs). Road warriors use mobile devices to access up-to-date information from the corporate database. A police officer at a crime scene may send a fingerprint picked up there for matching with data in a central database through a wireless network, hence leading to faster identification and arrest of potential suspects. The global positioning system (GPS) is used in search and rescue missions, for monitoring and preservation of wildlife, and for vehicle theft prevention. Though many of us are unaware of when mobile computing technology is being used, it has permeated all aspects of our lives.&lt;br /&gt;
&lt;br /&gt;
What is mobile computing? Simply defined, it is the use of a wireless network infrastructure to provide anytime, anywhere communications and access to information. There are many aspects of mobile computing and, sometimes, different terms are used to refer to them. This chapter gives an overview of what mobile computing has to offer and how it improves the quality of our lives. Later chapters discuss the underlying wireless networks and technologies that make mobile computing applications possible.&lt;br /&gt;
Mobile Computing Applications&lt;br /&gt;
&lt;br /&gt;
In 1991, Mark Weiser envisioned the next-generation computer technologies that &quot;weave themselves into the fabric of everyday life until they are indistinguishable from it.&quot; He described a ubiquitous computing environment that enhances the environment by making many computers available throughout the physical realm, while making them effectively invisible to the user. Weiser pointed out that anthropological studies of work life showed that people primarily work in a world of shared situations and unexamined technological skills. Today&#39;s computer technology does not conform to this description because it remains the focus of attention instead of being a tool that disappears from users&#39; awareness. Ubiquitous computing aims to make computers widely available throughout users&#39; environments and effortless to use. In other words, users should be able to work with computing devices without having to acquire the technological skills to use them. Computers are integrated into their environments so that users are not even aware that they are using a computer to accomplish a task. Unlike the computer technology of today, users need not acquire specific skills to use computers because their use would be intuitive. The aim of ubiquitous computing is to create a new relationship between people and computers in which the computers are kept out of the way of users as they go about their lives.&lt;br /&gt;
&lt;br /&gt;
Instead of computers that sit passively on desks, ubiquitous computers are aware of their surroundings and locations. They come in different sizes, each tailored to a specific task. At the Xerox Lab, Weiser and his colleagues developed a tab that is analogous to a Post-it® note, a pad that is analogous to a sheet of paper, and a board that is analogous to a yard-scale display. An office may contain hundreds of tabs, tens of pads, and one or two boards. These devices are not personal computers, but are a pervasive part of everyday life, with users often having many units in simultaneous operation. Unlike a laptop or a notebook, which is associated with a particular user, tabs and pads can be grabbed and used anywhere-they have no individualized identity and importance. You may have a few pads on your desk, each dedicated to a particular task in the same way that you spread papers on your desk.&lt;br /&gt;
&lt;br /&gt;
An employee ID card is replaced by an active badge that is of the same size. It identifies itself to receivers placed throughout a building. It makes it possible to keep track of people and objects that it is attached to. Because an active badge is associated to a particular user, it can become a form of ID; for example, an electronic door to a restricted area would only open to authorized users. When I am not in my office, the system detects my current location and forwards phone calls there. When I walk into a lecture hall, the system detects my presence, checks the timetable, deduces that I am there for a WRES3405 lecture, and automatically downloads that day&#39;s lecture notes. When the system detects the presence of a team working on a particular project in a meeting room, it checks the room booking system to determine if there is a scheduled meeting. Confirming that it is indeed the case, it downloads and displays the previous minutes on the board. As the meeting progresses, team members may manipulate the board using a tetherless pen that need not touch the screen, but can operate from a few meters away. Using the pen, a team member may point to an object on the board, select it, and modify it.&lt;br /&gt;
Pervasive computing is a term that is synonymous with ubiquitous computing. Many interesting projects on pervasive computing are carried out at Carnegie-Mellon University. The Portable Help Desk (PHD) is an application developed under Project Aura that makes use of spatial (a user&#39;s relative and absolute position and orientation) and temporal (scheduled time of private and public events) awareness. PHD allows a user to determine the location of colleagues and information about them. It is equipped with the capability to display maps of surrounding areas, indicating resources and nearby people. It also notifies users of the availability of resources they may need, for example, a nearby printer or café. PHD is equipped with visual and audio interfaces, each of which provides support in different contexts; for example, a user who is walking is more likely to prefer an audio interface to interact with PHD.&lt;br /&gt;
&lt;br /&gt;
An important requirement of the applications discussed so far is that for them to offer relevant information to the user (e.g., a café is about 100 m to your left), they need to be aware of their context. This is a very important aspect of mobile computing applications. To be useful, an application needs to be aware of its current environment. For example, if I am currently in Kuching and I request information about seafood restaurants, I expect the application to give me a list of seafood restaurants in Kuching, not Kuala Lumpur. For this reason, a tourist guide application must have context awareness embedded so that it can deliver information that is relevant to the users.&lt;br /&gt;
HyperAudio and HIPS are handheld electronic museum guides that adapt their behavior to that of a visitor. A visitor to a museum is given a handheld device equipped with headphones. As the visitor approaches an exhibit, the system dynamically composes a presentation of the object in sight. When the system detects that a visitor pauses in front of a display, it presents information about it. The information is presented in the form of audio recording, a relevant image, and a set of links for obtaining more information about it. The system obtains an estimate of the distance between the visitor and the display and adapts the way the information is presented. For example, if it detects that the visitor is standing right in front of the display, the audio message would say, &quot;this item is. . . .&quot; If the visitor is a distance away, it may attract his attention to it by saying, &quot;the display in front of you . . .&quot; or &quot;the display to your left is. . . .&quot; The system deduces that the visitor is very interested in the display if he or she pauses in front of it for more than a certain period of time and proceeds to present more detailed information about it. As the visitor moves away to view another display, the system detects the distance between the current display and the next one and starts to download the presentation for the next display.&lt;br /&gt;
&lt;br /&gt;
Another class of information that makes use of wireless technology is wearable computing, which involves integrating computers into our clothes to perform certain functions, for example, monitor the wearer&#39;s heartbeat and blood pressure. There are many practical and useful applications of wearable computing. Guide dogs and canes are very useful in assisting visually impaired people to avoid obstacles and negotiate changes in ground level, such as steps. However, they are not helpful in avoiding higher obstacles such as street signs and tree branches. This difficulty may be overcome with the use of a wearable headset consisting of a laptop, a video camera with infrared (IR) light emitting diodes mounted on one side of an eyeglass frame, and a scanning fiber display and optics mounted in a tube. The software comprises a machine vision program that identifies potential collision objects, a program that controls the display, and a graphical user interface (GUI) to help set parameters for the embedded processors and generate bright warning icons.&lt;br /&gt;
&lt;br /&gt;
A more recent technology is a wireless sensor network (WSN). In a WSN, sensors are placed at strategic locations to monitor certain aspects of the environment. For example, biologists may use it for habitat monitoring to study behavioral patterns of a species. The use of sensor networks assists ecologists to accurately measure the degree of micro-environmental variance that organisms experience. Data collected by scientists regarding population dynamics and habitat needs is important in conservation biology, landscape monitoring and management, and species-recovery efforts. Sensor nodes are also used to monitor personnel and mobile assets; for example, an alarm is triggered when a printer is detected leaving an office area without authorization. One application of this technology is in agriculture, where sensors are used to monitor environmental conditions that may affect the crop. Early detection and alert of a change in temperature, for example, would help farmers to take precautionary steps to protect their crops.&lt;br /&gt;
&lt;br /&gt;
Another novel invention using wireless technology is the virtual fence. Cowboys on horsebacks herding cattle might one day become a feature of a bygone era as the introduction of virtual fences allows ranchers to herd their cattle from the comfort of their homes. The virtual fence is downloaded to the cows by transmitting GPS coordinates to head collars worn by the cows. The dynamic virtual fences are moved along desired trajectories. The collars are equipped with a wireless fidelity (Wi-Fi) networking card, a Zaurus PDA, an eTrex GPS unit, and a loudspeaker that transmits occurring sounds (e.g., roaring tigers, barking dogs) when a cow strays from the intended path. This multidisciplinary project, the brain child of a biologist, is made possible in collaboration with computer scientists.&lt;br /&gt;
&lt;br /&gt;
Sensor technology can potentially play an important role in search and rescue operations by first responders (i.e., emergency personnel), such as firefighters, paramedics, and police, who arrive at the scene immediately after an event (e.g., a fire, an earthquake, a building collapse) occurs. Firefighters wear tags to allow easy tracking of their movements to coordinate search and rescue operations more effectively. The firefighters can be informed if a particular section of a building is found to be unstable and is about to collapse, and they are directed to evacuate it immediately. A wireless vital sign monitor is attached to victims found trapped so that their condition can be monitored to ensure that they receive the appropriate medical attention as soon as they are rescued. This noninvasive sensor monitors vital signs such as heart rate, oxygen saturation, and serum chemistry measurements. The vital sign monitor helps the paramedic team determine which victims&#39; conditions are more critical so that they can prioritize medical attention to more severely injured victims. The application and architecture required to support this emergency response application is being developed under the CodeBlue project at Harvard University.&lt;br /&gt;
&lt;br /&gt;
Wireless technology is also used in healthcare. The Arrhythmia Monitoring System (AMS) is a medical telemetry (telemedicine) system that makes use of wireless technology to monitor patients suffering from arrhythmia (Liszka et al. 2004). Among the complications that arise from arrhythmia are the loss of regular heartbeat and subsequent loss of function and rapid heartbeats. AMS provides a means for healthcare professionals to continuously monitor a patient&#39;s electrical cardiac rhythms remotely even though the patient is not at the hospital. This technology allows patients to be in the comfort of their homes without jeopardizing their health. It is also useful for monitoring the heart functions of astronauts who are more susceptible to cardiac dysrhythmias when in space.&lt;br /&gt;
&lt;br /&gt;
The system architecture consists of a wearable server, a central server, and a call center. The wearable server is a small communications device worn by the patient that collects the patient&#39;s electrocardiogram ([ECG], i.e., the heart muscles&#39; electrical activity). The data is collected using wires attached to skin-contact biosensors. The wearable server receives analog signals from the sensors and converts them into digital signals. Data is collected every 4 ms and requires a minimum baud rate of 22.5 kbps to transmit over a wireless link to the central server.&lt;br /&gt;
&lt;br /&gt;
The central server is located close to the patient. Its functions are data compression, location awareness utilizing GPS, and rudimentary arrhythmia detection. It serves as a wireless gateway to a long-distance cellular network. Data is routed via the call center that is manned 24/7, by healthcare professionals who monitor the ECG signals and respond to alerts. The system transmits an alert automatically if it detects that the patient is about to have or is having an arrhythmia attack. A patient can press a button on the wearable server to send a non-critical alert to the call center if the heart flutters or other unusual feeling occurs. There is also a panic button that a patient can press to send a critical alert for help so that an emergency response team can be rushed to the most recent GPS location.&lt;br /&gt;
&lt;br /&gt;
The GPS location service is a critical part of the system as it is imperative that an emergency response team is dispatched in the quickest time possible. A patient&#39;s location is tracked using a GPS transceiver equipped with a 1.55 GHz GPS antenna and a 2.4 GHz Bluetooth antenna. The location information is sent to the receiver every 10 s and acquires a minimum of three GSP satellite signals. A patient&#39;s location can be accurately tracked within 10 m.&lt;br /&gt;
Another category of mobile applications that is gaining popularity is mobile commerce or m-commerce, which is likely to become an important application of this technology. M-commerce application can be classified into ten types:&lt;br /&gt;
&lt;br /&gt;
1. Mobile financial application (business-to-customer [B2C] and business-to-business [B2B]): The mobile device is used as a powerful financial medium.&lt;br /&gt;
&lt;br /&gt;
2. Mobile advertising (B2C): It turns the wireless infrastructure and devices into a powerful marketing medium.&lt;br /&gt;
&lt;br /&gt;
3. Mobile inventory management (B2C and B2B) or product locating and shopping (B2C and B2B): It is an attempt to reduce the amount of inventory needed by managing in-house and on-the-move inventory. It also includes applications that help to locate products and services that are needed.&lt;br /&gt;
&lt;br /&gt;
4. Proactive service management (B2C and B2B): It attempts to locate products and services that are needed.&lt;br /&gt;
&lt;br /&gt;
5. Wireless reengineering (B2C and B2B): It focuses on improving the quality of business services using mobile devices and wireless infrastructure.&lt;br /&gt;
&lt;br /&gt;
6. Mobile auction or reverse auction (B2C and B2B): It allows users to buy or sell certain items using multicast support of wireless infrastructure.&lt;br /&gt;
&lt;br /&gt;
7. Mobile entertainment services and games (B2C): It provides entertainment services to users on a per-event or subscription basis.&lt;br /&gt;
&lt;br /&gt;
8. Mobile office (B2C): It provides the complete office environment to mobile users anywhere, anytime.&lt;br /&gt;
&lt;br /&gt;
. Mobile distance education (B2C): It extends distance or virtual education support for mobile uses everywhere.&lt;br /&gt;
&lt;br /&gt;
10. Wireless data center (B2C and B2B): It supports large amounts of stored data to be made available to mobile users for making &quot;intelligent&quot; decisions.&lt;br /&gt;
The mobile computing applications discussed so far provide a glimpse of what mobile computing technology has to offer. The applications are used in many different fields and may perform generic functions or be tailored to specific needs. The next section gives an overview the evolution of wireless networks that have made these applications possible.&lt;br /&gt;
Evolution of Wireless Networks and Services&lt;br /&gt;
&lt;br /&gt;
The first generation (1G) wireless network was analog. The first in North America was advanced mobile phone system (AMPS), which was based on frequency division multiple access. A total of 1664 channels were available in the 824 to 849 MHz and 869 to 894 MHz band, providing 832 downlink (DL) and 832 uplink (UL) channels. AMPS, widely used in North America, supports frequency reuse. The underlying network is a cellular network where a geographical region is divided into cells. A base station (BS) at the center of the cell transmits signals to and from users within the cell.&lt;br /&gt;
The second generation (2G) systems onward are digital. Digital systems make possible an array of new services such as caller ID. The Global System for Mobile Communications (GSM) is a popular 2G system. GSM offers a data rate of 9.6 to 14.4 kbps. It supports international roaming, which means users may have access to wireless services even when traveling abroad. The most popular service offered by GSM is the Short Message Service (SMS), which allows users to send text messages up to 160 characters long.&lt;br /&gt;
&lt;br /&gt;
2.5G systems support more than just voice communications. In addition to text messaging, 2.5G systems offer a data rate on the order of 100 kbps to support various data technologies, such as Internet access. Most 2.5G systems implement packet switching. The 2.5G systems help provide seamless transition technology between 2G and third generation (3G) systems. The following are 2.5G systems:&lt;br /&gt;
&lt;br /&gt;
High-Speed Circuit-Switched Data (HSCSD): Even though most 2.5G systems implement packet switching, HSCSD continues support for circuit-switched data. It offers a data rate of 115 kbps and is designed to enhance GSM networks. The access technology used is time division multiple access (TDMA). It provides support for Web browsing and file transfers.&lt;br /&gt;
General Packet Radio Service (GPRS): GPRS offers a data rate of 168 kbps. It enhances the performance and transmission speeds of GSM. GPRS provides always-on connectivity, which means users do not have to reconnect to the network for each transmission. Because there is a maximum of eight slots to transmit calls on one device, it allows more than one transmission at one time; for example, a voice call and an incoming text message can be handled simultaneously.&lt;br /&gt;
Enhanced Data Rates for GSM Evolution (EDGE): EDGE works in conjunction with GPRS and TDMA over GSM networks. Its offered data rate is 384 kbps. EDGE supports data communications while voice communications are supported using the technology on existing networks.&lt;br /&gt;
&lt;br /&gt;
Third-generation (3G) wireless systems are designed to support high bit rate telecommunications. 3G systems are designed to meet the requirements of multimedia applications and Internet services. The bit rate offered ranges from 144 kbps for full mobility applications, 384 kbps for limited mobility applications in macro- and microcellular environments, and 2 Mbps for low-mobility applications in micro- and picocellular environments. A very useful service provided by 3G systems is an emergency service with the ability to identify a user&#39;s location within 125 m 67% of time. Figure 1.1 shows the evolution of wireless standards.&lt;br /&gt;
&lt;br /&gt;
Initially, the International Telecommunication Union (ITU) intended to design a single 3G standard; however, due to a number of difficulties, it has ratified two 3G standards. The two standards are CDMA2000, which provides a bit rate of up to 2.4 Mbps, and wideband CDMA (WCDMA), which provides a bit rate of up to 8 Mbps. The high bit rate enables new wireless services that can be classified into three categories:&lt;br /&gt;
&lt;br /&gt;
1. Information retrieval: It permits location-aware applications to remotely download information from a corporate database.&lt;br /&gt;
&lt;br /&gt;
2. Mobile commerce: It allows users to book a flight or pay bills.&lt;br /&gt;
&lt;br /&gt;
3. General communication: It permits users to make or receive phone calls, send or receive messages, or activate an air conditioner at home.&lt;br /&gt;
&lt;br /&gt;
Compound wireless service enables users to combine different types of services to carry out specialized functions. For example, you can take a photo using a camera phone and send it to a friend using the multimedia message service (MMS). A more useful application would be to combine a home alarm system with a wireless service so that when an intruder is detected, a photo of the intruder is captured by the surveillance camera and sent to the authorities, while the owner is alerted via mobile phone.&lt;br /&gt;
&lt;br /&gt;
A compound service comprises a fundamental wireless service (one that cannot be partitioned into smaller identifiable services), a utility service (one that carries out a function within a particular compound service sequence), and possibly another compound service. For example, consider a courier service driver who has to deliver a document before a certain deadline and he has to find the fastest and least congested route to his destination. He makes use of a route planning application on the wireless terminal in his van, which consists of three fundamental wireless services:&lt;br /&gt;
&lt;br /&gt;
1. A location service to determine the current location of the driver.&lt;br /&gt;
&lt;br /&gt;
2. A travel route computation to determine the least congested and fastest route to his destination.&lt;br /&gt;
&lt;br /&gt;
3. Traffic information retrieval to obtain traffic information from various sources.&lt;br /&gt;
The compound service consists of continuous iterations of these services: determine the current location and provide it to the wireless terminal, compute the least congested route from the current location to the destination, and retrieve the most updated traffic information. It involves executing step 1 and deciding whether to repeat step 2. Going back to step 1 is the utility service.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Summary&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Mobile computing is an active area of research. Most applications available to users today are targeted at teenagers and yuppies and are mostly infotainment applications, for example, music downloads, friend locators, news updates. It will probably be a few more years before mobile enterprise applications appear on the market as there are many issues that need to be addressed to efficiently and effectively provide such applications. For this reason, several examples discussed in this book are based on ongoing and experimental work at various universities and research institutes. Therefore, a list of references, bibliographies, and online resources are provided at the end of each chapter so that readers may further explore the topic.&lt;br /&gt;
&lt;br /&gt;
Copied from &lt;b&gt;www.ittoday.info&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
________________________________________________________________________________________________</content><link rel='replies' type='application/atom+xml' href='http://computerscienze.blogspot.com/feeds/6768455000578094395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerscienze.blogspot.com/2010/01/introduction-to-mobile-computing-and.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/6768455000578094395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/6768455000578094395'/><link rel='alternate' type='text/html' href='http://computerscienze.blogspot.com/2010/01/introduction-to-mobile-computing-and.html' title='Introduction to Mobile Computing and Communications'/><author><name>lohith kumar</name><uri>http://www.blogger.com/profile/08530468303679081678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqHVxoT0zNNgw32kuE1WItEktjohP6UwVgbL74SJ-5omOek28-G9GNdlhHGvXGx7XybeksRrVMbegL3t4wFN9Bs1YA_db1jMRT7z_aT1ytriw1Y9GxtHx5gmpbmZOzTw/s220/1000_tiger_parts_seized.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337827601128114885.post-4181093640617850354</id><published>2010-01-25T23:50:00.005+05:30</published><updated>2010-03-28T20:54:59.159+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="How to be a Programmer"/><title type='text'>How to be a Programmer: A Short, Comprehensive, and Personal Summary</title><content type='html'>How to be a Programmer: A Short, Comprehensive, and Personal Summary&lt;br /&gt;
Robert L Read&lt;br /&gt;
Copyright � 2002, 2003 Robert L. Read&lt;br /&gt;
Copyright&lt;br /&gt;
Copyright � 2002, 2003&lt;br /&gt;
by Robert L. Read. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with one Invariant Section being ‘History (As of February, 2003)’, no Front-Cover Texts, and one Back-Cover Text: ‘The original version of this document was written by Robert L. Read without renumeration and dedicated to the programmers of Hire.com.’ A copy of the license is included in the section entitled ‘GNU Free Documentation License’.&lt;br /&gt;
2002&lt;br /&gt;
________________________________________&lt;br /&gt;
Dedication&lt;br /&gt;
To the programmers of Hire.com.&lt;br /&gt;
Table of Contents&lt;br /&gt;
1. Introduction&lt;br /&gt;
2. Beginner&lt;br /&gt;
Personal Skills&lt;br /&gt;
Learn to Debug&lt;br /&gt;
How to Debug by Splitting the Problem Space&lt;br /&gt;
How to Remove an Error&lt;br /&gt;
How to Debug Using a Log&lt;br /&gt;
How to Understand Performance Problems&lt;br /&gt;
How to Fix Performance Problems&lt;br /&gt;
How to Optimize Loops&lt;br /&gt;
How to Deal with I/O Expense&lt;br /&gt;
How to Manage Memory&lt;br /&gt;
How to Deal with Intermittent Bugs&lt;br /&gt;
How to Learn Design Skills&lt;br /&gt;
How to Conduct Experiments&lt;br /&gt;
Team Skills&lt;br /&gt;
Why Estimation is Important&lt;br /&gt;
How to Estimate Programming Time&lt;br /&gt;
How to Find Out Information&lt;br /&gt;
How to Utilize People as Information Sources&lt;br /&gt;
How to Document Wisely&lt;br /&gt;
How to Work with Poor Code&lt;br /&gt;
How to Use Source Code Control&lt;br /&gt;
How to Unit Test&lt;br /&gt;
Take Breaks when Stumped&lt;br /&gt;
How to Recognize When to Go Home&lt;br /&gt;
How to Deal with Difficult People&lt;br /&gt;
3. Intermediate&lt;br /&gt;
Personal Skills&lt;br /&gt;
How to Stay Motivated&lt;br /&gt;
How to be Widely Trusted&lt;br /&gt;
How to Tradeoff Time vs. Space&lt;br /&gt;
How to Stress Test&lt;br /&gt;
How to Balance Brevity and Abstraction&lt;br /&gt;
How to Learn New Skills&lt;br /&gt;
Learn to Type&lt;br /&gt;
How to Do Integration Testing&lt;br /&gt;
Communication Languages&lt;br /&gt;
Heavy Tools&lt;br /&gt;
How to analyze data&lt;br /&gt;
Team Skills&lt;br /&gt;
How to Manage Development Time&lt;br /&gt;
How to Manage Third-Party Software Risks&lt;br /&gt;
How to Manage Consultants&lt;br /&gt;
How to Communicate the Right Amount&lt;br /&gt;
How to Disagree Honestly and Get Away with It&lt;br /&gt;
Judgement&lt;br /&gt;
How to Tradeoff Quality Against Development Time&lt;br /&gt;
How to Manage Software System Dependence&lt;br /&gt;
How to Decide if Software is Too Immature&lt;br /&gt;
How to Make a Buy vs. Build Decision&lt;br /&gt;
How to Grow Professionally&lt;br /&gt;
How to Evaluate Interviewees&lt;br /&gt;
How to Know When to Apply Fancy Computer Science&lt;br /&gt;
How to Talk to Non-Engineers&lt;br /&gt;
4. Advanced&lt;br /&gt;
Technological Judgment&lt;br /&gt;
How to Tell the Hard From the Impossible&lt;br /&gt;
How to Utilize Embedded Languages&lt;br /&gt;
Choosing Languages&lt;br /&gt;
Compromising Wisely&lt;br /&gt;
How to Fight Schedule Pressure&lt;br /&gt;
How to Understand the User&lt;br /&gt;
How to Get a Promotion&lt;br /&gt;
Serving Your Team&lt;br /&gt;
How to Develop Talent&lt;br /&gt;
How to Choose What to Work On&lt;br /&gt;
How to Get the Most From Your Teammates&lt;br /&gt;
How to Divide Problems Up&lt;br /&gt;
How to Handle Boring Tasks&lt;br /&gt;
How to Gather Support for a Project&lt;br /&gt;
How to Grow a System&lt;br /&gt;
How to Communicate Well&lt;br /&gt;
How to Tell People Things They Don&#39;t Want to Hear&lt;br /&gt;
How to Deal with Managerial Myths&lt;br /&gt;
How to Deal with Organizational Chaos&lt;br /&gt;
Glossary&lt;br /&gt;
A.&lt;br /&gt;
B. History (As Of February, 2003)&lt;br /&gt;
C. GNU Free Documentation License&lt;br /&gt;
PREAMBLE&lt;br /&gt;
APPLICABILITY AND DEFINITIONS&lt;br /&gt;
VERBATIM COPYING&lt;br /&gt;
COPYING IN QUANTITY&lt;br /&gt;
MODIFICATIONS&lt;br /&gt;
COMBINING DOCUMENTS&lt;br /&gt;
COLLECTIONS OF DOCUMENTS&lt;br /&gt;
AGGREGATION WITH INDEPENDENT WORKS&lt;br /&gt;
TRANSLATION&lt;br /&gt;
TERMINATION&lt;br /&gt;
FUTURE REVISIONS OF THIS LICENSE&lt;br /&gt;
ADDENDUM: How to use this License for your documents&lt;br /&gt;
Chapter�1.�Introduction&lt;br /&gt;
Table of Contents&lt;br /&gt;
To be a good programmer is difficult and noble. The hardest part of making real a collective vision of a software project is dealing with one&#39;s coworkers and customers. Writing computer programs is important and takes great intelligence and skill. But it is really child&#39;s play compared to everything else that a good programmer must do to make a software system that succeeds for both the customer and myriad colleagues for whom she is partially responsible. In this essay I attempt to summarize as concisely as possible those things that I wish someone had explained to me when I was twenty-one.&lt;br /&gt;
This is very subjective and, therefore, this essay is doomed to be personal and somewhat opinionated. I confine myself to problems that a programmer is very likely to have to face in her work. Many of these problems and their solutions are so general to the human condition that I will probably seem preachy. I hope in spite of this that this essay will be useful.&lt;br /&gt;
Computer programming is taught in courses. The excellent books: The Pragmatic Programmer [Prag99], Code Complete [CodeC93], Rapid Development [RDev96], and Extreme Programming Explained [XP99] all teach computer programming and the larger issues of being a good programmer. The essays of Paul Graham[PGSite] and Eric Raymond[Hacker] should certainly be read before or along with this article. This essay differs from those excellent works by emphasizing social problems and comprehensively summarizing the entire set of necessary skills as I see them.&lt;br /&gt;
In this essay the term boss to refer to whomever gives you projects to do. I use the words business, company, and tribe, synonymously except that business connotes moneymaking, company connotes the modern workplace and tribe is generally the people you share loyalty with.&lt;br /&gt;
Welcome to the tribe.&lt;br /&gt;
Chapter�2.�Beginner&lt;br /&gt;
Table of Contents&lt;br /&gt;
Personal Skills&lt;br /&gt;
Learn to Debug&lt;br /&gt;
How to Debug by Splitting the Problem Space&lt;br /&gt;
How to Remove an Error&lt;br /&gt;
How to Debug Using a Log&lt;br /&gt;
How to Understand Performance Problems&lt;br /&gt;
How to Fix Performance Problems&lt;br /&gt;
How to Optimize Loops&lt;br /&gt;
How to Deal with I/O Expense&lt;br /&gt;
How to Manage Memory&lt;br /&gt;
How to Deal with Intermittent Bugs&lt;br /&gt;
How to Learn Design Skills&lt;br /&gt;
How to Conduct Experiments&lt;br /&gt;
Team Skills&lt;br /&gt;
Why Estimation is Important&lt;br /&gt;
How to Estimate Programming Time&lt;br /&gt;
How to Find Out Information&lt;br /&gt;
How to Utilize People as Information Sources&lt;br /&gt;
How to Document Wisely&lt;br /&gt;
How to Work with Poor Code&lt;br /&gt;
How to Use Source Code Control&lt;br /&gt;
How to Unit Test&lt;br /&gt;
Take Breaks when Stumped&lt;br /&gt;
How to Recognize When to Go Home&lt;br /&gt;
How to Deal with Difficult People&lt;br /&gt;
Personal Skills&lt;br /&gt;
Learn to Debug&lt;br /&gt;
Debugging is the cornerstone of being a programmer. The first meaning of the verb to debug is to remove errors, but the meaning that really matters is to see into the execution of a program by examining it. A programmer that cannot debug effectively is blind.&lt;br /&gt;
Idealists that think design, or analysis, or complexity theory, or whatnot, are more fundamental are not working programmers. The working programmer does not live in an ideal world. Even if you are perfect, your are surrounded by and must interact with code written by major software companies, organizations like GNU, and your colleagues. Most of this code is imperfect and imperfectly documented. Without the ability to gain visibility into the execution of this code the slightest bump will throw you permanently. Often this visibility can only be gained by experimentation, that is, debugging.&lt;br /&gt;
Debugging is about the running of programs, not programs themselves. If you buy something from a major software company, you usually don&#39;t get to see the program. But there will still arise places where the code does not conform to the documentation (crashing your entire machine is a common and spectacular example), or where the documentation is mute. More commonly, you create an error, examine the code you wrote and have no clue how the error can be occurring. Inevitably, this means some assumption you are making is not quite correct, or some condition arises that you did not anticipate. Sometimes the magic trick of staring into the source code works. When it doesn&#39;t, you must debug.&lt;br /&gt;
To get visibility into the execution of a program you must be able to execute the code and observe something about it. Sometimes this is visible, like what is being displayed on a screen, or the delay between two events. In many other cases, it involves things that are not meant to be visible, like the state of some variables inside the code, which lines of code are actually being executed, or whether certain assertions hold across a complicated data structure. These hidden things must be revealed.&lt;br /&gt;
The common ways of looking into the ‘innards’ of an executing program can be categorized as:&lt;br /&gt;
• Using a debugging tool,&lt;br /&gt;
• Printlining --- Making a temporary modification to the program, typically adding lines that print information out, and&lt;br /&gt;
• Logging --- Creating a permanent window into the programs execution in the form of a log.&lt;br /&gt;
Debugging tools are wonderful when they are stable and available, but the printlining and logging are even more important. Debugging tools often lag behind language development, so at any point in time they may not be available. In addition, because the debugging tool may subtly change the way the program executes it may not always be practical. Finally, there are some kinds of debugging, such as checking an assertion against a large data structure, that require writing code and changing the execution of the program. It is good to know how to use debugging tools when they are stable, but it is critical to be able to employ the other two methods.&lt;br /&gt;
Some beginners fear debugging when it requires modifying code. This is understandable---it is a little like exploratory surgery. But you have to learn to poke at the code and make it jump; you have to learn to experiment on it, and understand that nothing that you temporarily do to it will make it worse. If you feel this fear, seek out a mentor---we lose a lot of good programmers at the delicate onset of their learning to this fear.&lt;br /&gt;
How to Debug by Splitting the Problem Space&lt;br /&gt;
Debugging is fun, because it begins with a mystery. You think it should do something, but instead it does something else. It is not always quite so simple---any examples I can give will be contrived compared to what sometimes happens in practice. Debugging requires creativity and ingenuity. If there is a single key to debugging is to use the divide and conquer technique on the mystery.&lt;br /&gt;
Suppose, for example, you created a program that should do ten things in a sequence. When you run it, it crashes. Since you didn&#39;t program it to crash, you now have a mystery. When out look at the output, you see that the first seven things in the sequence were run successfully. The last three are not visible from the output, so now your mystery is smaller: ‘It crashed on thing #8, #9, or #10.’&lt;br /&gt;
Can you design an experiment to see which thing it crashed on? Sure. You can use a debugger or we can add printline statements (or the equivalent in whatever language you are working in) after #8 and #9. When we run it again, our mystery will be smaller, such as ‘It crashed on thing #9.’ I find that bearing in mind exactly what the mystery is at any point in time helps keep one focused. When several people are working together under pressure on a problem it is easy to forget what the most important mystery is.&lt;br /&gt;
The key to divide and conquer as a debugging technique is the same as it is for algorithm design: as long as you do a good job splitting the mystery in the middle, you won&#39;t have to split it too many times, and you will be debugging quickly. But what is the middle of a mystery? There is where true creativity and experience comes in.&lt;br /&gt;
To a true beginner, the space of all possible errors looks like every line in the source code. You don&#39;t have the vision you will later develop to see the other dimensions of the program, such as the space of executed lines, the data structure, the memory management, the interaction with foreign code, the code that is risky, and the code that is simple. For the experience programmer, these other dimensions form an imperfect but very useful mental model of all the things that can go wrong. Having that mental model is what helps one find the middle of the mystery effectively.&lt;br /&gt;
Once you have evenly subdivided the space of all that can go wrong, you must try to decide in which space the error lies. In the simple case where the mystery is: ‘Which single unknown line makes my program crash?’, you can ask yourself: ‘Is the unknown line executed before or after this line that I judge to be executed in the about the middle of the running program?’ Usually you will not be so lucky as to know that the error exists in a single line, or even a single block. Often the mystery will be more like: ‘Either there is a pointer in that graph that points to the wrong node, or my algorithm that adds up the variables in that graph doesn&#39;t work.’ In that case you may have to write a small program to check that the pointers in the graph are all correct in order to decide which part of the subdivided mystery can be eliminated.&lt;br /&gt;
How to Remove an Error&lt;br /&gt;
I&#39;ve intentionally separated the act of examining a program&#39;s execution from the act of fixing an error. But of course, debugging does also mean removing the bug. Ideally you will have perfect understanding of the code and will reach an ‘A-Ha!’ moment where you perfectly see the error and how to fix it. But since your program will often use insufficiently documented systems into which you have no visibility, this is not always possible. In other cases the code is so complicated that your understanding cannot be perfect.&lt;br /&gt;
In fixing a bug, you want to make the smallest change that fixes the bug. You may see other things that need improvement; but don&#39;t fix those at the same time. Attempt to employ the scientific method of changing one thing and only one thing at a time. The best process for this is to be able to easily reproduce the bug, then put your fix in place, and then rerun the program and observe that the bug no longer exists. Of course, sometimes more than one line must be changed, but you should still conceptually apply a single atomic change to fix the bug.&lt;br /&gt;
Sometimes, there are really several bugs that look like one. It is up to you to define the bugs and fix them one at a time. Sometimes it is unclear what the program should do or what the original author intended. In this case, you must exercise your experience and judgment and assign your own meaning to the code. Decide what it should do, and comment it or clarify it in some way and then make the code conform to your meaning. This is an intermediate or advanced skill that is sometimes harder than writing the original function in the first place, but the real world is often messy. You may have to fix a system you cannot rewrite.&lt;br /&gt;
How to Debug Using a Log&lt;br /&gt;
Logging is the practice of writing a system so that it produces a sequence of informative records, called a log. Printlining is just producing a simple, usually temporary, log. Absolute beginners must understand and use logs because their knowledge of the programming is limited; system architects must understand and use logs because of the complexity of the system. The amount of information that is provided by the log should be configurable, ideally while the program is running. In general, logs offer three basic advantages:&lt;br /&gt;
• Logs can provide useful information about bugs that are hard to reproduce (such as those that occur in the production environment but that cannot be reproduced in the test environment).&lt;br /&gt;
• Logs can provide statistics and data relevant to performance, such as the time passing between statements.&lt;br /&gt;
• When configurable, logs allow general information to be captured in order to debug unanticipated specific problems without having to modify and/or redeploy the code just to deal with those specific problems.&lt;br /&gt;
The amount to output into the log is always a compromise between information and brevity. Too much information makes the log expensive and produces scroll blindness, making it hard to find the information you need. Too little information and it may not contain what you need. For this reason, making what is output configurable is very useful. Typically, each record in the log will identify its position in the source code, the thread that executed it if applicable, the precise time of execution, and, commonly, an additional useful piece of information, such as the value of some variable, the amount of free memory, the number of data objects, etc. These log statements are sprinkled throughout the source code but are particularly at major functionality points and around risky code. Each statement can be assigned a level and will only output a record if the system is currently configured to output that level. You should design the log statements to address problems that you anticipate. Anticipate the need to measure performance.&lt;br /&gt;
If you have a permanent log, printlining can now be done in terms of the log records, and some of the debugging statements will probably be permanently added to the logging system.&lt;br /&gt;
How to Understand Performance Problems&lt;br /&gt;
Learning to understand the performance of a running system is unavoidable for the same reason that learning debugging is. Even if the code you understand perfectly precisely the cost of the code you write, your code will make calls into other software systems that you have little control over or visibility into. However, in practice performance problems are a little different and a little easier than debugging in general.&lt;br /&gt;
Suppose that you or your customers consider a system or a subsystem to be too slow. Before you try to make it faster, you must build a mental model of why it is slow. To do this you can use a profiling tool or a good log to figure out where the time or other resources are really being spent. There is a famous dictum that 90% of the time will be spent in 10% of the code. I would add to that the importance of input/output expense (I/O) to performance issues. Often most of the time is spent in I/O in one way or another. Finding the expensive I/O and the expensive 10% of the code is a good first step to building your mental model.&lt;br /&gt;
There are many dimensions to the performance of a computer system, and many resources consumed. The first resource to measure is wall--clock time, the total time that passes for the computation. Logging wall-clock time is particularly valuable because it can inform about unpredictable circumstance that arise in situations where other profiling is impractical. However, this may not always represent the whole picture. Sometimes something that takes a little longer but doesn&#39;t burn up so many processor seconds will be much better in computing environment you actually have to deal with. Similarly, memory, network bandwidth, database or other server accesses may, in the end, be far more expensive than processor seconds.&lt;br /&gt;
Contention for shared resources that are synchronized can cause deadlock and starvation. Deadlock is the inability to proceed because of improper synchronization or resource demands. Starvation is the failure to schedule a component properly. If it can be at all anticipated, it is best to have a way of measuring this contention from the start of your project. Even if this contention does not occur, it is very helpful to be able to assert that with confidence.&lt;br /&gt;
How to Fix Performance Problems&lt;br /&gt;
Most software projects can be made with relatively little effort 10 to 100 times faster than they are at the they are first released. Under time-to-market pressure, it is both wise and effective to choose a solution that gets the job done simply and quickly, but less efficiently than some other solution. However, performance is a part of usability, and often it must eventually be considered more carefully.&lt;br /&gt;
The key to improving the performance of a very complicated system is to analyze it well enough to find the bottlenecks, or places where most of the resources are consumed. There is not much sense in optimizing a function that accounts for only 1% of the computation time. As a rule of thumb you should think carefully before doing anything unless you think it is going to make the system or a significant part of it at least twice as fast. There is usually a way to do this. Consider the test and quality assurance effort that your change will require. Each change brings a test burden with it, so it is much better to have a few big changes.&lt;br /&gt;
After you&#39;ve made a two-fold improvement in something, you need to at least rethink and perhaps reanalyze to discover the next-most-expensive bottleneck in the system, and attack that to get another two-fold improvement.&lt;br /&gt;
Often, the bottlenecks in performance will be an example of counting cows by counting legs and dividing by four, instead of counting heads. For example, I&#39;ve made errors such as failing to provide a relational database system with a proper index on a column I look up a lot, which probably made it at least 20 times slower. Other examples include doing unnecessary I/O in inner loops, leaving in debugging statements that are no longer needed, unnecessary memory allocation, and, in particular, inexpert use of libraries and other subsystems that are often poorly documented with respect to performance. This kind of improvement is sometimes called low-hanging fruit, meaning that it can be easily picked to provide some benefit.&lt;br /&gt;
What do you do when you start to run out of low-hanging fruit? Well, you can reach higher, or chop the tree down. You can continue making small improvements or you can seriously redesign a system or a subsystem. (This is a great opportunity to use your skills as a good programmer, not only in the new design but also in convincing your boss that this is a good idea.) However, before you argue for the redesign of a subsystem, you should ask yourself whether or not your proposal will make it five to ten time better.&lt;br /&gt;
How to Optimize Loops&lt;br /&gt;
Sometimes you&#39;ll encounter loops, or recursive functions, that take a long time to execute and are bottlenecks in your product. Before you try to make the loop a little faster, but spend a few minutes considering if there is a way to remove it entirely. Would a different algorithm do? Could you compute that while computing something else? If you can&#39;t find away around it, then you can optimize the loop. This is simple; move stuff out. In the end, this will require not only ingenuity but also an understanding of the expense of each kind of statement and expression. Here are some suggestions:&lt;br /&gt;
• Remove floating point operations.&lt;br /&gt;
• Don&#39;t allocate new memory blocks unnecessarily.&lt;br /&gt;
• Fold constants together.&lt;br /&gt;
• Move I/O into a buffer.&lt;br /&gt;
• Try not to divide.&lt;br /&gt;
• Try not to do expensive typecasts.&lt;br /&gt;
• Move a pointer rather than recomputing indices.&lt;br /&gt;
The cost of each of these operations depends on your specific system. On some systems compilers and hardware do these things for you. Clear, efficient code is better than code that requires an understanding of a particular platform.&lt;br /&gt;
How to Deal with I/O Expense&lt;br /&gt;
For a lot of problems, processors are fast compared to the cost of communicating with a hardware device. This cost is usually abbreviated I/O, and can include network cost, disk I/O, database queries, file I/O, and other use of some hardware not very close to the processor. Therefore building a fast system is often more a question of improving I/O than improving the code in some tight loop, or even improving an algorithm.&lt;br /&gt;
There are two very fundamental techniques to improving I/O: caching and representation. Caching is avoiding I/O (generally avoiding the reading of some abstract value) by storing a copy of that value locally so no I/O is performed to get the value. The first key to caching is to make it crystal clear which data is the master and which are copies. There is only one master---period. Caching brings with it the danger that the copy is sometimes can&#39;t reflect changes to the master instantaneously.&lt;br /&gt;
Representation is the approach of making I/O cheaper by representing data more efficiently. This is often in tension with other demands, like human readability and portability.&lt;br /&gt;
Representations can often be improved by a factor of two or three from their first implementation. Techniques for doing this include using a binary representation instead of one that is human readable, transmitting a dictionary of symbols along with the data so that long symbols don&#39;t have to be encoded, and, at the extreme, things like Huffman encoding.&lt;br /&gt;
A third technique that is sometimes possible is to improve the locality of reference by pushing the computation closer to the data. For instance, if you are reading some data from a database and computing something simple from it, such as a summation, try to get the database server to do it for you. This is highly dependent on the kind of system you&#39;re working with, but you should explore it.&lt;br /&gt;
How to Manage Memory&lt;br /&gt;
Memory is a precious resource that you can&#39;t afford to run out of. You can ignore it for a while but eventually you will have to decide how to manage memory.&lt;br /&gt;
Space that needs to persist beyond the scope of a single subroutine is often called heap allocated. A chunk of memory is useless, hence garbage, when nothing refers to it. Depending on the system you use, you may have to explicitly deallocate memory yourself when it is about to become garbage. More often you may be able to use a system that provides a garbage collector. A garbage collector notices garbage and frees its space without any action required by the programmer. Garbage collection is wonderful: it lessens errors and increases code brevity and concision cheaply. Use it when you can.&lt;br /&gt;
But even with garbage collection, you can fill up all memory with garbage. A classic mistake is to use a hash table as a cache and forget to remove the references in the hash table. Since the reference remains, the referent is noncollectable but useless. This is called a memory leak. You should look for and fix memory leaks early. If you have long running systems memory may never be exhausted in testing but will be exhausted by the user.&lt;br /&gt;
The creation of new objects is moderately expensive on any system. Memory allocated directly in the local variables of a subroutine, however, is usually cheap because the policy for freeing it can be very simple. You should avoid unnecessary object creation.&lt;br /&gt;
An important case occurs when you can define an upper bound on the number of objects you will need at one time. If these objects all take up the same amount of memory, you may be able to allocate a single block of memory, or a buffer, to hold them all. The objects you need can be allocated and released inside this buffer in a set rotation pattern, so it is sometimes called a ring buffer. This is usually faster than heap allocation.&lt;br /&gt;
Sometimes you have to explicitly free allocated space so it can be reallocated rather than rely on garbage collection. Then you must apply careful intelligence to each chunk of allocated memory and design a way for it to be deallocated at the appropriate time. The method may differ for each kind of object you create. You must make sure that every execution of a memory allocating operation is matched by a memory deallocating operation eventually. This is so difficult that programmers often simply implement a rudimentary form or garbage collection, such as reference counting, to do this for them.&lt;br /&gt;
How to Deal with Intermittent Bugs&lt;br /&gt;
The intermittent bug is a cousin of the 50-foot-invisible-scorpion-from-outer-space kind of bug. This nightmare occurs so rarely that it is hard to observe, yet often enough that it can&#39;t be ignored. You can&#39;t debug because you can&#39;t find it.&lt;br /&gt;
Although after 8 hours you will start to doubt it, the intermittent bug has to obey the same laws of logic everything else does. What makes it hard is that it occurs only under unknown conditions. Try to record the circumstances under which the bug does occur, so that you can guess at what the variability really is. The condition may be related to data values, such as ‘This only happens when we enter Wyoming as a value.’ If that is not the source of variability, the next suspect should be improperly synchronized concurrency.&lt;br /&gt;
Try, try, try to reproduce the bug in a controlled way. If you can&#39;t reproduce it, set a trap for it by building a logging system, a special one if you have to, that can log what you guess you need when it really does occur. Resign yourself to that if the bug only occurs in production and not at your whim, this is may be a long process. The hints that you get from the log may not provide the solution but may give you enough information to improve the logging. The improved logging system may take a long time to be put into production. Then, you have to wait for the bug to reoccur to get more information. This cycle can go on for some time.&lt;br /&gt;
The stupidest intermittent bug I ever created was in a multi-threaded implementation of a functional programming language for a class project. I had very carefully insured correct concurrent evaluation of the functional program, good utilization of all the CPUs available (eight, in this case). I simply forgot to synchronize the garbage collector. The system could run a long time, often finishing whatever task I began, before anything noticeable went wrong. I&#39;m ashamed to admit I had begun to question the hardware before my mistake dawned on me.&lt;br /&gt;
At work we recently had an intermittent bug that took us several weeks to find. We have multi-threaded application servers in Java™ behind Apache™ web servers. To maintain fast page turns, we do all I/O in small set of four separate threads that are different than the page-turning threads. Every once in a while these would apparently get ‘stuck’ and cease doing anything useful, so far as our logging allowed us to tell, for hours. Since we had four threads, this was not in itself a giant problem---unless all four got stuck. Then the queues emptied by these threads would quickly fill up all available memory and crash our server. It took us about a week to figure this much out, and we still didn&#39;t know what caused it, when it would happen, or even what the threads where doing when they got ‘stuck’.&lt;br /&gt;
This illustrates some risk associated with third-party software. We were using a licensed piece of code that removed HTML tags from text. Due to its place of origin we affectionately referred to this as ‘the French stripper.’ Although we had the source code (thank goodness!) we had not studied it carefully until by turning up the logging on our servers we finally realized that the email threads were getting stuck in the French stripper.&lt;br /&gt;
The stripper performed well except on some long and unusual kinds of texts. On these texts, the code was quadratic or worse. This means that the processing time was proportional to the square of the length of the text. Had these texts occurred commonly, we would have found the bug right away. If they had never occurred at all, we would never have had a problem. As it happens, it took us weeks to finally understand and resolve the problem.&lt;br /&gt;
How to Learn Design Skills&lt;br /&gt;
To learn how to design software, study the action of a mentor by being physically present when they are designing. Then study well-written pieces of software. After that, you can read some books on the latest design techniques.&lt;br /&gt;
Then you must do it yourself. Start with a small project. When you are finally done, consider how the design failed or succeeded and how you diverged from your original conception. They move on to larger projects, hopefully in conjunction with other people. Design is a matter of judgment that takes years to acquire. A smart programmer can learn the basics adequately in two months and can improve from there.&lt;br /&gt;
It is natural and helpful to develop your own style, but remember that design is an art, not a science. People who write books on the subject have a vested interest in making it seem scientific. Don&#39;t become dogmatic about particular design styles.&lt;br /&gt;
How to Conduct Experiments&lt;br /&gt;
The late, great Edsger Dijkstra has eloquently explained that Computer Science is not an experimental science[ExpCS] and doesn&#39;t depend on electronic computers. As he puts it referring to the 1960s[Knife],&lt;br /&gt;
...the harm was done: the topic became known as “computer science”---which, actually, is like referring to surgery as “knife science” --- and it was firmly implanted in people&#39;s minds that computing science is about machines and their peripheral equipment.&lt;br /&gt;
Programming ought not to be an experimental science, but most working programmers do not have the luxury of engaging in what Dijkstra means by computing science. We must work in the realm of experimentation, just as some, but not all, physicists do. If thirty years from now programming can be performed without experimentation, it will be a great accomplishment of Computer Science.&lt;br /&gt;
The kinds of experiments you will have to perform include:&lt;br /&gt;
• Testing systems with small examples to verify that they conform to the documentation or to understand their response when there is no documentation,&lt;br /&gt;
• Testing small code changes to see if they actually fix a bug,&lt;br /&gt;
• Measuring the performance of a system under two different conditions due to imperfect knowledge of there performance characteristics,&lt;br /&gt;
• Checking the integrity of data, and&lt;br /&gt;
• Collecting statistics that may hint at the solution to difficult or hard-to-repeat bugs.&lt;br /&gt;
I don&#39;t think in this essay I can explain the design of experiments; you will have to study and practice. However, I can offer two bits of advice.&lt;br /&gt;
First, try to be very clear about your hypothesis, or the assertion that you are trying to test. It also helps to write the hypothesis down, especially if you find yourself confused or are working with others.&lt;br /&gt;
You will often find yourself having to design a series of experiments, each of which is based on the knowledge gained from the last experiment. Therefore, you should design your experiments to provide the most information possible. Unfortunately, this is in tension with keeping each experiment simple---you will have to develop this judgment through experience.&lt;br /&gt;
Team Skills&lt;br /&gt;
Why Estimation is Important&lt;br /&gt;
To get a working software system in active use as quickly as possible requires not only planning the development, but also planning the documentation, deployment, marketing. In a commercial project it also requires sales and finance. Without predictability of the development time, it is impossible to plan these effectively.&lt;br /&gt;
Good estimation provides predictability. Managers love it, as well they should. The fact that it is impossible, both theoretically and practically, to predict accurately how long it will take to develop software is often lost on managers. We are asked to do this impossible thing all the time, and we must face up to it honestly. However, it would be dishonest not to admit the impossibility of this task, and when necessary, explain it. There is a lot of room for miscommunication about estimates, as people have a startling tendency to think wishfully that the sentence:&lt;br /&gt;
I estimate that, if I really understand the problem, it is about 50% likely that we will be done in five weeks (if no one bothers us during that time).&lt;br /&gt;
really means:&lt;br /&gt;
I promise to have it all done five weeks from now.&lt;br /&gt;
This common interpretation problem requires that you explicitly discuss what the estimate means with your boss or customer as if they were a simpleton. Restate your assumptions, no matter how obvious they seem to you.&lt;br /&gt;
How to Estimate Programming Time&lt;br /&gt;
Estimation takes practice. It also takes labor. It takes so much labor it may be a good idea to estimate the time it will take to make the estimate, especially if you are asked to estimate something big.&lt;br /&gt;
When asked to provide an estimate of something big, the most honest thing to do is to stall. Most engineers are enthusiastic and eager to please, and stalling certainly will displease the stalled. But an on-the-spot estimate probably won&#39;t be accurate and honest.&lt;br /&gt;
While stalling, it may be possible to consider doing or prototyping the task. If political pressure permits, this is the most accurate way of producing the estimate, and it makes real progress.&lt;br /&gt;
When not possible to take the time for some investigation, you should first establish the meaning of the estimate very clearly. Restate that meaning as the first and last part of your written estimate. Prepare a written estimate by deconstructing the task into progressively smaller subtasks until each small task is no more than a day; ideally at most in length. The most important thing is not to leave anything out. For instance, documentation, testing, time for planning, time for communicating with other groups, and vacation time are all very important. If you spend part of each day dealing with knuckleheads, put a line item for that in the estimate. This gives your boss visibility into what is using up your time at a minimum, and might get you more time.&lt;br /&gt;
I know good engineers who pad estimates implicitly, but I recommend that you do not. One of the results of padding is trust in you may be depleted. For instance, an engineer might estimate three days for a task that she truly thinks will take one day. The engineer may plan to spend two days documenting it, or two days working on some other useful project. But it will be detectable that the task was done in only one day (if it turns out that way), and the appearance of slacking or overestimating is born. It&#39;s far better to give proper visibility into what you are actually doing. If documentation takes twice as long as coding and the estimate says so, tremendous advantage is gained by making this visible to the manager.&lt;br /&gt;
Pad explicitly instead. If a task will probably take one day---but might take ten days if your approach doesn&#39;t work---note this somehow in the estimate if you can; if not, at least do an average weighted by your estimates of the probabilities. Any risk factor that you can identify and assign an estimate to should go into the schedule. One person is unlikely to be sick in any given week. But a large project with many engineers will have some sick time; likewise vacation time. And what is the probability of a mandatory company-wide training seminar? If it can be estimated, stick it in. There are of course, unknown unknowns, or unk-unks. Unk-unks by definition cannot be estimated individually. You can try to create a global line item for all unk-unks, or handle them in some other way that you communicate to your boss. You cannot, however, let your boss forget that they exist, and it is devilishly easy for an estimate to become a schedule without the unk-unks considered.&lt;br /&gt;
In a team environment, you should try to have the people who will do the work do the estimate, and you should try to have team-wide consensus on estimates. People vary widely in skill, experience, preparedness, and confidence. Calamity strikes when a strong programmer estimates for herself and then weak programmers are held to this estimate. The act of having the whole team agree on a line-by-line basis to the estimate clarifies the team understanding, as well as allowing the opportunity for tactical reassignment of resources (for instance, shifting burden away from weaker team members to stronger).&lt;br /&gt;
If there are big risks that cannot be evaluated, it is your duty to state so forcefully enough that your manager does not commit to them and then become embarrassed when the risk occurs. Hopefully in such a case whatever is needed will be done to decrease the risk.&lt;br /&gt;
If you can convince your company to use Extreme Programming, you will only have to estimate relatively small things, and this is both more fun and more productive.&lt;br /&gt;
How to Find Out Information&lt;br /&gt;
The nature of what you need to know determines how you should find it.&lt;br /&gt;
If you need information about concrete things that are objective and easy to verify, for example the latest patch level of a software product, ask a large number of people politely by searching the internet for it or by posting on a discussion group. Don&#39;t search on the internet for anything that smacks of either opinion or subjective interpretation: the ratio of drivel to truth is too high.&lt;br /&gt;
If you need general knowledge about something subjective the history of what people have thought about it, go to the library (the physical building in which books are stored). For example, to learn about math or mushrooms or mysticism, go to the library.&lt;br /&gt;
If you need to know how to do something that is not trivial get two or three books on the subject and read them. You might learn how to do something trivial, like install a software package, from the Internet. You can even learn important things, like good programming technique, but you can easily spend more time searching and sorting the results and attempting to divine the authority of the results than it would take to read the pertinent part of a solid book.&lt;br /&gt;
If you need information that no one else could be expected to know for example, ‘does this software that is brand new work on gigantic data sets?’, you must still search the internet and the library. After those options are completely exhausted, you may design an experiment to ascertain it.&lt;br /&gt;
If you want an opinion or a value judgment that takes into account some unique circumstance, talk to an expert. For instance, if you want to know whether or not it is a good idea to build a modern database management system in LISP, you should talk to a LISP expert and a database expert.&lt;br /&gt;
If you want to know how likely it is that a faster algorithm for a particular application exists that has not yet been published, talk to someone working in that field.&lt;br /&gt;
If you want to make a personal decision that only you can make like whether or not you should start a business, try putting into writing a list of arguments for and against the idea. If that fails, consider divination. Suppose you have studied the idea from all angles, have done all your homework, and worked out all the consequences and pros and cons in your mind, and yet still remain indecisive. You now must follow your heart and tell your brain to shut up. The multitude of available divination techniques are very useful for determining your own semi-conscious desires, as they each present a complete ambiguous and random pattern that your own subconscious will assign meaning to.&lt;br /&gt;
How to Utilize People as Information Sources&lt;br /&gt;
Respect every person&#39;s time and balance it against your own. Asking someone a question accomplishes far more than just receiving the answer. The person learns about you, both by enjoying your presence and hearing the particular question. You learn about the person in the same way, and you may learn the answer you seek. This is usually far more important than your question.&lt;br /&gt;
However, the value of this diminishes the more you do it. You are, after all, using the most precious commodity a person has: their time. The benefits of communication must be weighed against the costs. Furthermore, the particular costs and benefits derived differ from person to person. I strongly believe that an executive of 100 people should spend five minutes a month talking to each person in her organization, which would be about 5% of their time. But ten minutes might be too much, and five minutes is too much if they have one thousand employees. The amount of time you spend talking to each person in your organization depends on their role (more than their position). You should talk to your boss more than your boss&#39;s boss, but you should talk to your boss&#39;s boss a little. It may be uncomfortable, but I believe you have a duty to talk a little bit to all your superiors, each month, no matter what.&lt;br /&gt;
The basic rule is that everyone benefits from talking to you a little bit, and the more they talk to you, the less benefit they derive. It is your job to provide them this benefit, and to get the benefit of communicating with them, keeping the benefit in balance with the time spent.&lt;br /&gt;
It is important to respect your own time. If talking to someone, even if it will cost them time, will save you a great deal of time, then you should do it unless you think their time is more valuable than yours, to the tribe, by that factor.&lt;br /&gt;
A strange example of this is the summer intern. A summer intern in a highly technical position can&#39;t be expected to accomplish too much; they can be expected to pester the hell out of everybody there. So why is this tolerated? Because the pestered are receiving something important from the intern. They get a chance to showoff a little. They get a chance to hear some new ideas, maybe; they get a chance to see things from a different perspective. They may also be trying to recruit the intern, but even if this is not the case there is much to gain.&lt;br /&gt;
You should ask people for a little bit of their wisdom and judgment whenever you honestly believe they have something to say. This flatters them and you will learn something and teach them something. A good programmer does not often need the advice of a Vice President of Sales, but if you ever do, you be sure to ask for it. I once asked to listen in on a few sales calls to better understand the job of our sales staff. This took no more than 30 minutes but I think that small effort made an impression on the sales force.&lt;br /&gt;
How to Document Wisely&lt;br /&gt;
Life is too short to write crap nobody will read; if you write crap, nobody will read it. Therefore a little good documentation is best. Managers often don&#39;t understand this, because even bad documentation gives them a false sense of security that they are not dependent on their programmers. If someone absolutely insists that you write truly useless documentation, say ``yes&#39;&#39; and quietly begin looking for a better job.&lt;br /&gt;
There&#39;s nothing quite as effective as putting an accurate estimate of the amount of time it will take to produce good documentation into an estimate to slacken the demand for documentation. The truth is cold and hard: documentation, like testing, can take many times longer than developing code.&lt;br /&gt;
Writing good documentation is, first of all, good writing. I suggest you find books on writing, study them, and practice. But even if you are a lousy writer or have poor command of the language in which you must document, the Golden Rule is all you really need: ``Do unto others as you would have them do unto you.&#39;&#39; Take time to really think about who will be reading your documentation, what they need to get out of it, and how you can teach that to them. If you do that, you will be an above average documentation writer, and a good programmer.&lt;br /&gt;
When it comes to actually documenting code itself, as opposed to producing documents that can actually be read by non-programmers, the best programmers I&#39;ve ever known hold a universal sentiment: write self-explanatory code and only document code in the places that you cannot make it clear by writing the code itself. There are two good reasons for this. First, anyone who needs to see code-level documentation will in most cases be able to and prefer to read the code anyway. Admittedly, this seems easier to the experienced programmer than to the beginner. More importantly however, is that the code and the documentation cannot be inconsistent if there is no documentation. The source code can at worst be wrong and confusing. The documentation, if not written perfectly, can lie, and that is a thousand times worse.&lt;br /&gt;
This does not make it easier on the responsible programmer. How does one write self-explanatory code? What does that even mean? It means:&lt;br /&gt;
• Writing code knowing that someone will have to read it;&lt;br /&gt;
• Applying the golden rule;&lt;br /&gt;
• Choosing a solution that is straightforward, even if you could get by with another solution faster;&lt;br /&gt;
• Sacrificing small optimizations that obfuscate the code;&lt;br /&gt;
• Thinking about the reader and spending some of your precious time to make it easier on her; and&lt;br /&gt;
• Not ever using a function name like ``foo&#39;&#39;,``bar&#39;&#39;, or ``doIt&#39;&#39;!&lt;br /&gt;
How to Work with Poor Code&lt;br /&gt;
It is very common to have to work with poor quality code that someone else has written. Don&#39;t think too poorly of them, however, until you have walked in their shoes. They may have been asked very consciously to get something done quickly to meet schedule pressure. Regardless, in order to work with unclear code you must understand it. To understand it takes learning time, and that time will have to come out of some schedule, somewhere, and you must insist on it. To understand it, you will have to read the source code. You will probably have to experiment with it.&lt;br /&gt;
This is a good time to document, even if it is only for yourself, because the act of trying to document the code will force you to consider angles you might not have considered, and the resulting document may be useful. While you&#39;re doing this, consider what it would take to rewrite some or all of the code. Would it actually save time to rewrite some of it? Could you trust it better if you rewrote it? Be careful of arrogance here. If you rewrite it, it will be easier for you to deal with, but will it really be easier for the next person who has to read it? If you rewrite it, what will the test burden be? Will the need to re-test it outweigh any benefits that might be gained?&lt;br /&gt;
In any estimate that you make for work against code you didn&#39;t write, the quality of that code should affect your perception of the risk of problems and unk-unks.&lt;br /&gt;
It is important to remember that abstraction and encapsulation, two of a programmer&#39;s best tools, are particularly applicable to lousy code. You may not be able to redesign a large block of code, but if you can add a certain amount of abstraction to it you can obtain some of the benefits of a good design without reworking the whole mess. In particular, you can try to wall off the parts that are particularly bad so that they may be redesigned independently.&lt;br /&gt;
How to Use Source Code Control&lt;br /&gt;
Source code control systems let you manage projects effectively. They&#39;re very useful for one person and essential for a group. They track all changes in different versions so that no code is ever lost and meaning can be assigned to changes. One can create throw-away and debugging code with confidence with a source code control system, since the code you modify is kept carefully separate from committed, official code that will be shared with the team or released.&lt;br /&gt;
I was late to appreciate the benefits of source code control systems but now I wouldn&#39;t live without one even on a one-person project. Generally they are necessary when you have team working on the same code base. However, they have another great advantage: they encourage thinking about the code as a growing, organic system. Since each change is marked as a new revision with a new name or number, one begins to think of the software as a visibly progressive series of improvements. I think this is especially useful for beginners.&lt;br /&gt;
A good technique for using a source code control system is to stay within a few days of being up-to-date at all time. Code that can&#39;t be finished in a few days is checked in, but in a way that it is inactive and will not be called, and therefore not create any problems for anybody else. Committing a mistake that slows down your teammates is a serious error; it is often taboo.&lt;br /&gt;
How to Unit Test&lt;br /&gt;
Unit testing, the testing of an individual piece of coded functionality by the team that wrote it, is a part of coding, not something different from it. Part of designing the code is designing how it will be tested. You should write down a test plan, even if it is only one sentence. Sometimes the test will be simple: ``Does the button look good?&#39;&#39; Sometimes it will be complex: ``Did this matching algorithm return precisely the correct matches?&#39;&#39;&lt;br /&gt;
Use assertion checking and test drivers whenever possible. This not only catches bugs early, but is very useful later on and lets you eliminate mysteries that you would otherwise have to worry about.&lt;br /&gt;
The Extreme Programming developers are writing extensively on unit testing effectively; I can do no better than to recommend their writings.&lt;br /&gt;
Take Breaks when Stumped&lt;br /&gt;
When stumped, take a break. I sometimes meditate for 15 minutes when stumped and the problem magically unravels when I come back to it. A night&#39;s sleep sometimes does the same thing on a larger scale. It&#39;s possible that temporarily switching to any other activity may work.&lt;br /&gt;
How to Recognize When to Go Home&lt;br /&gt;
Computer programming is an activity that is also a culture. The unfortunate fact is that it is not a culture that values mental or physical health very much. For both cultural/historical reasons (the need to work at night on unloaded computers, for example) and because of overwhelming time-to-market pressure and the scarcity of programmers, computer programmers are traditionally overworked. I don&#39;t think you can trust all the stories you hear, but I think 60 hours a week is common, and 50 is pretty much a minimum. This means that often much more than that is required. This is serious problem for a good programmer, who is responsible not only for themselves but their teammates as well. You have to recognize when to go home, and sometimes when to suggest that other people go home. There can&#39;t be any fixed rules for solving this problem, anymore than there can be fixed rules for raising a child, for the same reason---every human being is different.&lt;br /&gt;
Beyond 60 hours a week is an extraordinary effort for me, which I can apply for short periods of time (about one week), and that is sometimes expected of me. I don&#39;t know if it is fair to expect 60 hours of work from a person; I don&#39;t even know if 40 is fair. I am sure, however, that it is stupid to work so much that you are getting little out of that extra hour you work. For me personally, that&#39;s any more than 60 hours a week. I personally think a programmer should exercise noblesse oblige and shoulder a heavy burden. However, it is not a programmer&#39;s duty to be a patsy. The sad fact is programmers are often asked to be patsies in order to put on a show for somebody, for example a manager trying to impress an executive. Programmers often succumb to this because they are eager to please and not very good at saying no. There are four defenses against this:&lt;br /&gt;
• Communicate as much as possible with everyone in the company so that no one can mislead the executives about what is going on,&lt;br /&gt;
• Learn to estimate and schedule defensively and explicitly and give everyone visibility into what the schedule is and where it stands,&lt;br /&gt;
• Learn to say no, and say no as a team when necessary, and&lt;br /&gt;
• Quit if you have to.&lt;br /&gt;
Most programmers are good programmers, and good programmers want to get a lot done. To do that, they have to manage their time effectively. There is a certain amount of mental inertia associated with getting warmed-up to a problem and deeply involved in it. Many programmers find they work best when they have long, uninterrupted blocks of time in which to get warmed-up and concentrate. However, people must sleep and perform other duties. Each person needs to find a way to satisfy both their human rhythm and their work rhythm. Each programmer needs to do whatever it takes to procure efficient work periods, such as reserving certain days in which you will attend only the most critical meetings.&lt;br /&gt;
Since I have children, I try to spend evenings with them sometimes. The rhythm that works best for me is to work a very long day, sleep in the office or near the office (I have a long commute from home to work) then go home early enough the next day to spend time with my children before they go to bed. I am not comfortable with this, but it is the best compromise I have been able to work out. Go home if you have a contagious disease. You should go home if you are thinking suicidal thoughts. You should take a break or go home if you think homicidal thoughts for more than a few seconds. You should send someone home if they show serious mental malfunctioning or signs of mental illness beyond mild depression. If you are tempted to be dishonest or deceptive in a way that you normally are not due to fatigue, you should take a break. Don&#39;t use cocaine or amphetamines to combat fatigue. Don&#39;t abuse caffeine.&lt;br /&gt;
How to Deal with Difficult People&lt;br /&gt;
You will probably have to deal with difficult people. You may even be a difficult person yourself. If you are the kind of person who has a lot of conflicts with coworkers and authority figures, you should cherish the independence this implies, but work on your interpersonal skills without sacrificing your intelligence or principles.&lt;br /&gt;
This can be very disturbing to some programmers who have no experience in this sort of thing and whose previous life experience has taught them patterns of behavior that are not useful in the workplace. Difficult people are often inured to disagreement and they are less affected by social pressure to compromise than others. The key is to respect them appropriately, which is more than you will want to but not as much as they might want.&lt;br /&gt;
Programmers have to work together as a team. When disagreement arises, it must be resolved somehow, it cannot be ducked for long. Difficult people are often extremely intelligent and have something very useful to say. It is critical that you listen and understand the difficult person without prejudice caused by the person. A failure to communicate is often the basis of disagreement but it can sometimes be removed with great patience. Try to keep this communication cool and cordial, and don&#39;t accept any baits for greater conflict that may be offered. After a reasonable period of trying to understand, make a decision.&lt;br /&gt;
Don&#39;t let a bully force you to do something you don&#39;t agree with. If you are the leader, do what you think is best. Don&#39;t make a decision for any personal reasons, and be prepared to explain the reasons for your decision. If you are a teammate with a difficult person, don&#39;t let the leader&#39;s decision have any personal impact. If it doesn&#39;t go your way, do it the other way whole-heartedly.&lt;br /&gt;
Difficult people do change and improve. I&#39;ve seen it with my own eyes, but it is very rare. However, everyone has transitory ups and downs.&lt;br /&gt;
One of the challenges that every programmer but especially leaders face is keeping the difficult person fully engaged. They are more prone to duck work and resist passively than others.&lt;br /&gt;
Chapter�3.�Intermediate&lt;br /&gt;
Table of Contents&lt;br /&gt;
Personal Skills&lt;br /&gt;
How to Stay Motivated&lt;br /&gt;
How to be Widely Trusted&lt;br /&gt;
How to Tradeoff Time vs. Space&lt;br /&gt;
How to Stress Test&lt;br /&gt;
How to Balance Brevity and Abstraction&lt;br /&gt;
How to Learn New Skills&lt;br /&gt;
Learn to Type&lt;br /&gt;
How to Do Integration Testing&lt;br /&gt;
Communication Languages&lt;br /&gt;
Heavy Tools&lt;br /&gt;
How to analyze data&lt;br /&gt;
Team Skills&lt;br /&gt;
How to Manage Development Time&lt;br /&gt;
How to Manage Third-Party Software Risks&lt;br /&gt;
How to Manage Consultants&lt;br /&gt;
How to Communicate the Right Amount&lt;br /&gt;
How to Disagree Honestly and Get Away with It&lt;br /&gt;
Judgement&lt;br /&gt;
How to Tradeoff Quality Against Development Time&lt;br /&gt;
How to Manage Software System Dependence&lt;br /&gt;
How to Decide if Software is Too Immature&lt;br /&gt;
How to Make a Buy vs. Build Decision&lt;br /&gt;
How to Grow Professionally&lt;br /&gt;
How to Evaluate Interviewees&lt;br /&gt;
How to Know When to Apply Fancy Computer Science&lt;br /&gt;
How to Talk to Non-Engineers&lt;br /&gt;
Personal Skills&lt;br /&gt;
How to Stay Motivated&lt;br /&gt;
It is a wonderful and surprising fact that programmers are highly motivated by the desire to create artifacts that are beautiful, useful, or nifty. This desire is not unique to programmers nor universal but it is so strong and common among programmers that it separates them from others in other roles.&lt;br /&gt;
This has practical and important consequences. If programmers are asked to do something that is not beautiful, useful, or nifty, they will have low morale. There&#39;s a lot of money to be made doing ugly, stupid, and boring stuff; but in the end, fun will make the most money for the company.&lt;br /&gt;
Obviously, there are entire industries organized around motivational techniques some of which apply here. The things that are specific to programming that I can identify are:&lt;br /&gt;
• Use the best language for the job.&lt;br /&gt;
• Look for opportunities to apply new techniques, languages, and technologies.&lt;br /&gt;
• Try to either learn or teach something, however small, in each project.&lt;br /&gt;
Finally, if possible, measure the impact of your work in terms of something that will be personally motivating. For example, when fixing bugs, counting the number of bugs that I have fixed is not at all motivational to me, because it is independent of the number that may still exist, and is also affects the total value I&#39;m adding to my company&#39;s customers in only the smallest possible way. Relating each bug to a happy customer, however, ispersonally motivating to me.&lt;br /&gt;
How to be Widely Trusted&lt;br /&gt;
To be trusted you must be trustworthy. You must also be visible. If know one knows about you, no trust will be invested in you. With those close to you, such as your teammates, this should not be an issue. You establish trust by being responsive and informative to those outside your department or team. Occasionally someone will abuse this trust, and ask for unreasonable favors. Don&#39;t be afraid of this, just explain what you would have to give up doing to perform the favor.&lt;br /&gt;
Don&#39;t pretend to know something that you don&#39;t. With people that are not teammates, you may have to make a clear distinction between ``not knowing right off the top of my head&#39;&#39; and ``not being able to figure it out, ever.&#39;&#39;&lt;br /&gt;
How to Tradeoff Time vs. Space&lt;br /&gt;
You can be a good programmer without going to college, but you can&#39;t be a good intermediate programmer without knowing basic computational complexity theory. You don&#39;t need to know ``big O&#39;&#39; notation, but I personally think you should be able to understand the difference between ``constant-time&#39;&#39;,``n log n&#39;&#39; and ``n squared&#39;&#39;. You might be able to intuit how to tradeoff time against space without this knowledge, but in its absence you will not have a firm basis for communicating with your colleagues.&lt;br /&gt;
In designing or understanding an algorithm, the amount of time it takes to run is sometimes a function of the size of the input. When that is true, we can say an algorithm&#39;s worst/expected/best-case running time is ``n log n&#39;&#39; if it is proportional to the size ($n$) times the logarithm of the size. The notation and way of speaking can be also be applied to the space taken up by a data structure.&lt;br /&gt;
To me, computational complexity theory is beautiful and as profound as physics---and a little bit goes a long way!&lt;br /&gt;
Time (processor cycles) and space (memory) can be traded off against each other. Engineering is about compromise, and this is a fine example. It is not always systematic. In general, however, one can save space by encoding things more tightly, at the expense of more computation time when you have to decode them. You can save time by caching, that is, spending space to store a local copy of something, at the expense of having to maintain the consistency of the cache. You can sometimes save time by maintaining more information in a data structure. This usually cost a small amount of space but may complicate the algorithm.&lt;br /&gt;
Improving the space/time tradeoff can often change one or the other dramatically. However, before you work on this you should ask yourself if what you are improving is really the thing that needs the most improvement. It&#39;s fun to work on an algorithm, but you can&#39;t let that blind you to the cold hard fact that improving something that is not a problem will not make any noticeable difference and will create a test burden.&lt;br /&gt;
Memory on modern computers appears cheap, because unlike processor time, you can&#39;t see it being used until you hit the wall; but then failure is catastrophic. There are also other hidden costs to using memory, such as your effect on other programs that must be resident, and the time to allocate and deallocate it. Consider this carefully before you trade away space to gain speed.&lt;br /&gt;
How to Stress Test&lt;br /&gt;
Stress testing is fun. At first it appears that the purpose of stress testing is to find out if the system works under a load. In reality, it is common that the system does work under a load but fails to work in some way when the load is heavy enough. I call this hitting the wall or bonking[1]. There may be some exceptions, but there is almost always a ‘wall’. The purpose of stress testing is to figure out where the wall is, and then figure out how to move the wall further out.&lt;br /&gt;
A plan for stress testing should be developed early in the project, because it often helps to clarify exactly what is expected. Is two seconds for a web page request a miserable failure or a smashing success? Is 500 concurrent users enough? That, of course, depends, but one must know the answer when designing the system that answers the request. The stress test needs to model reality well enough to be useful. It isn&#39;t really possible to simulate 500 erratic and unpredictable humans using a system concurrently very easily, but one can at least create 500 simulations and try to model some part of what they might do.&lt;br /&gt;
In stress testing, start out with a light load and load the system along some dimension---such as input rate or input size---until you hit the wall. If the wall is too close to satisfy your needs, figure out which resource is the bottleneck (there is usually a dominant one.) Is it memory, processor, I/O, network bandwidth, or data contention? Then figure out how you can move the wall. Note that moving the wall, that is, increasing the maximum load the system can handle, might not help or might actually hurt the performance of a lightly loaded system. Usually performance under heavy load is more important than performance under a light load.&lt;br /&gt;
You may have to get visibility into several different dimensions to build up a mental model of it; no single technique is sufficient. For instance, logging often gives a good idea of the wall-clock time between two events in the system, but unless carefully constructed, doesn&#39;t give visibility into memory utilization or even data structure size. Similarly, in a modern system, a number of computers and many software systems may be cooperating. Particularly when you are hitting the wall (that is, the performance is non-linear in the size of the input) these other software systems may be a bottleneck. Visibility into these systems, even if only measuring the processor load on all participating machines, can be very helpful.&lt;br /&gt;
Knowing where the wall is is essential not only to moving the wall, but also to providing predictability so that the business can be managed effectively.&lt;br /&gt;
How to Balance Brevity and Abstraction&lt;br /&gt;
Abstraction is key to programming. You should carefully choose how abstract you need to be. Beginning programmers in their enthusiasm often create more abstraction than is really useful. One sign of this is if you create classes that don&#39;t really contain any code and don&#39;t really do anything except serve to abstract something. The attraction of this is understandable but the value of code brevity must be measured against the value of abstraction. Occasionally, one sees a mistake made by enthusiastic idealists: at the start of the project a lot of classes are defined that seem wonderfully abstract and one may speculate that they will handle every eventuality that may arise. As the project progresses and fatigue sets in, the code itself becomes messy. Function bodies become longer than they should be. The empty classes are a burden to document that is ignored when under pressure. The final result would have been better if the energy spent on abstraction had been spent on keeping things short and simple. This is a form of speculative programming. I strongly recommend the article ``Succinctness is Power&#39;&#39; by Paul Graham[PGSite].&lt;br /&gt;
There is a certain dogma associated with useful techniques such as information hiding and object oriented programming that are sometimes taken too far. These techniques let one code abstractly and anticipate change. I personally think, however, that you should not produce much speculative code. For example, it is an accepted style to hide an integer variable on an object behind mutators and accessors, so that the variable itself is not exposed, only the little interface to it. This does allow the implementation of that variable to be changed without affecting the calling code, and is perhaps appropriate to a library writer who must publish a very stable API. But I don&#39;t think the benefit of this outweighs the cost of the wordiness of it when my team owns the calling code and hence can recode the caller as easily as the called. Four or five extra lines of code is a heavy price to pay for this speculative benefit.&lt;br /&gt;
Portability poses a similar problem. Should code be portable to a different computer, compiler, software system or platform, or simply easily ported? I think a non-portable, short-and-easily-ported piece of code is better than a long portable one. It is relatively easy and certainly a good idea to confine non-portable code to designated areas, such as a class that makes database queries that are specific to a given DBMS.&lt;br /&gt;
How to Learn New Skills&lt;br /&gt;
Learning new skills, especially non-technical ones, is the greatest fun of all. Most companies would have better morale if they understood how much this motivates programmers.&lt;br /&gt;
Humans learn by doing. Book-reading and class-taking are useful. But could you have any respect for a programmer who had never written a program? To learn any skill, you have to put yourself in a forgiving position where you can exercise that skill. When learning a new programming language, try to do a small project it in before you have to do a large project. When learning to manage a software project, try to manage a small one first.&lt;br /&gt;
A good mentor is no replacement for doing things yourself, but is a lot better than a book. What can you offer a potential mentor in exchange for their knowledge? At a minimum, you should offer to study hard so their time won&#39;t be wasted.&lt;br /&gt;
Try to get your boss to let you have formal training, but understand that it often not much better than the same amount of time spent simply playing with the new skill you want to learn. It is, however, easier to ask for training than playtime in our imperfect world, even though a lot of formal training is just sleeping through lectures waiting for the dinner party.&lt;br /&gt;
If you lead people, understand how they learn and assist them by assigning them projects that are the right size and that exercise skills they are interested in. Don&#39;t forget that the most important skills for a programmer are not the technical ones. Give your people a chance to play and practice courage, honesty, and communication.&lt;br /&gt;
Learn to Type&lt;br /&gt;
Learn to touch-type. This is an intermediate skill because writing code is so hard that the speed at which you can type is irrelevant and can&#39;t put much of a dent in the time it takes to write code, no matter how good you are. However, by the time you are an intermediate programmer you will probably spend a lot of time writing natural language to your colleagues and others. This is a fun test of your commitment; it takes dedicated time that is not much fun to learn something like that. Legend has it that when Michael Tiemann[2] was at MCC people would stand outside his door to listen to the hum generated by his keystrokes which were so rapid as to be indistinguishable.&lt;br /&gt;
How to Do Integration Testing&lt;br /&gt;
Integration testing is the testing of the integration of various components that have been unit tested. Integration is expensive and it comes out in the testing. You must include time for this in your estimates and your schedule.&lt;br /&gt;
Ideally you should organize a project so that there is not a phase at the end where integration must explicitly take place. It is far better to gradually integrate things as they are completed over the course of the project. If it is unavoidable estimate it carefully.&lt;br /&gt;
Communication Languages&lt;br /&gt;
There are some languages, that is, formally defined syntactic systems, that are not programming languages but communication languages---they are designed specifically to facillitate communication through standardization. In 2003 the most important of these are UML, XML, and SQL. You should have some familiarity with all of these so that you can communicate well and decide when to use them.&lt;br /&gt;
UML is a rich formal system for making drawings that describe designs. It&#39;s beauty lines in that is both visual and formal, capable of conveying a great deal of information if both the author and the audience know UML. You need to know about it because designs are sometimes communicated in it. There are very helpful tools for making UML drawings that look very professional. In a lot of cases UML is too formal, and I find myself using a simpler boxes and arrows style for design drawings. But I&#39;m fairly sure UML is at least as good for you as studying Latin.&lt;br /&gt;
XML is a standard for defining new standards. It is not a solution to data interchange problems, though you sometimes see it presented as if it was. Rather, it is a welcome automation of the most boring part of data interchange, namely, structuring the representation into a linear sequence and parsing back into a structure. It provides some nice type- and correctness-checking, though again only a fraction of what you are likely to need in practicen.&lt;br /&gt;
SQL is a very powerful and rich data query and manipulation language that is not quite a programming language. It has many variations, typically quite product-dependent, which are less important than the standardized core. SQL is the lingua franca of relational databases. You may or may not work in any field that can benefit from an understanding of relational databases, but you should have a basic understanding of them and they syntax and meaning of SQL.&lt;br /&gt;
Heavy Tools&lt;br /&gt;
As our technological culture progresses, software technology moves from inconceivable, to research, to new products, to standardized products, to widely available and inexpensive products. These heavy tools can pull great loads, but can be intimidating and require a large investment in understanding. The intermediate programmer has to know how to manage them and when they should be used or considered.&lt;br /&gt;
To my mind right some of the best heavy tools are:&lt;br /&gt;
• Relational Databases,&lt;br /&gt;
• Full-text Search Engines,&lt;br /&gt;
• Math libraries,&lt;br /&gt;
• OpenGL,&lt;br /&gt;
• XML parsers, and&lt;br /&gt;
• Spreadsheets.&lt;br /&gt;
How to analyze data&lt;br /&gt;
--&lt;br /&gt;
Data analysis is a process in the early stages of software development, when you examine a business activity and find the requirements to convert it into a software application. This is a formal definition, which may lead you to believe that data analysis is an action that you should better leave to the systems analysts, while you, the programmer, should focus on coding what somebody else has designed. If we follow strictly the software engineering paradigm, it may be correct. Experienced programmers become designers and the sharpest designers become business analysts, thus being entitled to think about all the data requirements and give you a well defined task to carry out. This is not entirely accurate, because data is the core value of every programming activity. Whatever you do in your programs, you are either moving around or modifying data. The business analyst is analyzing the needs in a larger scale, and the software designer is further squeezing such scale so that, when the problem lands on your desk, it seems that all you need to do is to apply clever algorithms and start moving existing data.&lt;br /&gt;
Not so.&lt;br /&gt;
No matter at which stage you start looking at it, data is the main concern of a well designed application. If you look closely at how a business analyst gets the requirements out of the customer?s requests, you?ll realize that data plays a fundamental role. The analyst creates so called Data Flow Diagrams, where all data sources are identified and the flow of information is shaped. Having clearly defined which data should be part of the system, the designer will shape up the data sources, in terms of database relations, data exchange protocols, and file formats, so that the task is ready to be passed down to the programmer. However, the process is not over yet, because you ? the programmer ? even after this thorough process of data refinement, are required to analyze data to perform the task in the best possible way. The bottom line of your task is the core message of Niklaus Wirth, the father of several languages. ?Algorithms + Data Structures = Programs.? There is never an algorithm standing alone, doing something to itself. Every algorithm is supposed to do something to at least one piece of data.&lt;br /&gt;
Therefore, since algorithms don&#39;t spin their wheels in a vacuum, you need to analyze both the data that somebody else has identified for you and the data that is necessary to write down your code. A trivial example will make the matter clearer. You are implementing a search routine for a library. According to your specifications, the user can select books by a combination of genre, author, title, publisher, printing year, and number of pages. The ultimate goal of your routine is to produce a legal SQL statement to search the back-end database. Based on these requirements, you have several choices: check each control in turn, using a &quot;switch&quot; statement, or several &quot;if&quot; ones; make an array of data controls, checking each element to see if it is set; create (or use) an abstract control object from which inherit all your specific controls, and connect them to an event-driven engine. If your requirements include also tuning up the query performance, by making sure that the items are checked in a specific order, you may consider using a tree of components to build your SQL statement. As you can see, the choice of the algorithm depends on the data you decide to use, or to create. Such decisions can make all the difference between an efficient algorithm and a disastrous one. However, efficiency is not the only concern. You may use a dozen named variables in your code and make it as efficient as it can ever be. But such a piece of code might not be easily maintainable. Perhaps choosing an appropriate container for your variables could keep the same speed and in addition allow your colleagues to understand the code better when they look at it next year. Furthermore, choosing a well defined data structure may allow them to extend the functionality of your code without rewriting it. In the long run, your choices of data determines how long your code will survive after you are finished with it. Let me give you another example, just some more food for thought. Let&#39;s suppose that your task is to find all the words in a dictionary with more than three anagrams, where an anagram must be another word in the same dictionary. If you think of it as a computational task, you will end up with an endless effort, trying to work out all the combinations of each word and then comparing it to the other words in the list. However, if you analyze the data at hand, you&#39;ll realize that each word may be represented by a record containing the word itself and a sorted array of its letters as ID. Armed with such knowledge, finding anagrams means just sorting the list on the additional field and picking up the ones that share the same ID. The brute force algorithm may take several days to run, while the smart one is just a matter of a few seconds. Remember this example the next time you are facing an intractable problem.&lt;br /&gt;
Team Skills&lt;br /&gt;
How to Manage Development Time&lt;br /&gt;
To manage development time, maintain a concise and up-to-date project plan. A project plan is an estimate, a schedule, a set of milestones for marking progress, and an assignment of your team or your own time to each task on the estimate. It should also include other things you have to remember to do, such as meeting with the quality assurance people, preparing documentation, or ordering equipment. If you are on a team, the project plan should be a consensual agreement, both at the start and as you go.&lt;br /&gt;
The project plan exists to help make decisions, not to show how organized you are. If the project plan is either too long or not up-to-date, it will be useless for making decisions. In reality, these decisions are about individual persons. The plan and your judgment let you decide if you should shift tasks from one person to another. The milestones mark your progress. If you use a fancy project planning tool, do not be seduced into creating a Big Design Up Front (BDUF) for the project, but use it maintain concision and up-to-dateness.&lt;br /&gt;
If you miss a milestone, you should take immediate action such as informing your boss that the scheduled completion of that project has slipped by that amount. The estimate and schedule could never have been perfect to begin with; this creates the illusion that you might be able to make up the days you missed in the latter part of the project. You might. But it is just as likely that you have underestimated that part as that you have overestimated it. Therefore the scheduled completion of the project has already slipped, whether you like it or not.&lt;br /&gt;
Make sure you plan includes time for: internal team meetings, demos, documentation, scheduled periodic activities, integration testing, dealing with outsiders, sickness, vacations, maintenance of existing products, and maintenance of the development environment. The project plan can serve as a way to give outsiders or your boss a view into what you or your team is doing. For this reason it should be short and up-to-date.&lt;br /&gt;
How to Manage Third-Party Software Risks&lt;br /&gt;
A project often depends on software produced by organizations that it does not control. There are great risks associated with third party software that must be recognized by everyone involved.&lt;br /&gt;
Never, ever, rest any hopes on vapor. Vapor is any alleged software that has been promised but is not yet available. This is the surest way to go out of business. It is unwise to be merely skeptical of a software company&#39;s promise to release a certain product with a certain feature at a certain date; it is far wiser to ignore it completely and forget you ever heard it. Never let it be written down in any documents used by your company.&lt;br /&gt;
If third-party software is not vapor, it is still risky, but at least it is a risk that can be tackled. If you are considering using third-party software, you should devote energy early on to evaluating it. People might not like to hear that it will take two weeks or two months to evaluate each of three products for suitability, but it has to be done as early as possible. The cost of integrating cannot be accurately estimated without a proper evaluation.&lt;br /&gt;
Understanding the suitability of existing third party software for a particular purpose is very tribal knowledge. It is very subjective and generally resides in experts. You can save a lot of time if you can find those experts. Often times a project will depend on a third-party software system so completely that if the integration fails the project will fail. Express risks like that clearly in writing in the schedule. Try to have a contingency plan, such as another system that can be used or the ability to write the functionality yourself if the risk can&#39;t be removed early. Never let a schedule depend on vapor.&lt;br /&gt;
How to Manage Consultants&lt;br /&gt;
Use consultants, but don&#39;t rely on them. They are wonderful people and deserve a great deal of respect. Since they get to see a lot of different projects, they often know more about specific technologies and even programming techniques than you will. The best way to use them is as educators in-house that can teach by example.&lt;br /&gt;
However, they usually cannot become part of the team in the same sense that regular employees are, if only because you may not have enough time to learn their strengths and weaknesses. Their financial commitment is much lower. They can move more easily. They may have less to gain if the company does well. Some will be good, some will be average, and some will be bad, but hopefully your selection of consultants will not be as careful as your selection of employees, so you will get more bad ones.&lt;br /&gt;
If consultants are going to write code, you must review it carefully as you go along. You cannot get to the end of the a project with the risk of a large block of code that has not been reviewed. This is true of all team members, really, but you will usually have more knowledge of the team members closer to you.&lt;br /&gt;
How to Communicate the Right Amount&lt;br /&gt;
Carefully consider the cost of a meeting; it costs its duration multiplied by the number of participants. Meetings are sometimes necessary, but smaller is usually better. The quality of communication in small meetings is better, and less time overall is wasted. If any one person is bored at a meeting take this as a sing, that the meeting should be smaller.&lt;br /&gt;
Everything possible should be done to encourage informal communication. More useful work is done during lunches with colleagues than during any other time. It is a shame that more companies do not recognize nor support this fact.&lt;br /&gt;
How to Disagree Honestly and Get Away with It&lt;br /&gt;
Disagreement is a great opportunity to make a good decision, but it should be handled delicately. Hopefully you feel that you have expressed your thoughts adequately and been heard before the decision is made. In that case there is nothing more to say, and you should decide whether you will stand behind the decision even though you disagree with it. If you can support this decision even though you disagree, say so. This shows how valuable you are because you are independent and are not a yes-man, but respectful of the decision and a team player.&lt;br /&gt;
Sometimes a decision that you disagree with will be made when the decision makers did not have the full benefit of you opinion. You should then evaluate whether to raise the issue on the basis of the benefit to the company or tribe. If it is a small mistake in your opinion, it may not be worth reconsidering. If it is a large mistake in you opinion, then of course you must present an argument.&lt;br /&gt;
Usually, this is not a problem. In some stressful circumstances and with some personality types this can lead to things being taken personally. For instance, some very good programmers lack the confidence needed to challenge a decision even when they have good reason to believe it is wrong. In the worst of circumstances the decision maker is insecure and takes it as a personal challenge to their authority. It is best to remember that in such circumstances people react with the reptilian part of their brains. You should present your argument in private, and try to show how new knowledge changes the basis on which the decision was made.&lt;br /&gt;
Whether the decision is reversed or not, you must remember that you will never be able to say ‘I told you so!’ since the alternate decision was fully explored.&lt;br /&gt;
Judgement&lt;br /&gt;
How to Tradeoff Quality Against Development Time&lt;br /&gt;
Software development is always a compromise between what the project does and getting the project done. But you may be asked to tradeoff quality to speed the deployment of a project in a way that offends your engineering sensibilities or business sensibilities. For example, you may be asked to do something that is a poor software engineering practice and that will lead to a lot of maintenance problems.&lt;br /&gt;
If this happens your first responsibility is to inform your team and to clearly explain the cost of the decrease in quality. After all, your understanding of it should be much better than your boss&#39;s understanding. Make it clear what is being lost and what is being gained, and at what cost the lost ground will be regained in the next cycle. In this, the visibility provided by a good project plan should be helpful. If the quality tradeoff affects the quality assurance effort, point that out (both to your boss and quality assurance people). If the quality tradeoff will lead to more bugs being reported after the quality assurance period, point that out.&lt;br /&gt;
If she still insists you should try to isolate the shoddiness into particular components that you can plan to rewrite or improve in the next cycle. Explain this to your team so that they can plan for it.&lt;br /&gt;
NinjaProgrammer at Slashdot sent in this gem:&lt;br /&gt;
Remember that a good design will be resillient against poor code implementations. If good interfaces and abstractions exist throughout the code, then the eventual rewrites will be far more painless. If it is hard to write clear code that is hard to fix, consider what is wrong with the core design that is causing this.&lt;br /&gt;
How to Manage Software System Dependence&lt;br /&gt;
Modern software systems tend to depend on a large number of components that may not be directly under your control. This increases productivity through synergy and reuse. However, each component brings with it some problems:&lt;br /&gt;
• How will you fix bugs in the component?&lt;br /&gt;
• Does the component restrict you to particular hardware or software systems?&lt;br /&gt;
• What will you do if the component fails completely?&lt;br /&gt;
It is always best to encapsulate the component in some way so that it is isolated and so that it can be swapped out. If the component proves to be completely unworkable, you may be able to get a different one, but you may have to write your own. Encapsulation is not portability, but it makes porting easier, which is almost as good.&lt;br /&gt;
Having the source code for a component decreases the risk by a factor of four. With source code, you can evaluate it easier, debug it easier, find workarounds easier, and make fixes easier. If you make fixes, you should give them to the owner of the component and get the fixes incorporated into an official release; otherwise you will uncomfortably have to maintain an unofficial version .&lt;br /&gt;
How to Decide if Software is Too Immature&lt;br /&gt;
Using software other people wrote is one of the most effective ways to quickly build a solid system. It should not be discouraged, but the risks associated with it must be examined. One of the biggest risks is the period of bugginess and near inoperability that is often associated with software before it matures, through usage, into a usable product. Before you consider integrating with a software system, whether created in house or by a third party, it is very important to consider if it is really mature enough to be used. Here are ten questions you should ask yourself about it:&lt;br /&gt;
1. Is it vapor? (Promises are very immature).&lt;br /&gt;
2. Is there an accessible body of lore about the software?&lt;br /&gt;
3. Are you the first user?&lt;br /&gt;
4. Is there a strong incentive for continuation?&lt;br /&gt;
5. Has it had a maintenance effort?&lt;br /&gt;
6. Will it survive defection of the current maintainers?&lt;br /&gt;
7. Is there a seasoned alternative at least half as good?&lt;br /&gt;
8. Is it known to your tribe or company?&lt;br /&gt;
9. Is it desirable to your tribe or company?&lt;br /&gt;
10. Can you hire people to work on it even if it is bad?&lt;br /&gt;
A little consideration of these criteria demonstrates the great value of well-established free software and open-source software in reducing risk to the entrepreneur.&lt;br /&gt;
How to Make a Buy vs. Build Decision&lt;br /&gt;
An entrepreneurial company or project that is trying to accomplish something with software has to constantly make so-called buy vs. build decisions. This turn of phrase is unfortunate in two ways: it seems to ignore open-source and free software which is not necessarily bought. Even more importantly, it should perhaps be called an obtain and integrate vs. build here and integrate decision because the cost of integration must be considered. This requires a great combination of business, management, and engineering savvy.&lt;br /&gt;
• How well do your needs match those for which it was designed?&lt;br /&gt;
• What portion of what you buy will you need?&lt;br /&gt;
• What is the cost of evaluating the integration?&lt;br /&gt;
• What is the cost of integration?&lt;br /&gt;
• What is the cost of evaluating the integration?&lt;br /&gt;
• Will buying increase or decrease long term maintenance costs?&lt;br /&gt;
• Will building it put you in a business position you don&#39;t want to be in?&lt;br /&gt;
You should think twice before building something that is big enough to serve as the basis for an entire other business. Such ideas are often proposed by bright and optimistic people that will have a lot to contribute to your team. If their idea is compelling, you may wish to change your business plan; but do not invest in a solution bigger than your own business without conscious thought.&lt;br /&gt;
After considering these questions, you should perhaps prepare two draft project plans, one for building and one for buying. This will force you to consider the integration costs. You should also consider the long term maintenance costs of both solutions. To estimate the integration costs, you will have to do a thorough evaluation of the software before you buy it. If you can&#39;t evaluate it, you will assume an unreasonable risk in buying it and you should decide against buying that particular product. If there are several buy decisions under consideration, some energy will have to be spent evaluating each.&lt;br /&gt;
How to Grow Professionally&lt;br /&gt;
Assume responsibility in excess of your authority. Play the role that you desire. Express appreciation for people&#39;s contribution to the success of the larger organization, as well as things as that help you personally.&lt;br /&gt;
If you want to become a team leader, instigate the formation of consensus. If you want to become a manager, take responsibility for the schedule. You can usually do this comfortably while working with a leader or a manager, since this frees them up to take greater responsibility. If that is too much to try, do it a little at a time.&lt;br /&gt;
Evaluate yourself. If you want to become a better programmer, ask someone you admire how you can become like them. You can also ask your boss, who will know less but have a greater impact on your career.&lt;br /&gt;
Plan ways to learn new skills, both the trivial technical kind, like learning a new software system, and the hard social kind, like writing well, by integrating them into your work.&lt;br /&gt;
How to Evaluate Interviewees&lt;br /&gt;
Evaluating potential employees is not given the energy it deserves. A bad hire, like a bad marriage, is terrible. A significant portion of everyone&#39;s energy should be devoted to recruitment, though this is rarely done.&lt;br /&gt;
There are different interviewing styles. Some are torturous, designed to put the candidate under a great deal of stress. This serves a very valuable purpose of possibly revealing character flaws and weaknesses under stress. Candidates are no more honest with interviewers than they are with themselves, and the human capacity for self-deception is astonishing.&lt;br /&gt;
You should, at a minimum, give the candidate the equivalent of an oral examination on the technical skills for two hours. With practice, you will be able to quickly cover what they know and quickly retract from what they don&#39;t know to mark out the boundary. Interviewees will respect this. I have several times heard interviewees say that the quality of the examination was one of their motivations for choosing a company. Good people want to be hired for their skills, not where they worked last or what school they went to or some other inessential characteristic.&lt;br /&gt;
In doing this, you should also evaluate their ability to learn, which is far more important than what they know. You should also watch for the whiff of brimstone that is given off by difficult people. You may be able to recognize it by comparing notes after the interview, but in the heat of the interview it is hard to recognize. How well people communicate and work with people is more important than being up on the latest programming language.&lt;br /&gt;
A reader has had good luck using a ‘take-home’ test for interviewees. This has the advantage that can uncover the interviewee that can present themselves well but can&#39;t really code---and there are many such people. I personally have not tried this technique, but it sounds sensible.&lt;br /&gt;
Finally, interviewing is also a process of selling. You should be selling your company or project to the candidate. However, you are talking to a programmer, so don&#39;t try to color the truth. Start off with the bad stuff, then finish strong with the good stuff.&lt;br /&gt;
How to Know When to Apply Fancy Computer Science&lt;br /&gt;
There is a body of knowledge about algorithms, data structures, mathematics, and other gee-whiz stuff that most programmers know about but rarely use. In practice, this wonderful stuff is too complicated and generally unnecessary. There is no point in improving an algorithm when most of your time is spent making inefficient database calls, for instance. An unfortunate amount of programming consists of getting systems to talk to each other and using very simple data structures to build a nice user interface.&lt;br /&gt;
When is high technology the appropriate technology? When should you crack a book to get something other than a run-of-the-mill algorithm? It is sometimes useful to do this but it should be evaluated carefully.&lt;br /&gt;
The three most important considerations for the potential computer science technique are:&lt;br /&gt;
• Is it well encapsulated so that the risk to other systems is low and the overall increase in complexity and maintenance cost is low?&lt;br /&gt;
• Is the benefit startling (for example, a factor of two in a mature system or a factor of ten in a new system)?&lt;br /&gt;
• Will you be able to test and evaluate it effectively?&lt;br /&gt;
If a well-isolated algorithm that uses a slightly fancy algorithm can decrease hardware cost or increase performance by a factor of two across an entire system, then it would be criminal not to consider it. One of the keys to arguing for such an approach is to show that the risk is really quite low, since the proposed technology has probably been well studied, the only issue is the risk of integration. Here a programmer&#39;s experience and judgment can truly synergize with the fancy technology to make integration easy.&lt;br /&gt;
How to Talk to Non-Engineers&lt;br /&gt;
Engineers and programmers in particular are generally recognized by popular culture as being different from other people. This implies that other people are different from us. This is worth bearing in mind when communicating with non-engineers; you should always understand the audience.&lt;br /&gt;
Non-engineers are smart, but not as grounded in creating technical things as we are. We make things. They sell things and handle things and count things and manage things, but they are not experts on making things. They are not as good at working together on teams as engineers are (there are no doubt exceptions.)[3] Their social skills are generally as good as or better than engineers in non-team environments, but their work does not always demand that they practice the kind of intimate, precise communication and careful subdivisions of tasks that we do.&lt;br /&gt;
Non-engineers may be too eager to please and they may be intimidated by you. Just like us, they may say ‘yes’ without really meaning it to please you or because they are a little scared of you, and then not stand behind their words.&lt;br /&gt;
Non-programmers can understand technical things but they do not have the thing that is so hard even for us---technical judgment. They do understand how technology works, but they cannot understand why a certain approach would take three months and another one three days. (After all, programmers are anecdotally horrible at this kind of estimation as well.) This represents a great opportunity to synergize with them.&lt;br /&gt;
When talking to your team you will, without thinking, use a sort of shorthand, an abbreviated language that is effective because you will have much shared experience about technology in general and your product in particular. It takes some effort not to use this shorthand with those that don&#39;t have that shared experience, especially when members of your own team are present. This vocabulary create a wall between you and those that do not share it, and, even worse, wastes their time.&lt;br /&gt;
With your team, the basic assumptions and goals do not need to be restated often, and most conversation focuses on the details. With outsiders, it must be the other way around. They may not understand things you take for granted. Since you take them for granted and don&#39;t repeat them, you can leave a conversation with an outsider thinking that you understand each other when really there is a large misunderstanding. You should assume that you will miscommunicate and watch carefully to find this miscommunication. Try to get them to summarize or paraphrase what you are saying to make sure they understand. If you have the opportunity to meet with them often, spend a little bit of time asking if you you are communicating effectively, and how you can do it better. If there is a problem in communication, seek to alter your own practices before becoming frustrated with theirs.&lt;br /&gt;
I love working with non-engineers. It provides great opportunities to learn and to teach. You can often lead by example, in terms of the clarity of your communication. Engineers are trained to bring order out of chaos, to bring clarity out of confusion, and non-engineers like this about us. Because we have technical judgment and can usually understand business issues, we can often find a simple solution to a problem.&lt;br /&gt;
Often non-engineers propose solutions that they think will make it easier on us out of kindness and a desire to do the right thing, when in fact a much better overall solution exists which can only be seen by synergizing the outsiders view with your technical judgment. I personally like Extreme Programming because it addresses this inefficiency; by marrying the estimation quickly to the idea, it makes it easier to find the idea that is the best combination of cost and benefit.&lt;br /&gt;
&lt;br /&gt;
________________________________________&lt;br /&gt;
[1] “to hit”&lt;br /&gt;
Chapter�4.�Advanced&lt;br /&gt;
Table of Contents&lt;br /&gt;
Technological Judgment&lt;br /&gt;
How to Tell the Hard From the Impossible&lt;br /&gt;
How to Utilize Embedded Languages&lt;br /&gt;
Choosing Languages&lt;br /&gt;
Compromising Wisely&lt;br /&gt;
How to Fight Schedule Pressure&lt;br /&gt;
How to Understand the User&lt;br /&gt;
How to Get a Promotion&lt;br /&gt;
Serving Your Team&lt;br /&gt;
How to Develop Talent&lt;br /&gt;
How to Choose What to Work On&lt;br /&gt;
How to Get the Most From Your Teammates&lt;br /&gt;
How to Divide Problems Up&lt;br /&gt;
How to Handle Boring Tasks&lt;br /&gt;
How to Gather Support for a Project&lt;br /&gt;
How to Grow a System&lt;br /&gt;
How to Communicate Well&lt;br /&gt;
How to Tell People Things They Don&#39;t Want to Hear&lt;br /&gt;
How to Deal with Managerial Myths&lt;br /&gt;
How to Deal with Organizational Chaos&lt;br /&gt;
Technological Judgment&lt;br /&gt;
How to Tell the Hard From the Impossible&lt;br /&gt;
It is our job to do the hard and discern the impossible. From the point of view of most working programmers, something is impossible if either it cannot be grown from a simple system or it cannot be estimated. By this definition what is called research is impossible. A large volume of mere work is hard, but not necessarily impossible.&lt;br /&gt;
The distinction is not facetious because you may very well be asked to do what is practically impossible, either from a scientific point of view or a software engineering point of view. It then becomes your job to help the entrepreneur find a reasonable solution which is merely hard and gets most of what they wanted. A solution is merely hard when it can be confidently scheduled and the risks are understood.&lt;br /&gt;
It is impossible to satisfy a vague requirement, such as ‘Build a system that will compute the most attractive hair style and color for any person.’ If the requirement can be made more crisp, it will often become merely hard, such as ‘Build a system to compute an attractive hair style and color for a person, allow them to preview it and make changes, and have the customer satisfaction based on the original styling be so great that we make a lot of money.’ If there is not crisp definition of success, you will not succeed.&lt;br /&gt;
How to Utilize Embedded Languages&lt;br /&gt;
Embedding a programming language into a system has an almost erotic fascination to a programmer. It is one of the most creative acts that can be performed. It makes the system tremendously powerful. It allows you to exercise her most creative and Promethean skills. It makes the system into your friend.&lt;br /&gt;
The best text editors in the world all have embedded languages. This can be used to the extent that the intended audience can master the language. Of course, use of the language can be made optional, as it is in text editors, so that initiates can use it and no one else has to.&lt;br /&gt;
I and many other programmers have fallen into the trap of creating special purpose embedded languages. I fell into it twice. There already exist many languages designed specifically to be embedded languages. You should think twice before creating a new one.&lt;br /&gt;
The real question to ask oneself before embedding a language is: Does this work with or against the culture of my audience? If you intended audience is exclusively non-programmers, how will it help? If your intended audience is exclusively programmers, would they prefer an applications programmers interface (API)? And what language will it be? Programmers don&#39;t want to learn a new language that is narrowly used; but if it meshes with their culture they will not have to spend much time learning it. It is a joy to create a new language. But we should not let that blind us to the needs of the user. Unless you have some truly original needs and ideas, why not use an existing language so that you can leverage the familiarity users already have with it?&lt;br /&gt;
Choosing Languages&lt;br /&gt;
The solitary programmer that loves his work (a hacker) can choose the best language for the task. Most working programmers have very little control of the language they will use. Generally, this issue is dictated by pointy-haired bosses who are making a political decision, rather than a technological decision, and lack the courage to promote an unconventional tool even when they know, often with firsthand knowledge, that the less accepted tool is best. In other cases the very real benefit of unity among the team, and to some extent with a larger community, precludes choice on the part of the individual. Often managers are driven by the need to be able to hire programmers with experience in a given language. No doubt they are serving what they perceive to be the best interests of the project or company, and must be respected for that. However, I personally believe this the most wasteful and erroneous common practice you are likely to encounter.&lt;br /&gt;
But of course, things are never one-dimensional. Even if a core language is mandated and beyond your control, it is often the case that tools and other programs can and should be written in a different language. If a language is to be embedded (and you should always consider it!) the choice of language will depend a lot on the culture of the users. One should take advantage of this to serve your company or project by using the best language for the job, and in so doing make work more interesting.&lt;br /&gt;
Programming languages should really be called notations in that learning one is not at all as difficult as learning a natural language. To beginners and to some outsiders ``learning a new language&#39;&#39; seems a daunting task; but after you have three under your belt it&#39;s really just a question of becoming familiar with the available libraries. One tends to think of a large system that has components in three or four languages as a messy hodgepodge; but I argue that such a system is in many cases stronger than a one-language system in several ways:&lt;br /&gt;
• There is necessarily loose coupling between the components that are written in different notations (though maybe not clean interfaces),&lt;br /&gt;
• You can evolve to a new language/platform easily by rewriting each component individually,&lt;br /&gt;
• Its possible that some of the modules are actually up-to-date.&lt;br /&gt;
Some of these effects may only be psychological; but psychology matters. In the end the costs of language tyranny outweigh any advantage that it provides.&lt;br /&gt;
Compromising Wisely&lt;br /&gt;
How to Fight Schedule Pressure&lt;br /&gt;
Time-to-market pressure is the pressure to deliver a good product quickly. It is good because it reflects a financial reality, and is healthy up to a point. Schedule pressure is the pressure to deliver something faster than it can be delivered and it is wasteful, unhealthy, and all too common.&lt;br /&gt;
Schedule pressure exists for several reasons. The people who task programmers do not fully appreciate what a strong work ethic we have and how much fun it is to be a programmer. Perhaps because they project their own behavior onto us, they believe that asking for it sooner will make us work harder to get it there sooner. This is probably actually true, but the effect is very small, and the damage is very great. Additionally, they have no visibility into what it really takes to produce software. Not being able to see it, and not be able to create it themselves, the only thing they can do is see time-to-market pressure and fuss at programmers about it.&lt;br /&gt;
The key to fighting schedule pressure is simply to turn it into time-to-market pressure. The way to do this to give visibility into the relationship between the available labor and the product. Producing an honest, detailed, and most of all, understandable estimate of all the labor involved is the best way to do this. It has the added advantage of allowing good management decisions to be made about possible functionality tradeoffs.&lt;br /&gt;
The key insight that the estimate must make plain is that labor is an almost incompressible fluid. You can&#39;t pack more into a span of time anymore than you can pack more water into a container over and above that container&#39;s volume. In a sense, a programmer should never say ‘no’, but rather to say ‘What will you give up to get that thing you want?’ The effect of producing clear estimates will be to increase the respect for programmers. This is how other professionals behave. Programmers&#39; hard work will be visible. Setting an unrealistic schedule will also be painfully obvious to everyone. Programmers cannot be hoodwinked. It is disrespectful and demoralizing to ask them to do something unrealistic. Extreme Programming amplifies this and builds a process around it; I hope that every reader will be lucky enough to use it.&lt;br /&gt;
How to Understand the User&lt;br /&gt;
It is your duty to understand the user, and to help your boss understand the user. Because the user is not as intimately involved in the creation of your product as you are, they behave a little differently:&lt;br /&gt;
• The user generally makes short pronouncements.&lt;br /&gt;
• The user has their own job; they will mainly think of small improvements in your product, not big improvements.&lt;br /&gt;
• The user can&#39;t have a vision that represents the complete body of your product users.&lt;br /&gt;
It is your duty to give them what they really want, not what they say they want. It is however, better to propose it to them and get them to agree that your proposal is what they really want before you begin, but they may not have the vision to do this. Your confidence in your own ideas about this should vary. You must guard against both arrogance and false modesty in terms of knowing what the customer really wants. Programmers are trained to design and create. Market researchers are trained to figure out what people want. These two kinds of people, or two modes of thought in the same person, working harmoniously together give the best chance of formulating the correct vision.&lt;br /&gt;
The more time you spend with users the better you will be able to understand what will really be successful. You should try to test your ideas against them as much as you can. You should eat and drink with them if you can.&lt;br /&gt;
Guy Kawasaki[Rules] has emphasized the importance of watching what your users do in addition to listening to them.&lt;br /&gt;
I believe contractors and consultants often have tremendous problems getting their clients to clarify in their own minds what they really want. If you intend to be a consultant, I suggest you choose your clients based on their clear-headedness as well as their pocketbooks.&lt;br /&gt;
How to Get a Promotion&lt;br /&gt;
To be promoted to a role, act out that role first.&lt;br /&gt;
To get promoted to a title, find out what is expected of that title and do that.&lt;br /&gt;
To get a pay raise, negotiate armed with information.&lt;br /&gt;
If you feel like you are past due for a promotion, talk to your boss about it. Ask them explicitly what you need to do to get promoted, and try to do it. This sounds trite, but often times your perception of what you need to do will differ considerably from your boss&#39;s. Also this will pin your boss down in some ways.&lt;br /&gt;
Most programmers probably have an exaggerated sense of their relative abilities in some ways---after all, we can&#39;t all be in the top 10%! However, I have seem some people who were seriously unappreciated. One cannot expect everyone&#39;s evaluation to perfectly match reality at all times, but I think people are generally moderately fair, with one caveat: you cannot be appreciated without visibility into your work. Sometimes, do to happenstance or personal habits, someone will not be noticed much. Working from home a lot or being geographically separated from your team and boss makes this especially difficult.&lt;br /&gt;
Serving Your Team&lt;br /&gt;
How to Develop Talent&lt;br /&gt;
Nietschze exaggerated when he said[Stronger]:&lt;br /&gt;
What does not destroy me, makes me stronger.&lt;br /&gt;
Your greatest responsibility is to your team. You should know each of them well. You should stretch your team, but not overburden them. You should usually talk to them about the way they are being stretched. If they buy in to it, they will be well motivated. On each project, or every other project, try to stretch them in both a way that they suggest and a way that you think will be good for them. Stretch them not by giving them more work, but by giving them a new skill or better yet a new role to play on the team.&lt;br /&gt;
You should allow people (including yourself) to fail occasionally and should plan for some failure in your schedule. If there is never any failure, there can be no sense of adventure. If there are not occasional failures, you are not trying hard enough. When someone fails, you should be as gentle as you can with them while not treating them as though they had succeeded.&lt;br /&gt;
Try to get each team member to buy in and be well motivated. Ask each of them explicitly what they need to be well-motivated if they are not. You may have to leave them dissatisfied, but you should know what everybody desires.&lt;br /&gt;
You can&#39;t give up on someone who is intentionally not carrying their share of the load because of low morale or dissatisfaction and just let them be slack. You must try to get them well-motivated and productive. As long as you have the patience, keep this up. When your patience is exhausted, fire them. You cannot allow someone who is intentionally working below their level to remain on the team, since it is not fair to the team.&lt;br /&gt;
Make it clear to the strong members of your team that you think they are strong by saying so in public. Praise should be public and criticism private.&lt;br /&gt;
The strong members of the team will naturally have more difficult tasks than the weak members of the team. This is perfectly natural and nobody will be bothered by it as long as everyone works hard.&lt;br /&gt;
It is an odd fact that is not reflected in salaries that a good programmer is more productive than 10 bad programmers. This creates a strange situation. It will often be true that you could move faster if your weak programmers would just get out of the way. If you did this you would in fact make more progress in the short term. However, your tribe would lose some important benefits, namely the training of the weaker members, the spreading of tribal knowledge, and the ability to recover from the loss of the strong members. The strong must be gentle in this regard and consider the issue from all angles.&lt;br /&gt;
You can often give the stronger team members challenging, but carefully delineated, tasks.&lt;br /&gt;
How to Choose What to Work On&lt;br /&gt;
You balance your personal needs against the needs of the team in choosing what aspect of a project to work on. You should do what you are best at, but try to find a way to stretch yourself not by taking on more work but by exercising a new skill. Leadership and communication skills are more important than technical skills. If you are very strong, take on the hardest or riskiest task, and do it as early as possible in the project to decrease risk.&lt;br /&gt;
How to Get the Most From Your Teammates&lt;br /&gt;
To get the most from your teammates, develop a good team spirit and try to keep every individual both personally challenged and personally engaged.&lt;br /&gt;
To develop team spirit, corny stuff like logoized clothing and parties are good, but not as good as personal respect. If everyone respects everyone else, nobody will want to let anybody down. Team spirit is created when people make sacrifices for the team and think in terms of the good of the team before their own personal good. As a leader, you can&#39;t ask for more than you give yourself in this respect.&lt;br /&gt;
One of the keys to team leadership is to facilitate consensus so that everyone has buy in. This occasionally means allowing your teammates to be wrong. That is, if it does not harm the project too much, you must let some of your team do things their own way, based on consensus, even if you believe with great confidence it is the wrong thing to do. When this happens, don&#39;t agree, simply disagree openly and accept the consensus. Don&#39;t sound hurt, or like you&#39;re being forced into it, simply state that you disagree but think the consensus of the team is more important. This will often cause them to backtrack. Don&#39;t insist that they go through with their initial plan if they do backtrack.&lt;br /&gt;
If there is an individual who will not consent after you have discussed the issues from all appropriate sides, simply assert that you have to make a decision and that is what your decision is. If there is a way to judge if your decision will be wrong or if it is later shown to be wrong, switch as quickly as you can and recognize the persons who were right.&lt;br /&gt;
Ask your team, both as a group and individually, what they think would create team spirit and make for an effective team.&lt;br /&gt;
Praise frequently rather than lavishly. Especially praise those who disagree with you when they are praiseworthy. Praise in public and criticize in private; with one exception: sometimes growth or the correction of a fault can&#39;t be praised without drawing embarrassing attention to the original fault, so that growth should be praised in private.&lt;br /&gt;
How to Divide Problems Up&lt;br /&gt;
It&#39;s fun to take a software project and divide it up into tasks that will be performed by individuals. This should be done early. Sometimes managers like to think that an estimate can be made without consideration of the individuals that will perform the work. This is impossible since the productivity of individuals varies so widely. Who has particular knowledge about a component also constantly changes and can have an order of magnitude effect on performance.&lt;br /&gt;
Just as a composer considers the timbre of the instrument that will play a part or the coach of an athletic team considers the strengths of each player, the experienced team leader will not usually be able to separate the division of the project into tasks from the team members to which they will be assigned. This is part of the reason that a high-performing team should not be broken up.&lt;br /&gt;
There is a certain danger in this given that people will become bored as they build upon their strengths and never improve their weaknesses or learn new skills. However, specialization is a very useful productivity tool when not overused.&lt;br /&gt;
How to Handle Boring Tasks&lt;br /&gt;
Sometimes it is not possible to avoid boring tasks that are critical to the success of the company or the project. These tasks can really hurt the morale of those that have to do them. The best technique for dealing with this is to invoke or promote Larry Wall&#39;s programmer&#39;s virtue of Laziness. Try to find some way to get the computer to do the task for you or to help your teammates do this. Working for a week on a program to do a task that will take a week to do by hand has the great advantage of being more educational and sometimes more repeatable.&lt;br /&gt;
If all else fails, apologize to those who have to do the boring task, but under no circumstances allow them to do it alone. At a minimum assign a team of two to do the work and promote healthy teamwork to get the task done.&lt;br /&gt;
How to Gather Support for a Project&lt;br /&gt;
To gather support for a project, create and communicate a vision that demonstrates real value to the organization as a whole. Attempt to let others share in your vision creation. This gives them a reason to support you and gives you the benefit of their ideas. Individually recruit key supporters for your project. Wherever possible, show, don&#39;t tell. If possible, construct a prototype or a mockup to demonstrate your ideas. A prototype is always powerful but in software it is far superior to any written description.&lt;br /&gt;
How to Grow a System&lt;br /&gt;
The seed of a tree contains the idea of the adult but does not fully realize the form and potency of the adult. The embryo grows. It becomes larger. It looks more like the adult and has more of the uses. Eventually it bears fruit. Later, it dies and its body feeds other organisms.&lt;br /&gt;
We have the luxury of treating software like that. A bridge is not like that; there is never a baby bridge, but merely an unfinished bridge. Bridges are a lot simpler than software.&lt;br /&gt;
It is good to think of software as growing, because it allows us to make useful progress before we have a perfect mental image. We can get feedback from users and use that to correct the growth. Pruning off weak limbs is healthful.&lt;br /&gt;
The programmer must design a finished system that can be delivered and used. But the advanced programmer must do more. You must design a growth path that ends in the finished system. It is your job to take a germ of an idea and build a path that takes it as smoothly as possible into a useful artifact.&lt;br /&gt;
To do this, you must visualize the end result and communicate it in a way that the engineering team can get excited about. But you must also communicate to them a path that goes from wherever they are now to where they want to be with no large leaps. The tree must stay alive the whole time; it cannot be dead at one point and resurrected later.&lt;br /&gt;
This approach is captured in spiral development. Milestones that are never too far apart are used to mark progress along the path. In the ultra-competitive environment of business, it is best if the milestones can be released and make money as early as possible, even if they are far away from a well-designed endpoint. One of the programmer&#39;s jobs is to balance the immediate payoff against future payoff by wisely choosing a growth path expressed in milestones.&lt;br /&gt;
The advanced programmer has the triple responsibility of growing software, teams, and persons.&lt;br /&gt;
A reader, Rob Hafernik, sent in this comment on this section that I can do no better than to quote in full:&lt;br /&gt;
I think you under-emphasize the importance here. It&#39;s not just systems, but algorithms, user interfaces, data models, and so on. It&#39;s absolutely vital as you work on a large system to have measurable progress toward intermediate goals. Nothing is as bad as the special horror of getting down to the end and discovering that the whole thing just isn&#39;t going to work (look at the recent debacle of the Voter News System). I would even go further and state it as a law of nature: no large, complex system can be implemented from scratch, it can only be evolved from a simple system to a complex system in a series of intentional steps.&lt;br /&gt;
To which one can only reply Fiat lux!&lt;br /&gt;
How to Communicate Well&lt;br /&gt;
To communicate well, you have to recognize how hard it is. It is a skill unto itself. It is made harder by the fact that the persons with whom you have to communicate are flawed. They do not work hard at understanding you. They speak poorly and write poorly. They are often overworked or bored, and, at a minimum, somewhat focused on their own work rather than the larger issues you may be addressing. One of the advantages of taking classes and practicing writing, public speaking, and listening is that if you become good at it you can more readily see where problems lie and how to correct them.&lt;br /&gt;
The programmer is a social animal whose survival depends on communication with her team. The advanced programmer is a social animal whose satisfaction depends on communication with people outside her team.&lt;br /&gt;
The programmer brings order out of chaos. One interesting way to do this is to initiate a proposal of some kind outside the team. This can be done in a strawman or white-paper format or just verbally. This leadership has the tremendous advantage of setting the terms of the debate. It also exposes you to criticism, and worse, rejection and neglect. The advanced programmer must be prepared to accept this, because she has a unique power and therefore a unique responsibility. Entrepreneurs who are not programmers need programmers to provide leadership in some ways. Programmers are the part of the bridge between ideas and reality that rests on reality.&lt;br /&gt;
I haven&#39;t mastered communicating well, but what I&#39;m currently trying is what I think of a four-pronged approach: After I have my ideas in order and am fully prepared, I try to speak verbally, hand people a white-paper (on real paper, as well as electronically) show them a demo, and then patiently repeat this process. I think a lot of times we are not patient enough in this kind of difficult communication. You should not be disheartened if your ideas are not immediately accepted. If you have invested energy in there preparation, no one will think poorly of you for it.&lt;br /&gt;
How to Tell People Things They Don&#39;t Want to Hear&lt;br /&gt;
You will often have to tell people things that will make them uncomfortable. Remember that you are doing this for a reason. Even if nothing can be done about the problem, you are telling them as early as possible so they will be well-informed.&lt;br /&gt;
The best way to tell someone about a problem is to offer a solution at the same time. The second best way is to appeal to them for help with the problem. If there is a danger that you won&#39;t be believed, you should gather some support for your assertion.&lt;br /&gt;
One of the most unpleasant and common things you will have to say is, ‘The schedule will have to slip.’ The conscientious programmer hates to say this, but must say it as early as possible. There is nothing worse than postponing action when a milestone slips, even if the only action is to inform everyone. In doing this, it is better to do it as a team, at least in spirit, if not physically. You will want your team&#39;s input on both where you stand and what can be done about it, and the team will have to face the consequences with you.&lt;br /&gt;
How to Deal with Managerial Myths&lt;br /&gt;
The word myth sometimes means fiction. But it has a deeper connotation. It also means a story of religious significance that explains the universe and mankind&#39;s relationship to it. Managers tend to forget what they learned as programmers and believe in certain myths. It would be as rude and unsuccessful to try to convince them these myths are false as to try to disillusion a devoutly religious person of their beliefs. For that reason, you should recognize these beliefs as myths:&lt;br /&gt;
• More documentation is always better. (They want it, but they don&#39;t want you to spend any time on it.)&lt;br /&gt;
• Programmers can be equated. (Programmers vary by an order of magnitude.)&lt;br /&gt;
• Resources can be added to a late project to speed it. (The cost of communication with the new persons is almost always more taxing than helpful.)&lt;br /&gt;
• It is possible to estimate software development reliably. (It is not even theoretically possible.)&lt;br /&gt;
• Programmers&#39; productivity can be measured in terms of some simple metric, like lines of code. (If succinctness is power, lines of code are bad, not good.)&lt;br /&gt;
If you have an opportunity, you can try to explain these things, but don&#39;t feel bad if you have no success and don&#39;t damage your reputation by confronting these myths belligerently. Each of these myths reinforces the manager&#39;s idea that they have some actual control over what is going on. The truth is that managers facilitate if they are good, and impede if they are bad.&lt;br /&gt;
How to Deal with Organizational Chaos&lt;br /&gt;
There are often brief periods of great organizational chaos, such as layoffs, buyouts, ipos, firings, new hirings, and so on. These are unsettling to everyone, but perhaps a little less unsettling to the programmer whose personal self-esteem is founded in capacity rather than in position. Organizational chaos is a great opportunity for programmers to exercise their magic power. I&#39;ve saved this for last because it is a deep tribal secret. If you are not a programmer, please stop reading now.&lt;br /&gt;
Engineers have the power to create and sustain.&lt;br /&gt;
Non-engineers can order people around but, in a typical software company, can create and sustain nothing without engineers, just as engineers typically cannot sell a product or manage a business effectively. This power is proof against almost all of the problems associated with temporary organizational mayhem. When you have it you should ignore the chaos completely and carry on as if nothing is happening. You may, of course, get fired, but if that happens you can probably get a new job because of the magic power. More commonly, some stressed-out person who does not have the magic power will come into your cube and tell you to do something stupid. If you are really sure that it is stupid, it is best to smile and nod until they go away and then carry on doing what you know is best for the company.&lt;br /&gt;
If you are a leader, tell your people to do the same thing and tell them to ignore what anybody else tells them. This course of action is the best for you personally, and is the best for your company or project.&lt;br /&gt;
Glossary&lt;br /&gt;
This is a glossary of terms as used in this essay. These do not necessarily have a standardized meaning to other people. Eric S. Raymond has compiled a massive and informative glossary[HackerDict] that rather surprisingly can pleasurably be read cover-to-cover once you can appreciate a fraction of it.&lt;br /&gt;
unk-unk&lt;br /&gt;
Slang for unknown-unknown. Problems that cannot presently even be conceptualized that will steal time away from the project and wreck the schedule.&lt;br /&gt;
boss&lt;br /&gt;
The person or entity that gives you tasks. In some cases this may be the public at large.&lt;br /&gt;
printlining&lt;br /&gt;
The insertion of statements into a program on a strictly temporary basis that output information about the execution of the program for the purpose of debugging.&lt;br /&gt;
logging&lt;br /&gt;
The practice of writing a program so that it can produce a configurable output log describing its execution.&lt;br /&gt;
divide and conquer&lt;br /&gt;
A technique of top-down design and, importantly, of debugging that is the subdivision of a problem or a mystery into progressively smaller problems or mysteries.&lt;br /&gt;
vapor&lt;br /&gt;
Illusionary and often deceptive promises of software that is not yet for sale and, as often as not, will never materialize into anything solid.&lt;br /&gt;
boss&lt;br /&gt;
The person who sets your tasks. In some cases, the user is the boss.&lt;br /&gt;
tribe&lt;br /&gt;
The people with whom you share loyalty to a common goal.&lt;br /&gt;
low-hanging fruit&lt;br /&gt;
Big improvements that cost little.&lt;br /&gt;
Entrepreneur&lt;br /&gt;
The initiator of projects.&lt;br /&gt;
garbage&lt;br /&gt;
Objects that are no longer needed that hold memory.&lt;br /&gt;
busines&lt;br /&gt;
A group of people organized for making money.&lt;br /&gt;
company&lt;br /&gt;
A group of people organized for making money.&lt;br /&gt;
tribe&lt;br /&gt;
A group of people you share cultural affinity and loyalty with.&lt;br /&gt;
scroll blindness&lt;br /&gt;
The effect of being unable to find information you need because it is buried in too much other, less interesting information.&lt;br /&gt;
wall-clock&lt;br /&gt;
Actually time as measured by a clock on a wall, as opposed to CPU time.&lt;br /&gt;
bottleneck&lt;br /&gt;
The most important limitation in the performance of a system. A constriction that limits performance.&lt;br /&gt;
master&lt;br /&gt;
A unique piece of information from which all cached copies are derived that serves as the official definition of that data.&lt;br /&gt;
heap allocated&lt;br /&gt;
Memory can be said to be heap allocated whenever the mechanism for freeing it is complicated.&lt;br /&gt;
garbage&lt;br /&gt;
Allocated memory that no longer has any useful meaning.&lt;br /&gt;
garbage collector&lt;br /&gt;
A system for recycling garbage.&lt;br /&gt;
memory leak&lt;br /&gt;
The unwanted collection of references to objects that prevents garbage collection (or a bug in the garbage collector or memory management system!) that causes the program to gradually increase its memory demands over time.&lt;br /&gt;
Extreme Programming&lt;br /&gt;
A style of programming emphasizing communication with the customer and automated testing.&lt;br /&gt;
hitting the wall&lt;br /&gt;
To run out of a specific resource causing performance to degrade sharply rather than gradually.&lt;br /&gt;
speculative programming&lt;br /&gt;
Producing a feature before it is really known if that feature will be useful.&lt;br /&gt;
information hiding&lt;br /&gt;
A design principle that seeks to keep things independent and decoupled by using interfaces that expose as little information as possible.&lt;br /&gt;
object-oriented programming&lt;br /&gt;
An programming style emphasizing the the management of state inside objects.&lt;br /&gt;
communication languages&lt;br /&gt;
A language designed primarily for standardization rather than execution.&lt;br /&gt;
boxes and arrows&lt;br /&gt;
A loose, informal style of making diagrams consiting of boxes and arrows drawn between those boxes to show the relationships. This contrast with formal diagram methodologies, such as UML.&lt;br /&gt;
lingua franca&lt;br /&gt;
A language so popular as to be a de facto standard for its field, as French was for international diplomacy at one time.&lt;br /&gt;
buy vs. build&lt;br /&gt;
An adjective describing a choice between spending money for software or writing it your self.&lt;br /&gt;
mere work&lt;br /&gt;
Work that requires little creativity and entails little risk. Mere work can be estimated easily.&lt;br /&gt;
programming notation&lt;br /&gt;
A synonym for programming language that emphasizes the mathematical nature of programming language and their relative simplicity compared to natural languages.&lt;br /&gt;
strawman&lt;br /&gt;
A document meant to be the starting point of a technical discussion. A strawman may lead to a stickman, tinman, woodman, ironman, etc.&lt;br /&gt;
wite-paper&lt;br /&gt;
An informative document that is often meant to explain or sell a product or idea to an audience different than the programmers of that product or idea.&lt;br /&gt;
Table of Contents&lt;br /&gt;
Bibliography/Websiteography&lt;br /&gt;
Bibliography/Websiteography&lt;br /&gt;
Books&lt;br /&gt;
[Rules00] Guy Kawasaki, Michelle Moreno, and Gary Kawasaki. 2000. HarperBusiness. Rules for Revolutionaries: The Capitalist Manifesto for Creating and Marketing New Products and Services.&lt;br /&gt;
[RDev96] Steve McConnell. 1996. Microsoft Press. Redmond, Wash. Rapid Development: Taming Wild Software Schedules.&lt;br /&gt;
[CodeC93] Steve McConnell. 1993. Microsoft Press. Redmond, Wash. Code Complete.&lt;br /&gt;
[XP99] Kent Beck. 1999. 0201616416. Addison-Wesley. Extreme Programming Explained: Embrace Change.&lt;br /&gt;
[PlanXP00] Kent Beck and Martin Fowler. 2000. 0201710919. Addison-Wesley. Planning Extreme Programming.&lt;br /&gt;
[Prag99] Andrew Hunt, David Thomas, and Ward Cunningham. 1999. 020161622X. Addison-Wesley. The Pragmatic Programmer: From Journeyman to Master.&lt;br /&gt;
[Stronger] Friedrich Nietzsche. 1889. Twilight of the Idols, &quot;Maxims and Arrows&quot;, section 8..&lt;br /&gt;
Web Sites&lt;br /&gt;
[PGSite] Paul Graham. 2002. Articles on his website: http://www.paulgraham.com/articles.html. All of them, but especially &quot;Beating the Averages&quot;.&lt;br /&gt;
[Hacker] Eric S. Raymond. 2003. How to Become a Hacker. http://www.catb.org/~esr/faqs/hacker-howto.html.&lt;br /&gt;
[HackDict] Eric S. Raymond. 2003. The New Hacker Dictionary. http://catb.org/esr/jargon/jargon.html.&lt;br /&gt;
[ExpCS] Edsger W. Dijkstra. 1986. How Experimental is Computing Science?. http://www.cs.utexas.edu/users/EWD/ewd09xx/EWD988a.PDF.&lt;br /&gt;
[Knife] Edsger W. Dijkstra. 1984. On a Cultural Gap. http://www.cs.utexas.edu/users/EWD/ewd09xx/EWD913.PDF .&lt;br /&gt;
Appendix�B.�History (As Of February, 2003)&lt;br /&gt;
Request for Feedback or Extension&lt;br /&gt;
Please send me any comments you may have on this essay. I consider all suggestions, many of which have already improved this essay.&lt;br /&gt;
I have placed this essay under the GNU Free Documentation License. This license is not specifically designed for essays. Essays are usually intended to be coherent and convincing arguments that are writtien from a single point of view in a single voice. I hope this essay is a short and pleasant read.&lt;br /&gt;
I also hope that it is instructive. Although not a textbook, it is broken into many small sections to which new sections can be freely added. If so inclined, you are encouraged to expand upon this essay as you see fit, subject to the provisions of the License.&lt;br /&gt;
It may be arrogance to imagine that this document is worthy of extension; but hope springs eternal. I would be joyous if it were extended in the following ways:&lt;br /&gt;
• The addition of a comprehensive reading list to each section,&lt;br /&gt;
• The addition of more and better sections,&lt;br /&gt;
• Translation into other languages, even if only on a subsection-by-subsection basis, and/or&lt;br /&gt;
• Criticism or commentary in-lined into the text.&lt;br /&gt;
• The ability to build into different formats, such as palm formats and better HTML.&lt;br /&gt;
If you inform me of your work, I will consider it and may include it in subsequent versions that I produce, subject to the provisions of the License. You may of course produce your own versions of this document without my knowledge, as explained in the License.&lt;br /&gt;
Thank you.&lt;br /&gt;
Robert L. Read&lt;br /&gt;
Original Version&lt;br /&gt;
The original version of this document was begun by Robert L. Read in the year 2000 and first published electronically at Samizdat Press(http://Samizdat.mines.edu) in 2002. It is dedicated to the programmers of Hire.com.&lt;br /&gt;
After this article was mentioned on Slashdot in 2003, about 75 people sent me email with suggestions and errata. I appreciate them all. There was a lot of duplication, but the following people either made major suggestions or were the first to find a bug that I fixed: Morgan McGuire, David Mason, Tom Moertel, Ninja Programmer (145252) at Slashdot, Ben Vierck, Rob Hafernik, Mark Howe, Pieter Pareit, Brian Grayson, Zed A. Shaw, Steve Benz, Maksim Ioffe, Andrew Wu, David Jeschke, and Tom Corcoran.&lt;br /&gt;
Finally I would like to thank Christina Vallery, whose editing and proofreading greatly improved the second draft, and Wayne Allen, who encouraged me to initiate this.&lt;br /&gt;
Original Author&#39;s Bio&lt;br /&gt;
Robert L. Read lives in Austin, Texas, with his wife and two children. He is currently a Principal Engineer at Hire.com, where he has worked for four years. Prior to that he founded 4R Technology, which made a scanner-based image analysis quality control tool for the paper industry.&lt;br /&gt;
Rob received a PhD from the University of Texas at Austin in 1995 in Computer Science related to database theory. In 1987 he received a BA in Computer Science from Rice University. He has been a paid programmer since the age of 16.&lt;br /&gt;
Appendix�C.�GNU Free Documentation License&lt;br /&gt;
Version 1.2, November 2002&lt;br /&gt;
Table of Contents&lt;br /&gt;
PREAMBLE&lt;br /&gt;
APPLICABILITY AND DEFINITIONS&lt;br /&gt;
VERBATIM COPYING&lt;br /&gt;
COPYING IN QUANTITY&lt;br /&gt;
MODIFICATIONS&lt;br /&gt;
COMBINING DOCUMENTS&lt;br /&gt;
COLLECTIONS OF DOCUMENTS&lt;br /&gt;
AGGREGATION WITH INDEPENDENT WORKS&lt;br /&gt;
TRANSLATION&lt;br /&gt;
TERMINATION&lt;br /&gt;
FUTURE REVISIONS OF THIS LICENSE&lt;br /&gt;
ADDENDUM: How to use this License for your documents&lt;br /&gt;
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.&lt;br /&gt;
PREAMBLE&lt;br /&gt;
The purpose of this License is to make a manual, textbook, or other functional and useful document &quot;free&quot; in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.&lt;br /&gt;
This License is a kind of &quot;copyleft&quot;, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.&lt;br /&gt;
We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.&lt;br /&gt;
APPLICABILITY AND DEFINITIONS&lt;br /&gt;
This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The &quot;Document&quot;, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as &quot;you&quot;. You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.&lt;br /&gt;
A &quot;Modified Version&quot; of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.&lt;br /&gt;
A &quot;Secondary Section&quot; is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document&#39;s overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.&lt;br /&gt;
The &quot;Invariant Sections&quot; are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.&lt;br /&gt;
The &quot;Cover Texts&quot; are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.&lt;br /&gt;
A &quot;Transparent&quot; copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not &quot;Transparent&quot; is called &quot;Opaque&quot;.&lt;br /&gt;
Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.&lt;br /&gt;
The &quot;Title Page&quot; means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, &quot;Title Page&quot; means the text near the most prominent appearance of the work&#39;s title, preceding the beginning of the body of the text.&lt;br /&gt;
A section &quot;Entitled XYZ&quot; means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as &quot;Acknowledgements&quot;, &quot;Dedications&quot;, &quot;Endorsements&quot;, or &quot;History&quot;.) To &quot;Preserve the Title&quot; of such a section when you modify the Document means that it remains a section &quot;Entitled XYZ&quot; according to this definition.&lt;br /&gt;
The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.&lt;br /&gt;
VERBATIM COPYING&lt;br /&gt;
You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.&lt;br /&gt;
You may also lend copies, under the same conditions stated above, and you may publicly display copies.&lt;br /&gt;
COPYING IN QUANTITY&lt;br /&gt;
If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document&#39;s license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.&lt;br /&gt;
If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.&lt;br /&gt;
If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.&lt;br /&gt;
It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.&lt;br /&gt;
MODIFICATIONS&lt;br /&gt;
You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:&lt;br /&gt;
A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.&lt;br /&gt;
B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.&lt;br /&gt;
C. State on the Title page the name of the publisher of the Modified Version, as the publisher.&lt;br /&gt;
D. Preserve all the copyright notices of the Document.&lt;br /&gt;
E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.&lt;br /&gt;
F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.&lt;br /&gt;
G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document&#39;s license notice.&lt;br /&gt;
H. Include an unaltered copy of this License.&lt;br /&gt;
I. Preserve the section Entitled &quot;History&quot;, Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled &quot;History&quot; in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.&lt;br /&gt;
J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the &quot;History&quot; section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.&lt;br /&gt;
K. For any section Entitled &quot;Acknowledgements&quot; or &quot;Dedications&quot;, Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.&lt;br /&gt;
L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.&lt;br /&gt;
M. Delete any section Entitled &quot;Endorsements&quot;. Such a section may not be included in the Modified Version.&lt;br /&gt;
N. Do not retitle any existing section to be Entitled &quot;Endorsements&quot; or to conflict in title with any Invariant Section.&lt;br /&gt;
O. Preserve any Warranty Disclaimers.&lt;br /&gt;
If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version&#39;s license notice. These titles must be distinct from any other section titles.&lt;br /&gt;
You may add a section Entitled &quot;Endorsements&quot;, provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.&lt;br /&gt;
You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.&lt;br /&gt;
The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.&lt;br /&gt;
COMBINING DOCUMENTS&lt;br /&gt;
You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.&lt;br /&gt;
The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.&lt;br /&gt;
In the combination, you must combine any sections Entitled &quot;History&quot; in the various original documents, forming one section Entitled &quot;History&quot;; likewise combine any sections Entitled &quot;Acknowledgements&quot;, and any sections Entitled &quot;Dedications&quot;. You must delete all sections Entitled &quot;Endorsements&quot;.&lt;br /&gt;
COLLECTIONS OF DOCUMENTS&lt;br /&gt;
You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.&lt;br /&gt;
You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.&lt;br /&gt;
AGGREGATION WITH INDEPENDENT WORKS&lt;br /&gt;
A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an &quot;aggregate&quot; if the copyright resulting from the compilation is not used to limit the legal rights of the compilation&#39;s users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.&lt;br /&gt;
If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document&#39;s Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.&lt;br /&gt;
TRANSLATION&lt;br /&gt;
Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.&lt;br /&gt;
If a section in the Document is Entitled &quot;Acknowledgements&quot;, &quot;Dedications&quot;, or &quot;History&quot;, the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.&lt;br /&gt;
TERMINATION&lt;br /&gt;
You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.&lt;br /&gt;
FUTURE REVISIONS OF THIS LICENSE&lt;br /&gt;
The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.&lt;br /&gt;
Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License &quot;or any later version&quot; applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.&lt;br /&gt;
ADDENDUM: How to use this License for your documents&lt;br /&gt;
To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:&lt;br /&gt;
Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled &quot;GNU Free Documentation License&quot;.&lt;br /&gt;
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the &quot;with...Texts.&quot; line with this:&lt;br /&gt;
with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.&lt;br /&gt;
If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.&lt;br /&gt;
If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.&lt;br /&gt;
Colophon&lt;br /&gt;
This work is licensed under the GNU Free Documentation License. It was originally written in LaTeX, then ported to DocBook. It is available in transparent copy in the DocBook/XML format. A build system and special instructions on processing are part of the transparent copy package, though building from the source is system dependent. The source can be built into either HTML or PDF format, and extension to other formats should be possible and is encouraged.&lt;br /&gt;
The original version of this document was written by Robert L. Read without renumeration and dedicated to the programmers of Hire.com.&lt;br /&gt;
&lt;br /&gt;
copied from &lt;b&gt;www.freetechbooks.com&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
________________________________________________________________________________________________</content><link rel='replies' type='application/atom+xml' href='http://computerscienze.blogspot.com/feeds/4181093640617850354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerscienze.blogspot.com/2010/01/how-to-be-programmer-short.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/4181093640617850354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/4181093640617850354'/><link rel='alternate' type='text/html' href='http://computerscienze.blogspot.com/2010/01/how-to-be-programmer-short.html' title='How to be a Programmer: A Short, Comprehensive, and Personal Summary'/><author><name>lohith kumar</name><uri>http://www.blogger.com/profile/08530468303679081678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqHVxoT0zNNgw32kuE1WItEktjohP6UwVgbL74SJ-5omOek28-G9GNdlhHGvXGx7XybeksRrVMbegL3t4wFN9Bs1YA_db1jMRT7z_aT1ytriw1Y9GxtHx5gmpbmZOzTw/s220/1000_tiger_parts_seized.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337827601128114885.post-1798411352902900871</id><published>2010-01-15T20:18:00.000+05:30</published><updated>2010-02-14T17:45:19.513+05:30</updated><title type='text'>How to score good marks in exams</title><content type='html'>Make a revision plan about 6 months before a major exam and start reviewing one topic at a time from then.&lt;br /&gt;
I feel envious of people who just perform well in exams without much real effort (so they say). The rest of us mortals have to follow the revision plan and cover everything as well as possible in advance of the big day.&lt;br /&gt;
&lt;br /&gt;
1. Write neatly and clearly, .&lt;br /&gt;
2. Write in a language which iseasy to understand for the examiner as most examiners are average person, Keep their IQ in your mind while replying.&lt;br /&gt;
3. Reply the question with a direct and simple answer, though the question may look difficult.&lt;br /&gt;
3. If requred, explain with some suitable example.&lt;br /&gt;
4. Give some simple sketches in support of your answer.&lt;br /&gt;
5. If you want to score high, never make spelling mistakes, (this is like the impression we get from newspaper with lot of spelling mistakes we read it but ....but we don&#39;t trust the news).&lt;br /&gt;
Work hard. Devote minimum 6 hrs .to studies daily. Do revisions.&lt;br /&gt;
&lt;br /&gt;
If you get good marks it means that your future life will be good and you will live comfortably in days ahead. Life is long but it is you only who have to make it safe, secure and comfortable.This is the time of competetion and you must be ahead of others and the best way is to secure good marks in your all the exams.&lt;br /&gt;
&lt;br /&gt;
ALWAYS did the work assigned, made sure to study the MATERIAL BEFORE it was required, and did my projects with maximum effort -- then made sure to get good rest for the week prior to the exam week. That way, I went into the exams well rested, relaxed, and confident.&lt;br /&gt;
First, plan your study. Owerview your total work and the estimated time. But note that, it usually takes more time than it has considered so make sure that you speare some extra. Second, always go from easy to the hard. This will help you gain confidence during the study and motivate you positively for the harder task. Third; say, you begun to study math first, then make sure that you study some verbal lesson or task second. Then, you may go on with numeric tasks if you please. Fourth; chalenge yourself. You may get extremely bored during the study and may feel like you could not go on no matter what. if this happens, motivate yourself by challenging yourself. Ex; &quot;I am stronger than boredom&quot; or &quot;I can go on if i want to&quot; but remember to offer yourself a reward while doing this, such as telling yourself that its the only way to deserve your dream holiday, or a movie etc... and the last one; everything seems harder than they really are. To discover how easy they are, is always the hardest part.&lt;br /&gt;
&lt;br /&gt;
 _______________________________________________________________________________________________</content><link rel='replies' type='application/atom+xml' href='http://computerscienze.blogspot.com/feeds/1798411352902900871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerscienze.blogspot.com/2010/01/how-to-score-good-marks-in-exams.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/1798411352902900871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/1798411352902900871'/><link rel='alternate' type='text/html' href='http://computerscienze.blogspot.com/2010/01/how-to-score-good-marks-in-exams.html' title='How to score good marks in exams'/><author><name>lohith kumar</name><uri>http://www.blogger.com/profile/08530468303679081678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqHVxoT0zNNgw32kuE1WItEktjohP6UwVgbL74SJ-5omOek28-G9GNdlhHGvXGx7XybeksRrVMbegL3t4wFN9Bs1YA_db1jMRT7z_aT1ytriw1Y9GxtHx5gmpbmZOzTw/s220/1000_tiger_parts_seized.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337827601128114885.post-8317444876391884027</id><published>2010-01-11T02:17:00.000+05:30</published><updated>2010-01-11T02:22:02.134+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="HTML intoduction"/><title type='text'>HTML intoduction</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif_a0oS21D5zfR2plgrYxoBfeN5tkJfrd7pZ5rOsgOa2jM4RreKf-iEJ0iqqR5sps_Y3rFNdyDWNdWRjPDPZNBuua_qGksJhJ89YycJdejWjP2zzj2WmwTWXeVxwwF6dP-0_AOj045JKC5/s1600-h/Sonam_Kapoor4.jpg&quot;&gt;&lt;img style=&quot;float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 294px; height: 320px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif_a0oS21D5zfR2plgrYxoBfeN5tkJfrd7pZ5rOsgOa2jM4RreKf-iEJ0iqqR5sps_Y3rFNdyDWNdWRjPDPZNBuua_qGksJhJ89YycJdejWjP2zzj2WmwTWXeVxwwF6dP-0_AOj045JKC5/s320/Sonam_Kapoor4.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5425216609766385298&quot; /&gt;&lt;/a&gt;&lt;br /&gt;HTML Introduction&lt;br /&gt;&lt;br /&gt;What is HTML?&lt;br /&gt;HTML is a language for describing web pages.&lt;br /&gt;•	HTML stands for Hyper Text Markup Language &lt;br /&gt;•	HTML is not a programming language, it is a markup language &lt;br /&gt;•	A markup language is a set of markup tags &lt;br /&gt;•	HTML uses markup tags to describe web pages &lt;br /&gt;________________________________________&lt;br /&gt;HTML Tags&lt;br /&gt;HTML markup tags are usually called HTML tags&lt;br /&gt;•	HTML tags are keywords surrounded by angle brackets like &lt;html&gt; &lt;br /&gt;•	HTML tags normally come in pairs like &lt;b&gt; and &lt;/b&gt; &lt;br /&gt;•	The first tag in a pair is the start tag, the second tag is the end tag &lt;br /&gt;•	Start and end tags are also called opening tags and closing tags.&lt;br /&gt;________________________________________&lt;br /&gt;HTML Documents = Web Pages&lt;br /&gt;•	HTML documents describe web pages &lt;br /&gt;•	HTML documents contain HTML tags and plain text &lt;br /&gt;•	HTML documents are also called web pages&lt;br /&gt;The purpose of a web browser (like Internet Explorer or Firefox) is to read HTML documents and display them as web pages. The browser does not display the HTML tags, but uses the tags to interpret the content of the page:&lt;br /&gt;&lt;html&gt;&lt;br /&gt;&lt;body&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1&gt;My First Heading&lt;/h1&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;My first paragraph&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/body&gt;&lt;br /&gt;&lt;/html&gt;&lt;br /&gt;Example Explained&lt;br /&gt;•	The text between &lt;html&gt; and &lt;/html&gt; describes the web page &lt;br /&gt;•	The text between &lt;body&gt; and &lt;/body&gt; is the visible page content &lt;br /&gt;•	The text between &lt;h1&gt; and &lt;/h1&gt; is displayed as a heading &lt;br /&gt;•	The text between &lt;p&gt; and &lt;/p&gt; is displayed as a paragraph &lt;br /&gt;________________________________________&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;HTML Elements&lt;br /&gt;HTML documents are defined by HTML elements.&lt;br /&gt;________________________________________&lt;br /&gt;HTML Elements&lt;br /&gt;An HTML element is everything from the start tag to the end tag:&lt;br /&gt;Start tag *	Element content	End tag *&lt;br /&gt;&lt;p&gt;	This is a paragraph	&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;default.htm&quot; &gt;	This is a link	&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;	 	 &lt;br /&gt;* The start tag is often called the opening tag. The end tag is often called the closing tag.&lt;br /&gt;________________________________________&lt;br /&gt;HTML Element Syntax&lt;br /&gt;•	An HTML element starts with a start tag / opening tag &lt;br /&gt;•	An HTML element ends with an end tag / closing tag &lt;br /&gt;•	The element content is everything between the start and the end tag &lt;br /&gt;•	Some HTML elements have empty content &lt;br /&gt;•	Empty elements are closed in the start tag &lt;br /&gt;•	Most HTML elements can have attributes &lt;br /&gt;(You will learn about element attributes in the next chapter of this tutorial)&lt;br /&gt;________________________________________&lt;br /&gt;Nested HTML Elements&lt;br /&gt;Most HTML elements can be nested (can contain other HTML elements).&lt;br /&gt;HTML documents consist of nested HTML elements.&lt;br /&gt;________________________________________&lt;br /&gt;HTML Document Example&lt;br /&gt;&lt;html&gt;&lt;br /&gt;&lt;body&gt;&lt;br /&gt;&lt;p&gt;This is my first paragraph&lt;/p&gt;&lt;br /&gt;&lt;/body&gt;&lt;br /&gt;&lt;/html&gt;&lt;br /&gt;The example above contains 3 HTML elements.&lt;br /&gt;________________________________________&lt;br /&gt;Example Explained&lt;br /&gt;The &lt;p&gt; element:&lt;br /&gt;&lt;p&gt;This is my first paragraph&lt;/p&gt; &lt;br /&gt;The &lt;p&gt; element defines a paragraph in the HTML document&lt;br /&gt;The element has a start tag &lt;p&gt; and an end tag &lt;/p&gt;&lt;br /&gt;The element content is: This is my first paragraph&lt;br /&gt;The &lt;body&gt; element:&lt;br /&gt;&lt;body&gt;&lt;br /&gt;&lt;p&gt;This is my first paragraph&lt;/p&gt;&lt;br /&gt;&lt;/body&gt; &lt;br /&gt;The &lt;body&gt; element defines the body of the HTML document&lt;br /&gt;The element has a start tag &lt;body&gt; and an end tag &lt;/body&gt;&lt;br /&gt;The element content is another HTML element (a paragraph)&lt;br /&gt;The &lt;html&gt; element:&lt;br /&gt;&lt;html&gt;&lt;br /&gt;&lt;br /&gt;&lt;body&gt;&lt;br /&gt;&lt;p&gt;This is my first paragraph&lt;/p&gt;&lt;br /&gt;&lt;/body&gt;&lt;br /&gt;&lt;br /&gt;&lt;/html&gt; &lt;br /&gt;The &lt;html&gt; element defines the whole HTML document.&lt;br /&gt;The element has a start tag &lt;html&gt; and an end tag &lt;/html&gt;&lt;br /&gt;The element content is another HTML element (the body)&lt;br /&gt;________________________________________&lt;br /&gt;Don&#39;t Forget the End Tag&lt;br /&gt;Most browsers will display HTML correctly even if you forget the end tag:&lt;br /&gt;&lt;p&gt;This is a paragraph&lt;br /&gt;&lt;p&gt;This is a paragraph &lt;br /&gt;The example above will work in most browsers, but don&#39;t rely on it. Forgetting the end tag can produce unexpected results or errors.&lt;br /&gt;Note: Future version of HTML will not allow you to skip end tags.&lt;br /&gt;________________________________________&lt;br /&gt;Empty HTML Elements&lt;br /&gt;HTML elements without content are called empty elements. Empty elements can be closed in the start tag.&lt;br /&gt;&lt;br&gt; is an empty element without a closing tag (it defines a line break).&lt;br /&gt;In XHTML, XML, and future versions of HTML, all elements must be closed. &lt;br /&gt;Adding a slash to the start tag, like &lt;br /&gt;, is the proper way of closing empty elements, accepted by HTML, XHTML and XML.&lt;br /&gt;Even if &lt;br&gt; works in all browsers, writing &lt;br /&gt; instead is more future proof.&lt;br /&gt;________________________________________&lt;br /&gt;HTML Tip: Use Lowercase Tags&lt;br /&gt;HTML tags are not case sensitive: &lt;P&gt; means the same as &lt;p&gt;. Plenty of web sites use uppercase HTML tags in their pages.&lt;br /&gt;HTML Attributes&lt;br /&gt;Attributes provide additional information about HTML elements.&lt;br /&gt;________________________________________&lt;br /&gt;HTML Attributes&lt;br /&gt;•	HTML elements can have attributes &lt;br /&gt;•	Attributes provide additional information about the element &lt;br /&gt;•	Attributes are always specified in the start tag &lt;br /&gt;•	Attributes come in name/value pairs like: name=&quot;value&quot; &lt;br /&gt;________________________________________&lt;br /&gt;&lt;br /&gt;Attribute Example&lt;br /&gt;HTML links are defined with the &lt;a&gt; tag. The link address is provided as an attribute:&lt;br /&gt;Example&lt;br /&gt;&lt;a href=&quot;http://www.yahoo.com&quot;&gt;This is a link&lt;/a&gt; &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;________________________________________&lt;br /&gt;Always Quote Attribute Values&lt;br /&gt;Attribute values should always be enclosed in quotes. &lt;br /&gt;Double style quotes are the most common, but single style quotes are also allowed.&lt;br /&gt;In some rare situations, like when the attribute value itself contains quotes, it is necessary to use single quotes:&lt;br /&gt;name=&#39;John &quot;ShotGun&quot; Nelson&#39;&lt;br /&gt;________________________________________&lt;br /&gt;HTML Tip: Use Lowercase Attributes&lt;br /&gt;Attribute names and attribute values are case-insensitive.&lt;br /&gt;Newer versions of (X)HTML will demand lowercase attributes.&lt;br /&gt;________________________________________&lt;br /&gt;HTML Attributes Reference&lt;br /&gt;A full list of legal attributes for each HTML element is listed in our:&lt;br /&gt;Below is a list of some attributes that are standard for most HTML elements:&lt;br /&gt;&lt;br /&gt;Attribute	Value	Description&lt;br /&gt;class	class_rule or style_rule	The class of the element&lt;br /&gt;id	id_name	A unique id for the element&lt;br /&gt;style	style_definition	An inline style definition &lt;br /&gt;title	tooltip_text 	A text to display in a tool tip &lt;br /&gt;&lt;br /&gt;HTML Headings&lt;br /&gt;&lt;br /&gt;Headings are important in HTML documents.&lt;br /&gt;________________________________________&lt;br /&gt;HTML Headings&lt;br /&gt;Headings are defined with the &lt;h1&gt; to &lt;h6&gt; tags.&lt;br /&gt;&lt;h1&gt; defines the largest heading. &lt;h6&gt; defines the smallest heading.&lt;br /&gt;Example&lt;br /&gt;&lt;h1&gt;This is a heading&lt;/h1&gt;&lt;br /&gt;&lt;h2&gt;This is a heading&lt;/h2&gt;&lt;br /&gt;&lt;h3&gt;This is a heading&lt;/h3&gt; &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Note: Browsers automatically adds an empty line before and after headings.&lt;br /&gt;________________________________________&lt;br /&gt;Headings Are Important&lt;br /&gt;Use HTML headings for headings only. Don&#39;t use headings to make text BIG or bold.&lt;br /&gt;Search engines use your headings to index the structure and content of your web pages.&lt;br /&gt;Since users may skim your pages by its headings, it is important to use headings to show the document structure.&lt;br /&gt;H1 headings should be used as main headings, followed by H2 headings, then less important H3 headings, and so on.&lt;br /&gt;________________________________________&lt;br /&gt;HTML Rules (Lines)&lt;br /&gt;The &lt;hr /&gt; tag is used to create an horizontal rule (line).&lt;br /&gt;&lt;br /&gt;Example&lt;br /&gt;&lt;p&gt;This is a paragraph&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;This is a paragraph&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;This is a paragraph&lt;/p&gt; &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;________________________________________&lt;br /&gt;HTML Comments&lt;br /&gt;Comments can be inserted in the HTML code to make it more readable and understandable. Comments are ignored by the browser and are not displayed.&lt;br /&gt;Comments are written like this:&lt;br /&gt;Example&lt;br /&gt;&lt;!-- This is a comment --&gt; &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Note: There is an exclamation point after the opening bracket, but not before the closing bracket.&lt;br /&gt;________________________________________&lt;br /&gt;HTML Tip - How to View HTML Source&lt;br /&gt;Have you ever seen a Web page and wondered &quot;Hey! How did they do that?&quot;&lt;br /&gt;To find out, click the VIEW option in your browser&#39;s toolbar and select SOURCE or PAGE SOURCE. This will open a window that shows you the HTML code of the page.&lt;br /&gt;________________________________________HTML Tag Reference&lt;br /&gt;&lt;br /&gt;Tag	Description&lt;br /&gt;&lt;html&gt;&lt;br /&gt;Defines an HTML document&lt;br /&gt;&lt;body&gt;&lt;br /&gt;Defines the document&#39;s body&lt;br /&gt;&lt;h1&gt; to &lt;h6&gt;&lt;br /&gt;Defines header 1 to header 6&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Defines a horizontal rule&lt;br /&gt;&lt;!--&gt;&lt;br /&gt;Defines a comment&lt;br /&gt;HTML Paragraphs&lt;br /&gt;HTML documents are divided into paragraphs.&lt;br /&gt;________________________________________&lt;br /&gt;HTML Paragraphs&lt;br /&gt;Paragraphs are defined with the &lt;p&gt; tag.&lt;br /&gt;Example&lt;br /&gt;&lt;p&gt;This is a paragraph&lt;/p&gt;&lt;br /&gt;&lt;p&gt;This is another paragraph&lt;/p&gt; &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Note: Browsers automatically adds an empty line before and after paragraphs.&lt;br /&gt;________________________________________&lt;br /&gt;Don&#39;t Forget the End Tag&lt;br /&gt;Most browsers will display HTML correctly even if you forget the end tag:&lt;br /&gt;Example&lt;br /&gt;&lt;p&gt;This is a paragraph&lt;br /&gt;&lt;p&gt;This is another paragraph &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;The example above will work in most browsers, but don&#39;t rely on it. Forgetting the end tag can produce unexpected results or errors.&lt;br /&gt;Note: Future version of HTML will not allow you to skip end tags.&lt;br /&gt;________________________________________&lt;br /&gt;HTML Line Breaks&lt;br /&gt;Use the &lt;br /&gt; tag if you want a line break (a new line) without starting a new paragraph:&lt;br /&gt;&lt;br /&gt;Example&lt;br /&gt;&lt;p&gt;This is&lt;br /&gt;a para&lt;br /&gt;graph with line breaks&lt;/p&gt; &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;The &lt;br /&gt; element is an empty HTML element. It has no end tag.&lt;br /&gt;________________________________________&lt;br /&gt;&lt;br&gt; or &lt;br /&gt;&lt;br /&gt;In XHTML, XML, and future versions of HTML, HTML elements with no end tag (closing tag) are not allowed. &lt;br /&gt;Even if &lt;br&gt; works in all browsers, writing &lt;br /&gt; instead is more future proof.&lt;br /&gt;________________________________________&lt;br /&gt;HTML Output - Useful Tips&lt;br /&gt;You cannot be sure how HTML will be displayed. Large or small screens, and resized windows will create different results. &lt;br /&gt;With HTML, you cannot change the output by adding extra spaces or extra lines in your HTML code.&lt;br /&gt;The browser will remove extra spaces and extra lines when the page is displayed. Any number of lines count as one space, and any number of spaces count as one space.&lt;br /&gt;________________________________________&lt;br /&gt;HTML Tag Reference&lt;br /&gt;Tag	Description&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Defines a paragraph&lt;br /&gt;&lt;br/ &gt;&lt;br /&gt;Inserts a single line break&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;HTML Text Formatting&lt;br /&gt;________________________________________&lt;br /&gt;HTML Text Formatting&lt;br /&gt;This text is bold&lt;br /&gt;&lt;br /&gt;This text is big&lt;br /&gt;&lt;br /&gt;This text is italic&lt;br /&gt;&lt;br /&gt;This is computer output&lt;br /&gt;&lt;br /&gt;This is subscript and superscript&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;________________________________________&lt;br /&gt;HTML Formatting Tags&lt;br /&gt;HTML uses tags like &lt;b&gt; and &lt;i&gt; for formatting output, like bold or italic text.&lt;br /&gt;These HTML tags are called formatting tags. &lt;br /&gt;Refer to the bottom of this page for a complete reference. &lt;br /&gt;________________________________________&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;HTML Styles&lt;br /&gt;The style attribute is a new HTML attribute. It introduces CSS to HTML.&lt;br /&gt;________________________________________&lt;br /&gt;Look! Styles and colors&lt;br /&gt;This text is in Verdana and red&lt;br /&gt;This text is in Times and blue&lt;br /&gt;This text is 30 pixels high&lt;br /&gt;________________________________________&lt;br /&gt;The HTML Style Attribute&lt;br /&gt;The purpose of the style attribute is:&lt;br /&gt;To provide a common way to style all HTML elements.&lt;br /&gt;Styles was introduced with HTML 4, as the new and preferred way to style HTML elements. With HTML styles, styles can be added to HTML elements directly by using the style attribute, or indirectly by in separate style sheets (CSS files).&lt;br /&gt;You can learn everything about styles and CSS in our CSS tutorial.&lt;br /&gt;In our HTML tutorial we use the style attribute to introduce you to HTML styles. &lt;br /&gt;________________________________________&lt;br /&gt;HTML Style Examples&lt;br /&gt;style=&quot;background-color:yellow&quot;&lt;br /&gt;style=&quot;font-size:10px&quot;&lt;br /&gt;style=&quot;font-family:Times&quot;&lt;br /&gt;style=&quot;text-align:center&quot;&lt;br /&gt;________________________________________&lt;br /&gt;Deprecated Tags and Attributes&lt;br /&gt;In HTML 4, some tags and attributes are defined as deprecated. Deprecated means that they will not be supported in future versions of HTML and XHTML.&lt;br /&gt;The message is clear: Avoid the use of deprecated tags and attributes.&lt;br /&gt;These tags and attributes should be avoided:&lt;br /&gt;Tags	Description&lt;br /&gt;&lt;center&gt;	Defines centered content&lt;br /&gt;&lt;font&gt; and &lt;basefont&gt;	Defines HTML fonts&lt;br /&gt;&lt;s&gt; and &lt;strikeout&gt;	Defines strikeout text&lt;br /&gt;&lt;u&gt;	Defines underlined text&lt;br /&gt; 	 &lt;br /&gt;&lt;br /&gt;Attributes	&lt;br /&gt;Description&lt;br /&gt;align	Defines the alignment of text&lt;br /&gt;bgcolor	Defines the background color&lt;br /&gt;color	Defines the text color&lt;br /&gt;For all the above: Use styles instead.&lt;br /&gt;________________________________________&lt;br /&gt;Style Examples:&lt;br /&gt;________________________________________&lt;br /&gt;Background Color&lt;br /&gt;&lt;body style=&quot;background-color:yellow&quot;&gt;&lt;br /&gt;The style attribute defines a style for the &lt;body&gt; element.&lt;br /&gt;________________________________________&lt;br /&gt;Font Family, Color and Size&lt;br /&gt;&lt;p style=&quot;font-family:courier new; color:red; font-size:20px&quot;&gt;&lt;br /&gt;The style attribute defines a style for the &lt;p&gt; element.&lt;br /&gt;________________________________________&lt;br /&gt;Text Alignment&lt;br /&gt;&lt;h1 style=&quot;text-align:center&quot;&gt;&lt;br /&gt;The style attribute defines a style for the &lt;h1&gt; element.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;HTML Links&lt;br /&gt;&lt;br /&gt;A link is the &quot;address&quot; to a document (or a resource) on the web.&lt;br /&gt;________________________________________&lt;br /&gt;Hyperlinks, Anchors, and Links&lt;br /&gt;In web terms, a hyperlink is a reference (an address) to a resource on the web.&lt;br /&gt;Hyperlinks can point to any resource on the web: an HTML page, an image, a sound file, a movie, etc.&lt;br /&gt;An anchor is a term used to define a hyperlink destination inside a document.&lt;br /&gt;The HTML anchor element &lt;a&gt;, is used to define both hyperlinks and anchors.&lt;br /&gt;We will use the term HTML link when the &lt;a&gt; element points to a resource, and the term HTML anchor when the &lt;a&gt; elements defines an address inside a document..&lt;br /&gt;________________________________________&lt;br /&gt;An HTML Link&lt;br /&gt;Link syntax:&lt;br /&gt;&lt;a href=&quot;url&quot;&gt;Link text&lt;/a&gt; &lt;br /&gt;The start tag contains attributes about the link.&lt;br /&gt;The element content (Link text) defines the part to be displayed.&lt;br /&gt;Note: The element content doesn&#39;t have to be text. You can link from an image or any other HTML element.&lt;br /&gt;________________________________________&lt;br /&gt;The href Attribute&lt;br /&gt;The href attribute defines the link &quot;address&quot;.&lt;br /&gt;This &lt;a&gt; element defines a link to W3Schools:&lt;br /&gt;&lt;a href=&quot;http://www.w3schools.com/&quot;&gt;Visit W3Schools!&lt;/a&gt; &lt;br /&gt;The code above will display like this in a browser:&lt;br /&gt;Visit W3Schools!&lt;br /&gt;________________________________________&lt;br /&gt;The target Attribute&lt;br /&gt;The target attribute defines where the linked document will be opened.&lt;br /&gt;The code below will open the document in a new browser window:&lt;br /&gt;Example&lt;br /&gt;&lt;a href=&quot;http://www.w3schools.com/&quot;&lt;br /&gt;target=&quot;_blank&quot;&gt;Visit W3Schools!&lt;/a&gt; &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;________________________________________&lt;br /&gt;The name Attribute&lt;br /&gt;When the name attribute is used, the &lt;a&gt; element defines a named anchor inside a HTML document.&lt;br /&gt;Named anchor are not displayed in any special way. They are invisible to the reader.&lt;br /&gt;Named anchor syntax:&lt;br /&gt;&lt;a name=&quot;label&quot;&gt;Any content&lt;/a&gt; &lt;br /&gt;The link syntax to a named anchor: &lt;br /&gt;&lt;a href=&quot;#label&quot;&gt;Any content&lt;/a&gt; &lt;br /&gt;The # in the href attribute defines a link to a named anchor.&lt;br /&gt;Example:&lt;br /&gt;A named anchor inside an HTML document:&lt;br /&gt;&lt;a name=&quot;tips&quot;&gt;Useful Tips Section&lt;/a&gt; &lt;br /&gt;A link to the Useful Tips Section from the same document: &lt;br /&gt;&lt;a href=&quot;#tips&quot;&gt;&lt;br /&gt;Jump to the Useful Tips Section&lt;/a&gt; &lt;br /&gt;A link to the Useful Tips Section from another document:&lt;br /&gt;&lt;a href=&quot;http://www.w3schools.com/html_tutorial.htm#tips&quot;&gt;&lt;br /&gt;Jump to the Useful Tips Section&lt;/a&gt; &lt;br /&gt;Link Tags&lt;br /&gt;Tag	Description&lt;br /&gt;&lt;a&gt;&lt;br /&gt;Defines an anchor&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;HTML Images________________________________________&lt;br /&gt;&lt;br /&gt;The Image Tag and the Src Attribute &lt;br /&gt;In HTML, images are defined with the &lt;img&gt; tag.  &lt;br /&gt;The &lt;img&gt; tag is empty, which means that it contains attributes only and it has no closing tag. &lt;br /&gt;To display an image on a page, you need to use the src attribute. Src stands for &quot;source&quot;. The value of the src attribute is the URL of the image you want to display on your page. &lt;br /&gt;The syntax of defining an image:&lt;br /&gt;&lt;img src=&quot;url&quot; /&gt; &lt;br /&gt;The URL points to the location where the image is stored. An image named &quot;boat.gif&quot; located in the directory &quot;images&quot; on &quot;www.w3schools.com&quot; has the URL: http://www.w3schools.com/images/boat.gif. &lt;br /&gt;The browser puts the image where the image tag occurs in the document. If you put an image tag between two paragraphs, the browser shows the first paragraph, then the image, and then the second paragraph. &lt;br /&gt;________________________________________&lt;br /&gt;The Alt Attribute &lt;br /&gt;The alt attribute is used to define an &quot;alternate text&quot; for an image. The value of the alt attribute is an author-defined text: &lt;br /&gt;&lt;img src=&quot;boat.gif&quot; alt=&quot;Big Boat&quot; /&gt; &lt;br /&gt;The &quot;alt&quot; attribute tells the reader what he or she is missing on a page if the browser can&#39;t load images. The browser will then display the alternate text instead of the image. It is a good practice to include the &quot;alt&quot; attribute for each image on a page, to improve the display and usefulness of your document for people who have text-only browsers. &lt;br /&gt;________________________________________&lt;br /&gt;Basic Notes - Useful Tips&lt;br /&gt;If an HTML file contains ten images - eleven files are required to display the page right. Loading images take time, so my best advice is: Use images carefully. &lt;br /&gt;________________________________________&lt;br /&gt;Image Tags&lt;br /&gt;Tag	Description&lt;br /&gt;&lt;img&gt;&lt;br /&gt;Defines an image&lt;br /&gt;&lt;map&gt;&lt;br /&gt;Defines an image map&lt;br /&gt;&lt;area&gt;&lt;br /&gt;Defines a clickable area inside an image map&lt;br /&gt;&lt;br /&gt;________________________________________&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;HTML Tables&lt;br /&gt;Tables&lt;br /&gt;Tables are defined with the &lt;table&gt; tag. A table is divided into rows (with the &lt;tr&gt; tag), and each row is divided into data cells (with the &lt;td&gt; tag). The letters td stands for &quot;table data,&quot; which is the content of a data cell. A data cell can contain text, images, lists, paragraphs, forms, horizontal rules, tables, etc.&lt;br /&gt;&lt;table border=&quot;1&quot;&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;row 1, cell 1&lt;/td&gt;&lt;br /&gt;&lt;td&gt;row 1, cell 2&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;row 2, cell 1&lt;/td&gt;&lt;br /&gt;&lt;td&gt;row 2, cell 2&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt; &lt;br /&gt;How it looks in a browser:&lt;br /&gt;row 1, cell 1	row 1, cell 2&lt;br /&gt;row 2, cell 1	row 2, cell 2&lt;br /&gt;&lt;br /&gt;________________________________________&lt;br /&gt;Tables and the Border Attribute&lt;br /&gt;If you do not specify a border attribute the table will be displayed without any borders. Sometimes this can be useful, but most of the time, you want the borders to show. &lt;br /&gt;To display a table with borders, you will have to use the border attribute:&lt;br /&gt;&lt;table border=&quot;1&quot;&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Row 1, cell 1&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Row 1, cell 2&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt; &lt;br /&gt;&lt;br /&gt;________________________________________&lt;br /&gt;Headings in a Table&lt;br /&gt;Headings in a table are defined with the &lt;th&gt; tag.&lt;br /&gt;&lt;table border=&quot;1&quot;&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;th&gt;Heading&lt;/th&gt;&lt;br /&gt;&lt;th&gt;Another Heading&lt;/th&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;row 1, cell 1&lt;/td&gt;&lt;br /&gt;&lt;td&gt;row 1, cell 2&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;row 2, cell 1&lt;/td&gt;&lt;br /&gt;&lt;td&gt;row 2, cell 2&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt; &lt;br /&gt;How it looks in a browser:&lt;br /&gt;Heading	Another Heading&lt;br /&gt;row 1, cell 1	row 1, cell 2&lt;br /&gt;row 2, cell 1	row 2, cell 2&lt;br /&gt;&lt;br /&gt;________________________________________&lt;br /&gt;Empty Cells in a Table&lt;br /&gt;Table cells with no content are not displayed very well in most browsers.&lt;br /&gt;&lt;table border=&quot;1&quot;&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;row 1, cell 1&lt;/td&gt;&lt;br /&gt;&lt;td&gt;row 1, cell 2&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;row 2, cell 1&lt;/td&gt;&lt;br /&gt;&lt;td&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt; &lt;br /&gt;How it looks in a browser:&lt;br /&gt;row 1, cell 1	row 1, cell 2&lt;br /&gt;row 2, cell 1	&lt;br /&gt;Note that the borders around the empty table cell are missing (NB! Mozilla Firefox displays the border).&lt;br /&gt;To avoid this, add a non-breaking space (&amp;nbsp;) to empty data cells, to make the borders visible: &lt;br /&gt;&lt;table border=&quot;1&quot;&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;row 1, cell 1&lt;/td&gt;&lt;br /&gt;&lt;td&gt;row 1, cell 2&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;row 2, cell 1&lt;/td&gt;&lt;br /&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt; &lt;br /&gt;How it looks in a browser:&lt;br /&gt;row 1, cell 1	row 1, cell 2&lt;br /&gt;row 2, cell 1	 &lt;br /&gt;&lt;br /&gt;________________________________________&lt;br /&gt;Table Tags&lt;br /&gt;Tag	Description&lt;br /&gt;&lt;table&gt;&lt;br /&gt;Defines a table&lt;br /&gt;&lt;th&gt;&lt;br /&gt;Defines a table header&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;Defines a table row&lt;br /&gt;&lt;td&gt;&lt;br /&gt;Defines a table cell&lt;br /&gt;&lt;caption&gt;&lt;br /&gt;Defines a table caption&lt;br /&gt;&lt;colgroup&gt;&lt;br /&gt;Defines groups of table columns&lt;br /&gt;&lt;col&gt;&lt;br /&gt;Defines the attribute values for one or more columns in a table&lt;br /&gt;&lt;thead&gt;&lt;br /&gt;Defines a table head&lt;br /&gt;&lt;tbody&gt;&lt;br /&gt;Defines a table body &lt;br /&gt;&lt;tfoot&gt;&lt;br /&gt;Defines a table footer &lt;br /&gt;&lt;br /&gt;________________________________________&lt;br /&gt;&lt;br /&gt;HTML Lists&lt;br /&gt;HTML supports ordered, unordered and definition lists.&lt;br /&gt;________________________________________&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;HTML Lists&lt;br /&gt;•	This is the first &lt;br /&gt;•	This is the second &lt;br /&gt;•	This is the third &lt;br /&gt;&lt;br /&gt;________________________________________&lt;br /&gt;Unordered Lists&lt;br /&gt;An unordered list is a list of items. The list items are marked with bullets (typically small black circles).&lt;br /&gt;An unordered list starts with the &lt;ul&gt; tag. Each list item starts with the &lt;li&gt; tag.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Coffee&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Milk&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; &lt;br /&gt;Here is how it looks in a browser:&lt;br /&gt;•	Coffee &lt;br /&gt;•	Milk &lt;br /&gt;Inside a list item you can put paragraphs, line breaks, images, links, other lists, etc.&lt;br /&gt;________________________________________&lt;br /&gt;Ordered Lists&lt;br /&gt;An ordered list is also a list of items. The list items are marked with numbers.&lt;br /&gt;An ordered list starts with the &lt;ol&gt; tag. Each list item starts with the &lt;li&gt; tag.&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Coffee&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Milk&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt; &lt;br /&gt;Here is how it looks in a browser:&lt;br /&gt;1.	Coffee &lt;br /&gt;2.	Milk &lt;br /&gt;Inside a list item you can put paragraphs, line breaks, images, links, other lists, etc.&lt;br /&gt;________________________________________&lt;br /&gt;Definition Lists&lt;br /&gt;A definition list is not a list of single items. It is a list of items (terms), with a description of each item (term).&lt;br /&gt;A definition list starts with a &lt;dl&gt; tag (definition list).&lt;br /&gt;Each term starts with a &lt;dt&gt; tag (definition term).&lt;br /&gt;Each description starts with a &lt;dd&gt; tag (definition description).&lt;br /&gt;&lt;dl&gt;&lt;br /&gt;&lt;dt&gt;Coffee&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;Black hot drink&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;Milk&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;White cold drink&lt;/dd&gt;&lt;br /&gt;&lt;/dl&gt; &lt;br /&gt;Here is how it looks in a browser:&lt;br /&gt;Coffee &lt;br /&gt;Black hot drink &lt;br /&gt;Milk &lt;br /&gt;White cold drink &lt;br /&gt;Inside the &lt;dd&gt; tag you can put paragraphs, line breaks, images, links, other lists, etc.&lt;br /&gt;________________________________________&lt;br /&gt;List Tags&lt;br /&gt;Tag	Description&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;Defines an ordered list&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;Defines an unordered list&lt;br /&gt;&lt;li&gt;&lt;br /&gt;Defines a list item&lt;br /&gt;&lt;dl&gt;&lt;br /&gt;Defines a definition list&lt;br /&gt;&lt;dt&gt;&lt;br /&gt;Defines a term (an item) in a definition list&lt;br /&gt;&lt;dd&gt;&lt;br /&gt;Defines a description of a term in a definition list&lt;br /&gt;&lt;dir&gt;&lt;br /&gt;Deprecated. Use &lt;ul&gt; instead&lt;br /&gt;&lt;menu&gt;&lt;br /&gt;Deprecated. Use &lt;ul&gt; instead&lt;br /&gt;&lt;br /&gt;________________________________________&lt;br /&gt;&lt;br /&gt;HTML Forms and Input&lt;br /&gt;________________________________________&lt;br /&gt;HTML Forms are used to select different kinds of user input.&lt;br /&gt;________________________________________&lt;br /&gt;Forms&lt;br /&gt;A form is an area that can contain form elements.&lt;br /&gt;Form elements are elements that allow the user to enter information (like text fields, textarea fields, drop-down menus, radio buttons, checkboxes, etc.) in a form.&lt;br /&gt;A form is defined with the &lt;form&gt; tag.&lt;br /&gt;&lt;form&gt;&lt;br /&gt;.&lt;br /&gt;input elements&lt;br /&gt;.&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;&lt;br /&gt;________________________________________&lt;br /&gt;Input&lt;br /&gt;The most used form tag is the &lt;input&gt; tag. The type of input is specified with the type attribute. The most commonly used input types are explained below.&lt;br /&gt;Text Fields&lt;br /&gt;Text fields are used when you want the user to type letters, numbers, etc. in a form.&lt;br /&gt;&lt;form&gt;&lt;br /&gt;First name:&lt;br /&gt;&lt;input type=&quot;text&quot; name=&quot;firstname&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Last name:&lt;br /&gt;&lt;input type=&quot;text&quot; name=&quot;lastname&quot; /&gt;&lt;br /&gt;&lt;/form&gt; &lt;br /&gt;How it looks in a browser:&lt;br /&gt;First name:  &lt;br /&gt;Last name:  &lt;br /&gt;Note that the form itself is not visible. Also note that in most browsers, the width of the text field is 20 characters by default.  &lt;br /&gt;Radio Buttons&lt;br /&gt;Radio Buttons are used when you want the user to select one of a limited number of choices.&lt;br /&gt;&lt;form&gt;&lt;br /&gt;&lt;input type=&quot;radio&quot; name=&quot;sex&quot; value=&quot;male&quot; /&gt; Male&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;input type=&quot;radio&quot; name=&quot;sex&quot; value=&quot;female&quot; /&gt; Female&lt;br /&gt;&lt;/form&gt; &lt;br /&gt;How it looks in a browser:&lt;br /&gt; Male &lt;br /&gt; Female &lt;br /&gt;Note that only one option can be chosen. &lt;br /&gt;Checkboxes &lt;br /&gt;Checkboxes are used when you want the user to select one or more options of a limited number of choices.&lt;br /&gt;&lt;form&gt;&lt;br /&gt;I have a bike:&lt;br /&gt;&lt;input type=&quot;checkbox&quot; name=&quot;vehicle&quot; value=&quot;Bike&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I have a car:&lt;br /&gt;&lt;input type=&quot;checkbox&quot; name=&quot;vehicle&quot; value=&quot;Car&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I have an airplane:&lt;br /&gt;&lt;input type=&quot;checkbox&quot; name=&quot;vehicle&quot; value=&quot;Airplane&quot; /&gt;&lt;br /&gt;&lt;/form&gt; &lt;br /&gt;How it looks in a browser:&lt;br /&gt;I have a bike:  &lt;br /&gt;I have a car:  &lt;br /&gt;I have an airplane:  &lt;br /&gt;________________________________________&lt;br /&gt;The Form&#39;s Action Attribute and the Submit Button&lt;br /&gt;When the user clicks on the &quot;Submit&quot; button, the content of the form is sent to the server. The form&#39;s action attribute defines the name of the file to send the content to. The file defined in the action attribute usually does something with the received input.&lt;br /&gt;&lt;form name=&quot;input&quot; action=&quot;html_form_submit.asp&quot; method=&quot;get&quot;&gt;&lt;br /&gt;Username:&lt;br /&gt;&lt;input type=&quot;text&quot; name=&quot;user&quot; /&gt;&lt;br /&gt;&lt;input type=&quot;submit&quot; value=&quot;Submit&quot; /&gt;&lt;br /&gt;&lt;/form&gt; &lt;br /&gt;How it looks in a browser:&lt;br /&gt;Username:   &lt;br /&gt;If you type some characters in the text field above, and click the &quot;Submit&quot; button, the browser will send your input to a page called &quot;html_form_submit.asp&quot;. The page will show you the received input. &lt;br /&gt;________________________________________&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Form Tags&lt;br /&gt;Tag	Description&lt;br /&gt;&lt;form&gt;&lt;br /&gt;Defines a form for user input&lt;br /&gt;&lt;input&gt;&lt;br /&gt;Defines an input field&lt;br /&gt;&lt;textarea&gt;&lt;br /&gt;Defines a text-area (a multi-line text input control)&lt;br /&gt;&lt;label&gt;&lt;br /&gt;Defines a label to a control&lt;br /&gt;&lt;fieldset&gt;&lt;br /&gt;Defines a fieldset&lt;br /&gt;&lt;legend&gt;&lt;br /&gt;Defines a caption for a fieldset&lt;br /&gt;&lt;select&gt;&lt;br /&gt;Defines a selectable list (a drop-down box)&lt;br /&gt;&lt;optgroup&gt;&lt;br /&gt;Defines an option group&lt;br /&gt;&lt;option&gt;&lt;br /&gt;Defines an option in the drop-down box&lt;br /&gt;&lt;button&gt;&lt;br /&gt;Defines a push button&lt;br /&gt;&lt;isindex&gt;	Deprecated. Use &lt;input&gt; instead&lt;br /&gt;&lt;br /&gt;________________________________________&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;HTML Color Values&lt;br /&gt;Color Names Supported by All Browsers&lt;br /&gt;The list below is a complete list of the color names supported by all major browsers.&lt;br /&gt;You can click on a color name (or a hex value) to view the color as the background-color along with different text colors.&lt;br /&gt;Color Name	Color HEX&lt;br /&gt;Black &lt;br /&gt;#000000&lt;br /&gt;&lt;br /&gt;Navy &lt;br /&gt;#000080&lt;br /&gt;&lt;br /&gt;DarkBlue &lt;br /&gt;#00008B&lt;br /&gt;&lt;br /&gt;MediumBlue &lt;br /&gt;#0000CD&lt;br /&gt;&lt;br /&gt;Blue &lt;br /&gt;#0000FF&lt;br /&gt;&lt;br /&gt;DarkGreen &lt;br /&gt;#006400&lt;br /&gt;&lt;br /&gt;Green &lt;br /&gt;#008000&lt;br /&gt;&lt;br /&gt;Teal &lt;br /&gt;#008080&lt;br /&gt;&lt;br /&gt;DarkCyan &lt;br /&gt;#008B8B&lt;br /&gt;&lt;br /&gt;DeepSkyBlue &lt;br /&gt;#00BFFF&lt;br /&gt;&lt;br /&gt;DarkTurquoise &lt;br /&gt;#00CED1&lt;br /&gt;&lt;br /&gt;MediumSpringGreen &lt;br /&gt;#00FA9A&lt;br /&gt;&lt;br /&gt;Lime &lt;br /&gt;#00FF00&lt;br /&gt;&lt;br /&gt;SpringGreen &lt;br /&gt;#00FF7F&lt;br /&gt;&lt;br /&gt;Aqua &lt;br /&gt;#00FFFF&lt;br /&gt;&lt;br /&gt;Cyan &lt;br /&gt;#00FFFF&lt;br /&gt;&lt;br /&gt;MidnightBlue &lt;br /&gt;#191970&lt;br /&gt;&lt;br /&gt;DodgerBlue &lt;br /&gt;#1E90FF&lt;br /&gt;&lt;br /&gt;LightSeaGreen &lt;br /&gt;#20B2AA&lt;br /&gt;&lt;br /&gt;ForestGreen &lt;br /&gt;#228B22&lt;br /&gt;&lt;br /&gt;SeaGreen &lt;br /&gt;#2E8B57&lt;br /&gt;&lt;br /&gt;DarkSlateGray &lt;br /&gt;#2F4F4F&lt;br /&gt;&lt;br /&gt;LimeGreen &lt;br /&gt;#32CD32&lt;br /&gt;&lt;br /&gt;MediumSeaGreen &lt;br /&gt;#3CB371&lt;br /&gt;&lt;br /&gt;Turquoise &lt;br /&gt;#40E0D0&lt;br /&gt;&lt;br /&gt;RoyalBlue &lt;br /&gt;#4169E1&lt;br /&gt;&lt;br /&gt;SteelBlue &lt;br /&gt;#4682B4&lt;br /&gt;&lt;br /&gt;DarkSlateBlue &lt;br /&gt;#483D8B&lt;br /&gt;&lt;br /&gt;MediumTurquoise &lt;br /&gt;#48D1CC&lt;br /&gt;&lt;br /&gt;Indigo  &lt;br /&gt;#4B0082&lt;br /&gt;&lt;br /&gt;DarkOliveGreen &lt;br /&gt;#556B2F&lt;br /&gt;&lt;br /&gt;CadetBlue &lt;br /&gt;#5F9EA0&lt;br /&gt;&lt;br /&gt;CornflowerBlue &lt;br /&gt;#6495ED&lt;br /&gt;&lt;br /&gt;MediumAquaMarine &lt;br /&gt;#66CDAA&lt;br /&gt;&lt;br /&gt;DimGray &lt;br /&gt;#696969&lt;br /&gt;&lt;br /&gt;SlateBlue &lt;br /&gt;#6A5ACD&lt;br /&gt;&lt;br /&gt;OliveDrab &lt;br /&gt;#6B8E23&lt;br /&gt;&lt;br /&gt;SlateGray &lt;br /&gt;#708090&lt;br /&gt;&lt;br /&gt;LightSlateGray &lt;br /&gt;#778899&lt;br /&gt;&lt;br /&gt;MediumSlateBlue &lt;br /&gt;#7B68EE&lt;br /&gt;&lt;br /&gt;LawnGreen &lt;br /&gt;#7CFC00&lt;br /&gt;&lt;br /&gt;Chartreuse &lt;br /&gt;#7FFF00&lt;br /&gt;&lt;br /&gt;Aquamarine &lt;br /&gt;#7FFFD4&lt;br /&gt;&lt;br /&gt;Maroon &lt;br /&gt;#800000&lt;br /&gt;&lt;br /&gt;Purple &lt;br /&gt;#800080&lt;br /&gt;&lt;br /&gt;Olive &lt;br /&gt;#808000&lt;br /&gt;&lt;br /&gt;Gray &lt;br /&gt;#808080&lt;br /&gt;&lt;br /&gt;SkyBlue &lt;br /&gt;#87CEEB&lt;br /&gt;&lt;br /&gt;LightSkyBlue &lt;br /&gt;#87CEFA&lt;br /&gt;&lt;br /&gt;BlueViolet &lt;br /&gt;#8A2BE2&lt;br /&gt;&lt;br /&gt;DarkRed &lt;br /&gt;#8B0000&lt;br /&gt;&lt;br /&gt;DarkMagenta &lt;br /&gt;#8B008B&lt;br /&gt;&lt;br /&gt;SaddleBrown &lt;br /&gt;#8B4513&lt;br /&gt;&lt;br /&gt;DarkSeaGreen &lt;br /&gt;#8FBC8F&lt;br /&gt;&lt;br /&gt;LightGreen &lt;br /&gt;#90EE90&lt;br /&gt;&lt;br /&gt;MediumPurple &lt;br /&gt;#9370D8&lt;br /&gt;&lt;br /&gt;DarkViolet &lt;br /&gt;#9400D3&lt;br /&gt;&lt;br /&gt;PaleGreen &lt;br /&gt;#98FB98&lt;br /&gt;&lt;br /&gt;DarkOrchid &lt;br /&gt;#9932CC&lt;br /&gt;&lt;br /&gt;YellowGreen &lt;br /&gt;#9ACD32&lt;br /&gt;&lt;br /&gt;Sienna &lt;br /&gt;#A0522D&lt;br /&gt;&lt;br /&gt;Brown &lt;br /&gt;#A52A2A&lt;br /&gt;&lt;br /&gt;DarkGray &lt;br /&gt;#A9A9A9&lt;br /&gt;&lt;br /&gt;LightBlue &lt;br /&gt;#ADD8E6&lt;br /&gt;&lt;br /&gt;GreenYellow &lt;br /&gt;#ADFF2F&lt;br /&gt;&lt;br /&gt;PaleTurquoise &lt;br /&gt;#AFEEEE&lt;br /&gt;&lt;br /&gt;LightSteelBlue &lt;br /&gt;#B0C4DE&lt;br /&gt;&lt;br /&gt;PowderBlue &lt;br /&gt;#B0E0E6&lt;br /&gt;&lt;br /&gt;FireBrick &lt;br /&gt;#B22222&lt;br /&gt;&lt;br /&gt;DarkGoldenRod &lt;br /&gt;#B8860B&lt;br /&gt;&lt;br /&gt;MediumOrchid &lt;br /&gt;#BA55D3&lt;br /&gt;&lt;br /&gt;RosyBrown &lt;br /&gt;#BC8F8F&lt;br /&gt;&lt;br /&gt;DarkKhaki &lt;br /&gt;#BDB76B&lt;br /&gt;&lt;br /&gt;Silver &lt;br /&gt;#C0C0C0&lt;br /&gt;&lt;br /&gt;MediumVioletRed &lt;br /&gt;#C71585&lt;br /&gt;&lt;br /&gt;IndianRed  &lt;br /&gt;#CD5C5C&lt;br /&gt;&lt;br /&gt;Peru &lt;br /&gt;#CD853F&lt;br /&gt;&lt;br /&gt;Chocolate &lt;br /&gt;#D2691E&lt;br /&gt;&lt;br /&gt;Tan &lt;br /&gt;#D2B48C&lt;br /&gt;&lt;br /&gt;LightGrey &lt;br /&gt;#D3D3D3&lt;br /&gt;&lt;br /&gt;PaleVioletRed &lt;br /&gt;#D87093&lt;br /&gt;&lt;br /&gt;Thistle &lt;br /&gt;#D8BFD8&lt;br /&gt;&lt;br /&gt;Orchid &lt;br /&gt;#DA70D6&lt;br /&gt;&lt;br /&gt;GoldenRod &lt;br /&gt;#DAA520&lt;br /&gt;&lt;br /&gt;Crimson &lt;br /&gt;#DC143C&lt;br /&gt;&lt;br /&gt;Gainsboro &lt;br /&gt;#DCDCDC&lt;br /&gt;&lt;br /&gt;Plum &lt;br /&gt;#DDA0DD&lt;br /&gt;&lt;br /&gt;BurlyWood &lt;br /&gt;#DEB887&lt;br /&gt;&lt;br /&gt;LightCyan &lt;br /&gt;#E0FFFF&lt;br /&gt;&lt;br /&gt;Lavender &lt;br /&gt;#E6E6FA&lt;br /&gt;&lt;br /&gt;DarkSalmon &lt;br /&gt;#E9967A&lt;br /&gt;&lt;br /&gt;Violet &lt;br /&gt;#EE82EE&lt;br /&gt;&lt;br /&gt;PaleGoldenRod &lt;br /&gt;#EEE8AA&lt;br /&gt;&lt;br /&gt;LightCoral &lt;br /&gt;#F08080&lt;br /&gt;&lt;br /&gt;Khaki &lt;br /&gt;#F0E68C&lt;br /&gt;&lt;br /&gt;AliceBlue &lt;br /&gt;#F0F8FF&lt;br /&gt;&lt;br /&gt;HoneyDew &lt;br /&gt;#F0FFF0&lt;br /&gt;&lt;br /&gt;Azure &lt;br /&gt;#F0FFFF&lt;br /&gt;&lt;br /&gt;SandyBrown &lt;br /&gt;#F4A460&lt;br /&gt;&lt;br /&gt;Wheat &lt;br /&gt;#F5DEB3&lt;br /&gt;&lt;br /&gt;Beige &lt;br /&gt;#F5F5DC&lt;br /&gt;&lt;br /&gt;WhiteSmoke &lt;br /&gt;#F5F5F5&lt;br /&gt;&lt;br /&gt;MintCream &lt;br /&gt;#F5FFFA&lt;br /&gt;&lt;br /&gt;GhostWhite &lt;br /&gt;#F8F8FF&lt;br /&gt;&lt;br /&gt;Salmon &lt;br /&gt;#FA8072&lt;br /&gt;&lt;br /&gt;AntiqueWhite &lt;br /&gt;#FAEBD7&lt;br /&gt;&lt;br /&gt;Linen &lt;br /&gt;#FAF0E6&lt;br /&gt;&lt;br /&gt;LightGoldenRodYellow &lt;br /&gt;#FAFAD2&lt;br /&gt;&lt;br /&gt;OldLace &lt;br /&gt;#FDF5E6&lt;br /&gt;&lt;br /&gt;Red &lt;br /&gt;#FF0000&lt;br /&gt;&lt;br /&gt;Fuchsia &lt;br /&gt;#FF00FF&lt;br /&gt;&lt;br /&gt;Magenta &lt;br /&gt;#FF00FF&lt;br /&gt;&lt;br /&gt;DeepPink &lt;br /&gt;#FF1493&lt;br /&gt;&lt;br /&gt;OrangeRed &lt;br /&gt;#FF4500&lt;br /&gt;&lt;br /&gt;Tomato &lt;br /&gt;#FF6347&lt;br /&gt;&lt;br /&gt;HotPink &lt;br /&gt;#FF69B4&lt;br /&gt;&lt;br /&gt;Coral &lt;br /&gt;#FF7F50&lt;br /&gt;&lt;br /&gt;Darkorange &lt;br /&gt;#FF8C00&lt;br /&gt;&lt;br /&gt;LightSalmon &lt;br /&gt;#FFA07A&lt;br /&gt;&lt;br /&gt;Orange &lt;br /&gt;#FFA500&lt;br /&gt;&lt;br /&gt;LightPink &lt;br /&gt;#FFB6C1&lt;br /&gt;&lt;br /&gt;Pink &lt;br /&gt;#FFC0CB&lt;br /&gt;&lt;br /&gt;Gold &lt;br /&gt;#FFD700&lt;br /&gt;&lt;br /&gt;PeachPuff &lt;br /&gt;#FFDAB9&lt;br /&gt;&lt;br /&gt;NavajoWhite &lt;br /&gt;#FFDEAD&lt;br /&gt;&lt;br /&gt;Moccasin &lt;br /&gt;#FFE4B5&lt;br /&gt;&lt;br /&gt;Bisque &lt;br /&gt;#FFE4C4&lt;br /&gt;&lt;br /&gt;MistyRose &lt;br /&gt;#FFE4E1&lt;br /&gt;&lt;br /&gt;BlanchedAlmond &lt;br /&gt;#FFEBCD&lt;br /&gt;&lt;br /&gt;PapayaWhip &lt;br /&gt;#FFEFD5&lt;br /&gt;&lt;br /&gt;LavenderBlush &lt;br /&gt;#FFF0F5&lt;br /&gt;&lt;br /&gt;SeaShell &lt;br /&gt;#FFF5EE&lt;br /&gt;&lt;br /&gt;Cornsilk &lt;br /&gt;#FFF8DC&lt;br /&gt;&lt;br /&gt;LemonChiffon &lt;br /&gt;#FFFACD&lt;br /&gt;&lt;br /&gt;FloralWhite &lt;br /&gt;#FFFAF0&lt;br /&gt;&lt;br /&gt;Snow &lt;br /&gt;#FFFAFA&lt;br /&gt;&lt;br /&gt;Yellow &lt;br /&gt;#FFFF00&lt;br /&gt;&lt;br /&gt;LightYellow &lt;br /&gt;#FFFFE0&lt;br /&gt;&lt;br /&gt;Ivory &lt;br /&gt;#FFFFF0&lt;br /&gt;&lt;br /&gt;White &lt;br /&gt;#FFFFFF&lt;br /&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerscienze.blogspot.com/feeds/8317444876391884027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerscienze.blogspot.com/2010/01/html-intoduction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/8317444876391884027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/8317444876391884027'/><link rel='alternate' type='text/html' href='http://computerscienze.blogspot.com/2010/01/html-intoduction.html' title='HTML intoduction'/><author><name>lohith kumar</name><uri>http://www.blogger.com/profile/08530468303679081678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqHVxoT0zNNgw32kuE1WItEktjohP6UwVgbL74SJ-5omOek28-G9GNdlhHGvXGx7XybeksRrVMbegL3t4wFN9Bs1YA_db1jMRT7z_aT1ytriw1Y9GxtHx5gmpbmZOzTw/s220/1000_tiger_parts_seized.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif_a0oS21D5zfR2plgrYxoBfeN5tkJfrd7pZ5rOsgOa2jM4RreKf-iEJ0iqqR5sps_Y3rFNdyDWNdWRjPDPZNBuua_qGksJhJ89YycJdejWjP2zzj2WmwTWXeVxwwF6dP-0_AOj045JKC5/s72-c/Sonam_Kapoor4.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337827601128114885.post-2538984133828420146</id><published>2010-01-11T01:50:00.001+05:30</published><updated>2012-01-15T06:59:37.761+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="ASP - Active Server Page"/><title type='text'>ASP - Active Server Page</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;b&gt; &lt;br /&gt;
ASP Introduction &lt;br /&gt;
&lt;br /&gt;
ASP is a powerful tool for making dynamic and interactive Web pages. &lt;br /&gt;
An ASP file can contain text, HTML tags and scripts. Scripts in an ASP file are executed on the server. &lt;br /&gt;
What you should already know &lt;br /&gt;
Before you continue you should have some basic understanding of the following: &lt;br /&gt;
•	HTML / XHTML  &lt;br /&gt;
•	A scripting language like JavaScript or VBScript  &lt;br /&gt;
&lt;br /&gt;
What is ASP? &lt;br /&gt;
•	ASP stands for Active Server Pages  &lt;br /&gt;
•	ASP is a Microsoft Technology  &lt;br /&gt;
•	ASP is a program that runs inside IIS  &lt;br /&gt;
•	IIS stands for Internet Information Services  &lt;br /&gt;
•	IIS comes as a free component with Windows 2000  &lt;br /&gt;
•	IIS is also a part of the Windows NT 4.0 Option Pack  &lt;br /&gt;
•	The Option Pack can be downloaded from Microsoft  &lt;br /&gt;
•	PWS is a smaller - but fully functional - version of IIS  &lt;br /&gt;
•	PWS can be found on your Windows 95/98 CD  &lt;br /&gt;
&lt;br /&gt;
ASP Compatibility &lt;br /&gt;
•	To run IIS you must have Windows NT 4.0 or later  &lt;br /&gt;
•	To run PWS you must have Windows 95 or later  &lt;br /&gt;
•	ChiliASP is a technology that runs ASP without Windows OS  &lt;br /&gt;
•	InstantASP is another technology that runs ASP without Windows  &lt;br /&gt;
&lt;br /&gt;
What is an ASP File? &lt;br /&gt;
•	An ASP file is just the same as an HTML file  &lt;br /&gt;
•	An ASP file can contain text, HTML, XML, and scripts  &lt;br /&gt;
•	Scripts in an ASP file are executed on the server  &lt;br /&gt;
•	An ASP file has the file extension &quot;.asp&quot;  &lt;br /&gt;
How Does ASP Differ from HTML? &lt;br /&gt;
•	When a browser requests an HTML file, the server returns the file  &lt;br /&gt;
•	When a browser requests an ASP file, IIS passes the request to the ASP engine. The ASP engine reads the ASP file, line by line, and executes the scripts in the file. Finally, the ASP file is returned to the browser as plain HTML  &lt;br /&gt;
________________________________________ &lt;br /&gt;
&lt;br /&gt;
What can ASP do for you? &lt;br /&gt;
•	Dynamically edit, change, or add any content of a Web page  &lt;br /&gt;
•	Respond to user queries or data submitted from HTML forms  &lt;br /&gt;
•	Access any data or databases and return the results to a browser  &lt;br /&gt;
•	Customize a Web page to make it more useful for individual users  &lt;br /&gt;
•	The advantages of using ASP instead of CGI and Perl, are those of simplicity and speed  &lt;br /&gt;
•	Provide security - since ASP code cannot be viewed from the browser  &lt;br /&gt;
•	Clever ASP programming can minimize the network traffic  &lt;br /&gt;
&lt;br /&gt;
You can run ASP on your own PC. &lt;br /&gt;
________________________________________ &lt;br /&gt;
Your Windows PC as a Web Server &lt;br /&gt;
•	Your own PC can act as a web server if you install IIS or PWS  &lt;br /&gt;
•	IIS or PWS turns your computer into a web server  &lt;br /&gt;
•	Microsoft IIS and PWS are free web server components  &lt;br /&gt;
________________________________________ &lt;br /&gt;
I&lt;br /&gt;
IS - Internet Information Server &lt;br /&gt;
IIS is a set of Internet-based services for servers created by Microsoft for use with Microsoft Windows. &lt;br /&gt;
IIS comes with Windows 2000, XP, and Vista. It is also available for Windows NT. &lt;br /&gt;
IIS is easy to install and ideal for developing and testing web applications. &lt;br /&gt;
________________________________________ &lt;br /&gt;
&lt;br /&gt;
PWS - Personal Web Server &lt;br /&gt;
PWS is for older Windows system like Windows 95, 98, and NT. &lt;br /&gt;
PWS is easy to install and can be used for developing and testing web applications including ASP. &lt;br /&gt;
We don&#39;t recommend running PWS for anything else than training. It is outdated and has security issues. &lt;br /&gt;
________________________________________ &lt;br /&gt;
&lt;br /&gt;
Windows Web Server Versions &lt;br /&gt;
•	Windows Vista Business, Enterprise and Ultimate come with IIS 7  &lt;br /&gt;
•	Windows Vista Home Premium comes with IIS 7  &lt;br /&gt;
•	Windows Vista Home Edition does not support PWS or IIS  &lt;br /&gt;
•	Windows XP Professional comes with IIS 5.1  &lt;br /&gt;
•	Windows XP Home Edition does not support IIS or PWS  &lt;br /&gt;
•	Windows 2000 Professional comes with IIS 5.0  &lt;br /&gt;
•	Windows NT Professional comes with IIS 3 and also supports IIS 4  &lt;br /&gt;
•	Windows NT Workstation supports PWS and IIS 3  &lt;br /&gt;
•	Windows ME does not support PWS or IIS  &lt;br /&gt;
•	Windows 98 comes with PWS  &lt;br /&gt;
•	Windows 95 supports PWS  &lt;br /&gt;
________________________________________ &lt;br /&gt;
&lt;br /&gt;
How to Install IIS on Windows Vista &lt;br /&gt;
Follow these steps to install IIS on Windows Vista: &lt;br /&gt;
1.	Open the Control Panel from the Start menu  &lt;br /&gt;
2.	Double-click Programs and Features  &lt;br /&gt;
3.	Click &quot;Turn Windows features on or off&quot; (a link to the left)  &lt;br /&gt;
4.	Select the check box for Internet Information Services (IIS), and click OK  &lt;br /&gt;
After you have installed IIS, make sure you install all patches for bugs and security problems. (Run Windows Update). &lt;br /&gt;
________________________________________ &lt;br /&gt;
&lt;br /&gt;
How to Install IIS on Windows XP and Windows 2000 &lt;br /&gt;
Follow these steps to install IIS on Windows XP and Windows 2000: &lt;br /&gt;
1.	On the Start menu, click Settings and select Control Panel  &lt;br /&gt;
2.	Double-click Add or Remove Programs  &lt;br /&gt;
3.	Click Add/Remove Windows Components  &lt;br /&gt;
4.	Click Internet Information Services (IIS)  &lt;br /&gt;
5.	Click Details  &lt;br /&gt;
6.	Select the check box for World Wide Web Service, and click OK  &lt;br /&gt;
7.	In Windows Component selection, click Next to install IIS  &lt;br /&gt;
Test Your Web &lt;br /&gt;
After you have installed IIS or PWS follow these steps: &lt;br /&gt;
1.	Look for a new folder called Inetpub on your hard drive  &lt;br /&gt;
2.	Open the Inetpub folder, and find a folder named wwwroot  &lt;br /&gt;
3.	Create a new folder, like &quot;MyWeb&quot;, under wwwroot  &lt;br /&gt;
4.	Write some ASP code and save the file as &quot;test1.asp&quot; in the new folder  &lt;br /&gt;
5.	Make sure your Web server is running (see below)  &lt;br /&gt;
6.	Open your browser and type &quot;http://localhost/MyWeb/test1.asp&quot;, to view your first web page  &lt;br /&gt;
Note: Look for the IIS (or PWS) symbol in your start menu or task bar. The program has functions for starting and stopping the web server, disable and enable ASP, and much more. &lt;br /&gt;
ASP Basic Syntax Rules &lt;br /&gt;
Write Output to a Browser &lt;br /&gt;
An ASP file normally contains HTML tags, just like an HTML file. However, an ASP file can also contain server scripts, surrounded by the delimiters &amp;lt;% and %&amp;gt;. &lt;br /&gt;
Server scripts are executed on the server, and can contain any expressions, statements, procedures, or operators valid for the scripting language you prefer to use.  &lt;br /&gt;
The response.write Command &lt;br /&gt;
The response.write command is used to write output to a browser. The following example sends the text &quot;Hello World&quot; to the browser: &lt;br /&gt;
Example &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% response.write(&quot;Hello World!&quot;)  %&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also a shorthand method for the response.write command. The following example also sends the text &quot;Hello World&quot; to the browser: &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Example &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% =&quot;Hello World!&quot;  %&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The example above writes &quot;Hello World!&quot; into the body of the document.  &lt;br /&gt;
________________________________________ &lt;br /&gt;
&lt;br /&gt;
Using JavaScript in ASP  &lt;br /&gt;
To set JavaScript as the default scripting language for a particular page you must insert a language specification at the top of the page: &lt;br /&gt;
&amp;lt;%@ language=&quot;javascript&quot;%&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% Response.Write(&quot;Hello World!&quot;)  %&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: JavaScript is case sensitive! You will have to write your ASP code with uppercase letters and lowercase letters when the language requires it. &lt;br /&gt;
________________________________________ &lt;br /&gt;
&lt;br /&gt;
Other Scripting Languages  &lt;br /&gt;
ASP is shipped with VBScript and JScript (Microsoft&#39;s implementation of JavaScript). If you want to script in another language, like PERL, REXX, or Python, you will have to install script engines for them. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;ASP Variables &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
A variable is used to store information.  &lt;br /&gt;
Declaring a variable: &lt;br /&gt;
Variables are used to store information. The following example demonstrates how to declare a variable, assign a value to it, and use the value in a text. &lt;br /&gt;
&lt;br /&gt;
Declare an array &lt;br /&gt;
&lt;br /&gt;
Arrays are used to store a series of related data items. The following example demonstrates how to declare an array that stores names. &lt;br /&gt;
&lt;br /&gt;
Loop through the HTML headings &lt;br /&gt;
How to loop through the six headings in HTML. &lt;br /&gt;
&lt;br /&gt;
Time-based greeting using VBScript &lt;br /&gt;
This example will display a different message to the user depending on the time on the server. &lt;br /&gt;
&lt;br /&gt;
Time-based greeting using JavaScript &lt;br /&gt;
This example is the same as the one above, but the syntax is different. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lifetime of Variables  &lt;br /&gt;
&lt;br /&gt;
A variable declared outside a procedure can be accessed and changed by any script in the ASP file.  &lt;br /&gt;
&lt;br /&gt;
A variable declared inside a procedure is created and destroyed every time the procedure is executed. No scripts outside the procedure can access or change the variable.  &lt;br /&gt;
To declare variables accessible to more than one ASP file, declare them as session variables or application variables. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Session Variables &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Session variables are used to store information about ONE single user, and are available to all pages in one application. Typically information stored in session variables are name, id, and preferences. &lt;br /&gt;
Application Variables  &lt;br /&gt;
Application variables are also available to all pages in one application. Application variables are used to store information about ALL users in one specific application. &lt;br /&gt;
________________________________________ &lt;br /&gt;
&lt;br /&gt;
ASP Procedures &lt;br /&gt;
&lt;br /&gt;
In ASP you can call a JavaScript procedure from a VBScript and vice versa.  &lt;br /&gt;
________________________________________ &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Procedures &lt;/b&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The ASP source code can contain procedures and functions:&lt;i&gt;&lt;/i&gt;&lt;/b&gt;  &lt;br /&gt;
&lt;br /&gt;
Example &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% sub vbproc(num1,num2)  response.write(num1*num2)  end sub  %&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;You can call a procedure like this:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
Result: &amp;lt;%call vbproc(3,4)%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, like this:&lt;br /&gt;
&lt;br /&gt;
Result: &amp;lt;%vbproc 3,4%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Insert the &amp;lt;%@ language=&quot;language&quot; %&amp;gt; line above the  tag to write the procedure/function in another scripting language:  &lt;br /&gt;
Example &lt;br /&gt;
&amp;lt;%@ language=&quot;javascript&quot; %&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% function jsproc(num1,num2)  {  Response.Write(num1*num2)  }  %&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Result: &amp;lt;%jsproc(3,4)%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
________________________________________ &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Differences between VBScript and JavaScript&lt;/b&gt; &lt;br /&gt;
&lt;br /&gt;
When calling a VBScript or a JavaScript procedure from an ASP file written in VBScript, you can use the &quot;call&quot; keyword followed by the procedure name. If a procedure requires parameters, the parameter list must be enclosed in parentheses when using the &quot;call&quot; keyword. If you omit the &quot;call&quot; keyword, the parameter list must not be enclosed in parentheses. If the procedure has no parameters, the parentheses are optional. &lt;br /&gt;
When calling a JavaScript or a VBScript procedure from an ASP file written in JavaScript, always use parentheses after the procedure name. &lt;br /&gt;
________________________________________ &lt;br /&gt;
ASP Forms and User Input &lt;br /&gt;
&lt;br /&gt;
The Request.QueryString and Request.Form commands are used to retrieve user input from forms. &lt;br /&gt;
User Input  &lt;br /&gt;
The Request object can be used to retrieve user information from forms. &lt;br /&gt;
Example HTML form &lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;form action=&quot;simpleform.asp&quot; method=&quot;get&quot;&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;First Name: &lt;input name=&quot;fname&quot; type=&quot;text&quot; /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Last Name: &lt;input name=&quot;lname&quot; type=&quot;text&quot; /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;input type=&quot;submit&quot; value=&quot;Submit&quot; /&gt; &lt;/b&gt;&lt;/form&gt;&lt;b&gt;&lt;br /&gt;
User input can be retrieved with the Request.QueryString or Request.Form command. &lt;br /&gt;
________________________________________ &lt;br /&gt;
&lt;br /&gt;
Request.QueryString &lt;br /&gt;
&lt;br /&gt;
The Request.QueryString command is used to collect values in a form with method=&quot;get&quot;. &lt;br /&gt;
Information sent from a form with the GET method is visible to everyone (it will be displayed in the browser&#39;s address bar) and has limits on the amount of information to send. &lt;br /&gt;
If a user typed &quot;Bill&quot; and &quot;Gates&quot; in the HTML form above, the URL sent to the server would look like this: &lt;br /&gt;
http://www.w3schools.com/simpleform.asp?fname=Bill&amp;amp;lname=Gates &lt;br /&gt;
Assume that &quot;simpleform.asp&quot; contains the following ASP script: &lt;br /&gt;
&lt;br /&gt;
Welcome &lt;br /&gt;
&amp;lt;% response.write(request.querystring(&quot;fname&quot;))  response.write(&quot; &quot; &amp;amp; request.querystring(&quot;lname&quot;))  %&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The browser will display the following in the body of the document: &lt;br /&gt;
Welcome Bill Gates &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Examples &lt;br /&gt;
&lt;br /&gt;
A form with method=&quot;get&quot; &lt;br /&gt;
How to interact with the user, with the Request.QueryString command. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;form action=&quot;demo_reqquery.asp&quot; method=&quot;get&quot;&gt;&lt;br /&gt;
Your name: &lt;input name=&quot;fname&quot; size=&quot;20&quot; type=&quot;text&quot; /&gt; &lt;br /&gt;
&lt;input type=&quot;submit&quot; value=&quot;Submit&quot; /&gt; &lt;/form&gt;&lt;br /&gt;
&amp;lt;% dim fname  fname=Request.QueryString(&quot;fname&quot;)  If fname&amp;lt;&amp;gt;&quot;&quot; Then &lt;br /&gt;
Response.Write(&quot;Hello &quot; &amp;amp; fname &amp;amp; &quot;!&lt;br /&gt;
&quot;) &lt;br /&gt;
Response.Write(&quot;How are you today?&quot;) &lt;br /&gt;
End If &lt;br /&gt;
%&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
________________________________________ &lt;br /&gt;
Request.Form  &lt;br /&gt;
The Request.Form command is used to collect values in a form with method=&quot;post&quot;. &lt;br /&gt;
Information sent from a form with the POST method is invisible to others and has no limits on the amount of information to send. &lt;br /&gt;
If a user typed &quot;Bill&quot; and &quot;Gates&quot; in the HTML form above, the URL sent to the server would look like this:  &lt;br /&gt;
http://www.w3schools.com/simpleform.asp &lt;br /&gt;
Assume that &quot;simpleform.asp&quot; contains the following ASP script: &lt;br /&gt;
&lt;br /&gt;
Welcome &lt;br /&gt;
&amp;lt;% response.write(request.form(&quot;fname&quot;))  response.write(&quot; &quot; &amp;amp; request.form(&quot;lname&quot;))  %&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The browser will display the following in the body of the document: &lt;br /&gt;
Welcome Bill Gates &lt;br /&gt;
&lt;br /&gt;
Example: &lt;br /&gt;
A form with method=&quot;post&quot; &lt;br /&gt;
How to interact with the user, with the Request.Form command. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;form action=&quot;demo_simpleform.asp&quot; method=&quot;post&quot;&gt;&lt;br /&gt;
Your name: &lt;input name=&quot;fname&quot; size=&quot;20&quot; type=&quot;text&quot; /&gt; &lt;br /&gt;
&lt;input type=&quot;submit&quot; value=&quot;Submit&quot; /&gt; &lt;/form&gt;&lt;br /&gt;
&amp;lt;% dim fname  fname=Request.Form(&quot;fname&quot;)  If fname&amp;lt;&amp;gt;&quot;&quot; Then &lt;br /&gt;
Response.Write(&quot;Hello &quot; &amp;amp; fname &amp;amp; &quot;!&lt;br /&gt;
&quot;) &lt;br /&gt;
Response.Write(&quot;How are you today?&quot;) &lt;br /&gt;
End If &lt;br /&gt;
%&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A form with radio buttons &lt;br /&gt;
How to interact with the user, through radio buttons, with the Request.Form command. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;% dim cars  cars=Request.Form(&quot;cars&quot;)  %&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;form action=&quot;demo_radiob.asp&quot; method=&quot;post&quot;&gt;&lt;br /&gt;
Please select your favorite car:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;input &lt;%if=&quot;&quot; cars=&quot;Volvo&quot; name=&quot;cars&quot; response.write(&quot;checked&quot;)%=&quot;&quot; then=&quot;&quot; type=&quot;radio&quot; /&gt; &lt;br /&gt;
value=&quot;Volvo&quot;&amp;gt;Volvo &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;input &lt;%if=&quot;&quot; cars=&quot;Saab&quot; name=&quot;cars&quot; response.write(&quot;checked&quot;)%=&quot;&quot; then=&quot;&quot; type=&quot;radio&quot; /&gt; &lt;br /&gt;
value=&quot;Saab&quot;&amp;gt;Saab &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;input &lt;%if=&quot;&quot; cars=&quot;BMW&quot; name=&quot;cars&quot; response.write(&quot;checked&quot;)%=&quot;&quot; then=&quot;&quot; type=&quot;radio&quot; /&gt; &lt;br /&gt;
value=&quot;BMW&quot;&amp;gt;BMW &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;input type=&quot;submit&quot; value=&quot;Submit&quot; /&gt; &lt;/form&gt;&lt;br /&gt;
&amp;lt;% if cars&amp;lt;&amp;gt;&quot;&quot; then &lt;br /&gt;
Response.Write(&quot;Your favorite car is: &quot; &amp;amp; cars &amp;amp; &quot;&lt;br /&gt;
&quot;) &lt;br /&gt;
end if &lt;br /&gt;
%&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
________________________________________ &lt;br /&gt;
Form Validation &lt;br /&gt;
User input should be validated on the browser whenever possible (by client scripts). Browser validation is faster and reduces the server load. &lt;br /&gt;
You should consider server validation if the user input will be inserted into a database. A good way to validate a form on the server is to post the form to itself, instead of jumping to a different page. The user will then get the error messages on the same page as the form. This makes it easier to discover the error. &lt;br /&gt;
7 ASP Cookies &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
What is a Cookie?  &lt;br /&gt;
A cookie is often used to identify a user. A cookie is a small file that the server embeds on the user&#39;s computer. Each time the same computer requests a page with a browser, it will send the cookie too. With ASP, you can both create and retrieve cookie values. &lt;br /&gt;
________________________________________ &lt;br /&gt;
How to Create a Cookie? &lt;br /&gt;
The &quot;Response.Cookies&quot; command is used to create cookies. &lt;br /&gt;
Note: The Response.Cookies command must appear BEFORE the  tag. &lt;br /&gt;
In the example below, we will create a cookie named &quot;firstname&quot; and assign the value &quot;Alex&quot; to it: &lt;br /&gt;
&amp;lt;% Response.Cookies(&quot;firstname&quot;)=&quot;Alex&quot;  %&amp;gt; &lt;br /&gt;
It is also possible to assign properties to a cookie, like setting a date when the cookie should expire: &lt;br /&gt;
&amp;lt;% Response.Cookies(&quot;firstname&quot;)=&quot;Alex&quot;  Response.Cookies(&quot;firstname&quot;).Expires=#May 10,2012#  %&amp;gt; &lt;br /&gt;
&lt;br /&gt;
________________________________________ &lt;br /&gt;
How to Retrieve a Cookie Value? &lt;br /&gt;
The &quot;Request.Cookies&quot; command is used to retrieve a cookie value. &lt;br /&gt;
In the example below, we retrieve the value of the cookie named &quot;firstname&quot; and display it on a page: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;% fname=Request.Cookies(&quot;firstname&quot;)  response.write(&quot;Firstname=&quot; &amp;amp; fname)  %&amp;gt; &lt;br /&gt;
Output: Firstname=Alex &lt;br /&gt;
________________________________________ &lt;br /&gt;
A Cookie with Keys &lt;br /&gt;
If a cookie contains a collection of multiple values, we say that the cookie has Keys. &lt;br /&gt;
In the example below, we will create a cookie collection named &quot;user&quot;. The &quot;user&quot; cookie has Keys that contains information about a user: &lt;br /&gt;
&amp;lt;% Response.Cookies(&quot;user&quot;)(&quot;firstname&quot;)=&quot;John&quot;  Response.Cookies(&quot;user&quot;)(&quot;lastname&quot;)=&quot;Smith&quot;  Response.Cookies(&quot;user&quot;)(&quot;country&quot;)=&quot;Norway&quot;  Response.Cookies(&quot;user&quot;)(&quot;age&quot;)=&quot;25&quot;  %&amp;gt; &lt;br /&gt;
&lt;br /&gt;
________________________________________ &lt;br /&gt;
Read all Cookies &lt;br /&gt;
Look at the following code: &lt;br /&gt;
&amp;lt;% Response.Cookies(&quot;firstname&quot;)=&quot;Alex&quot;  Response.Cookies(&quot;user&quot;)(&quot;firstname&quot;)=&quot;John&quot;  Response.Cookies(&quot;user&quot;)(&quot;lastname&quot;)=&quot;Smith&quot;  Response.Cookies(&quot;user&quot;)(&quot;country&quot;)=&quot;Norway&quot;  Response.Cookies(&quot;user&quot;)(&quot;age&quot;)=&quot;25&quot;  %&amp;gt; &lt;br /&gt;
Assume that your server has sent all the cookies above to a user. &lt;br /&gt;
Now we want to read all the cookies sent to a user. The example below shows how to do it (note that the code below checks if a cookie has Keys with the HasKeys property): &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% dim x,y  for each x in Request.Cookies  response.write(&quot;&lt;br /&gt;
&lt;br /&gt;
&quot;) &lt;br /&gt;
if Request.Cookies(x).HasKeys then &lt;br /&gt;
for each y in Request.Cookies(x) &lt;br /&gt;
response.write(x &amp;amp; &quot;:&quot; &amp;amp; y &amp;amp; &quot;=&quot; &amp;amp; Request.Cookies(x)(y)) &lt;br /&gt;
response.write(&quot;&lt;br /&gt;
&quot;) &lt;br /&gt;
next &lt;br /&gt;
else &lt;br /&gt;
Response.Write(x &amp;amp; &quot;=&quot; &amp;amp; Request.Cookies(x) &amp;amp; &quot;&lt;br /&gt;
&quot;) &lt;br /&gt;
end if &lt;br /&gt;
response.write &quot;&lt;br /&gt;
&quot; &lt;br /&gt;
next &lt;br /&gt;
%&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Output: &lt;br /&gt;
firstname=Alex &lt;br /&gt;
user:firstname=John &lt;br /&gt;
user:lastname=Smith &lt;br /&gt;
user:country=Norway &lt;br /&gt;
user:age=25 &lt;br /&gt;
________________________________________ &lt;br /&gt;
What if a Browser Does NOT Support Cookies? &lt;br /&gt;
If your application deals with browsers that do not support cookies, you will have to use other methods to pass information from one page to another in your application. There are two ways of doing this: &lt;br /&gt;
1. Add parameters to a URL &lt;br /&gt;
You can add parameters to a URL: &lt;br /&gt;
&lt;a href=&quot;http://www.blogger.com/welcome.asp?fname=John&amp;amp;lname=Smith&quot;&gt;Go to Welcome Page&lt;/a&gt; &lt;br /&gt;
And retrieve the values in the &quot;welcome.asp&quot; file like this: &lt;br /&gt;
&amp;lt;% fname=Request.querystring(&quot;fname&quot;)  lname=Request.querystring(&quot;lname&quot;)  response.write(&quot;&lt;br /&gt;
&lt;br /&gt;
Hello &quot; &amp;amp; fname &amp;amp; &quot; &quot; &amp;amp; lname &amp;amp; &quot;!&lt;br /&gt;
&quot;) &lt;br /&gt;
response.write(&quot;Welcome to my Web site!&lt;br /&gt;
&quot;) &lt;br /&gt;
%&amp;gt; &lt;br /&gt;
2. Use a form &lt;br /&gt;
You can use a form. The form passes the user input to &quot;welcome.asp&quot; when the user clicks on the Submit button: &lt;br /&gt;
&lt;form action=&quot;welcome.asp&quot; method=&quot;post&quot;&gt;&lt;br /&gt;
First Name: &lt;input name=&quot;fname&quot; type=&quot;text&quot; value=&quot;&quot; /&gt; &lt;br /&gt;
Last Name: &lt;input name=&quot;lname&quot; type=&quot;text&quot; value=&quot;&quot; /&gt; &lt;br /&gt;
&lt;input type=&quot;submit&quot; value=&quot;Submit&quot; /&gt; &lt;/form&gt;&lt;br /&gt;
Retrieve the values in the &quot;welcome.asp&quot; file like this: &lt;br /&gt;
&amp;lt;% fname=Request.form(&quot;fname&quot;)  lname=Request.form(&quot;lname&quot;)  response.write(&quot;&lt;br /&gt;
&lt;br /&gt;
Hello &quot; &amp;amp; fname &amp;amp; &quot; &quot; &amp;amp; lname &amp;amp; &quot;!&lt;br /&gt;
&quot;) &lt;br /&gt;
response.write(&quot;Welcome to my Web site!&lt;br /&gt;
&quot;) &lt;br /&gt;
%&amp;gt; &lt;br /&gt;
8.ASP Session Object &lt;br /&gt;
&lt;br /&gt;
A Session object stores information about, or change settings for a user session. &lt;br /&gt;
________________________________________ &lt;br /&gt;
The Session object  &lt;br /&gt;
When you are working with an application on your computer, you open it, do some changes and then you close it. This is much like a Session. The computer knows who you are. It knows when you open the application and when you close it. However, on the internet there is one problem: the web server does not know who you are and what you do, because the HTTP address doesn&#39;t maintain state.  &lt;br /&gt;
ASP solves this problem by creating a unique cookie for each user. The cookie is sent to the user&#39;s computer and it contains information that identifies the user. This interface is called the Session object.  &lt;br /&gt;
The Session object stores information about, or change settings for a user session. &lt;br /&gt;
Variables stored in a Session object hold information about one single user, and are available to all pages in one application. Common information stored in session variables are name, id, and preferences. The server creates a new Session object for each new user, and destroys the Session object when the session expires.  &lt;br /&gt;
________________________________________ &lt;br /&gt;
When does a Session Start? &lt;br /&gt;
A session starts when: &lt;br /&gt;
•	A new user requests an ASP file, and the Global.asa file includes a Session_OnStart procedure  &lt;br /&gt;
•	A value is stored in a Session variable  &lt;br /&gt;
•	A user requests an ASP file, and the Global.asa file uses the &lt;object&gt;tag to instantiate an object with session scope   ________________________________________  When does a Session End?  A session ends if a user has not requested or refreshed a page in the application for a specified period. By default, this is 20 minutes.   If you want to set a timeout interval that is shorter or longer than the default, use the Timeout property.  The example below sets a timeout interval of 5 minutes:  &amp;lt;% Session.Timeout=5  %&amp;gt;  Use the Abandon method to end a session immediately:  &amp;lt;% Session.Abandon  %&amp;gt;  Note: The main problem with sessions is WHEN they should end. We do not know if the user&#39;s last request was the final one or not. So we do not know how long we should keep the session &quot;alive&quot;. Waiting too long for an idle session uses up resources on the server, but if the session is deleted too soon the user has to start all over again because the server has deleted all the information. Finding the right timeout interval can be difficult!  Tip: Only store SMALL amounts of data in session variables!  ________________________________________  Store and Retrieve Session Variables   The most important thing about the Session object is that you can store variables in it.  The example below will set the Session variable username to &quot;Donald Duck&quot; and the Session variable age to &quot;50&quot;:  &amp;lt;% Session(&quot;username&quot;)=&quot;Donald Duck&quot;  Session(&quot;age&quot;)=50  %&amp;gt;  When the value is stored in a session variable it can be reached from ANY page in the ASP application:  Welcome &amp;lt;%Response.Write(Session(&quot;username&quot;))%&amp;gt;  The line above returns: &quot;Welcome Donald Duck&quot;.  You can also store user preferences in the Session object, and then access that preference to choose what page to return to the user.  The example below specifies a text-only version of the page if the user has a low screen resolution:   &amp;lt;%If Session(&quot;screenres&quot;)=&quot;low&quot; Then%&amp;gt;  This is the text version of the page  &amp;lt;%Else%&amp;gt;  This is the multimedia version of the page  &amp;lt;%End If%&amp;gt;   ________________________________________  Remove Session Variables   The Contents collection contains all session variables.  It is possible to remove a session variable with the Remove method.  The example below removes the session variable &quot;sale&quot; if the value of the session variable &quot;age&quot; is lower than 18:   &amp;lt;% If Session.Contents(&quot;age&quot;)&amp;lt;18 then Session.Contents.Remove(&quot;sale&quot;)  End If  %&amp;gt;  To remove all variables in a session, use the RemoveAll method:   &amp;lt;% Session.Contents.RemoveAll()  %&amp;gt;   ________________________________________  Loop Through the Contents Collection  The Contents collection contains all session variables. You can loop through the Contents collection, to see what&#39;s stored in it:   &amp;lt;% Session(&quot;username&quot;)=&quot;Donald Duck&quot;  Session(&quot;age&quot;)=50   dim i  For Each i in Session.Contents  Response.Write(i &amp;amp; &quot; &quot;)  Next  %&amp;gt;  Result:  username  age  If you do not know the number of items in the Contents collection, you can use the Count property:  &amp;lt;% dim i  dim j  j=Session.Contents.Count  Response.Write(&quot;Session variables: &quot; &amp;amp; j)  For i=1 to j  Response.Write(Session.Contents(i) &amp;amp; &quot; &quot;)  Next  %&amp;gt;  Result:  Session variables: 2  Donald Duck  50   ________________________________________  Loop Through the StaticObjects Collection  You can loop through the StaticObjects collection, to see the values of all objects stored in the Session object:  &amp;lt;% dim i  For Each i in Session.StaticObjects  Response.Write(i &amp;amp; &quot; &quot;)  Next  %&amp;gt;   9. ASP Application Object  A group of ASP files that work together to perform some purpose is called an application.  ________________________________________  Application Object  An application on the Web may consists of several ASP files that work together to perform some purpose. The Application object is used to tie these files together.  The Application object is used to store and access variables from any page, just like the Session object. The difference is that ALL users share ONE Application object (with Sessions there is ONE Session object for EACH user).  The Application object holds information that will be used by many pages in the application (like database connection information). The information can be accessed from any page. The information can also be changed in one place, and the changes will automatically be reflected on all pages.  ________________________________________  Store and Retrieve Application Variables  Application variables can be accessed and changed by any page in an application.  You can create Application variables in &quot;Global.asa&quot; like this:  &lt;script language=&quot;vbscript&quot; runat=&quot;server&quot;&gt;
Sub Application_OnStart
application(&quot;vartime&quot;)=&quot;&quot;
application(&quot;users&quot;)=1
End Sub
&lt;/script&gt;  In the example above we have created two Application variables: &quot;vartime&quot; and &quot;users&quot;.  You can access the value of an Application variable like this:  There are  &amp;lt;% Response.Write(Application(&quot;users&quot;))  %&amp;gt;  active connections.   ________________________________________  Loop Through the Contents Collection  The Contents collection contains all application variables. You can loop through the Contents collection, to see what&#39;s stored in it:  &amp;lt;% dim i  For Each i in Application.Contents  Response.Write(i &amp;amp; &quot; &quot;)  Next  %&amp;gt;  If you do not know the number of items in the Contents collection, you can use the Count property:  &amp;lt;% dim i  dim j  j=Application.Contents.Count  For i=1 to j  Response.Write(Application.Contents(i) &amp;amp; &quot; &quot;)  Next  %&amp;gt;   ________________________________________  Loop Through the StaticObjects Collection  You can loop through the StaticObjects collection, to see the values of all objects stored in the Application object:  &amp;lt;% dim i  For Each i in Application.StaticObjects  Response.Write(i &amp;amp; &quot; &quot;)  Next  %&amp;gt;   ________________________________________  Lock and Unlock  You can lock an application with the &quot;Lock&quot; method. When an application is locked, the users cannot change the Application variables (other than the one currently accessing it). You can unlock an application with the &quot;Unlock&quot; method. This method removes the lock from the Application variable:  &amp;lt;% Application.Lock  &#39;do some application object operations  Application.Unlock  %&amp;gt;  10.ASP Including Files   The #include Directive  You can insert the content of one ASP file into another ASP file before the server executes it, with the #include directive.  The #include directive is used to create functions, headers, footers, or elements that will be reused on multiple pages.  ________________________________________  How to Use the #include Directive  Here is a file called &quot;mypage.asp&quot;:       
&lt;h3&gt;Words of Wisdom:&lt;/h3&gt;&lt;h3&gt;The time is:&lt;/h3&gt;Here is the &quot;wisdom.inc&quot; file:  &quot;One should never increase, beyond what is necessary,  the number of entities required to explain anything.&quot;  Here is the &quot;time.inc&quot; file:  &amp;lt;% Response.Write(Time)  %&amp;gt;  If you look at the source code in a browser, it will look something like this:       
&lt;h3&gt;Words of Wisdom:&lt;/h3&gt;&quot;One should never increase, beyond what is necessary,  the number of entities required to explain anything.&quot; 
&lt;h3&gt;The time is:&lt;/h3&gt;11:33:42 AM ________________________________________  Syntax for Including Files  To include a file in an ASP page, place the #include directive inside comment tags:     or     The Virtual Keyword  Use the virtual keyword to indicate a path beginning with a virtual directory.  If a file named &quot;header.inc&quot; resides in a virtual directory named /html, the following line would insert the contents of &quot;header.inc&quot;:    The File Keyword  Use the file keyword to indicate a relative path. A relative path begins with the directory that contains the including file.  If you have a file in the html directory, and the file &quot;header.inc&quot; resides in html\headers, the following line would insert &quot;header.inc&quot; in your file:    Note that the path to the included file (headers\header.inc) is relative to the including file. If the file containing this #include statement is not in the html directory, the statement will not work.  ________________________________________  Tips and Notes  In the sections above we have used the file extension &quot;.inc&quot; for included files. Notice that if a user tries to browse an INC file directly, its content will be displayed. If your included file contains confidential information or information you do not want any users to see, it is better to use an ASP extension. The source code in an ASP file will not be visible after the interpretation. An included file can also include other files, and one ASP file can include the same file more than once.  Important: Included files are processed and inserted before the scripts are executed. The following script will NOT work because ASP executes the #include directive before it assigns a value to the variable:  &amp;lt;% fname=&quot;header.inc&quot;  %&amp;gt;    You cannot open or close a script delimiter in an INC file. The following script will NOT work:  &amp;lt;% For i = 1 To n    Next  %&amp;gt;  But this script will work:  &amp;lt;% For i = 1 to n %&amp;gt;    &amp;lt;% Next %&amp;gt;   11.ASP The Global.asa file   The Global.asa file  The Global.asa file is an optional file that can contain declarations of objects, variables, and methods that can be accessed by every page in an ASP application.  All valid browser scripts (JavaScript, VBScript, JScript, PerlScript, etc.) can be used within Global.asa.  The Global.asa file can contain only the following:  •	Application events   •	Session events   •	&lt;object&gt;declarations   •	TypeLibrary declarations   •	the #include directive   Note: The Global.asa file must be stored in the root directory of the ASP application, and each application can only have one Global.asa file.  ________________________________________  Events in Global.asa  In Global.asa you can tell the application and session objects what to do when the application/session starts and what to do when the application/session ends. The code for this is placed in event handlers. The Global.asa file can contain four types of events:  Application_OnStart - Occurs when the FIRST user calls the first page in an ASP application. This event occurs after the Web server is restarted or after the Global.asa file is edited. The &quot;Session_OnStart&quot; event occurs immediately after this event.   Session_OnStart - This event occurs EVERY time a NEW user requests his or her first page in the ASP application.  Session_OnEnd - This event occurs EVERY time a user ends a session. A user-session ends after a page has not been requested by the user for a specified time (by default this is 20 minutes).  Application_OnEnd - This event occurs after the LAST user has ended the session. Typically, this event occurs when a Web server stops. This procedure is used to clean up settings after the Application stops, like delete records or write information to text files.  A Global.asa file could look something like this:  &lt;script language=&quot;vbscript&quot; runat=&quot;server&quot;&gt;
sub Application_OnStart
&#39;some code
end sub

sub Application_OnEnd
&#39;some code
end sub

sub Session_OnStart
&#39;some code
end sub

sub Session_OnEnd
&#39;some code
end sub
&lt;/script&gt;  Note: Because we cannot use the ASP script delimiters (&amp;lt;% and %&amp;gt;) to insert scripts in the Global.asa file, we put subroutines inside an HTML &lt;script&gt;
 element.
________________________________________
&lt;object&gt; Declarations
It is possible to create objects with session or application scope in Global.asa by using the &lt;object&gt; tag.
Note: The &lt;object&gt; tag should be outside the &lt;script&gt; tag!
Syntax
&lt;object runat=&quot;server&quot; scope=&quot;scope&quot; id=&quot;id&quot; {progid=&quot;progID&quot;|classid=&quot;classID&quot;}&gt;
....
&lt;/object&gt;

Parameter	Description
scope 	Sets the scope of the object (either Session or Application)
id 	Specifies a unique id for the object
ProgID 	An id associated with a class id. The format for ProgID is [Vendor.]Component[.Version] 
Either ProgID or ClassID must be specified.
ClassID 	Specifies a unique id for a COM class object. 
Either ProgID or ClassID must be specified.
Examples
The first example creates an object of session scope named &quot;MyAd&quot; by using the ProgID parameter:
&lt;object runat=&quot;server&quot; scope=&quot;session&quot; id=&quot;MyAd&quot; progid=&quot;MSWC.AdRotator&quot;&gt;
&lt;/object&gt;
The second example creates an object of application scope named &quot;MyConnection&quot; by using the ClassID parameter:
&lt;object runat=&quot;server&quot; scope=&quot;application&quot; id=&quot;MyConnection&quot;
classid=&quot;Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21&quot;&gt;
&lt;/object&gt;
The objects declared in the Global.asa file can be used by any script in the application:
GLOBAL.ASA:

&lt;object runat=&quot;server&quot; scope=&quot;session&quot; id=&quot;MyAd&quot; progid=&quot;MSWC.AdRotator&quot;&gt;
&lt;/object&gt;

You could reference the object &quot;MyAd&quot; from any page in the ASP application:

SOME .ASP FILE:

&lt;%=MyAd.GetAdvertisement(&quot;/banners/adrot.txt&quot;)%&gt;

________________________________________
TypeLibrary Declarations
A TypeLibrary is a container for the contents of a DLL file corresponding to a COM object. By including a call to the TypeLibrary in the Global.asa file, the constants of the COM object can be accessed, and errors can be better reported by the ASP code. If your Web application relies on COM objects that have declared data types in type libraries, you can declare the type libraries in Global.asa.
Syntax
&lt;!--METADATA TYPE=&quot;TypeLib&quot;
file=&quot;filename&quot; uuid=&quot;id&quot; version=&quot;number&quot; lcid=&quot;localeid&quot;
--&gt;

Parameter	Description
file	Specifies an absolute path to a type library. 
Either the file parameter or the uuid parameter is required
uuid	Specifies a unique identifier for the type library. 
Either the file parameter or the uuid parameter is required
version	Optional. Used for selecting version. If the requested version is not found, then the most recent version is used
lcid	Optional. The locale identifier to be used for the type library
Error Values
The server can return one of the following error messages:
Error Code	Description
ASP 0222	Invalid type library specification
ASP 0223	Type library not found
ASP 0224	Type library cannot be loaded
ASP 0225	Type library cannot be wrapped
Note: METADATA tags can appear anywhere in the Global.asa file (both inside and outside &lt;script&gt; tags). However, it is recommended that METADATA tags appear near the top of the Global.asa file.
________________________________________
Restrictions
Restrictions on what you can include in the Global.asa file:
•	You cannot display text written in the Global.asa file. This file can&#39;t display information 
•	You can only use Server and Application objects in the Application_OnStart and Application_OnEnd subroutines. In the Session_OnEnd subroutine, you can use Server, Application, and Session objects. In the Session_OnStart subroutine you can use any built-in object 
________________________________________
How to use the Subroutines
Global.asa is often used to initialize variables. 
The example below shows how to detect the exact time a visitor first arrives on a Web site. The time is stored in a Session variable named &quot;started&quot;, and the value of the &quot;started&quot; variable can be accessed from any ASP page in the application:
&lt;script language=&quot;vbscript&quot; runat=&quot;server&quot;&gt;
sub Session_OnStart
Session(&quot;started&quot;)=now()
end sub
&lt;/script&gt;  Global.asa can also be used to control page access.  The example below shows how to redirect every new visitor to another page, in this case to a page called &quot;newpage.asp&quot;:  &lt;script language=&quot;vbscript&quot; runat=&quot;server&quot;&gt;
sub Session_OnStart
Response.Redirect(&quot;newpage.asp&quot;)
end sub
&lt;/script&gt;  And you can include functions in the Global.asa file.  In the example below the Application_OnStart subroutine occurs when the Web server starts. Then the Application_OnStart subroutine calls another subroutine named &quot;getcustomers&quot;. The &quot;getcustomers&quot; subroutine opens a database and retrieves a record set from the &quot;customers&quot; table. The record set is assigned to an array, where it can be accessed from any ASP page without querying the database:  &lt;script language=&quot;vbscript&quot; runat=&quot;server&quot;&gt;
sub Application_OnStart
getcustomers
end sub

sub getcustomers
set conn=Server.CreateObject(&quot;ADODB.Connection&quot;)
conn.Provider=&quot;Microsoft.Jet.OLEDB.4.0&quot;
conn.Open &quot;c:/webdata/northwind.mdb&quot;
set rs=conn.execute(&quot;select name from customers&quot;)
Application(&quot;customers&quot;)=rs.GetRows
rs.Close
conn.Close
end sub
&lt;/script&gt;   ________________________________________  Global.asa Example  In this example we will create a Global.asa file that counts the number of current visitors.  •	The Application_OnStart sets the Application variable &quot;visitors&quot; to 0 when the server starts   •	The Session_OnStart subroutine adds one to the variable &quot;visitors&quot; every time a new visitor arrives   •	The Session_OnEnd subroutine subtracts one from &quot;visitors&quot; each time this subroutine is triggered   The Global.asa file:  &lt;script language=&quot;vbscript&quot; runat=&quot;server&quot;&gt;
Sub Application_OnStart
Application(&quot;visitors&quot;)=0
End Sub

Sub Session_OnStart
Application.Lock
Application(&quot;visitors&quot;)=Application(&quot;visitors&quot;)+1
Application.UnLock
End Sub

Sub Session_OnEnd
Application.Lock
Application(&quot;visitors&quot;)=Application(&quot;visitors&quot;)-1
Application.UnLock
End Sub
&lt;/script&gt;  To display the number of current visitors in an ASP file:           There are &amp;lt;%response.write(Application(&quot;visitors&quot;))%&amp;gt; online now! 12.ASP Sending e-mail with CDOSYS   CDOSYS is a built-in component in ASP. This component is used to send e-mails with ASP.  ________________________________________  Sending e-mail with CDOSYS  CDO (Collaboration Data Objects) is a Microsoft technology that is designed to simplify the creation of messaging applications.  CDOSYS is a built-in component in ASP. We will show you how to use this component to send e-mail with ASP.  How about CDONTs?  Microsoft has discontinued the use of CDONTs on Windows 2000, Windows XP and Windows 2003. If you have used CDONTs in your ASP applications, you should update the code and use the new CDO technology.  Examples using CDOSYS  Sending a text e-mail:  &amp;lt;% Set myMail=CreateObject(&quot;CDO.Message&quot;)  myMail.Subject=&quot;Sending email with CDO&quot;  myMail.From=&quot;mymail@mydomain.com&quot;  myMail.To=&quot;someone@somedomain.com&quot;  myMail.TextBody=&quot;This is a message.&quot;  myMail.Send  set myMail=nothing  %&amp;gt;  Sending a text e-mail with Bcc and CC fields:  &amp;lt;% Set myMail=CreateObject(&quot;CDO.Message&quot;)  myMail.Subject=&quot;Sending email with CDO&quot;  myMail.From=&quot;mymail@mydomain.com&quot;  myMail.To=&quot;someone@somedomain.com&quot;  myMail.Bcc=&quot;someoneelse@somedomain.com&quot;  myMail.Cc=&quot;someoneelse2@somedomain.com&quot;  myMail.TextBody=&quot;This is a message.&quot;  myMail.Send  set myMail=nothing  %&amp;gt;  Sending an HTML e-mail:  &amp;lt;% Set myMail=CreateObject(&quot;CDO.Message&quot;)  myMail.Subject=&quot;Sending email with CDO&quot;  myMail.From=&quot;mymail@mydomain.com&quot;  myMail.To=&quot;someone@somedomain.com&quot;  myMail.HTMLBody = &quot; 
&lt;h1&gt;  This is a message.&lt;/h1&gt;&quot;  myMail.Send  set myMail=nothing  %&amp;gt;  Sending an HTML e-mail that sends a webpage from a website:  &amp;lt;% Set myMail=CreateObject(&quot;CDO.Message&quot;)  myMail.Subject=&quot;Sending email with CDO&quot;  myMail.From=&quot;mymail@mydomain.com&quot;  myMail.To=&quot;someone@somedomain.com&quot;  myMail.CreateMHTMLBody &quot;http://www.w3schools.com/asp/&quot;  myMail.Send  set myMail=nothing  %&amp;gt;  Sending an HTML e-mail that sends a webpage from a file on your computer:  &amp;lt;% Set myMail=CreateObject(&quot;CDO.Message&quot;)  myMail.Subject=&quot;Sending email with CDO&quot;  myMail.From=&quot;mymail@mydomain.com&quot;  myMail.To=&quot;someone@somedomain.com&quot;  myMail.CreateMHTMLBody &quot;file://c:/mydocuments/test.htm&quot;  myMail.Send  set myMail=nothing  %&amp;gt;  Sending a text e-mail with an Attachment:  &amp;lt;% Set myMail=CreateObject(&quot;CDO.Message&quot;)  myMail.Subject=&quot;Sending email with CDO&quot;  myMail.From=&quot;mymail@mydomain.com&quot;  myMail.To=&quot;someone@somedomain.com&quot;  myMail.TextBody=&quot;This is a message.&quot;  myMail.AddAttachment &quot;c:\mydocuments\test.txt&quot;  myMail.Send  set myMail=nothing  %&amp;gt;  Sending a text e-mail using a remote server:  &amp;lt;% Set myMail=CreateObject(&quot;CDO.Message&quot;)  myMail.Subject=&quot;Sending email with CDO&quot;  myMail.From=&quot;mymail@mydomain.com&quot;  myMail.To=&quot;someone@somedomain.com&quot;  myMail.TextBody=&quot;This is a message.&quot;  myMail.Configuration.Fields.Item _  (&quot;http://schemas.microsoft.com/cdo/configuration/sendusing&quot;)=2  &#39;Name or IP of remote SMTP server  myMail.Configuration.Fields.Item _  (&quot;http://schemas.microsoft.com/cdo/configuration/smtpserver&quot;)=&quot;smtp.server.com&quot;  &#39;Server port  myMail.Configuration.Fields.Item _  (&quot;http://schemas.microsoft.com/cdo/configuration/smtpserverport&quot;)=25   myMail.Configuration.Fields.Update  myMail.Send  set myMail=nothing  %&amp;gt;    II  ASP Objects    1)ASP Response Object  The ASP Response object is used to send output to the user from the server.  ________________________________________  Response Object   The ASP Response object is used to send output to the user from the server. Its collections, properties, and methods are described below:  Collections  Collection	Description  Cookies  Sets a cookie value. If the cookie does not exist, it will be created, and take the value that is specified  Properties  Property	Description  Buffer  Specifies whether to buffer the page output or not  CacheControl  Sets whether a proxy server can cache the output generated by ASP or not  Charset  Appends the name of a character-set to the content-type header in the Response object  ContentType  Sets the HTTP content type for the Response object  Expires  Sets how long (in minutes) a page will be cached on a browser before it expires  ExpiresAbsolute  Sets a date and time when a page cached on a browser will expire  IsClientConnected  Indicates if the client has disconnected from the server  Pics  Appends a value to the PICS label response header  Status  Specifies the value of the status line returned by the server  Methods  Method	Description  AddHeader  Adds a new HTTP header and a value to the HTTP response  AppendToLog  Adds a string to the end of the server log entry  BinaryWrite  Writes data directly to the output without any character conversion  Clear  Clears any buffered HTML output  End  Stops processing a script, and returns the current result  Flush  Sends buffered HTML output immediately  Redirect  Redirects the user to a different URL  Write  Writes a specified string to the output   ASP Cookies Collection  ________________________________________   The Cookies collection is used to set or get cookie values. If the cookie does not exist, it will be created, and take the value that is specified.  Note: The Response.Cookies command must appear before the  tag.   Syntax  Response.Cookies(name)[(key)|.attribute]=value   variablename=Request.Cookies(name)[(key)|.attribute]    Parameter	Description  name 	Required. The name of the cookie  value 	Required for the Response.Cookies command. The value of the cookie  attribute 	Optional. Specifies information about the cookie. Can be one of the following parameters:    •	Domain -  Write-only. The cookie is sent only to requests to this domain   •	Expires - Write-only. The date when the cookie expires. If no date is specified, the cookie will expire when the session ends   •	HasKeys - Read-only. Specifies whether the cookie has keys (This is the only attribute that can be used with the Request.Cookies command)   •	Path - Write-only. If set, the cookie is sent only to requests to this path. If not set, the application path is used   •	Secure - Write-only. Indicates if the cookie is secure   key 	Optional. Specifies the key to where the value is assigned   ________________________________________  Examples  The &quot;Response.Cookies&quot; command is used to create a cookie or to set a cookie value:  &amp;lt;% Response.Cookies(&quot;firstname&quot;)=&quot;Alex&quot;  %&amp;gt;   In the code above, we have created a cookie named &quot;firstname&quot; and assigned the value &quot;Alex&quot; to it.  It is also possible to assign some attributes to a cookie, like setting a date when a cookie should expire:  &amp;lt;% Response.Cookies(&quot;firstname&quot;)=&quot;Alex&quot;   Response.Cookies(&quot;firstname&quot;).Expires=#May 10,2002#  %&amp;gt;   Now the cookie named &quot;firstname&quot; has the value of &quot;Alex&quot;, and it will expire from the user&#39;s computer at May 10, 2002.  The &quot;Request.Cookies&quot; command is used to get a cookie value.  In the example below, we retrieve the value of the cookie &quot;firstname&quot; and display it on a page:  &amp;lt;% fname=Request.Cookies(&quot;firstname&quot;)  response.write(&quot;Firstname=&quot; &amp;amp; fname)  %&amp;gt;    Output:   Firstname=Alex   A cookie can also contain a collection of multiple values. We say that the cookie has Keys.  In the example below, we will create a cookie-collection named &quot;user&quot;. The &quot;user&quot; cookie has Keys that contains information about a user:  &amp;lt;% Response.Cookies(&quot;user&quot;)(&quot;firstname&quot;)=&quot;John&quot;  Response.Cookies(&quot;user&quot;)(&quot;lastname&quot;)=&quot;Smith&quot;  Response.Cookies(&quot;user&quot;)(&quot;country&quot;)=&quot;Norway&quot;  Response.Cookies(&quot;user&quot;)(&quot;age&quot;)=&quot;25&quot;  %&amp;gt;   The code below reads all the cookies your server has sent to a user. Note that the code checks if a cookie has Keys with the HasKeys property:       &amp;lt;% dim x,y   for each x in Request.Cookies  response.write(&quot; &quot;)  if Request.Cookies(x).HasKeys then  for each y in Request.Cookies(x)  response.write(x &amp;amp; &quot;:&quot; &amp;amp; y &amp;amp; &quot;=&quot; &amp;amp; Request.Cookies(x)(y))  response.write(&quot;
&quot;  next  %&amp;gt;       %&amp;gt;   Output:  firstname=Alex  user:firstname=John  user:lastname=Smith  user:  country=Norway  user:  age=25    Properties:   ASP Buffer Property  The Buffer property specifies whether to buffer the output or not. When the output is buffered, the server will hold back the response to the browser until all of the server scripts have been processed, or until the script calls the Flush or End method.  Note: If this property is set, it should be before the  tag in the .asp file  Syntax  response.Buffer[=flag]    Parameter	Description  flag 	A boolean value that specifies whether to buffer the page output or not.   False indicates no buffering. The server will send the output as it is processed. False is default for IIS version 4.0 (and earlier). Default for IIS version 5.0 (and later) is true.  True indicates buffering. The server will not send output until all of the scripts on the page have been processed, or until the Flush or End method has been called.  Examples  Example 1  In this example, there will be no output sent to the browser before the loop is finished. If buffer was set to False, then it would write a line to the browser every time it went through the loop.  &amp;lt;%response.Buffer=true%&amp;gt;      &amp;lt;% for i=1 to 100  response.write(i &amp;amp; &quot; &quot;)  next  %&amp;gt;       Example 2  &amp;lt;%response.Buffer=true%&amp;gt;       I write some text, but I will control when  the text will be sent to the browser. The text is not sent yet. I hold it back! OK, let it go! &amp;lt;%response.Flush%&amp;gt;       Example 3  &amp;lt;%response.Buffer=true%&amp;gt;       This is some text I want to send to the user. No, I changed my mind. I want to clear the text. &amp;lt;%response.Clear%&amp;gt;         ASP CacheControl Property  The CacheControl property sets whether a proxy server can cache the output generated by ASP or not. By default, a proxy server will not keep a cache copy.  Syntax  response.CacheControl[=control_header]    Parameter	Description  control_header 	A cache control header that can be set to &quot;Public&quot; or &quot;Private&quot;.   Private is default and indicates that only private caches may cache this page. Proxy servers will not cache pages with this setting.  Public indicates public caches. Proxy servers will cache pages with this setting.  Examples  &amp;lt;%response.CacheControl=&quot;Public&quot;%&amp;gt;   or   &amp;lt;%response.CacheControl=&quot;Private&quot;%&amp;gt;       ASP Charset Property  The Charset property appends the name of a character-set to the content-type header in the Response object. Default character set is ISO-LATIN-1.  Note: This property will accept any string, regardless of whether it is a valid character set or not, for the name.  Syntax  response.Charset(charsetname)    Parameter	Description  charsetname 	A string that specifies a character set for the page  Examples  If an ASP page has no Charset property set, the content-type header would be:  content-type:text/html   If we included the Charset property:  &amp;lt;%response.Charset=&quot;ISO-8859-1&quot;%&amp;gt;   the content-type header would be:  content-type:text/html; charset=ISO-8859-1    ASP ContentType Property  ________________________________________  The ContentType property sets the HTTP content type for the response object.  Syntax  response.ContentType[=contenttype]    Parameter	Description  contenttype 	A string describing the content type.   For a full list of content types, see your browser documentation or the HTTP specification.  Examples  If an ASP page has no ContentType property set, the default content-type header would be:  content-type:text/html   Some other common ContentType values:  &amp;lt;%response.ContentType=&quot;text/HTML&quot;%&amp;gt;  &amp;lt;%response.ContentType=&quot;image/GIF&quot;%&amp;gt;  &amp;lt;%response.ContentType=&quot;image/JPEG&quot;%&amp;gt;  &amp;lt;%response.ContentType=&quot;text/plain&quot;%&amp;gt;  &amp;lt;%response.ContentType=&quot;image/JPEG&quot;%&amp;gt;   This example will open an Excel spreadsheet in a browser (if the user has Excel installed):  &amp;lt;%response.ContentType=&quot;application/vnd.ms-excel&quot;%&amp;gt;       
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;  &lt;td&gt;1&lt;/td&gt;  &lt;td&gt;2&lt;/td&gt;  &lt;td&gt;3&lt;/td&gt;  &lt;td&gt;4&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;5&lt;/td&gt;  &lt;td&gt;6&lt;/td&gt;  &lt;td&gt;7&lt;/td&gt;  &lt;td&gt;8&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;ASP Expires Property  The Expires property sets how long (in minutes) a page will be cached on a browser before it expires. If a user returns to the same page before it expires, the cached version is displayed.  Syntax  response.Expires[=number]    Parameter	Description  number	The time in minutes before the page expires  Examples  Example 1  The following code indicates that the page will never be cached:  &amp;lt;%response.Expires=-1%&amp;gt;   Example 2  The following code indicates that the page will expire after 1440 minutes (24 hours):  &amp;lt;%response.Expires=1440%&amp;gt;     ASP ExpiresAbsolute Property  ________________________________________  The ExpiresAbsolute property sets a date and time when a cached page on a browser will expire. If a user returns to the same page before this date/time, the cached version is displayed.  Syntax  response.ExpiresAbsolute[=[date][time]]    Parameter	Description  date 	Specifies the date on which the page will expire.   If this parameter is not specified, the page will expire at the specified time on the day that the script is run.   time 	Specifies the time at which the page will expire.   If this parameter is not specified, the page will expire at midnight of the specified day.  Examples  The following code indicates that the page will expire at 4:00 PM on October 11, 2009:  &amp;lt;%response.ExpiresAbsolute=#October 11,2009 16:00:00#%&amp;gt;    ASP IsClientConnected Property  ________________________________________  The IsClientConnected property indicates if the client has disconnected from the server.  Syntax  response.IsClientConnected   Examples  &amp;lt;% If response.IsClientConnected=true then  response.write(&quot;The user is still connected!&quot;)  else  response.write(&quot;The user is not connected!&quot;)  end if  %&amp;gt;    ASP PICS Property  ________________________________________  The PICS property appends a value to the PICS label response header.  Note: This property will accept any string value, regardless of whether it is a valid PICS label or not.  What is PICS?  The PICS (Platform for Internet Content Selection) rating system is used to rate the content in a web site. It looks something like this:  PICS-1.1 &quot;http://www.rsac.org/ratingsv01.html&quot; by &quot;your@name.com&quot; for &quot;http://www.somesite.com&quot; on &quot;2002.10.05T02:15-0800&quot; r (n 0 s 0 v 0 l 0)  Part	Description  PICS-1.1	PICS version number  &quot;http://www.rsac.org/ratingsv01.html&quot;	Rating organization  by &quot;your@name.com&quot;	Author of the label  for &quot;http://www.somesite.com&quot;	The URL or the document that has been rated  on &quot;2002.10.05T02:15-0800&quot;	Expiration date  r (n 0 s 0 v 0 l 0)	Rating  One of the most popular rating system is RSACi (Recreational Software Advisory Council on the Internet). RSACi rating system uses four categories: violence, nudity, sex, and language. A number between 0 to 4 is assigned to each category. 0 means that the page does not contain any potentially offensive content and 4 means that the page contains the highest levels of potentially offensive content.   Level	Violence Rating	Nudity Rating	Sex Rating	Language Rating  0	None of the below or sports related	None of the below	None of the below or innocent kissing; romance	None of the below  1	Injury to human being	Revealing attire	Passionate kissing	Mild expletives  2	Destruction of realistic objects	Partial nudity	Clothed sexual touching	Moderate expletives or profanity  3	Aggressive violence or death to humans	Frontal nudity	Non-explicit sexual acts	Strong language or hate speech  4	Rape or wanton, gratuitous violence	Frontal nudity (qualifying as provocative display)	Explicit sexual acts or sex crimes	Crude, vulgar language or extreme hate speech  There are two ways you can obtain rating for your site. You can either rate your site yourself or use a rating provider, like RSACi. They&#39;ll ask you fill out some questions. After filling out the questions, you will get the rating label for your site.   Microsoft IE 3.0 and above and Netscape 4.5 and above support the content ratings. You can set the ratings in IE 5, by selecting Tools and Internet Options. Select the Content tab and click the Enable. When the rating exceeds the defined levels the Content Advisor will block the site. You can set the ratings in Netscape 4.7, by selecting Help and NetWatch.   We can use the META tag or the response.PICS property to add a rating to our site.   Syntax   response.PICS(picslabel)    Parameter	Description  picslabel 	A properly formatted PICS label   Examples  For an ASP file that includes:   Note: Because PICS labels contain quotes, you must replace quotes with &quot; &amp;amp; chr(34) &amp;amp; &quot;.  &amp;lt;% response.PICS(&quot;(PICS-1.1 &lt;http: ratingv01.html=&quot;&quot; www.rsac.org=&quot;&quot;&gt;  by &quot; &amp;amp; chr(34) &amp;amp; &quot;your@name.com&quot; &amp;amp; chr(34) &amp;amp;  &quot; for &quot; &amp;amp; chr(34) &amp;amp; &quot;http://www.somesite.com&quot; &amp;amp; chr(34) &amp;amp;  &quot; on &quot; &amp;amp; chr(34) &amp;amp; &quot;2002.10.05T02:15-0800&quot; &amp;amp; chr(34) &amp;amp;  &quot; r (n 2 s 0 v 1 l 2))&quot;)  %&amp;gt;   the following header is added:  PICS-label:(PICS-1.1 &lt;http: ratingv01.html=&quot;&quot; www.rsac.org=&quot;&quot;&gt;  by &quot;your@name.com&quot;  for &quot;http://www.somesite.com&quot;  on &quot;2002.10.05T02:15-0800&quot;  r (n 2 s 0 v 1 l 2))    ASP Status Property  ________________________________________  The Status property specifies the value of the status line returned by the server.  Tip: Use this property to modify the status line returned by the server.  Syntax  response.Status=statusdescription    Parameter	Description  statusdescription 	A three-digit number and a description of that code, like 404 Not Found.  Note:  Status values are defined in the HTTP specification.   Examples  &amp;lt;% ip=request.ServerVariables(&quot;REMOTE_ADDR&quot;)  if ip&amp;lt;&amp;gt;&quot;194.248.333.500&quot; then  response.Status=&quot;401 Unauthorized&quot;  response.Write(response.Status)  response.End  end if  %&amp;gt;    Methods:    ASP AddHeader Method  ________________________________________  The AddHeader method adds a new HTTP header and a value to the HTTP response.   Note: Once a header has been added, it cannot be removed.  Note: In IIS 4.0 you have to call this method before any output is sent to the browser. In IIS 5.0 you can call the AddHeader method at any point in the script, as long as it precedes any calls to the response.Flush method.  Syntax  response.AddHeader name,value    Parameter	Description  name 	Required. The name of the new header variable (cannot contain underscores)   value 	Required. The initial value of the new header variable    ________________________________________  Examples  &amp;lt;%Response.AddHeader &quot;WARNING&quot;,&quot;Error message text&quot;%&amp;gt;      ASP AppendToLog Method  ________________________________________  The AppendToLog method adds a string to the end of server log entry for this request. You can call this method multiple times in a script. Each time it is called it will append the specified string to the log entry.  Syntax  response.AppendToLog string    Parameter	Description  string 	Required. The text to append to the log file (cannot contain any comma characters)   ________________________________________  Examples  &amp;lt;%Response.AppendToLog &quot;My log message&quot;%&amp;gt;    ASP BinaryWrite Method  ________________________________________  The BinaryWrite method writes data directly to the output without any character conversion.  Tip: This method is used to write image data (BLOB) from a database to a browser.  Syntax  response.BinaryWrite data    Parameter	Description  data 	Required. The binary information to be sent   ________________________________________  Example  If you have an object that generates an array of bytes, you can use BinaryWrite to send the bytes to an application:  &amp;lt;% Set objBinaryGen=Server.CreateObject(&quot;MyComponents.BinaryGenerator&quot;) pic=objBinaryGen.MakePicture response.BinaryWrite pic %&amp;gt;    ________________________________________  ASP Clear Method  ________________________________________  The Clear method clears any buffered HTML output.  Note: This method does not clear the response headers, only the response body.  Note: If response.Buffer is false, this method will cause a run-time error.  Syntax  response.Clear   Examples  &amp;lt;% response.Buffer=true  %&amp;gt;      &lt;/http:&gt;&lt;/http:&gt; This is some text I want to send to the user. No, I changed my mind. I want to clear the text. &amp;lt;% response.Clear  %&amp;gt;       Output:   (nothing)    ASP End Method  ________________________________________  The End method stops processing a script, and returns the current result.  Note: This method will flush the buffer if Response.Buffer has been set to true. If you do not want to return any output to the user, you should call Response.Clear first.  Syntax  Response.End   Examples      I am writing some text. This text will never be  &amp;lt;% Response.End  %&amp;gt;  finished! It&#39;s too late to write more! Output:   I am writing some text. This text will never be    ASP Flush Method  ________________________________________  The Flush method sends buffered HTML output immediately.  Note: If response.Buffer is false, this method will cause a run-time error.  Syntax  Response.Flush   Example  &amp;lt;% Response.Buffer=true  %&amp;gt;      I write some text, but I will control when the  text will be sent to the browser. The text is not sent yet. I hold it back! OK, let it go! &amp;lt;% Response.Flush  %&amp;gt;       Output:   I write some text, but I will control when the  text will be sent to the browser.   The text is not sent yet. I hold it back!   OK, let it go!    ASP Redirect Method  ________________________________________   The Redirect method redirects the user to a different URL.  Syntax  Response.Redirect URL    Parameter	Description  URL 	Required. The URL that the user (browser) is redirected to   Examples  &amp;lt;% Response.Redirect &quot;http://www.w3schools.com&quot;  %&amp;gt;    ASP Write Method  ________________________________________  The Write method writes a specified string to the output.  Syntax  Response.Write variant    Parameter	Description  variant	Required. The data to write   ________________________________________  Examples  Example 1  &amp;lt;% Response.Write &quot;Hello World&quot;  %&amp;gt;   Output:   Hello World   Example 2  &amp;lt;% name=&quot;John&quot;  Response.Write(name)  %&amp;gt;   Output:   John   Example 3  &amp;lt;% Response.Write(&quot;Hello World&quot;)  %&amp;gt;   Output:   Hello  World    Try it Yourself – Examples   1)Write text with ASP- How to write text with ASP.        &amp;lt;% response.write(&quot;Hello World!&quot;)  %&amp;gt;         2) Format text with HTML tags in ASP- How to combine text and HTML tags with ASP.       &amp;lt;% response.write(&quot;
&lt;h2&gt;  You can use HTML tags to format the text!&lt;/h2&gt;&quot;)  %&amp;gt;   &amp;lt;% response.write(&quot;
&lt;div style=&quot;color: blue;&quot;&gt;This text is styled with the style attribute!&lt;/div&gt;&quot;)  %&amp;gt;                3) Redirect the user to a different URL -How to redirect the user to a different URL.   &amp;lt;% if Request.Form(&quot;select&quot;)&amp;lt;&amp;gt;&quot;&quot; then  Response.Redirect(Request.Form(&quot;select&quot;))  end if  %&amp;gt;           
&lt;form action=&quot;demo_redirect.asp&quot; method=&quot;post&quot;&gt;&lt;input name=&quot;select&quot; type=&quot;radio&quot; value=&quot;demo_server.asp&quot; /&gt;  Server Example   &lt;input name=&quot;select&quot; type=&quot;radio&quot; value=&quot;demo_text.asp&quot; /&gt;  Text Example   &lt;input type=&quot;submit&quot; value=&quot;Go!&quot; /&gt;   &lt;/form&gt;4)Show a random link-How to create a random link.          &amp;lt;% randomize()  r=rnd()  if r&amp;gt;0.5 then  response.write(&quot;&lt;a href=&quot;http://www.w3schools.com/&quot;&gt;W3Schools.com!&lt;/a&gt;&quot;)  else  response.write(&quot;&lt;a href=&quot;http://www.refsnesdata.no/&quot;&gt;Refsnesdata.no!&lt;/a&gt;&quot;)  end if  %&amp;gt;   This example demonstrates a link, each time you load the page, it will display   one of two links: W3Schools.com! OR Refsnesdata.no! There is a 50% chance for   each of them.   5)Controlling the buffer-How to control the buffer.    &amp;lt;% Response.Buffer=true  %&amp;gt;      This text will be sent to your browser when my response buffer is flushed.   &amp;lt;% Response.Flush  %&amp;gt;           6) Clear the buffer-How to clear the buffer.  &amp;lt;% Response.Buffer=true  %&amp;gt;      This is some text I want to send to the user. No, I changed my mind. I want to clear the text. &amp;lt;% Response.Clear  %&amp;gt;              7) End a script in the middle of processing and return the result-How to end a script in the middle of processing.       I am writing some text. This text will never be  &amp;lt;% Response.End  %&amp;gt;  finished! It&#39;s too late to write more! 8) Set how many minutes a page will be cached in a browser before it expires -How to specify how many minutes a page will be cached in a browser before it expires.   &amp;lt;%Response.Expires=-1%&amp;gt;      This page will be refreshed with each access! 9)Set a date/time when a page cached in a browser will expire-How to specify a date/time a page cached in a browser will expire.   &amp;lt;% Response.ExpiresAbsolute=#May 05,2001 05:30:30#  %&amp;gt;      This page will expire on May 05, 2001 05:30:30! 10) Check if the user is still connected to the server-How to check if a user is disconnected from the server.        &amp;lt;% If Response.IsClientConnected=true then  Response.Write(&quot;The user is still connected!&quot;)  else  Response.Write(&quot;The user is not connected!&quot;)  end if  %&amp;gt;        11) Set the type of content-How to specify the type of content.   &amp;lt;% Response.ContentType=&quot;text/html&quot;  %&amp;gt;       This is some text 12) Set the name of the character set-How to specify the name of the character set.   &amp;lt;% Response.Charset=&quot;ISO8859-1&quot;  %&amp;gt;       This is some text 2.ASP Request Object    The Request object is used to get information from a visitor.  ________________________________________   Request Object  When a browser asks for a page from a server, it is called a request. The Request object is used to get information from a visitor. Its collections, properties, and methods are described below:  Collections  Collection	Description  ClientCertificate	Contains all the field values stored in the client certificate  Cookies  Contains all the cookie values sent in a HTTP request  Form  Contains all the form (input) values from a form that uses the post method  QueryString  Contains all the variable values in a HTTP query string  ServerVariables  Contains all the server variable values  Properties  Property	Description  TotalBytes  Returns the total number of bytes the client sent in the body of the request  Methods  Method	Description  BinaryRead  Retrieves the data sent to the server from the client as part of a post request and stores it in a safe array   Collections:  ASP Cookies Collection  ________________________________________  The Cookies collection is used to set or get cookie values. If the cookie does not exist, it will be created, and take the value that is specified.  Note: The Response.Cookies command must appear before the  tag.   Syntax  Response.Cookies(name)[(key)|.attribute]=value   variablename=Request.Cookies(name)[(key)|.attribute]    Parameter	Description  name 	Required. The name of the cookie  value 	Required for the Response.Cookies command. The value of the cookie  attribute 	Optional. Specifies information about the cookie. Can be one of the following parameters:    •	Domain -  Write-only. The cookie is sent only to requests to this domain   •	Expires - Write-only. The date when the cookie expires. If no date is specified, the cookie will expire when the session ends   •	HasKeys - Read-only. Specifies whether the cookie has keys (This is the only attribute that can be used with the Request.Cookies command)   •	Path - Write-only. If set, the cookie is sent only to requests to this path. If not set, the application path is used   •	Secure - Write-only. Indicates if the cookie is secure   key 	Optional. Specifies the key to where the value is assigned   ________________________________________  Examples  The &quot;Response.Cookies&quot; command is used to create a cookie or to set a cookie value:  &amp;lt;% Response.Cookies(&quot;firstname&quot;)=&quot;Alex&quot;  %&amp;gt;   In the code above, we have created a cookie named &quot;firstname&quot; and assigned the value &quot;Alex&quot; to it.  It is also possible to assign some attributes to a cookie, like setting a date when a cookie should expire:  &amp;lt;% Response.Cookies(&quot;firstname&quot;)=&quot;Alex&quot;   Response.Cookies(&quot;firstname&quot;).Expires=#May 10,2002#  %&amp;gt;   Now the cookie named &quot;firstname&quot; has the value of &quot;Alex&quot;, and it will expire from the user&#39;s computer at May 10, 2002.  The &quot;Request.Cookies&quot; command is used to get a cookie value.  In the example below, we retrieve the value of the cookie &quot;firstname&quot; and display it on a page:  &amp;lt;% fname=Request.Cookies(&quot;firstname&quot;)  response.write(&quot;Firstname=&quot; &amp;amp; fname)  %&amp;gt;    Output:   Firstname=Alex   A cookie can also contain a collection of multiple values. We say that the cookie has Keys.  In the example below, we will create a cookie-collection named &quot;user&quot;. The &quot;user&quot; cookie has Keys that contains information about a user:  &amp;lt;% Response.Cookies(&quot;user&quot;)(&quot;firstname&quot;)=&quot;John&quot;  Response.Cookies(&quot;user&quot;)(&quot;lastname&quot;)=&quot;Smith&quot;  Response.Cookies(&quot;user&quot;)(&quot;country&quot;)=&quot;Norway&quot;  Response.Cookies(&quot;user&quot;)(&quot;age&quot;)=&quot;25&quot;  %&amp;gt;   The code below reads all the cookies your server has sent to a user. Note that the code checks if a cookie has Keys with the HasKeys property:       &amp;lt;% dim x,y   for each x in Request.Cookies  response.write(&quot;&quot;)  if Request.Cookies(x).HasKeys then  for each y in Request.Cookies(x)  response.write(x &amp;amp; &quot;:&quot; &amp;amp; y &amp;amp; &quot;=&quot; &amp;amp; Request.Cookies(x)(y))  response.write(&quot;
&quot;  next  %&amp;gt;       %&amp;gt;   Output:  firstname=Alex  user:firstname=John  user:lastname=Smith  user:  country=Norway  user:  age=25     ASP Form Collection  ________________________________________  The Form collection is used to retrieve the values of form elements from a form that uses the POST method.  Syntax  Request.Form(element)[(index)|.Count]    Parameter	Description  element 	Required. The name of the form element from which the collection is to retrieve values  index 	Optional. Specifies one of multiple values for a parameter. From 1 to Request.Form(parameter).Count.   ________________________________________  Examples  Example 1  You can loop through all the values in a form request. If a user filled out a form by specifying two values - Blue and Green - for the color element, you could retrieve those values like this:  &amp;lt;% for i=1 to Request.Form(&quot;color&quot;).Count Response.Write(Request.Form(&quot;color&quot;)(i) &amp;amp; &quot; &quot;)  next  %&amp;gt;   Output:  Blue  Green   Example 2  Consider the following form:   
&lt;form action=&quot;submit.asp&quot; method=&quot;post&quot;&gt;First name: &lt;input name=&quot;firstname&quot; /&gt; Last name: &lt;input name=&quot;lastname&quot; /&gt; Your favorite color:  &lt;select name=&quot;color&quot;&gt;  &lt;option&gt;Blue&lt;/option&gt;  &lt;option&gt;Green&lt;/option&gt;  &lt;option&gt;Red&lt;/option&gt;  &lt;option&gt;Yellow&lt;/option&gt;  &lt;option&gt;Pink&lt;/option&gt;  &lt;/select&gt;   &lt;input type=&quot;submit&quot; /&gt;&lt;/form&gt;The following request might be sent:  firstname=John&amp;amp;lastname=Dove&amp;amp;color=Red   Now we can use the information from the form in a script:   Hi, &amp;lt;%=Request.Form(&quot;firstname&quot;)%&amp;gt;.   Your favorite color is &amp;lt;%=Request.Form(&quot;color&quot;)%&amp;gt;.   Output:  Hi, John. Your favorite color is Red.   If you do not specify any element to display, like this:  Form data is: &amp;lt;%=Request.Form%&amp;gt;    the output would look like this:  Form data is: firstname=John&amp;amp;lastname=Dove&amp;amp;color=Red    ASP QueryString Collection  ________________________________________  The QueryString collection is used to retrieve the variable values in the HTTP query string.  The HTTP query string is specified by the values following the question mark (?), like this:  &lt;a href=&quot;http://www.blogger.com/test.asp?txt=this%20is%20a%20query%20string%20test&quot;&gt;Link with a query string&lt;/a&gt;  The line above generates a variable named txt with the value &quot;this is a query string test&quot;.  Query strings are also generated by form submission, or by a user typing a query into the address bar of the browser.  Note: If you want to send large amounts of data (beyond 100 kb) the Request.QueryString cannot be used.  Syntax  Request.QueryString(variable)[(index)|.Count]    Parameter	Description  variable 	Required. The name of the variable in the HTTP query string to retrieve  index 	Optional. Specifies one of multiple values for a variable. From 1 to Request.QueryString(variable).Count   ________________________________________  Examples  Example 1  To loop through all the n variable values in a Query String:  The following request is sent:  http://www.w3schools.com/test/names.asp?n=John&amp;amp;n=Susan   and names.asp contains the following script:  &amp;lt;% for i=1 to Request.QueryString(&quot;n&quot;).Count  Response.Write(Request.QueryString(&quot;n&quot;)(i) &amp;amp; &quot; &quot;)  next  %&amp;gt;   The file names.asp would display the following:  John  Susan   Example 2  The following string might be sent:  http://www.w3schools.com/test/names.asp?name=John&amp;amp;age=30   this results in the following QUERY_STRING value:  name=John&amp;amp;age=30   Now we can use the information in a script:   Hi, &amp;lt;%=Request.QueryString(&quot;name&quot;)%&amp;gt;.   Your age is &amp;lt;%= Request.QueryString(&quot;age&quot;)%&amp;gt;.   Output:  Hi, John. Your age is 30.   If you do not specify any variable values to display, like this:  Query string is: &amp;lt;%=Request.QueryString%&amp;gt;    the output would look like this:  Query string is: name=John&amp;amp;age=30    ASP ServerVariables Collection  ________________________________________  The ServerVariables collection is used to retrieve the server variable values.  Syntax  Request.ServerVariables (server_variable)    Parameter	Description  server_variable 	Required. The name of the server variable to retrieve    Server Variables  Variable	Description  ALL_HTTP	Returns all HTTP headers sent by the client. Always prefixed with HTTP_ and capitalized  ALL_RAW	Returns all headers in raw form  APPL_MD_PATH	Returns the meta base path for the application for the ISAPI DLL  APPL_PHYSICAL_PATH	Returns the physical path corresponding to the meta base path  AUTH_PASSWORD	Returns the value entered in the client&#39;s authentication dialog  AUTH_TYPE	The authentication method that the server uses to validate users  AUTH_USER	Returns the raw authenticated user name  CERT_COOKIE	Returns the unique ID for client certificate as a string  CERT_FLAGS	bit0 is set to 1 if the client certificate is present and bit1 is set to 1 if the cCertification authority of the client certificate is not valid  CERT_ISSUER	Returns the issuer field of the client certificate  CERT_KEYSIZE	Returns the number of bits in Secure Sockets Layer connection key size  CERT_SECRETKEYSIZE	Returns the number of bits in server certificate private key  CERT_SERIALNUMBER	Returns the serial number field of the client certificate  CERT_SERVER_ISSUER	Returns the issuer field of the server certificate  CERT_SERVER_SUBJECT	Returns the subject field of the server certificate  CERT_SUBJECT	Returns the subject field of the client certificate  CONTENT_LENGTH	Returns the length of the content as sent by the client  CONTENT_TYPE	Returns the data type of the content  GATEWAY_INTERFACE	Returns the revision of the CGI specification used by the server  HTTP_&lt;headername&gt;	Returns the value stored in the header HeaderName  HTTP_ACCEPT	Returns the value of the Accept header  HTTP_ACCEPT_LANGUAGE	Returns a string describing the language to use for displaying content  HTTP_COOKIE	Returns the cookie string included with the request  HTTP_REFERER	Returns a string containing the URL of the page that referred the request to the current page using an &lt;a href=&quot;http://www.blogger.com/post-edit.do&quot;&gt; tag. If the page is redirected, HTTP_REFERER is empty  HTTP_USER_AGENT	Returns a string describing the browser that sent the request  HTTPS	Returns ON if the request came in through secure channel or OFF if the request came in through a non-secure channel  HTTPS_KEYSIZE	Returns the number of bits in Secure Sockets Layer connection key size  HTTPS_SECRETKEYSIZE	Returns the number of bits in server certificate private key  HTTPS_SERVER_ISSUER	Returns the issuer field of the server certificate  HTTPS_SERVER_SUBJECT	Returns the subject field of the server certificate  INSTANCE_ID	The ID for the IIS instance in text format  INSTANCE_META_PATH	The meta base path for the instance of IIS that responds to the request  LOCAL_ADDR	Returns the server address on which the request came in  LOGON_USER	Returns the Windows account that the user is logged into  PATH_INFO	Returns extra path information as given by the client  PATH_TRANSLATED	A translated version of PATH_INFO that takes the path and performs any necessary virtual-to-physical mapping  QUERY_STRING	Returns the query information stored in the string following the question mark (?) in the HTTP request  REMOTE_ADDR	Returns the IP address of the remote host making the request  REMOTE_HOST	Returns the name of the host making the request  REMOTE_USER	Returns an unmapped user-name string sent in by the user  REQUEST_METHOD	Returns the method used to make the request  SCRIPT_NAME	Returns a virtual path to the script being executed  SERVER_NAME	Returns the server&#39;s host name, DNS alias, or IP address as it would appear in self-referencing URLs  SERVER_PORT	Returns the port number to which the request was sent  SERVER_PORT_SECURE	Returns a string that contains 0 or 1. If the request is being handled on the secure port, it will be 1. Otherwise, it will be 0  SERVER_PROTOCOL	Returns the name and revision of the request information protocol  SERVER_SOFTWARE	Returns the name and version of the server software that answers the request and runs the gateway  URL	Returns the base portion of the URL   ________________________________________  Examples  Example 1  You can loop through all of the server variables like this:  &amp;lt;% for each x in Request.ServerVariables  response.write(x &amp;amp; &quot; &quot;)  next  &amp;gt;   Example 2  This example demonstrates how to find out the visitor&#39;s browser type, IP address, and more:      &lt;b&gt;You are browsing this site with:&lt;/b&gt;  &amp;lt;%Response.Write(Request.ServerVariables(&quot;http_user_agent&quot;))%&amp;gt;   &lt;b&gt;Your IP address is:&lt;/b&gt;  &amp;lt;%Response.Write(Request.ServerVariables(&quot;remote_addr&quot;))%&amp;gt;   &lt;b&gt;The DNS lookup of the IP address is:&lt;/b&gt;  &amp;lt;%Response.Write(Request.ServerVariables(&quot;remote_host&quot;))%&amp;gt;   &lt;b&gt;The method used to call the page:&lt;/b&gt;  &amp;lt;%Response.Write(Request.ServerVariables(&quot;request_method&quot;))%&amp;gt;   &lt;b&gt;The server&#39;s domain name:&lt;/b&gt;  &amp;lt;%Response.Write(Request.ServerVariables(&quot;server_name&quot;))%&amp;gt;   &lt;b&gt;The server&#39;s port:&lt;/b&gt;  &amp;lt;%Response.Write(Request.ServerVariables(&quot;server_port&quot;))%&amp;gt;   &lt;b&gt;The server&#39;s software:&lt;/b&gt;  &amp;lt;%Response.Write(Request.ServerVariables(&quot;server_software&quot;))%&amp;gt;   Properties   ASP TotalBytes Property  ________________________________________  The TotalBytes property is a read-only property that returns the total number of bytes the client sent in the body of the request.  Syntax  varbytes=Request.Totalbytes   Example  The following code sets the variable a equal to the total number of bytes sent in the body of the request:  &amp;lt;% dim a  a=Request.TotalBytes  %&amp;gt;    ASP BinaryRead Method  ________________________________________  The BinaryRead method is used to retrieve the data sent to the server from the client as part of a POST request. It will store the data in a safe array (an array that stores information about the number of dimensions and the bounds of its dimensions).  Note: A call to Request.Form after a call to BinaryRead, and vice-versa, will cause an error.  Syntax  Request.BinaryRead(count)    Parameter	Description  count 	Required. Specifies how many bytes to read from the client   Examples  The following example uses the BinaryRead method to place the content of a request into a safe array:  &amp;lt;% dim a,b  a=Request.TotalBytes  b=Request.BinaryRead(a)  %&amp;gt;     3) ASP Application Object   A group of ASP files that work together to perform some purpose is called an application. The Application object is used to tie these files together.  ________________________________________  Application Object  An application on the Web may consists of several ASP files that work together to perform some purpose. The Application object is used to tie these files together.  The Application object is used to store and access variables from any page, just like the Session object. The difference is that ALL users share ONE Application object (with Sessions there is ONE Session object for EACH user).  The Application object holds information that will be used by many pages in the application (like database connection information). The information can be accessed from any page. The information can also be changed in one place, and the changes will automatically be reflected on all pages.  The Application object&#39;s collections, methods, and events are described below:  Collections  Collection	Description  Contents  Contains all the items appended to the application through a script command  StaticObjects  Contains all the objects appended to the application with the HTML &lt;object&gt;tag  Methods  Method	Description  Contents.Remove  Deletes an item from the Contents collection  Contents.RemoveAll()  Deletes all items from the Contents collection  Lock  Prevents other users from modifying the variables in the Application object  Unlock  Enables other users to modify the variables in the Application object (after it has been locked using the Lock method)  Events  Event	Description  Application_OnEnd  Occurs when all user sessions are over, and the application ends  Application_OnStart  Occurs before the first new session is created (when the Application object is first referenced)   Collections:  ASP Contents Collection  ________________________________________  The Contents collection contains all the items appended to the application/session through a script command.  Tip: To remove items from the Contents collection, use the Remove and RemoveAll methods.  Syntax  Application.Contents(Key)   Session.Contents(Key)    Parameter	Description  key 	Required. The name of the item to retrieve   ________________________________________  Examples for the Application Object  Example 1  Notice that both name and objtest would be appended to the Contents collection:  &amp;lt;%  Application(&quot;name&quot;)=&quot;W3Schools&quot;  Set Application(&quot;objtest&quot;)=Server.CreateObject(&quot;ADODB.Connection&quot;)  %&amp;gt;   Example 2  To loop through the Contents collection:  &amp;lt;% for each x in Application.Contents  Response.Write(x &amp;amp; &quot;=&quot; &amp;amp; Application.Contents(x) &amp;amp; &quot; &quot;)  next  %&amp;gt;   or:   &amp;lt;% For i=1 to Application.Contents.Count  Response.Write(i &amp;amp; &quot;=&quot; &amp;amp; Application.Contents(i) &amp;amp; &quot; &quot;)  Next  %&amp;gt;   Example 3  &amp;lt;% Application(&quot;date&quot;)=&quot;2001/05/05&quot;  Application(&quot;author&quot;)=&quot;W3Schools&quot;   for each x in Application.Contents  Response.Write(x &amp;amp; &quot;=&quot; &amp;amp; Application.Contents(x) &amp;amp; &quot; &quot;)  next  %&amp;gt;   Output:   date=2001/05/05  author=W3Schools    ________________________________________  Examples for the Session Object  Example 1  Notice that both name and objtest would be appended to the Contents collection:  &amp;lt;% Session(&quot;name&quot;)=&quot;Hege&quot;  Set Session(&quot;objtest&quot;)=Server.CreateObject(&quot;ADODB.Connection&quot;)  %&amp;gt;   Example 2  To loop through the Contents collection:  &amp;lt;% for each x in Session.Contents  Response.Write(x &amp;amp; &quot;=&quot; &amp;amp; Session.Contents(x) &amp;amp; &quot; &quot;)  next  %&amp;gt;   or:   &amp;lt;% For i=1 to Session.Contents.Count  Response.Write(i &amp;amp; &quot;=&quot; &amp;amp; Session.Contents(i) &amp;amp; &quot; &quot;)  Next  %&amp;gt;   Example 3  &amp;lt;% Session(&quot;name&quot;)=&quot;Hege&quot;  Session(&quot;date&quot;)=&quot;2001/05/05&quot;   for each x in Session.Contents  Response.Write(x &amp;amp; &quot;=&quot; &amp;amp; Session.Contents(x) &amp;amp; &quot; &quot;)  next  %&amp;gt;   Output:   name=Hege  date=2001/05/05    ASP StaticObjects Collection  ________________________________________  The StaticObjects collection contains all the objects appended to the application/session with the HTML &lt;object&gt;tag.  Syntax  Application.StaticObjects(Key)   Session.StaticObjects(Key)    Parameter	Description  key 	Required. The name of the item to retrieve   ________________________________________  Examples for the Application Object  Example 1  To loop through the StaticObjects collection:  &amp;lt;% for each x in Application.StaticObjects  Response.Write(x &amp;amp; &quot; &quot;)  next  %&amp;gt;   Example 2  In Global.asa:  &lt;object id=&quot;MsgBoard&quot; progid=&quot;msgboard.MsgBoard&quot; runat=&quot;server&quot; scope=&quot;application&quot;&gt;&lt;/object&gt;   &lt;object id=&quot;AdRot&quot; progid=&quot;MSWC.AdRotator&quot; runat=&quot;server&quot; scope=&quot;application&quot;&gt;&lt;/object&gt;   In an ASP file:  &amp;lt;% for each x in Application.StaticObjects  Response.Write(x &amp;amp; &quot; &quot;)  next  %&amp;gt;   Output:   MsgBoard  AdRot    ________________________________________  Examples for the Session Object  Example 1  To loop through the StaticObjects collection:  &amp;lt;% for each x in Session.StaticObjects  Response.Write(x &amp;amp; &quot; &quot;)  next  %&amp;gt;   Example 2  In Global.asa:  &lt;object id=&quot;MsgBoard&quot; progid=&quot;msgboard.MsgBoard&quot; runat=&quot;server&quot; scope=&quot;session&quot;&gt;&lt;/object&gt;   &lt;object id=&quot;AdRot&quot; progid=&quot;MSWC.AdRotator&quot; runat=&quot;server&quot; scope=&quot;session&quot;&gt;&lt;/object&gt;   In an ASP file:  &amp;lt;% for each x in Session.StaticObjects  Response.Write(x &amp;amp; &quot; &quot;)  next  %&amp;gt;   Output:   MsgBoard  AdRot    Methods:  ASP Contents.Remove Method  ________________________________________  The Contents.Remove method deletes an item from the Contents collection.  Syntax  Application.Contents.Remove(name|index)   Session.Contents.Remove(name|index)    Parameter	Description  name 	The name of the item to remove   index 	The index of the item to remove    ________________________________________  Examples for the Application Object  Example 1  &amp;lt;% Application(&quot;test1&quot;)=(&quot;First test&quot;)  Application(&quot;test2&quot;)=(&quot;Second test&quot;)  Application(&quot;test3&quot;)=(&quot;Third test&quot;)   Application.Contents.Remove(&quot;test2&quot;)   for each x in Application.Contents  Response.Write(x &amp;amp; &quot;=&quot; &amp;amp; Application.Contents(x) &amp;amp; &quot; &quot;)  next  %&amp;gt;   Output:   test1=First test  test3=Third test   Example 2  &amp;lt;% Application(&quot;test1&quot;)=(&quot;First test&quot;)  Application(&quot;test2&quot;)=(&quot;Second test&quot;)  Application(&quot;test3&quot;)=(&quot;Third test&quot;)   Application.Contents.Remove(2)   for each x in Application.Contents  Response.Write(x &amp;amp; &quot;=&quot; &amp;amp; Application.Contents(x) &amp;amp; &quot; &quot;)  next  %&amp;gt;   Output:   test1=First test  test3=Third test   Examples for the Session Object  Example 1  &amp;lt;% Session(&quot;test1&quot;)=(&quot;First test&quot;)  Session(&quot;test2&quot;)=(&quot;Second test&quot;)  Session(&quot;test3&quot;)=(&quot;Third test&quot;)   Session.Contents.Remove(&quot;test2&quot;)   for each x in Session.Contents  Response.Write(x &amp;amp; &quot;=&quot; &amp;amp; Session.Contents(x) &amp;amp; &quot; &quot;)  next  %&amp;gt;   Output:   test1=First test  test3=Third test   Example 2  &amp;lt;% Session(&quot;test1&quot;)=(&quot;First test&quot;)  Session(&quot;test2&quot;)=(&quot;Second test&quot;)  Session(&quot;test3&quot;)=(&quot;Third test&quot;)   Session.Contents.Remove(2)   for each x in Session.Contents  Response.Write(x &amp;amp; &quot;=&quot; &amp;amp; Session.Contents(x) &amp;amp; &quot; &quot;)  next  %&amp;gt;   Output:   test1=First test  test3=Third test    ASP Contents.RemoveAll Method  ________________________________________  The Contents.RemoveAll method deletes all items from the Contents collection.  Syntax  Application.Contents.RemoveAll()   Session.Contents.RemoveAll()   Example for the Application Object  &amp;lt;% Application.Contents.RemoveAll()  %&amp;gt;   Example for the Session Object  &amp;lt;% Session.Contents.RemoveAll()  %&amp;gt;    ASP Lock and Unlock Methods  ________________________________________  Lock Method  The Lock method prevents other users from modifying the variables in the Application object (used to ensure that only one client at a time can modify the Application variables).  Unlock Method  The Unlock method enables other users to modify the variables stored in the Application object (after it has been locked using the Lock method).  Syntax  Application.Lock   Application.Unlock   Example  The example below uses the Lock method to prevent more than one user from accessing the variable visits at a time, and the Unlock method to unlock the locked object so that the next client can increment the variable visits:  &amp;lt;% Application.Lock  Application(&quot;visits&quot;)=Application(&quot;visits&quot;)+1  Application.Unlock  %&amp;gt;   This page has been visited  &amp;lt;%=Application(&quot;visits&quot;)%&amp;gt; times!    Events:  ASP Application_OnStart and Application_OnEnd Events  ________________________________________  Application_OnStart Event  The Application_OnStart event occurs before the first new session is created (when the Application object is first referenced).  This event is placed in the Global.asa file.  Note: Referencing to a Session, Request, or Response objects in the Application_OnStart event script will cause an error.   Application_OnEnd Event  The Application_OnEnd event occurs when the application ends (when the web server stops).  This event is placed in the Global.asa file.  Note: The MapPath method cannot be used in the Application_OnEnd code.  Syntax  &lt;script language=&quot;vbscript&quot; runat=&quot;server&quot;&gt;
Sub Application_OnStart
. . . 
End Sub

Sub Application_OnEnd
. . . 
End Sub
&lt;/script&gt;    ________________________________________  Examples  Global.asa:  &lt;script language=&quot;vbscript&quot; runat=&quot;server&quot;&gt;
Sub Application_OnEnd()
Application(&quot;totvisitors&quot;)=Application(&quot;visitors&quot;)
End Sub

Sub Application_OnStart
Application(&quot;visitors&quot;)=0
End Sub

Sub Session_OnStart
Application.Lock
Application(&quot;visitors&quot;)=Application(&quot;visitors&quot;)+1
Application.UnLock
End Sub

Sub Session_OnEnd
Application.Lock
Application(&quot;visitors&quot;)=Application(&quot;visitors&quot;)-1
Application.UnLock
End Sub
&lt;/script&gt;   To display the number of current visitors in an ASP file:           There are &amp;lt;%response.write(Application(&quot;visitors&quot;))%&amp;gt;  online now!   4)ASP Session Object  A Session object stores information about, or change settings for a user session.  ________________________________________  Session Object  When you are working with an application on your computer, you open it, do some changes and then you close it. This is much like a Session. The computer knows who you are. It knows when you open the application and when you close it. However, on the internet there is one problem: the web server does not know who you are and what you do, because the HTTP address doesn&#39;t maintain state.   ASP solves this problem by creating a unique cookie for each user. The cookie is sent to the user&#39;s computer and it contains information that identifies the user. This interface is called the Session object.   The Session object stores information about, or change settings for a user session.  Variables stored in a Session object hold information about one single user, and are available to all pages in one application. Common information stored in session variables are name, id, and preferences. The server creates a new Session object for each new user, and destroys the Session object when the session expires.   The Session object&#39;s collections, properties, methods, and events are described below:  Collections  Collection	Description  Contents  Contains all the items appended to the session through a script command  StaticObjects  Contains all the objects appended to the session with the HTML &lt;object&gt;tag  Properties  Property	Description  CodePage  Specifies the character set that will be used when displaying dynamic content  LCID  Sets or returns an integer that specifies a location or region. Contents like date, time, and currency will be displayed according to that location or region  SessionID  Returns a unique id for each user. The unique id is generated by the server  Timeout  Sets or returns the timeout period (in minutes) for the Session object in this application  Methods  Method	Description  Abandon  Destroys a user session  Contents.Remove  Deletes an item from the Contents collection  Contents.RemoveAll()  Deletes all items from the Contents collection  Events  Event	Description  Session_OnEnd  Occurs when a session ends  Session_OnStart  Occurs when a session starts     Collections:   ASP Contents Collection  ________________________________________  The Contents collection contains all the items appended to the application/session through a script command.  Tip: To remove items from the Contents collection, use the Remove and RemoveAll methods.  Syntax  Application.Contents(Key)   Session.Contents(Key)    Parameter	Description  key 	Required. The name of the item to retrieve   ________________________________________  Examples for the Application Object  Example 1  Notice that both name and objtest would be appended to the Contents collection:  &amp;lt;%  Application(&quot;name&quot;)=&quot;W3Schools&quot;  Set Application(&quot;objtest&quot;)=Server.CreateObject(&quot;ADODB.Connection&quot;)  %&amp;gt;   Example 2  To loop through the Contents collection:  &amp;lt;% for each x in Application.Contents  Response.Write(x &amp;amp; &quot;=&quot; &amp;amp; Application.Contents(x) &amp;amp; &quot; &quot;)  next  %&amp;gt;   or:   &amp;lt;% For i=1 to Application.Contents.Count  Response.Write(i &amp;amp; &quot;=&quot; &amp;amp; Application.Contents(i) &amp;amp; &quot; &quot;)  Next  %&amp;gt;   Example 3  &amp;lt;% Application(&quot;date&quot;)=&quot;2001/05/05&quot;  Application(&quot;author&quot;)=&quot;W3Schools&quot;   for each x in Application.Contents  Response.Write(x &amp;amp; &quot;=&quot; &amp;amp; Application.Contents(x) &amp;amp; &quot; &quot;)  next  %&amp;gt;   Output:   date=2001/05/05  author=W3Schools    ________________________________________  Examples for the Session Object  Example 1  Notice that both name and objtest would be appended to the Contents collection:  &amp;lt;% Session(&quot;name&quot;)=&quot;Hege&quot;  Set Session(&quot;objtest&quot;)=Server.CreateObject(&quot;ADODB.Connection&quot;)  %&amp;gt;   Example 2  To loop through the Contents collection:  &amp;lt;% for each x in Session.Contents  Response.Write(x &amp;amp; &quot;=&quot; &amp;amp; Session.Contents(x) &amp;amp; &quot; &quot;)  next  %&amp;gt;   or:   &amp;lt;% For i=1 to Session.Contents.Count  Response.Write(i &amp;amp; &quot;=&quot; &amp;amp; Session.Contents(i) &amp;amp; &quot; &quot;)  Next  %&amp;gt;   Example 3  &amp;lt;% Session(&quot;name&quot;)=&quot;Hege&quot;  Session(&quot;date&quot;)=&quot;2001/05/05&quot;   for each x in Session.Contents  Response.Write(x &amp;amp; &quot;=&quot; &amp;amp; Session.Contents(x) &amp;amp; &quot; &quot;)  next  %&amp;gt;   Output:   name=Hege  date=2001/05/05    ASP StaticObjects Collection  ________________________________________  The StaticObjects collection contains all the objects appended to the application/session with the HTML &lt;object&gt;tag.  Syntax  Application.StaticObjects(Key)   Session.StaticObjects(Key)    Parameter	Description  key 	Required. The name of the item to retrieve   ________________________________________  Examples for the Application Object  Example 1  To loop through the StaticObjects collection:  &amp;lt;% for each x in Application.StaticObjects  Response.Write(x &amp;amp; &quot; &quot;)  next  %&amp;gt;   Example 2  In Global.asa:  &lt;object id=&quot;MsgBoard&quot; progid=&quot;msgboard.MsgBoard&quot; runat=&quot;server&quot; scope=&quot;application&quot;&gt;&lt;/object&gt;   &lt;object id=&quot;AdRot&quot; progid=&quot;MSWC.AdRotator&quot; runat=&quot;server&quot; scope=&quot;application&quot;&gt;&lt;/object&gt;   In an ASP file:  &amp;lt;% for each x in Application.StaticObjects  Response.Write(x &amp;amp; &quot; &quot;)  next  %&amp;gt;   Output:   MsgBoard  AdRot    ________________________________________  Examples for the Session Object  Example 1  To loop through the StaticObjects collection:  &amp;lt;% for each x in Session.StaticObjects  Response.Write(x &amp;amp; &quot; &quot;)  next  %&amp;gt;   Example 2  In Global.asa:  &lt;object id=&quot;MsgBoard&quot; progid=&quot;msgboard.MsgBoard&quot; runat=&quot;server&quot; scope=&quot;session&quot;&gt;&lt;/object&gt;   &lt;object id=&quot;AdRot&quot; progid=&quot;MSWC.AdRotator&quot; runat=&quot;server&quot; scope=&quot;session&quot;&gt;&lt;/object&gt;   In an ASP file:  &amp;lt;% for each x in Session.StaticObjects  Response.Write(x &amp;amp; &quot; &quot;)  next  %&amp;gt;   Output:   MsgBoard  AdRot     Properties:  ASP CodePage Property  ________________________________________  The CodePage property specifies the character set that will be used when displaying dynamic content.  Example of some code pages:  •	1252 - American English and most European languages   •	932 - Japanese Kanji   Syntax  Session.CodePage(=Codepage)    Parameter	Description  codepage	Defines a code page (character set) for the system running the script engine  Examples  &amp;lt;% Response.Write(Session.CodePage)  %&amp;gt;   Output:   1252     ASP LCID Property  ________________________________________  The LCID property sets or returns an integer that specifies a location or region. Contents like date, time, and currency will be displayed according to that location or region.  Syntax  Session.LCID(=LCID)    Parameter	Description  LCID 	A locale identifier  Examples  &amp;lt;% response.write(&quot; &quot;)  response.write(&quot;Default LCID is: &quot; &amp;amp; Session.LCID &amp;amp; &quot; &quot;)  response.write(&quot;Date format is: &quot; &amp;amp; date() &amp;amp; &quot; &quot;)  response.write(&quot;Currency format is: &quot; &amp;amp; FormatCurrency(350))  response.write(&quot; &quot;)   Session.LCID=1036   response.write(&quot; &quot;)  response.write(&quot;LCID is now: &quot; &amp;amp; Session.LCID &amp;amp; &quot; &quot;)  response.write(&quot;Date format is: &quot; &amp;amp; date() &amp;amp; &quot; &quot;)  response.write(&quot;Currency format is: &quot; &amp;amp; FormatCurrency(350))  response.write(&quot; &quot;)   Session.LCID=3079   response.write(&quot; &quot;)  response.write(&quot;LCID is now: &quot; &amp;amp; Session.LCID &amp;amp; &quot; &quot;)  response.write(&quot;Date format is: &quot; &amp;amp; date() &amp;amp; &quot; &quot;)  response.write(&quot;Currency format is: &quot; &amp;amp; FormatCurrency(350))  response.write(&quot; &quot;)   Session.LCID=2057   response.write(&quot; &quot;)  response.write(&quot;LCID is now: &quot; &amp;amp; Session.LCID &amp;amp; &quot; &quot;)  response.write(&quot;Date format is: &quot; &amp;amp; date() &amp;amp; &quot; &quot;)  response.write(&quot;Currency format is: &quot; &amp;amp; FormatCurrency(350))  response.write(&quot; &quot;)  %&amp;gt;   Output:   Default LCID is: 2048  Date format is: 12/11/2001  Currency format is: $350.00   LCID is now: 1036  Date format is: 11/12/2001  Currency format is: 350,00 F   LCID is now: 3079  Date format is: 11.12.2001  Currency format is: öS 350,00   LCID is now: 2057  Date format is: 11/12/2001  Currency format is: £350.00    ASP SessionID Property  ________________________________________  The SessionID property returns a unique id for each user. The unique id is generated by the server.  Syntax  Session.SessionID   Examples  &amp;lt;% Response.Write(Session.SessionID)  %&amp;gt;   Output:   772766038    ASP Timeout Property  ________________________________________  The Timeout property sets or returns the timeout period for the Session object for this application, in minutes. If the user does not refresh or request a page within the timeout period, the session will end.  Syntax  Session.Timeout[=nMinutes]    Parameter	Description  nMinutes 	The number of minutes a session can remain idle before the server terminates it. Default is 20 minutes  Examples  &amp;lt;% response.write(&quot; &quot;)  response.write(&quot;Default Timeout is: &quot; &amp;amp; Session.Timeout)  response.write(&quot; &quot;)   Session.Timeout=30   response.write(&quot; &quot;)  response.write(&quot;Timeout is now: &quot; &amp;amp; Session.Timeout)  response.write(&quot; &quot;)  %&amp;gt;   Output:   Default Timeout is: 20   Timeout is now: 30    Methods:  ASP Abandon Method  ________________________________________  The Abandon method destroys a user session.  Note: When this method is called, the current Session object is not deleted until all of the script on the current page have been processed. This means that it is possible to access session variables on the same page as the call to Abandon, but not from another Web page.  Syntax  Session.Abandon   Examples  File1.asp:  &amp;lt;% Session(&quot;name&quot;)=&quot;Hege&quot;  Session.Abandon  Response.Write(Session(&quot;name&quot;))  %&amp;gt;   Output:   Hege   File2.asp:  &amp;lt;% Response.Write(Session(&quot;name&quot;))  %&amp;gt;   Output:   (none)    ASP Contents.Remove Method  ________________________________________  The Contents.Remove method deletes an item from the Contents collection.  Syntax  Application.Contents.Remove(name|index)   Session.Contents.Remove(name|index)    Parameter	Description  name 	The name of the item to remove   index 	The index of the item to remove    ________________________________________  Examples for the Application Object  Example 1  &amp;lt;% Application(&quot;test1&quot;)=(&quot;First test&quot;)  Application(&quot;test2&quot;)=(&quot;Second test&quot;)  Application(&quot;test3&quot;)=(&quot;Third test&quot;)   Application.Contents.Remove(&quot;test2&quot;)   for each x in Application.Contents  Response.Write(x &amp;amp; &quot;=&quot; &amp;amp; Application.Contents(x) &amp;amp; &quot; &quot;)  next  %&amp;gt;   Output:   test1=First test  test3=Third test   Example 2  &amp;lt;% Application(&quot;test1&quot;)=(&quot;First test&quot;)  Application(&quot;test2&quot;)=(&quot;Second test&quot;)  Application(&quot;test3&quot;)=(&quot;Third test&quot;)   Application.Contents.Remove(2)   for each x in Application.Contents  Response.Write(x &amp;amp; &quot;=&quot; &amp;amp; Application.Contents(x) &amp;amp; &quot; &quot;)  next  %&amp;gt;   Output:   test1=First test  test3=Third test   Examples for the Session Object  Example 1  &amp;lt;% Session(&quot;test1&quot;)=(&quot;First test&quot;)  Session(&quot;test2&quot;)=(&quot;Second test&quot;)  Session(&quot;test3&quot;)=(&quot;Third test&quot;)   Session.Contents.Remove(&quot;test2&quot;)   for each x in Session.Contents  Response.Write(x &amp;amp; &quot;=&quot; &amp;amp; Session.Contents(x) &amp;amp; &quot; &quot;)  next  %&amp;gt;   Output:   test1=First test  test3=Third test   Example 2  &amp;lt;% Session(&quot;test1&quot;)=(&quot;First test&quot;)  Session(&quot;test2&quot;)=(&quot;Second test&quot;)  Session(&quot;test3&quot;)=(&quot;Third test&quot;)   Session.Contents.Remove(2)   for each x in Session.Contents  Response.Write(x &amp;amp; &quot;=&quot; &amp;amp; Session.Contents(x) &amp;amp; &quot; &quot;)  next  %&amp;gt;   Output:   test1=First test  test3=Third test   ASP Contents.RemoveAll Method  ________________________________________  The Contents.RemoveAll method deletes all items from the Contents collection.  Syntax  Application.Contents.RemoveAll()   Session.Contents.RemoveAll()   Example for the Application Object  &amp;lt;% Application.Contents.RemoveAll()  %&amp;gt;   Example for the Session Object  &amp;lt;% Session.Contents.RemoveAll()  %&amp;gt;    Events:  ASP Session_OnStart and Session_OnEnd Events  ________________________________________  Session_OnStart Event  The Session_OnStart event occurs when the server creates a session.  This event is placed in the Global.asa file.  Session_OnEnd Event  The Session_OnEnd event occurs when the session ends (abandoned or times out).  This event is placed in the Global.asa file.  Note: The MapPath method cannot be used in the Session_OnEnd code.  Syntax  &lt;script language=&quot;vbscript&quot; runat=&quot;server&quot;&gt;
Sub Session_OnStart
. . .
End Sub

Sub Session_OnEnd
. . .
End Sub
&lt;/script&gt;    ________________________________________  Examples  Global.asa:  &lt;script language=&quot;vbscript&quot; runat=&quot;server&quot;&gt;
Sub Application_OnEnd()
Application(&quot;totvisitors&quot;)=Application(&quot;visitors&quot;)
End Sub

Sub Application_OnStart
Application(&quot;visitors&quot;)=0
End Sub

Sub Session_OnStart
Application.Lock
Application(&quot;visitors&quot;)=Application(&quot;visitors&quot;)+1
Application.UnLock
End Sub

Sub Session_OnEnd
Application.Lock
Application(&quot;visitors&quot;)=Application(&quot;visitors&quot;)-1
Application.UnLock
End Sub
&lt;/script&gt;   To display the number of current visitors in an ASP file:           There are &amp;lt;%response.write(Application(&quot;visitors&quot;))%&amp;gt;  online now!   5) ASP Server Object  The Server object is used to access properties and methods on the server.  ________________________________________  Server Object  The ASP Server object is used to access properties and methods on the server. Its properties and methods are described below:  Properties  Property	Description  ScriptTimeout  Sets or returns the maximum number of seconds a script can run before it is terminated  Methods  Method	Description  CreateObject  Creates an instance of an object  Execute  Executes an ASP file from inside another ASP file  GetLastError()  Returns an ASPError object that describes the error condition that occurred  HTMLEncode  Applies HTML encoding to a specified string  MapPath  Maps a specified path to a physical path  Transfer  Sends (transfers) all the information created in one ASP file to a second ASP file  URLEncode  Applies URL encoding rules to a specified string   Properties:  ASP ScriptTimeout Property  ________________________________________  The ScriptTimeout property sets or returns the maximum number of seconds a script can run before it is terminated.  Syntax  Server.ScriptTimeout[=NumSeconds]    Parameter	Description  NumSeconds 	The maximum number of seconds a script can run before the server terminates it. Default is 90 seconds    Examples  Example 1  Set the script timeout:  &amp;lt;% Server.ScriptTimeout=200  %&amp;gt;   Example 2  Retrieve the current value of the ScriptTimeout property:  &amp;lt;% response.write(Server.ScriptTimeout)  %&amp;gt;    Methods:  ASP CreateObject Method  ________________________________________  The CreateObject method creates an instance of an object.    Note: Objects created with this method have page scope. They are destroyed when the server are finished processing the current ASP page. To create an object with session or application scope, you can either use the &lt;object&gt;tag in the Global.asa file, or store the object in a session or application variable.   Syntax   Server.CreateObject(progID)    Part	Description  progID 	Required. The type of object to create   ________________________________________  Example 1  This example creates an instance of the server component MSWC.AdRotator:  &amp;lt;% Set adrot=Server.CreateObject(&quot;MSWC.AdRotator&quot;)  %&amp;gt;   Example 2  An object stored in a session variable is destroyed when the session ends. However, you can also destroy the object by setting the variable to Nothing or to a new value:  &amp;lt;% Session(&quot;ad&quot;)=Nothing  %&amp;gt;   or   &amp;lt;% Session(&quot;ad&quot;)=&quot;a new value&quot;  %&amp;gt;   Example 3  You cannot create an instance of an object with the same name as a built-in object:  &amp;lt;% Set Application=Server.CreateObject(&quot;Application&quot;)  %&amp;gt;    ASP Execute Method  ________________________________________  The Execute method executes an ASP file from inside another ASP file. After executing the called .asp file, the control is returned to the original .asp file.   Syntax   Server.Execute(path)    Parameter	Description  path 	Required. The location of the ASP file to execute  Example  File1.asp:   &amp;lt;% response.write(&quot;I am in File 1! &quot;)  Server.Execute(&quot;file2.asp&quot;)  response.write(&quot;I am back in File 1!&quot;)  %&amp;gt;   File2.asp:   &amp;lt;% response.write(&quot;I am in File 2! &quot;)  %&amp;gt;   Output:   I am in File 1!  I am in File 2!  I am back in File 1!   Also look at the Server.Transfer method to see the difference between the Server.Execute and Server.Transfer methods.  ASP GetLastError() Method (ASP 3.0)  ________________________________________  The GetLastError method returns an ASPError object that describes the error condition that occurred.  By default, a Web site uses the file \iishelp\common\500-100.asp for processing ASP errors. You can either use this file, or create your own. If you want to change the ASP file for processing the 500;100 custom errors you can use the IIS snap-in.  Note: A 500;100 custom error will be generated if IIS encounters an error while processing either an ASP file or the application&#39;s Global.asa file.   Note: This method is available only before the ASP file has sent any content to the browser.  Syntax  Server.GetLastError()   Examples  Example 1  In the example an error will occur when IIS tries to include the file, because the include statement is missing the file parameter:    &amp;lt;% response.write(&quot;sometext&quot;)  %&amp;gt;   Example 2  In this example an error will occur when compiling the script, because the &quot;next&quot; keyword is missing:  &amp;lt;% dim i  for i=1 to 10  ........  nxt  %&amp;gt;   Example 3  In this example an error will occur because the script attempts to divide by 0:  &amp;lt;% dim i,tot,j  i=0  tot=0  j=0   for i=1 to 10  tot=tot+1  next   tot=tot/j  %&amp;gt;   ASP HTMLEncode Method  ________________________________________  The HTMLEncode method applies HTML encoding to a specified string.   Syntax   Server.HTMLEncode(string)    Parameter	Description  string	Required. The string to encode  Example  The following script:   &amp;lt;% response.write(Server.HTMLEncode(&quot;The image tag: &lt;img /&gt;&quot;))  %&amp;gt;   Output:   The image tag: &amp;lt;img&amp;gt;   Web browser output:   The image tag: &lt;img /&gt;    ASP MapPath Method  ________________________________________  The MapPath method maps a specified path to a physical path.  Note: This method cannot be used in Session.OnEnd and Application.OnEnd.  Syntax  Server.MapPath(path)    Parameter	Description  path 	Required. A relative or virtual path to map to a physical path. If this parameter starts with / or \, it returns a path as if this parameter is a full virtual path. If this parameter doesn&#39;t start with / or \, it returns a path relative to the directory of the .asp file being processed  Examples  Example 1  For the example below, the file test.asp is located in C:\Inetpub\Wwwroot\Script.  The file Test.asp (located in C:\Inetpub\Wwwroot\Script) contains the following code:  &amp;lt;% response.write(Server.MapPath(&quot;test.asp&quot;) &amp;amp; &quot; &quot;)  response.write(Server.MapPath(&quot;script/test.asp&quot;) &amp;amp; &quot; &quot;)  response.write(Server.MapPath(&quot;/script/test.asp&quot;) &amp;amp; &quot; &quot;)  response.write(Server.MapPath(&quot;\script&quot;) &amp;amp; &quot; &quot;)  response.write(Server.MapPath(&quot;/&quot;) &amp;amp; &quot; &quot;)  response.write(Server.MapPath(&quot;\&quot;) &amp;amp; &quot; &quot;)  %&amp;gt;   Output:   c:\inetpub\wwwroot\script\test.asp  c:\inetpub\wwwroot\script\script\test.asp  c:\inetpub\wwwroot\script\test.asp  c:\inetpub\wwwroot\script  c:\inetpub\wwwroot  c:\inetpub\wwwroot   Example 2  How to use a relative path to return the relative physical path to the page that is being viewed in the browser:  &amp;lt;% response.write(Server.MapPath(&quot;../&quot;))  %&amp;gt;   or   &amp;lt;% response.write(Server.MapPath(&quot;..\&quot;))  %&amp;gt;    ASP Transfer Method  ________________________________________  The Transfer method sends (transfers) all the state information (all application/session variables and all items in the request collections) created in one ASP file to a second ASP file.   When the second ASP page completes its tasks, it will NOT return to the first ASP page (like the Execute method).   Note: The Transfer method is an efficient alternate for the Response.Redirect. A redirect forces the Web server to handle an extra request while the Server.Transfer method transfers execution to a different ASP page on the server, and avoids the extra round trip.   Syntax   Server.Transfer(path)    Parameter	Description  path	Required. The location of the ASP file to which control should be transferred  Example  File1.asp:   &amp;lt;% response.write(&quot;Line 1 in File 1 &quot;)  Server.Transfer(&quot;file2.asp&quot;)  response.write(&quot;Line 2 in File 1 &quot;)  %&amp;gt;   File2.asp:   &amp;lt;% response.write(&quot;Line 1 in File 2 &quot;)  response.write(&quot;Line 2 in File 2 &quot;)  %&amp;gt;   Output:   Line 1 in File 1  Line 1 in File 2  Line 2 in File 2   Also look at the Server.Execute method to see the difference between the Server.Transfer and Server.Execute methods.   ASP URLEncode Method  ________________________________________  The URLEncode method applies URL encoding rules to a specified string.   Syntax   Server.URLEncode(string)    Parameter	Description  string 	Required. The string to encode  Example  &amp;lt;% response.write(Server.URLEncode(&quot;http://www.w3schools.com&quot;))  %&amp;gt;   Output:   http%3A%2F%2Fwww%2Ew3schools%2Ecom    6) ASP ASPError Object   The ASPError object displays information about errors in scripts.  ________________________________________  The ASPError Object  The ASPError object was implemented in ASP 3.0 and is available in IIS5 and later.  The ASPError object is used to display detailed information of any error that occurs in scripts in an ASP page.  Note: The ASPError object is created when Server.GetLastError is called, so the error information can only be accessed by using the Server.GetLastError method.  The ASPError object&#39;s properties are described below (all properties are read-only):  Properties  Property	Description  ASPCode  Returns an error code generated by IIS  ASPDescription  Returns a detailed description of the error (if the error is ASP-related)  Category  Returns the source of the error (was the error generated by ASP? By a scripting language? By an object?)  Column  Returns the column position within the file that generated the error  Description  Returns a short description of the error  File  Returns the name of the ASP file that generated the error  Line  Returns the line number where the error was detected  Number  Returns the standard COM error code for the error  Source  Returns the actual source code of the line where the error occurred   ASP ASPError Object Properties  ________________________________________  ASPCode  The ASPCode property returns an error code generated by IIS.  ASPDescription  The ASPDescription property returns a detailed description of the error.  Category  The Category property returns the source of the error (Was the error generated by IIS? A scripting language? Or a component?).  Column  The Column property returns the column position within the ASP file that generated the error.  Description  The Description property returns a short description of the error.  File  The File property returns the name of the ASP file that generated the error.  Line  The Line property returns the number of the line within the ASP file that generated the error.  Number  The Number property returns the standard COM error code for the error.  Source  The Source property returns the actual source code of the line where the error occurred.  Syntax  ASPError.ASPCode()  ASPError.ASPDescription()  ASPError.Category()  ASPError.Column()  ASPError.Description()  ASPError.File()  ASPError.Line()  ASPError.Number()  ASPError.Source()   Example  &amp;lt;% dim objErr  set objErr=Server.GetLastError()   response.write(&quot;ASPCode=&quot; &amp;amp; objErr.ASPCode)  response.write(&quot; &quot;)  response.write(&quot;ASPDescription=&quot; &amp;amp; objErr.ASPDescription)  response.write(&quot; &quot;)  response.write(&quot;Category=&quot; &amp;amp; objErr.Category)  response.write(&quot; &quot;)  response.write(&quot;Column=&quot; &amp;amp; objErr.Column)  response.write(&quot; &quot;)  response.write(&quot;Description=&quot; &amp;amp; objErr.Description)  response.write(&quot; &quot;)  response.write(&quot;File=&quot; &amp;amp; objErr.File)  response.write(&quot; &quot;)  response.write(&quot;Line=&quot; &amp;amp; objErr.Line)  response.write(&quot; &quot;)  response.write(&quot;Number=&quot; &amp;amp; objErr.Number)  response.write(&quot; &quot;)  response.write(&quot;Source=&quot; &amp;amp; objErr.Source)  %&amp;gt;     7) ASP FileSystemObject Object   The FileSystemObject object is used to access the file system on a server.  ________________________________________  The FileSystemObject Object  The FileSystemObject object is used to access the file system on a server.  This object can manipulate files, folders, and directory paths. It is also possible to retrieve file system information with this object.  The following code creates a text file (c:\test.txt) and then writes some text to the file:  &amp;lt;% dim fs,fname  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fname=fs.CreateTextFile(&quot;c:\test.txt&quot;,true)  fname.WriteLine(&quot;Hello World!&quot;)  fname.Close  set fname=nothing  set fs=nothing  %&amp;gt;    The FileSystemObject object&#39;s properties and methods are described below:   Properties  Property	Description  Drives  Returns a collection of all Drive objects on the computer  Methods  Method	Description  BuildPath  Appends a name to an existing path  CopyFile  Copies one or more files from one location to another  CopyFolder  Copies one or more folders from one location to another  CreateFolder  Creates a new folder  CreateTextFile  Creates a text file and returns a TextStream object that can be used to read from, or write to the file  DeleteFile  Deletes one or more specified files  DeleteFolder  Deletes one or more specified folders  DriveExists  Checks if a specified drive exists  FileExists  Checks if a specified file exists  FolderExists  Checks if a specified folder exists  GetAbsolutePathName  Returns the complete path from the root of the drive for the specified path  GetBaseName  Returns the base name of a specified file or folder  GetDrive  Returns a Drive object corresponding to the drive in a specified path  GetDriveName  Returns the drive name of a specified path  GetExtensionName  Returns the file extension name for the last component in a specified path  GetFile  Returns a File object for a specified path  GetFileName  Returns the file name or folder name for the last component in a specified path  GetFolder  Returns a Folder object for a specified path  GetParentFolderName  Returns the name of the parent folder of the last component in a specified path  GetSpecialFolder  Returns the path to some of Windows&#39; special folders  GetTempName  Returns a randomly generated temporary file or folder  MoveFile  Moves one or more files from one location to another  MoveFolder  Moves one or more folders from one location to another  OpenTextFile  Opens a file and returns a TextStream object that can be used to access the file   Properties:   ASP Drives Property  ________________________________________  The Drives property returns a collection of all Drive objects on the computer.   Syntax   [drivecoll=]FileSystemObject.Drives        Methods:   ASP BuildPath Method  ________________________________________  The BuildPath method appends a name to an existing path.   Syntax   [newpath=]FileSystemObject.BuildPath(path,name)    Parameter	Description  path 	Required. The path to append a name to  name 	Required. The name to append to the path  Example  &amp;lt;% dim fs,path  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  path=fs.BuildPath(&quot;c:\mydocuments&quot;,&quot;test&quot;)  response.write(path)  set fs=nothing  %&amp;gt;   Output:   c:\mydocuments\test    ASP CopyFile Method  ________________________________________  The CopyFile method copies one or more files from one location to another.   Syntax   FileSystemObject.CopyFile source,destination[,overwrite]    Parameter	Description  source 	Required. The file or files to copy (wildcards can be used}  destination 	Required. Where to copy the file or files (wildcards cannot be used}  overwrite 	Optional. A Boolean value that specifies whether an existing file can be overwritten. True allows existing files to be overwritten and False prevents existing files from being overwritten. Default is True   ________________________________________  Example  &amp;lt;% dim fs  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  fs.CopyFile &quot;c:\mydocuments\web\*.htm&quot;,&quot;c:\webpages\&quot;  set fs=nothing  %&amp;gt;    ASP CopyFolder Method  ________________________________________  The CopyFolder method copies one or more folders from one location to another.  Syntax  FileSystemObject.CopyFolder source,destination[,overwrite]    Parameter	Description  source 	Required. The folder or folders to copy (wildcards can be used)  destination 	Required. Where to copy the folder or folders (wildcards cannot be used)  overwrite 	Optional. A Boolean value that indicates whether an existing folder can be overwritten. True allows existing folders to be overwritten and False prevents existing folders from being overwritten. Default is True  Examples  &amp;lt;% &#39;copy all the folders in c:\mydocuments\web  &#39;to the folder c:\webpages   dim fs  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  fs.CopyFolder &quot;c:\mydocuments\web\*&quot;,&quot;c:\webpages\&quot;  set fs=nothing  %&amp;gt;   &amp;lt;% &#39;copy only the folder test from c:\mydocuments\web  &#39;to the folder c:\webpages   dim fs  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  fs.CopyFolder &quot;c:\mydocuments\web\test&quot;,&quot;c:\webpages\&quot;  set fs=nothing  %&amp;gt;     ASP CreateFolder Method  ________________________________________  The CreateFolder method creates a new folder.   Syntax   FileSystemObject.CreateFolder(name)    Parameter	Description  name 	Required. The name of the folder to create  Example  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.CreateFolder(&quot;c:\asp&quot;)  set f=nothing  set fs=nothing  %&amp;gt;    ASP CreateTextFile Method  ________________________________________  The CreateTextFile method creates a new text file in the current folder and returns a TextStream object that can be used to read from, or write to the file.   Syntax   FileSystemObject.CreateTextFile(filename[,overwrite[,unicode]])   FolderObject.CreateTextFile(filename[,overwrite[,unicode]])    Parameter	Description  filename 	Required. The name of the file to create  overwrite 	Optional. A Boolean value that indicates whether an existing file can be overwritten. True indicates that the file can be overwritten and False indicates that the file can not be overwritten. Default is True  unicode 	Optional. A Boolean value that indicates whether the file is created as a Unicode or an ASCII file. True indicates that the file is created as a Unicode file, False indicates that the file is created as an ASCII file. Default is False   ________________________________________  Example for the FileSystemObject object  &amp;lt;% dim fs,tfile  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set tfile=fs.CreateTextFile(&quot;c:\somefile.txt&quot;)  tfile.WriteLine(&quot;Hello World!&quot;)  tfile.close  set tfile=nothing  set fs=nothing  %&amp;gt;   Example for the Folder object  &amp;lt;% dim fs,fo,tfile  Set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  Set fo=fs.GetFolder(&quot;c:\test&quot;)  Set tfile=fo.CreateTextFile(&quot;test.txt&quot;,false)  tfile.WriteLine(&quot;Hello World!&quot;)  tfile.Close  set tfile=nothing  set fo=nothing  set fs=nothing  %&amp;gt;    ASP DeleteFile Method  ________________________________________  The DeleteFile method deletes one or more specified files.   Note: An error will occur if you try to delete a file that doesn&#39;t exist.   Syntax   FileSystemObject.DeleteFile(filename[,force])    Parameter	Description  filename 	Required. The name of the file or files to delete (Wildcards are allowed)  force 	Optional. A Boolean value that indicates whether read-only files will be deleted. True indicates that the read-only files will be deleted, False indicates that they will not be deleted. Default is False  Example  &amp;lt;% dim fs  Set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  fs.CreateTextFile(&quot;c:\test.txt&quot;,True)  if fs.FileExists(&quot;c:\test.txt&quot;) then  fs.DeleteFile(&quot;c:\test.txt&quot;)  end if  set fs=nothing  %&amp;gt;    ASP DeleteFolder Method  ________________________________________  The DeleteFolder method deletes one or more specified folders.   Note: An error will occur if you try to delete a folder that does not exist.  Syntax  FileSystemObject.DeleteFolder(foldername[,force])    Parameter	Description  foldername	Required. The name of the folder or folders to delete (Wildcards are allowed)  force	Optional. A Boolean value that indicates whether read-only folders will be deleted. True indicates that read-only folders will be deleted, False indicates that they will not be deleted. Default is False   Example  &amp;lt;% dim fs  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  if fs.FolderExists(&quot;c:\temp&quot;) then  fs.DeleteFolder(&quot;c:\temp&quot;)  end if  set fs=nothing  %&amp;gt;    ASP DriveExists Method  ________________________________________  The DriveExists method returns a Boolean value that indicates whether a specified drive exists. It returns True if the drive exists and False if not.   Syntax   FileSystemObject.DriveExists(drive)    Parameter	Description  drive	Required. A drive letter or a complete path specification  Example  &amp;lt;% dim fs  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  if fs.DriveExists(&quot;c:&quot;)=true then  response.write(&quot;Drive c: exists!&quot;)  else  response.write(&quot;Drive c: does not exist.&quot;)  end If  set fs=nothing  %&amp;gt;    ASP FileExists Method  ________________________________________  The FileExists method returns a Boolean value that indicates whether a specified file exists. It returns True if the file exists and False if not.   Syntax  FileSystemObject.FileExists(filename)    Parameter	Description  filename	Required. The name of the file to check if exist   ________________________________________  Example  &amp;lt;% dim fs  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  if fs.FileExists(&quot;c:\asp\introduction.asp&quot;)=true then  response.write(&quot;File c:\asp\introduction.asp exists!&quot;)  else  response.write(&quot;File c:\asp\introduction.asp does not exist!&quot;)  end if  set fs=nothing  %&amp;gt;    8.ASP TextStream Object   The TextStream Object  The TextStream object is used to access the contents of text files.  The following code creates a text file (c:\test.txt) and then writes some text to the file (the variable f is an instance of the TextStream object):  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.CreateTextFile(&quot;c:\test.txt&quot;,true)  f.WriteLine(&quot;Hello World!&quot;)  f.Close  set f=nothing  set fs=nothing  %&amp;gt;  To create an instance of the TextStream object you can use the CreateTextFile or OpenTextFile methods of the FileSystemObject object, or you can use the OpenAsTextStream method of the File object.   The TextStream object&#39;s properties and methods are described below:  Properties  Property	Description  AtEndOfLine  Returns true if the file pointer is positioned immediately before the end-of-line marker in a TextStream file, and false if not  AtEndOfStream  Returns true if the file pointer is at the end of a TextStream file, and false if not  Column  Returns the column number of the current character position in an input stream  Line  Returns the current line number in a TextStream file  Methods  Method	Description  Close  Closes an open TextStream file  Read  Reads a specified number of characters from a TextStream file and returns the result  ReadAll  Reads an entire TextStream file and returns the result  ReadLine  Reads one line from a TextStream file and returns the result  Skip  Skips a specified number of characters when reading a TextStream file  SkipLine  Skips the next line when reading a TextStream file  Write  Writes a specified text to a TextStream file  WriteLine  Writes a specified text and a new-line character to a TextStream file  WriteBlankLines  Writes a specified number of new-line character to a TextStream file   Properties  ASP AtEndOfLine Property  ________________________________________  The AtEndOfLine property returns a Boolean value. True indicates that the file pointer is positioned immediately before the end-of-line marker in a TextStream file. Otherwise, it returns False.  Note: This property will only work on a TextStream object that are open for reading.  Syntax  TextStreamObject.AtEndOfLine   Example  &amp;lt;% dim fs,f,t,x  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.CreateTextFile(&quot;c:\test.txt&quot;)  f.write(&quot;Hello World!&quot;)  f.close   set t=fs.OpenTextFile(&quot;c:\test.txt&quot;,1,false)  do while t.AtEndOfLine&amp;lt;&amp;gt;true  x=t.Read(1)  loop  t.close  Response.Write(&quot;The last character is: &quot; &amp;amp; x)  %&amp;gt;   Output:   The last character of the first line in the text file is: !    ASP AtEndOfStream Property  ________________________________________   The AtEndOfStream property returns True if the file pointer is at the end of a TextStream file, and False if not.   Note: This property will only work on a TextStream object that are open for reading.  Syntax  TextStreamObject.AtEndOfStream   Example  &amp;lt;% dim fs,f,t,x  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.CreateTextFile(&quot;c:\test.txt&quot;)  f.write(&quot;Hello World!&quot;)  f.close   set t=fs.OpenTextFile(&quot;c:\test.txt&quot;,1,false)  do while t.AtEndOfStream&amp;lt;&amp;gt;true  x=t.Read(1)  loop  t.close  Response.Write(&quot;The last character is: &quot; &amp;amp; x)  %&amp;gt;   Output:   The last character in the text file is: !   ASP Column Property  ________________________________________  The Column property returns the column number of the current character position in an input stream.  Note: This property is 1 after a new line character is written (even before any other character is written).  Syntax  TextStreamObject.Column   Example  &amp;lt;% dim fs,f,t,x,y  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.CreateTextFile(&quot;c:\test.txt&quot;)  f.write(&quot;Hello World!&quot;)  f.close   set t=fs.OpenTextFile(&quot;c:\test.txt&quot;,1,false)  do while t.AtEndOfStream&amp;lt;&amp;gt;true  x=t.Read(1)  y=t.Column-1  loop  t.close  Response.Write(&quot;The last character in the text file is: &quot; &amp;amp; x)  Response.Write(&quot; at character position: &quot; &amp;amp; y)  %&amp;gt;   Output:   The last character in the text file is: !  at character position: 12     ASP Line Property  ________________________________________  The Line property returns the current line number in a TextStream file (starting at 1).  Syntax  TextStreamObject.Line   Example  &amp;lt;% dim fs,f,t  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.CreateTextFile(&quot;c:\test.txt&quot;,true)  f.WriteLine(&quot;Hello World!&quot;)  f.WriteLine(&quot;How are you today?&quot;)  f.WriteLine(&quot;Goodbye!&quot;)  f.close   Set t=fs.OpenTextFile(&quot;c:\test.txt&quot;,1)  do while t.AtEndOfStream=false  Response.Write(&quot;Line &quot; &amp;amp; t.Line &amp;amp; &quot;: &quot;)  Response.Write(t.ReadLine)  Response.Write(&quot; &quot;)  loop  t.Close  %&amp;gt;   Output:   Line 1: Hello World!  Line 2: How are you today?  Line 3: Goodbye!    Methods:   ASP Close Method  ________________________________________   The Close method closes an open TextStream file.   Syntax  TextStreamObject.Close   Example  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.CreateTextFile(&quot;c:\test.txt&quot;,true)  f.WriteLine(&quot;Hello World!&quot;)  f.Close  set f=nothing  set fs=nothing  %&amp;gt;    ASP Read Method  ________________________________________  The Read method reads a specified number of characters from a TextStream file and returns the result as a string.  Syntax  TextStreamObject.Read(numchar)    Parameter	Description  numchar	Required. The number of characters to read from the file  Example  &amp;lt;% dim fs,f,t,x  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.CreateTextFile(&quot;c:\test.txt&quot;)  f.write(&quot;Hello World!&quot;)  f.close   set t=fs.OpenTextFile(&quot;c:\test.txt&quot;,1,false)  x=t.Read(5)  t.close  Response.Write(&quot;The first five characters are: &quot; &amp;amp; x)  %&amp;gt;   Output:   The first five characters are: Hello    ASP ReadAll Method  ________________________________________  The ReadAll method reads an entire TextStream file and returns the result as a string.  Note: This method is not suitable for large files (it wastes memory resources).  Syntax  TextStreamObject.ReadAll   Example  &amp;lt;% dim fs,f,t,x  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.CreateTextFile(&quot;c:\test.txt&quot;)  f.write(&quot;Hello World!&quot;)  f.close   set t=fs.OpenTextFile(&quot;c:\test.txt&quot;,1,false)  x=t.ReadAll  t.close  Response.Write(&quot;The text in the file is: &quot; &amp;amp; x)  %&amp;gt;   Output:   The text in the file is: Hello World!    ASP ReadLine Method  ________________________________________  The ReadLine method reads one line from a TextStream file and returns the result as a string.  Syntax  TextStreamObject.ReadLine   Example  &amp;lt;% dim fs,f,t,x  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.CreateTextFile(&quot;c:\test.txt&quot;)  f.writeline(&quot;Line 1&quot;)  f.writeline(&quot;Line 2&quot;)  f.writeline(&quot;Line 3&quot;)  f.close   set t=fs.OpenTextFile(&quot;c:\test.txt&quot;,1,false)  x=t.ReadLine  t.close   Response.Write(&quot;The first line in the file &quot;)  Response.Write(&quot;contains this text: &quot; &amp;amp; x)  %&amp;gt;   Output:   The first line in the file contains this text: Line 1    ASP Skip Method  ________________________________________  The Skip method skips a specified number of characters when reading a TextStream file.   Syntax  TextStreamObject.Skip(numchar)    Parameter	Description  numchar 	Required. The number of characters to skip  Example  &amp;lt;% dim fs,f,t,x  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.CreateTextFile(&quot;c:\test.txt&quot;)  f.write(&quot;Hello World!&quot;)  f.close   set t=fs.OpenTextFile(&quot;c:\test.txt&quot;,1,false)  t.Skip(7)  x=t.ReadAll  t.close   Response.Write(&quot;The output after skipping some characters: &quot; &amp;amp; x)  %&amp;gt;   Output:   The output after skipping some characters: orld!    ________________________________________   ASP SkipLine Method  ________________________________________  The SkipLine method skips a line when reading a TextStream file.   Syntax   TextStreamObject.SkipLine   Example  &amp;lt;% dim fs,f,t,x  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.CreateTextFile(&quot;c:\test.txt&quot;)  f.writeline(&quot;Line 1&quot;)  f.writeline(&quot;Line 2&quot;)  f.writeline(&quot;Line 3&quot;)  f.close   set t=fs.OpenTextFile(&quot;c:\test.txt&quot;,1,false)  t.SkipLine  x=t.ReadAll  t.close  Response.Write(&quot;Output after skipping the first &quot;)  Response.Write(&quot; line in the file: &quot; &amp;amp; x)  %&amp;gt;   Output:   Output after skipping the first line in the file: Line 2  Line 3    ASP Write Method  ________________________________________  The Write method writes a specified text to a TextStream file.  Note: This method write text to the TextStream file with no spaces or line breaks between each string.  Syntax  TextStreamObject.Write(text)    Parameter	Description  text	Required. The text to write to the file  Example  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)   set f=fs.CreateTextFile(&quot;c:\test.txt&quot;,true)  f.write(&quot;Hello World!&quot;)  f.write(&quot;How are you today?&quot;)  f.close  set f=nothing  set fs=nothing  %&amp;gt;   The file test.txt will look like this after executing the code above:   Hello World!How are you today?    ASP WriteLine Method  ________________________________________  The WriteLine method writes a specified text and a new-line character to a TextStream file.  Syntax  TextStreamObject.WriteLine(text)    Parameter	Description  text 	Optional. The text to write to the file. If you do not specify this parameter, a new-line character will be written to the file  Example  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.CreateTextFile(&quot;c:\test.txt&quot;,true)  f.WriteLine(&quot;Hello World!&quot;)  f.WriteLine(&quot;How are you today?&quot;)  f.WriteLine(&quot;Goodbye!&quot;)  f.close  set f=nothing  set fs=nothing  %&amp;gt;   The file test.txt will look like this after executing the code above:   Hello World!  How are you today?  Goodbye!    ASP WriteBlankLines Method  ________________________________________  The WriteBlankLines method writes a specified number of new-line characters to a TextStream file.  Syntax  TextStreamObject.WriteBlankLines(numlines)    Parameter	Description  numlines	Required. The number of new-line characters to write to the file  Example  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.CreateTextFile(&quot;c:\test.txt&quot;,true)  f.WriteLine(&quot;Hello World!&quot;)  f.WriteBlankLines(2)  f.WriteLine(&quot;How are you today?&quot;)  f.close  set f=nothing  set fs=nothing  %&amp;gt;   The file test.txt will look like this after executing the code above:   Hello World!    How are you today?    9.ASP Drive Object   The Drive object is used to get information about a local disk drive or a network share.  ________________________________________  The Drive Object  The Drive object is used to return information about a local disk drive or a network share. The Drive object can return information about a drive&#39;s type of file system, free space, serial number, volume name, and more.  Note: You cannot return information about a drive&#39;s content with the Drive object. For this purpose you will have to use the Folder object.  To work with the properties of the Drive object, you will have to create an instance of the Drive object through the FileSystemObject object. First; create a FileSystemObject object and then instantiate the Drive object through the GetDrive method or the Drives property of the FileSystemObject object.  The Drive object&#39;s properties are described below:  Properties  Property	Description  AvailableSpace  Returns the amount of available space to a user on a specified drive or network share  DriveLetter  Returns one uppercase letter that identifies the local drive or a network share  DriveType  Returns the type of a specified drive  FileSystem  Returns the file system in use for a specified drive  FreeSpace  Returns the amount of free space to a user on a specified drive or network share  IsReady  Returns true if the specified drive is ready and false if not  Path  Returns an uppercase letter followed by a colon that indicates the path name for a specified drive  RootFolder  Returns a Folder object that represents the root folder of a specified drive  SerialNumber  Returns the serial number of a specified drive  ShareName  Returns the network share name for a specified drive  TotalSize  Returns the total size of a specified drive or network share  VolumeName  Sets or returns the volume name of a specified drive   ASP AvailableSpace Property  ________________________________________  The AvailableSpace property returns the amount of available space to a user on the specified drive or network share.  Note: The value returned is often equal to the value returned by the FreeSpace property.  Syntax  DriveObject.AvailableSpace   Example  &amp;lt;% Dim fs,d  Set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  Set d=fs.GetDrive(&quot;c:&quot;)  Response.Write(&quot;Drive &quot; &amp;amp; d)  Response.Write(&quot; Available space in bytes: &quot; &amp;amp; d.AvailableSpace)  set d=nothing  set fs=nothing  %&amp;gt;   Output:   Drive c: Available space in bytes: 884465152    ________________________________________  ASP DriveLetter Property  ________________________________________  The DriveLetter property returns one uppercase letter that identifies the local drive or a network share.  Syntax  DriveObject.DriveLetter   Example  &amp;lt;% dim fs,d  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set d=fs.GetDrive(&quot;c:&quot;)  Response.Write(&quot;The drive letter is: &quot; &amp;amp; d.driveletter)  set d=nothing  set fs=nothing  %&amp;gt;   Output:   The drive letter is: C    ASP DriveType Property  ________________________________________  The DriveType property returns a value that indicates the type of a specified drive.  This property can return one of the following values:  •	0 = unknown   •	1 = removable   •	2 = fixed   •	3 = network   •	4 = CD-ROM   •	5 = RAM disk   Syntax  DriveObject.DriveType   Example  &amp;lt;% dim fs,d  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set d=fs.GetDrive(&quot;a:&quot;)  Response.Write(&quot;The drive type is: &quot; &amp;amp; d.DriveType)  set d=nothing  set fs=nothing  %&amp;gt;   Output:   The drive type is: 1    ASP FileSystem Property  ________________________________________  The FileSystem property returns the file system in use for a specified drive.  This property will return one of the following:  •	FAT - for removable drives   •	CDFS - for CD-ROM drives   •	FAT, FAT32 or NTFS - for hard disks on Windows 2000 or Windows NT   •	FAT or FAT32 - for hard disks on Windows 9x   Syntax  DriveObject.FileSystem   Example  &amp;lt;% dim fs,d  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set d=fs.GetDrive(&quot;c:&quot;)  Response.Write(&quot;The file system in use is: &quot; &amp;amp; d.FileSystem)  set d=nothing  set fs=nothing  %&amp;gt;   Output:   The file system in use is: NTFS    ASP FreeSpace Property  ________________________________________  The FreeSpace property returns the amount of free space to a user on the specified drive or network share.  Note: The value returned is often equal to the value returned by the AvailableSpace property.  Syntax  DriveObject.FreeSpace   Example  &amp;lt;% dim fs,d  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set d=fs.GetDrive(&quot;c:&quot;)  Response.Write(&quot;Drive &quot; &amp;amp; d)  Response.Write(&quot; Free space in bytes: &quot; &amp;amp; d.FreeSpace)  set d=nothing  set fs=nothing  %&amp;gt;   Output:   Drive c: Free space in bytes: 884465664   ASP IsReady Property  ________________________________________   The IsReady property returns true if a specified drive is ready and false if not.  Syntax  DriveObject.IsReady   Example  &amp;lt;% dim fs,d,n  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set d=fs.GetDrive(&quot;a:&quot;)  n = &quot;The &quot; &amp;amp; d.DriveLetter  if d.IsReady=true then  n=n &amp;amp; &quot; drive is ready!&quot;  else  n=n &amp;amp; &quot; drive is not ready!&quot;  end if  Response.Write(n)  set d=nothing  set fs=nothing  %&amp;gt;   Output:   The A drive is not ready!    ASP Path Property  ________________________________________  The Path property is used to return the path for a specified drive, file, or folder.  Syntax  DriveObject.Path   FileObject.Path   FolderObject.Path   Example for the Drive object  &amp;lt;% dim fs,d  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set d=fs.GetDrive(&quot;c:&quot;)  Response.Write(&quot;The path is &quot; &amp;amp; d.Path)  set d=nothing  set fs=nothing  %&amp;gt;   Output:   The path is C:   Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\asp\test\test.asp&quot;)  Response.Write(&quot;The path is: &quot; &amp;amp; f.Path)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   The path is: C:\asp\test\test.asp   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\asp\test&quot;)  Response.Write(&quot;The path is: &quot; &amp;amp; fo.Path)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   The path is: C:\asp\test    ASP RootFolder Property  ________________________________________  The RootFolder property returns a Folder object that represents the root folder of a specified drive.  Syntax  DriveObject.RootFolder   Example  &amp;lt;% dim fs,d  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set d=fs.GetDrive(&quot;c:&quot;)  Response.Write(&quot;The root folder is: &quot; &amp;amp; d.RootFolder)  set d=nothing  set fs=nothing  %&amp;gt;   Output:   The root folder is: C:\   ASP SerialNumber Property  ________________________________________  The SerialNumber property returns the serial number of a specified drive.  Syntax  DriveObject.SerialNumber   Example  &amp;lt;% dim fs,d  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set d=fs.GetDrive(&quot;c:&quot;)  Response.Write(&quot;The serial number is: &quot; &amp;amp; d.SerialNumber)  set d=nothing  set fs=nothing  %&amp;gt;   Output:   The serial number is: 474680516   ASP ShareName Property  ________________________________________  The ShareName property returns the network share name for a specified drive.   Syntax  DriveObject.ShareName   Example  &amp;lt;% dim fs,d  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set d=fs.GetDrive(&quot;c:&quot;)  Response.Write(&quot;The sharename is: &quot; &amp;amp; d.ShareName)  set d=nothing  set fs=nothing  %&amp;gt;     ASP TotalSize Property  ________________________________________  The TotalSize property returns the total size, in bytes, of a specified drive or network share.  Syntax  DriveObject.TotalSize   Example  &amp;lt;% dim fs,d  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set d=fs.GetDrive(&quot;c:&quot;)  Response.Write(&quot;The total size in bytes is: &quot; &amp;amp; d.TotalSize)  set d=nothing  set fs=nothing  %&amp;gt;   Output:   The total size in bytes is: 4293563392    ASP VolumeName Property  ________________________________________  The VolumeName property sets or returns the volume name of a specified drive.  Syntax  DriveObject.VolumeName[=newname]    Parameter	Description  newname 	Optional. Sets the new name of the specified drive  Example  &amp;lt;% dim fs,d  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set d=fs.GetDrive(&quot;c:&quot;)  Response.Write(&quot;The volume name is: &quot; &amp;amp; d.VolumeName)  set d=nothing  set fs=nothing  %&amp;gt;    10.ASP File Object   The File object is used to return information about a specified file.  ________________________________________  The File Object  The File object is used to return information about a specified file.  To work with the properties and methods of the File object, you will have to create an instance of the File object through the FileSystemObject object. First; create a FileSystemObject object and then instantiate the File object through the GetFile method of the FileSystemObject object or through the Files property of the Folder object.  The following code uses the GetFile method of the FileSystemObject object to instantiate the File object and the DateCreated property to return the date when the specified file was created:  Example  &amp;lt;% Dim fs,f  Set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  Set f=fs.GetFile(&quot;c:\test.txt&quot;)  Response.Write(&quot;File created: &quot; &amp;amp; f.DateCreated)  set f=nothing  set fs=nothing  %&amp;gt;    The File object&#39;s properties and methods are described below:  Properties  Property	Description  Attributes  Sets or returns the attributes of a specified file  DateCreated  Returns the date and time when a specified file was created  DateLastAccessed  Returns the date and time when a specified file was last accessed  DateLastModified  Returns the date and time when a specified file was last modified  Drive  Returns the drive letter of the drive where a specified file or folder resides  Name  Sets or returns the name of a specified file  ParentFolder  Returns the folder object for the parent of the specified file  Path  Returns the path for a specified file  ShortName  Returns the short name of a specified file (the 8.3 naming convention)  ShortPath  Returns the short path of a specified file (the 8.3 naming convention)  Size  Returns the size, in bytes, of a specified file  Type  Returns the type of a specified file  Methods  Method	Description  Copy  Copies a specified file from one location to another  Delete  Deletes a specified file  Move  Moves a specified file from one location to another  OpenAsTextStream   Opens a specified file and returns a TextStream object to access the file   Properties:  ASP Attributes Property  ________________________________________  The Attributes property is used to set or return the attribute or attributes of a specified file or folder.  Syntax  FileObject.Attributes[=newattributes]   FolderObject.Attributes[=newattributes]    Parameter	Description  newattributes 	Optional. Specifies the attribute value for the file or folder.   Can take any of the following values or a combination of the following values:  0 = Normal file  1 = Read-only file  2 = Hidden file  4 = System file  16 = Folder or directory  32 = File has changed since last backup  1024 = Link or shortcut  2048 = Compressed file  Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\test.txt&quot;)  Response.Write(&quot;The attributes of the file are: &quot;)  Response.Write(f.Attributes)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   The attributes of the file are: 32   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test&quot;)  Response.Write(&quot;The attributes of the folder are: &quot;)  Response.Write(fo.Attributes)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   The attributes of the folder are: 16   ASP DateCreated Property  ________________________________________  The DateCreated property is used to return the date and time when a specified file or folder was created.  Syntax  FileObject.DateCreated   FolderObject.DateCreated   Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\test.txt&quot;)  Response.Write(&quot;File created: &quot;)  Response.Write(f.DateCreated)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   File created: 9/19/2001 10:01:19 AM   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test&quot;)  Response.Write(&quot;Folder created: &quot;)  Response.Write(fo.DateCreated)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   Folder created: 9/19/2001 10:01:19 AM    ASP DateLastAccessed Property  ________________________________________  The DateLastAccessed property is used to return the date and time when a specified file or folder was last accessed.  Syntax  FileObject.DateLastAccessed   FolderObject.DateLastAccessed   Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\test.txt&quot;)  Response.Write(&quot;File last accessed on: &quot;)  Response.Write(f.DateLastAccessed)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   File last accessed on: 10/29/2001 10:21:23 AM   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test&quot;)  Response.Write(&quot;Folder last accessed on: &quot;)  Response.Write(fo.DateLastAccessed)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   Folder last accessed on: 9/19/2001 10:01:19 AM    ASP DateLastModified Property  ________________________________________  The DateLastModified property is used to return the date and time when a specified file or folder was last modified.  Syntax  FileObject.DateLastModified   FolderObject.DateLastModified   Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\test.txt&quot;)  Response.Write(&quot;File last modified on: &quot;)  Response.Write(f.DateLastModified)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   File last modified on: 1/10/2001 10:01:19 AM   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test&quot;)  Response.Write(&quot;Folder last modified on: &quot;)  Response.Write(fo.DateLastModified)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   Folder last modified on: 9/19/2001 10:01:19 AM    ASP Drive Property  ________________________________________  The Drive property is used to return the drive letter of the drive where the specified file or folder resides.  Syntax  FileObject.Drive   FolderObject.Drive   Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\test.txt&quot;)  Response.Write(&quot;File resides on drive: &quot;)  Response.Write(f.Drive)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   File resides on drive: c:   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test&quot;)  Response.Write(&quot;Folder resides on drive: &quot;)  Response.Write(fo.Drive)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   Folder resides on drive: c:    ASP Name Property  ________________________________________   The Name property is used to set or return the name of a specified file or folder.  Syntax  FileObject.Name[=newname]   FolderObject.Name[=newname]    Parameter	Description  newname	Optional. Specifies the name of the file or folder  Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\test.txt&quot;)  Response.Write(&quot;The file&#39;s name: &quot;)  Response.Write(f.Name)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   The file&#39;s name: test.txt   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test&quot;)  Response.Write(&quot;The folder&#39;s name: &quot;)  Response.Write(fo.Name)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   The folder&#39;s name: test    ASP ParentFolder Property  ________________________________________  The ParentFolder property is used to return the folder object for the parent of the specified file or folder.  Syntax  FileObject.ParentFolder   FolderObject.ParentFolder   Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\asp\test\test.asp&quot;)  Response.Write(&quot;The file test.asp is in the folder: &quot;)  Response.Write(f.ParentFolder)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   The file test.asp is in the folder: C:\asp\test   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\asp\test&quot;)  Response.Write(&quot;The folder test is in the folder: &quot;)  Response.Write(fo.ParentFolder)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   The folder test is in the folder: C:\asp    ASP Path Property  ________________________________________  The Path property is used to return the path for a specified drive, file, or folder.  Syntax  DriveObject.Path   FileObject.Path   FolderObject.Path   Example for the Drive object  &amp;lt;% dim fs,d  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set d=fs.GetDrive(&quot;c:&quot;)  Response.Write(&quot;The path is &quot; &amp;amp; d.Path)  set d=nothing  set fs=nothing  %&amp;gt;   Output:   The path is C:   Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\asp\test\test.asp&quot;)  Response.Write(&quot;The path is: &quot; &amp;amp; f.Path)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   The path is: C:\asp\test\test.asp   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\asp\test&quot;)  Response.Write(&quot;The path is: &quot; &amp;amp; fo.Path)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   The path is: C:\asp\test    ASP ShortName Property  ________________________________________  The ShortName property is used to return the short name of a specified file or folder (the 8.3 naming convention).  Syntax  FileObject.ShortName   FolderObject.ShortName   Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\hitcounterfile.txt&quot;))  Response.Write(&quot;Name: &quot; &amp;amp; f.Name)  Response.Write(&quot; ShortName: &quot; &amp;amp; f.ShortName)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   Name: hitcounterfile.txt  ShortName: HITCOU~1.TXT   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\asp_test_web&quot;)  Response.Write(&quot;Name: &quot; &amp;amp; fo.Name)  Response.Write(&quot; ShortName: &quot; &amp;amp; fo.ShortName)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   Name: asp_test_web  ShortName: ASP_TE~1    ASP ShortPath Property  ________________________________________  The ShortPath property is used to return the short path of the specified file or folder (the 8.3 naming convention).  Syntax  FileObject.ShortPath   FolderObject.ShortPath   Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\asp_test_web\hitcounterfile.txt&quot;)  Response.Write(&quot;Path: &quot; &amp;amp; f.Path)  Response.Write(&quot; ShortPath: &quot; &amp;amp; f.ShortPath)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   Path: C:\asp_test_web\hitcounterfile.txt  ShortPath: C:\ASP_TE~1\HITCOU~1.TXT   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\asp_test_web&quot;)  Response.Write(&quot;Path: &quot; &amp;amp; fo.Path)  Response.Write(&quot; ShortPath: &quot; &amp;amp; fo.ShortPath)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   Path: C:\asp_test_web  ShortPath: C:\ASP_TE~1    ASP Size Property  ________________________________________  The Size property is used to return the size, in bytes, of the specified file or folder.  Syntax  FileObject.Size   FolderObject.Size   Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\test.asp&quot;)  Response.Write(&quot;The size of test.asp is: &quot;)  Response.Write(f.Size &amp;amp; &quot; bytes.&quot;)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   The size of test.asp is: 10556 bytes.   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test&quot;)  Response.Write(&quot;The size of the folder test is: &quot;)  Response.Write(fo.Size &amp;amp; &quot; bytes.&quot;)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   The size of the folder test is: 123456 bytes.    ASP Type Property  ________________________________________  The Type property is used to return the type of the specified file or folder.  Syntax  FileObject.Type   FolderObject.Type   Examples for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:test.txt&quot;)  Response.Write(&quot;The file test.txt is of type: &quot;)  Response.Write(f.Type)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   The file test.txt is of type: Text Document    &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:test.asp&quot;)  Response.Write(&quot;The file test.asp is of type: &quot;)  Response.Write(f.Type)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   The file test.asp is of type: Active Server Document   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test&quot;)  Response.Write(&quot;The folder test is of type: &quot;)  Response.Write(fo.Type)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   The folder test is of type: File Folder    Methods;   ASP Copy Method  ________________________________________  The Copy method copies the specified file or folder from one location to another.   Syntax  FileObject.Copy(destination[,overwrite])   FolderObject.Copy(destination[,overwrite])    Parameter	Description  destination	Required. Where to copy the file or folder. Wildcard characters are not allowed  overwrite	Optional. A Boolean value indicating whether an existing file or folder can be overwritten. True indicates that the file/folder can be overwritten, false indicates that the file/folder cannot be overwritten. Default is true.    ________________________________________  Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\test.txt&quot;)  f.Copy(&quot;c:\new_test.txt&quot;,false)  set f=nothing  set fs=nothing  %&amp;gt;   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test&quot;)  fo.Copy(&quot;c:\new_test&quot;,false)  set fo=nothing  set fs=nothing  %&amp;gt;    ASP Delete Method  ________________________________________  The Delete method deletes a specified file or folder.   Syntax  FileObject.Delete[(force)]   FolderObject.Delete[(force)]    Parameter	Description  force	Optional. A Boolean value that indicates whether a read-only file or folder are to be deleted. True indicates that a read-only file/folder will be deleted and false indicates that it will not be deleted. Default is false.  Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\test.txt&quot;)  f.Delete  set f=nothing  set fs=nothing  %&amp;gt;   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test&quot;)  fo.Delete  set fo=nothing  set fs=nothing  %&amp;gt;    ASP Move Method  ________________________________________  The Move method moves the specified file or folder from one location to another.   Syntax   FileObject.Move(destination)   FolderObject.Move(destination)    Parameter	Description  destination	Required. Where to move the file or folder. Wildcard characters are not allowed  Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  Set f=fs.GetFile(&quot;c:\test.txt&quot;)  f.Move(&quot;c:\test\test.txt&quot;)  set f=nothing  set fs=nothing  %&amp;gt;   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test&quot;)  fo.Move(&quot;c:\asp\test&quot;)  set fo=nothing  set fs=nothing  %&amp;gt;    ASP OpenAsTextStream Method  ________________________________________  The OpenAsTextStream method opens the specified file and returns a TextStream object to access the file.  Syntax   FileObject.OpenAsTextStream(mode,format)    Parameter	Description  mode 	Optional. How to open the file.   •	1 = ForReading - Open a file for reading. You cannot write to this file   •	2 = ForWriting - Open a file for writing   •	8 = ForAppending - Open a file and write to the end of the file   format 	Optional. The format of the file.   •	0 = TristateFalse - Default. Open the file as ASCII   •	-1 = TristateTrue - Open the file as Unicode   •	-2 = TristateUseDefault - Open the file using the system default    Example  &amp;lt;% dim fs,f,ts  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  Set f=fs.GetFile(&quot;c:\test.txt&quot;)  Set ts=f.OpenAsTextStream(ForWriting)  ts.Write(&quot;Hello World!&quot;)  ts.Close   Set ts=f.OpenAsTextStream(ForReading)  Response.Write(ts.ReadAll)  ts.Close  set ts=nothing  set f=nothing  set fs=nothing  %&amp;gt;   Output:   Hello World!    11.ASP Folder Object    The Folder Object is used to return information about a specified folder.  ________________________________________  The Folder Object  The Folder object is used to return information about a specified folder.  To work with the properties and methods of the Folder object, you will have to create an instance of the Folder object through the FileSystemObject object. First; create a FileSystemObject object and then instantiate the Folder object through the GetFolder method of the FileSystemObject object.  The following code uses the GetFolder method of the FileSystemObject object to instantiate the Folder object and the DateCreated property to return the date when the specified folder was created:  &amp;lt;% Dim fs,fo  Set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  Set fo=fs.GetFolder(&quot;c:\test&quot;)  Response.Write(&quot;Folder created: &quot; &amp;amp; fo.DateCreated)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   Folder created: 10/22/2008 10:01:19 AM  The Folder object&#39;s collections, properties, and methods are described below:   Collections  Collection	Description  Files  Returns a collection of all the files in a specified folder  SubFolders  Returns a collection of all subfolders in a specified folder  Properties  Property	Description  Attributes  Sets or returns the attributes of a specified folder  DateCreated  Returns the date and time when a specified folder was created  DateLastAccessed  Returns the date and time when a specified folder was last accessed  DateLastModified  Returns the date and time when a specified folder was last modified  Drive  Returns the drive letter of the drive where the specified folder resides  IsRootFolder  Returns true if a folder is the root folder and false if not  Name  Sets or returns the name of a specified folder  ParentFolder  Returns the parent folder of a specified folder  Path  Returns the path for a specified folder  ShortName  Returns the short name of a specified folder (the 8.3 naming convention)  ShortPath  Returns the short path of a specified folder (the 8.3 naming convention)  Size  Returns the size of a specified folder  Type  Returns the type of a specified folder  Methods  Method	Description  Copy  Copies a specified folder from one location to another  Delete  Deletes a specified folder  Move  Moves a specified folder from one location to another  CreateTextFile  Creates a new text file in the specified folder and returns a TextStream object    Collections:   ASP Files Collection  ________________________________________  The Files collection returns a collection of all the files in a specified folder.  Syntax  FolderObject.Files   Example  &amp;lt;% dim fs,fo,x  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test\&quot;)   for each x in fo.files  &#39;Print the name of all files in the test folder  Response.write(x.Name &amp;amp; &quot; &quot;)  next   set fo=nothing  set fs=nothing  %&amp;gt;   Output:  test_adv.txt  guestbook.txt  links.txt  links2.txt  textads.txt  textfile.txt    ASP SubFolders Collection  ________________________________________  The SubFolders collection returns a collection of all subfolders in a specified folder.  Syntax  FolderObject.SubFolders   Example  &amp;lt;% dim fs,fo,x  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test\&quot;)   for each x in fo.SubFolders  &#39;Print the name of all subfolders in the test folder  Response.write(x.Name &amp;amp; &quot; &quot;)  next   set fo=nothing  set fs=nothing  %&amp;gt;   Output:   html  css  asp  vbscript    Properties:  ASP Attributes Property  ________________________________________  The Attributes property is used to set or return the attribute or attributes of a specified file or folder.  Syntax  FileObject.Attributes[=newattributes]   FolderObject.Attributes[=newattributes]    Parameter	Description  newattributes 	Optional. Specifies the attribute value for the file or folder.   Can take any of the following values or a combination of the following values:  0 = Normal file  1 = Read-only file  2 = Hidden file  4 = System file  16 = Folder or directory  32 = File has changed since last backup  1024 = Link or shortcut  2048 = Compressed file  Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\test.txt&quot;)  Response.Write(&quot;The attributes of the file are: &quot;)  Response.Write(f.Attributes)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   The attributes of the file are: 32   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test&quot;)  Response.Write(&quot;The attributes of the folder are: &quot;)  Response.Write(fo.Attributes)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   The attributes of the folder are: 16    ASP DateCreated Property  ________________________________________  The DateCreated property is used to return the date and time when a specified file or folder was created.  Syntax  FileObject.DateCreated   FolderObject.DateCreated   Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\test.txt&quot;)  Response.Write(&quot;File created: &quot;)  Response.Write(f.DateCreated)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   File created: 9/19/2001 10:01:19 AM   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test&quot;)  Response.Write(&quot;Folder created: &quot;)  Response.Write(fo.DateCreated)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   Folder created: 9/19/2001 10:01:19 AM     ASP DateLastAccessed Property  ________________________________________  The DateLastAccessed property is used to return the date and time when a specified file or folder was last accessed.  Syntax  FileObject.DateLastAccessed   FolderObject.DateLastAccessed   Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\test.txt&quot;)  Response.Write(&quot;File last accessed on: &quot;)  Response.Write(f.DateLastAccessed)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   File last accessed on: 10/29/2001 10:21:23 AM   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test&quot;)  Response.Write(&quot;Folder last accessed on: &quot;)  Response.Write(fo.DateLastAccessed)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   Folder last accessed on: 9/19/2001 10:01:19 AM    ASP DateLastModified Property  ________________________________________   The DateLastModified property is used to return the date and time when a specified file or folder was last modified.  Syntax  FileObject.DateLastModified   FolderObject.DateLastModified   Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\test.txt&quot;)  Response.Write(&quot;File last modified on: &quot;)  Response.Write(f.DateLastModified)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   File last modified on: 1/10/2001 10:01:19 AM   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test&quot;)  Response.Write(&quot;Folder last modified on: &quot;)  Response.Write(fo.DateLastModified)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   Folder last modified on: 9/19/2001 10:01:19 AM    ASP Drive Property  ________________________________________   The Drive property is used to return the drive letter of the drive where the specified file or folder resides.  Syntax  FileObject.Drive   FolderObject.Drive   Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\test.txt&quot;)  Response.Write(&quot;File resides on drive: &quot;)  Response.Write(f.Drive)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   File resides on drive: c:   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test&quot;)  Response.Write(&quot;Folder resides on drive: &quot;)  Response.Write(fo.Drive)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   Folder resides on drive: c:    ASP IsRootFolder Property  ________________________________________  The IsRootFolder property returns true if the specified folder is the root folder and false if not.  Syntax  FolderObject.IsRootFolder   Example  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\asp\test&quot;)  if fo.IsRootFolder=true then  Response.Write(&quot;The folder is the root folder!&quot;)  else  Response.Write(&quot;The folder is not the root folder!&quot;)  end if   set fo=nothing  set fs=nothing  %&amp;gt;   Output:   The folder is not the root folder!    ASP Name Property  ________________________________________   The Name property is used to set or return the name of a specified file or folder.  Syntax  FileObject.Name[=newname]   FolderObject.Name[=newname]    Parameter	Description  newname	Optional. Specifies the name of the file or folder  Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\test.txt&quot;)  Response.Write(&quot;The file&#39;s name: &quot;)  Response.Write(f.Name)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   The file&#39;s name: test.txt   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test&quot;)  Response.Write(&quot;The folder&#39;s name: &quot;)  Response.Write(fo.Name)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   The folder&#39;s name: test    ASP ParentFolder Property  ________________________________________  The ParentFolder property is used to return the folder object for the parent of the specified file or folder.  Syntax  FileObject.ParentFolder   FolderObject.ParentFolder   Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\asp\test\test.asp&quot;)  Response.Write(&quot;The file test.asp is in the folder: &quot;)  Response.Write(f.ParentFolder)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   The file test.asp is in the folder: C:\asp\test   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\asp\test&quot;)  Response.Write(&quot;The folder test is in the folder: &quot;)  Response.Write(fo.ParentFolder)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   The folder test is in the folder: C:\asp    ASP Path Property  ________________________________________  The Path property is used to return the path for a specified drive, file, or folder.  Syntax  DriveObject.Path   FileObject.Path   FolderObject.Path   Example for the Drive object  &amp;lt;% dim fs,d  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set d=fs.GetDrive(&quot;c:&quot;)  Response.Write(&quot;The path is &quot; &amp;amp; d.Path)  set d=nothing  set fs=nothing  %&amp;gt;   Output:   The path is C:   Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\asp\test\test.asp&quot;)  Response.Write(&quot;The path is: &quot; &amp;amp; f.Path)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   The path is: C:\asp\test\test.asp   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\asp\test&quot;)  Response.Write(&quot;The path is: &quot; &amp;amp; fo.Path)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   The path is: C:\asp\test    ________________________________________  ASP ShortName Property  ________________________________________  The ShortName property is used to return the short name of a specified file or folder (the 8.3 naming convention).  Syntax  FileObject.ShortName   FolderObject.ShortName   Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\hitcounterfile.txt&quot;))  Response.Write(&quot;Name: &quot; &amp;amp; f.Name)  Response.Write(&quot; ShortName: &quot; &amp;amp; f.ShortName)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   Name: hitcounterfile.txt  ShortName: HITCOU~1.TXT   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\asp_test_web&quot;)  Response.Write(&quot;Name: &quot; &amp;amp; fo.Name)  Response.Write(&quot; ShortName: &quot; &amp;amp; fo.ShortName)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   Name: asp_test_web  ShortName: ASP_TE~1    ASP ShortPath Property  ________________________________________  The ShortPath property is used to return the short path of the specified file or folder (the 8.3 naming convention).  Syntax  FileObject.ShortPath   FolderObject.ShortPath   Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\asp_test_web\hitcounterfile.txt&quot;)  Response.Write(&quot;Path: &quot; &amp;amp; f.Path)  Response.Write(&quot; ShortPath: &quot; &amp;amp; f.ShortPath)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   Path: C:\asp_test_web\hitcounterfile.txt  ShortPath: C:\ASP_TE~1\HITCOU~1.TXT   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\asp_test_web&quot;)  Response.Write(&quot;Path: &quot; &amp;amp; fo.Path)  Response.Write(&quot; ShortPath: &quot; &amp;amp; fo.ShortPath)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   Path: C:\asp_test_web  ShortPath: C:\ASP_TE~1    ASP Size Property  ________________________________________  The Size property is used to return the size, in bytes, of the specified file or folder.  Syntax  FileObject.Size   FolderObject.Size   Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\test.asp&quot;)  Response.Write(&quot;The size of test.asp is: &quot;)  Response.Write(f.Size &amp;amp; &quot; bytes.&quot;)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   The size of test.asp is: 10556 bytes.   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test&quot;)  Response.Write(&quot;The size of the folder test is: &quot;)  Response.Write(fo.Size &amp;amp; &quot; bytes.&quot;)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   The size of the folder test is: 123456 bytes.    ASP Type Property  ________________________________________  The Type property is used to return the type of the specified file or folder.  Syntax  FileObject.Type   FolderObject.Type   Examples for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:test.txt&quot;)  Response.Write(&quot;The file test.txt is of type: &quot;)  Response.Write(f.Type)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   The file test.txt is of type: Text Document    &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:test.asp&quot;)  Response.Write(&quot;The file test.asp is of type: &quot;)  Response.Write(f.Type)  set f=nothing  set fs=nothing  %&amp;gt;   Output:   The file test.asp is of type: Active Server Document   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test&quot;)  Response.Write(&quot;The folder test is of type: &quot;)  Response.Write(fo.Type)  set fo=nothing  set fs=nothing  %&amp;gt;   Output:   The folder test is of type: File Folder    Methods:  ASP Copy Method  ________________________________________  The Copy method copies the specified file or folder from one location to another.   Syntax  FileObject.Copy(destination[,overwrite])   FolderObject.Copy(destination[,overwrite])    Parameter	Description  destination	Required. Where to copy the file or folder. Wildcard characters are not allowed  overwrite	Optional. A Boolean value indicating whether an existing file or folder can be overwritten. True indicates that the file/folder can be overwritten, false indicates that the file/folder cannot be overwritten. Default is true.    ________________________________________  Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\test.txt&quot;)  f.Copy(&quot;c:\new_test.txt&quot;,false)  set f=nothing  set fs=nothing  %&amp;gt;   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test&quot;)  fo.Copy(&quot;c:\new_test&quot;,false)  set fo=nothing  set fs=nothing  %&amp;gt;    ASP Delete Method  ________________________________________  The Delete method deletes a specified file or folder.   Syntax  FileObject.Delete[(force)]   FolderObject.Delete[(force)]    Parameter	Description  force	Optional. A Boolean value that indicates whether a read-only file or folder are to be deleted. True indicates that a read-only file/folder will be deleted and false indicates that it will not be deleted. Default is false.  Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set f=fs.GetFile(&quot;c:\test.txt&quot;)  f.Delete  set f=nothing  set fs=nothing  %&amp;gt;   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test&quot;)  fo.Delete  set fo=nothing  set fs=nothing  %&amp;gt;   ASP Move Method  ________________________________________   The Move method moves the specified file or folder from one location to another.  Syntax  FileObject.Move(destination)   FolderObject.Move(destination)    Parameter	Description  destination	Required. Where to move the file or folder. Wildcard characters are not allowed  Example for the File object  &amp;lt;% dim fs,f  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  Set f=fs.GetFile(&quot;c:\test.txt&quot;)  f.Move(&quot;c:\test\test.txt&quot;)  set f=nothing  set fs=nothing  %&amp;gt;   Example for the Folder object  &amp;lt;% dim fs,fo  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set fo=fs.GetFolder(&quot;c:\test&quot;)  fo.Move(&quot;c:\asp\test&quot;)  set fo=nothing  set fs=nothing  %&amp;gt;    ASP CreateTextFile Method  ________________________________________  The CreateTextFile method creates a new text file in the current folder and returns a TextStream object that can be used to read from, or write to the file.   Syntax   FileSystemObject.CreateTextFile(filename[,overwrite[,unicode]])   FolderObject.CreateTextFile(filename[,overwrite[,unicode]])    Parameter	Description  filename 	Required. The name of the file to create  overwrite 	Optional. A Boolean value that indicates whether an existing file can be overwritten. True indicates that the file can be overwritten and False indicates that the file can not be overwritten. Default is True  unicode 	Optional. A Boolean value that indicates whether the file is created as a Unicode or an ASCII file. True indicates that the file is created as a Unicode file, False indicates that the file is created as an ASCII file. Default is False   ________________________________________  Example for the FileSystemObject object  &amp;lt;% dim fs,tfile  set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  set tfile=fs.CreateTextFile(&quot;c:\somefile.txt&quot;)  tfile.WriteLine(&quot;Hello World!&quot;)  tfile.close  set tfile=nothing  set fs=nothing  %&amp;gt;   Example for the Folder object  &amp;lt;% dim fs,fo,tfile  Set fs=Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)  Set fo=fs.GetFolder(&quot;c:\test&quot;)  Set tfile=fo.CreateTextFile(&quot;test.txt&quot;,false)  tfile.WriteLine(&quot;Hello World!&quot;)  tfile.Close  set tfile=nothing  set fo=nothing  set fs=nothing  %&amp;gt;    12.ASP Components  ASP AdRotator Componentents    The ASP AdRotator component creates an AdRotator object that displays a different image each time a user enters or refreshes a page. A text file includes information about the images.  Syntax  &amp;lt;% set adrotator=server.createobject(&quot;MSWC.AdRotator&quot;)  adrotator.GetAdvertisement(&quot;textfile.txt&quot;)  %&amp;gt;   ________________________________________  ASP AdRotator Example  Assume that we have the following text file, named &quot;ads.txt&quot;:  REDIRECT banners.asp  *  w3s.gif  http://www.w3schools.com  Free Tutorials from W3Schools  50  xmlspy.gif  http://www.altova.com  XML Editor from Altova  50   The lines below the asterisk in the text file above specifies the name of the images (ads) to be displayed, the hyperlink addresses, the alternate text (for the images), and the display rates (in percent).  The first line in the text file above specifies what to happen when a visitor clicks on one of the images. The redirection page (banners.asp) will receive a querystring with the URL to redirect to.  Tip: To specify the height, width, and border of the image, you can insert the following lines under REDIRECT:  REDIRECT banners.asp  WIDTH 468   HEIGHT 60   BORDER 0   *  w3s.gif  ...   The &quot;banners.asp&quot; file looks like this:  Example  &amp;lt;% url=Request.QueryString(&quot;url&quot;)  If url&amp;lt;&amp;gt;&quot;&quot; then Response.Redirect(url)  %&amp;gt;       &amp;lt;% set adrotator=Server.CreateObject(&quot;MSWC.AdRotator&quot;)  response.write(adrotator.GetAdvertisement(&quot;textfile.txt&quot;))  %&amp;gt;         That&#39;s all!!  ________________________________________  ASP AdRotator Properties  Property	Description	Example  Border	Specifies the size of the borders around the advertisement	&amp;lt;% set adrot=Server.CreateObject(&quot;MSWC.AdRotator&quot;)  adrot.Border=&quot;2&quot;  Response.Write(adrot.GetAdvertisement(&quot;ads.txt&quot;))  %&amp;gt;  Clickable	Specifies whether the advertisement is a hyperlink	&amp;lt;% set adrot=Server.CreateObject(&quot;MSWC.AdRotator&quot;)  adrot.Clickable=false  Response.Write(adrot.GetAdvertisement(&quot;ads.txt&quot;))  %&amp;gt;  TargetFrame	Name of the frame to display the advertisement	&amp;lt;% set adrot=Server.CreateObject(&quot;MSWC.AdRotator&quot;)  adrot.TargetFrame=&quot;target=&#39;_blank&#39;&quot;  Response.Write(adrot.GetAdvertisement(&quot;ads.txt&quot;))  %&amp;gt;  ASP AdRotator Methods  Method	Description	Example  GetAdvertisement	Returns HTML that displays the advertisement in the page	&amp;lt;% set adrot=Server.CreateObject(&quot;MSWC.AdRotator&quot;)  Response.Write(adrot.GetAdvertisement(&quot;ads.txt&quot;))  %&amp;gt;   ________________________________________   ASP Browser Capabilities Component   ASP Browser Capabilities Component  The ASP Browser Capabilities component creates a BrowserType object that determines the type, capabilities and version number of a visitor&#39;s browser.  When a browser connects to a server, a User Agent header is also sent to the server. This header contains information about the browser.  The BrowserType object compares the information in the header with information in a file on the server called &quot;Browscap.ini&quot;.  If there is a match between the browser type and version number in the header and the information in the &quot;Browsercap.ini&quot; file, the BrowserType object can be used to list the properties of the matching browser. If there is no match for the browser type and version number in the Browscap.ini file, it will set every property to &quot;UNKNOWN&quot;.  Syntax  &amp;lt;% Set MyBrow=Server.CreateObject(&quot;MSWC.BrowserType&quot;)  %&amp;gt;   ________________________________________  ASP Browser Capabilities Example  The example below creates a BrowserType object in an ASP file, and displays some of the capabilities of your browser:  Example      &amp;lt;% Set MyBrow=Server.CreateObject(&quot;MSWC.BrowserType&quot;)  %&amp;gt;    
&lt;table border=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;  &lt;th&gt;Client OS&lt;/th&gt;&lt;th&gt;&amp;lt;%=MyBrow.platform%&amp;gt;&lt;/th&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;Web Browser&lt;/td&gt;&lt;td&gt;&amp;lt;%=MyBrow.browser%&amp;gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;Browser version&lt;/td&gt;&lt;td&gt;&amp;lt;%=MyBrow.version%&amp;gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;Frame support?&lt;/td&gt;&lt;td&gt;&amp;lt;%=MyBrow.frames%&amp;gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;Table support?&lt;/td&gt;&lt;td&gt;&amp;lt;%=MyBrow.tables%&amp;gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;Sound support?&lt;/td&gt;&lt;td&gt;&amp;lt;%=MyBrow.backgroundsounds%&amp;gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;Cookies support?&lt;/td&gt;&lt;td&gt;&amp;lt;%=MyBrow.cookies%&amp;gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;VBScript support?&lt;/td&gt;&lt;td&gt;&amp;lt;%=MyBrow.vbscript%&amp;gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;JavaScript support?&lt;/td&gt;&lt;td&gt;&amp;lt;%=MyBrow.javascript%&amp;gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;Output:  Client OS	WinNT  Web Browser	IE  Browser version	5.0  Frame support?	True  Table support?	True  Sound support?	True  Cookies support?	True  VBScript support?	True  JavaScript support?	True     ________________________________________  The Browscap.ini File  The &quot;Browsercap.ini&quot; file is used to declare properties and to set default values for browsers.  This section is not a tutorial on how to maintain &quot;Browsercap.ini&quot; files, it only shows you the basics; so you get an idea what a &quot;Browsercap.ini&quot; file is all about.  The &quot;Browsercap.ini&quot; file can contain the following:  [;comments]  [HTTPUserAgentHeader]  [parent=browserDefinition]  [property1=value1]  [propertyN=valueN]  [Default Browser Capability Settings]  [defaultProperty1=defaultValue1]  [defaultPropertyN=defaultValueN]   Parameter	Description  comments	Optional. Any line that starts with a semicolon are ignored by the BrowserType object  HTTPUserAgentHeader	Optional. Specifies the HTTP User Agent header to associate with the browser-property value statements specified in propertyN. Wildcard characters are allowed  browserDefinition	Optional. Specifies the HTTP User Agent header-string of a browser to use as the parent browser. The current browser&#39;s definition will inherit all of the property values declared in the parent browser&#39;s definition  propertyN	Optional. Specifies the browser properties. The following table lists some possible properties:   •	ActiveXControls - Support ActiveX® controls?   •	Backgroundsounds - Support background sounds?   •	Cdf - Support Channel Definition Format for Webcasting?   •	Tables - Support tables?   •	Cookies - Support cookies?   •	Frames - Support frames?   •	Javaapplets - Support Java applets?   •	Javascript - Supports JScript?   •	Vbscript - Supports VBScript?   •	Browser - Specifies the name of the browser   •	Beta - Is the browser beta software?   •	Platform - Specifies the platform that the browser runs on   •	Version - Specifies the version number of the browser   valueN	Optional. Specifies the value of propertyN. Can be a string, an integer (prefix with #), or a Boolean value  defaultPropertyN	Optional. Specifies the name of the browser property to which to assign a default value if none of the defined HTTPUserAgentHeader values match the HTTP User Agent header sent by the browser  defaultValueN	Optional. Specifies the value of defaultPropertyN. Can be a string, an integer (prefix with #), or a Boolean value  A &quot;Browsercap.ini&quot; file might look something like this:  ;IE 5.0  [IE 5.0]  browser=IE  Version=5.0  majorver=#5  minorver=#0  frames=TRUE  tables=TRUE  cookies=TRUE  backgroundsounds=TRUE  vbscript=TRUE  javascript=TRUE  javaapplets=TRUE  ActiveXControls=TRUE  beta=False   ;DEFAULT BROWSER  [*]  browser=Default  frames=FALSE  tables=TRUE  cookies=FALSE  backgroundsounds=FALSE  vbscript=FALSE  javascript=FALSE  ASP Content Linking ComponentThe ASP Content Linking component is used to create a quick and easy navigation system!  The Content Linking component returns a Nextlink object that is used to hold a list of Web pages to be navigated.  Syntax  &amp;lt;% Set nl=Server.CreateObject(&quot;MSWC.NextLink&quot;)  %&amp;gt;   ________________________________________  ASP Content Linking Example  First we create a text file - &quot;links.txt&quot;:  asp_intro.asp ASP Intro  asp_syntax.asp ASP Syntax  asp_variables.asp ASP Variables  asp_procedures.asp ASP Procedures  The text file above contains the pages to be navigated. The pages must be listed in the same order you want them to be displayed, and it must also contain a description for each file name (use the tab key to separate file name from description).  Note: If you want to add a page, or change the order of the pages in the list; you only have to modify the text file! The navigation will automatically be corrected!  Then we create an include file, &quot;nlcode.inc&quot;. The .inc file creates a NextLink object to navigate between the pages listed in &quot;links.txt&quot;.  &quot;nlcode.inc&quot;:  &amp;lt;% dim nl  Set nl=Server.CreateObject(&quot;MSWC.NextLink&quot;)  if (nl.GetListIndex(&quot;links.txt&quot;)&amp;gt;1) then  Response.Write(&quot;&lt;a href=&quot;http://www.blogger.com/%22%20&amp;amp;%20nl.GetPreviousURL(%22links.txt%22))Response.Write(%22&quot;&gt;Previous Page&lt;/a&gt;&quot;)  end if  Response.Write(&quot;&lt;a href=&quot;http://www.blogger.com/%22%20&amp;amp;%20nl.GetNextURL(%22links.txt%22))Response.Write(%22&quot;&gt;Next Page&lt;/a&gt;&quot;)  %&amp;gt;  In each of the .asp pages listed in the text file &quot;links.txt&quot;, put one line of code: . This line will include the code in &quot;nlcode.inc&quot; on every page listed in &quot;links.txt&quot; and the navigation will work.  ________________________________________  ASP Content Linking Component&#39;s Methods  Method	Description	Example  GetListCount	Returns the number of items listed in the Content Linking List file	&amp;lt;% dim nl,c  Set nl=Server.CreateObject(&quot;MSWC.NextLink&quot;)   c=nl.GetListCount(&quot;links.txt&quot;)   Response.Write(&quot;There are &quot;)  Response.Write(c)  Response.Write(&quot; items in the list&quot;)  %&amp;gt;   Output:  There are 4 items in the list  GetListIndex	Returns the index number of the current item in the Content Linking List file. The index number of the first item is 1. 0 is returned if the current page is not in the Content Linking List file	&amp;lt;% dim nl,c  Set nl=Server.CreateObject(&quot;MSWC.NextLink&quot;)   c=nl.GetListIndex(&quot;links.txt&quot;)   Response.Write(&quot;Item number &quot;)  Response.Write(c)  %&amp;gt;   Output:  Item number 3  GetNextDescription	Returns the text description of the next item listed in the Content Linking List file. If the current page is not found in the list file it returns the text description of the last page on the list	&amp;lt;% dim nl,c  Set nl=Server.CreateObject(&quot;MSWC.NextLink&quot;)   c=nl.GetNextDescription(&quot;links.txt&quot;)   Response.Write(&quot;Next &quot;)  Response.Write(&quot;description is: &quot;)  Response.Write(c)  %&amp;gt;   Next description is: ASP Variables  GetNextURL	Returns the URL of the next item listed in the Content Linking List file. If the current page is not found in the list file it returns the URL of the last page on the list	&amp;lt;% dim nl,c  Set nl=Server.CreateObject(&quot;MSWC.NextLink&quot;)   c=nl.GetNextURL(&quot;links.txt&quot;)   Response.Write(&quot;Next &quot;)  Response.Write(&quot;URL is: &quot;)  Response.Write(c)  %&amp;gt;   Next URL is: asp_variables.asp  GetNthDescription	Returns the description of the Nth page listed in the Content Linking List file	&amp;lt;% dim nl,c  Set nl=Server.CreateObject(&quot;MSWC.NextLink&quot;)   c=nl.GetNthDescription(&quot;links.txt&quot;,3)   Response.Write(&quot;Third &quot;)  Response.Write(&quot;description is: &quot;)  Response.Write(c)  %&amp;gt;   Third description is: ASP Variables  GetNthURL	Returns the URL of the Nth page listed in the Content Linking List file	&amp;lt;% dim nl,c  Set nl=Server.CreateObject(&quot;MSWC.NextLink&quot;)   c=nl.GetNthURL(&quot;links.txt&quot;,3)   Response.Write(&quot;Third &quot;)  Response.Write(&quot;URL is: &quot;)  Response.Write(c)  %&amp;gt;   Third URL is: asp_variables.asp  GetPreviousDescription	Returns the text description of the previous item listed in the Content Linking List file. If the current page is not found in the list file it returns the text description of the first page on the list	&amp;lt;% dim nl,c  Set nl=Server.CreateObject(&quot;MSWC.NextLink&quot;)   c=nl.GetPreviousDescription(&quot;links.txt&quot;)   Response.Write(&quot;Previous &quot;)  Response.Write(&quot;description is: &quot;)  Response.Write(c)  %&amp;gt;   Previous description is: ASP Variables  GetPreviousURL	Returns the URL of the previous item listed in the Content Linking List file. If the current page is not found in the list file it returns the URL of the first page on the list	&amp;lt;% dim nl,c  Set nl=Server.CreateObject(&quot;MSWC.NextLink&quot;)   c=nl.GetPreviousURL(&quot;links.txt&quot;)   Response.Write(&quot;Previous &quot;)  Response.Write(&quot;URL is: &quot;)  Response.Write(c)  %&amp;gt;   Previous URL is: asp_variables.asp   ________________________________________   ASP Content Rotator Component (ASP 3.0)  The ASP Content Rotator component creates a ContentRotator object that displays a different content string each time a visitor enters or refreshes a page.  A text file, called the Content Schedule File, includes the information about the content strings.  The content strings can contain HTML tags so you can display any type of content that HTML can represent: text, images, colors, or hyperlinks.  Syntax  &amp;lt;% Set cr=Server.CreateObject(&quot;MSWC.ContentRotator&quot;)  %&amp;gt;   ________________________________________  ASP Content Rotator Example  The following example displays a different content each time a visitor views the Web page.  First, create a text file named &quot;textads.txt&quot; and place it in a subfolder called &quot;text&quot;.  &quot;textads.txt&quot;:  %% #3    
&lt;h2&gt;This is a great day!!&lt;/h2&gt;%% #3  &lt;img src=&quot;smiley.gif&quot; /&gt;   %% #4  &lt;a href=&quot;http://www.w3schools.com/&quot;&gt;Visit W3Schools.com&lt;/a&gt;  Notice the #number at the beginning of each content string. This number is an optional parameter that indicates the relative weight of the HTML content string. In the text file above, the Content Rotator will display the first and second content string three-tenth of the time, and the third string four-tenths of the time.  Then, create an ASP file, and insert the following code:  Example      &amp;lt;% set cr=server.createobject(&quot;MSWC.ContentRotator&quot;)  response.write(cr.ChooseContent(&quot;text/textads.txt&quot;))  %&amp;gt;          ________________________________________  ASP Content Rotator Component&#39;s Methods  Method	Description	Example  ChooseContent	Gets and displays a content string	&amp;lt;% dim cr  Set cr=Server.CreateObject(&quot;MSWC.ContentRotator&quot;)   response.write(cr.ChooseContent(&quot;text/textads.txt&quot;))  %&amp;gt;   Output:     GetAllContent	Retrieves and displays all of the content strings in the text file	&amp;lt;% dim cr  Set cr=Server.CreateObject(&quot;MSWC.ContentRotator&quot;)   response.write(cr.GetAllContent(&quot;text/textads.txt&quot;))  %&amp;gt;   Output:  This is a great day!!   Visit W3Schools.com   &lt;/object&gt;&lt;/object&gt;&lt;/object&gt;&lt;/object&gt;&lt;/object&gt;&lt;/a&gt;&lt;/headername&gt;&lt;/object&gt;&lt;/object&gt;&lt;/b&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://computerscienze.blogspot.com/feeds/2538984133828420146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerscienze.blogspot.com/2010/01/asp-active-server-pages-notes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/2538984133828420146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/2538984133828420146'/><link rel='alternate' type='text/html' href='http://computerscienze.blogspot.com/2010/01/asp-active-server-pages-notes.html' title='ASP - Active Server Page'/><author><name>lohith kumar</name><uri>http://www.blogger.com/profile/08530468303679081678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqHVxoT0zNNgw32kuE1WItEktjohP6UwVgbL74SJ-5omOek28-G9GNdlhHGvXGx7XybeksRrVMbegL3t4wFN9Bs1YA_db1jMRT7z_aT1ytriw1Y9GxtHx5gmpbmZOzTw/s220/1000_tiger_parts_seized.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5337827601128114885.post-3362181512273914152</id><published>2010-01-11T01:45:00.000+05:30</published><updated>2010-03-16T15:50:08.091+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="c -sharp notes"/><title type='text'>c# notes or c -sharp notes</title><content type='html'>C# ( C SHARP)&lt;br /&gt;
&lt;br /&gt;
VARIABLE:&lt;br /&gt;
IT IS A MEMORY LOCATION WHICH IS USED TO STORE OR HOLD THE VALUE.&lt;br /&gt;
THE VALUE WHICH IS ENTRED IS NOT FIXED IT VARIES.&lt;br /&gt;
&lt;br /&gt;
DATATYPE:&lt;br /&gt;
IT IS USED TO REPRESENT WHAT TYPE OF DATA THAT THE USER IS GOING TO ENTER.&lt;br /&gt;
THEY ARE&lt;br /&gt;
Byte - Byte byte An integer from 0 to 255.&lt;br /&gt;
Int16  -Short short An integer from –32,768 to 32,767.&lt;br /&gt;
Int32  -Integer int An integer from –2,147,483,648 to 2,147,483,647.&lt;br /&gt;
Int64 - Long long An integer from about –9.2e18 to 9.2e18.&lt;br /&gt;
Single  -Single float A single-precision floating point number from approximately –3.4e38 to 3.4e38.&lt;br /&gt;
Double  -Double double A double-precision floating point number from approximately –1.8e308 to 1.8e308.&lt;br /&gt;
Decimal- Decimal decimal A 128-bit fixed-point fractional number that supports up to 28 significant digits.&lt;br /&gt;
Char  -Char char A single 16-bit Unicode character.&lt;br /&gt;
String  -String string A variable-length series of Unicode characters.&lt;br /&gt;
Boolean -Boolean bool A true or false value.&lt;br /&gt;
DateTime- Date *&lt;br /&gt;
&lt;br /&gt;
* If the language does not provide an alias for a given type, you can just use the .NET class name.&lt;br /&gt;
Represents any date and time from 12:00:00 AM,&lt;br /&gt;
January 1 of the year 1 in the Gregorian calendar, to 11:59:59 PM, December 31 of the year 9999.&lt;br /&gt;
Time values can resolve values to 100 nanosecond increments. Internally, this data type is stored as a 64-bit integer.&lt;br /&gt;
TimeSpan * * Represents a period of time, as in ten seconds or three days. The smallest possible interval is 1 tick (100 nanoseconds).&lt;br /&gt;
Object Object object The ultimate base class of all .NET types. Can contain any data type or object.&lt;br /&gt;
&lt;br /&gt;
OPERATORS:&lt;br /&gt;
AN OPERATOR IS ONE WHICH OPERATES ON OPERANDS OR VARIABLES. THEY ARE&lt;br /&gt;
• ARITHMETIC OPERATOR&lt;br /&gt;
• RELATIONAL OPERATOR&lt;br /&gt;
• LOGICAL OPERATOR&lt;br /&gt;
• ASSIGNMENT OPERATOR&lt;br /&gt;
• INCREMENT AND DECREMENT OPERATOR&lt;br /&gt;
• TERNARY OR CONDITIONAL OPERATOR&lt;br /&gt;
• BITWISE &lt;br /&gt;
• COMMA&lt;br /&gt;
&lt;br /&gt;
ARITHMETIC: USED TO PERFORM ARITHMETIC OPERATIONS.     + , - , * , / , %&lt;br /&gt;
RELATIONAL OPERATOR OR COMPARISON OPERATOR:  &gt; ,&lt;, &gt;= ,&lt;= ,!= ,==
IT PRODUCES BOOLEAN VALUES .  THAT IS TRUE  OR FALSE.
LOGICAL OPERATOR:
&amp;&amp; (LOGICAL AND)
|| (LOGICAL OR)
! (LOGICAL NOT)

TRUE  &amp;&amp; TRUE = TRUE
TRUE &amp;&amp; FALSE =FALSE
FALSE &amp;&amp; TRUE=FALSE
FALSE &amp;&amp; FALSE= FALSE
NOTE: BOTH THE CONDITIONS MUST BE TRUE TO OBTAIN FINAL VALUE TRUE.





|| (LOGICAL OR)
ANY ONE OF THE CONDITION MUST BE TRUE TO OBTAIN FINAL VALUE TRUE.

TRUE || TRUE = TRUE
TRUE || FALSE = TRUE
FALSE || TRUE = TRUE
FALSE || FALSE = FALSE

! (LOGICAL NOT)
IT PRODUCES OPPOSITE RESULT.

! ( TRUE ) = FALSE
! ( FALSE ) = TRUE

ASSIGNMENT OPERATOR:  IT USES THE SYMBOL  &quot;=&quot; . USED TO ASSIGN RIGHT HAND SIDE (RHS )
VALUE TO LEFT HAND SIDE (LHS ).
EX: a =10
INCREMENT AND DECREMENT OPERATOR:
INCREMENTING THE VALUE BY ONE (IT USES ++)
DECREMENTING THE VALUE BY ONE (IT USES --)
PRE INCREMENT AND POST INCREMENT
PRE DECREMENT AND POST DECREMENT

PRE INCREMENT:
a=10
b=++a
a=11
b=11
POST INCREMENT:
a=10
b=a++
b=10
a=11

SIMILLARLY PRE AND POST DECREMENT.

TERNARY OR CONDITIONAL OPERATOR:
TERNARY MEANS THREE. IT CONTAINS 3 EXPRESSIONS.
CONDITION, VALUE1,VALUE2
(condition)?value1:value2
IF THE CONDITION IS TRUE , THEN VALUE 1 IS TAKEN.
IF THE CONDITION IS FALSE THEN VALUE2 IS TAKEN.
c=  (a&gt;b)?a:b;&lt;br /&gt;
&lt;br /&gt;
BITWISE OPERATOR:&lt;br /&gt;
IT OPERATES ON BINARY DIGITS. THEY ARE    &amp; , | , ^ , &lt;&lt; , &gt;&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
COMMA OPERATOR:      TO Access a method and  class:&lt;br /&gt;
&lt;br /&gt;
MICROSOFT VISUAL STUDIO &lt;br /&gt;
FILE --NEW---PROJECT-----SELECT ( VISUAL C#) AND CONSOLE APPLICATION&lt;br /&gt;
ENTER THE NAME EX: program1 (IN THE REQUIRED FOLDER)AND OK.&lt;br /&gt;
&lt;br /&gt;
Console-------------&gt; IT IS A CLASS.&lt;br /&gt;
WriteLine------------&gt; METHOD    OR FUNCTION&lt;br /&gt;
&lt;br /&gt;
TO RUN THE PROGRAM&lt;br /&gt;
PRESS  F5  FUNCITON KEY.&lt;br /&gt;
&lt;----------------------------------------------------------------------&gt;&lt;br /&gt;
NOTE:    THE KEYBOARD VALUES ARE ENTERED  AFTER THE EXECUTION. IT IS IN THE FORM OF STRING.&lt;br /&gt;
int x = int.Parse(Console.ReadLine());&lt;br /&gt;
double y = double.Parse(Console.ReadLine());&lt;br /&gt;
Console.WriteLine(x);&lt;br /&gt;
Console.WriteLine(y);&lt;br /&gt;
&lt;--------------------------------------------------------------------------------------------------------------------------------&gt;            &lt;br /&gt;
Reading From the keyboard       &lt;br /&gt;
//To accept for the console  &lt;br /&gt;
Console.Write(&quot;Enter name  : &quot;); &lt;br /&gt;
string name  =  Console.ReadLine(); //Reads as a string  from the keyboard&lt;br /&gt;
Console.Clear(); // clears the screen &lt;br /&gt;
Console.WriteLine(&quot;Name : &quot; + name);&lt;br /&gt;
&lt;----------------------------------------------------------------------------------------------------------------------------------&gt;&lt;br /&gt;
//To Add two numbers &lt;br /&gt;
Console.Write(&quot;a = &quot;);&lt;br /&gt;
int a = int.Parse(Console.ReadLine());&lt;br /&gt;
Console.Write(&quot;b = &quot;);&lt;br /&gt;
int b = int.Parse(Console.ReadLine());&lt;br /&gt;
//To read other data types &lt;br /&gt;
//double d = double.Parse(Console.ReadLine());&lt;br /&gt;
//long l = long.Parse(Console.ReadLine());&lt;br /&gt;
//float f = float.Parse(Console.ReadLine());&lt;br /&gt;
int c = a + b;&lt;br /&gt;
//Console.WriteLine(&quot;sum of  &quot; + a + &quot; + &quot; + b + &quot; = &quot; + c);&lt;br /&gt;
//To change console fore and back color             &lt;br /&gt;
Console.ForegroundColor = ConsoleColor.White;&lt;br /&gt;
Console.BackgroundColor = ConsoleColor.Red;            &lt;br /&gt;
Console.WriteLine(&quot;sum of  {0} + {1} = {2}&quot;,a,b,c);&lt;br /&gt;
&lt;-----------------------------------------------------------------------------------------------------------------------------------------------&gt;&lt;br /&gt;
//WAP TO ACCEPT 2 NO. FROM THE USER, AND FIND WHICH IS THE BIG&lt;br /&gt;
Console.Write(&quot;a = &quot;);&lt;br /&gt;
int a = int.Parse(Console.ReadLine());&lt;br /&gt;
Console.Write(&quot;b = &quot;);&lt;br /&gt;
int b = int.Parse(Console.ReadLine());&lt;br /&gt;
//To read other data types &lt;br /&gt;
//double d = double.Parse(Console.ReadLine());&lt;br /&gt;
//long l = long.Parse(Console.ReadLine());&lt;br /&gt;
//float f = float.Parse(Console.ReadLine());&lt;br /&gt;
if (a &gt; b)&lt;br /&gt;
Console.WriteLine(&quot; a is big &quot; + a);&lt;br /&gt;
else&lt;br /&gt;
Console.WriteLine(&quot; b is big&quot; + b);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//control Statements in C# &lt;br /&gt;
// to find the largest of 3 numbers  &lt;br /&gt;
Console.Write(&quot;enter number1 : &quot;);&lt;br /&gt;
int a = int.Parse(Console.ReadLine());&lt;br /&gt;
Console.Write(&quot;enter number2 : &quot;);&lt;br /&gt;
int b = int.Parse(Console.ReadLine());&lt;br /&gt;
Console.Write(&quot;enter number3 : &quot;);&lt;br /&gt;
int c = int.Parse(Console.ReadLine());&lt;br /&gt;
int i = 10;&lt;br /&gt;
if (a &gt; b &amp;&amp; a &gt; c) // boolean expression  True/Flase&lt;br /&gt;
{&lt;br /&gt;
Console.WriteLine(&quot;{0} is the largest  number&quot;, a);&lt;br /&gt;
}&lt;br /&gt;
else if ( b &gt; c)&lt;br /&gt;
{&lt;br /&gt;
Console.WriteLine(&quot;{0} is the largest  number&quot;, b);&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
Console.WriteLine(&quot;{0} is the largest  number&quot;, c);&lt;br /&gt;
}&lt;br /&gt;
&lt;--------------------------------------------------------------------------------------------------------------&gt;&lt;br /&gt;
SWITCH CASE : &lt;br /&gt;
Syntax:&lt;br /&gt;
switch(expression)&lt;br /&gt;
{&lt;br /&gt;
case label:&lt;br /&gt;
statement;&lt;br /&gt;
break;&lt;br /&gt;
case label:&lt;br /&gt;
statement;&lt;br /&gt;
break;&lt;br /&gt;
case label:&lt;br /&gt;
statement;&lt;br /&gt;
break;&lt;br /&gt;
default:&lt;br /&gt;
statement;&lt;br /&gt;
break;&lt;br /&gt;
}&lt;br /&gt;
Console.Write(&quot;Input number : &quot;);&lt;br /&gt;
int number = int.Parse(Console.ReadLine());&lt;br /&gt;
switch (number)&lt;br /&gt;
{&lt;br /&gt;
case 1:&lt;br /&gt;
Console.WriteLine(&quot;You entered  number  : {0}&quot;, number);&lt;br /&gt;
break; &lt;br /&gt;
case 2:&lt;br /&gt;
Console.WriteLine(&quot;You entered  number  : {0}&quot;, number);&lt;br /&gt;
break;&lt;br /&gt;
case 3:&lt;br /&gt;
Console.WriteLine(&quot;You entered  number  : {0}&quot;, number);&lt;br /&gt;
break;&lt;br /&gt;
default:&lt;br /&gt;
Console.WriteLine(&quot;You entered  number  &gt; 3&quot;);&lt;br /&gt;
break;&lt;br /&gt;
&lt;-------------------------------------------------------------------------------------------------------------&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Console.Write(&quot;Input string : &quot;);&lt;br /&gt;
string choice = Console.ReadLine();&lt;br /&gt;
switch (choice)&lt;br /&gt;
{&lt;br /&gt;
case &quot;one&quot;:&lt;br /&gt;
Console.WriteLine(&quot;You entered  number  : {0}&quot;,choice);&lt;br /&gt;
break;&lt;br /&gt;
case &quot;two&quot;:&lt;br /&gt;
Console.WriteLine(&quot;You entered  number  : {0}&quot;, choice);&lt;br /&gt;
break;&lt;br /&gt;
case &quot;three&quot;:&lt;br /&gt;
Console.WriteLine(&quot;You entered  number  : {0}&quot;, choice);&lt;br /&gt;
break;                    &lt;br /&gt;
default:&lt;br /&gt;
Console.WriteLine(&quot;choice not found&quot;);&lt;br /&gt;
break;&lt;br /&gt;
}&lt;br /&gt;
&lt;--------------------------------------------------------------------------------------------------------------------------&gt;&lt;br /&gt;
&lt;br /&gt;
STRINGS:&lt;br /&gt;
BUILT IN FUNCTIONS:&lt;br /&gt;
THE FOLLOWINGS ARE THE FUNCTIONS  OF string CLASS.&lt;br /&gt;
StartsWith()&lt;br /&gt;
EndsWith()&lt;br /&gt;
Equals()&lt;br /&gt;
Length()&lt;br /&gt;
Replace()&lt;br /&gt;
toUpper: THIS FUNCTIO IS USED TO CONVERT THE STRING INTO UPPERCASE.&lt;br /&gt;
toLower : THIS FUNCTION IS USED TO CONVERT THE STRING INTO LOWERCASE.&lt;br /&gt;
//declaration  &lt;br /&gt;
string s = &quot;Welcome to Strings in  C#&quot;;&lt;br /&gt;
Console.WriteLine(&quot;Length  : {0}&quot;, s.Length);&lt;br /&gt;
string upperCase = s.ToUpper();&lt;br /&gt;
&lt;br /&gt;
string lowerCase = s.ToLower();&lt;br /&gt;
Console.WriteLine(&quot;Message     : {0}&quot;, s);&lt;br /&gt;
Console.WriteLine(&quot;Uppercase  : {0}&quot;, upperCase);&lt;br /&gt;
Console.WriteLine(&quot;LowerCase :  {0}&quot;, lowerCase);&lt;br /&gt;
&lt;br /&gt;
&lt;-----------------------------------------------------------------------------------------&gt;&lt;br /&gt;
StartsWith() : THIS FUNCTION IS USED TO CHECK STRING THAT STARTS WITH.&lt;br /&gt;
string URL = &quot;http://www.yahoo.com&quot;;&lt;br /&gt;
if (URL.StartsWith(&quot;http&quot;))&lt;br /&gt;
{&lt;br /&gt;
Console.WriteLine(&quot;Its a HTTP request&quot;);&lt;br /&gt;
}&lt;br /&gt;
if (URL.EndsWith(&quot;.com&quot;))&lt;br /&gt;
{&lt;br /&gt;
Console.WriteLine(&quot;Its a Commercial website&quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;---------------------------------------------------------------------------------------&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Equals() : THIS FUNCTION IS USED TO COMPARE THE TWO STRINGS.&lt;br /&gt;
string s1 = &quot;smith&quot;;&lt;br /&gt;
string s2 = &quot;smith&quot;;&lt;br /&gt;
if (s1 == s2)&lt;br /&gt;
//if(s1.Equals(s2))&lt;br /&gt;
// if (s1.Equals(&quot;amith&quot;))&lt;br /&gt;
{&lt;br /&gt;
Console.WriteLine(&quot;s1 == s2&quot;);&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
Console.WriteLine(&quot;s1 != s2&quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;-------------------------------------------------------------------------------------------------------------&gt;&lt;br /&gt;
Replace () : THIS FUNCTION IS USED TO REPLACE THE WORD. REPLACE FUNCTION:&lt;br /&gt;
string message = &quot;Google is fast, Google is Best, Google uses AJAX&quot;;&lt;br /&gt;
Console.Write(&quot;Enter word to search : &quot;);&lt;br /&gt;
string searchWord = Console.ReadLine();&lt;br /&gt;
Console.Write(&quot;Enter word to replace : &quot;);&lt;br /&gt;
string replaceWord = Console.ReadLine();&lt;br /&gt;
Console.WriteLine(&quot;Message  : {0}&quot;, message);&lt;br /&gt;
//Replace the word  &lt;br /&gt;
message = message.Replace(searchWord, replaceWord);&lt;br /&gt;
Console.WriteLine(&quot;Message  after Replacing : {0}&quot;, message);&lt;br /&gt;
&lt;-----------------------------------------------------------------------------------------&gt;&lt;br /&gt;
ITERATIVE OR REPETATIVE LOOP:&lt;br /&gt;
FOR LOOP&lt;br /&gt;
Console.WriteLine(&quot;enter the value from the keyboard&quot;);&lt;br /&gt;
int n = int.Parse(Console.ReadLine());&lt;br /&gt;
int sum, i;&lt;br /&gt;
sum = 0;&lt;br /&gt;
for (i = 1; i &lt;= n; i++)
sum = sum + i;
Console.WriteLine(&quot;total sum is &quot; + sum);
output:
1+2+3+4+5 
&lt;-----------------------------------------------------------------------------------------------&gt;&lt;br /&gt;
WHILE LOOP&lt;br /&gt;
Console.WriteLine(&quot;enter the value from the keyboard&quot;);&lt;br /&gt;
int n = int.Parse(Console.ReadLine());&lt;br /&gt;
int i = 2;&lt;br /&gt;
while (i &lt;= n)
{
Console.Write(i + &quot; &quot;);
i += 2;
}
i = i +2------------------------------&gt; i+=2&lt;br /&gt;
i = i *2------------------------------&gt;i *=2&lt;br /&gt;
i=i / 2--------------------------------&gt; i / = 2&lt;br /&gt;
i = i+1----------------------------&gt;i++&lt;br /&gt;
&lt;----------------------------------------------------------------------------------------------&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DO WHILE LOOP&lt;br /&gt;
Console.WriteLine(&quot;enter the value from the keyboard&quot;);&lt;br /&gt;
int n = int.Parse(Console.ReadLine());&lt;br /&gt;
int i = 1;&lt;br /&gt;
do&lt;br /&gt;
{&lt;br /&gt;
Console.Write(i + &quot; &quot;);&lt;br /&gt;
n = n - 1;&lt;br /&gt;
i = i + 1;&lt;br /&gt;
} while (n != 0);&lt;br /&gt;
&lt;---------------------------------------------------&gt;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
FOR EACH&lt;br /&gt;
ArrayList numbers = new ArrayList();&lt;br /&gt;
for (int i = 0; i &lt; 10; i++)
numbers.Add(i);
foreach (int x in numbers)
Console.Write(x+&quot; &quot;);
&lt;--------------------------------------------------------&gt;&lt;br /&gt;
ArrayList numbers = new ArrayList();&lt;br /&gt;
for (int i = 0; i &lt; 10; i++)
numbers.Add(10+i);
foreach (int x in numbers)
Console.Write(x + &quot; &quot;);
&lt;--------------------------------------------------------------------------&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CLASS AND OBJECT:&lt;br /&gt;
&lt;br /&gt;
OBJECT ORIENTED PROGRAMMING STRUCTURE (OOPS):&lt;br /&gt;
CLASS AND OBJECT:&lt;br /&gt;
CLASS IS AN USER DEFINED DATA TYPE, WHICH CONTAINS DATA MEMBERS AND FUNCTIONS.&lt;br /&gt;
&lt;br /&gt;
CLASS SAMPLE&lt;br /&gt;
{&lt;br /&gt;
INT X;----------------------------&gt;DATA MEMBER&lt;br /&gt;
VOID GETDATA();-----------&gt;FUNCTION&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
FRUIT-----&gt;CLASS&lt;br /&gt;
MANGO, BANANA, ORANGE ETC-=---&gt; OBJECTS&lt;br /&gt;
&lt;br /&gt;
CLASS ANIMAL&lt;br /&gt;
{&lt;br /&gt;
EYE,MOUTH;--------DATA MEMBERS&lt;br /&gt;
SEE()    FUNCTION&lt;br /&gt;
EAT()&lt;br /&gt;
}&lt;br /&gt;
TIGER,CAT, DOG-----&gt;OBJECTS&lt;br /&gt;
&lt;br /&gt;
CLASS EXAM&lt;br /&gt;
{&lt;br /&gt;
WHAT IS C++&lt;br /&gt;
WHAT IS JAVA&lt;br /&gt;
}&lt;br /&gt;
ST1,ST2,ST3,ST4---------&gt;OBJECTS&lt;br /&gt;
CLASS BANK&lt;br /&gt;
{&lt;br /&gt;
DEPOSIT()&lt;br /&gt;
WITHDRAWAL()&lt;br /&gt;
BALANCE()&lt;br /&gt;
}&lt;br /&gt;
CUST1,CUST2,CUST3--------&gt;OBJECTS&lt;br /&gt;
&lt;br /&gt;
CLASS IS A TEMPLATE OR BLUEPRINT OR GENERAL REPRESENATION OR COMMON REPRESENTATION OR SKELETON OF APPLICATION&lt;br /&gt;
&lt;br /&gt;
OBJECT:&lt;br /&gt;
IT IS AN ENTITY WHICH SHARES OR DRAWS THE COMMON PROPERTIES OF THE CLASS AND CAN HAVE ITS OWN BEHAVIOUR.&lt;br /&gt;
&lt;br /&gt;
PRIME CONCEPTS OF OOPS:&lt;br /&gt;
1. DATA HIDING&lt;br /&gt;
2. ABSTRACTION&lt;br /&gt;
3. ENCAPSULATION&lt;br /&gt;
4. INHERITANCE&lt;br /&gt;
5.  POLYMORPHISM&lt;br /&gt;
&lt;br /&gt;
DATA HIDING:&lt;br /&gt;
&lt;br /&gt;
IN PROCEDURAL ORIENTED PROGRAMMING LANGUAGE &quot;C&quot;, THERE IS NO SECURITY FOR THE DATA. THE DATA COULD BE ACCESSED IN ANY FUNCTION AND COULD BE MODIFIED.&lt;br /&gt;
DATA FLOWS FREELY AROUND THE PROGRAM.&lt;br /&gt;
&lt;br /&gt;
IN ORDER TO PROVIDE EXCLUSIVELY SECURITY FOR THE DATA  AND NOT FOR THE FUNCTIONS, THE PRIME CONCEPT OF OOPS , DATA HIDING CAME IN. HERE DATA IS TREATED AS &lt;br /&gt;
AN IMPORTANT ELEMENT OR CRITICAL ELEMENT.&lt;br /&gt;
&lt;br /&gt;
ABSTRACTION OF DATA:&lt;br /&gt;
&lt;br /&gt;
THE DATA MEMBER OF THE CLASS SHOULD BE USED WITH IN THE MEMBER FUNCTIONS OF THE CLASS. THE DATA IS ABSTRACTED.&lt;br /&gt;
&lt;br /&gt;
ENCAPSULATION:&lt;br /&gt;
&lt;br /&gt;
THE GROUPING UP OF DATA MEMBERS AND FUNCTIONS TOGETHER IS ENCAPSULATION.&lt;br /&gt;
IT IS USED TO SEPARTE THE ESSENTIAL ENTITIES FROM NON ESSENTIAL.&lt;br /&gt;
&lt;br /&gt;
DATA MEMBERS AND FUNCTIONS ARE ENCAPSULATED TO FORM A FAMILY CALLED &quot;CLASS&quot;&lt;br /&gt;
&lt;br /&gt;
INHERITANCE:&lt;br /&gt;
&lt;br /&gt;
IT IS THE PROCESS OF CREATING NEW CLASS BY MAKING USE OF EXISTING CLASS.&lt;br /&gt;
IT PROVIDES A CONCEPT CALLED &quot;REUSABILITY&quot;. RATHER THAN WRITTING THE CODE AGAIN AND AGAIN REUSE THE EXISTING PROPERTIES.&lt;br /&gt;
IT AVOIDS WASTAGE OF SYSTEM TIME, USER TIME AND SYSTEM MEMORY.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POLYMORPHISM:&lt;br /&gt;
&lt;br /&gt;
POLY MEANS MANY AND MORPHISM MEANS FORMS. AN OBJECT CAN TAKE MANY OR MULTIPLE FORMS.&lt;br /&gt;
&lt;br /&gt;
SYNTAX:&lt;br /&gt;
class classname&lt;br /&gt;
{&lt;br /&gt;
datamembers&lt;br /&gt;
functions or  methods&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ex:&lt;br /&gt;
class  sample&lt;br /&gt;
{&lt;br /&gt;
int x;------------&gt;DATA MEMBER&lt;br /&gt;
void get()--------&gt;FUNCTION OR METHOD&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
OBJECT =  DATA + METHOD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SYNTAX:&lt;br /&gt;
class classname&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ex:&lt;br /&gt;
class test&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
CREATION OF OBJECT:&lt;br /&gt;
test t=new test();&lt;br /&gt;
&lt;br /&gt;
ACCESS SPECIFIER:&lt;br /&gt;
IT IS USED TO SPECIFY THE ACCESSIBILITY OF THE MEMBERS OF THE CLASS.&lt;br /&gt;
THEY ARE&lt;br /&gt;
&lt;br /&gt;
 PRIVATE,&lt;br /&gt;
 PUBLIC,&lt;br /&gt;
 PROTECTED &lt;br /&gt;
 INTERNAL&lt;br /&gt;
&lt;br /&gt;
NOTE:&lt;br /&gt;
BY DEFAULT THE DATA MEMBERS OF THE CLASS ARE PRIVATE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class test&lt;br /&gt;
{&lt;br /&gt;
public int x;&lt;br /&gt;
}&lt;br /&gt;
class test1&lt;br /&gt;
{&lt;br /&gt;
static void Main(String [] args)&lt;br /&gt;
{&lt;br /&gt;
test t=new test();  // t  IS AN OBJECT OF CLASS test&lt;br /&gt;
t.x=100;&lt;br /&gt;
Console.WriteLine(t.x);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;--------------------------------------------------------&gt;&lt;br /&gt;
class test&lt;br /&gt;
{&lt;br /&gt;
int x;&lt;br /&gt;
public void get()&lt;br /&gt;
{&lt;br /&gt;
x = 250;&lt;br /&gt;
}&lt;br /&gt;
public  void put()&lt;br /&gt;
{&lt;br /&gt;
Console.WriteLine(x);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
class test1&lt;br /&gt;
{&lt;br /&gt;
static void Main(String[] args)&lt;br /&gt;
{&lt;br /&gt;
test t = new test();&lt;br /&gt;
t.get();&lt;br /&gt;
t.put();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;-----------------------------------------------------------&gt;&lt;br /&gt;
class demo&lt;br /&gt;
{&lt;br /&gt;
int x, y;&lt;br /&gt;
public void getdata(int m,int n)&lt;br /&gt;
{&lt;br /&gt;
x = m;&lt;br /&gt;
y = n;&lt;br /&gt;
}&lt;br /&gt;
public  void putdata()&lt;br /&gt;
{&lt;br /&gt;
Console.WriteLine(x);&lt;br /&gt;
Console.WriteLine(y);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class demo1&lt;br /&gt;
{&lt;br /&gt;
static void Main(String[] args)&lt;br /&gt;
{&lt;br /&gt;
demo d1 = new demo();&lt;br /&gt;
demo d2 = new demo();&lt;br /&gt;
int a = int.Parse(Console.ReadLine());&lt;br /&gt;
int b = int.Parse(Console.ReadLine());&lt;br /&gt;
int c = int.Parse(Console.ReadLine());&lt;br /&gt;
int d = int.Parse(Console.ReadLine());&lt;br /&gt;
&lt;br /&gt;
d1.getdata(a,b );&lt;br /&gt;
d2.getdata(c,d );&lt;br /&gt;
d1.putdata();&lt;br /&gt;
d2.putdata();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;--------------------------------------------------------------&gt;&lt;br /&gt;
class demo&lt;br /&gt;
{&lt;br /&gt;
int x, y;&lt;br /&gt;
public void getdata(int x,int y)&lt;br /&gt;
{&lt;br /&gt;
this. x =x;&lt;br /&gt;
this. y =y;&lt;br /&gt;
}&lt;br /&gt;
public  void putdata()&lt;br /&gt;
{&lt;br /&gt;
Console.WriteLine(x);&lt;br /&gt;
Console.WriteLine(y);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
class demo1&lt;br /&gt;
{&lt;br /&gt;
static void Main(String[] args)&lt;br /&gt;
{&lt;br /&gt;
demo d1 = new demo();&lt;br /&gt;
demo d2 = new demo();&lt;br /&gt;
int a = int.Parse(Console.ReadLine());&lt;br /&gt;
int b = int.Parse(Console.ReadLine());&lt;br /&gt;
int c = int.Parse(Console.ReadLine());&lt;br /&gt;
int d = int.Parse(Console.ReadLine());&lt;br /&gt;
&lt;br /&gt;
d1.getdata(a,b );&lt;br /&gt;
d2.getdata(c,d );&lt;br /&gt;
d1.putdata();&lt;br /&gt;
d2.putdata();file:///G:/extra/032.jpg&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;-----------------------------------------------------------&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE:&lt;br /&gt;
DATA MEMBER IRRESPECTIVE OF ANY CATEGORY CAN BE INITIALIZED.&lt;br /&gt;
(private,public,protected)&lt;br /&gt;
private int x=100;</content><link rel='replies' type='application/atom+xml' href='http://computerscienze.blogspot.com/feeds/3362181512273914152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://computerscienze.blogspot.com/2010/01/c-notes-or-c-sharp-notes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/3362181512273914152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5337827601128114885/posts/default/3362181512273914152'/><link rel='alternate' type='text/html' href='http://computerscienze.blogspot.com/2010/01/c-notes-or-c-sharp-notes.html' title='c# notes or c -sharp notes'/><author><name>lohith kumar</name><uri>http://www.blogger.com/profile/08530468303679081678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqHVxoT0zNNgw32kuE1WItEktjohP6UwVgbL74SJ-5omOek28-G9GNdlhHGvXGx7XybeksRrVMbegL3t4wFN9Bs1YA_db1jMRT7z_aT1ytriw1Y9GxtHx5gmpbmZOzTw/s220/1000_tiger_parts_seized.jpg'/></author><thr:total>0</thr:total></entry></feed>