Windows Explorer – add Open a Command Line Here to your right click menu

http://www.petri.co.il/add_command_prompt_here_shortcut_to_windows_explorer.htm has details of how to do this 5 different ways.
Unfortunately there’s a small error in the one about editing the registry, although it might be the simplest:

  1. Copy and paste these lines into a CommandLineHere.reg file on your desktop
  2. Double-Click it.
  3. Say yes.
  4. Now right-click on a Folder and voila.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\Command Line]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\Command Line\command]
@="cmd.exe /k pushd %1"
Posted in Computers | Tagged | Leave a comment

Oops, I broke Windows explorer

In the course of trying out ways of adding a command line to the windows explorer right click menu, I broke it. Every time I opened a new window, I got windows search instead.

This handy post http://www.howtogeek.com/howto/windows/how-to-fix-double-click-always-opens-search-in-windows-explorer/ was my lifeline. You do have to be handy with windows registry though.

Posted in Computers | Tagged | Leave a comment

Web Forms – Mocking HttpSession

With thanks to http://stackoverflow.com/users/603670/ben-barreth
at http://stackoverflow.com/questions/1981426/how-do-i-mock-fake-the-session-object-in-asp-net-web-forms

[SetUp]
public void SetUpHttpSessionMock()
{
HttpWorkerRequest _wr = new SimpleWorkerRequest("/dummyWorkerRequest", @"c:\inetpub\wwwroot\dummy", "default.aspx", null, new StringWriter());
HttpContext.Current = new HttpContext(_wr);
HttpSessionStateContainer sessionContainer = new HttpSessionStateContainer("id", new SessionStateItemCollection(), new HttpStaticObjectsCollection(), 10, true, HttpCookieMode.AutoDetect, SessionStateMode.InProc, false);
SessionStateUtility.AddHttpSessionStateToContext(HttpContext.Current, sessionContainer);
}
Posted in Code | Tagged , , , , | Leave a comment

Refactoring a static class with hard-coded dependencies for testability

is not that hard. You can add a factory method to the static class to create the dependency, and change the factory method at test-time.
Here’s an example:

public static class WithDependencies
{
	public static string MethodWithDependencies()
	{
		using (var thing = new HardCodedThing())
		{
			return DoSomething();
		}
	}
}

which can be turned into:

public static class WithDependencies
{
    public static Func<HardCodedThing> CreateHardCodedThing = () => new HardCodedThing();

	public static void MethodWithDependencies()
	{
		using (var thing = CreateHardCodedThing())
		{
			DoSomething();
		}
	}
}

With this code in your test:

[TestFixture]
public class WhenDoingSomething
{
	private Mock<HardCodedThing> mockThing;

	[SetUp]
	public void SetUpMockThing()
	{
		// mockThing.Setup( ...  ) ... etc ...
	}

	public void Given_hardcodedthing_does_X_should_get_Y()
	{
		//Arrange
		WithDependencies.CreateHardCodedThing = () => mockThing.Object;
		//Act
		var result= WithDependencies.MethodWithDependencies();
		//Assert
		Assert.AreEqual("Y", result);
	}
}
Posted in Code | Tagged , , , , | Leave a comment

Code Kata One as Code – Supermarket Pricing

The code kata on supermarket pricing is one we wanted to do because we have some interest in pricing rules. However, it’s written as a design exercise (which is a good thing), whereas we still wanted to do some coding.
So :

The Checkout Pricing Kata

Some things in supermarkets have simple prices: this can of beans costs £0.20. Other things have more complex prices. For example:
• three for a £ (so what’s the price if I buy 4, or 5?)
• £1.99/pound (so what does 4 ounces cost?)
• buy two, get one free (so does the third item have a price?)
Here’s an example stock list with pricing and rules

Stock Pricing
Baked Beans: 20p per can, with a three-for-two offer.
Bananas: £1 per Kg
Bagged Bananas: £1.20 per bag
Beer: £1.50 per bottle, with a three-for-£4 offer
Bagels: £3 per dozen or £2.00 per half-dozen or 50p each
Kitchen Roll: 50p each
Beer ‘n’ Beans Cleanup Offer: Buy 3 cans of beans, 3 bottles of beer and get one free kitchen roll (not combinable with any other offer).
Beans ‘n’ Bagel Breakfast Offer: Get 6 cans of beans and a dozen bagels for £3.50 (not combinable with any other offer).

Checkout Pricing

Write something which, given a list of items purchased, will print out a priced and itemised receipt, with weights shown where relevant and all discount rules correctly applied. The customer should not be able to get a better price by re-organising or splitting up the shopping basket. The receipt should help the uncertain customer to see this.
In TDD style, do it by writing code to pass tests for a list of increasingly complex requirements.

Example shopping baskets

• 1 can of beans, and 1 bottle of beer
• 6 can of beans, and 3 bottles of beer
• 5 cans of beans and 1.4 kg of loose bananas
• 3kg of bananas and 7 bagels
• 4 cans of beans, 3 bottles of beer and a kitchen roll
• 10 cans of beans, 15 bagels, 4 bottles of beer, 2 kitchen rolls, 3.5 kg loose plus 1 bag of bananas.

I leave to the retail stategists amongst you the question, “Should it always be impossible for the customer to get a cheaper price by adding something to their basket?”

Posted in Other | Leave a comment

iPad printing problems

iPad printing is unreasonably difficult. It all works fine no doubt if you go out and buy a shiny new AirPrint enabled printer. Otherwise the simplest/cheapest thing I’ve found is:

I’ve had network problems too, similar to the problems with iTunes. Replacing my router was the best solution I had for that. If your router is old, or a very cheap broadband freebie, you may need to replace it.

Posted in Other | Leave a comment

Losing Internet Connection When You Plug In An Ethernet Cable?

How to keep your wireless internet connection working when you also have a wired connection

You know the scenario. There you are with a wireless internet connection, you want to configure a router, you plug it into your ethernet port because you still want to keep your internet connection alive and ping! your internet connection has gone.

Solution

Open your network control panel to the settings for your wired ethernet connection. Change the IP configuration from DHCP to Manual. Remove any router or gateway settings. Apply.
You should now find that your computer routes to the internet successfully over your wireless connection instead of failing by trying to reach the internet over your wired connection.

Posted in Computers | 1 Comment

Can’t Find Groups Management On Windows 7 Home and Vista Home Editions

How to Manage Local Groups on Windows Home

Ever helpful, Microsoft provides a GUI interface for managing users and groups on Windows. Unless you have a Vista home edition or a Windows 7 home edition, in which case you can’t find the interface to manage groups because it isn’t there. You can however manage groups very easily from the command line.

Manage Windows Groups from the Command Line

Simples. Find Command Line in your Start Menu Programs so that you can right-click on it and choose ‘Run As Administrator’
Type:

net localgroup /?
net localgroup MyNewGroupName /Add
net localgroup MyNewGroupName MyFirstUserName /Add
net localgroup MyNewGroupName MySecondUserName /Add
... and so on

And voila. You can now set security on folders in explorer, and use your new group to grant access.
If your Windows permissions are not working after you’ve granted new permissions, the usual trick is to lock and unlock your session (Start Menu — The Power/LogOff/Hibernate/Lock/Sleep button). Failing that, log out and back in again.

Net Localgroup Reference

Is here: http://technet.microsoft.com/en-us/library/cc725622(WS.10).aspx

Posted in Computers | Tagged , | Leave a comment

iTunes Home Sharing Not Working

There’s a handful of reasons that can cause this. The probably definitive list can be found by combing the apple tech support discussion thread for it at https://discussions.apple.com/thread/2586385?start=105&tstart=0
I recommend you start at the end of the thread where you’ll find the answers rather than at the beginning of the thread where’ll you find the kind of posts that people write when they’re tearing their hair out because their shiny expensive toy DOESN’T WORK.
The one that worked for me was:

  • Restart the windows Bonjour service. If you don’t know how to do that, just restart your computer.
  • The other popular one is: “Sorry bud, you need a new router.” Or if you’re ‘lucky’ just a firmware update (Have you ever tried updating your router firmware? I did it once). You can’t win then all.
Posted in Computers | Tagged , , , | Leave a comment

NUnit Constraints Example – a Simple Custom Constraint

Are you short of an NUnit Assertion? You have some code for a test, but you really want it in NUnit constraint form so you can use it like any other test. They are easy to write. Here’s an example which wraps a function you already wrote as a Constraint:

public class EqualsByValueConstraint : Constraint
{
	private readonly object expected;
	private CompareResult compareResult;

	public EqualsByValueConstraint(object expected)
	{
		this.expected = expected;
	}

	public override bool Matches(object actual)
	{
		this.actual = actual;
		compareResult = EqualsByValueOrFailureReason(actual, expected);
		return compareResult;
	}

	public override void WriteDescriptionTo(MessageWriter writer)
	{
		writer.WriteExpectedValue(this.expected);
	}
	public override void WriteActualValueTo(MessageWriter writer)
	{
		base.WriteActualValueTo(writer);
		writer.WriteLine();
		writer.WriteMessageLine("Compare Result " + compareResult);
	}
}
public class CompareResult
{
	public bool IsPass {get;set;}
	public string FailureDescription {get; set;}
}

If your function is just a boolean, then you could remove the CompareResult class. The drawback being that your failure message will only say ‘failed’ rather than give an explanation of the failure. In that case, you might just as well not use the constraint and use the Assert.That(bool, message) overload.

Posted in Code | Tagged , , , , | Leave a comment