Trackr 0.1 – jQuery based user interaction tracking (PHP/MySQL)

Trackr is a very simple, lightweight (well, if you’re already using jQuery) user interaction tracker. It’s not particularly robust and is only in a fairly simple form right now.

The back end is written in PHP using MySQL for storage, but could easily be implemented in other languages.

To log data, you simply add a call to Trackr.init() to the page load event, passing the desired options as the only parameter to the function.

There are a variety of options that can be specified and for more information please see the test page.

You can get it here (includes jQuery 1.3.2).

MySQL backup script

I’ve recently been learning more and more about bash scripting and the cool functions and features that are included, that i’ll probably never use…

I recently had to set up a cron to backup all MySQL databases but I didn’t want them in one huge file.

So I’ve written a little script, that is probably not entirely efficient, but serves it’s purpose for us:

#!/bin/bash

# get todays date
DATE=`date +"%F"`;

# go to the backup directory
cd /var/backup/mysql

# export the databases, each to it's own file
#
# the first echo is sent to mysql, so we're basically echoing SHOW DATABASES; to mysql
# then we're chopping off the first line (sed 1d) and passing the remaining input to
# xargs which accepts \n or space delimited arguments as a list and echo's out the
# string mysqldump -u  -p % > %.sql (replacing % with the name) to
# /bin/bash
#
echo "SHOW DATABASES;" | mysql -u  -p | sed 1d | xargs --replace=% echo "mysqldump -u  -p % > %.sql" | /bin/bash

# compress the backups
tar czf mysql_backup_$DATE.tar.gz *.sql

# remove the large .sql files
rm *.sql

This was tested on a SuSE 11 server, might need some tweaking on other dists.

DB

Here’s a little script I’ve wanted to make for a while, but have only just finally got the motivation to work on.

It’s a lightweight Database wrapper with functions similar to Ruby on Rails’ ActiveRecord.

When I discovered the __call() method I wanted to make my own version in PHP, so here it is!

It supports most basic functions, all based on the MySQL set of PHP functions, no other wrapper is required (PEAR etc.). There is not (yet?) any automatic mysql_real_escape_string or anything, although that could easily be added if required, my assumption is you’ve done that kind of thing already before passing anything to it.

$db = new DB('mysql://username:password@server:port/database');
$people = $db->table('people');
$companies = $db->table('companies');

$company = $company->find_by_name_like('%test%');

$person = $people->create(
  array(
    'name' => 'Dom',
    'company_id' => $company->id,
    'created_date' => date('Y-m-d H:i:s')
  )
);

$id = $people->lastId();
$dom = $people->find($id);

print $person->name;
// Dom

print $dom->name;
// Dom

$dom = $person;
$new_users = $person->find_by_created_date_before(date('Y-m-d H:i:s', strtotime('1 hour ago')));

foreach ($new_users as $user) {
  // loop through all the users with a create date more than 1 hour ago
  if (!$company->find($user->company_id)) {
    // and delete any that don't have a company associated with them
    $people->delete($user->id);
  }
}

It’s only a first draft, so any comments, questions or pointing out any typo’s in the code, (yeah, there are likely to be a few…) would be muchly appreciated.

This work is free under the Creative Commons Share Alike 2.0 license.

Download:

DB_0.1.tar.gz (4.84Kb)

Edit: Think next on my list is TextMate syntax highlighting and maybe the non-default template…