# Wednesday, November 01, 2006

This is a useful Regex that Craig wrote today, it pulls out various info from an apache log file.

private static Regex __Regex = null;  
internal static Regex _Regex  
{  
    get  
    {  
        if (__Regex == null)  
        {  
            __Regex = new Regex(@"(?<remoteHost>[^\ ]+?)\ (?<remoteIdent>[^\ ]+?)\ (?<remoteUs"
                + @"er>[^\ ]+?)\ \[(?<requestTime>[^\]]+?)\]\ \""(?<request>(?<r"  
                + @"equestMethod>[^\ ]+?)?\ ?(?<requestPath>[^\ ]+?)?\ ?(?<reque"
                + @"stProtocol>[^\ ]+?)?)\""\ (?<statusCode>[^\ ]+?)\ (?<sizeByt"
                + @"es>[^\ ]+?)\ \""(?<referer>[^\""]*?)\""\ \""(?<userAgent>[^\""]"
                + @"+?)\""\r?\n?"
                RegexOptions.Compiled & RegexOptions.IgnoreCase & RegexOptions.IgnorePatternWhitespace & RegexOptions.CultureInvariant);
        }  
        return __Regex;  
    }  
}

Update: Craig's finally started writing about it, you can read the article here: Apache Log Fun

ASP.Net | IIS
Wednesday, November 01, 2006 5:21:16 PM (GMT Standard Time, UTC+00:00)  #    Disclaimer  |  Comments [0]  | 
All about my day at Prodrive with my shiney new RX-8
Wednesday, November 01, 2006 4:57:45 PM (GMT Standard Time, UTC+00:00)  #    Disclaimer  |  Comments [0]  | 
# Monday, October 30, 2006
The tendering process can be a daunting when you know what you’re doing, but what about if you don’t know what you’re doing? I’ve tried to summarise the process for those of you who haven’t gone through it before have also covered some of the finer points. This is in follow-up to my last article about How to price your work.
Monday, October 30, 2006 5:50:52 PM (GMT Standard Time, UTC+00:00)  #    Disclaimer  |  Comments [0]  | 
# Sunday, October 29, 2006

Having lived in Cornwall for most of my life I had never encountered a Jehovah witness before and before moving up to Birmingham I think I’d only had 2 encounters –both in someone else’s flat so we invited them in for a chat (the usual studenty type malarkey where you grill them on anything that comes into your mind).

Anyways, after moving to Birmingham it was a good 2 years before I would get to meet another and being somewhat tired after work I just told them to go away. Then today we had another pair come around, I’m not particularly religious but push come to shove I’d class myself as a Quaker (yeah yeah save me the oat’s jokes) but it got me thinking, why do they do it? Why do they go around knocking on people’s doors just to be told to P off? Are the free tea and biscuits and grillings from bored/drunk/high students REALLY worth it? Seriously though, WHAT is the point?

Sunday, October 29, 2006 1:26:17 PM (GMT Standard Time, UTC+00:00)  #    Disclaimer  |  Comments [2]  | 
# Wednesday, October 25, 2006

I don’t know about you but I had always thought Orange were the mutt’s nuts when it came to service so after a few years on other networks we decided to give them another try as their tariffs weren’t much more expensive than the competition.

All was great, we signed up and were told that we’d get a load of cash back because we’d signed up a number of phones etc but when it sounds too good to be true it probably is, we’re now coming to the end of our 12month contract and we’re still chasing the credit we’re owed which leaves me wondering whether I want to remain with Orange at the end of the term.

It’s not like we’ve not tried chasing them, I call both the Orange store representative we have AND the customer service centre every month when I get the bill, I’ve also popped in a few times with all the signed paperwork. I don’t think I’d mind sitting on hold for an hour at a go to get through to a representative if I knew that at the end of the call I’d get somewhere but alas we’re still waiting…

Surfing around Google I see I’m not the only one, then I stumbled across this petition which, oddly enough, is run by one of our newer clients. So if you’re also having issues with Orange’s Customer Service go sign it and lets sort this out!

Wednesday, October 25, 2006 6:04:41 PM (GMT Daylight Time, UTC+01:00)  #    Disclaimer  |  Comments [1]  | 
# Friday, October 20, 2006

I was a fan of the last Bravia advert partly because it featured José González but also because I was left wondering whether it was a computer render or really happened (aparently they really did it) but the new Sony Bravia advert is incredible, ok there are a few computer GFX effects in there to remove peoeple etc but oh my word...

The new Sony Bravia advert: www.bravia-advert.com/paint/thead/full/
Friday, October 20, 2006 4:54:40 PM (GMT Daylight Time, UTC+01:00)  #    Disclaimer  |  Comments [0]  | 
# Thursday, October 12, 2006

As some of you know, we’re selling our lovely house 68 Campbell St (www.68campbellst.co.uk). The house has served us well in the past as there’s an office at the rear of the property that we can run the business from and plenty of room for all my CD’s and Stacey’s shoes.

We’ve also found our next place and all was progressing fine until the other day (now a couple of weeks ago) we were called and told that the buyers had pulled out just before the point of exchange. Obviously they’re perfectly at right to do so but man it’s got my back up. We’ve done all the surveys on the next house, sorted all the legal mumbojumbo and were ready to complete within a week, that left us nearly at square one.

A couple of weeks have now passed and luckily we’re in a position to keep this place to rent it out and still buy the next house which is great news, but if you’re out there reading this, you’re really lost out on a lovely house and I just don’t believe the excuse “It’s an old property” –well der!

I feel sorry for anyone else out there who has been gazumped, I hope it all worked out for you in the end.

Thursday, October 12, 2006 5:09:01 PM (GMT Daylight Time, UTC+01:00)  #    Disclaimer  |  Comments [0]  | 
# Tuesday, October 10, 2006

One of the reasons I started this blog was because I felt I often came across nuggets of information that someone else out there may find useful in some small way and that I should share the information where possible. I also wanted a place to store all those little gems that I’m forever forgetting. That and I am forever asked similar questions that I think the “masses” (all three of you) would like to hear about.

For quite some time I’ve been writing sets of articles that I was hoping to raise the profile of The Site Doctor with but as with many things in atm it seems they’ve been slow in getting finished. I have however been collating the various snippets together and collaborating with a number of sources and nearly every time I speak to a new “source” I get asked the same question “why would you want to write about this stuff –it just increases your competition”.

That never fails to make me chuckle to myself (not at you mind), I say why not? No offence but if we’re that unconfident in our knowledge that a few articles about common (and often simple) issues people run into that will suddenly make my competition take over then so be it, but personally I like to feel I’ve got enough knowledge to share and not feel threatened –perhaps the wrong tack to take but hey!

I also feel that by sharing the information with other people (not just developers, there’s stuff here for everyone) that in my own small way I’m making the web a better place –even if I’m not personally writing the code something here may have influenced you –even if it’s just answering a simple question you’ve been tearing your hair out over such as “Do pineapples grow on bushes” –yes they do, you can see photographic proof here.

Anyways, that’s my 2p worth, if you don’t feel secure enough to share your findings that’s up to you!

Tuesday, October 10, 2006 9:44:53 AM (GMT Daylight Time, UTC+01:00)  #    Disclaimer  |  Comments [0]  | 
# Monday, October 09, 2006

This is a useful stored procedure for assigning permissions to users quickly and easily. We tend to assign a new login to each application we develop, this way we limit the damage possible in the event of a username/password compromise.

/*--------------------------------------------------------------------------
Automatically assign the role permissions
--------------------------------------------------------------------------*/

USE DatabaseName
SET NOCOUNT ON

DECLARE @objName varchar(80)
DECLARE @objType char(2)
DECLARE @username varchar(100)
SET @username = 'UserNameToAssignPermissionsTo'

DECLARE grant_perms_on_sps CURSOR FOR
SELECT name, type
FROM SYSOBJECTS
WHERE
  (
    (type = 'P')
   OR
    (type = 'FN')
   OR
    (type = 'TF')
   OR
    (type = 'U')
   OR
    (type = 'V')
  )
 AND
  uid = 1
 AND
  status > -1
 AND
  LEFT(name, 3) <> 'dt_' --See Note 1

OPEN grant_perms_on_sps
FETCH NEXT FROM grant_perms_on_sps
INTO @objName, @objType

WHILE @@FETCH_STATUS = 0
BEGIN
  IF @objType = 'P' OR @objType = 'FN'
  BEGIN
    EXEC ('GRANT EXECUTE ON dbo.' + @objName + ' TO ' + @username)
    PRINT ('GRANTED EXECUTE ON dbo.' + @objName + ' TO ' + @username)
  END

  IF @objType = 'TF'
  BEGIN
    EXEC ('GRANT SELECT ON dbo.' + @objName + ' TO ' + @username)
    PRINT ('GRANTED SELECT ON dbo.' + @objName + ' TO ' + @username)
  END

  FETCH NEXT FROM grant_perms_on_sps
  INTO @objName, @objType
END

CLOSE grant_perms_on_sps
DEALLOCATE grant_perms_on_sps

GO
------------------------------------------------------------------------

Note 1: In addition, we tend to prefix our database objects with useful prefixes to group relevant tables, i.e. if we had login information stored in the database we may use “Login_” as the prefix, using this method with this Stored Procedure to assign permissions you can easily select the relevant objects. So you could alter the stored procedure a touch:

DECLARE @prefix varchar(100)
SET @prefix = 'PrefixToUse'

LEFT(name, LEN(@prefix)) = @prefix

Monday, October 09, 2006 3:42:49 PM (GMT Daylight Time, UTC+01:00)  #    Disclaimer  |  Comments [0]  | 

While fitting my new chipset cooler fan this morning I was checking out an error message on Google (which as it turns out I knew the answer to) and I was presented with a CAPTCHA image –I guess Google’s getting a lot of automated requests. This was using the built in Firefox search box but then I got it again on the PC using Google’s search box!

Google CAPTCHA

Monday, October 09, 2006 9:51:17 AM (GMT Daylight Time, UTC+01:00)  #    Disclaimer  |  Comments [0]  |