The Old New Thing

Practical development throughout the evolution of Windows.

Latest posts

Raymond makes a psychic prediction for 2006
May 23, 2006
Post comments count 0
Post likes count 0

Raymond makes a psychic prediction for 2006

Raymond Chen
Raymond Chen

I have gazed into my crystal ball and emerged with a prediction for 2006. Revealing my prediction now may influence the event itself, so I will post only the hash for the prediction. I will post the actual prediction at the end of the year. The output of this program (after you replace "prediction goes here" with the actual prediction, of course) is as follows:

That mysterious J
May 23, 2006
Post comments count 0
Post likes count 0

That mysterious J

Raymond Chen
Raymond Chen

It's a lost smiley face.

How do I write a regular expression that matches an IPv4 dotted address?
May 22, 2006
Post comments count 0
Post likes count 1

How do I write a regular expression that matches an IPv4 dotted address?

Raymond Chen
Raymond Chen

Writing a regular expression that matches an IPv4 dotted address is either easy or hard, depending on how good a job you want to do. In fact, to make things easier, let's match only the decimal dotted notation, leaving out the hexadecimal variant, as well as the non-dotted variants. For the purpose of this discussion, I'll restrict myself to the common subset of the regular expression languages shared by perl, JScript, and the .NET Framework, and I'll assume ECMA mode, wherein matches only the characters 0 through 9. (By default, in the .NET Framework, matches any decimal digit, not just 0 through 9.) The...

Raymond 1, Sidewalk 1
May 19, 2006
Post comments count 0
Post likes count 0

Raymond 1, Sidewalk 1

Raymond Chen
Raymond Chen

I successfully avoided the stealth sidewalk the other day. This evens the score. (Today is Starbucks Bike to Work Day.)

Redirecting output can result in altered program behavior
May 19, 2006
Post comments count 0
Post likes count 0

Redirecting output can result in altered program behavior

Raymond Chen
Raymond Chen

Consider a program whose output to the console goes like this. (I've prefixed each line with the output stream.) You want to capture both the normal and error streams, so you run the program and append "" to capture both streams into a single file. But when you look at the resulting output file, you get this: What happened? Most programs change their output behavior depending on whether the output stream is a file or a device. If the output stream is a device (such as the screen), then buffering is disabled and every print statement goes to the screen immediately. On the other hand, if the output stream ...

Making up new Winter Olympic events
May 18, 2006
Post comments count 0
Post likes count 0

Making up new Winter Olympic events

Raymond Chen
Raymond Chen

My approach to inventing new Winter Olympic events is to create new opportunities for head-to-head competition, opening the door to new dramatic possibilities. For example, in Ski Jump Biathlon, one team jumps while the other team tries to shoot them (with paint pellets, of course) as they sail through the air. In Figure Curling, one team performs a free skate while the other team hurls granite stones down the ice in an attempt to foil that triple toe loop. Japanese filmmaker Riichiro Mashima was also bitten by the sport-inventing bug. His creation: Ski Jumping Pairs. I'm going to have to check it out.

The redirection operator can occur in the middle of the command line
May 18, 2006
Post comments count 0
Post likes count 0

The redirection operator can occur in the middle of the command line

Raymond Chen
Raymond Chen

Although the redirection operator traditionally appears at the end of a command line, there is no requirement that it do so. All of these commands are equivalent: All of them echo "A B" to the file "C". You can use this trick to avoid the redirection problem we discussed last time. We saw that writing inadvertently interprets the "2" as part of the redirection operator. One solution was to insert a space: but this assumes that the space won't cause a problem. If you're in a case where that space will indeed cause a problem, you can use the trick above to move the redirection operator to a location wh...

Don't mention the war. I mentioned it once, but I think I got away with it all right
May 17, 2006
Post comments count 0
Post likes count 0

Don't mention the war. I mentioned it once, but I think I got away with it all right

Raymond Chen
Raymond Chen

The Germans is probably the most well-known episode of Fawlty Towers. Who better than John Cleese, therefore, to release the song Don't Mention the War, just in time for the World Cup. The purpose is to mend fences between Britain and Germany, but it might just make things worse, who knows.

Beware of digits before the redirection operator
May 17, 2006
Post comments count 0
Post likes count 0

Beware of digits before the redirection operator

Raymond Chen
Raymond Chen

If you want to put the string "Meet at 2" into the file "schedule", you might be tempted to use If you try this, however, you'll see the string "Meet at" on the screen and the "schedule" file will be blank. [Typo fixed, 10am] What happened? A digit immediately before a redirection operator modifies which stream the redirection operator applies to. If you're going to redirected an alternate output stream, it'll nearly always be the standard error stream, or stream 2. To put the error output into a file, you would write something like this: There is also the operator ">&" that reopens a strea...