A New Internet Library: Add Your Website/Blog or Suggest A Website/Blog to our Free Web Directory http://anil.myfunda.net.

Its very simple, free and SEO Friendly.
Submit Now....

Thursday, February 7, 2008

Discover the 90/10 Principle

 
Author: Stephen Covey

Discover the 90/10 Principle.

It will change your life (at least the way you react to situations).

What is this principle? 10% of life is made up of what happens to you. 90% of life is decided by how you react.

What does this mean? We really have no control over 10% of what happens to us.

We cannot stop the car from breaking down. The plane will be late arriving, which throws our whole schedule off. A driver may cut us off in traffic.

We have no control over this 10%. The other 90% is different. You determine the other 90%.

How? ……….By your reaction.

You cannot control a red light. but you can control your reaction. Don't let people fool you; YOU can control how you react.

Let's use an example.

You are eating breakfast with your family. Your daughter knocks over a cup of coffee onto your business shirt. You have no control over what just happened.

What happens next will be determined by how you react.

You curse.

You harshly scold your daughter for knocking the cup over. She breaks down in tears. After scolding her, you turn to your spouse and criticize her for placing the cup too close to the edge of the table. A short verbal battle follows. You storm upstairs and change your shirt. Back downstairs, you find your daughter has been too busy crying to finish breakfast and get ready for school. She misses the bus.

Your spouse must leave immediately for work. You rush to the car and drive your daughter to school. Because you are late, you drive 40 miles an hour in a 30 mph speed limit.

After a 15-minute delay and throwing $60 traffic fine away, you arrive at school. Your daughter runs into the building without saying goodbye. After arriving at the office 20 minutes late, you find you forgot your briefcase. Your day has started terrible. As it continues, it seems to get worse and worse. You look forward to coming home.

When you arrive home, you find small wedge in your relationship with your spouse and daughter.

Why? …. Because of how you reacted in the morning.

Why did you have a bad day?

A) Did the coffee cause it?

B) Did your daughter cause it?

C) Did the policeman cause it?

D) Did you cause it?

The answer is "D".

You had no control over what happened with the coffee. How you reacted in those 5 seconds is what caused your bad day.

Here is what could have and should have happened.

Coffee splashes over you. Your daughter is about to cry. You gently say, "Its ok honey, you just need to be more careful next time". Grabbing a towel you rush upstairs. After grabbing a new shirt and your briefcase, you come back down in time to look through the window and see your child getting on the bus. She turns and waves. You arrive 5 minutes early and cheerfully greet the staff. Your boss comments on how good the day you are having.

Notice the difference?

Two different scenarios. Both started the same. Both ended different.

Why?

Because of how you REACTED.

You really do not have any control over 10% of what happens. The other 90% was determined by your reaction.

Here are some ways to apply the 90/10 principle. If someone says something negative about you, don't be a sponge. Let the attack roll off like water on glass. You don't have to let the negative comment affect you!

React properly and it will not ruin your day. A wrong reaction could result in losing a friend, being fired, getting stressed out etc.

How do you react if someone cuts you off in traffic? Do you lose your temper? Pound on the steering wheel? A friend of mine had the steering wheel fall off) Do you curse? Does your blood pressure skyrocket? Do you try and bump them?

WHO CARES if you arrive ten seconds later at work? Why let the cars ruin your drive?

Remember the 90/10 principle, and do not worry about it.

You are told you lost your job.

Why lose sleep and get irritated? It will work out. Use your worrying energy and time into finding another job.

The plane is late; it is going to mangle your schedule for the day. Why take outpour frustration on the flight attendant? She has no control over what is going on.

Use your time to study, get to know the other passenger. Why get stressed out? It will just make things worse.

Now you know the 90-10 principle. Apply it and you will be amazed at the results. You will lose nothing if you try it. The 90-10 principle is incredible. Very few know and apply this principle.

The result?

Millions of people are suffering from undeserved stress, trials, problems and heartache. We all must understand and apply the 90/10 principle.

It CAN change your life!!!

Enjoy….

.NET Framework 3.5

 

NET Framework 3.5 builds incrementally on the new features added in .NET Framework 3.0, for example, Windows Workflow Foundation (WF), Windows Communication Foundation (WCF), Windows Presentation Foundation (WPF) and Windows CardSpace. In addition, .NET Framework 3.5 contains a number of new features in several technology areas. These new features have been added as new assemblies to avoid breaking changes. They include the following:

  • Deep integration of Language Integrated Query (LINQ) and data awareness. This new feature will let you write code written in LINQ-enabled languages to filter, enumerate, and create projections of several types of SQL data, collections, XML, and DataSets by using the same syntax.

  • ASP.NET AJAX lets you create more efficient, more interactive, and highly-personalized Web experiences that work across all the most popular browsers.

  • New Web protocol support for building WCF services including AJAX, JSON, REST, POX, RSS, ATOM, and several new WS-* standards.

  • Full tooling support for WF, WCF, and WPF, including the new workflow-enabled services technology.

  • New classes in .NET Framework 3.5 base class library (BCL) address the most common customer requests.

HttpRequest and HttpWebRequest

 

System.Web.HttpRequest is a class used on the server and inside an
ASP.NET application. It represents the *incoming* request from a
client.

System.Net.HttpWebRequest is a class used to make an *outgoing*
request to a web application.

Tips for Writing High-Performance Web Applications

 

Writing a Web application with ASP.NET is unbelievably easy. So easy, many developers don't take the time to structure their applications for great performance. In this article, I'm going to present 10 tips for writing high-performance Web apps. I'm not limiting my comments to ASP.NET applications because they are just one subset of Web applications. This article won't be the definitive guide for performance-tuning Web applications—an entire book could easily be devoted to that. Instead, think of this as a good place to start.

Before becoming a workaholic, I used to do a lot of rock climbing. Prior to any big climb, I'd review the route in the guidebook and read the recommendations made by people who had visited the site before. But, no matter how good the guidebook, you need actual rock climbing experience before attempting a particularly challenging climb. Similarly, you can only learn how to write high-performance Web applications when you're faced with either fixing performance problems or running a high-throughput site.

My personal experience comes from having been an infrastructure Program Manager on the ASP.NET team at Microsoft, running and managing www.asp.net, and helping architect Community Server, which is the next version of several well-known ASP.NET applications (ASP.NET Forums, .Text, and nGallery combined into one platform). I'm sure that some of the tips that have helped me will help you as well.

You should think about the separation of your application into logical tiers. You might have heard of the term 3-tier (or n-tier) physical architecture. These are usually prescribed architecture patterns that physically divide functionality across processes and/or hardware. As the system needs to scale, more hardware can easily be added. There is, however, a performance hit associated with process and machine hopping, thus it should be avoided. So, whenever possible, run the ASP.NET pages and their associated components together in the same application.

Because of the separation of code and the boundaries between tiers, using Web services or remoting will decrease performance by 20 percent or more.

The data tier is a bit of a different beast since it is usually better to have dedicated hardware for your database. However, the cost of process hopping to the database is still high, thus performance on the data tier is the first place to look when optimizing your code.

Before diving in to fix performance problems in your applications, make sure you profile your applications to see exactly where the problems lie. Key performance counters (such as the one that indicates the percentage of time spent performing garbage collections) are also very useful for finding out where applications are spending the majority of their time. Yet the places where time is spent are often quite unintuitive.

There are two types of performance improvements described in this article: large optimizations, such as using the ASP.NET Cache, and tiny optimizations that repeat themselves. These tiny optimizations are sometimes the most interesting. You make a small change to code that gets called thousands and thousands of times. With a big optimization, you might see overall performance take a large jump. With a small one, you might shave a few milliseconds on a given request, but when compounded across the total requests per day, it can result in an enormous improvement.


Performance on the Data Tier

When it comes to performance-tuning an application, there is a single litmus test you can use to prioritize work: does the code access the database? If so, how often? Note that the same test could be applied for code that uses Web services or remoting, too, but I'm not covering those in this article.

If you have a database request required in a particular code path and you see other areas such as string manipulations that you want to optimize first, stop and perform your litmus test. Unless you have an egregious performance problem, your time would be better utilized trying to optimize the time spent in and connected to the database, the amount of data returned, and how often you make round-trips to and from the database.

With that general information established, let's look at ten tips that can help your application perform better. I'll begin with the changes that can make the biggest difference.


Tip 1—Return Multiple Resultsets

Review your database code to see if you have request paths that go to the database more than once. Each of those round-trips decreases the number of requests per second your application can serve. By returning multiple resultsets in a single database request, you can cut the total time spent communicating with the database. You'll be making your system more scalable, too, as you'll cut down on the work the database server is doing managing requests.

While you can return multiple resultsets using dynamic SQL, I prefer to use stored procedures. It's arguable whether business logic should reside in a stored procedure, but I think that if logic in a stored procedure can constrain the data returned (reduce the size of the dataset, time spent on the network, and not having to filter the data in the logic tier), it's a good thing.

Using a SqlCommand instance and its ExecuteReader method to populate strongly typed business classes, you can move the resultset pointer forward by calling NextResult. Figure 1 shows a sample conversation populating several ArrayLists with typed classes. Returning only the data you need from the database will additionally decrease memory allocations on your server.


Tip 2—Paged Data Access

The ASP.NET DataGrid exposes a wonderful capability: data paging support. When paging is enabled in the DataGrid, a fixed number of records is shown at a time. Additionally, paging UI is also shown at the bottom of the DataGrid for navigating through the records. The paging UI allows you to navigate backwards and forwards through displayed data, displaying a fixed number of records at a time.

There's one slight wrinkle. Paging with the DataGrid requires all of the data to be bound to the grid. For example, your data layer will need to return all of the data and then the DataGrid will filter all the displayed records based on the current page. If 100,000 records are returned when you're paging through the DataGrid, 99,975 records would be discarded on each request (assuming a page size of 25). As the number of records grows, the performance of the application will suffer as more and more data must be sent on each request.

One good approach to writing better paging code is to use stored procedures. Figure 2 shows a sample stored procedure that pages through the Orders table in the Northwind database. In a nutshell, all you're doing here is passing in the page index and the page size. The appropriate resultset is calculated and then returned.

In Community Server, we wrote a paging server control to do all the data paging. You'll see that I am using the ideas discussed in Tip 1, returning two resultsets from one stored procedure: the total number of records and the requested data.

The total number of records returned can vary depending on the query being executed. For example, a WHERE clause can be used to constrain the data returned. The total number of records to be returned must be known in order to calculate the total pages to be displayed in the paging UI. For example, if there are 1,000,000 total records and a WHERE clause is used that filters this to 1,000 records, the paging logic needs to be aware of the total number of records to properly render the paging UI.


Tip 3—Connection Pooling

Setting up the TCP connection between your Web application and SQL Server can be an expensive operation. Developers at Microsoft have been able to take advantage of connection pooling for some time now, allowing them to reuse connections to the database. Rather than setting up a new TCP connection on each request, a new connection is set up only when one is not available in the connection pool. When the connection is closed, it is returned to the pool where it remains connected to the database, as opposed to completely tearing down that TCP connection.

Of course you need to watch out for leaking connections. Always close your connections when you're finished with them. I repeat: no matter what anyone says about garbage collection within the Microsoft® .NET Framework, always call Close or Dispose explicitly on your connection when you are finished with it. Do not trust the common language runtime (CLR) to clean up and close your connection for you at a predetermined time. The CLR will eventually destroy the class and force the connection closed, but you have no guarantee when the garbage collection on the object will actually happen.

To use connection pooling optimally, there are a couple of rules to live by. First, open the connection, do the work, and then close the connection. It's okay to open and close the connection multiple times on each request if you have to (optimally you apply Tip 1) rather than keeping the connection open and passing it around through different methods. Second, use the same connection string (and the same thread identity if you're using integrated authentication). If you don't use the same connection string, for example customizing the connection string based on the logged-in user, you won't get the same optimization value provided by connection pooling. And if you use integrated authentication while impersonating a large set of users, your pooling will also be much less effective. The .NET CLR data performance counters can be very useful when attempting to track down any performance issues that are related to connection pooling.

Whenever your application is connecting to a resource, such as a database, running in another process, you should optimize by focusing on the time spent connecting to the resource, the time spent sending or retrieving data, and the number of round-trips. Optimizing any kind of process hop in your application is the first place to start to achieve better performance.

The application tier contains the logic that connects to your data layer and transforms data into meaningful class instances and business processes. For example, in Community Server, this is where you populate a Forums or Threads collection, and apply business rules such as permissions; most importantly it is where the Caching logic is performed.


Tip 4—ASP.NET Cache API

One of the very first things you should do before writing a line of application code is architect the application tier to maximize and exploit the ASP.NET Cache feature.

If your components are running within an ASP.NET application, you simply need to include a reference to System.Web.dll in your application project. When you need access to the Cache, use the HttpRuntime.Cache property (the same object is also accessible through Page.Cache and HttpContext.Cache).

There are several rules for caching data. First, if data can be used more than once it's a good candidate for caching. Second, if data is general rather than specific to a given request or user, it's a great candidate for the cache. If the data is user- or request-specific, but is long lived, it can still be cached, but may not be used as frequently. Third, an often overlooked rule is that sometimes you can cache too much. Generally on an x86 machine, you want to run a process with no higher than 800MB of private bytes in order to reduce the chance of an out-of-memory error. Therefore, caching should be bounded. In other words, you may be able to reuse a result of a computation, but if that computation takes 10 parameters, you might attempt to cache on 10 permutations, which will likely get you into trouble. One of the most common support calls for ASP.NET is out-of-memory errors caused by overcaching, especially of large datasets.


Figure 3 ASP.NET Cache

There are a several great features of the Cache that you need to know. The first is that the Cache implements a least-recently-used algorithm, allowing ASP.NET to force a Cache purge—automatically removing unused items from the Cache—if memory is running low. Secondly, the Cache supports expiration dependencies that can force invalidation. These include time, key, and file. Time is often used, but with ASP.NET 2.0 a new and more powerful invalidation type is being introduced: database cache invalidation. This refers to the automatic removal of entries in the cache when data in the database changes. For more information on database cache invalidation, see Dino Esposito's Cutting Edge column in the July 2004 issue of MSDN®Magazine. For a look at the architecture of the cache, see Figure 3.


Tip 5—Per-Request Caching

Earlier in the article, I mentioned that small improvements to frequently traversed code paths can lead to big, overall performance gains. One of my absolute favorites of these is something I've termed per-request caching.

Whereas the Cache API is designed to cache data for a long period or until some condition is met, per-request caching simply means caching the data for the duration of the request. A particular code path is accessed frequently on each request but the data only needs to be fetched, applied, modified, or updated once. This sounds fairly theoretical, so let's consider a concrete example.

In the Forums application of Community Server, each server control used on a page requires personalization data to determine which skin to use, the style sheet to use, as well as other personalization data. Some of this data can be cached for a long period of time, but some data, such as the skin to use for the controls, is fetched once on each request and reused multiple times during the execution of the request.

To accomplish per-request caching, use the ASP.NET HttpContext. An instance of HttpContext is created with every request and is accessible anywhere during that request from the HttpContext.Current property. The HttpContext class has a special Items collection property; objects and data added to this Items collection are cached only for the duration of the request. Just as you can use the Cache to store frequently accessed data, you can use HttpContext.Items to store data that you'll use only on a per-request basis. The logic behind this is simple: data is added to the HttpContext.Items collection when it doesn't exist, and on subsequent lookups the data found in HttpContext.Items is simply returned.


Tip 6—Background Processing

The path through your code should be as fast as possible, right? There may be times when you find yourself performing expensive tasks on each request or once every n requests. Sending out e-mails or parsing and validation of incoming data are just a few examples.

When tearing apart ASP.NET Forums 1.0 and rebuilding what became Community Server, we found that the code path for adding a new post was pretty slow. Each time a post was added, the application first needed to ensure that there were no duplicate posts, then it had to parse the post using a "badword" filter, parse the post for emoticons, tokenize and index the post, add the post to the moderation queue when required, validate attachments, and finally, once posted, send e-mail notifications out to any subscribers. Clearly, that's a lot of work.

It turns out that most of the time was spent in the indexing logic and sending e-mails. Indexing a post was a time-consuming operation, and it turned out that the built-in System.Web.Mail functionality would connect to an SMTP server and send the e-mails serially. As the number of subscribers to a particular post or topic area increased, it would take longer and longer to perform the AddPost function.

Indexing e-mail didn't need to happen on each request. Ideally, we wanted to batch this work together and index 25 posts at a time or send all the e-mails every five minutes. We decided to use the same code I had used to prototype database cache invalidation for what eventually got baked into Visual Studio® 2005.

The Timer class, found in the System.Threading namespace, is a wonderfully useful, but less well-known class in the .NET Framework, at least for Web developers. Once created, the Timer will invoke the specified callback on a thread from the ThreadPool at a configurable interval. This means you can set up code to execute without an incoming request to your ASP.NET application, an ideal situation for background processing. You can do work such as indexing or sending e-mail in this background process too.

There are a couple of problems with this technique, though. If your application domain unloads, the timer instance will stop firing its events. In addition, since the CLR has a hard gate on the number of threads per process, you can get into a situation on a heavily loaded server where timers may not have threads to complete on and can be somewhat delayed. ASP.NET tries to minimize the chances of this happening by reserving a certain number of free threads in the process and only using a portion of the total threads for request processing. However, if you have lots of asynchronous work, this can be an issue.

There is not enough room to go into the code here, but you can download a digestible sample at www.rob-howard.net. Just grab the slides and demos from the Blackbelt TechEd 2004 presentation.


Tip 7—Page Output Caching and Proxy Servers

ASP.NET is your presentation layer (or should be); it consists of pages, user controls, server controls (HttpHandlers and HttpModules), and the content that they generate. If you have an ASP.NET page that generates output, whether HTML, XML, images, or any other data, and you run this code on each request and it generates the same output, you have a great candidate for page output caching.

By simply adding this line to the top of your page

<%@ Page OutputCache VaryByParams="none" Duration="60" %>

you can effectively generate the output for this page once and reuse it multiple times for up to 60 seconds, at which point the page will re-execute and the output will once be again added to the ASP.NET Cache. This behavior can also be accomplished using some lower-level programmatic APIs, too. There are several configurable settings for output caching, such as the VaryByParams attribute just described. VaryByParams just happens to be required, but allows you to specify the HTTP GET or HTTP POST parameters to vary the cache entries. For example, default.aspx?Report=1 or default.aspx?Report=2 could be output-cached by simply setting VaryByParam="Report". Additional parameters can be named by specifying a semicolon-separated list.

Many people don't realize that when the Output Cache is used, the ASP.NET page also generates a set of HTTP headers that downstream caching servers, such as those used by the Microsoft Internet Security and Acceleration Server or by Akamai. When HTTP Cache headers are set, the documents can be cached on these network resources, and client requests can be satisfied without having to go back to the origin server.

Using page output caching, then, does not make your application more efficient, but it can potentially reduce the load on your server as downstream caching technology caches documents. Of course, this can only be anonymous content; once it's downstream, you won't see the requests anymore and can't perform authentication to prevent access to it.


Tip 8—Run IIS 6.0 (If Only for Kernel Caching)

If you're not running IIS 6.0 (Windows Server 2003), you're missing out on some great performance enhancements in the Microsoft Web server. In Tip 7, I talked about output caching. In IIS 5.0, a request comes through IIS and then to ASP.NET. When caching is involved, an HttpModule in ASP.NET receives the request, and returns the contents from the Cache.

If you're using IIS 6.0, there is a nice little feature called kernel caching that doesn't require any code changes to ASP.NET. When a request is output-cached by ASP.NET, the IIS kernel cache receives a copy of the cached data. When a request comes from the network driver, a kernel-level driver (no context switch to user mode) receives the request, and if cached, flushes the cached data to the response, and completes execution. This means that when you use kernel-mode caching with IIS and ASP.NET output caching, you'll see unbelievable performance results. At one point during the Visual Studio 2005 development of ASP.NET, I was the program manager responsible for ASP.NET performance. The developers did the magic, but I saw all the reports on a daily basis. The kernel mode caching results were always the most interesting. The common characteristic was network saturation by requests/responses and IIS running at about five percent CPU utilization. It was amazing! There are certainly other reasons for using IIS 6.0, but kernel mode caching is an obvious one.


Tip 9—Use Gzip Compression

While not necessarily a server performance tip (since you might see CPU utilization go up), using gzip compression can decrease the number of bytes sent by your server. This gives the perception of faster pages and also cuts down on bandwidth usage. Depending on the data sent, how well it can be compressed, and whether the client browsers support it (IIS will only send gzip compressed content to clients that support gzip compression, such as Internet Explorer 6.0 and Firefox), your server can serve more requests per second. In fact, just about any time you can decrease the amount of data returned, you will increase requests per second.

The good news is that gzip compression is built into IIS 6.0 and is much better than the gzip compression used in IIS 5.0. Unfortunately, when attempting to turn on gzip compression in IIS 6.0, you may not be able to locate the setting on the properties dialog in IIS. The IIS team built awesome gzip capabilities into the server, but neglected to include an administrative UI for enabling it. To enable gzip compression, you have to spelunk into the innards of the XML configuration settings of IIS 6.0 (which isn't for the faint of heart). By the way, the credit goes to Scott Forsyth of OrcsWeb who helped me figure this out for the www.asp.net severs hosted by OrcsWeb.

Rather than include the procedure in this article, just read the article by Brad Wilson at IIS6 Compression. There's also a Knowledge Base article on enabling compression for ASPX, available at Enable ASPX Compression in IIS. It should be noted, however, that dynamic compression and kernel caching are mutually exclusive on IIS 6.0 due to some implementation details.


Tip 10—Server Control View State

View state is a fancy name for ASP.NET storing some state data in a hidden input field inside the generated page. When the page is posted back to the server, the server can parse, validate, and apply this view state data back to the page's tree of controls. View state is a very powerful capability since it allows state to be persisted with the client and it requires no cookies or server memory to save this state. Many ASP.NET server controls use view state to persist settings made during interactions with elements on the page, for example, saving the current page that is being displayed when paging through data.

There are a number of drawbacks to the use of view state, however. First of all, it increases the total payload of the page both when served and when requested. There is also an additional overhead incurred when serializing or deserializing view state data that is posted back to the server. Lastly, view state increases the memory allocations on the server.

Several server controls, the most well known of which is the DataGrid, tend to make excessive use of view state, even in cases where it is not needed. The default behavior of the ViewState property is enabled, but if you don't need it, you can turn it off at the control or page level. Within a control, you simply set the EnableViewState property to false, or you can set it globally within the page using this setting:

<%@ Page EnableViewState="false" %>

If you are not doing postbacks in a page or are always regenerating the controls on a page on each request, you should disable view state at the page level.


DEVELOPING WEBSITES TO SUPPORT MULTIPLE LANGUAGES

 

ASP.Net contains namespaces like System.Globalization,culture info class,Resoursemanager,resoursefiles to support multi lingual applications.

We store the content in xml files,resourse files(also xml),database.

We need to create base resourse file and language specific resourse files.

When the application is compiled, the resource files are embedded into assemblies ,the default resource file is embedded in the main assembly (.dll file), language specific resource files are embedded into their own assemblies called satellite assemblies. Resouse file looks like key(name)/value pairs ,the name is the same for all resource files, and the value is a language specific translation of same content.

The resource manager will automatically load the right resource file based on the current thread's CurrentCulture value .The ResourceManager class automatically retrieves the content from the right XML file based on the thread's CurrentCulture value .

Three functions we mainly use

  1. The public method GetString which is used throughout the application to access the required resource

  2. The private method GetResource which gets a Hashtable either from the cache or by calling LoadResource

  3. The private method LoadResource which parses the XML file and stores it into the cache


Very useful TIP to over come no subject mails in Outlook...

Forgot to mention subject, while writing an official mail and feel bad later???????

Yes…. It's a concern for all…. A mail without a subject brings a bad impression on us.

To avoid this, Just follow the simple steps mentioned below and see the result.

Here below are the steps: -
1. Open your outlook
2. Press Alt+F11. This opens the Visual Basic editor and then Press Ctrl+R which in turn open Project-Project 1 (left side)

3. On the Left Pane, one can see "Microsoft Outlook Objects" or "Project1", expand this. Now one can see the "ThisOutLookSession".
4. Double click on "ThisOutLookSession". It will open up a code pane.
5. Copy and Paste the following code in the right pane. (Code Pane) and save it

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim strSubject As String
strSubject = Item.Subject
If Len(Trim(strSubject)) = 0 Then
Prompt$ = "Subject is Empty. Are you sure you want to send the Mail?"
If MsgBox(Prompt$, vbYesNo + vbQuestion + vbMsgBoxSetForeground, "Check for Subject") = vbNo Then
Cancel = True
End If
End If
End Sub

6. Now whenever u try to send a mail without subject, which will raise a pop-up to remind you

Make your documentation easy!

Standards for writing comments for your C# code and make your life easy!

 

http://msdn.microsoft.com/msdnmag/issues/02/06/XMLC/

Interface Vs Abstract Class

Feature

Interface

Abstract class

Multiple inheritance

A class may inherit several interfaces.

A class may inherit only one abstract class.

Default implementation

An interface cannot provide any code, just the signature.

An abstract class can provide complete, default code and/or just the details that have to be overridden.

Constants

Only Static final constants.

Both instance and static constants are possible.

Core VS Peripheral

Interfaces are used to define the peripheral abilities of a class. In other words both Human and Vehicle can inherit from a IMovable interface.

An abstract class defines the core identity of a class and there it is used for objects of the same type.

Homogeneity

If the various implementations only share method signatures then it is better to use Interface.

If the various implementations are of the same kind and use common behaviour or status then abstract class is better to use.

Speed

Requires more time to find the actual method in the corresponding classes.

Fast

Adding functionality

If we add a new method to an Interface then we have to track down all the implementations of the interface and define implementation for the new method.

If we add a new method to an abstract class then we have the option of providing default implementation and therefore all the existing code might work properly.

 

Access Modifiers

Access modifier

Access level granted

Elements you can declare with this access level

Declaration context within which you can use this modifier

Public

Unrestricted:

Any code that can see a public element can access it

Interfaces

Modules

Classes

Structures

Structure members

Procedures

Properties

Member variables

Constants

Enumerations

Events

External declarations

Delegates

Source file

Namespace

Interface

Module

Class

Structure

Protected

Derivational:

Code within the class that declares a protected element, or a class derived from it, can access the element

Interfaces

Classes

Structures

Procedures

Properties

Member variables

Constants

Enumerations

Events

External declarations

Delegates

Class

Friend

Assembly:

Code within the assembly that declares a friend element can access it

Interfaces

Modules

Classes

Structures

Structure members

Procedures

Properties

Member variables

Constants

Enumerations

Events

External declarations

Delegates

Source file

Namespace

Interface

Module

Class

Structure

Protected Friend

Union of Protected and Friend:

Code within the same class or the same assembly as a protected friend element, or within any class derived from the element's class, can access it

Interfaces

Classes

Structures

Procedures

Properties

Member variables

Constants

Enumerations

Events

External declarations

Delegates

Class

Private

Declaration context:

Code within the type that declares a private element, including code within contained types, can access the element

Interfaces

Classes

Structures

Structure members

Procedures

Properties

Member variables

Constants

Enumerations

Events

External declarations

Delegates

Module

Class

Structure

 

Ramping up on IIS 7.0 : Webcasts

October is full of learning opportunities around IIS 7.0. Throughout the entire month we’ll be producing webcasts covering IIS 7.0 in its entirety starting with what’s new to troubleshooting and diagnostics. This is a great way to get ramped up and ready to deploy IIS 7.0

 

·         What’s New in Microsoft Internet Information Services 7.0 for IT Professionals

Tuesday, October 02, 2007 11:30 AM Pacific Time (US & Canada)

·         Microsoft Internet Information Services 7.0 Diagnostics & Troubleshooting

Thursday, October 04, 2007 9:30 AM Pacific Time (US & Canada)

·         Securing and Tuning Microsoft Internet Information Services 7.0

Tuesday, October 09, 2007 11:30 AM Pacific Time (US & Canada)

·         Deploying and Managing Web Farms

Thursday, October 11, 2007 9:30 AM Pacific Time (US & Canada)

·         Secure, Simplified Web Publishing using Microsoft Internet Information Services 7.0

Tuesday, October 16, 2007 11:30 AM Pacific Time (US & Canada)

·         Securely Delegating Remote Web Site Administration With Internet Information Services 7.0

Thursday, October 18, 2007 9:30 AM Pacific Time (US & Canada)

·         Windows SharePoint Services and Windows Server 2008

Tuesday, October 23, 2007 11:30 AM Pacific Time (US & Canada)

·         Automating Microsoft Internet Information Services 7.0

Thursday, October 25, 2007 9:30 AM Pacific Time (US & Canada)

221 Microsoft Word Shortcuts (helpfull stuff)

 

1
Ctrl + Shift + A
AllCaps
Makes the selection all capitals (toggle)

2
Alt + Ctrl + 1
ApplyHeading1
Applies Heading 1 style to the selected text

3
Alt + Ctrl + 2
ApplyHeading2
Applies Heading 2 style to the selected text

4
Alt + Ctrl + 3
ApplyHeading3
Applies Heading 3 style to the selected text

5
Ctrl + Shift + L
ApplyListBullet
Applies List Bullet style to the selected text

6
Alt + F10
AppMaximize
Enlarges the application window to full size

7
Alt + F5
AppRestore
Restores the application window to normal size

8
Ctrl+B
Bold
Makes the selection bold (toggle)

9
Ctrl + PgDn
BrowseNext
Jump to the next browse object

10
Ctrl + PgUp
BrowsePrev
Jump to the previous browse object

11
Alt + Ctrl + Home
BrowseSel
Select the next/prev browse object

12
Esc
Cancel
Terminates an action

13
Ctrl+E
CenterPara
Centers the paragraph between the indents

14
Shift+F3
ChangeCase
Changes the case of the letters in the selection

15
Left arrow
CharLeft
Moves the insertion point to the left one character

16
Shift + Left arrow
CharLeftExtend
Extends the selection to the left one character

17
Rt arrow
CharRight
Moves the insertion point to the right one character

18
Shift + Rt arrow
CharRightExtend
Extends the selection to the right one character

19
Alt + Shift + C
ClosePane
Closes the active window pane (if you are in Normal View and have, for
example, the Footnote pane open)

20
Alt+Drag (or press Ctrl + Shift + F8 and drag, but Alt + Drag is far
easier!)
ColumnSelect
Selects a columnar block of text

21
Ctrl +Shift+C
CopyFormat
Copies the formatting of the selection

22
Shift + F2
CopyText
Makes a copy of the selection without using the clipboard (press Return to
paste)

23
Alt + F3
CreateAutoText
Adds an AutoText entry to the active template

24
Ctrl+ Backspace
DeleteBackWord
Deletes the previous word without putting it on the Clipboard

25
Ctrl + Del
DeleteWord
Deletes the next word without putting it on the Clipboard

26
Ctrl+W, Ctrl+F4
DocClose
Prompts to save the document and then closes the active window. (But
doesn't intercept the menu command)

27
Ctrl + F10
DocMaximize
Enlarges the active window to full size

28
Ctrl + F7
DocMove
Changes the position of the active window

29
Ctrl + F5
DocRestore
Restores the window to normal size

30
Ctrl + F8
DocSize
Changes the size of the active window

31
Alt + Ctrl + S
DocSplit
Splits the active window horizontally and then adjusts the split

32
Alt + Shift + F9
DoFieldClick
Executes the action associated with macrobutton fields

33
Ctrl + Shift + D
DoubleUnderline
Double underlines the selection (toggle)

34
Alt R, G
DrawGroup
Groups the selected drawing objects

35
Alt R, I
DrawSnapToGrid
Sets up a grid for aligning drawing objects

36
Alt R, U
DrawUngroup
Ungroups the selected group of drawing objects

37
Ctrl+Shift+F5 (Or: Alt I, K)
EditBookmark
Brings up the bookmark dialog

38
Del
EditClear
Performs a forward delete or removes the selection without putting it on
the Clipboard

39
Ctrl+C
EditCopy
Copies the selection and puts it on the Clipboard

40
Ctrl+X
EditCut
Cuts the selection and puts it on the Clipboard

41
Ctrl+F
EditFind
Finds the specified text or the specified formatting

42
F5, Ctrl+G
EditGoTo
Jumps to a specified place in the active document

43
Alt E, K
EditLinks
Allows links to be viewed, updated, opened, or removed

44
Ctrl+V
EditPaste
Inserts the Clipboard contents at the insertion point

45
Alt E, S
EditPasteSpecial
Inserts the Clipboard contents as a linked object, embedded object, or
other format

46
Alt + Shift + Backspc
EditRedo
Redoes the last action that was undone

47
F4
EditRedoOrRepeat
Repeats the last command, or redoes the last action that was undone
(unfortunately, doesn't work for as many commands in Word 2000 as in Word
97 and below, but this is still one of Word's most useful shortcuts, if not
the most useful)

48
Ctrl+H
EditReplace
Finds the specified text or the specified formatting and replaces it

49
Ctrl+A
EditSelectAll
Selects the entire document

50
Ctrl+Z
EditUndo
Reverses the last action

51
Alt + PageDn (to select to end of column, use Alt + Shift + PgDn)
EndOfColumn
Moves to the last cell in the current table column

52
Ctrl+Shift+End
EndOfDocExtend
Extends the selection to the end of the last line of the document

53
Ctrl+End
EndOfDocument
Moves the insertion point to the end of the last line of the document

54
End
EndOfLine
Moves the insertion point to the end of the current line

55
Shift+End
EndOfLineExtend
Extends the selection to the end of the current line

56
Alt+End
EndOfRow
Moves to the last cell in the current row

57
Alt + Ctrl + PgDn
EndOfWindow
Moves the insertion point to the end of the last visible line on the screen


58
Shift + Alt + Ctrl + PgDn
EndOfWindowExtend
Extends the selection to the end of the last visible line on the screen

59
F8 (press Esc to turn off)
ExtendSelection
Turns on extend selection mode and then expands the selection with the
direction keys

60
Alt + F4 (<9>)
FileCloseOrExit
Closes the current document, or if no documents are open, quits Word.
Horrible command, as it makes it a long winded business to quit Word. But
there's a simple solution - assign Alt+F4 to FileExit instead.

61
Alt + F4 (Word 97)
FileExit
Quits Microsoft Word and prompts to save the documents (does intercept the
menu item, but not the keyboard shortcut, or the x button. An AutoExit
macro is usually a better way of intercepting this).

62
NOT Ctrl+N!!
FileNew
Creates a new document or template (brings up the dialog). Note that: Word
pretends that Ctrl+N is assigned to FileNew but it isn't, it's assigned to
FileNewDefault You can fix this in Word 2000 by assigning Ctrl+N to the
FileNewDialog command. In Word 97 the only way to fix it is to create a
macro called FileNew (to do this, press Alt + F8, type "FileNew" without
the quotes and Click "Create". The macro will automatically contain the
code needed to make it work).

63
Ctrl+N
FileNewDefault
Creates a new document based on the Normal template.

64
Ctrl+O
FileOpen
Opens an existing document or template

65
Alt F, U
FilePageSetup
Changes the page setup of the selected sections

66
Ctrl + P
FilePrint
Prints the active document (brings up the dialog)

67
Ctrl+F2
FilePrintPreview
Displays full pages as they will be printed

68
Alt F, I
FileProperties
Shows the properties of the active document

69
Ctrl+S
FileSave
FileSave

70
Alt F, A (or F12)
FileSaveAs
Saves a copy of the document in a separate file (brings up the dialog)

71
Ctrl+Shift+F
Font
Activates the Fonts listbox on the formatting toolbar

72
Ctrl+Shift+P
FontSizeSelect
Activates the Font Size drop-down on the formatting toolbar

73
Alt + Ctrl + K
FormatAutoFormat
Automatically formats a document (or sometimes, automatically screws it up)


74
Alt O, B
FormatBordersAndShading
Changes the borders and shading of the selected paragraphs, table cells,
and pictures

75
Alt O, E
FormatChangeCase
Changes the case of the letters in the selection

76
Alt O, C
FormatColumns
Changes the column format of the selected sections (brings up the dialog)

77
Alt O, D
FormatDropCap
Formats the first character of current paragraph as a dropped capital (must
select it first)

78
Ctrl+D
FormatFont
Brings up the Format + Font dialog

79
Alt + Shift + R
FormatHeaderFooterLink
Links the current header/footer to the previous section (but does not
intercept the button on the Header Footer toolbar)

80
Alt O, P
FormatParagraph
Brings up the Format Paragraph dialog

81
Alt O, S
FormatStyle
Applies, creates, or modifies styles

82
Alt O, T
FormatTabs
Brings up the Format Tabs dialog

83
Shift + F5
GoBack
Returns to the previous insertion point (goes back to up to 3 points, then
returns to where you started; this is one of the most useful shortcuts of
them all. Also useful when opening a document, if you want to g straight to
where you were last editing it)

84
Ctrl + >
GrowFont
Increases the font size of the selection

85
Ctrl + ]
GrowFontOnePoint
Increases the font size of the selection by one point

86
Ctrl + T (or drag the ruler)
HangingIndent
Increases the hanging indent

87
F1
Help
Microsoft Word Help

88
Shift + F1
HelpTool
Lets you get help on a command or screen region or examine text properties

89
Ctrl + Shift + H
Hidden
Makes the selection hidden text (toggle)

90
Click on it
HyperlinkOpen
Connect to a hyperlink's address

91
Ctrl + M (or drag the ruler)
Indent
Moves the left indent to the next tab stop

92
Alt + Ctrl + M (or Alt I, M)
InsertAnnotation
Inserts a comment

93
F3
InsertAutoText
Replaces the name of the AutoText entry with its contents

94
Alt I, B
InsertBreak
Ends a page, column, or section at the insertion point

95
Alt I, C
InsertCaption
Inserts a caption above or below a selected object

96
Ctrl + Shift + Return
InsertColumnBreak
Inserts a column break at the insertion point

97
Alt + Shift + D
InsertDateField
Inserts a date field

98
Alt + Ctrl + D
InsertEndnoteNow
Inserts an endnote reference at the insertion point without displaying the
dialog

99
Alt I, F
InsertField
Inserts a field in the active document

100
Ctrl+F9
InsertFieldChars
Inserts an empty field with the enclosing field characters

101
Alt I, L
InsertFile
Inserts the text of another file into the active document

102
Alt I, N
InsertFootnote
Inserts a footnote or endnote reference at the insertion point

103
Alt + Ctrl + F
InsertFootnoteNow
Inserts a footnote reference at the insertion point without displaying the
dialog

104
Ctrl + K
InsertHyperlink
Insert Hyperlink

105
Alt I, D
InsertIndexAndTables
Inserts an index or a table of contents, figures, or authorities into the
document

106
Alt + Ctrl + L
InsertListNumField
Inserts a ListNum Field

107
Alt + Shift + F
InsertMergeField
Brings up a dialog to insert a mail merge field at the insertion point. (It
does not intercept the button on the Mail merge. toolbar)

108
Ctrl + Return
InsertPageBreak
Inserts a page break at the insertion point

109
Alt + Shift + P
InsertPageField
Inserts a page number field

110
Ctrl + Shift + F3
InsertSpike
Empties the spike AutoText entry and inserts all of its contents into the
document

111
Alt + Shift + T
InsertTimeField
Inserts a time field

112
Ctrl + I
Italic
Makes the selection italic (toggle)

113
Ctrl + J
JustifyPara
Aligns the paragraph at both the left and the right indent

114
Ctrl + L
LeftPara
Aligns the paragraph at the left indent

115
Down arrow
LineDown
Moves the insertion point down one line

116
Shift + down arrow
LineDownExtend
Extends the selection down one line

117
Up arrow
LineUp
Moves the insertion point up one line

118
Shift + up arrow
LineUpExtend
Extends the selection up one line

119
Ctrl + F11
LockFields
Locks the selected fields to prevent updating

120
Alt + Shift + K
MailMergeCheck
Checks for errors in a mail merge

121
Alt+Shift+E
MailMergeEditDataSource
Lets you edit a mail merge data source

122
Alt + Shift + N
MailMergeToDoc
Collects the results of the mail merge in a document

123
Alt Shift + M
MailMergeToPrinter
Sends the results of the mail merge to the printer

124
Alt + Shift + I
MarkCitation
Marks the text you want to include in the table of authorities

125
Alt + Shift + X
MarkIndexEntry
Marks the text you want to include in the index

126
Alt + Shift + O
MarkTableOfContentsEntry
Inserts a TC field (but it is far better to use Heading Styles to generate
your Table of Contents instead)

127
Alt or F10
MenuMode
Makes the menu bar active

128
Alt + Shift + F11
MicrosoftScriptEditor
Starts or switches to Microsoft Development Environment application,
allowing you to view the HTML/XML source code that would be behind the
document if it were in ..htm format (or that is behind it if it already is
in .htm format).

129
Alt + Ctrl + F1
MicrosoftSystemInfo
Execute the Microsoft System Info application

130
F2
MoveText
Moves the selection to a specified location without using the clipboard
(press Return to execute the more)

131
Tab
NextCell
Moves to the next table cell

132
F11
NextField
Moves to the next field

133
Alt + F7
NextMisspelling
Find next spelling error

134
Alt + down arrow
NextObject
Moves to the next object on the page

135
Ctrl + F6
NextWindow
Switches to the next document window, equivalent to selecting a document
from the Window menu.

136
Ctrl+Shift+N
NormalStyle
Applies the Normal style

137
Ctrl + 0
OpenOrCloseUpPara
Sets or removes extra spacing above the selected paragraph

138
F6
OtherPane
Switches to another window pane in Normal View (for instance, if you have
if you have a Footnotes pane open in Normal view and want to switch to the
main document and back without closing the pane).

139
Alt + _
OutlineCollapse
Collapses an Outline in Outline View by one level

140
Alt+Shift+rt arrow
OutlineDemote
Demotes the selected paragraphs one heading level

141
Alt + +
OutlineExpand
Expands an Outline in Outline View by one level

142
Alt+Shift+down arrow
OutlineMoveDown
Moves the selection below the next item in the outline

143
Alt+Shift+up arrow
OutlineMoveUp
Moves the selection above the previous item in the outline

144
Alt+Shift+left arrow
OutlinePromote
Promotes the selected paragraphs one heading level

145
Alt + Shift + L
OutlineShowFirstLine
Toggles between showing the first line of each paragraph only or showing
all of the body text in the outline

146
Ins
Overtype
Toggles the typing mode between replacing and inserting

147
PgDn
PageDown
Moves the insertion point and document display to the next screen of text

148
Shift+ PgDn
PageDownExtend
Extends the selection and changes the document display to the next screen
of text

149
PgUp
PageUp
Moves the insertion point and document display to the previous screen of
text

150
Shift + PgUp
PageUpExtend
Extends the selection and changes the document display to the previous
screen of text

151
Ctrl + down arrow
ParaDown
Moves the insertion point to the beginning of the next paragraph

152
Shift + Ctrl + down arrow
ParaDownExtend
Extends the selection to the beginning of the next paragraph

153
Ctrl + up arrow
ParaUp
Moves the insertion point to the beginning of the previous paragraph

154
Shift + Ctrl + up arrow
ParaUpExtend
Extends the selection to the beginning of the previous paragraph

155
Ctrl+Shift+V
PasteFormat
Applies the previously copied formatting to selection

156
Shift + Tab
PrevCell
Moves to the previous table cell

157
Shift + F11
PrevField
Moves to the previous field

158
Alt + up arrow
PrevObject
Moves to the previous object on the page

159
Ctrl + Shift + F6
PrevWindow
Switches back to the previous document window

160
Sfift+F4
RepeatFind
Repeats Go To or Find to find the next occurrence

161
Ctrl+Spacebar
ResetChar
Makes the selection the default character format of the applied style

162
Ctrl+Q
ResetPara
Makes the selection the default paragraph format of the applied style

163
Ctrl +R
RightPara
Aligns the paragraph at the right indent

164
Ctrl + *
ShowAll
Shows/hides all nonprinting characters

165
Alt + Shift + A
ShowAllHeadings
Displays all of the heading levels and the body text in Outline View

166
Ctrl + <
ShrinkFont
Decreases the font size of the selection

167
Ctrl + [
ShrinkFontOnePoint
Decreases the font size of the selection by one point

168
Ctrl + Shift + K
SmallCaps
Makes the selection small capitals (toggle)

169
Ctrl + 1
SpacePara1
Sets the line spacing to single space

170
Ctrl + 5
SpacePara15
Sets the line spacing to one-and-one-half space

171
Ctrl + 2
SpacePara2
Sets the line spacing to double space

172
Ctrl + F3
Spike
Deletes the selection and adds it to the "Spike" AutoText entry (which
allows you to move text and graphics from nonadjacent locations)

173
Alt + PgUp
StartOfColumn
Moves to the first cell in the current column

174
Ctrl+Shift+Home
StartOfDocExtend
Extends the selection to the beginning of the first line of the document

175
Ctrl +Home
StartOfDocument
Moves the insertion point to the beginning of the first line of the
document

176
Home
StartOfLine
Moves the insertion point to the beginning of the current line

177
Shift+Home
StartOfLineExtend
Extends the selection to the beginning of the current line

178
Alt+Home
StartOfRow
Moves to the first cell in the current row

179
Alt+Ctrl+PgUp
StartOfWindow
Moves the insertion point to the beginning of the first visible line on the
screen

180
Shift+ Alt+Ctrl+PgUp
StartOfWindowExtend
Extends the selection to the beginning of the first visible line on the
screen

181
Strl + Shift + S
Style
Activates the Style drop-down on the Formatting toolbar

182
Ctrl + =
Subscript
Makes the selection subscript (toggle)

183
Ctrl + +
Superscript
Makes the selection superscript (toggle)

184
Ctrl + Shift + Q
SymbolFont
Applies the Symbol font to the selection

185
Alt A, F
TableAutoFormat
Applies a set of formatting to a table

186
Alt A, H
TableHeadings
Toggles table headings attribute on and off

187
Alt + click
(Alt + drag to select several)
TableSelectColumn
Selects the current column in a table

188
Click in left margin
TableSelectRow
Selects the current row in a table

189
Alt + double-click
TableSelectTable
Selects an entire table

190
Alt + Ctrl + U
TableUpdateAutoFormat
Updates the table formatting to match the applied Table Autoformat settings


191
Shift + F9 (Alt + F9 toggles all field codes on or off)
ToggleFieldDisplay
Shows the field codes or the results for the selection (toggle)

192
Alt T, C
ToolsCustomize
Allows you to customizes the Word user interface (menus, keyboard and
toolbars) and store the customizations in a template (defaults to
Normal.dot, so be careful!)

193
Alt + F8
ToolsMacro
Runs, creates, deletes, or revises a macro

194
F7
ToolsProofing
Checks the spelling and grammar in the active document

195
Ctr.l + Shift + E
ToolsRevisionMarksToggle
Toggles track changes for the active document

196
Shift + F7
ToolsThesaurus
Finds a synonym for the selected word

197
Ctrl+U
Underline
Formats the selection with a continuous underline (toggle)

198
Ctrl + Shift + T
(or drag the ruler)
UnHang
Decreases the hanging indent

199
Ctrl + Shift + M
(or drag the ruler)
UnIndent
Moves the left indent to the previous tab stop

200
Ctrl+Shift+F9
UnlinkFields
Permanently replaces the field codes with the results

201
Ctrl + Shift + F11
UnlockFields
Unlocks the selected fields for updating

202
F9
UpdateFields
Updates and displays the results of the selected fields

203
Ctrl + Shiift + F7
UpdateSource
Copies the modified text of a linked file back to its source file

204
Hover over comment
ViewAnnotations
Show or hide the comment pane

205
Dbl-click the endnote reference
ViewEndnoteArea
If in Normal View, opens a pane for viewing and editing the endnote
(toggle). If in Page/Print Layout View, switches from the body text to the
endnote or vice versa

206
At + F9
ViewFieldCodes
Shows the field codes or results for all fields (toggle)

207
Dbl-click the footnote reference
ViewFootnoteArea
If in Normal View, opens a pane for viewing and editing the footnote
(toggle). If in Page/Print Layout View, switches from the body text to the
footnote or vice versa.

208
Alt V, F
ViewFootnotes
If in Normal View, opens a pane for viewing and editing footnotes and
endnotes (toggle). If in Page/Print Layout View, switches from the body
text to the footnotes/endnotes or vice versa.

209
Alt V, H
ViewHeader
Displays header in page layout view

210
Alt V, N
(or Alt + Ctrl + N)
ViewNormal
Changes the editing view to normal view

211
Alt V, O
(or Alt + Ctrl + O)
ViewOutline
Displays a document's outline

212
Alt V, P
(or Alt + Ctrl + P)
ViewPage
Displays the page more-or-less as it will be printed, and allows editing
(In Word 2000 the menu item is called Print Layout, but fortunately the
command hasn't changed.

213
Alt + F11
ViewVBCode
Shows the VB editing environment (Tools + Macro + Visual Basic Editor)

214
Alt + left arrow
WebGoBack
Backward hyperlink (useful if you clicked on a page number hyperlink in the
table of contents and then want to return to the TOC)

215
Alt + rt arrow
WebGoForward
Forward hyperlink

216
Alt W, A
WindowArrangeAll
Arranges windows as non-overlapping tiles

217
Ctrl + left arrow
WordLeft
Moves the insertion point to the left one word

218
Shift + Ctrl + left arrow
WordLeftExtend
Extends the selection to the left one word

219
Ctrl + rt arrow
WordRight
Moves the insertion point to the right one word

220
Shift + Ctrl + rt arrow
WordRightExtend
Extends the selection to the right one word

221
Ctrl + Shift + W
WordUnderline
Underlines the words but not the spaces in the selection (toggle)

Dotnet-Interviews