Archive for Software Development
Find a String Between 2 Strings
Posted by: | CommentsHere’s a way to return a substring of string that is between 2 strings in C#. There are other options for doing this, such as RegEx, but this is clean and simple.
// This search returns the substring between two strings, so // the first index is moved to the character just after the first string. int first = str.IndexOf("$string1$") + "$string1$".Length; int last = str.LastIndexOf("$string2$"); string str2 = str.Substring(first, last - first);
Restore SQL Database
Posted by: | CommentsRestoring a SQL Server database from a backup is easy to accomplish in the SQL Server IDE. Well, sometimes. In the real world, I often need to restore a development database, but the restore fails because I cannot gain exclusive access to the database. Some developers will detach the database and reattach it to grab exclusive access. If there are processes running frequently against the database, that may not work. Neither will killing all connections always work. The solution I’ve found is a short snippet of SQL to grab exclusive access, do the restore and then restore multi-user access. It looks like this:
USE master — Must be connected to a different database
-- Get exclusive access ALTER DATABASE XXXXXX_Stage SET SINGLE_USER WITH ROLLBACK IMMEDIATE; -- Restore from disk -- Note WITH REPLACE http://msdn.microsoft.com/en-us/library/ms178615.aspx RESTORE DATABASE XXXXXX_Stage FROM DISK = 'F:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\XXXXXX_Stage _20100505.bak' WITH REPLACE -- Restore multi user access ALTER DATABASE XXXXXX_Stage SET MULTI_USER WITH ROLLBACK IMMEDIATE;
Note the WITH ROLLBACK clauses. You should take a production database down and make sure all transactions have completed. Then do a restore through the IDE. If you use the code above, you may lose some transactions or logs. This usually doesn’t matter in a test environment.
Have fun!
Technorati Tags: SQL Server,SQL,Code Sample,Database,Server,backup
Snippet Designed for VS 2008 and VS 2010
Posted by: | CommentsI love code snippets. Way back in the early VB days, I created add-ins for the IDE that allowed me to create and save an array of short snippets of code and automatically insert them into the code window. I like to use snippets for things that I either don’t use often enough to remember, or to quickly enter templates for things I use a lot to save time. Visual Studio .Net has a Snippet Manager and lets you create snippets in XML, but there is no built-in editor. There are a couple of editors available, some stand-alone and at least one called Snippet Designer that is integrated into the IDE. Read More→
Create Singleton in C#
Posted by: | CommentsOne of the most basic and most useful object patterns is the Singleton design pattern. A Singleton is a class of which there will only be one instance created at any time. All users of the Singleton class will all use the same instance. This is great for a wide range of applications such as cached values and lookups or utilities that execute quickly. The Design Patterns book by Gamma et al . describes the structure of a basic Singleton. We’ll describe how to create one in C#.
Title Case in C#
Posted by: | CommentsHere a quick snippet to convert text to Title Case in C# that uses the TextInfo class. Note that strings with all caps will not be converted, so convert to lower case first.
// Defines the string with mixed casing.
string myString = "this iS a StrIng with MIXED CaSe";
// Create a TextInfo based on the "en-US" culture.
TextInfo tInfo = new CultureInfo("en-US", false).TextInfo;
// Changes a string to titlecase.
// Note the ToLower(), needed to convert words in all caps like MIXED
Console.WriteLine("\"{0}\" to titlecase: {1}", myString, tInfo.ToTitleCase(myString.ToLower()));
//Result: This Is A String With Mixed Case
Console.ReadLine();
// Defines the string with mixed casing.
string myString = “this iS a StrIng with MIXED CaSe”;
// Create a TextInfo based on the “en-US” culture.
TextInfo tInfo = new CultureInfo(“en-US”, false).TextInfo;
// Changes a string to titlecase.
// Note the ToLower(), needed to convert words in all caps like MIXED
Console.WriteLine(“\”{0}\” to titlecase: {1}”, myString, tInfo.ToTitleCase(myString.ToLower()));
//Result: This Is A String With Mixed Case
Console.ReadLine();
What is an open web?
Posted by: | CommentsThe following challenge was on my Firefox homepage today:
Creating an open web is at the heart of the Mozilla project. And you’re a part of that. As one of thousands of people in the project, you have worked tirelessly to keep the Internet open, participatory and full of life.
The question is: why? Why do you participate? Why does the open web matter so much to you?
As we work to grow the Mozilla community, we want to explain what you’re feeling to everyone — your neighbours, your co-workers, your grandparents. We want them to understand the open web.
I just shared my definition of what an Open Web means to me. Why don’t you share yours?
http://mozilla.org/open
#mozopen
Click read more to see my response
Move User Profile to 2nd Drive in Win 7
Posted by: | CommentsWell, this was an interesting foray into Windows 7. I just purchased a new laptop and didn’t like the way the hard drive was partitioned. Why partition an NTFS drive at all? The manufacturer had created an 80 GB primary partition with a 420 GB extended partition. Of course the OS and user profiles are stored on the relatively small primary partition. This I did not like. I put a lot of music on my laptop, along with my development projects and multimedia files. 80 GB just won’t cut it. I could have purchased 3rd party software to repartition the drives (Win 7’s built in tool won’t do the job here) but I didn’t want to do that. The solution? Move the files to the d: drive and create a symbolic (hard) link to new location.
Java vs. .Net – Another Blast From the Past
Posted by: | CommentsHere’s another ancient article I wrote that I recently reread. It is interesting to see what has changed since this was first published on SearchSOA almost 8 years ago (see link at end of article). There are also many things that have not changed in those years. Companies continue to be faced with the question of what technology platform to choose for their Line of Business (LOB) applications. Often decisions are made based on criteria that have not been properly matched to business objectives. Sometimes the result is that the new technology platform is abandoned in the not so distant future, with a corresponding loss of investment dollars.
With a Just Enough Technology approach, a company evaluates technology against its core problem or objectives. I work with business and technology leaders within a company to define their true objectives and then weigh the technology decisions with their business objectives as the main criteria. Read through this article on choosing between the Java and Microsoft platforms. Both technologies have evolved quite a bit since this was first published, but some of the core arguments remain to this day.
Windows 7 God Mode
Posted by: | CommentsJust found a little tip / secret for Windows 7 that’s been making the rounds on the Internet. It enables “GodMode” – a term created by the Windows 7 development team. This secret “mode” provides a single place to access all the important Windows settings without having to drill down through a multitude of menus and folders in Control Panel. This tip is one of my favorites.
Here’s how to do it:
- Create a new folder.
- Rename the folder to GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}(note that you can change the “GodMode” text, but the following period and code number are essential).
- The folder icon will change to — double click it to show the GodMode window.

Why Just Enough Technology?
Posted by: | CommentsJust Enough Technology means providing the right technology to solve the right problem at the right cost. Not too much, not too little. The objectives of the business must be prioritized and kept in mind from concept to design to implementation to maintenance. Every decision made along the way must map to a business objective. Every software requirement must map to a business objective. This is the foundation of Just Enough Technology – clear and concise business objectives. Those objectives drive the requirements, and the requirements drive the design and implementation.
This is how I ended a short article about Just Enough Technology a while back. I’ve reproduced here for your reading pleasure. Differing opinions are invited

