<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7871346851699518925</id><updated>2012-01-03T03:46:10.117-08:00</updated><category term='SharePoint'/><category term='MOSS2007'/><category term='MOSS'/><category term='Windows SharePoint Services'/><category term='Dot Net'/><category term='Microsoft .NET'/><category term='WSS'/><category term='Default.aspx'/><category term='.NET'/><title type='text'>Learn Information Technology</title><subtitle type='html'>Free learning anything to everything in &lt;b&gt;&lt;i&gt;Information Technology.&lt;/i&gt;&lt;/b&gt;&lt;br&gt;&lt;br&gt;I read one Chinese proverb on internet that says, &lt;i&gt;&lt;b&gt;"It is better to light one candle than to curse the darkness."&lt;/b&gt;&lt;/i&gt; and it touched my heart. I step forward to light one candle by scattering the little bit of knowledge I gained in my career as an IT professional.
&lt;br&gt;&lt;br&gt;&lt;i&gt;Dedicated to my father for providing inspiration to learn and succeed in Life.&lt;/i&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>93</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-4726165532432067667</id><published>2009-06-24T11:58:00.000-07:00</published><updated>2009-06-24T11:59:56.051-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='WSS'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows SharePoint Services'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>WSS 3.0: Permission To Add Users to SharePoint Groups</title><content type='html'>&lt;p&gt;&lt;strong&gt;General information&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The Group Owner of a SharePoint group has permission to add / remove users from a group. &lt;/li&gt;&lt;li&gt;The Site Collection Administrator has permission to add / remove users from a group. &lt;/li&gt;&lt;li&gt;Only one person (or group) can be assigned as the Group Owner. &lt;/li&gt;&lt;li&gt;SharePoint Groups belong to the Site Collection. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Set an individual as the Group Owner&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Navigate to the Change Group Settings page. One way to do this is: &lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;Browse to any site within the site collection. &lt;/li&gt;&lt;li&gt;On the Quick Launch Click People and Groups. &lt;/li&gt;&lt;li&gt;On the Quick Launch Click on the group you wish to modify. &lt;/li&gt;&lt;li&gt;Click Settings – Group Settings &lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;Change the Group Owner to the desired individual. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Set a group as the Group Owner&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Create a SharePoint Group for all individuals that will have the Group Owner permissions (such as MySite Group Owner). &lt;/li&gt;&lt;li&gt;Add individuals to this group. &lt;/li&gt;&lt;li&gt;Follow the steps for setting an individual, but enter the SharePoint group name. HINT: You can use the address lookup to help find (and insure correct spelling) the desired group.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-4726165532432067667?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/4726165532432067667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2009/06/wss-30-permission-to-add-users-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/4726165532432067667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/4726165532432067667'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2009/06/wss-30-permission-to-add-users-to.html' title='WSS 3.0: Permission To Add Users to SharePoint Groups'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-7957751250032417362</id><published>2009-06-17T21:48:00.000-07:00</published><updated>2009-06-20T12:30:09.073-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='WSS'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Default.aspx'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows SharePoint Services'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>MOSS 2007 - How To: Edit default.aspx for a Site Collection</title><content type='html'>Imagine that you don't have Frontpage or SharePoint Designer installed in an environment and you have to make changes to web pages that are stored in the content database. This is a very natural scenario in a production environment but we normally don't make changes directly in production. However if this scenario arises there is a really neat and quick way to do this by using Internet Explorer and Notepad (a very handy tool...reminds me of 10 years back my initial days Java coding using Textpad) . So, here goes simple steps to achieve this: &lt;div&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Open the site using web folder in Internet Explorer (File-&gt;Open...) and check "Open as Web Folder" checkbox.&lt;/li&gt;&lt;BR&gt;&lt;a href="http://4.bp.blogspot.com/_hae4l4jukGI/SjnSdEw4bYI/AAAAAAAAAeU/Q0k789mxuN0/s1600-h/OpenWebFolder.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5348537429415980418" style="WIDTH: 400px; CURSOR: hand; HEIGHT: 241px" alt="" src="http://4.bp.blogspot.com/_hae4l4jukGI/SjnSdEw4bYI/AAAAAAAAAeU/Q0k789mxuN0/s400/OpenWebFolder.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Download the required on the local filesystem.&lt;/li&gt;&lt;BR&gt;&lt;br /&gt;&lt;li&gt;Make the required changes and upload it back to server.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-7957751250032417362?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/7957751250032417362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2009/06/moss-2007-how-to-edit-defaultaspx-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/7957751250032417362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/7957751250032417362'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2009/06/moss-2007-how-to-edit-defaultaspx-for.html' title='MOSS 2007 - How To: Edit default.aspx for a Site Collection'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_hae4l4jukGI/SjnSdEw4bYI/AAAAAAAAAeU/Q0k789mxuN0/s72-c/OpenWebFolder.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-5768970072276169864</id><published>2009-06-16T14:32:00.000-07:00</published><updated>2009-06-20T17:31:42.512-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='WSS'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows SharePoint Services'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>Deciding Between Custom Site Template and Site Definition</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_hae4l4jukGI/SjgQUEQ0J8I/AAAAAAAAAeE/Miq0MqrJQEQ/s1600-h/Custom+Site.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5348042494430160834" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 378px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_hae4l4jukGI/SjgQUEQ0J8I/AAAAAAAAAeE/Miq0MqrJQEQ/s400/Custom+Site.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-5768970072276169864?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/5768970072276169864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2009/06/deciding-between-custom-site-template.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/5768970072276169864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/5768970072276169864'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2009/06/deciding-between-custom-site-template.html' title='Deciding Between Custom Site Template and Site Definition'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_hae4l4jukGI/SjgQUEQ0J8I/AAAAAAAAAeE/Miq0MqrJQEQ/s72-c/Custom+Site.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-4147034298266089308</id><published>2009-06-02T15:01:00.000-07:00</published><updated>2009-06-20T17:33:28.166-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Dot Net'/><title type='text'>An Overview of Microsoft .NET Framework 3.0</title><content type='html'>&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;I have been come across many people thinking that WinFx is not related to .NET Framework. The funniest answer I have gotten is that it is a fix related to Windows PC protection similar to WinFix. It is good decision from Microsoft for changing its name from .NET Framework 3.0. This article gives a clear explanation about the additional technologies/features that are included in .NET Framework 3.0, namely Windows Presentation Foundation (WPF), Windows Workflow Foundation (WF), Windows Communication Foundation (WCF) and Windows Card Space (WCS).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What Happens when we install Framework 3.0&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;Does it install new version of the Framework? No. It is just an upgraded Framework from 2.0 that comes along with WPF (Avalon), WCF (Indigo), WCS (InfoCard) and WF. It is a Framework that sits on the top of the 2.0 Framework along with Common Language Runtime (CLR) and BCL (Base Class Library). Framework 3.0 comes with CLR version 2.0. We are still using version 2.0 compilers for the Framework 3.0. So if we have Framework 2.0 installed in our system, it will install managed API's that are required for workflow, presentation, communication, etc. If Framework 2.0 is not installed, it will install Framework 2.0 and then install all other upgraded required components. The serious question that comes to mind is "why the version number is changed if we are still using 2.0 compliers." The reason for choosing the new version number is Avalon, Indigo, Workflow, and Info card are all major new pieces of platform technology.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Windows Presentation Foundation (WPF)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This is formerly known as the code named "Avalon," a graphical feature in Framework 3.0 that makes easy to build next generation web applications with the help of rich User Interface (UI), documents and media. This is used to display more advanced graphics that helps a developer to improve his/her designing skills using programming skills, which would be quite challenging. We developers can produce outstanding user interfaces using multimedia and document services in WPF. We can also make use of vector graphics, user interface, 2D and 3D drawing, fixed and adaptive documents, typography, raster graphics, animation, data binding, audio, video and develop graphic/animation through declarative programming. WPF allows developers as well as designers to collaborate and develop awesome visual user interfaces. Here are the two different developer environments that are used to make developer and designer work together.&lt;br /&gt;1. Microsoft Visual Studio&lt;br /&gt;2. Microsoft Expression Interactive Designer&lt;br /&gt;&lt;br /&gt;The language that is used to develop application user interfaces in WPF is called XAML (Extensible Application Markup Language). XAML is based on XML (Extensible Markup Language). Separation of model and view is possible in XAML by placing design related information in FileName.xaml file and business logic is placed in FileName.xaml.cs file.&lt;br /&gt;&lt;br /&gt;Core Components&lt;br /&gt;&lt;br /&gt;The major components of WPF are:&lt;br /&gt;1. Presentation Framework&lt;br /&gt;2. Presentation Core&lt;br /&gt;3. MILCore (Media Integration Layer)&lt;br /&gt;4. DirectX&lt;br /&gt;&lt;br /&gt;Presentation Framework and Presentation core are written in managed code. The DirectX engine is responsible for displaying. MILCore is written in unmanaged code in order to enable tight integration with DirectX. MILCore (MILCore.dll) also consists of a composition engine which is responsible for performance reasons.&lt;br /&gt;&lt;br /&gt;Microsoft Silverlight&lt;br /&gt;&lt;br /&gt;WPF comes with its subset Microsoft Silverlight formerly named as Windows Presentation Foundation Everywhere (WPF/E) and is a subset of WPF which depends on XAML and JavaScript. Silverlight is a cross-browser, cross-platform plug-in for delivering the next generation of .NET based media experiences for the Web and mobile applications. Silverlight offers a flexible programming model that supports AJAX, VB, C#, Python, and Ruby, and integrates with existing Web applications. It is lightweight, just 1 MB download and pretty fast. We can play many videos simultaneously without stuttering or dropping frames. No doubt WPF is next-generation graphics API. More explanation on Silverlight is out of the scope of this article. For more details on Silverlight, visit &lt;a href="http://www.microsoft.com/silverlight"&gt;http://www.microsoft.com/silverlight&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Windows Workflow Foundation (WF)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;"Workflow" is a declarative way of implementing result oriented business process in software. WWF is a programming model that helps in defining, building, executing, debugging and managing work flow related applications that are in sync with business processes. It consists of a Microsoft NET Framework version 3.0 namespace, an in-process workflow engine, and designers for Visual Studio 2005.&lt;br /&gt;&lt;br /&gt;We can build as many work flow styles as we need based on the requirement.&lt;br /&gt;&lt;br /&gt;Graphical designer and debugger are provided to implement work flow related software. We can make use of imperative code along with declarative modeling. It enables us to build workflow software that is more flexible and transparent.&lt;br /&gt;&lt;br /&gt;Core Components&lt;br /&gt;WF core components include:&lt;br /&gt;1. Base Activity Library: This provides functionality for control flow, conditions, event handling, state management and invoking web service. One can build his or her own custom domain specific activities using the base activity.&lt;br /&gt;&lt;br /&gt;2. Runtime Engine: This is responsible for Workflow execution and state management.&lt;br /&gt;&lt;br /&gt;3. Runtime Services: This provides hosting flexibility and communication.&lt;br /&gt;&lt;br /&gt;4. Visual Designer: It is responsible for graphical and code-based construction.&lt;br /&gt;&lt;br /&gt;Once a workflow model is compiled, it can be executed inside any windows process including console applications, WinForms applications, Windows Services, ASP.NET Web sites, and Web services. Extensible Object Modeling Language [XOML] based on XAML is the language that is used for declaring the structure of workflow, business logic for the workflow.&lt;br /&gt;&lt;br /&gt;In order to create workflow, activities using WWF are:&lt;br /&gt;&lt;br /&gt;1. VS 2005 (comes by installing Visual Studio 2005 add-ins to design and program workflow)&lt;br /&gt;&lt;br /&gt;2. SharePoint designer that permits building workflows for Share Point 2007&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Windows Communication Foundation (WCF)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;WCF is formerly known as the code “Indigo” is the first Unified Programming Model (UPM) for Service Oriented Applications (SOA). It is the unification of the technologies used to deliver distributed systems such as Enterprise Services, Messaging, .NET remoting, ASMX and WSE that run on the Microsoft platform. In other words, Windows Communication Foundation is an advanced technology to provide web services/remoting functionality with better features and reduces the time to develop a distributed system. It makes development interoperable with Non-MS Platform and integrates with existing products. We can build amazing services that would add more weight using WCF. WCF uses SOAP messages for communication between two processes. WCF has a set of API's for creating systems that send messages between services and clients. The same API's are used to create applications that communicate with other applications on the same system or on a system that resides in another company.&lt;br /&gt;&lt;br /&gt;Core components&lt;br /&gt;&lt;br /&gt;Here is a list of core components in WCF.&lt;br /&gt;&lt;br /&gt;1. End Point: A WCF service is exposed to the world as a collection of endpoints. It is the point where messages are sent or received. It consists of Address, Binding and Contract.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Address: End point consists of location where message can be sent/received. This is equivalent to a service address in WSDL. An example of Address components are URI, Identity &amp;amp; Headers.&lt;/li&gt;&lt;li&gt;Binding: This is a communication mechanism that describes how messages can be sent. This represents configuration. It is made up of various binding elements like Transport protocol, such as TCP, HTTP, MSMQ, named pipes, Encoding such as text, Message Transmission Optimization Mechanism such as MTOM, binary, and security like asymmetric, symmetric and transport.&lt;/li&gt;&lt;li&gt;Contract: It is a definition for a set of messages that can be sent or received (or both) at the address that describes what message can be sent. It describes the WCF contracts and their operations like One way, request/reply, duplex, and queuing.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;2. Channel: A channel is a concrete implementation of a binding element. The channel is the implementation associated with that configuration.&lt;/p&gt;&lt;p&gt;3. Client: A program that exchanges messages with one or more endpoints using channels.&lt;/p&gt;&lt;p&gt;4. Service: A service is a construct that exposes one or more endpoints, with each endpoint exposing one or more service operations.&lt;/p&gt;&lt;p&gt;5. Behavior: A behavior is a component that controls various run-time aspects of a service, an endpoint, a particular operation, or a client.&lt;/p&gt;&lt;p&gt;Facts: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;WCF has rich communication capabilities.&lt;/li&gt;&lt;li&gt;WCF is 25%—50% faster than ASP.NET Web Services and approximately 25% faster than .NET Remoting.&lt;/li&gt;&lt;li&gt;It is secured, Confidential in keeping messages.&lt;/li&gt;&lt;li&gt;Using WCF message transfer is reliable.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-4147034298266089308?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/4147034298266089308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2009/06/overview-of-microsoft-net-framework-30.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/4147034298266089308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/4147034298266089308'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2009/06/overview-of-microsoft-net-framework-30.html' title='An Overview of Microsoft .NET Framework 3.0'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-8934438312589472866</id><published>2009-05-04T08:48:00.000-07:00</published><updated>2009-06-20T17:31:42.512-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='WSS'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows SharePoint Services'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>SharePoint Development Improves in Visual Studio 2010</title><content type='html'>The focus of the tooling is to automate tedious tasks, enhance the debugging experience, and provide a GUI surface for visually exploring deployment and feature packaging. These tools will replace the much-derided SharePoint Designer.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;VS 2010 Tools for SP Quick info:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Building and Debugging&lt;/strong&gt;&lt;br /&gt;Visual Studio will be able to building and debug SharePoint projects. "F5 Just Works!"&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Server Explorer Integration&lt;br /&gt;&lt;/strong&gt;SharePoint Connections will be an option in the VS Server Explorer. Standard Sharepoint artifacts will be viewable: ContentTypes, Features, Templates, Lists, Sites, Workflows, Workspaces. Direct manipulation of some artifact attributes will be supported through VS property grid integration.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Windows SharePoint Services Project (WSP) Import&lt;br /&gt;&lt;/strong&gt;This will automate the manual task of creating Windows SharePoint Services solution package files. Previously, to create a solution package file, a developer had to use the Makecab.exe console application that is included in the Microsoft Cabinet Software Development Kit (SDK). Makecab.exe requires specifying the Diamond Directive File (.ddf) that contains a list of all the files to include in the package. Much of this will be automated.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Visual Web Part Designer&lt;br /&gt;&lt;/strong&gt;A new WSYWIG designer will exist for authoring Web Parts. The designer will also load a user control as a web part for SharePoint. This seems to be a more tightly integrated version of the widely used SmartPart, which is a Web Part that allows hosting of ASP.NET User Controls in SharePoint.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Event Receiver Wizard&lt;br /&gt;&lt;/strong&gt;Adding Event Receivers and connecting them to Sources can be done visually through a wizard.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Workflow Integration&lt;br /&gt;&lt;/strong&gt;A new ASPX Workflow Initiation form for Workflow Project will be added. Workflow initiation forms will have a visual designer.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Packaging Editor&lt;br /&gt;&lt;/strong&gt;A new Packaging Explorer will exist that supports editing Packaging and structuring the SharePoint Features and WSP file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-8934438312589472866?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/8934438312589472866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2009/05/sharepoint-development-improves-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/8934438312589472866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/8934438312589472866'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2009/05/sharepoint-development-improves-in.html' title='SharePoint Development Improves in Visual Studio 2010'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-4549105957228692146</id><published>2009-03-10T01:36:00.000-07:00</published><updated>2009-06-20T17:33:28.167-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Dot Net'/><title type='text'>Native Image Generator (Ngen.exe)</title><content type='html'>The Native Image Generator utility (Ngen.exe) allows you to run the JIT compiler on your assembly's MSIL and generate native machine code which is cached to disk. After the image is created .NET runtime will use the image to run the code rather than from the hard disk. Running Ngen.exe on an assembly potentially allows the assembly to load and execute faster, because it restores code and data structures from the native image cache rather than generating them dynamically.&lt;br /&gt;&lt;br /&gt;The key points about Native Image Generator are:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Native images load faster than MSIL because JIT compilation and type-safety verification is eliminated. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;If you are sharing code between process Ngen.exe improves the performance significantly. As Native image generated Windows PE file so a single DLL file can be shared across applications. By contrast JIT produced code are private to an assembly and can not be shared. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Native images enable code sharing between processes. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Native images require more storage space and more time to generate. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Startup time performance improves lot. We can get considerable gains when applications share component assemblies because after the first application has been started the shared components are already loaded for subsequent applications. If assemblies in an application must be loaded from the hard disk, does not benefit as much from native images because the hard disk access time shadows everything. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Assemblies in GAC do not benefit from Native image generator as the loader performs extra validation on the strong named assemblies thus shadowing the benefits of Native Image Generator. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;If any of the assemblies change then Native image should also be updated. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;You should have administrative privilege for running Ngen.exe. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;While this can fasten your application startup times as the code is statically compiled but it can be somewhat slower than the code generated dynamically by the JIT compiler. So you need to compare how the whole application performance with Ngen.exe and with out it. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-4549105957228692146?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/4549105957228692146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2009/03/native-image-generator-ngenexe.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/4549105957228692146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/4549105957228692146'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2009/03/native-image-generator-ngenexe.html' title='Native Image Generator (Ngen.exe)'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-2252396706480985302</id><published>2009-02-26T01:03:00.000-08:00</published><updated>2009-06-20T17:33:28.167-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Dot Net'/><title type='text'>SQL Cache Dependency in ASP.NET 2.0</title><content type='html'>SQL cache dependencies is a new feature in ASP.NET 2.0 which can automatically invalidate a cached data object (such as a Dataset) when the related data is modified in the database. So for instance if you have a dataset which is tied up to a database tables any changes in the database table will invalidate the cached data object which can be a dataset or a data source.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Steps to enable SQL Cache Dependency in ASP.NET 2.0&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Enable notifications for the database. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Enable notifications for individual tables. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Enable ASP.NET polling using "web.config" file.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Finally use the Cache dependency object in your ASP.NET code.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-2252396706480985302?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/2252396706480985302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2009/02/sql-cache-dependency-in-aspnet-20.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2252396706480985302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2252396706480985302'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2009/02/sql-cache-dependency-in-aspnet-20.html' title='SQL Cache Dependency in ASP.NET 2.0'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-7522427230270684597</id><published>2009-02-26T00:53:00.000-08:00</published><updated>2009-06-20T17:33:28.167-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Dot Net'/><title type='text'>Benefits and Limitations of using Cookies</title><content type='html'>&lt;strong&gt;Benefits&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;No server resources are required as they are stored in client. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;They are light weight and simple to use.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Limitations&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Most browsers place a 4096-byte limit on the size of a cookie, although support for 8192-byte cookies is becoming more common in the new browser and client-device versions available today. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Some users disable their browser or client device’s ability to receive cookies, thereby limiting the use of cookies. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Cookies can be tampered and thus creating a security hole. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Cookies can expire thus leading to inconsistency. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-7522427230270684597?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/7522427230270684597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2009/02/benefits-and-limitations-of-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/7522427230270684597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/7522427230270684597'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2009/02/benefits-and-limitations-of-using.html' title='Benefits and Limitations of using Cookies'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-7863183195699644800</id><published>2009-02-26T00:46:00.000-08:00</published><updated>2009-06-20T17:33:28.167-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Dot Net'/><title type='text'>Object pooling in .NET</title><content type='html'>COM+ reduces overhead by creating object from scratch. So in COM+ when object is activated its activated from pool and when its deactivated it’s pushed back to the pool. Object pooling is configures by using the "ObjectPoolingAttribute" to the class.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;ObjectPooling(MinPoolSize := 2, MaxPoolSize := 5, CreationTimeout := 20000)&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;Public Class testingclass &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;                Inherits ServicedComponent &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;                Public Sub DoWork() &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;                         ' Method contents go here. &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;                End Sub &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;End Class&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Above is a sample code which has the "ObjectPooling" attribute defined. Below is a sample code which uses the class.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;Public Class App &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;               Overloads Public Shared Sub Main(args() As String) &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;                          Dim xyz As New TestObjectPooling() &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;                          xyz.doWork() &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;                          ServicedComponent.DisposeObject (xyz) &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;               End Sub &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;End Class&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Above is a sample code which uses the object pooled object. Note the DisposeObject() This ensures its safe return to the object pool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-7863183195699644800?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/7863183195699644800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2009/02/object-pooling-in-net.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/7863183195699644800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/7863183195699644800'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2009/02/object-pooling-in-net.html' title='Object pooling in .NET'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-6916809940455359763</id><published>2009-02-26T00:40:00.000-08:00</published><updated>2009-06-20T12:30:09.329-07:00</updated><title type='text'>What is DCOM ?</title><content type='html'>DCOM differs from COM in that it allows for creating objects distributed across a network, a protocol for invoking that object’s methods, and secures access to the object. DCOM provides a wrapper around COM, hence it is a backwards compatible extension. DCOM uses Remote Procedural Calls (RPC) using Open Software Foundation’s Distributed Computing Environment.&lt;br /&gt;&lt;br /&gt;These RPC are implemented over TCP/IP and named pipes. The protocol which is actually being used is registered just prior to use, as opposed to being registered at initialization time. The reason for this is that if a protocol is not being used, it will not be loaded.&lt;br /&gt;&lt;br /&gt;In order to inform an object that the client is still alive, periodic pinging is used. Hence, when the client has died and no ping has been received (to refresh it) before the expiration time, the server object will perform some clean up tasks (including decrementing its reference count).&lt;br /&gt;&lt;br /&gt;Since RPC across a network are typically slow (compared to processes residing on the same machine), DCOM sends multiple requests in the same call. For example, in COM, the program performs a QueryInterface, one interface at a time. In DCOM, multiple QueryInterfaces are all clustered into one call.&lt;br /&gt;&lt;br /&gt;This clustering optimization trick is also used when creating an instance of the object and serializing it with data. Since these two operations usually occur together, DCOM allows one method which will perform both operations in one call without waiting for an acknowledgment from the first task before performing the second one.&lt;br /&gt;&lt;br /&gt;Similarly, when a client pings its server object, he can do it in one call. Moreover, if there are multiple clients sending pings to multiple servers, an optimization is made where the multiple pings going to the same object are consolidated into just one ping. This is to cut down on the use of precious bandwidth used only for pinging.&lt;br /&gt;&lt;br /&gt;The client has the control to set the computer which will be responsible for the lifetime of the object. That is to say, these objects are not created just somewhere where the system resources and access privileges allow for it.&lt;br /&gt;&lt;br /&gt;Call security is implemented in all four ways: authentication (to prevent false clients from impersonating the true client), authorization (to insure that a client only does what it is authorized to do), data integrity (to insure that data was not tampered with during transit) and data privacy (to insure that only designated sources can read it). The security issues are handled as they are on operating systems. The client gives the server various access privileges to access memory or disk space.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-6916809940455359763?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/6916809940455359763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2009/02/what-is-dcom.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6916809940455359763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6916809940455359763'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2009/02/what-is-dcom.html' title='What is DCOM ?'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-8157677922408530896</id><published>2009-02-26T00:38:00.000-08:00</published><updated>2009-06-20T17:33:28.168-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Dot Net'/><title type='text'>How to prevent .NET DLL to be decompiled ?</title><content type='html'>By design .NET embeds rich Meta data inside the executable code using MSIL. Any one can easily decompile your DLL back using tools like ILDASM (owned by Microsoft) or Reflector for .NET which is a third party. Secondly there are many third party tools which make this decompiling process a click away. So any one can easily look in to your assemblies and reverse engineer them back in to actual source code and understand some real good logic which can make it easy to crack your application.&lt;br /&gt;&lt;br /&gt;The process by which you can stop this reverse engineering is using &lt;strong&gt;"obfuscation"&lt;/strong&gt;. It’s a technique which will foil the decompilers. There are many third parties (XenoCode, Demeanor for .NET) which provide .NET obfuscation solution. Microsoft includes one that is Dotfuscator Community Edition with Visual Studio.NET.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-8157677922408530896?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/8157677922408530896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2009/02/how-to-prevent-net-dll-to-be-decompiled.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/8157677922408530896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/8157677922408530896'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2009/02/how-to-prevent-net-dll-to-be-decompiled.html' title='How to prevent .NET DLL to be decompiled ?'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-8093696163748720972</id><published>2009-02-25T22:40:00.000-08:00</published><updated>2009-06-20T17:31:42.513-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='WSS'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows SharePoint Services'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>SharePoint from a Users Perspective</title><content type='html'>From a Users perspective SharePoint is a way of making documents and folders on the Windows platform accessible over the web. The user visits the SharePoint Portal web page, and from there they can add documents, change documents &amp;amp; delete documents. Through this Portal, these documents are now available for discussion, collaboration, versioning and being managed through a workflow. Hence the name "Share-Point". Details about the document can be saved too, such as: who wrote it, when, for whom, its size, and version, category or target audience. These can then be used to find the document through SharePoint's Search facility. Even documents not "in" SharePoint can be included in the search engine's index so they become part of the portal. All in all, it's a great way to get stuff up on the web for users with average technical skills, and for administrators to manage the content.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-8093696163748720972?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/8093696163748720972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2009/02/sharepoint-from-users-perspective.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/8093696163748720972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/8093696163748720972'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2009/02/sharepoint-from-users-perspective.html' title='SharePoint from a Users Perspective'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-3434345118800492804</id><published>2009-02-25T22:37:00.000-08:00</published><updated>2009-06-20T17:31:42.513-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='WSS'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows SharePoint Services'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>SharePoint from an Administration Perspective</title><content type='html'>Administering SharePoint mainly consists of setting it up, which is much easier than you expect, adding the content, which can be just dragging and dropping in whole directory structures and files, and then organizing the files better by giving them categories or other metadata. This is done either through the Web interface or through the SharePoint Client: a program what means you can access SharePoint as a Web folder and then right-click files to select options like "edit profile". Or add files by dragging them in individually or in bulk.&lt;br /&gt;&lt;br /&gt;Setting the security is also important, using NT accounts, either NT4 or Active Directory (or both in mixed mode) you can give users access to files/folders the same way as you do in standard Windows. Users can be grouped and the groups given access privileges to help manage this better. Also SharePoint has 3 Roles that a User or Group can be given on a particular item. Readers can see the item (i.e. document/file or folder) but not change it, Authors can see and edit items and coordinators can set security privileges for the part of the system they have control over. Thus, you could set 12 different coordinators for 12 different folder trees, and they could manage who can do what within that area only.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-3434345118800492804?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/3434345118800492804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2009/02/sharepoint-from-administration.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/3434345118800492804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/3434345118800492804'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2009/02/sharepoint-from-administration.html' title='SharePoint from an Administration Perspective'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-3971600980500070005</id><published>2009-02-25T22:30:00.000-08:00</published><updated>2009-06-20T17:31:42.513-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='WSS'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows SharePoint Services'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>SharePoint from a Technical Perspective</title><content type='html'>Technically SharePoint illustrates neatly what Microsoft's .net strategy is all about: integrating Windows with the Web. Microsoft has previously made accessing stuff on a PC easier, (Windows) then on a network (NT) and now on the web (.NET). SharePoint is an application written to let a user access a web accessible directory tree called the Web Storage System.&lt;br /&gt;&lt;br /&gt;SharePoint was written with a set of technologies that allow the programmer to pass data, functions, parameters over HTTP, the web's medium. These are XML, XSL and SOAP, to name a few.&lt;br /&gt;&lt;br /&gt;To the user it looks easy, like Hotmail, but every time they click a button or a link, a lot has to happen behind the scenes to do what they want to do quickly and powerfully. Not as easy as you might think, but SharePoint does it for you. Accessing this Web storage system and the server itself is also done using technologies like ADO, CDO, PKMCDO, LDAP, DDSC, ADSC. SharePoint is a great example of how the Internet Platform can be extended and integrated into an existing well adopted technology, Windows.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-3971600980500070005?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/3971600980500070005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2009/02/sharepoint-from-technical-perspective.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/3971600980500070005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/3971600980500070005'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2009/02/sharepoint-from-technical-perspective.html' title='SharePoint from a Technical Perspective'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-1951674864188533323</id><published>2009-02-25T22:25:00.000-08:00</published><updated>2009-06-20T17:31:42.513-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='WSS'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows SharePoint Services'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>Business Benefits of MOSS 2007</title><content type='html'>• Provide a simple, familiar, and consistent user experience.&lt;br /&gt;&lt;br /&gt;• Boost employee productivity by simplifying everyday business activities.&lt;br /&gt;&lt;br /&gt;• Help meet regulatory requirements through comprehensive control over content.&lt;br /&gt;&lt;br /&gt;• Effectively manage and repurpose content to gain increased business value.&lt;br /&gt;&lt;br /&gt;• Simplify organization-wide access to both structured and unstructured information across disparate systems.&lt;br /&gt;&lt;br /&gt;• Connect people with information and expertise.&lt;br /&gt;&lt;br /&gt;• Accelerate shared business processes across organizational boundaries.&lt;br /&gt;&lt;br /&gt;• Share business data without divulging sensitive information.&lt;br /&gt;&lt;br /&gt;• Enable people to make better-informed decisions by presenting business-critical information in one central location.&lt;br /&gt;&lt;br /&gt;• Provide a single, integrated platform to manage intranet, extranet, and Internet applications across the enterprise.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-1951674864188533323?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/1951674864188533323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2009/02/business-benefits-of-moss-2007.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/1951674864188533323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/1951674864188533323'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2009/02/business-benefits-of-moss-2007.html' title='Business Benefits of MOSS 2007'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-6221179106179417473</id><published>2009-02-25T22:21:00.000-08:00</published><updated>2009-06-20T17:31:42.514-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='WSS'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows SharePoint Services'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>Advanced Features of MOSS 2007</title><content type='html'>&lt;ul&gt;&lt;li&gt;User Interface (UI) and navigation enhancements &lt;/li&gt;&lt;li&gt;Document management enhancements &lt;/li&gt;&lt;li&gt;The new Workflow engine &lt;/li&gt;&lt;li&gt;Office 2007 Integration &lt;/li&gt;&lt;li&gt;New Web Parts &lt;/li&gt;&lt;li&gt;New Site-type templates &lt;/li&gt;&lt;li&gt;Enhancements to List technology &lt;/li&gt;&lt;li&gt;Web Content Management &lt;/li&gt;&lt;li&gt;Business Data Catalog &lt;/li&gt;&lt;li&gt;Search enhancements &lt;/li&gt;&lt;li&gt;Report Center &lt;/li&gt;&lt;li&gt;Records Management&lt;/li&gt;&lt;li&gt;Business Intelligence and Excel Server&lt;/li&gt;&lt;li&gt;Forms Server and InfoPath &lt;/li&gt;&lt;li&gt;The “Features” feature &lt;/li&gt;&lt;li&gt;Alternate authentication providers and Forms-based authentication&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-6221179106179417473?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/6221179106179417473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2009/02/advanced-features-of-moss-2007.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6221179106179417473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6221179106179417473'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2009/02/advanced-features-of-moss-2007.html' title='Advanced Features of MOSS 2007'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-3064540437832533441</id><published>2008-08-21T13:10:00.000-07:00</published><updated>2009-06-20T12:30:09.394-07:00</updated><title type='text'>Prototype - As a Design Guideline</title><content type='html'>&lt;div align="justify"&gt;&lt;em&gt;&lt;strong&gt;"A picture can replace a thousand words; a prototype can save you lots of meetings and possibly avoid a project failure."&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/em&gt;A prototype is a dynamic view of the system, while a requirements documents and design documents create a static view. It is the same with blueprints; they are a static model. A small-scale model is a dynamic view. Using a dynamic view, you can see things in action; you can add another dimension to the design phase: the time dimension.&lt;br /&gt;&lt;br /&gt;The most important benefit of using prototypes is that it helps promote communication with the client, project managers and other developers.&lt;br /&gt;&lt;br /&gt;Prototypes help in tracking the requirements back and forth. They ensure that you implement what is needed, no more and no less.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-3064540437832533441?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/3064540437832533441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/08/prototype-as-design-guideline.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/3064540437832533441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/3064540437832533441'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/08/prototype-as-design-guideline.html' title='Prototype - As a Design Guideline'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-7269335562408462627</id><published>2008-08-21T12:29:00.000-07:00</published><updated>2009-06-20T12:30:09.402-07:00</updated><title type='text'>Building Blocks of Design</title><content type='html'>&lt;div align="justify"&gt;There are three high level elements that are considered for design:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;strong&gt;Patterns&lt;br /&gt;&lt;/strong&gt;A pattern is a specification for addressing a common problem in solution design. Patterns are not algorithms, they are higher level and more broadly applicable. Adopting a widely accepted pattern as part of solution design can help us address not only the problem we recognize, but also the related problems we may not recognize on first glance.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;strong&gt;Frameworks&lt;/strong&gt;&lt;br /&gt;Occasionally, you may find targeted reference implementations of patterns that may be useful, and they are often in the form of a framework. In classic object-oriented design, a framework is a set of abstract classes to be incorporated into and reused as part of a software application. The current thinking is that a framework also may be a set of abstract data constructs, rules, or processes. A framework is different from a pattern in that a framework is something real that can be incorporated into and used as a foundational element of your solution—it is commonly the implementation of a pattern or specification.&lt;br /&gt;A framework provides guidance beyond that of a pattern, and typically provides deployable elements that can be used as the foundation for your solution. The more well- understood the framework, the easier it will be for an organization to support it over time.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;strong&gt;Components&lt;br /&gt;&lt;/strong&gt;Components are encapsulated elements of a system (hardware, software, network, etc.) and are by definition not case-specific. Components can be wrapped into your solution seamlessly, or can be managed as separate entities, regardless of deployment environment. Incorporating well-understood components into your solution definition can save time in delivery and increase the quality of your solution, but components may have associated support costs that can be considerable.&lt;br /&gt;Most components can be satisfactorily configured to meet our needs without any custom work. Incorporating a component and customizing it beyond the standard configuration is risky—you should understand the cost associated with supporting it going forward, and the risk of losing vendor-provided support.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-7269335562408462627?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/7269335562408462627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/08/building-blocks-of-design.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/7269335562408462627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/7269335562408462627'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/08/building-blocks-of-design.html' title='Building Blocks of Design'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-9081765956197155501</id><published>2008-08-19T12:37:00.000-07:00</published><updated>2009-06-20T12:30:09.410-07:00</updated><title type='text'>Enterprise Architecture</title><content type='html'>The definition of an architecture used in ANSI/IEEE Std 1471-2000 is: "the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution."&lt;br /&gt;&lt;br /&gt;An enterprise architecture (EA) is a conceptual tool that assists organizations with the understanding of their own structure and the way they work. It provides a map of the enterprise and is a route planner for business and technology change.&lt;br /&gt;&lt;br /&gt;Normally an enterprise architecture takes the form of a comprehensive set of cohesive models that describe the structure and the functions of an enterprise. Important uses of it are in systematic IT planning and architecting, and in enhanced decision making.&lt;br /&gt;&lt;br /&gt;The individual models in an EA are arranged in a logical manner, and this provides an ever-increasing level of detail about the enterprise, including:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Its objectives and goals. &lt;/li&gt;&lt;li&gt;Its processes and organization. &lt;/li&gt;&lt;li&gt;Its systems and data. &lt;/li&gt;&lt;li&gt;The technology used.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-9081765956197155501?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/9081765956197155501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/08/enterprise-architecture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/9081765956197155501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/9081765956197155501'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/08/enterprise-architecture.html' title='Enterprise Architecture'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-4466767682977282067</id><published>2008-08-19T10:42:00.000-07:00</published><updated>2009-06-20T12:30:09.417-07:00</updated><title type='text'>Software Architecture</title><content type='html'>Software Architecture can be defined in terms of building blocks and software components. These building blocks are software components, frameworks, IDE’s, SDK’s, and Commercial off the shelf (COTS) packages.&lt;br /&gt;&lt;br /&gt;The primary role of a Software Architect is to choose the components, integrate the ones that can be incorporated, and lead the team in creating custom supporting code to link the components in times where there are no obvious connectors from one component to another and build something that will benefit the business.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-4466767682977282067?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/4466767682977282067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/08/software-architecture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/4466767682977282067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/4466767682977282067'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/08/software-architecture.html' title='Software Architecture'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-2988642641751980516</id><published>2008-05-10T12:27:00.000-07:00</published><updated>2009-06-20T17:31:42.514-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='WSS'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows SharePoint Services'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>WSS 3.0 - WorkFlows</title><content type='html'>A workflow allows you to attach a business process to items in Windows SharePoint Services 3.0. This process can control almost any aspect of an item in Windows SharePoint Services 3.0, including the life cycle of that item. For example, you could create a simple workflow that routes a document to a series of users for approval.&lt;br /&gt;&lt;br /&gt;Workflows can be as simple or complex as your business processes require. You can create workflows that the user initiates, or workflows that Windows SharePoint Services 3.0 automatically initiate based on some event, such as when an item is created or changed.&lt;br /&gt;&lt;br /&gt;Windows SharePoint Services 3.0 workflows are made available to end-users at the list or document-library level. Workflows can be added to documents or list items. Workflow can also be added to content types. Multiple workflows may be available for a given item. Multiple workflows can run simultaneously on the same item, but only one instance of a specific workflow can run on a specific item at any given time. For example, you might have two workflows, SpecReview and LegalReview, available for a specific content type, Specification. Although both workflows can run simultaneously on a specific item of the Specification content type, you can't have two instances of the LegalReview workflow running on the same item at the same time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-2988642641751980516?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/2988642641751980516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/05/wss-30-workflows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2988642641751980516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2988642641751980516'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/05/wss-30-workflows.html' title='WSS 3.0 - WorkFlows'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-6678762664481706715</id><published>2008-05-10T12:19:00.000-07:00</published><updated>2009-06-20T17:31:42.514-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='WSS'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows SharePoint Services'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>WSS 3.0 &amp; MOSS 2007 - WebParts</title><content type='html'>Web Parts in Windows SharePoint Services provide developers with a way to create user interface elements that support both customization and personalization. A site owner or a site member with the appropriate permissions can customize Web Part Pages using a browser or Microsoft Office SharePoint Designer 2007 by adding, reconfiguring, and removing Web Parts.&lt;br /&gt;&lt;br /&gt;The term customization implies that changes are seen by all site members. Individual users can further personalize Web Part Pages by adding, reconfiguring, and removing Web Parts. The term personalization implies that these changes will be seen only by the user that made them. Developing custom Web Parts provides an easy and powerful way to extend Windows SharePoint Services sites.&lt;br /&gt;&lt;br /&gt;Because the Windows SharePoint Services Web Part infrastructure is now built on top of the ASP.NET 2.0 Web Parts control set, you can reuse your knowledge of ASP.NET programming to create quick and robust custom Web Parts.&lt;br /&gt;&lt;br /&gt;Following are some ways in which you can use custom Web Parts:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Creating custom properties you can display and modify in the user interface. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Improving performance and scalability. A compiled custom Web Part runs faster than a script. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Implementing proprietary code without disclosing the source code. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Securing and controlling access to content within the Web Part. Built-in Web Parts allow any users with appropriate permissions to change content and alter Web Part functionality. With a custom Web Part, you can determine the content or properties to display to users, regardless of their permissions. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Making your Web Part connectable, allowing Web Parts to provide or access data from other connectable Web Parts. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Interacting with the object models that are exposed in Windows SharePoint Services. For example, you can create a custom Web Part to save documents to a Windows SharePoint Services document library. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Controlling the cache for the Web Part by using built-in cache tools. For example, you can use these tools to specify when to read, write, or invalidate the Web Part cache. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Benefiting from a rich development environment with debugging features that are provided by tools such as Microsoft Visual Studio 2005. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Creating a base class for other Web Parts to extend. For example, to create a collection of Web Parts with similar features and functionality, create a custom base class from which multiple Web Parts can inherit. This reduces the overall cost of developing and testing subsequent Web Parts. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Controlling the implementation of the Web Part. For example, you can write a custom server-side Web Part that connects to a back-end database, or you can create a Web Part that is compatible with a broader range of Web browsers.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-6678762664481706715?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/6678762664481706715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/05/wss-30-moss-2007-webparts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6678762664481706715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6678762664481706715'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/05/wss-30-moss-2007-webparts.html' title='WSS 3.0 &amp;amp; MOSS 2007 - WebParts'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-1282832843753354609</id><published>2008-05-10T11:58:00.000-07:00</published><updated>2009-06-20T17:31:42.515-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='WSS'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows SharePoint Services'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>WSS 3.0 - Content Types &amp; Site Columns</title><content type='html'>Windows SharePoint Services 3.0 provides two new tools to help you organize and standardize your data: content types and site columns.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Content Types&lt;/strong&gt;&lt;br /&gt;Content types—a core concept used throughout the functionality and services offered in Windows SharePoint Services 3.0—are designed to help users organize their SharePoint content in a more meaningful way. A content type is a reusable collection of settings you want to apply to a certain category of content. Content types enable you to manage the metadata and behaviors of a document or item type in a centralized, reusable way.&lt;br /&gt;&lt;br /&gt;For example, consider the following two types of documents: software specifications and legal contracts. It is reasonable that you might want to store documents of those two types in the same document library. However, the metadata you would want to gather and store about each of these document types would be very different. In addition, you would most likely want to assign very different workflows to the two types of documents.&lt;br /&gt;&lt;br /&gt;Content types enable you to store multiple, different types of content in the same document library or list. In the preceding example, you could define two content types named Specification and Contract. Each content type could include different columns for gathering and storing item metadata, as well as have different workflows assigned to it. Yet items of both content types could be stored in the same document library.&lt;br /&gt;&lt;br /&gt;You can further extend content type functionality by using content types to assign additional settings, such as workflows or even custom attributes, to your items.&lt;br /&gt;&lt;br /&gt;Because you can define content types independently of any specific list or document library, you can make a given content type available for the lists on multiple SharePoint sites. This enables you to centrally define and manage the types of content you store in your site collection. For example, you could use your Specification content type to ensure that all software specifications track the same metadata, even if those specifications are stored across multiple sites.&lt;br /&gt;Content types are independent of file formats. For document libraries, you can specify a document template; when the user requests a new document of this content type, Windows SharePoint Services creates a document based on the template. However, users can still upload a document based on a different template, or even of a completely different file type.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Site Columns&lt;/strong&gt;&lt;br /&gt;Site columns provide a central, reusable model for column definition. When you create a site column, each list that uses this column has the same definition, and you do not have to do the tedious work of reproducing the column in each list.&lt;br /&gt;&lt;br /&gt;A site column is a reusable column definition, or template, that you can assign to multiple lists across multiple SharePoint sites. Site columns decrease rework and help you ensure consistency of metadata across sites and lists. For example, suppose you define a site column named Customer. Users can add that column to their lists and reference it in their content types. This ensures that the column has the same attributes, at least to start with, wherever it appears.&lt;br /&gt;&lt;br /&gt;Additionally, site columns provide you with the simplicity of a single maintenance point. For example, you can create a status site column, which might contain multiple choices of an enterprise's specific statuses, and implement the column in dozens of project master lists across the site collection. If you add a new status, you can modify the site column instead of having to modify each list that contains a status column.&lt;br /&gt;&lt;br /&gt;Much like site content types, you define a site column at the site level, independent of any actual list or content type.&lt;br /&gt;&lt;br /&gt;When you add a column to a list, Windows SharePoint Services copies the site column locally onto the list as a list column. You can then make changes to the list column; these changes apply to the column only as it behaves on that list.&lt;br /&gt;&lt;br /&gt;In certain situations, you may want to modify the column for a specific list. For this reason, you still have the option of one-off customization of columns at the list level. For example, suppose all projects within your company's Information Technology department have an additional status of On Hold—Waiting for Hardware. You could add this status to the column within the IT department's master project list.&lt;br /&gt;&lt;br /&gt;You can also create your own list columns, directly on a list. Either way, list columns apply only to the list to which you add them; they cannot be added to multiple lists.&lt;br /&gt;&lt;br /&gt;You can reference a site or list column in a content type.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-1282832843753354609?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/1282832843753354609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/05/wss-30-content-types-site-columns.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/1282832843753354609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/1282832843753354609'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/05/wss-30-content-types-site-columns.html' title='WSS 3.0 - Content Types &amp;amp; Site Columns'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-6045830567980616106</id><published>2008-04-26T23:34:00.000-07:00</published><updated>2009-06-20T17:33:28.168-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Dot Net'/><title type='text'>Features Of Common Language Runtime</title><content type='html'>The .NET Framework provides a run-time environment called the common language runtime, which runs the code and provides services that make the development process easier.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The common language runtime manages memory, thread execution, code execution, code safety verification, compilation, and other system services. These features are intrinsic to the managed code that runs on the common language runtime.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;With regards to security, managed components are awarded varying degrees of trust, depending on a number of factors that include their origin (such as the Internet, enterprise network, or local computer). This means that a managed component might or might not be able to perform file-access operations, registry-access operations, or other sensitive functions, even if it is being used in the same active application.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The runtime enforces code access security. For example, users can trust that an executable embedded in a Web page can play an animation on screen or sing a song, but cannot access their personal data, file system, or network. The security features of the runtime thus enable legitimate Internet-deployed software to be exceptionally feature rich.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The runtime also enforces code robustness by implementing a strict type-and-code-verification infrastructure called the common type system (CTS). The CTS ensures that all managed code is self-describing. The various Microsoft and third-party language compilers generate managed code that conforms to the CTS. This means that managed code can consume other managed types and instances, while strictly enforcing type fidelity and type safety.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In addition, the managed environment of the runtime eliminates many common software issues. For example, the runtime automatically handles object layout and manages references to objects, releasing them when they are no longer being used. This automatic memory management resolves the two most common application errors, memory leaks and invalid memory references.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The runtime also accelerates developer productivity. For example, programmers can write applications in their development language of choice, yet take full advantage of the runtime, the class library, and components written in other languages by other developers. Any compiler vendor who chooses to target the runtime can do so. Language compilers that target the .NET Framework make the features of the .NET Framework available to existing code written in that language, greatly easing the migration process for existing applications.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;While the runtime is designed for the software of the future, it also supports software of today and yesterday. Interoperability between managed and unmanaged code enables developers to continue to use necessary COM components and DLLs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The runtime is designed to enhance performance. Although the common language runtime provides many standard runtime services, managed code is never interpreted. A feature called just-in-time (JIT) compiling enables all managed code to run in the native machine language of the system on which it is executing. Meanwhile, the memory manager removes the possibilities of fragmented memory and increases memory locality-of-reference to further increase performance.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Finally, the runtime can be hosted by high-performance, server-side applications, such as Microsoft® SQL Server™ and Internet Information Services (IIS). This infrastructure enables you to use managed code to write your business logic, while still enjoying the superior performance of the industry's best enterprise servers that support runtime hosting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-6045830567980616106?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/6045830567980616106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/features-of-common-language-runtime.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6045830567980616106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6045830567980616106'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/features-of-common-language-runtime.html' title='Features Of Common Language Runtime'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-6037767127813400771</id><published>2008-04-26T23:13:00.000-07:00</published><updated>2009-06-20T17:33:28.168-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Dot Net'/><title type='text'>.NET Framework</title><content type='html'>The .NET Framework is an integral Windows component that supports building and running the next generation of applications and XML Web services. The .NET Framework is designed to fulfill the following objectives:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;To provide a consistent object-oriented programming environment whether object code is stored and executed locally, executed locally but Internet-distributed, or executed remotely.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;To provide a code-execution environment that minimizes software deployment and versioning conflicts.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;To provide a code-execution environment that promotes safe execution of code, including code created by an unknown or semi-trusted third party.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;To provide a code-execution environment that eliminates the performance problems of scripted or interpreted environments.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;To make the developer experience consistent across widely varying types of applications, such as Windows-based applications and Web-based applications.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;To build all communication on industry standards to ensure that code based on the .NET Framework can integrate with any other code.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Components of .NET Framework&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The .NET Framework has two main components: &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;The common language runtime&lt;/strong&gt; :&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The common language runtime is the foundation of the .NET Framework. You can think of the runtime as an agent that manages code at execution time, providing core services such as memory management, thread management, and remoting, while also enforcing strict type safety and other forms of code accuracy that promote security and robustness. In fact, the concept of code management is a fundamental principle of the runtime. Code that targets the runtime is known as managed code, while code that does not target the runtime is known as unmanaged code. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;The .NET Framework Class Library&lt;/strong&gt;:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The class library, the other main component of the .NET Framework, is a comprehensive, object-oriented collection of reusable types that you can use to develop applications ranging from traditional command-line or graphical user interface (GUI) applications to applications based on the latest innovations provided by ASP.NET, such as Web Forms and XML Web services.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The .NET Framework can be hosted by unmanaged components that load the common language runtime into their processes and initiate the execution of managed code, thereby creating a software environment that can exploit both managed and unmanaged features. The .NET Framework not only provides several runtime hosts, but also supports the development of third-party runtime hosts.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;For example, ASP.NET hosts the runtime to provide a scalable, server-side environment for managed code. ASP.NET works directly with the runtime to enable ASP.NET applications and XML Web services, both of which are discussed later in this topic.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Internet Explorer is an example of an unmanaged application that hosts the runtime (in the form of a MIME type extension). Using Internet Explorer to host the runtime enables you to embed managed components or Windows Forms controls in HTML documents. Hosting the runtime in this way makes managed mobile code (similar to Microsoft® ActiveX® controls) possible, but with significant improvements that only managed code can offer, such as semi-trusted execution and isolated file storage.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-6037767127813400771?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/6037767127813400771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/net-framework.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6037767127813400771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6037767127813400771'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/net-framework.html' title='.NET Framework'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-1739813424989699098</id><published>2008-04-26T15:02:00.000-07:00</published><updated>2009-06-20T17:33:28.168-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Dot Net'/><title type='text'>Creating Database Objects Using Managed Code (Microsoft .NET 2.0)</title><content type='html'>One of the neat features of SQL Server 2005 is the integration with the .NET CLR. The integration of CLR with SQL Server extends the capability of SQL Server in several important ways. This integration enables developers to create database objects such as stored procedures, user defined functions, and triggers by using modern object-oriented languages such as VB.NET and C#.&lt;br /&gt;&lt;br /&gt;In this post, I will demonstrate how to create the stored procedures using C#. Before looking at the code, let us understand the pros and cons of using managed language in the database tier to create server side objects.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;T-SQL Vs Managed Code&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Although T-SQL, the existing data access and manipulation language, is well suited for set-oriented data access operations, it also has limitations. It was designed more than a decade ago and it is a procedural language rather than an object-oriented language. The integration of the .NET CLR with SQL Server enables the development of stored procedures, user-defined functions, triggers, aggregates, and user-defined types using any of the .NET languages.&lt;br /&gt;&lt;br /&gt;This is enabled by the fact that the SQL Server engine hosts the CLR in-process. All managed code that executes in the server runs within the confines of the CLR. The managed code accesses the database using ADO.NET in conjunction with the new SQL Server Data Provider. Both Visual Basic .NET and C# are modern programming languages offering full support for arrays, structured exception handling, and collections.&lt;br /&gt;&lt;br /&gt;Developers can leverage CLR integration to write code that has more complex logic and is more suited for computation tasks using languages such as Visual Basic .NET and C#. Managed code is better suited than Transact-SQL for number crunching and complicated execution logic, and features extensive support for many complex tasks, including string handling and regular expressions. T-SQL is a better candidate in situations where the code will mostly perform data access with little or no procedural logic.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Creating CLR Based Stored Procedures&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;For the purposes of this example, create a new SQL Server Project using Visual C# as the language of choice in Visual Studio 2005. Since you are creating a database project, you need to associate a data source with the project. At the time of creating the project, Visual Studio will automatically prompt you to either select an existing database reference or add a new database reference. Choose pubs as the database. Once the project is created, select Add Stored Procedure from the Project menu. In the Add New Item dialog box, enter Authors.cs and click Add button. After the class is created, modify the code in the class to look like the following.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color:#3333ff;"&gt;using System;&lt;br /&gt;using System.Data;&lt;br /&gt;using System.Data.Sql;&lt;br /&gt;using System.Data.SqlClient;&lt;br /&gt;using System.Data.SqlTypes;&lt;br /&gt;using Microsoft.SqlServer.Server;&lt;br /&gt;&lt;br /&gt;public class Authors&lt;br /&gt;{&lt;br /&gt;[SqlProcedure]&lt;br /&gt;public static void GetAuthors()&lt;br /&gt;{&lt;br /&gt;SqlPipe sp = SqlContext.Pipe;&lt;br /&gt;using (SqlConnection conn = new&lt;br /&gt;SqlConnection("context connection=true"))&lt;br /&gt;{&lt;br /&gt;conn.Open();&lt;br /&gt;SqlCommand cmd = new SqlCommand();&lt;br /&gt;cmd.CommandType = CommandType.Text;&lt;br /&gt;cmd.Connection = conn;&lt;br /&gt;cmd.CommandText = "Select DatePart(second, GetDate()) " +&lt;br /&gt;" As timestamp,* from authors";&lt;br /&gt;SqlDataReader rdr = cmd.ExecuteReader();&lt;br /&gt;sp.Send(rdr);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;[SqlProcedure]&lt;br /&gt;public static void GetTitlesByAuthor(string authorID)&lt;br /&gt;{&lt;br /&gt;string sql = "select T.title, T.price, T.type, " +&lt;br /&gt;"T.pubdate from authors A" +&lt;br /&gt;" inner join titleauthor TA on A.au_id = TA.au_id " +&lt;br /&gt;" inner join titles T on TA.title_id = T.title_id " +&lt;br /&gt;" where A.au_id = '" + @authorID + "'";&lt;br /&gt;using (SqlConnection conn = new&lt;br /&gt;SqlConnection("context connection=true"))&lt;br /&gt;{&lt;br /&gt;conn.Open();&lt;br /&gt;SqlPipe sp = SqlContext.Pipe;&lt;br /&gt;SqlCommand cmd = new SqlCommand();&lt;br /&gt;cmd.CommandType = CommandType.Text;&lt;br /&gt;cmd.Connection = conn;&lt;br /&gt;cmd.CommandText = sql;&lt;br /&gt;SqlParameter paramauthorID = new&lt;br /&gt;SqlParameter("@authorID", SqlDbType.VarChar, 11);&lt;br /&gt;paramauthorID.Direction = ParameterDirection.Input;&lt;br /&gt;paramauthorID.Value = authorID;&lt;br /&gt;cmd.Parameters.Add(paramauthorID);&lt;br /&gt;SqlDataReader rdr = cmd.ExecuteReader();&lt;br /&gt;sp.Send(rdr);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/blockquote&gt;Let us examine the above lines of code. The above code starts by importing the required namespaces and then declares a class named Authors. There are two important classes in the Microsoft.SqlServer.Server namespace that are specific to the in-proc provider:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;SqlContext:&lt;/strong&gt; This class encapsulates the extensions required to execute in-process code in SQL Server 2005. In addition it provides the transaction and database connection which are part of the environment in which the routine executes. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;SqlPipe:&lt;/strong&gt; This class enables routines to send tabular results and messages to the client. This class is conceptually similar to the Response class found in ASP.NET in that it can be used to send messages to the callers. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The Authors class contains two static methods named &lt;strong&gt;GetAuthors&lt;/strong&gt; and &lt;strong&gt;GetTitlesByAuthor&lt;/strong&gt;. As the name suggests, the GetAuthors method simply returns all the authors from the authors table in the pubs database and the GetTitlesByAuthor method returns all the titles for a specific author. &lt;/p&gt;&lt;p&gt;Inside the GetAuthors method, you start by getting reference to the SqlPipe object by invoking the Pipe property of the SqlContext class. &lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;SqlPipe sp = SqlContext.Pipe; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;Then you open the connection to the database using the SqlConnection object. Note that the connection string passed to the constructor of the SqlConnection object is set to "context connection=true" meaning that you want to use the context of the logged on user to open the connection to the database.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;using (SqlConnection conn = new SqlConnection("context connection=true"))&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Here open the connection to the database using the Open() method.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;conn.Open();&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Then you create an instance of the SqlCommand object and set its properties appropriately.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;SqlCommand cmd = new SqlCommand();cmd.CommandType = CommandType.Text;cmd.Connection = conn;cmd.CommandText = "Select DatePart(second, GetDate()) " + " As timestamp,* from authors";&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Finally you execute the sql query by calling the ExecuteReader method of the SqlCommand object.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;SqlDataReader rdr = cmd.ExecuteReader();&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Then using the SqlPipe object, you then return tabular results and messages to the client. This is accomplished using the Send method of the SqlPipe class.&lt;br /&gt;sp.Send(rdr);&lt;br /&gt;The Send method provides various overloads that are useful in transmitting data through the pipe to the calling application. Various overloads of the Send method are: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Send (ISqlDataReader) - Sends the tabular results in the form of a SqlDataReader object.&lt;/li&gt;&lt;li&gt;Send (ISqlDataRecord) - Sends the results in the form of a SqlDataRecord object. &lt;/li&gt;&lt;li&gt;Send (ISqlError) - Sends error information in the form of a SqlError object. &lt;/li&gt;&lt;li&gt;Send (String) - Sends messages in the form of a string value to the calling application. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Both the methods in the Authors class utilize one of the Send methods that allows you to send tabular results to the client application in the form of a SqlDataReader object. Since the GetTitlesByAuthor method implementation is very similar to the GetAuthors method, I will not be discussing that method in detail.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Now that the stored procedures are created, deploying it is very simple and straightforward. Before deploying it, you need to build the project first. To build the project, select Build-&gt;Build &lt;projectname&gt; from the menu. This will compile all the classes in the project and if there are any compilation errors, they will be displayed in the Error List pane. Once the project is built, you can then deploy it onto the SQL Server by selecting Build-&gt;Deploy &lt;projectname&gt; from the menu. This will not only register the assembly in the SQL Server but also deploy the stored procedures in the SQL Server. Once the stored procedures are deployed to the SQL Server, they can then be invoked from the data access layer, which is the topic of focus in the next section.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Before executing the stored procedure, ensure you execute the following sql script using SQL Server Management Studio to enable managed code execution in the SQL Server.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;EXEC sp_configure 'clr enabled', 1;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;RECONFIGURE WITH OVERRIDE;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;GO&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-1739813424989699098?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/1739813424989699098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/creating-database-objects-using-managed.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/1739813424989699098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/1739813424989699098'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/creating-database-objects-using-managed.html' title='Creating Database Objects Using Managed Code (Microsoft .NET 2.0)'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-2043609359706665775</id><published>2008-04-26T14:32:00.000-07:00</published><updated>2009-06-20T12:30:09.475-07:00</updated><title type='text'>Designing N-Tier Client/Server Architecture</title><content type='html'>&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Designing N-Tier client/server architecture is no less complex than developing two-tier architecture, however the N-Tier architecture, produces a far more flexible and scalable client/server environment. In two-tier architecture, the client and the server are the only layers. In this model, both the presentation layer and the middle layer are handled by the client. N-Tier architecture has a presentation layer and three separate layers - a business logic layer and a data access logic layer and a database layer. The next section discusses each of these layers in detail.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Different Layers of an N-Tier Application&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;In a typical N-Tier environment, the client implements the presentation logic (thin client). The business logic and data access logic are implemented on an application server(s) and the data resides on database server(s). N-tier architecture is typically thus defined by the following layers:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Presentation Layer:&lt;/strong&gt; This is a front-end component, which is responsible for providing portable presentation logic. Since the client is freed of application layer tasks, which eliminates the need for powerful client technology. The presentation logic layer consists of standard ASP.NET web forms, ASP pages, documents, and Windows Forms, etc. This layer works with the results/output of the business logic layer and transforms the results into something usable and readable by the end user. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Business Logic Layer:&lt;/strong&gt; Allows users to share and control business logic by isolating it from the other layers of the application. The business layer functions between the presentation layer and data access logic layers, sending the client's data requests to the database layer through the data access layer. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Data Access Logic Layer:&lt;/strong&gt; Provides access to the database by executing a set of SQL statements or stored procedures. This is where you will write generic methods to interface with your data. For example, you will write a method for creating and opening a SqlConnection object, create a SqlCommand object for executing a stored procedure, etc. As the name suggests, the data access logic layer contains no business rules or data manipulation/transformation logic. It is merely a reusable interface to the database.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Database Layer:&lt;/strong&gt; Made up of a RDBMS database component such as SQL Server that provides the mechanism to store and retrieve data.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-2043609359706665775?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/2043609359706665775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/designing-n-tier-clientserver.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2043609359706665775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2043609359706665775'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/designing-n-tier-clientserver.html' title='Designing N-Tier Client/Server Architecture'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-7638654543759311009</id><published>2008-04-26T13:12:00.000-07:00</published><updated>2009-06-20T17:35:33.824-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Dot Net'/><title type='text'>Steps to Implement ClickOnce Deployment in .NET 2.0</title><content type='html'>&lt;ul&gt;&lt;li&gt;You create a Windows forms application and use the Publish option to deploy the application onto any of the following locations: File System, Local Web Server, FTP Site, or a Remote Web Site. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Once the application is deployed onto the target location, the users of the application can browse to the publish.htm file and install the application onto their machine. Note that publish.htm file is the entry point for installing the application and this will be discussed in the later part of this article. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Once the user has installed the application, a shortcut icon will be added to the desktop and the application will also be listed in the Control Panel/Add Remove Programs. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;When the user launches the application again, the manifest will contain all the information to decide if the application should go to the source location and check for updates to the original application. Let us say, for instance, a newer version of the application is available, it will be automatically downloaded and made available to the user. Note that when the new version is downloaded, it is performed in a transacted manner meaning that either the entire update is downloaded or nothing is downloaded. This will ensure that the application integrity is preserved.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-7638654543759311009?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/7638654543759311009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/steps-to-implement-clickonce-deployment.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/7638654543759311009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/7638654543759311009'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/steps-to-implement-clickonce-deployment.html' title='Steps to Implement ClickOnce Deployment in .NET 2.0'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-1446298830643330639</id><published>2008-04-26T12:55:00.000-07:00</published><updated>2009-06-20T17:35:33.825-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Dot Net'/><title type='text'>ClickOnce Deployment In .NET Framework 2.0</title><content type='html'>It is very common among the developers of previous generations to choose web applications over rich Windows UIs because of the deployment challenges associated with deploying a Smart Client Windows Forms application. However with the release of Visual Studio 2005, Microsoft has released a new technology named ClickOnce that is designed to solve the deployment issues for a windows forms application. This new technology not only provides an easy application installation mechanism but also enables easy deployment of upgrades to existing applications.&lt;br /&gt;&lt;br /&gt;Since the introduction of the powerful server side web technologies such as ASP, JSP, ASP.NET, developers have shown more interest in building web applications rather than in windows applications. The factors that attracted the developers toward web applications can be summarized as follows:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A web application is ubiquitous, making it accessible in all the places where an internet connection is available. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The second and most important factor is the deployment. With web applications, there is no need to deploy any software on the client side. All the client application needs is just the browser. This makes it possible for the developers to easily deploy updates to the existing web application without impacting the client machines. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If you talk to the developers, you will find that the main reason for preference for web applications over windows applications is the second point in the above list. Even though this is true with traditional applications, Microsoft is making every attempt to ensuring that windows applications can be deployed and updated with the same ease as the web applications. &lt;/p&gt;&lt;p&gt;You can see proofs of this in the initial release of .NET Framework when Microsoft introduced the deployment of windows forms application through HTTP. Using this approach, you could simply use HREF HTML element to point to a managed executable (.exe). Then when you click on the HREF link, Internet Explorer can automatically download and install the executable on the client machine. Even though this approach sounds very promising, it also presents some interesting challenges. &lt;/p&gt;&lt;p&gt;One of the most important challenges is the downloading of the updated code through the HTTP. Since this process was not transacted, it was possible for the application to be left in an inconsistent state. &lt;/p&gt;&lt;p&gt;Moreover there was no way for you to specify if the application could work in offline mode apart from the traditional online mode. Combined with the operational mode issue, this approach also did not provide the ability to create shortcuts that can be used to launch the application. Even though this approach presented itself with a lot of issues, it could still be used in controlled environments. &lt;/p&gt;&lt;p&gt;However for complex multi-assembly dependant windows forms applications, you needed a transacted and easily updateable way of deployment. This is exactly what the ClickOnce technology introduced with .NET Framework 2.0 provides. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-1446298830643330639?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/1446298830643330639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/clickonce-deployment-in-net-framework.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/1446298830643330639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/1446298830643330639'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/clickonce-deployment-in-net-framework.html' title='ClickOnce Deployment In .NET Framework 2.0'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-6994774450066114423</id><published>2008-04-25T06:12:00.000-07:00</published><updated>2009-06-20T12:30:09.490-07:00</updated><title type='text'>2D Graphics Techniques</title><content type='html'>2D graphics models may combine &lt;strong&gt;geometric models&lt;/strong&gt; (also called &lt;strong&gt;vector graphics&lt;/strong&gt;),&lt;strong&gt; digital images&lt;/strong&gt; (also called &lt;strong&gt;raster graphics&lt;/strong&gt;), &lt;strong&gt;text to be typeset&lt;/strong&gt; (defined by content, font style and size, color, position, and orientation), &lt;strong&gt;mathematical functions and equations&lt;/strong&gt;, and more. These components can be modified and manipulated by two-dimensional geometric transformations such as translation, rotation, scaling.&lt;br /&gt;&lt;br /&gt;In &lt;strong&gt;object-oriented graphics&lt;/strong&gt;, the image is described indirectly by an object endowed with a self-rendering method—a procedure which assigns colors to the image pixels by an arbitrary algorithm. Complex models can be built by combining simpler objects, in the paradigms of object-oriented programming.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Direct painting&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;A convenient way to create a complex image is to start with a blank "canvas" raster map (an array of pixels, also known as a bitmap) filled with some uniform background color and then "draw", "paint" or "paste" simple patches of color onto it, in an appropriate order. In particular, the canvas may be the frame buffer for a computer display.&lt;br /&gt;Some programs will set the pixel colors directly, but most will rely on some 2D graphics library and/or the machine's graphics card, which usually implement the following operations&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;paste a given image at a specified offset onto the canvas;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;write a string of characters with a specified font, at a given position and angle; &lt;/li&gt;&lt;br /&gt;&lt;li&gt;paint a simple geometric shape, such as a triangle defined by three corners or ,a circle with given center and radius;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;draw a line segment, arc, or simple curve with a virtual pen of given width. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Extended color models&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Text, shapes and lines are rendered with a client-specified color. Many libraries and cards provide color gradients, which are handy for the generation of smoothly-varying backgrounds, shadow effects, etc.. (See also Gouraud shading). The pixel colors can also be taken from a texture, e.g. a digital image (thus emulating rub-on screentones and the fabled "checker paint" which used to be available only in cartoons).&lt;/p&gt;&lt;p&gt;Painting a pixel with a given color usually replaces its previous color. However, many systems support painting with transparent and translucent colors, which only modify the previous pixel values. The two colors may also be combined in fancier ways, e.g. by computing their bitwise exclusive or. This technique is known as inverting color or color inversion, and is often used in graphical user interfaces for highlighting, rubber-band drawing, and other volatile painting—since re-painting the same shapes with the same color will restore the original pixel values.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Layers&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;The models used in 2D computer graphics usually do not provide for three-dimensional shapes, or three-dimensional optical phenomena such as lighting, shadows, reflection, refraction, etc.. However, they usually can model multiple layers (conceptually of ink, paper, or film; opaque, translucent, or transparent—stacked in a specific order. The ordering is usually defined by a single number (the layer's depth, or distance from the viewer).&lt;/p&gt;&lt;p&gt;Layered models are sometimes called 2 1/2-D computer graphics. They make it possible to mimic traditional drafting and printing techniques based on film and paper, such as cutting and pasting; and allow the user to edit any layer without affecting the others. For these reasons, they are used in most graphics editors. Layered models also allow better anti-aliasing of complex drawings and provide a sound model for certain techniques such as mitered joints and the even-odd rule.&lt;/p&gt;&lt;p&gt;Layered models are also used to allow the user to suppress unwanted information when viewing or printing a document, e.g. roads and/or railways from a map, certain process layers from an integrated circuit diagram, or hand annotations from a business letter.&lt;/p&gt;&lt;p&gt;In a layer-based model, the target image is produced by "painting" or "pasting" each layer, in order of decreasing depth, on the virtual canvas. Conceptually, each layer is first rendered on its own, yielding a digital image with the desired resolution which is then painted over the canvas, pixel by pixel. Fully transparent parts of a layer need not be rendered, of course. The rendering and painting may be done in parallel, i.e. each layer pixel may be painted on the canvas as soon as it is produced by the rendering procedure.&lt;/p&gt;&lt;p&gt;Layers that consist of complex geometric objects (such as text or polylines) may be broken down into simpler elements (characters or line segments, respectively), which are then painted as separate layers, in some order. However, this solution may create undesirable aliasing artifacts wherever two elements overlap the same pixel.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-6994774450066114423?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/6994774450066114423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/2d-graphics-techniques.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6994774450066114423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6994774450066114423'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/2d-graphics-techniques.html' title='2D Graphics Techniques'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-7521198640198540329</id><published>2008-04-25T06:05:00.000-07:00</published><updated>2009-06-20T12:30:09.498-07:00</updated><title type='text'>2D Computer Graphics</title><content type='html'>&lt;strong&gt;2D computer graphics&lt;/strong&gt; is the computer-based generation of digital images—mostly from two-dimensional models (such as 2D geometric models, text, and digital images) and by techniques specific to them. The word may stand for the branch of computer science that comprises such techniques, or for the models themselves.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Raster graphic sprites&lt;/strong&gt; and &lt;strong&gt;masks 2D computer graphics&lt;/strong&gt; are mainly used in applications that were originally developed upon traditional printing and drawing technologies, such as &lt;strong&gt;typography, cartography, technical drawing, advertising&lt;/strong&gt;, etc.. In those applications, the two-dimensional image is not just a representation of a real-world object, but an independent artifact with added semantic value; two-dimensional models are therefore preferred, because they give more direct control of the image than 3D computer graphics (whose approach is more akin to photography than to typography).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In many domains, such as desktop publishing, engineering, and business, a description of a document based on &lt;strong&gt;2D computer graphics&lt;/strong&gt; techniques can be &lt;strong&gt;much smaller&lt;/strong&gt; than the corresponding &lt;strong&gt;digital image&lt;/strong&gt;—often&lt;strong&gt; by a factor of 1/1000 or more&lt;/strong&gt;. This representation is also more flexible since it can be rendered at different resolutions to suit different output devices. For these reasons, documents and illustrations are often stored or transmitted as 2D graphic files.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2D computer graphics started in the 1950s, based on vector graphics devices. These were largely supplanted by raster-based devices in the following decades. The PostScript language and the X Window System protocol were landmark developments in the field.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-7521198640198540329?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/7521198640198540329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/2d-computer-graphics.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/7521198640198540329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/7521198640198540329'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/2d-computer-graphics.html' title='2D Computer Graphics'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-6591902029621554830</id><published>2008-04-23T04:26:00.000-07:00</published><updated>2009-06-20T12:30:09.505-07:00</updated><title type='text'>Subfields Of Computer Graphics</title><content type='html'>&lt;strong&gt;Geometry&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Geometry studies the representation of three-dimensional objects in a discrete digital setting. Because the appearance of an object depends largely on the exterior of the object, boundary representations are most common in computer graphics. Two dimensional surfaces are a good analogy for the objects most often used in graphics, though quite often these objects are non-manifold. Since surfaces are not finite, a discrete digital approximation is required: polygonal meshes (and to a lesser extent subdivision surfaces) are by far the most common representation, although point-based representations have been gaining some popularity in recent years. These representations are Lagrangian, meaning the spatial locations of the samples are independent. In recent years, however, Eulerian surface descriptions (i.e., where spatial samples are fixed) such as level sets have been developed into a useful representation for deforming surfaces which undergo many topological changes (with fluids being the most notable example).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Subfields Of Geometry&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Constructive solid geometry&lt;/strong&gt; - Process by which complicated objects are modelled with implicit geometric objects and boolean operations.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Discrete differential geometry&lt;/strong&gt; - a nascent field which defines geometric quantities for the discrete surfaces used in computer graphics.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Digital geometry processing&lt;/strong&gt; - surface reconstruction, simplification, fairing, mesh repair, parameterization, remeshing, mesh generation, surface compression, and surface editing all fall under this heading.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Point-based graphics&lt;/strong&gt; - a recent field which focuses on points as the fundamental representation of surfaces. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Subdivision surfaces Out-of-core mesh processing&lt;/strong&gt; - another recent field which focuses on mesh datasets that do not fit in main memory. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;Animation&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Animation studies descriptions for surfaces (and other phenomena) that move or deform over time. Historically most interest in this area has been focused on parametric and data-driven models, but in recent years physical simulation has experienced a renaissance due to the growing computational capacity of modern machines.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Subfields Of Animation&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Performance capture&lt;/li&gt;&lt;li&gt;Character animation &lt;/li&gt;&lt;li&gt;Physical simulation (e.g. cloth modeling, animation of fluid dynamics, etc.) &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;Rendering&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Rendering converts a model into an image either by simulating light transport to get physically-based photorealistic images, or by applying some kind of style as in non-photorealistic rendering. The two basic operations in realistic rendering are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Transport&lt;/strong&gt; (how much light gets from one place to another) and &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Scattering&lt;/strong&gt; (how surfaces interact with light). &lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Transport&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Transport describes how illumination in a scene gets from one place to another. Visibility is a major component of light transport.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Scattering&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Models of scattering and shading are used to describe the appearance of a surface. Although these issues may seem like problems all on their own, they are studied almost exclusively within the context of rendering.&lt;br /&gt;&lt;strong&gt;Shading&lt;/strong&gt; can be broken down into two orthogonal issues, which are often studied independently:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Scattering&lt;/strong&gt; : How light interacts with the surface at a given point. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Shading :&lt;/strong&gt; How material properties vary across the surface. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The former problem refers to scattering, i.e., the relationship between incoming and outgoing illumination at a given point. Descriptions of scattering are usually given in terms of a bidirectional scattering distribution function or BSDF. The latter issue addresses how different types of scattering are distributed across the surface (i.e., which scattering function applies where). Descriptions of this kind are typically expressed with a program called a shader. (Note that there is some confusion since the word "shader" is sometimes used for programs that describe local geometric variation.)&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Other subfields&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Physically-based rendering&lt;/strong&gt; - concerned with generating images according to the laws of geometric optics.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Real time rendering&lt;/strong&gt; - focuses on rendering for interactive applications, typically using specialized hardware like GPUs.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Non-photorealistic rendering&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Relighting&lt;/strong&gt; - recent area concerned with quickly re-rendering scenes.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-6591902029621554830?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/6591902029621554830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/subfields-of-computer-graphics.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6591902029621554830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6591902029621554830'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/subfields-of-computer-graphics.html' title='Subfields Of Computer Graphics'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-5385699671743303033</id><published>2008-04-23T04:07:00.000-07:00</published><updated>2009-06-20T12:30:09.514-07:00</updated><title type='text'>Computer Graphics</title><content type='html'>&lt;strong&gt;Computer graphics&lt;/strong&gt; is a sub-field of &lt;strong&gt;computer science&lt;/strong&gt; and is concerned with digitally synthesizing and manipulating visual content. Although the term often refers to three-dimensional computer graphics, it also encompasses two-dimensional graphics and&lt;br /&gt;image processing.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Definition&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Computer graphics&lt;/strong&gt; broadly studies the manipulation of visual and geometric information using computational techniques. Computer graphics as an academic discipline focuses on the mathematical and computational foundations of image generation and processing rather than purely aesthetic issues.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Major subfields in computer graphics might be:&lt;/strong&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Geometry:&lt;/strong&gt; studies ways to represent and process surfaces.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Animation:&lt;/strong&gt; studies with ways to represent and manipulate motion.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Rendering:&lt;/strong&gt; studies algorithms to reproduce light transport.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Imaging:&lt;/strong&gt; studies image acquisition or image editing. &lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-5385699671743303033?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/5385699671743303033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/computer-graphics.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/5385699671743303033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/5385699671743303033'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/computer-graphics.html' title='Computer Graphics'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-226937929209542486</id><published>2008-04-22T07:06:00.000-07:00</published><updated>2009-06-20T12:30:09.522-07:00</updated><title type='text'>Types Of Operating System</title><content type='html'>Generally,there are four &lt;strong&gt;Types of Operating System: &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Real-time Operating System&lt;/strong&gt;:&lt;br /&gt;&lt;p align="left"&gt;A real-time operating system (RTOS) is an operating system that guarantees a certain capability within a specified time constraint. For example, an operating system might be designed to ensure that a certain object was available for a robot on an assembly line. In what is usually called a "hard" real-time operating system, if the calculation could not be performed for making the object available at the designated time, the operating system would terminate with a failure. In a "soft" real-time operating system, the assembly line would continue to function but the production output might be lower as objects failed to appear at their designated time, causing the robot to be temporarily unproductive.&lt;/p&gt;&lt;p align="left"&gt;In general, real-time operating systems are said to require: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;Multitasking&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Process threads that can be prioritized.&lt;/li&gt;&lt;li&gt;A sufficient number of interrupt levels.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Real-time operating systems are often required in small embedded operating systems that are packaged as part of microdevices. Some kernels can be considered to meet the requirements of a real-time operating system. However, since other components, such as device drivers, are also usually needed for a particular solution, a real-time operating system is usually larger than just the kernel.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Single-user, single-tasking operating system:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;As the name implies, this operating system is designed to manage the computer so that one user can effectively do one thing at a time. The Palm O.S. for Palm handheld computers is a good example of a modern single-user, single-task operating system.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Single-user, multi-tasking operating system: &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This is the type of operating system most people use on there desktop and laptop computers today. Windows 98 and the Mac O.S. are both examples of an operating system that will let a single user has several programs in operation at the same time. For example, it's entirely possible for a Windows user to be writing a note in a word processor while downloading a file from the Internet while printing the text of an e-mail message.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Multi-user operating systems:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;A multi-user operating system allows many different users to take advantage of the computer's resources simultaneously. The operating system must make sure that the requirements of the various users are balanced, and that each of the programs they are using has sufficient and separate resources so that a problem with one user doesn't affect the entire community of users. Unix, VMS, and mainframe operating systems, such as MVS, are examples of multi-user operating systems. It's important to differentiate here between multi-user operating systems and single-user operating systems that support networking. Windows 2000 and Novell Netware can each support hundreds or thousands of networked users, but the operating systems themselves aren't true multi-user operating systems. The system administrator is the only user for Windows 2000 or Netware. The network support and the entire remote user logins the network enables are, in the overall plan of the operating system, a program being run by the administrative user.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-226937929209542486?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/226937929209542486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/types-of-operating-system.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/226937929209542486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/226937929209542486'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/types-of-operating-system.html' title='Types Of Operating System'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-1313668712064867702</id><published>2008-04-22T06:29:00.000-07:00</published><updated>2009-06-20T12:30:09.532-07:00</updated><title type='text'>Functions of Operating System</title><content type='html'>&lt;p&gt;In any computer, &lt;strong&gt;The Operating System&lt;/strong&gt; will perform the following funtions: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Controls the backing store and peripherals such as disk drives and printers.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Controls the loading and running of programs.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Organises the use of memory between programs.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Organises processing time between programs and users.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Organises priorities between program and users.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Maintains security and access rights of users.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Deals with errors and user instructions.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;On a personal computer the operating system will: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Deal with the transfer of programs in and out of memory.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Allow the user to save files to a backing store.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Control the transfer of data to peripherals such as printers.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Provide the interface between user and computer - for example, Windows XP and OSX. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;In a larger computer such as a main frame the operating system works on the same principles. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-1313668712064867702?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/1313668712064867702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/functions-of-operating-system.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/1313668712064867702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/1313668712064867702'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/functions-of-operating-system.html' title='Functions of Operating System'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-5249125196609559545</id><published>2008-04-21T13:32:00.000-07:00</published><updated>2009-06-20T17:35:33.825-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Dot Net'/><title type='text'>Technical Approach for Migrating VB 6.0 Application to VB .NET</title><content type='html'>If you upgrade a Visual Basic 6.0 project group or an n-tier application to Visual Basic .NET, you must upgrade one project or tier at a time.&lt;br /&gt;&lt;br /&gt;If your three-tier application includes a client component, a business component, and a data access component, you should upgrade the application in the following order:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Client component, Business component, Data access component &lt;/li&gt;&lt;li&gt;Business component, Data access component &lt;/li&gt;&lt;li&gt;Data access component &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;In an n-tier application, always upgrade the client tier first, and then upgrade other tiers on the dependency tree. You should follow this order for two reasons: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;This approach allows you to keep the application working. When you upgrade the client, you break and work with only one component of the application. All of the other components continue to work the same way that they did previously. With this approach, you isolate the work area. Alternately, if you upgrade the data tier first, suddenly you break the data tier and the components that depend on the data tier. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Visual Basic 6.0 locks type libraries (TypeLibs). This creates a problem if you need to rebuild the TypeLib or recompile the underlying dynamic-link library (DLL). If you upgrade the business tier first and then upgrade the client, you must continually stop and restart Visual Basic 6.0 every time you change the middle tier. Consider the following workflow: &lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;Upgrade the middle tier. Change the Visual Basic 6.0 client to access the middle tier. Run the middle tier. &lt;/li&gt;&lt;li&gt;Change the Visual Basic 6.0 client to access the middle tier. Run the middle tier. &lt;/li&gt;&lt;li&gt;Run the middle tier. &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;If you want to change the .NET DLL, you must then close Visual Basic 6.0, recompile in .NET, restart Visual Basic 6.0, and so on. You can avoid this problem if you upgrade the client first and then upgrade the middle tier.&lt;/p&gt;&lt;p&gt;To upgrade each Visual Basic 6.0 application, use the Upgrade tool that is included with Visual Basic .NET. The Upgrade tool is started when you use Visual Basic .NET to open a Visual Basic 6.0 project. When you use the Upgrade tool, the Visual Basic 6.0 project is not changed, and a new Visual Basic .NET project is created. Before you upgrade a Visual Basic 6.0 project, it is best to prepare it for upgrade.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-5249125196609559545?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/5249125196609559545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/technical-approach-for-migrating-vb-60.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/5249125196609559545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/5249125196609559545'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/technical-approach-for-migrating-vb-60.html' title='Technical Approach for Migrating VB 6.0 Application to VB .NET'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-6636043083189173885</id><published>2008-04-21T13:26:00.000-07:00</published><updated>2009-06-20T17:35:33.825-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Dot Net'/><title type='text'>Migration Strategy for Upgrading VB 6.0 Application to VB .NET</title><content type='html'>When we start developing any new software solution, certain steps are taken. We begin with a plan, identify processes, gather requirements, and eventually build the architecture of the solution. Once things start taking shape, we start with development. Why do we choose this path? We all know that the path for doing the analysis and design up front has been proven to save a lot of time and cost for software development. In order to migrate projects from any prior version of Visual Basic, the path for analysis and design up front yields the best results.&lt;br /&gt;&lt;br /&gt;The analysis part is slightly different in this case. We begin by studying the current application, and try to identify code blocks that require changes. In order to migrate your VB applications, it is not recommended that you directly convert your existing applications to .NET and fix the converted code in .NET. It is always better to take the existing application to the "Migration Ready" stage.&lt;br /&gt;&lt;br /&gt;Here are the steps for migrating applications from VB 6.0 to VB .NET:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Evaluate the project and create a migration strategy. &lt;/li&gt;&lt;li&gt;Make the changes in VB 6.0 project and create a "Migration Strategy." &lt;/li&gt;&lt;li&gt;Migrate using the Visual Basic .NET Migration tool. &lt;/li&gt;&lt;li&gt;If the changes are not at par, make more changes and use the Migration tool (repeat Steps 2 and 3 as necessary). &lt;/li&gt;&lt;li&gt;Get developers at speed and make changes in .NET. &lt;/li&gt;&lt;li&gt;Build the .NET solution. &lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-6636043083189173885?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/6636043083189173885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/migration-strategy-for-upgrading-vb-60.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6636043083189173885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6636043083189173885'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/migration-strategy-for-upgrading-vb-60.html' title='Migration Strategy for Upgrading VB 6.0 Application to VB .NET'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-2324929421869156840</id><published>2008-04-21T13:19:00.000-07:00</published><updated>2009-06-20T17:35:33.825-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Dot Net'/><title type='text'>Migrating Applications from VB 6.0 to VB .NET</title><content type='html'>&lt;strong&gt;&lt;span style="color:#333333;"&gt;Introduction&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#333333;"&gt;Microsoft Visual Basic has had many evolutions since its original release, Visual Basic 1.0. The release of Visual Basic .NET is the biggest evolution yet. The language has been redesigned to take advantage of the .NET Framework. By leveraging the features that the .NET Framework provides, Visual Basic supports language features such as code inheritance, visual forms inheritance, and multi-threading. The object model is more extensive than earlier versions, and Visual Basic .NET totally integrates with the .NET Framework. Therefore, interaction between components written in other .NET languages is very efficient. &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#333333;"&gt;Benefits Reaped:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a name="more"&gt;&lt;span style="color:#333333;"&gt;Visual Basic .NET is the next version of Visual Basic. Rather than simply adding some new features to Visual Basic 6.0, Microsoft has reengineered the product to make it easier than ever before to write distributed applications such as Web and enterprise n-tier systems. Visual Basic .NET has two new forms packages (Windows Forms and Web Forms); a new version of ADO for accessing disconnected data sources; and streamlined language, removing legacy keywords, improving type safety, and exposing low-level constructs that advanced developers require.&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color:#333333;"&gt;These new features open new doors for the Visual Basic developer: With Web Forms and ADO .NET, you now can rapidly develop scalable Web sites; with inheritance, the language now truly supports object-oriented programming; Windows Forms natively supports accessibility and visual inheritance; and deploying your applications is now as simple as copying your executables and components from directory to directory.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color:#333333;"&gt;Visual Basic .NET is now fully integrated with the other Microsoft Visual Studio .NET languages. Not only can you develop application components in different programming languages, your classes also can now inherit from classes written in other languages using cross-language inheritance. With the unified debugger, you can now debug multiple language applications, irrespective of whether they are running locally or on remote computers. Finally, whatever language you use, the Microsoft .NET Framework provides a rich set of APIs for Microsoft Windows® and the Internet.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color:#333333;"&gt;There were two options to consider when designing Visual Basic .NET—retrofit the existing code base to run on top of the .NET Framework, or build from the ground up, taking full advantage of the platform. To deliver the features most requested by customers (for example, inheritance and threading), to provide full and uninhibited access to the platform, and to ensure that Visual Basic moves forward into the next generation of Web applications, the right decision was to build from the ground up on the new platform.        For example, many of the new features found in Windows Forms could have been added to the existing code base as new controls or more properties. However, this would have been at the cost of all the other great features inherent to Windows Forms, such as security and visual inheritance.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color:#333333;"&gt;One of Microsoft's major goals was to ensure Visual Basic code could fully interoperate with code written in other languages, such as Microsoft Visual C# or Microsoft Visual C++, and enable the Visual Basic developer to harness the power of the .NET Framework simply, without resorting to the programming workarounds traditionally required to make Windows APIs work. Visual Basic now has the same variable types, arrays, user-defined types, classes, and interfaces as Visual C++ and any other language that targets the Common Language Runtime; however, we had to remove some features, such as fixed-length strings and non-zero based arrays from the language.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color:#333333;"&gt;Visual Basic is now a true object-oriented language; some unintuitive and inconsistent features such as GoSub/Return and DefInt have been removed from the language.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="color:#333333;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color:#333333;"&gt;The result is a re-energized Visual Basic, which will continue to be the most productive tool for creating Windows-based applications, and is now positioned to be the best tool for creating the next-generation Web sites.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-2324929421869156840?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/2324929421869156840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/migrating-applications-from-vb-60-to-vb.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2324929421869156840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2324929421869156840'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/migrating-applications-from-vb-60-to-vb.html' title='Migrating Applications from VB 6.0 to VB .NET'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-3461308657477664275</id><published>2008-04-16T07:07:00.000-07:00</published><updated>2009-06-20T12:30:09.565-07:00</updated><title type='text'>Different Types Of Operating Systems</title><content type='html'>A basic list of the &lt;strong&gt;different types of operating systems&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;GUI&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Short for Graphical User Interface, a GUI Operating System contains graphics and icons and is commonly navigated by using a computer mouse&lt;br /&gt;&lt;p&gt;Some examples of GUI Operating Systems&lt;/p&gt;&lt;ul&gt;&lt;li&gt;System 7.x&lt;/li&gt;&lt;li&gt;Windows 98&lt;/li&gt;&lt;li&gt;Windows CE&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;Multi-user&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;A multi-user Operating System allows for multiple users to use the same computer at the same time and/or different times.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Some examples of multi-user Operating Systems &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Linux&lt;/li&gt;&lt;li&gt;Unix&lt;/li&gt;&lt;li&gt;Windows 2000 &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Multiprocessing&lt;/strong&gt; &lt;/p&gt;An Operating System capable of supporting and utilizing more than one computer processor.&lt;br /&gt;Some examples of multiprocessing Operating Systems&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Linux&lt;/li&gt;&lt;li&gt;Unix&lt;/li&gt;&lt;li&gt;Windows 2000 &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Multitasking &lt;/strong&gt;&lt;/p&gt;An Operating system that is capable of allowing multiple software processes to run at the same time.&lt;br /&gt;Some examples of multitasking Operating Systems.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Unix&lt;/li&gt;&lt;li&gt;Windows 2000 &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Multithreading&lt;/strong&gt; &lt;/p&gt;Operating systems that allow different parts of a software program to run concurrently. Operating systems that would fall into this category are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Linux&lt;/li&gt;&lt;li&gt;Unix&lt;/li&gt;&lt;li&gt;Windows 2000&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-3461308657477664275?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/3461308657477664275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/different-types-of-operating-systems.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/3461308657477664275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/3461308657477664275'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/different-types-of-operating-systems.html' title='Different Types Of Operating Systems'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-7464406047202402075</id><published>2008-04-16T04:32:00.000-07:00</published><updated>2009-06-20T12:30:09.241-07:00</updated><title type='text'>Graphical User Interface</title><content type='html'>Most modern computer systems contain &lt;strong&gt;Graphical User Interfaces&lt;/strong&gt;. In some computer systems the GUI is integrated into the kernel—for example, in the original implementations of Microsoft Windows and Mac OS, the graphical subsystem was actually part of the kernel. Other operating systems, some older ones and some modern ones, are modular, separating the graphics subsystem from the kernel and the Operating System. In the 1980's UNIX, VMS and many others had operating systems that were built this way. Today Linux, and Mac OS X are also built this way.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Many computer operating systems allow the user to install or create any user interface they desire. The X Window System in conjunction with GNOME or KDE is a commonly found setup on most Unix and Unix-like (BSD, Linux, Minix) systems. Numerous Unix-based GUIs have existed over time, most derived from X11. Competition among the various vendors of Unix (HP, IBM, Sun) led to much fragmentation, though an effort to standardize in the 1990s to COSE and CDE failed for the most part due to various reasons, eventually eclipsed by the widespread adoption of GNOME and KDE. Prior to open source-based toolkits and desktop environments, Motif was the prevalent toolkit/desktop combination (and was the basis upon which CDE was developed).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Graphical user interfaces evolve over time. For example, Windows has modified its user interface almost every time a new major version of Windows is released, and the Mac OS GUI changed dramatically with the introduction of Mac OS X in 2001.&lt;br /&gt;&lt;br /&gt;Please follow these links for details on other tasks performed by Operating System:&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/memory-management-on-operating-systems.html"&gt;Memory Management&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/process-management.html"&gt;Process Management&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/disk-and-file-system-management.html"&gt;Disk and File Management&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/networking.html"&gt;Networking&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/security.html"&gt;Security&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/graphical-user-interface.html"&gt;Graphical User Interface&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/device-driver.html"&gt;Device Driver Management&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-7464406047202402075?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/7464406047202402075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/graphical-user-interface.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/7464406047202402075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/7464406047202402075'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/graphical-user-interface.html' title='Graphical User Interface'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-2736208778240622546</id><published>2008-04-16T04:22:00.000-07:00</published><updated>2009-06-20T12:30:09.256-07:00</updated><title type='text'>Networking</title><content type='html'>Current operating systems generally support a variety of &lt;strong&gt;networking protocols&lt;/strong&gt;. Most are capable of using the TCP/IP networking protocols. This means that computers running dissimilar operating systems can participate in a common network for sharing resources such as computing, files, printers, and scanners using either wired or wireless connections.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Many operating systems also support one or more vendor-specific legacy networking protocols as well, for example, SNA on IBM systems, DECnet on systems from Digital Equipment Corporation, and Microsoft-specific protocols on Windows. Specific protocols for specific tasks may also be supported such as NFS for file access.&lt;br /&gt;&lt;br /&gt;Please follow these links for details on other tasks performed by Operating System:&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/memory-management-on-operating-systems.html"&gt;Memory Management&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/process-management.html"&gt;Process Management&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/disk-and-file-system-management.html"&gt;Disk and File Management&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/networking.html"&gt;Networking&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/security.html"&gt;Security&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/graphical-user-interface.html"&gt;Graphical User Interface&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/device-driver.html"&gt;Device Driver Management&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-2736208778240622546?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/2736208778240622546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/networking.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2736208778240622546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2736208778240622546'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/networking.html' title='Networking'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-6097001086549721412</id><published>2008-04-16T04:18:00.000-07:00</published><updated>2009-06-20T12:30:09.248-07:00</updated><title type='text'>Device driver</title><content type='html'>A &lt;strong&gt;device driver&lt;/strong&gt; is a specific type of computer software developed to allow interaction with hardware devices. Typically this constitutes an interface for communicating with the device, through the specific computer bus or communications subsystem that the hardware is connected to, providing commands to and/or receiving data from the device, and on the other end, the requisite interfaces to the operating system and software applications. It is a specialized hardware-dependent computer program which is also operating system specific that enables another program, typically an operating system or applications software package or computer program running under the operating system kernel, to interact transparently with a hardware device, and usually provides the requisite interrupt handling necessary for any necessary asynchronous time-dependent hardware interfacing needs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The &lt;strong&gt;key design goal of device drivers is abstraction&lt;/strong&gt;. Every model of hardware (even within the same class of device) is different. Newer models also are released by manufacturers that provide more reliable or better performance and these newer models are often controlled differently. Computers and their operating systems cannot be expected to know how to control every device, both now and in the future. To solve this problem, OSes essentially dictate how every type of device should be controlled. The function of the device driver is then to translate these OS mandated function calls into device specific calls. In theory a new device, which is controlled in a new manner, should function correctly if a suitable driver is available. This new driver will ensure that the device appears to operate as usual from the operating systems' point of view for any person.&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Please follow these links for details on other tasks performed by Operating System: &lt;/p&gt;&lt;p&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/memory-management-on-operating-systems.html"&gt;Memory Management&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/process-management.html"&gt;Process Management&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/disk-and-file-system-management.html"&gt;Disk and File Management&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/networking.html"&gt;Networking&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/security.html"&gt;Security&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/graphical-user-interface.html"&gt;Graphical User Interface&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/device-driver.html"&gt;Device Driver Management&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-6097001086549721412?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/6097001086549721412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/device-driver.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6097001086549721412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6097001086549721412'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/device-driver.html' title='Device driver'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-8515131627240537069</id><published>2008-04-16T04:08:00.000-07:00</published><updated>2009-06-20T12:30:09.265-07:00</updated><title type='text'>Security</title><content type='html'>Many&lt;strong&gt; operating systems&lt;/strong&gt; include some level of security. &lt;strong&gt;Security&lt;/strong&gt; is based on the two ideas that:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The operating system provides access to a number of resources, directly or indirectly, such as files on a local disk, privileged system calls, personal information about users, and the services offered by the programs running on the system;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The operating system is capable of distinguishing between some requesters of these resources who are authorized (allowed) to access the resource, and others who are not authorized (forbidden). While some systems may simply distinguish between "privileged" and "non-privileged", systems commonly have a form of requester identity, such as a user name. Requesters, in turn, divide into two categories:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Internal security&lt;/strong&gt;: an already running program. On some systems, once a program is running it has no limitations, but commonly the program has an identity which it keeps and is used to check all of its requests for resources.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;External security&lt;/strong&gt;: a new request from outside the computer, such as a login at a connected console or some kind of network connection. To establish identity there may be a process of authentication. Often a username must be quoted, and each username may have a password. Other methods of authentication, such as magnetic cards or biometric data, might be used instead. In some cases, especially connections from the network, resources may be accessed with no authentication at all.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In addition to the allow/disallow model of security, a system with a high level of security will also offer auditing options. These would allow tracking of requests for access to resources (such as, "who has been reading this file?").&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Internal security&lt;/strong&gt;&lt;br /&gt;Internal security can be thought of as protecting the computer's resources from the programs concurrently running on the system. Most operating systems set programs running natively on the computer's processor, so the problem arises of how to stop these programs doing the same task and having the same privileges as the operating system (which is after all just a program too). Processors used for general purpose operating systems generally have a hardware concept of privilege. Generally less privileged programs are automatically blocked from using certain hardware instructions, such as those to read or write from external devices like disks. Instead, they have to ask the privileged program (operating system kernel) to read or write. The operating system therefore gets the chance to check the program's identity and allow or refuse the request.&lt;br /&gt;&lt;a id="External_security" name="External_security"&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;External security&lt;/strong&gt;&lt;br /&gt;Typically an operating system offers (or hosts) various services to other network computers and users. These services are usually provided through ports or numbered access points beyond the operating system's network address. Services include offerings such as file sharing, print services, email, web sites, and file transfer protocols (FTP), most of which can have compromised security.&lt;br /&gt;&lt;br /&gt;At the front line of security are hardware devices known as firewalls or intrusion detection/prevention systems. At the operating system level, there are a number of software firewalls available, as well as intrusion detection/prevention systems. Most modern operating systems include a software firewall, which is enabled by default. A software firewall can be configured to allow or deny network traffic to or from a service or application running on the operating system. Therefore, one can install and be running an insecure service, such as Telnet or FTP, and not have to be threatened by a security breach because the firewall would deny all traffic trying to connect to the service on that port.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;An alternative strategy, and the only sandbox strategy available in systems that do not meet the Popek and Goldberg virtualization requirements, is the operating system not running user programs as native code, but instead either emulates a processor or provides a host for a p-code based system such as Java.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Internal security is especially relevant for multi-user systems; it allows each user of the system to have private files that the other users cannot tamper with or read. Internal security is also vital if auditing is to be of any use, since a program can potentially bypass the operating system, inclusive of bypassing auditing.&lt;br /&gt;&lt;br /&gt;Please follow these links for details on other tasks performed by Operating System:&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/memory-management-on-operating-systems.html"&gt;Memory Management&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/process-management.html"&gt;Process Management&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/disk-and-file-system-management.html"&gt;Disk and File Management&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/networking.html"&gt;Networking&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/security.html"&gt;Security&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/graphical-user-interface.html"&gt;Graphical User Interface&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/device-driver.html"&gt;Device Driver Management&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-8515131627240537069?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/8515131627240537069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/security.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/8515131627240537069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/8515131627240537069'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/security.html' title='Security'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-4271260855117735457</id><published>2008-04-16T04:00:00.000-07:00</published><updated>2009-06-20T12:30:09.573-07:00</updated><title type='text'>Disk and file system management</title><content type='html'>Generally, operating systems include support for &lt;strong&gt;file systems&lt;/strong&gt;, which allow the user to segment a given area of memory (sometimes RAM, but usually a disk) into individual files.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Modern file systems comprise a hierarchy of directories. While the idea is conceptually similar across all general-purpose file systems, some differences in implementation exist. Two noticeable examples of this are the character used to separate directories, and case sensitivity.&lt;br /&gt;Unix demarcates its path components with a slash (/), a convention followed by operating systems that emulated it or at least its concept of hierarchical directories, such as Linux, Amiga OS and Mac OS X. MS-DOS also emulated this feature, but had already also adopted the CP/M convention of using slashes for additional options to commands, so instead used the backslash (\) as its component separator. Microsoft Windows continues with this convention; Japanese editions of Windows use ¥, and Korean editions use ₩.[1] Prior to Mac OS X, versions of Mac OS use a colon (:) for a path separator. RISC OS uses a period (.).&lt;br /&gt;&lt;br /&gt;Unix and Unix-like operating systems allow for any character in file names other than the slash and NUL characters (including line feed (LF) and other control characters). Unix file names are case sensitive, which allows multiple files to be created with names that differ only in case. By contrast, Microsoft Windows file names are not case sensitive by default. Windows also has a larger set of punctuation characters that are not allowed in file names.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;File systems may provide journaling, which provides safe recovery in the event of a system crash. A journaled file system writes information twice: first to the journal, which is a log of file system operations, then to its proper place in the ordinary file system. In the event of a crash, the system can recover to a consistent state by replaying a portion of the journal. In contrast, non-journaled file systems typically need to be examined in their entirety by a utility such as fsck or chkdsk. Soft updates is an alternative to journaling that avoids the redundant writes by carefully ordering the update operations. Log-structured file systems and ZFS also differ from traditional journaled file systems in that they avoid inconsistencies by always writing new copies of the data, eschewing in-place updates.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Many Linux distributions support some or all of ext2, ext3, ReiserFS, Reiser4, GFS, GFS2, OCFS, OCFS2, and NILFS. Linux also has full support for XFS and JFS, along with the FAT file systems, and NTFS.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Microsoft Windows includes support for FAT12, FAT16, FAT32, and NTFS. The NTFS file system is the most efficient and reliable of the four Windows file systems, and as of Windows Vista, is the only file system which the operating system can be installed on. Windows Embedded CE 6.0 introduced ExFAT, a file system suitable for flash drives.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Mac OS X supports HFS+ with journaling as its primary file system. It is derived from the Hierarchical File System of the earlier Mac OS. Mac OS X has facilities to read and write FAT16, FAT32, NTFS, UDF, and other file systems, but cannot be installed to them.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Common to all these (and other) operating systems is support for file systems typically found on removable media. FAT12 is the file system most commonly found on floppy discs. ISO 9660 and Universal Disk Format are two common formats that target Compact Discs and DVDs, respectively. Mount Rainier is a newer extension to UDF supported by Linux 2.6 kernels and Windows Vista that facilitates rewriting to DVDs in the same fashion as has been possible with floppy disks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-4271260855117735457?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/4271260855117735457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/disk-and-file-system-management.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/4271260855117735457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/4271260855117735457'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/disk-and-file-system-management.html' title='Disk and file system management'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-3285454215089720736</id><published>2008-04-16T03:49:00.000-07:00</published><updated>2009-06-20T12:30:09.273-07:00</updated><title type='text'>Process Management</title><content type='html'>A program running on a computer, whether visible to the user or not, is commonly referred to as a &lt;strong&gt;process&lt;/strong&gt;. &lt;strong&gt;Process management&lt;/strong&gt; refers to the facilities provided by the OS to support the creation, execution, and destruction of processes.&lt;br /&gt;&lt;br /&gt;Creating a process involves allocating memory space for the process, loading the program's executable code into memory, telling the scheduler to run the program, and other tasks specific to the operating system.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The scheduler is the portion of the operating system that causes the program to be executed on the CPU, that is, 'scheduled' for execution. If the scheduler supports preemptive multitasking, it can change the program currently executing on the CPU to that of another program when it determines that the first program has executed for a predetermined amount of time. The amount of time allocated to a given process may depend on the needs of the process in question and the user's priority level for that process.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Destroying a process involves releasing any resources (including dynamically allocated memory, file references, and I/O ports) held by the program and ensuring that a different program is scheduled for execution.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Depending on the operating system, process management can be more simple or more complex than treated above. Several examples will illustrate:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The operating systems originally deployed on mainframes, and, much later, the original microcomputer operating systems, only supported one program at a time, requiring only a very basic scheduler. Each program was in complete control of the machine while it was running.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Multitasking (timesharing) first came to mainframes in the 1960's and to microcomputers in the mid-1980's, although, in both cases, for the most part, it wasn't until years later that the capability was perfected and made widely available.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Classic Mac OS generally supported only cooperative multitasking, Application programs running with classic Mac OS must yield CPU time to the scheduler by calling a special function for that purpose.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Classic AmigaOS did not properly track resources allocated by processes at runtime. If a process had to be terminated, the resources would be lost to programs run in the future, until the machine was restarted.&lt;br /&gt;&lt;br /&gt;Please follow these links for details on other tasks performed by Operating System:&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/memory-management-on-operating-systems.html"&gt;Memory Management&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/process-management.html"&gt;Process Management&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/disk-and-file-system-management.html"&gt;Disk and File Management&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/networking.html"&gt;Networking&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/security.html"&gt;Security&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/graphical-user-interface.html"&gt;Graphical User Interface&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/device-driver.html"&gt;Device Driver Management&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-3285454215089720736?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/3285454215089720736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/process-management.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/3285454215089720736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/3285454215089720736'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/process-management.html' title='Process Management'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-4728845838952788515</id><published>2008-04-16T03:36:00.000-07:00</published><updated>2009-06-20T12:30:09.281-07:00</updated><title type='text'>Memory Management On Operating Systems</title><content type='html'>Memory management is the act of managing computer memory. In its simpler forms, this involves providing ways to allocate portions of memory to programs at their request, and freeing it for reuse when no longer needed. The management of main memory is critical to the computer system.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Virtual memory makes the system appear to have more memory than it actually has by sharing it between competing processes as they need it. Virtual memory does more than just make your computer's memory go further.Virtual memory systems separate the memory addresses used by a process from actual physical addresses, allowing separation of processes and increasing the effectively available amount of RAM using disk swapping. The quality of the virtual memory manager can have a big impact on overall system performance.&lt;br /&gt;&lt;br /&gt;Garbage collection is the automated allocation, and deallocation of computer memory resources for a program. This is generally implemented at the programming language level and is in opposition to manual memory management, the explicit allocation and deallocation of computer memory resources The principal goals of the operating system's memory management are:&lt;br /&gt;to provide memory space to enable several processes to be executed at the same time to provide a satisfactory level of performance for the system users to protect each programs resources to share (if desired) memory space between processes to make the addressing of memory space as transparent as possible for the programmer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Memory management systems on multi-tasking operating systems usually deal with the following issues.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Relocation&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In systems with virtual memory, programs in memory must be able to reside in different parts of the memory at different times. This is because when the program is swapped back into memory after being swapped out for a while it can not always be placed in the same location. Memory management in the operating system should therefore be able to relocate programs in memory and handle memory references in the code of the program so that they always point to the right location in memory.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Protection&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Memory protectionProcesses should not be able to reference the memory for another process without permission. This is called memory protection, and prevents malicious or malfunctioning code in one program from interfering with the operation of other running programs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Sharing&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Shared memoryEven though the memory for different processes is protected from each other different processes should be able to share information and therefore access the same part of memory.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Logical Organization&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Programs are often organized in modules. Some of these modules could be shared between different programs, some are read only and some contain data that can be modified. The memory management is responsible for handling this logical organization that is different from the physical linear address space. One way to arrange this organization is segmentation.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Physical Organization&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Memory is usually divided into fast primary storage and slow secondary storage. Memory management in the operating system handles moving information between these two levels of memory.&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Please follow these links for details on other tasks performed by Operating System: &lt;/p&gt;&lt;p&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/memory-management-on-operating-systems.html"&gt;Memory Management&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/process-management.html"&gt;Process Management&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/disk-and-file-system-management.html"&gt;Disk and File Management&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/networking.html"&gt;Networking&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/security.html"&gt;Security&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/graphical-user-interface.html"&gt;Graphical User Interface&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/device-driver.html"&gt;Device Driver Management&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-4728845838952788515?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/4728845838952788515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/memory-management-on-operating-systems.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/4728845838952788515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/4728845838952788515'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/memory-management-on-operating-systems.html' title='Memory Management On Operating Systems'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-8399438993932545216</id><published>2008-04-13T09:22:00.000-07:00</published><updated>2009-06-20T17:35:33.826-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Dot Net'/><title type='text'>Maximum Message Size For Web Services (.NET 3.5)</title><content type='html'>A new introduction to .NET 3.5 is the ability to limit the size of the incoming messages when using Web services. Apparently this is to help combat Denial of Service (DoS) attacks.&lt;br /&gt;&lt;br /&gt;However, it is not clear how to change this setting, its simple when you know how. In you App.Config, or Web.Config you should have a Bindings section for each of web services references. Within this there are all sorts of useful settings, however by default the maximum message size is quite small, so to alter this you must change maxBufferSize and maxRecievedMessageSize. Now don't go crazy just up it to what you may need, this may be quite large if you are building all your internal applications through a web service layer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-8399438993932545216?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/8399438993932545216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/maximum-message-size-for-web-services.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/8399438993932545216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/8399438993932545216'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/maximum-message-size-for-web-services.html' title='Maximum Message Size For Web Services (.NET 3.5)'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-2809719576473227696</id><published>2008-04-13T09:17:00.000-07:00</published><updated>2009-06-20T17:35:33.826-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Dot Net'/><title type='text'>C# Coalesce</title><content type='html'>Although this has been around for a long time and this is slightly off topic, I needed it this week, and just think it is worth mentioning. With objects you occasionally need to know if they are null, and if they are get something else, or do something else. This used to be very convoluted with .NET 1.1:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;strong&gt;if (a != null)&lt;br /&gt;{&lt;br /&gt;return a;&lt;br /&gt;}&lt;br /&gt;else if (b != null)&lt;br /&gt;{&lt;br /&gt;return b;&lt;br /&gt;}&lt;br /&gt;else if (c!= null)&lt;br /&gt;{&lt;br /&gt;return c;&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;return new object();&lt;br /&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now you can simply use this (.NET 2.0 and above):&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;strong&gt;return a ?? b ?? c ?? new object();&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now you can not use this with types that get default values, such as Integer's, or boolean's, however still very usefull.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-2809719576473227696?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/2809719576473227696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/c-coalesce.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2809719576473227696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2809719576473227696'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/c-coalesce.html' title='C# Coalesce'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-2110402064361545783</id><published>2008-04-12T12:42:00.000-07:00</published><updated>2009-06-20T12:30:09.595-07:00</updated><title type='text'>Programmatically retrieving Site Usage in MOSS 2007</title><content type='html'>Site Usage reports can be retrieved programmatically by using the GetUsageData method from the SPWeb class. This method would return a Data Table that contains information about the usage of the site based on the specified type of report, interval, number of columns and the last day to display. The GetUsageData method can be obtained from the Microsoft.SharePoint Namespace.&lt;br /&gt;&lt;br /&gt;Alternatively site usage reports can also be viewed from the site settings menu. However this option is available when it is enabled from the Central Administration's Usage Analysis Logging. The log file is located by default in the 12 hive of SharePoint in the LOGS folder. However there is an option available in central administration to change the logging path.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-2110402064361545783?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/2110402064361545783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/programmatically-retrieving-site-usage.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2110402064361545783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2110402064361545783'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/programmatically-retrieving-site-usage.html' title='Programmatically retrieving Site Usage in MOSS 2007'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-5749933932892238455</id><published>2008-04-12T12:23:00.000-07:00</published><updated>2009-06-20T12:30:09.603-07:00</updated><title type='text'>Business Data Catalog Overview</title><content type='html'>&lt;p&gt;The Business Data Catalog feature of Microsoft Office SharePoint Server 2007 provides an easy way to integrate business data from back-end server applications, such as SAP or Siebel, with your corporate portal to provide rich solutions for end users without writing any code. You register business data exposed in databases or through Web services in the Business Data Catalog by creating metadata that describes the database or Web service. The Business Data Catalog then uses this metadata to make the right calls into the data source to retrieve the relevant data. &lt;/p&gt;&lt;p&gt;After you register a data source in the Business Data Catalog, the business data entities are available for use by any of the following business data features: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Business Data Web Parts&lt;/strong&gt; Generic Web Parts that display any entity from the Business Data Catalog, without deploying new code. The Web Parts provide customization, Web Part connections, and the standard Microsoft Windows SharePoint Services look-and-feel capabilities (paging, filtering, and style). &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Business Data in Lists&lt;/strong&gt; New field type that allows you to add any entity defined in the Business Data Catalog to a SharePoint list or document library. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Business Data Actions&lt;/strong&gt; Business Data Actions bridge the gap between Office SharePoint Server 2007 and a native application user interface by providing a link back to the back-end data source. You can use Business Data Actions to build applications with write-back scenarios, such as a Customer Profile view that allows a user to update profile information directly in a back-end server application, such as SAP or Siebel. Actions are implemented as links, so you can also use actions to perform simple actions such as send an e-mail message or open a customer’s home page. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Business Data Search&lt;/strong&gt; Offers full-text search of the data sources registered in the Business Data Catalog. You can create new search result types based on the specific data entities registered in the Business Data Catalog. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Business Data in User Profiles&lt;/strong&gt; You can augment Office SharePoint Server 2007 user profiles from any external data source registered in the Business Data Catalog. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-5749933932892238455?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/5749933932892238455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/business-data-catalog-overview.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/5749933932892238455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/5749933932892238455'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/business-data-catalog-overview.html' title='Business Data Catalog Overview'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-1895874497161212858</id><published>2008-04-11T12:13:00.000-07:00</published><updated>2009-06-20T12:30:09.611-07:00</updated><title type='text'>Excel Services - Architecture</title><content type='html'>Excel Services is built on the SharePoint products and technologies platform.  There are three core components of Excel Services:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Excel Calculation Service &lt;/li&gt;&lt;li&gt;Excel Web Access &lt;/li&gt;&lt;li&gt;Excel Web Service&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Here is what each of these components do.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Excel Web Access&lt;/strong&gt; – This is a web-part in SharePoint that performs the “rendering” (development team speak for “creating the HTML”) of Excel Workbooks on a web page. This is perhaps the most visible component for the end user.  For those of you familiar with SharePoint, you can use it like any other web part in SharePoint to create a wide range of web pages. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Excel Web Services&lt;/strong&gt; – This component provides the programmatic access that I talked about yesterday.  It is a web service hosted in SharePoint.  You can use methods in this web service to develop applications that incorporate calculations done by Excel Services and to automate the update of Excel spreadsheets. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Excel Calculation Service&lt;/strong&gt; – This is the component that loads the spreadsheets, calculates them, refreshes external data, and maintains session state for interactivity.  This is the heart of Excel Services.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Additionally, there is also a proxy that is used internally to handle the communication between the components on the web front end and the application server in multiple-server configurations. It also handles the load balancing in case there are multiple application servers in your installation.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;These three components are divided in two major groups – those that live on a front-end server (which we refer to as a “web front end”), and those that live on a back-end application server.  In the simplest of the configurations, all these components could be running on the same machine (we call this a “single box” installation).  In a typical production environment with significant number of users, the components on the web front end and the application server would be on different machines.  It is possible to scale (up or out) these components independently. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Excel Services leverages the security infrastructure provided by SharePoint.  Excel services uses SharePoint for authentication (who can log into the server) as well as authorization (who has access to which spreadsheet and the type of access; read, write, view only etc.). This provides a robust security environment for protecting your spreadsheets.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Performance and Scalability&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Excel Services are optimized for scenarios in which multiple users access the same spreadsheets.  We have done a lot of work to optimize for this scenario – for example, caching at multiple levels so that collective performance for a group of users is improved by caching spreadsheets as well as external data queried by the spreadsheets.  All this is transparent to the end user except for the good response time.  (Anticipating a question, we only share cached results between users that have the same rights.) &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Excel Services can be scaled up by adding additional CPUs or memory to the server it runs on.  It will take full advantage of multiple CPUs to handle multiple requests concurrently.  It also supports 64bit CPUs.  And it is possible to scale out the web front end and application server components independently, so you can adjust either based on server load and performance requirements.  For example, if there is a bottleneck in rendering spreadsheets with Excel Web Access, then you can add more web front ends, and if there is a bottleneck is in calculations, then you can add more application servers to the farm.  A lot will depend on the type, size of the workbooks and external data connections in the workbooks you are planning to use with Excel Services.  For large deployments, some planning will need to go into the number of users as well as the anticipated workbook mix for the installation.  The architecture is designed to meet the needs of a spectrum of deployments from a departmental to enterprise.  The multi-tiered approach also allows for better security and isolation of services, for example in extranet scenarios.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-1895874497161212858?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/1895874497161212858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/excel-services-architecture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/1895874497161212858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/1895874497161212858'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/excel-services-architecture.html' title='Excel Services - Architecture'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-3379199411782468656</id><published>2008-04-09T12:41:00.000-07:00</published><updated>2009-06-20T12:30:09.619-07:00</updated><title type='text'>Technical Architecture</title><content type='html'>Technical architecture is a part of software architecture, which focuses on how to deal with certain aspects of the software engineering process. It allows us to design better systems by:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Meeting system requirements and objectives:&lt;/strong&gt; Both functional and non-functional requirements can be prioritized as "must have", "should have" or "want", where "must have" identifies properties that the system must have in order to be acceptable. An architecture allows us to evaluate and make tradeoffs among requirements of differing priority. Though system qualities (also known as non-functional requirements) can be compromised later in the development process, many will not be met if not explicitly taken into account at the architectural level. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Enabling flexible partitioning of the system:&lt;/strong&gt; A good architecture enables flexible distribution of the system by allowing the system and its constituent applications to be partitioned among processors in many different ways without having to redesign the distributable component parts. This requires careful attention to the distribution potential of components early in the architectural design process. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Reducing cost of maintenance and evolution:&lt;/strong&gt; Architecture can help minimize the costs of maintaining and evolving a given system over its entire lifetime by anticipating the main kinds of changes that will occur in the system, ensuring that the system's overall design will facilitate such changes, and localizing as far as possible the effects of such changes on design documents, code, and other system work products. This can be achieved by the minimization and control of subsystem interdependencies. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Increasing reuse and integration with legacy and third party software:&lt;/strong&gt; An architecture may be designed to enable and facilitate the (re)use of certain existing components, frameworks, class libraries, legacy or third-party applications, etc.. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-3379199411782468656?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/3379199411782468656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/technical-architecture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/3379199411782468656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/3379199411782468656'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/technical-architecture.html' title='Technical Architecture'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-3452734788791675580</id><published>2008-04-09T12:26:00.000-07:00</published><updated>2009-06-20T12:30:09.627-07:00</updated><title type='text'>Service Oriented Architecture (SOA) - The Basics</title><content type='html'>&lt;strong&gt;SOA: the false, the ideal, the real&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; &lt;strong&gt;False:&lt;/strong&gt;  SOA equals web services.&lt;br /&gt;       SOA equals distributed services.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Ideal:&lt;/strong&gt;  SOA cleanly partitions and consistently represent business services.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Real:&lt;/strong&gt;  SOA is a fundamental change in the way we do business. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Real SOA&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Changed mindset:  service-oriented context for business logic. &lt;/li&gt;&lt;li&gt;Changed automation logic:  service-oriented applications. &lt;/li&gt;&lt;li&gt;Changed infrastructure:  service-oriented technologies. &lt;/li&gt;&lt;li&gt;A top-down organization transformation requiring real commitment.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;SOA Characteristics&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Loosely coupled: minimizes dependencies between services. &lt;/li&gt;&lt;li&gt;Contractual: adhere to agreement on service descriptions. &lt;/li&gt;&lt;li&gt;Autonomous: control the business logic they encapsulate. &lt;/li&gt;&lt;li&gt;Abstract: hide the business logic from the service consumers.&lt;/li&gt;&lt;li&gt;Reusable: divide business logic into reusable services. &lt;/li&gt;&lt;li&gt;Composable: facilitate the assembly of composite services. &lt;/li&gt;&lt;li&gt;Stateless: minimize retained information specific to an activity. &lt;/li&gt;&lt;li&gt;Discoverable: self-described so that they can be found and assessed. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Potential Benefits&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Based on open standards. &lt;/li&gt;&lt;li&gt;Supports vendor diversity. &lt;/li&gt;&lt;li&gt;Fosters intrinsic interoperability. &lt;/li&gt;&lt;li&gt;Promotes discovery. &lt;/li&gt;&lt;li&gt;Promotes federation. &lt;/li&gt;&lt;li&gt;Fosters inherent reusability. &lt;/li&gt;&lt;li&gt;Emphasizes extensibility.&lt;/li&gt;&lt;li&gt;Promotes organizational agility. &lt;/li&gt;&lt;li&gt;Supports incremental implementation.&lt;/li&gt;&lt;li&gt;Technical architecture that adheres to and supports the principles of service orientation. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Common Misperceptions&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;SOA is just Web services. &lt;/li&gt;&lt;li&gt;SOA is just a marketing term. &lt;/li&gt;&lt;li&gt;SOA is just distributed computing. &lt;/li&gt;&lt;li&gt;SOA is a magic global solution to general interoperability. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Common Pitfalls&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Not basing SOA on standards. &lt;/li&gt;&lt;li&gt;Not creating a transition plan. &lt;/li&gt;&lt;li&gt;Not starting with a solid XML foundation architecture and skill set. &lt;/li&gt;&lt;li&gt;Not understanding SOA performance requirements. &lt;/li&gt;&lt;li&gt;Not understanding web services security. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Summing Up SOA&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Not a magic trick. &lt;/li&gt;&lt;li&gt;Not a magic solution. &lt;/li&gt;&lt;li&gt;Not an easy thing to do correctly. &lt;/li&gt;&lt;li&gt;The wavelet of the present. &lt;/li&gt;&lt;li&gt;The wave of the future. &lt;/li&gt;&lt;li&gt;A useful architectural concept. &lt;/li&gt;&lt;li&gt;A potential business facilitator. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Resources&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Douglas K. Barry, Web Services and Service-Oriented Architectures:  the savvy manager’s guide.&lt;/li&gt;&lt;li&gt;Thomas Erl, Service-Oriented Architecture:  concepts, technology and design.&lt;/li&gt;&lt;li&gt;Thomas Erl, Service-Oriented Architecture:  a field guide to integrating XML and web services.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-3452734788791675580?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/3452734788791675580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/service-oriented-architecture-soa.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/3452734788791675580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/3452734788791675580'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/service-oriented-architecture-soa.html' title='Service Oriented Architecture (SOA) - The Basics'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-9171949169934316979</id><published>2008-04-07T14:46:00.000-07:00</published><updated>2009-06-20T12:30:09.636-07:00</updated><title type='text'>Disable Right Click On SharePoint Site</title><content type='html'>&lt;p&gt;Follow these steps to prevent users from right-clicking in your sharepoint site. &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Add a content editor web .&lt;/li&gt;&lt;li&gt;Add the following piece of code in the source editor of the content editor web part.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="color:#3366ff;"&gt;&lt;strong&gt;&amp;lt;HTML&amp;gt;&lt;br /&gt;&amp;lt;BODY OnContextMenu = "return false;"&amp;gt;&lt;br /&gt;No Right Click on this Page.&lt;br /&gt;&amp;lt;/BODY&amp;gt;&lt;br /&gt;&amp;lt;/HTML&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Save the content editor web part. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Users are now prevented from the right click option on the page.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-9171949169934316979?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/9171949169934316979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/disable-right-click-on-sharepoint-site.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/9171949169934316979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/9171949169934316979'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/disable-right-click-on-sharepoint-site.html' title='Disable Right Click On SharePoint Site'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-4721046064554662343</id><published>2008-04-07T14:25:00.000-07:00</published><updated>2009-06-20T12:30:09.643-07:00</updated><title type='text'>Reconnecting Content Databases in MOSS 2007</title><content type='html'>After the failover of a SharePoint Products and technologies database, it is required to reconnect the content databases. The following are the databases that are required to be reconnected,&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Content database &lt;/li&gt;&lt;li&gt;Admin database &lt;/li&gt;&lt;li&gt;Configuration Database &lt;/li&gt;&lt;li&gt;Search Database &lt;/li&gt;&lt;li&gt;Shared Services Provider &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The following stsadm commands are used to reconnect to the content database after a failover, the deletecontentdb will remove the reference to the old database server and the addcontentdb will add the new database as the content database &lt;/p&gt;&lt;p&gt;stsadm –o deletecontentdb –url [Site] -databasename -databaseserver [Old Principal] &lt;/p&gt;&lt;p&gt;stsadm –o addcontentdb –url [Site] -databasename -databaseserver [Old Principal] &lt;/p&gt;&lt;p&gt;Reconnecting content databases can also be done using Central Administration, &lt;/p&gt;&lt;ol&gt;&lt;li&gt;Navigate to Central Administration. &lt;/li&gt;&lt;li&gt;Navigate to Application management page &lt;/li&gt;&lt;li&gt;Click on the Content Databases. &lt;/li&gt;&lt;li&gt;Select the content database that has failed-over. &lt;/li&gt;&lt;li&gt;In the Manage Content Databases page, choose the Remove content database option, and then click OK. &lt;/li&gt;&lt;li&gt;Select the Add a content database option, and enter the required details. &lt;/li&gt;&lt;li&gt;Replace the Database Server box with the new principal server, and then click OK.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-4721046064554662343?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/4721046064554662343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/reconnecting-content-databases-in-moss.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/4721046064554662343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/4721046064554662343'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/reconnecting-content-databases-in-moss.html' title='Reconnecting Content Databases in MOSS 2007'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-6507175514174084724</id><published>2008-04-07T11:59:00.000-07:00</published><updated>2009-06-20T12:30:09.650-07:00</updated><title type='text'>Globalization In .NET</title><content type='html'>Globalization refers to the process with which an application or software will be designed and developed so as to make it run across all platforms and all sites with minimum or no modification to the software application. The software is very amenable to customisation so as to suit to the location-specific conditions and it is also capable of providing information based on the varied inputs and the location-specific operating system.Under any normal circumstance, there will be two processes in Globalization and they are customisation or localisation of the application and internationalizing the application codes so as to meet the standards of the local culture and other related matters.&lt;br /&gt;&lt;br /&gt;In internationalization process the application code base will be same and the efforts will be on jobs such as translating, storing, retrieving and to make the application user friendly for the selected locale. In any given place the culture and the language will always be different and besides this you should also take into account the other factors such as time zone, normal date pattern usage, cultural and language environments, currencies, telephone numbers, and so many other factors that are specific to the locale.&lt;br /&gt;&lt;br /&gt;In globalization the process of internationalization enables you to remove from the code base and the presentation layer all the contents and make you to use only a single presentation layer and single code base with a common contents that can suit any culture. The internationalization process will aid you to keep all the contents in a common place with an idea of making it easily accessible by the programme codes and the results can easily be populated all over presentation layer and the application with ease and efficiently.&lt;br /&gt;&lt;br /&gt;In addition to the above, the internationalization process also enables you to store the contents and all the collected inputs from the user in a user friendly format and in a highly secured manner without compromising any standards pertaining to the local culture. The internationalization process is one step before any attempt for localising the application to suit to the local needs.&lt;br /&gt;&lt;br /&gt;With the help of the localization process of globalization, you can make your application adaptable to the various location specific conditions and it will be easy for you to translate and re-format your application to suit to your new location and that too without changing any of the codes. Further, you can make use of the process for rectifying any of the reported bugs and for fine tuning the application for running smoothly without any hitch.&lt;br /&gt;&lt;br /&gt;The globalization process also makes use of the locally prevailing information on culture where the software or the application is to be installed and maintained. The locational details and the language used in that particular area constitute to culture information and for working with any culture based information the namespace concept is utilised and the System.Globalization, System.Resources and System.Threading are the available namespaces in .NET Framework.&lt;br /&gt;&lt;br /&gt;Out of the various namespaces, the System.Globalization namespace constitute classes that are used to hold information relating to region or country, the local language used, type of calendars, date format used, numbers, currency, etc., all in a meticulously arranged fashion and all these classes are used while developing the globalized (internationalized) applications.&lt;br /&gt;&lt;br /&gt;You can use advanced globalization functionalities with the assistance of classes such as StringInfo and TextInfo classes and the various functionalities include text element processing and surrogate support systems.&lt;br /&gt;&lt;br /&gt;The System.Resources namespace constitutes interfaces and classes that are very helpful for developers and maintenance experts in creating, storing, retrieving, and managing various resources used in the application that are culture and location-specific.&lt;br /&gt;&lt;br /&gt;The System.Threading namespace constitutes interfaces and classes that aid in multithreaded programming. The classes that are used in this type of SystemThreading namespace are also useful in accessing data and for synchronization of thread activities.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-6507175514174084724?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/6507175514174084724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/globalization-in-net.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6507175514174084724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6507175514174084724'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/globalization-in-net.html' title='Globalization In .NET'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-1012138961981307295</id><published>2008-04-05T13:26:00.000-07:00</published><updated>2009-06-20T12:30:09.658-07:00</updated><title type='text'>Pros &amp; Cons: Custom Templates and Site Definitions</title><content type='html'>&lt;p&gt;Customization of site definitions holds the following advantages over custom templates:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Data is stored directly on the Web servers, so performance is typically better.&lt;/li&gt;&lt;li&gt;A higher level of list customization is possible through direct editing of a SCHEMA.XML file.&lt;/li&gt;&lt;li&gt;Certain kinds of customization to sites or lists require use of site definitions, such as introducing new file types, defining view styles, or modifying the drop-down Edit menu.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Site definition disadvantages include the following:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Customization of site definition requires more effort than creating custom templates.&lt;/li&gt;&lt;li&gt;It is difficult to edit a site definition after it has been deployed.&lt;/li&gt;&lt;li&gt;Doing anything other than adding code can break existing sites.&lt;/li&gt;&lt;li&gt;Users cannot apply a SharePoint theme through a site definition.&lt;/li&gt;&lt;li&gt;Users cannot create two lists of the same type with different default content.&lt;/li&gt;&lt;li&gt;Customizing site definitions requires access to the file system of the front-end Web server.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Custom templates hold the following advantages over customization of site definitions:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Custom templates are easy to create.&lt;/li&gt;&lt;li&gt;Almost anything that can be done in the user interface can be preserved in the template.&lt;/li&gt;&lt;li&gt;Custom templates can be modified without affecting existing sites that have been created from the templates.&lt;/li&gt;&lt;li&gt;Custom templates are easy to deploy.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Custom template disadvantages include the following:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Custom templates are not created in a development environment.&lt;/li&gt;&lt;li&gt;They are less efficient in large-scale environments.&lt;/li&gt;&lt;li&gt;If the site definition on which the custom template is based does not exist on the front-end server or servers, the custom template will not work.&lt;br /&gt; &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-1012138961981307295?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/1012138961981307295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/pros-cons-custom-templates-and-site.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/1012138961981307295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/1012138961981307295'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/pros-cons-custom-templates-and-site.html' title='Pros &amp;amp; Cons: Custom Templates and Site Definitions'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-7109599690892843088</id><published>2008-04-05T13:18:00.000-07:00</published><updated>2009-06-20T12:30:09.667-07:00</updated><title type='text'>Difference Between MOSS 2007 and WSS 3.0</title><content type='html'>It always astounds me what Microsoft are willing to bundle with their software, Analysis Services or SSIS (SQL Server Integration Services) with SQL Server for example!  They haven't stopped, they bundle Windows Sharepoint Services with Windows Server 2003, with is basically a fully functional SharePoint Server, however they still have SharePoint Server 2007  as a product.  So what are the differences? At first glance it doesn't appear to be much, however for tight integration into the enterprise, it seems that MOSS 2007 (Microsoft Office SharePoint Server) is a must! I will highlight the most interesting bits that MOSS 2007 has over and above WSS 3.0 (Windows Sharepoint Services) :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;User Profiles support -&lt;/strong&gt; Allows each user to store profile information &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Site Manager -&lt;/strong&gt; Manage Navigation, Security and look and feel with drag an drop functionality &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Enterprise Search Tools -&lt;/strong&gt; numerous tools to search Sharepoint Sites and Portals across entire enterprises &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Business Data Catalog - &lt;/strong&gt;The Business Data Catalog (BDC) tightly integrates external data, providing access to external data residing within other business applications, and enabling the display of, and interaction with external data &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Business data search -&lt;/strong&gt; Search data residing in your business applications using the BDC &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Business Data Web Parts -&lt;/strong&gt; Used for viewing lists, entities, and related information retrieved through the Business Data Catalog &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Business document workflow support -&lt;/strong&gt; Automate document review, approval, signature collection, and issue tracking using workflow applications &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Retention and auditing policies -&lt;/strong&gt; Allows customized information management policies to control retention period, expiration, and auditing &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Browser-based forms -&lt;/strong&gt; Integration with InfoPath, allows integration on to SharePoint of created forms and surveys. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Integrated, flexible spreadsheet publishing -&lt;/strong&gt; Allows information workers to easily choose what they want to share with others and determine how others can interact with published spreadsheets. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Share, manage, and control spreadsheets - &lt;/strong&gt;Provides access to spreadsheet data and analysis through server-calculated, interactive spreadsheets from a Web browser. Can help to protect any sensitive or proprietary information embedded in documents, such as financial models, and audits their usage. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Web-based business intelligence using Excel Services -&lt;/strong&gt; Allows spreadsheets to be broadly and easily shared. Fully interactive, data-bound spreadsheets including charts, tables, and PivotTable views can be created as part of a portal, dashboard, or business scorecard. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Data Connection Libraries -&lt;/strong&gt; Document Libraries storing ODCs (Office Data Connections), Making one single location for all data connections. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Business Data actions -&lt;/strong&gt;  Easily create actions that open Web pages, display the user interfaces of other business applications, launch InfoPath forms, and perform other common tasks. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Integrated business intelligence dashboards -&lt;/strong&gt; Rich, interactive BI dashboards that assemble and display business information from disparate sources by using built-in Web parts, Excel spreadsheets, Reporting Services, or a collection of business data connectivity Web Parts. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Report Center -&lt;/strong&gt; Provides consistent management of reports, spreadsheets, and data connections. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Key performance indicators -&lt;/strong&gt; A KPI web Part can connect to Analysis Services, Excel Spreadsheets, SharePoint Lists, or manual entered data. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Notification service -&lt;/strong&gt; Improved allowing workflow users to receive emails by default, and improved triggering and filtering &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Single Sign-On (SSO) - &lt;/strong&gt;Allows the User to log onto a variety of applications with a single user name and password, therefore integrating back office applications, and helps pre-population with integration to the Profile part of MOSS 2007. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Social Networking Part -&lt;/strong&gt; Connect to Public My Site pages to help establish connections between colleagues with common interests &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Personal Site Support -&lt;/strong&gt; Allows Users to create Personal Web Sites   &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Content syndication -&lt;/strong&gt; Use RSS feeds to syndicate content managed in a portal site.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-7109599690892843088?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/7109599690892843088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/difference-between-moss-2007-and-wss-30.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/7109599690892843088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/7109599690892843088'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/difference-between-moss-2007-and-wss-30.html' title='Difference Between MOSS 2007 and WSS 3.0'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-2123794845268101288</id><published>2008-04-01T11:57:00.000-07:00</published><updated>2009-06-20T12:30:09.675-07:00</updated><title type='text'>Create an IE Favorite to quickly resize your browser</title><content type='html'>Often times when editing or designing a web page or a site I use my full screen to take advantage of all the realestate my screen has to offer.  I also often times need to quickly see what a page will look like in a smaller screen resolution such as 1024x768. &lt;br /&gt;Here is a quick tip to quickly and easily resize your IE browser to a specific size.&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Create a shortcut in your IE Favorites or in you Links folder. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Rename this shortcut/favorite to "Resize Window to 1024x768". &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Edit the properties of the shortcut and place the following line of javascript in the URL property.&lt;br /&gt;javascript:window.resizeTo(1024,768)&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Note: You will receive a warning prompt.  Simply proceed.&lt;/em&gt;&lt;/strong&gt;  &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Save the properties and then click your new favorite Resize Window to 1024x768.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Your current window should now automatically resize to 1024x768.  You can change this to 800x600 or whatever size you need.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-2123794845268101288?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/2123794845268101288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/create-ie-favorite-to-quickly-resize.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2123794845268101288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2123794845268101288'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/create-ie-favorite-to-quickly-resize.html' title='Create an IE Favorite to quickly resize your browser'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-2385409935540447624</id><published>2008-04-01T11:38:00.000-07:00</published><updated>2009-06-20T12:30:09.684-07:00</updated><title type='text'>Apply a Theme to all sub sites in SharePoint 2007</title><content type='html'>Apply a Theme to all sub sites:(works for MOSS 2007 only, not WSS 3.0)&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Change the top site to the theme of your choice using the normal method in Site Actions &gt; Site Settings &gt; Site Theme. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Navigate to the top site to see the newly applied theme. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;View the HTML source of the SharePoint page using the theme you want. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Look for a link tag containing the .css file for the applied theme. It will look something like this: &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;          &amp;lt;link rel="stylesheet" type="text/css" id="onetidThemeCSS" href="/apps/afe/_themes/Belltown/Bell1011-65001.css?rev=12%2E0%2E0%2E4518"/&amp;gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Copy the href value to your clipboard or to a text file if you like. It should look something like:/apps/afe/_themes/Belltown/Bell1011-65001.css &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;On your top level site, go to the Site Actions &gt; Site Settings &gt; Master Page screen. Scroll to the bottom where the Alternate CSS URL section is. Select the "Specify a CSS file..." option. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Paste the path copied from the href above into the text box. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Check the Reset all sub-sites to inherit this alternate CSS URL option. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Click OK. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Navigate to your sub-sites and verify the theme has been applied.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-2385409935540447624?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/2385409935540447624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/04/apply-theme-to-all-sub-sites-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2385409935540447624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2385409935540447624'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/04/apply-theme-to-all-sub-sites-in.html' title='Apply a Theme to all sub sites in SharePoint 2007'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-2480795004172869252</id><published>2008-03-31T12:33:00.000-07:00</published><updated>2009-06-20T12:30:09.695-07:00</updated><title type='text'>We Developers Do the Dumbest Things</title><content type='html'>Ever do something really stupid in your code? I bet you can't say "No" with a straight face. But, don't you get irritated when you encounter someone else's blunders. I have found some real dillys lately and thought I might run them by anyone that ever reads my blog, which at this point is not a lot of people.&lt;br /&gt;&lt;br /&gt;It seems that a lot of self-named .NET developers totally don't understand Exception Handling!&lt;br /&gt;&lt;br /&gt;For example, explain the need for the following Try Catch block, if you can.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;private void DoNothing()&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;{   try   &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;{      &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;// do some code   &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;}   &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;catch(Exception ex)  &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;{      &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;throw(ex);   &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Did it never occur to the writer of this code that if they had not coded the try catch, that the results of a failure in the DoNothing method will be exactly the same. The try catch as coded basically is an unhandled exception, which could have been raised without the try catch.&lt;br /&gt;&lt;br /&gt;Here's one more that completely baffled me when I came upon it recently.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Try   &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;IO.File.Move(oldPath, newPath)&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Catch (ex As Exception)   &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;IO.File.Move(oldPath, newPath)&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;End Try&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Go Figure! What is this? "If at first you don't succeed, Try, Try again?"&lt;br /&gt;&lt;br /&gt;Take a minute and comment with something really dumb that you have done or seen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-2480795004172869252?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/2480795004172869252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/03/we-developers-do-dumbest-things.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2480795004172869252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2480795004172869252'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/03/we-developers-do-dumbest-things.html' title='We Developers Do the Dumbest Things'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-3232592164334545677</id><published>2008-03-31T10:55:00.000-07:00</published><updated>2009-06-20T12:30:09.703-07:00</updated><title type='text'>Send a Message to Everyone Logged into a SQL Server</title><content type='html'>If you've done any heavy lifting in Database programming, you quickly notice that languages like T-SQL and PL/SQL can do quite a bit for you.  While SQL certainly is powerful, it doesn't have many constructs that are a given in more modern programming languages.  Additionally, cursors can do a lot for you, but they aren't fast and ADO.NET doesn't play really well with them.&lt;br /&gt;&lt;br /&gt;Anyway, in this snippet, I'm going to use a While Loop in T-SQL, dynamically create some SQL commands, and fire them off via xp_cmdshell.  Think about it for  a second, if you did this some other way, it would take a good amount of work to fire off Net Send Messages to everyone logged into your database (and would be next to impossible with a non Client/Server database like Access).  Well, this is pretty straightforward, you just query SYSPROCESSES, construct a SQL Statement, execute it, then requery SYSPROCESSES. &lt;br /&gt;&lt;br /&gt;Check out the snippet below:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;CREATE  PROC usp_notify_users    @notification VARCHAR(100)&lt;br /&gt;AS&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;     SET NOCOUNT ON&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;    DECLARE @Command VARCHAR(300)    &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;    DECLARE @hostname SYSNAME&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;    SELECT @hostname= MIN(RTRIM(hostname))    FROM      master.dbo.sysprocesses &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;(NOLOCK)    WHERE hostname &lt;&gt; ''&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;WHILE @hostname is not null    &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;BEGIN    &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;SET @Command='exec master.dbo.xp_cmdshell "net send ' + RTRIM(@hostname) + ' ' + RTRIM(@notification) + ' "'&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;        EXEC (@Command)      &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;SELECT @hostname= MIN(RTRIM(hostname))    FROM         master.dbo.sysprocesses (NOLOCK)    WHERE         hostname &lt;&gt; ''       and hostname &gt; @hostname    &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;END&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6633ff;"&gt;SET NOCOUNT OFF&lt;br /&gt;END&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This proc takes in a Param @Notification which is what you want to broadcast to everyone.  We declare another variable, @Command which is going to be used so we can dynamically build a T-SQL Statement and fire a command via xp_cmdshell..  Then we reset the values each pass through a while loop and NET SEND a message each pass through.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-3232592164334545677?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/3232592164334545677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/03/send-message-to-everyone-logged-into.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/3232592164334545677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/3232592164334545677'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/03/send-message-to-everyone-logged-into.html' title='Send a Message to Everyone Logged into a SQL Server'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-4545883835689735680</id><published>2008-03-31T10:41:00.000-07:00</published><updated>2009-06-20T12:30:09.711-07:00</updated><title type='text'>Five Secrets Of Successful Requirement Gathering</title><content type='html'>&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Although most companies do some form of requirements, there is often a lack of understanding as to exactly why the requirements need to be created and the level of detail that should be included in the requirements.&lt;br /&gt;&lt;br /&gt;Software is always created to solve a need for a client. The client may be an internal client, an external client, or even the general public. Detailed requirements are important to ensure that a program correctly and fully addresses client's needs.&lt;br /&gt;&lt;br /&gt;Detailed requirements make initial development easier and faster because the developers know exactly what should be developed and do not need to make their best guess at the functionality to be implemented or delay development by creating requirements during development. Giving the developers accurate requirements will also result in less rework at the end of development because the stakeholder's requirements will have been implemented correctly initially and will not be arrived at through trial and error.&lt;br /&gt;&lt;br /&gt;A project manager can use the detailed requirements to create accurate timelines and give correct estimates to the client. This ensures that stakeholders are completely aware how long development will take so they can adjust the scope of a project or proactively add resources if necessary.&lt;br /&gt;&lt;br /&gt;Finally, testers can use the requirements to create test plans while development is ongoing rather than waiting until development is complete. The requirements give them information about what the program will do so there cannot be disputes between developers and testers as to what the program functionality should be. High quality requirements also describe problem paths that may need additional testing.&lt;br /&gt;&lt;br /&gt;Even though highly detailed requirements make development easier in future phases, this is not always possible due to time constraints imposed by the client or market conditions. With this in mind, let's look at some secrets to improve your requirements process even under tight deadlines.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Secret #1: Include Use Cases&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Use cases look at the requirements from the standpoint of an end user working with the program and how the program responds to the user's inputs. At its simplest level, a use case can be thought of as a play where the end user is one actor and the program is another actor. These two actors then have dialogs which explain the interactions between the actors. More complicated scenarios can have additional actors including other programs, other types of users, and even hardware. Use cases have proven to be very easy to read and understand even for non-technical clients.&lt;br /&gt;&lt;br /&gt;Each use case explores what happens when something goes wrong in addition to the "normal" interactions. The exploration of these failure conditions is very important because these cases are the most difficult to code and can cause the most amount of testing. Traditional requirements often ignore these cases. It can be helpful to have developers and testers both think of additional possible failures in a use case so they can be fully documented in the requirements.&lt;br /&gt;&lt;br /&gt;Use cases do not provide a complete picture of the system though. A technical specification should also be included in the requirements to detail formulas and routines that take place behind the scenes.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Secret #2: Prototype Screens with a Design Tool &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;A user of the program only interacts with a program through the user interface so it makes sense to spend a significant amount of time during requirements to ensure that the user interface makes sense, that all functionality is included, and that the most commonly used functionality is easily accessible. The easiest way of doing this is using a screen prototype. There are a variety of methods of making screen prototypes which range from simply drawing the interface with a pen and paper to building "working" prototypes in a higher level language like Visual Basic which allows rapid screen design. However, each of these extremes has serious drawbacks. A pen and paper prototype does not allow users to interact with the prototype and it is more difficult to change. A "working" prototype done in a programming language like Visual Basic can lead the client to believe that the program is nearly complete and that development should not take very long or it can lead the client to believe that changes to the prototype will be costly making them reluctant to make necessary suggestions to improve the program.&lt;br /&gt;&lt;br /&gt;Between these two extremes lies screen design applications which allow you to draw the screens and model interactions between screens. High quality prototyping tools allow you to enter sample data and allow users to move between screens by pressing buttons so they can easily understand the interface and its functionality. Most prototyping tools produce the final output in an HTML format so they can be easily shared even if a client is not in the same office where requirements are being developed.&lt;br /&gt;&lt;br /&gt;When looking for a prototyping tool, make sure to select a tool which is easy enough to use that you can easily prototype screens while your customer is in the room. This will allow you to brainstorm and make changes to the screens without delays. A prototyping tool should already have common controls already defined to maintain design standards and improve the appearance of your screens. Being able to enter sample data in each screen can allow the customer to pinpoint areas that may be incorrect.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Secret #3: Work Directly with End Users&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;When designing a new application or making revisions to an existing application, there is no substitute for the direct experience that end users have. An end user can give immediate feedback on your design to point out awkward or incorrect functionality. They also help to ensure that all controls are logically placed for the most efficient use of the system.&lt;br /&gt;&lt;br /&gt;Using an interactive prototyping tool allows you to walk a user through the interface or even allow them to work directly with the prototype so they can quickly suggest improvements. As use cases are being developed, it is a good idea to walk users through the use case to ensure that the use case is well thought out and that all functionality is captured both in the use case and the prototype.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Secret #4: Do Iterative Requirements Development&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;When you create requirements, it is important to develop the requirements in multiple stages. For example, you may want to do a general layout of the program and create higher level use cases in the first session to get a feel for the overall requirements. In the next session(s), you can focus on each key feature to ensure that the normal paths are all defined in the use cases and further refine the prototypes. In the next session(s), you can attempt to define all of the error conditions which can occur and update the prototypes as necessary. The final sessions should review all work previously done to ensure that all requirements are clear and complete. At each stage, you should not be afraid to revise work done in a previous step because getting the requirements correct will ultimately save time in the more costly development and testing stages.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Secret #5: Place Requirements Documents under Change Control&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;With all of the time spent on generating clear requirements, it is very important to make sure that all of the requirements documents are included in your change control system. This includes use cases, screen prototypes, technical specifications, and any other documents used to define the requirements.&lt;br /&gt;&lt;br /&gt;Conclusion In this article, we have explored various secrets to make your requirements process successful and ensure that your clients are satisfied with the resulting program even under tight deadlines. At the start of your next project, make sure you have the proper tools in place for a successful requirements iterations including a prototyping program, a tool to write use cases, and a version control program. These tools do not have to be expensive, and they will help to get your requirements right and schedule under control.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-4545883835689735680?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/4545883835689735680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/03/five-secrets-of-successful-requirement.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/4545883835689735680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/4545883835689735680'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/03/five-secrets-of-successful-requirement.html' title='Five Secrets Of Successful Requirement Gathering'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-932647776594784560</id><published>2008-03-29T13:28:00.000-07:00</published><updated>2009-06-20T12:30:09.728-07:00</updated><title type='text'>Overview: Test Driven Development</title><content type='html'>There are many benefits of test driven development including better end product with well defined supporting unit tests and having a programming paradigm that is a bit more flexible in regards to scope changes.  Having unit tests available will make our code more maintainable over the long run is invaluable because we can modify our code without fear such as when we are adding/modifying functionality or refactoring.  It could even be considered crucial when we have projects where the scope is likely to change throughout the development lifecycle like in the case where the functional specifications are not clearly defined before we begin producing code.&lt;br /&gt;&lt;br /&gt;Test driven development can be a huge shift in the development approach for many of us.  The test driven approach basically chips away at the solution like a sculptor would at a marble block instead of trying to define and create a monolithic application in one shot.&lt;br /&gt;&lt;br /&gt;As a first step, we'll define the interfaces out software will adhere to.  The interface should clearly define how our class is to interact with other classes and what information it will expose.  This is a crucial step in any software design process because we really have to know where we are going and the interface serves as a map that will help us get there.&lt;br /&gt;&lt;br /&gt;After we have an interface, we'll begin with the test-driven development cycle. &lt;br /&gt;&lt;ol&gt;&lt;li&gt;Add a test &lt;/li&gt;&lt;li&gt;Run all tests and watch the new one fail (and the rest succeed) &lt;/li&gt;&lt;li&gt;Modify our code to make the test succeed &lt;/li&gt;&lt;li&gt;Run all tests and watch them succeed &lt;/li&gt;&lt;li&gt;Refactor, if necessary &lt;/li&gt;&lt;li&gt;Run tests to ensure everything still works &lt;/li&gt;&lt;li&gt;Repeat&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-932647776594784560?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/932647776594784560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/03/overview-test-driven-development.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/932647776594784560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/932647776594784560'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/03/overview-test-driven-development.html' title='Overview: Test Driven Development'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-5694377179898162029</id><published>2008-03-29T13:02:00.000-07:00</published><updated>2009-06-20T12:30:09.735-07:00</updated><title type='text'>Understanding MOSS 2007</title><content type='html'>The core target of Microsoft Office SharePoint Server (MOSS 2007) is to aggregate disparate (Different but separate applications) information, events, processes and enterprise services into a unified single view without to open multiple applications and cut and paste information across multiple screens.&lt;br /&gt;&lt;br /&gt;In MOSS 2007 these composite applications are based on the concept of a service-oriented architecture (SOA). MOSS 2007 framework helps you develop components as distributed, reusable business services. MOSS 2007 split into small applications in small pieces.&lt;br /&gt;MOSS 2007 is basically superstructure who represents the high-level integration of users, one-stop shop form information, managing interactions between people, and line-of-business (LOB) data within organization and cross enterprises. MOSS 2007 based on SOA framework that is driven by standard XML/ Web services.&lt;br /&gt;&lt;br /&gt;It provides a window that connects people, processes, and information to create a unique &amp;amp; rich end user experience. For example, during a natural disaster, it can provide critical information to coordinate a response effort, monitoring traffic patterns, delivering supplies, dispatching resources, and aggregating information to present operational insight. In a manufacturing setting, you might use it to monitor inventory levels and assembly processes up and down a supply chain. It's an excellent aggregation point for all of these types of situations.&lt;br /&gt;&lt;br /&gt;MOSS 2007 is point of collaboration &amp;amp; contents sharing. For example, SharePoint Portal includes workspace to help loan officers find, organize, and share information so they can process loans more efficiently. These workspaces used to be very limited in their reach, which resulted in a proliferation of mediums to support discrete processes. A mortgage broker might use a file system to store documents, e-mail to deliver loan applications to customers, a Web site to gather additional customer information, and a spreadsheet to monitor the loan approval process.&lt;br /&gt;&lt;br /&gt;MOSS 2007 can unify all these tasks and offer collaboration tools to streamline the loan approval workflow. Loan officers will then have a single place to access and modify documents, check documents in and out of a repository, and work collaboratively to process loans, all without having to use multiple interface mechanisms.&lt;br /&gt;&lt;br /&gt;So, MOSS 2007 become more process-centric, they serve as clearinghouses for managing multiple activities in multiple manners.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-5694377179898162029?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/5694377179898162029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/03/understanding-moss-2007.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/5694377179898162029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/5694377179898162029'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/03/understanding-moss-2007.html' title='Understanding MOSS 2007'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-386926631474153213</id><published>2008-03-29T12:16:00.000-07:00</published><updated>2009-06-20T12:30:09.720-07:00</updated><title type='text'>How To: Generate unique strings and numbers in C#</title><content type='html'>The &lt;strong&gt;System.Guid&lt;/strong&gt; is used whenever we need to generate a unique key, but it is very long. That's in many cases not an issue, but in a web scenario where it is part of the URL we need to use its string representation which is 36 characters long. It clutters up the URL and is just basically ugly.&lt;br /&gt;&lt;br /&gt;It is not possible to shorten it without loosing some of the uniqueness of the GUID, but we can come a long way if we can accept a 16 character string instead.&lt;br /&gt;&lt;br /&gt;We can change the standard GUID string representation:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#6633ff;"&gt;21726045-e8f7-4b09-abd8-4bcc926e9e28&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Into a shorter string:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#6633ff;"&gt;3c4ebc5f5f2c4edc &lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;The following method creates the shorter string and it is actually very unique. An iteration of 10 million didn.t create a duplicate.&lt;br /&gt;It uses the uniqueness of a GUID to create the string.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#6633ff;"&gt;private string GenerateId()&lt;br /&gt;{&lt;br /&gt;long i = 1;&lt;br /&gt;foreach (byte b in Guid.NewGuid().ToByteArray())&lt;br /&gt;{&lt;br /&gt;i *= ((int)b + 1);&lt;br /&gt;}&lt;br /&gt;return string.Format("{0:x}", i - DateTime.Now.Ticks);&lt;br /&gt;} &lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;If you instead want numbers instead of a string, you can do that to but then you need to go up to 19 characters.&lt;br /&gt;&lt;br /&gt;The following method converts a GUID to an Int64.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#6633ff;"&gt;private long GenerateId()&lt;br /&gt;{&lt;br /&gt;byte[] buffer = Guid.NewGuid().ToByteArray();&lt;br /&gt;return BitConverter.ToInt64(buffer, 0);&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;The standard GUID is still the best way to ensure the uniqueness even though it isn't 100% unique.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-386926631474153213?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/386926631474153213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/03/how-to-generate-unique-strings-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/386926631474153213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/386926631474153213'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/03/how-to-generate-unique-strings-and.html' title='How To: Generate unique strings and numbers in C#'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-786578823351442391</id><published>2008-03-27T13:22:00.000-07:00</published><updated>2009-06-20T12:30:09.742-07:00</updated><title type='text'>The benefits of Office PerformancePoint Server 2007</title><content type='html'>Office PerformancePoint Server 2007 greatly improves visibility into company performance and the factors that are driving it. Office PerformancePoint Server 2007 also enables employees to monitor and act on performance variances.&lt;br /&gt;Office PerformancePoint Server 2007 offers:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Robust monitoring and analytics capabilities.&lt;/strong&gt; Office PerformancePoint Server 2007 monitoring and analytics capabilities enable business users to see and understand performance issues quickly so they can make better decisions faster—all without the need for technical assistance. The fact that scorecards, dashboards, and analytics are all integrated into the same application makes deployment simple and helps drive alignment and accountability. Office PerformancePoint Server 2007 helps individuals to be more effective and the organization to be more agile. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Improved planning, budgeting, and forecasting.&lt;/strong&gt; Drive strategic objectives and goals into the planning and budgeting process to ensure departmental plans align with corporate strategy. Reduce the time and effort required through centralized control and administration and workflow that manages the creation and submission. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Faster financial reporting and consolidation.&lt;/strong&gt; Consolidate financial data from multiple general ledgers and reporting systems to achieve a single, integrated view of financial information. Robust integration and administration of financial information helps increase information accuracy and reduce the time and effort required for statutory and management reporting. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Extends Existing IT Investments.&lt;/strong&gt; Office PerformancePoint Server 2007 utilizes widely used and supported Microsoft technologies such as Windows Server, SQL Server, and Microsoft Office SharePoint Portal Server. This utilization enables companies to extend their existing investments and IT skill sets in these mission-critical enterprise technologies. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-786578823351442391?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/786578823351442391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/03/benefits-of-office-performancepoint.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/786578823351442391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/786578823351442391'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/03/benefits-of-office-performancepoint.html' title='The benefits of Office PerformancePoint Server 2007'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-3744925538539220329</id><published>2008-03-27T13:14:00.000-07:00</published><updated>2009-06-20T12:30:09.750-07:00</updated><title type='text'>Features: Office PerformancePoint Server 2007</title><content type='html'>Office PerformancePoint Server 2007 features robust performance management capabilities including:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;An integrated application for performance management. &lt;/strong&gt;Office PerformancePoint Server 2007 provides all of the functionality that is needed for performance management in a single, integrated application including scorecards, dashboards, management reporting, analytics, planning, budgeting, forecasting, and consolidation. With Office PerformancePoint Server 2007, users can better understand variances between plan and actual, quickly analyze root-causes, and recast plans when necessary. Customers can enter the performance management process at any point, benefiting from a common data model shared across monitoring, analytical, and planning activities. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Business users shape their plans the way they think about their business. &lt;/strong&gt;Office PerformancePoint Server 2007 provides business users with the ability to define, modify, and maintain their plans easily. The application handles the sophistication of the company business processes (rules, logic, calculations, and workflows) while helping more users contribute to the performance management process. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Flexibility to handle complex environments. &lt;/strong&gt;Office PerformancePoint Server 2007 uses a model-driven approach to make it easier to create corporate models for scorecards, analytics, and plans that can also be used for departmental-level performance management. By providing synchronized models up and down the organization as well as across departments, users can more easily get a consistent view of organizational performance. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Reducing complexity for IT and for the business. &lt;/strong&gt;Office PerformancePoint Server 2007 enables businesses to broadly deliver performance management across the organization by rapidly bringing together the power of Microsoft Office and the performance, scalability, and security of SQL Server. Office PerformancePoint Server 2007 is easy to use and less costly to deploy than traditional solutions. Office PerformancePoint Server 2007 also helps IT better support corporate governance through the ability the audit the performance management process as well as control versions and report on the processes. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-3744925538539220329?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/3744925538539220329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/03/features-office-performancepoint-server.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/3744925538539220329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/3744925538539220329'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/03/features-office-performancepoint-server.html' title='Features: Office PerformancePoint Server 2007'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-8059781041862733837</id><published>2008-03-27T13:10:00.000-07:00</published><updated>2009-06-20T12:30:09.757-07:00</updated><title type='text'>Overview: Microsoft Office PerformancePoint Server 2007</title><content type='html'>Microsoft Performance Management allows customers to monitor, analyze, and plan their business as well as drive alignment, accountability, and actionable insight across the entire organization.&lt;br /&gt;&lt;br /&gt;With Office PerformancePoint Server 2007 server:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Business executives can drive accountability and alignment across and up-and-down the organization. &lt;/li&gt;&lt;li&gt;Information workers can monitor, analyze, and plan activities with an integrated and collaborative solution. &lt;/li&gt;&lt;li&gt;IT managers can drive better adoption and compliance by enabling organizations to better associate business intelligence and corporate performance. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Office PerformancePoint Server 2007 provides all of the functionality that is needed for performance management including scorecards, dashboards, management reporting, analytics, planning, budgeting, forecasting, and consolidation. The application reaches all employees, across all business functions (finance, operations, marketing, sales, and human resources).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Decisions makers need to drive performance by accelerating business decision making, while adapting to changing business conditions and enforcing corporate governance. Office PerformancePoint Server 2007 allows the organization to build reliable plans faster and execute against them by aligning and driving accountability across business operations. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-8059781041862733837?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/8059781041862733837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/03/overview-microsoft-office.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/8059781041862733837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/8059781041862733837'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/03/overview-microsoft-office.html' title='Overview: Microsoft Office PerformancePoint Server 2007'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-1205443493643163704</id><published>2008-03-25T14:10:00.000-07:00</published><updated>2009-06-20T12:30:09.765-07:00</updated><title type='text'>Abstract Class Vs Interface</title><content type='html'>&lt;strong&gt;Interfaces:&lt;/strong&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Interfaces doesn’t have constructors&lt;/li&gt;&lt;li&gt;Can implement multiple inheritances.&lt;/li&gt;&lt;li&gt;Contain only abstract methods (Only method prototype is declared)&lt;/li&gt;&lt;li&gt;Can not create object for interfaces.&lt;/li&gt;&lt;li&gt;Interfaces are reference type.&lt;/li&gt;&lt;li&gt;An interface can implement by multiple classes.&lt;/li&gt;&lt;li&gt;A derived class can implement multiple interfaces, but can inherit from only one class (abstract or not).&lt;/li&gt;&lt;li&gt;Interfaces are default public.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Abstract Class:&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Abstract classes can have constructors.&lt;/li&gt;&lt;li&gt;Can’t implement multiple inheritances.&lt;/li&gt;&lt;li&gt;Contain abstract methods and general methods also.&lt;/li&gt;&lt;li&gt;Can not create object for abstract class.&lt;/li&gt;&lt;li&gt;Abstract classes are reference type.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-1205443493643163704?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/1205443493643163704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/03/abstract-class-vs-interface.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/1205443493643163704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/1205443493643163704'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/03/abstract-class-vs-interface.html' title='Abstract Class Vs Interface'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-575732574155743515</id><published>2008-03-25T13:59:00.000-07:00</published><updated>2009-06-20T12:30:09.773-07:00</updated><title type='text'>Garbage Collection in C#</title><content type='html'>&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;All the garbage collection mechanisms have one thing in common, that is they take the responsibility of tracking memory usage.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Understanding Garbage Collection in C#&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The .NET garbage collector is optimized for the following assumptions&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Objects that were recently allocated are most likely to be freed.&lt;/li&gt;&lt;li&gt;Objects that have lived the longest are least likely to be become free.&lt;/li&gt;&lt;li&gt;Objects allocated together are often used together.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The .NET garbage collector is known as generational garbage collector. The objects allocated are categorized into three generations. Most recently allocated objects are placed in Generation 0.&lt;/p&gt;&lt;p&gt;Objects in Generation 0, that survive a garbage collection pass are moved to Generation 1.&lt;/p&gt;&lt;p&gt;Generation 2 contains long-lived objects, that survive after the two collection passes.&lt;/p&gt;&lt;p&gt;A garbage collection pass for Generation 0 is the most common type of collection. Generation 1 collection pass is performed if Generation 0 collection pass is not sufficient to reclaim memory.&lt;/p&gt;&lt;p&gt;Atlast, Generation 2 collection pass is peformed if collection pass on Generation 0 and 1 are not sufficient to reclaim memory. If no memory is available, after all the collection passes, an OutOfMemoryException is thrown.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Finalizers &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;A class could expose a finalizer, which executes when the object is destroyed. In C#, the finalizer is a protected method as shown below.&lt;/p&gt;&lt;p&gt;protected void Finalize()&lt;/p&gt;&lt;p&gt;{ &lt;/p&gt;&lt;p&gt;base.Finalize(); // clean external resources &lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;The method Finalize(), is only called by the .NET framework.&lt;/p&gt;&lt;p&gt;C#, will generate a code to a well formed Finalizer, if we declare a destructor as shown&lt;br /&gt;~class1 &lt;/p&gt;&lt;p&gt;{ &lt;/p&gt;&lt;p&gt;// Clean external resources.&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;Declaring a Finalize method and destructor in a class, will lead to an error.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Dispose &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Instead of declaring a Finalizer, exposing a Dispose method is considered as good.&lt;/p&gt;&lt;p&gt;If we clean up a object, using Dispose or Close method, we should indicate to the runtime that the object is no longer needed finalization, by calling GC.SuppressFinalize() as shown below:&lt;/p&gt;&lt;p&gt;public void Dispose()&lt;/p&gt;&lt;p&gt;{ &lt;/p&gt;&lt;p&gt;// all clean up source code here.. &lt;/p&gt;&lt;p&gt;GC.SuppressFinalize(this);&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;If we are creating and using objects that have Dispose or Close methods, we should call these methods when we’ve finished using these objects. It is advisable to place these calls in a finally clause, which guarantees that the objects are properly handled even if an exception is thrown.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The System.GC class provides methods that control the system garbage collector. We have to use methods from this class in our application with extreme caution.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-575732574155743515?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/575732574155743515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/03/garbage-collection-in-c.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/575732574155743515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/575732574155743515'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/03/garbage-collection-in-c.html' title='Garbage Collection in C#'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-8969775872097152227</id><published>2008-03-25T13:40:00.000-07:00</published><updated>2009-06-20T12:30:09.782-07:00</updated><title type='text'>Microsoft .Net Assemblies</title><content type='html'>&lt;strong&gt;Introduction &lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Assembly is a small unit of Code for Deployment &lt;/li&gt;&lt;li&gt;The basic building block for Dot Net Framework is an Assembly &lt;/li&gt;&lt;li&gt;Assembly can be an exe or dll file &lt;/li&gt;&lt;li&gt;But the difference between dll and exe is exe is an executable file &lt;/li&gt;&lt;li&gt;Dll is a reusable component. &lt;/li&gt;&lt;li&gt;Exe is a Stand alone application that can run on its own &lt;/li&gt;&lt;li&gt;Dll is used in other applications &lt;/li&gt;&lt;li&gt;Assembly is Collection of Data Types, Namespaces and Resources Information &lt;/li&gt;&lt;li&gt;Namespace is a logical design-time naming convenience, whereas an assembly establishes the name scope for types at run time. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;The Four Main Parts &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The main Parts of the Assembly are &lt;/p&gt;&lt;ol&gt;&lt;li&gt;Manifest &lt;/li&gt;&lt;li&gt;Type Meta Data &lt;/li&gt;&lt;li&gt;MSIL Code &lt;/li&gt;&lt;li&gt;Resources &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Manifest &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;It will describe the assembly it will contain all the files information required for the assembly. These files includes all the other assemblies required for the application. It will be prepared by the complier by providing set of built in libraries and custom libraries provided with reference. This is required for the runtime to load the files at the time of execution Public key with Version number are stored here.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Meta Data &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;It will provide information about all the user defined types available with assembly&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Includes &lt;/li&gt;&lt;li&gt;Namespace name &lt;/li&gt;&lt;li&gt;Class names &lt;/li&gt;&lt;li&gt;Interface names &lt;/li&gt;&lt;li&gt;Method names &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This Meta data is required for the user of the assembly to access methods and classes.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;IL Code &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The source code in Dotnet is Compiled into IL code with the help of JIT complier in CLR .This code is responsible for Language independency, Architecture independency, Plat form independency and Security.&lt;br /&gt;VS Command Prompt c :\&gt; ildasm app.exe&lt;br /&gt;File--&gt;new--&gt;open any dll from your existing web application&lt;br /&gt;Double Click on manifest to examine manifest&lt;br /&gt;You will find public key token with version number that is generated for Assembly&lt;br /&gt;The expanded tree view of name spaces and classes methods is called Meta data&lt;br /&gt;Try to examine Meta data MSIL/IL code that is generated for each method&lt;br /&gt;MSIL IL code is in Assembly language it ‘s understands by only JIT Complier with the help of jitters inside it.&lt;br /&gt;Double Click on Any Method Source code Converted to IL Code&lt;br /&gt;// Code size 12 (0xc)&lt;br /&gt;.maxstack 2&lt;br /&gt;IL_0000: ldarg.0&lt;br /&gt;IL_0001: callvirt instance string Infragistics.WebUI.CalcEngine.RefBase::get_NormalizedAbsoluteName()&lt;br /&gt;IL_0006: callvirt instance int32 [mscorlib]System.String::GetHashCode()&lt;br /&gt;IL_000b: ret&lt;br /&gt;} // end of method RefBase::GetHashCode&lt;br /&gt;This is the MSIL code starts with IL&lt;br /&gt;If we can write code in IL code and understand it we can develop our own complier in the corresponding language.&lt;br /&gt;There are around 30 third party language compliers available like COBOL.net,C#.net etc.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Resources &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;If assembly using any gif/image files that information is stored in resource section of the assembly. Note: To Examine the Components of the Assembly use Intermediate Language Disassembler (ILDASM) Go to&lt;br /&gt;VS Command Prompt and type ILDASM&lt;br /&gt;File --&gt;Open the Dll&lt;br /&gt;We can see the Manifest Meta Data ,IL Code Public key version number&lt;br /&gt;This information can be helpful in determining whether a file is an assembly or part of an assembly, and whether the file has references to other modules or assemblies. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Advantages of .Net Assemblies&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;No dll Hell &lt;/li&gt;&lt;li&gt;Platform independency&lt;/li&gt;&lt;li&gt;Inheritance is supported &lt;/li&gt;&lt;/ol&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-8969775872097152227?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/8969775872097152227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/03/microsoft-net-assemblies.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/8969775872097152227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/8969775872097152227'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/03/microsoft-net-assemblies.html' title='Microsoft .Net Assemblies'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-2716296420072452265</id><published>2008-03-25T01:34:00.000-07:00</published><updated>2009-06-20T12:30:09.791-07:00</updated><title type='text'>Prototype Design Pattern</title><content type='html'>A &lt;strong&gt;Prototype Pattern&lt;/strong&gt; is a creational design pattern used in software development when the type of objects to create is determined by a prototypical instance, which is cloned to produce new objects. This pattern is used for example&lt;br /&gt;to avoid subclasses of an object creator in the client application, like abstract factory pattern does.&lt;br /&gt;or when the inherent cost of creating a new object in the standard way (e.g., using the 'new' kkeyword) is prohibitively expensive for a given application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;C# sample code&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public enum RecordType&lt;br /&gt;{&lt;br /&gt;Car,&lt;br /&gt;Person&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/// &lt;summary&gt;&lt;br /&gt;/// Record is the Prototype&lt;br /&gt;/// &lt;/summary&gt;&lt;br /&gt;public abstract class Record&lt;br /&gt;{&lt;br /&gt;public abstract Record Clone();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/// &lt;summary&gt;&lt;br /&gt;/// PersonRecord is the Concrete Prototype&lt;br /&gt;/// &lt;/summary&gt;&lt;br /&gt;public class PersonRecord : Record&lt;br /&gt;{&lt;br /&gt;string name;&lt;br /&gt;int age;&lt;br /&gt;&lt;br /&gt;public override Record Clone()&lt;br /&gt;{&lt;br /&gt;return (Record)this.MemberwiseClone(); // default shallow copy&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/// &lt;summary&gt;&lt;br /&gt;/// CarRecord is another Concrete Prototype&lt;br /&gt;/// &lt;/summary&gt;&lt;br /&gt;public class CarRecord : Record&lt;br /&gt;{&lt;br /&gt;string carname;&lt;br /&gt;Guid id;&lt;br /&gt;&lt;br /&gt;public override Record Clone()&lt;br /&gt;{&lt;br /&gt;CarRecord clone = (CarRecord)this.MemberwiseClone(); // default shallow copy&lt;br /&gt;clone.id = Guid.NewGuid(); // always generate new id&lt;br /&gt;return clone;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/// &lt;summary&gt;&lt;br /&gt;/// RecordFactory is the client&lt;br /&gt;/// &lt;/summary&gt;&lt;br /&gt;public class RecordFactory&lt;br /&gt;{&lt;br /&gt;private static Dictionary&lt;recordtype,&gt; _prototypes =&lt;br /&gt;new Dictionary&lt;recordtype,&gt;();&lt;br /&gt;&lt;br /&gt;/// &lt;summary&gt;&lt;br /&gt;/// Constructor&lt;br /&gt;/// &lt;/summary&gt;&lt;br /&gt;public RecordFactory()&lt;br /&gt;{&lt;br /&gt;_prototypes.Add(RecordType.Car, new CarRecord());&lt;br /&gt;_prototypes.Add(RecordType.Person, new PersonRecord());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/// &lt;summary&gt;&lt;br /&gt;/// The Factory method&lt;br /&gt;/// &lt;/summary&gt;&lt;br /&gt;public Record CreateRecord(RecordType type)&lt;br /&gt;{&lt;br /&gt;return _prototypes[type].Clone();&lt;br /&gt;}&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-2716296420072452265?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/2716296420072452265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/03/prototype-design-pattern.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2716296420072452265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2716296420072452265'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/03/prototype-design-pattern.html' title='Prototype Design Pattern'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-2530010896198473208</id><published>2008-03-23T12:16:00.000-07:00</published><updated>2009-06-20T12:30:09.799-07:00</updated><title type='text'>Performance Tuning</title><content type='html'>&lt;strong&gt;Performance tuning&lt;/strong&gt; is the improvement of system performance. This is typically a computer application, but the same methods can be applied to economic markets, bureaucracies or other complex systems. The motivation for such activity is called a performance problem, which can be real or anticipated. Most systems will respond to increased load with some degree of decreasing performance. A system's ability to accept higher load is called scalability, and modifying a system to handle a higher load is synonymous to performance tuning.&lt;br /&gt;&lt;br /&gt;Systematic tuning follows these steps:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Assess the problem and establish numeric values that categorize acceptable behavior. &lt;/li&gt;&lt;li&gt;Measure the performance of the system before modification. &lt;/li&gt;&lt;li&gt;Identify the part of the system that is critical for improving the performance. This is called the bottleneck. &lt;/li&gt;&lt;li&gt;Modify that part of the system to remove the bottleneck. &lt;/li&gt;&lt;li&gt;Measure the performance of the system after modification.&lt;br /&gt;This is an instance of the measure-evaluate-improve-learn cycle from quality assurance. &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;A performance problem may be identified by slow or unresponsive systems. This usually occurs because high system loading, causing some part of the system to reach a limit in its ability to respond. This limit within the system is referred to as a bottleneck.&lt;br /&gt;&lt;br /&gt;A handful of techniques are used to improve performance. Among them are code optimization, load balancing, caching strategy, and distributed computing, and self-tuning.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-2530010896198473208?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/2530010896198473208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/03/performance-tuning.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2530010896198473208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2530010896198473208'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/03/performance-tuning.html' title='Performance Tuning'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-2879362137661084187</id><published>2008-03-22T11:35:00.000-07:00</published><updated>2009-06-20T12:30:09.807-07:00</updated><title type='text'>Builder Pattern</title><content type='html'>The &lt;strong&gt;Builder Pattern&lt;/strong&gt; is a software design pattern. The intention is to separate the construction of a complex object from its representation so that the same construction process can create different representations.&lt;br /&gt;&lt;br /&gt;For better understanding please see below an example in C# language to make use of Builder Pattern.&lt;br /&gt;&lt;br /&gt;//Implementation in C#.&lt;br /&gt;class Pizza&lt;br /&gt;{&lt;br /&gt;    string dough;&lt;br /&gt;    string sauce;&lt;br /&gt;    string topping;&lt;br /&gt;    public Pizza() {}&lt;br /&gt;    public void SetDough( string d){ dough = d;}&lt;br /&gt;    public void SetSauce( string s){ sauce = s;}&lt;br /&gt;    public void SetTopping( string t){ topping = t;}&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;//Abstract Builder&lt;br /&gt;abstract class PizzaBuilder&lt;br /&gt;{&lt;br /&gt;    protected Pizza pizza;&lt;br /&gt;    public PizzaBuilder(){}&lt;br /&gt;    public Pizza GetPizza(){ return pizza; }&lt;br /&gt;    public void CreateNewPizza() { pizza = new Pizza(); }&lt;br /&gt; &lt;br /&gt;    public abstract void BuildDough();&lt;br /&gt;    public abstract void BuildSauce();&lt;br /&gt;    public abstract void BuildTopping();&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;//Concrete Builder&lt;br /&gt;class HawaiianPizzaBuilder : PizzaBuilder&lt;br /&gt;{&lt;br /&gt;    public override void BuildDough()   { pizza.SetDough("cross"); }&lt;br /&gt;    public override void BuildSauce()   { pizza.SetSauce("mild"); }&lt;br /&gt;    public override void BuildTopping() { pizza.SetTopping("ham+pineapple"); }&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;//Concrete Builder&lt;br /&gt;class SpicyPizzaBuilder : PizzaBuilder&lt;br /&gt;{&lt;br /&gt;    public override void BuildDough()   { pizza.SetDough("pan baked"); }&lt;br /&gt;    public override void BuildSauce()   { pizza.SetSauce("hot"); }&lt;br /&gt;    public override void BuildTopping() { pizza.SetTopping("pepparoni+salami"); }&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;/** "Director" */&lt;br /&gt;class Waiter {&lt;br /&gt;    private PizzaBuilder pizzaBuilder;&lt;br /&gt; &lt;br /&gt;    public void SetPizzaBuilder (PizzaBuilder pb) { pizzaBuilder = pb; }&lt;br /&gt;    public Pizza GetPizza() { return pizzaBuilder.GetPizza(); }&lt;br /&gt; &lt;br /&gt;    public void ConstructPizza() {&lt;br /&gt;        pizzaBuilder.CreateNewPizza();&lt;br /&gt;        pizzaBuilder.BuildDough();&lt;br /&gt;        pizzaBuilder.BuildSauce();&lt;br /&gt;        pizzaBuilder.BuildTopping();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;/** A customer ordering a pizza. */&lt;br /&gt;class BuilderExample &lt;br /&gt;{&lt;br /&gt;    public static void Main(String[] args) {&lt;br /&gt;        Waiter waiter = new Waiter();&lt;br /&gt;        PizzaBuilder hawaiianPizzaBuilder = new HawaiianPizzaBuilder();&lt;br /&gt;        PizzaBuilder spicyPizzaBuilder = new SpicyPizzaBuilder();&lt;br /&gt; &lt;br /&gt;        waiter.SetPizzaBuilder ( hawaiianPizzaBuilder );&lt;br /&gt;        waiter.ConstructPizza();&lt;br /&gt; &lt;br /&gt;        Pizza pizza = waiter.GetPizza();&lt;br /&gt;    }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-2879362137661084187?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/2879362137661084187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/03/builder-pattern.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2879362137661084187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2879362137661084187'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/03/builder-pattern.html' title='Builder Pattern'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-6700775347132404619</id><published>2008-03-22T11:23:00.000-07:00</published><updated>2009-06-20T12:30:09.819-07:00</updated><title type='text'>Abstract Factory Pattern</title><content type='html'>&lt;strong&gt;Abstract Factory Pattern&lt;/strong&gt; provides a way to encapsulate a group of individual factories that have a common theme. In normal usage, the client software would create a concrete implementation of the abstract factory and then use the generic interfaces to create the concrete objects that are part of the theme. The client does not know (nor care) about which concrete objects it gets from each of these internal factories since it uses only the generic interfaces of their products. This pattern separates the details of implementation of a set of objects from its general usage.&lt;br /&gt;&lt;br /&gt;An example of this would be an abstract factory class DocumentCreator that provides interfaces to create a number of products (eg. createLetter() and createResume()). The system would have any number of derived concrete versions of the DocumentCreator class like FancyDocumentCreator or ModernDocumentCreator, each with a different implementation of createLetter() and createResume() that would create a corresponding object like FancyLetter or ModernResume. Each of these products is derived from a simple abstract class like Letter or Resume of which the client is aware. The client code would get an appropriate instantiation of the DocumentCreator and call its factory methods. Each of the resulting objects would be created from the same DocumentCreator implementation and would share a common theme (they would all be fancy or modern objects). The client would need to know how to handle only the abstract Letter or Resume class, not the specific version that it got from the concrete factory.&lt;br /&gt;&lt;br /&gt;In software development, a Factory is the location in the code at which objects are constructed. The intent in employing the pattern is to insulate the creation of objects from their usage. This allows for new derived types to be introduced with no change to the code that uses the base class.&lt;br /&gt;&lt;br /&gt;Use of this pattern makes it possible to interchange concrete classes without changing the code that uses them, even at runtime. However, employment of this pattern, as with similar design patterns, incurs the risk of unnecessary complexity and extra work in the initial writing of code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-6700775347132404619?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/6700775347132404619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/03/abstract-factory-pattern.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6700775347132404619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6700775347132404619'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/03/abstract-factory-pattern.html' title='Abstract Factory Pattern'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-4541174884778827831</id><published>2008-03-22T11:18:00.000-07:00</published><updated>2009-06-20T12:30:09.831-07:00</updated><title type='text'>Types Of Design Patterns: Defined</title><content type='html'>&lt;strong&gt;Creational Design Patterns&lt;/strong&gt; are design patterns that deal with object creation mechanisms, trying to create objects in a manner suitable to the situation. The basic form of object creation could result in design problems or added complexity to the design. Creational design patterns solve this problem by somehow controlling this object creation.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Structural Design Patterns&lt;/strong&gt; are Design Patterns that ease the design by identifying a simple way to realize relationships between entities.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Behavioral Design Patterns&lt;/strong&gt; are design patterns that identify common communication patterns between objects and realize these patterns. By doing so, these patterns increase flexibility in carrying out this communication.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-4541174884778827831?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/4541174884778827831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/03/types-of-design-patterns-defined.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/4541174884778827831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/4541174884778827831'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/03/types-of-design-patterns-defined.html' title='Types Of Design Patterns: Defined'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-6572284642634621821</id><published>2008-03-17T11:06:00.000-07:00</published><updated>2009-06-20T12:30:09.840-07:00</updated><title type='text'>Design Patterns</title><content type='html'>Design patterns are recurring solutions to software design problems you find again and again in real-world application development. Patterns are about design and interaction of objects, as well as providing a communication platform concerning elegant, reusable solutions to commonly encountered programming challenges.&lt;br /&gt;The Gang of Four (GoF) patterns are generally considered the foundation for all other patterns. They are categorized in three groups: &lt;strong&gt;Creational&lt;/strong&gt;, &lt;strong&gt;Structural&lt;/strong&gt;, and &lt;strong&gt;Behavioral&lt;/strong&gt;.&lt;BR&gt;&lt;table id="Table1" cellspacing="1" cellpadding="1" width="100%" border="1"&gt;&lt;tr style="BACKGROUND-COLOR: gray"&gt;&lt;td colspan="2"&gt;&lt;b&gt;Creational Patterns&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Abstract Factory&lt;/td&gt;&lt;td&gt;Creates an instance of several families of classes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Builder&lt;/td&gt;&lt;td&gt;Separates object construction from its representation&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Factory Method&lt;/td&gt;&lt;td&gt;Creates an instance of several derived classes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Prototype&lt;/td&gt;&lt;td&gt;A fully initialized instance to be copied or cloned&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Singleton&lt;/td&gt;&lt;td&gt;A class of which only a single instance can exist&lt;/td&gt;&lt;/tr&gt;&lt;tr style="BACKGROUND-COLOR: gray"&gt;&lt;td colspan="2"&gt;&lt;b&gt;Structural Patterns&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Adapter&lt;/td&gt;&lt;td&gt;Match interfaces of different classes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Bridge&lt;/td&gt;&lt;td&gt;Separates an object’s interface from its implementation&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Composite&lt;/td&gt;&lt;td&gt;A tree structure of simple and composite objects&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Decorator&lt;/td&gt;&lt;td&gt;Add responsibilities to objects dynamically&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Facade&lt;/td&gt;&lt;td&gt;A single class that represents an entire subsystem&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Flyweight&lt;/td&gt;&lt;td&gt;A fine-grained instance used for efficient sharing&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Proxy&lt;/td&gt;&lt;td&gt;An object representing another object&lt;/td&gt;&lt;/tr&gt;&lt;tr style="BACKGROUND-COLOR: gray"&gt;&lt;td colspan="2"&gt;&lt;b&gt;Behavioral Patterns&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Chain of Resp.&lt;/td&gt;&lt;td&gt;A way of passing a request between a chain of objects&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Command&lt;/td&gt;&lt;td&gt;Encapsulate a command request as an object&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Interpreter&lt;/td&gt;&lt;td&gt;A way to include language elements in a program&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Iterator&lt;/td&gt;&lt;td&gt;Sequentially access the elements of a collection&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mediator&lt;/td&gt;&lt;td&gt;Defines simplified communication between classes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Memento&lt;/td&gt;&lt;td&gt;Capture and restore an object's internal state&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Observer&lt;/td&gt;&lt;td&gt;A way of notifying change to a number of classes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;State&lt;/td&gt;&lt;td&gt;Alter an object's behavior when its state changes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Strategy&lt;/td&gt;&lt;td&gt;Encapsulates an algorithm inside a class&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Template Method&lt;/td&gt;&lt;td&gt;Defer the exact steps of an algorithm to a subclass&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Visitor&lt;/td&gt;&lt;td&gt;Defines a new operation to a class without change&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-6572284642634621821?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/6572284642634621821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/03/design-patterns.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6572284642634621821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6572284642634621821'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/03/design-patterns.html' title='Design Patterns'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-8096973900474534154</id><published>2008-03-17T10:49:00.000-07:00</published><updated>2009-06-20T12:30:09.852-07:00</updated><title type='text'>Agile Modeling</title><content type='html'>Agile Modeling is a practice-based methodology for modeling and documentation of software-based systems. It is intended to be a collection of values, principles, and practices for modeling software that can be applied on a software development project in a more flexible manner than traditional modeling methods.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-8096973900474534154?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/8096973900474534154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/03/agile-modeling.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/8096973900474534154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/8096973900474534154'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/03/agile-modeling.html' title='Agile Modeling'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-1708147391424899584</id><published>2008-03-12T12:21:00.000-07:00</published><updated>2009-06-20T12:30:09.864-07:00</updated><title type='text'>Software Architecture</title><content type='html'>&lt;ul&gt;&lt;li&gt;Architecture defines major&lt;strong&gt; components&lt;/strong&gt; &lt;/li&gt;&lt;li&gt;Architecture defines component &lt;strong&gt;relationships&lt;/strong&gt; (structures) and &lt;strong&gt;interactions&lt;/strong&gt; &lt;/li&gt;&lt;li&gt;Architecture omits content information about components that does not pertain to their interactions &lt;/li&gt;&lt;li&gt;Behavior of components is a part of architecture insofar as it can be discerned from the point of view of another component&lt;/li&gt;&lt;li&gt;Every system has an architecture (even a system composed of one component) &lt;/li&gt;&lt;li&gt;Architecture defines the &lt;strong&gt;rationale&lt;/strong&gt; behind the components and the structure &lt;/li&gt;&lt;li&gt;Architecture definitions do not define what a component is &lt;/li&gt;&lt;li&gt;Architecture is not a single structure - no single structure is the architecture &lt;/li&gt;&lt;li&gt;Architecture represents the set of earliest design decisions those are Hardest to change and Most critical to get right &lt;/li&gt;&lt;li&gt;Architecture is the first design artifact where a system’s quality attributes are addressed&lt;/li&gt;&lt;li&gt;Architecture serves as the blueprint for the system &lt;/li&gt;&lt;li&gt;Architecture establishes the communication and coordination mechanisms among components&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-1708147391424899584?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/1708147391424899584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/03/software-architecture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/1708147391424899584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/1708147391424899584'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/03/software-architecture.html' title='Software Architecture'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-2473979657626293260</id><published>2008-03-12T11:34:00.000-07:00</published><updated>2009-06-20T12:30:09.873-07:00</updated><title type='text'>Software Architecture - Definitions</title><content type='html'>&lt;strong&gt;IEEE 1471-2000&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Software architecture is the &lt;strong&gt;fundamental organization&lt;/strong&gt; of a system, embodied in its &lt;strong&gt;components&lt;/strong&gt;, their &lt;strong&gt;relationships&lt;/strong&gt; to each other and the environment, and the &lt;strong&gt;principles&lt;/strong&gt; governing its design and evolution.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Booch, Kruchten, Reitman, Bittner, and Shaw&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Software architecture encompasses the set of significant decisions about the organization of a software system&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Selection of the structural elements and their interfaces by which a system is composed &lt;/li&gt;&lt;li&gt;Behavior as specified in collaborations among those elements &lt;/li&gt;&lt;li&gt;Composition of these structural and behavioral elements into larger subsystems &lt;/li&gt;&lt;li&gt;Architectural style that guides this organization&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Perry and Wolf, 1992 &lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;A set of architectural (or design) elements that have a particular form &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Boehm et al., 1995&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;A software system architecture comprises &lt;/p&gt;&lt;ul&gt;&lt;li&gt;A collection of software and system components, connections, and constraints &lt;/li&gt;&lt;li&gt;A collection of system stakeholders' need statements &lt;/li&gt;&lt;li&gt;A rationale which demonstrates that the components, connections, and constraints define a system that, if implemented, would satisfy the collection of system stakeholders' need statements &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Clements et al., 1997 &lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships among them&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-2473979657626293260?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/2473979657626293260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/03/software-architecture-definitions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2473979657626293260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/2473979657626293260'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/03/software-architecture-definitions.html' title='Software Architecture - Definitions'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-5544474924812066393</id><published>2008-03-11T11:07:00.000-07:00</published><updated>2009-06-20T12:30:09.883-07:00</updated><title type='text'>Windows SharePoint Services 3.0 Overview</title><content type='html'>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;Microsoft Windows SharePoint Services 3.0 is a versatile technology that organizations and business units of all sizes can use to increase the efficiency of business processes and improve team productivity. With tools for collaboration that help people stay connected across organizational and geographic boundaries, Windows SharePoint Services gives people access to information they need.&lt;br /&gt;Built on Microsoft Windows Server 2003, Windows SharePoint Services also provides a foundation platform for building Web-based business applications that can flex and scale easily to meet the changing and growing needs of your business. Robust administrative controls for managing storage and Web infrastructure give IT departments a cost-effective way to implement and manage a high-performance collaboration environment. With a familiar, Web-based interface and close integration with everyday tools including the Microsoft Office system, Windows SharePoint Services is easy to use and can be deployed rapidly. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Collaborate Easily and Effectively&lt;br /&gt;&lt;/strong&gt;Windows SharePoint Services helps teams stay connected and productive by providing easy access to the people, documents, and information they need to make more informed decisions and get the job done. Enhancements in Windows SharePoint Services 3.0 make it easier than ever to share documents, track tasks, use e-mail efficiently and effectively, and share ideas and information. &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Provide a single workspace for teams to coordinate schedules, organize documents, and participate in discussions—within the organization and over the extranet. &lt;/li&gt;&lt;li&gt;Easily author and manage documents, and help to ensure their integrity with enhanced features including the option to require document checkout before editing, the ability to view past revisions and restore to previous versions, and the ability to set document-specific security. &lt;/li&gt;&lt;li&gt;Help people and teams stay on task with a variety of communication features that let users know when actions are required or important changes are made to existing information or documentation, including announcements, sophisticated alerts, surveys, and discussion boards.&lt;/li&gt;&lt;li&gt;Provide creative forums for brainstorming ideas, building knowledge bases, or simply gathering information in an easy-to-edit format with new templates for implementing blogs (also known as weblogs) and wikis (Web sites that can be quickly edited by team members—no special technical knowledge required).&lt;/li&gt;&lt;li&gt;Stay productive while mobile with enhanced support for offline synchronization through Microsoft Office Outlook 2007 that users can use to manage document libraries, lists, calendars, contacts, tasks, and discussion boards even offline, and to synchronize changes when reconnected to the network.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Get Started Quickly&lt;br /&gt;&lt;/strong&gt;As a built-in component of Windows Server 2003, Windows SharePoint Services makes it easy for IT departments to implement a dependable, scalable collaboration infrastructure with minimal administrative time and effort. Close integration of Windows SharePoint Services with familiar tools for authoring, publishing, organizing, and finding information, including the Microsoft Office system, helps users get up to speed quickly. &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Simplify the creation and navigation of workspaces with the improved user interface and site creation tools in Windows SharePoint Services 3.0 that provide easy-to-use templates, professional-looking site themes, and the ability to rearrange site navigation from within the browser.&lt;/li&gt;&lt;li&gt;Make it easy for users to get up to speed quickly by providing integration with familiar productivity tools such as those found in the Microsoft Office system—users can create workspaces, post and edit documents, and view and update calendars on SharePoint sites, all while working within Microsoft Office system files and programs.&lt;/li&gt;&lt;li&gt;Track work and tasks more easily with enhanced integration with Office Outlook 2007 that helps users organize calendars, tasks, contact lists, discussion boards, and meetings.&lt;br /&gt;Customize workspaces with new application templates that provide custom scenarios for building workflows on the Windows SharePoint Services platform that address specific business processes or sets of tasks.&lt;/li&gt;&lt;li&gt;Implement a collaboration environment with minimal administrative time and effort, and with the flexibility to change deployment settings.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Deploy a Manageable Infrastructure &lt;/strong&gt;&lt;br /&gt;Deployment of Windows SharePoint Services 3.0 increases control over and enhances security of your organization’s data and information resources. Reduce the dependency of business units on your company’s IT department for site provisioning, implementation, backup, and support. Whether you’re a contributor to a team site, a site owner, or a server administrator, Windows SharePoint Services 3.0 provides better administrative controls for managing content, users, and sites so that individuals and teams can operate more efficiently and effectively. &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Increase the security of business information with enhanced administrative controls that decrease cost and complexity associated with site provisioning, management, support, operations, and backup and restore.&lt;/li&gt;&lt;li&gt;Give IT better control over your organization’s infrastructure with new and improved services for controlling access to information and setting policies for site creation that enable security to be set as deep down as the item level.&lt;/li&gt;&lt;li&gt;Empower site managers and teams without compromising security by enabling them to initiate and control their own self-service workspaces and tasks, and manage the participation and access of others—all within parameters set by IT. &lt;/li&gt;&lt;li&gt;Provide a more robust document storage environment with document storage, recycle bin item retrieval, and version-control features built in to team workspaces.&lt;/li&gt;&lt;li&gt;Easily manage and configure Windows SharePoint Services by using a Web browser or command-line utilities, and enable a variety of custom and third-party administration solutions using the Microsoft .NET Framework.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Provide a Foundation for Web-Based Applications&lt;br /&gt;&lt;/strong&gt;With Windows SharePoint Services 3.0, IT professionals can tailor or extend the Windows SharePoint Services foundation to create new, efficient, Web-based tools and services specific to the organization, department, business process, or industry vertical. Through a highly customizable and extensible platform, companies can tie these new tools and services to existing line-of-business applications, capitalizing on existing IT investments and valuable information stored in back-end systems. &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Manage business documents more easily with enhanced document library support and a common repository for document storage.&lt;/li&gt;&lt;li&gt;Use the Windows SharePoint Services platform to build rich, flexible, and scalable Web-based applications and Internet sites specific to the needs of your organization.&lt;/li&gt;&lt;li&gt;Take advantage of integration with Microsoft Office SharePoint Server 2007 that expands the platform services and common framework for document management exposed by Windows SharePoint Services to offer enterprise-wide functionality for records management, search, workflows, portals, personalized sites, and more. &lt;/li&gt;&lt;li&gt;Use Microsoft Office SharePoint Designer 2007 to quickly and easily customize SharePoint sites and build reporting tools and applications tailored to specific tasks without writing or deploying new code.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-5544474924812066393?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/5544474924812066393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2008/03/windows-sharepoint-services-30-overview.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/5544474924812066393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/5544474924812066393'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2008/03/windows-sharepoint-services-30-overview.html' title='Windows SharePoint Services 3.0 Overview'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-6635485468334843522</id><published>2007-12-10T23:09:00.000-08:00</published><updated>2009-06-20T12:30:09.894-07:00</updated><title type='text'>3-Tier Architecture Implementation for Web Applications</title><content type='html'>A 3-Tier Architecture implementation in a web based application scenario is defined as three layers of hardware, as in “web server + application server + database server”. Although it is possible to physically deploy a software application over three layers of hardware, we must divide the application code into three layers of software to begin with so that we actually have something that can occupy each piece of hardware. The former is known as physical 3-tier while the latter is known as logical 3-tier. It should be possible for a logical 3-tier application to be deployed on a single physical device as well as several devices. It is a deployment strategy to decide the installation of the system; we will only describe the logical 3-tier here.&lt;br /&gt;The three logical layers are defined as:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Presentation logic&lt;/strong&gt; - accepting user input and generating user output - the User Interface (UI). &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Business logic&lt;/strong&gt; - the processing of business rules and task-specific behaviors. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Data Access logic&lt;/strong&gt; - communicating with the physical database using the APIs provided by that database engine. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;These areas are also referred to as layers or tiers.&lt;br /&gt;This pattern can be represented in the following diagram:&lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5142611705134357826" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_hae4l4jukGI/R146GV5MnUI/AAAAAAAAABM/ro2MtvnXd3E/s400/Drawing1.jpg" border="0" /&gt;The presentation layer never talks to the data access layer directly - it talks only to the business layer. The business layer receives requests from the presentation layer, which may be:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Requests to read data, in which case the business layer may instruct the data access layer to obtain the data from the database. Note that a single request may not be limited to a single database table. &lt;/li&gt;&lt;li&gt;Requests to write data, in which case the business layer will apply the relevant validation rules before instructing the data access layer to write it to the database. Note that a single request may not be limited to a single database table. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Among the advantages of separating the application logic in this manner are:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Maximises code reuse and minimises code duplication. For example, each business entity has a single component in the business layer, and all presentation layer components which want to access this business entity go through the same business layer component. &lt;/li&gt;&lt;li&gt;It is possible to modify the application by making changes to just one tier, leaving the other two unaffected by the change. For example:                                                                                It should be possible to change the presentation layer, such as from client/server to the web, without affecting the business or data access layers.                                                         It should be possible to change the business rules for an entity without affecting the presentation or data access layers.                                                                                                It should be possible to change the data access layer, such as switching from one database engine to another, without affecting the presentation and business layers. &lt;/li&gt;&lt;li&gt;As each tier is now independent of the other it becomes possible to use different sets of developers, with different skill sets, for each tier. This may reduce the need for multi-skilled developers.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-6635485468334843522?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/6635485468334843522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2007/12/3-tier-architecture-implementation-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6635485468334843522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6635485468334843522'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2007/12/3-tier-architecture-implementation-for.html' title='3-Tier Architecture Implementation for Web Applications'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_hae4l4jukGI/R146GV5MnUI/AAAAAAAAABM/ro2MtvnXd3E/s72-c/Drawing1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-7593059231442173928</id><published>2007-10-22T01:25:00.000-07:00</published><updated>2009-06-20T12:30:09.903-07:00</updated><title type='text'>Normalizing a Sample Table</title><content type='html'>&lt;p&gt;&lt;strong&gt;Unnormalized table: &lt;/strong&gt;&lt;/p&gt;&lt;table width="100%" border="1"&gt;&lt;tbody&gt;&lt;tr style="BACKGROUND-COLOR: gray"&gt;&lt;td&gt;&lt;strong&gt;&lt;span style="color:#ffffff;"&gt;EmployeeID&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;&lt;span style="color:#ffffff;"&gt;Director&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;&lt;span style="color:#ffffff;"&gt;DirectorRole&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;&lt;span style="color:#ffffff;"&gt;Skill1&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;&lt;span style="color:#ffffff;"&gt;Skill2&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;&lt;span style="color:#ffffff;"&gt;Skill3&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1001&lt;/td&gt;&lt;td&gt;Brian&lt;/td&gt;&lt;td&gt;Technical&lt;/td&gt;&lt;td&gt;SQL&lt;/td&gt;&lt;td&gt;C++&lt;/td&gt;&lt;td&gt;.Net&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1002&lt;/td&gt;&lt;td&gt;Victor&lt;/td&gt;&lt;td&gt;Institutional&lt;/td&gt;&lt;td&gt;People Mgmt.&lt;/td&gt;&lt;td&gt;Payroll Mgmt.&lt;/td&gt;&lt;td&gt;Knowledge Mgmt.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;First Normal Form:&lt;/b&gt; No Repeating Groups&lt;br /&gt;Tables should have only two dimensions. Since one employee has several skills, these skills should be listed in a separate table. Fields Skill1, Skill2, and Skill3 in the above records are indications of design trouble.&lt;br /&gt;&lt;br /&gt;Spreadsheets often use the third dimension, but tables should not. Another way to look at this problem is with a one-to-many relationship, do not put the one side and the many side in the same table. Instead, create another table in first normal form by eliminating the repeating group (Skills), as shown below: &lt;/p&gt;&lt;table width="100%" border="1"&gt;&lt;tbody&gt;&lt;tr style="BACKGROUND-COLOR: gray"&gt;&lt;td&gt;&lt;strong&gt;&lt;span style="color:#ffffff;"&gt;EmployeeID&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;&lt;span style="color:#ffffff;"&gt;Director&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;&lt;span style="color:#ffffff;"&gt;DirectorRole&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;&lt;span style="color:#ffffff;"&gt;Skills&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1001&lt;/td&gt;&lt;td&gt;Brian&lt;/td&gt;&lt;td&gt;Technical&lt;/td&gt;&lt;td&gt;SQL&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1001&lt;/td&gt;&lt;td&gt;Brian&lt;/td&gt;&lt;td&gt;Technical&lt;/td&gt;&lt;td&gt;C++&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1001&lt;/td&gt;&lt;td&gt;Brian&lt;/td&gt;&lt;td&gt;Technical&lt;/td&gt;&lt;td&gt;.Net&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1002&lt;/td&gt;&lt;td&gt;Victor&lt;/td&gt;&lt;td&gt;Institutional&lt;/td&gt;&lt;td&gt;People Mgmt.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1002&lt;/td&gt;&lt;td&gt;Victor&lt;/td&gt;&lt;td&gt;Institutional&lt;/td&gt;&lt;td&gt;Payroll Mgmt.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1002&lt;/td&gt;&lt;td&gt;Victor&lt;/td&gt;&lt;td&gt;Institutional&lt;/td&gt;&lt;td&gt;Knowledge Mgmt.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Second Normal Form:&lt;/b&gt; Eliminate Redundant Data&lt;br /&gt;Note the multiple Skills values for each Employee value in the above table. Skill is not functionally dependent on EmployeeID (primary key), so this relationship is not in second normal form.&lt;br /&gt;The following two tables demonstrate second normal form: &lt;/p&gt;&lt;p&gt;&lt;b&gt;Employees&lt;/b&gt; &lt;/p&gt;&lt;table width="100%" border="1"&gt;&lt;tbody&gt;&lt;tr style="BACKGROUND-COLOR: gray"&gt;&lt;td&gt;&lt;strong&gt;&lt;span style="color:#ffffff;"&gt;EmployeeID&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;&lt;span style="color:#ffffff;"&gt;Director&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;&lt;span style="color:#ffffff;"&gt;DirectorRole&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1001&lt;/td&gt;&lt;td&gt;Brian&lt;/td&gt;&lt;td&gt;Technical&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1002&lt;/td&gt;&lt;td&gt;Victor&lt;/td&gt;&lt;td&gt;Institutional&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;EmployeeSkills&lt;/b&gt; &lt;/p&gt;&lt;table width="100%" border="1"&gt;&lt;tbody&gt;&lt;tr style="BACKGROUND-COLOR: gray"&gt;&lt;td&gt;&lt;strong&gt;&lt;span style="color:#ffffff;"&gt;EmployeeID&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;&lt;span style="color:#ffffff;"&gt;Skills&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1001&lt;/td&gt;&lt;td&gt;SQL&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1001&lt;/td&gt;&lt;td&gt;C++&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1001&lt;/td&gt;&lt;td&gt;.Net&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1002&lt;/td&gt;&lt;td&gt;People Mgmt.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1002&lt;/td&gt;&lt;td&gt;Payroll Mgmt.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1002&lt;/td&gt;&lt;td&gt;Knowledge Mgmt.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Third Normal Form:&lt;/b&gt; Eliminate Data Not Dependent On KeyIn the last example; DirectorRole is functionally dependent on the Director attribute. The solution is to move that attribute from the Employees table to the Directors table, as shown below:&lt;/p&gt;&lt;p&gt;&lt;b&gt;Employees&lt;/b&gt; &lt;/p&gt;&lt;table width="100%" border="1"&gt;&lt;tbody&gt;&lt;tr style="BACKGROUND-COLOR: gray"&gt;&lt;td&gt;&lt;strong&gt;&lt;span style="color:#ffffff;"&gt;EmployeeID&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;&lt;span style="color:#ffffff;"&gt;Director&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1001&lt;/td&gt;&lt;td&gt;Brian&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1002&lt;/td&gt;&lt;td&gt;Victor&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Directors&lt;/b&gt; &lt;/p&gt;&lt;table width="100%" border="1"&gt;&lt;tbody&gt;&lt;tr style="BACKGROUND-COLOR: gray"&gt;&lt;td&gt;&lt;strong&gt;&lt;span style="color:#ffffff;"&gt;Director&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;&lt;span style="color:#ffffff;"&gt;DirectorRole&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Brian&lt;/td&gt;&lt;td&gt;Technical&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Victor&lt;/td&gt;&lt;td&gt;Institutional&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-7593059231442173928?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/7593059231442173928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2007/10/normalizing-sample-table.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/7593059231442173928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/7593059231442173928'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2007/10/normalizing-sample-table.html' title='Normalizing a Sample Table'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-5472867449476524579</id><published>2007-10-22T00:35:00.000-07:00</published><updated>2009-06-20T12:30:09.915-07:00</updated><title type='text'>Database Normalization</title><content type='html'>Normalization is the process of organizing data in a database. This includes creating tables and establishing relationships between those tables according to rules designed both to protect the data and to make the database more flexible by eliminating redundancy and inconsistent dependency. Redundant data wastes disk space and creates maintenance problems. If data that exists in more than one place must be changed, the data must be changed in exactly the same way in all locations.&lt;br /&gt;For example, a customer address change is much easier to implement if that data is stored only in the Customers table and nowhere else in the database.&lt;br /&gt;&lt;br /&gt;There are a few rules for database normalization. Each rule is called a "normal form." If the first rule is observed, the database is said to be in "first normal form." If the first three rules are observed, the database is considered to be in "third normal form." Although other levels of normalization are possible, third normal form is considered the highest level necessary for most applications. As with many formal rules and specifications, real world scenarios do not always allow for perfect compliance. In general, normalization requires additional tables and some customers find this cumbersome. If you decide to violate one of the first three rules of normalization, make sure that your application anticipates any problems that could occur, such as redundant data and inconsistent dependencies.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;First Normal Form&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Eliminate repeating groups in individual tables.&lt;/li&gt;&lt;li&gt;Create a separate table for each set of related data.&lt;/li&gt;&lt;li&gt;Identify each set of related data with a primary key.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Do not use multiple fields in a single table to store similar data. For example, to track an inventory item that may come from two possible sources, an inventory record may contain fields for Vendor Code 1 and Vendor Code 2. What happens when you add a third vendor? Adding a field is not the answer; it requires program and table modifications and does not smoothly accommodate a dynamic number of vendors. Instead, place all vendor information in a separate table called Vendors, then link inventory to vendors with an item number key, or vendors to inventory with a vendor code key.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Second Normal Form&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Create separate tables for sets of values that apply to multiple records.&lt;/li&gt;&lt;li&gt;Relate these tables with a foreign key.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Records should not depend on anything other than a table's primary key (a compound key, if necessary). For example, consider a customer's address in an accounting system. The address is needed by the Customers table, but also by the Orders, Shipping, Invoices, Accounts Receivable, and Collections tables. Instead of storing the customer's address as a separate entry in each of these tables, store it in one place, either in the Customers table or in a separate Addresses table.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Third Normal Form&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Eliminate fields that do not depend on the key.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Values in a record that are not part of that record's key do not belong in the table. In general, any time the contents of a group of fields may apply to more than a single record in the table, consider placing those fields in a separate table. &lt;/p&gt;&lt;p&gt;For example, in an Employee Recruitment table, a candidate's university name and address may be included. But you need a complete list of universities for group mailings. If university information is stored in the Candidates table, there is no way to list universities with no current candidates. Create a separate Universities table and link it to the Candidates table with a university code key. &lt;/p&gt;&lt;p&gt;EXCEPTION: Adhering to the third normal form, while theoretically desirable, is not always practical. If you have a Customers table and you want to eliminate all possible interfield dependencies, you must create separate tables for cities, ZIP codes, sales representatives, customer classes, and any other factor that may be duplicated in multiple records. In theory, normalization is worth pursing. However, many small tables may degrade performance or exceed open file and memory capacities. &lt;/p&gt;&lt;p&gt;It may be more feasible to apply third normal form only to data that changes frequently. If some dependent fields remain, design your application to require the user to verify all related fields when any one is changed.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-5472867449476524579?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/5472867449476524579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2007/10/database-normalization.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/5472867449476524579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/5472867449476524579'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2007/10/database-normalization.html' title='Database Normalization'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-8466724705860982629</id><published>2007-10-21T22:15:00.000-07:00</published><updated>2009-06-20T12:30:09.924-07:00</updated><title type='text'>Databases: It’s Characteristics &amp; Components</title><content type='html'>Database is an electronic filing system. The term database is derived from the datum. Datum is the smallest unit of information. Database is a collection of large data where data is grouped according to their characteristics into tables. Also it is easily accessed, managed, and updated. Database Tables have rows and columns. The information is stored in the table in the form of rows and columns. Columns have Data type like int, char, date, byte, image etc. We can restrict the row size to maximum number of characters by setting the properties.&lt;br /&gt;&lt;br /&gt;Computer databases typically contain aggregations of data records or files, such as sales transactions, product catalogs and inventories, and customer profiles.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Characteristics of Database Systems:&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Performance: &lt;/strong&gt;Response time given by database applications must be appropriate for the human-terminal dialogue. This is dependent on organization of the data.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Minimal Redundancy: &lt;/strong&gt;Objective of the database System should be to eliminate data redundancy wherever possible or if redundancy cannot be avoided foe some reasons, it should be controlled.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Integrity:&lt;/strong&gt;Integrity checks can also be performed at the data level itself, by checking that data values confirm to certain specified rules, e.g. value falls in a specified range.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Privacy and Security: &lt;/strong&gt;The information stored in the database should be kept in such a way that it doesn’t get lost or stolen.&lt;br /&gt;Security of data means protecting data against accidental or intentional disclosure to unauthorized persons or even unauthorized modification or destruction.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Components of a Database Management system&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Database Manager: &lt;/strong&gt;It is an interface between low level data stored in the database and the application programs and queries submitted by the system.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;File Manager: &lt;/strong&gt;It manages the allocation of space on the disk storage and maintain the data structures used to represent information stored on the disk.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Query Processor: &lt;/strong&gt;It translates English like statements into low level statements.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;DML Pre-Compiler: &lt;/strong&gt;DML stands for Data Manipulation Language. DML Pre-Copiler manages retrieval, insertion, deletion and modification of the data.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;DDL Compiler: &lt;/strong&gt;DDL stands for Data Definition Language. It provides the definition and description of database objects.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-8466724705860982629?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/8466724705860982629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2007/10/databases-its-characteristics.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/8466724705860982629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/8466724705860982629'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2007/10/databases-its-characteristics.html' title='Databases: It’s Characteristics &amp;amp; Components'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-7147141143907121662</id><published>2007-10-15T22:50:00.000-07:00</published><updated>2009-06-20T12:30:09.932-07:00</updated><title type='text'>Unified Modeling Language (UML)</title><content type='html'>The Unified Modeling Language is a language for communicating about systems: an evolutionary, general-purpose, broadly applicable, tool-supported, and industry-standardized modeling language for specifying, visualizing, constructing, and documenting the artifacts of a system-intensive process.&lt;br /&gt;&lt;br /&gt;The UML was originally conceived by, and evolved primarily from, &lt;strong&gt;Rational Software Corporation&lt;/strong&gt; and three of its most prominent methodologists, the Three Amigos: &lt;strong&gt;Grady Booch&lt;/strong&gt;, &lt;strong&gt;James Rumbaugh&lt;/strong&gt;, and &lt;strong&gt;Ivar Jacobson&lt;/strong&gt;. The UML emerged as a standard from the &lt;strong&gt;Object Management Group (OMG) &lt;/strong&gt;and &lt;strong&gt;Rational Software Corporation&lt;/strong&gt; to unify the information systems and technology industry's best engineering practices as a collection of modeling techniques.&lt;br /&gt;&lt;br /&gt;The UML may be applied to different types of systems (software and non-software), domains (business versus software), and methods or processes. The UML enables and promotes (but does not require nor mandate) a use-case-driven, architecture-centric, iterative and incremental, and risk-confronting process that is object-oriented and component-based. However, the UML does not prescribe any particular system development approach. Rather, it is flexible and can be customized to fit any method.&lt;br /&gt;&lt;br /&gt;The UML is significantly more than a standard or another modeling language. It is a "paradigm," "philosophy," "revolution," and "evolution" of how we approach problem solving and systems. It is often said that the English language is the world's "universal language"; now it is virtually certain that the UML will be the information systems and technology world's "universal language."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-7147141143907121662?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/7147141143907121662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2007/10/unified-modeling-language-uml.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/7147141143907121662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/7147141143907121662'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2007/10/unified-modeling-language-uml.html' title='Unified Modeling Language (UML)'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-3384923587098729954</id><published>2007-10-15T06:17:00.000-07:00</published><updated>2009-06-20T12:30:09.289-07:00</updated><title type='text'>Basic Tasks Performed by an Operating System</title><content type='html'>In addition to my previous post, I am providing a list of basic tasks performed by an Operating System. This is just a list to give the readers a basic idea of different tasks performed by an OS. I will be elaborating on individual tasks in my future postings.&lt;br /&gt;&lt;br /&gt; Memory Management&lt;br /&gt; Process Management&lt;br /&gt; Disk and File System Management&lt;br /&gt; Networking&lt;br /&gt; Security&lt;br /&gt; Graphical User Interface (GUI)&lt;br /&gt; Device Driver Management&lt;br /&gt;&lt;br /&gt;Please follow these links for details on these tasks:&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/memory-management-on-operating-systems.html"&gt;Memory Management&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/process-management.html"&gt;Process Management&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/disk-and-file-system-management.html"&gt;Disk and File Management&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/networking.html"&gt;Networking&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/security.html"&gt;Security&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/graphical-user-interface.html"&gt;Graphical User Interface&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learninformationtechnology.blogspot.com/2008/04/device-driver.html"&gt;Device Driver Management&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-3384923587098729954?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/3384923587098729954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2007/10/basic-tasks-performed-by-operating.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/3384923587098729954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/3384923587098729954'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2007/10/basic-tasks-performed-by-operating.html' title='Basic Tasks Performed by an Operating System'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-70092425413396588</id><published>2007-10-15T05:33:00.000-07:00</published><updated>2009-06-20T12:30:09.940-07:00</updated><title type='text'>Operating System: What &amp; Why?</title><content type='html'>Without an Operating System (OS) a computer is &lt;strong&gt;useless&lt;/strong&gt; or Every general purpose computer system &lt;strong&gt;must&lt;/strong&gt; have an Operating System (OS), as we read these statement there are a couple queries popup in our mind i.e. what is an OS?, and why I need it?&lt;br /&gt;Here I am going to clarify these queries in a nutshell.&lt;br /&gt;&lt;strong&gt;What:&lt;/strong&gt;&lt;br /&gt;In simple terms, an operating system performs basic tasks such as recognizing input from the keyboard, sending output to the display screens, keeping track of files and directories on the disk, and controlling peripheral devices such as disk drives and printers.&lt;br /&gt;&lt;strong&gt;Why:&lt;/strong&gt;&lt;br /&gt;Operating systems provide a software platform on top of which other programs, called application programs, can run. The application programs must be written to run on top of a particular operating system. Your choice of operating system, therefore, determines to a great extent the applications you can run. For PCs, the most popular operating systems are DOS, OS/2, and Windows.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-70092425413396588?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/70092425413396588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2007/10/operating-system-what-why.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/70092425413396588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/70092425413396588'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2007/10/operating-system-what-why.html' title='Operating System: What &amp;amp; Why?'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-8551363093234186650</id><published>2007-10-10T23:11:00.000-07:00</published><updated>2009-06-20T12:30:09.948-07:00</updated><title type='text'>OOPS</title><content type='html'>&lt;strong&gt;Object Oriented Programming&lt;/strong&gt;&lt;br /&gt;It is a problem solving technique to develop software systems. It is a technique to think real world in terms of objects. Object maps the software model to real world concept. These objects have responsibilities and provide services to application or other objects.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Class&lt;/strong&gt;&lt;br /&gt;A class describes all the attributes of objects, as well as the methods that implement the behavior of member objects. It’s a comprehensive data type which represents a blue print of objects. It’s a template of object.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Object&lt;/strong&gt;&lt;br /&gt;It is a basic unit of a system. An object is an entity that has attributes, behavior, and identity. Objects are members of a class. Attributes and behavior of an object are defined by the class definition.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Relationship between Classes and Objects&lt;/strong&gt;&lt;br /&gt;Class is a definition, while object is an instance of the class created. Class is a blue print while objects are actual objects existing in real world. Example we have class CAR which has attributes and methods like Speed, Brakes, Type of Car etc. Class CAR is just a prototype, now we can create real time objects which can be used to provide functionality. Example we can create a specific car object with fixed max speed and urgent brakes.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Characteristics of Object Oriented System’s&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Abstraction&lt;/strong&gt; &lt;br /&gt;It allows complex real world to be represented in simplified manner. Example color is abstracted to RGB. By just making the combination of these three colors we can achieve any color in world. It’s a model of real world or concept. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Encapsulation&lt;/strong&gt; &lt;br /&gt;It is a process of hiding all the internal details of an object from the outside world. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Communication using Messages&lt;/strong&gt; &lt;br /&gt;When application wants to achieve certain task it can only be done using combination of objects. A single object can not do the entire task. Example if we want to make order processing form. We will use Customer object, Order object, Product object and Payment object to achieve this functionality. In short these objects should communicate with each other. This is achieved when objects send messages to each other. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Object Lifetime&lt;/strong&gt; &lt;br /&gt;All objects have life time. Objects are created, and initialized, necessary functionalities are done and later the object is destroyed. Every object have there own state and identity which differ from instance to instance. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Class Hierarchies (Inheritance and Aggregation)&lt;/strong&gt;&lt;br /&gt;In object oriented world objects have relation and hierarchies in between them. There are basically three kind of relationship in Object Oriented world:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Association &lt;/strong&gt;&lt;br /&gt;This is the simplest relationship between objects. Example every customer has sales. So Customer object and sales object have an association relation between them. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Aggregation &lt;/strong&gt;&lt;br /&gt;This is also called as composition model. Example in order to make a “Accounts” class it has use other objects example “Voucher”, “Journal” and “Cash” objects. So accounts class is aggregation of these three objects.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Inheritance &lt;/strong&gt;&lt;br /&gt;Hierarchy is used to define more specialized classes based on a preexisting generalized class. Example we have VEHICLE class and we can inherit this class make more specialized class like CAR, which will add new attributes and use some existing qualities of the parent class. Its demonstrate more of a parent-child relationship. This kind of hierarchy is called inheritance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-8551363093234186650?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/8551363093234186650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2007/10/oops.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/8551363093234186650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/8551363093234186650'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2007/10/oops.html' title='OOPS'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-74972103309326138</id><published>2007-10-10T05:06:00.000-07:00</published><updated>2009-06-20T12:30:09.956-07:00</updated><title type='text'>SOFTWARE</title><content type='html'>&lt;strong&gt;Software&lt;/strong&gt;, computer programs; instructions that cause the hardware—the machines—to do work. Software as a whole can be divided into a number of categories based on the types of work done by programs. The two primary software categories are &lt;strong&gt;operating systems (system software)&lt;/strong&gt;, which control the workings of the computer, and &lt;strong&gt;application software&lt;/strong&gt;, which addresses the multitude of tasks for which people use computers. System software thus handles such essential, but often invisible, chores as maintaining disk files and managing the screen, whereas application software performs word processing, database management, and the like.&lt;br /&gt;&lt;br /&gt;In addition to these task-based categories, several types of software are described based on their method of distribution. These include the so-called canned programs or packaged software developed and sold primarily through retail outlets; &lt;strong&gt;freeware&lt;/strong&gt; and public-domain software, which is made available without cost by its developer; &lt;strong&gt;shareware&lt;/strong&gt;, which is similar to freeware but usually carries a small fee for those who like the program; and the infamous &lt;strong&gt;vaporware&lt;/strong&gt;, which is software that either does not reach the market or appears much later than promised.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-74972103309326138?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/74972103309326138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2007/10/software.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/74972103309326138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/74972103309326138'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2007/10/software.html' title='SOFTWARE'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-5344560908515329720</id><published>2007-10-10T01:57:00.000-07:00</published><updated>2009-06-20T12:30:09.972-07:00</updated><title type='text'>What Information Technology actually is ?</title><content type='html'>&lt;strong&gt;Information Technology (IT)&lt;/strong&gt;, as defined by the Information Technology Association of America (ITAA), is "the study, design, development, implementation, support or management of computer-based information systems, particularly software applications and computer hardware." IT deals with the use of electronic computers and computer software to convert, store, protect, process, transmit and retrieve information, securely.&lt;br /&gt;&lt;br /&gt;Today, the term information technology has ballooned to encompass many aspects of computing and technology, and the term is more recognizable than ever before. The information technology umbrella can be quite large, covering many fields. IT professionals perform a variety of duties that range from installing applications to designing complex computer networks and information databases. A few of the duties that IT professionals perform may include data management, networking, engineering computer hardware, database and software design, as well as the management and administration of entire systems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-5344560908515329720?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/5344560908515329720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2007/10/what-information-technology-actually-is.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/5344560908515329720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/5344560908515329720'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2007/10/what-information-technology-actually-is.html' title='What Information Technology actually is ?'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7871346851699518925.post-6255763801971538526</id><published>2007-10-10T01:11:00.000-07:00</published><updated>2009-06-20T12:30:09.965-07:00</updated><title type='text'>A warm welcome to all of you...</title><content type='html'>I have the pleasure to welcome all visitors of this blog to &lt;strong&gt;Learn Information Technology&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;This blog is launched with the objective of sharing knowledge in the field of Information Technology.&lt;br /&gt;&lt;br /&gt;I do hope that the information presented by this blog will be highly useful for the readers. I would also like to highlight my willingness to receive your constructive comments and valuable remarks on the effectiveness of this blog in order to contribute in its continuous enrichment and progress to achieve the utmost benefit for all of us.&lt;br /&gt;&lt;br /&gt;Thanks &amp;amp; Regards,&lt;br /&gt;Anshul Gagneja&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7871346851699518925-6255763801971538526?l=learninfotech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learninfotech.blogspot.com/feeds/6255763801971538526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://learninfotech.blogspot.com/2007/10/warm-welcome-to-all-of-you.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6255763801971538526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7871346851699518925/posts/default/6255763801971538526'/><link rel='alternate' type='text/html' href='http://learninfotech.blogspot.com/2007/10/warm-welcome-to-all-of-you.html' title='A warm welcome to all of you...'/><author><name>Anshul Gagneja</name><uri>http://www.blogger.com/profile/13718853138439766295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp1.blogger.com/_hae4l4jukGI/Rwx8dBQffII/AAAAAAAAAAM/9bs8d7fth48/s320/Anshul+Gagneja.jpg'/></author><thr:total>0</thr:total></entry></feed>
