|
var Enum_Colors =
{
Red:0,
Blue:1,
Green:2,
Yellow:3
};
function DoStuff()
{
TestEnum(Enum_Colors.Green);
}
function DoError()
{
TestEnum(Enum_Colors.Unknown); //Bad
}
function TestEnum(objColorEnum)
{
var str;
switch(objColorEnum)
{
case Enum_Colors.Red:
str = "red";
break;
case Enum_Colors.Blue:
str = "blue";
break;
case Enum_Colors.Green:
str = "green";
break;
case Enum_Colors.Yellow:
str = "yellow";
break;
default:
str = "none";
break;
}
alert("The enum passed in is: " + str);
}
Thanks to VS2008, you at least get JS intellisence on the "Enum_Colors" object, so that's better than just typing in error-prone literal strings.
A stream in .Net is a sequence of bytes. There are several types of streams. A common one is the MemoryStream which uses memory for its storage (as opposed to a file system, or something else). Several readers and writers require a stream as an input parameter, and you'll find that sometimes you'll just want to be able to easily convert from a string to a MemoryStream and back. Here are two easy utility methods to do that:
public static string GetStringFromMemoryStream(MemoryStream m)
{
if (m == null || m.Length == 0)
return null;
m.Flush();
m.Position = 0;
StreamReader sr = new StreamReader(m);
string s = sr.ReadToEnd();
return s;
}
public static MemoryStream GetMemoryStreamFromString(string s)
{
if (s == null || s.Length == 0)
return null;
MemoryStream m = new MemoryStream();
StreamWriter sw = new StreamWriter(m);
sw.Write(s);
sw.Flush();
return m;
}
We can easily test these with a round-trip method. Note that ideally we'd have one test for each specific method, but this is just for demo purposes:
[TestMethod]
public void Convert_RoundTrip()
{
string s1 = "Hello World!";
MemoryStream m = GetMemoryStreamFromString(s1);
Assert.AreEqual(12, m.Length);
string s2 = GetStringFromMemoryStream(m);
Assert.AreEqual(s1, s2);
}
I don't like re-starting my machine because I need to re-open all the misc windows and files I have loaded. However, because I still need to reboot, I wrote a simple script to open common programs and files for me.
REM: Open Windows Explorer
start explorer
start explorer
REM: Open NotePadstart notepad
start notepad "C:\MyDocuments\temp.txt"
REM: Open the DOS command window, default to a certain folderstart cmd "/Kcd C:\Utils\MyTasks"
REM: Open Internet Explorerstart /B /D"C:\Program Files\Internet Explorer" iexplore.exe
REM: Open a Visual Studio solutionstart /B /D"C:\MySolutions\StandardFiles" StandardFiles.sln
This opens five main things:
Windows Explorer
Notepad - a blank version, and one that stores a simple scratchpad of notes. You could also open other scratchpads.
Internet Explorer (could just as easily be firefox). There are also ways to pre-populate the tabs.
Cmd window - I set it to a directory that has a bunch of misc scripts (using the "/K" switch to call the CD command)
Visual Studio - In this case I open a solution folder with a bunch of misc xml files that I use.
Of course you can add other programs to the list too.
Lastly, I made a shortcut of this batch script on my desktop, so I just click it when Windows loads up. (You could probably automate the startup tasks if you want).
I was getting a strange Silverlight compile error in my Page.xaml the other day (while migrating stuff from 1.1 Alpha to 2.0 Beta):
Length cannot be less than zero.
Parameter name: length
At first it sounds like I was setting a wrong value - like trying to reference the "-1" position on a string. But, it actually was a constraint in what namespaces Xaml allows.
In 1.1 Alpha, this would be ok:
xmlns:Tank.Core="clr-namespace:Tank.Core;assembly=Tank.Core"
Which you could then reference like so:
<Tank.Core:Dashboard x:Name="MyDashboard" />
However, that line kept throwing the error when I tried to compile.
It seems like if I remove the period ".", then it works again, like so:
xmlns:Tank1="clr-namespace:Tank.Core;assembly=Tank.Core"
<Tank1:Dashboard x:Name="MyDashboard" />
Strange. I'm not fully sure why, maybe some parsing thing with periods "." in beta, but it was good to have a work-around.
"It's part of the operating system - Windows won't run unless I install these games. Really."
"By installing on my main work laptop, I'm using that laptop more, so I'm more familiar with how it works and I can more easily check work-related tasks (like email and IM, and things that require the VPN)."
"These games have technical educational value, and are therefore not really 'games', but rather learning tutorials that benefit the company."
"I'm not 'playing the game', I'm studying it to better understand how to make functional user interfaces."
"I'm just analyzing the deployment experience so I can glean from it and apply it to our own product."
"This isn't really a game, it's actually a test project that I wrote myself (such as with XNA or Silverlight)."
"This game was built by one of our clients, so I'm just studying their products to help me conduct better client outreach."
I'm sure there's more.

