Random Technical Thoughts

Just another WordPress.com weblog

Browser Compatibility Check for IE versions

When doing web development you rarely have a one browser to support.  Having to test with multiple browsers is hard and even more difficult with different versions of the same browsers.  Now there is a solution for different versions of IE.  I used to keep different VM’s with
different versions of IE.  That was quite a pain.

There is now a tool that will allow you to view you web pages in different versions of IE (5.5, 6, 7, and 8). 

 

November 22, 2009 Posted by chrisbarba | ASP.NET | | No Comments Yet

Compress you CSS

A great way to help with performance of your website is to compress (or minify) your CSS and javascript. Removing spaces, comments, etc will shrink the size of your files which will decrease the payload of your page.  Usually the larger your site the larger your CSS will be.

The only disadvantage to compress your CSS is maintenance (since your entire CSS file ends up on one line it’s difficult to read/maintain).My approach to this is to have 2 CSS files in your project, one compressed and the other not.  I have my code reference the compressed file.  When changes are needed I update the non-compressed file, recompress, copy and paste the results over the compressed file.

Of course you only need to compress your CSS files when you move to production.

Here is a link to site that will compress your CSS

http://www.lotterypost.com/css-compress.aspx

They have a link that will compress your javascript using YUI compressor or Microsoft Ajax Minifier.

 

November 21, 2009 Posted by chrisbarba | CSS | | No Comments Yet

Track Changes to objects in your database

Ever have the need to be able to track changes to the objects in your database? This code sample was provided by a friend, Josh Shilling.  It provides you with a change log on your database.  This will be helpful in multi developer environments when you think someone made a change to your database, but you don’t know what changes were made.

So you can run Select * from dbversion.ChangeLog to see what changes have been to your db objects.

I had a hard time getting the image of the results to show.

image

GO
/****** Object: Table [DBVersion].[ChangeLog] ******/
SET
ANSI_NULLS ON
GO
SET
QUOTED_IDENTIFIER ON
GO
SET
ANSI_PADDING ON
GO
CREATE
TABLE [DBVersion].[ChangeLog](
[LogId] [bigint] IDENTITY(1,1) NOT NULL,
[DatabaseName] [nvarchar](256) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[EventType] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[ObjectName] [varchar](256) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[ObjectType] [nvarchar](25) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[SqlCommand] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[EventDate] [datetime] NOT NULL DEFAULT (getutcdate()),
[LoginName] [nvarchar](256) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
PRIMARY
KEY NONCLUSTERED
(
[LogId] ASC
)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, _DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
)
ON [PRIMARY]
GO
SET
ANSI_PADDING OFF
--Trigger
GO
/****** Object: DdlTrigger [ddltrg_ObjectRevisionHistory] ******/
SET
ANSI_NULLS ON
GO
SET
QUOTED_IDENTIFIER ON
GO
CREATE
TRIGGER [ddltrg_ObjectRevisionHistory]
ON
database
FOR
CREATE_PROCEDURE, ALTER_PROCEDURE, DROP_PROCEDURE,
CREATE_TABLE
, ALTER_TABLE, DROP_TABLE, CREATE_FUNCTION, ALTER_FUNCTION, DROP_FUNCTION,
CREATE_INDEX
, ALTER_INDEX, DROP_INDEX, CREATE_TRIGGER, ALTER_TRIGGER, DROP_TRIGGER,
CREATE_STATISTICS
, DROP_STATISTICS, UPDATE_STATISTICS, CREATE_SCHEMA, ALTER_SCHEMA,
DROP_SCHEMA
, GRANT_DATABASE, DENY_DATABASE, REVOKE_DATABASE, CREATE_USER, ALTER_USER,
DROP_USER
, CREATE_VIEW, ALTER_VIEW, DROP_VIEW
as
BEGIN
SET NOCOUNT ON
DECLARE @data XML
SET @data = EVENTDATA()
INSERT INTO DBVersion.ChangeLog
(databasename, eventtype, objectname, objecttype, sqlcommand, loginname)
VALUES
(
@data
.value('(/EVENT_INSTANCE/DatabaseName)[1]', 'varchar(256)'),
@data
.value('(/EVENT_INSTANCE/EventType)[1]', 'varchar(50)'),
@data
.value('(/EVENT_INSTANCE/ObjectName)[1]', 'varchar(256)'),
@data
.value('(/EVENT_INSTANCE/ObjectType)[1]', 'varchar(25)'),
@data
.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'varchar(max)'),
@data
.value('(/EVENT_INSTANCE/LoginName)[1]', 'varchar(256)')
)
END
GO
SET
ANSI_NULLS OFF
GO
SET
QUOTED_IDENTIFIER OFF
GO
ENABLE
TRIGGER [ddltrg_ObjectRevisionHistory] ON DATABASE

 

November 21, 2009 Posted by chrisbarba | SQL, Uncategorized | | No Comments Yet

Visual Studio 2008 web test recorder not working on 64-bit

The load test in Visual Studio are a great help to stress/performance test you applications.  With the web test you “should” be able to record actions as you use your application.  When you add a web test IE starts and there should be recorder bar on the left.

image

When ever I created a web test I never saw the web test recorder bar show up.  I didn’t even know I was missing it.  So, I was never able to get to do anything besides record that you launched a page which helps you test page load time, but doesn’t help you when your trying to determine the response time when clicking a button on your page.

After a little research (little as in there are few articles explaining this problem), I found a blog post explaining why the web test recorder not working.  It turns out to be a 64-bit issue.  There are some registry keys that need to be deleted, so IE will rebuild what explorer bars are available.

Here is the link to the article.

http://weblogs.asp.net/jdanforth/archive/2009/09/05/visual-studio-2008-web-test-not-recording-on-64-bit-windows-7.aspx

The short version is close all IE’s, run regedit, then delete the following keys

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\
Discardable\PostSetup\Component Categories\{00021493-0000-0000-C000-000000000046}
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\
Discardable\PostSetup\Component Categories\{00021494-0000-0000-C000-000000000046}

November 21, 2009 Posted by chrisbarba | Visual Studio Testing | , , , | No Comments Yet

SharePoint error in Event Log

If you notice the following error in the event, there is a simple fix.

The Execute method of job definition Microsoft.Office.Server.Administration.ApplicationServerAdministrationServiceJob (ID c7f87cbb-e67d-44a2-9061-5321094aa81e) threw an exception. More information is included below.

 

Open Com Services and check the permissions on OSearch and IIS Admin Services.
The WPG group need to have permissions on Local Launch and Local Activate.

November 21, 2009 Posted by chrisbarba | SharePoint | | No Comments Yet

TFS 2008 get latest version automatically

When using  the Visual Studio integration for TFS 2008, you will notice that the latest version will not be retrieved when you start making changes to a file.

There is an option that you need to have an option.  To get to this option perform the following steps:

Launch Visual Studio 2008

Click Tools->Options

Expand the Source Control section

Click on Visual Studio Team Foundation Server

Ensure that the Get Latest version of item on check out is checked.

Now when you check out a file if you don’t have the latest version, it will prompt that you don’t and fetch it for you.

November 21, 2009 Posted by chrisbarba | Visual Studio | | No Comments Yet

So you want to blog on asp.net

When I first started blogging I wanted to blog on asp.net.  I have a friend who already blog’s on asp.net (David Mccollough) and I asked him what the steps were (because they are not on asp.net).

Here is what he told me.

Well it’s a multistep process.

1st you have to create an account to be able to login, which I assume you have already done.

2nd you have to read the terms of use here.  http://www.microsoft.com/info/cpyright.mspx. By the way there is nothing you have to sign here, unless they have changed it. I was kinda of confused at first, because I was looking for some way of saying that I had read them.

3rd Then you have to send an email to Joe Stagner, here is the link for that: http://www.misfitgeek.com/Email.aspx Make sure you tell him that you agree to the terms of use that you read in step 2, you also have to send him your username from step 1. I think I also included who I was, who I worked for and that I had a desire to contribute to the .NET community.

4th Before you first post you need to read this: http://www.misfitgeek.com/WeblogsaspnetNewBloggerFeedGrowth.aspx

Here is the original link to his blog post that outlines the process: http://www.misfitgeek.com/2008/06/16/JoinUsWithABlogOnWeblogsaspnet.aspx

November 21, 2009 Posted by chrisbarba | Uncategorized | | No Comments Yet

SharePoint Error tab in navigation

If you notice your navigation has gone away and you have a tab called “Error:”, you have a problem.  You may also notice that authenticated users can’t navigate your site.

This is caused when you have setup the Site Collection output cache with “Page Layouts can use a different page output cache profile”.

Here is an another article explaining this problem in more detail.

http://www.sharepoint-tips.com/2007/09/wrokaround-error-in-navigation-when.html

November 21, 2009 Posted by chrisbarba | SharePoint | | No Comments Yet

What does that PerformancePoint error code mean

When you validating your label tables in PerformanePoint, any errors are reported by  their error codes (ex 930).

If you would like a little more detail about what the error codes mean, then check out the dbo.SystemErrorDetails table.

It contains a list of error codes and descriptions. 

This was a big help for me to determine what I doing wrong when trying to validate my data.

November 21, 2009 Posted by chrisbarba | PeformancePoint Server 2007 | | No Comments Yet

SSIS Error using a stored proc as source

SSIS is a great tool to move data around.  Sometimes it’s easier to use a stored proc to pull together some data before you do stuff with it.

To use a stored procedure you can use an OLE DB source (in a Data Flow task) SQL command.

Works great, but if it doesn’t and you get the error code 0xC02092B4, you will have to add to your stored procedure.

Just add the following 2 lines to the top of your stored procedure:

SET NOCOUNT ON
SET FMTONLY OFF

This will clear up the metadata issues with SSIS trying to understand what your stored procedures outputs.

November 17, 2009 Posted by chrisbarba | SQL, SSIS | | No Comments Yet