Arrow Icon Set
One of these days, I'm going to figure out how to transform a Windows icon file into a Mac and a Linux icon file, but until that time...
Enjoy! :-D
One of these days, I'm going to figure out how to transform a Windows icon file into a Mac and a Linux icon file, but until that time...
Enjoy! :-D
Err — yeah.
You might be wondering what Genghis Kahn has to do with the template. The short answer: he doesn't. The long answer: I needed to name the template something — it was either "Red Blue White" or "Genghis Kahn," and I settled for the latter. I shall contrive to come up with a slightly more meaningful title next time. ;-)
Long-time users might notice that the design looks suspiciously familiar to one of the previous revisions of this blog. That's because — err — it had been used as the design for this blog at one point. However, I'm not using it any longer (no kidding). I didn't want to let it go for waste, however, and so I'm releasing it as a free template for anyone who wants to use it for personal or commercial site. Feel free to make any modifications whatever. However, please don't try to sell the design to anyone. :-)
While you don't need to include my name in the design anywhere, a mention and a link back is much appreciated. :-D
A useful addition to ASP .NET 2.0 is the ability to register web controls in web.config. In ASP .NET 1.1, if you wanted to use a custom server control on twenty different pages, you had to register it on all twenty of those pages:
<%@ Register tagprefix="tagprefix" Namespace="Namespace" Assembly="Assembly" %>In ASP .NET 2.0, you can register the server control in the controls section of web.config once and use it in whatever page you want of the web application.
<pages><controls><add tagPrefix="MyTagPrefix"namespace="My.Namespace"assembly="MyAssembly"/></controls> <!-- Other elements go here --> </pages>
Access modifiers, as their name suggests, control who sees what in an application. C# has 4 basic access modifiers (thereâs also a 5th one, but more on that later). Here they are, listed from least restrictive to most restrictve.
public: accessible anywhere.protected: accessible to current class and all derived classes.internal: accessible to any class in the current assembly.private: accessible to current class only.Easy enough to understand.
public namespace AwesomeNewNamespace { ⦠} will produce a compile-time error. private class AwesomeNewClass { ⦠} will produce a compile-time error. This makes sense if you think about it â how exactly would you use a private or a protected class?? class NotSoCool { ⦠} is equivalent to internal class NotSoCool { ⦠}.void SomeAwesomeMethod() { ⦠} is equivalent to private void SomeAwesomeMethod() { ⦠}.public voidMethod() { protected string someString; will produce a compile-time error.internal class Base { ⦠} public class Child : Base { } will produce a compile-time error. Now that we got that out of the way, letâs take a look at that 5th modifier that I mentioned at the beginning. This would be the compound modifier protected internal. After looking at it for a minute, you would think that it does what other compound modifiers in .NET do. For example, protected virtual void AwesomeMethod() makes AwesomeMethod both virtual and protected, so youâd think that protected internal AwesomeClass { ⦠} would make the class both protected and internal (i.e., it is only accessible to derived classes in the assembly) but you would be wrong. For some bizarre reason that I have yet to fathom, the powers-to-be have decided that protected internal means protected or internal (so that the method is available to all derived classes as well as all classes in the current assembly).
Iâm a converted iTunes junkie. The last time Iâve opened Windows Media Player was, like, in the Dark Ages. Nothing wrong with the player, but its user interface is horrendous, especially when compared to the simple elegance of iTunes.
But I just might get converted back to Windows Media Player. Microsoft finally released the Windows Media Player 11 Beta, and I have to say, Iâm impressed. :-)

Hereâs a link to the Windows Media Player 11 Beta download for those of you who want to play with it.
Something Iâve had to do often. Until now, Iâve gone through the âlaborousâ (hehe) process of remembering what stored procedures Iâve added and granting EXECUTE permissions to whatever user for each procedure. I was sure that there was an easier way to grant the permission on all stored procedures, and there is!
GRANT EXECUTE TO [Insert the name of the user here]
If youâre using SQL Server 2000, you donât have it so easy. However, hereâs an article on how to create a stored procedure to do the same.
A quickie. The Obsolete attribute marks a class or method as (pardon the redundancy) obsolete. Usage:
[System.Obsolete("This is an obsolete class; use NonObsoleteClassInstead")]public class ObsoleteClassExample{// Internals of the class } public class NormalClass{// ⦠[System.Obsolete("This method is absolute; use NonObsoleteMethodInSomeClass")]public void ObsoleteMethodExample(string blah){// Internals of the method } // â¦}No, there isnât any difference in marking a class vs. method as obsolete. I just wanted to create two code blocks, go figure. :p
When you use a class/method marked as obsolete, VS 2005 shows you a nice warning in the âError Listâ pane.