Friday, May 30, 2008

TFS 2008 Installation - IIS Settings

This post will look into TFS 2008 installation on Windows Server 2008 where IIS 6.0 has to play a role too. If you are installing TFS 2008 on Windows Server 2008, WSS 3.0, SQL Server 2008 you would need to have IIS 6.0 compatibility mode on as SQl Server 2007 doesnt know about IIS 7.0 and thinks that no IIS is installed on system. This will cause the TFS installation stop at system compatibility check.

Go to Server Manager -> Server Roles -> Add Role -> Select Web Server (IIS 7.0) there. This will install Web server.
Now go to Server Manager -> Roles -> WEb Server -> Add Role Features -> Select IIS 6.0 Compatibilty option and other IIS 6.0 related options from the list.

The figure below shows Server Explorer on Windows Server 2008 with IIS 6.0 enabled as part of Role Services.



Once you are done with the changes, Save them and your SQL Server will now be able to find IIS 6.0 installed on the system. Run the TFS 2008 set up and see if it passes the system compatibility check.

Hope this will help you in case you find installation issues with TFS 2008 on WS 2008, SQL Server 2005, Windows Sharepoint Server 3.0.

bye for now.
visit my team @ http://global.rampgroup.com/

Tuesday, May 20, 2008

3D Computer and 3D Experience - my random thoughts

3D Experience on your Desktop, Can we make a 3D exhibiting device using software changes or even by using completely different hardware or devices :)

In this post I will try to put my views, ideas, random thoughts towards having a 3D experience on windows desktop as well as for some apps.

Can’t we treat our desktop as on of the 6 faces of a cube which can help us in taking the current desktop to 6 more dimensions you can say with giving 3D like experience in 2D world itself. A cursor drag at the corners of desktop would cause the other face to slide in or clicking on a arrow button at the corners would do the same or clicking on 2D matrix views of complete cube will take you the particular face of cube which was clicked by a user on the 2D matrix. The hover effect on the 2D matrix will enable the user to view an enlarged image of a particular face of cube. Now am I asking for a windows desktop code to change :) yes and no, yes to get the experience from the base (Windows), No – you can enable a theme which would do things for you, here you would need to design the other 5 faces as windows just give you one (which you will any how override with your theme.

We can talk of having a 3D experience on your computer screen itself with the help of specially designed monitors where you can use a glass to get the 3D experience of desktop and can switch to normal 2D experience. The mixed mode of this experience would give a user an extra dimension of digital lifestyle experience.

Ok, let’s look at this thought and try to think and put your comments. What could be the shape of monitor, surface if you want a real 3D experience and which technology would you go with? CRT – with electron not hitting the screen rather hitting some gas like helium or other which or some sort of laser experience to give a real 3D experience using an open air tool or a closed window box. I can think of spherical shape would be good to have length; width; height components for any object and would help you to take a look of that object from rear and sides tooJ. This also needs to have great calculations of for proper ratio for relative distance of things as well as the best of graphics, Comp Vision and virtual reality. Let’s see if people are looking into these.

Hologram, looks different from different angles giving the impression of 3D and well orientation change. I know that research is going on in the direction of using Hologram for achieving 3D Computer at all. If we can dynamically put objects on a hologram surface we would certainly be able to get 3D experience going on. This needs a closer look into hologram image and impressions.

Put in your thoughts and comments and lets try to get something useful out of this post :)

Bye for now.
my team @ http://india.rampgroup.com/

Monday, May 5, 2008

Running an exe or program as SQL Server Job

This post will look into the scenario where we have some program\exe as part of some web project or any other project related to DB (even if it is not related to DB then also you can schedule it) and we want it to run recurring (frequency may vary). This can be achieved by SQL Server Agent which is a Windows service to run scheduled adminstrative tasks or commonly know as jobs (These are SQL jobs, you can schedule windows jobs too). SQL Server agent uses SQL Server t ostore job information. A job consists of steps which can be set using steps wizard during job scheduling. So how do we schedule a job for an exe to run every night 12 AM.

Job Scheduling process:

1) Connect to the SQL Server where you want to schedule your job.

2) Check if SQL Server Agent (you can find it at the bottom most entity) is running, if not run it and set it to run automatic.

3) Right Click SQL Server Agent. Select New -> Job. This will open a wizard to schedule a new job.

4) Select Steps from options given on the left side of wizard. This is the main place to set your exe\program as a running step. Give some name to this step, Select Operating System (cmd) for the Type and give the full path of exe in Text box for Command. Below is a sample step set up for running test.exe.

5) Now Select the job schedules option from left to set the frequency. Give some name to schedule, selection other options as shown in the figure below. This will set the job to run daily at 12 AM.



6) If you want you can set optional Alerts and notification (using SQL notification services) to send out email in case any things fails, succeeds or at any specific event.



7) The targets option set the DB to look at or put data in. It should commonly be the localhost but you can set a remote SQL Server too here in case you have some DB interaction but then make sure that the account which you are using should have access to the remote server.

Your job is now scheduled to run everyday test.exe. just to make sure that everything run properly go to Agent -> Jobs -> NEW_JOB (the one you just created), right click NEW_JOB and select "start job at step". This will run the job instantly for you and show the status if the job run successfully or failed. So now you finally done.

Do you know where the job information is stored. Its stored in the same SQL Server's system databases. You can find it under system databases -> msdb -> tables -> system tables -> sysjobs and related tables. All the information about your job is stored in this and other job related tables.

You can also quickly look into job activity monitor to see the current status of all the jobs. This helps in findind any issues with the jobs and correcting, if needed.

Hope this will help you in setting a SQL job for running an exe or program continuously.

bye for now.
my team @ http://india.rampgroup.com

Friday, May 2, 2008

TFS 2008 (Team Foundation Server) Set up and Usage

A few days before I started looking into TFS and tried to set it up for out project development environment for upcoming projects and to get a real testing of the product as well as how well it fits into our model\mode of development. Setting up itself was a different experience altogether. We were finding issues, searching for solutions, trying certain things by our own and eventually solved the issues and succeededd in installing TFS Server 2008.

The installation platform includes Windows Server 2008, TFS 2008, VS 2008, SQL Server 2005 with SP2 and Sharepoint Services 3.0. Windows Server 2008, TFS 2008, VS 2008, SQL Server 2005 were present on one system while the SharePoint Services 3.0 installed on other system such that Team portal for any Team project would be hosted on one system (remote system) and Reports would be published on another (host system). To configure remote system having Sharepoint server you would need to install WSS Extensions on it. You would need to run the TFS Server set up on remote machine and choose the last option (Install WSS Extensions).

TFS setup includes Server setup, TFS Server proxy, TFS Build, Team Explorer (or client setup) and WSS Extensions. For installation on Windows Server 2008 you would need to enable IIS 6.0 compatibility. Go to Server Manager and then Roles. Click add roles and select Web Server (IIS), locate IIS 6.0 from the list and select all the options. Continue and wizard will install IIS 6.0 compatibility components. I will write another post explaininig installation issues we faced and there solutions. There is one really cool feature of this setup which saves a lot of time during installation failure scenario. Before installing the components it looks for potential installation risks and compatibily check. It gives complete error message alerting you about what might cause an installation failure so that it can fixed before proceeding. One the check passes you are sure that installation success ratio would be very high.

TFS or Team Foundation Server serves as an integrated solution for a product development team including Bug Management System, Build Management System, Source Code Control and a Common Team Portal for Overall project management.

Once the TFS Server is setup and a team project has been created then you would need to create a solution\project and add that to source control.

Team needs to install TFS Client which comes as part of TFS Setup (just install Team Explorer which is TFS Client). Once Team Explorer is installed on your system VS will start showing Team Project in new\open project option. Open a Team project by connecting to your TFS Server and then you would be able to see the Team project. For the first time users, you would need to first add TFS Server by clicking Team project and then in the wizard click Add Server. In Visual Studio IDE on the right end you will now see Team Explorer window along with Solution explorer and other windows.

Go to Team Explorer click on the Team project you are going to work on (You will presented with the Team projects where you have been given access by the Team Project Administrators). You would need to check if you have permision to view team portal and report site (right click team project name and reports folder for this). You should be able to view both of these. Team Site can typically be found at http://[WSS_Server]/Sites/[TeamProject/ and report site at http://[Report_Server]/Reports/Pages/Folder.aspx?ItemPath=/[Team_Project]. If not, check with project admins for giving you permission in reports server and share point team site both. There are different roles which decide what all you can do on these portals.

Second task would be to add a solution from source control.

1) Check that your Source Control Provider is TFS.
2) If not, then go to Tools -> Options -> Source Control and change current value to TFS on the right pane.
3) Once you have TFS selected as your Source Control provider go to File Menu -> Source Control -> Open from Source Control and then you would be shown the projects in Source Control.
4) Select the one you are going to work on and then select a local directory. All files will be copied to your local directory and then you can open the solution from your local directory. You will be able to see the same in solution explorer.
5) Team explorer will help you with overall project management, your work items and tasks, build requests and check-in controls where as Solution explorer will help you with working on the project or project development.

Please try to play both with Team Explorer and Solution here and see what new options you find with respect to Source Control and Team portal. I have found some issues and scope of improvement regarding source control which I will be mentioning in one of my future blogs. Till then keep testing TFS, Team Explorer, Build, Test support and Source Control :)

bye for now.
my team @ http://india.rampgroup.com

Thursday, May 1, 2008

Search Engine Optimization (SEO) enabled development (tips and tricks)

So what is SEO aka Search Engine Optimization all about. To find the answer lets first look into an example so that we know why it is needed and what good it can do for you and your product\website. Suppose you launch a website for your product or any service what would you be aiming at. Surely about more views, more number of people clicking on your website or coming from different pages etc. but for this first of all people should know that there exists a product before they will go for it. Now to achieve this my product should come preferrable on the first page in Google search for people looking for similar products or services i.e. I would need a good ranking in Google search where most of things revolve around keywords, their context and how relevant your product is for any given search. Hence it becomes very necessary for a website to serve these requirements in order to get a good ranking or better indexing of your pages by search bots.

Bellow are some of the good practices we can do while the product\website development phase so that our site is SEO enabled along with first deployment itself.

Keywords Usage and How:
1) Keywords in Domain Name\URLs take priority in Ranking. This is very important. Here you can use domain parking so that you have more domains for you with relevant keywords in them and redirecting or pointing to you base website.

2) Have Keywords in Title Tag (Keyword in Title tag - close to beginning Title tag 10 - 60 characters, no special characters.)

3) Description Meta Tag (Shows theme - less than 200 chars. Google no longer seems to rely upon this tag, but will often use it. )

4) Keywords Meta Tag (Shows theme - less than 10 words. Every word in this tag MUST appear somewhere in the body text. If not, it can be penalized for irrelevance. No single word should appear more than twice. If not, it may be considered spam.)

5) Use Keywords for links. Try to make use relevant text for anchor texts.

6) All internal links should be working. Check using a link checker ( eg. http://validator.w3.org/checklink, Google for more)

7) Structure\Architecture. Pages should not be too deep. Try to have everything at max at a depth level of 3.

This means we should use the meta tags in our project as well as use relevant keywords such that they are also present in body text. This help in gaining priority for your keywords.

Now we will look upon a project structure and what all extra files we need for SEO and how the body and main page should be developed:

1) Use H1 tag for Header text as this gets higher priority. Use the h* tags for relevant titles\subtitles.

2) Always use the ALT tags and put relevant information there. Do not use alt text like "Fig1" etc. Search engines can not read your images and hence alt becomes so imp to get better indexed pages.

3) Use relevant page names, folder names etc. so that the path includes something meaningful and releavant to the product or its action.

4) Use meta tags in your master page so that it is present with full website. Use them under the "head" tag. Some example are:


5) Seperate Java Script Code with the aspx files and put them under a common\default js file.

6) Add a Sitemap.xml file and put it under the root folder. Put the site links under url tags (Very important). You can get the sitemap.xml or txt file generated by several online tools like Google Webmasters tool (https://www.google.com/webmasters/tools/docs/en/sitemap-generator.html) or can search google for other.

7) Add a robots.txt file in the root folder. A sample file looks like:
# robots.txt for [sitename]
# everything is allowed to be indexed by search bots
User-agent: *
Disallow:
Sitemap: http://www.yoursite.com/sitemap.xml

There are again several online tools which can generate robots.txt for you. This file is required by the search bots to see what to index and what NOT to index.

8) Add autodiscover/autodiscover.xml file as many search bots look for autodiscover.xml file. Not having it would result into 404. If you have autodiscover already setup then no issues else there is way to just remove the 404 error by putting a blank xml file under [Root_Folder]\autodiscover\autodiscover.xml

9) Use Error Pages for Generic Error\Specific error. Make changes in Web.config file and add the corresponding files in root folder. Put error pages for 404, 403, 500, 502 etc. Put the below text after "system.web" tag:



10) Put info.txt file in your root folder which contains basic information about your website. This helps the bots to know about your website. A sample info.txt file looks like:
#This text file includes very basic information about your website. Like :
url: http://test_url.com
site_owner:
address:
city:
state:
country:
postal_code:
phone_number:
display_email:
site_name:
Title:
site_description:

11) Use of urllist.txt file. This file contains the list of all the pages in your website. Google doesnt use this file but yahoo does you this so it would be a good practice to have even this in your root folder. you can use several online tool to generate txt sitemap for your website and use it as urllist.txt. One such tool can be found at http://www.akamarketing.com/text-sitemap-maker/

12) Take use of Google analytics tool which gives you website stats about the page visits, crawl stats and lot of useful information looking at which you can make necessary changes in your site such that it is better indexed and people are finding what they are looking for.

13) Use Google Webmaster tools where you can put your sitemap.xml which it will use to index your website. This along with the above techniques will help you in a better response. Its also a good practice to look at your sites Page Rank from availabe tools.

14) Try the leverage already good ranked websites for linking you. You can do this by using some of the blogs sites by blogging about you and linking your website there, using famous review websites as people go for reviews too, use the networking websites by making community etc and being a bit more active about your product. There are several other ways :) to let many people know that your product exists. Use them as it is very important for any website to be known.

So if you are working on a new project or existing one you can use the above mentioned techniques to get your website better indexed.

In one line - "People will buy a product only if it is there"

bye for now
my team @ http://india.rampgroup.com