So I was figuring out how to parse command line arguments with python and using the getopt module with the following code


#!/usr/bin/env python
import sys
import getopt

def main(argv):
   infile = "some.xml"
   try:
      opts,args = getopt.getopt(argv,"hi:d",["help","infile="]
   except getopt.GetoptError:
      usage()
      sys.exit(2)

if __name__ == "__main__":
    main(sys.argv[1:])

And I was getting the following error:

AttributeError: ‘getopt’ module has no attribute ‘GetoptError’

So my first problem was that I had named my script getopt.py and after renaming the script, I got the same error. Well you now need to remove the getopt.pyc file that was generated from your earlier running of the poorly named script.

How to address perl arguments

digg del.icio.us TRACK TOP
By Eric Downing | Filed in Perl, Programming, Software, Utilities | No comments yet.

If you are using perl, you may find it necessary to take some command line arguments to your scripts.  When that time comes, there is a very handy variable ARGV that contains the passed in arguments.

To get the total number of arguments passed into the script you will need to use the following:

$totcommandargs = #$ARGV + 1

is equal to the number of arguments passed in to the Perl script.

Note: you need to add one to the count to get the correct number of variables.

To address the variables you use the following to address the first argument: $ARGV[0]

will address the first argument

Since arrays are addressed by n-1, to get the first element you use 0 {zero}, for the second 1, for the third {2}, and so on.

$0 will give the name of the currently executing script.


#!/usr/bin/perl

$argcount =  $#ARGV +1;
print "The script $0 has $argcount argumentsn";

for( $i = 0; $i < $argcount;$i++)
{
print $ARGV[$i] . "n";
}

I regularly have to write scripts into different environments and when I am wrapping a build system, I typically use a Bash script to do it. I often have to pass a set of arguments to the underlying commands in my scripts as well. I have found that the %* argument is the easiest way to take those arguments.

The %* takes the arguements and passes them along. The %1, %2, %3…and so on are the individual arguments but unless you have a fixed amount of arguments, then you will need to process a variable amount of arguments.

while [ $#  -gt 1 ]
do
  case "$1" in
    -a)
      ANALYZE=1
      ;;
    *)
     echo "Invalid option"
     ;;
   esac
   shift
done

Passing JVM options to Maven

digg del.icio.us TRACK TOP
By Eric Downing | Filed in Java, Utilities | No comments yet.

If you are using maven to build your projects , then you might have found an out of memory condition in your tests.  Well, setting the MAVEN_OPTS variable with JVM specific options will help with this.

Example:

MAVEN_OPTS=-Xmx1024

Depending on what environment you are in, you will need to set this variable.

This will give the JVM more 1024 megs to work with and you can customize the number to fit your needs.

Printing background Images in Firefox

digg del.icio.us TRACK TOP
By Eric Downing | Filed in Browsers, Software | No comments yet.

In an effort to save toner/ink, some browsers shut off the ability to print the background images and colors.

In Firefox:

1) Select  File->”Page setup”

2) Select the  “Format & Options” tab

3) Check the “Print Background (Colors and Images)” box

In Internet Explorer:

1)  Select  Tools->”Internet Options”

2)  Select the Advanced tab

3) Scroll down in the Settings window until you find the heading “Printing”

4) Select the checkbox next to “Print background colors and Images”.

Remember to undo this if you want to conserve ink/toner.

Tags:

Capturing the screen in Windows

digg del.icio.us TRACK TOP
By Eric Downing | Filed in Utilities | No comments yet.

For the longest time, I thought the “Print Screen” or “PrtScr” Key on my keyboard was a throw back to much older computers with sheet fed dot matrix printers and would just print out the current Dos command shell.

Once I figured out how to use it in windows, it has become an invaluable tool.

I used to create presentations of source code issues. It was a great help to be able to grab a copy of the screen and place it in a Powerpoint slide or Word Doc.

If you need a complete screen capture or even just the current window, here is what you can do.

If you need to capture the complete screen, press the “Print Screen” button located near the top of the keyboard with the scroll lock or Pause key.   It may seem like nothing has happened, but the complete image of your current desktop has been saved into the clipboard in windows.

If you want to just capture the current window, make sure the window you want is active and press the  Alt and “Print Screen” keys together.

Now open Paint, MS Word or any other program capable of handling images, and type Ctrl-V.  This will take the image that has been captured into memory and place it in the program.  Now you can manipulate the image to crop it or use it in your document.

This is a built in function of the MS Windows Operating system.

If you need more control there are other applications that can let you capture portions of the screen at any time and create a file with a simple keystroke, such as SnagIt!

Tags:

Java formatting a number with leading zeroes

digg del.icio.us TRACK TOP
By Eric Downing | Filed in Java, Programming | No comments yet.

Recently, I had a Java project that needed to encode a set of numbers and I needed a fixed number of digits used for each number. I found the DecimalFormat class a good solution for my needs.

Here is a snippet of code to show a simple way to format a number with a fixed number of digits.

import java.text.DecimalFormat;

class TestEncoder
{
        public static void main(String[] args)
        {
                // This program expects one integer 
                // argument and places it in the num1 
                // variable. This program is not very 
                // robust as to watch for no arguments
                // or to check if the argument is not 
                // an integer.
                String num1 = args[0];
                String output;

                // This creates the Decimal Format instance 
                // and assigns the formatting that we want 
                // to use, in this case three characters .
                DecimalFormat dfmt = 
                             new DecimalFormat("000");

                // This does the work of formatting the number
                // passed in on the command line to be at least
                // three digits. 
                output = dfmt.format(new Integer(num1));
               
                // This just displays the results of the 
                // dfmt.format(new Integer(num1)) command.
                System.out.println("Output: " + output);
}
}

The Decimal format allows for many more formatting options for numbers.

Make sure to look a the API docs for the version of Java that you are using:
http://java.sun.com/j2se/1.5.0/docs/api/java/text/DecimalFormat.html

Tags: ,

Enable 30 second skip with Comcast DVR

digg del.icio.us TRACK TOP
By Eric Downing | Filed in Hardware, Utilities | No comments yet.

Motorola DCT6412 (Comcast DVR) 30-second skip

I have a Tivo and missed the 30 second skip that was available and I found that the same was available with the Comcast Cable remote.

1) Press the button at the top of the remote to put it into Cable Box control mode.

2) Press and hold the button until the button blinks twice.

3) Type in the code 994. The button will blink twice.

4) Press (do not hold) the button

5) Type in the code 00173 (for 30 second Skip).

6) Press whatever button you want to map the skip, I used the help button as I have never used it myself.

Welcome to 30 second skipping.

How to split large files for emailing

digg del.icio.us TRACK TOP
By Eric Downing | Filed in Software, Utilities | No comments yet.

I had to send a large file (about 100MB) to a client for analysis.  They did not have an anonymous ftp server so I had to figure a way to e-mail the file to them and then have a way to put it back together.

I found the split command very useful.  I use Linux when I can but have installed Cygwin on my Windows PC to get the same functionality.

Here is a way to break the file into 5 megabyte chunks:

# split -b 8m veryLargeInputFile

This instance splits veryLargeInputFile 8MB segments named xaa xab xac…xap.

Now put the file back together  at the distant end:

# cat xaa xab xac xad xae xaf xag xah xai xaj > veryLargeInputFile

or

# cat * >veryLargeInputFile

Note: ensure xa* are the only files in the directory when using the wildcard
For ASCII files: Split lines — This example splits a document into 1000 line segments.

# split -l 1000 veryLargeTextFile

Use the same process to put the file back together again.

Note: For larger files, find a ftp server or make your filesize increments bigger.

Split options

-b ##   — replace ## with the number of bytes you want in a file

-C ##   — replace ## with the number of SIZE bytes of lines per output file

-l ##     — replace ## with the number of lines per file.

-d          — use numeric suffixes for output files instead of alphabetic

Tags:

Welcome to eTechTips

digg del.icio.us TRACK TOP
By Eric Downing | Filed in Uncategorized | No comments yet.

Say goodbye to the bouncing ball!

As this site has been close to 10 years in the making, it is time to say goodbye to the basic flash animation that I started with on the main page.

So feel free to ask questions or give me suggestions for topics.