Just in case you've been bookmarking this particular page for the blog (http://www.nsftools.com/blog/blog-02-2003.htm), please note that it won't roll over to the March blog unless your bookmark is for
http://www.nsftools.com/blog. The /blog page actually serves as a redirection to the current month's blog page, which isn't exactly how other people do it, but that's how it's done here.
Here's why.
Have a good weekend.
I made a minor update to the
XML NodeReader class. Guiseppe Maio sent me an e-mail to tell me that he was having problems with multiple instances of a NodeReader, because the global ceCurrent variable was static -- when the ceCurrent variable changed in one instance of the class, it was changing in the other instance as well. Doh!
I have no idea why it was static in the first place (probably a code remnant), but I made the change to the code and reposted it as version 1.1. Hope it works better now.
In the tip I posted yesterday, I mentioned that I used reflection to figure out what the methods of the BASE64Encoder and Decoder classes were, but then I never actually said how I did it. I guess that was kind of rude. Because I felt so bad about it, I went ahead and posted
another tip describing how to use Java reflection to get information about a Java class. I hope that makes everything all right.
I just discovered some undocumented Base64 encode/decode classes in the standard Java distributions (
here's some sample code). I say it's undocumented because it's not in the Java docs...maybe Sun has some documentation elsewhere that I haven't seen. I have no idea why this kind of thing would be hidden, since Base64 comes up fairly regularly with Internet things like e-mail and HTTP authentication.
Here's a neat set of projects:
grid.org has several grid computing projects that aim to fight cancer, anthrax, and smallpox. Set up like the
SETI@Home project, this is a good way to donate your unused processor cycles to a worthy cause.
But don't load it on your servers...
New on the site is a batch file that will
automatically restart Domino when it crashes. The link and the batch file itself will give you more information (hint: you have to tell Windows that the batch file is your default debugger). I've got this set up on a production server that crashes intermittently, so it will reboot itself after a crash, and then it pages me to tell me it's just restarted. Pretty handy if the server goes down after hours.
Unfortunately it only works on Windows NT/2000, but then those other platforms don't ever crash, do they? ;-)
I just
added some servlet code that allows you to specify a
WSDL file URL and transform it using nice little
XSL file I found. Even if you're not into the whole SOAP/Web Services thing right now, it might be a good excuse to play around with servlets on your server, if you're not currently doing that. Or an excuse to look at XSL.
Also, I just added several more blogs to my links page. Man, that's getting to be a long list, and I know I don't even have everyone...
Ed Brill was
talking about BBS's yesterday. Wow, that brings me back. In the early 90's I was a sysop for an engineering firm, programming a TBBS system using TDBS (a Clipper/dBase-like relational database language). The company who made the software was
eSoft, which is now a VPN and firewall vendor. It's funny that the company history doesn't even mention that they were a major BBS vendor back in the day. eSoft and Galacticomm were the big ones. eSoft went from TBBS to their "IPAD" product when the Internet started wiping out all the BBS's, and I guess the IPAD turned into their current firewall product. Not sure what ever happened to Galacticomm. And I wonder if
this Phil Becker is the same one who used to run eSoft...I can't imagine it is, but I guess you never know...
(Update: it IS the same Phil Becker. Cool!)
Just for fun, I just dug out an old Boardwatch magazine from '95 (I'm a packrat) and saw that it's got a ONE BBSCON convention preview in it -- I actually went to one of those in Tampa! At one point I remember talking to one of the guys from Prodigy about PGP. Boy, those were the good ol' days, back when you programmed using Notepad (or even DOS Edit) as your editor, and you had to choose between a PPP and a SLIP connection when you signed up with an ISP.
And Ed, we had six blazing v.34 modems, hooked up using a DigiBoard. You could connect at 33.6 on a good day, if you also happened to have a USR Sportster. None of that old 14.4 stuff.
Let's see, that was roughly 10 years ago. In another 10 years, how many of the terms and products and companies that are so common to us today are going to be as foreign or antiquated as a lot of the things I just mentioned?
Here's a neat little tip about
blocking ads by modifying your hosts file. Ned also
mentioned this technique a while ago, along with some cool Python code to make the blocked pictures less annoying.
The other day
I mentioned a program called rdesktop that allows you to use a Linux machine as a Windows Terminal Server/Remote Desktop client, and I wondered if it would work on OS X. Well apparently, there's no need to even try.
Justin Knol just wrote to tell me that Microsoft already has with a
free RDC client for Mac. There you go. Thanks Justin.
In other news, I added an archive page to make it easier to take a quick look at my old blog entries. I'm not sure why you'd want to do that :-), but Ned Batchelder has an archive page, and I thought it was a cool idea.
Apparently a researcher in Japan is studying
invisibility. Wild stuff, especially
the picture.
I ran across a few interesting bits of information about using Windows Remote Desktop on Linux. There's a program called
rdesktop that says it "runs on most UNIX based platforms with the X Window System" (although I also read that you should apply
some patches first). Sure, you could use VNC or some other remote control product to access a Windows machine from *nix, but rdesktop has one huge advantage: multiple client access via Terminal Server.
Here's a guy who's talking about using it to set up a network of diskless 486 machines as Windows Terminal Server clients.
When I get a chance, I'm going play around and see if my Linux box can access my Windows XP Professional machine here at home. I'm not sure if Microsoft significantly changed the Remote Desktop Protocol between Win2K and XP, but if they didn't it should work. And I wonder if rdesktop runs on OS X...?
A few more things about RSS feeds (if this is boring for you, I apologize).
I got an e-mail from a reader who said that my feed wasn't showing up properly in the FeedReader application. The first parts of my blog entries weren't showing up, and there was a "]]" at the end of all my entries. It turns out (I think) that FeedReader doesn't handle CDATA blocks properly, and it was treating everything from the beginning of the CDATA element (<
Which OS are You?
So I've been doing some testing at work (yes, I actually have a job) talking SOAP between one of my Notes servers and an
Actuate server, and I kept getting errors back from Actuate, even on simple requests. After spending some time cursing and debugging, I finally figured out that it would work if I used a carriage return + linefeed (\r\n in Java) to separate the HTTP header elements instead of just a linefeed (\n).
I cursed some more, thinking how stupid it was that I had to work with this dumb non-standard server (I had been successfully using \n as a line terminator on plenty of other servers), so I decided I was going to send a nasty-gram to someone to tell them how they needed to fix their product. But then it occurred to me that I should probably check the HTTP specs first, just to make sure I had my facts straight.
Good thing I did. As it turns out, the HTTP specification refers to the ARPA text message standard for its header format, which says that CRLF is the correct way to separate elements in a header. Most servers these days will accept just a linefeed as well (probably because that's a common line terminating character in Java, C, and Unix), but apparently there are some that adhere strictly to the standard.
So what does this mean for you? It means I made minor updates to the Java HTTP Proxy and the Java SOAP Tester Client code on this site, so they create proper HTTP headers, and you can rest assured that your headers are properly terminated.