Saturday, March 14, 2009

Bash: Use "if" instead of "&&"

Using the –e option in a bash script can be quite useful. It causes the shell to stop processing and exit whenever a command results in an error. There are many situations where continuing processing after an error has occurred can be detrimental and result in a loss of data. But if you use the '&&' conditional a lot in your scripts, it can also cause them to exit unexpectedly.

How to do a while-sleep loop in Javascript

There is no sleep() function in Javascript. It makes sense, really, because Javascript is single threaded. So, a sleep would freeze the entire browser until it returned. But, being able to sleep before continuing processing is a very common need when programming.

The example that comes immediately to mind is polling. When polling a resource, one would naturally do so in a while loop, exiting when the conditions are right for processing to continue.

But how can this be done in Javascript gracefully if there is no way to sleep? You could poll without a sleep, but that would consume all of the browser's processing cycles, effectively locking it up, which is probably not what you would want. Well, here is how to simulate a while-sleep loop in Javascript.

Friday, March 13, 2009

How to create a .profile/.login file in Windows XP

In the Unix world, a script is run every time you log in. The exact file depends on the type of shell. For example, tcsh uses the .login file, while sh and bash use .profile. But on windows, if there is something I want to run at startup, I just add it to the 'Startup' folder in the Programs menu.

But, in some cases, I want to run a set of commands, but I don't want it to be in the 'Startup' folder where it can be run again by just clicking it. I want to be able to execute certain commands at login without putting them in the 'Startup' folder.

Cannot define a function with window.eval() in IE 7

Sometimes it's useful to evaluate a string in Javascript. There a variety of reasons why one would want to do that, and it's reasonable to expect that the code would be evaluated in the same way as the code in your .js files. I needed to evaluate some code using the window.eval function in Javascript. It worked fine, until I got an error when the evaluated string tried to define a function.

Monday, March 9, 2009

Simple Setup for Sending Email from the Command-Line in Ubuntu

In setting up my new Ubuntu box, I wanted to set up some automatic backups. I did that, putting the backup script in a cronjob. But what if the backup fails? How will I know, unless I remember to check on it every day? How can I send myself an email from the script when there's an error?

Saturday, March 7, 2009

How to put a USB drive into /etc/fstab

I recently started rebuilding my Linux PC. It's intended to be the household's primary storage for documents, photos, etc.... So, that means it makes the most sense to attach my external hard drive to that computer.

But the external drive is a USB drive. I'm not really familiar with the inner workings of Linux's support for USB, but I have a feeling that it might not be mapped to the same device file (/dev/xyz) every time I attach it to the system. So, how can I automate backups when I'm not sure that the drive can be mounted on the system the same way every time? Which device do I put into fstab? What if I plug it into a different USB port? Will that make the device different, meaning that I'll need to mount it differently?

Monday, March 2, 2009

How to Get the CURRENT Style of an Element in Firefox

I was trying to write some Javascript to get some style information about an HTML element. My instinct was to get the element object and access its 'style' property. But this only seemed to work some of the time, which was particularly frustrating! Eventually, I figured it out...

Sunday, March 1, 2009

How 'closures' work in Javascript (and Perl)

When I was learning Perl, the concept of a "closure" was one of the more difficult for me. And the first time around, I didn't really get it. So, I put it aside for later and didn't really use them. It then promptly fell to the bottom of the pile and slipped through the cracks. I later started writing a lot of Javascript and re-encountered closures. This time, I was determined to understand what they are and how they work.

Friday, February 20, 2009

Adding Derby DB support to Apache Tomcat

I'm creating a web application that is really just made up of JSPs, servlets, html, Javascript, and a Derby database. I'd like to use Apache Tomcat, because it integrates with Netbeans, and is lighter weight than a full-blown EE server. But Tomcat doesn't ship with Derby.

Saturday, February 14, 2009

Windows Mounted Drives in an SSH Session

SSH is a great tool because it gives you remote shells on your hosts, allows you to copy files between hosts, creates tunnels for you via port forwarding, forwards your X connection, and the list goes on... Usually, SSH is taken advantage of on Linux and/or other Unix systems. But it can be run on Windows systems too, using the SSH server that comes with Cygwin.

The problem I had was that when I logged in to my Windows machine with SSH, my mounted drives were all missing!