Browser toolbars for web development

I’ve been doing a lot of HTML and CSS recently, and checking that pages appear and behave the same in different browsers can be a bit of a pain. Fortunatley, there are several toolbars that can be used to make this process easier.

Internet Explorer

  • Developer Toolbar
    This is a toolbar for Internet Explorer versions 6 and 7 that adds a DOM and CSS explorer and editor, as well as tools for viewing pages structures and various type of validation.

  • Web Development Helper
    This is similar to the Developer Toolbar above, but geared more for ASP.Net. It features several browsers for view state, caches, header and response details and call stacks, as well as a DOM explorer.

Firefox

  • Firebug (also here)
    This is an extension that adds a CSS, HTML, Javascript and DOM monitor and editor to the browser, as well as a request monitor and a element inspector.

  • Web Developer Toolbar (also here)
    This is a toolbar that adds lots of utilities and tools, including validation and page information and outlining.

  • HTML Validator (also here)
    This is an extension that adds an HTML validator to the browser that validates pages in real time and displays warnings and errors in the page status bar.

  • Dust-Me Selectors
    This is an extension that enables you to inspect CSS style sheets for selectors and styles that are loaded but not used when browsing pages. Useful for consolidating style sheets after a site redesign. NOTE: this didn’t install properly using the xpi file, but worked following a manual install.

  • Modify Headers (also here)
    This is an extension that enables the viewing and modification of HTTP headers.

  • User Agent Switcher (also here)
    This is an extension that allows the configuration of custom user-agent strings and enables switching them whilst browsing.

  • IE Tab (also here)
    This is an extension that allows the viewing of pages using the Internet Explorer rendering engine, but within the Firefox application.

  • IE View
    This extension is similar to the IE Tab extension above, but will open Internet Explorer as a separate window instead of embedding it inside FireFox.

  • IE View Lite (also here)
    This extension is a rewrite of the IE View extension above, but written to be more compact and lightweight.

  • Opera View (also here)
    This extension is similar to the IE View extension above, but will open pages in Opera instead of Internet Explorer.

Opera

  • Web Development Toolbar & Menu
    This toolbar and menu set add a set of menus and a toolbar. The menus contain quick links directlry to HTML, CSS, DOM, JS and Unicode reference information. The toolbar adds tools for inspecting page contents, validation, page source viewers and form manipulation.

  • Opera Developer Console
    This tool adds a button onto a toolbar that when clicked opens a windows containing a DOM, JS, CSS and HTTP browser for the current page.


Fixing database logins after a restore

For several years now I’ve been moving development databases between SQL Servers using backup and restore. When you restore the database on the target server, the logins for the database are invariably broken with the database user having an empty login name, meaning that they cannot log in to the database. My usual fix is to delete the database user and re-add it. Paul Hayman however pointed out a useful stored procedure to fix broken logins:

sp_change_users_login 'Auto_Fix', 'username'

where username is the name of the account to fix.

The Auto_Fix option will attempt to match the broken login with an existing user with the same name.

More information on this can be found in the MSDN documentation. Specific things to note are that it only works with SQL Server and not Windows logins, and that you must be a member of the sysadmin fixed server role for it to work.


Running the OUTPUT clause from C#

SQL Server 2005 introduced a new feature called the output clause. This enables INSERT, UPDATE and DELETE queries to be run, with the original information which has been changed being returned. This is particularly useful if you want to run a query and know what has been changed by it by returning the identites of the modified rows.

The full documentation for the output clause can be found in SQL Server 2005 Books Online.

In trying to use this feature, I could get it to work in a query window, but when trying it using C# and ADO, it was not obvious how to execute the query and return the results because the ExecuteNonQuery() method of SqlCommand only returns the count of the number of rows that have been updated. After a bit of unsuccessful searching, I came across a post by Keyvan Nayyeri with something that gave me an idea:

OUTPUT clause works like a SELECT statement but its usage differs in INSERT, UPDATE and DELETE commands

Switching my code around to run the update query using the ExecuteReader() method of SqlCommand as would be used for a SELECT query proved to be fruitful, enabling the returned result set to be read.


Windows and .Net framework default versions

Aaron Stebner has compiled a list of which version of the .Net Framework is included in which version of Windows by default:

Operating System Framework Version Included As
Windows XP Home/Professional SP1 .NET Framework 1.0 + SP2 MSI Based Installer
Windows XP Home/Professional SP2 .NET Framework 1.1 + SP1 MSI Based Installer
Windows XP Media Center Edition .NET Framework 1.0 + SP2 OS Component
Windows XP Tablet PC Edition .NET Framework 1.0 + SP2 OS Component
Windows Server 2003 (all editions) .NET Framework 1.1 OS Component
Windows Server 2003 R2 .NET Framework 2.0 MSI Based Installer*
Windows Vista (all editions) .NET Framework 2.0 & 3.0 OS Component

* although it appears as an OS component, it is actually just an MSI based installer.

The MSI based installers can be used to install or uninstall the .Net Framework from the OS, enabling it to be removed completely if needed.

Very useful if you are targeting specific platforms with your .Net applications.


AssemblyFileVersion compiler warning

If you are using the AssemblyFileVersion attribute to mark your compiled assemblies with specific Win32 file version numbers, you may get a compiler warning with certain revision numbers. The compiler warning looks like this:

warning CS1607: Assembly generation -- The version '2.0.0.070105' specified for the 'file version' is not in the normal 'major.minor.build.revision' format.

This warning is documented as occurring when the version string is not in the major.minor.build.revision format, but does not explain why it happens for the example above.

Frans Bouma updated his existing post with the reason why. The revision part of the version number must not exceed 65535 (ie. a 16-bit number). If it does, the compiler generates the warning. The MSBuild Team posted about the same thing, but also provided the fact that it is the underlying operating system that imposes this limit.