<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-19117963</id><updated>2012-01-22T15:01:16.177-08:00</updated><category term='Visual Studio'/><category term='Virtual PC'/><category term='proxy'/><category term='Microsoft'/><category term='KB'/><category term='XSD'/><category term='Performance'/><category term='Velocity'/><category term='Iphone'/><category term='rsync'/><category term='AJAX'/><category term='IPad'/><category term='KnockOutJS'/><category term='Security'/><category term='MSI'/><category term='http'/><category term='Web Application Project'/><category term='Visual Studio 2010'/><category term='ASP.NET'/><category term='AoP'/><category term='Support'/><category term='PowerShell'/><category term='IOS'/><category term='Business Objects'/><category term='WiX'/><category term='Windows 2008 R2'/><category term='Dev Connections'/><category term='Debugging'/><category term='Dump'/><category term='connection issues'/><category term='UAC Install'/><category term='Automation'/><category term='Windows 7'/><category term='apache'/><category term='VMWare'/><category term='Clear Case'/><category term='Gadget'/><category term='Spark'/><category term='IoC'/><category term='Outlook 2010'/><category term='MemCached'/><category term='SOP'/><category term='XML'/><category term='Hyper-V'/><category term='TOMCAT'/><category term='regular expression'/><category term='Search'/><category term='IIS'/><category term='Presentations'/><category term='Project 2010'/><category term='load balancer'/><category term='DI'/><category term='KnockBack'/><category term='Spring.Net'/><category term='CruiseControl.NET'/><category term='Microsoft Sync Framework'/><category term='relocation'/><category term='CoffeeScript'/><category term='build'/><category term='Linq'/><category term='html'/><category term='WebDav'/><category term='Windows Installer'/><category term='ASP.NET MVC Framework'/><category term='virus'/><category term='ADAM'/><category term='Tools'/><category term='JavaScript'/><category term='Entity Framework'/><category term='Silverlight'/><category term='Excel'/><title type='text'>Ran Davidovitz</title><subtitle type='html'>Great place for random technology headlines and cool things</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default?start-index=101&amp;max-results=100'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>152</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-19117963.post-4536582078108947677</id><published>2011-12-25T13:34:00.001-08:00</published><updated>2011-12-25T13:34:58.898-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='CoffeeScript'/><category scheme='http://www.blogger.com/atom/ns#' term='KnockBack'/><category scheme='http://www.blogger.com/atom/ns#' term='KnockOutJS'/><title type='text'>Its all about the version</title><content type='html'>&lt;p&gt;last week I downloaded couple of good frameworks I am going to use more and more for the client side:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://coffeescript.org/"&gt;CoffeeScript&lt;/a&gt; – I was skeptic at start, but I am addicted now &lt;/li&gt;    &lt;li&gt;&lt;a href="http://knockoutjs.com/"&gt;KnockOutJS&lt;/a&gt; – MVVM, its all about two way binding &lt;/li&gt;    &lt;li&gt;&lt;a href="http://documentcloud.github.com/backbone/"&gt;BackBone&lt;/a&gt; – MVC, utilities and good app design &lt;/li&gt;    &lt;li&gt;&lt;a href="http://kmalakoff.github.com/knockback/"&gt;KnockBack&lt;/a&gt; – takes the good of KnockOutJS &amp;amp; BackBone and combine them together &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I started to write a simple code that will show list of items (Customer name and severity) and allow the user to double click on the customer name / Severity text so that it will become editable&lt;/p&gt;  &lt;p&gt;It took me 10 min to write it and 4 hours to debug why it was not working&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;CoffeeScript code:&lt;/strong&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;font size="1"&gt;TicketViewModel = (ticket) -&amp;gt;&lt;br /&gt;    @customer_name = kb.observable(ticket, {key: 'CustomerName', write: ((text) -&amp;gt; ticket.save({CustomerName: text}))}, this)&lt;br /&gt;    @editingCustomerName = ko.observable(false)&lt;br /&gt;    @editCustomerName = (event) =&amp;gt; @editingCustomerName(true)&lt;br /&gt;&lt;br /&gt;    @severity = kb.observable(ticket, {key: 'Severity', write: ((text) -&amp;gt; ticket.save({Severity: text}))}, this)&lt;br /&gt;    @editingSeverity = ko.observable(false)&lt;br /&gt;    @editSeverity = (event) =&amp;gt; @editingSeverity(true)&lt;br /&gt;    @destroyTodo = =&amp;gt; model.destroy()        &lt;br /&gt;    @&lt;br /&gt;&lt;br /&gt;TicketListViewModel = (tickets) -&amp;gt;&lt;br /&gt;    @tickets = ko.observableArray([])&lt;br /&gt;    @collection_observable = kb.collectionObservable(tickets, @tickets, { view_model_constructor: TicketViewModel })&lt;br /&gt;    @removeTicket = (ticket) =&amp;gt; &lt;br /&gt;        @tickets.remove(ticket)&lt;br /&gt;        @&lt;br /&gt;    @&lt;br /&gt;&lt;br /&gt;app_view_model =&lt;br /&gt;    tickets_list: new TicketListViewModel(tickets)&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;HTML:&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;font size="1"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;ul &lt;/span&gt;&lt;span style="color: red"&gt;class&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;ticket-list&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;data-bind&lt;/span&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;span style="color: blue"&gt;=&amp;quot;foreach: tickets_list.tickets&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;li&lt;/span&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;div &lt;/span&gt;&lt;span style="color: red"&gt;class&lt;/span&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;span style="color: blue"&gt;=&amp;quot;ticket&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;span &lt;/span&gt;&lt;span style="color: red"&gt;class&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;ticket-customer&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;data-bind&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;text: customer_name, visible: !editingCustomerName(), dblclick: editCustomerName&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;span&lt;/span&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;input &lt;/span&gt;&lt;span style="color: red"&gt;data-bind&lt;/span&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;span style="color: blue"&gt;=&amp;quot;value: customer_name, visible: editingCustomerName, hasfocus: editingCustomerName&amp;quot; /&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;span &lt;/span&gt;&lt;span style="color: red"&gt;class&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;ticket-severity&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;data-bind&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;text: severity, visible: !editingSeverity(), dblclick: editSeverity&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;span&lt;/span&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;select  &lt;/span&gt;&lt;span style="color: red"&gt;data-bind&lt;/span&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;span style="color: blue"&gt;=&amp;quot;value: severity, visible: editingSeverity, hasfocus: editingSeverity&amp;quot;&amp;gt;&lt;br /&gt;                &amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;option &lt;/span&gt;&lt;span style="color: red"&gt;value&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;P1&amp;quot;&amp;gt;&lt;/span&gt;P1&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;option&lt;/span&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;br /&gt;                &amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;option &lt;/span&gt;&lt;span style="color: red"&gt;value&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;P2&amp;quot;&amp;gt;&lt;/span&gt;P2&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;option&lt;/span&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;br /&gt;                &amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;option &lt;/span&gt;&lt;span style="color: red"&gt;value&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;P3&amp;quot;&amp;gt;&lt;/span&gt;P3&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;option&lt;/span&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;br /&gt;            &amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;select&lt;/span&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;br /&gt;            &amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;a &lt;/span&gt;&lt;span style="color: red"&gt;href&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;#&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;data-bind&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;click: &lt;font style="background-color: #ffff00"&gt;$parent&lt;/font&gt;.removeTicket&amp;quot;&amp;gt;&lt;/span&gt;Delete me&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;a&lt;/span&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;span style="color: blue"&gt;&amp;gt;            &lt;br /&gt;        &amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;div&lt;/span&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;br /&gt;    &amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;li&lt;/span&gt;&lt;/font&gt;&lt;font size="1"&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;ul&lt;/span&gt;&lt;/font&gt;&lt;span style="color: blue"&gt;&lt;font size="1"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I had two problems:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;The click event was not binded to my function on my model &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;After fixing it, When clicking the function didn’t get as first parameter the current item &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;to make a long story short I had two key problems&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;The context I was looping on was the root rather than the collection, so I had to specifically write the function name with its parent , so instead of “$parent.removeTicket” I had to write “$root.tickets_list.removeTicket” &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;the version of KnockoutJS that is delivered with KnockBack is OLD! and didn’t have support of passing the current item &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I need to find a better way to share code…. any suggestions?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-4536582078108947677?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/4536582078108947677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=4536582078108947677' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4536582078108947677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4536582078108947677'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2011/12/its-all-about-version.html' title='Its all about the version'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-5627990909886181745</id><published>2011-11-26T15:56:00.001-08:00</published><updated>2011-11-26T15:56:48.834-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>Tips when working with web designers</title><content type='html'>&lt;p&gt;I have few suggestions for you to focus more on your next work with web designer that should save you time and money (based on my experience)&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;you should decide if you want static min width or fluid (stretches) – this will change the web designer entire work. choosing fluid is harder and requires more time&lt;/li&gt;    &lt;li&gt;Make sure that all the mockups work and move from one page to the other, this will ensure you really see the flow of movement in the site and you can use this mockup to show your investors something realistic quickly&lt;/li&gt;    &lt;li&gt;Use latest JQuery – sometimes the web designers use old version that will cause you more work later&lt;/li&gt;    &lt;li&gt;For forms make sure you also show the validation errors – this is crucial because playing later with the validation styles by your self will take you time or money if you will outsource it again&lt;/li&gt;    &lt;li&gt;Use HTML5 – there is NO reason not to use (use the relevant shim for old browsers)&lt;/li&gt;    &lt;li&gt;I really think your site should start with some standard template like &lt;a href="http://html5boilerplate.com/"&gt;boilerplate&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;It is your responsibility to test the site on all browsers! (personally I think you should NOT support IE6 &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://lh5.ggpht.com/-KYj8JcFPNVo/TtF8wL6XjaI/AAAAAAAAANo/w2G_FjVsCgE/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" /&gt;)&lt;/li&gt;    &lt;li&gt;Don’t forget the sample you got from web designer got static text with static width, you should make sure you test the design using larger text&lt;/li&gt;    &lt;li&gt;to support localization, your design should support RTL also (by using relevant classes without any tweaks from your side), although it doesn’t look important at start , not doing it now will cause you to pay more later&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Hope this works for you&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-5627990909886181745?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/5627990909886181745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=5627990909886181745' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/5627990909886181745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/5627990909886181745'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2011/11/tips-when-working-with-web-designers.html' title='Tips when working with web designers'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-KYj8JcFPNVo/TtF8wL6XjaI/AAAAAAAAANo/w2G_FjVsCgE/s72-c/wlEmoticon-smile%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-2624860171063139758</id><published>2011-09-03T17:42:00.001-07:00</published><updated>2011-09-03T17:42:49.362-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>The story of a 32 bit application pool and 64 bit IIS manager UI</title><content type='html'>&lt;p&gt;Yesterday I spent more than 4 hours to troubleshoot a weird situation that one of my web applications (32 bit) couldn’t get valid session state,&lt;/p&gt;  &lt;p&gt;From the error it seems as if the session state was disabled, so I started looking at several areas in the IIS Manager to validate session state is active (I started with the root configuration of the entire computer)&lt;/p&gt;  &lt;p&gt;I started with “Session State” options in the asp.net section and it looked ok&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-DFVfSkDjdyQ/TmLJVG2vCKI/AAAAAAAAANE/1gvpY_byPGI/s1600-h/Mezer_09-03_20-22-18%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Mezer_09-03_20-22-18" border="0" alt="Mezer_09-03_20-22-18" src="http://lh4.ggpht.com/-VISlTTlukZw/TmLJVU28BGI/AAAAAAAAANI/9cO-MhosUW8/Mezer_09-03_20-22-18_thumb%25255B1%25255D.jpg?imgmax=800" width="429" height="567" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So I continued to “Pages and Controls” options in the asp.net section – and than I saw it was set as false!!! (unlike the default)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-l4GyQU3IGAs/TmLJVmp5HJI/AAAAAAAAANM/jVTPfoscWkw/s1600-h/Mezer_09-03_20-23-15%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Mezer_09-03_20-23-15" border="0" alt="Mezer_09-03_20-23-15" src="http://lh5.ggpht.com/-b3PKwO-PhIE/TmLJV1Mv4FI/AAAAAAAAANQ/G0wV2oCNeUc/Mezer_09-03_20-23-15_thumb%25255B1%25255D.jpg?imgmax=800" width="429" height="252" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So I fixed it and restarted IIS to be on the safe side, and nothing was fixed it was still behaving as if the session state is off!&lt;/p&gt;  &lt;p&gt;3 hours passed while I was comparing the ApplicationHost.Config to other system I have and everything looked ok (including modules, order, etc).&lt;/p&gt;  &lt;p&gt;Than after discussing this with another friend of mine it came to me that it could be that the UI is a 64 bit application and as such it updates the 64 bit default web.config under %SYSTEMROOT%\Microsoft.NET\Framework&lt;strong&gt;64&lt;/strong&gt;\v2.0.50727\CONFIG&lt;/p&gt;  &lt;p&gt;Don’t forget our application is a 32 bit meaning the configuration it has, actually inherit from the 32 bit default root web.config which is found under %SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\CONFIG&lt;/p&gt;  &lt;p&gt;So I have checked the 32 bit web.config and indeed I saw that the session state was disabled.&lt;/p&gt;  &lt;p&gt;After I update this file everything started to work. &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://lh3.ggpht.com/-5Mx9rAIfZ94/TmLJWB1EmuI/AAAAAAAAANU/pGx5mpAbdGU/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" /&gt;&lt;/p&gt;  &lt;p&gt;So in essence if you application is a 32 bit – you shouldn’t use the INETMGR coz it will show you wrong values (inheritance is from the 64 bit rather than 32 bit root web.config) &lt;/p&gt;  &lt;p&gt;by the way, Look at this &lt;a href="http://www.iis.net/ConfigReference"&gt;link&lt;/a&gt; for a very good reference for the entire configuration files (including all the sections)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-2624860171063139758?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/2624860171063139758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=2624860171063139758' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/2624860171063139758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/2624860171063139758'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2011/09/story-of-32-bit-application-pool-and-64.html' title='The story of a 32 bit application pool and 64 bit IIS manager UI'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-VISlTTlukZw/TmLJVU28BGI/AAAAAAAAANI/9cO-MhosUW8/s72-c/Mezer_09-03_20-22-18_thumb%25255B1%25255D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-4951220826613327881</id><published>2011-08-29T21:27:00.001-07:00</published><updated>2011-08-29T21:27:50.484-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virus'/><title type='text'>I can’t believe it but today I installed a Trojan</title><content type='html'>&lt;p&gt;Yes, it happened to me too! (st-u-pid)&lt;/p&gt;  &lt;p&gt;I got email from “USPS” claiming that a delivery was delayed because no one was at home (and actually I was really expecting one to come)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-PUhvt_s0LX0/TlxmxDb3yRI/AAAAAAAAAM8/kVdiBdDbTW4/s1600-h/trojan%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="trojan" border="0" alt="trojan" src="http://lh3.ggpht.com/-hAH7j9TYoFw/Tlxmxf7pAFI/AAAAAAAAANA/xCHSKGlwiqg/trojan_thumb%25255B1%25255D.jpg?imgmax=800" width="446" height="280" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So I clicked on the link to see the PDF, but few seconds after I ran it i knew that I am doomed!&lt;/p&gt;  &lt;p&gt;The file was called usps_ship_receipt.pid (NOT PDF) and its actually executable (the text you see on first link actually has a link to a different URL: &lt;a href="http://plz.dont.com"&gt;http://habilitas.de/files/usps_ship_receipt.pif&lt;/a&gt;&amp;#160; &amp;lt;DontClick/&amp;gt;)&lt;/p&gt;  &lt;p&gt;When running it, it spawns a new process that start tracking the system (called NTVDM.exe and another tmp exe that runs in the windows\temp)&lt;/p&gt;  &lt;p&gt;it looks like this trojan is opening a socket in listen mode and also broadcast the server address to random target servers over the internet that include s15229459.onlinehome-server.info:80, ip143.gohost.kz:80, etc&lt;/p&gt;  &lt;p&gt;Amazingly – OfficeScan doesn’t find this Trojan!&lt;/p&gt;  &lt;p&gt;Damn it!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-4951220826613327881?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/4951220826613327881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=4951220826613327881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4951220826613327881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4951220826613327881'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2011/08/i-cant-believe-it-but-today-i-installed.html' title='I can’t believe it but today I installed a Trojan'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-hAH7j9TYoFw/Tlxmxf7pAFI/AAAAAAAAANA/xCHSKGlwiqg/s72-c/trojan_thumb%25255B1%25255D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-4751756637374722860</id><published>2011-08-04T19:14:00.001-07:00</published><updated>2011-08-04T19:14:14.570-07:00</updated><title type='text'>SQL Performance related to ASYNC_NETWORK_IO</title><content type='html'>&lt;p&gt;If your application is working with SQL and you face performance problems, I guess one of the things you do is to try and see the current processes in SQL &lt;/p&gt;  &lt;p&gt;If by running “select spid,blocked,lastwaittype,cpu,physical_io, memusage,status, cmd from master..sysprocesses” you see process that is waiting on ASYNC_NETWORK_IO than this means that you have network or client application problem that is causing SQL to not be able to flush its data (in general, client is not working fast enough to get the data and the buffer are filled)&lt;/p&gt;  &lt;p&gt;In this blog post I would like to focus on network issues and I assume your application is good.&lt;/p&gt;  &lt;p&gt;To ensure your network is correct check the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Your NIC has latest firmware &lt;/li&gt;    &lt;li&gt;Your NIC is set to specific speed and duplex – this is because from time to time we see problems that are related to card that detected the wrong speed / duplex mode, suggest to have it set to the maximum your network can hold&lt;/li&gt;    &lt;li&gt;Your NIC is working properly – no errors in event viewer or general problem in system that looks as related to network&lt;/li&gt;    &lt;li&gt;the component that are involved in the communication between client and server work correctly (Router, Hubs, etc) – check that you don’t have packet loss&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Hope tis post will save you few hours &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://lh6.ggpht.com/--ZgSck5U3C0/TjtR9VC13qI/AAAAAAAAAM4/jwcPvOr2NKI/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" /&gt;&lt;/p&gt;  &lt;p&gt;BTW good &lt;a href="http://sqlserverperformance.idera.com/network-performance/network-performance-problems-sql-server-server/" target="_blank"&gt;link&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-4751756637374722860?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/4751756637374722860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=4751756637374722860' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4751756637374722860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4751756637374722860'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2011/08/sql-performance-related-to.html' title='SQL Performance related to ASYNC_NETWORK_IO'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/--ZgSck5U3C0/TjtR9VC13qI/AAAAAAAAAM4/jwcPvOr2NKI/s72-c/wlEmoticon-smile%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-6368730873684781337</id><published>2011-07-17T17:38:00.001-07:00</published><updated>2011-07-17T17:38:13.041-07:00</updated><title type='text'>NETFLIX is down</title><content type='html'>&lt;p&gt;I am having some quality issues with NETFLIX, and when I went to their site I pressed on the “report quality issues”, this is the page I got &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://lh5.ggpht.com/-iZioir8DWmw/TiOAcWK4WTI/AAAAAAAAAMs/8msR6NlqHRQ/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-HuShTjj_4fY/TiOAcj8aCpI/AAAAAAAAAMw/Fxuac1b5x2w/s1600-h/Mezer_07-17_20-36-25%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Mezer_07-17_20-36-25" border="0" alt="Mezer_07-17_20-36-25" src="http://lh5.ggpht.com/-HNqprdOPB6o/TiOAdDW57fI/AAAAAAAAAM0/F6vKXRIT4ak/Mezer_07-17_20-36-25_thumb%25255B1%25255D.jpg?imgmax=800" width="412" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now I know HA is hard but its worth it, one more time this will happen for more than 10 min, I am moving to other company.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-6368730873684781337?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/6368730873684781337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=6368730873684781337' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/6368730873684781337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/6368730873684781337'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2011/07/netflix-is-down.html' title='NETFLIX is down'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-iZioir8DWmw/TiOAcWK4WTI/AAAAAAAAAMs/8msR6NlqHRQ/s72-c/wlEmoticon-smile%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-4555831134006279568</id><published>2011-07-15T20:41:00.001-07:00</published><updated>2011-07-15T20:41:38.156-07:00</updated><title type='text'>Case of timeout while Cognos tries to connect to SQL using windows authentication and JSQLConnect</title><content type='html'>&lt;p&gt;We faced a very weird situation that on one customer we had installation failure while trying to install Cognos (cannot start service).   &lt;br /&gt;While looking at the logs / event viewer we saw that its failing wen trying to connect to SQL (although all other parts of our install are working and successfully connect to the DB)&lt;/p&gt;  &lt;p&gt;We engaged Cognos support…. long story short … didn’t give any advantage&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The solution came from reviewing the Cognos Configuration Utility under ProcMon!!!&lt;/p&gt;  &lt;p&gt;While the Configuration application is trying to connect (and times out at the end) we see in procmon that somehow the system is trying to connect to &lt;a href="file://\\127.0.0.1,1534\pipe\sql\query"&gt;\\127.0.0.1,1534\pipe\sql\query&lt;/a&gt;&amp;#160; and get BAD NETWORK PATH&lt;/p&gt;  &lt;p&gt;Important to say that the address that we used is ourservername:1435 (yeap –&amp;gt; non default port)&lt;/p&gt;  &lt;p&gt;I have validated that all the SQL client are configured correctly with the correct order using SQL configuration manager…. still noting changes.&lt;/p&gt;  &lt;p&gt;Connecting to SQL using SQL Management works perfect &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-sadsmile" alt="Sad smile" src="http://lh4.ggpht.com/-OKw48L72Dl0/TiEIaiW4CmI/AAAAAAAAAMg/II_N4k0x8iw/wlEmoticon-sadsmile%25255B2%25255D.png?imgmax=800" /&gt;&lt;/p&gt;  &lt;p&gt;I decided to continue review the procmon trying to understand why we get connection to name pipe instead of our TCP….&lt;/p&gt;  &lt;p&gt;I searched up and saw that the process is querying registry: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib\ProtocolOrder and getting value of NP, TCP (meaning name pipe and tcp)&lt;/p&gt;  &lt;p&gt;so I decided to backup this registry portion and clear it, amazing doing this fixed the problem.&lt;/p&gt;  &lt;p&gt;Issue resolved by digging again using procmon &lt;/p&gt;  &lt;p&gt;While I don’t have root cause why this registry contain this wrong order or where is the bad port arrived, I decided to go ahead and publish this blog post – coz we wasted 3 days of Vendor-Customer ping pong&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Few interesting point now that we are all smarter:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.sqldev.org/sql-server-data-access/wswpexe-accessing-mssql-on-1433-when-serverlocal-on-conn-string-67703.shtml" target="_blank"&gt;Similar case&lt;/a&gt; – suggested that SQLOleDB Is effected by this registry &lt;/li&gt;    &lt;li&gt;&lt;a href="http://support.microsoft.com/kb/328383" target="_blank"&gt;Feature of protocol fall back&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Screen shot (if it helps)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-krvNNdRpCfA/TiEIb-mFr-I/AAAAAAAAAMk/FF5ES17S-KQ/s1600-h/Mezer_07-15_23-40-31%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Mezer_07-15_23-40-31" border="0" alt="Mezer_07-15_23-40-31" src="http://lh4.ggpht.com/-o_qO_vgei98/TiEIcUDBDkI/AAAAAAAAAMo/BKKPDKKFBSQ/Mezer_07-15_23-40-31_thumb%25255B2%25255D.jpg?imgmax=800" width="418" height="290" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-4555831134006279568?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/4555831134006279568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=4555831134006279568' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4555831134006279568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4555831134006279568'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2011/07/case-of-timeout-while-cognos-tries-to.html' title='Case of timeout while Cognos tries to connect to SQL using windows authentication and JSQLConnect'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-OKw48L72Dl0/TiEIaiW4CmI/AAAAAAAAAMg/II_N4k0x8iw/s72-c/wlEmoticon-sadsmile%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-1137610835116717817</id><published>2011-06-25T21:11:00.001-07:00</published><updated>2011-06-25T21:11:49.430-07:00</updated><title type='text'>The story of multiple conhost.exe</title><content type='html'>&lt;p&gt;I came a cross a question from customer, asking “Why do I see so many conhost.exe in the system”&lt;/p&gt;  &lt;p&gt;The first important thing to understand is that (taken from &lt;a href="http://superuser.com/questions/27347/what-is-conhost-exe" target="_blank"&gt;here&lt;/a&gt;):&lt;/p&gt;  &lt;p&gt;conhost.exe is the new host process for console windows. Previously those were handled by csrss.exe which is the “Client Server Runtime Process”, a process running with system-level privileges.&lt;/p&gt;  &lt;p&gt;Starting with Windows Vista, Microsoft made some very substantial improvements and changes in regard to security. One of those changes was that applications running in different “levels” or as different users weren't allowed to exchange data freely.&lt;/p&gt;  &lt;p&gt;Since console windows were handled by csrss.exe this had the side-effect that you could no longer drag files onto a console window and have the full path and file name inserted. Drag &amp;amp; drop is such a case of data exchange which was ruled out. People cried out even though most Windows users probably didn't even know of that feature.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Before we continue please read &lt;/strong&gt;&lt;a href="http://blogs.technet.com/b/askperf/archive/2009/10/05/windows-7-windows-server-2008-r2-console-host.aspx" target="_blank"&gt;&lt;strong&gt;this&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; very good article by Microsoft.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now that we understand that every console application should get a dedicated conhost.exe to handle its IO, we can create simple pattern to understand why we have multiple conhost in the system.&lt;/p&gt;  &lt;p&gt;The pattern will be very simple, we will use &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896645" target="_blank"&gt;ProcMon&lt;/a&gt; to monitor all new processes that are created (let assume the Operation is “Process Start” and that the process name ends with “.exe.”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-hJWrlrcf8LM/TgaxgcVSOGI/AAAAAAAAAMA/7ORbr98kwo8/s1600-h/ProcMon-Filter%25255B6%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="ProcMon-Filter" border="0" alt="ProcMon-Filter" src="http://lh4.ggpht.com/-68e-TAsjuCs/TgaxgsqX_xI/AAAAAAAAAME/_M-VkCOYGHQ/ProcMon-Filter_thumb%25255B4%25255D.jpg?imgmax=800" width="380" height="228" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;After running for some time we should see that each conhost.exe that was created will have another application created almost on the same time.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-sSaKx4MA-nE/Tgaxg-32FDI/AAAAAAAAAMI/V21KrwfJC7k/s1600-h/ProcMon-Output%25255B7%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="ProcMon-Output" border="0" alt="ProcMon-Output" src="http://lh4.ggpht.com/-Z8Rz6iEjJaE/TgaxhKphTKI/AAAAAAAAAMM/xtQAHHVTcvE/ProcMon-Output_thumb%25255B3%25255D.jpg?imgmax=800" width="375" height="341" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This means that we can easily understand which conhost belong to which application by monitoring the system.&lt;/p&gt;  &lt;p&gt;side note if you kill the conhost, the console application that triggered this will die &amp;lt;smile /&amp;gt;&lt;/p&gt;  &lt;p&gt;Now you can continue and investigate if this is your application and if its needed (if that’s important)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-1137610835116717817?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/1137610835116717817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=1137610835116717817' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1137610835116717817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1137610835116717817'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2011/06/story-of-multiple-conhostexe.html' title='The story of multiple conhost.exe'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-68e-TAsjuCs/TgaxgsqX_xI/AAAAAAAAAME/_M-VkCOYGHQ/s72-c/ProcMon-Filter_thumb%25255B4%25255D.jpg?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-7429168253805270994</id><published>2011-05-21T04:46:00.000-07:00</published><updated>2011-05-21T04:50:00.530-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><title type='text'>Extending partition or volume in windows 7</title><content type='html'>I just extended my system's partition from 70 Giga to 140 Giga using Discpart and it took under 5 min and work great! (no external tools)&lt;div&gt;* The disk manager UI didn't allow it (coz it was not dynamic)&lt;br /&gt;&lt;div&gt;I got the info from &lt;a href="http://www.sevenforums.com/tutorials/2670-partition-volume-extend.html"&gt;this blog&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-7429168253805270994?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/7429168253805270994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=7429168253805270994' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/7429168253805270994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/7429168253805270994'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2011/05/extending-partition-or-volume-in.html' title='Extending partition or volume in windows 7'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-1384583616696617011</id><published>2011-04-14T00:08:00.001-07:00</published><updated>2011-04-14T00:08:10.462-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Sync Framework'/><title type='text'>Microsoft Sync Framework is not a mirroring technology</title><content type='html'>&lt;p&gt;I think I got it wrong, I wanted to sync two folders by using &lt;a href="http://msdn.microsoft.com/en-us/sync/bb821992" target="_blank"&gt;Microsoft Sync Framework&lt;/a&gt; , so I downloaded their sample and it did a very good job of copying folder A content to folder B BUT after few minutes I saw that if altered the state of folder B (Like deleting a folder) than when doing the sync again the folder didn’t come back to life – apparently only changes that are detected on the source are applied to the target&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Am I doing something wrong (coz according to the article the knowledge of the target and knowledge of the source is used to determine the payload that should be synced)?&lt;/p&gt;  &lt;p&gt;Should I be disappointed or I simply expected something that is not intended to do?&lt;/p&gt;  &lt;p&gt;* I don’t want to have two way sync (I want to mirror A to B)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-1384583616696617011?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/1384583616696617011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=1384583616696617011' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1384583616696617011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1384583616696617011'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2011/04/microsoft-sync-framework-is-not.html' title='Microsoft Sync Framework is not a mirroring technology'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-7818967312414297855</id><published>2011-04-11T11:41:00.001-07:00</published><updated>2011-04-11T11:41:49.285-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='WebDav'/><title type='text'>Using Basic Authentication with Windows 7 and Windows Vista WebDAV Client</title><content type='html'>&lt;p&gt;by default you cannot use WEBDAV folder in windows 7 or Windows Vista which are not using SSL, you might get the following error “The folder you entered does not appear to be valid. Please choose another” or “Invalid folder”&lt;/p&gt;  &lt;p&gt;Luckily this behavior can be changed by editing HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\BasicAuthLevel and changing its value to 2 &lt;/p&gt;  &lt;p&gt;values are:&lt;/p&gt;  &lt;p&gt;0 - Basic authentication disabled   &lt;br /&gt;1 - Basic authentication enabled for SSL shares only    &lt;br /&gt;2 or greater - Basic authentication enabled for SSL shares and for non-SSL shares&lt;/p&gt;  &lt;p&gt;you can just run &lt;a href="http://www.davidovitz.org/PublicBlogItems/FixBASICAuthWebDav.reg" target="_blank"&gt;this reg file&lt;/a&gt; for easier approach&lt;/p&gt;  &lt;p&gt;More details &lt;a href="http://support.microsoft.com/kb/841215" target="_blank"&gt;here&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-7818967312414297855?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/7818967312414297855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=7818967312414297855' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/7818967312414297855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/7818967312414297855'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2011/04/using-basic-authentication-with-windows.html' title='Using Basic Authentication with Windows 7 and Windows Vista WebDAV Client'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-6980501408465704079</id><published>2011-03-31T03:39:00.001-07:00</published><updated>2011-03-31T03:39:50.741-07:00</updated><title type='text'>AppStore not in united states</title><content type='html'>For month I am failing to download or event open AppStore for several apps ( e.g. Microsoft one note for IPAD)&lt;br /&gt;today I found the answer, I was setup to use ITUNES account in Israel and apparently some content is made available per location&lt;br /&gt;If only The AppStore app would give a decent error message other than app not found !!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-6980501408465704079?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/6980501408465704079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=6980501408465704079' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/6980501408465704079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/6980501408465704079'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2011/03/appstore-not-in-united-states.html' title='AppStore not in united states'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-577193503886844716</id><published>2011-01-04T12:55:00.001-08:00</published><updated>2011-01-04T12:55:08.474-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Automation'/><title type='text'>Automation (Tests and Processes) pitfalls</title><content type='html'>&lt;p&gt;During the last year I was involved in few test automation and other automation of processes and I wanted to share with you some points of interest that you should be aware (that as always will reduce your time)&lt;/p&gt;  &lt;h3&gt;Doesn’t clear the old artifacts&lt;/h3&gt;  &lt;p&gt;One of the first actions you do in automation tests is to clear the old artifacts from previous run. failing to do so could cause you in time to send automation report that include previous run results.&lt;/p&gt;  &lt;h3&gt;Doesn’t report correctly on failure&lt;/h3&gt;  &lt;p&gt;While the application works very good on the happy path, there are some part of it that might be ignoring errors or even worse doesn’t know how to determine success of a process.&lt;/p&gt;  &lt;p&gt;This is issue is one of the most critical issues because it could lead you to wrongly report success although the process fail (this is not only for automation but true for every process you do).&lt;/p&gt;  &lt;p&gt;Real life scenario was that one of our automated tools for our installation Kit build had a section that was suppose to copy the newly created MSI to our installation Kit folder. the code was wrapped with try .. catch and ignored the error, which in time caused our build process to not catch copy failure and our kit got OLD MSI (simple 3 line of code caused a sever issue)&lt;/p&gt;  &lt;h3&gt;Running with personal user&lt;/h3&gt;  &lt;p&gt;The general process of creation of automation process mainly start with you running the process with your own user (as a demo), this can cause in time some level of dependency on you for your password and will most probably mean that your password is stored as clear text in your automation scrip configuration.    &lt;br /&gt;It is advised always to have a special user (global) that is used for running the automation and that has the relevant permission on target servers and shares.     &lt;br /&gt;Most over if you can ask your IT to have this user with password that doesn’t have to be changed it is great coz it will reduce the overhead of administration (they won’t agree)&lt;/p&gt;  &lt;h3&gt;Automation manager process require logged on console&lt;/h3&gt;  &lt;p&gt;Most of the automation script managers (Cruise control, Hudson, etc.) support running in console (showing the trace) and as service (auto loading after boot)&lt;/p&gt;  &lt;p&gt;Most of the projects I saw start using the console and actually stay with it, this means that they have dependency on the server to be logged in and the console running. and we always know that we have power supply issue and our server is not logged in –&amp;gt; Automation process no running.&lt;/p&gt;  &lt;p&gt;I suggest to always prefer using the service method and review the logs using the trace files or even better through the dashboard (coz this will be your end use case)&lt;/p&gt;  &lt;h3&gt;Scripts are not found under source control&lt;/h3&gt;  &lt;p&gt;I cant explain why this occurs but most of the automation scripts I see remain outside source control for most of their life time (until major issues occurs), maybe because most of them start as a demo?!&lt;/p&gt;  &lt;p&gt;This is not a suggestion but actually a requirement, ALWAYS save your scripts in source control (it is not different than other piece of software your write&lt;/p&gt;  &lt;h3&gt;Reports is not understood by end users&lt;/h3&gt;  &lt;p&gt;most of the time spent on test automation is used on making the test work while investing very little time on the report that is created by it, I see most of manager simply ignoring the end user and thinking “If I can understand the report, than it good enough coz it’s a waste of time and a never ending story”, while I can understand the need to invest in action that will show you ROI, you must understand that showing ROI is done also by people understanding that its working and understanding what is not working (so the report should be good enough to show it to them)&lt;/p&gt;  &lt;p&gt;Even at the technical level you must make sure that you can understand the technical actions done in the test case so that you can trouble shoot and answer simple questions like “Why did it fail”, make sure your output your actions to log. this can be in the executive summery or in an additional report (focused for engineering)&lt;/p&gt;  &lt;h3&gt;Report creation is done by concatenation of string&lt;/h3&gt;  &lt;p&gt;I guess you think to your self “This is not important”, I really think that the output of the report must be data driven and not created during the execution by concatenation of text (or HTML) coz that mean that your are not easy to do business with.    &lt;br /&gt;I suggest that each step that your run will have interface that output some XML (well known schema) that will include the actions done, results, execution time, errors, link to files, etc. and than the report will simply be XSLT that convert to HTML.     &lt;br /&gt;This way you can simply change the output very easily and more over you can delegate the task of report formatting to external resource that will make sure it is done centrally and applies for all of your tests&lt;/p&gt;  &lt;h3&gt;Full automation script doesn’t support re-run in the middle&lt;/h3&gt;  &lt;p&gt;While I am sure your automation process is built out of small atomic tests and your main automation process simply orchestrate those small parts to build large story, you will always come to a situation that your long test fails and you want to run it in the middle BUT you cant coz you rely on the execution flow.&lt;/p&gt;  &lt;p&gt;In essence you need to make sure that key section of the long story can be run in the middle and make sure you don’t rely too much on previous results.&lt;/p&gt;  &lt;p&gt;You need to support the option to start the automation from specific section (maintain the state)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Hope that will help you&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-577193503886844716?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/577193503886844716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=577193503886844716' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/577193503886844716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/577193503886844716'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2011/01/automation-tests-and-processes-pitfalls.html' title='Automation (Tests and Processes) pitfalls'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-4137507383254732263</id><published>2010-12-19T03:48:00.001-08:00</published><updated>2011-01-20T17:58:51.704-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='relocation'/><title type='text'>Relocation tips</title><content type='html'>&lt;p&gt;surprise: I am relocating to Atlanta Georgia on 15/Jan/2011 and going to manage the system engineering &amp;lt;Smile /&amp;gt;&lt;/p&gt;  &lt;p&gt;I am going to use this blog post to share some tips which should help you during the process and save you time&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Find out who relocate to your target location from your company and stay in touch with him, ask all the questions you can (coz there are lots of small issues that will waste your time) &lt;/li&gt;    &lt;li&gt;The &lt;a href="http://www.ssa.gov/ssnumber/"&gt;SSN&lt;/a&gt; is most important thing you need to get – without it you cannot be paid! so if you are going to house hunting make sure that you have you L1 Visa ready for that date and that the duration is no less than 10 days (time for I94 to arrive) [I Checked this and you must wait 10 days!!!] &lt;/li&gt;    &lt;li&gt;Most companies have budget for the entire relocation, so if you are moving with family it is advised to reduce the hotel duration to minimum (coz its too hard to be in small place) and have you rented house be there for you on the first week you arrive. the money that is left out of not using the hotel can be used to rent furniture until your container arrives &lt;/li&gt;    &lt;li&gt;I personally suggest to scan ALL the documents you have and save them in a folder that is shared online (Try &lt;a href="https://www.dropbox.com/referrals/NTE1MDg3Mzc5?src=global0"&gt;DROPBOX&lt;/a&gt; which works nice) than you can download them where ever you are &lt;/li&gt;    &lt;li&gt;When packing your house, it is advise to split the house into three sections: first priority – “must be shipped” , second priority “Could be shipped” and last priority – “should be distributed to other people”. this is needed because the container is not large enough to hold all your house so you need to prioritize it. and now it’s a good time to lose the garbage (if you didn’t use it for more than 3 months you will not use it ever)&lt;/li&gt;    &lt;li&gt;[29/Dec/2010] Don't forget to prepare money in advance for all your contracts that are you are canceling (e.g. Phone, Cell Phone, Cable, etc) - it could easily cost above 500$ &lt;/li&gt;    &lt;li&gt;[20/Jan/2011] For SSN meeting – come only AFTER you are 10 days in the USA and come with your &amp;amp; your wife’s passport , translated marriage certificate including the original one, I94 that shows the &lt;u&gt;correct&lt;/u&gt; VISA type. Kids are not entitled to get SSN they will only get &lt;a href="http://www.irs.ustreas.gov/individuals/article/0,,id=96287,00.html"&gt;ITIN&lt;/a&gt;. Do not accept to move to USA without having SSN in hand (meaning in your house hunting you must close the SSN issues – reason is that it effect you daily actions, spend money, etc)&lt;/li&gt;    &lt;li&gt;[20/Jan/2011] When renting a house make sure/demand that you will have refrigerator, Dryer and washing machine – otherwise you will need to pay 500- 2000$ (like US)&lt;/li&gt;    &lt;li&gt;[20/Jan/2011] If you are going to get company phone, it is advise to request it long before you arrive and preferred to get it in your house hunting (if you have such). Coz coming to USA without a phone is hard&lt;/li&gt;    &lt;li&gt;[20/Jan/2011] if you are coming from abroad than it is advised to create a local number at your origin that will allow your friend to call you for free in the local area (it should be approx 20$ monthly payment for you for unlimited account including you calling to your origin for unlimited amount of minutes)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Hope this saves some time for you&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-4137507383254732263?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/4137507383254732263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=4137507383254732263' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4137507383254732263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4137507383254732263'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/12/relocation-tips.html' title='Relocation tips'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-3107371163726977481</id><published>2010-12-19T03:35:00.001-08:00</published><updated>2010-12-19T03:35:30.443-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='load balancer'/><title type='text'>Cookies and load balancer stickiness</title><content type='html'>&lt;p&gt;There are few load balancer that use cookie to maintain the target node that the client show work with (stickiness) while other use IP or other approach&lt;/p&gt;  &lt;p&gt;When you write code to access some web service or WCF end point make sure that you enable the cookies (or cookies container) so that if the target address is using load balancer that uses cookies to support stickiness you will not lose it.&lt;/p&gt;  &lt;p&gt;Failing to do so might cause you session lost / problems in authentication&lt;/p&gt;  &lt;p&gt;If you do simple manual webrequest than you need to create new &lt;a href="http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.cookiecontainer.aspx"&gt;cookiecontainer&lt;/a&gt; and assign to the webrequest&lt;/p&gt;  &lt;p&gt;and if you use WCF than in the configuration simply set &lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.wshttpbinding.allowcookies.aspx"&gt;AllowCookies&lt;/a&gt; to true&lt;/p&gt;  &lt;p&gt;This should save you half a day of debugging customer site &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh4.ggpht.com/_tJ_SCvHoRhI/TQ3uAGneRLI/AAAAAAAAAK4/9DpSdjAY1OQ/wlEmoticon-smile%5B2%5D.png?imgmax=800" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-3107371163726977481?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/3107371163726977481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=3107371163726977481' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3107371163726977481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3107371163726977481'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/12/cookies-and-load-balancer-stickiness.html' title='Cookies and load balancer stickiness'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_tJ_SCvHoRhI/TQ3uAGneRLI/AAAAAAAAAK4/9DpSdjAY1OQ/s72-c/wlEmoticon-smile%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-1294019135369759699</id><published>2010-12-19T02:07:00.001-08:00</published><updated>2010-12-19T02:10:05.591-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>%ERRORLEVEL% and PowerShell</title><content type='html'>&lt;p&gt;in case you are writing PowerShell scripts and want to monitor the success of them using %ERRORLEVEL%, you should be aware that Exit(##) in your PS1 scripts will not effect the error level you read coz you are not on the same context as PowerShell.&lt;/p&gt;  &lt;p&gt;The solution (thanks to &lt;a href="http://il.linkedin.com/pub/dani-fischer/5/21b/137"&gt;Dani&lt;/a&gt;) is to use:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.management.automation.host.pshost.setshouldexit(VS.85).aspx"&gt;$host.SetShouldExit&lt;/a&gt;(int exitCode)      &lt;br /&gt;exit&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;* I must say that for me if looks like a bug that I need to alter my code so that other can read my exit code.&lt;/p&gt;    &lt;p&gt;This should do the the job.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-1294019135369759699?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/1294019135369759699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=1294019135369759699' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1294019135369759699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1294019135369759699'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/12/errorlevel-and-powershell.html' title='%ERRORLEVEL% and PowerShell'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-3663844404350679891</id><published>2010-12-13T14:07:00.001-08:00</published><updated>2010-12-13T14:07:44.071-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Support'/><title type='text'>executable file is locked for approx. 1 minute or more when deleting it by System</title><content type='html'>&lt;p&gt;The root cause was found by one of my team members called &lt;a href="http://il.linkedin.com/pub/vadim-blumkin/0/779/243"&gt;Vadim Blumkin&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Apparently when the service Application Experience Service (aelookupsvc) is disabled there is a weird behavior in windows 2008 R2 / Windows 7 that causes executables to be locked&amp;#160; when trying to delete them&lt;/p&gt;  &lt;p&gt;Amazingly this is a known issues that is listed &lt;a href="http://bbs.blackviper.com/index.php/topic,1679.0.html"&gt;here&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;We founds this issue while our process copied an exe , ran it and than tried to delete, copy and run again – we got access denied because files is being used. the handle was locked by System process&lt;/p&gt;  &lt;p&gt;according to Microsoft this service is not required but I would advise you to leave it as is and NOT disable it.&lt;/p&gt;  &lt;p&gt;Vadim thanks &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh6.ggpht.com/_tJ_SCvHoRhI/TQaZLkPhWZI/AAAAAAAAAKw/nFPKID_qcFo/wlEmoticon-smile%5B2%5D.png?imgmax=800" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-3663844404350679891?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/3663844404350679891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=3663844404350679891' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3663844404350679891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3663844404350679891'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/12/executable-file-is-locked-for-approx-1.html' title='executable file is locked for approx. 1 minute or more when deleting it by System'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_tJ_SCvHoRhI/TQaZLkPhWZI/AAAAAAAAAKw/nFPKID_qcFo/s72-c/wlEmoticon-smile%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-5897057703472479097</id><published>2010-12-13T13:44:00.001-08:00</published><updated>2010-12-13T13:44:01.400-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Getting current directory of the script in PowerShell</title><content type='html'>&lt;p&gt;Amazing I could find a fast solution for the question “How do I get the current directory of where I run the script”?&lt;/p&gt;  &lt;p&gt;The solution is to use like dos command %dp0 but in powershell / .NET syntax:&lt;/p&gt;  &lt;p&gt;$currentDirectory = [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition)&lt;/p&gt;  &lt;p&gt;This does the job very nicely but if you have better way please tell me&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-5897057703472479097?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/5897057703472479097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=5897057703472479097' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/5897057703472479097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/5897057703472479097'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/12/getting-current-directory-of-script-in.html' title='Getting current directory of the script in PowerShell'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-1657528808747989204</id><published>2010-12-13T13:40:00.001-08:00</published><updated>2010-12-13T13:40:18.795-08:00</updated><title type='text'>Creating ISO–free and easy</title><content type='html'>&lt;p&gt;one of the last steps of a project is to create the media that will be used to distribute it.&lt;/p&gt;  &lt;p&gt;Before you start searching for special and costly methods you should know that using &lt;a href="http://www.cygwin.com/"&gt;Cygwin&lt;/a&gt; you can get free command line tool to create your ISOs and also to burn them&lt;/p&gt;  &lt;p&gt;Also you can see &lt;a href="http://freshmeat.net/projects/cdrecord"&gt;CDRtool&lt;/a&gt; project that allows also burning of ISO (I think this is update faster)&lt;/p&gt;  &lt;p&gt;The tool used to create ISO is &lt;a href="http://cdrecord.berlios.de/private/man/cdrecord/mkisofs.8.html"&gt;MKISOFS&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enjoy&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-1657528808747989204?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/1657528808747989204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=1657528808747989204' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1657528808747989204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1657528808747989204'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/12/creating-isofree-and-easy.html' title='Creating ISO–free and easy'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-596057830715143861</id><published>2010-09-25T08:01:00.000-07:00</published><updated>2010-09-25T08:06:53.593-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Iphone'/><category scheme='http://www.blogger.com/atom/ns#' term='IPad'/><title type='text'>GalaxyEngine - open source game development suit that support IOS</title><content type='html'>I am just starting to develop for iOS mainly for iPhone , I want to start building a game.&lt;br /&gt;While learning the entire game development technics I came a long a new open source distributed game development suit that is tight together with Xcode called &lt;a href="http://code.google.com/p/galaxyengine/"&gt;GalaxyEngine&lt;/a&gt;, looks really nice and I will give it a try&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-596057830715143861?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/596057830715143861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=596057830715143861' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/596057830715143861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/596057830715143861'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/09/galaxyengine-open-source-game.html' title='GalaxyEngine - open source game development suit that support IOS'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-6112892094168860169</id><published>2010-09-08T15:01:00.001-07:00</published><updated>2010-09-08T15:01:17.177-07:00</updated><title type='text'>HTTP Error 500.52 - URL Rewrite Module Error</title><content type='html'>&lt;p&gt;Just got a ticket from a college of mine telling me that he gets HTTP 500.52 error while browsing to all sites (IIS).&lt;/p&gt;  &lt;p&gt;The specific error he got was “The configuration section &amp;quot;’system.webserver/rewrite/outboundrules’ cannot be read because it is missing a section declaration”&lt;/p&gt;  &lt;p&gt;Apparently this is related to BAD installation of the &lt;a href="http://learn.iis.net/page.aspx/664/using-url-rewrite-module-20/" target="_blank"&gt;Url rewrite module 2&lt;/a&gt; – it didn't add 3 sections to the &lt;a href="http://learn.iis.net/page.aspx/124/introduction-to-applicationhostconfig/" target="_blank"&gt;applicationhost.config&lt;/a&gt; file (outboundRules,rewriteMaps,allowedServerVariables) while it was successfully installed.&lt;/p&gt;  &lt;p&gt;I fixed that by reinstalling / repairing the “&lt;a href="http://learn.iis.net/page.aspx/664/using-url-rewrite-module-20/" target="_blank"&gt;Microsoft URL Rewrite Module 2 for IIS 7&lt;/a&gt;” (could also simply put the missing 3 items)&lt;/p&gt;  &lt;p&gt;Hope this helps&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-6112892094168860169?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/6112892094168860169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=6112892094168860169' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/6112892094168860169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/6112892094168860169'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/09/http-error-50052-url-rewrite-module.html' title='HTTP Error 500.52 - URL Rewrite Module Error'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-3477612591270814937</id><published>2010-09-01T15:43:00.001-07:00</published><updated>2010-09-01T15:43:57.445-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSI'/><category scheme='http://www.blogger.com/atom/ns#' term='WiX'/><title type='text'>Preventing Confidential Information from Being Written into the Log File of MSI during debug</title><content type='html'>&lt;p&gt;lots of our installations are getting password as input parameter in the command line, the problem was that since we install using &lt;a href="http://msdn.microsoft.com/en-us/library/aa368263(v=VS.85).aspx" target="_blank"&gt;debug&lt;/a&gt; logs (coz we want easier support of failing installation) the password was written to the log file&lt;/p&gt;  &lt;p&gt;The problem was created because we only added support for the password as command line argument but didn't add the dialog to support UI mode also and apparently if the property you use is associated with control that is set as &lt;a href="http://msdn.microsoft.com/en-us/library/aa370575(v=VS.85).aspx" target="_blank"&gt;password&lt;/a&gt; than its not written to logs (no matter what)&lt;/p&gt;  &lt;p&gt;This is a well known issue that we simply missed :(&lt;/p&gt;  &lt;p&gt;See the following article in &lt;a href="http://msdn.microsoft.com/en-us/library/aa370842(v=VS.85).aspx" target="_blank"&gt;MSDN&lt;/a&gt; that clearly state what should be done to prevent such cases (also in custom actions values)&lt;/p&gt;  &lt;p&gt;So before you create a funny mechanism like find-n-replace on the logs, simply do the complete work&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-3477612591270814937?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/3477612591270814937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=3477612591270814937' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3477612591270814937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3477612591270814937'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/09/preventing-confidential-information.html' title='Preventing Confidential Information from Being Written into the Log File of MSI during debug'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-4759449157450739415</id><published>2010-08-03T03:27:00.001-07:00</published><updated>2010-08-03T03:27:50.657-07:00</updated><title type='text'>Thank you Delta Air Lines for nothing</title><content type='html'>&lt;p&gt;Thank you &lt;a href="https://www.delta.com/baggage/landing.action" target="_blank"&gt;Delta&lt;/a&gt; for loosing my Baggage between New York and Atlanta &lt;/p&gt;  &lt;p&gt;Thank you Delta for being unprofessional and having me wait for 55 minutes for the baggage without knowing anything from you (in Atlanta)&lt;/p&gt;  &lt;p&gt;It seems as other people also have same issue as &lt;a href="http://www.consumeraffairs.com/travel/delta_luggage.html" target="_blank"&gt;mine&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I guess we will never fly together again so Goodbye&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-4759449157450739415?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/4759449157450739415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=4759449157450739415' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4759449157450739415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4759449157450739415'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/08/thank-you-delta-air-lines-for-nothing.html' title='Thank you Delta Air Lines for nothing'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-1902710417828642690</id><published>2010-07-28T13:15:00.001-07:00</published><updated>2010-07-28T13:15:46.889-07:00</updated><title type='text'>Running process using PsExec in elevated mode (undocumented)</title><content type='html'>&lt;p&gt;If you need to run process on target machines your probably already using &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx" target="_blank"&gt;PsExec&lt;/a&gt; which is part of &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896649.aspx" target="_blank"&gt;PsTools&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;There is one hidden gem in the documentation of PxExec about how to run remote process in elevated way, apparently its so simple, just use “-h” argument&lt;/p&gt;  &lt;p&gt;The command line help for this (not found in the CHM/Web) is &lt;/p&gt;  &lt;p&gt;“&lt;em&gt;If the target system is Vista or higher, the process run with the account's elevated token, if available.”&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Enjoy (Thanks to &lt;a href="http://il.linkedin.com/in/evyatarbenshitrit" target="_blank"&gt;Evyatar Ben Shitrit&lt;/a&gt; for this tip)&lt;/em&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-1902710417828642690?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/1902710417828642690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=1902710417828642690' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1902710417828642690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1902710417828642690'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/07/running-process-using-psexec-in.html' title='Running process using PsExec in elevated mode (undocumented)'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-1591924653601153060</id><published>2010-07-26T20:47:00.001-07:00</published><updated>2010-07-26T20:53:49.031-07:00</updated><title type='text'>Who is creating that file question</title><content type='html'>During our integration tests we saw that there is file called "d.xml" created in one of the folders in our configuration directory, we have lots of processes touching that directory (Read &amp;amp; Write) and also few processes that host multiple plugins (potentially could write that files)&lt;div&gt;So it was really hard trying to understand who is the bustard &lt;smile&gt;&lt;/div&gt;&lt;div&gt;We came up with few quick alternatives on how to find it:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Send mail to all team leaders asking if they know about it (that didn't do any good coz they didn't)&lt;/li&gt;&lt;li&gt;Iterate on all the source code and searching for "d.xml"&lt;/li&gt;&lt;li&gt;before we start the processes, create d.xml as readonly and see which process breaks / look at the logs - we used this approach and got the answer in 1 minute&lt;/li&gt;&lt;li&gt;start reducing processes who run (binary search) - but that will take too much&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Any other clever and technical way (that will find the process and the specific plugin if it the one to blame)?&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;By the way the bustard is me :( (one of my subsystems wrote this debug file dump)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-1591924653601153060?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/1591924653601153060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=1591924653601153060' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1591924653601153060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1591924653601153060'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/07/who-is-creating-that-file-question.html' title='Who is creating that file question'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-6174113978477910871</id><published>2010-07-13T16:15:00.001-07:00</published><updated>2010-07-13T16:15:14.330-07:00</updated><title type='text'>VMWare (or any) CPU core speed is limited by the host’s physical core speed</title><content type='html'>&lt;p&gt;This is just a reminder that in VMware (and maybe other Virtualization environments) even if you set the CPU quota to be unlimited you are still LIMITED per core you assigned for each guest for the maximum of the physical host machine.&lt;/p&gt;  &lt;p&gt;So for example if you have a 8 * 2.33GHZ host and 1 guest that has 2 cores assigned –&amp;gt; effectively although you didn’t set&amp;#160; MAX CPU assigned it will have maximum of 4.66GHZ&lt;/p&gt;  &lt;p&gt;I faced this while analyzing performance issue on VMware and we didn't understand how come guest was on 85% CPU consumption and host was on less than 20%&lt;/p&gt;  &lt;p&gt;Maybe it was trivial for you, but for me it was new.&lt;/p&gt;  &lt;p&gt;Thanks now we continue to IO issues (that's harder)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-6174113978477910871?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/6174113978477910871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=6174113978477910871' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/6174113978477910871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/6174113978477910871'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/07/vmware-or-any-cpu-core-speed-is-limited.html' title='VMWare (or any) CPU core speed is limited by the host’s physical core speed'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-7764577081354341875</id><published>2010-07-13T16:07:00.001-07:00</published><updated>2011-07-14T06:15:39.438-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Fail to extract PROGRAMFILES(X86) environment variable using powershell</title><content type='html'>&lt;p&gt;After long time, today i wasted almost 30 minutes on a stupid mistake, i tried to have a PS script that will run a program from “%ProgramFiles(X86)\A-Program.exe”&lt;/p&gt;  &lt;p&gt;So i tried using “$Env:PROGRAMFILES(X86)\A-Program.exe” and it failed coz it said its trying to run from: “c:\program files(X86)\A-Program.exe” and directory doesn’t exist&lt;/p&gt;  &lt;p&gt;so after digging i saw that the problem is powershell took the first part of the string and extracted the programfiles environment variable :( (there was no space between it and the (X86) ), than again how was he suppose to know…&lt;/p&gt;  &lt;p&gt;Solution was to use: “$&lt;span &gt;{&lt;/span&gt;env:PROGRAMFILES(X86)&lt;span &gt;}&lt;/span&gt;\A-Program.exe” &lt;/p&gt;  &lt;p&gt;Hope it will save you some time&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-7764577081354341875?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/7764577081354341875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=7764577081354341875' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/7764577081354341875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/7764577081354341875'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/07/fail-to-extract-programfilesx86.html' title='Fail to extract PROGRAMFILES(X86) environment variable using powershell'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-2744862397603514511</id><published>2010-06-28T15:36:00.001-07:00</published><updated>2011-07-14T06:15:13.472-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Power Shell script to purge a directory by saving last # sub folders (According to regex pattern)</title><content type='html'>&lt;p&gt;I had to create a mechanism to purge a directory that is built out of builds in format of version e.g. 11.0.21.21.&lt;/p&gt;  &lt;p&gt;The requirement was to save last X builds and other should be purged, so i created the &lt;a href="http://www.davidovitz.org/PublicBlogItems/PurgeBuildDirectory.ps1" target="_blank"&gt;following&lt;/a&gt; PS script for it&lt;/p&gt;  &lt;p&gt;The code iterate on the input folder and extracting all the folders in the pattern of the version, sort it by flattening the version to full string (static size) and than skipping the first X&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_tJ_SCvHoRhI/TCkj4I1nSJI/AAAAAAAAAKI/ZGpJXJeI0qw/s1600-h/GetFolderToPurge%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="GetFolderToPurge" border="0" alt="GetFolderToPurge" src="http://lh3.ggpht.com/_tJ_SCvHoRhI/TCkj5HnVZnI/AAAAAAAAAKM/DjjoO-Y2sPE/GetFolderToPurge_thumb%5B1%5D.jpg?imgmax=800" width="390" height="414" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I still find my self struggling with powershell (its not as easy as i though it would be)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-2744862397603514511?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/2744862397603514511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=2744862397603514511' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/2744862397603514511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/2744862397603514511'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/06/power-shell-script-to-purge-directory.html' title='Power Shell script to purge a directory by saving last # sub folders (According to regex pattern)'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_tJ_SCvHoRhI/TCkj5HnVZnI/AAAAAAAAAKM/DjjoO-Y2sPE/s72-c/GetFolderToPurge_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-694754979458188952</id><published>2010-05-08T14:57:00.001-07:00</published><updated>2010-05-08T14:57:57.668-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='XSD'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>HOWTO “Refresh” XML Schema in Excel</title><content type='html'>&lt;p&gt;The short Microsoft answer is that starting Office 2007 there is no way to update the XSD Schema you imported and the only option is to Import the updated one, remove the previous and rebind tables. (&lt;u&gt;takes long time&lt;/u&gt;)&lt;/p&gt;  &lt;p&gt;I though to my self why is it too hard to implement ?&lt;/p&gt;  &lt;p&gt;So for my test i created two Schema (old and new) :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_tJ_SCvHoRhI/S-XePQAdHSI/AAAAAAAAAJc/i3ITSetQ198/s1600-h/MySchema-1.0%5B3%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="MySchema-1.0" border="0" alt="MySchema-1.0" src="http://lh4.ggpht.com/_tJ_SCvHoRhI/S-XeQJwyWqI/AAAAAAAAAJg/jij-pPtBE0U/MySchema-1.0_thumb%5B1%5D.png?imgmax=800" width="365" height="148" /&gt;&lt;/a&gt; &lt;a href="http://lh4.ggpht.com/_tJ_SCvHoRhI/S-XeQ1G_luI/AAAAAAAAAJk/PxpaWohDvas/s1600-h/MySchema-1.1%5B3%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="MySchema-1.1" border="0" alt="MySchema-1.1" src="http://lh3.ggpht.com/_tJ_SCvHoRhI/S-XeRnPjUQI/AAAAAAAAAJo/zjBE4PMqBfY/MySchema-1.1_thumb%5B1%5D.png?imgmax=800" width="366" height="190" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The only difference is that i added two attributes.&lt;/p&gt;  &lt;p&gt;I created two excel sheets (and binded to relevant schema)&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_tJ_SCvHoRhI/S-XeTPYKCSI/AAAAAAAAAJs/xtzE58gyMTA/s1600-h/MyExcel%201.0%5B6%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="MyExcel 1.0" border="0" alt="MyExcel 1.0" src="http://lh3.ggpht.com/_tJ_SCvHoRhI/S-XeUdTA0HI/AAAAAAAAAJw/aDycsEdAT4A/MyExcel%201.0_thumb%5B2%5D.png?imgmax=800" width="365" height="231" /&gt;&lt;/a&gt; &lt;a href="http://lh4.ggpht.com/_tJ_SCvHoRhI/S-XeVi3ADaI/AAAAAAAAAJ0/PG8E_oMoK7o/s1600-h/MyExcel%201.1%5B6%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="MyExcel 1.1" border="0" alt="MyExcel 1.1" src="http://lh3.ggpht.com/_tJ_SCvHoRhI/S-XeXHO9K7I/AAAAAAAAAJ4/6hL0nwfMSaM/MyExcel%201.1_thumb%5B2%5D.png?imgmax=800" width="365" height="231" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;I renamed the two XLSX files to ZIP and compare its content :) (I could have used &lt;a href="http://openxmldeveloper.org" target="_blank"&gt;OpenXML&lt;/a&gt; also)&lt;/p&gt;  &lt;p&gt;While comparing the two files, I saw that there is specific XML file that interest me called “xmlMaps.xml”&lt;/p&gt;  &lt;p&gt;And when i compare its content than i saw the solution:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_tJ_SCvHoRhI/S-XeX5y8zKI/AAAAAAAAAJ8/Hpcjp8iAOmg/s1600-h/Difference%5B3%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="Difference" border="0" alt="Difference" src="http://lh3.ggpht.com/_tJ_SCvHoRhI/S-XeZEv5AFI/AAAAAAAAAKA/yLLsv6vIe4c/Difference_thumb%5B1%5D.png?imgmax=800" width="362" height="85" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So at the end the XSD is imported as regular text, and you can “update” it by updating the xmlMaps.xml (update your specific XSD and not others)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;My next small project is to create tool to refresh Schema :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-694754979458188952?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/694754979458188952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=694754979458188952' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/694754979458188952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/694754979458188952'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/05/howto-refresh-xml-schema-in-excel.html' title='HOWTO “Refresh” XML Schema in Excel'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_tJ_SCvHoRhI/S-XeQJwyWqI/AAAAAAAAAJg/jij-pPtBE0U/s72-c/MySchema-1.0_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-4484191251538711818</id><published>2010-04-26T14:28:00.000-07:00</published><updated>2010-04-26T14:41:58.218-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Spark'/><title type='text'>Sample MVC 2 ASP.NET application based on Spark View Engine and targeting .NET framework 4.0</title><content type='html'>I tried using &lt;a href="http://sparkviewengine.com/"&gt;Spark View Engine&lt;/a&gt; in my new empty &lt;a href="http://www.asp.net/mVC/"&gt;MVC &lt;/a&gt;2 application (targeting 4.0) and found it wasn't so simple.&lt;div&gt;I looked on the web and found several tutorials (mainly from &lt;a href="http://www.andrewsiemer.com/"&gt;Andrew Siemer&lt;/a&gt;) and i decided to &lt;a href="http://www.davidovitz.org/PublicBlogItems/DavidovitzSparkSample.zip"&gt;upload my new solution&lt;/a&gt; so that you might save some time&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The solution contain complied Spark Engine 1.1 targeting .net framework 4.0&lt;/div&gt;&lt;div&gt;FYI Spark view doesn't support IntelliSense, and this is frustrating during work (although not so many element to remember) &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-4484191251538711818?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/4484191251538711818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=4484191251538711818' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4484191251538711818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4484191251538711818'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/04/sample-mvc-2-aspnet-application-based.html' title='Sample MVC 2 ASP.NET application based on Spark View Engine and targeting .NET framework 4.0'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-2686986237822152253</id><published>2010-04-26T11:49:00.001-07:00</published><updated>2010-04-26T11:49:31.793-07:00</updated><title type='text'>SQL: Find text in all columns in all table</title><content type='html'>&lt;p&gt;When there is too much unknown you sometimes have to use new ways to get more knowledge, we got a task to analyze the effect of changing the computer name on the application suite .&lt;/p&gt;  &lt;p&gt;We could iterate with all teams and get area that should be effected but we decided to try and find better first step analysis and for that we realized that the previous Computer name is saved in several main areas:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;SQL &lt;/li&gt;    &lt;li&gt;File System &lt;/li&gt;    &lt;li&gt;Registry &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;So for each of those we can run script to search for old name and see if we have problematic area (at least as first step).&lt;/p&gt;  &lt;p&gt;Registry and files are very simpler and for SQL one of our Architects (Yoel Tzur) created a sample script that will do the job:&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; nocount &lt;span style="color: #0000ff"&gt;on&lt;/span&gt; &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; &lt;span style="color: #0000ff"&gt;transaction&lt;/span&gt; &lt;span style="color: #0000ff"&gt;isolation&lt;/span&gt; &lt;span style="color: #0000ff"&gt;level&lt;/span&gt; &lt;span style="color: #0000ff"&gt;read&lt;/span&gt; uncommitted &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; object_ID(&lt;span style="color: #006080"&gt;'tempdb..#t'&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;is&lt;/span&gt; &lt;span style="color: #0000ff"&gt;not&lt;/span&gt; &lt;span style="color: #0000ff"&gt;null&lt;/span&gt; &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;       &lt;span style="color: #0000ff"&gt;drop&lt;/span&gt; &lt;span style="color: #0000ff"&gt;table&lt;/span&gt; #t&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; object_ID(&lt;span style="color: #006080"&gt;'_t'&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;is&lt;/span&gt; &lt;span style="color: #0000ff"&gt;null&lt;/span&gt; &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;       &lt;span style="color: #0000ff"&gt;begin&lt;/span&gt; &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;create&lt;/span&gt; &lt;span style="color: #0000ff"&gt;table&lt;/span&gt; _t(tname sysname, colname sysname,rows_found &lt;span style="color: #0000ff"&gt;int&lt;/span&gt;)&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;       &lt;span style="color: #0000ff"&gt;end&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;create&lt;/span&gt; &lt;span style="color: #0000ff"&gt;table&lt;/span&gt; #t (seq &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; &lt;span style="color: #0000ff"&gt;identity&lt;/span&gt; &lt;span style="color: #0000ff"&gt;primary&lt;/span&gt; &lt;span style="color: #0000ff"&gt;key&lt;/span&gt; ,tname sysname, colname sysname) &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;DECLARE&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;  @rc  &lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt; ,@i &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt; ,@&lt;span style="color: #0000ff"&gt;max&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt; ,@string &lt;span style="color: #0000ff"&gt;varchar&lt;/span&gt;(1024)&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt; ,@tname sysname &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt; ,@colname sysname &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt; , @SQLString Nvarchar(4000)&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt;  ,@ParmDefinition Nvarchar(1024)&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt;  &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum20"&gt;  20:&lt;/span&gt;  &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; @string = &lt;span style="color: #006080"&gt;'VALUE TO SEARCH'&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum21"&gt;  21:&lt;/span&gt;  &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum22"&gt;  22:&lt;/span&gt; insert #t (tname,colname)&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum23"&gt;  23:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;select&lt;/span&gt; table_name,column_name &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum24"&gt;  24:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;from&lt;/span&gt; information_schema.columns&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum25"&gt;  25:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;where&lt;/span&gt; data_type &lt;span style="color: #0000ff"&gt;like&lt;/span&gt; &lt;span style="color: #006080"&gt;'%char%'&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum26"&gt;  26:&lt;/span&gt;&amp;#160; &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum27"&gt;  27:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; @&lt;span style="color: #0000ff"&gt;max&lt;/span&gt; = &lt;span style="color: #0000ff"&gt;max&lt;/span&gt;(seq) &lt;span style="color: #0000ff"&gt;from&lt;/span&gt; #t &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum28"&gt;  28:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; @i = 0 &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum29"&gt;  29:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;while&lt;/span&gt; @i &amp;lt; @&lt;span style="color: #0000ff"&gt;max&lt;/span&gt; &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum30"&gt;  30:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Begin&lt;/span&gt; &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum31"&gt;  31:&lt;/span&gt;       &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; @i = @i + 1 &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum32"&gt;  32:&lt;/span&gt;       &lt;span style="color: #0000ff"&gt;select&lt;/span&gt; @tname=tname,@colname=colname &lt;span style="color: #0000ff"&gt;from&lt;/span&gt; #t &lt;span style="color: #0000ff"&gt;where&lt;/span&gt; seq = @i &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum33"&gt;  33:&lt;/span&gt;       &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; @SQLString = N&lt;span style="color: #006080"&gt;'SELECT @rc = count(*)  FROM  '&lt;/span&gt; +   @tname + &lt;span style="color: #006080"&gt;' WHERE '&lt;/span&gt;  + @colname + &lt;span style="color: #006080"&gt;' = '&lt;/span&gt; + &lt;span style="color: #006080"&gt;''&lt;/span&gt;&lt;span style="color: #006080"&gt;''&lt;/span&gt; + @string + &lt;span style="color: #006080"&gt;''&lt;/span&gt;&lt;span style="color: #006080"&gt;''&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum34"&gt;  34:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; @ParmDefinition = N&lt;span style="color: #006080"&gt;'@rc int OUTPUT'&lt;/span&gt;; &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum35"&gt;  35:&lt;/span&gt;      &lt;span style="color: #0000ff"&gt;execute&lt;/span&gt; sp_executesql  @SQLString,@ParmDefinition,@rc=@rc  &lt;span style="color: #0000ff"&gt;OUTPUT&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum36"&gt;  36:&lt;/span&gt;       INSERT _t(tname,colname,rows_found)&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum37"&gt;  37:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; @tname,@colname,@rc &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum38"&gt;  38:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;END&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum39"&gt;  39:&lt;/span&gt;  &lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum40"&gt;  40:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;select&lt;/span&gt; * &lt;span style="color: #0000ff"&gt;from&lt;/span&gt; _t&lt;/pre&gt;&lt;br /&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So enjoy :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-2686986237822152253?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/2686986237822152253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=2686986237822152253' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/2686986237822152253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/2686986237822152253'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/04/sql-find-text-in-all-columns-in-all.html' title='SQL: Find text in all columns in all table'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-2612514783899010252</id><published>2010-04-25T12:01:00.000-07:00</published><updated>2010-04-25T12:05:18.818-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='regular expression'/><title type='text'>Rex: Regular Expression Exploration for .NET</title><content type='html'>&lt;div&gt;Today i saw a new project from Microsoft research called Rex.&lt;/div&gt;&lt;div&gt;Rex is a simple command line tool that takes a .NET regex pattern or several regex patterns and generates matching string(s) for them. Rex can also be used through an API. Rex is fast, using a novel approach to solve this problem. When several regexes are provided, rex can be used to generate members that match all the regex&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I asked my self several time on the valid string for a given regex&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://research.microsoft.com/en-us/downloads/7f1d87be-f6d9-495d-a699-f12599cea030/default.aspx"&gt;Download Here&lt;/a&gt; / &lt;a href="http://research.microsoft.com/en-us/projects/rex/"&gt;Project Site&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-2612514783899010252?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/2612514783899010252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=2612514783899010252' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/2612514783899010252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/2612514783899010252'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/04/rex-regular-expression-exploration-for.html' title='Rex: Regular Expression Exploration for .NET'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-4611462794230049099</id><published>2010-04-13T13:38:00.000-07:00</published><updated>2010-04-13T13:38:10.896-07:00</updated><title type='text'>John Robbins' Blog : See the I/O You Caused by Getting Your Diagnostic Tracing into Process Monitor</title><content type='html'>&lt;div&gt;WOW i always wanted to see how much I/O my code actually take, read the following blog post from John &amp;amp; work of Mark&lt;/div&gt;&lt;a href="http://www.wintellect.com/CS/blogs/jrobbins/archive/2010/04/13/see-the-i-o-you-caused-by-getting-your-diagnostic-tracing-into-process-monitor.aspx"&gt;John Robbins' Blog : See the I/O You Caused by Getting Your Diagnostic Tracing into Process Monitor&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-4611462794230049099?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.wintellect.com/CS/blogs/jrobbins/archive/2010/04/13/see-the-i-o-you-caused-by-getting-your-diagnostic-tracing-into-process-monitor.aspx' title='John Robbins&apos; Blog : See the I/O You Caused by Getting Your Diagnostic Tracing into Process Monitor'/><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/4611462794230049099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=4611462794230049099' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4611462794230049099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4611462794230049099'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/04/john-robbins-blog-see-io-you-caused-by.html' title='John Robbins&apos; Blog : See the I/O You Caused by Getting Your Diagnostic Tracing into Process Monitor'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-1140138272604535077</id><published>2010-04-09T05:24:00.000-07:00</published><updated>2010-04-09T05:24:08.840-07:00</updated><title type='text'>Heath Stewart's Blog : Major Upgrades with Shared Components</title><content type='html'>I like his blog, he writes good stuff --&gt; &lt;a href="http://blogs.msdn.com/heaths/archive/2010/04/09/major-upgrades-with-shared-components.aspx"&gt;Heath Stewart's Blog : Major Upgrades with Shared Components&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-1140138272604535077?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blogs.msdn.com/heaths/archive/2010/04/09/major-upgrades-with-shared-components.aspx' title='Heath Stewart&apos;s Blog : Major Upgrades with Shared Components'/><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/1140138272604535077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=1140138272604535077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1140138272604535077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1140138272604535077'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/04/heath-stewarts-blog-major-upgrades-with.html' title='Heath Stewart&apos;s Blog : Major Upgrades with Shared Components'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-2155998585071324243</id><published>2010-04-08T14:40:00.001-07:00</published><updated>2010-04-08T15:09:12.515-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMWare'/><category scheme='http://www.blogger.com/atom/ns#' term='Hyper-V'/><title type='text'>Trust Relationship Between Workstation and Domain Fails</title><content type='html'>As part of the automated test i have created i use virtualization heavily (in specific Hyper V), which include lots of revert to snapshot (couple of time per day). i am using this to return to a basic snapshot i have ready to have our system installed.&lt;div&gt;Every now and than i came across a problem that i couldn't login to target VM because it lots trust relation with domain (specific message was "Trust Relationship Between Workstation and Domain Fails"), the problem occurs because the machine password used in the original snapshot has expired!&lt;/div&gt;&lt;div&gt;To overcome this you can update the GPO to keep it the same by updating the following GPO items:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc781050(WS.10).aspx"&gt;Domain controller: Refuse machine account password changes&lt;/a&gt; - set to enabled&lt;/li&gt;&lt;li&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc785826(WS.10).aspx"&gt;Domain member: Disable machine account password changes&lt;/a&gt; - set to enabled&lt;/li&gt;&lt;li&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc781050(WS.10).aspx"&gt;Domain member: Maximum machine account password age&lt;/a&gt; - set 999 (max)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;after updating the above make sure to rejoin domain / run "&lt;a href="http://support.microsoft.com/kb/298444"&gt;gpupdate &lt;/a&gt;/force" and take snapshot again! (coz the current problematic snapshot you have is out of sync and each time you revert you will face the same problem)&lt;/div&gt;&lt;div&gt;In the default configuration the maximum age for machine password is 30 days.&lt;/div&gt;&lt;div&gt;Also in 2008 R2 the error is "the trust relationship between this workstation and the primary domain failed"&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-2155998585071324243?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/2155998585071324243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=2155998585071324243' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/2155998585071324243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/2155998585071324243'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/04/trust-relationship-between-workstation.html' title='Trust Relationship Between Workstation and Domain Fails'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-6398195363609468052</id><published>2010-04-02T06:45:00.000-07:00</published><updated>2010-04-02T07:18:00.624-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='build'/><category scheme='http://www.blogger.com/atom/ns#' term='rsync'/><title type='text'>Daily Build and better RSync usage</title><content type='html'>Following my &lt;a href="http://davidovitz.blogspot.com/2010/03/synchronzing-file-easy-easy-way-using.html"&gt;previous post&lt;/a&gt; about RSync, i came across pretty trivial use case that i wanted my daily build to be copied to external locations in a new folder.&lt;div&gt;I could achieve this in couple of ways (for example):&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;have one main StagingArea folder that is being sync, and post execution to copy the directory to a new name (use server side action / client side psexec)&lt;/li&gt;&lt;li&gt;new option i found today was to use the "--copy-dest=DIR" - this allowed me to copy my new artifacts to a new folder on target while having rsync check for previous file on different directory (instead of maintaining StagingArea directory , i can simply put my previous build number )&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;So example for option two command line is (new build is 11.0.0.188 and previous build is 11.0.0.187) :&lt;/div&gt;&lt;div&gt;&lt;i&gt;rsync.exe -av --copy-dest="../11.0.0.187" "11.0.0.188/" "[replace_with_target_machine]::[replace_with_rsync_module]/11.0.0.188"&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;i used this "complex" command line because i wanted that the build number will not be compared (coz i don't have folder with that name yet), pay attention that --copy-dest is relative to target directory you used.&lt;/div&gt;&lt;div&gt;Also when the source contains trailing "/" it means copy the directory content (not including the folder name)&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-6398195363609468052?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/6398195363609468052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=6398195363609468052' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/6398195363609468052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/6398195363609468052'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/04/daily-build-and-better-rsync-usage.html' title='Daily Build and better RSync usage'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-4769303470011773842</id><published>2010-03-31T22:47:00.000-07:00</published><updated>2010-03-31T22:47:55.305-07:00</updated><title type='text'>ASP.NET Debugging : New debugger extension for .NET, Psscor2, released</title><content type='html'>&lt;a href="http://blogs.msdn.com/tom/archive/2010/03/29/new-debugger-extension-for-net-psscor2-released.aspx"&gt;ASP.NET Debugging : New debugger extension for .NET, Psscor2, released&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;this was internal Microsoft and now it is public, so download and use.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I like the !aspxpages which dumps all currently running / last viewed asp net pages&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-4769303470011773842?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blogs.msdn.com/tom/archive/2010/03/29/new-debugger-extension-for-net-psscor2-released.aspx' title='ASP.NET Debugging : New debugger extension for .NET, Psscor2, released'/><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/4769303470011773842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=4769303470011773842' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4769303470011773842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4769303470011773842'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/03/aspnet-debugging-new-debugger-extension.html' title='ASP.NET Debugging : New debugger extension for .NET, Psscor2, released'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-3417664459863919128</id><published>2010-03-30T05:02:00.000-07:00</published><updated>2010-03-30T05:52:19.612-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='build'/><category scheme='http://www.blogger.com/atom/ns#' term='rsync'/><title type='text'>Synchronzing file the easy the easy way using RSYNC</title><content type='html'>One of my tasks was to replicate our build servers around the world (SC, ATL, TLV, etc) although this sound like an easy task - it is not because we have several build machines (more than 7) and maintaining them is a long lasting task not talking about the initial setup needed.&lt;div&gt;So i have decided to copy the build output to each location every day, this was not a good solution because size of the build is approx 15 giga and moving this in the wan is very very slow!&lt;/div&gt;&lt;div&gt;so after hearing about RSync i decided to give it a try it, and it worked amazing, saving bandwidth to approx 1.3 giga only (because it transfer only the delta)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The mechanism that i have set up is using a dedicate folder called "StagingArea" that is the target of the build (e.g. the build created every time is on this folder), the reason i used one folder is because i want to sync that older from source to targets (than it can use the delta mechanism in RSync)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After the sync is over (few min), the target machine is copying the StagingArea to a new name that is the new build number (e.g. 11.0.0.XXXX) and that way we have replicated build infrastructure that is control from one location and is synchronizing the output folder in an optimized way (very low maintenance)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The command line i use to replicate is rsync -avz "stagingarea/" "targetserver::modulename"&lt;/div&gt;&lt;div&gt;Using the z argument means that you also compress the delta - but be aware this is CPU consuming task (so give it a try before you go live)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;you can download &lt;a href="http://www.itefix.no/i2/node/10650"&gt;cwRSYNC&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-3417664459863919128?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/3417664459863919128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=3417664459863919128' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3417664459863919128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3417664459863919128'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/03/synchronzing-file-easy-easy-way-using.html' title='Synchronzing file the easy the easy way using RSYNC'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-1470808611406650490</id><published>2010-02-27T09:32:00.000-08:00</published><updated>2010-02-27T09:37:57.567-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Search'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows 2008 R2'/><title type='text'>Windows 7 / Windows 2008 R2 search simply doesn't work!</title><content type='html'>Windows search doesn't find files when searching for content related search e.g. search all files that have XXXX in them&lt;div&gt;Now i don't know how this passed any kind of test on the developers side / QA.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On the other hand, I can tell you that in MAC OS the search simply works&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Any way as a solution you could use &lt;a href="http://www.wingrep.com/index.htm"&gt;WinGrep &lt;/a&gt;to search for files&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-1470808611406650490?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/1470808611406650490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=1470808611406650490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1470808611406650490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1470808611406650490'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/02/windows-7-windows-2008-r2-search-simply.html' title='Windows 7 / Windows 2008 R2 search simply doesn&apos;t work!'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-3650684873546182907</id><published>2010-02-11T15:17:00.001-08:00</published><updated>2010-02-11T15:29:36.644-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='connection issues'/><title type='text'>Calls to web service get stuck after first request</title><content type='html'>Few days ago we came across a very strange behavior - our application that connect to a web service go stuck after few requests.&lt;div&gt;When we ran the application on the server (connect locally) and it worked but from client desktop it didn't.&lt;/div&gt;&lt;div&gt;We suspected something about firewall so we ran &lt;a href="http://www.wireshark.org/"&gt;wireshark &lt;/a&gt;and saw that the the request was sent with Expect: 100-continue header which means that the server getting the request should respond with 100-continue and than the client should send the data in the body&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We almost gave up and then one of colleges at work suggested to contact our IT  and amazingly that did the trick - apparently they set new firewall in the LAB causing specific kind of request/response to be blocked! &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-3650684873546182907?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/3650684873546182907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=3650684873546182907' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3650684873546182907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3650684873546182907'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/02/calls-to-web-service-get-stuck-after.html' title='Calls to web service get stuck after first request'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-4257915360888165375</id><published>2010-02-06T04:21:00.000-08:00</published><updated>2010-02-06T04:30:22.981-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Outlook 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Project 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>bye bye office &amp; Project 2010, see you when you will be worthy</title><content type='html'>Thats it! following two major issues that i faced with outlook 2010 (&lt;a href="http://davidovitz.blogspot.com/2010/02/my-signature-in-outlook-2010-takes-790k.html"&gt;here&lt;/a&gt;) and Project 2010 (&lt;a href="http://davidovitz.blogspot.com/2009/11/project-2010-beta-critical-bug-in.html"&gt;here&lt;/a&gt;) i decided to uninstall them and wait for a better version.&lt;div&gt;Even though you can say "Hey this is a beta what did you expect", i can tell you that algorithm break in project is unacceptable and makes the solution useless! and that also goes for the large email size in outlook 2010! which caused large number of people i send mail to need to archive their mailto local PST on a daily basis because i filled their quota.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The basic thing that i lack here is the &lt;a href="http://en.wikipedia.org/wiki/Early_adopter"&gt;EAP &lt;/a&gt;for these kind of betas (i would love to get daily builds) BUT Microsoft doesn't distribute on daily basis. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-4257915360888165375?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/4257915360888165375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=4257915360888165375' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4257915360888165375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4257915360888165375'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/02/bye-bye-office-project-2010-see-you.html' title='bye bye office &amp; Project 2010, see you when you will be worthy'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-907995857220645505</id><published>2010-02-04T21:57:00.000-08:00</published><updated>2010-02-04T22:04:25.174-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Writing configuration section handling in .NET the easy way</title><content type='html'>&lt;div&gt;Just came across this wonderful tool called &lt;a href="http://www.codeplex.com/csd"&gt;Configuration Section Designer&lt;/a&gt;, its is A Visual Studio add-in that allows you to graphically design .NET Configuration Sections and automatically generates all the required code and a schema definition (XSD) for them.&lt;div&gt;It is a very good &lt;a href="http://csd.codeplex.com/wikipage?title=Usage&amp;amp;referringTitle=Documentation"&gt;Documentation&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_tJ_SCvHoRhI/S2u0tmREG8I/AAAAAAAAAI4/_GxLdbFEPII/s1600-h/ConfigurationSectionDesigner.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 218px;" src="http://4.bp.blogspot.com/_tJ_SCvHoRhI/S2u0tmREG8I/AAAAAAAAAI4/_GxLdbFEPII/s320/ConfigurationSectionDesigner.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5434636070811868098" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-907995857220645505?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/907995857220645505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=907995857220645505' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/907995857220645505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/907995857220645505'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/02/writing-configuration-section-handling.html' title='Writing configuration section handling in .NET the easy way'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_tJ_SCvHoRhI/S2u0tmREG8I/AAAAAAAAAI4/_GxLdbFEPII/s72-c/ConfigurationSectionDesigner.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-3163869790363939441</id><published>2010-02-04T10:44:00.001-08:00</published><updated>2010-02-04T10:50:31.782-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dump'/><category scheme='http://www.blogger.com/atom/ns#' term='Debugging'/><category scheme='http://www.blogger.com/atom/ns#' term='Hyper-V'/><title type='text'>Convert Hyper-V VM State to full dump</title><content type='html'>Just saw that there is a new tool called &lt;a href="http://code.msdn.microsoft.com/vm2dmp"&gt;VM2DMP&lt;/a&gt; that enables you to save VM / VM State to a full dump which is great because it reduce the need to work on the system and can be done in parallel&lt;div&gt;I need to give it a try next week and will update on it&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The requirements are windows 2008 R2 or Windows 7&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-3163869790363939441?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/3163869790363939441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=3163869790363939441' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3163869790363939441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3163869790363939441'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/02/convert-hyper-v-vm-state-to-full-dump.html' title='Convert Hyper-V VM State to full dump'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-2031133780130667134</id><published>2010-02-01T16:01:00.001-08:00</published><updated>2010-02-01T16:02:57.721-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WiX'/><title type='text'>Heat and special cases</title><content type='html'>&lt;p&gt;i have been using &lt;a href="http://wix.sourceforge.net/manual-wix3/heat.htm"&gt;Heat&lt;/a&gt; for quite some time and i can say that all my projects start to look a little weird because i have different files in the target folder that need to be consumed in different ways (some need to be with the registration taken, some EXE need special handling as COM servers which i have special extension).&lt;/p&gt;  &lt;p&gt;So the end result was to separate group of files to different folder and heat them as groups (weird) – not natural solution as i would love to stay with the current look and feel of the compiled version&lt;/p&gt;  &lt;p&gt;After some time I though of a better solutions (could be some):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;option A – enable Heat to exclude / include specific files&lt;/li&gt;    &lt;li&gt;Option B (my favorite) – add new type of files, lets call it WiXManifest (.wxsManifest) that will include addition input for heat per files (file will not be added to the installation) –&amp;gt; allow me to consume entire directory and override the parameters per file / other entity&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;What do you think , is it good / better solution?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-2031133780130667134?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/2031133780130667134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=2031133780130667134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/2031133780130667134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/2031133780130667134'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/02/heat-and-special-cases.html' title='Heat and special cases'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-3473738189256207926</id><published>2010-02-01T15:53:00.001-08:00</published><updated>2010-02-01T15:53:09.318-08:00</updated><title type='text'>AutoMapper hits 1.0</title><content type='html'>&lt;p&gt;&lt;a href="http://automapper.codeplex.com/"&gt;AutoMapper&lt;/a&gt; (created by &lt;a href="http://www.lostechies.com/blogs/jimmy_bogard/"&gt;Jimmy Bogard&lt;/a&gt;) uses a fluent configuration API to define an object-object mapping strategy. AutoMapper uses a convention-based matching algorithm to match up source to destination values. Currently, AutoMapper is geared towards model projection scenarios to flatten complex object models to DTOs and other simple objects, whose design is better suited for serialization, communication, messaging, or simply an anti-corruption layer between the domain and application layer.&lt;/p&gt;  &lt;p&gt;Its a very simple and good framework, which i have used several times in the past. &lt;/p&gt;  &lt;p&gt;Give it a try before you try to invent some sophisticated solution (like we developer like to do and test)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-3473738189256207926?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/3473738189256207926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=3473738189256207926' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3473738189256207926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3473738189256207926'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/02/automapper-hits-10.html' title='AutoMapper hits 1.0'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-8271201473501849492</id><published>2010-02-01T15:43:00.001-08:00</published><updated>2010-02-06T04:26:06.702-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Outlook 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>My signature in outlook 2010 takes 790K WHY?</title><content type='html'>&lt;p&gt;I decided to created a better signature in outlook to reflect my personal site, My company, etc&lt;/p&gt;  &lt;p&gt;&lt;a name="_MailAutoSig"&gt;&lt;b&gt;Ran Davidovitz&lt;/b&gt;&lt;/a&gt;   &lt;br /&gt;&lt;a href="http://www.google.co.uk/search?hl=en&amp;amp;q=%22Ran+Davidovitz%22+IICM&amp;amp;meta="&gt;&lt;b&gt;IICM&lt;/b&gt;&lt;/a&gt;&lt;b&gt; Team leader    &lt;br /&gt;&lt;/b&gt;&lt;a href="http://www.verint.com/"&gt;&lt;b&gt;Verint&lt;/b&gt;&lt;/a&gt;&lt;b&gt; Systems Inc. (&lt;/b&gt;&lt;a href="http://twitter.com/verint"&gt;&lt;b&gt;T&lt;/b&gt;&lt;/a&gt;&lt;b&gt;/&lt;/b&gt;&lt;a href="http://www.facebook.com/pages/Melville-NY/Verint/170373201361"&gt;&lt;b&gt;F&lt;/b&gt;&lt;/a&gt;&lt;b&gt;)    &lt;br /&gt;&lt;/b&gt;Phone +972-9-XXXXXXX   &lt;br /&gt;Cell +972-547-XXXXXX   &lt;br /&gt;&lt;a href="mailto:XXX.YYYYYYYY@verint.com"&gt;Email&lt;/a&gt;, &lt;a href="http://davidovitz.blogspot.com/"&gt;Blog&lt;/a&gt;, &lt;a href="http://twitter.com/randavidovitz"&gt;Twitter&lt;/a&gt;, &lt;a href="http://www.davidovitz.org/gallery"&gt;Gallery&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I started seeing that my email is getting FULL almost every day, and apparently the above signature take approx 790K, Kill me if know how Microsoft got to this number (zero images &amp;lt;smile /&amp;gt; )&lt;/p&gt;  &lt;p&gt;How can i reduce it without removing any piece of information?&lt;/p&gt;&lt;p&gt;[Update 3/Feb/2010 i decided to re-create the signature (copy paste) and now its went down to 32 k which is still high but much better than above 700K]&lt;/p&gt;&lt;p&gt;[Update 5/Feb/2010 well NO GO! problem resurfaced , this is a major issue that is not related only for signatures but a general problem in outlook 2010] &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-8271201473501849492?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/8271201473501849492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=8271201473501849492' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8271201473501849492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8271201473501849492'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/02/my-signature-in-outlook-2010-takes-790k.html' title='My signature in outlook 2010 takes 790K WHY?'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-7725311970578865115</id><published>2010-01-25T12:55:00.001-08:00</published><updated>2010-01-25T13:06:29.738-08:00</updated><title type='text'>IICM</title><content type='html'>&lt;p&gt;Lots of people ask me what is my current role in &lt;a href="http://www.verint.com" target="_blank"&gt;VERINT&lt;/a&gt; (&lt;a href="http://twitter.com/Verint" target="_blank"&gt;twitter&lt;/a&gt; / &lt;a href="http://www.facebook.com/pages/Melville-NY/Verint/170373201361" target="_blank"&gt;facebook&lt;/a&gt;), well actually for couple of month now i am leading the &lt;strong&gt;I&lt;/strong&gt;nstallation, &lt;strong&gt;I&lt;/strong&gt;ntegration, &lt;strong&gt;C&lt;/strong&gt;onfiguration and &lt;strong&gt;M&lt;/strong&gt;onitoring&amp;#160; team that its target is to create the entire package of our solution using built in &lt;a href="http://en.wikipedia.org/wiki/Installation_(computer_programs)#Bootstrapper" target="_blank"&gt;bootstrapper&lt;/a&gt; / Chainer and on the other end to do the development of the configuration and monitoring infrastructure (without too much details – although i can talk for hours) &lt;/p&gt;  &lt;p&gt;The team is built out of 6 more team members other than me and i am currently in search for two more developers (so if you know good developer &lt;a href="mailto:ran.davidovitz@verint.com" target="_blank"&gt;email me&lt;/a&gt; &amp;lt;SMILE /&amp;gt; )&lt;/p&gt;  &lt;p&gt;I am working at VERINT for more than 6 years now and my previous roles were Software Architect, Web Application / Reports Team Leader and Web Developer&lt;/p&gt;  &lt;p&gt;Hope this finally answer that question, I wonder what the future holds :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-7725311970578865115?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/7725311970578865115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=7725311970578865115' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/7725311970578865115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/7725311970578865115'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/01/iicm.html' title='IICM'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-228592234429880159</id><published>2010-01-24T20:34:00.001-08:00</published><updated>2010-01-26T09:42:49.493-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='load balancer'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='proxy'/><title type='text'>using apache as load balancer (with his own cookie)</title><content type='html'>&lt;p&gt;Yesterday with the help of my friend &lt;a href="http://il.linkedin.com/in/alexkoltun" target="_blank"&gt;Alex Koltun&lt;/a&gt; we had a task to configure apache as a load balancer, we had two nodes that listen on port 80 10.161.205.66, 10.161.205.175.&lt;/p&gt;  &lt;p&gt;we started with trivial configuration of &lt;a href="http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html" target="_blank"&gt;mod_proxy_balancer&lt;/a&gt; that have the two nodes declaration and setting of a cookie to be used as the key for the route algorithm (soon to understand we were partially mistaken) &lt;/p&gt;  &lt;p&gt;&amp;lt;Proxy balancer://mycluster&amp;gt; &lt;br /&gt;BalancerMember &lt;a href="http://10.161.205.66/"&gt;http://10.161.205.66:80&lt;/a&gt; route=node1  &lt;br /&gt;BalancerMember &lt;a href="http://10.161.205.175/"&gt;http://10.161.205.175:80&lt;/a&gt; route=node2  &lt;br /&gt;&amp;lt;/Proxy&amp;gt; &lt;/p&gt;  &lt;p&gt;ProxyPass / balancer://mycluster/ stickysession=MYCOOKIE&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; "&gt;ProxyPassReverse&lt;span class="Apple-style-span" style="font-family: Georgia, serif; "&gt; / balancer://mycluster/ stickysession=MYCOOKIE&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;Location /balancer-manager&amp;gt; &lt;br /&gt;SetHandler balancer-manager &lt;/p&gt;  &lt;p&gt;Order Deny,Allow &lt;br /&gt;Allow from all  &lt;br /&gt;&amp;lt;/Location&amp;gt;&lt;/p&gt;  &lt;p&gt;We tried browsing but that didn't work!!! after searching for some 30 minutes and multiple retries we found the solution that apparently apache except the sticky session cookie to be in a special format that actually tells it which node to choose (it doesn't have auto associating for that), the format of the value should end with .{route name}&lt;/p&gt;  &lt;p&gt;This enables you to set on the node you are working the cookie , but we didn't want to change each node and rather have apache do it (because it already did the job of balancing so simply persist it)&lt;/p&gt;  &lt;p&gt;The solution was simply adding header manipulation (with &lt;a href="http://httpd.apache.org/docs/2.0/mod/mod_headers.html" target="_blank"&gt;mod_headers&lt;/a&gt;):&lt;/p&gt;  &lt;p&gt;Header add Set-Cookie "MYCOOKIE=SOMEVALUE.%{BALANCER_WORKER_ROUTE}e; path=/;" env=BALANCER_ROUTE_CHANGED&lt;/p&gt;  &lt;p&gt;This actually set the cookie using the selected root only if root chosen and used is changed&lt;/p&gt;  &lt;p&gt;pretty slick ha ?&lt;/p&gt;  &lt;p&gt;Solution was based on this &lt;a href="http://www.gossamer-threads.com/lists/apache/dev/347934" target="_blank"&gt;forum answer&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The basic assumption that apache uses the cookie as the key to an internal map of key and route was mistaken although for some reason this was the trivial assumption, because we try to do thing so complex while the solution is so simple. still i would except that this would be found on the first page of &lt;a href="http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html" target="_blank"&gt;mod_proxy_balancer&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enjoy and i guess this should save you at least 1 hour of “balancing”&lt;/p&gt;  &lt;p&gt;Full httpd.conf file &lt;a href="http://www.davidovitz.org/PublicBlogItems/ApacheBalancer/httpd.conf" target="_blank"&gt;here&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;Update 26-Jan-2010 19:41&amp;gt;&lt;/p&gt;&lt;p&gt;I add &lt;span class="Apple-style-span" style="font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; "&gt;ProxyPassReverse&lt;span class="Apple-style-span" style="font-family: Georgia, serif; "&gt; also to make sure the redirects are also replaced wit correct value&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;/Update&amp;gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-228592234429880159?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/228592234429880159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=228592234429880159' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/228592234429880159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/228592234429880159'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/01/using-apache-as-load-balancer-with-his.html' title='using apache as load balancer (with his own cookie)'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-839751376773421687</id><published>2010-01-24T00:47:00.001-08:00</published><updated>2010-01-24T00:47:57.766-08:00</updated><title type='text'>My new Seagate BlackArmor 110 NAS – 2tb external disc</title><content type='html'>&lt;p&gt;Just bought new external storage from Seagate called &lt;a href="http://www.seagate.com/www/en-us/products/external/blackarmor/blackarmor_nas_110/" target="_blank"&gt;BlackArmor 110 NAS&lt;/a&gt; (price in Israel and USA is the same &amp;lt;smile /&amp;gt; ),&lt;/p&gt;  &lt;p&gt;It works very good (LAN) with intuitive web interface and includes user / folder management with media streaming also&lt;/p&gt;  &lt;p&gt;Although it has download manager that support HTTP / FTP, it is very basic and doesn't support basic HTTP tricks that sites do, i am trying to download straight from the box using MSDN but i cant do it…. (HELP)&lt;/p&gt;  &lt;p&gt;somehow my wireless network only enables me to move 2.3MBPS (byte not bits) –&amp;gt; SLOW&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-839751376773421687?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/839751376773421687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=839751376773421687' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/839751376773421687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/839751376773421687'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/01/my-new-seagate-blackarmor-110-nas-2tb.html' title='My new Seagate BlackArmor 110 NAS – 2tb external disc'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-6627368994786316866</id><published>2010-01-22T22:27:00.001-08:00</published><updated>2010-01-22T22:27:27.613-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMWare'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtual PC'/><category scheme='http://www.blogger.com/atom/ns#' term='Hyper-V'/><title type='text'>Virtual PC –&gt; VM Player (VMDK) –&gt; Hyper V(VHD)</title><content type='html'>&lt;p&gt;Few facts:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/VMware_Player" target="_blank"&gt;VM Player&lt;/a&gt; support working with Virtual PC files (it convert them automatically to &lt;a href="http://en.wikipedia.org/wiki/VMDK" target="_blank"&gt;VMDK&lt;/a&gt;)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/hyper-v-server/en/us/default.aspx" target="_blank"&gt;Hyper-V&lt;/a&gt; doesn't support working with VMDK&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The story is that we had few &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Virtual_PC" target="_blank"&gt;VPC&lt;/a&gt;s that ran our build machines on one server with 4 cores, sadly VPC doesn't leverage more than one CPU of the host :(, so we went to VMPlayer which run each VM in it sown process and leverage more than one CPU – all was working almost great for few month.&lt;/p&gt;  &lt;p&gt;Now we have Hyper V so we wanted to move those VMs to it, but Hyper V doesn't support out of the box converting of VMDK to VHD&lt;/p&gt;  &lt;p&gt;There is a tool called &lt;a href="http://vmtoolkit.com/files/folders/converters/entry8.aspx" target="_blank"&gt;VMDK2VHD&lt;/a&gt; that should do the trick but sadly on the converted VMDK (from VPC) it has some difficulties saying corrupted files!&lt;/p&gt;  &lt;p&gt;Before you decide to create new system and install everything again i have a suggestion, use &lt;a href="http://technet.microsoft.com/en-us/sysinternals/ee656415.aspx" target="_blank"&gt;DISK2VHD&lt;/a&gt; from sysinternals to create a VHD file from within the guest while it running coz its using &lt;a href="http://en.wikipedia.org/wiki/Volume_shadow_copy" target="_blank"&gt;VSS&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I will check it on Sunday (but why shouldn't it work)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-6627368994786316866?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/6627368994786316866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=6627368994786316866' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/6627368994786316866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/6627368994786316866'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/01/virtual-pc-vm-player-vmdk-hyper-vvhd.html' title='Virtual PC –&amp;gt; VM Player (VMDK) –&amp;gt; Hyper V(VHD)'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-1482478002464752639</id><published>2010-01-19T13:53:00.001-08:00</published><updated>2010-01-19T13:53:24.073-08:00</updated><title type='text'>Blogged and after 1 min its on Google – Damn they are fast</title><content type='html'>&lt;p&gt;Amazing i just published a post about “&lt;a href="http://davidovitz.blogspot.com/2010/01/cannot-add-external-manifest-for.html" target="_blank"&gt;Cannot add external manifest for executable after it was running once&lt;/a&gt;”, and i saw that after one minutes it was already searchable on Google ,…. hhhhahaaaa Google owns Blogger :) very good decision.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-1482478002464752639?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/1482478002464752639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=1482478002464752639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1482478002464752639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1482478002464752639'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/01/blogged-and-after-1-min-its-on-google.html' title='Blogged and after 1 min its on Google – Damn they are fast'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-5198543181633800156</id><published>2010-01-19T13:43:00.001-08:00</published><updated>2010-01-19T13:43:23.173-08:00</updated><title type='text'>Cannot add external manifest for executable after it was running once</title><content type='html'>&lt;p&gt;i will stat by complaining and than continue, i wasted today more than 1 hour while trying to add external manifest for a VB6 application that needed to require elevation, it simply didn't work.&lt;/p&gt;  &lt;p&gt;The flows was as such, i connected to a system to investigate why the application is not working correctly on Windows 2008 R2 with UAC on. i have identified that the issues related to that process is running under the standard token and not admin.&lt;/p&gt;  &lt;p&gt;I created external manifest file and nothing helped it simply didn't ask for elevation so i did million of things:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;change version&lt;/li&gt;    &lt;li&gt;changed names of the process (couple of times) in XML&lt;/li&gt;    &lt;li&gt;Change version of schema in XML&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;After 1 hour and few emails, i decided to lay back, drink and rethink,…. + search more on Google and suddenly i found few places that describe the internal behavior of windows – &lt;strong&gt;actually windows caches the application context (manifest) on the first time&lt;/strong&gt; , so in my case i ran the application that didn't have external manifest and it was cached as none , than i added manifest but it was already cached and that was the reason NOTHING CHANGED!!!&lt;/p&gt;  &lt;p&gt;so the solution is simple(one of the following):&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Embed the manifest in executable&lt;/li&gt;    &lt;li&gt;Touch the executable after adding manifest (only if you ran it)&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;This post should save you LOTS of time &amp;lt;Smile /&amp;gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-5198543181633800156?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/5198543181633800156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=5198543181633800156' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/5198543181633800156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/5198543181633800156'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/01/cannot-add-external-manifest-for.html' title='Cannot add external manifest for executable after it was running once'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-8622411046691080281</id><published>2010-01-17T20:34:00.001-08:00</published><updated>2010-01-17T20:34:06.188-08:00</updated><title type='text'>Beware of the context in XPATH</title><content type='html'>&lt;p&gt;I work a lot with XPATH (but i am not an expert yet), during my work i came across a very non intuitive situation for, the thing i wanted to do is to return the first item out of all the children in the document so i used [1] and apparently i got more than one results.&lt;/p&gt;  &lt;p&gt;Consider the following XML:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_tJ_SCvHoRhI/S1Pkrbl4mjI/AAAAAAAAAIg/pAElReB6vD4/s1600-h/first%5B2%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 60px; display: inline; border-top: 0px; border-right: 0px" title="first" border="0" alt="first" src="http://lh3.ggpht.com/_tJ_SCvHoRhI/S1PksGT3NgI/AAAAAAAAAIk/U9iBt0xkj4M/first_thumb.jpg?imgmax=800" width="244" height="153" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Lets say i want to get the first Book on the entire document, i used the following XPATH and it gave me the following output (2 items)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_tJ_SCvHoRhI/S1PktLBDbOI/AAAAAAAAAIo/UBFxn1FMTuM/s1600-h/second%5B2%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 60px; display: inline; border-top: 0px; border-right: 0px" title="second" border="0" alt="second" src="http://lh5.ggpht.com/_tJ_SCvHoRhI/S1Pktq9nGxI/AAAAAAAAAIs/sQLWjAnV_Mc/second_thumb.jpg?imgmax=800" width="243" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Apparently i needed to take in mind the context that Book can be found under and do the following&lt;a href="http://lh5.ggpht.com/_tJ_SCvHoRhI/S1PkuuVP6VI/AAAAAAAAAIw/pgJp9JOWZLI/s1600-h/Mezer_01-18_06-32-39%5B2%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 60px; display: inline; border-top: 0px; border-right: 0px" title="Mezer_01-18_06-32-39" border="0" alt="Mezer_01-18_06-32-39" src="http://lh3.ggpht.com/_tJ_SCvHoRhI/S1PkvIsbEaI/AAAAAAAAAI0/upuXjZbSIvY/Mezer_01-18_06-32-39_thumb.jpg?imgmax=800" width="242" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So although i understand the solution, this was not the intuitive one,….&amp;#160; (watch it)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-8622411046691080281?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/8622411046691080281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=8622411046691080281' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8622411046691080281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8622411046691080281'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/01/beware-of-context-in-xpath.html' title='Beware of the context in XPATH'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_tJ_SCvHoRhI/S1PksGT3NgI/AAAAAAAAAIk/U9iBt0xkj4M/s72-c/first_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-6840598733970696908</id><published>2010-01-17T06:41:00.001-08:00</published><updated>2010-01-17T06:41:05.405-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows 2008 R2'/><category scheme='http://www.blogger.com/atom/ns#' term='Support'/><title type='text'>Microsoft Releases "System State Analyzer Tool" for Windows 7</title><content type='html'>&lt;p&gt;Long ago i used System State Analyzer from Microsoft to find difference between two state of a machine, mainly in support area (rather than development).&lt;/p&gt;  &lt;p&gt;The tool enables you to see differences of two snapshots of a system or even different systems on the following areas:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Registry hives (HLKM, HKCU, HKCR, etc)&lt;/li&gt;    &lt;li&gt;Disc changes (C:, D: ,etc)&lt;/li&gt;    &lt;li&gt;Services&lt;/li&gt;    &lt;li&gt;Drivers&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I must say that the previous version was SLOW, and as it seems this one is also suffering from &lt;strong&gt;&lt;u&gt;slowness&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;By the way this utility is distributed by the Windows 2008 R2 Logo Software Certification and Windows 2008 R2 Logo Program Software Certification toolkits&lt;/p&gt;  &lt;p&gt;You can download &lt;a href="http://go.microsoft.com/fwlink/?LinkID=140110" target="_blank"&gt;x86&lt;/a&gt; and &lt;a href="http://go.microsoft.com/fwlink/?LinkID=140109" target="_blank"&gt;x64&lt;/a&gt; versions&lt;/p&gt;  &lt;p&gt;Screen shot of left side of main page&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_tJ_SCvHoRhI/S1MhfawcQWI/AAAAAAAAAIY/PGwpYgvThEM/s1600-h/SAAnalyzer%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 15px 0px 0px 60px; display: inline; border-top: 0px; border-right: 0px" title="SAAnalyzer" border="0" alt="SAAnalyzer" src="http://lh4.ggpht.com/_tJ_SCvHoRhI/S1MhgHCslsI/AAAAAAAAAIc/ovTN8F_5oXo/SAAnalyzer_thumb%5B1%5D.jpg?imgmax=800" width="275" height="326" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Enjoy&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-6840598733970696908?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/6840598733970696908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=6840598733970696908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/6840598733970696908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/6840598733970696908'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/01/microsoft-releases-state-analyzer-tool.html' title='Microsoft Releases &amp;quot;System State Analyzer Tool&amp;quot; for Windows 7'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_tJ_SCvHoRhI/S1MhgHCslsI/AAAAAAAAAIc/ovTN8F_5oXo/s72-c/SAAnalyzer_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-5522711377443083948</id><published>2010-01-12T11:50:00.001-08:00</published><updated>2010-01-12T11:50:54.013-08:00</updated><title type='text'>Hyper V initial steps are almost impossible without guidance</title><content type='html'>&lt;p&gt;I have been struggling (here and there) on connection issues to my Hyper V server&amp;#160; for more than week (Not Net)&lt;/p&gt;  &lt;p&gt;Main problems are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Cannot connect to VM (console) – keep asking for user / pass&lt;/li&gt;    &lt;li&gt;Cannot add VM that create new VHD&lt;/li&gt;    &lt;li&gt;Cannot connect to Hyper V management (should be first issue)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The only partial solution i found is to add local admin on the the Hyper V and connect using it , all other option failed on authentication issues and other WIERD &lt;/p&gt;  &lt;p&gt;There is a &lt;a href="http://social.technet.microsoft.com/Forums/en/virtualmachinemanager/thread/9306a338-48ca-4fad-9a04-1818ddcf6f60" target="_blank"&gt;thread&lt;/a&gt; on all those issue which I am following and i guess you should also&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;In a nutshell Microsoft did great job on the Hyper V solution BUT failed on the enablement of it ! (although i will keep using it :), Microsoft should act NOW and provide deep review of the process before people will run back to ESX / Virtual BOX)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The usage of WMI / distributed COM is a wrong decision which will be the main problems in the Hyper V solution for IT people.&lt;/strong&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-5522711377443083948?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/5522711377443083948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=5522711377443083948' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/5522711377443083948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/5522711377443083948'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/01/hyper-v-initial-steps-are-almost.html' title='Hyper V initial steps are almost impossible without guidance'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-8163584056965589647</id><published>2010-01-08T15:44:00.000-08:00</published><updated>2010-01-25T11:39:31.936-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WiX'/><category scheme='http://www.blogger.com/atom/ns#' term='TOMCAT'/><title type='text'>Installing TOMCAT as a service pitfall</title><content type='html'>Installing &lt;a href="http://tomcat.apache.org/"&gt;TOMCAT&lt;/a&gt; is relatively easy - xcopy deployment BUT when you want the &lt;a href="http://tomcat.apache.org/"&gt;TOMCAT&lt;/a&gt; to be running as a service the most common way to do it is to &lt;a href="http://tomcat.apache.org/tomcat-6.0-doc/windows-service-howto.html"&gt;run several batch files&lt;/a&gt; that configure the service and add it. Before you jump i am not using the &lt;a href="http://en.wikipedia.org/wiki/Out_of_the_box"&gt;OOTB&lt;/a&gt; Installer provided because i want to do custom closure&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While this is relatively "simple", its bad practice to use such custom actions (require handling of rollback and uninstall, batch problems).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am going to do something that i dont really like, i am going to suggest a solution while implementing it later this month &lt;smile&gt;&lt;/smile&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Install the service using the batch files using all your required options&lt;/li&gt;&lt;li&gt;Goto the relevant registry key (apparently the entire configuration is saved in registry - lame as i would expect this to be file based configuration) and Export it to Reg file (static i know)&lt;/li&gt;&lt;li&gt;Create a WiX fragment using that registry and update all static parts to be dynamic based on properties or other cool features (e.g. Location of JRE, Memory limit, etc)&lt;/li&gt;&lt;li&gt;In your main product WiX add that fragment and add Install Service action (native) that will add the service (Make sure to use the correct service name as used in the configuration)&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;The above steps are native actions that dont depend on executions which means they are almost bullet proof and support out of the box rollback + Uninstall and repair&lt;/div&gt;&lt;div&gt;I know this looks hard, but it should be simple. also i can make it even more advance and wrap the extraction of the registry to a task of the heat + XSLT for the dynamic part&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-8163584056965589647?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/8163584056965589647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=8163584056965589647' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8163584056965589647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8163584056965589647'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/01/installing-tomcat-as-service-pitfall.html' title='Installing TOMCAT as a service pitfall'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-7350488613862865479</id><published>2010-01-08T03:53:00.001-08:00</published><updated>2010-01-08T03:53:41.431-08:00</updated><title type='text'>HP Sizer For Microsoft Windows Server 2008 R2 Hyper-V</title><content type='html'>&lt;p&gt;Last month I bought some monster server to hold our virtualization infrastructure, for that i consulted with internal team we have in our company because i know little on that subject of hardware.&lt;/p&gt;  &lt;p&gt;We got the server and damn it fast &amp;lt;Smile /&amp;gt;, the issue is that apparently the BOM included also 2 card for external storage (fiber) which are useless because i am using internal array of 8 discs (the cost is 600$$$), Hope i can redim the cards&lt;/p&gt;  &lt;p&gt;Yesterday one of my team members sent me a link to &lt;a href="http://h20338.www2.hp.com/ActiveAnswers/us/en/sizers/microsoft-hyper-v2008.html" target="_blank"&gt;HP Sizer For Microsoft Windows Server 2008 R2 Hyper-V&lt;/a&gt;, this is a great tool that enables you to describe the kind of configuration you are going to run on the virtualization infrastructure and some more constrains (like memory, etc) and it will produce ready to order BOM&lt;/p&gt;  &lt;p&gt;I checked it using our spec and it gave a very good spec + bill (remember i don’t know too much in that area but it did the job good)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-7350488613862865479?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/7350488613862865479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=7350488613862865479' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/7350488613862865479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/7350488613862865479'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2010/01/hp-sizer-for-microsoft-windows-server.html' title='HP Sizer For Microsoft Windows Server 2008 R2 Hyper-V'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-1082704820105147618</id><published>2009-12-22T14:39:00.001-08:00</published><updated>2009-12-25T12:47:04.614-08:00</updated><title type='text'>C# parsing Command Line arguments the easy way</title><content type='html'>&lt;p&gt;Every console application I write needs some kind of command line arguments from user, and once the number of argument is larger than one the code to handle it becomes complex and built out of the same logical components (for each of my option find the command line argument, parse it and assign it.&lt;/p&gt;  &lt;p&gt;If the arguments are not valid, write to console the allowed values&lt;/p&gt;  &lt;p&gt;I decided to search for a good framework for it and i found &lt;a href="http://www.ndesk.org/Options" target="_blank"&gt;NDesk.Options&lt;/a&gt; it suppose out of the box&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;String &amp;amp; Boolean parameters &lt;/li&gt;    &lt;li&gt;Aliases for same parameter &lt;/li&gt;    &lt;li&gt;Automatic string that describe allowed values (including your description) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;example of code to parse command line:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ProgramArguments {&lt;br /&gt;  &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; PlatformXMLFileLocation { get; set; }&lt;br /&gt;  &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; XMLOutputFileLocation { get; set; }&lt;br /&gt;  &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; Silent { get; set; }&lt;br /&gt;  &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;[] ArgsToParse { get; set; }&lt;br /&gt;  &lt;span class="kwrd"&gt;private&lt;/span&gt; OptionSet Options = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;  &lt;span class="kwrd"&gt;public&lt;/span&gt; ProgramArguments() { }&lt;br /&gt;  &lt;span class="kwrd"&gt;public&lt;/span&gt; ProgramArguments(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args) : &lt;span class="kwrd"&gt;this&lt;/span&gt;() {&lt;br /&gt;    ArgsToParse = (&lt;span class="kwrd"&gt;string&lt;/span&gt;[])args.Clone();&lt;br /&gt;    ParseArgs();&lt;br /&gt;  }&lt;br /&gt;  &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; ParseArgs() {&lt;br /&gt;    Options = &lt;span class="kwrd"&gt;new&lt;/span&gt; OptionSet() {&lt;br /&gt;      { &lt;span class="str"&gt;&amp;quot;i|input=&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Path of the input platform XML file&amp;quot;&lt;/span&gt;, v =&amp;gt; PlatformXMLFileLocation = v },&lt;br /&gt;      { &lt;span class="str"&gt;&amp;quot;o|output=&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Path of the output XML to represet errors&amp;quot;&lt;/span&gt;, v =&amp;gt; XMLOutputFileLocation = v },&lt;br /&gt;      { &lt;span class="str"&gt;&amp;quot;s|silent&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Run as silent&amp;quot;&lt;/span&gt;, v =&amp;gt; Silent = v!=&lt;span class="kwrd"&gt;null&lt;/span&gt; }&lt;br /&gt;    };&lt;br /&gt;    Options.Parse(ArgsToParse);&lt;br /&gt;  }&lt;br /&gt;  &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; WriteOptionDescriptions(TextWriter o) {&lt;br /&gt;    Options.WriteOptionDescriptions(o);&lt;br /&gt;  }&lt;br /&gt;  &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsValid() {&lt;br /&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; !&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(PlatformXMLFileLocation);&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I am accepting:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;-i, --input=VALUE&amp;#160; - Path of the input platform XML file&lt;br /&gt;&lt;br /&gt;-o, --output=VALUE&amp;#160; -&amp;#160; Path of the output XML to represent errors&lt;br /&gt;&lt;br /&gt;-s, –silent&amp;#160; - Run as silent&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Above was generated by running WriteOptionDescriptions provided by NDesk &amp;lt;Smile /&amp;gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Enjoy&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-1082704820105147618?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/1082704820105147618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=1082704820105147618' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1082704820105147618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1082704820105147618'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/12/c-parsing-command-line-arguments-easy.html' title='C# parsing Command Line arguments the easy way'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-3397833560468784267</id><published>2009-12-18T11:01:00.001-08:00</published><updated>2009-12-18T11:01:02.062-08:00</updated><title type='text'>Workbook.SaveAsXMLData Method return XlXmlExportResult.xlXmlExportValidationFailed</title><content type='html'>&lt;p&gt;As part of our daily work we have an excel sheet that contains the entire layout of out deployment (for installation) and we use an automatic mechanism to create the installation package, the process of using excel is only for simplicity of viewing for our end users and the data is being exported to XML for usage of the process.&lt;/p&gt;  &lt;p&gt;Yesterday i wasted almost 30 min trying to understand WHY the following code was failing &lt;/p&gt;  &lt;pre class="csharpcode"&gt;Excel.XlXmlExportResult result = oExcel.ActiveWorkbook.XmlMaps[&lt;span class="str"&gt;&amp;quot;Map1&amp;quot;&lt;/span&gt;].Export(&lt;span class="str"&gt;&amp;quot;export.xml&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;true&lt;/span&gt;);&lt;br /&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (result != Excel.XlXmlExportResult.xlXmlExportSuccess)&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ApplicationException(&lt;span class="str"&gt;&amp;quot;failed writing file&amp;quot;&lt;/span&gt;);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;meaning why the hell did the method return xlXmlExportValidationFailed?, while the file was exported and looks “right”.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Well apparently one of our developers checked-in update version of the excel and one of the columns that was mapped to a numeric field was empty –&amp;gt; violation of the XSD! and that was the reason that the file was created and the method returned error (validation failed)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;To mitigate the issue you can use the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xmlmap.isexportable.aspx" target="_blank"&gt;IsExportable&lt;/a&gt; method to validate XSD&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Hope that helps you&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-3397833560468784267?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/3397833560468784267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=3397833560468784267' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3397833560468784267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3397833560468784267'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/12/workbooksaveasxmldata-method-return.html' title='Workbook.SaveAsXMLData Method return XlXmlExportResult.xlXmlExportValidationFailed'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-8005093249873500229</id><published>2009-12-15T13:08:00.001-08:00</published><updated>2009-12-15T13:08:57.673-08:00</updated><title type='text'>Reading 64 bit registry from 32 bit application and the other way around</title><content type='html'>&lt;p&gt;Our bootstrapper installation is 32 bit while we install several 64 bit installation like SQL 2008.&lt;/p&gt;  &lt;p&gt;We had a requirement to support installing SQL to different port , and apparently this is not supported as a command line / update INI for the installation of SQL.&lt;/p&gt;  &lt;p&gt;The only solution is to update the registry (64 bit) of SQL with the new port number and restart services.&lt;/p&gt;  &lt;p&gt;We decided to write the code in VBS (or PS) and the way to do it was to use the following (example):&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;font size="1"&gt;&lt;span class="kwrd"&gt;dim&lt;/span&gt; objCtx, objLocator, Inparams, Outparams&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Const&lt;/span&gt; HKLM = &amp;amp;h80000002&lt;br /&gt;&lt;span class="kwrd"&gt;Set&lt;/span&gt; objCtx = CreateObject(&lt;span class="str"&gt;&amp;quot;WbemScripting.SWbemNamedValueSet&amp;quot;&lt;/span&gt;)&lt;br /&gt;objCtx.Add &lt;span class="str"&gt;&amp;quot;__ProviderArchitecture&amp;quot;&lt;/span&gt;, 64 &lt;span class="rem"&gt;' Could be 32&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Set&lt;/span&gt; objLocator = CreateObject(&lt;span class="str"&gt;&amp;quot;Wbemscripting.SWbemLocator&amp;quot;&lt;/span&gt;)&lt;br /&gt;&lt;span class="kwrd"&gt;Set&lt;/span&gt; objServices = objLocator.ConnectServer(&lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;,&lt;span class="str"&gt;&amp;quot;root\default&amp;quot;&lt;/span&gt;,&lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;,&lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;,,,,objCtx)&lt;br /&gt;&lt;span class="kwrd"&gt;Set&lt;/span&gt; objStdRegProv = objServices.&lt;span class="kwrd"&gt;Get&lt;/span&gt;(&lt;span class="str"&gt;&amp;quot;StdRegProv&amp;quot;&lt;/span&gt;) &lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Set&lt;/span&gt; Inparams = objStdRegProv.Methods_(&lt;span class="str"&gt;&amp;quot;GetStringValue&amp;quot;&lt;/span&gt;).Inparameters&lt;br /&gt;Inparams.Hdefkey = HKLM&lt;br /&gt;Inparams.Ssubkeyname = &lt;span class="str"&gt;&amp;quot;Software\SomeKey&amp;quot;&lt;/span&gt;&lt;br /&gt;Inparams.Svaluename = &lt;span class="str"&gt;&amp;quot;SomeNodename&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;set&lt;/span&gt; Outparams = objStdRegProv.ExecMethod_(&lt;span class="str"&gt;&amp;quot;GetStringValue&amp;quot;&lt;/span&gt;, Inparams,,objCtx)&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;'show output parameters object and the registry value HKLM\SOFTWARE\&lt;/span&gt;&lt;br /&gt;WScript.Echo &lt;span class="str"&gt;&amp;quot;Value =  &amp;quot;&lt;/span&gt; &amp;amp; Outparams.SValue&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;If you try simple approach of load the registry you will automatically get redirected to the 32 but registry! so beware and aware for this.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-8005093249873500229?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/8005093249873500229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=8005093249873500229' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8005093249873500229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8005093249873500229'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/12/reading-64-bit-registry-from-32-bit.html' title='Reading 64 bit registry from 32 bit application and the other way around'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-442031680107727111</id><published>2009-12-13T19:56:00.001-08:00</published><updated>2009-12-15T09:52:16.007-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UAC Install'/><title type='text'>How to elevate without prompting</title><content type='html'>&lt;p&gt;What are you going to do if you want to run an application without prompting for user to elevate (when UAC is on)?&lt;/p&gt;  &lt;p&gt;Well apparently the answer is very simple, you can create a scheduled task that is marked as requires highest privileges and there you go.&lt;/p&gt;  &lt;p&gt;I found this solution &lt;a href="http://huddledmasses.org/vista-setuid-how-to-elevate-without-prompting/" target="_blank"&gt;here&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;in our solution we use it as a replacer of the “Run” section in the registry (on VISTA+) because our application must be running under token of administrator (we scheduled the task, set highest privileges, and mark the trigger of logon)&lt;/p&gt;  &lt;p&gt;Looks as a good supported solution&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-442031680107727111?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/442031680107727111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=442031680107727111' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/442031680107727111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/442031680107727111'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/12/how-to-elevate-without-prompting.html' title='How to elevate without prompting'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-446746704044655684</id><published>2009-12-05T11:01:00.001-08:00</published><updated>2009-12-05T11:01:52.362-08:00</updated><title type='text'>mRemote has stopped working – solution found</title><content type='html'>&lt;p&gt;Few days ago my &lt;a href="http://www.mremote.org/wiki/" target="_blank"&gt;mRemote&lt;/a&gt; stopped working by crashing with “mRemote has stopped working”.&lt;/p&gt;  &lt;p&gt;I tried uninstalling, and reinstalling and nothing worked, so I left it like it for few days while using MSTSC !&lt;/p&gt;  &lt;p&gt;Today i decided to see if i can understand what went wrong, so i ran &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx" target="_blank"&gt;PROCMON&lt;/a&gt; and followed the endless lines from bottom to up (to reduce my work), i saw that just after reading private config file under my user it failed&lt;/p&gt;  &lt;p&gt;I edited the file user.config and saw that it was zero length (how come) and decided to delete it (maybe the issue related to failure on deserialization)&lt;/p&gt;  &lt;p&gt;Luckily that did the job!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-446746704044655684?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/446746704044655684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=446746704044655684' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/446746704044655684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/446746704044655684'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/12/mremote-has-stopped-working-solution.html' title='mRemote has stopped working – solution found'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-1034026474079842134</id><published>2009-12-02T12:50:00.000-08:00</published><updated>2009-12-02T12:50:55.096-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project 2010'/><title type='text'>Project 2010 Beta CRITICAL BUG in allocation algorithm</title><content type='html'>&lt;p&gt;I decided to go ahead and download Project 2010 Beta and give it a test run an start taking advantage of the team planner feature.&lt;/p&gt;  &lt;p&gt;By having a single view of the team i save a lot of time by not being required to jump back and forth, great feature.&lt;/p&gt;  &lt;p&gt;while working in this version i saw a very strange behavior that i am sure is a critical bug related to bug in the algorithm of leveling, The scenario is built out of the following tasks:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_tJ_SCvHoRhI/SxRJZaY2pSI/AAAAAAAAAHg/Kd2UqxwQ9vw/s1600-h/Tasks%5B6%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Tasks" border="0" alt="Tasks" src="http://lh4.ggpht.com/_tJ_SCvHoRhI/SxRJaBaPh0I/AAAAAAAAAHk/B-yPl0dSa0c/Tasks_thumb%5B4%5D.jpg?imgmax=800" width="408" height="82" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Stabilization is dependent on bug fixes finish. &lt;/li&gt;    &lt;li&gt;first and third tasks are being done by the same resource &lt;/li&gt;    &lt;li&gt;the priority of the stabilization is higher than all &lt;/li&gt;    &lt;li&gt;Stabilization has a constrain of “Start no earlier than” 1/Dec/09 (which is before Bug fixing finishes) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;When leveling the allocation with Priority, Standard and hour by hour you get In Office 2010:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_tJ_SCvHoRhI/SxRJb8a2cII/AAAAAAAAAHo/bj9-CrA6waM/s1600-h/AllocationProblem_2010%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="AllocationProblem_2010" border="0" alt="AllocationProblem_2010" src="http://lh6.ggpht.com/_tJ_SCvHoRhI/SxRJc67mPII/AAAAAAAAAHs/cjUA0aqJAbg/AllocationProblem_2010_thumb%5B1%5D.jpg?imgmax=800" width="408" height="80" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;While in Office 2007 you get:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_tJ_SCvHoRhI/SxRJdjigogI/AAAAAAAAAHw/REyBnthxgmY/s1600-h/AllocationProblem_2007%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="AllocationProblem_2007" border="0" alt="AllocationProblem_2007" src="http://lh4.ggpht.com/_tJ_SCvHoRhI/SxRJeoIRwII/AAAAAAAAAH0/RCyKaG9zGdg/AllocationProblem_2007_thumb%5B1%5D.jpg?imgmax=800" width="408" height="70" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So why is there a different in level result, In office 2010 the outcome is bug , as it seem project is not taking into account the predecessor constrain (Tests CANNOT start before bugs are fixed)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Am i missing anything here?!&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The solution (for now) is to remove the constrain of Start no earlier than from the task and move it to the summery task&lt;/p&gt;  &lt;p&gt;[UPDATE 12/Dec/09] I got response from Microsoft:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;We are sorry this issue is causing you problems but with any beta, you have to be aware that there will be issues since you are using pre-released software. As I said below, there are two ways to work around this issue. You can re-install Project 2007 on the same machine you have Project 2010 on. This way you can use Project 2007 for your real project management work, and then the 2010 beta more for testing out the software. Alternatively, you can directly link the subtasks instead of the summary task and you will not hit this issue.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I am considering to remove the application now as i feel too much like QA person, rather than end customer (even if this is beta), I would expect the CORE of the allocation mechanism to be as stable as possible (and be under automatic test – which i understand its not)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-1034026474079842134?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/1034026474079842134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=1034026474079842134' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1034026474079842134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1034026474079842134'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/11/project-2010-beta-critical-bug-in.html' title='Project 2010 Beta CRITICAL BUG in allocation algorithm'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_tJ_SCvHoRhI/SxRJaBaPh0I/AAAAAAAAAHk/B-yPl0dSa0c/s72-c/Tasks_thumb%5B4%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-5696908366801426268</id><published>2009-11-14T14:07:00.001-08:00</published><updated>2009-11-14T14:07:58.570-08:00</updated><title type='text'>HOWTO split domain\user into two variables (in batch file)</title><content type='html'>&lt;p&gt;I got input in a batch file in the following format “domain.com\Username”&lt;/p&gt;  &lt;p&gt;And I wanted to have two variables:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Domain name&lt;/li&gt;    &lt;li&gt;User name&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So i used the &lt;a href="http://ss64.com/nt/syntax-replace.html" target="_blank"&gt;variable edit/replace&lt;/a&gt; and created the following script which i think will save you 30 min:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;@echo off     &lt;br /&gt;SET _test=davidovitz.org\infraadmin      &lt;br /&gt;set _Username=%_test:*\=%      &lt;br /&gt;call set _Domain=%%_test:\%_Username%=%% &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;echo [%_test%]     &lt;br /&gt;echo [%_Username%]      &lt;br /&gt;echo [%_Domain%]&lt;/em&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-5696908366801426268?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/5696908366801426268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=5696908366801426268' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/5696908366801426268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/5696908366801426268'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/11/howto-split-domainuser-into-two.html' title='HOWTO split domain\user into two variables (in batch file)'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-8129095145469304437</id><published>2009-11-10T12:25:00.001-08:00</published><updated>2009-11-10T12:25:47.231-08:00</updated><title type='text'>bad installation of .NET 3.5.1 (SP1) on Windows 2008 R2</title><content type='html'>&lt;p&gt;AGAIN we are facing issues with .NET 3.5 Sp1 (actually 3.5.1 feature) and now in windows 2008 R2.&lt;/p&gt;  &lt;p&gt;I have used the .NET Framework Setup Verification Tool and saw that 3.5 SP1 is broken! how can it be, this should be a simple feature that was installed (not manual EXE).&lt;/p&gt;  &lt;p&gt;The error that i saw in log is ****ERROR**** File C:\Windows\Microsoft.NET\Framework\v3.5\Windows Presentation Foundation\NPWPF.dll is not installed on the system&lt;/p&gt;  &lt;p&gt;I am starting to get tired of those issues, Any one got this issue? / resolution?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-8129095145469304437?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/8129095145469304437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=8129095145469304437' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8129095145469304437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8129095145469304437'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/11/bad-installation-of-net-351-sp1-on.html' title='bad installation of .NET 3.5.1 (SP1) on Windows 2008 R2'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-1524794684673342113</id><published>2009-10-18T14:27:00.000-07:00</published><updated>2009-10-18T14:35:23.126-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMWare'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows 2008 R2'/><title type='text'>Windows 2008 R2 virtualized</title><content type='html'>In my company we are using VMWare ESX 3.5. we started certifying our product on windows 2008 R2 and found numerous problem in our VMWare infrastructure (not in our product):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Freeze after restart&lt;/li&gt;&lt;li&gt;Slow response!&lt;/li&gt;&lt;li&gt;black screen of death :)&lt;/li&gt;&lt;/ul&gt;The official response that we got from VMWare is R2 is NOT supported! damn.&lt;br /&gt;I decided to install it on my machine using &lt;a href="http://www.virtualbox.org/"&gt;VitualBox&lt;/a&gt; (open source VM solution from Sun) and I can tell you that it is working great! again the open source is working better and faster --&gt; we need to stop fearing from open source&lt;br /&gt;By the way i am using MAC OS leopard snow and also windows 7 (both running great)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-1524794684673342113?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/1524794684673342113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=1524794684673342113' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1524794684673342113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1524794684673342113'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/10/windows-2008-r2-virtualized.html' title='Windows 2008 R2 virtualized'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-8119536044067524283</id><published>2009-10-05T15:36:00.001-07:00</published><updated>2009-10-05T15:42:21.899-07:00</updated><title type='text'>Silverlight &amp; Flash for IPHONE</title><content type='html'>Just saw that Adobe released flash for IPHONE &lt;a href="http://iphonedevelopment.blogspot.com/2009/10/adobe-adds-iphone-native-app-creation.html"&gt;here&lt;/a&gt; and i spoke with a friend and understood that Microsoft is also going to deliver Silverlight for IPHONE,... anyone knows anything about it?&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-8119536044067524283?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/8119536044067524283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=8119536044067524283' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8119536044067524283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8119536044067524283'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/10/silverlight-flash-for-iphone.html' title='Silverlight &amp; Flash for IPHONE'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-8921952866536845536</id><published>2009-09-27T01:23:00.001-07:00</published><updated>2009-09-27T01:23:54.794-07:00</updated><title type='text'>Moving to MAC OS</title><content type='html'>&lt;p&gt;:), I decided to start developing for MAC / IPhone.&lt;/p&gt;  &lt;p&gt;I am on my way to buy MACBook Pro 13’&lt;/p&gt;  &lt;p&gt;I will start developing apps with my friend Tsafrir (Java developer)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-8921952866536845536?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/8921952866536845536/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=8921952866536845536' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8921952866536845536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8921952866536845536'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/09/moving-to-mac-os.html' title='Moving to MAC OS'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-9010723568078713332</id><published>2009-09-23T12:56:00.001-07:00</published><updated>2009-09-23T12:56:22.626-07:00</updated><title type='text'>Reference for CMD command</title><content type='html'>&lt;p&gt;Every now and then I have a need to write some batch scripts(please don’t lecture me to use PS yet &amp;lt;smile /&amp;gt;).&lt;/p&gt;  &lt;p&gt;I always find my self starting to search the web for various syntaxes: FOR, IF, etc.&lt;/p&gt;  &lt;p&gt;Well now I found the ultimate reference - &lt;a href="http://ss64.com/nt/" target="_blank"&gt;An A-Z Index of the Windows XP command line&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Inside you can also see references to Microsoft links:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/ntcmds.mspx"&gt;Windows XP&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://technet2.microsoft.com/windowsserver/en/library/552ed70a-208d-48c4-8da8-2e27b530eac71033.mspx?mfr=true"&gt;2003 Server&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc772390.aspx"&gt;2008 Server&lt;/a&gt;&lt;/li&gt; Accurate and simple, enjoy.&lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-9010723568078713332?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/9010723568078713332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=9010723568078713332' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/9010723568078713332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/9010723568078713332'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/09/reference-for-cmd-command.html' title='Reference for CMD command'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-2560971845950126583</id><published>2009-09-06T05:43:00.001-07:00</published><updated>2009-09-06T05:43:41.515-07:00</updated><title type='text'>Microsoft Projects, Leveling and the question of how to make two task to be as close as possible</title><content type='html'>&lt;p&gt;Hi,&lt;/p&gt;  &lt;p&gt;During my work with project i come to a situation that i don't understand how to give hint for project that two tasks should be as close as possible (e.g. Read &amp;amp; prepare for feature and its testing – so that tester wont forget everything)&lt;/p&gt;  &lt;p&gt;If we use priority but have constrains on the task we can come to situation that the first task is schedule for now and the later is scheduled as per the constrain (E.g. don't start before 2 month from now (the test)) –&amp;gt; we have gap between preparation and testing. you can see sample &lt;a href="http://www.davidovitz.org/PublicBlogItems/HowCanIMakeThemCloser.mpp" target="_blank"&gt;MPP&lt;/a&gt; for it&lt;/p&gt;  &lt;p&gt;I didn't find any solution other than playing with the constrain on the first task (which means manual work)&lt;/p&gt;  &lt;p&gt;I already open StackOverflow &lt;a href="http://stackoverflow.com/questions/1385576/making-two-tasks-be-as-close-as-possible-in-project" target="_blank"&gt;question&lt;/a&gt; , so feel free to answer their :)&lt;/p&gt;  &lt;p&gt;Thanks (&lt;u&gt;this is not a simple question&lt;/u&gt; :))&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-2560971845950126583?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/2560971845950126583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=2560971845950126583' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/2560971845950126583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/2560971845950126583'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/09/microsoft-projects-leveling-and.html' title='Microsoft Projects, Leveling and the question of how to make two task to be as close as possible'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-1207273880658839395</id><published>2009-08-26T21:52:00.001-07:00</published><updated>2010-02-02T12:53:44.411-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSI'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Installer'/><title type='text'>Installing MSI on locked files behind junction across drives</title><content type='html'>&lt;p&gt;This article is going to save you hours of debugging and confusion with your customers&lt;/p&gt;&lt;p&gt;In a nut shell when installing MSI that have some files that are currently locked and you are using &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx" target="_blank"&gt;junction&lt;/a&gt; on the target directory that is configured on a different drive than you are in trouble because &lt;a href="http://en.wikipedia.org/wiki/Windows_Installer" target="_blank"&gt;Windows installer&lt;/a&gt; (not mater what version):&lt;/p&gt;&lt;ol&gt;&lt;li&gt;doesn't replace locked files on the fly while installing (when installing and junction is on the same drive / no junction the files are replaced on the fly) &lt;/li&gt;&lt;li&gt;Because of the above windows installer scheduled the file move operation but it doesn't use the force flag and the files are not being replace after restart (because source and target already exist) – you can see in &lt;a href="http://support.microsoft.com/kb/181345" target="_blank"&gt;this&lt;/a&gt; article description of the PendingFileRenameOperations and in &lt;a href="http://support.microsoft.com/default.aspx/kb/202071" target="_blank"&gt;this&lt;/a&gt; article how to troubleshoot MoveFileEx operation&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The critical issue here is that if by any chance your MSI replaced files that need to be registered (e.g. com) that the file is not replaced and scheduled after restart but the register operation is done at the time of installation using old file&lt;/p&gt;&lt;p&gt;The good thing is that this is approved as a bug by Microsoft , the bad news is that because it is a approved as a bug it will take ages to be fixed (sadly there is not other option)&lt;/p&gt;&lt;p&gt;So until this is resolved suggested not to use junction that span drives&lt;/p&gt;&lt;p&gt;Also this was tested and reproduced on windows 2003&lt;/p&gt;&lt;p&gt;[Update 3/Dec/2009] FINALLY we passed several triages at Microsoft and they agreed to have the issue of schedule of replace files to be fixed. we got private build that we are checking, i will update on details soon. (Applicable only for Windows Installer 4.5)&lt;/p&gt;&lt;p&gt;[Update 2/Feb/2010 fixed was tested and approved by us, &lt;a href="http://support.microsoft.com/kb/978620"&gt;KB&lt;/a&gt; was published but customer cannot download before opening ticket (should be free) ]&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-1207273880658839395?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/1207273880658839395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=1207273880658839395' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1207273880658839395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1207273880658839395'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/08/installing-msi-on-locked-files-behind.html' title='Installing MSI on locked files behind junction across drives'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-3565266194918569122</id><published>2009-06-26T08:44:00.001-07:00</published><updated>2009-06-26T08:44:03.686-07:00</updated><title type='text'>VBS parse issues related to culture aware API</title><content type='html'>&lt;p&gt;We have a WiX installation that we use to deploy our applications, one of the actions in the WiX template is to run a VBS that does some registry queries to fetch a major.minor version that was written by another application and see that its in the valid range.&lt;/p&gt;  &lt;p&gt;Everything was working great UNTIL this installation was ran on French and then we got failure because of parse error&lt;/p&gt;  &lt;p&gt;The registry value is always written as “[major].[minor]” by some other component (E.g. US format) and our code simply did &lt;a href="http://msdn.microsoft.com/en-us/library/ftekwwt0(VS.85,loband).aspx" target="_blank"&gt;CDBL&lt;/a&gt; on that value.&lt;/p&gt;  &lt;p&gt;the issue that we forgot is that CDBL is culture aware meaning that in other languages e.g. French the decimal delimiter is “,” rather than “.”&lt;/p&gt;  &lt;p&gt;The solution i am proposing is to use the &lt;a href="http://msdn.microsoft.com/en-us/library/5xf99h19(VS.85,loband).aspx" target="_blank"&gt;SetLocale&lt;/a&gt; (“&lt;a href="http://msdn.microsoft.com/en-us/library/0h88fahh(VS.85,loband).aspx" target="_blank"&gt;en-US&lt;/a&gt;”) before parsing the number and than return to previous locale&lt;/p&gt;  &lt;p&gt;For that i have created a very simple function like so:&lt;/p&gt;  &lt;p&gt;Function parseUSDouble(dbl)   &lt;br /&gt;&amp;#160; Dim originalLocale    &lt;br /&gt;&amp;#160; originalLocale = SetLocale(&amp;quot;en-US&amp;quot;)    &lt;br /&gt;&amp;#160; dbl = Cdbl(dbl)    &lt;br /&gt;&amp;#160; SetLocale(originalLocale)    &lt;br /&gt;&amp;#160; parseUSDouble = dbl    &lt;br /&gt;End Function&lt;/p&gt;  &lt;p&gt;The reason i am returning to original locale and not to Current system locale is because someone might set the locale to different that the current (don't know why – but could be)&lt;/p&gt;  &lt;p&gt;There is a very important basic issue to remember to always know who is the owner of INPUT that you get and how it was serialized&lt;/p&gt;  &lt;p&gt;Funny thing that i couldn’t find too much information on it while trying to troubleshoot , well now you can :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-3565266194918569122?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/3565266194918569122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=3565266194918569122' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3565266194918569122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3565266194918569122'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/06/vbs-parse-issues-related-to-culture.html' title='VBS parse issues related to culture aware API'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-8708178846026927217</id><published>2009-06-11T12:32:00.001-07:00</published><updated>2009-06-11T12:32:20.883-07:00</updated><title type='text'>microsoft.com in host file doesn't work</title><content type='html'>&lt;p&gt;Now here is a crazy story, I have an application that connect to &lt;a href="http://www.microsoft.com"&gt;www.microsoft.com&lt;/a&gt; and download the pages, I wanted to mock the response by adding 127.0.0.1 microsoft.com and setting up default page on my IIS 7,&lt;/p&gt;  &lt;p&gt;Guess what that didn't work! &amp;lt;WTF /&amp;gt;i double checked this also in browser and it didn't work&lt;/p&gt;  &lt;p&gt;Can anyone explain why this is happening?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-8708178846026927217?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/8708178846026927217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=8708178846026927217' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8708178846026927217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8708178846026927217'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/06/microsoftcom-in-host-file-doesn-work.html' title='microsoft.com in host file doesn&amp;#39;t work'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-2244126709325355863</id><published>2009-05-28T06:12:00.001-07:00</published><updated>2009-05-28T06:12:17.422-07:00</updated><title type='text'>A story of a lost password</title><content type='html'>&lt;p&gt;So i decided to install windows 7 after i got feedback that its working great &amp;amp; FAST (also today i made some little analysis and saw that i waste approx 20 min per day on VISTA slowness)&lt;/p&gt;  &lt;p&gt;I currently have Lenovo T60 with CDRW and DVD reader which means that i couldn't burn the WIN7 ISO so i sent it to my home computer wanting to burn it.&lt;/p&gt;  &lt;p&gt;Sadly i forgot my admin password (VISTA) and i couldn't install any ISO Burner without admin rights (Coz Damn Vista doesn't have native ISO Burner).&lt;/p&gt;  &lt;p&gt;I search for a solution and found that i can use a non installable ISO burner called &lt;a href="http://www.terabyteunlimited.com/downloads/burncdcc.zip" target="_blank"&gt;BurnCDCC&lt;/a&gt; from &lt;a href="http://www.terabyteunlimited.com/index.htm" target="_blank"&gt;TeraBytesUnlimited&lt;/a&gt; (and free)&lt;/p&gt;  &lt;p&gt;That did the trick&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-2244126709325355863?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/2244126709325355863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=2244126709325355863' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/2244126709325355863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/2244126709325355863'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/05/story-of-lost-password.html' title='A story of a lost password'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-8891525663440866650</id><published>2009-05-01T12:39:00.001-07:00</published><updated>2009-05-01T12:39:07.340-07:00</updated><title type='text'>Waste of time on stupid exception using ExtJS</title><content type='html'>&lt;p&gt;I am currently working on a private project that has two targets:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Make money :)&lt;/li&gt;    &lt;li&gt;Learn hardcore client centric application design and implementation&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I started by doing full application with JQuery by building widgets (user controls) – This takes lots of time and work effectively.&lt;/p&gt;  &lt;p&gt;I continued to use ExtJS as a basic framework that contain all the UI I will ever need, currently it looks like a faster development as it is more UI Component friendly.&lt;/p&gt;  &lt;p&gt;I built the ExtJS solution like a pro with pre-configured classes so that i can have modularity design and created a master application JS called “RemindMe.HomePage.js” based on my main application object.&lt;/p&gt;  &lt;p&gt;I started my application and got “Error: Object doesn't support this property or method” on IE, is started debugging and couldn't really understand where it is coming from so I continued to remove part of my main class so that I will gain some knowledge on the problematic area –&amp;gt; this didn't help.&lt;/p&gt;  &lt;p&gt;After more than 30 minutes of wasting of time I found that my main call to the HomePage class was:&lt;/p&gt;  &lt;p&gt;var hp = HomePage();&lt;/p&gt;  &lt;p&gt;Look again, the issue is that i forgot to add the “&lt;font color="#ff0000"&gt;new&lt;/font&gt;” –&amp;gt; apparently working on 3AM has it down side :(&lt;/p&gt;  &lt;p&gt;Hope this will reduce some time for you&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-8891525663440866650?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/8891525663440866650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=8891525663440866650' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8891525663440866650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8891525663440866650'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/05/waste-of-time-on-stupid-exception-using.html' title='Waste of time on stupid exception using ExtJS'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-385065344062739045</id><published>2009-03-25T14:04:00.001-07:00</published><updated>2009-03-25T14:04:01.556-07:00</updated><title type='text'>The ASP.NET Sessions Active counter (NOT State Server) shows invalid number after installing .NET 3.5 SP!</title><content type='html'>&lt;p&gt;in addition to the previous issue of &lt;a href="http://davidovitz.blogspot.com/2009/03/net-35-sp1-installation-failed-while.html" target="_blank"&gt;random failing to install .net 3.5 SP1 in silent mode without restart&lt;/a&gt;, we had an issue of memory usage in load that we wanted to investigate and for that we requested from the load team to provide the Sessions Active counter of the INPROC sessions state.&lt;/p&gt;  &lt;p&gt;Few days ago while we were analyzing the results we saw that the Sessions Active value was not related to any profile we use – we saw a very large number e.g. 4294967114 that started to occur after a very short period of time.&lt;/p&gt;  &lt;p&gt;Also as a side note if by any chance you do manual collect you will see that every collection makes the number goes down, this is weird!&lt;/p&gt;  &lt;p&gt;I started searching for this symptom and i have found similar issue in &lt;a href="http://support.microsoft.com/kb/954461" target="_blank"&gt;State Server Sessions Active counter&lt;/a&gt; which tells me that there is a bug that would probably be in another section of code – only time will tell (we use In proc session handling).&lt;/p&gt;  &lt;p&gt;Today while speaking with TAM of Microsoft i understood that the issue is currently open and pending investigation by Microsoft, i will update once we have any progress here.&lt;/p&gt;  &lt;p&gt;Do you have any clever way to get the number of sessions until the above issue will be solved – but without code :) ?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-385065344062739045?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/385065344062739045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=385065344062739045' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/385065344062739045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/385065344062739045'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/03/aspnet-sessions-active-counter-not.html' title='The ASP.NET Sessions Active counter (NOT State Server) shows invalid number after installing .NET 3.5 SP!'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-1948075550880714196</id><published>2009-03-25T13:48:00.001-07:00</published><updated>2009-03-25T13:48:53.256-07:00</updated><title type='text'>.NET 3.5 SP1 installation failed while working in silent mode and /norestart (random)</title><content type='html'>&lt;p&gt;I have been struggling with an issue that we have seen our installation fails while installing .net 3.5 SP1 in silent mode (/q /norestart) on a windows 2003 that has .net 3.5.&lt;/p&gt;  &lt;p&gt;The error that i have seen in %TEMP%/dd_dotnetfx35error is Microsoft .NET Framework 3.5 'package': [2] Error: Installation failed for component Microsoft .NET Framework 3.5 'package'. MSI returned error code 1603&lt;/p&gt;  &lt;p&gt;while looking on more logs in the temp directory i have seen in %TEMP%/net_framework35_MSI[XXXX] error indicating that System.ServiceModel.Web is locked (inaccessible).&lt;/p&gt;  &lt;p&gt;While working with Microsoft support i was told that although using quiet mode with no restart &lt;a href="http://msdn.microsoft.com/en-us/library/cc160716.aspx" target="_blank"&gt;is written as supported&lt;/a&gt; it is actually NOT and the temporary documentation i got about it was &lt;a href="http://blogs.msdn.com/astebner/archive/2007/09/12/4887301.aspx" target="_blank"&gt;this&lt;/a&gt; – blog post from &lt;a href="http://blogs.msdn.com/astebner/default.aspx" target="_blank"&gt;Aaron Stebner's WebLog&lt;/a&gt; :(.&lt;/p&gt;  &lt;p&gt;Currently i am trying to reproduce the lock under &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx" target="_blank"&gt;procmon&lt;/a&gt; to see which process actually locks it and waiting for an official KB article saying the above plus a solution for it (that will probably be to extract all the packages from the .net 3.5 SP1 and install manually.&lt;/p&gt;  &lt;p&gt;for more info on the location of logs and general installation notes look &lt;a href="http://msdn.microsoft.com/en-us/library/cc160717.aspx" target="_blank"&gt;here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I will update this post after i get final response&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-1948075550880714196?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/1948075550880714196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=1948075550880714196' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1948075550880714196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1948075550880714196'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/03/net-35-sp1-installation-failed-while.html' title='.NET 3.5 SP1 installation failed while working in silent mode and /norestart (random)'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-8531749677564352028</id><published>2009-03-04T12:06:00.001-08:00</published><updated>2009-03-04T12:06:47.493-08:00</updated><title type='text'>IE8 RC pops a message about bad search provider</title><content type='html'>&lt;p&gt;I got the following annoying message after installing IE8 RC1&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;Internet Explorer - Search Provider Default&lt;/strong&gt;      &lt;br /&gt;A program on your computer has corrupted your default search provider setting for Internet Explorer. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Internet Explorer has reset this setting to your original search provider, Live Search (search.live.com). &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Internet Explorer will now open Search Settings, where you can change this setting or install more search providers.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I tried everything (change default, remove all providers) and nothing worked so finally I found the non trivial solution:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Delete registry - HKCU\Software\Microsoft\Internet Explorer\User Preferences&lt;/li&gt;    &lt;li&gt;If it didn't resolve the issue then also remove the Google entry from registry from HKCU\Software\Microsoft\Internet Explorer\SearchScopes (make sure it's not default)&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;This will save you some headache &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-8531749677564352028?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/8531749677564352028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=8531749677564352028' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8531749677564352028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8531749677564352028'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/03/ie8-rc-pops-message-about-bad-search.html' title='IE8 RC pops a message about bad search provider'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-8493793614173391877</id><published>2009-01-28T14:08:00.001-08:00</published><updated>2009-01-28T14:08:33.749-08:00</updated><title type='text'>Very slow running web application using Microsoft AJAX.NET</title><content type='html'>&lt;p&gt;Last week we had a very serious issue of performance in our web application that is based on AJAX.NET (mainly under IE6).&lt;/p&gt;  &lt;p&gt;few facts:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;our client response is quite large (between 70K – 250k)&lt;/li&gt;    &lt;li&gt;we are using AJAX.NET with partial update panels&lt;/li&gt;    &lt;li&gt;we have approx 4 update panels that return after post back&lt;/li&gt;    &lt;li&gt;we have lots of nodes (elements)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The average time it take for the response to be updated on the browser for most of our use cases is:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;strong&gt;Browser&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="200"&gt;&lt;strong&gt;Time (&lt;u&gt;seconds&lt;/u&gt;)&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;IE6 (SP3)&lt;/td&gt;        &lt;td valign="top" width="200"&gt;8&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;IE7&lt;/td&gt;        &lt;td valign="top" width="200"&gt;6&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Fire Fox 3&lt;/td&gt;        &lt;td valign="top" width="200"&gt;5&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Chrome&lt;/td&gt;        &lt;td valign="top" width="200"&gt;3.5&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;After intensive analysis that we have done that included:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Checking entire user flow with fiddler&lt;/li&gt;    &lt;li&gt;code review (of some parts)&lt;/li&gt;    &lt;li&gt;Profiling of code&lt;/li&gt;    &lt;li&gt;Numerous running on many platforms&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The root cause (or actually points) that effects the client side performance is:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Apparently the debug=”TRUE” on the web.config which causes all AJAX.NET JS files to be rendered in debug mode (larger, more comments, larger names and LOTS of assertions) –&amp;gt; Dramatically effects performance (&lt;u&gt;approx twice the time&lt;/u&gt;)&lt;/li&gt;    &lt;li&gt;Our response is too large (wider update panel) and contain number of update panels (reduction to 50% of the size reduced approx 1 seconds in release mode)&lt;/li&gt;    &lt;li&gt;Our update panel contains lots of node (DOM hierarchy) which affects the disposal of the DOM prior to the replacement of the innerHTML (&lt;a href="http://siderite.blogspot.com/2008/06/very-slow-updatepanel-refresh-when.html" target="_blank"&gt;did you know it&lt;/a&gt; – &lt;a href="http://www.blogfor.net/2008/05/27/optimize-updatepanel-performance-by-avoiding-unnecessary-element-disposal/" target="_blank"&gt;and to the point this&lt;/a&gt;)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;My personal lesson learning for that scenario is “be cheap” and don't waste bytes. (Also always make sure that the basic weren't forgotten - debug)&lt;/p&gt;  &lt;p&gt;At the end we cut approx 70% of the run time by doing the above&lt;/p&gt;  &lt;p&gt;Hope this post will save other some time.&lt;/p&gt;  &lt;p&gt;P.s. IE6 is the worst browser i have ever witnessed (Performance, compliance and memory handling)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-8493793614173391877?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/8493793614173391877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=8493793614173391877' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8493793614173391877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8493793614173391877'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/01/very-slow-running-web-application-using.html' title='Very slow running web application using Microsoft AJAX.NET'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-8039490721313117481</id><published>2009-01-28T13:22:00.001-08:00</published><updated>2009-01-28T13:22:33.133-08:00</updated><title type='text'>Another JavaScript function invocation method</title><content type='html'>&lt;p&gt;these day i find my self write a lot of JavaScript while doing client centric application, and i try to make my code faster, better understood and smaller.&lt;/p&gt;  &lt;p&gt;Lets the following example that i needed to call hide method when a flag was false and show method when it was true:&lt;/p&gt;  &lt;div style="border-bottom: black 1px solid; border-left: black 1px solid; width: 98.25%; height: 115px; overflow: scroll; border-top: black 1px solid; border-right: black 1px solid"&gt;var flag = ...;    &lt;br /&gt;var jqo = $('#someobject');     &lt;br /&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt; (flag)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; jqo.show();     &lt;br /&gt;&lt;span style="color: blue"&gt;else&lt;/span&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; jqo.hide(); &lt;/div&gt;  &lt;p&gt;another nicer (i like to think so) way:&lt;/p&gt;  &lt;div style="border-bottom: black 1px solid; border-left: black 1px solid; width: 98.49%; height: 67px; overflow: scroll; border-top: black 1px solid; border-right: black 1px solid"&gt;var flag = ...;    &lt;br /&gt;var jqo = $('#someobject');     &lt;br /&gt;jqo[flag ? 'show' : 'hide'](); &lt;/div&gt;  &lt;p&gt;&lt;/p&gt; What do you think?     &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-8039490721313117481?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/8039490721313117481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=8039490721313117481' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8039490721313117481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8039490721313117481'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/01/another-javascript-function-invocation.html' title='Another JavaScript function invocation method'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-4332782601069197189</id><published>2009-01-09T16:13:00.001-08:00</published><updated>2009-01-09T16:13:07.552-08:00</updated><title type='text'>Linq To SQL, ASMX service using JSON and wrong date returned</title><content type='html'>&lt;p&gt;I have been working on a site (manage reminders) and faced a crazy situation of date time shifted while trying to consume an ASMX web service using JSON.&lt;/p&gt;  &lt;p&gt;The flow is like this:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;From browser i am calling API to insert reminder to DB , one of the properties is due date as date time. Data inserted correctly and i see that the date time is in UTC – for example customer wanted due date at 1/1/2000 10:10:00 AM (he is in GMT+2) and data saved is in 8:10:00 AM (move to UTC) – That is ok &lt;/li&gt;    &lt;li&gt;On another page i am calling a API to get the list of reminders, when i look at the grid that i have rendered on client side i see that there is a 2 hours difference (i am calling my own server and more over the response should have been with UTC). &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;i started analyzing the issue &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_tJ_SCvHoRhI/SWfoD1gAxwI/AAAAAAAAAGU/vVT1meSBaDY/s1600-h/Page%20flow%5B4%5D.gif"&gt;&lt;img title="Page flow" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="268" alt="Page flow" src="http://lh5.ggpht.com/_tJ_SCvHoRhI/SWfoEsc7YJI/AAAAAAAAAGY/47j5AvRTs6c/Page%20flow_thumb%5B2%5D.gif?imgmax=800" width="391" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And finally came to the root cause:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;When LINQ makes a query to the DB the date time columns are assumed to be DateTimeKind.Unspecified (this is mentioned &lt;a href="http://msdn.microsoft.com/en-us/library/bb386947.aspx" target="_blank"&gt;here&lt;/a&gt; under System.DateTime section)&lt;/li&gt;    &lt;li&gt;The response from the ASMX is still being shifted to UTC &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I truly don't understand this behavior, Do you!?&lt;/p&gt;  &lt;p&gt;As a workaround, i projected a new DateTime and initialized it with the ticks of the original and UTC kind), something like this “DueDate = new DateTime(reminder.DueDate.Ticks, DateTimeKind.Utc)”&lt;/p&gt;  &lt;p&gt;Not that it matters but my apps is fully client centric :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-4332782601069197189?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/4332782601069197189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=4332782601069197189' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4332782601069197189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4332782601069197189'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/01/linq-to-sql-asmx-service-using-json-and.html' title='Linq To SQL, ASMX service using JSON and wrong date returned'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_tJ_SCvHoRhI/SWfoEsc7YJI/AAAAAAAAAGY/47j5AvRTs6c/s72-c/Page%20flow_thumb%5B2%5D.gif?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-3800907586913559221</id><published>2009-01-08T23:54:00.001-08:00</published><updated>2009-01-08T23:54:58.442-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOP'/><title type='text'>Cross domain communication</title><content type='html'>&lt;p&gt;last week i started writing a post about cross document messaging in IFRAMES (/ objects) and XMLHTTP, today i found that &lt;a href="http://www.west-wind.com/Weblog/default.aspx" target="_blank"&gt;Rick Strahl&lt;/a&gt; wrote a simple quick post about part of what i wanted to talk about - &lt;a href="http://www.west-wind.com/Weblog/posts/589454.aspx" target="_blank"&gt;check it out&lt;/a&gt; and also see my additional comments on further reading.&lt;/p&gt;  &lt;p&gt;These days the usage of mushups and enterprise UI widgets /Scripts is gaining much interest and usage, i think that every architect must know the options / high level solutions and every developer should be aware of the actual implementations that exist (and there are a lot).&lt;/p&gt;  &lt;p&gt;Also i noticed something VERY weird in IE6+ that the &lt;a href="http://en.wikipedia.org/wiki/Same_origin_policy" target="_blank"&gt;same origin policy&lt;/a&gt; doesn't handle different ports, e.g. communication between&amp;#160; &lt;a href="http://www.davidovitz.org/gallery"&gt;www.davidovitz.org/gallery&lt;/a&gt; and &lt;a href="http://www.davidovitz.org:8080/gallery"&gt;www.davidovitz.org:8080/gallery&lt;/a&gt; works – while fails in all other browsers&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-3800907586913559221?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/3800907586913559221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=3800907586913559221' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3800907586913559221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3800907586913559221'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2009/01/cross-domain-communication.html' title='Cross domain communication'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-3865767062105467470</id><published>2008-12-23T07:39:00.001-08:00</published><updated>2008-12-23T07:39:19.164-08:00</updated><title type='text'>VISTA + Intel 3945ABG network card + Network Monitor 3.1 = System process takes 100% CPU</title><content type='html'>&lt;p&gt;I wanted to check performance of a web site that we are building, so I downloaded &lt;a href="http://www.microsoft.com/Downloads/details.aspx?FamilyID=119f3477-dced-41e3-a0e7-d8b5cae893a3&amp;amp;displaylang=en" target="_blank"&gt;VRTA&lt;/a&gt; and installed it (&lt;a href="http://msdn.microsoft.com/en-us/magazine/dd188562.aspx" target="_blank"&gt;it rocks&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;Part of the installation I had to install &lt;a href="http://blogs.technet.com/netmon/archive/2007/07/02/network-monitor-3-1-has-released.aspx" target="_blank"&gt;Network Monitor 3.1&lt;/a&gt;, so I would be able to sniff on the HTTP.&lt;/p&gt;  &lt;p&gt;After few days and one restart I came to a situation that the System service was taking almost 100% CPU which my laptop to NOT FUNCTION!&lt;/p&gt;  &lt;p&gt;I download and ran &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx" target="_blank"&gt;process explorer&lt;/a&gt; and saw that at least 50% CPU is taken on &amp;quot;NDIS.SYS!TrFilterDprIndicateReceiveComplete+0x3efe&amp;quot;&amp;#160; --&amp;gt; Network.&lt;/p&gt;  &lt;p&gt;I immediately suspected NM 3.1 and removed it from system (after few hours that system was unstable) and that resolved the issue.&lt;/p&gt;  &lt;p&gt;Suggestion DO NOT INSTALL NM 3.1 on VISTA with Intel 3945ABG card (apparently there is an &lt;a href="http://downloadcenter.intel.com/Product_Filter.aspx?ProductID=2259&amp;lang;=eng" target="_blank"&gt;updated driver&lt;/a&gt; but I haven't checked it yet)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-3865767062105467470?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/3865767062105467470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=3865767062105467470' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3865767062105467470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3865767062105467470'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2008/12/vista-intel-3945abg-network-card.html' title='VISTA + Intel 3945ABG network card + Network Monitor 3.1 = System process takes 100% CPU'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-6800481798036271457</id><published>2008-11-30T10:18:00.001-08:00</published><updated>2008-11-30T10:18:31.290-08:00</updated><title type='text'>I won Free Typemock Isolator license</title><content type='html'>&lt;p&gt;TypeMock said 50 first bloggers will get full license and they stood up in their word!&lt;/p&gt;  &lt;p&gt;I will be checking this application&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-6800481798036271457?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/6800481798036271457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=6800481798036271457' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/6800481798036271457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/6800481798036271457'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2008/11/i-won-free-typemock-isolator-license.html' title='I won Free Typemock Isolator license'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-378804620503603543</id><published>2008-11-24T13:50:00.001-08:00</published><updated>2008-11-24T13:50:49.120-08:00</updated><title type='text'>DENIM - An Informal Tool For Early Stage Web Site and UI Design</title><content type='html'>&lt;p&gt;&lt;a target="_blank" href="http://dub.washington.edu:2007/projects/denim/"&gt;DENIM&lt;/a&gt; is a system that helps web site designers in the early stages of design. DENIM supports sketching input, allows design at different refinement levels, and unifies the levels through zooming.&lt;/p&gt;  &lt;p&gt;I found this tool while I wanted to create a small sketch of an idea I have for a new site (Visio was hardly good), after couple of minutes of usage (without any Pen) I can say that it is a very nice idea but a little hard to manage and I would suggest to buy a Pen to ease the design process.&lt;/p&gt;  &lt;p&gt;At the end I went back a painted what I wanted on a piece of paper &amp;lt;smile /&amp;gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-378804620503603543?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/378804620503603543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=378804620503603543' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/378804620503603543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/378804620503603543'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2008/11/denim-informal-tool-for-early-stage-web.html' title='DENIM - An Informal Tool For Early Stage Web Site and UI Design'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-8970308832637447779</id><published>2008-11-24T12:56:00.001-08:00</published><updated>2008-11-24T12:56:40.640-08:00</updated><title type='text'>TypeMock special offering for isolator</title><content type='html'>&lt;p&gt;Typemock are offering their new product for &lt;a href="http://www.typemock.com/sharepointpage.php?utm_source=sp_bb&amp;amp;utm_medium=blog_4sp&amp;amp;utm_campaign=sp_bb"&gt;unit testing SharePoint&lt;/a&gt; called Isolator For SharePoint, for a special introduction price. it is the only tool that allows you to &lt;a href="http://blog.typemock.com/2008/11/newisolatorforsharepointtoolforunittest.html?utm_source=typeblog&amp;amp;utm_medium=sp_bb&amp;amp;utm_campaign=typeblog"&gt;unit test SharePoint&lt;/a&gt; without a SharePoint server. To learn more &lt;a href="http://www.typemock.com/sharepointpage.php?utm_source=sp_bb&amp;amp;utm_medium=blog_4sp&amp;amp;utm_campaign=sp_bb"&gt;click here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The first 50 bloggers &lt;/strong&gt;who blog this text in their blog and tell us about it, will get a Full Isolator license, Free. for rules and info &lt;a href="http://blog.typemock.com/2008/11/newisolatorforsharepointtoolforunittest.html"&gt;click here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-8970308832637447779?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/8970308832637447779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=8970308832637447779' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8970308832637447779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8970308832637447779'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2008/11/typemock-special-offering-for-isolator.html' title='TypeMock special offering for isolator'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-7466035530112024806</id><published>2008-11-12T13:18:00.001-08:00</published><updated>2008-11-12T13:20:46.001-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CruiseControl.NET'/><title type='text'>CruiseControl.NET MultipleTrigger failure when using with AND operator</title><content type='html'>&lt;p&gt;During my work with &lt;a target="_blank" href="http://confluence.public.thoughtworks.org/display/CCNET"&gt;Cruise Control .NET&lt;/a&gt; I was required to created dependency between projects in a way that I have the following hierarchy&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_tJ_SCvHoRhI/SRtIIE5V4eI/AAAAAAAAAF0/OpjOtiVkjBw/s1600-h/ProjectDependency%5B2%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 65px; border-top: 0px; border-right: 0px" border="0" alt="ProjectDependency" src="http://lh5.ggpht.com/_tJ_SCvHoRhI/SRtIJOERuMI/AAAAAAAAAF4/RL67hHlS7P0/ProjectDependency_thumb.jpg?imgmax=800" width="244" height="200" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The steps and explanations are:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Compile the setup of the project&lt;/li&gt;    &lt;li&gt;Install the setup (that contain few types of roles) on 3 servers in parallel&lt;/li&gt;    &lt;li&gt;After above 3 projects finished run test program (integration test) on system.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I thought it would be very simple because I know that the current implementation of Cruise Control .NET has &lt;a target="_blank" href="http://confluence.public.thoughtworks.org/display/CCNET/Multiple+Trigger"&gt;MultipleTrigger&lt;/a&gt; class already implemented that allows creating trigger on several project with OR / AND operator.&lt;/p&gt;  &lt;p&gt;After doing the &lt;a target="_blank" href="http://confluence.public.thoughtworks.org/display/CCNET/Configuring+the+Server"&gt;ccnet.config configuration&lt;/a&gt; I tested it and found that project &amp;quot;Entire system&amp;quot; didn't start after all three project were completed successfully (actually its was random with more occasions that it didn't work).&lt;/p&gt;  &lt;p&gt;After investigation I realized that there is a basic implementation problem because even when using AND operator the triggers were iterated one by one BUT if one of the triggers didn't create Integration Request than the multiple Trigger would return NULL and stop the iteration which in our case it would mean the the internal project triggers would even run one time so actually they don't have initial status (limitation).&lt;/p&gt;  &lt;p&gt;I fixed this issue and thought it would fix everything but than I continued and found that although I fire the triggers one by one because I use &lt;a target="_blank" href="http://confluence.public.thoughtworks.org/display/CCNET/Project+Trigger"&gt;Project Trigger&lt;/a&gt; if it is fire and returns Integration Request the next call would return NULL if the threshold (internal &lt;a target="_blank" href="http://confluence.public.thoughtworks.org/display/CCNET/Interval+Trigger"&gt;interval Trigger&lt;/a&gt;) wasn't&amp;#160; met (to make things simpler this means that unless I have a situation that all triggers return Integration Request at once the response would be NULL --&amp;gt; nothing would be built)&lt;/p&gt;  &lt;p&gt;My fix now had to be in a way that all the trigger would be fired at the same bulk and actually cause the get project status action so I decided to set the internal triggers to be 1 second each and added new internal interval trigger that will be used as threshold and set it to 10 seconds.&lt;/p&gt;  &lt;p&gt;So now I have &lt;a target="_blank" href="http://www.codeplex.com/DavidovitzCCE/SourceControl/FileView.aspx?itemId=261460&amp;amp;changeSetId=7669"&gt;MultipleTrigger2&lt;/a&gt; class that actually fire the internal triggers at once every 10 seconds (should be configurable)&lt;/p&gt;  &lt;p&gt;At the end I also added a new flag that will enable me to trigger the internal trigger on first run rather than wait 10 seconds.&lt;/p&gt;  &lt;p&gt;* important to say that because I am using Project Trigger as the internal triggers and it has a limitation that it doesn't have the initial state until first run (I think I am going to add state persistent to Cruise Control .NET implementation)&lt;/p&gt;  &lt;p&gt;Because I will patch the original Cruise Control .NET I decided to add it to my &lt;a target="_blank" href="http://www.codeplex.com/DavidovitzCCE"&gt;CCE&lt;/a&gt; project.&lt;/p&gt;  &lt;p&gt;Needless to say that everything seems to work :) (This post should save you more than 5 hours of HARD work)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-7466035530112024806?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/7466035530112024806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=7466035530112024806' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/7466035530112024806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/7466035530112024806'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2008/11/cruisecontrolnet-multipletrigger.html' title='CruiseControl.NET MultipleTrigger failure when using with AND operator'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_tJ_SCvHoRhI/SRtIJOERuMI/AAAAAAAAAF4/RL67hHlS7P0/s72-c/ProjectDependency_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-8551269016510192799</id><published>2008-11-11T15:04:00.001-08:00</published><updated>2008-11-11T15:04:38.029-08:00</updated><title type='text'>Simian (Similarity Anlyzer)</title><content type='html'>&lt;p&gt;Finally I had time to test drive a tool that was sitting in my tools bag called &lt;a target="_blank" href="http://www.redhillconsulting.com.au/products/simian/"&gt;Simian&lt;/a&gt; (Similarity Analyzer) that is responsible for identifies duplication in Java, C#, C, C++, COBOL, Ruby, JSP, ASP, HTML, XML, Visual Basic, Groovy source code and even plain text files.&lt;/p&gt;  &lt;p&gt;I ran it&amp;#160; (with no special exclusion) using the following command line:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Simian.exe -includes=**/*.cs&amp;#160; -formatter=xml:simian.xml&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Which actually iterate on all C# files recursively. I would suggest to exclude relevant files to reduce noise (E.g. Dynamic content like designer...).&lt;/p&gt;  &lt;p&gt;After few SECONDS It found more than 1000 lines of code that are duplicates on an old project I had laying(pretty big).&lt;/p&gt;  &lt;p&gt;Needless to say I was shocked, so I checked part of the files and I actually found pretty basic things that were copied as part of unit tests and parameter tests.&lt;/p&gt;  &lt;p&gt;If you want to integrate it to &lt;a target="_blank" href="http://confluence.public.thoughtworks.org/display/CCNET"&gt;Cruise Control.NET&lt;/a&gt; using NAnt task that you can see &lt;a target="_blank" href="http://confluence.public.thoughtworks.org/display/CCNET/Using+CruiseControl.NET+with+Simian"&gt;this page&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-8551269016510192799?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/8551269016510192799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=8551269016510192799' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8551269016510192799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8551269016510192799'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2008/11/simian-similarity-anlyzer.html' title='Simian (Similarity Anlyzer)'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-125392130937989082</id><published>2008-11-11T14:04:00.001-08:00</published><updated>2008-11-11T14:04:32.787-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CruiseControl.NET'/><title type='text'>CruiseControl.NET &amp; batch's %ERRORLEVEL%</title><content type='html'>&lt;p&gt;I wanted to do a very simple thing using &lt;a target="_blank" href="http://confluence.public.thoughtworks.org/display/CCNET"&gt;CruiseControl.NET&lt;/a&gt; - have a batch file that does some work be executed in my project and if error level is not &amp;quot;0&amp;quot; fail the test.&lt;/p&gt;  &lt;p&gt;I started by creating a very simple &lt;a target="_blank" href="http://confluence.public.thoughtworks.org/display/CCNET/Project+Configuration+Block"&gt;Project&lt;/a&gt; with the &lt;a target="_blank" href="http://confluence.public.thoughtworks.org/display/CCNET/Executable+Task"&gt;Exec&lt;/a&gt; task that execute batch file called BuildHub.bat (for the sake of demo):&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;lt;project name=&amp;quot;HUB&amp;quot; queue=&amp;quot;SR_GUI&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;workingDirectory&amp;gt;c:\temp&amp;lt;/workingDirectory&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;artifactDirectory&amp;gt;c:\temp&amp;lt;/artifactDirectory&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;sourcecontrol type=&amp;quot;nullSourceControl&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;triggers&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;projectTrigger project=&amp;quot;SP Build&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;/triggers&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;tasks&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;exec executable=&amp;quot;BuildHub.bat&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;/tasks&amp;gt;      &lt;br /&gt;&amp;lt;/project&amp;gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The batch looks something like this:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;@echo off&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;echo provision drive&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;... some lines script ...&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Echo Debug: Error level = %ERRORLEVEL%&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I started to check the project by running it and although I knew it should fail (I saw the debug note about error level = 9002) it always reported as succeeded.&lt;/p&gt;  &lt;p&gt;initially I tough that because I used last action of echo then it might reset the error level but this wasn't the case (validated by running manually)&lt;/p&gt;  &lt;p&gt;To make a long story short the resolution was to simply put the following line at the end of the batch:&lt;/p&gt;  &lt;p&gt;Exit /B %ERRORLEVEL%&lt;/p&gt;  &lt;p&gt;As always I hope this save you some time&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-125392130937989082?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/125392130937989082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=125392130937989082' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/125392130937989082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/125392130937989082'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2008/11/cruisecontrolnet-batch-errorlevel.html' title='CruiseControl.NET &amp;amp; batch&amp;#39;s %ERRORLEVEL%'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-6398856854070175755</id><published>2008-11-01T14:49:00.001-07:00</published><updated>2008-11-01T14:49:44.665-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gadget'/><title type='text'>Just bought Acer aspire one</title><content type='html'>&lt;p&gt;Well today me and my wife went to the shopping mall with another couple of friend and we spotted the Acer Aspire One laptop,&lt;/p&gt;  &lt;p&gt;I always wanted to buy my wife this little kind of laptop to help her in her job (Sport personal trainer) and finally we bought it at the prices of 2250 NIS which is 590 $.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_tJ_SCvHoRhI/SQzO8ohUxnI/AAAAAAAAAFQ/y_rav3Fs04A/s1600-h/AS_one_family-1%5B2%5D.jpg"&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 0px 65px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="AS_one_family-1" src="http://lh4.ggpht.com/_tJ_SCvHoRhI/SQzO9170JJI/AAAAAAAAAFY/-Jtxy-YRbT0/AS_one_family-1_thumb.jpg?imgmax=800" width="244" height="194" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Its now being charged and I cant wait to jump start it.&lt;/p&gt;  &lt;p&gt;Over all I am very happy BUT I know that this little computer cost 50% in USA.... (too bad I cant wait) :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-6398856854070175755?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/6398856854070175755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=6398856854070175755' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/6398856854070175755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/6398856854070175755'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2008/11/just-bought-acer-aspire-one.html' title='Just bought Acer aspire one'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_tJ_SCvHoRhI/SQzO9170JJI/AAAAAAAAAFY/-Jtxy-YRbT0/s72-c/AS_one_family-1_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-1163189255363848191</id><published>2008-09-06T04:41:00.001-07:00</published><updated>2008-09-06T04:41:04.953-07:00</updated><title type='text'>Davidovitz Cruise Control Extensions</title><content type='html'>&lt;p&gt;Hi, I am pleased to announce my first public project called &amp;quot;&lt;a href="http://www.codeplex.com/DavidovitzCCE"&gt;Davidovitz Cruise Control Extensions&lt;/a&gt;&amp;quot; that will be focused on extending &lt;a href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET"&gt;Cruise Control .NET&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The &lt;a href="http://www.codeplex.com/DavidovitzCCE/Release/ProjectReleases.aspx?ReleaseId=17041"&gt;first release&lt;/a&gt; contains one task that will enable managing &lt;a href="http://www.vmware.com"&gt;VMWare&lt;/a&gt; environment, currently I have two operations allowed:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Power On VM &lt;/li&gt;    &lt;li&gt;Revert to Current Snapshot &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Feel free to comment and ask for more feature , if you want to contribute &lt;a href="mailto:ran.davidovitz@gmail.com"&gt;Email me&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-1163189255363848191?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/1163189255363848191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=1163189255363848191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1163189255363848191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/1163189255363848191'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2008/09/davidovitz-cruise-control-extensions.html' title='Davidovitz Cruise Control Extensions'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-4877655386731313085</id><published>2008-08-28T15:45:00.001-07:00</published><updated>2008-08-28T15:45:32.508-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADAM'/><category scheme='http://www.blogger.com/atom/ns#' term='KB'/><title type='text'>Failing to iterate on object in ADAM (Suddenly)</title><content type='html'>&lt;p&gt;Today I have analyzed the following exception from a developer in my group:&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;ExtendedError&lt;/strong&gt;: 1244       &lt;br /&gt;&lt;strong&gt;ExtendedErrorMessage&lt;/strong&gt;: 000004DC: LdapErr: DSID-0C09062B, comment: In order to perform this operation a successful bind must be completed on the connection.       &lt;br /&gt;&lt;strong&gt;ErrorCode&lt;/strong&gt;: -2147016672       &lt;br /&gt;&lt;strong&gt;Message&lt;/strong&gt;: An operations error occurred.       &lt;br /&gt;&lt;strong&gt;TargetSite&lt;/strong&gt;: Boolean MoveNext()       &lt;br /&gt;&lt;strong&gt;Source&lt;/strong&gt;: System.DirectoryServices       &lt;br /&gt;&lt;strong&gt;Stack Trace&lt;/strong&gt;:&amp;#160; &lt;br /&gt;at&amp;#160; System.DirectoryServices.SearchResultCollection. ResultsEnumerator.MoveNext()&amp;#160; &lt;br /&gt;at MDALWrapper.GetNetworkAddress(Int32 instanceID)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The developer provided the following information:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The specific scenario worked before restarting the server &lt;/li&gt;    &lt;li&gt;The specific scenario works great on his desktop &lt;/li&gt;    &lt;li&gt;In the code there is a connection to remote ADAM and using SearchResult to query for specific object and fetching specific attribute from it &lt;/li&gt;    &lt;li&gt;The code create a good connection to ADAM (No exception thrown) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I &lt;a href="http://www.google.com" target="_blank"&gt;Googled&lt;/a&gt; a little for it but failed to get any real answer that could helped me &amp;lt;WHY AGAIN /&amp;gt;&lt;/p&gt;  &lt;p&gt;I have started by looking at the event viewer and found several NTP Time event regarding server cannot sync with domain&lt;/p&gt;  &lt;p&gt;I continued and saw that the server is indeed not in sync with domain (and I hope you know already this could lead to lots of not working areas in your servers basically because of authentication issues)&lt;/p&gt;  &lt;p&gt;I ran the &amp;quot;NET TIME /DOMAIN /SET&amp;quot; command to sync the server with the domain and retested the scenario and IT WORKED :)&lt;/p&gt;  &lt;p&gt;Amazingly the root cause was that although the connection to ADAM was &lt;strong&gt;successful&lt;/strong&gt; it was &lt;strong&gt;not binded&lt;/strong&gt; using a real user (seems as if it was using anonymous connection) because the authentication failed as the server was not synced with domain time (token failed).&lt;/p&gt;  &lt;p&gt;As always I hope this little post will save few hours to other developers / support engineers &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-4877655386731313085?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/4877655386731313085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=4877655386731313085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4877655386731313085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/4877655386731313085'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2008/08/failing-to-iterate-on-object-in-adam.html' title='Failing to iterate on object in ADAM (Suddenly)'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-3430288718500890085</id><published>2008-08-05T23:12:00.001-07:00</published><updated>2008-08-05T23:12:45.948-07:00</updated><title type='text'>SQL2005 and virtual machine environment</title><content type='html'>&lt;p&gt;As always I got a notification of new KB articles from &lt;a href="http://kbalertz.com/" target="_blank"&gt;KBAlertz&lt;/a&gt;, one of those KBs was &lt;a href="http://support.microsoft.com/kb/956262" target="_blank"&gt;956262&lt;/a&gt; that talks about the issue that SQL2005 was NOT tested on VM environment (although it seems as this market is gaining more and more market share) and the support is limited in that way that if you have an issue that is not resolved using regular support than you have to reproduce the issue on a NON VM environment&lt;/p&gt;  &lt;p&gt;I made a little search for some VMWare and SQL / Oracle articles and found some interesting:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.vmware.com/performance/2007/11/ten-reasons-why.html" target="_blank"&gt;Ten Reasons Why Oracle Databases Run Best on VMware&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.vmware.com/files/pdf/SQLServerWorkloads.pdf" target="_blank"&gt;SQL Server Performance in a VMware Infrastructure 3 Environment (PDF)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://scottf.wordpress.com/2007/02/09/sql-server-on-vmware-server/" target="_blank"&gt;SQL Server on VMware Server(From the other Scott blog)&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Now I ask you - isn't that weird, how can I even think of supporting this for other customers?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-3430288718500890085?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/3430288718500890085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=3430288718500890085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3430288718500890085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/3430288718500890085'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2008/08/sql2005-and-virtual-machine-environment.html' title='SQL2005 and virtual machine environment'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-5473170843559148863</id><published>2008-08-03T13:03:00.001-07:00</published><updated>2008-08-03T13:03:35.245-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMWare'/><title type='text'>VMware Infrastructure Toolkit 1.0 doesn't work for me</title><content type='html'>&lt;p&gt;Its funny how things comes together, a week a go I got a task to build automatic test for our deployment package.&lt;/p&gt;  &lt;p&gt;I designed the solution to include few components&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Sequencer - to run the entire script (&lt;a href="http://msdn.microsoft.com/en-us/library/0k6kkbsd.aspx" target="_blank"&gt;MSBUILD&lt;/a&gt; / &lt;a href="http://www.visualbuild.com/" target="_blank"&gt;Visual Build 6&lt;/a&gt;) - Done&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.autoitscript.com/autoit3/" target="_blank"&gt;AutoIt&lt;/a&gt; script - that will be able to take the package and choose all the relevant option and install it (we have lots of sub packages to choose from) - Done&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.vmware.com/" target="_blank"&gt;VM&lt;/a&gt; machine - that the above will run on from remote - Done&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Only things left to do is to glue all the components together and to enable the VM to return to its original state after installation so that the script will run again&lt;/p&gt;  &lt;p&gt;To manage the VM server I download &lt;a href="http://www.vmware.com/sdk/vitk_win/index.html" target="_blank"&gt;VI Toolkit&lt;/a&gt; (thanks to &lt;a href="http://blogs.msdn.com/powershell/archive/2008/07/31/vmware-powershell-cmdlets-released-and-opportunity-to-win.aspx" target="_blank"&gt;PowerShell blog&lt;/a&gt;) and started to test it &lt;strong&gt;&lt;u&gt;WITH NO LUCK&lt;/u&gt;&lt;/strong&gt;, I cant seem to understand why its not working although using the web services approach works.&lt;/p&gt;  &lt;p&gt;The error message that I get when trying to use any of the API after connecting is:&lt;/p&gt;  &lt;p&gt;PS C:\Windows\System32&amp;gt; get-vm   &lt;br /&gt;&lt;font color="#ff0000"&gt;Get-VM : Exception has been thrown by the target of an invocation.     &lt;br /&gt;At line:1 char:6      &lt;br /&gt;+ get-vm &amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Any one knows how can I debug it or even better what causes this?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-5473170843559148863?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/5473170843559148863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=5473170843559148863' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/5473170843559148863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/5473170843559148863'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2008/08/vmware-infrastructure-toolkit-10-doesn.html' title='VMware Infrastructure Toolkit 1.0 doesn&amp;#39;t work for me'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-8980834055723518164</id><published>2008-07-23T13:57:00.001-07:00</published><updated>2008-07-23T13:57:47.739-07:00</updated><title type='text'>Google lively</title><content type='html'>&lt;p&gt;while wondering in &lt;a href="http://labs.google.com/" target="_blank"&gt;Google labs&lt;/a&gt; I found a new service / application that they are working on that just came to the public called &lt;a href="http://www.lively.com/" target="_blank"&gt;Google Lively&lt;/a&gt; - yet another virtual world that allows you to create worlds / rooms and keep in touch (chat) in 3D with other people.&lt;/p&gt;  &lt;p&gt;It has many GUI features like adding furniture, clothes, etc&lt;/p&gt;  &lt;p&gt;Guess what it uses Microsoft &lt;a href="http://www.microsoft.com/SILVERLIGHT/" target="_blank"&gt;SilverLight&lt;/a&gt; .... just kidding.&lt;/p&gt;  &lt;p&gt;I have created a new room called &amp;quot;&lt;a href="http://www.lively.com/dr?rid=5693872211883964611" target="_blank"&gt;Israel Software Architects&lt;/a&gt;&amp;quot; see you their :)&lt;/p&gt;  &lt;p&gt;* one thing that amazed me is that the URL doesn't contain Google in it - Strange&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-8980834055723518164?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/8980834055723518164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=8980834055723518164' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8980834055723518164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/8980834055723518164'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2008/07/google-lively.html' title='Google lively'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-6459360682630225508</id><published>2008-07-22T23:22:00.001-07:00</published><updated>2008-07-22T23:22:01.217-07:00</updated><title type='text'>Debunking Common Refactoring Misconceptions - Myths</title><content type='html'>&lt;p&gt;Hi,&lt;/p&gt;  &lt;p&gt;I am subscribed to one magazine which is pretty nice called &lt;a href="http://www.infoq.com/"&gt;InfoQ&lt;/a&gt;, in that I found a good article called &amp;quot;&lt;a href="http://www.infoq.com/articles/RefactoringMyths"&gt;Debunking Common Refactoring Misconceptions&lt;/a&gt;&amp;quot; that I think you should read as it has some answers to couple Myths about Refactoring&lt;/p&gt;  &lt;p&gt;At least 50% of them I was personally asked about from time to time&amp;#8230;&lt;/p&gt;  &lt;p&gt;Comment here if you like it / not&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-6459360682630225508?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/6459360682630225508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=6459360682630225508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/6459360682630225508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/6459360682630225508'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2008/07/debunking-common-refactoring.html' title='Debunking Common Refactoring Misconceptions - Myths'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-7008714591119034455</id><published>2008-07-17T13:44:00.001-07:00</published><updated>2008-07-17T13:44:30.432-07:00</updated><title type='text'>HOWTO: Format a AQL syntax to be readable</title><content type='html'>&lt;p&gt;Let's say you are debugging some query that looks like this:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;SET TRANSACTION ISOLATION LEVEL Read uncommitted&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;SELECT TOP 100 s.sid as _sid, isnull(s.contact_id, -1) as _contact_id, s.start_time as _start_time, s.dbs_end_time as _dbs_end_time, s.end_time as _end_time, isnull(s.agent_id,-1) as _agent_id, s.direction as _direction, s.audio_ch_no as _channel_number, s.audio_module_no as _module_number, isnull(s.switch_id,-1) as _switch_id, s.dbs_id as _dbs_id, s.local_start_time as _local_start_time, s.local_end_time as _local_end_time, isnull(s.wrapup_time, -1) as _wrapup_time, isnull(u.user_name,'') as _user_name, isnull(c.number_of_conferences,-1) as _number_of_conferences, isnull(c.number_of_holds,-1) as _number_of_holds, isnull(c.number_of_transfers,-1) as _number_of_transfers, isnull(c.total_hold_time,-1) as _total_hold_time, (isnull(s.pbx_login_id,'')) as Agent, (isnull(s.ani,'')) as ANI, (isnull(spd.p1_value,'')) as CD1, (isnull(spd.p10_value,'')) as CD10, (isnull(spd.p11_value,'')) as CD11, (isnull(spd.p12_value,'')) as CD12, (isnull(spd.p13_value,'')) as CD13, (isnull(spd.p14_value,'')) as CD14, (isnull(spd.p15_value,'')) as CD15, (isnull(spd.p16_value,'')) as CD16, (isnull(spd.p17_value,'')) as CD17, (isnull(spd.p18_value,'')) as CD18, (isnull(spd.p19_value,'')) as CD19, (isnull(spd.p2_value,'')) as CD2, (isnull(spd.p20_value,'')) as CD20, (isnull(spd.p21_value,'')) as CD21, (isnull(spd.p22_value,'')) as CD22, (isnull(spd.p23_value,'')) as CD23, (isnull(spd.p24_value,-1)) as CD24, (isnull(spd.p25_value,-1)) as CD25, (isnull(spd.p26_value,'')) as CD26, (isnull(spd.p27_value,'')) as CD27, (isnull(spd.p28_value,'')) as CD28, (isnull(spd.p29_value,'')) as CD29, (isnull(spd.p3_value,'')) as CD3, (isnull(spd.p30_value,'')) as CD30, (isnull(spd.p31_value,'')) as CD31, (isnull(spd.p32_value,'')) as CD32, (isnull(spd.p33_value,'')) as CD33, (isnull(spd.p34_value,'')) as CD34, (isnull(spd.p35_value,'')) as CD35, (isnull(spd.p36_value,'')) as CD36, (isnull(spd.p37_value,'')) as CD37, (isnull(spd.p38_value,'')) as CD38, (isnull(spd.p39_value,'')) as CD39, (isnull(spd.p4_value,'')) as CD4, (isnull(spd.p40_value,'')) as CD40, (isnull(spd.p41_value,'')) as CD41, (isnull(spd.p42_value,'')) as CD42, (isnull(spd.p43_value,'')) as CD43, (isnull(spd.p44_value,'')) as CD44, (isnull(spd.p45_value,'')) as CD45, (isnull(spd.p46_value,'')) as CD46, (isnull(spd.p47_value,'')) as CD47, (isnull(spd.p48_value,'')) as CD48, (isnull(spd.p49_value,-1)) as CD49, (isnull(spd.p5_value,'')) as CD5, (isnull(spd.p50_value,-1)) as CD50, (isnull(spd.p51_value,'')) as CD51, (isnull(spd.p52_value,'')) as CD52, (isnull(spd.p53_value,'')) as CD53, (isnull(spd.p54_value,'')) as CD54, (isnull(spd.p55_value,'')) as CD55, (isnull(spd.p56_value,'')) as CD56, (isnull(spd.p57_value,'')) as CD57, (isnull(spd.p58_value,'')) as CD58, (isnull(spd.p59_value,'')) as CD59, (isnull(spd.p6_value,'')) as CD6, (isnull(spd.p60_value,'')) as CD60, (isnull(spd.p61_value,'')) as CD61, (isnull(spd.p62_value,'')) as CD62, (isnull(spd.p63_value,'')) as CD63, (isnull(spd.p64_value,'')) as CD64, (isnull(spd.p65_value,'')) as CD65, (isnull(spd.p66_value,'')) as CD66, (isnull(spd.p67_value,'')) as CD67, (isnull(spd.p68_value,'')) as CD68, (isnull(spd.p69_value,'')) as CD69, (isnull(spd.p7_value,'')) as CD7, (isnull(spd.p70_value,'')) as CD70, (isnull(spd.p71_value,'')) as CD71, (isnull(spd.p72_value,'')) as CD72, (isnull(spd.p73_value,'')) as CD73, (isnull(spd.p74_value,-1)) as CD74, (isnull(spd.p75_value,-1)) as CD75, (isnull(spd.p8_value,'')) as CD8, (isnull(spd.p9_value,'')) as CD9, (s.audio_ch_no) as Channel_Number, (Direction) as Direction, (isnull(s.dnis_code,'')) as DNIS, (isnull(s.duration,-1)) as Duration, (isnull(s.extension,-1)) as Extension, (isnull(c.is_exception,-1)) as Is_Exception, (s.audio_module_no) as Module_Number, (isnull(s.pcd1_value,-1)) as PCD1, (isnull(s.pcd10_value,-1)) as PCD10, (isnull(s.pcd11_value,-1)) as PCD11, (isnull(s.pcd12_value,-1)) as PCD12, (isnull(s.pcd13_value,-1)) as PCD13, (isnull(s.pcd14_value,-1)) as PCD14, (isnull(s.pcd15_value,-1)) as PCD15, (isnull(s.pcd2_value,-1)) as PCD2, (isnull(s.pcd3_value,-1)) as PCD3, (isnull(s.pcd4_value,-1)) as PCD4, (isnull(s.pcd5_value,-1)) as PCD5, (isnull(s.pcd6_value,-1)) as PCD6, (isnull(s.pcd7_value,-1)) as PCD7, (isnull(s.pcd8_value,-1)) as PCD8, (isnull(s.pcd9_value,-1)) as PCD9, (isnull(s.screens_module,-1)) as Screen_Unit, (isnull(s.switch_call_id,'')) as Switch_Call_ID&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;FROM Sessions_flat s WITH (NOLOCK) LEFT OUTER JOIN Sessions_pd_flat spd WITH (NOLOCK) ON s.sid = spd.sid and s.dbs_id = spd.dbs_id INNER JOIN Contacts c WITH (NOLOCK) ON s.contact_id = c.contact_id LEFT OUTER JOIN Users u WITH (NOLOCK) ON s.agent_id = u.user_id &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;WHERE&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ((((isnull(spd.p3_value,'') = 'CMGR_FAILPATTERN') OR (isnull(spd.p3_value,'') = 'CMGR_FAILDATA'))))&amp;#160; AND (s.local_start_time &amp;gt; '1900/01/01 00:00:00.000') AND (s.dbs_end_time &amp;gt;= '2004/05/01 00:00:00.000') AND (s.dbs_end_time &amp;lt;= '2008/07/17 01:06:01.170') AND (s.dbs_id = 1) AND (s.audio_module_no IN (14, 13, 12, 10, 9, 8, 7, 31, 30, 23, 22, 21, 20, 32, 62, 61, 60, 52, 51, 50, 71, 70, 120, 140, 150, 170, 160)) and sid = 25000006334 ORDER BY s.dbs_end_time&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;I guess one of the first things you are going to do, is to format it to be more readable (Manually).&lt;/p&gt;  &lt;p&gt;Take a look at &lt;a href="http://www.sqlinform.com/"&gt;SQLINFORM&lt;/a&gt; site that enables you to format the SQL syntax (automatically).&lt;/p&gt;  &lt;p&gt;The default end result is:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;SET TRANSACTION ISOLATION LEVEL Read uncommitted&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;SELECT&amp;#160; TOP 100 s.sid&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS _sid&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; isnull(s.contact_id, -1)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS _contact_id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; s.start_time&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS _start_time&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; s.dbs_end_time&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS _dbs_end_time&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; s.end_time&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS _end_time&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; isnull(s.agent_id,-1)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS _agent_id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; s.direction&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS _direction&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; s.audio_ch_no&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS _channel_number&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; s.audio_module_no&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS _module_number&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; isnull(s.switch_id,-1)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS _switch_id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; s.dbs_id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS _dbs_id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; s.local_start_time&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS _local_start_time&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; s.local_end_time&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS _local_end_time&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; isnull(s.wrapup_time, -1)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS _wrapup_time&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; isnull(u.user_name,'')&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS _user_name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; isnull(c.number_of_conferences,-1) AS _number_of_conferences,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; isnull(c.number_of_holds,&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -1) AS _number_of_holds&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; isnull(c.number_of_transfers,&amp;#160; -1) AS _number_of_transfers&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; isnull(c.total_hold_time,&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -1) AS _total_hold_time&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(s.pbx_login_id,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS Agent&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(s.ani,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS ANI&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p1_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p10_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD10&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p11_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD11&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p12_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD12&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p13_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD13&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p14_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD14&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p15_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD15&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p16_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD16&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p17_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD17&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p18_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD18&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p19_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD19&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p2_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p20_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD20&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p21_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD21&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p22_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD22&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p23_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD23&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p24_value,-1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD24&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p25_value,-1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD25&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p26_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD26&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p27_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD27&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p28_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD28&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p29_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD29&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p3_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p30_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD30&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p31_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD31&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p32_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD32&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p33_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD33&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p34_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD34&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p35_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD35&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p36_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD36&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p37_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD37&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p38_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD38&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p39_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD39&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p4_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD4&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p40_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD40&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p41_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD41&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p42_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD42&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p43_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD43&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p44_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD44&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p45_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD45&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p46_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD46&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p47_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD47&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p48_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD48&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p49_value,-1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD49&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p5_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD5&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p50_value,-1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD50&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p51_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD51&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p52_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD52&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p53_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD53&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p54_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD54&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p55_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD55&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p56_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD56&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p57_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD57&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p58_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD58&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p59_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD59&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p6_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD6&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p60_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD60&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p61_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD61&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p62_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD62&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p63_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD63&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p64_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD64&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p65_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD65&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p66_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD66&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p67_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD67&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p68_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD68&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p69_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD69&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p7_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD7&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p70_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD70&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p71_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD71&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p72_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD72&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p73_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD73&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p74_value,-1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD74&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p75_value,-1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD75&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p8_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD8&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(spd.p9_value,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS CD9&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (s.audio_ch_no)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS Channel_Number&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (Direction)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS Direction&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(s.dnis_code,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS DNIS&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(s.duration,&amp;#160;&amp;#160;&amp;#160; -1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS Duration&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(s.extension,&amp;#160;&amp;#160; -1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS Extension&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(c.is_exception,-1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS Is_Exception&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (s.audio_module_no)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS Module_Number&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(s.pcd1_value,&amp;#160;&amp;#160;&amp;#160; -1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS PCD1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(s.pcd10_value,&amp;#160;&amp;#160; -1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS PCD10&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(s.pcd11_value,&amp;#160;&amp;#160; -1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS PCD11&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(s.pcd12_value,&amp;#160;&amp;#160; -1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS PCD12&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(s.pcd13_value,&amp;#160;&amp;#160; -1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS PCD13&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(s.pcd14_value,&amp;#160;&amp;#160; -1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS PCD14&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(s.pcd15_value,&amp;#160;&amp;#160; -1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS PCD15&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(s.pcd2_value,&amp;#160;&amp;#160;&amp;#160; -1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS PCD2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(s.pcd3_value,&amp;#160;&amp;#160;&amp;#160; -1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS PCD3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(s.pcd4_value,&amp;#160;&amp;#160;&amp;#160; -1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS PCD4&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(s.pcd5_value,&amp;#160;&amp;#160;&amp;#160; -1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS PCD5&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(s.pcd6_value,&amp;#160;&amp;#160;&amp;#160; -1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS PCD6&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(s.pcd7_value,&amp;#160;&amp;#160;&amp;#160; -1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS PCD7&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(s.pcd8_value,&amp;#160;&amp;#160;&amp;#160; -1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS PCD8&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(s.pcd9_value,&amp;#160;&amp;#160;&amp;#160; -1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS PCD9&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(s.screens_module,-1))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS Screen_Unit&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (isnull(s.switch_call_id,''))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AS Switch_Call_ID&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;FROM&amp;#160;&amp;#160;&amp;#160; Sessions_flat s WITH (NOLOCK)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LEFT OUTER JOIN Sessions_pd_flat spd WITH (NOLOCK)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ON&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; s.sid&amp;#160;&amp;#160;&amp;#160; = spd.sid&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AND s.dbs_id = spd.dbs_id&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; INNER JOIN Contacts c WITH (NOLOCK)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ON&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; s.contact_id = c.contact_id&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LEFT OUTER JOIN Users u WITH (NOLOCK)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ON&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; s.agent_id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; = u.user_id&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;WHERE ((((isnull(spd.p3_value,'') = 'CMGR_FAILPATTERN')&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; OR (isnull(spd.p3_value,'')&amp;#160; = 'CMGR_FAILDATA'))))&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160; AND (s.local_start_time&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;gt; '1900/01/01 00:00:00.000')&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160; AND (s.dbs_end_time&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;gt;= '2004/05/01 00:00:00.000')&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160; AND (s.dbs_end_time&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;= '2008/07/17 01:06:01.170')&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160; AND (s.dbs_id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; = 1)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160; AND (s.audio_module_no&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IN (14, 13, 12, 10, 9, 8, 7, 31, 30, 23, 22, 21, 20, 32, 62, 61, 60, 52, 51, 50, 71, 70, 120, 140, 150, 170, 160))&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&amp;#160;&amp;#160; AND sid&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; = 25000006334&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;ORDER BY s.dbs_end_time&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Now let's see you saying &amp;#8211; I don&amp;#8217;t understand this query :)&lt;/p&gt;  &lt;p&gt;There are other sites and utilities but this one is working great.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.davidovitz.org/PublicBlogItems/original.txt" target="_blank"&gt;Download original query&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.davidovitz.org/PublicBlogItems/formatted.txt" target="_blank"&gt;Download formatted query&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-7008714591119034455?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/7008714591119034455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=7008714591119034455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/7008714591119034455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/7008714591119034455'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2008/07/howto-format-aql-syntax-to-be-readable.html' title='HOWTO: Format a AQL syntax to be readable'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-2294693071932127618</id><published>2008-06-08T14:04:00.001-07:00</published><updated>2008-06-08T14:07:02.407-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Velocity'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><category scheme='http://www.blogger.com/atom/ns#' term='MemCached'/><title type='text'>Distributed caches - "Velocity" = New and promising, "MemCached" = Old and mature</title><content type='html'>&lt;p&gt;Hi,&lt;/p&gt;  &lt;p&gt;See below for information about the two products,&lt;/p&gt;  &lt;h5&gt;&lt;u&gt;Microsoft Velocity (New and promising)&lt;/u&gt; &amp;#8211; &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=B24C3708-EEFF-4055-A867-19B5851E7CD2"&gt;CTP1 available now&lt;/a&gt;&lt;/h5&gt;  &lt;p&gt;&amp;quot;Velocity&amp;quot; is a distributed in-memory application cache platform for developing scalable, high-performance applications. &amp;quot;Velocity&amp;quot; can be used to cache any CLR object and provides access through simple APIs. The primary goals for &amp;quot;Velocity&amp;quot; are performance, scalability and availability.&lt;/p&gt;  &lt;h5&gt;&lt;u&gt;Danga Memcached (Old and mature)&lt;/u&gt;&lt;/h5&gt;  &lt;p&gt;&lt;tt&gt;memcached&lt;/tt&gt; is a high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.     &lt;br /&gt;&lt;a href="http://www.danga.com/"&gt;Danga Interactive&lt;/a&gt; developed &lt;tt&gt;memcached&lt;/tt&gt; to enhance the speed of &lt;a href="http://www.livejournal.com/"&gt;LiveJournal.com&lt;/a&gt;, a site which was already doing 20 million+ dynamic page views per day for 1 million users with a bunch of web servers and a bunch of database servers. &lt;tt&gt;memcached&lt;/tt&gt; dropped the database load to almost nothing, yielding faster page load times for users, better resource utilization, and faster access to the databases on a memcache miss.&lt;/p&gt;  &lt;p&gt;Velocity's final release is due to be release early next year, while MemCache is already available and working &amp;#224; Dilemma.&lt;/p&gt;  &lt;p&gt;Few starting points&lt;/p&gt;  &lt;p&gt;&amp;#183; &lt;a href="http://www.danga.com/memcached/"&gt;Official MemCached site&lt;/a&gt; (Simple)&lt;/p&gt;  &lt;p&gt;&amp;#183; &lt;a href="http://www.slideshare.net/acme/scaling-with-memcached"&gt;Presentation about usage of memcached&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#183; &lt;a href="http://msdn.microsoft.com/en-us/library/cc645013.aspx"&gt;Velocity overview&lt;/a&gt; (Good one)&lt;/p&gt;  &lt;p&gt;&amp;#183; &lt;a href="http://msdn.microsoft.com/en-us/data/cc655792.aspx"&gt;Official Velocity Site&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#183; &lt;a href="http://www.hanselman.com/blog/HanselminutesPodcast116DistributedCachingWithMicrosoftsVelocity.aspx"&gt;Hanselminutes Podcast 116 - Distributed Caching with Microsoft's Velocity&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#183; &lt;a href="http://blogs.msdn.com/velocity"&gt;Velocity blog&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;With regards,&lt;/p&gt;  &lt;p&gt;Davidovitz&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-2294693071932127618?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/2294693071932127618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=2294693071932127618' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/2294693071932127618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/2294693071932127618'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2008/06/distributed-caches-new-and-promising.html' title='Distributed caches - &amp;quot;Velocity&amp;quot; = New and promising, &amp;quot;MemCached&amp;quot; = Old and mature'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-7768979101339037646</id><published>2008-04-26T13:23:00.001-07:00</published><updated>2008-04-26T13:31:35.256-07:00</updated><title type='text'>A bit longer code BUT a lot shorter to debug (using the logs)</title><content type='html'>&lt;p&gt;Today I got a phone call from our support tier describing me a failed use case and providing me with the exception from our log.&lt;/p&gt;  &lt;p&gt;The exception looked something like this (faked):&lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;   &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; Unhandled Exception: System.ArgumentException: An item with the same key has already been added.&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt;    at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;    at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;, Boolean add)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;    at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;    at BetterException.TwoWayDictionary`2.Add(T key, K &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; D:\DavidovitzSVN\Sample\BetterException\Program.cs:line 27&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;    at BetterException.Program.Main(String[] args) &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; D:\DavidovitzSVN\Sample\BetterException\Program.cs:line 16&lt;/pre&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;In first look of it I couldn't understand what is the failing area (because I remember that the class uses more than one dictionary) :( &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The class that the exception occurs in looks like this:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;&lt;br /&gt;  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; TwoWayDictionary&amp;lt;T, K&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;  &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; Dictionary&amp;lt;T, K&amp;gt; m_A2B = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Dictionary&amp;lt;T, K&amp;gt;();&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;  &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; Dictionary&amp;lt;K, T&amp;gt; m_B2A = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Dictionary&amp;lt;K, T&amp;gt;();&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;  &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Add(T key, K &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;  {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;   m_A2B.Add(key, &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;   m_B2A.Add(&lt;span style="color: #0000ff"&gt;value&lt;/span&gt;, key);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;  }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;  &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Add_2(T key, K &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt;  {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt;   {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt;    m_A2B.Add(key, &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  15:&lt;/span&gt;   }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  16:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (ArgumentException e)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  17:&lt;/span&gt;   {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  18:&lt;/span&gt;    &lt;span style="color: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ArgumentException(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #006080"&gt;&amp;quot;Dictionary A2B already contain '{0}'&amp;quot;&lt;/span&gt;, key), e);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  19:&lt;/span&gt;   }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  20:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  21:&lt;/span&gt;   {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  22:&lt;/span&gt;    m_B2A.Add(&lt;span style="color: #0000ff"&gt;value&lt;/span&gt;, key);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  23:&lt;/span&gt;   }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  24:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (ArgumentException e)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  25:&lt;/span&gt;   {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  26:&lt;/span&gt;    &lt;span style="color: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ArgumentException(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #006080"&gt;&amp;quot;Dictionary B2A already contain '{0}'&amp;quot;&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;), e);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  27:&lt;/span&gt;   }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  28:&lt;/span&gt;  }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  29:&lt;/span&gt;  &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; K GetValueByKey(T key)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  30:&lt;/span&gt;  {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  31:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; m_A2B[key];&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  32:&lt;/span&gt;  }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  33:&lt;/span&gt;  &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; T GetKeyByValue(K &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  34:&lt;/span&gt;  {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  35:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; m_B2A[&lt;span style="color: #0000ff"&gt;value&lt;/span&gt;];&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  36:&lt;/span&gt;  }   &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  37:&lt;/span&gt; }&lt;/pre&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;As you can see the method uses two dictionaries, so without looking at the source (and line of exception) I cant say what is the problematic argument / dictionary.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I have created a new method named &amp;quot;Add_2&amp;quot; which is a simple refactor of the code that I have wrapped every operation on the dictionary with try and catch and a simple new argument exception that gives a context to the problem when it occurs.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So running the following code:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;&lt;br /&gt;  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Main(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;  TwoWayDictionary&amp;lt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;gt; NameValueDictionary = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; TwoWayDictionary&amp;lt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;gt;();&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;  NameValueDictionary.Add_2(1, &lt;span style="color: #006080"&gt;&amp;quot;Ran&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;  NameValueDictionary.Add_2(2, &lt;span style="color: #006080"&gt;&amp;quot;Nir&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;  NameValueDictionary.Add_2(3, &lt;span style="color: #006080"&gt;&amp;quot;Revital&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;  NameValueDictionary.Add_2(4, &lt;span style="color: #006080"&gt;&amp;quot;Revital&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt; }&lt;/pre&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Will give the following exception:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;&lt;br /&gt;  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; Unhandled Exception: System.ArgumentException: Dictionary B2A already contain &lt;span style="color: #006080"&gt;'Revital'&lt;/span&gt; ---&amp;gt; System.ArgumentException: An item with the same key has already bee&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; n added.&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;    at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;    at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;, Boolean add)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;    at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;    at BetterException.TwoWayDictionary`2.Add_2(T key, K &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; D:\DavidovitzSVN\Sample\BetterException\Program.cs:line 41&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;    --- End of inner exception stack trace ---&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;    at BetterException.TwoWayDictionary`2.Add_2(T key, K &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; D:\DavidovitzSVN\Sample\BetterException\Program.cs:line 45&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;    at BetterException.Program.Main(String[] args) &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; D:\DavidovitzSVN\Sample\BetterException\Program.cs:line 16&lt;/pre&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So now I know the exact failing dictionary and key without looking at the code and you know what even better the support tier can know this also without contacting me (and who knows maybe they will fix it :) )&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Method &amp;quot;Add_2&amp;quot; is only a simple implementation and its only for explanation purposes (there are other methods to add context to the exception).&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Make sure that end user doesn't see your exceptions as this is a security issues (in my case the exceptions are logged)&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;You can &lt;a href="http://www.davidovitz.org/PublicBlogItems/BetterException.zip" target="_blank"&gt;download the code also here&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I think Dictionary class should have done a better job and describe the exception better, Don you?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-7768979101339037646?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/7768979101339037646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=7768979101339037646' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/7768979101339037646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/7768979101339037646'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2008/04/bit-longer-code-but-lot-shorter-to.html' title='A bit longer code BUT a lot shorter to debug (using the logs)'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19117963.post-2924937600240827388</id><published>2008-03-08T13:04:00.001-08:00</published><updated>2008-03-08T13:04:54.173-08:00</updated><title type='text'>Internet Explorer Application Compatibility VPC Image page was updated to include IE8</title><content type='html'>&lt;p&gt;Microsoft has updated their &amp;quot;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=21EABB90-958F-4B64-B5F1-73D0A413C8EF&amp;amp;displaylang=en" target="_blank"&gt;Internet Explorer Application Compatibility VPC Image&lt;/a&gt;&amp;quot; page to include an &lt;a href="http://www.microsoft.com/downloads/info.aspx?na=46&amp;amp;p=5&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=21eabb90-958f-4b64-b5f1-73d0a413c8ef&amp;amp;u=http://download.microsoft.com/download/b/7/2/b72085ae-0f04-4c6f-9182-bf1ee90f5273/IE8_VPC.EXE" target="_blank"&gt;IE8 VPC&lt;/a&gt; version.&lt;/p&gt;  &lt;p&gt;No need to destroy your own computer :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19117963-2924937600240827388?l=davidovitz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://davidovitz.blogspot.com/feeds/2924937600240827388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19117963&amp;postID=2924937600240827388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/2924937600240827388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19117963/posts/default/2924937600240827388'/><link rel='alternate' type='text/html' href='http://davidovitz.blogspot.com/2008/03/internet-explorer-application.html' title='Internet Explorer Application Compatibility VPC Image page was updated to include IE8'/><author><name>Ran Davidovitz</name><uri>http://www.blogger.com/profile/04728100184410610704</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://photos1.blogger.com/hello/4/8735/400/DSC00612.jpg'/></author><thr:total>0</thr:total></entry></feed>
