Archive for the ‘Coding’ Category

Copy changed files from CVS repository

March 14th, 2012 No comments

While converting my cvs repositories to git I needed to copy all the changed files from my working directory into a temp directory and then into my git working dir. This was the solution that I came up with:

cvs -qn update -d 2>/dev/null | grep '^[M|\?|P] ' | awk '{print $2}' > files.list
while read file; do cp -r -f --parents "$file" /tmp/dest/; done < files.list

Basically, cvs -qn update -d does a mock update (doesn’t change files), piped to grep to only list the changed files, use awk to exclude the M, P, ? etc, output to a file.

Loop over the lines in the new file using the cp –parents to preserve directory structure

Categories: Coding Tags:

Optimized vBulletin (Part 2)

October 30th, 2007 1 comment

I’m just trying out a new method to optimize vBulletin’s front end scripts and CSS. It’s still a work in progress but these are the results I have seen on my test site (

Without GZIP

Base VB (v3.6.8)

vbulletin_global.js – 43.8KB
vbulletin_menu.js – 17.8KB
vbulletin_read_marker.js – 6.7KB
vbulletin_md5.js – 9.6KB

JS total – 77.9KB

css – 5.7KB

Using minify

vbulletin_global.js – 23KB
vbulletin_menu.js – 10.4KB
vbulletin_read_marker.js – 3.3KB
vbulletin_md5.js – 6KB

JS total – 42.7 (45.1% savings)

css – 4.1K (28% savings)


Base VB (v3.6.8)

vbulletin_global.js – 12.5KB
vbulletin_menu.js – 4.7KB
vbulletin_read_marker.js – 2KB
vbulletin_md5.js – 3.3KB

JS total – 22.5KB

css – 1.3KB

Using minify and GZIP

vbulletin_global.js – 6.9KB
vbulletin_menu.js – 2.7KB
vbulletin_read_marker.js – 1KB
vbulletin_md5.js – 2.1KB

JS total – 12.7KB

This is an extra 43.5% savings on top of GZIP. A total of 65.2KB (83.7%) savings from the original.

css – 1.1KB

An extra 15.3% savings on top of GZIP. A total of 4.6KB (80.7%) savings from the original.

This is a huge improvement over the original file sizes and speeds up rendering of the page quite a bit. The new method doesn’t require you to download JS replacements for each version of vB, instead it works off the existing files. Hopefully this will silence the people who complained about copyright/piracy issues with me distributing the JS files (even though they’re distributed to every browser that downloads the page).

I’m also looking at some other ways to speed up rendering as much as possible. Stay tuned for downloads and a full write up.

Categories: Coding, vbulletin Tags:

vBulletin JS Min

August 8th, 2007 11 comments

I realized today that vBulletin’s Javascript was just too bulky and didn’t really need to be, especially when you have no plans to customize it yourself. So I grabbed all the packages of 3.6.x and minimized all the Javascript. In most cases the Javascript files are 50% of the original, which saves bandwidth and speeds up the loading of your forum.


  • Backup all the .js files from the clientscript directory under your forum root.
  • Copy the files from zip file that matches your version of vBulletin into the clientscript directory.
  • Done!


vBulletin 3.6.0
vBulletin 3.6.1
vBulletin 3.6.2
vBulletin 3.6.3
vBulletin 3.6.4
vBulletin 3.6.5
vBulletin 3.6.6
vBulletin 3.6.7PL1
vBulletin 3.6.8

Categories: Coding, vbulletin Tags:

Multiple versions of IE on one PC

August 3rd, 2007 No comments

I’m always getting grief from my managers about not testing in IE6, which is hard when IE7 is installed on all machines these days. I recently found a little install tool which allows you to run multiple versions of IE on the same machine. It doesn’t fully install IE, just the dll’s and uses dll redirection to trick windows into running an older version of IE.

Although it’s not perfect, it’s a lot easier than running a virtual PC for each version.

The install can be found here:

Categories: Coding Tags:

Valid Email Addresses

February 22nd, 2007 No comments

I found a good page which outlines which characters can be used in email addresses:

Categories: Coding Tags:

Google Sitemap Generator

January 31st, 2007 No comments

I was dissapointed when I saw the current Google sitemap generators available, so I wrote one.

– Generates Google sitemaps
– Generates Yahoo! sitemaps
– Generates plain text sitemap
– Splits sitemaps up into smaller files (as per Google’s instructions)
– Creates sitemap index file
– Pings Google/Yahoo!

This is the first release, so there’s probably some bugs in there somewhere. Please let me know if you find any. There are some examples in the zip file.

To best use the classes, set the variables on the page you call the class from, rather than editing the class file (so changes aren’t lost when you upgrade).


$sitemap = new Google_Sitemap();
$sitemap->doPing = false;
$sitemap->gzip = false;
$sitemap->baseurl = “”;


Version 0.2 – 14/05/2007

Fixed problem with script using too much memory when trying to sitemap hundreds of thousands of pages.

Categories: Coding Tags:

Google datacenter check

November 2nd, 2006 No comments

I’ve written a crude datacenter checker. Unfortunately I cannot host it for everyone as Google would ban my server’s IP, so I’ve packaged up the code so anyone can run it.

Categories: Coding Tags:

Double byte and PHP (unicode problems)

November 2nd, 2006 No comments

A while back I ran into a problem with PHP, how can I read in files that have double byte (unicode) characters and display them in a form that any browser can read. Most programming languages don’t handle these characters very well, and end up with non sense instead of passing through the correct text.

This function should be able to strip out any unicode characters from text and return them as html entities (something none of the core PHP functions are able to do).

function removeuni($content){
preg_match_all(“/[\x{90}-\x{3000}]/u”, $content, $matches);

foreach($matches[0] as $match){
$content = str_replace($match, mb_convert_encoding($match, “HTML-ENTITIES”,”UTF-8″), $content);

return $content;

Categories: Coding Tags:

New Zealand Postcode Database

August 9th, 2006 57 comments

Due to the lack of data from NZ Post, I’ve created this mysql database from the PDF on the NZ Post website.

All efforts have been made to ensure that there are no errors, but there are no guarantees, if you need 100% accurate data please buy NZ Post’s PAF data.

Update: New Zealand Postcode Database version 2

Version 1:

nzpostcodes.sql.gz (467KB)
nzpostcodes.sql.bz2 (313KB)

Categories: Coding, Postcodes Tags: