Simple Update to Mouse Move Program

Written by klee on December 9th, 2018

While one of my sons was visiting from college, I showed him the mouse move program. His question was why move the mouse pointer across the screen? Why not just move it one pixel… You wouldn’t even notice the change?

Sure enough, he was right. I made the update, and it is on the download page – KL.java.

 

Updated MouseMove Program

Written by klee on November 3rd, 2018

Don’t move the mouse if mouse has moved in last 60 seconds.

import java.awt.*;
import java.util.*;

public class KL {
	private int x=0;
	private int y=0;
	public static void main(String[] args) throws Exception {
		KL kl = new KL();
		kl.setXY();
		Robot hal = new Robot();
		Random random = new Random();
		while(true) {
			int storedX = kl.getX();
			int storedY = kl.getY();
			hal.delay(1000*60);
			kl.setXY();
			if ( (storedX==kl.getX()) && (storedY==kl.getY()) ) {
				int x = java.lang.Math.abs(random.nextInt() % 640);
				int y = java.lang.Math.abs(random.nextInt() % 480);
				System.out.println("(x,y) = " + x + " , " + y);
				hal.mouseMove(x,y);
				kl.setXY();
			} else {
				System.out.println("Mouse already moved, current position: (x,y) = " + kl.getX() + " , " + kl.getY());
			}	
		}
	}
	
	public void setXY() {
		PointerInfo a = MouseInfo.getPointerInfo();
		Point b = a.getLocation();
		int x = (int) b.getX();
		int y = (int) b.getY();
		setX(x);
		setY(y);
	}

	public void setX(int xval) {
		x = xval;
	}

	public void setY(int yval) {
		y = yval;
	}

	public int getX() {
		return x;
	}

	public int getY() {
		return y;
	}
}
 

Breathing new life into an old blog

Written by klee on August 23rd, 2018

I finally got around to replacing a power supply in the old 386 computer that was running my blog. I exported the database, and backed up the files. I setup a new web server/database/wordpress blog on a Raspberry Pi. We’ll see how well this holds up and works. The older posts appear to be still available. I was surprised at how easy it was to complete. Now back to work…

 

AllowOverride None

Written by klee on September 10th, 2016

AllowOverride None is evil. It took several hours to figure out why permalinks were not working. Hidden, many layers deep, in an obscure Directory block was this command. Once I removed it, all of the permalinks worked. Glad that is over!

 

I’m back

Written by klee on August 6th, 2016

I was having issues with my ISP. Apparently, my family has been streaming Netflix, and the gateway can’t handle the load. I have upgraded the gateway, and now use an Ubiquiti EdgeRouter to handle the “load”. Sorry for the downtime.

 

Simple password generator

Written by klee on June 3rd, 2016
#!/usr/bin/perl
use strict;
use warnings;

use App::Genpass;

my $generator = App::Genpass->new(
                number    => 5,
                readable  => 0,
                special   => 1,
                specials  =>  [ '!', '#', '$' ],
                verify    => 1,
                length => 14,
);

my @list = $generator->generate();

foreach ( @list ) {
    print "$_\n";
}

Sample Results:
$ perl genpass.pl
QVTEZSe5Iz#wTB
OOKd#fahdwm35Q
UuoJkdxF8#sbD$
Yn!UBqwC0GkW4d
052Z9$NwUf1LCT

 

The Mouse Move Program

Written by klee on May 29th, 2016

I once wrote a piece of code to prove that you didn’t actually have to be at your computer for your IM to state that you are active. This has since gone on to be a frequently talked about piece of code. Here it is 🙂

import java.awt.*;
import java.util.*;

public class MouseMove {
  public static void main(String[] args) throws Exception{
    Robot mm = new Robot();
    Random random = new Random();
    while(true) {
      mm.delay(1000*60);
      int x = java.lang.Math.abs(random.nextInt() % 640);
      int y = java.lang.Math.abs(random.nextInt() % 480);
      mm.mouseMove(x,y);
    }
  }
}
 

Jumble revisited

Written by klee on November 21st, 2015

Here is a jumble example in Perl.

#!/usr/bin/perl
use strict;
use warnings;
use Algorithm::FastPermute ('permute');
use Text::Aspell;
my $arg = shift or die "takes one arg";
my @arg = split(//,$arg);
my $speller = Text::Aspell->new;

permute {
	if ($speller->check(join("",@arg))) {
		print "@arg\n";
	}
} @arg;
 

Jumble

Written by klee on November 21st, 2015

I have always been interested in the jumble program that is in the paper. A long time ago, I wrote one of my first programs to provide a list of possible words. I am including that “C” source here. I have written several variations on the theme in several different languages. I am fond of this version, as it was the first. After writing it, the first modification I made was to pass all of the results through the dictionary aspell. What was always amazing to me was that there was always one and only one solution to the Jumble.

You may need to install apt-get install libaspell-dev for this to work. I also use a Makefile to build this.

gcc -O -laspell -c jumble.c
gcc -O -laspell jumble.o -o jumble

/*
 * Created by: Kenneth Lee (kelee@nyx.net)
 * Created on: May, 1993
 * jumble - finds permutations of letters
 *
 * Updated by: kelee@nyx.net
 * Updated on: 20-Apr-2009
 * Added ability to only display correctly spelled words by running each
 * word through the aspell spell checker available on Linux distibutions.
 * To compile, needed to get the aspell-devel libs to have the aspell.h 
 * header files available. 
 * 
 *
 */
 
#include <stdio.h>
#include <string.h>
#include "aspell.h"


void perm(char temp[], int r_value) {
  int count;
  char temp1[20];
  char temporary;
  int correct;

	// int correct = aspell_speller_check(spell_checker, word, size);
	AspellConfig * spell_config = new_aspell_config();
	aspell_config_replace(spell_config, "lang", "en_US");
  AspellCanHaveError * possible_err = new_aspell_speller(spell_config);
  AspellSpeller * spell_checker = 0;
  if (aspell_error_number(possible_err) != 0) {
    puts(aspell_error_message(possible_err));
  } else {
    spell_checker = to_aspell_speller(possible_err);
  }  

  // prints first case
  if (r_value==(strlen(temp)-1)) {
     correct = aspell_speller_check(spell_checker, temp, strlen(temp));
     if (correct > 0) {
	     printf("%s\n", temp);
	   }
	}
	
  for (count=r_value;count>=0;count--) {
     strcpy(temp1, temp);
     if (r_value != count) {
        temporary=temp1[count];
        temp1[count]=temp1[r_value];
        temp1[r_value]=temporary;
		    correct = aspell_speller_check(spell_checker, temp1, strlen(temp1));
		    if (correct > 0) {
	        printf("%s\n", temp1);
	      }  
     }
     if ((r_value-1)>0)
        perm(temp1,r_value-1);
  }
}

int main() {
  char data[20];
  printf("\nEnter letters to be unscrambled: ");
  scanf("%s", data);
  perm(data,strlen(data)-1);
  printf("\n");
}
 

MD5 hash using Perl

Written by klee on May 12th, 2014

Earlier, I demonstrated using groovy with a simple bit of code to create an MD5 hash. Here is a Perl version, notice how little code is used.

#!/usr/bin/perl
use strict;
use warnings;
use Digest::MD5 qw(md5 md5_hex md5_base64);
use Digest::SHA qw(sha1 sha1_hex sha1_base64);
use MIME::Base64;
my $password;
if (scalar @ARGV eq 1) {
	$password = shift;
} else {
	$password = "password";
}
print "MD5 hex digest of $password = ",md5_hex($password), "\n";  # human-readable
print "MD5 base64 digest of $password = ",md5_base64($password), "\n";  # human-readable too
print "SHA1 hex digest of $password = ",sha1_hex($password), "\n";  # human-readable
print "SHA1 base64 digest of $password = ",sha1_base64($password), "\n";  # human-readable too

Pretty cool, and this code runs on just about any linux/unix machine. In Windows, I ran the code using Strawberry Perl.