Computer Fun

When I was at my parents house this week my Mum presented me with box loads of my old stuff. Apparently now that I own a house I can no longer use the parental storage facility.

While digging through the various books, papers and momentos I discovered a 1984 edition of the Usborne Computer Fun programming book. My parents got me this book when I was playing with my Dad’s BBC Micro (a model B) and I vividly remember typing these programs into the computer.

Installing irssi using macports

To install irssi using macports issue the command:

sudo port install irssi +perl

This will ensure that you get the necessary perl scripting support. Most people using irssi are going to want this.

Note that if you use scriptassist to help you load irssi scripts then you will want some extra perl stuff:

sudo port install p5-libwww-perl

Migrating reporting server database with SQL Server 2005 Standard

If you are moving reporting services to a brand new SQL Server machine (such as setting up a UAT environment or test server) then you may backup and restore the reporting server database from your production machine. You will probably then backup and restore the encryption keys. However you will probably get the error:

“Reporting server can’t be used as part of a scale-out deployment” or something along those lines.

Fear not! Because you aren’t using enterprise you need to remove the key for the old server from the config using:

rskeymgmt -l

and then

rskeymgmt -r

SQL Server Service Broker and Backup Exec

I had a problem today where whenever a full backup of the master database was taken by Backup Exec the Service Broker would say in the SQL Server error logs:

Could not start Service Broker for database id

Google didn’t really know what was going on but I found that if you delete the master4IDR file on the offending server (probably in the default database directory) then do another few backups the problem vanishes.

master4IDR is a copy of the master database that is taken when Backup Exec backs up the database. It is used to do disaster recovery on the server.

What if Facebook could auto-tag uploaded photos?

Facebook could become the ultimate platform for training facial recognition systems. Almost every photo uploaded to the site is of someone. The first thing that you do is to tag the people in the photo, creating a link between the photo and the related person.

But what would happen if the tagging process worked in conjunction with facial recognition technology? Every time a person was tagged in an image you could help the system learn what that person looks like. Eventually the system could become “smart” enough to recognise people on its own.

Auto-tagging photos – it’s the way forward, and you heard it here first!

Check constraints that access the table you are inserting into

In SQL Server 2005 you can write a check constraint that can include a function call. For example:

ALTER TABLE [dbo].[TestTable1]
ADD CONSTRAINT [TestConstraint1]
CHECK ([dbo].[TestFunction1]([PrimaryKeyColumn1],[Column1],[Column2]) = 0)

However if the function you are calling tests the contents of that table you must be aware that the row you are trying to insert or update will already be in the table. Therefore if part of the test is, for example, duplicate checking or date range checking (in the case of writing scheduling software) then you must pass into the function the primary key of the row you are inserting and add that as a where clause to your function:

CREATE FUNCTION [dbo].[TestFunction1]
(
@param1 int,
@param2 int,
@param3 int,
)
RETURNS bit
AS
BEGIN
DECLARE @ClashesFound int
DECLARE @Result bit
SET @ClashesFound = 0
SET @Result = 0
SET @ClashesFound = (
SELECT COUNT(*)
FROM [dbo].[TestTable1]
WHERE
[PrimaryKeyColumn1] <> @param1
)
IF (@ClashesFound > 0)
SET @Result = 1
RETURN @Result
END