<?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-5624243837319940428</id><updated>2012-01-13T20:26:48.730-08:00</updated><category term='Python'/><category term='debug'/><category term='reflection'/><category term='Microsoft'/><category term='FAQ'/><category term='Website'/><category term='text editor'/><category term='security'/><category term='SQL Server'/><category term='mouse gesture'/><category term='AJAX'/><category term='UI'/><category term='Web2.0'/><category term='DotNet'/><category term='Exam'/><category term='Encrypt'/><category term='coding style'/><category term='Google'/><category term='hacker'/><category term='ASP.NET'/><category term='Open Source'/><category term='TCL/TK'/><category term='c#'/><category term='visual studio'/><category term='C++'/><category term='Remoting'/><category term='interview'/><category term='Web Design'/><category term='Firefox'/><category term='MFC'/><category term='ActiveX Control'/><category term='healthcare'/><category term='funning'/><category term='Win32'/><category term='Software'/><category term='.net'/><category term='program language'/><category term='http handler'/><category term='career'/><category term='GDI+'/><category term='network'/><category term='project management'/><category term='WPF'/><category term='Software Test'/><title type='text'>General Software Technology</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>73</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-5361981841010734813</id><published>2008-09-02T22:03:00.000-07:00</published><updated>2008-09-02T22:04:31.077-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MFC'/><title type='text'>A simple intorduction to using the MFC collections</title><content type='html'>CArray, CList and CMap, Free Source Code Download&lt;br /&gt; &lt;br /&gt; John McTainsh &lt;br /&gt;Introduction.&lt;br /&gt;&lt;br /&gt;This turorial will demonstrate the the MFC collection classes CList, CArray and CMap. These classes are an excillent way to manage dynamic data in a type safe manner. They are very easy to use and mostly encourage solid code.&lt;br /&gt;&lt;br /&gt;Quick Start.&lt;br /&gt;Collection Data Types.&lt;br /&gt;Using CArray.&lt;br /&gt;Using CList.&lt;br /&gt;Using CMap.&lt;br /&gt;Using pointers to objects.&lt;br /&gt;A Quick Start.&lt;br /&gt;&lt;br /&gt;Lets just use a simple List collection to start with. This example demonstartes a que of shoe sizes held as doubles. Items are added to the Tail of the que and removed from the Head for processing.&lt;br /&gt;&lt;br /&gt;#include &lt;afxtempl.h&gt;       // MFC suport for Collections&lt;br /&gt;...&lt;br /&gt;    //Declare the que object&lt;br /&gt;    CList&lt;double, double&gt; m_lstShoeSize;&lt;br /&gt;&lt;br /&gt;    //Add items to the que&lt;br /&gt;    m_lstShoeSize.AddTail( 10.5 );&lt;br /&gt;    m_lstShoeSize.AddTail(  8.0 );&lt;br /&gt;    m_lstShoeSize.AddTail(  9.5 );&lt;br /&gt;    m_lstShoeSize.AddTail(  9.0 );&lt;br /&gt;&lt;br /&gt;    //Process (show) the items in the list.&lt;br /&gt;    for( POSITION pos = m_lstShoeSize.GetHeadPosition(); pos != NULL; )&lt;br /&gt;    {&lt;br /&gt;        _tprintf( _T("Shoe size is %4.1lf\n"), m_lstShoeSize.GetNext( pos ) );&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //Process (remove) the items from the que&lt;br /&gt;    while( !m_lstShoeSize.IsEmpty() )&lt;br /&gt;    {&lt;br /&gt;        double dRemovedShoe = m_lstShoeSize.RemoveHead();&lt;br /&gt;        _tprintf( _T("Removing Shoe Size(%4.1lf)\n"), dRemovedShoe );&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;Collection data types.&lt;br /&gt;&lt;br /&gt;Jump ahead to using CArray if you just want to skip the theory. In the previous example you would note the use of a template . The two parameters are used to define how data is stored and retrieved from the collection.&lt;br /&gt;TYPE.&lt;br /&gt;&lt;br /&gt;This is the type of data that is used to hold the elements internally and RETURNED from the collection. Get returns this data type.&lt;br /&gt;ARG_TYPE.&lt;br /&gt;&lt;br /&gt;This type is use to specify the type of data used to write (STORE) data to the collection. Set uses this data type. Often this type is a reference to the TYPE value. Some examples follow;&lt;br /&gt;&lt;br /&gt;    CList&lt; PERSON*, PERSON* &gt; m_lstPeople;     //1 List of pointers to struct&lt;br /&gt;    CList&lt; CString, CString &gt; m_lstNames;      //2 List of CStrings&lt;br /&gt;    CList&lt; CString, CString&amp;&gt; m_lstNames;      //3 .. same using references&lt;br /&gt;    CList&lt; CString, LPCSTR  &gt; m_lstNames;      //4 .. using constant pointers&lt;br /&gt;&lt;br /&gt;Note 1: With regard sample 1, the list contains pointer not objects, so the objects must be created with new and deleted when no longer required.&lt;br /&gt;&lt;br /&gt;Note 2: With regard sample 3, the ARG_TYPE parameter is used to indicate how the value will be passed into the collection, ie in the Add() method. It does NOT indicate a collection of referances.&lt;br /&gt;Using CArray.&lt;br /&gt;&lt;br /&gt;CArray is a collection that is best used for data that is to be accessed in a random or non sequensial manner. The array can dynamically shrink and grow as necessary. Array indexes always start at position 0. You can decide whether to fix the upper bound or allow the array to expand when you add elements past the current bound. Memory is allocated contiguously to the upper bound, even if some elements are null.&lt;br /&gt;&lt;br /&gt;The following example adds two CTime objects to the array and then displays the contents of the entire array. The key functions are SetAtGrow which adds an item and increases the array size and the [] operator which is used to retrieve data from the array.&lt;br /&gt;&lt;br /&gt;#include &lt;afxtempl.h&gt;       // MFC suport for Collections&lt;br /&gt;...&lt;br /&gt;   CArray&lt;CTime, CTime&amp;&gt; m_aryTime;&lt;br /&gt;&lt;br /&gt;    m_aryTime.SetAtGrow( 3, CTime::GetCurrentTime() );&lt;br /&gt;    m_aryTime.SetAtGrow( 5, CTime( 1999, 6, 12 ) );&lt;br /&gt;    &lt;br /&gt;    for( int nCnt = 0; nCnt &lt; m_aryTime.GetSize(); nCnt++ )&lt;br /&gt;    {&lt;br /&gt;        if( m_aryTime[nCnt].GetTime() != 0 )&lt;br /&gt;        { &lt;br /&gt;            _tprintf( _T("Time is %s\n"), &lt;br /&gt;            m_aryTime[nCnt].Format( _T("%d/%b/%y %H:%M") ) );&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;        {&lt;br /&gt;            _tprintf( _T("Invalid Time\n") );&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;Using CList.&lt;br /&gt;&lt;br /&gt;Lists are simular to arrays but are optimised for data that is read in a more sequensial manner such as ques and lists. See the example in Quick Start. earlier for a simple list example. Note items are added at the head or tail of the list. Retrival is from the head or tail of the list and via an iterative process.&lt;br /&gt;&lt;br /&gt;#include &lt;afxtempl.h&gt;       // MFC suport for Collections&lt;br /&gt;...&lt;br /&gt;    //Declare the que object&lt;br /&gt;    CList&lt;int, int&gt; m_lstDepth;&lt;br /&gt;&lt;br /&gt;    //Add items to the que&lt;br /&gt;    m_lstDepth.AddTail( 100 );&lt;br /&gt;    m_lstDepth.AddTail(  85 );&lt;br /&gt;    m_lstDepth.AddTail(  95 );&lt;br /&gt;    m_lstDepth.AddTail(  90 );&lt;br /&gt;&lt;br /&gt;    //Process (show) the items in the list.&lt;br /&gt;    for( POSITION pos = m_lstDepth.GetHeadPosition(); pos != NULL; )&lt;br /&gt;    {&lt;br /&gt;        _tprintf( _T("Dive depth is %4d\n"), m_lstDepth.GetNext( pos ) );&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;Using CMap.&lt;br /&gt;&lt;br /&gt;The CMap object is an simple collection, but unlike arrays and lists, which index and order the data they store, maps associate keys and values. To access a value stored in a map, specifying the value¢Î associated key. This is simular to a hash table.&lt;br /&gt;&lt;br /&gt;#include &lt;afxtempl.h&gt;       // MFC suport for Collections&lt;br /&gt;...&lt;br /&gt;    CMap&lt;CString,LPCSTR,CString,CString&amp;&gt; m_mapAddress;&lt;br /&gt;&lt;br /&gt;    m_mapAddress[_T( "10.1.1.102" )] = _T("BILL");&lt;br /&gt;    m_mapAddress[_T( "10.1.1.108" )] = _T("MAILSERVER");&lt;br /&gt;    m_mapAddress[_T( "10.1.1.112" )] = _T("DevLaptop01");&lt;br /&gt;    m_mapAddress[_T( "10.1.1.10" )]  = _T("PALEALE");&lt;br /&gt;    m_mapAddress[_T( "10.1.3.1" )]   = _T("PTRAK");&lt;br /&gt;&lt;br /&gt;    CString sMachine;&lt;br /&gt;    CString sUnknownIP =  _T( "?0.?.?.112" );&lt;br /&gt;    sUnknownIP.Replace( _T("?"), _T("1") );&lt;br /&gt;    m_mapAddress.Lookup( sUnknownIP, sMachine );&lt;br /&gt;&lt;br /&gt;    _tprintf( _T("Machine at IP %s is %s\n"), sUnknownIP, sMachine );&lt;br /&gt;&lt;br /&gt;Using pointers to objects.&lt;br /&gt;&lt;br /&gt;In all the previous examples the items in the list all supported the assigment = operator. This makes it possible to add and retrieve data from the collection. Items that do not support the assignment operator can still be saved to a collection but must be created and destroyed manualy. The objects must be dynamically allocated using the new operator, ie the "free store" or "heap" this ensures they are not deleted once they go out of scope. Therefore when removed from the list they must be manually deleted. A destructor is often good place to perform this task. The following example shows a list of PERSON structures that are created, displayed and deleted.&lt;br /&gt;&lt;br /&gt;NOTE: Unlike other collections, pointers return the actual object rather than a copy, so changes made to the returned object are perminent.&lt;br /&gt;&lt;br /&gt;#include &lt;afxtempl.h&gt;                            // MFC suport for Collections&lt;br /&gt;...&lt;br /&gt;//Person structure&lt;br /&gt;#define LEN_CLOTH_SIZE    (5)                    //Max cloth size length&lt;br /&gt;typedef struct _PERSON &lt;br /&gt;{&lt;br /&gt;    int                nHeight;                  //in cm&lt;br /&gt;    CString            sFullName;                //Name&lt;br /&gt;    COleDateTime    tmBirthDate;                 //Birthday&lt;br /&gt;    TCHAR            szShirt[LEN_CLOTH_SIZE];    //Shirt size    &lt;br /&gt; } PERSON, *LPPERSON;&lt;br /&gt; ...&lt;br /&gt;   &lt;br /&gt;    CList&lt; LPPERSON, LPPERSON &gt; m_lstPeople;&lt;br /&gt;&lt;br /&gt;    //Bilbos details&lt;br /&gt;    LPPERSON lpPerson = new PERSON;&lt;br /&gt;    lpPerson-&gt;nHeight          = 95;&lt;br /&gt;    lpPerson-&gt;sFullName        = _T("Bilbo Baggins");&lt;br /&gt;    _tcscpy( lpPerson-&gt;szShirt, _T("XOS") );&lt;br /&gt;    lpPerson-&gt;tmBirthDate      = COleDateTime( 1965, 6, 22, 3, 0, 0 );&lt;br /&gt;    m_lstPeople.AddTail( lpPerson );&lt;br /&gt;&lt;br /&gt;    //Fredo details&lt;br /&gt;    lpPerson = new PERSON;&lt;br /&gt;    lpPerson-&gt;nHeight          = 49;&lt;br /&gt;    lpPerson-&gt;sFullName        = _T("Fredo Frog");&lt;br /&gt;    _tcscpy( lpPerson-&gt;szShirt, _T("OS") );&lt;br /&gt;    lpPerson-&gt;tmBirthDate      = COleDateTime( 1965, 1, 5, 18, 0, 0 );&lt;br /&gt;    m_lstPeople.AddTail( lpPerson );&lt;br /&gt;&lt;br /&gt;    //Display the People in the que&lt;br /&gt;    POSITION posPerson = m_lstPeople.GetHeadPosition();&lt;br /&gt;    while( posPerson != NULL )&lt;br /&gt;    {&lt;br /&gt;        LPPERSON lpDisplayPerson = m_lstPeople.GetNext( posPerson );&lt;br /&gt;        _tprintf( _T("Name .........%s\n"), lpDisplayPerson-&gt;sFullName );&lt;br /&gt;        _tprintf( _T("Height        %d\n"), lpDisplayPerson-&gt;nHeight  );&lt;br /&gt;        _tprintf( _T("Shirt size    %s\n"), lpDisplayPerson-&gt;szShirt );&lt;br /&gt;        _tprintf( _T("Birthday      %s\n\n"), lpDisplayPerson-&gt;tmBirthDate.&lt;br /&gt;            Format( _T("%d/%b/%y %H:%M") ) );&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //Free out the list&lt;br /&gt;    while( !m_lstPeople.IsEmpty() )&lt;br /&gt;    {&lt;br /&gt;       LPPERSON lpLostPerson = m_lstPeople.RemoveHead();&lt;br /&gt;       delete lpLostPerson;&lt;br /&gt;    }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-5361981841010734813?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/5361981841010734813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=5361981841010734813' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/5361981841010734813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/5361981841010734813'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/09/simple-intorduction-to-using-mfc.html' title='A simple intorduction to using the MFC collections'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-6421091267981561795</id><published>2008-06-24T04:04:00.000-07:00</published><updated>2008-06-24T04:06:45.431-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>CMake, cross-platform make</title><content type='html'>Welcome to CMake, the cross-platform, open-source build system. CMake is a family of tools designed to build, test and package software. CMake is used to control the software compilation process using simple platform and compiler independent configuration files. CMake generates native makefiles and workspaces that can be used in the compiler environment of your choice. CMake is quite sophisticated: it is possible to support complex environments requiring system introspection, pre-processor generation, code generation and template instantiation. In addition to controling the build process, CMake includes CTest for testing and CPack for packaging. Please go &lt;a href="http://www.cmake.org/HTML/About.html"&gt;here &lt;/a&gt;to learn more about CMake.&lt;br /&gt;CMake was developed by &lt;a href="http://www.kitware.com/"&gt;Kitware &lt;/a&gt;as part of the &lt;a href="http://www.itk.org/"&gt;NLM Insight Segmentation and Registration Toolkit &lt;/a&gt;project. The &lt;a href="http://www.asci.doe.gov/scs/views.htm"&gt;ASCI VIEWS project &lt;/a&gt;also provided support in the context of their parallel computation environment.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cmake.org/HTML/index.html"&gt;http://www.cmake.org/HTML/index.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-6421091267981561795?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/6421091267981561795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=6421091267981561795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/6421091267981561795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/6421091267981561795'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/06/cmake-cross-platform-make.html' title='CMake, cross-platform make'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-6083412498650953450</id><published>2008-06-15T23:22:00.001-07:00</published><updated>2008-06-15T23:22:58.371-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Design'/><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='debug'/><title type='text'>15 Tools to Help You Develop Faster Web Pages</title><content type='html'>Response times, availability, and stability are vital factors to bear in mind when creating and maintaining a web application. If you’re concerned about your web pages’ speed or want to make sure you’re in tip-top shape before starting or launching a project, here’s a few useful, free tools to help you create and sustain high-performance web applications.&lt;br /&gt;&lt;br /&gt;I’ve tried to include a wide variety of tools that are easy to use, and have tried to keep them as OS and technology-independent as possible so that everyone can find a tool or two.&lt;br /&gt;&lt;a href="http://sixrevisions.com/tools/faster_web_page/"&gt;http://sixrevisions.com/tools/faster_web_page/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-6083412498650953450?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/6083412498650953450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=6083412498650953450' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/6083412498650953450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/6083412498650953450'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/06/15-tools-to-help-you-develop-faster-web.html' title='15 Tools to Help You Develop Faster Web Pages'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-4959208150251862917</id><published>2008-06-13T00:36:00.000-07:00</published><updated>2008-06-13T00:37:38.216-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debug'/><title type='text'>Debugging Windows Error Reporting</title><content type='html'>If you’re a software developer, chances are that you have written an application, and this application has crashed. When this happened, it probably put up a dialog that looks something like this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; How do you figure out what went wrong?&lt;br /&gt;&lt;br /&gt;Strategy #1: Extract the minidump from Windows Error Reporting&lt;br /&gt;Windows Error reporting has already created a minidump of the crash. So one way to find out what went wrong is just to look at the minidump. This works really well if your application is written in native code and there is no debugger on the machine where the crash occurs. You can use it for managed code too, but you will need to use sos.dll to analyze the dump (see MSDN). Open a command prompt (Start-&gt;Run, cmd.exe), and switch to your temp directory:&lt;br /&gt;&lt;br /&gt;C:\Documents and Settings\greggm&gt;cd /d %tmp%&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Look for the dump file that Windows Error Reporting produced. It will have a '.dmp' or '.mdmp' extension and the date should be shortly after the crash happened:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;C:\DOCUME~1\greggm\LOCALS~1\Temp&gt;dir *.*dmp&lt;br /&gt; Volume in drive C has no label.&lt;br /&gt; Volume Serial Number is 70E3-6676 &lt;br /&gt;&lt;br /&gt; Directory of C:\DOCUME~1\greggm\LOCALS~1\Temp&lt;br /&gt;&lt;br /&gt;05/24/2007  08:54 AM           109,570 4A88835.dmp&lt;br /&gt;               1 File(s)        109,570 bytes&lt;br /&gt;               0 Dir(s)  25,379,823,616 bytes free&lt;br /&gt;&lt;br /&gt;Mark the file as read-only. This will prevent Windows Error Reporting from deleting the file after you dismiss the dialog:&lt;br /&gt;&lt;br /&gt;C:\DOCUME~1\greggm\LOCALS~1\Temp&gt;attrib +r 4A88835.dmp&lt;br /&gt;&lt;br /&gt;Now dismiss windows error reporting and copy the dump file wherever you want. You can analyze the dump in Visual Studio by opening the dump file as a project (File-&gt;Open Project), and start debugging (F5).&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Strategy #2: Access the dump from Online Crash Analysis&lt;br /&gt;Microsoft has a program to allow ISVs to access the crashes in their applications that have been submitted by users. If the person experiencing the crash is a customer, this is a great way to find out what happened. See the winqual site for more information. &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Strategy #3: Debug the crash through Just-In-Time Debugging&lt;br /&gt;Probably everyone already knows about this, so I won’t spend much time discussing it. However, as long as the application is crashing on a computer that has a debugger installed, this is the easiest option. The only thing tricky that I will mention is that in Windows Vista, depending on your computers Windows Error Reporting settings, you might actually need to click the 'Send information' button before Windows Vista will present you with a second dialog that allows you to debug.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-4959208150251862917?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/4959208150251862917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=4959208150251862917' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/4959208150251862917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/4959208150251862917'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/06/debugging-windows-error-reporting.html' title='Debugging Windows Error Reporting'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-7168608851224195320</id><published>2008-06-10T04:00:00.000-07:00</published><updated>2008-06-10T04:01:39.074-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Test'/><title type='text'>Watir - Automated testing that doesn’t hurt</title><content type='html'>Watir is a simple open-source library for automating web browsers. It allows you to write tests that are easy to read and easy to maintain. It is optimized for simplicity and flexibility.&lt;br /&gt;&lt;br /&gt;Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page.&lt;br /&gt;&lt;br /&gt;Watir is a Ruby library that works with Internet Explorer on Windows. Watir is currently being ported to support Firefox and Safari.&lt;br /&gt;&lt;br /&gt;Like other programming languages, Ruby gives you the power to connect to databases, read data files, export XML and structure your code into reusable libraries. Unlike other programing languages, Ruby is concise and often a joy to read.&lt;br /&gt;&lt;br /&gt;Watir stands for “Web Application Testing in Ruby”. It is pronounced water.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wtr.rubyforge.org/"&gt;http://wtr.rubyforge.org/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-7168608851224195320?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/7168608851224195320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=7168608851224195320' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/7168608851224195320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/7168608851224195320'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/06/watir-automated-testing-that-doesnt.html' title='Watir - Automated testing that doesn’t hurt'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-4344484645159182806</id><published>2008-06-03T18:44:00.000-07:00</published><updated>2008-06-03T18:45:16.964-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Design'/><category scheme='http://www.blogger.com/atom/ns#' term='Web2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Website'/><title type='text'>The 100 top Web apps for 2008</title><content type='html'>These are the 100 best Web 2.0 applications, chosen by Webware readers and Internet users across the globe. Over 1.9 million votes were cast to select these Webware 100 winners: &lt;a href="http://www.webware.com/html/ww/100/2008/winners.html"&gt;http://www.webware.com/html/ww/100/2008/winners.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-4344484645159182806?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/4344484645159182806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=4344484645159182806' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/4344484645159182806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/4344484645159182806'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/06/100-top-web-apps-for-2008.html' title='The 100 top Web apps for 2008'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-3213066681475479593</id><published>2008-05-27T19:29:00.000-07:00</published><updated>2008-05-27T19:30:33.148-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Design'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Speed Up Your Website - By Example</title><content type='html'>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br /&gt;"We live only to discover beauty, all else is a form of waiting. Khalil Gibran", if you agree with this saying, then you are well aware of what it mean to minimize wait for your web audiences.Building an HTML page, adding images, CSS and JS has become piece of cake over last few years, but delivering these rich-contents with a Performance to client browser is still a daunting task. This narrow down check list will help you to review your web site to minimize download time.&lt;br /&gt;Note: This article describes only Front-End engineering issues, No Programming/CGI scripting/Data Structure/Database/Multimedia optimization techniques are discussed in this article. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.codeproject.com/KB/HTML/SpeedUpWebsite.aspx"&gt;http://www.codeproject.com/KB/HTML/SpeedUpWebsite.aspx&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/5624243837319940428-3213066681475479593?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/3213066681475479593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=3213066681475479593' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/3213066681475479593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/3213066681475479593'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/05/speed-up-your-website-by-example.html' title='Speed Up Your Website - By Example'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-5376376360972754983</id><published>2008-05-20T23:53:00.000-07:00</published><updated>2008-05-20T23:54:46.972-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='funning'/><title type='text'>Best Programming Jokes</title><content type='html'>How can you tell when a programmer has had sex?When he's washing the pepper spray out of his eyes.&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;Two bytes meet. The first byte asks, "Are you ill?" The second byte replies, "No, just feeling a bit off."&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;Eight bytes walk into a bar. The bartender asks, "Can I get you anything?"&lt;br /&gt;"Yeah," reply the bytes. "Make us a double."&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;Q. How did the programmer die in the shower?A. He read the shampoo bottle instructions: Lather. Rinse. Repeat.&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;How many programers dose it take to change a light bulb?None - It's a hardare problem&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;Why do programmers always mix up Halloween and Christmas? Because Oct 31 equals Dec 25.&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;There are only 10 kinds of people in this world: those who know binary and those who don't.&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;A programmer walks to the butcher shop and buys a kilo of meat. An hour later he comes back upset that the butcher shortchanged him by 24 grams.&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;"Knock, knock.""Who's there?"very long pause…."Java."&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;Programming is 10% science, 20% ingenuity, and 70% getting the ingenuity to work with the science.&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;Programming is like sex:One mistake and you have to support it for the rest of your life.&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;A man is smoking a cigarette and blowing smoke rings into the air. His girlfriend becomes irritated with the smoke and says, "Can't you see the warning on the cigarette pack? Smoking is hazardous to your health!"&lt;br /&gt;To which the man replies, "I am a programmer. We don't worry about warnings; we only worry about errors."&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;There are three kinds of lies: Lies, damned lies, and benchmarks.&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;A programmer is walking along a beach and finds a lamp. He rubs the lamp, and a genie appears. "I am the most powerful genie in the world. I can grant you any wish, but only one wish."&lt;br /&gt;The programmer pulls out a map, points to it and says, "I'd want peace in the Middle East."&lt;br /&gt;The genie responds, "Gee, I don't know. Those people have been fighting for millenia. I can do just about anything, but this is likely beyond my limits."&lt;br /&gt;The programmer then says, "Well, I am a programmer, and my programs have lots of users. Please make all my users satisfied with my software and let them ask for sensible changes."&lt;br /&gt;At which point the genie responds, "Um, let me see that map again."&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;All programmers are playwrights, and all computers are lousy actors.&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;Have you heard about the new Cray super computer? It's so fast, it executes an infinite loop in 6 seconds.&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;The generation of random numbers is too important to be left to chance.&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;"I just saw my life flash before my eyes and all I could see was a close tag…"&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;The computer is mightier than the pen, the sword, and usually, the programmer.&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;Debugging: Removing the needles from the haystack.&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;Two strings walk into a bar and sit down. The bartender says, "So what'll it be?"&lt;br /&gt;The first string says, "I think I'll have a beer quag fulk boorg jdk^CjfdLk jk3s d#f67howe%^U r89nvy~~owmc63^Dz x.xvcu"&lt;br /&gt;"Please excuse my friend," the second string says, "He isn't null-terminated."&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;From the Random Shack Data Processing Dictionary:&lt;br /&gt;Endless Loop: n., see Loop, Endless.Loop, Endless: n., see Endless Loop.&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;The three most dangerous things in the world are a programmer with a soldering iron, a hardware engineer with a software patch, and a user with an idea. - The Wizardry Compiled by Rick Cook&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;One hundred little bugs in the codeOne hundred little bugs.Fix a bug, link the fix in,One hundred little bugs in the code.&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;A computer science student is studying under a tree and another pulls up on a flashy new bike. The first student asks, "Where'd you get that?"&lt;br /&gt;The student on the bike replies, "While I was studying outside, a beautiful girl pulled up on her bike. She took off all her clothes and said, 'You can have anything you want'."&lt;br /&gt;The first student responds, "Good choice! Her clothes probably wouldn't have fit you."&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;CIA - Computer Industry Acronyms&lt;br /&gt;CD-ROM: Consumer Device, Rendered Obsolete in MonthsPCMCIA: People Can't Memorize Computer Industry AcronymsISDN: It Still Does NothingSCSI: System Can't See ItMIPS: Meaningless Indication of Processor SpeedDOS: Defunct Operating SystemWINDOWS: Will Install Needless Data On Whole SystemOS/2: Obsolete Soon, TooPnP: Plug and PrayAPPLE: Arrogance Produces Profit-Losing EntityIBM: I Blame MicrosoftMICROSOFT: Most Intelligent Customers Realize Our Software Only Fools TeenagersCOBOL: Completely Obsolete Business Oriented LanguageLISP: Lots of Insipid and Stupid ParenthesesMACINTOSH: Most Applications Crash; If Not, The Operating System HangsAAAAA: American Association Against Acronym Abuse.WYSIWYMGIYRRLAAGW: What You See Is What You Might Get If You're Really Really Lucky And All Goes Well.&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;&lt;a href="http://atom.smasher.org/error/gallery/" target="_blank"&gt;Funny Error Messages&lt;/a&gt;&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;&lt;a href="http://www.sucs.swan.ac.uk/~cmckenna/humour/computer/god.html" target="_blank"&gt;God as a Programmer&lt;/a&gt;&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;&lt;a href="http://rinkworks.com/stupid/cs_programming.shtml" target="_blank"&gt;Computer Stupidities&lt;/a&gt;&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;&lt;a href="http://www.comedycode.com/" target="_blank"&gt;Comedy Code&lt;/a&gt; is syntactically correct programming code written just for fun. The code doesn't actually have to do anything if it's executed, but it should look like regular code.&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;Why computers are like men:&lt;br /&gt;In order to get their attention, you have to turn them on.&lt;br /&gt;They have a lot of data, but are still clueless.&lt;br /&gt;They are supposed to help you solve problems, but half the time they are the problem.&lt;br /&gt;As soon as you commit to one, you realize that if you had waited a little longer, you could have had a better model.&lt;br /&gt;Why computers are like women:&lt;br /&gt;No one but the Creator understands their internal logic.&lt;br /&gt;The native language they use to communicate with other computers is incomprehensible to everyone else.&lt;br /&gt;Even your smallest mistakes are stored in long-term memory for later retrieval.&lt;br /&gt;As soon as you make a commitment to one, you find yourself spending half your paycheck on accessories for it.&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;Laws of Computer Programming&lt;br /&gt;Any given program, when running, is obsolete.&lt;br /&gt;Any given program costs more and takes longer.&lt;br /&gt;If a program is useful, it will have to be changed.&lt;br /&gt;If a program is useless, it will have to be documented.&lt;br /&gt;Any program will expand to fill available memory.&lt;br /&gt;The value of a program is proportional to the weight of its output.&lt;br /&gt;Program complexity grows until it exceeds the capabilities of the programmer who must maintain it.&lt;br /&gt;Any non-trivial program contains at least one bug.&lt;br /&gt;Undetectable errors are infinite in variety, in contrast to detectable errors, which by definition are limited.&lt;br /&gt;Adding manpower to a late software project makes it later.&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;Lubarsky's Law of Cybernetic Entomology: There's always one more bug.&lt;br /&gt;Shaw's Principle: Build a system that even a fool can use, and only a fool will want to use it.&lt;br /&gt;Woltman's Law: Never program and drink beer at the same time.&lt;br /&gt;Gallois' Revelation: If you put tomfoolery into a computer, nothing comes out but tomfoolery. But this tomfoolery, having passed through a very expensive machine, is somehow enobled, and no one dares to criticize it.&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;A programmer finds himself in front of a committee that decides whether he should go to Heaven or Hell. The committee tells the programmer he has a say in the matter and asks him if he wants to see either Heaven or Hell before stating his preference.&lt;br /&gt;"Sure," the programmer replies. "I have a pretty good idea what Heaven is like, so let's see Hell." So an angel takes the programmer to a sunny beach, full of beautiful women in skimpy bikinis playing volleyball, listening to music and having a great time. "Wow!" he exclaims, "Hell looks great! I'll take Hell!"&lt;br /&gt;Instantly the programmer finds himself in red-hot lava with demons tearing at his flesh. "Where's the beach? The music? The women?" he screams frantically to the angel.&lt;br /&gt;"That was the demo," the angel replies as she vanishes.&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;Jesus and Satan have an argument as to who is the better programmer. This goes on for a few hours until they come to an agreement to hold a contest with God as the judge. They set themselves before their computers and begin. They type furiously, lines of code streaming up the screen, for several hours straight.&lt;br /&gt;Seconds before the end of the competition, a bolt of lightning strikes, taking out the electricity. Moments later, the power is restored, and God announces that the contest is over. He asks Satan to show his work. Visibly upset, Satan cries and says, "I have nothing. I lost it all when the power went out."&lt;br /&gt;"Very well," says God, "let us see if Jesus has fared any better."&lt;br /&gt;Jesus presses a key, and the screen comes to life in vivid display, the voices of an angelic choir pour forth from the speakers.&lt;br /&gt;Satan is astonished. He stutters, "B-b-but how?! I lost everything, yet Jesus’ program is intact! How did he do it?"&lt;br /&gt;God chuckles, "Everybody knows… Jesus saves."&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;Redneck Computer Terms&lt;br /&gt;LOG ON: Makin' a woodstove hot.LOG OFF: Don't add no more wood.MONITOR: Keepin' an eye on the wood stove.DOWNLOAD: Gittin' the farwood off the truck.MEGA HERTZ: When you're not keerfull gittin' the farwood.FLOPPY DISC: Whutcha git from trying to tote too much farwood.RAM: That thar thing whut splits the farwood.HARD DRIVE: Gittin' home in the winter time.WINDOWS: Whut to shut when it's cold outside.SCREEN: Whut to shut when it's black fly season.BYTE: Whut them dang flys do.CHIP: Munchies fer the TV.MICRO CHIP: Whut's in the bottom of the munchie bag.MODEM: Whutcha do to the hay fields.DOT MATRIX: Old Dan Matrix's wife.LAP TOP: Whar the kitty sleeps.KEYBOARD: Whar you hang the dang truck keys.SOFTWARE: Them dang plastic forks and knifes.MOUSE: Whut eats the grain in the barn.MOUSE PAD: That's hippie talk fer the mouse hole.MAINFRAME: Holds up the barn roof.PORT: Fancy Flatlander wine.ENTER: Northerner talk fer, "C'mon in, y'all."CLICK: Whut you hear when you cock your gun.DOUBLE CLICK: When the dang gun don't far when you pull the trigger.REBOOT: Whut you have to do at bedtime when you forgot the kitty's still outside.&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;Software Development Cycles&lt;br /&gt;Programmer produces code he believes is bug-free.&lt;br /&gt;Product is tested. 20 bugs are found.&lt;br /&gt;Programmer fixes 10 of the bugs and explains to the testing department that the other 10 aren't really bugs.&lt;br /&gt;Testing department finds that five of the fixes didn't work and discovers 15 new bugs.&lt;br /&gt;Repeat three times steps 3 and 4.&lt;br /&gt;Due to marketing pressure and an extremely premature product announcement based on overly-optimistic programming schedule, the product is released.&lt;br /&gt;Users find 137 new bugs.&lt;br /&gt;Original programmer, having cashed his royalty check, is nowhere to be found.&lt;br /&gt;Newly-assembled programming team fixes almost all of the 137 bugs, but introduce 456 new ones.&lt;br /&gt;Original programmer sends underpaid testing department a postcard from Fiji. Entire testing department quits.&lt;br /&gt;Company is bought in a hostile takeover by competitor using profits from their latest release, which had 783 bugs.&lt;br /&gt;New CEO is brought in by board of directors. He hires a programmer to redo program from scratch.&lt;br /&gt;Programmer produces code he believes is bug-free…&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;Top 10 phrases spoken by a Klingon Programmer&lt;br /&gt;A TRUE Klingon Warrior does not comment his code!&lt;br /&gt;By filing this bug report you have challenged the honor of my family. Prepare to die!&lt;br /&gt;You question the worthiness of my code? I should kill you where you stand!&lt;br /&gt;Our competitors are without honor!&lt;br /&gt;Specifications are for the weak and timid!&lt;br /&gt;This machine is GAGH! I need dual Pentium processors if I am to do battle with this code!&lt;br /&gt;Perhaps it IS a good day to die! I say we ship it!&lt;br /&gt;Our users will know fear and cower before our software! Ship it! Ship it and let them flee like the dogs they are!&lt;br /&gt;My program has just dumped Stova Core!&lt;br /&gt;Behold, the keyboard of Kalis! The greatest Klingon code warrior that ever lived!&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;The programmer compiled an array of reasons as to why he can't find a girlfriend with a good \&lt;head\&gt; on her \&lt;body\&gt;, reason 0 being that he has limited cache. So he searches his memory to recall connecting to the TCP/IP tunnel of his last girlfriend — sometimes even without a secure socket. His last girlfriend always complained about his lack of comments. He fumed, "I hate commenting!" Realizing it was a program requirement, he told her she had nice bits. This resulted in a Syntax Error. Now she demanded a massage, but this was rejected as "Feature Creep." He smacked her back-end and shouted, "Who's your parent node?!" He scanned for open ports. He attempted to install a backdoor worm but her response was 403. While his data uploaded into her input device, she considered terminating the process. But instead she initiated a Do While loop where she recalled a previous boyfriend with a larger pointer. To expedite the routine routine, she screamed, "Hack into my system! Hack deep into my system! You're 1337, baby!" This caused his stack to overflow, and he shot his GUI on her interface. (&lt;a href="http://www.hogwild.net/Rants/computer-programming-jokes-girlfriend.htm" target="_blank"&gt;Source&lt;/a&gt;)&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;What's the difference between drug dealers and computer programmers?&lt;br /&gt;Drug Dealers&lt;br /&gt;Computer Programmers&lt;br /&gt;Refer to their clients as "users".&lt;br /&gt;Refer to their clients as "users".&lt;br /&gt;"The first one's free!"&lt;br /&gt;"Download a free trial version…"&lt;br /&gt;Have important South-East Asian connections (to help move the stuff).&lt;br /&gt;Have important South-East Asian connections (to help debug the code).&lt;br /&gt;Strange jargon: "Stick," "Rock," "Dime bag," "E".&lt;br /&gt;Strange jargon: "SCSI," "RTFM," "Java," "ISDN".&lt;br /&gt;Realize that there's tons of cash in the 14- to 25-year-old market.&lt;br /&gt;Realize that there's tons of cash in the 14- to 25-year-old market.&lt;br /&gt;Job is assisted by the industry's producing newer, more potent mixes.&lt;br /&gt;Job is assisted by industry's producing newer, faster machines.&lt;br /&gt;Often seen in the company of pimps and hustlers.&lt;br /&gt;Often seen in the company of marketing people and venture capitalists.&lt;br /&gt;Their product causes unhealthy addictions.&lt;br /&gt;DOOM. Quake. SimCity. Duke Nukem 3D. 'Nuff said.&lt;br /&gt;Do your job well, and you can sleep with sexy movie stars who depend on you.&lt;br /&gt;Damn! Damn! DAMN!!!&lt;br /&gt;Popularity: 87% [&lt;a title="What does this mean?" href="http://alexking.org/projects/wordpress/popularity-contest"&gt;?&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devtopics.com/best-programming-jokes/"&gt;http://www.devtopics.com/best-programming-jokes/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-5376376360972754983?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/5376376360972754983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=5376376360972754983' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/5376376360972754983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/5376376360972754983'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/05/best-programming-jokes.html' title='Best Programming Jokes'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-2743178474204412283</id><published>2008-05-20T23:39:00.000-07:00</published><updated>2008-05-20T23:40:10.534-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coding style'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>C++ Coding Practices Guide</title><content type='html'>&lt;a name="Introduction"&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;To write consistent code comprehended by other developers, you are supposed to follow some coding styles and practices, rather than inventing your own ones. These include naming conventions (on how you name your variables and functions), code and class layout (including tabs, whitespace, brackets placement), imperative const correctness etc... To follow this article, you are supposed to know the basics of OOP and C++. There are some great online resources you may use in addition to this article:&lt;br /&gt;&lt;a href="http://www.parashift.com/c++-faq-lite/" target="_blank"&gt;C++ FAQ lite&lt;/a&gt;&lt;br /&gt;&lt;a href="http://astyle.sourceforge.net/" target="_blank"&gt;Artistic style code formatter&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.textrush.com/coding-standard.htm" target="_blank"&gt;Coding standards&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.chris-lott.org/resources/cstyle/" target="_blank"&gt;C and C++ style guides&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codeproject.com/KB/cpp/cppstyle.aspx"&gt;http://www.codeproject.com/KB/cpp/cppstyle.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-2743178474204412283?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/2743178474204412283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=2743178474204412283' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2743178474204412283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2743178474204412283'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/05/c-coding-practices-guide.html' title='C++ Coding Practices Guide'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-4305416528772580075</id><published>2008-05-20T23:38:00.000-07:00</published><updated>2008-05-20T23:39:01.542-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coding style'/><title type='text'>Artistic Style - A Free, Fast and Small Automatic Formatter</title><content type='html'>Artistic Style is a source code indenter, formatter, and beautifier for the C, C++, C# and Java programming languages.&lt;br /&gt;&lt;br /&gt;When indenting source code, we as programmers have a tendency to use both spaces and tab characters to create the wanted indentation. Moreover, some editors by default insert spaces instead of tabs when pressing the tab key, and other editors (Emacs for example) have the ability to "pretty up" lines by automatically setting up the white space before the code on the line, possibly inserting spaces in a code that up to now used only tabs for indentation.&lt;br /&gt;&lt;br /&gt;Since the NUMBER of space characters showed on screen for each tab character in the source code changes between editors (unless the user sets up the number to his liking...), one of the standard problems programmers are facing when moving from one editor to another is that code containing both spaces and tabs that was up to now perfectly indented, suddenly becomes a mess to look at when changing to another editor. Even if you as a programmer take care to ONLY use spaces or tabs, looking at other people's source code can still be problematic.&lt;br /&gt;&lt;br /&gt;To address this problem, Artistic Style was created - a filter written in C++ that automatically re-indents and re-formats C / C++ / C# / Java source files. It can be used from a command line, or it can be incorporated as classes in another C++ program.&lt;br /&gt;http://astyle.sourceforge.net/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-4305416528772580075?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/4305416528772580075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=4305416528772580075' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/4305416528772580075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/4305416528772580075'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/05/artistic-style-free-fast-and-small.html' title='Artistic Style - A Free, Fast and Small Automatic Formatter'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-7328964072539520270</id><published>2008-04-11T02:46:00.000-07:00</published><updated>2008-04-11T02:47:13.399-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='funning'/><title type='text'>Microsoft Excel: Revolutionary 3D Game Engine?</title><content type='html'>Introduction&lt;br /&gt;&lt;br /&gt;Cutting-edge computer games use different graphics subsystems -- so-called 3D graphics engines. Source (used in Half Life 2), Unreal Engine (Unreal Tournament), idTech 4 (Doom 3), CryENGINE2 (Crysis) or Clever's Paradox engine are well-known among the players and the game industry experts. &lt;br /&gt;&lt;br /&gt;It's time to learn a new 3D game engine name: Microsoft Excel. &lt;br /&gt;&lt;br /&gt;It is understood that Excel is an all-round office tool, but probably it is unknown that it has a bunch of features that makes Excel a high-class 3D graphics engine. &lt;br /&gt;&lt;br /&gt;In this article I will demonstrate Excel's arithmetical facilities, the embedded rendering subsystems (there are two of them!) and the revolutionary approach which might just cause a paradigm shift. I hope you will discover that Excel effectively and efficiently incorporates practicality, tons of features, the multi-platform portability and the high performance with the unique and futuristic 3D engine features. &lt;br /&gt;&lt;br /&gt;The chapters even have demo programs and movies created with the Excel 3D engine. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;http://www.gamasutra.com/view/feature/3563/microsoft_excel_revolutionary_3d_.php&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-7328964072539520270?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/7328964072539520270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=7328964072539520270' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/7328964072539520270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/7328964072539520270'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/04/microsoft-excel-revolutionary-3d-game.html' title='Microsoft Excel: Revolutionary 3D Game Engine?'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-7941351264988818058</id><published>2008-03-24T22:19:00.000-07:00</published><updated>2008-03-24T22:20:32.137-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='project management'/><title type='text'>The Art of Project Management: How to Make Things Happen</title><content type='html'>One myth of project management is that certain people have an innate ability to do it well, and others do not. Whenever this myth came up in conversation with other project managers, I always asked for an explanation of that ability—how to recognize it, categorize it, and, if possible, develop it in others. After discussion and debate, the only thing we usually identified—after considering many of the other topics and skills covered elsewhere in this book—is the ability to make things happen. Some people are able to apply their skills and talents in whatever combination necessary to move projects forward, and others cannot, even if they have the same or superior individual skills. The ability to make things happen is a combination of knowing how to be a catalyst or driver in a variety of different situations, and having the courage to do so.&lt;br /&gt;&lt;br /&gt;This ability to drive is so important to some that it's used as a litmus test in hiring project managers. Even if PMs can't precisely define what the ability is without making at least some references to other skills, they do feel that they can sense or measure it in others. For example, an interviewer needs to ask herself the following question about the candidate: "If things were not going well on some important part of the project, would I feel confident sending this person into that room, into that discussion or debate, and believe he'd help find a way to make it better, whatever the problem was?" If after a round of interviews the answer is no, the candidate is sent home. The belief is that if he isn't agile or flexible enough to adapt his skills and knowledge to the situations at hand, and find ways to drive things forward, then he won't survive, much less thrive, on a typical project. This chapter is about that ability and the skills and tactics involved.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa480154.aspx"&gt;http://msdn2.microsoft.com/en-us/library/aa480154.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://download.csdn.net/source/327929"&gt;http://download.csdn.net/source/327929&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-7941351264988818058?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/7941351264988818058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=7941351264988818058' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/7941351264988818058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/7941351264988818058'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/03/art-of-project-management-how-to-make.html' title='The Art of Project Management: How to Make Things Happen'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-4240148939001260354</id><published>2008-03-10T19:28:00.001-07:00</published><updated>2008-03-10T19:28:49.445-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hacker'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>How They Hack Your Website: Overview of Common Techniques</title><content type='html'>We hear the same terms bandied about whenever a popular site gets hacked. You know… SQL Injection, cross site scripting, that kind of thing. But what do these things mean? Is hacking really as inaccessible as many of us imagine; a nefarious, impossibly technical twilight world forever beyond our ken?&lt;br /&gt;Not really.&lt;br /&gt;When you consider that you can go to Google right now and enter a search string which will return you thousands of usernames and passwords to websites, you realize that this dark science is really no mystery at all. You’ll react similarly when you see just how simple a concept SQL Injection is, and how it can be automated with simple tools. Read on, to learn the basics of how sites and web content management systems are most often hacked, and what you can do to reduce the risk of it happening to you.&lt;br /&gt;&lt;a href="http://www.cmswire.com/cms/web-cms/how-they-hack-your-website-overview-of-common-techniques-002339.php"&gt;http://www.cmswire.com/cms/web-cms/how-they-hack-your-website-overview-of-common-techniques-002339.php&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-4240148939001260354?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/4240148939001260354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=4240148939001260354' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/4240148939001260354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/4240148939001260354'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/03/how-they-hack-your-website-overview-of.html' title='How They Hack Your Website: Overview of Common Techniques'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-4165866829808408063</id><published>2008-03-06T02:28:00.000-08:00</published><updated>2008-03-06T02:31:46.537-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='healthcare'/><title type='text'>Google Heathcare Strategy</title><content type='html'>Google's Healthcare Strategy. A looking glass for the near future. &lt;br /&gt;&lt;a href="http://www.longwoods.com/product.php?productid=18871&amp;amp;page=27"&gt;http://www.longwoods.com/product.php?productid=18871&amp;amp;page=27&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-4165866829808408063?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/4165866829808408063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=4165866829808408063' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/4165866829808408063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/4165866829808408063'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/03/google-heathcare-strategy.html' title='Google Heathcare Strategy'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-6061660147287410300</id><published>2008-03-05T00:53:00.000-08:00</published><updated>2008-03-05T00:54:26.559-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FAQ'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Frequently Asked Questions in SQL Server 2005 - Programmer Perspective</title><content type='html'>&lt;a class="pageTitle" id="#Page1"&gt;Introduction&lt;/a&gt;&lt;br /&gt;[ &lt;a href="http://aspalliance.com/1455_Frequently_Asked_Questions_in_SQL_Server_2005__Programmer_Perspective.all#top"&gt;Back To Top&lt;/a&gt; ]&lt;br /&gt;According to Wikipedia, "Microsoft SQL Server is a &lt;a title="Relational database management system" href="http://en.wikipedia.org/wiki/Relational_database_management_system"&gt;relational database management system&lt;/a&gt; (RDBMS) produced by &lt;a title="Microsoft" href="http://en.wikipedia.org/wiki/Microsoft"&gt;Microsoft&lt;/a&gt;. Its primary &lt;a title="Query language" href="http://en.wikipedia.org/wiki/Query_language"&gt;query language&lt;/a&gt; is &lt;a title="Transact-SQL" href="http://en.wikipedia.org/wiki/Transact-SQL"&gt;Transact-SQL&lt;/a&gt;, an implementation of the ANSI/ISO standard Structured Query Language (&lt;a title="SQL" href="http://en.wikipedia.org/wiki/SQL"&gt;SQL&lt;/a&gt;) used by both Microsoft and &lt;a title="Sybase" href="http://en.wikipedia.org/wiki/Sybase"&gt;Sybase&lt;/a&gt;." However, SQL server 2005 is much more than a RDBMS. It has a rich &lt;a class="iAs" style="COLOR: darkgreen; BORDER-BOTTOM: darkgreen 1px solid; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" href="http://aspalliance.com/1455_Frequently_Asked_Questions_in_SQL_Server_2005__Programmer_Perspective.all#" target="_blank" itxtdid="5435119"&gt;business intelligence&lt;/a&gt; features like Analysis services, Integration services, Data mining services, reporting services, Integration with Microsoft office and much more. Probably the biggest advantage of choosing SQL server 2005 is the integration of .NET Framework.&lt;br /&gt;In this article we will discuss all the questions that a .NET programmer can encounter in an interview. These questions should help .NET programmers who are using SQL Server 2005.&lt;br /&gt;&lt;a class="pageTitle" id="#Page2"&gt;Frequently Asked Questions&lt;/a&gt;&lt;br /&gt;[ &lt;a href="http://aspalliance.com/1455_Frequently_Asked_Questions_in_SQL_Server_2005__Programmer_Perspective.all#top"&gt;Back To Top&lt;/a&gt; ]&lt;br /&gt;1.    What does integration of .NET Framework mean for SQL Server 2005?&lt;br /&gt;This feature enables us to execute C# or VB.NET code in the DBMS to take advantage of the .NET functionality. This feature gives more flexibility in writing complex stored procedures, functions, and triggers that can be written in .net compatible language.&lt;br /&gt;2.    What is SSIS?&lt;br /&gt;According to Microsoft SQL Server Integration Services, "(SSIS) is an effective set of tools for both the traditional demands of ETL operations, as well as for the evolving needs of general purpose data integration." In short, it is the next version of DTS (Data Transformation Services). ETL stands for Extract, Transform and Loading. In short it is a data migration tool that is flexible, fast, and has scalable architecture that enables effective data integration in current business environments.&lt;br /&gt;3.    What is MARS?&lt;br /&gt;In previous versions of SQL Server, applications had to process or cancel all result sets from one batch before it could execute any other batch on that connection. SQL Server 2005 introduces a new connection attribute that allows applications to have more than one pending request per connection, and in particular, to have more than one active default result set per connection. Multiple Active Result Sets (MARS) is the ability to have more than one pending request under a given SQL Server connection. MARS is a programming model enhancement that allows multiple requests to interleave in the server. We need to note that it is not a parallel execution in the server. However, it may benefit us with some performance benefits if used correctly. By default, this feature is not set in SQL Server 2005.&lt;br /&gt;4.    What are the Security Enhancements in SQL Server 2005?&lt;br /&gt;SQL Server 2005 enables administrators to manage permissions at a granular level.&lt;br /&gt;·         In the new SQL Server 2005, we can specify a context under which statements in a module can execute.&lt;br /&gt;·         SQL Server 2005 clustering supports Kerberos authentication against a SQL Server 2005 virtual server.&lt;br /&gt;·         Administrators can specify Microsoft Windows-style policies on standard logins so that a consistent policy is applied across all accounts in the domain.&lt;br /&gt;·         SQL Server 2005 supports encryption capabilities within the database itself, fully integrated with a key management infrastructure. By default, client-server communications are encrypted.&lt;br /&gt;5.    What is new with the Reporting services in SQL server 2005?&lt;br /&gt;SQL Server 2005 Reporting Services is a key component of SQL Server 2005 that provides customers with an enterprise-capable reporting platform. This comprehensive environment is used for authoring, managing, and delivering reports to the entire organization. SQL Server 2005 reporting services have some major changes when compared with the previous version.&lt;br /&gt;·         Changes to the core functionality of the Reporting services in the design of the report, processing, and interactivity&lt;br /&gt;·         Better Integration with other components – Enhanced integration with other components within SQL Server 2005 like SSIS, SSAS and SQL Server Management studio&lt;br /&gt;·         Report Builder – A new reporting tool that enables business users to create their own reports&lt;br /&gt;6.    What is OLAP?&lt;br /&gt;Online Analytical Processing (OLAP) allows us to access aggregated and organized data from business data sources, such as data warehouses, in a multidimensional structure called a cube. The arrangement of data into cubes avoids a limitation of relational databases which are not well suited for near instantaneous analysis of large amounts of data. OLAP cubes can be thought of as extensions to the two-dimensional array of a &lt;a title="Spreadsheet" href="http://en.wikipedia.org/wiki/Spreadsheet"&gt;spreadsheet&lt;/a&gt;.&lt;br /&gt;7.    What is Data Mining?&lt;br /&gt;According to MSDN Data, mining is "the process of extracting valid, authentic, and actionable information from large databases." Microsoft data mining tools are different from traditional data mining applications in significant ways. Data Mining is a platform for developing intelligent applications, not a stand-alone application. You can build custom applications that are intelligent because the data mining models are easily accessible to the outside world. Further, the model is extensible so that third parties can add custom algorithms to support particular mining needs.&lt;br /&gt;8.    What is new with the Analysis Services (SSAS) in SQL Server 2005?&lt;br /&gt;SQL Server 2005 Analysis Services (SSAS) delivers online analytical processing (OLAP) and data mining functionality through a combination of server and client technologies, further reinforced through the use of a specialized development and management environment coupled with a well-defined object model for designing, creating, deploying, and maintaining business intelligence applications. The server component of Analysis Services is implemented as a Microsoft Windows service. Clients communicate with Analysis Services using the public standard XML for Analysis (XMLA), a SOAP-based protocol. Let us see the enhancements of made to SSAS.&lt;br /&gt;·         Supports up to 16 instances of Analysis Services Service.&lt;br /&gt;·         As discussed above, the Analysis Services service fully implements the XML for Analysis (XMLA) 1.1 specification. All communication with an instance of Analysis Services is handled through XMLA commands in SOAP messages.&lt;br /&gt;·         Uses the Proactive caching.&lt;br /&gt;9.    What is Information Schema in SQL Sever 2005?&lt;br /&gt;Information Schema is the part of the SQL- 92 standard which exposes the metadata of the database. In &lt;a href="http://aspalliance.com/1380" target="_top"&gt;SQL server&lt;/a&gt;, a set of views are created in each of the databases which exposes the metadata of the database. The information schema is kept in a separate schema - information schema - which exists in all databases, but which is not included in the search path by default. For more information regarding Information schema please read this &lt;a href="http://aspalliance.com/1380_Information_Schema_and_SQL_Server_2005"&gt;article&lt;/a&gt;.&lt;br /&gt;10. What is Full Text Search? How does it get implemented in SQL server 2005?&lt;br /&gt;Full-text search allows fast and flexible indexing for keyword-based query of text data stored in a Microsoft SQL Server database. In contrast to the LIKE predicate which only works on character patterns, full-text queries perform linguistic searches against this data, by operating on words and phrases based on rules of a particular language.&lt;br /&gt;11. What is integration of Microsoft Office System mean?&lt;br /&gt;The integration with Microsoft Office system means the following.&lt;br /&gt;·         Table Analysis Tools for Excel: Provides an easy-to-use add-in that leverages SQL Server 2005 Data Mining behind the scenes to perform powerful end user analysis on spreadsheet data.&lt;br /&gt;·         Data Mining Client for Excel: Offers a full data mining model development lifecycle directly within Excel 2007.&lt;br /&gt;·         Data Mining Templates for Visio: Enables powerful rendering and sharing of mining models as annotatable Visio 2007 drawings.&lt;br /&gt;12. What is the support of Web Services in SQL Server 2005?&lt;br /&gt;With this feature the database engine can be directly exposed as a web service without a middle tier or even an IIS. This will enable the user to directly call a stored procedure by calling a web method. This feature is designed with well-known standards such as SOAP 1.2, WSDL 1.1, and HTTP. With this new feature we can now connect to SQL Server not only with TDS- Tabular data stream (a binary protocol for connecting to SQL Server 2005) but also over SOAP/ HTTP.&lt;br /&gt;13. What is OLTP?&lt;br /&gt;Online Transaction Processing (OLTP) relational databases are optimal for managing changing data. When several users are performing transactions at the same time, OLTP databases are designed to let transactional applications write only the data needed to handle a single transaction as quickly as possible.&lt;br /&gt;14. What is Snapshot in SQL Server 2005?&lt;br /&gt;A database snapshot is a read-only, static view of a database, the source database. Each database snapshot is transaction-consistent with the source database as it existed at the time of the snapshot's creation.&lt;br /&gt;15. What is snapshot isolation in SQL Server 2005?&lt;br /&gt;SQL Server 2005 introduces a new "snapshot" isolation level that is intended to enhance concurrency for online transaction processing (OLTP) applications. In prior versions of SQL Server, concurrency was based solely on locking, which can cause blocking and deadlocking problems for some applications. Snapshot isolation depends on enhancements to row versioning and is intended to improve performance by avoiding reader-writer blocking scenarios.&lt;br /&gt;16. What is Database Partitioning in SQL Server 2005?&lt;br /&gt;SQL Server 2005 provides a new capability for the partitioning of tables across file groups in a database. Partitioning a database improves performance and simplifies maintenance. By splitting a large table into smaller, individual tables, queries accessing only a fraction of the data can run faster because there is less data to scan.&lt;br /&gt;17. What is SQL Server Agent?&lt;br /&gt;SQL Server Agent is a Microsoft Windows service that executes scheduled administrative tasks called jobs. SQL Server Agent uses SQL Server to store job information. Jobs contain one or more job steps. We generally schedule the backups on the production databases using the SQL server agent. In SQL Server 2005 we have roles created for using SQL Server agents. &lt;br /&gt;·         SQLAgentUserRole&lt;br /&gt;·         SQLAgentReaderRole&lt;br /&gt;·         SQLAgentOperatorRole&lt;br /&gt;SQL Server Agent for SQL Server 2005 provides a more robust security design than earlier versions of SQL Server. This improved design gives system administrators the flexibility they need to manage their Agent service.&lt;br /&gt;18. What is Replication? What is the need to have the replication? What are the enhancements made to SQL Server 2005 related to the replication?&lt;br /&gt;"Replication is a set of technologies for copying and distributing data and database objects from one database to another and then synchronizing between databases to maintain consistency.” In short, replication is all about having multiple copies of the same database. We need replication when we need to distribute data to and from different locations. Generally we have a master copy of data. There will be multiple slaves (Clients) located at various locations which need to be replicated. We use replication for a variety of reasons. Load balancing is sharing the data among a number of servers and distributing the query load. Offline processing is one of the main reasons. In this scenario we need to modify the data on the database that is not connected to the network. The last reason may be to have a back-up to the database in case of failure to the existing database. Let us see the enhancements of SQL server 2005 database related to replication.&lt;br /&gt;·         Database Mirroring – Database Mirroring is moving the transactions of database from one SQL Server database to another SQL server database on a different SQL Server.&lt;br /&gt;·         Replication Management topology (RMO) – RMO is a new construct in SQL Server 2005. It is a .NET Framework library that provides a set of common language runtime classes for configuring, managing, and scripting replication, and for synchronizing Subscribers.&lt;br /&gt;19. What are Business Logic Handlers?&lt;br /&gt;Business logic handlers are written in managed code and allow us to execute custom business logic during the merge synchronization. We can invoke the business logic handler in case of non-conflicting data changes. Business logic handler can perform one of the following three actions.&lt;br /&gt;·         Reject Data&lt;br /&gt;·         Accept Data&lt;br /&gt;·         Apply Custom Data&lt;br /&gt;20. What are different variants of SQL Server 2005?&lt;br /&gt;There are different variants of SQL Server 2005 commercially available.&lt;br /&gt;·         Express – Free and only for one user&lt;br /&gt;·         Enterprise – 5 users apart from server&lt;br /&gt;·         Workgroup – 10 users apart from server&lt;br /&gt;·         Standard – 25 users apart from server&lt;br /&gt;21. What are Various Service packs available for SQL Server 2005?&lt;br /&gt;As of now there are two service packs available for the SQL Server 2005.&lt;br /&gt;·         Service Pack 1 – Has major changes or enhancements to SQL Server 2005 in Analysis Services, Data Programmability, SSIS, and reporting services.&lt;br /&gt;·         Service Pack 2 – Unlike Service Pack 2, this service pack enables SQL Server 2005 customers to take advantage of the enhancements within Windows Vista and the 2007 Office system.&lt;br /&gt;22. What are the New Data types introduced in SQL Server 2005?&lt;br /&gt;SQL Server 2005 has added some new data types to its existing data types.&lt;br /&gt;XML Data type&lt;br /&gt;·         VARCHAR (MAX)&lt;br /&gt;·         NVARCHAR (MAX)&lt;br /&gt;·         VARBINARY (MAX)&lt;br /&gt;As we can see, the new term MAX has been introduced in SQL Server 2005. This new specifier expands the storage capabilities of the varchar, nvarchar, and varbinary data types. Varchar(max), nvarchar(max), and varbinary(max) are collectively called large-value data types.&lt;br /&gt;23. Does SQL Server 2005 support SMTP?&lt;br /&gt;SQL Server 2005 now supports sending E-mail from the database. It is called as database mail and it uses DatabaseMail90.exe. Gone are the days when we were using a third party component for this. Receiving an e-mail was not supported in the previous versions of SQL Server.&lt;br /&gt;24. What is SQL Management Object is SQL Server 2005?&lt;br /&gt;These are collection of objects that are made for programming all aspects of managing Microsoft SQL Server 2005. SMO is a .NET based object model. It comes with SQL Server 2005 as a .Net assembly named Microsoft.SqlServer.Smo.dll. We can use these objects for connecting to a database, calling methods of the database that returns a table, using transactions, transferring data, scheduling administrative tasks, etc. The best part about SMO is that most of it can also be used with SQL server 2000.&lt;br /&gt;25. What is SQL Service Broker in SQL Server 2005?&lt;br /&gt;SQL Service broker is a new technology introduced in SQL Server 2005 for building database-intensive distributed applications. Basically, service broker has been built for developing applications that consist of individual components which are loosely coupled. Service broker supports asynchronous yet reliable messages that are passed between the components. These messages are called conversations.&lt;br /&gt;&lt;a class="pageTitle" id="#Page3"&gt;References&lt;/a&gt;&lt;br /&gt;[ &lt;a href="http://aspalliance.com/1455_Frequently_Asked_Questions_in_SQL_Server_2005__Programmer_Perspective.all#top"&gt;Back To Top&lt;/a&gt; ]&lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/sqlserver/bb428874.aspx" target="_blank"&gt;SQL Server 2005 Book online&lt;/a&gt;&lt;br /&gt;&lt;a class="pageTitle" id="#Page4"&gt;Conclusion&lt;/a&gt;&lt;br /&gt;[ &lt;a href="http://aspalliance.com/1455_Frequently_Asked_Questions_in_SQL_Server_2005__Programmer_Perspective.all#top"&gt;Back To Top&lt;/a&gt; ]&lt;br /&gt;This article targets all the database users who are new to SQL Server 2005. The questions and answers in this article will give a basic understanding towards all the concepts of SQL Server 2005. Hopefully, this will help all those who are preparing for interviews.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-6061660147287410300?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/6061660147287410300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=6061660147287410300' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/6061660147287410300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/6061660147287410300'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/03/frequently-asked-questions-in-sql.html' title='Frequently Asked Questions in SQL Server 2005 - Programmer Perspective'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-2671261339967316235</id><published>2008-03-04T23:20:00.000-08:00</published><updated>2008-03-04T23:21:23.528-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Scaling Out SQL Server 2005</title><content type='html'>&lt;a href="http://msdn2.microsoft.com/en-us/library/aa479364.aspx"&gt;http://msdn2.microsoft.com/en-us/library/aa479364.aspx&lt;/a&gt;&lt;br /&gt;Summary: This article explains the different technologies that are available for scaling out a SQL Server 2005 database application, focusing on the factors that go into deciding which solution(s) to use in your application. (16 printed pages)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-2671261339967316235?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/2671261339967316235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=2671261339967316235' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2671261339967316235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2671261339967316235'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/03/scaling-out-sql-server-2005.html' title='Scaling Out SQL Server 2005'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-851343974890988004</id><published>2008-02-27T03:46:00.000-08:00</published><updated>2008-02-27T03:47:13.437-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mouse gesture'/><title type='text'>Mouse Gesture Recognition</title><content type='html'>&lt;a href="http://www.blogger.com/post-create.g?blogID=5624243837319940428"&gt;http://www.blogger.com/post-create.g?blogID=5624243837319940428&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codeproject.com/KB/recipes/cmgblade.aspx"&gt;http://www.codeproject.com/KB/recipes/cmgblade.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codeproject.com/KB/shell/MouseGestures.aspx"&gt;http://www.codeproject.com/KB/shell/MouseGestures.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-851343974890988004?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/851343974890988004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=851343974890988004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/851343974890988004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/851343974890988004'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/02/mouse-gesture-recognition.html' title='Mouse Gesture Recognition'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-1103960407496512299</id><published>2008-02-18T21:46:00.001-08:00</published><updated>2008-02-18T21:46:41.802-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TCL/TK'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Tcl Windows API and Inspection Tools</title><content type='html'>Provides high level bindings to Windows APIs from the Tcl scripting language. Includes a standalone program - WiTS - that provides cross-linked views into various Windows components (processes, network connections etc.) &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=90123"&gt;http://sourceforge.net/project/showfiles.php?group_id=90123&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-1103960407496512299?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/1103960407496512299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=1103960407496512299' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/1103960407496512299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/1103960407496512299'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/02/tcl-windows-api-and-inspection-tools.html' title='Tcl Windows API and Inspection Tools'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-6660407720136307324</id><published>2008-02-01T01:27:00.000-08:00</published><updated>2008-02-01T01:29:14.657-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='UI'/><title type='text'>A Guided Tour of WPF</title><content type='html'>&lt;a href="http://www.codeproject.com/KB/WPF/GuidedTourWPF_1.aspx"&gt;http://www.codeproject.com/KB/WPF/GuidedTourWPF_1.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-6660407720136307324?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/6660407720136307324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=6660407720136307324' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/6660407720136307324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/6660407720136307324'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/02/guided-tour-of-wpf.html' title='A Guided Tour of WPF'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-1483745726333109162</id><published>2008-01-31T19:33:00.000-08:00</published><updated>2008-01-31T20:30:00.581-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='text editor'/><category scheme='http://www.blogger.com/atom/ns#' term='UI'/><title type='text'>JDarkRoom : A simple full-screen text editor</title><content type='html'>About JDarkRoomJDarkRoom is a &lt;a href="http://www.codealchemists.com/jdarkroom/sightings.html"&gt;popular&lt;/a&gt;, simple full-screen text file editor with none of the usual bells and whistles that might distract you from the job in hand. If you are writing a novel, essay, thesis or just need to be able to concentrate on your writing, then JDarkRoom may help you. I have released JDarkRoom under the umbrella of &lt;a href="http://www.codealchemists.com/"&gt;CodeAlchemists&lt;/a&gt;. Please &lt;a href="http://www.codealchemists.com/jdarkroom/#donate"&gt;donate&lt;/a&gt; if you find this software useful - it encourages me to add features and fix bugs. The development of JDarkRoom was heavily inspired by &lt;a href="http://they.misled.us/archives/501"&gt;DarkRoom&lt;/a&gt;, an implementation of &lt;a href="http://www.hogbaysoftware.com/product/writeroom"&gt;WriteRoom&lt;/a&gt; (which is a Mac-only application) for Windows, but DarkRoom requires the Microsoft .NET framework. I decided to create my own implementation &lt;a href="http://java.com/getjava"&gt;in Java&lt;/a&gt; for those that prefer not to use .NET. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Download&lt;/strong&gt;&lt;br /&gt;To run JDarkRoom, you need to have &lt;a href="http://java.com/getjava"&gt;Java 1.4&lt;/a&gt; or greater installed. Mac OS X comes pre-loaded with Java so you don't need to worry.&lt;br /&gt;JDarkRoom version 12&lt;br /&gt;&lt;a href="http://www.codealchemists.com/jdarkroom/download.php?file=JDarkRoom-install.exe"&gt;Windows (installer)&lt;/a&gt;&lt;br /&gt;(198KB)&lt;br /&gt;&lt;a href="http://www.codealchemists.com/jdarkroom/download.php?file=JDarkRoom-mac.zip"&gt;Mac (application)&lt;/a&gt;&lt;br /&gt;(245KB)&lt;br /&gt;&lt;a href="http://www.codealchemists.com/jdarkroom/download.php?file=JDarkRoom.jar"&gt;Mac / Linux (JAR file)&lt;/a&gt;&lt;br /&gt;(119KB)Once the program has fully downloaded, you should be able to double-click on it and it should run straightaway. If you download the JAR version, an alternative is to open a command prompt, navigate to the directory where you downloaded the program, then type java -jar JDarkRoom.jarMac users: You should be able to double-click the downloaded ZIP file, open the JDarkRoom directory, then drag JDarkRoom to your Applications folder, or to the Dock.NB: Thanks to Dane Velasquez for preparing the .app file for the Mac.&lt;br /&gt;Latest changes:&lt;br /&gt;Adjustable margins to fit any screen resolution (F9 to reset)&lt;br /&gt;Text search (F7 / Ctrl-F)&lt;br /&gt;Colour selection mode now defaults to 'text' rather than 'dialog' (solving a problem for some Mac OS X users)&lt;br /&gt;Auto-save backups - so you never lose your work again (applies to new and pre-existing files)&lt;br /&gt;File names specified on the command line can now contain spaces&lt;br /&gt;You can override the default 'conf' directory location (see below)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-1483745726333109162?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/1483745726333109162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=1483745726333109162' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/1483745726333109162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/1483745726333109162'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/01/jdarkroom-simple-full-screen-text.html' title='JDarkRoom : A simple full-screen text editor'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-2240245876467870623</id><published>2008-01-30T18:45:00.001-08:00</published><updated>2008-01-30T18:45:41.321-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>10 ASP.NET Performance and Scalability Secrets</title><content type='html'>Introduction&lt;br /&gt;ASP.NET 2.0 has many secrets, when revealed, can give you big performance and scalability boost. For instance, there are secret bottlenecks in Membership and Profile provider which can be solved easily to make authentication and authorization faster. Furthermore, ASP.NET Http pipeline can be tweaked to avoid executing unnecessary code that gets hit on each and every request. Not only that, ASP.NET Worker Process can be pushed to its limit to squeeze out every drop of performance out of it. Page fragment output caching on the browser (not on the server) can save significant amount of download time on repeated visits. On demand UI loading can give your site a fast and smooth feeling. Finally, Content Delivery Networks (CDN) and proper use of HTTP Cache headers can make your website screaming fast when implemented properly. In this article, you will learn these techniques that can give your ASP.NET application a big performance and scalability boost and prepare it to perform well under 10 times to 100 times more traffic. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codeproject.com/KB/aspnet/10ASPNetPerformance.aspx"&gt;http://www.codeproject.com/KB/aspnet/10ASPNetPerformance.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-2240245876467870623?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/2240245876467870623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=2240245876467870623' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2240245876467870623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2240245876467870623'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/01/10-aspnet-performance-and-scalability.html' title='10 ASP.NET Performance and Scalability Secrets'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-4852501833758745065</id><published>2008-01-30T18:22:00.000-08:00</published><updated>2008-01-30T18:30:01.921-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Net Tools © 2008 Mohammad Ahmadi Bidakhvidi (</title><content type='html'>Net Tools is a comprehensive set of host monitoring, network scanning, security, administration tools and much more, all with a highly intuitive user interface. It's an ideal tool for those who work in the network security, administration, training, internet forensics or law enforcement internet crimes fields. Net Tools is mainly written in Microsoft Visual Basic 6, Visual C++, Visual C# and Visual Studio .NET.&lt;br /&gt;[ &lt;a href="http://www.mabsoft.com/NetTools5.0.70.zip"&gt;download&lt;/a&gt; ]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-4852501833758745065?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/4852501833758745065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=4852501833758745065' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/4852501833758745065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/4852501833758745065'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/01/net-tools-2008-mohammad-ahmadi.html' title='Net Tools © 2008 Mohammad Ahmadi Bidakhvidi ('/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-3063968784192095513</id><published>2008-01-17T07:03:00.000-08:00</published><updated>2008-01-17T07:07:19.520-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reflection'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>DotNetReflection Concepts</title><content type='html'>&lt;a href="http://www.codeproject.com/KB/dotnet/DotNetReflectionConcepts.aspx"&gt;Full article&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span name="intelliTxt" id="intelliTXT"&gt;&lt;h2&gt;Introduction&lt;/h2&gt;  &lt;p&gt;There are two concepts of learning. They are &lt;strong&gt;Deep&lt;/strong&gt; and &lt;strong&gt;Surface&lt;/strong&gt;. Deep learning focuses on "what is signified"; surface focuses on "signs". This article is trying to find the answer for signified questions like what, how, etc. It is intended for this audience. &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-3063968784192095513?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/3063968784192095513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=3063968784192095513' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/3063968784192095513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/3063968784192095513'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/01/dotnetreflection-concepts.html' title='DotNetReflection Concepts'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-8406791377552127344</id><published>2008-01-14T06:01:00.000-08:00</published><updated>2008-01-14T06:04:02.925-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Test'/><category scheme='http://www.blogger.com/atom/ns#' term='Website'/><title type='text'>Excellent Software Testing Website</title><content type='html'>http://www.geocities.com/xtremetesting/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-8406791377552127344?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/8406791377552127344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=8406791377552127344' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/8406791377552127344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/8406791377552127344'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/01/excellent-software-testing-website.html' title='Excellent Software Testing Website'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-2504109651268681986</id><published>2008-01-13T18:38:00.000-08:00</published><updated>2008-01-13T18:43:19.461-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Remoting'/><category scheme='http://www.blogger.com/atom/ns#' term='interview'/><category scheme='http://www.blogger.com/atom/ns#' term='DotNet'/><title type='text'>Interview Questions - .Net Remoting</title><content type='html'>.NET Remoting&lt;br /&gt;1. What’s a Windows process? It’s an application that’s running and had been allocated memory.&lt;br /&gt;2. What’s typical about a Windows process in regards to memory allocation? Each process is allocated its own block of available RAM space, no process can access another process’ code or data. If the process crashes, it dies alone without taking the entire OS or a bunch of other applications down.&lt;br /&gt;3. Why do you call it a process? What’s different between process and application in .NET, not common computer usage, terminology? A process is an instance of a running application. An application is an executable on the hard drive or network. There can be numerous processes launched of the same application (5 copies of Word running), but 1 process can run just 1 application.&lt;br /&gt;4. What distributed process frameworks outside .NET do you know? Distributed Computing Environment/Remote Procedure Calls (DEC/RPC), Microsoft Distributed Component Object Model (DCOM), Common Object Request Broker Architecture (CORBA), and Java Remote Method Invocation (RMI).&lt;br /&gt;5. What are possible implementations of distributed applications in .NET? .NET Remoting and ASP.NET Web Services. If we talk about the Framework Class Library, noteworthy classes are in System.Runtime.Remoting and System.Web.Services.&lt;br /&gt;6. When would you use .NET Remoting and when Web services? Use remoting for more efficient exchange of information when you control both ends of the application. Use Web services for open-protocol-based information exchange when you are just a client or a server with the other end belonging to someone else.&lt;br /&gt;7. What’s a proxy of the server object in .NET Remoting? It’s a fake copy of the server object that resides on the client side and behaves as if it was the server. It handles the communication between real server object and the client object. This process is also known as marshaling.&lt;br /&gt;8. What are remotable objects in .NET Remoting? Remotable objects are the objects that can be marshaled across the application domains. You can marshal by value, where a deep copy of the object is created and then passed to the receiver. You can also marshal by reference, where just a reference to an existing object is passed.&lt;br /&gt;9. What are channels in .NET Remoting? Channels represent the objects that transfer the other serialized objects from one application domain to another and from one computer to another, as well as one process to another on the same box. A channel must exist before an object can be transferred.&lt;br /&gt;10. What security measures exist for .NET Remoting in System.Runtime.Remoting? None. Security should be taken care of at the application level. Cryptography and other security techniques can be applied at application or server level.&lt;br /&gt;11. What is a formatter? A formatter is an object that is responsible for encoding and serializing data into messages on one end, and deserializing and decoding messages into data on the other end.&lt;br /&gt;12. Choosing between HTTP and TCP for protocols and Binary and SOAP for formatters, what are the trade-offs? Binary over TCP is the most effiecient, SOAP over HTTP is the most interoperable.&lt;br /&gt;13. What’s SingleCall activation mode used for? If the server object is instantiated for responding to just one single request, the request should be made in SingleCall mode.&lt;br /&gt;14. What’s Singleton activation mode? A single object is instantiated regardless of the number of clients accessing it. Lifetime of this object is determined by lifetime lease.&lt;br /&gt;15. How do you define the lease of the object? By implementing ILease interface when writing the class code.&lt;br /&gt;16. Can you configure a .NET Remoting object via XML file? Yes, via machine.config and application level .config file (or web.config in ASP.NET). Application-level XML settings take precedence over machine.config.&lt;br /&gt;17. How can you automatically generate interface for the remotable object in .NET with Microsoft tools? Use the Soapsuds tool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-2504109651268681986?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/2504109651268681986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=2504109651268681986' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2504109651268681986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2504109651268681986'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/01/interview-questions-net-remoting.html' title='Interview Questions - .Net Remoting'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-8052052371686174381</id><published>2008-01-13T18:37:00.000-08:00</published><updated>2008-01-13T18:38:16.894-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Use local scope to improve performance</title><content type='html'>&lt;a href="http://microsoft.apress.com/asptodayarchive/72809/use-local-scope-to-improve-performance"&gt;Full article&lt;/a&gt;&lt;br /&gt;IIS introduced the concept of Internet Server API filters that were used to enhance IIS applications with custom features such as enhanced processing of Http requests. These ISAPI filters were loaded by IIS when it started up and would remain in memory and process all incoming Http requests. While this was a powerful feature, writing ISAPI filters wasn’t exactly simple. This required knowledge of C++ and multithreaded programming and since these DLLs were loaded into the IIS address space, debugging filters was not simple. Further, since the DLLs were loaded into the IIS address space, it was possible for a filter to bring IIS down in the event of a crash. The .NET framework takes the concept of ISAPI filters one step further by introducing Http Handlers which are custom components that process Http requests. In this article we will cover some of the basic principles of Http Handlers and write custom Http Handlers to customize the processing of some Http requests.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-8052052371686174381?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/8052052371686174381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=8052052371686174381' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/8052052371686174381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/8052052371686174381'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/01/use-local-scope-to-improve-performance.html' title='Use local scope to improve performance'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-3949806996457688889</id><published>2008-01-13T18:35:00.000-08:00</published><updated>2008-01-13T18:36:39.727-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><title type='text'>Microsoft Network Monitor 3.1</title><content type='html'>&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=18b1d59d-f4d8-4213-8d17-2f6dde7d7aac&amp;amp;DisplayLang=en"&gt;Download&lt;/a&gt;&lt;br /&gt;Overview&lt;br /&gt;&lt;a name="Description"&gt;&lt;/a&gt;Network Monitor 3.1 is a protocol analyzer. It allows you to capture network traffic, view and analyze it. Version 3.1 is an update and replaces Network Monitor 3.0. Network Monitor 3.x is a complete overhaul of the previous Network Monitor 2.x version.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-3949806996457688889?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/3949806996457688889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=3949806996457688889' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/3949806996457688889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/3949806996457688889'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/01/microsoft-network-monitor-31.html' title='Microsoft Network Monitor 3.1'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-1487879574477068624</id><published>2008-01-12T20:55:00.001-08:00</published><updated>2008-01-12T20:55:10.954-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='program language'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Python As an Integration Tool</title><content type='html'>&lt;p&gt;Python can integrate a variety of disparate systems; you may hear it referred to as a &lt;i&gt;glue language,&lt;/i&gt; because it's a powerful way to glue systems together. We have broken the basic integration technologies available on Windows into five groups: files, DLLs, COM, networking, and distributed objects. We'll take a quick look at the Python features that support each one.&lt;/p&gt;  &lt;h6&gt;&lt;i&gt;Working with Files&lt;/i&gt;&lt;/h6&gt;  &lt;p&gt;The most fundamental technique for making systems talk is working with files. They are at the foundation of every operating system, and huge and reliable systems can be built and maintained by batch-processing files. Every programming language can work with files, but some make it easier than others. Here are some key features:&lt;/p&gt;  &lt;p&gt;?Python can read a file into a string (or read a multiline text file into a list of strings) in one line. Strings have no limitations on what they can hold: null bytes and non-ASCII encodings are fine.&lt;/p&gt;  &lt;p&gt;?Python can capture and redirect its own standard input and output; subroutines that print to standard output can thus be diverted to different destinations.&lt;/p&gt;  &lt;p&gt;?It provides a platform-independent API for working with filenames and paths, selecting multiple files, and even recursing through directory trees.&lt;/p&gt;  &lt;p&gt;?For binary files, Python can read and write arrays of uniform types.&lt;/p&gt;  &lt;p&gt;?A variety of text-parsing tools are available, ranging from string splitting and joining operations and a pattern-matching language, up to complete data-driven parsers. The key parts of these are written in C, allowing Python text-processing programs to run as fast as fully compiled languages.&lt;/p&gt;  &lt;p&gt;?When generating output, Python allows you to create multiline templates with formatting codes and perform text substitutions to them from a set of keys and values. In essence, you can do a mailmerge in one line at incredibly high speeds.&lt;/p&gt;  &lt;p&gt;Chapter 17, &lt;i&gt;Processes and Files,&lt;/i&gt; provides a comprehensive introduction to these features.&lt;/p&gt;  &lt;h6&gt;&lt;i&gt;Working with DLLs and C Programs&lt;/i&gt;&lt;/h6&gt;  &lt;p&gt;Windows uses dynamic link libraries extensively. DLLs allow collections of functions, usually written in C or C++, to be stored in one file and loaded dynamically by many different programs. DLLs influence everything that happens on Windows; indeed, the Windows API is a collection of such DLLs.&lt;/p&gt;  &lt;p&gt;Python is written in ANSI C, and one of its original design goals was to be easy to extend and embed at the C level. Most of its functionality lives in a DLL, so that other programs can import Python at runtime and start using it to execute and evaluate expressions. Python extension modules can also be written in C, C++, or Delphi to add new capabilities to the language that can be imported at runtime.&lt;/p&gt;  &lt;p&gt;The Win32 extensions for Python, which we cover throughout this book, are a collection of such libraries that expose much of the Windows API to Python.&lt;/p&gt;  &lt;p&gt;The basic Python distribution includes a manual called &lt;i&gt;Extending and Embedding the Python Interpreter,&lt;/i&gt; which describes the process in detail. Chapter 22, &lt;i&gt;Extending and Embedding with Visual C++ and Delphi,&lt;/i&gt; shows you how to work with Python at this level on Windows.&lt;/p&gt;  &lt;h6&gt;&lt;i&gt;COM&lt;/i&gt;&lt;/h6&gt;  &lt;p&gt;The Component Object Model (COM) is Microsoft's newest integration technology and pervades Windows 95, 98, NT, and 2000. The DLL lets you call functions someone else has written; COM lets you talk to objects someone else has written. They don't even have to be on the same computer!&lt;/p&gt;  &lt;p&gt;Windows provides a host of API calls to get things done, but using the calls generally requires C programming expertise, and they have a tortuous syntax. COM provides alternative, easier-to-use interfaces to a wide range of operating-system services, and it lets applications expose and share their functionality as well. COM is now mature, stable, and as fast as using DLLs, but much easier to use, and so opens up many new possibilities. Want a spreadsheet and chart within your application? Borrow the ones in Excel. To a programmer with a COM-enabled language (and most of them are by now), Windows feels like a sea of objects, each with its own capabilities, standing by and waiting to help you get your job done.&lt;/p&gt;  &lt;p&gt;Python's support for COM is superb and is the thrust for a large portion of this book.&lt;/p&gt;  &lt;h6&gt;&lt;i&gt;Networking&lt;/i&gt;&lt;/h6&gt;  &lt;p&gt;The fourth integration technology we'll talk about is the network. Most of the world's networks now run on TCP/IP, the Internet protocol. There is a standard programming API to TCP/IP, the &lt;i&gt;sockets&lt;/i&gt; interface, which is available at the C level on Windows and almost every other operating system. Python exposes the sockets API and allows you to directly write network applications and protocols. We cover sockets in Chapter 19, &lt;i&gt;Communications.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;You may not want to work with sockets directly, but you will certainly have use for the higher-level protocols built on top of it, such as Telnet, FTP, and HTTP. Python's standard library provides modules that implement these protocols, allowing you to automate FTP sessions or retrieval of data from email servers and the Web. It even includes ready-made web servers for you to customize. Chapter 14, &lt;i&gt;Working with Email,&lt;/i&gt; and Chapter 15, &lt;i&gt;Using the Basic Internet Protocols,&lt;/i&gt; cover these standard library features.&lt;/p&gt;  &lt;h6&gt;&lt;i&gt;Distributed Objects&lt;/i&gt;&lt;/h6&gt;  &lt;p&gt;The most sophisticated level of integration yet seen in computing is the field of &lt;i&gt;distributed objects:&lt;/i&gt; essentially, letting objects on different machines (and written in different languages) talk to each other. Many large corporations are moving from two-tier applications with databases and GUIs to three-tier applications that have a layer of &lt;i&gt;business objects&lt;/i&gt; in the middle. These objects offer a higher level of abstraction than the database row and can represent tangible things in the business such as a customer or an invoice. The two main contenders in this arena are COM, which is a Windows-only solution and Common Object Request Broker Architecture (CORBA), which is multiplatform. Python is used extensively with both. Our focus is on COM, and we show how to build a distributed Python application in Chapter 11, &lt;i&gt;Distributing Our Application.&lt;/i&gt; Building a distributed applica-&lt;/p&gt;  &lt;p&gt;tion is absurdly easy; COM does all the work, and it's a matter of configuring the machine correctly.&lt;/p&gt;  &lt;p&gt;Python's support for all five technologies and the fact that it runs on many different operating systems are what makes it a superb integration tool. We believe that Python can be used to acquire data easily from anything, anywhere.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-1487879574477068624?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/1487879574477068624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=1487879574477068624' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/1487879574477068624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/1487879574477068624'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/01/python-as-integration-tool.html' title='Python As an Integration Tool'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-5951025101124523914</id><published>2008-01-12T02:44:00.000-08:00</published><updated>2008-01-12T02:49:59.569-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interview'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='career'/><title type='text'>SQL Server Interview Questions - Part 1</title><content type='html'>&lt;span name="intelliTxt" id="intelliTXT"&gt;&lt;h2&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=5624243837319940428"&gt;Full article&lt;/a&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2&gt;Introduction&lt;/h2&gt;  &lt;p&gt;In this article we will go through the most basic and frequently asked interview questions on SQL Server. Please do not think that I am writing this article to show shortcuts to candidates who are searching for jobs on SQL Server. But I think no matter how much experience you have, an interview is a different ball game. A good project executioner can get knocked off on simple SQL Server questions. This article will be a complete series, so here's my first from the series - SQL Server Interview Questions Part 1. &lt;/p&gt;  &lt;p&gt;Feel free to write to me at &lt;a href="mailto:shiv_koirala@yahoo.com"&gt;shiv_koirala@yahoo.com&lt;/a&gt; or else you can also visit &lt;a href="http://www.questpond.com/"&gt;my website&lt;/a&gt; for more such interview questions. &lt;/p&gt;  &lt;p&gt;Happy job hunting....&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-5951025101124523914?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/5951025101124523914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=5951025101124523914' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/5951025101124523914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/5951025101124523914'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/01/sql-server-interview-questions-part-1.html' title='SQL Server Interview Questions - Part 1'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-7192753223388939812</id><published>2008-01-05T06:09:00.001-08:00</published><updated>2008-01-05T06:12:11.848-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='program language'/><title type='text'>What Every Computer Programmer Should Know About Windows API, CRT and Standard C++ Library</title><content type='html'>&lt;a href="http://www.blogger.com/post-create.g?blogID=5624243837319940428"&gt;Full article&lt;/a&gt;&lt;br /&gt;"&lt;a name="ThePurpose"&gt;The purpose of this article is to clear the essential points about Windows API, C Runtime Library (CRT) and Standard C++ Library (STL). It is not uncommon that even experienced developers have confusion and hold onto misconceptions about the relationship between these parts. If you ever wondered what is implemented on top of what and never had a time to figure it out, then keep reading.&lt;/a&gt;"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-7192753223388939812?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/7192753223388939812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=7192753223388939812' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/7192753223388939812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/7192753223388939812'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2008/01/what-every-computer-programmer-should.html' title='What Every Computer Programmer Should Know About Windows API, CRT and Standard C++ Library'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-458552875512298453</id><published>2007-12-31T05:27:00.000-08:00</published><updated>2007-12-31T06:29:19.437-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Win32'/><category scheme='http://www.blogger.com/atom/ns#' term='MFC'/><title type='text'>theForger's Win32 API Programming Tutorial</title><content type='html'>&lt;a href="http://www.winprog.org/tutorial/"&gt;WinProg&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;Welcome to theForger's Win32 API Tutorial&lt;/h3&gt;  &lt;p&gt; This tutorial attempts to get you started developing with the Win32 API as quickly and clearly as possible.  &lt;/p&gt; &lt;p&gt; &lt;/p&gt;&lt;dl&gt;&lt;dt&gt;&lt;a href="http://www.winprog.org/tutorial/files/source.zip"&gt;&lt;b&gt;Download Full Example Code&lt;/b&gt;&lt;/a&gt; &lt;/dt&gt;&lt;dd&gt;The tutorial text does not include the full code, you will need to download this to  compile the examples. &lt;/dd&gt;&lt;/dl&gt;  &lt;p&gt; &lt;b&gt;This tutorial is meant to be read as a whole&lt;/b&gt; &lt;/p&gt;&lt;p&gt; Please read it from beginning to end before asking questions... most of them will probably be answered.  Each section builds on the sections before it.  I have also added some solutions to common errors in Appendix A.  If you ask me a question that is answered on this page, you will look very silly. &lt;/p&gt;  &lt;p&gt; If you are viewing this locally or on another website, visit the #winprog website for the &lt;a href="http://winprog.org/tutorial/" target="_new"&gt;current official copy&lt;/a&gt;.  &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://winprog.org/tutorial/es/"&gt;Versión en Español&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://winprog.org/tutorial/files/forgers-win32-tutorial-arabic.zip"&gt;Arabic Translation PDF&lt;/a&gt;&lt;/b&gt; &lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://www.softzone.it/tutorials/fld1.html"&gt;Italian Translation Website&lt;/a&gt;&lt;/b&gt; &lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://winprog.org/tutorial/files/forgers-win32-tutorial-pdf.zip"&gt;English PDF Version&lt;/a&gt;&lt;/b&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/5624243837319940428-458552875512298453?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/458552875512298453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=458552875512298453' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/458552875512298453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/458552875512298453'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/12/theforgers-win32-api-programming.html' title='theForger&apos;s Win32 API Programming Tutorial'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-5793954879315759152</id><published>2007-12-23T21:52:00.000-08:00</published><updated>2007-12-23T22:01:57.069-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='UI'/><title type='text'>Updating the UI from a Secondary Thread</title><content type='html'>[&lt;a href="http://msdn.microsoft.com/msdnmag/issues/04/05/BasicInstincts/"&gt;Full article&lt;/a&gt;]In my &lt;a href="http://msdn.microsoft.com/msdnmag/issues/04/01/BasicInstincts/"&gt;January 2004&lt;/a&gt; column I discussed the use of delegates to execute a method asynchronously. I showed you that it's relatively easy to call BeginInvoke on a delegate object from the code behind a Windows® Form in order to dispatch an asynchronous method call. You also saw how to set up a callback method that fires automatically when the asynchronous method call completes its execution. However, I stopped short of talking about how you should update the UI to tell the user that the work is complete.&lt;br /&gt;Updating user interface elements from a secondary thread in Windows Forms is tricky because a secondary thread is not allowed to read or write property values directly from a form or any of its child controls. This restriction exists because form objects and control objects in Windows Forms are not thread-safe. The only thread that's allowed to directly access a property value of a form or one of its controls is the primary UI thread. You must learn how to update the user interface without breaking this rule.&lt;br /&gt;The technique you're going to learn here involves writing code to switch control to the primary UI thread from the secondary thread where it's executing—a process known as marshaling. This will allow you to update the UI safely and reliably. Once you switch control from a secondary thread to the primary UI thread, you are free to change any property values of a form and its child controls.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-5793954879315759152?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/5793954879315759152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=5793954879315759152' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/5793954879315759152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/5793954879315759152'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/12/updating-ui-from-secondary-thread.html' title='Updating the UI from a Secondary Thread'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-1282510481154603362</id><published>2007-12-23T21:49:00.000-08:00</published><updated>2007-12-23T21:51:53.230-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Asynchronous method execution using delegates</title><content type='html'>[&lt;a href="http://msdn.microsoft.com/msdnmag/issues/04/01/BasicInstincts/"&gt;Full article&lt;/a&gt;]This month I'll discuss the use of delegates to execute a method in an asynchronous fashion. I'll assume that you already know the fundamentals of programming with delegates, but if not, you should read the &lt;a href="http://msdn.microsoft.com/msdnmag/issues/02/12/BasicInstincts/"&gt;December 2002&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/msdnmag/issues/03/01/BasicInstincts/"&gt;January 2003&lt;/a&gt; Basic Instincts columns.&lt;br /&gt;There are a number of scenarios in which asynchronous execution can be a valuable design technique. For example, you should use asynchronous execution in a Windows® Forms application when you want to execute a long-running command without blocking the responsiveness of the user interface. As you will see, programming with delegates makes it relatively easy to run a command asynchronously on a secondary thread. That means you can build a Windows Forms application that executes long-running calls across the network without freezing the user interface.&lt;br /&gt;Executing methods asynchronously can also serve as a useful technique for a server-side application. Imagine you are writing the code behind an ASP.NET page to service a client request. What should you do if your code needs to execute two or more time-consuming calls across a network? For example, imagine you are required to write an ASP.NET page that must run a query against a remote database and also must execute a SOAP method on a remote Web Service to complete its work. If you don't use asynchronous method execution, you can only make one call across the network at a time. This means you can't start the second network call until the first network call returns. Asynchronous method execution using delegates lets you execute two or more network calls at the same time. This can significantly reduce the time it takes to process a server-side ASP.NET request, increasing the responsiveness of your application from the user's perspective.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-1282510481154603362?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/1282510481154603362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=1282510481154603362' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/1282510481154603362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/1282510481154603362'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/12/asynchronous-method-execution-using.html' title='Asynchronous method execution using delegates'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-2864669783485777525</id><published>2007-12-19T07:08:00.000-08:00</published><updated>2007-12-19T07:09:01.038-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='UI'/><title type='text'>C# docking panel suit</title><content type='html'>http://sourceforge.net/projects/dockpanelsuite/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-2864669783485777525?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/2864669783485777525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=2864669783485777525' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2864669783485777525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2864669783485777525'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/12/c-docking-panel-suit.html' title='C# docking panel suit'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-1902347187605692198</id><published>2007-12-13T07:29:00.000-08:00</published><updated>2007-12-13T07:30:41.237-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exam'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'></title><content type='html'>&lt;div class="Section1" style=""&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Skills measured by Exam 70-431Course 2778ECourse 2779Course  2780Installing and Configuring SQL Server 2005&lt;span style=""&gt;    &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Install SQL Server 2005. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Verify prerequisites.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Upgrade from an earlier  version of SQL Server. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create an instance.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Configure SQL Server 2005 instances and databases.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Configure log files and  data files. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Configure the SQL Server  &lt;span class="SpellE"&gt;DatabaseMail&lt;/span&gt; subsystem for an instance. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Choose a recovery model  for the database. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Configure SQL Server security. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Configure server security  principals. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Configure database &lt;span class="SpellE"&gt;securables&lt;/span&gt;. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Configure encryption.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Configure linked servers by using SQL Server Management Studio  (SSMS). &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Identify the external data  source. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Identify the  characteristics of the data source. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Identify the security  model of the data source. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Implementing High Availability and Disaster Recovery&lt;span style=""&gt;    &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Implement database mirroring. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Prepare databases for  database mirroring. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create endpoints.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Specify database partners.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Specify a witness server.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Configure an operating  mode. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Implement log shipping. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Initialize a secondary  database. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Configure log shipping  options. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Configure a log shipping  mode. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Configure monitoring.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Manage database snapshots. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create a snapshot.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Revert a database from a  snapshot. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Supporting Data Consumers&lt;span style=""&gt;     &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Retrieve data to support ad hoc and recurring queries.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Construct SQL queries to  return data. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Format the results of SQL  queries. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Identify collation  details. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Manipulate relational data. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Insert, update, and delete  data. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Handle exceptions and  errors. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Manage transactions.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;b style=""&gt;Manage XML data. &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Identify the specific  structure needed by a consumer. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Retrieve XML data.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Modify XML data.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Convert between XML data  and relational data. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create an XML index.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Load an XML schema.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;b style=""&gt;Implement an HTTP endpoint.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create  an HTTP endpoint. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Secure  an HTTP endpoint. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;b style=""&gt;Implement Service Broker components.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create  services. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create  queues. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create  contracts. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create  conversations. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create  message types. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Send  messages to a service. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Route a  message to a service. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Receive  messages from a service. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span class="GramE"&gt;Import and  export data from a file.&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Set a database to the  bulk-logged recovery model to avoid inflating the transaction log. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Run the &lt;span class="SpellE"&gt;bcp&lt;/span&gt; utility. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Perform a Bulk Insert  task. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Import bulk XML data by  using the OPENROWSET function. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Copy  data from one table to another by using the SQL Server 2005 Integration Services  (SSIS) Import and Export Wizard. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Manage replication. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;Distinguish between replication types. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;Configure a publisher, a distributor, and a subscriber.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;Configure replication security. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;Configure conflict resolution settings for merge replication.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Monitor  replication. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Improve  replication performance. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Plan  for, stop, and restart recovery procedures. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Maintaining Databases&lt;span style=""&gt;     &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Implement and maintain SQL Server Agent jobs.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Set a job owner.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create a job schedule.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create job steps.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Configure job steps.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Disable a job. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create a maintenance job.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Set up alerts. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Configure operators.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Modify a job. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Delete a job. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Manage a job. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Manage databases by using Transact-SQL. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Manage index  fragmentation. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Manage statistics.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Shrink  files. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Perform  database integrity checks by using DBCC CHECKDB. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Back  up a database. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Perform a full backup.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Perform a differential  backup. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Perform a transaction log  backup. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Initialize a media set by  using the FORMAT option. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Append or overwrite an  existing media set. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create a backup device.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Back up &lt;span class="SpellE"&gt;filegroups&lt;/span&gt;. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Restore a database. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Identify which files are  needed from the backup strategy. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Restore a database from a  single file and from multiple files. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Choose an appropriate  restore method. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Move  a database between servers. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Choose an appropriate  method for moving a database. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Monitoring and Troubleshooting SQL Server Performance&lt;span style=""&gt;    &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Gather performance and optimization data by using the SQL Server  Profiler. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Start a new trace.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Save the trace logs.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Configure SQL Server  Profiler trace properties. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Configure a System Monitor  counter log. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Correlate a SQL Server  Profiler trace with System Monitor log data. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Gather performance and optimization data by using the Database Engine  Tuning Advisor. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Build a  workload file by using the SQL Server Profiler. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Tune a  workload file by using the Database Engine Tuning Advisor.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Save  recommended indexes. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Monitor and resolve blocks and deadlocks. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Identify the cause of a  block by using the &lt;span class="SpellE"&gt;sys.&lt;span class="GramE"&gt;dm_exec_requests&lt;/span&gt;&lt;/span&gt; system view. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Terminate an errant  process. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Configure SQL Server  Profiler trace properties. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Identify transaction  blocks. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Diagnose and resolve database server errors.  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Connect to a  non-responsive server by using the dedicated administrator connection (DAC).  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Review SQL Server startup  logs. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Review error messages in  event logs. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Monitor SQL Server Agent job history. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Identify the cause of a  failure. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Identify outcome details.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Find out when a job last  ran. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Gather performance and optimization data by using &lt;span class="SpellE"&gt;DMVs&lt;/span&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Creating and Implementing Database Objects&lt;span style=""&gt;    &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Implement a table. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Specify column details.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Specify the &lt;span class="SpellE"&gt;filegroup&lt;/span&gt;. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Assign permissions to a  role for tables. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Specify a partition scheme  when creating a table. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Specify a transaction.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Implement a view. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create an indexed view.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create an updateable view.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Assign permissions to a  role or schema for a view. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Implement triggers. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create a trigger.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create DDL triggers for  responding to database structure changes. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Identify recursive  triggers. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Identify nested triggers.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Identify transaction  triggers. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Implement functions. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create a function.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;&lt;span style="color: red;"&gt;Identify deterministic versus nondeterministic functions.  &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Implement stored procedures. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create a stored procedure.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Recompile a stored  procedure. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Assign permissions to a  role for a stored procedure. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Implement constraints. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Specify the scope of a  constraint. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create a new constraint.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Implement indexes. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Specify the &lt;span class="SpellE"&gt;filegroup&lt;/span&gt;. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Specify the index type.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Specify relational index  options. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Specify columns.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Specify a partition scheme  when creating an index. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Disable an index.  &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create an online index by  using an ONLINE argument. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Create user-defined types. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create  a Transact-SQL user-defined type. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Specify  details of the data type. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create  a CLR user-defined type. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span lang="EN-US"&gt;Implement a full-text search. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create  a catalog. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Create  an index. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color: red; font-family: 宋体;"&gt;•&lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;Specify  a full-text population method. &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-1902347187605692198?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/1902347187605692198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=1902347187605692198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/1902347187605692198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/1902347187605692198'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/12/skills-measured-by-exam-70-431course.html' title=''/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-5826873683064298449</id><published>2007-12-12T03:56:00.001-08:00</published><updated>2007-12-12T03:56:36.667-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exam'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Preparation Guide for Exam 70-431</title><content type='html'>&lt;a href="http://www.microsoft.com/learning/exams/70-431.mspx"&gt;http://www.microsoft.com/learning/exams/70-431.mspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-5826873683064298449?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/5826873683064298449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=5826873683064298449' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/5826873683064298449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/5826873683064298449'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/12/preparation-guide-for-exam-70-431.html' title='Preparation Guide for Exam 70-431'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-8099762591109863623</id><published>2007-12-09T23:05:00.000-08:00</published><updated>2007-12-09T23:06:28.836-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDI+'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Basic of GDI+ and Graphics in ASP.NET</title><content type='html'>Introduction&lt;br /&gt;In this article, I will explain about GDI+ in .NET Framework. If you haven't heard about GDI+, then GDI+ is a set of classes in .NET framework that deal with graphics. You can use GDI+ to draw custom drawing on the screen. GDI provides a layer of abstraction, hiding the differences between different video cards. You simply need to call the Windows API function to do the specific task, and internally the GDI figures out how to get to the client's particular video card to do whatever that you want.Although GDI exposes a relatively high level API to developers, it is still an API that based on the old Windows API with C style functions. GDI+ sits as a layer between GDI and your application providing more intuitive and inheritance based object model. GDI+ is generally considered a Windows technology. However, some of the new GDI+ features make this technology an excellent choice for Web applications, enabling developers to generate images, graphs, diagrams, and much more.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.worldofasp.net/aspnet/Tutorials/GDI/Basic_of_GDI+_and_Graphics_in_ASP.NET_119.aspx"&gt;http://www.worldofasp.net/aspnet/Tutorials/GDI/Basic_of_GDI+_and_Graphics_in_ASP.NET_119.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-8099762591109863623?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/8099762591109863623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=8099762591109863623' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/8099762591109863623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/8099762591109863623'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/12/basic-of-gdi-and-graphics-in-aspnet.html' title='Basic of GDI+ and Graphics in ASP.NET'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-7764512453421134456</id><published>2007-12-06T23:39:00.000-08:00</published><updated>2007-12-06T23:40:08.512-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>User registration in AJAX way</title><content type='html'>&lt;a href="http://encosia.com/2007/07/02/aspnet-username-availability-checking-via-ajax/"&gt;ASP.NET AJAX username availability check&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-7764512453421134456?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/7764512453421134456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=7764512453421134456' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/7764512453421134456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/7764512453421134456'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/12/user-registration-in-ajax-way.html' title='User registration in AJAX way'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-741990680239328498</id><published>2007-12-05T19:15:00.000-08:00</published><updated>2007-12-05T19:16:56.278-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Encrypt'/><title type='text'>TrueCrypt: Free open-source disk encryption software for Windows Vista/XP/2000 and Linux</title><content type='html'>T r u e C r y p t&lt;br /&gt;Free open-source disk encryption software for Windows Vista/XP/2000 and Linux&lt;br /&gt;Main Features:&lt;br /&gt;Creates a virtual encrypted disk within a file and mounts it as a real disk.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Encrypts an entire hard disk partition or a storage device such as USB flash drive.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Encryption is automatic, real-time (on-the-fly) and transparent.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Provides two levels of plausible deniability, in case an adversary forces you to reveal the password:&lt;br /&gt;&lt;br /&gt;1) Hidden volume (steganography – more information may be found here).&lt;br /&gt;&lt;br /&gt;2) No TrueCrypt volume can be identified (volumes cannot be distinguished from random data).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Encryption algorithms: AES-256, Serpent, and Twofish. Mode of operation: LRW.&lt;br /&gt;Further information regarding features of the software may be found in the documentation.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.truecrypt.org/"&gt;http://www.truecrypt.org/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-741990680239328498?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/741990680239328498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=741990680239328498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/741990680239328498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/741990680239328498'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/12/truecrypt-free-open-source-disk.html' title='TrueCrypt: Free open-source disk encryption software for Windows Vista/XP/2000 and Linux'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-2117612985213905439</id><published>2007-12-05T02:48:00.000-08:00</published><updated>2007-12-05T02:49:29.929-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Design'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Open Source Web Design</title><content type='html'>&lt;a href="http://www.oswd.org/"&gt;www.oswd.org&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-2117612985213905439?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/2117612985213905439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=2117612985213905439' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2117612985213905439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2117612985213905439'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/12/open-source-web-design.html' title='Open Source Web Design'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-2982875944211248428</id><published>2007-12-04T21:24:00.000-08:00</published><updated>2007-12-04T21:26:43.807-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Firefox Add-ons: Split Browser</title><content type='html'>This splits the content area of the browser window as you like.&lt;br /&gt;This splits the content area of the browser window as you like. It will help you in various cases. For example, to compare multiple webpages, to show a calendar always, and so on.There is some ways to split window.* Choose the "Split Browser to" menu in the context menu.* Choose the "Load in Split Browser" menu in the context menu on link.* Click popup-button on top/bottom/left/right edges of the content area.* Drop links, bookmarks, etc. to popup-button on top/bottom/left/right edges of the content area while dragging.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/4287"&gt;https://addons.mozilla.org/en-US/firefox/addon/4287&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-2982875944211248428?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/2982875944211248428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=2982875944211248428' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2982875944211248428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2982875944211248428'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/12/firefox-add-ons-split-browser.html' title='Firefox Add-ons: Split Browser'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-2028283848813103119</id><published>2007-12-02T19:00:00.000-08:00</published><updated>2007-12-02T19:04:20.551-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Use TEXTCOPY to restore and retrieve images from a SQL Server Table</title><content type='html'>Storing and Retrieving Images From a SQL Server Table&lt;br /&gt;                       by Gregory A. Larsen&lt;br /&gt;&lt;br /&gt;Most applications use images of some kind, like a .jpg or .gif file. One application might only have a few images, while another application could have thousands of images. The images might only be read or written a few times, or be used frequently by an application. When an application needs to store images, you need to determine how best to store and manage your images. This article will show you how to insert and extract images from a SQL Server database as well as discuss issues related to storing your images in SQL server.&lt;br /&gt;Advantages and Disadvantages of Storing Images in SQL Server&lt;br /&gt;Even Microsoft does not recommend storing images in SQL Server, because this causes performance and database disk space issues. An application that stores images in a SQL Server database will experience performance problems each time an image is stored or retrieved from SQL Server because of the way SQL Server needs to store or retrieve images.&lt;br /&gt;SQL Server needs to convert an image that is larger than 8K into multiple chunks, and then store these chunks on separate SQL Server pages. When SQL Server retrieves a large image stored in a database, the image must be retrieved in chunks and converted back into an image. This process of breaking up an image into chunks and reassembling these chunks back into images is what causes performance problems. Also, storing images in a database will make the database considerably larger, so backing up and restoring the database will take longer.&lt;br /&gt;Knowing how often your application is going to insert, update, and select an image from a database might help you to determine how greatly performance will be degraded if you store your images in a SQL Server database. If you are only inserting the image once, and retrieving it rarely, then the performance hit will be minimal for each usage of an image. On the other hand, if your application is serving up a single image frequently, then the performance drain on SQL Server could be significant. When the performance impact is significant, it is best to just save the image natively in a file system and store only a pointer (a URL or an actual file location ) to the file in SQL server.&lt;br /&gt;There are advantages to storing images in a SQL Server database, however. One advantage is that it simplifies managing the images. If you want to move your database to a different database server, it is as easy as copying the database. Another advantage of storing the images in SQL Server is the extra layer of security around the images. By storing images in SQL Server, you can manage access to images using SQL Server logins and roles. This extra layer of security makes it harder for an individual to gain access to your application images.&lt;br /&gt;Using TEXTCOPY to Store and Retrieve an Image from SQL Server&lt;br /&gt;SQL Server provides a binary named “TEXTCOPY” to import and export an image to and from SQL Server. This “.exe” is stored in the “…\MSSQL\Binn” directory. The following is the syntax for using this executable:TEXTCOPY [/S [sqlserver] ] [/U [login] ] [/P [password] ]&lt;br /&gt;[/D [database] ] [/T table] [/C column] [/W"where clause"]&lt;br /&gt;[/F file] [{/I  /O}] [/K chunksize] [/Z] [/?]&lt;br /&gt;/S sqlserver The SQL Server to connect to. If 'sqlserver' is not&lt;br /&gt;specified, the local SQL Server is used.&lt;br /&gt;/U login The login to connect with. If 'login' is not specified,&lt;br /&gt;a trusted connection will be used.&lt;br /&gt;/P password The password for 'login'. If 'password' is not&lt;br /&gt;specified, a NULL password will be used.&lt;br /&gt;/D database The database that contains the table with the text or&lt;br /&gt;image data. If 'database' is not specified, the default&lt;br /&gt;database of 'login' is used.&lt;br /&gt;/T table The table that contains the text or image value.&lt;br /&gt;/C column The text or image column of 'table'.&lt;br /&gt;/W "where clause" A complete where clause (including the WHERE keyword)&lt;br /&gt;that specifies a single row of 'table'.&lt;br /&gt;/F file The file name.&lt;br /&gt;/I Copy text or image value into SQL Server from 'file'.&lt;br /&gt;/O Copy text or image value out of SQL Server into 'file'.&lt;br /&gt;/K chunksize Size of the data transfer buffer in bytes. Minimum&lt;br /&gt;value is 1024 bytes, default value is 4096 bytes.&lt;br /&gt;/Z Display debug information while running.&lt;br /&gt;/? Display this usage information and exit.&lt;br /&gt;You can call this executable without any parameters or a subset of parameters. When you execute the “exe,” if there are any required parameters missing, you will be prompted to enter the missing parameters. The following is an example of a command that will save an image to SQL Server, and then one that will export an image to a file system from SQL Server.&lt;br /&gt;First, I first need to insert an image. The following is an image named “c:\temp\glacier.jpg” that I will be storing:&lt;br /&gt;This image will be stored in a table named “Image.” The statement I used to create this Image table can be found in &lt;a href="http://www.dbazine.com/code/larsen13-weblisting1.txt"&gt;weblisting1&lt;/a&gt;. To insert the “glacier.jpg” picture into my SQL Server table, I use the following command at the DOS prompt:C:\Program Files\Microsoft SQL Server\MSSQL\Binn\TEXTCOPY.exe" /S(local)&lt;br /&gt;/Umylogin /Pmysapassword /D TEST /T Image /C Picture /F "C:\temp\glacier.jpg"&lt;br /&gt;/W"where Title='glacier'" /I&lt;br /&gt;This example, when executed by the DOS command shell, copies the image “glacier.jpg” into a table “Image” into a database I created and named “TEST.” With this command, I can log on to my local SQL Server database using a SQL Server login named “mylogin.” Note that the TEXTCOPY executable does not support Windows authentication. The “/W” parameter identifies a “WHERE” clause that will identify the single record to be updated in the “Image” table. The “/W” parameter is required to start, with “where” followed by a criteria that will identify a single record. The TEXTCOPY .exe requires that a shell record be already stored in the “Image” table so that it can updated. This shell record is the record identified by the /W parameter. In this shell record, the image column “Picture” must have a non-null value. I used the following code to create the shell record prior to running the TEXTCOPY command above:insert into Image(Picture,Title) values(0x0,'Glacier')&lt;br /&gt;If there is no shell record for TEXTCOPY to update, then you will get the following error:TEXTCOPY Version 1.0&lt;br /&gt;DB-Library version 8.00.194&lt;br /&gt;ERROR: Row retrieval failed.&lt;br /&gt;If you have created the shell record, but the Picture column is NULL, the following error will be displayed:TEXTCOPY Version 1.0&lt;br /&gt;DB-Library version 8.00.2039&lt;br /&gt;ERROR: Text or image pointer and timestamp retrieval failed.&lt;br /&gt;If you are storing images in SQL Server, you will probably also need to retrieve them. TEXTCOPY can be used to create a file from an image stored in SQL Server. An example follows of how to use TEXTCOPY to retrieve the glacier picture from SQL Server and save it to a file:"C:\Program Files\Microsoft SQL Server\MSSQL\Binn\TEXTCOPY.exe" /S(local)&lt;br /&gt;/Umylogin /Pmysapassword /D TEST /T Image /C Picture /F&lt;br /&gt;"C:\temp\glacier_out.jpg" /W"where Title='glacier'" /O&lt;br /&gt;The only difference between this command and the one that saved the image into SQL Server is that the “/O” option was used, instead of the “/I” option. Note that if you try to create an output file and the image doesn’t exist, the process will successfully complete, but the file will be zero bytes in length.&lt;br /&gt;As you can see, the TEXTCOPY executable allows you to copy a single image to or&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-2028283848813103119?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/2028283848813103119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=2028283848813103119' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2028283848813103119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2028283848813103119'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/12/use-textcopy-to-restore-and-retrieve.html' title='Use TEXTCOPY to restore and retrieve images from a SQL Server Table'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-6831876628796950508</id><published>2007-12-01T06:08:00.000-08:00</published><updated>2007-12-01T06:09:40.837-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='coding style'/><title type='text'>.Net programming standards and name conventions</title><content type='html'>&lt;a href="http://www.irritatedvowel.com/Programming/Standards.aspx"&gt;.Net programming standards and name conventions&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-6831876628796950508?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/6831876628796950508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=6831876628796950508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/6831876628796950508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/6831876628796950508'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/12/net-programming-standards-and-name.html' title='.Net programming standards and name conventions'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-2334795707226989331</id><published>2007-12-01T05:53:00.001-08:00</published><updated>2007-12-01T05:53:58.055-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><title type='text'>Guidelines – a hidden feature for the Visual Studio Editor</title><content type='html'>Update 12/2/2004:  Uploaded an image from Visual Studio 2005 Beta.  Note the image below shows guidelines at column numbers 5 and 30, but the regkey value is RBG(255,0,0), 4, 29.  The Guideline column numbers are 0-based in the registry.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Update 11/29/2004: I've corrected the two (embarrassing) typos below.  I must have had thanksgiving dinner on the brain at the time.  1.  The reg key is [HKEY_CURRENT_USER]\Software\Microsoft\VisualStudio\8.0\Text Editor (note the space between Text and Editor).  2. It's RGB, not RBG.  The example had a typo, but it is now corrected.&lt;br /&gt;&lt;br /&gt;Guidelines are visible column indicators for the VS Editor.  During the last test pass, I came across a test case named “Guidelines” which got my immediate attention.   I never heard of this before, so I made sure to spend extra time testing this cool, but hidden little feature during the Beta test pass.  I didn’t find any issues with it, so I feel it is safe to share.  Let me know if you run into any issues with it.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Warning!  To enable guidelines, you’ll need to modify your registry settings.   Follow the instructions below at your own risk.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Enabling Guidelines&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;First, shut down Visual Studio 2005 if already started.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Under &lt;br /&gt;&lt;br /&gt;[HKEY_CURRENT_USER]\Software\Microsoft\VisualStudio\8.0\Text Editor&lt;br /&gt;&lt;br /&gt;Create a string value called&lt;br /&gt;&lt;br /&gt;Guides&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Set Guides to the following&lt;br /&gt;&lt;br /&gt;RGB(x,y,z) n1,...,n13&lt;br /&gt;&lt;br /&gt;Where x,y,z are the RGB values and n is the column number.  You can have at most 13 guidelines.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;For example,&lt;br /&gt;&lt;br /&gt;Guides = RGB(128,0,0) 5, 80&lt;br /&gt;&lt;br /&gt;will place a Red guideline at column numbers 5 and 80.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;And now launch VS and open a text file.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Disabling Guidelines&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;An obvious no-brainer, just delete the Guides keys you created above.  Restart VS, and no more guidelines.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-2334795707226989331?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/2334795707226989331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=2334795707226989331' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2334795707226989331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2334795707226989331'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/12/guidelines-hidden-feature-for-visual.html' title='Guidelines – a hidden feature for the Visual Studio Editor'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-3921018905449089754</id><published>2007-11-26T18:49:00.000-08:00</published><updated>2007-11-26T18:51:49.440-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>How Google Works</title><content type='html'>Google's information management approach, which often goes unnoticed, is both highly effective and efficient. And may be the way other organizations deploy technology in the future.&lt;br /&gt;Here's why:&lt;br /&gt;Story Guide:&lt;br /&gt;&lt;a href="http://www.baselinemag.com/article2/0,1540,1985040,00.asp"&gt;Google's Extreme Infrastructure &lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.baselinemag.com/article2/0,1540,1985044,00.asp"&gt;What Other CIOs Can Learn from Google &lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.baselinemag.com/article2/0,1540,1985045,00.asp"&gt;Google's Beginnings &lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.baselinemag.com/article2/0,1540,1985046,00.asp"&gt;Why Parallel Processing Makes Sense &lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.baselinemag.com/article2/0,1540,1985047,00.asp"&gt;Behind The Google File System &lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.baselinemag.com/article2/0,1540,1985048,00.asp"&gt;How Google Reduces Complexity&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.baselinemag.com/article2/0,1540,1985049,00.asp"&gt;Google's Secret Arsenal &lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.baselinemag.com/article2/0,1540,1985050,00.asp"&gt;Would Google's File System Work for You? &lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.baselinemag.com/article2/0,1540,1985051,00.asp"&gt;Inside Google's Enterprise &lt;/a&gt;&lt;br /&gt;Also in this Feature:&lt;br /&gt;&lt;a href="http://www.baselinemag.com/article2/0,1540,1985052,00.asp"&gt;Google Basics &lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.baselinemag.com/article2/0,1540,1985054,00.asp"&gt;The People Who Power Google &lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.baselinemag.com/article2/0,1540,1985066,00.asp"&gt;Google Courts the Enterprise &lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.baselinemag.com/article2/0,1540,1985065,00.asp"&gt;How Google Manages a Global Workforce &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-3921018905449089754?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/3921018905449089754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=3921018905449089754' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/3921018905449089754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/3921018905449089754'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/11/how-google-works.html' title='How Google Works'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-7386742092123726155</id><published>2007-11-24T19:56:00.001-08:00</published><updated>2007-11-24T19:59:34.234-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><title type='text'>Compare VS2005 with VS2008</title><content type='html'>Full article is &lt;a href="http://weblogs.asp.net/cschittko/archive/2007/10/08/visual-studio-2005-or-2008-what-s-more-risk.aspx"&gt;here&lt;/a&gt;&lt;br /&gt;Should I stay or should I go … with Visual Studio 2005 or 2008 is the question in this particular case. One of my customers is still on Visual Studio 2003 and they are wondering whether to upgrade to VS 2005 or to VS 2008. &lt;br /&gt;&lt;br /&gt;Are there reasons for moving to VS 2005 instead of 2008 even though 2008 is so close to release? Minimizing risk is probably the major driver for deciding on VS 2005. After all, it’s been out in the market for almost two years and it’s stable and mature. There’s also the common wisdom that you shouldn’t deploy a Microsoft product that doesn’t have at least one service pack. Mind you that SP1 for Visual Studio didn’t come out until 12 months after the release of the product. Microsoft is no longer in the mode where the Service Pack has to hit 6 months after release because there were quality issues that needed to be fixed. &lt;br /&gt;&lt;br /&gt;When it comes to determining to move to the newer Visual Studio 2008 and the .NET Framework 3.5 there are more points to consider: &lt;br /&gt;&lt;br /&gt;1) Stability and maturity of the underlying framework and consequently the applications you’re building on top of the framework. &lt;br /&gt;&lt;br /&gt;2) Stability and maturity of new features added with VS 2008 &lt;br /&gt;&lt;br /&gt;3) Product Support differences. &lt;br /&gt;&lt;br /&gt;4) Productivity benefits of VS 2008 compared to VS 2005.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-7386742092123726155?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/7386742092123726155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=7386742092123726155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/7386742092123726155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/7386742092123726155'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/11/compare-vs2005-with-vs2008.html' title='Compare VS2005 with VS2008'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-2517833694413141731</id><published>2007-11-20T06:18:00.000-08:00</published><updated>2007-11-20T06:28:21.503-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Adding ASP.NET AJAX to an Existing ASP.NET Application</title><content type='html'>&lt;a href="http://www.blogger.com/post-create.g?blogID=5624243837319940428"&gt;Adding ASP.NET AJAX to an Existing ASP.NET Application&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Introduction&lt;br /&gt;ASP. NET AJAX makes it easily to take advantage of AJAX techniques and enables you to create ASP.NET pages, and enables you to take full advantage of the capabilities of the browser to deliver richer Web experiences that work on any modern browser.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-2517833694413141731?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/2517833694413141731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=2517833694413141731' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2517833694413141731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2517833694413141731'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/11/adding-aspnet-ajax-to-existing-aspnet.html' title='Adding ASP.NET AJAX to an Existing ASP.NET Application'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-6752874412063079391</id><published>2007-11-19T23:34:00.000-08:00</published><updated>2007-11-19T23:39:14.866-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Test'/><title type='text'>Advanced Unit Testing</title><content type='html'>&lt;a href="http://www.marcclifton.com/Projects/AdvancedUnitTesting/tabid/102/Default.aspx"&gt;&lt;strong&gt;Advanced Unit Testing &lt;/strong&gt;&lt;/a&gt;is a unit test engine that provides features that go beyond other unit test engines such as NUnit and CSUnit. Conversely, certain features, most notably a command line driven interface, do not exist in AUT.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-6752874412063079391?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/6752874412063079391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=6752874412063079391' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/6752874412063079391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/6752874412063079391'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/11/advanced-unit-testing.html' title='Advanced Unit Testing'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-4606195722836955730</id><published>2007-11-18T19:29:00.000-08:00</published><updated>2007-11-18T19:30:06.436-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Implementing Client Callbacks Without Postbacks in ASP.NET Web Pages</title><content type='html'>&lt;a href="http://msdn2.microsoft.com/en-us/library/ms178208.aspx"&gt;Implementing Client Callbacks Without Postbacks in ASP.NET Web Pages &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-4606195722836955730?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/4606195722836955730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=4606195722836955730' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/4606195722836955730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/4606195722836955730'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/11/implementing-client-callbacks-without.html' title='Implementing Client Callbacks Without Postbacks in ASP.NET Web Pages'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-5723425985178417811</id><published>2007-11-18T19:28:00.000-08:00</published><updated>2007-11-18T19:29:31.119-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><title type='text'>Paging through lots of data efficiently (and in an Ajax way) with ASP.NET 2.0</title><content type='html'>&lt;a href="http://weblogs.asp.net/scottgu/archive/2006/01/01/434314.aspx"&gt;Paging through lots of data efficiently (and in an Ajax way) with ASP.NET 2.0 &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-5723425985178417811?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/5723425985178417811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=5723425985178417811' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/5723425985178417811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/5723425985178417811'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/11/paging-through-lots-of-data-efficiently.html' title='Paging through lots of data efficiently (and in an Ajax way) with ASP.NET 2.0'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-5741417551211126966</id><published>2007-11-18T19:25:00.000-08:00</published><updated>2007-11-18T19:28:48.291-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>ASP.NET Best Practices for High Performance Applications</title><content type='html'>&lt;a href="http://www.blogger.com/post-create.g?blogID=5624243837319940428"&gt;ASP.NET Best Practices for High Performance Applications&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br /&gt;ASP.NET is much more powerful than classic ASP, however it is important to understand how to use that power to build highly efficient, reliable and robust applications. In this article, I tried to highlight the key tips you can use to maximize the performance of your ASP.NET pages. The list can be much longer, I am only emphasizing the most important ones.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-5741417551211126966?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/5741417551211126966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=5741417551211126966' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/5741417551211126966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/5741417551211126966'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/11/aspnet-best-practices-for-high.html' title='ASP.NET Best Practices for High Performance Applications'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-1183969888920625528</id><published>2007-11-12T00:04:00.001-08:00</published><updated>2007-11-12T00:04:46.311-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SQL Server Query Execution Plan Analysis Part4/4</title><content type='html'>Sometimes, the Query Optimizer will need to create a temporary worktable in the tempdb database. If this is the case, it will be indicated in the graphical query execution plan with an icon labeled like this: Index Spool, Row Count Spool, or Table Spool.&lt;br /&gt;&lt;br /&gt;Anytime a worktable is used, performance is generally hurt because of the extra I/O required to maintain the worktable. Ideally, there should be no worktables. Unfortunately, they cannot always be avoided. And sometimes their use can actually boost performance because using a worktable is more efficient that alternatives.&lt;br /&gt;&lt;br /&gt;In any event, the use of a worktable in a graphical query execution plan should raise an alert with you. Take a careful look at such a query and see if there is anyway it can be rewritten to avoid the worktable. There may not be. But if there is, you are one step closer to boosting the performance of the query. [7.0, 2000, 2005] Updated 7-10-2006&lt;br /&gt;&lt;br /&gt;*****&lt;br /&gt;&lt;br /&gt;In a graphical query execution plan, often you see the Stream Aggregate icon. This just means that some sort of aggregation into a single input is being performed. This is most commonly seen when a DISTINCT clause is used, or any aggregation operator, such as AVG, COUNT, MAX, MIN, or SUM. [7.0, 2000, 2005] Updated 7-10-2006&lt;br /&gt;&lt;br /&gt;*****&lt;br /&gt;&lt;br /&gt;Query Analyzer and Management Studio are not the only tools that can generate and display query execution plans for queries. The SQL Server Profiler can also display them, albeit in text format only. One of the advantages of using Profiler instead of Query Analyzer or Management Studio to display execution plans is that it can do so for a great many queries from your actual production work, instead of running one at a time.&lt;br /&gt;&lt;br /&gt;To capture and display query execution plans using Profiler, you must create a trace using the following configuration:&lt;br /&gt;&lt;br /&gt;Events to Capture&lt;br /&gt;&lt;br /&gt;Performance: Execution Plan &lt;br /&gt;Performance: Show Plan All &lt;br /&gt;Performance: Show Plan Statistics &lt;br /&gt;Performance: Show Plan Text &lt;br /&gt;Data Columns to Display&lt;br /&gt;&lt;br /&gt;StartTime &lt;br /&gt;Duration &lt;br /&gt;TextData &lt;br /&gt;CPU &lt;br /&gt;Reads &lt;br /&gt;Writes &lt;br /&gt;Filters&lt;br /&gt;&lt;br /&gt;Duration. You will want to specify a maximum duration, such as 5 seconds, so that you don't get flooded with too much data. &lt;br /&gt;Of course, you can capture more information than is listed above in your trace; the above is only a guideline. But keep in mind that you don't want to capture too much data, as this could have a negative affect on your server's performance as the trace is being run. [7.0, 2000, 2005] Updated 7-10-2006&lt;br /&gt;&lt;br /&gt;*****&lt;br /&gt;&lt;br /&gt;If you use the OPTION FAST hint in a query, be aware that the Execution Plan results may not be what you expect. The Execution Plan that you get is based on the results of using the FAST hint, not the actual Execution Plan for the full query.&lt;br /&gt;&lt;br /&gt;The FAST hint is used to tell the Query Optimizer to return the specified number of rows as fast as possible, even if this hurts the overall performance of the query. The purpose of this hint is to return a specified number of records quickly in order to produce an illusion of speed for the user. Once the specified number of rows is returned, the remaining rows are retuned as they would be normally.&lt;br /&gt;&lt;br /&gt;So if you are using the FAST hint, the execution plan will be for only those rows that are returned FAST, not for all of the rows. If you want to see the execution plan for all the rows, then you must perform an Execution Plan of the query with the hint removed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-1183969888920625528?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/1183969888920625528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=1183969888920625528' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/1183969888920625528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/1183969888920625528'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/11/sql-server-query-execution-plan_8806.html' title='SQL Server Query Execution Plan Analysis Part4/4'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-7768324641482166528</id><published>2007-11-12T00:03:00.001-08:00</published><updated>2007-11-12T00:03:58.497-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SQL Server Query Execution Plan Analysis Part3/4</title><content type='html'>In most cases, the query optimizer will analyze joins and JOIN the tables using the most efficient join type, and in the most efficient order. But not always. In the graphical query plan you will see icons that represent the different types of JOINs used in the query. In addition, each of the JOIN icons will have two arrows pointing to it. The upper arrow pointing to the JOIN icon represents the outer table in the join, and the lower arrow pointing to the JOIN icon represent the inner table in the join. Follow the arrows back to see the name of the tables being joined.&lt;br /&gt;&lt;br /&gt;Sometimes, in queries with multiple JOINs, tracing the arrow back won't reveal a table, but another JOIN. If you place the cursor over the arrows pointing to the upper and lower JOINs, you will see a popup window that tells you how many rows are being sent to the JOIN for processing. The upper arrow should always have fewer rows than the lower arrow. If not, then the JOIN order selected by the query optimizer might be incorrect (see more on this below).&lt;br /&gt;&lt;br /&gt;First of all, let's look at JOIN types. SQL Server can JOIN a table using three different techniques: nested loop, hash, and merge. Generally, the fastest type of join in a nested loop, but if that is not feasible, then a hash JOIN or merge JOIN is used (as appropriate), both of which tend to be slower than the nested JOIN.&lt;br /&gt;&lt;br /&gt;When very large tables are JOINed, a merge join, not a nested loop join, may be the best option. The only way to know is to try both and see which one is the most efficient.&lt;br /&gt;&lt;br /&gt;If a particular query is slow, and you suspect it may be because the JOIN type is not the optimum one for your data, you can override the query optimizer's choice by using a JOIN hint. Before you use a JOIN hint, you will want to take some time to learn about each of the JOIN types and how each one works. This is a complicated subject, beyond the scope of this tip.&lt;br /&gt;&lt;br /&gt;JOIN order is also selected by the query optimizer, which it trying to select the most efficient order to JOIN tables. For example, for a nested loop join, the upper table should be the smaller of the two tables. For hash joins, the same is true; the upper table should be the smaller of the two tables. If you feel that the query optimizer is selecting the wrong order, you can override it using JOIN hints.&lt;br /&gt;&lt;br /&gt;In many cases, the only way to know for sure if using a JOIN hint to change JOIN type or JOIN order will boost or hinder performance is to give them a try and see what happens. [7.0, 2000, 2005] Updated 5-15-2006&lt;br /&gt;&lt;br /&gt;*****&lt;br /&gt;&lt;br /&gt;If your SQL Server has multiple CPUs, and you have not changed the default setting in SQL Server to limit SQL Server's ability to use all of the CPUs in the server, then the query optimizer will consider using parallelism to execute some queries. Parallelism refers to the ability to execute a query on more than one CPU at the same time. In many cases, a query that runs on multiple processors is faster than a query that only runs on a single processor, but not always.&lt;br /&gt;&lt;br /&gt;The Query Optimizer will not always use parallelism, even though it potentially can. This is because the Query Optimizer takes a variety of different things into consideration before it decides to use parallelism. For example, how many active concurrent connections are there, how busy is the CPU, is there enough available memory to run parallel queries, how many rows are being processed, and what is the type of query being run? Once the Query Optimizer collects all the facts, then it decides if parallelism is best for this particular run of the query. You may find that one time a query runs without parallelism, but later, the same query runs again, but this time, parallelism is used.&lt;br /&gt;&lt;br /&gt;In some cases, the overhead of using multiple processors is greater than the resource savings of using them. While the query processor does try to weigh the pros and cons of using a parallel query, it doesn't always guess correctly.&lt;br /&gt;&lt;br /&gt;If you suspect that parallelism might be hurting the performance of a particular query, you can turn off parallelism for this particular query by using the OPTION (MAXDOP 1) hint.&lt;br /&gt;&lt;br /&gt;The only way to know for sure is to test the query both ways, and see what happens. [7.0, 2000, 2005] Updated 5-15-2006&lt;br /&gt;&lt;br /&gt;*****&lt;br /&gt;&lt;br /&gt;When you review a graphical execution plan, you may notice that the text of a icon is displayed in red, not black, which is the normal color. This means that the related table is missing some statistics that the Query Optimizer would like to have in order to come up with a better execution plan.&lt;br /&gt;&lt;br /&gt;To create the missing statistics, you need to right-click on the icon and select "Create Missing Statistics." This will display the "Create Missing Statistics" dialog box, where you can then easily add the missing statistics.&lt;br /&gt;&lt;br /&gt;If you are given the option to update missing statistics, you should always take the opportunity to do so as it will most likely benefit the performance of the query that is being analyzed. [7.0, 2000, 2005] Updated 5-15-2006&lt;br /&gt;&lt;br /&gt;*****&lt;br /&gt;&lt;br /&gt;Sometimes, when viewing a graphical query execution plan, you see an icon labeled "Assert." All this means is that the query optimizer is verifying a referential integrity or check constraint to see if the query will violate it or not. If not, there is no problem. But if it does, then the Query Optimizer will be unable to create an execution plan for the query and an error will be generated. [7.0, 2000, 2005] Updated 5-15-2006&lt;br /&gt;&lt;br /&gt;*****&lt;br /&gt;&lt;br /&gt;Often, when viewing a graphical query execution plan, you see an icon labeled "Bookmark Lookup." Bookmark lookups are quite common to see. Essentially, they are telling you that the Query Processor had to look up the row columns it needs from a heap or a clustered index, instead of being able to read it directly from a non-clustered index.&lt;br /&gt;&lt;br /&gt;For example, if all of the columns in the SELECT, JOIN, and WHERE clauses of a query don't all exist in the non-clustered index used to locate the rows that meet the query's criteria, then the Query Optimizer has to do extra work and look at the heap or clustered index to find all the columns it needs to satisfy the query.&lt;br /&gt;&lt;br /&gt;Another cause of a bookmark lookup is using SELECT *, which should never be used, as in most cases it will return more data that you really need.&lt;br /&gt;&lt;br /&gt;Bookmark lookups are not ideal from a performance perspective because extra I/O is required to look up all the columns for the rows to be returned.&lt;br /&gt;&lt;br /&gt;If you think that a bookmark lookup is hurting a query's performance, you have four potential options to avoid it. First, you can create a clustered index that will be used by the WHERE clause, you can take advantage of index intersection, you can create a covering non-clustered index, or you can (if you have SQL Server 2000/2005 Enterprise Edition, create an indexed view. If none of these are possible, or if using one of these will use more resources than using the bookmark lookup, then the bookmark lookup is the&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-7768324641482166528?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/7768324641482166528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=7768324641482166528' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/7768324641482166528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/7768324641482166528'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/11/sql-server-query-execution-plan_9372.html' title='SQL Server Query Execution Plan Analysis Part3/4'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-597704982357945623</id><published>2007-11-12T00:02:00.000-08:00</published><updated>2007-11-12T00:03:13.087-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SQL Server Query Execution Plan Analysis Part2/4</title><content type='html'>The arrows that connect one icon to another in a graphical query plan have different thicknesses. The thickness of the arrow indicates the relative cost in the number of rows and row size of the data moving between each icon. The thicker the arrow, the more the relative cost is.&lt;br /&gt;&lt;br /&gt;You can use this indicator as a quick gauge as to what is happening within the query plan of your query. You will want to pay extra attention to thick arrows in order to see how it affects the performance of your query. For example, thick lines should be at the right of the graphical execution plan, not the left. If you see them on the left, this could indicate that too many rows are being returned, and that the query execution plan is less than optimal. [7.0, 2000, 2005] Updated 9-19-2005&lt;br /&gt;&lt;br /&gt;*****&lt;br /&gt;&lt;br /&gt;In an execution plan, each part of it is assigned a percentage cost. This represents how much this part costs in resource use, relative to the rest of the execution plan. When you analyze an execution plan, you should focus your efforts on those parts that have the largest percentage cost. This way, you focus your limited time on those areas that have the greatest potential for a return on your time investment. [7.0, 2000, 2005] Updated 9-19-2005&lt;br /&gt;&lt;br /&gt;*****&lt;br /&gt;&lt;br /&gt;In an execution plan, you may have noticed that some parts of the plan are executed more than once. As part of your analysis of an execution plan, you should focus some of your time on any part that takes more than one execution, and see if there is any way to reduce the number of executions performed. The fewer executions that are performed, the faster the query will be executed. [7.0, 2000, 2005] Updated 9-19-2005&lt;br /&gt;&lt;br /&gt;*****&lt;br /&gt;&lt;br /&gt;In an execution plan you will see references to I/O and CPU cost. These don't have a "real" meaning, such as representing the use of a specific amount of resources. These figures are used by the Query Optimizer to help it make the best decision. But there is one meaning you can associate with them, and that is that a smaller I/O or CPU cost uses less server resources than a higher I/O or CPU cost. [7.0, 2000, 2005] Updated 9-19-2005&lt;br /&gt;&lt;br /&gt;*****&lt;br /&gt;&lt;br /&gt;When you examine a graphical SQL Server query execution plan, one of the more useful things to look for are how indexes were used (if at all) by the query optimizer to retrieve data from tables from a given query. By finding out if an index was used, and how it was used, you can help determine if the current indexes are allowing the query to run as well as it possibly can.&lt;br /&gt;&lt;br /&gt;When you place the cursor over a table name (and its icon) in a graphical execution plan and display the pop-up window, you will see one of several messages. These messages tell you if and how an index was used to retrieve data from a table. They include:&lt;br /&gt;&lt;br /&gt;Table Scan: If you see this message, it means there was no clustered index on the table and that no index was used to look up the results. Literally, each row in the table had to be examined. If a table is relatively small, table scans can be very fast, sometimes faster than using an index. &lt;br /&gt;&lt;br /&gt;So the first thing you want to do, when you see that a table scan has been performed, is to see how many rows there are in the table. If there are not many, then a table scan may offer the best overall performance. But if this table is large, then a table scan will most likely take a long time to complete, and performance will suffer. In this case, you need to look into adding an appropriate index(s) to the table that the query can use. &lt;br /&gt;&lt;br /&gt;Let's say that you have identified a query that uses a table scan, but you also discover that there is an appropriate nonclustered index, but it is not being used. What does that mean, and why isn't the index being used? If the amount of data to be retrieved is large, relative to the size of the table, or if the data is not selective (which means that there are many rows with the same values in the same column), a table scan is often performed instead of an index seek because it is faster. For example, if a table has 10,000 rows, and the query returns 1,000 of them, then a table scan of a table with no clustered index will be faster than trying to use a non-clustered index. Or, if the table had 10,000 rows, and 1,000 of the rows have the same value in the same column (the column being used in the WHERE clause), a table scan is also faster than using a non-clustered index. &lt;br /&gt;&lt;br /&gt;When you view the pop-up window when you move the cursor over a table in a graphical query plan, notice the "Estimated Row Count" number. This number is the query optimizer's best guess on how many rows will be retrieved. If a table scan was done, and this number is very high, this tells you that the table scan was done because a high number of records were returned, and that the query optimizer believed that it was faster to perform a table scan than use the available non-clustered index. &lt;br /&gt;Index Seek: When you see this, it means that the query optimizer used a non-clustered index on the table to look up the results. Performance is generally very quick, especially when few rows are returned. &lt;br /&gt;Clustered Index Seek: If you see this, this means that the query optimizer was able to use a clustered index on the table to look up the results, and performance is very quick. In fact, this is the fastest type of index lookup SQL Server can do. &lt;br /&gt;Clustered Index Scan: A clustered index scan is like a table scan, except that it is done on a table that has a clustered index. Like a regular table scan, a clustered index scan may indicate a performance problem. Generally, they occur for two different reasons. First, there may be too many rows to retrieve, relative to the total number of rows in the table. See the "Estimated Row Count" to verify this. Second, it may be due to the column queried in the WHERE clause may not be selective enough. In any event, a clustered index scan is generally faster than a standard table scan, as not all records in the table always have to be searched when a clustered index scan is run, unlike a standard table scan. Generally, the only thing you can do to change a clustered index scan to a clustered index seek is to rewrite the query so that it is more restrictive and fewer rows are returned.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-597704982357945623?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/597704982357945623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=597704982357945623' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/597704982357945623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/597704982357945623'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/11/sql-server-query-execution-plan_12.html' title='SQL Server Query Execution Plan Analysis Part2/4'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-7488953576984132441</id><published>2007-11-11T23:57:00.000-08:00</published><updated>2007-11-11T23:59:04.495-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SQL Server Query Execution Plan Analysis Part1/4</title><content type='html'>When it comes time to analyze the performance of a specific query, one of the best methods is to view the query execution plan. A query execution plan outlines how the SQL Server query optimizer actually ran (or will run) a specific query. This information if very valuable when it comes time to find out why a specific query is running slow.&lt;br /&gt;&lt;br /&gt;There are several different ways to view a query's execution plan. They include:&lt;br /&gt;&lt;br /&gt;From within Query Analyzer is an option called "Show Execution Plan" (located on the Query drop-down menu). If you turn this option on, then whenever you run a query in Query Analyzer, you will get a query execution plan (in graphical format) displayed in a separate window. &lt;br /&gt;If you want to see an execution plan, but you don't want to run the query, you can choose the option "Display Estimated Execution Plan" (located on the Query drop-down menu). When you select this option, immediately an execution plan (in graphical format) will appear. The difference between these two (if any) is accountable to the fact that when a query is really run (not simulated, as in this option), current operations of the server are also considered. In most cases, plans created by either method will produce similar results. &lt;br /&gt;When you create a SQL Server Profiler trace, one of the events you can collect is called: MISC: Execution Plan. This information (in text form) shows the execution plan used by the query optimizer to execute the query. &lt;br /&gt;From within Query Analyzer, you can run the command SET SHOWPLAN_TEXT ON. Once you run this command, any query you execute in this Query Analyzer sessions will not be run, but a text-based version of the query plan will be displayed. If the query you are running uses temp tables, then you will have to run the command, SET STATISTICS PROFILE ON before running the query. &lt;br /&gt;Of these options, I prefer using the "Show Execution Plan", which produces a graphical output and considers current server operations. [7.0, 2000] Updated 8-5-2005&lt;br /&gt;&lt;br /&gt;*****&lt;br /&gt;&lt;br /&gt;If you see any of the following in an execution plan, you should consider them warning signs and investigate them for potential performance problems. Each of them are less than ideal from a performance perspective.&lt;br /&gt;&lt;br /&gt;Index or table scans: May indicate a need for better or additional indexes. &lt;br /&gt;Bookmark Lookups: Consider changing the current clustered index, consider using a covering index, limit the number of columns in the SELECT statement. &lt;br /&gt;Filter: Remove any functions in the WHERE clause, don't include wiews in your Transact-SQL code, may need additional indexes. &lt;br /&gt;Sort: Does the data really need to be sorted? Can an index be used to avoid sorting? Can sorting be done at the client more efficiently? &lt;br /&gt;It is not always possible to avoid these, but the more you can avoid them, the faster query performance will be. [7.0, 2000, 2005] Updated 8-5-2005&lt;br /&gt;&lt;br /&gt;*****&lt;br /&gt;&lt;br /&gt;If you have a stored procedure, or other batch Transact-SQL code that uses temp tables, you cannot use the "Display Estimated Execution Plan" option in the Query Analyzer or Management Studio to evaluate it. Instead, you must actually run the stored procedure or batch code. This is because when a query is run using the "Display Estimated Execution Plan" option, it is not really run, and temp tables are not created. Since they are not created, any references to them in the code will fail, which prevents an estimated execution plan from being created.&lt;br /&gt;&lt;br /&gt;On the other hand, if you use a table variable instead of a temp table, you can use the "Display Estimated Execution Plan" option [7.0, 2000, 2005] Updated 8-5-2005&lt;br /&gt;&lt;br /&gt;*****&lt;br /&gt;&lt;br /&gt;If you have a very complex query you are analyzing in Query Analyzer or Management Studio as a graphical query execution plan, the resulting plan can be very difficult to view and analyze. You may find it easier to break down the query into its logical components, analyzing each component separately. [7.0, 2000, 2005] Updated 8-5-2005&lt;br /&gt;&lt;br /&gt;*****&lt;br /&gt;&lt;br /&gt;The results of a graphical query execution plan are not always easy to read and interpret. Keep the following in mind when viewing a graphical execution plan:&lt;br /&gt;&lt;br /&gt;In very complex query plans, the plan is divided into many parts, with each part listed one on top of the other on the screen. Each part represents a separate process or step that the query optimizer has to perform in order to get to the final results. &lt;br /&gt;Each of the execution plan steps is often broken down into smaller sub-steps. Unfortunately, they are displayed on the screen from right to left. This means you must scroll to the far right of the graphical query plan to see where each step starts. &lt;br /&gt;Each of the sub-steps and steps is connected by an arrow, showing the path (order) taken of the query when it was executed. &lt;br /&gt;Eventually, all of the parts come together at the top left side of the screen. &lt;br /&gt;If you move your cursor above any of the steps or sub-steps, a pop-up windows is displayed, providing more detailed information about this particular step or sub-step. &lt;br /&gt;If you move your cursor over any of the arrows connecting the steps and sub-steps, you see a pop-up window showing how many records are being moved from one step or sub-step to another step or sub-step.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-7488953576984132441?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/7488953576984132441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=7488953576984132441' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/7488953576984132441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/7488953576984132441'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/11/sql-server-query-execution-plan.html' title='SQL Server Query Execution Plan Analysis Part1/4'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-2278417925872806559</id><published>2007-11-08T22:49:00.000-08:00</published><updated>2007-11-08T22:55:10.358-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActiveX Control'/><title type='text'>Microsoft ActiveX Control Pad</title><content type='html'>Microsoft ActiveX Control Pad&lt;br /&gt;  &lt;br /&gt;January 20, 1997&lt;br /&gt;&lt;br /&gt;Microsoft® Internet Explorer 3.x and ActiveX™ technologies provide a smart, compelling Web development platform: Microsoft ActiveX Control Pad. The ActiveX Control Pad is an authoring tool that lets you add ActiveX controls and ActiveX scripting (Visual Basic® Scripting Edition (VBScript) or JScript) to your HTML pages with point-and-click ease. &lt;br /&gt;&lt;br /&gt;The ActiveX Control Pad also includes the Microsoft HTML Layout Control, which provides layout capabilities based on the HTML extensions proposed by the World Wide Web Consortium (W3C). Using the ActiveX Control Pad, you can easily author pages that include advanced layout and multimedia features such as exact object placement, object layering, and transparency effects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-2278417925872806559?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/2278417925872806559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=2278417925872806559' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2278417925872806559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2278417925872806559'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/11/microsoft-activex-control-pad.html' title='Microsoft ActiveX Control Pad'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-3326170776334961930</id><published>2007-11-06T02:27:00.000-08:00</published><updated>2007-11-06T02:29:00.514-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http handler'/><title type='text'>Custom Http Handlers</title><content type='html'>&lt;a href="http://www.dotnetic.com/dnet/?q=node/5"&gt;The complete article&lt;/a&gt;&lt;br /&gt;The concept of custom HTTP Handlers is not new, but is a bit overlooked one. Performance-wise, using custom HTTP Handler is an excellent choice over ASP.NET pages when you don't need the huge overhead of ViewStates, Page life cycle events and support for postback stuff etc.&lt;br /&gt;Another extremely powerful, yet easily implementable use of a custom HTTP Handler is to process some resource or some type resources in your web site in special manner. E.g. You can restrict access to all *.txt file (no matter which web folder they are in) or if log.dat is requested then based upon valid role of the user, present the logged information from database etc.&lt;br /&gt;In this article we'll create a HTTP Handler to resize an image as per parameters that user passes. I have used Ajax Slider control only for better UI. Then as an example of how HTTP Handler can be used to process a type of files, we would create another HTTP handler to restrict access to specific types of files types, just to get an idea of this type of application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-3326170776334961930?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/3326170776334961930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=3326170776334961930' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/3326170776334961930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/3326170776334961930'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/11/custom-http-handlers.html' title='Custom Http Handlers'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-2698768957266375978</id><published>2007-11-05T21:04:00.000-08:00</published><updated>2007-11-05T21:05:18.705-08:00</updated><title type='text'>CCleaner</title><content type='html'>&lt;a href="http://www.freewaregenius.com/2006/10/02/ccleaner-review-top-notch-hard-drive-cleaner/"&gt;Download&lt;/a&gt;&lt;br /&gt;CCleaner (Crap Cleaner) removes all sorts of unused files, temp files, cookies, log files, cached files and other files from your computer. This is something that all computer users should do on a regular basis, not just to free up space on the hard drive but for better performace as well. A hard drive cleaner would be the first thing you would use when you have performance problems or system starts behaving erratically.&lt;br /&gt;&lt;br /&gt;As hard drive cleaners go this is one of the coolest out there, not just because it is 100% free but because it is very fast and does the job efficiently and has a nice, intuitive interface.It also completely erases all internet “tracks”, including cookies and history files, protecting your privacy from anybody who might want to monitor your internet behavior. CCleaner works with IE, Firefox, and Opera. It will also automatically detect the recently used file lists of most installed applications and erase those tracks as well.&lt;br /&gt;&lt;br /&gt;CCleaner also delivers 2 other functionalities as a registry cleaner and uninstaller. Although these both seem to work quite well, I must confess that I almost never use them, and it is the hard drive cleaning functionality that I makes me install and use this software. Having said that I will also admit that the registry cleaner seems to work quite well, in that it finds and resolve issues and does not seem to cause any undesirable side effects that are always a risk with registry cleaning tools in general. It also allows you to back up the registry before doing any intervention in case you wanted to undo these afterwards.&lt;br /&gt;&lt;br /&gt;Note: this software will attempt to install the Yahoo toolbar (UK version) on your machine if you use the default install options, which is a bit annoying. If you don’t want this, make sure to uncheck the Yahoo toolbar checkbox in the install options.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-2698768957266375978?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/2698768957266375978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=2698768957266375978' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2698768957266375978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/2698768957266375978'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/11/ccleaner.html' title='CCleaner'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-1496660999049198663</id><published>2007-11-05T20:50:00.000-08:00</published><updated>2007-11-05T20:52:25.550-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='text editor'/><title type='text'>EmEditor Text Editor</title><content type='html'>Welcome to EmEditor Text Editor Home Page!&lt;br /&gt;EmEditor Text Editor is a lightweight yet extendable, easy-to-use text editor for Windows. EmEditor is very customizable, and it supports Unicode and powerful macros. EmEditor is designed for Windows XP, and certified for Windows Vista! The x64 Edition is also available!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.emeditor.com/"&gt;http://www.emeditor.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-1496660999049198663?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/1496660999049198663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=1496660999049198663' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/1496660999049198663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/1496660999049198663'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/11/emeditor-text-editor.html' title='EmEditor Text Editor'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-7832606517622649525</id><published>2007-11-04T21:08:00.000-08:00</published><updated>2007-11-04T21:10:20.023-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Remoting'/><title type='text'>.Net Remoting Articles</title><content type='html'>&lt;a href="http://www.codeproject.com/csharp/Net_Remoting.asp"&gt;.NET Remoting with an easy example&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.codeproject.com/useritems/Remoting_Architecture.asp"&gt;Remoting Architecture in .NET&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.codeproject.com/dotnet/Remoting.asp"&gt;A Pintch Over .Net Remoting&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.codeproject.com/csharp/cs_remoting.asp"&gt;Remoting in .Net using C#&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-7832606517622649525?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/7832606517622649525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=7832606517622649525' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/7832606517622649525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/7832606517622649525'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/11/net-remoting-articles.html' title='.Net Remoting Articles'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-6559954501561955368</id><published>2007-10-25T07:54:00.001-07:00</published><updated>2007-10-25T07:54:18.495-07:00</updated><title type='text'>Design Guidelines for Class Library Developers</title><content type='html'>&lt;a href="http://msdn2.microsoft.com/en-us/library/czefa0ke(vs.71).aspx"&gt;http://msdn2.microsoft.com/en-us/library/czefa0ke(vs.71).aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-6559954501561955368?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/6559954501561955368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=6559954501561955368' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/6559954501561955368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/6559954501561955368'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/10/design-guidelines-for-class-library.html' title='Design Guidelines for Class Library Developers'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-613217191104712342</id><published>2007-10-25T07:35:00.000-07:00</published><updated>2007-10-25T07:41:15.392-07:00</updated><title type='text'>IT interview questions</title><content type='html'>I'm collecting websites that are dedicated to IT interview questions.&lt;br /&gt;I have found following websites:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.geekinterview.com/Interview-Questions"&gt;http://www.geekinterview.com/Interview-Questions&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.techinterviews.com/"&gt;http://www.techinterviews.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-613217191104712342?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/613217191104712342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=613217191104712342' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/613217191104712342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/613217191104712342'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/10/it-interview-questions.html' title='IT interview questions'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-6791585600432853592</id><published>2007-10-15T08:01:00.001-07:00</published><updated>2007-10-15T08:06:11.682-07:00</updated><title type='text'>Outlook style navigation bar</title><content type='html'>&lt;textarea cols="100" rows="100"&gt;&lt;head&gt;&lt;br /&gt;&lt;title&gt;QQ菜单&lt;/title&gt;&lt;br /&gt;&lt;meta http-equiv='Content-Type' content='text/html; charset=gb2312'&gt;&lt;br /&gt;&lt;script language='JavaScript'&gt;&lt;br /&gt;var headHeight = 22;var bodyHeight = 202;var objcount = 6;var step = 10;var moving = false;&lt;br /&gt;function showme(obj1, obj2)&lt;br /&gt;{&lt;br /&gt; if (moving)&lt;br /&gt;  return;&lt;br /&gt; moving = true;&lt;br /&gt; for(i=0;i&lt;document.all.tags('td').length;i++)&lt;br /&gt;  if (document.all.tags('td')[i].className.indexOf('headtd') == 0)&lt;br /&gt;   document.all.tags('td')[i].className = 'headtd1';&lt;br /&gt; obj2.className = 'headtd2';&lt;br /&gt; moveme(obj1);&lt;br /&gt;}&lt;br /&gt;function moveme(obj)&lt;br /&gt;{&lt;br /&gt; idnumber = parseInt(obj.id.substr(4));&lt;br /&gt; objtop = headHeight * (idnumber - 1);&lt;br /&gt; objbuttom = bodyHeight + headHeight * (idnumber - 2);&lt;br /&gt; currenttop = parseInt(obj.style.top);&lt;br /&gt; if (currenttop &gt;= objbuttom)&lt;br /&gt; {&lt;br /&gt;  countid = 1;&lt;br /&gt;  for(i=0;i&lt;document.all.tags('div').length;i++)&lt;br /&gt;   if (document.all.tags('div')[i].id == 'item'+countid+'body')&lt;br /&gt;   {&lt;br /&gt;    obj = document.all.tags('div')[i];&lt;br /&gt;    objtop = headHeight * (countid - 1);&lt;br /&gt;    if (countid == idnumber)&lt;br /&gt;    {&lt;br /&gt;     moveup(obj,objtop,false);&lt;br /&gt;     break;&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;     moveup(obj,objtop,true);&lt;br /&gt;    countid++;&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt; else if ((currenttop &gt;= objtop) &amp;&amp; (idnumber &lt; objcount))&lt;br /&gt; {&lt;br /&gt;  idnumber++;&lt;br /&gt;  countid = objcount;&lt;br /&gt;  for(i=document.all.tags('div').length-1;i&gt;=0;i--)&lt;br /&gt;   if (document.all.tags('div')[i].id == 'item'+countid+'body')&lt;br /&gt;   {&lt;br /&gt;    obj = document.all.tags('div')[i];&lt;br /&gt;    objbuttom = bodyHeight + headHeight * (countid - 2);&lt;br /&gt;    if (countid == idnumber)&lt;br /&gt;    {&lt;br /&gt;     movedown(obj,objbuttom,false);&lt;br /&gt;     break;&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;     movedown(obj,objbuttom,true);&lt;br /&gt;    countid--;&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;function moveup(obj,objtop,ismove)&lt;br /&gt;{&lt;br /&gt; currenttop = parseInt(obj.style.top);&lt;br /&gt; if (currenttop &gt; objtop)&lt;br /&gt; {&lt;br /&gt;  obj.style.top = currenttop - step;&lt;br /&gt;  setTimeout('moveup('+obj.id+','+objtop+','+ismove+')',1)&lt;br /&gt;  return;&lt;br /&gt; }&lt;br /&gt; moving = ismove;&lt;br /&gt;}&lt;br /&gt;function movedown(obj,objbuttom,ismove)&lt;br /&gt;{&lt;br /&gt; currenttop = parseInt(obj.style.top);&lt;br /&gt; if (currenttop &lt; objbuttom)&lt;br /&gt; {&lt;br /&gt;  obj.style.top = currenttop + step;&lt;br /&gt;  setTimeout('movedown('+obj.id+','+objbuttom+','+ismove+')',1)&lt;br /&gt;  return;&lt;br /&gt; }&lt;br /&gt; moving = ismove;&lt;br /&gt;}&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;style type='text/css'&gt;&lt;br /&gt;.headtd1 {  background: #00A4E1; border: 1px outset; border-color: #00BBFF #0077FF #0077FF #00BBFF; cursor: hand; font-size: 9pt}.headtd2 {  background: #20C1FF; border: 1px outset; border-color: #60D3FF #0077FF #0077FF #60D3FF; cursor: hand; font-size: 9pt}.bodytd  {  background: #99CCFF; border: 1px outset; border-color: #B0D8FF #0077FF #0077FF #B0D8FF; font-size: 9pt}&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;/head&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id='mainboard' style='position:absolute; left:2px; top:2px; width:120px; height:312px; z-index:1; overflow: hidden; background: #99CCFF;'&gt; &lt;div id='item1body' style='position:absolute; left:0; top:0; width:120px; height:202px; z-index:2; overflow: hidden'&gt;&lt;table width='100%' border='0' height='100%' cellpadding='2' cellspacing='0'&gt;&lt;tr&gt;&lt;td id='item1head' height='20' class='headtd2' onclick='showme(item1body,this)' align='center'&gt;菜单1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class='bodytd' align='center'&gt;test&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div id='item2body' style='position:absolute; left:0; top:202; width:120px; height:202px; z-index:3; overflow: hidden'&gt;&lt;table width='100%' border='0' height='100%' cellpadding='2' cellspacing='0'&gt;&lt;tr&gt;&lt;td id='item2head' height='20' class='headtd1' onclick='showme(item2body,this)' align='center'&gt;菜单2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class='bodytd' align='center'&gt;test&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div id='item3body' style='position:absolute; left:0; top:224; width:120px; height:202px; z-index:4; overflow: hidden'&gt;&lt;table width='100%' border='0' height='100%' cellpadding='2' cellspacing='0'&gt;&lt;tr&gt;&lt;td id='item3head' height='20' class='headtd1' onclick='showme(item3body,this)' align='center'&gt;菜单3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class='bodytd' align='center'&gt;test&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div id='item4body' style='position:absolute; left:0; top:246; width:120px; height:202px; z-index:5; overflow: hidden'&gt;&lt;table width='100%' border='0' height='100%' cellpadding='2' cellspacing='0'&gt;&lt;tr&gt;&lt;td id='item4head' height='20' class='headtd1' onclick='showme(item4body,this)' align='center'&gt;菜单4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class='bodytd' align='center'&gt;test&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div id='item5body' style='position:absolute; left:0; top:268; width:120px; height:202px; z-index:6; overflow: hidden'&gt;&lt;table width='100%' border='0' height='100%' cellpadding='2' cellspacing='0'&gt;&lt;tr&gt;&lt;td id='item5head' height='20' class='headtd1' onclick='showme(item5body,this)' align='center'&gt;菜单5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class='bodytd' align='center'&gt;test&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div id='item6body' style='position:absolute; left:0; top:290; width:120px; height:202px; z-index:7; overflow: hidden'&gt;&lt;table width='100%' border='0' height='100%' cellpadding='2' cellspacing='0'&gt;&lt;tr&gt;&lt;td id='item6head' height='20' class='headtd1' onclick='showme(item6body,this)' align='center'&gt;菜单6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class='bodytd' align='center'&gt;test&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt; &lt;/textarea&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-6791585600432853592?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/6791585600432853592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=6791585600432853592' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/6791585600432853592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/6791585600432853592'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/10/outlook-style-navigation-bar.html' title='Outlook style navigation bar'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-4581282121409341143</id><published>2007-09-27T00:33:00.000-07:00</published><updated>2007-09-27T00:38:35.391-07:00</updated><title type='text'>SQL Data Types FAQ</title><content type='html'>1.  What's the difference between CHAR and VARCHAR data types and when do I use them?  &lt;br /&gt;&lt;br /&gt;CHAR and VARCHAR data types are both non-Unicode character data types with a maximum length of 8,000 characters.  The main difference between these 2 data types is that a CHAR data type is fixed-length while a VARCHAR is variable-length.  If the number of characters entered in a CHAR data type column is less than the declared column length, spaces are appended to it to fill up the whole length.&lt;br /&gt;&lt;br /&gt;Another difference is in the storage size wherein the storage size for CHAR is n bytes while for VARCHAR is the actual length in bytes of the data entered (and not n bytes).&lt;br /&gt;&lt;br /&gt;You should use CHAR data type when the data values in a column are expected to be consistently close to the same size.  On the other hand, you should use VARCHAR when the data values in a column are expected to vary considerably in size.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; 2.  What's the difference between NCHAR and NVARCHAR data types and when do I use them?  &lt;br /&gt;&lt;br /&gt;NCHAR and NVARCHAR data types are both Unicode character data types with a maximum length of 4,000 characters.  The main difference between these 2 data types is that an NCHAR data type is fixed-length while an NVARCHAR is variable-length.  If the number of characters entered in an NCHAR data type column is less than the specified column length, spaces are appended to it to fill up the whole length.&lt;br /&gt;&lt;br /&gt;Another difference is in the storage size wherein the storage size for NCHAR is two times n bytes while for NVARCHAR is two times the number of characters entered (in bytes).&lt;br /&gt;&lt;br /&gt;You should use NCHAR data type when the data values in a column are expected to be consistently close to the same size.  On the other hand, you should use NVARCHAR when the data values in a column are expected to vary considerably in size.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;3.  What's the difference between CHAR and NCHAR data types and when do I use them?  &lt;br /&gt;&lt;br /&gt;CHAR and NCHAR data types are both character data types that are fixed-length.  Below is the summary of the differences between these 2 data types:&lt;br /&gt;&lt;br /&gt;  CHAR(n) NCHAR(n) &lt;br /&gt;Character Data Type Non-Unicode Data Unicode Data &lt;br /&gt;Maximum Length 8,000 4,000 &lt;br /&gt;Character Size 1 byte 2 bytes &lt;br /&gt;Storage Size n bytes 2 times n bytes &lt;br /&gt;&lt;br /&gt;You would use NCHAR data type for columns that store characters from more than one character set or when you will be using characters that require 2-byte characters, which are basically the Unicode characters such as the Japanese Kanji or Korean Hangul characters.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;4.  What's the difference between VARCHAR and NVARCHAR data types and when do I use them?  &lt;br /&gt;&lt;br /&gt;VARCHAR and NVARCHAR data types are both character data types that are variable-length.  Below is the summary of the differences between these 2 data types:&lt;br /&gt;&lt;br /&gt;  VARCHAR(n) NVARCHAR(n) &lt;br /&gt;Character Data Type Non-Unicode Data Unicode Data &lt;br /&gt;Maximum Length 8,000 4,000 &lt;br /&gt;Character Size 1 byte 2 bytes &lt;br /&gt;Storage Size Actual Length (in bytes) 2 times Actual Length (in bytes) &lt;br /&gt;&lt;br /&gt;You would use NVARCHAR data type for columns that store characters from more than one character set or when you will be using characters that require 2-byte characters, which are basically the Unicode characters such as the Japanese Kanji or Korean Hangul characters.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; 5. What's the difference between TINYINT, SMALLINT, INT and BIGINT data types and when do I use them?  &lt;br /&gt;&lt;br /&gt;TINYINT, SMALLINT, INT and BIGINT are all the same in the sense that they are all exact number data types that use integer data.  The difference between these data types are in the minimum and maximum values that each can contain as well as the storage size required by each data type, as shown in the following table:&lt;br /&gt;&lt;br /&gt;Data Type Minimum Value Maximum Value Storage Size &lt;br /&gt;tinyint 0 255 1 byte &lt;br /&gt;smallint -2^15 (-32,768) 2^15 - 1 (32,767) 2 bytes &lt;br /&gt;int -2^31 (-2,147,483,648) 2^31 - 1 (2,147,483,647) 4 bytes &lt;br /&gt;bigint -2^63 (-9,223,372,036,854,775,808) 2^63 - 1 (9,223,372,036,854,775,807) 8 bytes &lt;br /&gt;&lt;br /&gt;Choosing which of these data types to use depends on the value you want to store for the column or variable.  The rule of thumb is to always use the data type that will require the least storage size.  Don't always use INT as your data type for whole numbers if you don't need to.  If you simply need to store a value between 0 and 255 then you should define your column as TINYINT.  &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; 6.  What's the difference between NUMERIC and DECIMAL data types and when do I use them?  &lt;br /&gt;&lt;br /&gt;There is no difference between NUMERIC and DECIMAL data types.  They are synonymous to each other and either one can be used.  DECIMAL/NUMERIC data types are numeric data types with fixed precision and scale.&lt;br /&gt;&lt;br /&gt;DECIMAL (p [, s ])&lt;br /&gt;NUMERIC (p [, s ])&lt;br /&gt;In declaring a DECIMAL or NUMERIC data type, p, which is the precision, specifies the maximum total number of decimal digits that can be stored, both to the left and to the right of the decimal point.  The precision must be a value from 1 through the maximum precision of 38.  The s is the scale and it specifies the maximum number of decimal digits that can be stored to the right of the decimal point.  Scale, which defaults to 0 if not specified, must be a value from 0 to the precision value.&lt;br /&gt;&lt;br /&gt;The following table specifies the storage size required based on the precision specified for the NUMERIC or DECIMAL data type:&lt;br /&gt;&lt;br /&gt;Precision Storage Size &lt;br /&gt;1 - 9 5 bytes &lt;br /&gt;10- 19 9 bytes &lt;br /&gt;20-28 13 bytes &lt;br /&gt;29-38 17 bytes &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; 7.  What's the difference between FLOAT and REAL data types and when do I use them?  &lt;br /&gt;&lt;br /&gt;FLOAT and REAL data types are both approximate number data types for use with floating point numeric data.  Floating point data is approximate; not all values in the data type range can be precisely represented.  The differences between these 2 data types are in the minimum and maximum values each can hold as well as the storage size required, as specified in the following table:&lt;br /&gt;&lt;br /&gt;Data Type n Minimum Value Maximum Value Precision Storage Size &lt;br /&gt;float [(n)] 1-24 -1.79E + 308 1.79E + 308 7 digits 4 bytes &lt;br /&gt;  25-53 -1.79E + 308 1.79E + 308 15 digits 8 bytes &lt;br /&gt;real   -3.40E + 38 3.40E + 38 7 digits 4 bytes &lt;br /&gt;&lt;br /&gt;For FLOAT data type, the n is the number of bits used to store the mantissa in scientific notation and thus dictates the precision and storage size and it must be a value from 1 through 53.  If not specified, this defaults to 53.  In SQL Server, the synonym for REAL data type is FLOAT(24).  If your data requires only a maximum of 7 digits precision, you can either use the REAL data type or FLOAT data type with 24 as the parameter (FLOAT(24)).&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; 8. What's the difference between SMALLDATETIME and DATETIME data types and when do I use them?  &lt;br /&gt;&lt;br /&gt;A datetime data type is date and time data from January 1, 1753 through December 31, 9999, to an accuracy of one three-hundredth of a second (equivalent to 3.33 milliseconds or 0.00333 seconds).  Values are rounded to increments of .000, .003, or .007 seconds.&lt;br /&gt;&lt;br /&gt;On the other hand, a smalldatetime data type is a date and time data from January 1, 1900, through June 6, 2079, with accuracy to the minute.  smalldatetime values with 29.998 seconds or lower are rounded down to the nearest minute; values with 29.999 seconds or higher are rounded up to the nearest minute. &lt;br /&gt;&lt;br /&gt;Values with the datetime data type are stored internally by Microsoft SQL Server as two 4-byte integers.  The first 4 bytes store the number of days before or after the base date, January 1, 1900.  The base date is the system reference date.  Values for datetime earlier than January 1, 1753, are not permitted. The other 4 bytes store the time of day represented as the number of milliseconds after midnight.&lt;br /&gt;&lt;br /&gt;The smalldatetime data type stores dates and times of day with less precision than datetime.  SQL Server stores smalldatetime values as two 2-byte integers.  The first 2 bytes store the number of days after January 1, 1900.  The other 2 bytes store the number of minutes since midnight. Dates range from January 1, 1900, through June 6, 2079, with accuracy to the minute.&lt;br /&gt;&lt;br /&gt;Data Type Minimum Value Maximum Value Time Accuracy Storage Size &lt;br /&gt;smalldatetime January 1, 1900 June 6, 2079 up to a minute 4 bytes &lt;br /&gt;datetime January 1, 1753 December 31, 9999 one three-hundredth of a second 8 bytes &lt;br /&gt;&lt;br /&gt;smalldatetime is usually used when you don't need to store the time of the day such as in cases of effectivity dates and expiration dates.  datetime  is used if the time of the day is needed and up to the second accuracy is required.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; 9.  What's the difference between SMALLMONEY and MONEY data types and when do I use them?  &lt;br /&gt;&lt;br /&gt;MONEY and SMALLMONEY are both monetary data types for representing monetary or currency values.  The differences between these 2 data types are in the minimum and maximum values each can hold as well as in the storage size required by each data type, as shown in the following table:&lt;br /&gt;&lt;br /&gt;Data Type Minimum Value Maximum Value Storage Size &lt;br /&gt;smallmoney -214,748.3648 214,748.3647 4 bytes &lt;br /&gt;money -2^63 (-922,337,203,685,477.5808) 2^63 - 1 (+922,337,203,685,477.5807) 8 bytes &lt;br /&gt;&lt;br /&gt;Both SMALLMONEY and MONEY data types has an accuracy to a ten-thousandths of a monetary unit.  The rule of thumb is to always use the data type that will require the least storage size.  If the monetary value that you will store is less than 214,748.3647 then you should use SMALLMONEY; otherwise use the MONEY data type.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; 10.  How do I store a boolean value in SQL Server?  &lt;br /&gt;&lt;br /&gt;In SQL Server, there's no boolean data type.  The nearest data type that can be used in place of boolean data is the BIT data type, which is an integer data type that can accept a value of 1, 0 or NULL value only.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-4581282121409341143?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/4581282121409341143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=4581282121409341143' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/4581282121409341143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/4581282121409341143'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/09/sql-data-types-faq.html' title='SQL Data Types FAQ'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-1466607870408480549</id><published>2007-09-26T04:29:00.000-07:00</published><updated>2007-09-26T04:30:15.672-07:00</updated><title type='text'>Use Cassini to host ASP.Net 2.0</title><content type='html'>http://ultidev.com/Products/Cassini/CassiniDevGuide.htm&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-1466607870408480549?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/1466607870408480549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=1466607870408480549' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/1466607870408480549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/1466607870408480549'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/09/use-cassini-to-host-aspnet-20.html' title='Use Cassini to host ASP.Net 2.0'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-7565789832772767137</id><published>2007-09-26T02:05:00.000-07:00</published><updated>2007-09-26T02:06:12.271-07:00</updated><title type='text'>A post solve the problem "Failed to access IIS metadata"</title><content type='html'>http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=240301&amp;SiteID=1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-7565789832772767137?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/7565789832772767137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=7565789832772767137' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/7565789832772767137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/7565789832772767137'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/09/post-solve-problem-failed-to-access-iis.html' title='A post solve the problem &quot;Failed to access IIS metadata&quot;'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-6453656466441895927</id><published>2007-09-25T23:26:00.000-07:00</published><updated>2007-09-25T23:28:27.435-07:00</updated><title type='text'>Study Mono</title><content type='html'>&lt;a href="http://www.mono-project.com/"&gt;Go there&lt;/a&gt; to learn about Mono. &lt;br /&gt;"Mono provides the necessary software to develop and run .NET client and server applications on Linux, Solaris, Mac OS X, Windows, and Unix. Sponsored by Novell (http://www.novell.com), the Mono open source project has an active and enthusiastic contributing community and is positioned to become the leading choice for development of Linux applications. "&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-6453656466441895927?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/6453656466441895927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=6453656466441895927' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/6453656466441895927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/6453656466441895927'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/09/study-mono.html' title='Study Mono'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-880472531947774737</id><published>2007-09-25T06:30:00.000-07:00</published><updated>2007-09-25T06:34:01.314-07:00</updated><title type='text'>How to make Apache run ASP.NET / ASP.NET 2.0</title><content type='html'>&lt;div incrementviewcount="true"&gt;&lt;p&gt;Don’t ask me why… but i’ve been asked to make Apache run ASP.NET.&lt;/p&gt;&lt;p&gt;&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;IT Worked ! &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;Even worked with ASP.NET 2.0 Site !&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:85%;color:navy;"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"&gt;Following are the instruction to make Asp.Net work under apache:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="COLOR: navy; mso-list: l0 level1 lfo6"&gt;&lt;span style="font-family:Arial;font-size:85%;color:navy;"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;strong&gt;– Install &lt;/strong&gt;&lt;a href="http://www.apache.org/dist/httpd/binaries/win32/apache_2.0.54-win32-x86-no_ssl.msi"&gt;&lt;/a&gt; &lt;target=_blank&gt;&lt;strong&gt;Apache 2.0.54&lt;/strong&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="COLOR: navy; mso-list: l0 level1 lfo6"&gt;&lt;span style="font-family:Arial;font-size:85%;color:navy;"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;strong&gt;– Install &lt;/strong&gt;&lt;a href="&lt;a href="&gt;http://www.apache.org/dist/httpd/mod_aspdotnet/mod_aspdotnet-2.0.0.msi&lt;/a&gt;" target=_blank&gt;&lt;strong&gt;Mod_AspDotNet&lt;/strong&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:85%;color:navy;"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;&lt;p class="MsoNormal" style="COLOR: navy; mso-list: l0 level1 lfo6"&gt;&lt;span style="font-family:Arial;font-size:85%;color:navy;"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;strong&gt;– Add at the end of C:\Program Files\Apache Group\Apache2\conf\httpd.conf the following lines&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="COLOR: navy; mso-list: l0 level1 lfo6"&gt;&lt;span style="font-family:Arial;font-size:85%;color:navy;"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;span style="color:#009f00;"&gt;#asp.net&lt;/span&gt; &lt;br /&gt;LoadModule aspdotnet_module "modules/mod_aspdotnet.so" &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="COLOR: navy; mso-list: l0 level1 lfo6"&gt;&lt;span style="font-family:Arial;font-size:85%;color:navy;"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;AddHandler asp.net asax ascx ashx asmx aspx axd config cs csproj licx rem resources resx soap vb vbproj vsdisco webinfo &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:85%;color:navy;"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;br /&gt;&amp;lt;IfModule mod_aspdotnet.cpp&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:85%;color:navy;"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;  &lt;span style="color:#009f00;"&gt;# Mount the ASP.NET /asp application &lt;br /&gt;&lt;/span&gt;  AspNetMount /SampleASP "c:/SampleASP" &lt;br /&gt;  &lt;span style="color:#009f00;"&gt;#/SampleASP is the alias name for asp.net to execute &lt;br /&gt;  #"c:/SampleASP" is the actual execution of files/folders  in that location &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="COLOR: navy; mso-list: l0 level1 lfo6"&gt;&lt;span style="font-family:Arial;font-size:85%;color:navy;"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;  &lt;span style="color:#009f00;"&gt;# Map all requests for /asp to the application files &lt;br /&gt;&lt;/span&gt;  Alias /SampleASP "c:/SampleASP" &lt;br /&gt;  &lt;span style="color:#009f00;"&gt;#maps /SampleASP request to "c:/SampleASP" &lt;br /&gt;  #now to get to the /SampleASP type &lt;/span&gt;&lt;a href="&lt;a href="&gt;http://localhost/SampleASP"&gt;&lt;font&lt;&gt;%20color=#009f00&gt;http://localhost/SampleASP&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#009f00;"&gt;&lt;br /&gt;  #It' redirect FONT&gt;&lt;a&gt;http://localhost/SampleASP"&gt;&lt;font&lt;/a&gt; color=#009f00&gt;http://localhost/SampleASP&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#009f00;"&gt; to "c:/SampleASP"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="COLOR: navy; mso-list: l0 level1 lfo6"&gt;&lt;span style="font-family:Arial;font-size:85%;color:navy;"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt; &lt;span style="color:#009f00;"&gt; # Allow asp.net scripts to be executed in the /SampleASP example &lt;br /&gt;&lt;/span&gt;  &amp;lt;Directory "c:/SampleASP"&amp;gt; &lt;br /&gt;    Options FollowSymlinks ExecCGI &lt;br /&gt;    Order allow,deny &lt;br /&gt;    Allow from all &lt;br /&gt;    DirectoryIndex index.htm index.aspx &lt;br /&gt;   &lt;span style="color:#009f00;"&gt;#default the index page to .htm and .aspx &lt;br /&gt;&lt;/span&gt;  &amp;lt;/Directory&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="COLOR: navy; mso-list: l0 level1 lfo6"&gt;&lt;span style="font-family:Arial;font-size:85%;color:navy;"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;  &lt;span style="color:#009f00;"&gt;# For all virtual ASP.NET webs, we need the aspnet_client files &lt;br /&gt;  # to serve the client-side helper scripts. &lt;br /&gt;&lt;/span&gt;  AliasMatch /aspnet_client/system_web/(\d+)_(\d+)_(\d+)_(\d+)/(.*) "C:/Windows/Microsoft.NET/Framework/v$1.$2.$3/ASP.NETClientFiles/$4" &lt;br /&gt;  &amp;lt;Directory "C:/Windows/Microsoft.NET/Framework/v*/ASP.NETClientFiles"&amp;gt; &lt;br /&gt;    Options FollowSymlinks &lt;br /&gt;    Order allow,deny &lt;br /&gt;    Allow from all &lt;br /&gt;  &amp;lt;/Directory&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:85%;color:navy;"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&amp;lt;/IfModule&amp;gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:85%;color:navy;"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;span style="color:#009f00;"&gt;#asp.net&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="COLOR: navy; mso-list: l0 level1 lfo6"&gt;&lt;span style="font-family:Arial;font-size:85%;color:navy;"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:Arial;font-size:85%;color:navy;"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;– Create a directory c:\SampleASP and insert in it the index.aspx&lt;o:p&gt;&lt;/O:P&gt;&lt;/span&gt;&lt;/span&gt; &lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="COLOR: navy; mso-list: l0 level1 lfo6"&gt;&lt;strong&gt;&lt;span style="font-family:Arial;font-size:85%;color:navy;"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;– Restart apache server : &lt;br /&gt;   Start-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span style="COLOR: windowtext"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Apache HTTP Server 2.0.54 -&amp;gt; &lt;br /&gt;   Control Apache Server -&amp;gt; Restart&lt;o:p&gt;&lt;/O:P&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p class="MsoNormal" style="COLOR: navy; mso-list: l0 level1 lfo6"&gt;&lt;span style="font-family:Arial;font-size:85%;color:navy;"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;strong&gt;– Open Explorer and navigate to &lt;/strong&gt;&lt;a title="http://localhost/SmartASP/index.aspx" href="&lt;a href="&gt;http://localhost/SampleASP/index.aspx&lt;/a&gt;http://localhost/SampleASP/index.aspx"&gt;&lt;strong&gt;http://localhost/SampleASP/index.aspx&lt;/strong&gt;&lt;/a&gt;&lt;strong&lt;&gt;&gt;%20&lt;?XML:NAMESPACE PREFIX = O /&gt;&lt;o:p&gt;&lt;/O:P&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt; &lt;p&gt;&lt;/p&gt;&lt;p%20class=msonormal&gt;&lt;font%20face=arial%20color=navy%20size=2&gt;&lt;span%20style="font-size:%2010pt;%20color:%20navy;%20font-family:%20arial"&gt;&lt;o:p&gt;&lt;/O:P&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p%20class=msonormal&gt;&lt;font%20face=arial%20color=navy%20size=2&gt;&lt;span%20style="font-size:%2010pt;%20color:%20navy;%20font-family:%20arial"&gt;If%20everything%20worked%20fine%20you%20should%20get%20a%20nice%20asp.net%20page%20working.&lt;o:p&gt;&lt;/O:P&gt;&lt;/span&gt;&lt;/span&gt; &lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;a%20href="&lt;a%20href='&gt;&lt;br /&gt;&lt;/p&gt;&lt;/SPAN%20style="FONT-SIZE:%2010pt;%20COLOR:%20navy;%20FONT-FAMILY:%20Arial"&gt;&lt;/SPAN%20style="FONT-SIZE:%2010pt;%20COLOR:%20navy;%20FONT-FAMILY:%20Arial"&gt;&lt;span%20style="font-size:%2010pt;%20color:%20navy;%20font-family:%20arial"&gt;&lt;span%20style="font-size:%2010pt;%20color:%20navy;%20font-family:%20arial"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-880472531947774737?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/880472531947774737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=880472531947774737' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/880472531947774737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/880472531947774737'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/09/how-to-make-apache-run-aspnet-aspnet-20.html' title='How to make Apache run ASP.NET / ASP.NET 2.0'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-6807996429066263161</id><published>2007-09-19T02:52:00.000-07:00</published><updated>2007-09-19T02:54:47.679-07:00</updated><title type='text'>JavaScript Tips for ASP.NET Developers</title><content type='html'>Two articles that show high used javascripts in ASP.NET:&lt;br /&gt;&lt;a href="http://www.codeproject.com/useritems/JavaScript_Tips_-_Part_2.asp"&gt;http://www.codeproject.com/useritems/JavaScript_Tips_-_Part_2.asp&lt;/a&gt;&lt;br /&gt;and&lt;br /&gt;&lt;a href="http://www.codeproject.com/useritems/JavaScript_Tips.asp"&gt;http://www.codeproject.com/useritems/JavaScript_Tips.asp&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-6807996429066263161?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/6807996429066263161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=6807996429066263161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/6807996429066263161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/6807996429066263161'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/09/javascript-tips-for-aspnet-developers.html' title='JavaScript Tips for ASP.NET Developers'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-472666940578248734</id><published>2007-09-07T01:29:00.001-07:00</published><updated>2007-09-07T01:30:22.348-07:00</updated><title type='text'>How to: Customize the ASP.NET CreateUserWizard Control</title><content type='html'>How to: Customize the ASP.NET CreateUserWizard Control&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms178342.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms178342.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Customizing the CreateUserWizard Control&lt;br /&gt;&lt;a href="http://aspnet.4guysfromrolla.com/articles/070506-1.aspx"&gt;http://aspnet.4guysfromrolla.com/articles/070506-1.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-472666940578248734?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/472666940578248734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=472666940578248734' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/472666940578248734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/472666940578248734'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/09/how-to-customize-aspnet.html' title='How to: Customize the ASP.NET CreateUserWizard Control'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-6831663900945725981</id><published>2007-09-07T01:25:00.000-07:00</published><updated>2007-09-07T01:26:14.204-07:00</updated><title type='text'>ASP.NET 2.0 Provider Model</title><content type='html'>&lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa479030.aspx"&gt;http://msdn2.microsoft.com/en-us/library/aa479030.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;ASP.NET 2.0 Provider Model: Introduction to the Provider Model&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-6831663900945725981?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/6831663900945725981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=6831663900945725981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/6831663900945725981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/6831663900945725981'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/09/aspnet-20-provider-model.html' title='ASP.NET 2.0 Provider Model'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-7463644974380771470</id><published>2007-09-07T01:20:00.000-07:00</published><updated>2007-09-07T01:21:06.304-07:00</updated><title type='text'>Good article about ASP.NET custom profile provider</title><content type='html'>&lt;a href="http://msdn.microsoft.com/msdnmag/issues/07/03/ASPNET2/"&gt;http://msdn.microsoft.com/msdnmag/issues/07/03/ASPNET2/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.eggheadcafe.com/articles/20060731.asp"&gt;http://www.eggheadcafe.com/articles/20060731.asp&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.theserverside.net/tt/articles/showarticle.tss?id=CreatingProfileProvider"&gt;http://www.theserverside.net/tt/articles/showarticle.tss?id=CreatingProfileProvider&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-7463644974380771470?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/7463644974380771470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=7463644974380771470' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/7463644974380771470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/7463644974380771470'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/09/good-article-about-aspnet-custom.html' title='Good article about ASP.NET custom profile provider'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5624243837319940428.post-1601975638445660496</id><published>2007-09-05T23:31:00.000-07:00</published><updated>2007-09-05T23:33:20.369-07:00</updated><title type='text'>The Big Three Developer Networks</title><content type='html'>Microsoft: &lt;a href="http://www.msdn.com/"&gt;www.msdn.com&lt;/a&gt;&lt;br /&gt;Yahoo: &lt;a href="http://developer.yahoo.com/"&gt;http://developer.yahoo.com/&lt;/a&gt;&lt;br /&gt;Google: &lt;a href="http://code.google.com/"&gt;http://code.google.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5624243837319940428-1601975638445660496?l=afanofdao.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afanofdao.blogspot.com/feeds/1601975638445660496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5624243837319940428&amp;postID=1601975638445660496' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/1601975638445660496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5624243837319940428/posts/default/1601975638445660496'/><link rel='alternate' type='text/html' href='http://afanofdao.blogspot.com/2007/09/big-three-developer-networks.html' title='The Big Three Developer Networks'/><author><name>Hooyoo</name><uri>http://www.blogger.com/profile/02207879281056447112</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
