<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>robertwray.co.uk | random ramblings...</title>
    <link rel="alternate" type="text/html" href="http://www.robertwray.co.uk/blog/" />
    <link rel="self" type="application/atom+xml" href="http://www.robertwray.co.uk/blog/atom.xml" />
    <id>tag:www.robertwray.co.uk,2008-01-05:/blog//7</id>
    <updated>2009-01-04T11:22:42Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 4.23-en</generator>

<entry>
    <title>Resolving Coolite objects in client script</title>
    <link rel="alternate" type="text/html" href="http://www.robertwray.co.uk/blog/2009/01/resolving-coolite-objects-in-c.html" />
    <id>tag:www.robertwray.co.uk,2009:/blog//7.319</id>

    <published>2009-01-04T10:36:40Z</published>
    <updated>2009-01-04T11:22:42Z</updated>

    <summary>Has anyone found a good way to do this? Or, indeed, is there a trick I&apos;m missing from Coolite? There doesn&apos;t appear to be a &quot;Coolite.&quot; namespace declared in the same way there&apos;s an &quot;Ext&quot; namespace declared/provided when the components...</summary>
    <author>
        <name>Rob</name>
        
    </author>
    
        <category term="Javascript" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="asp.net" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="aspnet" label="ASP.net" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="coolite" label="Coolite" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="extjs" label="ExtJs" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="javascript" label="Javascript" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.robertwray.co.uk/blog/">
        <![CDATA[Has anyone found a good way to do this? Or, indeed, is there a trick I'm missing from Coolite? There doesn't appear to be a "Coolite." namespace declared in the same way there's an "Ext" namespace declared/provided when the components are used on a page.<br /><br />What I want to be able to do is write arbitrary client side javascript (event handlers and suchlike) inside a script block rather than inside an attribute of the server-side tag. The different ways I've discovered are:<br /><br /><u><b>Inside tag attributes</b></u><br />This is the tidiest way of writing the code as you get "nice" shortcut referencing of the server-side components like:<br /><br /><pre>  <span style="color: Blue;">&lt;</span><span style="color: Maroon;">ext:GridPanel</span> <span style="color: Red;">Title</span>="<span style="color: Blue;">My Grid of Items</span>" <span style="color: Red;">ID</span>="<span style="color: Blue;">myGrid</span>" <span style="color: Red;">runat</span>="<span style="color: Blue;">server</span>" <span style="color: Red;">StoreID</span>="<span style="color: Blue;">itemStore</span>" <span style="color: Blue;">&gt;</span>
      <span style="color: Blue;">&lt;</span><span style="color: Maroon;">ColumnModel</span><span style="color: Blue;">&gt;</span>
          <span style="color: Blue;">&lt;</span><span style="color: Maroon;">Columns</span><span style="color: Blue;">&gt;</span>
              <span style="color: Blue;">&lt;</span><span style="color: Maroon;">ext:Column</span> <span style="color: Red;">Header</span>="<span style="color: Blue;">Id</span>" <span style="color: Red;">DataIndex</span>="<span style="color: Blue;">ItemId</span>"/<span style="color: Blue;">&gt;</span>
              <span style="color: Blue;">&lt;</span><span style="color: Maroon;">ext:Column</span> <span style="color: Red;">Header</span>="<span style="color: Blue;">Name</span>" <span style="color: Red;">DataIndex</span>="<span style="color: Blue;">ItemName</span>"<span style="color: Blue;">&gt;</span>
              <span style="color: Blue;">&lt;</span>/<span style="color: Maroon;">ext:Column</span><span style="color: Blue;">&gt;</span>
          <span style="color: Blue;">&lt;</span>/<span style="color: Maroon;">Columns</span><span style="color: Blue;">&gt;</span>
      <span style="color: Blue;">&lt;</span>/<span style="color: Maroon;">ColumnModel</span><span style="color: Blue;">&gt;</span>
      <span style="color: Blue;">&lt;</span><span style="color: Maroon;">SelectionModel</span><span style="color: Blue;">&gt;</span>
          <span style="color: Blue;">&lt;</span><span style="color: Maroon;">ext:RowSelectionModel</span> <span style="color: Red;">runat</span>="<span style="color: Blue;">server</span>" <span style="color: Red;">SingleSelect</span>="<span style="color: Blue;">true</span>"<span style="color: Blue;">&gt;</span>
              <span style="color: Blue;">&lt;</span><span style="color: Maroon;">Listeners</span><span style="color: Blue;">&gt;</span>
                  <span style="color: Blue;">&lt;</span><span style="color: Maroon;">RowSelect</span> <span style="color: Red;">Handler</span>=<br />                    "<span style="color: Blue;">#{modifyItemButton}.enable(); <br /></span>                    <span style="color: Blue;">#{deleteItemButton}.enable();</span>" /<span style="color: Blue;">&gt;</span>
                  <span style="color: Blue;">&lt;</span><span style="color: Maroon;">RowDeselect</span> <span style="color: Red;">Handler</span>=<br />                    "<span style="color: Blue;">if (!#{myGrid}.hasSelection()) <br /></span>                    <span style="color: Blue;">{<br /></span>                    <span style="color: Blue;">  #{modifyItemButton}.disable(); <br /></span>                    <span style="color: Blue;">  #{deleteItemButton}.disable();<br /></span>                    <span style="color: Blue;">}</span>" /<span style="color: Blue;">&gt;</span>
                  <span style="color: Blue;">&lt;</span><span style="color: Maroon;">Show</span> <span style="color: Red;">Handler</span>=<br />                    "<span style="color: Blue;">if (!#{myGrid}.hasSelection()) <br /></span>                    <span style="color: Blue;">{<br /></span>                      <span style="color: Blue;">#{modifyItemButton}.disable(); <br /></span>                      <span style="color: Blue;">#{deleteItemButton}.disable();<br /></span>                    <span style="color: Blue;">}</span>" /<span style="color: Blue;">&gt;</span>
                  <span style="color: Blue;">&lt;</span><span style="color: Maroon;">SelectionChange</span> <span style="color: Red;">Handler</span>=<br />                    "<span style="color: Blue;">if (!#{myGrid}.hasSelection()) <br /></span>                    <span style="color: Blue;">{<br /></span>                      <span style="color: Blue;">#{modifyItemButton}.disable(); <br /></span>                      <span style="color: Blue;">#{deleteItemButton}.disable();<br /></span>                    <span style="color: Blue;">}</span>" /<span style="color: Blue;">&gt;</span>
              <span style="color: Blue;">&lt;</span>/<span style="color: Maroon;">Listeners</span><span style="color: Blue;">&gt;</span>
          <span style="color: Blue;">&lt;</span>/<span style="color: Maroon;">ext:RowSelectionModel</span><span style="color: Blue;">&gt;</span>
      <span style="color: Blue;">&lt;</span>/<span style="color: Maroon;">SelectionModel</span><span style="color: Blue;">&gt;</span>
      <span style="color: Blue;">&lt;</span><span style="color: Maroon;">Buttons</span><span style="color: Blue;">&gt;</span>
          <span style="color: Blue;">&lt;</span><span style="color: Maroon;">ext:Button</span> <span style="color: Red;">Text</span>="<span style="color: Blue;">Refresh</span>" <span style="color: Red;">runat</span>="<span style="color: Blue;">server</span>" <span style="color: Red;">ID</span>="<span style="color: Blue;">refreshGridButton</span>"<span style="color: Blue;">&gt;</span>
              <span style="color: Blue;">&lt;</span><span style="color: Maroon;">Listeners</span><span style="color: Blue;">&gt;</span>
                  <span style="color: Blue;">&lt;</span><span style="color: Maroon;">Click</span> <span style="color: Red;">Fn</span>="<span style="color: Blue;">refreshGridButton_Click</span>" /<span style="color: Blue;">&gt;</span>
              <span style="color: Blue;">&lt;</span>/<span style="color: Maroon;">Listeners</span><span style="color: Blue;">&gt;</span>
          <span style="color: Blue;">&lt;</span>/<span style="color: Maroon;">ext:Button</span><span style="color: Blue;">&gt;</span>
          <span style="color: Blue;">&lt;</span><span style="color: Maroon;">ext:Button</span> <span style="color: Red;">Text</span>="<span style="color: Blue;">New</span>" <span style="color: Red;">runat</span>="<span style="color: Blue;">server</span>" <span style="color: Red;">ID</span>="<span style="color: Blue;">createItemButton</span>"<span style="color: Blue;">&gt;</span>
              <span style="color: Blue;">&lt;</span><span style="color: Maroon;">Listeners</span><span style="color: Blue;">&gt;</span>
                  <span style="color: Blue;">&lt;</span><span style="color: Maroon;">Click</span> <span style="color: Red;">Fn</span>="<span style="color: Blue;">createItemButton_Click</span>" /<span style="color: Blue;">&gt;</span>
              <span style="color: Blue;">&lt;</span>/<span style="color: Maroon;">Listeners</span><span style="color: Blue;">&gt;</span>
          <span style="color: Blue;">&lt;</span>/<span style="color: Maroon;">ext:Button</span><span style="color: Blue;">&gt;</span>
          <span style="color: Blue;">&lt;</span><span style="color: Maroon;">ext:Button</span> <span style="color: Red;">Text</span>="<span style="color: Blue;">Delete</span>" <span style="color: Red;">runat</span>="<span style="color: Blue;">server</span>" <span style="color: Red;">ID</span>="<span style="color: Blue;">deleteItemButton</span>" <span style="color: Red;">Disabled</span>="<span style="color: Blue;">true</span>"<span style="color: Blue;">&gt;</span>
              <span style="color: Blue;">&lt;</span><span style="color: Maroon;">Listeners</span><span style="color: Blue;">&gt;</span>
                  <span style="color: Blue;">&lt;</span><span style="color: Maroon;">Click</span> <span style="color: Red;">Fn</span>="<span style="color: Blue;">deleteItemButton_Click</span>" /<span style="color: Blue;">&gt;</span>
              <span style="color: Blue;">&lt;</span>/<span style="color: Maroon;">Listeners</span><span style="color: Blue;">&gt;</span>
          <span style="color: Blue;">&lt;</span>/<span style="color: Maroon;">ext:Button</span><span style="color: Blue;">&gt;</span>
          <span style="color: Blue;">&lt;</span><span style="color: Maroon;">ext:Button</span> <span style="color: Red;">Text</span>="<span style="color: Blue;">Modify</span>" <span style="color: Red;">runat</span>="<span style="color: Blue;">server</span>" <span style="color: Red;">ID</span>="<span style="color: Blue;">modifyItemButton</span>" <span style="color: Red;">Disabled</span>="<span style="color: Blue;">true</span>"<span style="color: Blue;">&gt;</span>
              <span style="color: Blue;">&lt;</span><span style="color: Maroon;">Listeners</span><span style="color: Blue;">&gt;</span>
                  <span style="color: Blue;">&lt;</span><span style="color: Maroon;">Click</span> <span style="color: Red;">Fn</span>="<span style="color: Blue;">modifyItemButton_Click</span>" /<span style="color: Blue;">&gt;</span>
              <span style="color: Blue;">&lt;</span>/<span style="color: Maroon;">Listeners</span><span style="color: Blue;">&gt;</span>
          <span style="color: Blue;">&lt;</span>/<span style="color: Maroon;">ext:Button</span><span style="color: Blue;">&gt;</span>
      <span style="color: Blue;">&lt;</span>/<span style="color: Maroon;">Buttons</span><span style="color: Blue;">&gt;</span>
  <span style="color: Blue;">&lt;</span>/<span style="color: Maroon;">ext:GridPanel</span><span style="color: Blue;">&gt;</span></pre>
<br />Which shows using the "#" shortcut to resolve client-side control names. This doesn't actually do anything client-side, but instead is processed by Coolite as part of the controls rendering and converted into fully qualified names. It also makes for code that's quite difficult to work on as you get no Intellisense/Syntax highlighting, etc, inside the attribute.<br /><br /><u><b>&lt;%=ServerControl.ClientID=&gt; jiggery-pokery</b></u><br /><br />The other option is to have a block of code inside your javascript that says something like:<br /><br /><blockquote>function getMyGrid() { return &lt;%=myGrid.ClientID%&gt;; }<br /></blockquote>which causes the ASP.net rendering engine to emit the relevant reference. This, rather than using "document.getElementById" works for Coolite created ExtJs components as they're javascript objects that render markup, rather than markup elements with associated javascript. Or at least, that's how it appears from my perspective (Your viewpoint may vary).<br /><br />The code snippet above seems to generally upset the crap out of the Javascript parsing engine in Visual Studio 2k8 and means you get an irritating yellow warning in the Error List. Changing it to be the following code (yes, eval bad, etc,..) removes the warning:<br /><br /><blockquote>function getMyGrid() { return eval('&lt;%=myGrid.ClientID%&gt;'); }<br /></blockquote><u><b>What I want</b></u><br /><br />Something similar to "document.getElementById" or ASP.net AJAX's $get/$find pair but for Coolite. It may already be in the Coolite code, but if not, it's going to get written (if at all possible) by me very soon. So, I'll be able to write:<br /><br /><blockquote>var myGrid = Coolite.getComponent('myGrid');<br />if (myGrid.hasSelection())<br />{<br />// Do something here<br />}<br /></blockquote>Without having to worry about the fact that 'myGrid' is stuck in several ASP.net naming containers and is thus actually called ctl00_mainArea_subArea_ctl02_myGrid, or something equally obscure.<br />]]>
        
    </content>
</entry>

<entry>
    <title>extJs: Combobox drop-down is half width</title>
    <link rel="alternate" type="text/html" href="http://www.robertwray.co.uk/blog/2008/12/extjs-combobox-drop-down-is-ha.html" />
    <id>tag:www.robertwray.co.uk,2008:/blog//7.318</id>

    <published>2008-12-23T14:58:31Z</published>
    <updated>2008-12-23T15:10:51Z</updated>

    <summary>I&apos;ve been battling (on and off) with an extJs combobox not being wide enough for the past few days and finally google has come up trumps for me. The hint about setting &quot;hideMode&quot; to &quot;offsets&quot; seems to solve the problem.It...</summary>
    <author>
        <name>Rob</name>
        
    </author>
    
        <category term="Javascript" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="extjs" label="ExtJs" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.robertwray.co.uk/blog/">
        <![CDATA[I've been battling (on and off) with an extJs combobox not being wide enough for the past few days and finally google has come up trumps for me. The hint about setting <a href="https://extjs.com/forum/showthread.php?p=202882">"hideMode" to "offsets"</a> seems to solve the problem.<br /><br />It does seem to cause a new rendering oddity though, the combobox suffering the issue is contained inside of an anchor inside of a form layout inside of the fifth of a set of tab panels. Multiple comboboxes on the first tab (which incidentally is default visible) don't seem to exhibit the problem. The tab the combo is on contains the combo, and a grid with two associated buttons:<br /><br />&lt;tab&gt;<br /><pre>&nbsp;&nbsp;&nbsp; &lt;form&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;anchor&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;combo /&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/anchor&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;anchor&gt;<br />            &lt;label /&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;grid&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;columnModel /&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;buttons&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;button1 /&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;button2 /&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;buttons&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;grid&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/anchor&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/form&gt;<br />&lt;/tab&gt;<br /></pre><br />When initially rendered, the label for the combo doesn't appear, nor do the buttons for the grid, they in fact do't render until the combo's drop-down is triggered. There's also a noticable lag when the tab is selected between the drop-down button part of the combobox appearing (show straight away) and the main text-box part showing (shows after a second). Grrrr!<br />]]>
        
    </content>
</entry>

<entry>
    <title>extJs: getClientRects() error - Part 2</title>
    <link rel="alternate" type="text/html" href="http://www.robertwray.co.uk/blog/2008/12/extjs-getclientrects-error---p.html" />
    <id>tag:www.robertwray.co.uk,2008:/blog//7.317</id>

    <published>2008-12-22T15:34:03Z</published>
    <updated>2008-12-22T15:40:59Z</updated>

    <summary>Previously: http://www.robertwray.co.uk/blog/2008/12/extjs-getclientrects-error.htmlAfter encountering the getClientRects() issue again I downgraded to IE7 to eliminate a beta browser as the causal factor. It still happened. Grr!Having found a thread about it on the extJs forums, it looks like it&apos;s caused by a...</summary>
    <author>
        <name>Rob</name>
        
    </author>
    
    <category term="coolite" label="Coolite" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="extjs" label="ExtJs" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.robertwray.co.uk/blog/">
        <![CDATA[<b>Previously: <a href="http://www.robertwray.co.uk/blog/2008/12/extjs-getclientrects-error.html">http://www.robertwray.co.uk/blog/2008/12/extjs-getclientrects-error.html</a></b><br /><br />After encountering the getClientRects() issue again I downgraded to IE7 to eliminate a beta browser as the causal factor. It still happened. Grr!<br /><br />Having found a thread about it on the <a href="http://extjs.com/forum/showthread.php?t=26276">extJs forums</a>, it looks like it's caused by a bit of craptitude in the extJs version that's included in Coolite v0.6. I want 0.7!! (At least there's a work-around/solution in the linked forum posting for those not using Coolite).<br />]]>
        
    </content>
</entry>

<entry>
    <title>Riffing on: Avoiding the Uncanny Valley of User Interface</title>
    <link rel="alternate" type="text/html" href="http://www.robertwray.co.uk/blog/2008/12/riffing-on-avoiding-the-uncann.html" />
    <id>tag:www.robertwray.co.uk,2008:/blog//7.316</id>

    <published>2008-12-18T08:30:00Z</published>
    <updated>2008-12-24T13:12:50Z</updated>

    <summary>Inspired by: http://www.codinghorror.com/blog/archives/000869.htmlNever has a truer word been spoken. Trying to shoehorn desktop application UI paradigms into a web based application never ends well. Just look at &apos;A qWikiOffice Desktop&apos; for a shining example of all that is wrong with...</summary>
    <author>
        <name>Rob</name>
        
    </author>
    
        <category term="Tech" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="itunes" label="itunes" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ui" label="ui" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="webdesign" label="web design" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.robertwray.co.uk/blog/">
        <![CDATA[Inspired by: <a href="http://www.codinghorror.com/blog/archives/000869.html">http://www.codinghorror.com/blog/archives/000869.html</a><br /><br />Never has a truer word been spoken. Trying to shoehorn desktop application UI paradigms into a web based application never ends well. Just look at '<a href="http://qwikioffice.com/desktop-demo/login.html">A qWikiOffice Desktop'</a> for a shining example of all that is wrong with doing this. When loaded on a Mac, it's going to look horribly, horribly out of place thanks to using pseudo-Windows theming. When loaded on an XP box (or even a Vista box running a 'classic' theme) it's going to look horribly out of place. More importantly, the question is <b>what does your application gain from looking like this</b>?<br /><br />The answer to the question above will almost certainly always be 'it looks good' or 'it's got lots of features'. A web application can look good without apeing that of a desktop application. It can look better.<br /><br />Whilst I'm mentioning this, I have to say that my most loathed example of the UI Uncanny Valley has to be itunes. It uses the Mac look and feel on Windows and thus doesn't fit in at all. Bleurgh.<br /> ]]>
        
    </content>
</entry>

<entry>
    <title>Failed to access IIS metabase on ASP.net request</title>
    <link rel="alternate" type="text/html" href="http://www.robertwray.co.uk/blog/2008/12/failed-to-access-iis-metabase.html" />
    <id>tag:www.robertwray.co.uk,2008:/blog//7.315</id>

    <published>2008-12-17T13:15:59Z</published>
    <updated>2008-12-17T13:18:49Z</updated>

    <summary>If you encounter the error message &quot;Failed to access IIS metabase&quot; when making a request to a newly created ASP.net virtual directory under IIS, or even one that was created a whle ago on a machine that has had Visual...</summary>
    <author>
        <name>Rob</name>
        
    </author>
    
        <category term=".net" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Tech" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="asp.net" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="aspnetiismetabase" label="asp.net iis metabase" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.robertwray.co.uk/blog/">
        <![CDATA[If you encounter the error message "Failed to access IIS metabase" when making a request to a newly created ASP.net virtual directory under IIS, or even one that was created a whle ago on a machine that has had Visual Studio added/removed/upgraded/repaired, the solution is generally to go to WINDOWS_DIRECTORY\Microsoft.Net\Framework\FRAMEWORK_VERSION in a command prompt and run "aspnet_regiis -i"<br /><br /><blockquote>Discovered at: <a href="http://cgaskell.wordpress.com/2006/11/22/failed-to-access-iis-metabase/">http://cgaskell.wordpress.com/2006/11/22/failed-to-access-iis-metabase/</a><br /></blockquote><br />]]>
        
    </content>
</entry>

<entry>
    <title>Top blog entries of 2008</title>
    <link rel="alternate" type="text/html" href="http://www.robertwray.co.uk/blog/2008/12/top-blog-entries-of-2008.html" />
    <id>tag:www.robertwray.co.uk,2008:/blog//7.314</id>

    <published>2008-12-17T09:33:36Z</published>
    <updated>2008-12-17T09:46:58Z</updated>

    <summary>I was looking through my web stats and saw that my most-read posts were:&quot;Insufficient System Resources Exist to Complete the API.&quot;Lamb Shanks with Cannellini beans and Balsamic VinegarUsing Classic ASP on Vista/Longhorn/IIS7 (Actually in my stats for the URL: http://robertwray.co.uk/blog/classic-asp/2007/05/...</summary>
    <author>
        <name>Rob</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.robertwray.co.uk/blog/">
        <![CDATA[I was looking through my web stats and saw that my most-read posts were:<br /><ol><li><a href="http://robertwray.co.uk/blog/2006/03/insufficient-sy.html">"Insufficient System Resources Exist to Complete the API."</a></li><li><a href="http://robertwray.co.uk/recipes/2006/06/post.html">Lamb Shanks with Cannellini beans and Balsamic Vinegar</a></li><li><a href="http://www.robertwray.co.uk/blog/2007/05/using-classic-a.html">Using Classic ASP on Vista/Longhorn/IIS7</a> <br />(Actually in my stats for the URL: <a href="http://robertwray.co.uk/blog/classic-asp/2007/05/">http://robertwray.co.uk/blog/classic-asp/2007/05/</a> )<br /></li><li><a href="http://robertwray.co.uk/recipes/2007/04/sausage-casserole.html">Sausage Casserole</a></li><li><a href="http://robertwray.co.uk/blog/2008/01/aspnet-viewstate.html">ASP.net: Viewstate</a></li></ol>With just over 1,200 views of the most read post, it surprised me to see that only 40 people had used the exact searchterm to find my site. I wonder where the others found it? My highest number of searches for a term was 314 for "sausage casserole", and my lowest number of search terms was 1, for "sausage caseroles" (plural!).<br /><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>extJs: getClientRects() error</title>
    <link rel="alternate" type="text/html" href="http://www.robertwray.co.uk/blog/2008/12/extjs-getclientrects-error.html" />
    <id>tag:www.robertwray.co.uk,2008:/blog//7.313</id>

    <published>2008-12-17T09:19:56Z</published>
    <updated>2008-12-17T09:26:56Z</updated>

    <summary><![CDATA[I've been encountering a strange error with extJs (when using Coolite) that I think may be IE8 specific, but I haven't been able to prove it yet.When I use the &lt;ext:Grid&gt; and set the ClicksToEdit to "1", rather than the...]]></summary>
    <author>
        <name>Rob</name>
        
    </author>
    
        <category term=".net" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="asp.net" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="coolite" label="Coolite" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="extjs" label="ExtJs" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.robertwray.co.uk/blog/">
        <![CDATA[I've been encountering a strange error with extJs (when using <a href="http://www.coolite.com/">Coolite</a>) that I think may be IE8 specific, but I haven't been able to prove it yet.<br /><br />When I use the &lt;ext:Grid&gt; and set the ClicksToEdit to "1", rather than the default of 2, if I click through the editable fields in the grid too quickly I receive an "unspecified error" on a call to getClientRects. Very odd. Also, the editable textboxes for the bottom-most (of the two rows in the grid) row won't render/become editable unless the grid has been sorted (at least once). Even more odd.<br /> ]]>
        
    </content>
</entry>

<entry>
    <title>extJS: VType for validating a time</title>
    <link rel="alternate" type="text/html" href="http://www.robertwray.co.uk/blog/2008/12/extjs-vtype-for-validating-a-t.html" />
    <id>tag:www.robertwray.co.uk,2008:/blog//7.312</id>

    <published>2008-12-16T08:30:45Z</published>
    <updated>2008-12-16T09:41:16Z</updated>

    <summary>I needed a VType for validating a time using the extJs framework in the format HH:MM (24 hour clock, no &#8216;AM&#8217; or &#8216;PM&#8217;) and couldn&#8217;t find one that quite fit the bill, so a tweaked version is:Ext.form.VTypes[&#8220;timeVal&#8221;] = /^([0-9]|1[0-9]|2[0-3]):([0-5][0-9])$/i;Ext.form.VTypes[&#8220;timeMask&#8221;] =...</summary>
    <author>
        <name>Rob</name>
        
    </author>
    
        <category term="Javascript" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="extjs" label="ExtJs" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="vtype" label="VType" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.robertwray.co.uk/blog/">
        <![CDATA[<p><p>I needed a VType for validating a time using the extJs framework in the format HH:MM (24 hour clock, no &#8216;AM&#8217; or &#8216;PM&#8217;) and couldn&#8217;t find one that quite fit the bill, so a tweaked version is:<br /><br /></p><blockquote>Ext.form.VTypes[&#8220;timeVal&#8221;] = /^([0-9]|1[0-9]|2[0-3]):([0-5][0-9])$/i;<br />Ext.form.VTypes[&#8220;timeMask&#8221;] = /[\d\s:amp]/i;<br />Ext.form.VTypes[&#8220;timeText&#8221;] = &#8216;Not a valid time.&nbsp; Must be in the format hh:mm&#8221;.&#8217;;<br />Ext.form.VTypes[&#8220;time&#8221;] = function(v)<br />{<br />&nbsp;&nbsp;&nbsp; return Ext.form.VTypes[&#8220;timeVal&#8221;].test(v);<br />}<br /><br /></blockquote>Related Linkage:<br /><ul><li><a href="http://extjs.com/forum/showthread.php?t=4271&amp;page=1">A decent collection of VTypes</a> (one of which forms the basis of the one above)</li><li><a href="http://blog.adampresley.com/2008/05/08/advanced-data-validation-using-extjs/">Advanced Data Validation using ExtJs</a> (a good overview of VTypes)</li><li><a href="http://examples.extjs.eu/?ex=formerrors">Displaying Form Submit Errors by Saki</a> (Mixing it up with VTypes and server-side validation)<br /></li></ul></p>
]]>
        

    </content>
</entry>

<entry>
    <title>Adding groups and summaries to the asp:GridView</title>
    <link rel="alternate" type="text/html" href="http://www.robertwray.co.uk/blog/2008/12/adding-groups-and-summaries-to.html" />
    <id>tag:www.robertwray.co.uk,2008:/blog//7.311</id>

    <published>2008-12-15T13:49:45Z</published>
    <updated>2008-12-15T14:07:54Z</updated>

    <summary>Whilst hunting for a way to do this I found this sample/example at agrinei.com. [via: Joteke&apos;s aspadvice.com blog]...</summary>
    <author>
        <name>Rob</name>
        
    </author>
    
        <category term=".net" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="asp.net" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="aspgridviewaspnet" label="asp:GridView ASP.net" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.robertwray.co.uk/blog/">
        <![CDATA[Whilst hunting for a way to do this I found this <a href="http://www.agrinei.com/gridviewhelper/gridviewhelper_en.htm">sample/example</a> at agrinei.com. [via: <a href="http://aspadvice.com/blogs/joteke/archive/2006/02/11/15130.aspx">Joteke's aspadvice.com blog</a>]<br /><br />]]>
        
    </content>
</entry>

<entry>
    <title>Coolite - grid.insertRecord is not part of extJs</title>
    <link rel="alternate" type="text/html" href="http://www.robertwray.co.uk/blog/2008/12/coolite---gridinsertrecord-is.html" />
    <id>tag:www.robertwray.co.uk,2008:/blog//7.310</id>

    <published>2008-12-15T10:53:48Z</published>
    <updated>2008-12-15T14:06:37Z</updated>

    <summary>For the avoidance of doubt (and hopefully so it&apos;ll make anyone else who wonders about this have an easier time searching), the insertRecord method on the Coolite implementation of the extJs grid is added by Coolite.Be prepared to see more...</summary>
    <author>
        <name>Rob</name>
        
    </author>
    
        <category term=".net" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="aspnet" label="ASP.net" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="coolite" label="Coolite" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="extjs" label="ExtJs" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.robertwray.co.uk/blog/">
        <![CDATA[For the avoidance of doubt (and hopefully so it'll make anyone else who wonders about this have an easier time searching), the <a href="http://www.coolite.com/forums/FindPost1339.aspx">insertRecord method</a> on the Coolite implementation of the extJs grid is added by Coolite.<br /><br />Be prepared to see more like this :-S<br /> ]]>
        
    </content>
</entry>

<entry>
    <title>IE8 should pass Acid3 - what a load of rubbish</title>
    <link rel="alternate" type="text/html" href="http://www.robertwray.co.uk/blog/2008/12/ie8-should-pass-acid3---what-a.html" />
    <id>tag:www.robertwray.co.uk,2008:/blog//7.309</id>

    <published>2008-12-15T08:40:16Z</published>
    <updated>2008-12-15T09:55:20Z</updated>

    <summary>If you look through comments on the IE Blog, you&apos;ll usually find at least one comment against each recent entry from someone saying something along the lines of &quot;IE should pass Acid3&quot;. Given that (and I quote Wikipedia here) &quot;...</summary>
    <author>
        <name>Rob</name>
        
    </author>
    
        <category term="Tech" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://www.robertwray.co.uk/blog/">
        <![CDATA[If you look through comments on the <a href="http://blogs.msdn.com/ie">IE Blog</a>, you'll usually find at least one comment against each recent entry from someone saying something along the lines of "IE should pass <a href="http://en.wikipedia.org/wiki/Acid3">Acid3</a>". Given that (and I quote Wikipedia here) " It includes several elements from W3C <a href="http://en.wikipedia.org/wiki/CSS3" title="CSS3" class="mw-redirect">CSS3</a> working drafts that have not made it to candidate recommendations yet", why on earth would any browser want to "pass" it?<br /><br />Yes - the intentions of the Acid3 test are laudable, but c'mon people, passing a test that requires implementation of standards that are working drafts is a bit mental. (Before anyone comments - my opinion applies equally to *any* browser)<br /> ]]>
        
    </content>
</entry>

<entry>
    <title>hotfrog.co.uk - aka: Reed; stop scraping the web, please!</title>
    <link rel="alternate" type="text/html" href="http://www.robertwray.co.uk/blog/2008/12/hotfrogcouk---aka-reed-stop-sc.html" />
    <id>tag:www.robertwray.co.uk,2008:/blog//7.308</id>

    <published>2008-12-14T12:51:07Z</published>
    <updated>2008-12-14T12:55:31Z</updated>

    <summary>As of today, the fifth result in a google search for Robert Wray (restricted to UK sites) is a page on hotfrog.co.uk. Quite how they&apos;ve come to the conclusion that I offer to sell things ranging from Coffee Grinders to...</summary>
    <author>
        <name>Rob</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.robertwray.co.uk/blog/">
        <![CDATA[As of today, the fifth result in a <a href="http://www.google.co.uk/search?hl=en&amp;q=Robert+Wray&amp;btnG=Search&amp;meta=cr%3DcountryUK%7CcountryGB">google search for Robert Wray</a> (restricted to UK sites) is a page on hotfrog.co.uk. Quite how they've come to the conclusion that I offer to sell things ranging from Coffee Grinders to Laptops to Red Wine, I have no idea. Oh wait, I do. I've mentioned all those things, plus the others mentioned in various different blog postings. Automated page scrapingis all well and good, just not so much when it's done so poorly.<br /><br /><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="hotfrog_co_uk.png" src="http://www.robertwray.co.uk/blog/images/hotfrog_co_uk.png" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="590" height="429" /></span><br /><div><br /></div>]]>
        
    </content>
</entry>

<entry>
    <title>Using ExtJs from ASP.net with Coolite</title>
    <link rel="alternate" type="text/html" href="http://www.robertwray.co.uk/blog/2008/12/using-extjs-from-aspnet-with-coolite.html" />
    <id>tag:www.robertwray.co.uk,2008:/blog//7.307</id>

    <published>2008-12-10T08:45:00Z</published>
    <updated>2008-12-15T14:07:10Z</updated>

    <summary>I can heartily recommend the Coolite framework for this, rather than battling with Javascript syntax. It&apos;s currently at v0.6 (c&apos;mon, hurry up and release v0.7!) and thus is missing some functionality that I&apos;d really quite like to use but it...</summary>
    <author>
        <name>Rob</name>
        
    </author>
    
        <category term=".net" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="asp.net" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="aspnet" label="ASP.net" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="coolite" label="Coolite" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="extjs" label="ExtJs" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.robertwray.co.uk/blog/">
        <![CDATA[I can heartily recommend the <a href="http://www.coolite.com/">Coolite</a> framework for this, rather than battling with Javascript syntax. It's currently at v0.6 (c'mon, hurry up and release v0.7!) and thus is missing some functionality that I'd really quite like to use but it is pretty damn good. The big win for me is the fact that you get to describe your extJs "stuff" using markup that's validated by Visual Studio for you. Big. Win.<br /><br />Follow <a href="http://twitter.com/coolite/">coolite on twitter</a>. (That's how I'm watching for v0.7!)<br /> ]]>
        
    </content>
</entry>

<entry>
    <title>Passwords</title>
    <link rel="alternate" type="text/html" href="http://www.robertwray.co.uk/blog/2008/09/passwords-and-bad-password-requirements.html" />
    <id>tag:www.robertwray.co.uk,2008:/blog//7.304</id>

    <published>2008-09-25T07:30:00Z</published>
    <updated>2008-09-25T09:27:24Z</updated>

    <summary>Jonathan Cogley has a post about bad password requirements that covers most, if not all, of the salient points around the topic of what defines a good or bad password. The comments also make for interesting reading. What&apos;s most disturbing...</summary>
    <author>
        <name>Rob</name>
        
    </author>
    
        <category term="Tech" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://www.robertwray.co.uk/blog/">
        <![CDATA[Jonathan Cogley has a post about <a href="http://weblogs.asp.net/jcogley/archive/2008/01/24/bad-password-requirements.aspx">bad password requirements</a> that covers most, if not all, of the salient points around the topic of what defines a good or bad password. The comments also make for interesting reading. What's most disturbing though is the comment by the author himself:<br /><br /><blockquote>&nbsp;...most times when we do a security audit of an application, the
first thing we find is cleartext passwords in the user table in the
database. :)<br /></blockquote> ]]>
        
    </content>
</entry>

<entry>
    <title>Loch Fyne and the National Minimum Wage</title>
    <link rel="alternate" type="text/html" href="http://www.robertwray.co.uk/blog/2008/07/loch-fyne-and-the-national-min.html" />
    <id>tag:www.robertwray.co.uk,2008:/blog//7.305</id>

    <published>2008-07-25T13:27:59Z</published>
    <updated>2008-07-25T13:32:45Z</updated>

    <summary>Loch Fyne Restaurants have recently been called out by the BBC (amongst others!), for not paying their staff the national minimum wage. Rather than doing so, they use tips that staff receive to make their salary up to at least,...</summary>
    <author>
        <name>Rob</name>
        
    </author>
    
    <category term="lochfyne" label="Loch Fyne" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="nationalminimumwage" label="National Minimum Wage" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.robertwray.co.uk/blog/">
        <![CDATA[<a href="http://www.lochfyne.com/">Loch Fyne Restaurants</a> have recently been called out <a href="http://news.bbc.co.uk/1/hi/business/7524021.stm">by the BBC</a> (amongst others!), for not paying their staff the national minimum wage. Rather than doing so, they use tips that staff receive to make their salary up to at least, or above, the NMW. Having worked in Hospitality previously, I know how much this sucks. Disgusting behaviour on the part of the management of Loch Fyne.<br /><br />I've already commented on my "<a href="http://robw.vox.com/library/post/shame-on-you-loch-fyne-shame-on-you.html">non techy blog</a>", but decided to post here as well to raise awareness. I for one, won't be eating at Loch Fyne again (which is a shame as I <strike>eat</strike>ate there fairly frequently) until they've made a public statement confirming that their staff receive the national minimum wage <b>before</b> tips are paid.<br />]]>
        
    </content>
</entry>

</feed>
