Installing Gearman APIs for JAVA and PERL


Following yesterday’s marathon package installation ‘experiment’, today I started to acquire and install the Client/Worker API modules.

JAVA – installing gearman-java-0.03.jar

Java modules can be located on the downloads page for Gearman. It is also available at the Launchpad page for Gearman. I selected the code from the gearman.org site to try first, which ended up directing me to: https://launchpad.net/gearman-java.

I downloaded all three available files:

  • gearman-java-0.03.jar
  • geareman-java-0.03-javadocs.jar
  • gearman-java-0.03-src.tar.gz

Once downloaded, I moved all three files, and the original gearmand-C source to my Development directory.

PERL – installing Gearman::XS

For the PERL implementation, I’m going with the PERL wrapper, around the core gearman C libraries. I’d rather leverage as much C as possible. The focus for me is on speed.
It is available via CPAN under Gearman::XS.

Installing PERL packages is generally pretty painless.


#root:Β  cpan Gearman::XS
[...]
Running install for module 'Gearman::XS'
Running make for D/DS/DSCHOEN/Gearman-XS-0.8.tar.gz
Fetching with LWP:
http://www.perl.org/CPAN/authors/id/D/DS/DSCHOEN/Gearman-XS-0.8.tar.gz
[...]
Writing /Library/Perl/5.10.0/darwin-thread-multi-2level/auto/Gearman/XS/.packlist
Appending installation info to /Library/Perl/Updates/5.10.0/darwin-thread-multi-2level/perllocal.pod
DSCHOEN/Gearman-XS-0.8.tar.gz
/usr/bin/make installΒ  -- OK

With the installation completed, I wrote and executed a very simple script, to test PERL’s ability to locate the new module.


#!/usr/bin/perl -w
use strict;
use Gearman::XS qw(:constants);
use Gearman::XS::Client;

print “\nLoaded and ran fine\n”;
exit 0;

This was the result:

david$ ./gtest0.pl

Loaded and ran fine

Installation of the PERL module Gearman::XS was successful.


NOTE: This is part of a series of posts, centered around installation and evaluation of Gearman as a distributed scheduling product. Here are the other articles in this group:

Installing GEARMAN on MAC OSX 10.6


So, today I set about installing gearmand on my laptop, to test out some massively distributed computing ideas I’m working on. Turns out, it’s not just a matter of downloading the .dmg file and hitting ‘RUN’. Nope.. you better have 1/2 a pot of coffee and your copy of XCode installed on the machine or you are dead in the water.

Actually, you’re going to need more than that, if you are working with a vanilla Snow Leopard install.

Step 1 – install XCode:

But first things first. You can download XCode from the Apple website, or you can install it from your ‘Extras’ folder on the OS disk. I did the later, since the distro is pretty big, something like 600MB. Get that done first.

Step 2 – install MacPorts:

Now this is where the fun begins. Now, if you followed my other blog page on installing MacPorts, you can move onto Step 3. If you have not, then, proceed at hast to installing it (follow this link too).

Step 3 – install libevent

If you enjoyed installing MacPorts, you are going to LOVE this! πŸ™‚ Now, the step of building libevent from source, probably not *required* but, after three installs that were not picked up by the gearmand, I though I’d just, do this the old fashioned way too. I have a writeup for installing libevent here (link to my page).

Step 3 – install wget

wget. How I love you, let me count the ways… MANY. wget is great. It’s a non-interactive text web client. Some of the cool things that wget can do, is recursively traverse a page, grabbing all the content, images, links pages (and their images, objects etc.). It’s also almost impossible to compromise with conventional XSS or other tricky DOM / JavaScript methods. No drive-by downloads here folks!

So, go ahead and get wget installed, because it’s going to be used to reach the final objective, retrieving gearman.

#root: port install wget

For me, on my lousy ComCrap connection, it took me a fairly long time. I think it’s safe to say, run the install command, and walk away. Check back in 10-15 minutes, see if it’s done. How will you konw if it worked? Simple, if you download the file in Step 5, it worked.

Step 5 – Finally, download and extract the Gearman bundle

This is where wget comes into play. Make sure you are in the directly you want. I suggest /opt. And execute the wget command to grab the distro. NOTE: The current distribution might be later than this (higher number). A check of the Gearman main site will probably give you the number you need, if this is not the latest and greatest:

#root: wget http://launchpad.net/gearmand/trunk/0.12/+download/gearmand-0.12.tar.gz
#root: gunzip gearmand-0.12.tar.gz,
#root: tar xvf gearmand-0.12.tar

Step 6 – BUILD!

Build the package. This part is the simplest of all the steps.

#root: ./configure
#root: make
#root: make install

YOU ARE DONE (installing that is)

Next article, will be a writeup on how to use Gearman, some time in the next week.


NOTE: This is part of a series of posts, centered around installation and evaluation of Gearman as a distributed scheduling product. Here are the other articles in this group:

Installing libevent on MAC OSX 10.6

So, today I set about installing libevent on my laptop. It’s a required library for system event handling applications. An example of that would be Gearman.

First off, you are going to need to have install MacPorts installed.

Step 1 – install MacPorts:

Now this is where the fun begins. Now, if you followed my other blog page on installing MacPorts, you can move onto Step 3. If you have not, then, proceed at hast to installing it (follow this link too).

Step 2 – install libevent

If you enjoyed installing MacPorts, you are going to LOVE this! πŸ™‚ Now, the step of building libevent from source, probably not *required* but, after three installs that were not picked up by the gearmand, I though I’d just, do this the old fashioned way too.

First off, run the standard install. This did not toss errors for me on the normal install. You can stop with this Step after it installs and move of if you like. I’m going to show the extra couple of steps I took.

#root: port install libevent

Step 3 – locate tarball, extract and build from source

UPDATE: 6-JUN-2013. Get the latest tarball from [HERE].

Now, move the distribution for libevent, and untar the tarball. The path here is from my current build. The one you eventually get will possibly have a higher number (more recent build). Don’t freak out if this exact path is not on your system. If you are building from source, I’m going to assume you also know how to find things on your computer. The reason I built this from source, was to provide the option –prefix=/usr/local to configure. It establishes where it will deploy it’s libraries.

#root: cd local/var/macports/distfiles/libevent
#root: gunzip libevent-1.4.13-stable.tar.gz
#root: cd /opt
#root: tar xvf libevent-1.4.13-stable.tar
#root: cd libevent-1.4.13-stable
#root: make
#root: make install

Now, you should have a nice clean build of libevent on your computer. Having accomplished this, you can install an array of scheduling and system event driven applications.

Enjoy.

Installing MacPorts on MAC OSX 10.6

Good times, installing MacPorts that is. This is the basis for unleashing the power of LINUX/UNIX/BSD in full, on your MAC OSX system. One of the utilities I’ve used most is wget. I makes short work of taking apart websites you think might be malicious, basically defanging them. Fun times! πŸ™‚

Now, to get MacPorts installed was not small effort, compared to how MANY blogs and posts on the net make it sound. Well, I’m here to tell you that, you got here because those didn’t work, right? Well, maybe you came here first. If that’s the case, I’m going to save some some frustration.

Now, first things first, I’m going to tell you to unlock the root user on your computer. Look, before you become totally indignant, let me beat you to the punch. I’ve been there, done that. I’ve been a professional UNIX (real UNIX HP-UX and SGI’s IRIX, IBM’s AIX just to name a couple) for over 20 years. I don’t want to hear about how ‘bad’ or ‘dangerous’ it is running as root. Tough beans, I don’t care. I’m not a paranoid ninny, I’m a code cowboy. Deal with it. If you prefer, you can prefix all your commands with the less ‘scary’ sudo, but don’t whine to me if something in this post does not work. Not that I’d care anyway.

So, now that we understand each other, let’s move on.

Step 1 — check out the MacPorts source code

I stumbled across this suggestion here: [ Snow Leopard and MacPorts ]. Worked like a charm to get a hold of the latest MacPorts build.

Using svn (aka Subversion, a most detestable tool IMHO), get the source code and plop it down in /opt. This is how I did that.

reguser#: su -
root#: cd /opt
root#: svn co http://svn.macports.org/repository/macports/trunk/base/ macports-svn

Step 2 – build the package from source

OK, I might have lost a couple of your ‘click-to-install’ types with that, but really, as long as it does not nuke itself (you’ll see that happen in other blog articles I have) it’s very straight forward. Run the three commands to build the package, and viola… update your environment and.. bingo.. you’re onto installing your new packages! πŸ™‚

Here is how it’s done. First, move yourself into the package you just checked out:

root#: cd macports-svn

Next, you’ll want to run the configure script to test your system’s capability to compile, and to generate the primary make file:

root#: ./configure

Compile and make the install package:

root#: make

Finally, execute the install:

root#: make install

Step 3 – set your LIBDIR path

That’s about all there is to it! Now, you’ll probably want to edit your ~/.bash_source file, adding the future path of all these cool libs. Believe me when I tell you, it can save you a lot of pain and bewilderment later one, when you’ve compiled those critical libraries and the application you really want to install insists that it cannot find them.

So, here is how I do it, open the file:

root#: vi ~/.bash_profile

Now add the line for LIBDIR to the file and save it. The other line there is helpful too, might as well toss it in, because it makes running port just that much easier.

export LIBDIR=$LIBDIR:/usr/local/lib
export PATH=$PATH:/opt/local/bin:/opt/local/sbin

Now, just editing the file does not do much, unless you reload your user environment (this happens on login, but only at login, so.. you’ll need to do it manually here, using the source operation. Really, it’s much easier than it all might sound.

root#: source ~/.bash_profile

Step 4 – update with the latest Portfiles

So, that’s all I had to do, to get the base MacPorts installed. Now, there are two more commands that you should run now, to make sure that your MacPorts install is all up to date, and registered. Do you need to run both, probably not. But I did, and it worked for me. Now, documentation says this will happen automatically. Didn’t seem to for me, so I ran them myself, just to be certain.

root#: port -v selfupdate
root#: port -r selfupdate

That should just about do it. Now you are ready to install fun extras like webget, libevent and eventually, Gearman.

Now, if you are really picky about your OS’d filesystem, you might go and remove the macports source you checked out. I, personally, hate having to track source code down again, so unless I’m out of disk space, I leave it for future reference.

Saturday trip around Puget Sound with kids and cameras.

One of the things I did today, was sign up for ‘foursquare‘, an app that lets you ‘check-in’ to places, and those with participating incentives will send coupons to your phone. It’s and interesting experiment. I’ll see how that works out today.

M.V. Kitsap mid-sound, enroute Bremerton
Passengers on stern pickle-forks of ferry M.V. Kitsap
M.V. Kitsap about to make starboard turn into Rich Passage.
M.V. Kitsap foreground, Olympic National Park, background.

Sea Lions at the Santa Cruz Beach Boardwalk Pier

Sea Lions! Tons of sea lions!. I’m sure that’s and underestimate.

Normally on the boardwalk you would see a few seals up under the main wharf, but it appears that they have invated the Stagnaro’s boat launch, and, well, see for yourself. It looks like the aftermath of some sort of frat party or Roman toga orgy.

What you used to find, a few stragglers under the wharf.
Now, it's a seal pile!
Marine mamals, everywhere!
It sort of makes you wonder, if they heeded the warning.
I was treated to some mamal aeorbatics.
Some made better choices than others, regarding their LZ.
This provides a little more perspective on the mass of blubber and fins.
This has nothing to do with sea lions, it's the street side of The Boardwalk

A nice (nearly) Spring ride in Kitsap County

No time like Sunday, for a ride.

The Ducati had not been out yet this year. I’d just made sure the battery was charged, tires filled, chain oiled and my riding gear still fit. All systems GO!

WX data indicated I had until 6:00PM to get the thing done, so I headed West, towards the Hood Canal. Reaching the Ridgetop crest on 303, those plans were unceremoniously, canceled. Many fine (and little traveled) roads exist just a couple of miles from home, so a run through the South County became the plan de jour.

There are some really neat little places that you pass along the way. The first of which is Seabeck. A sleepy little town along the Hood Canal. Decent salmon fishing during the season, but the real score is the Dungenus Crab, and shrip fishing. It’s almost impossible not to limit out. πŸ™‚

Seabeck Washington

From there, the road winds southwest, high and inland from the canal, eventually terminating in the little town of Holly.

Holly Wa

This is where things start to get interesting. Just prior to the road’s terminus, starts the an even smaller lane + 1/2 road to the little burg of Dewatto. Winding up the hill and across the ridge, views of the Olympic mountains are impressive and picturesque.

Road to Dewatto.

Dropping out of the hills, just before the town of Dewatto, you are treated to great vists such as this:

Bay at Dewatto. Olympic reflecting off the Hood Canal.

Riding a little further along the water, and the mountains really begin to loom, despite being miles away, across the Hood Canal.

Storm approaching over the Olympic Mountains.

Not far from the bay, is one of the sweet little treats on this run, a steep up-hill right-hand curve followed by an increasing radius turn to the left, finally topping out on the ridge.

DeWatto Curves

It does not really matter which direction you approach Dewatto, it always delivers.

Looking West, towards DeWatto, Olympics and beyond them, the Pacific Ocean.

The road continues to wind it’s way back towards the larger towns, providing both technical corners and broad open-sight-lined sweepers where… “you can really breath.”

Taking a diversion up Elfandahl Pass, through the ORV parks is key.

75 miles and some time later, it seemed fitting to finish off the day at The Boat Shed for a burger and beer. Ah, life in the Pacific Northwest. It’s full of sweet surprises.

A find way to wrap up a weekend.

Landshark!

Lego… much to my amusement has a new series of LEGO’s called ‘Atlantis’. One of the kits (a relatively inexpensive one luckily.. at under $12.00) named “Wreck Raider” has this cool little character in it! I’m not sure what the official name is, but to me it reminds me of the ‘Land Shark‘ of SNL fame.

I just had to buy it! And so, a new journey begins, with a new FaceBook page, Pacific Landshark!

Spurred on by and idea from my friend Kelly, ‘Land Shark’ will be traveling with me. Together, we’ll create a photo travelogue, filled with adventure, science and barely passable photography.

Here are a few photos from our first outing, this afternoon:

Landshark looks for food in an abondoned submarine.

Went to the local marina, but didn't find anything there.
Tried to order food for delivery, but they wouldn't take sand dollars as payment.
Checked the radar scope, and I saw a fishing boat!
Manned the fire control center, and prepared to fire!
Direct hit! Time for lunch!!!

A few Photos around Bremerton.

I took the 50D out for a little photography at lunch today. Geared up with my 70-200 f/2.8L glass (arguably one of the best Canon ever made), and a Hoya 77mm polarizer, I took a drive across the two bridges, picking up a sandwich along the way.

Olympic mountains can be seen all around town.

Olympic Mountains, seen from the Manette neighborhood of Bremerton, WA

The ‘iconic’ Manette Bridge. Soon to be replaced with a rather boring cement version, has served the community of Bremerton, connecting East (Manette) and West (downtown) for over 80 years.

The Manette Bridge, built in 1930, connects East and West Bremerton.

The Boat Shed – one my favorite lunch spots on a sunny day. During the warm moths, the deck is packed, and getting a spot on the dock has more to do with luck than anything else. Sometimes during the spring grey whales can be seen in passage.

The Boat Shed - one my favorite lunch spots on a sunny day.

Olympic Mountains from the Warren Ave. / Hwy 303 Bridge. Looking West over Port Washington Narrows and the Bremerton Yacht Club (left). Silverdale is far right and the Hood Canal just over the first set of green hills.

Olympic Mountains from the Warren Ave. Bridge

One of the massive rain forest valleys that head into the Olympic National Park.

Olympic National Park

AirLift Northwest photos – Canon 20D + 400mmL IS lens

The last couple of days have been pretty nice. I had my older 20D camera body loaded with the 100-400L Zoom and next to my desk. More than a few times a week, the AirLift Northwest helicopters bring people into the trauma center at Harrisons. So, I decided to snap a few pics.

They have a number of helicopters, and at least two different models currently in use. This one, photographed on two separate days. I believe this to be an Agusta a109.

Climbout from Harrisons Hospital, Bremerton WA.
Agusta AW109 lifting off from Harrison's Hospital, Bremerton WA.
Agusta AW109 departs Harrison's Hospital, Bremerton WA.
Agusta AW109 departs Harrison's Hospital, Bremerton WA.

Note about these photos. These are re-sized by the blog software, and they loose a little bit of their quality. The originals are tack-sharp. I’ll have to look into adjusting the blog software to not mangle my photos. Not sure if it’s possible but worth a try.