Wednesday, March 22, 2006

Drive letters suck

Last weekend I had to install three machines with Windows XP from scratch. Purpose was to get them all identical in terms of partitioning, software revisions etc. for a small office.

While all machines have the same hard disks and DVD drives, only one of them has a multi-format card reader that is attached via USB directly to the mainboard. I did not pay special attention to this when I installed the machine; I just went through the Windows setup as usual.

Only when I started installing the display drivers it suggested a path of "H:\Program Files\...", while on the other two machines it had been "C:\Program Files\...". Looking at the drive letters I found out that during setup the USB drives had happily taken the letters from C to F, the DVD drive was G and finally that hard disk got an H....!

Really annoying!

I thought of changing all references from "H" to "C" using the registry editor, but then decided against it. After all the whole thing was planned to allow easier maintenance. Fiddling around with some 1000 registry keys right after the Windows install would not really fit into that scheme...

So I installed Windows again, this time disconnecting the card reader from the USB as the setup tool does not allow you to influence drive letters at that time.

And I had already thought that problems with drive letters were a thing of the past...

Friday, March 10, 2006

Eclipse Implementors Navigation Plugin

Have a look at the Implementors plugin which allows you to navigate quickly through the source by placing the cursor on an interface and directly jumping to (one of) the implementor(s).

I find it very useful, because with lots of factories and interfaces flying around it can be a real pain to jump to the place where the real work gets down, instead of just to the interface.

I found a reference to it here, but I like it so much I thought I'd put up another link.

Tuesday, March 07, 2006

Nasty (and dangerous) Eclipse bug

I just wanted to point every Eclipse user's attention to Eclipse Bug #109084, because it can cause really nasty problems. We have been experiencing the problems of an inconsistent Java index from 3.1.0 to 3.1.2 and there seems to be no solution yet.

Basically what happens is that Eclipse "forgets" about some Java types all of a sudden, so that they do not show up in either the Open Type dialog nor in the hierarchy view. I believe it also affects refactorings that use the index for looking up the places to modify when you refactor something. For more details, have a look at the bug report.

Thursday, March 02, 2006

"RExec" on Windows

Have you ever tried remote-scripting a Windows machine? While on Linux SSH is your friend and allows you to apply a set of commands to any remote machine you have access to, Windows is much less script-friendly.

I found myself in a situation where I had to run a batch file on about 30 remote Windows servers. Not being to eager to open a remote desktop (terminal service) session to each of them, copy the file over, run it, delete it and log off again, I searched for some helpful tools. I quickly found the rexec.exe client program that ships with Windows, but that requires an rexecd on the server side. This does not even come with Windows but has to be obtained from a 3rdparty provider.

But where do you go if you want to find nifty tools for Windows? Right: www.sysinternals.com is always worth a try. And I really liked what I found: psexec is a very cool tool that allows you to remotely execute a command on a Windows machine (you have to authenticate first, e. g. via net use. It even allows you to run commands that are not available on the remote machine: they just get copied there for the time of execution and vanish afterwards. Really nice. Thank you SysInternals, saved me a lot of time again.

Worry free ping

In an earlier post I describe how to automate PuTTY. One problem remained: When the host was not reachable there could be a very long timeout period without any response from the script. On windowsitpro.com I found a wrapper script for the ping command that returns an exit code which tells you about a host being reachable or not. The problem with the normal Windows ping.exe is that there is no reliable exit code, so you could not depend on it in scripts. The "isAlive.cmd" script handles this by looking for patterns in ping's output. I tweaked it a little to look for something different in the ping commands output, but anyway, the function is still the same.