There are many algorithms for fast string searching, but the running of a string search is inherently O(n), where n is the length of the string being searched: If m is the length of the string being searched for (which I will call the "target string"), then any algorithm that accesses fewer than n/m elements of the string being searc...
Often, it doesn't pay off to be too clever. Back in the 1980's, I'm told the file system group was working out what in-memory data structures to use to represent the contents of a directory so that looking up a file by name was fast. One of the experiments they tried was the splay tree. Splay trees were developed in 1985 by Sleator and Tarjan as a ...
Remember that you have to understand what things mean in context. For example, the IActiveMovie3 interface has a method called get_MediaPlayer. If you come into this method without any context, you might expect it to return a pointer to an IMediaPlayer interface, yet the header file says that it returns a pointer to an IDispatch interface instead. ...
Two people pointed out that the function and toolbars use horizontal strips even though we learned that vertical strips are much more efficient. While it's true that the images are passed to the and functions in horizontal strips, the image list and toolbar code copy them to a vertical strip. In other words, the horizontal strip is merely an...
Occasionally, I see someone ask for a function that
converts between LCIDs (such as 0x0409 for English-US)
and RFC 1766 language identifiers (such as "en-us").
The rule of thumb is, if it's something a web browser would need,
and it has to do with locales and languages,
you should look in
the MLang library.
In this case, the
IMultiLanguage:...
Another developer tax is playing friendly with Fast User Switching
and Terminal Services.
When the workstation is locked or disconnected,
you should turn off non-essential timers,
minimize background activities,
and generally send your program into a quiet state.
If you already used the technique of
painting only when your window is visible on th...
An increasingly important developer tax is supporting
Remote Desktop Connection properly.
When the user is connected via a Remote Desktop Connection,
video operations are transferred over the network connection
to the client for display.
Since networks have high latency and nowhere near the bandwidth
of a local PCI or AGP bus,
you need to adapt to...
Occasionally, somebody will ask
I'm debugging a hang, and I see that many threads are stuck at a RET instruction. When I try to trace one instruction from that thread, the trace breakpoint never fires. It's as if the RET instruction itself is wedged! I've found the world's slowest RET instruction.
(A common variation on this theme is that the th...