<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DEEEQX04fCp7ImA9WhRRFE4.&quot;"><id>tag:blogger.com,1999:blog-6549148752526922467</id><updated>2011-11-27T18:30:00.334-05:00</updated><category term="Service" /><category term="Visual Studio" /><category term="WebService" /><category term="Windows Vista" /><category term="Microsoft" /><category term="Website" /><category term="Resume" /><category term="Subverion" /><category term="CSS" /><category term="Asp.Net" /><category term="IEnumerable" /><category term="ResolveUrl" /><category term="Hermes" /><category term="Windows Live Writer" /><category term="Windows" /><category term="JS" /><category term="Java" /><category term="Blogger" /><category term="vWorker" /><category term="Ajax" /><category term="Business Logic Layer" /><category term="C#" /><category term="VSP2013" /><category term="BLL" /><category term="Development" /><category term="Firefox" /><category term="RAC" /><category term="C# Asp.Net Upload Multiple Large File Resume Ajax Java Hermes" /><category term="SEO" /><category term="Code Coverage" /><category term="Linq" /><category term="32-bit" /><category term="Validation" /><category term="AccuTime" /><category term="HTML" /><category term="Tools" /><category term="Software" /><category term="TeamBuild" /><category term="Error" /><category term="Apache" /><category term="Free" /><category term="JavaScript" /><category term="CollabNet" /><category term="Upload Control" /><category term="Windows 7" /><category term="C# Asp.Net Upload Multiple Large File" /><title>All Your Code Base Are Belong To Us</title><subtitle type="html">Technical Blog on Microsoft .Net technologies.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://djproduct.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://djproduct.blogspot.com/" /><author><name>Dave</name><uri>http://www.blogger.com/profile/01954530725629702486</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://1.bp.blogspot.com/_3OcOkrFwkaQ/SLWh7ApJNSI/AAAAAAAAAAQ/iK3-D3xTjHI/S220/profile.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/djProduct" /><feedburner:info uri="djproduct" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;Ck4DRXg-fCp7ImA9Wx9bFUo.&quot;"><id>tag:blogger.com,1999:blog-6549148752526922467.post-3144527852433499804</id><published>2011-02-24T13:08:00.000-05:00</published><updated>2011-02-24T13:09:34.654-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-24T13:09:34.654-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="vWorker" /><category scheme="http://www.blogger.com/atom/ns#" term="AccuTime" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows 7" /><category scheme="http://www.blogger.com/atom/ns#" term="RAC" /><title>AccuTimeCard for vWorker (RAC) crashes</title><content type="html">&lt;h2&gt;The AccuTimeCard for vWorker (previously RAC – Rent A Coder) crashes when you first run it.&lt;/h2&gt; &lt;p&gt;The exception dump is listed below is a Google-friendly search helper for people having the same issue.&lt;/p&gt; &lt;p&gt;I’m running Windows 7 (Ultimate) x64 and got this exception as soon as I ran the application. Thankfully, the application was written in .net so I was able to use &lt;a href="http://www.red-gate.com/products/dotnet-development/reflector/" target="_blank"&gt;the .Net Reflector&lt;/a&gt; to resolve the issue. The exception was occurring in the Form Load event in the application so I took that into disassembly in the reflector coming up with the following:&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:09a60030-035e-4687-85b9-3ab15a2eb9ad" class="wlWriterEditableSmartContent"&gt;&lt;pre style="background-color:#FFFFFF;white-space:-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;overflow: auto;"&gt;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; Form1_Load(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;object&lt;/span&gt;&lt;span style="color: #000000;"&gt; sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Visible &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;false&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;    StringBuilder builder &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; StringBuilder();&lt;br /&gt;    builder.Append(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;-classpath &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;    builder.Append(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;.;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;    builder.Append(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;resources\jars\axis.jar;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;    builder.Append(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;resources\jars\commons-discovery-0.2.jar;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;    builder.Append(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;resources\jars\forms-1.1.0.jar;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;    builder.Append(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;resources\jars\jaxrpc.jar;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;    builder.Append(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;resources\jars\JMF2_1_1e\lib\jmf.jar;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;    builder.Append(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;resources\jars\org.apache.commons.logging_1.0.4.v200706111724.jar;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;    builder.Append(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;resources\jars\saaj.jar;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;    builder.Append(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;resources\jars\wsdl4j-1.5.1.jar &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;    builder.Append(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;RacTimeCard&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; arguments &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; builder.ToString();&lt;br /&gt;    Process.Start(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;javaw.exe&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, arguments);&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Close();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;&lt;pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;The offending line, the file it cannot find is, of course, Process.Start(“javaw.exe”, arguments); One quick check concluded that the path to the Java-Runtime was not present in my PATH environment variable. &lt;br /&gt;&lt;p&gt;Since non-technical people now use &lt;a href="http://www.vworker.com" target="_blank"&gt;vWorker.com&lt;/a&gt; I will try to explain how to add this path to your own environmental variable PATH. These instructions are for Windows 7 and will likely work fairly closely to Vista (for those of you who are masochists and still use that OS &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh4.ggpht.com/_3OcOkrFwkaQ/TWae2IRxXCI/AAAAAAAAAHs/uE2WRqVPXxM/wlEmoticon-smile%5B2%5D.png?imgmax=800"&gt;) &lt;br /&gt;&lt;p&gt;&amp;nbsp; &lt;p&gt;First, find your install of the Java runtime. Mine was located at: C:\Program Files (x86)\Java\jre1.6.0_13\bin. If you’re not using a 64 bit operating system it should be under C:\Program Files\Java\jre1.6.0_13\bin. Copy that path to your clipboard. &lt;br /&gt;&lt;p&gt;Open up your Control Panel and go to “System and Security”, “System”, “Advanced System Settings”. I’m sure there’s a faster way to do this but that’ll work for now. Go to the advanced tab: we’re getting really advanced now! Click on “Environment Variables”. In the second list box you’ll need to local your PATH variable. Double click on that and you should see something like the following when you’re done pasting at the end of your variable setting. Please note it’s very important you add a semi-colon “;” (no quotes) between the last path setting and your newly pasted path to your Java Runtime binary folder. &lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_3OcOkrFwkaQ/TWae29-0BWI/AAAAAAAAAHw/UKpLaEYQUJ0/s1600-h/image%5B2%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_3OcOkrFwkaQ/TWae3RKIolI/AAAAAAAAAH0/4uG-24lLu4U/image_thumb.png?imgmax=800" width="212" height="244"&gt;&lt;/a&gt; &lt;br /&gt;&lt;p&gt;&amp;nbsp; &lt;p&gt;&amp;nbsp; &lt;p&gt;microsoft.NET Framework&lt;br&gt;The sistem cannot find the file specified&lt;br&gt;See the end of this message for details on invoking &lt;br&gt;just-in-time (JIT) debugging instead of this dialog box.&lt;br&gt;************** Exception Text **************&lt;br&gt;System.ComponentModel.Win32Exception: The system cannot find the file specified&lt;br&gt;at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)&lt;br&gt;at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)&lt;br&gt;at RacTimeCardLauncher.Form1.Form1_Load(Object sender, EventArgs e)&lt;br&gt;at System.EventHandler.Invoke(Object sender, EventArgs e)&lt;br&gt;at System.Windows.Forms.Form.OnLoad(EventArgs e)&lt;br&gt;at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)&lt;br&gt;at System.Windows.Forms.Control.CreateControl()&lt;br&gt;at System.Windows.Forms.Control.WmShowWindow(Message&amp;amp; m)&lt;br&gt;at System.Windows.Forms.Control.WndProc(Message&amp;amp; m)&lt;br&gt;at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&amp;amp; m)&lt;br&gt;at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)&lt;br&gt;************** Loaded Assemblies **************&lt;br&gt;mscorlib&lt;br&gt;Assembly Version: 2.0.0.0&lt;br&gt;Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)&lt;br&gt;CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll&lt;br&gt;----------------------------------------&lt;br&gt;RacTimeCardLauncher&lt;br&gt;Assembly Version: 1.0.0.0&lt;br&gt;Win32 Version: 1.0.0.0&lt;br&gt;CodeBase: file:///C:/Users/octa/AppData/Local/Exhedra/RacTimeCard/RacTimeCardLauncher.exe&lt;br&gt;----------------------------------------&lt;br&gt;Microsoft.VisualBasic&lt;br&gt;Assembly Version: 8.0.0.0&lt;br&gt;Win32 Version: 8.0.50727.4927 (NetFXspW7.050727-4900)&lt;br&gt;CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll&lt;br&gt;----------------------------------------&lt;br&gt;System&lt;br&gt;Assembly Version: 2.0.0.0&lt;br&gt;Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)&lt;br&gt;CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll&lt;br&gt;----------------------------------------&lt;br&gt;System.Windows.Forms&lt;br&gt;Assembly Version: 2.0.0.0&lt;br&gt;Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)&lt;br&gt;CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll&lt;br&gt;----------------------------------------&lt;br&gt;System.Drawing&lt;br&gt;Assembly Version: 2.0.0.0&lt;br&gt;Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)&lt;br&gt;CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll&lt;br&gt;----------------------------------------&lt;br&gt;System.Runtime.Remoting&lt;br&gt;Assembly Version: 2.0.0.0&lt;br&gt;Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)&lt;br&gt;CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll&lt;br&gt;----------------------------------------&lt;br&gt;************** JIT Debugging **************&lt;br&gt;To enable just-in-time (JIT) debugging, the .config file for this&lt;br&gt;application or computer (machine.config) must have the&lt;br&gt;jitDebugging value set in the system.windows.forms section.&lt;br&gt;The application must also be compiled with debugging&lt;br&gt;enabled.&lt;br&gt;For example:&lt;br&gt;&amp;lt;configuration&amp;gt;&lt;br&gt;&amp;lt;system.windows.forms jitDebugging="true" /&amp;gt;&lt;br&gt;&amp;lt;/configuration&amp;gt;&lt;br&gt;When JIT debugging is enabled, any unhandled exception&lt;br&gt;will be sent to the JIT debugger registered on the computer&lt;br&gt;rather than be handled by this dialog box. &lt;br /&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6549148752526922467-3144527852433499804?l=djproduct.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Vkz7GsFNklnFSW9gNGHUr5kkpcM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Vkz7GsFNklnFSW9gNGHUr5kkpcM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Vkz7GsFNklnFSW9gNGHUr5kkpcM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Vkz7GsFNklnFSW9gNGHUr5kkpcM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djProduct/~4/N0quZWiDsmg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://djproduct.blogspot.com/feeds/3144527852433499804/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6549148752526922467&amp;postID=3144527852433499804" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6549148752526922467/posts/default/3144527852433499804?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6549148752526922467/posts/default/3144527852433499804?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/djProduct/~3/N0quZWiDsmg/accutimecard-for-vworker-rac-crashes.html" title="AccuTimeCard for vWorker (RAC) crashes" /><author><name>Dave</name><uri>http://www.blogger.com/profile/01954530725629702486</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://1.bp.blogspot.com/_3OcOkrFwkaQ/SLWh7ApJNSI/AAAAAAAAAAQ/iK3-D3xTjHI/S220/profile.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_3OcOkrFwkaQ/TWae2IRxXCI/AAAAAAAAAHs/uE2WRqVPXxM/s72-c/wlEmoticon-smile%5B2%5D.png?imgmax=800" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://djproduct.blogspot.com/2011/02/accutimecard-for-vworker-rac-crashes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUHRXwycCp7ImA9Wx9UFU8.&quot;"><id>tag:blogger.com,1999:blog-6549148752526922467.post-1136762185393021673</id><published>2011-02-12T10:23:00.000-05:00</published><updated>2011-02-12T10:23:54.298-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-12T10:23:54.298-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows Vista" /><category scheme="http://www.blogger.com/atom/ns#" term="Development" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows 7" /><category scheme="http://www.blogger.com/atom/ns#" term="Software" /><category scheme="http://www.blogger.com/atom/ns#" term="Free" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><title>Software Development Productivity in Windows 7</title><content type="html">&lt;h6&gt;&lt;em&gt;&amp;nbsp;&amp;nbsp; This won’t replace my AutoHotKey but it’s a step in the right direction from Microsoft Windows.&lt;/em&gt;&lt;/h6&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp; I recently stumbled across some keyboard shortcuts in Windows 7 that have increased my productivity as a software developer. If you’re a developer you probably favor the keyboard over the mouse when getting your work done. I’m constantly on the lookout for keyboard shortcuts and new automation tools to help liberate me from that pesky mouse and speed up my work process.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp; Windows 7 has some nice new keyboard features I didn’t know about until recently. I actually stumbled upon them quite by accident and did a little exploring. When I put 2+2 together in my head I came up with a quick way to jump around to all of the applications I use frequently during the day.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp; Here are some applications I use constantly and their corresponding shortcut key combinations. These keyboard combinations are built into Windows (since Vista) as described by &lt;a href="http://en.wikipedia.org/wiki/Windows_key" target="_blank"&gt;Wikipedia&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3OcOkrFwkaQ/TVaTyxVPMnI/AAAAAAAAAHc/jOmqQYkYCew/s1600-h/image%5B5%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_3OcOkrFwkaQ/TVaTzF0yH9I/AAAAAAAAAHg/its5oBabuRM/image_thumb%5B1%5D.png?imgmax=800" width="244" height="61"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp; That’s right – starting with the first application running it’s the &lt;strong&gt;Windows Key + 1 [ 2, 3, … n ] &lt;/strong&gt;to bring up the application (Win+0 is the 10th and final application shortcut in the chain). &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp; Now the first thing that’s nice is that I will get the running instance of the application if the application is already running or a new instance of the application if it is not (singleton approach). If I want to start a new instance of the application rather than pop up the instance already running all I need to do is&lt;strong&gt; Win+Shift+1 [2, 3, … n]&lt;/strong&gt;. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp; If I have multiple instances already running repeatedly hitting Win+Ctrl+1, Win+Ctrl+1 will alternate between (in my case) my instances of Visual Studio 2010 that are running. Alternatively, simply pressing Win+1, Win+1 will alternate between the desktop preview windows for that application and releasing will bring up the application instance.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp; As long as I keep these application pinned to my taskbar in the same position Win+1 will ALWAYS be Visual Studio 2010, Win+2 will ALWAYS be Microsoft Blend, etc.. That is a big deal coming from the Alt+Tab world.&lt;/font&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;h4&gt;&lt;font color="#ffffff"&gt;&lt;strong&gt;“Now you may be thinking “so what” I use a keyboard mapping or macro program called &lt;/strong&gt;&lt;/font&gt;&lt;a href="http://www.autohotkey.com/" target="_blank"&gt;&lt;font color="#ffffff"&gt;&lt;strong&gt;AutoHotKey&lt;/strong&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#ffffff"&gt;&lt;strong&gt; (or something similar) and already have this set up. Me too -&amp;nbsp; &lt;/strong&gt;&lt;/font&gt;&lt;/h4&gt; &lt;h4&gt;&lt;font color="#ffffff"&gt;&lt;strong&gt;&lt;font size="6"&gt;but wait, there’s more!&lt;/font&gt;”&lt;/strong&gt;&lt;/font&gt;&lt;/h4&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp; If we press &lt;strong&gt;Win+Alt+1 [ 2, 3, … n]&lt;/strong&gt; we get access to the application’s '”Jump List”. This is where these keyboard shortcuts really start to shine. Here’s what I get when I press Win+Alt+1 asking for Visual Studio 2010’s Jump List – and yep, I can use the good old arrow keeps to get to the solutions I’m currently working on&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_3OcOkrFwkaQ/TVaTzqrH5eI/AAAAAAAAAHk/Q766iMs7dE8/s1600-h/image%5B17%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_3OcOkrFwkaQ/TVaT0IQA1DI/AAAAAAAAAHo/EunvXh3Qozo/image_thumb%5B5%5D.png?imgmax=800" width="180" height="244"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp; I’m currently doing development in WPF so it is a HUGE time saver to switch between Visual Studio &amp;amp; Blend using Win+1 and Win+2 respectively. Alt+Tab is great but&amp;nbsp; sometimes you go to other application in between using your core tools and it’s always that few milliseconds spent recognizing where the application I need is in the Alt-Tab chain that drives me insane. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp; By the way, if you use Alt+Tab quite a lot with many windows open, you can use the arrow keys to navigate the large tiled list. For instance the down arrow will take you down a row of applications after you’ve started the Alt+Tab maneuver, skipping a few Alt+Tab key iterations. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6549148752526922467-1136762185393021673?l=djproduct.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FGbzHXRR57LlAJD5-Qzl8Tya710/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FGbzHXRR57LlAJD5-Qzl8Tya710/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FGbzHXRR57LlAJD5-Qzl8Tya710/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FGbzHXRR57LlAJD5-Qzl8Tya710/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djProduct/~4/cDT1k6xX7bg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://djproduct.blogspot.com/feeds/1136762185393021673/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6549148752526922467&amp;postID=1136762185393021673" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6549148752526922467/posts/default/1136762185393021673?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6549148752526922467/posts/default/1136762185393021673?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/djProduct/~3/cDT1k6xX7bg/software-development-productivity-in.html" title="Software Development Productivity in Windows 7" /><author><name>Dave</name><uri>http://www.blogger.com/profile/01954530725629702486</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://1.bp.blogspot.com/_3OcOkrFwkaQ/SLWh7ApJNSI/AAAAAAAAAAQ/iK3-D3xTjHI/S220/profile.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_3OcOkrFwkaQ/TVaTzF0yH9I/AAAAAAAAAHg/its5oBabuRM/s72-c/image_thumb%5B1%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://djproduct.blogspot.com/2011/02/software-development-productivity-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkECSHw8eip7ImA9WxFRGUs.&quot;"><id>tag:blogger.com,1999:blog-6549148752526922467.post-5375570957278250623</id><published>2010-05-04T06:24:00.002-04:00</published><updated>2010-05-04T06:24:29.272-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-04T06:24:29.272-04:00</app:edited><title>A Custom Recursive LINQ Extension</title><content type="html">Check out my latest article on Experts Exchange&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6549148752526922467-5375570957278250623?l=djproduct.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-jxTAj_-Or8uWH2f9PItz_g7RQ4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-jxTAj_-Or8uWH2f9PItz_g7RQ4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-jxTAj_-Or8uWH2f9PItz_g7RQ4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-jxTAj_-Or8uWH2f9PItz_g7RQ4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djProduct/~4/VmoHoPP9jac" height="1" width="1"/&gt;</content><link rel="related" href="http://www.experts-exchange.com/articles/Programming/Languages/.NET/LINQ/A-Custom-Recursive-LINQ-Extension.html" title="A Custom Recursive LINQ Extension" /><link rel="replies" type="application/atom+xml" href="http://djproduct.blogspot.com/feeds/5375570957278250623/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6549148752526922467&amp;postID=5375570957278250623" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6549148752526922467/posts/default/5375570957278250623?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6549148752526922467/posts/default/5375570957278250623?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/djProduct/~3/VmoHoPP9jac/custom-recursive-linq-extension.html" title="A Custom Recursive LINQ Extension" /><author><name>Dave</name><uri>http://www.blogger.com/profile/01954530725629702486</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://1.bp.blogspot.com/_3OcOkrFwkaQ/SLWh7ApJNSI/AAAAAAAAAAQ/iK3-D3xTjHI/S220/profile.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://djproduct.blogspot.com/2010/05/custom-recursive-linq-extension.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04MR3o7eSp7ImA9Wx9VF0U.&quot;"><id>tag:blogger.com,1999:blog-6549148752526922467.post-236811352187726092</id><published>2010-01-17T00:57:00.004-05:00</published><updated>2011-02-03T22:26:26.401-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-03T22:26:26.401-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Blogger" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Live Writer" /><title>Using Microsoft Live Writer with Blogger</title><content type="html">&lt;p&gt;I was recently pondering my reluctance to post to my blog. I analyzed the problem and came up with the following facts…&lt;/p&gt;&lt;ul&gt;&lt;li&gt;I don’t like the blogger interface for posting to my blog. Especially when I need to post code samples. &lt;/li&gt;
&lt;li&gt;I don’t typically take the time to post something cool I just did with some code I’ve written because I would typically want to upload a new project that people could download and explore should they want to. &lt;/li&gt;
&lt;li&gt;I won’t typically post to my blog after a long day of writing code. &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Having made these identifications this is the first step in solving the problems. I’m certainly not a lazy person. I want to post more useful content to my blog so these issues need to be resolved for me personally before blogging on a regular basis will become reality. &lt;/p&gt;&lt;p&gt;Setting up Live Writer with blogger is a snap. I simply went to the Tools menu then Accounts…&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_3OcOkrFwkaQ/S1Ko5haXlFI/AAAAAAAAAD8/31b58GUdb68/s1600-h/WindowsLiveWriterBloggerSetup1%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WindowsLiveWriterBloggerSetup1" border="0" alt="WindowsLiveWriterBloggerSetup1" src="http://lh5.ggpht.com/_3OcOkrFwkaQ/S1Ko6K6uJFI/AAAAAAAAAEA/JxC9Q3Oe7LQ/WindowsLiveWriterBloggerSetup1_thumb.png?imgmax=800" width="243" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;… entered in the required URL for my blog, my username and password ( I use my Google credentials ) and viola… Windows Live Writer is up and running. I’m publishing as I go as I write this. A very cool feature.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_3OcOkrFwkaQ/S1KqI42HzaI/AAAAAAAAAEE/Z_NmXkF3Dfk/s1600-h/WindowsLiveWriterBloggerSetup2%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="WindowsLiveWriterBloggerSetup2" border="0" alt="WindowsLiveWriterBloggerSetup2" src="http://lh6.ggpht.com/_3OcOkrFwkaQ/S1KqJJFf0SI/AAAAAAAAAEI/fGnm-dixJOw/WindowsLiveWriterBloggerSetup2_thumb.png?imgmax=800" width="244" height="210" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;So far, so good but what about source code? I use the &lt;a href="http://www.manoli.net/csharpformat/" target="_blank"&gt;Manoli Formatter&lt;/a&gt; which is quite good. I actually downloaded the source code and started to write myself a little blogger application to handle my blog posts or at least allow me to cut/paste the content into the blogger editor. That didn’t pan out due to time constraints and the fact that I wanted something now, now, now.&lt;/p&gt;&lt;p&gt;Anyway, Live Writer seems to bridge that gap for me so far. The previous images (which are totally superfluous) since the setup process is so easy were all handled automagically via Live Writer. That means I don’t have to upload the image to flicker, get the public link to the image, cut/paste and mangle that link into Blogger, etc. OK, I’m making it sound harder than it is but repetitive processes like that drive me insane. That’s why I’m a software developer… I’m too lazy to do anything twice.&lt;/p&gt;&lt;p&gt;So now, lets try some code… If I hop over to Visual Studio and copy some generic Cache code I wrote and paste it into Manoli I get my CSS tagged HTML back and paste it into Live Writer I can preview what my code snippet is going to look like quite easily…&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_3OcOkrFwkaQ/S1KuSc6HcII/AAAAAAAAAEM/BtwpIV0HGc0/s1600-h/LiveWriterPreview1%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="LiveWriterPreview1" border="0" alt="LiveWriterPreview1" src="http://lh3.ggpht.com/_3OcOkrFwkaQ/S1KuS3BV_YI/AAAAAAAAAEQ/sfpVbeprZ_I/LiveWriterPreview1_thumb.png?imgmax=800" width="244" height="123" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;That’s good stuff! I can immediately see that one code line is wrapping due to the format, styling and layout of my blog. Poof! No worries, I can just edit my code in Visual Studio and paste back into Manoli for a quick update… &lt;/p&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Cache&amp;lt;TKey, TValue&amp;gt;
{
&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;readonly&lt;/span&gt; Dictionary&amp;lt;TKey, TValue&amp;gt; cache = 
    &lt;span class="kwrd"&gt;new&lt;/span&gt; Dictionary&amp;lt;TKey, TValue&amp;gt;();

&lt;span class="kwrd"&gt;public&lt;/span&gt; TValue &lt;span class="kwrd"&gt;this&lt;/span&gt;[TKey key] 
{ 
get 
{ 
&lt;span class="kwrd"&gt;return&lt;/span&gt; cache.ContainsKey(key) ? cache[key] : &lt;span class="kwrd"&gt;default&lt;/span&gt;(TValue); 
} 
set 
{ 
cache[key] = &lt;span class="kwrd"&gt;value&lt;/span&gt;; 
} 
}

&lt;span class="kwrd"&gt;public&lt;/span&gt; TValue Fetch(TKey key, TValue &lt;span class="kwrd"&gt;value&lt;/span&gt;)
{
&lt;span class="kwrd"&gt;if&lt;/span&gt; (!cache.ContainsKey(key))
{
&lt;span class="kwrd"&gt;this&lt;/span&gt;[key] = &lt;span class="kwrd"&gt;value&lt;/span&gt;;
}

&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;;
}
}&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;…and there you have it. Easy code that will fit inside my blog nicely without too much hassle. So far, Windows Live Writer just scored mega kudos with me. Look for more blogging soon. Maybe I can keep my New Years Resolution after all. Note: Live Writer is by no means specific to Blogger. It supports many blogging platforms. Let me know what you like and don’t like about it. My 5 minute analysis is “Why wasn’t I using this the minute it was released”? Anyone use any similar applications? Love to hear your stories. My next task: Making the format of my blog more Web 2.0 compliant.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6549148752526922467-236811352187726092?l=djproduct.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zd7MGxatpAGrppPxuJiB9hzg-7c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zd7MGxatpAGrppPxuJiB9hzg-7c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zd7MGxatpAGrppPxuJiB9hzg-7c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zd7MGxatpAGrppPxuJiB9hzg-7c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djProduct/~4/NLaB7AnOOSg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://djproduct.blogspot.com/feeds/236811352187726092/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6549148752526922467&amp;postID=236811352187726092" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6549148752526922467/posts/default/236811352187726092?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6549148752526922467/posts/default/236811352187726092?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/djProduct/~3/NLaB7AnOOSg/testing-out-live-writer-with-blogger.html" title="Using Microsoft Live Writer with Blogger" /><author><name>Dave</name><uri>http://www.blogger.com/profile/01954530725629702486</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://1.bp.blogspot.com/_3OcOkrFwkaQ/SLWh7ApJNSI/AAAAAAAAAAQ/iK3-D3xTjHI/S220/profile.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_3OcOkrFwkaQ/S1Ko6K6uJFI/AAAAAAAAAEA/JxC9Q3Oe7LQ/s72-c/WindowsLiveWriterBloggerSetup1_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://djproduct.blogspot.com/2010/01/testing-out-live-writer-with-blogger.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8BRH08fSp7ImA9Wx9VF0U.&quot;"><id>tag:blogger.com,1999:blog-6549148752526922467.post-6745523186749676779</id><published>2010-01-03T00:15:00.004-05:00</published><updated>2011-02-03T21:50:55.375-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-03T21:50:55.375-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="IEnumerable" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Linq" /><title>Linq Queries against  most collections including ListView, ListViewItemCollection, ControlCollection or anything IEnumerable</title><content type="html">&lt;h1&gt;The Problem:&lt;/h1&gt;&lt;br /&gt;
You can not run Linq queries against many Framework collections such as ListViewItems and Controls in an immediately obvious manner.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (list.Items.All(item =&amp;gt; item.Checked))
    &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;
&lt;/pre&gt;&lt;br /&gt;
The previous code snippet won't compile, won't work and won't shove you in the right direction via IntelliSense, Online Help, or by performing a super-quick Google for the hopelessly attention-deficit disordered such as myself. (more on the Googling later)&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;The Fix:&lt;/h1&gt;&lt;br /&gt;
Introducing the &lt;a href="http://127.0.0.1/help/1/ms.help?method=page&amp;id=M%3ASYSTEM.LINQ.ENUMERABLE.CAST%60%601%28SYSTEM.COLLECTIONS.IENUMERABLE%29&amp;product=VS&amp;productVersion=100&amp;locale=en-US"&gt;Enumerable .Cast (TResult) Method&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (list.Items.Cast&amp;lt;ListViewItem&amp;gt;().All(item =&amp;gt; item.Checked)
    &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;
&lt;/pre&gt;&lt;br /&gt;
Using this method you can rewrite the original code quite easily to this code and Linq query the collection to death with all of your favorite little Linq sledgehammers...&lt;br /&gt;
&lt;br /&gt;
&lt;h1&gt;The Why:&lt;/h1&gt;&lt;br /&gt;
Background story for those of you who didn't jump ship to go off using the solution...&lt;br /&gt;
&lt;br /&gt;
I was trying to something I thought would be very straight-forward using Linq. I wanted to sync a tri-state "parent-relationship" CheckBox control with a ListView control that contained "child-relationship" items that had their own respective item specific checkboxes. The parent to child relationship here is conceptual and not baked into the controls, we're talking a simple CheckBox and ListView here. &lt;br /&gt;
&lt;br /&gt;
You've all probably done something similar whether it be with a TreeView using checkboxes containing items with checkboxes. You've certainly seen this behavior if you've ever done a backup and selected what you want backed up on a hard drive. The concept is simple: if all child items are checked or unchecked, the parent CheckBox should be Checked or Unchecked accordingly. If some of the child objects are checked and some aren't, the parent CheckBox should be Indeterminate. &lt;br /&gt;
&lt;br /&gt;
(The backup then flubs your selection, doesn't back up your nicely selected SQL database, and can't seem to adequately backup to your 1TB external HD popping up endless dialogs to let you know how inefficient it truly is but that's a whole different post altogether.)&lt;br /&gt;
&lt;br /&gt;
All fine and dandy, this will be easy, right? Well, the first thing I wanted to do is say something like...&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (listEmployees.Items.All(λ =&amp;gt; λ.Checked))
    checkEmployees.CheckState = CheckState.Checked;
&lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (listEmployees.Items.All(λ =&amp;gt; !λ.Checked))
    checkEmployees.CheckState = CheckState.Unchecked;
&lt;span class="kwrd"&gt;else&lt;/span&gt;
    checkEmployees.CheckState = CheckState.Indeterminate;
&lt;/pre&gt;&lt;br /&gt;
Obviously, my ListView is a list of Employee business objects and my CheckBoxes on my list items are per employee item that I'm displaying. Nothing fancy here. &lt;br /&gt;
&lt;br /&gt;
Note: I use the λ character now for a lot of my Linq statements after reading this question about &lt;a href="http://stackoverflow.com/questions/1988010/linq-to-sql-business-object-creation-best-practices"&gt;LINQ to SQL business object creation best practices&lt;/a&gt;. I agree that it's technically not the most accurate usage of the &lt;a href="http://en.wikipedia.org/wiki/Lambda"&gt;Lambda characer&lt;/a&gt; however it does clarify the code (to me) and reduces the chance of variable declaration conflicts with Linq queries.&lt;br /&gt;
&lt;br /&gt;
So, I'm ready to compile, skip testing, deem this code ready for production and ship it to my hungry client when this little nastygram pops up during compile...&lt;br /&gt;
&lt;br /&gt;
'System.Windows.Forms.ListView.ListViewItemCollection' does not contain a definition for 'All' and no extension method 'All' accepting a first argument of type 'System.Windows.Forms.ListView.ListViewItemCollection' could be found (are you missing a using directive or an assembly reference?)&lt;br /&gt;
&lt;br /&gt;
Grr. OK, so off to Google I go (oh you do it too!)... I land on &lt;br /&gt;
&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/463ea366-994f-4d34-96a1-20b31816ba38?prof=required"&gt;LINQ on ListView.Items (ListViewItemCollection)&lt;/a&gt; telling me in no uncertain terms, with an accepted answer, that this just can't be done. Piffle! No way! I'm outraged! Linq can do anything!&lt;br /&gt;
&lt;br /&gt;
So, I typically look at one Google answer like this and go back to the code to see what I, with all my omnipotent developer powers, can figure out. (Usually I'm humbled to admit the same defeat as the previous blog poster but not this time!&lt;br /&gt;
&lt;br /&gt;
So, instinct and too much coffee tells me to look up 2 things... &lt;br /&gt;
&lt;br /&gt;
1.) What are the requirements, more specifically, the "where" clause, if any, of the Linq method "All"&lt;br /&gt;
2.) If the ListView.Items property doesn't meet this requirement, then why doesn't it dangit!?!&lt;br /&gt;
&lt;br /&gt;
So, doing a "Go to definition" on the All Linq Extension method I come up with the following in my sweet little meta data viewer.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; All&amp;lt;TSource&amp;gt;(&lt;span class="kwrd"&gt;this&lt;/span&gt; IEnumerable&amp;lt;TSource&amp;gt; source, Func&amp;lt;TSource, &lt;span class="kwrd"&gt;bool&lt;/span&gt;&amp;gt; predicate);
&lt;/pre&gt;&lt;br /&gt;
The Linq All entension method requires an IEnumerable&amp;lt;TResult&amp;gt; as the source of the extension meaning that only objects that expose IEnumerable&amp;lt;TResult&amp;gt; as part of their class definition will get picked up, and be extensible using the Linq system. There's no where clause, it &lt;strong&gt;must&lt;/strong&gt; be an IEnumerable&amp;lt;TResult&amp;gt; supported object whether by inheritance or interface support.&lt;br /&gt;
&lt;br /&gt;
OK, I was thinking just IEnumerable personally but actually IEnumerable&amp;lt;TResult&amp;gt; makes sense since Linq has to perform anonymous queries using properties of the object that's being extended. Meaning if Linq extended IEnumerable (pure) that's great but when I went to do my neat little .Checked (is true) statement Linq wouldn't know what the heck a .Checked was because IEnumerable would be based on an enumerable object collection. &lt;br /&gt;
&lt;br /&gt;
Fine, makes sense, so what the heck is a ListView.Items collection then? Back over to the "Go to definition" meta lookup for that guy...&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharpcode"&gt;[Localizable(&lt;span class="kwrd"&gt;true&lt;/span&gt;)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[Editor(&lt;span class="str"&gt;"System.Windows.Forms.Design.ListViewItemCollectionEditor, System.Design, Version=2.0.0.0, 
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt; (UITypeEditor))]
[MergableProperty(&lt;span class="kwrd"&gt;false&lt;/span&gt;)]
&lt;span class="kwrd"&gt;public&lt;/span&gt; ListViewItemCollection Items { get; }
&lt;/pre&gt;&lt;br /&gt;
Uh...OK, so the Items property is this ListViewItemCollection class, but what is that? AGAIN with the lookup I come to...&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ListViewItemCollection : IList, ICollection, IEnumerable
&lt;/pre&gt;&lt;br /&gt;
Aha! It's the problem I just defined in my mind. ListViewItemCollection is just an IEnumerable collection (of objects). The indexer...&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;virtual&lt;/span&gt; ListViewItem &lt;span class="kwrd"&gt;this&lt;/span&gt;[&lt;span class="kwrd"&gt;int&lt;/span&gt; index] { get; set; }
&lt;/pre&gt;&lt;br /&gt;
.. is the reason we can easily deal with ListViewItems when we're doing foreach loops on the ListView.Items property. It does the boxing for us. Interesting performance hit, will have to check that out later as Microsoft is probably (hopefully) doing something to defer the boxing cost of each item in the List.&lt;br /&gt;
&lt;br /&gt;
OK, so problem identified but what could I do about it. I'd love to say it was some methodical deduction that brought me to the Cast&lt;t&gt; method but I just did an IntelliSense on the ListView.Items property to see what Linq extensions &lt;strong&gt;were&lt;/strong&gt; available to me. &lt;br /&gt;
&lt;br /&gt;
I started looking into AsQueryable() but I couldn't quite achieve what I wanted. Then, I noticed the little Cast beneath it (in IntelliSense). Poof, that worked. &lt;br /&gt;
&lt;br /&gt;
Voila, now you can run your handy Linq queries against most anything IEnumerable as long as you can, with some accuracy, cast each member to a specific type. &lt;br /&gt;
&lt;br /&gt;
On the Googling: I thought to myself cool! I figured out a problem everyone can use everywhere at all times. Then that creeping feeling overcame me that, "Nah, that was too easy" so I went back to Google. I wasn't a pioneer after all, drat. &lt;a href="http://www.developingfor.net/c-30/a-good-practical-linq-example.html"&gt;A Good, practical LINQ example&lt;/a&gt; shows you the same technique with a bit more detail and insight (but less comedy) than I came up with. I didn't realize that Linq works on Sequences so you should check this post out as well for a better understanding. Our similarities in deducing the same conclusion was a bit eerie however but I'll let that slide and drink more java (coffee not the language).&lt;br /&gt;
&lt;br /&gt;
I will post my final solution to the checkbox issue itself because it screams reusable code to me. I will refactor my solution into something that isn't bound to specific controls, maybe not even Windows.Forms controls and post it here later. &lt;br /&gt;
&lt;br /&gt;
I made a New Years Resolution to blog at least 4 times a week and mean to keep it up so this is the first installment (late already).&lt;br /&gt;
&lt;br /&gt;
That's all for today and happy Linq'ing...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6549148752526922467-6745523186749676779?l=djproduct.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/58kBZcAUiVHURhNnNQPOi7lviaU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/58kBZcAUiVHURhNnNQPOi7lviaU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/58kBZcAUiVHURhNnNQPOi7lviaU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/58kBZcAUiVHURhNnNQPOi7lviaU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djProduct/~4/Lcm1arcrKh8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://djproduct.blogspot.com/feeds/6745523186749676779/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6549148752526922467&amp;postID=6745523186749676779" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6549148752526922467/posts/default/6745523186749676779?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6549148752526922467/posts/default/6745523186749676779?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/djProduct/~3/Lcm1arcrKh8/linq-queries-against-most-collections.html" title="Linq Queries against  most collections including ListView, ListViewItemCollection, ControlCollection or anything IEnumerable" /><author><name>Dave</name><uri>http://www.blogger.com/profile/01954530725629702486</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://1.bp.blogspot.com/_3OcOkrFwkaQ/SLWh7ApJNSI/AAAAAAAAAAQ/iK3-D3xTjHI/S220/profile.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://djproduct.blogspot.com/2010/01/linq-queries-against-most-collections.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQFQns9cCp7ImA9WxNVE0k.&quot;"><id>tag:blogger.com,1999:blog-6549148752526922467.post-2883940610230971189</id><published>2009-10-23T19:17:00.001-04:00</published><updated>2009-10-23T21:38:33.568-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-23T21:38:33.568-04:00</app:edited><title>Where does my blog title come from?</title><content type="html">In case you are wondering about the odd title of my blog it is a little inside joke. In addition to being an old school software developer I'm also an old school gamer. The reference is best described here: &lt;a href="http://en.wikipedia.org/wiki/All_your_base_are_belong_to_us"&gt;All your base are belong to us&lt;/a&gt;. It's just a simple play on words built on an old poorly translated game dialog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6549148752526922467-2883940610230971189?l=djproduct.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vHAM1xJXalkiSadmnFVXs_UxI3g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vHAM1xJXalkiSadmnFVXs_UxI3g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vHAM1xJXalkiSadmnFVXs_UxI3g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vHAM1xJXalkiSadmnFVXs_UxI3g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djProduct/~4/9FG-CWjV5s4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://djproduct.blogspot.com/feeds/2883940610230971189/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6549148752526922467&amp;postID=2883940610230971189" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6549148752526922467/posts/default/2883940610230971189?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6549148752526922467/posts/default/2883940610230971189?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/djProduct/~3/9FG-CWjV5s4/where-does-my-blog-title-come-from.html" title="Where does my blog title come from?" /><author><name>Dave</name><uri>http://www.blogger.com/profile/01954530725629702486</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://1.bp.blogspot.com/_3OcOkrFwkaQ/SLWh7ApJNSI/AAAAAAAAAAQ/iK3-D3xTjHI/S220/profile.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://djproduct.blogspot.com/2009/10/where-does-my-blog-title-come-from.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEECRHwzeCp7ImA9WxNVE0g.&quot;"><id>tag:blogger.com,1999:blog-6549148752526922467.post-982405267580138947</id><published>2009-10-23T18:54:00.006-04:00</published><updated>2009-10-23T23:57:45.280-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-23T23:57:45.280-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Business Logic Layer" /><category scheme="http://www.blogger.com/atom/ns#" term="Asp.Net" /><category scheme="http://www.blogger.com/atom/ns#" term="ResolveUrl" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="BLL" /><category scheme="http://www.blogger.com/atom/ns#" term="Website" /><category scheme="http://www.blogger.com/atom/ns#" term="WebService" /><title>Using the ResolveUrl method inside your class library Business Logic Layer (BLL)</title><content type="html">&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Getting around passing HttpContext.Current to your business logic layer, or BLL.&lt;/span&gt;&lt;b&gt; &lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;The Problem:&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
You want to use handy methods like ResolveUrl inside your Business Logic Layer (BLL) which is a class library. You don't want to reference System.Web or any .Net framework library beneath the System.Web subsystem inside your BLL libraries. &lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;The Fix:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
Create a small Utility class inside your class library and pass it a delegate. I know, I'm not a big fan of Utility (or similar) classes but sometimes you need a little tool-belt class for miscellaneous utilitarian methods. I actually have a Common class library that has even less dependencies than my typical BLL library which is where I stuck this class. Obviously, place the code where appropriate for your solution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt; &lt;br /&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System; 
&lt;span class="kwrd"&gt;namespace&lt;/span&gt; Common 
{ 
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Utility 
    { 
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; Func&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; ResolveUrl; 
    } 
} 

&lt;/pre&gt;Now in your global.asax place the following.&lt;br /&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt; &lt;br /&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Session_Start(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e) 
{ 
    AssignBusinessLogicLayerHelpers(); 
} 

&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; AssignBusinessLogicLayerHelpers() 
{ 
    var context = HttpContext.Current; 
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (context == &lt;span class="kwrd"&gt;null&lt;/span&gt;) &lt;span class="kwrd"&gt;return&lt;/span&gt;; 

    var page = context.Handler &lt;span class="kwrd"&gt;as&lt;/span&gt; Page; &lt;span class="kwrd"&gt;if&lt;/span&gt; (page == &lt;span class="kwrd"&gt;null&lt;/span&gt;) &lt;span class="kwrd"&gt;return&lt;/span&gt;; 

    &lt;span class="rem"&gt;// assign the resolve url method&lt;/span&gt; 
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (Utility.ResolveUrl == &lt;span class="kwrd"&gt;null&lt;/span&gt;) 
    { 
        Utility.ResolveUrl = page.ResolveUrl; 
    } 

    &lt;span class="rem"&gt;// assign other helper methods here...&lt;/span&gt; 
} 
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Here we've elegantly passed a generic delegate to our Utility class that will reference back to the provided ResolveUrl method. The method stamp deals with primitive types only (strings) so we have no dependencies passing this function pointer across the domains.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;The Why:&lt;/b&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
You do not want to have a BLL or similar class library system utilizing System.Web, or System.Windows.Forms for that matter. If you have a solution with a web service, a web site and a common class library (BLL or other) and you start using methods dependent on HttpContext.Current you are going to run into issues as this context is not the same between the web service and your web site. A common scenario might be a LINQ2SQL Business Object Layer on top of your SQL Database which has effectively become your BLL. You may have classes that need to store virtual, resolved paths into the database but you want to place the resolving of the URL inside your business object classes to enforce a&amp;nbsp; strong encapsulation of the class. Here's an easy, 5 minute way to provide such features to your business objects without breaking your nTier application model. Now you can happily store the AvatarUrl of your users in the database and have your aspnet_User class do the resolution on the fly!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6549148752526922467-982405267580138947?l=djproduct.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wYiqnpUIgmnhZzLZEWGxIqALGhY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wYiqnpUIgmnhZzLZEWGxIqALGhY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wYiqnpUIgmnhZzLZEWGxIqALGhY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wYiqnpUIgmnhZzLZEWGxIqALGhY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djProduct/~4/9Q4r6BE71Ag" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://djproduct.blogspot.com/feeds/982405267580138947/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6549148752526922467&amp;postID=982405267580138947" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6549148752526922467/posts/default/982405267580138947?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6549148752526922467/posts/default/982405267580138947?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/djProduct/~3/9Q4r6BE71Ag/using-resolveurl-method-inside-your.html" title="Using the ResolveUrl method inside your class library Business Logic Layer (BLL)" /><author><name>Dave</name><uri>http://www.blogger.com/profile/01954530725629702486</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://1.bp.blogspot.com/_3OcOkrFwkaQ/SLWh7ApJNSI/AAAAAAAAAAQ/iK3-D3xTjHI/S220/profile.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://djproduct.blogspot.com/2009/10/using-resolveurl-method-inside-your.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYGQn88fyp7ImA9WxNWGEk.&quot;"><id>tag:blogger.com,1999:blog-6549148752526922467.post-7165081388802506945</id><published>2009-10-17T22:18:00.008-04:00</published><updated>2009-10-18T00:28:43.177-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-18T00:28:43.177-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Error" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><category scheme="http://www.blogger.com/atom/ns#" term="Service" /><category scheme="http://www.blogger.com/atom/ns#" term="CollabNet" /><category scheme="http://www.blogger.com/atom/ns#" term="Apache" /><category scheme="http://www.blogger.com/atom/ns#" term="Subverion" /><title>FIXED: Windows could not start the Subversion Apache on Local Computer</title><content type="html">&lt;b&gt;&lt;span style="font-size: large;"&gt;The Error: &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Helvetica, sans-serif&amp;quot;; font-size: 10pt; margin: 0in;"&gt;Windows could not start the CollabNet Subversion Apache on Local &lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: &amp;quot;Helvetica, sans-serif&amp;quot;; font-size: 10pt; margin: 0in;"&gt;Computer. For more information, review the System Event Log. If this is &lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: &amp;quot;Helvetica, sans-serif&amp;quot;; font-size: 10pt; margin: 0in;"&gt;a non-Microsoft service, contact the service vendor, and refer to &lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: &amp;quot;Helvetica, sans-serif&amp;quot;; font-size: 10pt; margin: 0in;"&gt;service-specific error code 1.&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_3OcOkrFwkaQ/Stp1ZkzxZZI/AAAAAAAAACM/G8jaRhDRQ9E/s1600-h/ApacheServiceError.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_3OcOkrFwkaQ/Stp1ZkzxZZI/AAAAAAAAACM/G8jaRhDRQ9E/s640/ApacheServiceError.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;The Fix:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
Open the file C:\Program Files\CollabNet\Subversion Server\httpd\conf in notepad. If you installed to a different directory or you're not installing Apache via/ CollabNet navigate to [Root of Apache Install]\httpd\conf and open in Notepad.&lt;br /&gt;
&lt;br /&gt;
find the following lines near the top of the file.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background-color: #f3f3f3; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;#&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="background-color: #f3f3f3; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;# Listen: Allows you to bind Apache to specific IP addresses and/or&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="background-color: #f3f3f3; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;# ports, instead of the default. See also the &lt;virtualhost&gt;&lt;br /&gt;
# directive.&lt;br /&gt;
#&lt;br /&gt;
# Change this to Listen on specific IP addresses as shown below to &lt;br /&gt;
# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)&lt;br /&gt;
#&lt;br /&gt;
#Listen 12.34.56.78:80&lt;br /&gt;
&lt;span style="background-color: red;"&gt;Listen 80&lt;/span&gt;&lt;/virtualhost&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Change the red line to a port number you're not using. If you don't know one, pick an oddball and change until it works.&lt;br /&gt;
&lt;div style="background-color: #f3f3f3; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;#Listen 12.34.56.78:80 (this is a comment, leave it alone)&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="background-color: #f3f3f3; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="background-color: lime; font-size: x-small;"&gt;Listen 31337&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;The Why:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
I ran into this error while installing the Apache 2.2 server on my local Windows Vista Machine during the &lt;a href="http://www.open.collab.net/downloads/subversion/"&gt;CollabNet Subversion&lt;/a&gt; install process. The error reared its ugly head when I tried to actually run the Apache service that was installed. The problem, which I'll freely admit, is I've installed so many software applications for Windows I am prone to accept the default install settings and fix things later if need be. Obviously, when you're trying to port the Apache server to Windows a little more care may be needed than when you're installing a simple Windows application. This little issue popped up because I accepted the default value of &lt;b&gt;Port 80 &lt;/b&gt;to use with the Apache server. Oops. Needless to say, as an Asp.Net developer I already have that port in use.&lt;br /&gt;
&lt;br /&gt;
The Event Logs provided the real information I needed to solve the issue. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Error in System Log:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
The CollabNet Subversion Apache service terminated with service-specific error 1 (0x1).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Information in System Log:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
The CollabNet Subversion Apache service entered the stopped state.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Error in the Application Log:&lt;/b&gt;&lt;br /&gt;
The Apache service named&amp;nbsp; reported the following error:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; (OS 10013)An attempt was made to access a socket in a way forbidden by its access permissions.&amp;nbsp; : make_sock: could not bind to address 0.0.0.0:80&lt;br /&gt;
&lt;br /&gt;
Eureka! Yes, that would cause a problem. It's times like these when I'd like to perform some aerodynamics testing on my laptop...&lt;br /&gt;
&amp;nbsp; .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6549148752526922467-7165081388802506945?l=djproduct.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vLwevpKznEMVKoYqlVSDSF_PGkM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vLwevpKznEMVKoYqlVSDSF_PGkM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vLwevpKznEMVKoYqlVSDSF_PGkM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vLwevpKznEMVKoYqlVSDSF_PGkM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djProduct/~4/1XwuPqAkE2Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://djproduct.blogspot.com/feeds/7165081388802506945/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6549148752526922467&amp;postID=7165081388802506945" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6549148752526922467/posts/default/7165081388802506945?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6549148752526922467/posts/default/7165081388802506945?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/djProduct/~3/1XwuPqAkE2Q/windows-could-not-start-subversion.html" title="FIXED: Windows could not start the Subversion Apache on Local Computer" /><author><name>Dave</name><uri>http://www.blogger.com/profile/01954530725629702486</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://1.bp.blogspot.com/_3OcOkrFwkaQ/SLWh7ApJNSI/AAAAAAAAAAQ/iK3-D3xTjHI/S220/profile.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_3OcOkrFwkaQ/Stp1ZkzxZZI/AAAAAAAAACM/G8jaRhDRQ9E/s72-c/ApacheServiceError.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://djproduct.blogspot.com/2009/10/windows-could-not-start-subversion.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUHQXwzfip7ImA9WxNWGEk.&quot;"><id>tag:blogger.com,1999:blog-6549148752526922467.post-3098331949159529715</id><published>2009-10-17T05:35:00.002-04:00</published><updated>2009-10-18T00:30:30.286-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-18T00:30:30.286-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="JS" /><category scheme="http://www.blogger.com/atom/ns#" term="Tools" /><category scheme="http://www.blogger.com/atom/ns#" term="Development" /><category scheme="http://www.blogger.com/atom/ns#" term="Validation" /><category scheme="http://www.blogger.com/atom/ns#" term="SEO" /><category scheme="http://www.blogger.com/atom/ns#" term="Software" /><category scheme="http://www.blogger.com/atom/ns#" term="Free" /><category scheme="http://www.blogger.com/atom/ns#" term="CSS" /><category scheme="http://www.blogger.com/atom/ns#" term="HTML" /><category scheme="http://www.blogger.com/atom/ns#" term="C# Asp.Net Upload Multiple Large File Resume Ajax Java Hermes" /><category scheme="http://www.blogger.com/atom/ns#" term="Firefox" /><title>Software Developer Browser and Plugin Choices</title><content type="html">&lt;b&gt;Firefox&lt;/b&gt;&lt;br /&gt;
I do a lot of Asp.Net development and I use Firefox as part of my development toolkit when diagnosing performance and design issues with any website I'm working on. I'm not going to touch on various methods of developing a website as I feel that's akin to trying to change someone's religion. Most of the tools I use however are software development platform choice independent. &lt;br /&gt;
&lt;br /&gt;
Firefox really shines as a development tool when you start utilizing some of the powerful developer-minded plug-ins that are available. I'm going to take the long view of some of these plug-ins in this post then drill down into some of the various features of some of the more comprehensive tools in future posts.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://developer.yahoo.com/yslow/"&gt;Yahoo! YSlow&lt;/a&gt;: I love it when powerhouses like Google, Yahoo, and Microsoft give back to the developer community by providing some free and useful tools. YSlow is a monster albeit a well designed one in that it's features aren't invoked until you ask for them thus keeping your average browsing experience relatively quick. This tool is indispensable for analyzing website speed bottlenecks and consequently design (layout) issues. Yahoo's YSlow relies on another must-have tool &lt;a href="http://getfirebug.com/"&gt;Firebug&lt;/a&gt;. Again, I will go into much greater detail about these tools soon but if you're not currently using them I highly recommend checking them out. They will make your website development a brighter world and neither are specific to Asp.Net.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://users.skynet.be/mgueury/mozilla/"&gt;Skynet's HTML Validator&lt;/a&gt;: Even if you're not a standards compliant centric developer (shame on you) this tool is invaluable. There have been countless times I've run into a layout or design flaw that I couldn't figure out even with FireBug. Sometimes the issue is, quite simply, that I have an artifact in my outgoing XHTML that is propogating down the DOM model to create very undesired results. The HTML Validator is a great tool for catching these flubs.&lt;br /&gt;
If you are a standards minded developer and strive to add the...&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;a href="http://validator.w3.org/check?uri=referer"&gt;&lt;img alt="Valid XHTML 1.0 Transitional" height="31" src="http://www.w3.org/Icons/valid-xhtml10" width="88" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
(or similar compliance) logo to your website then this tool offers huge time saving by bring the validation service to your local machine via Firefox.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.colorzilla.com/firefox/"&gt;Colorzilla&lt;/a&gt;: This is a handy tool for fetching HTML color codes in various formats. Although not a power tool in terms of performance analysis I couldn't live without this tool and use it daily. &lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://livehttpheaders.mozdev.org/"&gt;LiveHttpHeaders&lt;/a&gt;: When I need information on what is being posted/received in the HTTP headers this is where I go.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://ietab.mozdev.org/"&gt;IE Tab&lt;/a&gt;: Although I do my personal browsing and development testing in Firefox my target audience is typically an Internet Explorer browsing crowd. This tool is great for switching your gecko rendering engine over to IE to take a look at what the customer will see. I'd rather not load up IE 8 just to take a look at each web page I've designed to make sure it looks the same as my Firefox page, this is how. Also, if you've ever been to an ActiveX dependent web page, having filled in form information only to get stopped because the page requires IE, this is a great way to switch over, refresh the page and not lose everything you've typed in up to that point.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://screenshot-program.com/fireshot/"&gt;FireShot&lt;/a&gt;: I use this extensively for documentation provided to clients of the websites I'm working on. The ability to grab complete screen-shots of a web page, not just the portion visible on the screen/browser, is invaluable. It also provides powerful annotation/editing tools to make documentation simple and easy.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/590"&gt;ShowIP&lt;/a&gt;: A nice quick tool that keeps me from having to dig up the IP Address of the server I'm working on.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1433"&gt;Extended Statusbar&lt;/a&gt;: This is a useful one-stop shop for page download and render times.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1801"&gt;Clear Cache Button&lt;/a&gt;: O.K., not really a developer tool but install it and try living without it. Often I need to clear the browser cache to ensure I'm looking at my last minute development changes.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.google.com/chrome"&gt;Google Chrome&lt;/a&gt;: While Firefox will probably always remain my workhorse for development testing and debugging sometimes I need a light-weight browser just to take a quick test run through some code changes. Please note: Firefox is a very lightweight browser until you load a ton of plug-ins into it. As a contract software and web developer I do a lot of work on laptops when I'm not at home. When I'm working on a less than hardy development workstation such as a laptop I'll use a default, no frills,&amp;nbsp; install of Chrome to view and test website changes with. It carries a much lighter footprint than Internet Explorer of course, while also providing me with glaring design flaws under the &lt;a href="http://en.wikipedia.org/wiki/WebKit"&gt;WebKit&lt;/a&gt; rendering engine. The WebKit rendering engine is also used by Safari so if you don't have a Mac lying around somewhere this is a simple and easy way to get a look at what your Mac based audience is typically seeing. Please note that Chrome and Safari do not run parallel compliance to the WebKit versions so Chrome is not a replacement to Safari targeted development. So, until Firefox (or a plug-in) makes profile switching a breeze, allowing me to mindlessly run a stripped down version or bloated version of Firefox with ease I will continue to have a place for Chrome in my toolkit.&lt;br /&gt;
&lt;br /&gt;
That's all for now. Soon I will do a much more detailed write up of FireBug and YSlow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6549148752526922467-3098331949159529715?l=djproduct.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qGu7IWgfS2wCcYDo7JKkSL3odCE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qGu7IWgfS2wCcYDo7JKkSL3odCE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qGu7IWgfS2wCcYDo7JKkSL3odCE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qGu7IWgfS2wCcYDo7JKkSL3odCE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djProduct/~4/TCrz0c3-bfM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://djproduct.blogspot.com/feeds/3098331949159529715/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6549148752526922467&amp;postID=3098331949159529715" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6549148752526922467/posts/default/3098331949159529715?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6549148752526922467/posts/default/3098331949159529715?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/djProduct/~3/TCrz0c3-bfM/software-developer-browser-and-plugin.html" title="Software Developer Browser and Plugin Choices" /><author><name>Dave</name><uri>http://www.blogger.com/profile/01954530725629702486</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://1.bp.blogspot.com/_3OcOkrFwkaQ/SLWh7ApJNSI/AAAAAAAAAAQ/iK3-D3xTjHI/S220/profile.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://djproduct.blogspot.com/2009/10/software-developer-browser-and-plugin.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQGR3wzfSp7ImA9WxNWGEk.&quot;"><id>tag:blogger.com,1999:blog-6549148752526922467.post-706094409808371458</id><published>2009-10-04T10:29:00.002-04:00</published><updated>2009-10-18T00:32:06.285-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-18T00:32:06.285-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Code Coverage" /><category scheme="http://www.blogger.com/atom/ns#" term="32-bit" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><category scheme="http://www.blogger.com/atom/ns#" term="TeamBuild" /><category scheme="http://www.blogger.com/atom/ns#" term="VSP2013" /><title>FIXED - Cannot eliminate warning VSP2013 when Code Coverage is enabled in TeamBuild builds</title><content type="html">Code coverage instrumentation warning while processing file [Your Assembly]&lt;br /&gt;
Warning VSP2013 : Instrumenting this image requires it to run as a 32-bit process.  The CLR header flags have been updated to reflect this.&lt;br /&gt;
&lt;br /&gt;
This is something I ran into while writing unit tests for a project. The error pops up when you have code coverage enabled for your unit tests.&lt;br /&gt;
&lt;br /&gt;
Workaround:&lt;br /&gt;
&lt;br /&gt;
1) Open the project properties of the assembly you are &lt;b&gt;instrumenting&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
2) Go to the Build tab.&lt;br /&gt;
&lt;br /&gt;
3) Make sure the combo configuration selection is set to the Debug (or equivalent) configuration.&lt;br /&gt;
&lt;br /&gt;
4) Set the "Platform target" to x86.&lt;br /&gt;
Note: This sets the assembly to be compiled specifically as 32 bit but only the debug assembly so you do not alter the output of your production, deployment assembly.&lt;br /&gt;
&lt;br /&gt;
This will remove the warning when you are performing code coverage on the debug version of your assembly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6549148752526922467-706094409808371458?l=djproduct.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iFqe7i1IKswH0rYsqwes7-cY5rw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iFqe7i1IKswH0rYsqwes7-cY5rw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/iFqe7i1IKswH0rYsqwes7-cY5rw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iFqe7i1IKswH0rYsqwes7-cY5rw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djProduct/~4/l9hQc-LMTnE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://djproduct.blogspot.com/feeds/706094409808371458/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6549148752526922467&amp;postID=706094409808371458" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6549148752526922467/posts/default/706094409808371458?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6549148752526922467/posts/default/706094409808371458?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/djProduct/~3/l9hQc-LMTnE/fixed-cannot-eliminate-warning-vsp2013.html" title="FIXED - Cannot eliminate warning VSP2013 when Code Coverage is enabled in TeamBuild builds" /><author><name>Dave</name><uri>http://www.blogger.com/profile/01954530725629702486</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://1.bp.blogspot.com/_3OcOkrFwkaQ/SLWh7ApJNSI/AAAAAAAAAAQ/iK3-D3xTjHI/S220/profile.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://djproduct.blogspot.com/2009/10/fixed-cannot-eliminate-warning-vsp2013.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQNSXY6cCp7ImA9WxNWGEk.&quot;"><id>tag:blogger.com,1999:blog-6549148752526922467.post-1350076081526882565</id><published>2008-09-25T22:17:00.011-04:00</published><updated>2009-10-18T00:33:18.818-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-18T00:33:18.818-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Upload Control" /><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Hermes" /><category scheme="http://www.blogger.com/atom/ns#" term="Ajax" /><category scheme="http://www.blogger.com/atom/ns#" term="C# Asp.Net Upload Multiple Large File" /><category scheme="http://www.blogger.com/atom/ns#" term="Asp.Net" /><category scheme="http://www.blogger.com/atom/ns#" term="Resume" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>Hermes Java File Uploader for Asp.Net Multiple Large File Uploads with Resume Capability</title><content type="html">&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;span style="font-size: 180%; font-style: italic;"&gt;I needed a control that would upload multiple, large files (100+ MB), resume on error AND allow me to "catch" the uploaded files in C# code so I could perform my own manipulations, and I needed it fast. &lt;/span&gt;&lt;span style="font-size: 180%;"&gt;&lt;a href="http://javauploader.com/pricing.html" style="font-style: italic;"&gt;Hermes Java File Uploader&lt;/a&gt;&lt;span style="font-style: italic;"&gt; was the answer, the only answer.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
Here I am working on this web site for my current contractor and we determine that we have a need for uploading large files to the web server via. a public web page. In years of Asp.Net development I have actually never ran into this requirement on a website. I was lucky. This sounded to me like a very common task requiring a simple solution even though I had never come across the need in my development endeavors.&lt;br /&gt;
&lt;br /&gt;
I was wrong.&lt;br /&gt;
&lt;br /&gt;
The Asp.Net built-in methods for uploading large files is lacking at best. While the provided FileUpload may be sufficient for small uploads and certainly simplifies uploads from previous .Net versions it's not suitable for large file uploads, resuming interrupted uploads, or managing multiple uploads effectively.&lt;br /&gt;
&lt;br /&gt;
The age old question comes "to develop, or not to develop". I started reading into the problem, and concurrently pricing 3rd party controls. To my dismay, while researching pure Asp.Net upload controls that would effectively solve all of my requirements I determined only one thing - such a thing doesn't exist! Well, that put quite a damper on my hopes of writing some quick elegant control in C#/Asp.Net that would handle all of my needs. Time is always of the essence and I just don't have the time to pull off a RYO control of this scale on the fly, especially with no samples of other people's working controls on &lt;a href="http://www.codeproject.com/"&gt;CodeProject &lt;/a&gt;to get me started.&lt;br /&gt;
&lt;br /&gt;
I swallow hard and realize I'm going to have to enter that scary untrustworthy world of JavaScript for my solution. I tried a few controls of varied prices and nothing really sat very well with me. Then I came across the &lt;a href="http://javauploader.com/pricing.html"&gt;Hermes Java File Uploader&lt;/a&gt; control.&lt;br /&gt;
&lt;br /&gt;
I was instantly a little more comfortable with a Java control vs. a JavaScript control for obvious &lt;a href="http://www.woodger.ca/jvjs.htm"&gt;reasons&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The requirements I discovered I actually needed as I tested various controls were the following.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Be able to browse the user's local file system and select multiple files easily.&lt;/li&gt;
&lt;li&gt;Manage selected files easily - add to, remove, etc. before clicking the upload button.&lt;/li&gt;
&lt;li&gt;Resume a broken upload no matter what happened, user clicks the back button AND says "Yes, I'm absolutely sure I know exactly what I'm doing even though we're at 99% complete on my upload" -or- my dedicated server which I manage that NEVER goes down because of an oversight on my part spontaneously combusts thus breaking the download through no fault of my own.&lt;/li&gt;
&lt;li&gt;Handle very large files up to a possible 100 MB.&lt;/li&gt;
&lt;li style="font-weight: bold;"&gt;This is the kicker - be able to upload the file through the control but pass the handling off to C# code where I can further massage the upload.&lt;/li&gt;
&lt;/ul&gt;I've got to admit by the time I found the Hermes control I was a bit jaded and getting that distant churn in my stomach that this wasn't going to be possible without some kind of Enterprise Solution intervention. We all know if you slap the word Enterprise on something the price jumps $10,000. So I start fumbling around with the Hermes control and instantly I'm uploading multiple files, breaking connection, resuming, handling large files and then I get to the killer. I need to catch the upload in C# code. I found Hermes because of this capability while Googling so I start looking at their provided Asp.Net page.&lt;br /&gt;
&lt;br /&gt;
It didn't do what I wanted right away. I should preface this with the fact that I am Java retarded and have about 2 hours of Google knowledge on how uploads work behind the scenes in Asp.Net. Which, in reality, isn't Asp.Net specific at all and is pretty much the same old HTML way of doing things with not much wrapping going on.&lt;br /&gt;
&lt;br /&gt;
I try to smash round peg into square hole for a while and realize I don't know what the heck I'm doing so I contact the guys over at Hermes and this is where I'm blown away. I explain what I'm trying to do and the crunch I'm under, "please help me asap". I get a reply immediately telling me to try a couple of things so I do and it's still not working. I eat a big fat slice of humble pie and email back explaining how Java and Upload challenged I am and that I'm really in a bind and this control just has to work because there's nothing else even close, it just HAS TO.&lt;br /&gt;
&lt;br /&gt;
Their team emails me back and suggests this: We open up an FTP account for them to access my server and they will take a look at what's going on, find the issue, fix it, upload it, solve it, and email me back when they're done. My jaw hit the floor. In 12 years of software development I can honestly say: never. Not only did they do exactly that but it was done that day!&lt;br /&gt;
&lt;br /&gt;
You know what, this is a shameless plug for the Hermes team and their control. It's the least I could do for the unbelievable support and solution they provided. It's also not hard to get behind a control I'm using and very happy with. Kudos to Marek and the development and support teams over at Hermes for going light years above and beyond the call of duty to help out a single customer who incidentally was purchasing the cheapest version of their control.&lt;br /&gt;
&lt;br /&gt;
A note for Asp.Net web developers. One thing that we did run into that I was unaware of... If you're going to be uploading large files to your website you will need to change a setting in your web.config to account for this.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/system.web.configuration.httpruntimesection.maxrequestlength.aspx"&gt;HttpRuntimeSection..::.MaxRequestLength Property&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I would suggest setting this in the code behind file where you "catch" your uploads.&lt;br /&gt;
&lt;br /&gt;
The alternative is setting the value in your web.config file as found on &lt;a href="http://msdn.microsoft.com/en-us/library/e1f13641.aspx"&gt;MSDN&lt;/a&gt;. Making this a global setting in your web.config is probably not wise however and you should at least constrain the setting to a specific location on your website as a precaution.&lt;br /&gt;
&lt;br /&gt;
Thanks and happy uploading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6549148752526922467-1350076081526882565?l=djproduct.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/30y06fpIF2x-_XaR0cBmzmKLob0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/30y06fpIF2x-_XaR0cBmzmKLob0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/30y06fpIF2x-_XaR0cBmzmKLob0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/30y06fpIF2x-_XaR0cBmzmKLob0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djProduct/~4/6d7G-XpspSs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://djproduct.blogspot.com/feeds/1350076081526882565/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6549148752526922467&amp;postID=1350076081526882565" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6549148752526922467/posts/default/1350076081526882565?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6549148752526922467/posts/default/1350076081526882565?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/djProduct/~3/6d7G-XpspSs/hermes-java-file-uploader-for-aspnet.html" title="Hermes Java File Uploader for Asp.Net Multiple Large File Uploads with Resume Capability" /><author><name>Dave</name><uri>http://www.blogger.com/profile/01954530725629702486</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://1.bp.blogspot.com/_3OcOkrFwkaQ/SLWh7ApJNSI/AAAAAAAAAAQ/iK3-D3xTjHI/S220/profile.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://djproduct.blogspot.com/2008/09/hermes-java-file-uploader-for-aspnet.html</feedburner:origLink></entry></feed>

