The blog has moved to http://jessehouse.com/ ... Many google searches point here so I am leaving it operational, but there will be no new posts.

Sunday, May 29, 2011

rails 3.1 javascript execution

Looking at a few different ways to execute javascript in rails 3.1. By default all javascript is compiled into one file and embedded in anonymous functions which all execute on each page.

We often want to be selective in how our javascript executes, based on controller and actions. We look at 3 different approaches

  • use selectors based on form id
  • use selectors based on css classes on the body
  • namespaced javascript objects

if you know of any other approaches I would love to hear those as well

I recommend you click the HD link on the player and view it on Vimeo in full screen mode, this embed version is not so crisp.


Resources

Thursday, May 26, 2011

rails 3.1 asset pipeline

a quick look at app, lib, vendor and gem assets for rails 3.1 rc1

It is a pretty rough screen cast, but hopefully has some useful information for you

I recommend you click the HD link on the player and view it on Vimeo in full screen mode, this embed version is not so crisp.


Resources:


UPDATE: see "Unholy Rails: External Scripts, jQuery Plugins, and Page-Specific JavaScript" for a detailed look at using the asset pipeline with rails. 

Wednesday, May 25, 2011

Stream Tennis - 2011 Roland Garros

if your ISP supports ESPN3 they have live and replay streams for 2011 Roland Garros

Sunday, May 8, 2011

AT&T site has some serious issues

I went to check on the price of DSL, I've been a long time Comcast customer and getting tired of the high cost. So I went to check it out on AT&T - all I can say is WTF?

Select 'DSL without phone', but then my choices are everything except what I am looking for?
I think they need to go back and do some more QA


Now I get to choose my phone service - WTF: I selected 'without phone service' for a reason

Tuesday, May 3, 2011

Simple.Data and MongoDB

Get really dynamic with Simple.Data and MongoDB

took me awhile to figure out the proper way to establish a connection with Simple.Data.MongoDB




Resources

You can install all of the dlls using Nuget, search for Simple.Data.MongoDB and install that package it will bring in the rest

Some of the errors I received on my journey

From Simple.Data
Message=No valid exports were found that match the constraint '((exportDefinition.ContractName == "Ado") AndAlso (exportDefinition.Metadata.ContainsKey("ExportTypeIdentity") AndAlso "Simple.Data.Adapter".Equals(exportDefinition.Metadata.get_Item("ExportTypeIdentity"))))', invalid exports may have been rejected.
And from mongo driver when my connection string was not in the correct format, I was using the wrong port
Message=No connection could be made because the target machine actively refused it 127.0.0.1:

Friday, April 22, 2011

Fixing asp.net MVC AuthorizeAttribute

With very little code we can fix asp.net MVC AuthorizeAttribute
What problems does it have? Too much redirection.

  • When making ajax calls a HTTP 401 (Unauthorized) would be better than a redirection
  • If I am already logged in but access a secure resource (controller / action) redirecting to the login page is far from ideal, an access denied view makes more sense
When is the built in redirection appropriate? When making standard HTTP request and the user is not authenticated.

it turns out it is relatively easy to fix these issues
  • inherit AuthorizeAttribute
  • override HandleUnauthorizedRequest
#1: Ajax request should not return redirection / html response

if the user cannot authorize an action and the request is made via ajax we don't want 200 or 302 response codes

we do want 401 Unauthorized, but we have to settle for a 403 Forbidden

The code to fix this

#2: Authenticated users should not redirect to the login page, they should get an Access Denied page
The code to fix this

Turns out very little code is needed - but seems like some of this should just be built in? Using the 401 response won't work because the asp mvc framework must be picking that up later on and forcing the redirection to the login page, the 403 is not ideal but it is effective.

The code for our class - AuthorizeFor


Usage of our AuthorizeFor attribute


Resources