Labels

Tuesday, November 29, 2011

Review: YaCy Search Engine

So here is my review of YaCy, the Open Source Search Engine.  Created solely that .. "no one company should control search."

Review:

Went to the site, typed in a search, results sucked, back to google.
This is like Linux on the desktop, you'll struggle to get what you really want... when there's an alternative available that gives you what you want the first time without the struggle.
They appear to be in the "Slackware" on floppies stage, call me when they're in the "Mint" stage.

Monday, November 14, 2011

Apple Supply Chain

Good article on Apple's Supply Chain.

http://tinyurl.com/3mauqme



Image Resize, Thumbnail Generation

Use Perl to resize images to thumbnail size.  Helpful when you are supporting websites with a TON of images.
Requires Image::Magick


#!/usr/bin/perl
#Name:  thumbgen.pl
#Desc:  Generate thumbnail sized images from full product images.
#Author:  Rob Owens
##Change##
#initial:rowens/100411
#
#Notes:
#Development Env:
#ImageRoot:/var/www/html/images
#Full:/var/www/html/images/full
#Thumb:/var/www/html/images/thumb
#
#estore.savtira.net width=70
#
# PerlMagick Method(s)
#my($image, $x);
#
#$image = Image::Magick->new;
#$x = $image->Read('Blood_for_Blood_God_by_NachoMon.jpg');
#warn "$x" if "$x";
#
#$x = $image->Resize(geometry=>'70x');
#warn "$x" if "$x";
#
#$x = $image->Write('Blood_thumb.jpg');
#warn "$x" if "$x";
#
#
#
#my $FullDir = "/var/www/html/images/full";
use Image::Magick;
require './lib/imagelib';


#my $FullDir = '/home/rowens/repos/imageresize/html/images/full';
#my $ThumbDir = '/home/rowens/repos/imageresize/html/images/thumb';


my $FullDir = $ARGV[0];
my $ThumbDir = $ARGV[1];
my $size = $ARGV[2];
my $x = x;


if (( $FullDir eq '' ) || ( $ThumbDir eq '' )) {
        usage(basic);
        exit 1;
} elsif ( ! -e $FullDir ) {
        usage(source);
        exit 1;
} elsif ( ! -e $ThumbDir ) {
        usage(target);
        exit 1;

if ( $size eq '' ) {
        $Resize = '70x';
} else {
        $Resize = $size . $x;
}


opendir(D, "$FullDir") || die "Can't opedir $FullDir: $!\n";
while ( my $file  = readdir(D) ) {
# remove "." and ".." directories
        next if ( $file =~ m/^\./ );
# only files
        next if ( -d "$FullDir/$file" );
# all images into an array
        push ( @tmpfull, "$file" );
}
closedir(D);


#print "@full";






foreach $tmpfile (@tmpfull) {
#       printf "PRE:  $ThumbDir/$tmpfile\n";
        next if ( -e "$ThumbDir/$tmpfile");
#       printf "PST:  $ThumbDir/$tmpfile\n";
        push(@full, "$tmpfile");
}
#
foreach $file (@full) {
        resize("$FullDir/$file","$ThumbDir/$file","$Resize"); 
}

# ./lib/imagelib
#use Image::Magick

my ($image, $x);
$image = Image::Magick->new;

sub resize {
        $infile = $_[0];
        $outfile = $_[1];
        $resize = $_[2];
        my($image);

        $image = Image::Magick->new;

        $image->Read($infile);

        $image->Resize(geometry=>$resize);

        printf "Resizing image:   $infile\n";

        $image->Write($outfile);

return 0;
} print;

sub usage {
        $err = $_[0];
        if ( $err =~ /source/ ) {
                printf "Error:  Source Directory doesn't exist\n";
                printf "Usage:  thumbgen <source_directory> <target_directory> [pix width]\n\n";
        } elsif ( $err =~ /target/ ) {
                printf "Error:  Target Directory doesn't exist\n";
                printf "Usage:  thumbgen <source_directory> <target_directory> [pix width]\n\n";
        } elsif ( $err =~ /basic/ ) {
                print<<EOF;
Thumb Generator:  Used to generate thumbnails.  Shrinking width size while
maintaining scale.
Usage:  thumbgen <source_directory> <target_directory> [pix width]
        Example(s):
        Resize original images to thumbnail size, using default 70px wide: 
        thumbgen /var/www/html/images/full /var/www/html/images/thumb

        Resize original images to thumbnail size, specifying 100px width:
        thumbgen /var/www/html/images/full /var/www/html/images/thumb 100

        NOTE!  Program maintains the filename, hence output directory.

EOF
        }

return 1;
} print;