Thursday, October 30, 2008

SlickSpeed, From The Makers of MooTools

It compares the performance of various CSS selector implementations found in the various JavaScript web development libraries of the day (jQuery, ExtJS, MooTools, ect.)

http://mootools.net/slickspeed/

Wednesday, October 29, 2008

Good Blog To Read

http://blog.objectmentor.com/

Could not load type 'System.Web.Routing.StopRoutingHandler' from assembly 'System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

If you have upgraded from ASP.Net MVC Preview 3 to ASP.Net MVC Preview 5 and are recieving this error:

Could not load type 'System.Web.Routing.StopRoutingHandler' from assembly 'System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

The solution I found was from this ASP.Net Forums Post, about a Runtime error after upgraded to preview 5

Solved!

I had to remove and re-add the updated DLLs to my GAC:

C:\Program Files\Microsoft ASP.NET\ASP.NET MVC CodePlex Preview 5\Assemblies>gacutil -if System.Web.Routing.dll
C:\Program Files\Microsoft ASP.NET\ASP.NET MVC CodePlex Preview 5\Assemblies>gacutil -if System.Web.Abstractions.dll

Wednesday, October 22, 2008

Code Cohesion, Inappropriate Intimacy and Other Dirty Sounding Architecture Principals

Who said software architecture wasn't exciting? 

Take a look at this great MSDN article that my boss at work linked me to, Patterns in Practice: Cohesion and Coupling and another one, I found on my own with Google, about Inappropriate Intimacy, which is defined by the author as "classes become far too intimate and spend too much time delving in each others' private parts."

Software Organization, a common topic of discussion among my technical architect peers, is a critical important component of good implementations.  The platform's future capabilities for reuse, refactorability and maintainability are all set down early in the design and development as cohesion and coupling are either defeated, accepted or ignored completely.

Thursday, October 16, 2008

Apache 2.0 Configuration Redux

I was also reading this related post about creating secure Apache configurations.  Some background on my "Limit 0" is bad.

Security is paramount with public web servers and this article will give you a head start locking down your Apache2 config.

Error "XML request body is larger than the configured limit of 1000000" -- Subversion 1.5, Apache 2.0 and LimitXMLRequestBody 0

Recently, I started getting this error when doing Subversion "update" on a large folder in my repository called "branches"

XML request body is larger than the configured limit of 1000000

This is following up Subversion 1.5.2 upgrade and is occurring in Apache 2.0

The fix, for me, was to remove the limit on the XML request body by setting the following:

LimitXMLRequestBody 0

and the error was fixed.  Limit XML Request Body should not be set to 0 for public web servers, as that will open you up to Denial of Service (DoS) attacks, however, my SVN system is private to my development team and this setting was appropriate for my deployment.

Host Name:                 *** SUBVERSION SERVER ***
OS Name:                   Microsoft(R) Windows(R) Server 2003, Standard Edition
OS Version:                5.2.3790 Service Pack 1 Build 3790
OS Manufacturer:           Microsoft Corporation
OS Configuration:          Member Server
OS Build Type:             Multiprocessor Free
Registered Owner:          Distributed Computing
Original Install Date:     8/4/2005, 2:50:21 PM
System Up Time:            225 Days, 13 Hours, 26 Minutes, 37 Seconds
System Manufacturer:       HP
System Model:              ProLiant DL380 G4
System Type:               X86-based PC
Processor(s):              2 Processor(s) Installed.
                           [01]: x86 Family 15 Model 4 Stepping 1 GenuineIntel ~3400 Mhz
                           [02]: x86 Family 15 Model 4 Stepping 1 GenuineIntel ~3400 Mhz
Input Locale:              en-us;English (United States)
Time Zone:                 (GMT-05:00) Eastern Time (US & Canada)
Total Physical Memory:     2,047 MB
Available Physical Memory: 295 MB
Page File: Max Size:       876 MB
Page File: Available:      1,606 MB


Friday, October 10, 2008

Existing ASP.Net MVC Starter Kits

ASP.Net MVC Starter Kit Ideas Of Mine

A short list of ASP.Net MVC Starter Kit Ideas of mine:

  • ASP.Net MVC AJAX with Pure jQuery
    • Page Regions
      • On Load
      • On Click
    • Modal / Normal AJAX Dialogs
    • AJAX Form POST to MVC Controller
  • ASP.Net MVC AJAX -- The Three Approaches (Postbacks Do NOT Count)
    • XHTML
    • XML
    • JSON
  • ASP.Net MVC ITEM Starter Kit
  • ASP.Net MVC LMS Starter Kit

Thursday, October 09, 2008

Some AJAX Items On Bugzilla

I was looking at this page (https://wiki.mozilla.org/Bugzilla:UE) and thinking about the improvements I deploy with Bugzilla and how they might be generally useful to all Bugzilla users.

A lot of this is inspired by my obsession with AJAX and jQuery, but more so, with the fact that I have deployed Bugzilla to hundreds, if not thousands, of users in my career and I have always been pleased -- both with the system as a platform and with my ability to customize it.
  • Client-Side Table Sorting -- Many tables today in Bugzilla cannot be sorted and are not Zebra'd
    • Bug List
    • User List
    • Classification / Product / Component Lists
    • Request Queue
    • Flags
    • Custom Fields
  • AJAX Content Hovers
    • These can replace links to "fields.html" and allow the user to get immediate information about products, components, resolutions and status
  • Search-As-You-Type and Revise Search From Search Results with an AJAX 'ctype' 
  • AJAX Hovers for "Defect #" or "Bug #" auto-linking.  Dynamic, beautiful and far more informative AJAX hover could display assignees, current status and (configurable?) information
  • Replace attachment iFrames with jQuery .ajax()

General Stuff I Change
  • Switching "Saved Searches" Into Drop-Down Menus to support large numbers of shared queries
  • Many Additional Bug Entry Templates
  • Customized Index.cgi
    • Include Index of Saved Searches
    • Canned Reports
    • Links To New Defect Forms
  • Add "Clone Defect With Same Product" Link
  • Reverse Blocks/Depends On for Clones
  • Add "Clone Defect To Same Product" Link to All Dependency Tree Bug Tree Nodes
  • Add a Knob "Assign & Accept This Defect Into My Queue"
    • This may be a function of my SVN and CVS hook scripts that require this state for defects to be used for commits.  This feature is probably only as useful as the Assigned/Accepted status is for the user
  • Increase the Whiteboard to a Textarea

ASP.NET MVC CodePlex Preview5 and Visual Studio 2008 SP1

As you have read in the Release Notes for ASP.Net MVC CodePlex Preview 5
the new release of MVC is not compatible with Service Pack 1 Beta. You must install SP1 (a long process) starting with a download from Microsoft.

The Preview 5 Release Notes say that you must install SP1 before you install ASP.Net MVC Preview 5, however, I found that installing SP1 on top of Preview 5 seems to work as well.

I am not certain that this is just the machines I was upgrading or all machines, but it did work for me.

jQuery'd Bugzilla

I have been working on re-doing Bugzilla's UI and my AJAX enhancements in jQuery.

Is anyone else working on this?

Upgrading From ASP.Net MVC Preview 3 to Preview 5

As you know, ASP.net MVC Preview 5 is on the streets.

Busy using Preview 3 to produce awesome web applications, I missed the upgrade to Preview 4.

I am upgrading two big MVC application built on Preview 3.  Here are the issues I found:

Html.ActionLink() Behavior Changed
  1. On This ActionLink and Preview5 Forum Post I found a Solution
  2. The fix is to change this:
     Html.ActionLink("Title", "Action", "Controller", new { id = this.ObjectID } );
to this:
     Html.ActionLink("Title", "Action", "Controller", new { id = this.ObjectID }, null );


Html.Hidden() Behavior Changed
  1. On this MVC UI Helper Article I thought I found a Solution, but no such luck
  2. My fix was to change this:
   Html.Hidden("ReviewId", this.ID);
to this
   Html.Hidden("ReviewId", this.ID.ToString());