Wednesday, 18 June 2008

Postgres - Converting Encodings

I've run into a number of problems recently with dealing with old databases of ours which are encoded with LATIN1. Now, with postgres 8.3 (maybe before) you'll get a message if you try to create LATIN1 saying something like
createdb: database creation failed: ERROR:  encoding LATIN1 does not match server's locale en_US.UTF-8
DETAIL: The server's LC_CTYPE setting requires encoding UTF8.

I got bored trying to work out why - it seems to be that postgres now prevents what it shouldn't have allowed in the past but did. But if you do want to convert from the old to the new locale - how do you do it? Remarkably simple it turns out.

Do a pg_dump of your existing database. Then take the dump file and run it through iconv - something like this.
 
iconv -f latin1 -t utf8 original.sql > converted.sql

It's pretty obvious what the options mean (-f = from, -t = to). iconv comes as standard on Mac and should be available for most linux distos (seems to be installed on ubuntu server by default).

However, before you get too excited - you should ensure that whatever apps are using that database will cope with the new encoding for input and output. That may be 'non-trivial' ;)

Sunday, 15 June 2008

Fuel strike: 100 petrol stations reported to have run dry

The Guardian reports "Fuel strike: 100 petrol stations reported to have run dry". I'm not sure if that is supposed to make us worried. Doesn't sound very high to me.

According to Wikipedia we have 9,271 petrol stations in the UK. So that's ... er ... just over 1%.

Come on - we need HEADLINES!

Rhino on OS X Leopard

When I was using Ubuntu as my main development environment I used rhino to try and learn Javascript in a bit more detail.

Coming back to OS X means that I wanted rhino but had no idea how to install. This is how I did it. If you come across this page and it's wrong please let me know. I just wanted to get something running.

1. Get the source file and extract it. I used ftp://ftp.mozilla.org:21/pub/mozilla.org/js/rhino1_7R1.zip. Use unzip rhino_7R1.zip if it doesn't extract.

2. In the top level you'll see a js.jar file - copy that to /usr/share/java (sudo cp js.jar /usr/share/java)

3. Create the following script in /usr/local/bin/rhino (this is copied from the rhino install on Ubuntu Hardy)
#!/bin/sh

/usr/bin/java -jar /usr/share/java/js.jar $@


4. Make it executable (chmod +x /usr/local/bin/rhino)

Now if you type rhino you can do the following

mbp:java icottee$ rhino 
Rhino 1.7 release 1 2008 03 06
js> x = 23 * 44
1012
js> y = 'fish'
fish
js> x
1012
js> y
fish
js>

Truely you are a javascript god.

Thursday, 5 June 2008

8 Things We Hate About IT

I just read this and noticed one of the comments at the end of it.
Did you write the first draft of this article in crayon? The only point made here that even approaches a fundamental understanding with the current reality of actual IT experience is the fact that 75% of the guys are approaching 40 years of age and haven't the slightest bit of motivation to learn new things.
I find the idea that as you approach 40 you lose motivation to learn new things to be boggling. My big problem at the moment is my motivation to learn new things is stronger than ever but the time I have to sit and focus on such things is pretty minimal.

I head back to the UK tomorrow morning and of the books I brought here to read I've managed to complete about 0.25% (if I'm feeling generous).