Varnish::CLI

March 13th, 2011 robin Posted in Ironman, Perl Comments Off on Varnish::CLI

Varnish is the cutting edge in reverse proxy for speeding up web services and reducing load on your web application server.  It has a pretty neat CLI for managing a running Varnish instance, but being an interactive telnet interface, it is not so easy to script for…

Some examples why you might want to interface to the Varnish CLI with a script:

  • Automatic reload of configuration file when it changes
  • Purge the cache for a specific website when changes are made (new blog entry, new CSS, …)

And so I wrote up a Perl interface to the Varnish CLI (git repo here).  The module is Moosey, and requires Net::Telnet and Digest::SHA to run.

It’s pretty easy to use – here’s a snippet with which you can purge your cache:

use Varnish::CLI;
my $v = Varnish::CLI->new();
$v->send( "url.purge .*" );
$v->close();

Have fun, and keep your web services zipping with Varnish! 🙂


FSpot::DbTool

February 20th, 2011 robin Posted in Ironman, Perl 1 Comment »

Introducing FSpot::DbTool!

F-Spot is a pretty neat photo management application which comes with the Gnome desktop.  I have been using it for a few years to manage my photos, and by now I have over 23,000 photos in it!  It has lots of handy features: tagging, versions, dates… but there are a few things it doesn’t do so well: moving files from one location to another (not all your files, just a sub-section), compacting the database, and I’m sure some more will come to mind!  The database it uses is SQLite – the perfect application for this kind of database!

I’m getting into Moose (a post-modern object system for Perl 5), so this weekend I put together a neat interface to the FSpot database: FSpot::DbTool.  It comes with a command line tool fspot-tool.

Usage:
 fspot-tool.pl [options]

Options:
 --action
    move_dir
      Requires: from, to Optional: merge, rename
    replace_path
      Requires: from, to
    find_lost
      Requires: path find_orphans
    clean_trailing_slashes
    tag_no_description
    backup_db
    check_db
    compact_db

 --from   Path from
 --to     Path to
 --path   It's a path!
 --merge  Do a merge
 --rename Rename files if necessary

Actions:
 move_dir:
 Move pictures from one directory to another. Does the move on the
 filesystem, and the corresponding move of the path in the FSpot database
 afterwards

 replace_path:
 Useful if you have already moved files in your filesystem (e.g. moved
 your entire photo folder to a new location. Will replace all instances
 of a path with a new path

 e.g.

 from = /home/clarkero/my_pictures
 to   = /home/rcl/pictures/processed

 clean_trailing_slashes:
 Clean trailing slashes off the end of paths in the database

 find_lost:
 Find files which exist in the filesystem, but do not exist in the
 database

 find_orphans:
 Find orphaned files (files which exist in in the database, but not on
 the filesystem)

 tag_no_description:
 Tag all photos which do not yet have a description

 check_db:
 Confirms you have the correct database version for this script to work
 with

 backup_db:
 Make a backup of the database This is carried out automatically for
 move_dir, replace_path and compact_db actions.

 compact_db:
 Carries out the SQLite compact function (VACUUM) on the database.

By using Moose::Roles I’ve paved the way for easily adding additional tools for the database – just add them into the lib/FSpot/DbTools directory!

I hope you have fun with FSpot, and find a use for the DbTool.


Chart::OFC2

December 30th, 2010 robin Posted in Ironman, Perl 1 Comment »

Recently I started looking at Chart::OFC2.  It’s a pretty neat module to create Open Flash Chart charts (or more importantly, the data format required for the charts).  One small problem: the y_axis_right option wasn’t completely implemented… but thankfully the creator is also a GitHub user, so I just forked, patched, and posted a pull-request.

If any one wants to get my fork before it’s merged – here you go!