<?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-5177305310827978243</id><updated>2012-01-25T12:57:43.201+02:00</updated><category term='media player'/><category term='flash'/><category term='wmp'/><category term='xaml'/><category term='tools'/><category term='Live apps'/><category term='command-line tips'/><category term='WIF'/><category term='VISTA'/><category term='owc'/><category term='kalteswasser'/><category term='Windows Server 2008'/><category term='datamining'/><category term='skype'/><category term='storage'/><category term='url-rewrite'/><category term='events'/><category term='ObjectDataSource'/><category term='RIA'/><category term='Visual Studio 2010'/><category term='worker role'/><category term='dhtml'/><category term='Windows Phone'/><category term='firefox'/><category term='spy'/><category term='Visual Studio 2008'/><category term='webcast'/><category term='plugin'/><category term='tips'/><category term='wss'/><category term='Unity'/><category term='SQL Azure'/><category term='video'/><category term='.net'/><category term='services'/><category term='Windows Azure'/><category term='EntLib'/><category term='database'/><category term='wysiwyg'/><category term='Windows Azure Storage Services'/><category term='iis'/><category term='web role'/><category term='mysql'/><category term='CSS'/><category term='formsauthentication'/><category term='silverlight'/><category term='Azure ACS'/><category term='azure'/><category term='tutorial'/><category term='custom error handlers'/><category term='ffmpeg'/><category term='Hyper-V'/><category term='rolemanager'/><category term='sql server'/><category term='networking'/><category term='ie'/><category term='DEV10'/><category term='oracle'/><category term='misc'/><category term='visual studio'/><category term='C#'/><category term='regex'/><category term='PHP'/><category term='print'/><category term='msxml6'/><category term='SqlAzure'/><category term='sql'/><category term='WCF'/><category term='mod_rewrite'/><category term='asp.net'/><category term='fun'/><category term='JavaScript'/><title type='text'>Anton Staykov's Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blogs.staykov.net/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default?start-index=101&amp;max-results=100'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>117</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-700451236881044925</id><published>2011-12-17T15:42:00.001+02:00</published><updated>2011-12-17T16:00:13.361+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web role'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure ACS'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure Storage Services'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='storage'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='worker role'/><title type='text'>Windows Azure basics (part 1 of n)</title><content type='html'>&lt;p&gt;We live in dynamic times. Buzzwords such as cloud computing, elastic scale, reliability and their synonyms are taking more and more space in our daily life. People (developers) want to move to the cloud. They are often confused by all the new terms. In this part 1 of [we-will-see-at-the-end-how-many] articles I will try to explain with non-geeky words the &lt;a href="http://www.microsoft.com/windowsazure/" target="_blank"&gt;Windows Azure&lt;/a&gt; terms.&lt;/p&gt; &lt;p&gt;First of all, what is &lt;a href="http://en.wikipedia.org/wiki/Cloud_computing" target="_blank"&gt;Cloud Computing&lt;/a&gt; before all? This is when Computing power (namely CPU, RAM, Storage, Networking) is delivered as a service via a network (usually internet), and not as a product (a server that we buy).&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;Cloud computing is a marketing term for technologies that provide computation, software, data access, and storage services that do not require end-user knowledge of the physical location and configuration of the system that delivers the services. A parallel to this concept can be drawn with the &lt;/em&gt;&lt;a href="http://en.wikipedia.org/wiki/Electricity_grid"&gt;&lt;em&gt;electricity grid&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, wherein end-users consume power without needing to understand the component devices or infrastructure required to provide the service.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;So what is &lt;a href="http://www.windowsazure.com/" target="_blank"&gt;Windows Azure&lt;/a&gt;? Is it the new server operating system from Microsoft? Is it the new hosting solution? Is it the new workstation OS? Well, &lt;a href="http://www.windowsazure.com/" target="_blank"&gt;Windows Azure&lt;/a&gt; is the Microsoft’s Cloud Computing platform. It delivers various cloud services. &lt;a href="http://www.windowsazure.com/en-us/home/tour/compute/" target="_blank"&gt;Compute&lt;/a&gt;, &lt;a href="http://www.windowsazure.com/en-us/home/tour/database/" target="_blank"&gt;Database&lt;/a&gt;, &lt;a href="http://www.windowsazure.com/en-us/home/tour/storage/" target="_blank"&gt;Storage&lt;/a&gt;, &lt;a href="http://www.windowsazure.com/en-us/home/tour/cdn/" target="_blank"&gt;CDN&lt;/a&gt;, &lt;a href="http://www.windowsazure.com/en-us/home/tour/caching/" target="_blank"&gt;Caching&lt;/a&gt;, &lt;a href="http://www.windowsazure.com/en-us/home/tour/access-control/" target="_blank"&gt;Access Control&lt;/a&gt; to name few.&lt;/p&gt; &lt;p&gt;Next part of the article will be focusing on &lt;a href="http://www.windowsazure.com/en-us/home/tour/compute/" target="_blank"&gt;Windows Azure Compute&lt;/a&gt; services.&lt;/p&gt; &lt;p&gt;Windows Azure Guest OS? When we talk about cloud computing, inevitably we talk about &lt;a href="http://en.wikipedia.org/wiki/Hardware_virtualization" target="_blank"&gt;virtualization&lt;/a&gt;. Virtualization at very big degree. And when we talk about virtualization, we have a &lt;a href="http://en.wikipedia.org/wiki/Hardware_virtualization" target="_blank"&gt;Host OS&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Hardware_virtualization" target="_blank"&gt;Guest OS&lt;/a&gt;. When we talk about Windows Azure OS, we talk about Windows Azure Guest OS. This is the operating system that is installed on the Virtual Machines that run in the cloud. Windows Azure Guest OS has 2 families – OS Family 1 and OS Family 2. Windows Azure Guest OS Family 1 is based on Windows Server 2008 SP 1 x64, and Family 2 is based on Windows Server 2008 R2. All and any guest OS is 64 bits. You can get the full list of Windows Azure Guest OS &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/ee924680.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Windows Azure Cloud Service, or &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/gg432976.aspx" target="_blank"&gt;Hosted Service&lt;/a&gt;. The Hosted Service is the essence of your Cloud application:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;A hosted service in Windows Azure consists of an application that is designed to run in the hosted service and XML configuration files that define how the hosted service should run&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;A hosted service can have one or more &lt;strong&gt;Roles&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;Now it comes to the &lt;strong&gt;&lt;em&gt;Roles&lt;/em&gt;&lt;/strong&gt;. Our cloud application can be a Web Based application, or a background processing application, or some legacy application which is hard to migrate. Or mix of the three. In order to make things easy for developers, Microsoft has defined 3 distinguished types of “Roles” – Web Role, Worker Role and VM Role. You can read a bit more for the “Role”s &lt;a href="http://www.windowsazure.com/en-us/home/tour/compute/" target="_blank"&gt;here&lt;/a&gt;. But the main idea is that a Role defines an application living environment. The Role contains all the code that our application consists of. It defines the environment where our application will live – how many CPUs will be installed; the amount of RAM installed; volume of local storages; will it be a full IIS or a background worker; will it be Windows Azure Guest OS 1.x or 2.x; will it has open ports for communication with outer world (i.e. tcp port 80 for Web Role); will it has some internal TCP ports open for internal communication between roles; what certificates will the environment has; environment variables; etc.&lt;/p&gt; &lt;p&gt;The Role is like a template for our cloud application. When we configure our Cloud Service (or Azure Hosted Service), we set the number of &lt;strong&gt;&lt;em&gt;instances&lt;/em&gt;&lt;/strong&gt; involved for each Role.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Instance&lt;/em&gt;&lt;/strong&gt; is a single Virtual Machine (VM), which has all the properties defined by the &lt;strong&gt;&lt;em&gt;Role&lt;/em&gt;&lt;/strong&gt; and has our application code deployed. When I mentioned that the Role defines the number of CPUs, RAM, local storage, I was referring the configuration for each VM where our code will be deployed. There are couple (5) of predefined VM configuration which we can use:&lt;/p&gt; &lt;p&gt; &lt;table class="tbl-standard" border="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;th&gt;Virtual Machine Size&lt;/th&gt; &lt;th&gt;CPU Cores&lt;/th&gt; &lt;th&gt;Memory&lt;/th&gt; &lt;th&gt;Cost Per Hour&lt;/th&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Extra Small&lt;/td&gt; &lt;td&gt;Shared&lt;/td&gt; &lt;td&gt;768 MB&lt;/td&gt; &lt;td&gt;$0.04&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Small&lt;/td&gt; &lt;td&gt;1&lt;/td&gt; &lt;td&gt;1.75 GB&lt;/td&gt; &lt;td&gt;$0.12&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Medium&lt;/td&gt; &lt;td&gt;2&lt;/td&gt; &lt;td&gt;3.5 GB&lt;/td&gt; &lt;td&gt;$0.24&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Large&lt;/td&gt; &lt;td&gt;4&lt;/td&gt; &lt;td&gt;7 GB&lt;/td&gt; &lt;td&gt;$0.48&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Extra Large&lt;/td&gt; &lt;td&gt;8&lt;/td&gt; &lt;td&gt;14 GB&lt;/td&gt; &lt;td&gt;$0.96&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt; &lt;p&gt;More information on Virtual Machine sizes can be found &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/ee814754.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;And here comes the beauty of the Cloud. We code once. We set the overall parameters once. And we deploy once! If it comes that we need more servers – we just set the number of &lt;strong&gt;&lt;em&gt;instances&lt;/em&gt;&lt;/strong&gt; for our role. We do it live. There is no downtime. Windows Azure automatically will launch as many VMs as we requested. Will configure them for our application and will deploy our code in each and every one of them and will finally join them to the cluster of our highly available and reliable cloud application. When we don’t need (let’s say) 10 servers anymore, then we can easily instruct Windows Azure that we only need 2 from now on and that’s it. The cloud will automatically shutdown 8 servers and remove them, so we won’t be paying any more extra money.&lt;/p&gt; &lt;p&gt;It is important to note, though, that the &lt;strong&gt;Role&lt;/strong&gt; defines the &lt;strong&gt;size of the VM&lt;/strong&gt; for all the &lt;strong&gt;Instances&lt;/strong&gt; of it. We cannot have instances of same &lt;strong&gt;Role&lt;/strong&gt; but different &lt;strong&gt;VM size&lt;/strong&gt;. This is by design. If we defined our &lt;strong&gt;Role&lt;/strong&gt; to use &lt;strong&gt;Extra Large VM&lt;/strong&gt;, then all the instances we have will be running on that size of VM.&lt;/p&gt; &lt;h3&gt;Key takeaways&lt;/h3&gt; &lt;p&gt;I hope that this article helped you understand couple of basic terms about Windows Azure. You shall be able to confidently answer the following questions:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;What is Windows Azure ?&lt;/li&gt; &lt;li&gt;What is Windows Azure Hosted Service (or just Hosted Service)?&lt;/li&gt; &lt;li&gt;What is a Role?&lt;/li&gt; &lt;li&gt;What is a Role Instance (or just Instance)?&lt;/li&gt;&lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-700451236881044925?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=700451236881044925&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/700451236881044925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/700451236881044925'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/12/windows-azure-basics-part-1-of-n.html' title='Windows Azure basics (part 1 of n)'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-3027750102424701767</id><published>2011-12-14T13:06:00.001+02:00</published><updated>2011-12-14T13:06:57.532+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Azure'/><title type='text'>Optimize your database cursors (considering SQL Azure)</title><content type='html'>&lt;p&gt;Yeah, I know most of the DBAs (if not all) say to avoid using cursors in your SQL Server code, but there are still some things, which you can only achieve via cursors. You can read a lot discussions on whether to use cursors or not, is it good, is it bad. &lt;/p&gt; &lt;p&gt;My post is not about arguing what is good and what is bad. My post is about a tiny little option, which, if your logic allows you can use to optimize how your cursor works.&lt;/p&gt; &lt;p&gt;So we are using cursors, for good or bad. Everything might work just fine if we are using on-premise SQL Server, and if the server is not under heavy load. Our stored procedures, which are using cursors are executing in a matter of seconds. There is nothing unusual. We deploy our application to &lt;a href="http://www.windowsazure.com/" target="_blank"&gt;The Cloud&lt;/a&gt;. And of course we utilize &lt;a href="http://www.windowsazure.com/en-us/home/tour/database/" target="_blank"&gt;SQL Azure&lt;/a&gt; as our DB backend. Now strange things begin happening. Our stored procedures crash with timeout exceptions. If we login to the server and use the good “&lt;a href="http://sqlserverplanet.com/dmv-queries/a-better-sp_who2-using-dmvs-sp_who3/" target="_blank"&gt;sp_who3&lt;/a&gt;” (yes, this works in &lt;a href="http://www.windowsazure.com/en-us/home/tour/database/" target="_blank"&gt;SQL Azure&lt;/a&gt;!) to see the processes running, we notice that some procedures do report a&amp;nbsp; &lt;a href="http://msdn.microsoft.com/en-us/library/ms179984.aspx" target="_blank"&gt;SOS_SCHEDULER_YIELD&lt;/a&gt;. You can read a lot of information on what does that mean. As by definition:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;Occurs when a task voluntarily yields the scheduler for other tasks to execute. During this wait the task is waiting for its quantum to be renewed.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Most of the resources you will find explaining what does lot of SOS_SCHEDULER_YIELD mead, will suggest high CPU load, non-optimized queries, etc. But we look at our code and there is nothing unusual. Also, as this is SQL Azure, we can’t see the actual CPU load of the OS. We can’t add more CPU or more RAM. What do we do now ?&lt;/p&gt; &lt;p&gt;Well, review once again our cursor logic! If it is the case that we only read from the cursor’s data. We only read forward, never backward. We never change cursor’s data (update/delete). Then there is a pretty good chance that we can use the &lt;a href="http://msdn.microsoft.com/en-us/library/ms180169.aspx" target="_blank"&gt;FAST_FORWARD&lt;/a&gt; keyword when declaring our cursors:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;Specifies a FORWARD_ONLY, READ_ONLY cursor with performance optimizations enabled. FAST_FORWARD cannot be specified if SCROLL or FOR_UPDATE is also specified.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;It is amazing performance booster and load relief! And we, most probably, will never see again the SOS_SCHEDULER_YIELD process status for our procedures.&lt;/p&gt; &lt;p&gt;Most (if not all) of the cursors I’ve written are never reading backward or updating data, so I pretty amazed to see the performance differences using this keyword. I for sure will use it from now on, whenever possible!.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-3027750102424701767?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=3027750102424701767&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3027750102424701767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3027750102424701767'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/12/optimize-your-database-cursors.html' title='Optimize your database cursors (considering SQL Azure)'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-3686901100196342476</id><published>2011-12-05T10:20:00.001+02:00</published><updated>2011-12-05T10:20:59.454+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Azure ACS'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure Storage Services'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Microsoft Windows Azure gets ISO/IEC 27001:2005 certification</title><content type='html'>&lt;p&gt;It’s a great step toward proving that Microsoft is reliable cloud partner, to announce that Microsoft has passed &lt;a href="http://en.wikipedia.org/wiki/ISO/IEC_27001" target="_blank"&gt;ISO/IEC 27001:2005&lt;/a&gt; certification. It is very strong information security certification which proves that our data is securely and reliably stored in the cloud. &lt;/p&gt; &lt;p&gt;You can find the official certificate on the certification authority’ &lt;a href="http://www.bsigroup.com/en/Assessment-and-certification-services/Client-directory/CertificateClient-Directory-Search-Results/?pg=1&amp;amp;searchkey=standardXeqXISO/IEC%2027001XandXcompanyXeqXMicrosoft" target="_blank"&gt;website here&lt;/a&gt;. As you can read the scope of the certification is as follows:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;The Information Security Management System for Microsoft Windows Azure including development, operations and support for the compute, storage (XStore), virtual network and virtual machines services, in accordance with Windows Azure ISMS statement of applicability dated September 28, 2011. The ISMS meets the criteria of ISO/IEC 27001:2005 ISMS requirements Standard.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Meaning that &lt;a href="http://www.microsoft.com/windowsazure/sqlazure/" target="_blank"&gt;SQL Azure&lt;/a&gt;, &lt;a href="http://www.microsoft.com/windowsazure/features/cdn/" target="_blank"&gt;CDN&lt;/a&gt;, &lt;a href="http://www.microsoft.com/windowsazure/features/accesscontrol/" target="_blank"&gt;ACS&lt;/a&gt;, &lt;a href="http://www.microsoft.com/windowsazure/features/caching/" target="_blank"&gt;Caching&lt;/a&gt; and &lt;a href="http://www.microsoft.com/windowsazure/features/servicebus/" target="_blank"&gt;Service Bus&lt;/a&gt; services are not yet covered by this certification. But I believe it is work in progress and very soon we will see update on that part. Yet, the most important part – where our code resides (Compute) and where our data live(storage) is covered.&lt;/p&gt; &lt;p&gt;You can read the original blog post by &lt;a href="http://blogs.msdn.com/b/plankytronixx/archive/2011/12/03/windows-azure-is-now-iso-27001-compliant.aspx" target="_blank"&gt;Steve Plank here&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;As there are some additional steps, the full information about this certification will become available in January 2012. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-3686901100196342476?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=3686901100196342476&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3686901100196342476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3686901100196342476'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/12/microsoft-windows-azure-gets-isoiec.html' title='Microsoft Windows Azure gets ISO/IEC 27001:2005 certification'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-4520350914507951776</id><published>2011-10-23T00:37:00.001+02:00</published><updated>2011-10-24T09:31:26.028+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unity'/><category scheme='http://www.blogger.com/atom/ns#' term='EntLib'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Unity Windows Azure Settings Injector</title><content type='html'>&lt;p&gt;This is my first combined &lt;a href="http://uasi.codeplex.com/" target="_blank"&gt;CodePlex&lt;/a&gt; / &lt;a href="http://nuget.org/List/Packages/UASI" target="_blank"&gt;NuGet package&lt;/a&gt; contribution. This small piece of code is meant to help those of you who are using Unity as Policy Injection / DI framework and are considering moving to the cloud. &lt;/p&gt; &lt;p&gt;This project includes auto resolver for following &lt;a href="http://www.microsoft.com/windowsazure/" target="_blank"&gt;Windows Azure&lt;/a&gt; Configuration Settings:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;LocalStorage  &lt;li&gt;Setting (both string setting and Azure Storage Connection string)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The source code is located at CodePlex: &lt;a href="http://uasi.codeplex.com"&gt;http://uasi.codeplex.com&lt;/a&gt; while the single line installation is located at &lt;a href="http://nuget.org/List/Packages/UASI" target="_blank"&gt;NuGet&lt;/a&gt;: &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;PM&amp;gt; Install-Package UASI&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;The NuGet package will automatically add references to Unity assemblies (if not already added), to UASI assembly, and will make necessary configuration changes to your web.config / app.config file. It will also add (commented out) the following simple usage scenario for your project:&lt;/p&gt;&lt;pre style="line-height: normal; font-family: ; background: #22282a; color: "&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&lt;font style="font-size: 9.8pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;unity&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&amp;nbsp;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;xmlns&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;http://schemas.microsoft.com/practices/2010/unity&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;br&gt;   &amp;lt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;sectionExtension&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&amp;nbsp;&lt;br&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;     type&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;Unity.AzureSetting.Injector.SectionExtensionInitiator, UASI&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#66747b"&gt; Bellow is sample usage of package –&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;container&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;       &amp;lt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;register&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&amp;nbsp;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;IStorageHelper&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&amp;nbsp;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;mapTo&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;StorageHelper&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;br&gt;         &amp;lt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;lifetime&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&amp;nbsp;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;singleton&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt; /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;constructor&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;param&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&amp;nbsp;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;name&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;connectionString&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;azureSetting&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;font color="#f1f2f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;key&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;font color="#f1f2f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;ConnectionString&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt; /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;param&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;constructor&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;property&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&amp;nbsp;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;name&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;RootFolderName&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;azureSetting&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&amp;nbsp;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;key&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;LocalStore&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&amp;nbsp;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;type&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;LocalStorage&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt; /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;property&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;register&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;container&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;br&gt;&amp;lt;/&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;unity&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Hope that it will work smoothly with your projects!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;What to expect:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In the project roadmap are implementations for IPEndPoint resolver (for both Internal / External EndPoints) and some real sample usage showcase. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Stay tuned for updates.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-4520350914507951776?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=4520350914507951776&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/4520350914507951776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/4520350914507951776'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/10/unity-windows-azure-settings-injector.html' title='Unity Windows Azure Settings Injector'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-5273815411979792476</id><published>2011-10-21T13:15:00.001+02:00</published><updated>2011-10-24T09:35:02.187+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>ServiceReference.ClientConfig build management in Silverlight projects</title><content type='html'>&lt;p&gt;I’ve &lt;a href="http://blogs.staykov.net/2011/06/windows-azure-configuration-settings.html" target="_blank"&gt;blogged a before&lt;/a&gt; for web.config transformations and how I would like to see them in other projects. While for &lt;a href="http://www.microsoft.com/windowsazure/" target="_blank"&gt;Windows Azure&lt;/a&gt; cloud service project &lt;a href="http://blogs.staykov.net/2011/08/windows-azure-configuration-settings.html" target="_blank"&gt;there is already similar feature implemented&lt;/a&gt;, I wonder why there is no out of the box support for other project types.&lt;/p&gt; &lt;p&gt;Here I will reveal the powerful, yet simple implementation of such transformation over your ServiceReferences.ClientConfig files. Thus you will no longer wonder what are your service endpoints, and which endpoint you are using. And this is not Windows Azure specific. It is relevant for any Silverlight project.&lt;/p&gt; &lt;p&gt;Just implement these simple steps:&lt;/p&gt; &lt;p&gt;1. Edit your .csproj file of the Silverlight application. Add the following block:&lt;/p&gt;&lt;pre style="line-height: normal; font-family: ; background: #22282a; color: "&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&lt;font style="font-size: 9.8pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;UsingTask&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&amp;nbsp;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;TaskName&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;TransformXml&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;br&gt;&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;AssemblyFile&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt; /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;Target&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&amp;nbsp;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;Name&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;BeforeBuild&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;br&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;           Condition&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;exists('ServiceReferences.$(Configuration).ClientConfig')&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#66747b"&gt; Generate transformed app config in the intermediate directory –&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;     &amp;lt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;TransformXml&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&amp;nbsp;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;Source&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;ServiceReferences.ClientConfig&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;font color="#f1f2f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;Destination&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;$(TargetDir)\ServiceReferences.ClientConfig&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;font color="#f1f2f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;Transform&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;ServiceReferences.$(Configuration).ClientConfig&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt; /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#66747b"&gt; Force build process to use the transformed configuration file from now on. –&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;ItemGroup&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;Content&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&amp;nbsp;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;Remove&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;ServiceReferences.ClientConfig&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;/&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;       &amp;lt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;ContentWithTargetPath&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&amp;nbsp;&lt;br&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;             Include&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;$(TargetDir)\ServiceReferences.ClientConfig&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;          &amp;lt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;TargetPath&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#ffffff"&gt;ServiceReferences.ClientConfig&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&amp;lt;/&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;TargetPath&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;ContentWithTargetPath&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;ItemGroup&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;Target&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;right after:&lt;/p&gt;&lt;pre style="line-height: normal; font-family: ; background: #22282a; color: "&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&lt;font style="font-size: 9.8pt"&gt; &amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;Import&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&amp;nbsp;&lt;br&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;Project&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt; /&amp;gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;2. Add new XML file to your project. Name it &lt;strong&gt;&lt;font color="#ffc000"&gt;ServiceReferences.[BuildConfiguration].ClientConfig&lt;/font&gt;&lt;/strong&gt;. Where [BuildConfiguration] can be the name of *any* build configurations you have defined for your project. The default build configurations are “Debug” and “Release”, but you may add as many as you like, to suit your development/testing/staging/live environments. Remember to set “Build Action” to “None”, and “Copy to output directory” to “Never”:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src="https://sn2files.storage.live.com/y1p0XFMEhUIhgX4zeeiVIK462DMoJmZXpiWsAwgunNGbYugGWlDlEPAetbH7RwW1emF8Gq_A7kyTdY/ServiceReferences.png?psid=1"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;3. Add the required content in that custom file. For example, if you want to just change an endpoint for a service, you will have something like this (&lt;font color="#ffc000"&gt;ServiceReferences.Debug.ClientConfig&lt;/font&gt;):&lt;/p&gt;&lt;pre style="line-height: normal; font-family: ; background: #22282a; color: "&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&lt;font style="font-size: 9.8pt"&gt;&amp;lt;?&lt;/font&gt;&lt;/font&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;xml&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&amp;nbsp;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;version&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;1.0&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&amp;nbsp;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;encoding&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;utf-8&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;?&amp;gt;&lt;br&gt;&amp;lt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;configuration&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;font color="#f1f2f3"&gt;&amp;nbsp; &lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;xmlns:xdt&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;http://schemas.microsoft.com/XML-Document-Transform&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;system.serviceModel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;client&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;endpoint&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&amp;nbsp;&lt;br&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;               address&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;http://127.0.0.1:81/DummyService.svc&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;br&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#678cb1"&gt;               xdt:Transform&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;=&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ec7600"&gt;SetAttributes&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#00ff00"&gt;"&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt; /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;client&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;system.serviceModel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#93c763"&gt;configuration&lt;/font&gt;&lt;/span&gt;&lt;font color="#f1f2f3"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;For more information on XML transformations supported, please take a look at the &lt;a href="http://go.microsoft.com/fwlink/?LinkId=125889" target="_blank"&gt;MSDN documentation for Web.Config transformations&lt;/a&gt;. Do not panic! The documentation is for “web.config” transformations, but these are just XML transformations that can transform any XML file &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://lh3.ggpht.com/-LIHBhKahPSQ/TqFUafvQcGI/AAAAAAAAAfk/3nB2Z6wMXKI/wlEmoticon-winkingsmile%25255B2%25255D.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/5177305310827978243-5273815411979792476?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=5273815411979792476&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5273815411979792476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5273815411979792476'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/10/servicereferenceclientconfig-build.html' title='ServiceReference.ClientConfig build management in Silverlight projects'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-LIHBhKahPSQ/TqFUafvQcGI/AAAAAAAAAfk/3nB2Z6wMXKI/s72-c/wlEmoticon-winkingsmile%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-3534631831957305824</id><published>2011-10-21T12:52:00.001+02:00</published><updated>2011-10-21T12:52:00.543+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure Storage Services'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Move Silverlight applications to the Cloud</title><content type='html'>&lt;p&gt;While moving a typical ASP.NET application to the cloud might require more actions, and would have more “points of break” when moving to the cloud, a Silverlight application is much more amenable to move to the Cloud.&lt;/p&gt; &lt;p&gt;At last Windows Azure User group meeting we covered most common scenarios of Silverlight applications and moved them to &lt;a href="http://www.microsoft.com/windowsazure/" target="_blank"&gt;Windows Azure&lt;/a&gt;. We had a Silverlight application communicating with WCF Services, application that uses WCF RIA services, and application that uses Media services (video player). We moved entire application into the cloud and showed how one can leverage the &lt;a href="http://www.microsoft.com/windowsazure/features/cdn/" target="_blank"&gt;Windows Azure CDN&lt;/a&gt; to achieve better user experience in terms of application load.&lt;/p&gt; &lt;p&gt;Here you can find the source files for the Demos I used: &lt;a title="http://bit.ly/okjFNn" href="http://bit.ly/okjFNn"&gt;http://bit.ly/okjFNn&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Here you can find the slides: &lt;a title="http://bit.ly/nugWoP" href="http://bit.ly/nugWoP"&gt;http://bit.ly/nugWoP&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The TCP Server I used for the demos is based on “&lt;a href="http://bit.ly/bHEGkv" target="_blank"&gt;A very basic TCP Server written in C#&lt;/a&gt;” article in &lt;a href="http://www.codeproject.com/" target="_blank"&gt;CodeProject&lt;/a&gt;. Second TCP demo (SilverCloudBase_05_Sockets_Adv) is a bit edited version of that server, to support message broadcasting to all connected clients.&lt;/p&gt; &lt;p&gt;The session recording will be available soon, so stay tuned!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-3534631831957305824?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=3534631831957305824&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3534631831957305824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3534631831957305824'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/10/move-silverlight-applications-to-cloud.html' title='Move Silverlight applications to the Cloud'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-3338940353358111793</id><published>2011-10-13T22:56:00.001+02:00</published><updated>2011-10-13T22:56:40.598+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SqlAzure'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Upcoming features for SQL Azure</title><content type='html'>&lt;p&gt;Some amazing news has been announced recently at SQL PASS conference.&lt;/p&gt; &lt;p&gt;Key announcements on SQL Azure included the availability of new CTPs for SQL Azure Reporting and SQL Azure Data Sync (now publicly available), as well as a look at the upcoming Q4 2011 Service Release for SQL Azure.&amp;nbsp; &lt;p&gt;According the &lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2011/10/13/just-announced-at-sql-pass-summit-2011-upcoming-increased-database-limits-amp-sql-azure-federation-immediate-availability-of-two-new-sql-azure-ctps.aspx" target="_blank"&gt;post from Windows Azure Team&lt;/a&gt;, the SQL Azure Q4 2011 Service Release will be available by end of 2011 and is aimed at simplifying elastic scale out needs. &lt;p&gt;Key features include: &lt;ul&gt; &lt;li&gt;The maximum database size for individual SQL Azure databases will be expanded 3x from 50 GB to 150 GB. &lt;li&gt;Federation. With SQL Azure Federation, databases can be elastically scaled out using the sharding database pattern based on database size and the application workload.&amp;nbsp; This new feature will make it dramatically easier to set up sharding, automate the process of adding new shards, and provide significant new functionality for easily managing database shards. &lt;li&gt;New SQL Azure Management Portal capabilities.&amp;nbsp; The service release will include an enhanced management portal with significant new features including the ability to more easily monitor databases, drill-down into schemas, query plans, spatial data, indexes/keys, and query performance statistics. &lt;li&gt;Expanded support for user-controlled collations.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Read more details &lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2011/10/13/just-announced-at-sql-pass-summit-2011-upcoming-increased-database-limits-amp-sql-azure-federation-immediate-availability-of-two-new-sql-azure-ctps.aspx" target="_blank"&gt;here&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2011/10/13/announcing-sql-azure-reporting-preview-release.aspx" target="_blank"&gt;here&lt;/a&gt; (SQL Azure Reporting CTP) or &lt;a href="http://www.sqlpass.org/summit/2011/Live/LiveStreaming.aspx" target="_blank"&gt;watch the Keynote from the conference&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/5177305310827978243-3338940353358111793?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=3338940353358111793&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3338940353358111793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3338940353358111793'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/10/upcoming-features-for-sql-azure.html' title='Upcoming features for SQL Azure'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-7806251799324604628</id><published>2011-10-13T02:20:00.001+02:00</published><updated>2011-10-13T02:20:14.766+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Phone'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Clouds are coming to Seattle next month</title><content type='html'>&lt;p&gt;&lt;b&gt;Technical Content&lt;/b&gt;&lt;b&gt;, &lt;/b&gt;&lt;b&gt;Technical Experts&lt;/b&gt; &lt;p&gt;The &lt;a href="http://www.seattleinteractive.com/conference/cloud-experience"&gt;Cloud Experience track&lt;/a&gt; at &lt;a href="http://www.seattleinteractive.com/" target="_blank"&gt;SIC&lt;/a&gt; is for experienced developers who want to learn how to leverage the cloud for mobile, social and web app scenarios.&amp;nbsp; No matter what platform or technology you choose to develop for, these sessions will provide you with a deeper understanding of cloud architecture, back end services and business models so you can scale for user demand and grow your business. &lt;p&gt;&lt;b&gt;&lt;a href="http://seattleinteractive.eventbrite.com/"&gt;Register today&lt;/a&gt; using the promo code “azure 200” and attend SIC for only $150 (a $200 savings).&lt;/b&gt; &lt;ul&gt; &lt;li&gt;Attend a full day of technical sessions and learn more about leveraging the cloud for mobile, web and social scenarios. View the list of confirmed &lt;a href="http://www.seattleinteractive.com/conference/speakers/cld"&gt;Cloud Experience speakers&lt;/a&gt;.&amp;nbsp; Sessions include: &lt;ul&gt; &lt;li&gt;Great Mobile Apps Make Money – Intro to Cloud Experience Track &lt;li&gt;Mobile + Cloud, Building Mobile Applications with Windows Azure &lt;li&gt;Zero to Hero: Windows Phone, Android, iOS Development in the Cloud &lt;li&gt;Building Web Applications with Windows Azure &lt;li&gt;Building Social Games on Windows Azure &lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Cloud Experience speakers and technical experts will be available to provide technical assistance and resources for developing, deploying and managing mobile, social and web apps in the cloud. &lt;a name="cloudtopics"&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;b&gt;&lt;a href="http://www.seattleinteractive.com/"&gt;Seattle Interactive Conference (SIC):&lt;/a&gt;&lt;/b&gt;&lt;b&gt; &lt;/b&gt;November 2-3, 2011, The Conference Center at WSCC&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-7806251799324604628?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=7806251799324604628&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/7806251799324604628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/7806251799324604628'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/10/clouds-are-coming-to-seattle-next-month.html' title='Clouds are coming to Seattle next month'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-6767956794097244995</id><published>2011-10-04T10:10:00.001+02:00</published><updated>2011-10-04T10:10:05.613+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WIF'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure ACS'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Slides and Recording from last user group meeting / Identity and Access Control in the Cloud</title><content type='html'>&lt;p&gt;Hello all. Last weekend we had a great cross-user-group sessions and party at Bansko, Bulgaria. Here we have 8 user group focused on various Microsoft Technologies. I, particularly, am engaged with the &lt;a href="http://www.azure.bg/" target="_blank"&gt;Windows Azure User Group Bulgaria&lt;/a&gt; and was talking on Identity and Access Control in the Cloud. It was very good talk and very good audience. The slides can be viewed/downloaded &lt;a href="https://skydrive.live.com/view.aspx?cid=1BCE1D5766DF232B&amp;amp;resid=1BCE1D5766DF232B%21587"&gt;here&lt;/a&gt;. While I had the good intend to stream live over Live Meeting, there were some technical problem outside of what could be solved, but I made a recording using &lt;a href="http://www.techsmith.com/camtasia/"&gt;Camtasia Studio&lt;/a&gt; from &lt;a href="http://www.techsmith.com/"&gt;TechSmith&lt;/a&gt;. You can download full-sized video from &lt;a href="http://azure.bg/events/bansko_ug_20111001/HighQuality/IdentityAccessControl_Bansko_20111001.mp4"&gt;here&lt;/a&gt;, and I also made a &lt;a href="http://azure.bg/events/bansko_ug_20111001/LowQuality/IdentityAccessControl_Bansko_20111001.mp4"&gt;lower quality video&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Looking forward for our next meeting, which will be held soon and the topic will be interested to most Web and Silverlight developers considering moving to the cloud.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-6767956794097244995?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=6767956794097244995&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6767956794097244995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6767956794097244995'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/10/slides-and-recording-from-last-user.html' title='Slides and Recording from last user group meeting / Identity and Access Control in the Cloud'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-2683347465990902109</id><published>2011-10-03T07:29:00.001+02:00</published><updated>2011-10-03T07:29:11.081+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Windows Azure SDK 1.5 Update released!</title><content type='html'>&lt;p&gt;It appeared that there is a bug in the Windows Azure SDK 1.5, which was released in September after &lt;a href="http://www.buildwindows.com/"&gt;Build Conference&lt;/a&gt;. The development team has been working hard to provide a fix for &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2011/09/28/blob-download-bug-in-windows-azure-sdk-1-5.aspx"&gt;this issue&lt;/a&gt;. You can read more about the issue &lt;a href="http://blogs.msdn.com/b/avkashchauhan/archive/2011/10/01/windows-azure-sdk-1-5-update-released-previous-1-5-20830-1814-latest-1-5-20928-1904.aspx"&gt;here&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2011/09/28/blob-download-bug-in-windows-azure-sdk-1-5.aspx"&gt;here&lt;/a&gt;, and download the new update from &lt;a href="http://www.microsoft.com/windowsazure/sdk/"&gt;here&lt;/a&gt; (just click “Get Tools and SDK”).&lt;/p&gt; &lt;p&gt;Note, that this is just an update, you do not need to uninstall v.1.5 of the SDK to apply this update. But you’ll have to update the reference to &lt;em&gt;Microsoft.WindowsAzure.StorageClient.dll&lt;/em&gt;  in all your projects that were upgraded to v.1.5.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-2683347465990902109?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=2683347465990902109&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/2683347465990902109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/2683347465990902109'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/10/windows-azure-sdk-15-update-released.html' title='Windows Azure SDK 1.5 Update released!'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-336361805362121034</id><published>2011-09-26T20:47:00.001+02:00</published><updated>2011-09-26T20:48:42.675+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure Storage Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Geo-Replication for your Windows Azure Storage accounts at no cost!</title><content type='html'>&lt;p&gt;Amazing news came from the BUILD conference. One such news is the great new feature of &lt;a href="http://www.microsoft.com/windowsazure/features/storage/"&gt;Windows Azure Storage&lt;/a&gt; – &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2011/09/15/introducing-geo-replication-for-windows-azure-storage.aspx"&gt;Geo-Replication for your data at&lt;strong&gt; *no additional cost&lt;/strong&gt;&lt;/a&gt;*!&lt;/p&gt; &lt;p&gt;Isn’t it great? Out of the box, without additional cost, Microsoft is maintaining additional copy of all your storage data in another data-center in same region. For example if you selected West Europe for your storage account location, the geo-replica is kept in North Europe! Everything is done without breaking the current Windows Azure Storage services durability. Understand that there the multiple (&lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/12/30/windows-azure-storage-architecture-overview.aspx"&gt;likely 3&lt;/a&gt;!) copies of your data at both data centers! Hundreds of kilometers away. At no cost (0 Euro)! So in case a major disaster event happens in your “primary” datacenter, all of your data is recoverable at the second one!&lt;/p&gt; &lt;p&gt;All of this – for durability! Make sure you won’t lose any data stored in Windows Azure Storage! &lt;/p&gt; &lt;p&gt;No, currently you can’t use the secondary copy of your data, you don’t even see this in the management portal. So you can’t use this feature for geo-distributed application! But hey, there is the &lt;a href="http://www.microsoft.com/windowsazure/features/cdn/"&gt;Windows Azure CDN&lt;/a&gt; to fulfill that purpose!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-336361805362121034?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=336361805362121034&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/336361805362121034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/336361805362121034'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/09/geo-replication-for-your-windows-azure.html' title='Geo-Replication for your Windows Azure Storage accounts at no cost!'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-6362861466385239641</id><published>2011-09-15T08:21:00.001+02:00</published><updated>2011-09-15T08:21:00.883+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Windows Azure Development Cookbook by Neil Mackenzie</title><content type='html'>&lt;p&gt;&lt;a href="http://www.packtpub.com/microsoft-windows-azure-development-cookbook/book"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 5px 10px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="2220EN_Microsoft Windows Azure Development Cookbook_cov" border="0" alt="2220EN_Microsoft Windows Azure Development Cookbook_cov" align="left" src="http://lh3.ggpht.com/-LkbdWCXA3HQ/TnGZTBkhclI/AAAAAAAAAeU/oYYWc_Rqk8E/2220EN_Microsoft%252520Windows%252520Azure%252520Development%252520Cookbook_cov%25255B3%25255D.jpg?imgmax=800" width="199" height="244"&gt;&lt;/a&gt;Recently a new book on Windows Azure was published: &lt;a href="http://www.packtpub.com/microsoft-windows-azure-development-cookbook/book"&gt;Windows Azure Development Cookbook&lt;/a&gt;! And it’s not yet another book on the subject! The great about this book is that its author is a fellow Azure MVP - &lt;a href="http://convective.wordpress.com/"&gt;Neil Mackenzie&lt;/a&gt; and the team of technical reviewers include &lt;a href="http://brentdacodemonkey.wordpress.com/"&gt;Brent Stineman&lt;/a&gt;, another great name on the Windows Azure arena.&amp;nbsp; Both of them are amongst the top answerers in the Windows Azure forums, so be sure that this book includes a lot of gems from both real-world Azure application development, and real-world questions and answers. The fabulous world we live in, allows us to get this book in a format for variety of e-book readers so we can have it us wherever we go! Another good reading for any Azure enthusiast!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-6362861466385239641?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=6362861466385239641&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6362861466385239641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6362861466385239641'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/09/windows-azure-development-cookbook-by.html' title='Windows Azure Development Cookbook by Neil Mackenzie'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-LkbdWCXA3HQ/TnGZTBkhclI/AAAAAAAAAeU/oYYWc_Rqk8E/s72-c/2220EN_Microsoft%252520Windows%252520Azure%252520Development%252520Cookbook_cov%25255B3%25255D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-5461077922062277511</id><published>2011-09-15T07:50:00.001+02:00</published><updated>2011-09-15T08:04:11.085+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Windows Azure SDK 1.5 / Windows Azure Tools for Visual Studio 1.5</title><content type='html'>&lt;p&gt;It’s great time, and it will become even greater! The new &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=27422"&gt;Windows Azure SDK 1.5 and Windows Azure Tools for Visual Studio 2010&lt;/a&gt; are already LIVE! You can download it directly from the inline link (&lt;a title="http://www.microsoft.com/download/en/details.aspx?id=27422" href="http://www.microsoft.com/download/en/details.aspx?id=27422"&gt;http://www.microsoft.com/download/en/details.aspx?id=27422&lt;/a&gt;) or use the Web Platform Installer. Another exciting release is the &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=27421"&gt;Windows Azure AppFabric SDK 1.5&lt;/a&gt;!&lt;/p&gt; &lt;p&gt;Amongst all the new goodies in Windows Azure SDK are:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Re-architected emulator, which enables higher fidelity between local and cloud developments.  &lt;li&gt;Support for uploading service certificates in csupload.exe.  &lt;li&gt;A new csencrypt.exe tool to manage remote desktop encryption passwords.  &lt;li&gt;Enhancements in the Windows Azure Tools for Visual Studio for developing and deploying cloud applications.  &lt;li&gt;The ability to create ASP.NET MVC3 Web Roles and manage multiple service configurations in one cloud project.  &lt;li&gt;Improved validation of Windows Azure packages to catch common errors like missing .NET assemblies and invalid connection strings. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Even greater news is the totally new and fresh &lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2011/09/14/announcing-the-windows-azure-toolkit-for-windows-8.aspx"&gt;Windows Azure Toolkit for Windows 8&lt;/a&gt;! &lt;/p&gt; &lt;p&gt;You can read the full story here: &lt;a title="http://blogs.msdn.com/b/windowsazure/archive/2011/09/14/just-announced-build-new-windows-azure-toolkit-for-windows-8-windows-azure-sdk-1-5-geo-replication-for-azure-storage-and-more.aspx" href="http://blogs.msdn.com/b/windowsazure/archive/2011/09/14/just-announced-build-new-windows-azure-toolkit-for-windows-8-windows-azure-sdk-1-5-geo-replication-for-azure-storage-and-more.aspx"&gt;http://blogs.msdn.com/b/windowsazure/archive/2011/09/14/just-announced-build-new-windows-azure-toolkit-for-windows-8-windows-azure-sdk-1-5-geo-replication-for-azure-storage-and-more.aspx&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/5177305310827978243-5461077922062277511?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=5461077922062277511&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5461077922062277511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5461077922062277511'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/09/windows-azure-sdk-15-windows-azure.html' title='Windows Azure SDK 1.5 / Windows Azure Tools for Visual Studio 1.5'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-2706759686183033091</id><published>2011-08-17T09:50:00.001+02:00</published><updated>2011-08-23T15:00:22.305+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Windows Azure Configuration Settings per build configuration (2)</title><content type='html'>&lt;p&gt;It was not too long ago when I &lt;a href="http://blogs.staykov.net/2011/06/windows-azure-configuration-settings.html"&gt;blogged&lt;/a&gt; about how to configure your Cloud Service project to respect build configurations and transform your CSCFG file based on this.&lt;/p&gt; &lt;p&gt;Things change though! The Windows Azure team is not sleeping and is constantly improving the development experience for the platform. One of the new features introduced with the latest &lt;a href="http://www.microsoft.com/windowsazure/sdk/"&gt;Windows Azure Tools for Visual Studio 2010 (August 2011 update)&lt;/a&gt; is the Configurations manager:&lt;/p&gt; &lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1p8Y044ljaprs5y8xbcwOL9Jd2bfIwNirOe5g_Gl7C9xPuyMZH5TjmhTA6zCBx__3njd1k29LzXbntrIddZpPu7Q/ConfigurationManager1.png?psid=1"&gt;&lt;/p&gt; &lt;p&gt;This new manager allows you to keep more than one service configuration! Please remember that Service Configuration is not Service Definition! You still have the single Service Definition, but you can have multiple Service Configurations. Using it is so easy. Just right click on your Cloud project and select “Manage Configurations”:&lt;/p&gt; &lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1p8Y044ljaprvVDevliYyQTupAZytGlIyjiSN5VFfQI43doFsnLU9KeAT9VuN3BcK4Zu-ZJ7qY8Tj7zHm0MVPxNQ/ConfigurationManager2.png?psid=1"&gt;&lt;/p&gt; &lt;p&gt;There are additional options in the typical Role configuration screens, so you can manage the configuration settings per configuration:&lt;/p&gt; &lt;p&gt;&lt;img src="https://sn2files.storage.live.com/y1prWi1ipjCkGodL-W4XsnAnu6YVX_pXVK4odMboZM5it31BVqBybMuYDaFnCWBln9DD70uGDpnzfg/ConfigurationManager5.png?psid=1"&gt;&lt;/p&gt; &lt;p&gt;For each configuration you create, the manager automatically adds a configuration file to the project. Naming convention follows the naming convention of the Web Projects we used to see:&lt;/p&gt; &lt;p&gt;&lt;img src="https://sn2files.storage.live.com/y1pF1mEdlG4RI-WvkTTcQ144nzJiWKHdzdfTNN63SJWpclPJXQmJ0GDRwuOZ2-Cb4UdIDGjDwUi7Pg/ConfigurationManager3.png?psid=1"&gt;&lt;/p&gt; &lt;p&gt;Now, when you deploy your cloud project, the Publish screen had some more features, and one of them is a drop down menu with all configurations you have:&lt;/p&gt; &lt;p&gt;&lt;img src="https://sn2files.storage.live.com/y1pF1mEdlG4RI_LhZjtC670-7WzZAsNBoB8k7U7WWX_l0GI44FxvTdFo_D0AG0Kg12Ml2pvvl1njIA/ConfigurationManager4.png?psid=1"&gt;&lt;/p&gt; &lt;p&gt;You may also have noticed that right from the Publish screen, there is also an option to chose the Build Configuration.&lt;/p&gt; &lt;p&gt;Although this is a great step toward making developer’s life easier I would set a couple of cons for this new feature:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strike&gt;There is no option to choose which configuration to use when debugging. If you use the default configuration files, which are created with a new project, then the “.Local.cscfg” is automatically used when using local compute emulator. But if you have existing project and you add new service configuration, then the original one, or the “Default” is used. “Default” configuration is the one that has no addition extension (i.e. ServiceConfiguration.cscfg)&lt;/strike&gt;  &lt;li&gt;We are forced to maintain two copies of the same file (Configuration settings). For me particularly mine approach before this tools update was better, in terms that you had to only put changes in different configuration files and not maintain the full set of properties.  &lt;li&gt;This totally concerns mine project which still had mine transformations left and using the new tools, but having only single configuration in the Configuration Manager: the deployment did not take mine transformed file, but the original configuration file which was defined in the Configuration Manager! So be warned: if you were using the configuration transformation solution from my previous blog post, remove it and use the new Configuration Manager instead!&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;2011-08-23&lt;/strong&gt; Update on the first bullet:&lt;br&gt;&lt;strong&gt;There is&lt;/strong&gt; an option to choose which configuration to be active during development/debugging. You need to go to Properties for the Cloud project, then select the “Development” tab. And there you will see similar screen with options to select which will be the “development/debugging” configuration:&lt;/p&gt; &lt;p&gt;&lt;img src="https://sn2files.storage.live.com/y1p0H-y1fL4uj54xwSjnCC2dJhU8CY2QHRU3AbrsoeFJ_QF-vOKvlZ1Z6MJYVcLM5KUFpjdGdf54Xk/RunningConfig.png?psid=1"&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-2706759686183033091?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=2706759686183033091&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/2706759686183033091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/2706759686183033091'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/08/windows-azure-configuration-settings.html' title='Windows Azure Configuration Settings per build configuration (2)'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-2739227527429919276</id><published>2011-06-23T09:07:00.001+02:00</published><updated>2011-06-23T09:07:50.280+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>All ingress traffic in Windows Azure is free from 1st of July</title><content type='html'>&lt;p&gt;It is an amazing news for everyone benefiting the &lt;a href="http://www.windowsazure.com/" target="_blank"&gt;Windows Azure&lt;/a&gt; platform! Starting July the first&amp;nbsp; all ingress (inbound) traffic will be free! No time restrictions (off-peak, on-peak), no geographic restrictions, all (inbound) traffic will be free of charge!&lt;/p&gt; &lt;p&gt;The original information source is here: &lt;a title="http://blogs.msdn.com/b/windowsazure/archive/2011/06/22/announcing-free-ingress-for-all-windows-azure-customers-starting-july-1st-2011.aspx" href="http://blogs.msdn.com/b/windowsazure/archive/2011/06/22/announcing-free-ingress-for-all-windows-azure-customers-starting-july-1st-2011.aspx"&gt;http://blogs.msdn.com/b/windowsazure/archive/2011/06/22/announcing-free-ingress-for-all-windows-azure-customers-starting-july-1st-2011.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Go and enjoy cloud development with &lt;a href="http://www.windowsazure.com/" target="_blank"&gt;Windows Azure&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/5177305310827978243-2739227527429919276?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=2739227527429919276&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/2739227527429919276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/2739227527429919276'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/06/all-ingress-traffic-in-windows-azure-is.html' title='All ingress traffic in Windows Azure is free from 1st of July'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-5412722503456353059</id><published>2011-06-13T23:31:00.001+02:00</published><updated>2011-06-13T23:31:50.760+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Windows Azure Configuration Settings per build configuration</title><content type='html'>&lt;p&gt;Don’t you like the neat feature that web projects have – applying different configuration settings based on build configuration? If you create a new Web Application project, you surely have noticed the 3 web.config files – web.config, web.debug.config &amp;amp; web.release.config. This is a feature of web projects, which uses nice xml transform task to shape your final web.config file according to your build configuration:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-OLRoHL6e8EU/TfaBw8y0DhI/AAAAAAAAAdc/gwlhGNED2cs/s1600-h/WebConfings%25255B2%25255D.png"&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="WebConfings" border="0" alt="WebConfings" src="http://lh4.ggpht.com/-diTA09D_F4s/TfaBxdyEfRI/AAAAAAAAAdg/WpUahFWCnQA/WebConfings_thumb.png?imgmax=800" width="244" height="239"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;For instance you put your development connection string in your web.config file, and you put your production environment in your web.release.config file. Now you don’t have to manually edit the web.config when you deploy. Just build in Release configuration and you are ready!&lt;/p&gt; &lt;p&gt;Now, don’t you want to have something like that, but for your ServiceConfiguration.cscfg in your Cloud Service (Azure) project? I want! Here are the steps you have to follow to achieve this:&lt;/p&gt; &lt;p&gt;Full source code for the given sample can be downloaded from &lt;a href="http://cid-1bce1d5766df232b.office.live.com/self.aspx/.Public/Azure/AzureSettingsSample.zip" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;1. Open the folder for your CloudService Project and manually add the new config file (i.e. ServiceConfiguration.Release.cscfg) (we will edit this file later). You have to do this because you can’t just Add New File to this project. The project template for Cloud Service project does not allow you to do so.&lt;/p&gt; &lt;p&gt;2. Unload your Cloud Service project and select “Edit XXXX.ccproj”&lt;/p&gt; &lt;p&gt;3. You have to manually include the ServiceConfiguration.Release.cscfg file to the project. So locate the ItemGroup section where your project files are included:&lt;/p&gt;&lt;pre style="line-height: normal; font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.8pt"&gt;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;ItemGroup&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;ServiceDefinition&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Include&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;ServiceDefinition.csdef&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt; /&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;ServiceConfiguration&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Include&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;ServiceConfiguration.cscfg&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt; /&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;ItemGroup&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 9.8pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;And add the new file within that ItemGroup section:&lt;/p&gt;&lt;pre style="line-height: normal; font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.8pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;None&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Include&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;ServiceConfiguration.Release.cscfg&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt; /&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;4. Navigate to the last line, just before &lt;/p&gt;&lt;pre style="line-height: normal; font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.8pt"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Project&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt; and after&lt;/p&gt;&lt;pre style="line-height: normal; font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.8pt"&gt; &amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Import&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Project&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;$(CloudExtensionsDir)Microsoft.CloudService.targets&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt; /&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Now add the following code:&lt;/p&gt;&lt;pre style="line-height: normal; font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.8pt"&gt;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;UsingTask&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;TaskName&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;TransformXml&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;AssemblyFile&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt; /&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;PropertyGroup&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;ServiceConfigurationTransform&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;ServiceConfiguration.$(Configuration).cscfg&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;ServiceConfigurationTransform&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;PropertyGroup&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Target&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Name&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;TransformServiceConfiguration&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;BeforeTargets&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;CopyServiceDefinitionAndConfiguration&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Condition&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;exists('$(ServiceConfigurationTransform)')&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#008000"&gt; Generate transformed service config in the intermediate directory &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;--&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TransformXml&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Source&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;@(ServiceConfiguration)&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Destination&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;$(IntermediateOutputPath)%(Filename)%(Extension)&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Transform&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;$(ServiceConfigurationTransform)&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt; /&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#008000"&gt;Force build process to use the transformed configuration file from now on.&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;--&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;ItemGroup&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;ServiceConfiguration&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Remove&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;ServiceConfiguration.cscfg&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt; /&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;ServiceConfiguration&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Include&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;$(IntermediateOutputPath)ServiceConfiguration.cscfg&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt; /&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;ItemGroup&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Target&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 9.8pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;5. Save and close the ccproj file, and reload your project.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;6. Now lets edit the ServiceConfiguration.Release.cscfg file. Let’s assume we have a “MySetting” configuration setting which we want to alter based on build configuration. Then edit the .Release.cscfg file as follows:&lt;/p&gt;&lt;pre style="line-height: normal; font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.8pt"&gt;&amp;lt;?&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;xml&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;version&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;1.0&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;encoding&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;utf-8&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;?&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;sc:ServiceConfiguration&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;serviceName&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;AzureSettingsSample&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;"&lt;br /&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;xmlns:sc&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font color="#000000"&gt;"&lt;br /&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;xmlns:xdt&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;http://schemas.microsoft.com/XML-Document-Transform&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;sc:Role&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;name&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;SimpleWorker&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;xdt:Locator&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Match(name)&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;sc:ConfigurationSettings&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;sc:Setting&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;name&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;MySetting&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;value&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Release&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;font color="#000000"&gt;"&lt;br /&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;xdt:Transform&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;SetAttributes&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;xdt:Locator&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;Match(name)&lt;/font&gt;&lt;/span&gt;&lt;font color="#000000"&gt;"&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt; /&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;sc:ConfigurationSettings&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;nbsp; &amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;sc:Role&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;sc:ServiceConfiguration&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 9.8pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;The additional namespace declaration is required so that the TransformXml task recognizes the nodes and attributes.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Voilah! You can change as many settings as you would like, and never mess with commenting out production settings, or forget to change the “usedevelopmentstorage=true” diagnostics connection string!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The only thing you have to remember is that you have edit the ccproj file each time you add new build configuration and want to include new ServiceConfiguration.BuildConfig.cscfg file. You can have as many as you would like. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Credits go to &lt;a href="http://www.olegsych.com/2010/12/config-file-transformation/" target="_blank"&gt;Oleg Sych’s post&lt;/a&gt; on configuration settings.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Again, the full source code can be downloaded from &lt;a href="http://cid-1bce1d5766df232b.office.live.com/self.aspx/.Public/Azure/AzureSettingsSample.zip" 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/5177305310827978243-5412722503456353059?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=5412722503456353059&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5412722503456353059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5412722503456353059'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/06/windows-azure-configuration-settings.html' title='Windows Azure Configuration Settings per build configuration'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-diTA09D_F4s/TfaBxdyEfRI/AAAAAAAAAdg/WpUahFWCnQA/s72-c/WebConfings_thumb.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-3830199119497188059</id><published>2011-06-06T09:20:00.001+02:00</published><updated>2011-06-06T09:20:43.766+02:00</updated><title type='text'>Windows Azure User Group Meeting</title><content type='html'>&lt;p&gt;Our next meeting is scheduled from June the 8th, 2011, 18:30 Local Time (GMT + 3.0 daylight saving time). I’ll be talking on Diagnostic &amp;amp; Monitoring Windows Azure apps and will also share some troubleshooting tips &amp;amp; tricks. Location as usual – Microsoft Bulgaria Office, Sofia, 55 Nikola Vapcarov Blvd. The meeting will also be broadcasted via Windows Live Meeting on the following address: &lt;a href="https://www.livemeeting.com/cc/mvp/join?id=HT6WMG&amp;amp;role=attend&amp;amp;pw=xfK%24Z%2Bk2j"&gt;https://www.livemeeting.com/cc/mvp/join?id=HT6WMG&amp;amp;role=attend&amp;amp;pw=xfK%24Z%2Bk2j&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;One of the participants will have a chance to win a license for &lt;a href="http://www.cerebrata.com/Products/CloudStorageStudio/Default.aspx"&gt;Cerebrata’s Cloud Storage Studio&lt;/a&gt; (a US $69.99 value), so don’t miss this event, either face-to-face or Online! &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-3830199119497188059?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=3830199119497188059&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3830199119497188059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3830199119497188059'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/06/windows-azure-user-group-meeting.html' title='Windows Azure User Group Meeting'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-8471327187243377939</id><published>2011-05-30T22:31:00.001+02:00</published><updated>2011-05-30T22:33:31.154+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure Storage Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>GITCA's 24 hours in the cloud is coming</title><content type='html'>&lt;p&gt;In case you missed the PDC 2010 Local (Bulgaria), where I showed how to build scalable video converter using Windows Azure Worker Role &amp;amp; Windows Azure Storage, or you would like to refresh your knowledge on Azure, please join the &lt;a href="http://sp.gitca.org/sites/24Hours/ugpages/Home.aspx"&gt;GITCA's 24 hours in the cloud&lt;/a&gt; event on June the 1st. &lt;a href="http://sp.gitca.org/sites/24hours/ugpages/FinalSessions.aspx"&gt;My session is scheduled for 10:00 P.M. PDT (06:00 AM GMT, June the 2nd),&lt;/a&gt; but there are also a lot of good session which you might want to watch. During the event you can ask questions using the official twitter event hash: #24HitC . To join the event, simply visit this site on June the 1st: &lt;a title="http://vepexp.microsoft.com/24HitC/" href="http://vepexp.microsoft.com/24HitC/"&gt;http://vepexp.microsoft.com/24HitC/&lt;/a&gt; !&lt;/p&gt; &lt;p&gt;See you there!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-8471327187243377939?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=8471327187243377939&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/8471327187243377939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/8471327187243377939'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/05/gitca-24-hours-in-cloud-is-coming.html' title='GITCA&amp;#39;s 24 hours in the cloud is coming'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-6500315255162768342</id><published>2011-04-19T21:04:00.002+02:00</published><updated>2011-04-19T23:40:26.262+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SqlAzure'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Azure'/><title type='text'>Table Valued Parameter procedures with SQL Azure</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Yes, it’s supported and it’s fairly easy to use a Table Value Parameter in stored procedures with SQL Azure. And here I will show you a quick introduction on how to do this.&lt;br /&gt;In order to use a table value parameter in stored procedure we first need to create a custom &lt;a href="http://go.microsoft.com/fwlink/?LinkId=98364"&gt;user defined table type&lt;/a&gt; (UDT). Here is my very simple table UDT:&lt;br /&gt;&lt;blockquote&gt;&lt;pre style="background: none repeat scroll 0% 0% white; line-height: normal;"&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: 9.8pt;"&gt;CREATE&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.8pt;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;TYPE&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: teal;"&gt;ReferenceIds&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;AS&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;TABLE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: teal;"&gt;Id&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;INT&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: grey; font-size: 9.8pt;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Now let’s create a stored procedure that accepts that type:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre style="background: none repeat scroll 0% 0% white; line-height: normal;"&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: 9.8pt;"&gt;CREATE&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.8pt;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;PROCEDURE&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: teal;"&gt;[dbo]&lt;/span&gt;&lt;span style="color: grey;"&gt;.&lt;/span&gt;&lt;span style="color: teal;"&gt;[upGetRefIds]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: teal;"&gt;@references&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: teal;"&gt;ReferenceIds&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;readonly&lt;/span&gt;&lt;br /&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;AS&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;SELECT&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: magenta;"&gt;Count&lt;/span&gt;&lt;span style="color: grey;"&gt;(&lt;/span&gt;&lt;span style="color: teal;"&gt;Id&lt;/span&gt;&lt;span style="color: grey;"&gt;)&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;From&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: teal;"&gt;@references&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue; font-size: 9.8pt;"&gt;END&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;It is important to note that when using UDT as parameter, it can only be input parameter, and it must be explicitly set as read only.&lt;br /&gt;Finally let’s write some ADO.NET:&lt;br /&gt;&lt;br /&gt;&lt;pre style="background: none repeat scroll 0% 0% white; line-height: normal;"&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 9.8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.8pt;"&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt;&lt;span style="color: black;"&gt; (&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;SqlConnection&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.8pt;"&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="color: black;"&gt; con =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;SqlConnection&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="color: black;"&gt;(&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;ConfigurationManager&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="color: black;"&gt;.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ConnectionStrings[&lt;/span&gt;&lt;span style="color: #a31515;"&gt;"AzureSQL"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="color: black;"&gt;].ConnectionString))&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt;&lt;span style="color: black;"&gt; (&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;SqlCommand&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="color: black;"&gt; cmd = con.CreateCommand())&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.CommandText = &lt;/span&gt;&lt;span style="color: #a31515;"&gt;"upGetRefIds"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="color: black;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.CommandType = &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;CommandType&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="color: black;"&gt;.StoredProcedure;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;DataTable&lt;/span&gt;&lt;span style="color: black;"&gt; dt = &lt;/span&gt;&lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;DataTable&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="color: black;"&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dt.Columns.Add(&lt;/span&gt;&lt;span style="color: #a31515;"&gt;"Id"&lt;/span&gt;&lt;span style="color: black;"&gt;, &lt;/span&gt;&lt;span style="color: blue;"&gt;typeof&lt;/span&gt;&lt;span style="color: black;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;int&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="color: black;"&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dt.Rows.Add(2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dt.Rows.Add(12);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dt.Rows.Add(2342);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; con.Open();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.Parameters.AddWithValue(&lt;/span&gt;&lt;span style="color: #a31515;"&gt;"@references"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="color: black;"&gt;, dt);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-size: 9.8pt;"&gt;&lt;span style="color: black;"&gt; result = cmd.ExecuteScalar();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Diagnostics.&lt;/span&gt;&lt;span style="color: #2b91af;"&gt;Debug&lt;/span&gt;&lt;span style="color: black;"&gt;.WriteLine(result.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Maybe you already noted – the @references parameter is passed as regular DataTable, which has 1 column defined of type integer (same as our user defined type). This is the only “special” trick to make the magic work!&lt;br /&gt;&lt;br /&gt;That’s it. As simple as that!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-6500315255162768342?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=6500315255162768342&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6500315255162768342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6500315255162768342'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/04/table-valued-parameter-procedures-with.html' title='Table Valued Parameter procedures with SQL Azure'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-588087960010685545</id><published>2011-04-02T16:01:00.001+02:00</published><updated>2011-04-02T16:01:47.499+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Microsoft MVP for Windows Azure</title><content type='html'>&lt;p&gt;Yes! It is not a April’s fool joke! It’s a fact! It is a great honor for me to be awarded with the &lt;a href="https://mvp.support.microsoft.com/profile/Staykov"&gt;Microsoft MVP Award for Windows Azure&lt;/a&gt;!&lt;/p&gt; &lt;p&gt;And of course, when there are awards and winners and prices, there are also “thanks”. My great thanks go for &lt;a href="http://blog.kulov.net/"&gt;Martin Kulov&lt;/a&gt; (Microsoft Regional Director &amp;amp; Microsoft MVP for ALM) who is a great guy and incredible Microsoft influencer &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/_g4vzmfkZQow/TZcsSsTAloI/AAAAAAAAAdE/wxFgcdTRgOo/wlEmoticon-smile%5B2%5D.png?imgmax=800"&gt;! I am proud to know him! Of course also a huge gratitude to my family for supporting me in all mine initiatives!&lt;/p&gt; &lt;p&gt;So what’s next? Even more &lt;a href="http://www.azure.bg/"&gt;Windows Azure User Group&lt;/a&gt; meetings and even more community activities. Stay tuned for updates!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-588087960010685545?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=588087960010685545&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/588087960010685545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/588087960010685545'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/04/microsoft-mvp-for-windows-azure.html' title='Microsoft MVP for Windows Azure'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_g4vzmfkZQow/TZcsSsTAloI/AAAAAAAAAdE/wxFgcdTRgOo/s72-c/wlEmoticon-smile%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-2265675182415590479</id><published>2011-04-02T15:52:00.001+02:00</published><updated>2011-04-02T15:52:29.890+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure Storage Services'/><category scheme='http://www.blogger.com/atom/ns#' term='SqlAzure'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Slides and code from Microsoft Days’ 2011 Bulgaria / SQL Azure Agent</title><content type='html'>&lt;p&gt;And here there are. PowerPoint presentation can be downloaded from: &lt;a title="SqlAzureAgent_MSDays2011_20110330.pptx Дата на промяна- 02.4.2011 г. 16-46 Тип- Презентация в Mi" href="http://cid-1bce1d5766df232b.office.live.com/view.aspx/.Public/Slides/2011/SqlAzureAgent%5E_MSDays2011%5E_20110330.pptx"&gt;SqlAzureAgent_MSDays2011_20110330.pptx&lt;/a&gt;&amp;nbsp; And the code is located at: &lt;a href="http://sqlazureagent.codeplex.com/"&gt;http://sqlazureagent.codeplex.com/&lt;/a&gt;. Go for it! Download, build, run, change, play! If you have questions: just ask!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-2265675182415590479?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=2265675182415590479&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/2265675182415590479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/2265675182415590479'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/04/slides-and-code-from-microsoft-days.html' title='Slides and code from Microsoft Days’ 2011 Bulgaria / SQL Azure Agent'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-5748821503167881233</id><published>2011-03-29T11:01:00.001+02:00</published><updated>2011-03-29T11:01:42.384+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>Bug in CodePlex prevent publishing a release package</title><content type='html'>&lt;p&gt;While I was completing my next &lt;a href="http://www.codeplex.com/"&gt;CodePlex&lt;/a&gt; project, which will be published soon, I discovered a strange bug. There was some nasty JavaScript error which was preventing me from publishing a release. Initially I thought it is a specific browser issue, but I tried with every possible (not all of them, but major ones – FF, IE, GC, Opera) browser there is (for Windows) and the problem still was there. And now when I am really close to release I just wanted that release published.&lt;/p&gt; &lt;p&gt;At the end it appeared to be the DatePicker JS in the Release manager which was crashing under certain circumstances. That was preventing users from publishing a Release.&lt;br&gt;In order to reproduce the issue, set the "preferred languages" of your browser (any browser) to "Bulgarian, Bulgaria (bg-BG)" and remove all other languages. In that case the JavaScript correctly gets/sets the date format, which is "dd.mm.yyyy &lt;strong&gt;&lt;font color="#ff0000"&gt;'г.&lt;/font&gt;&lt;/strong&gt;'", but that last &lt;font color="#ff0000"&gt;&lt;strong&gt;'г.'&lt;/strong&gt;&lt;/font&gt; (which includes the single quotes) breaks the JavaScript for the page. Frankly I am not entirely sure whether the system locale settings also affect this behavior. All my machines are with system locale set to Bulgaria. However when I remove the "Bulgarian, Bulgaria (bg-BG)" from browser's preferred languages, and leave there only English everything works fine.&lt;/p&gt; &lt;p&gt;I reported this issue to the &lt;a href="http://www.codeplex.com/"&gt;CodePlex&lt;/a&gt; team and hope that they will fix it soon &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/_g4vzmfkZQow/TZGf8xnyQkI/AAAAAAAAAdA/8HjJDHes44w/wlEmoticon-smile%5B2%5D.png?imgmax=800"&gt;&lt;/p&gt; &lt;p&gt;Meanwhile, if you are e &lt;a href="http://www.codeplex.com/"&gt;CodePlex&lt;/a&gt; enthusiast and have projects there, keep in mind that locale / language settings might affect your experience!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-5748821503167881233?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=5748821503167881233&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5748821503167881233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5748821503167881233'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/03/bug-in-codeplex-prevent-publishing.html' title='Bug in CodePlex prevent publishing a release package'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_g4vzmfkZQow/TZGf8xnyQkI/AAAAAAAAAdA/8HjJDHes44w/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-5177305310827978243.post-8918600082798944514</id><published>2011-03-27T22:29:00.001+02:00</published><updated>2011-03-27T22:29:53.936+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>SQL Azure: Enterprise Application Development reviewed</title><content type='html'>&lt;p&gt;As I blogged earlier this year, there are two books on &lt;a href="http://www.azure.com"&gt;Windows Azure&lt;/a&gt; from &lt;a href="http://www.packtpub.com/"&gt;Packt publishing&lt;/a&gt;. I was personally involved as technical reviewer with one of them, and now I am sharing my feedback on the second.&lt;br&gt;&lt;a href="http://link.packtpub.com/QYC7VU"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 5px 10px 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="Microsft SQL Azure" border="0" alt="Microsft SQL Azure" align="left" src="http://lh6.ggpht.com/_g4vzmfkZQow/TY-eQEF-JII/AAAAAAAAAc8/PqY8OhsX0Wo/Microsft%20SQL%20Azure%5B3%5D.jpg?imgmax=800" width="198" height="244"&gt;&lt;/a&gt;&lt;a href="http://link.packtpub.com/QYC7VU"&gt;Microsoft SQL Azure: Enterprise Application Development&lt;/a&gt;, is the second one from the "Azure" series. Published right after the "&lt;a href="http://link.packtpub.com/75gJzU"&gt;Microsoft Azure: Enterprise Application Development&lt;/a&gt;" the book is the perfect complement to it. Reading &lt;a href="http://link.packtpub.com/QYC7VU"&gt;Microsoft SQL Azure&lt;/a&gt;, you will learn the basics of cloud services (i.e. what is a Cloud, what types of clouds are there and who are the big players). You will, of course catch up with &lt;a href="http://www.azure.com/"&gt;Windows Azure&lt;/a&gt;, as it is briefly described, in case you missed the "&lt;a href="http://link.packtpub.com/75gJzU"&gt;Microsoft Azure&lt;/a&gt;" book.&lt;br&gt;Focusing on the SQL Azure service it self, the book covers all the steps required for you to leverage a cloud based RDMS. All the information you find there is well structured and accompanied with good number of screenshots and sample SQL statements. You will not miss any of the features delivered from &lt;a href="http://www.microsoft.com/en-us/SQLAzure/database.aspx"&gt;SQL Azure&lt;/a&gt;. All the answers are there – what is the security model of &lt;a href="http://www.microsoft.com/en-us/SQLAzure/database.aspx"&gt;SQL Azure&lt;/a&gt;; how to connect and execute queries against the cloud (how to use Sql Server Management Studio); how can you use Sql Server Integration Services (a.k.a. SSIS) and what are the limitations; how to sync your cloud data with on-premise data; what are the tools supported by &lt;a href="http://www.microsoft.com/en-us/SQLAzure/database.aspx"&gt;SQL Azure&lt;/a&gt;; and more and more questions and answers. I could hardly find a question for &lt;a href="http://www.microsoft.com/en-us/SQLAzure/database.aspx"&gt;SQL Azure&lt;/a&gt; that this book does not answer! &lt;br&gt;I would highly recommend this book as a complement to the "&lt;a href="http://link.packtpub.com/75gJzU"&gt;Microsoft Azure: Enterprise Application Development&lt;/a&gt;". These two books are the complete guide to develop application for the Microsoft's Cloud!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-8918600082798944514?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=8918600082798944514&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/8918600082798944514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/8918600082798944514'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/03/sql-azure-enterprise-application.html' title='SQL Azure: Enterprise Application Development reviewed'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_g4vzmfkZQow/TY-eQEF-JII/AAAAAAAAAc8/PqY8OhsX0Wo/s72-c/Microsft%20SQL%20Azure%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-6447076631145626570</id><published>2011-03-24T11:00:00.001+02:00</published><updated>2011-03-24T11:35:21.652+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Retrospective</title><content type='html'>&lt;p&gt;Looking back in 2010 when I was a technical evangelist for &lt;a href="http://www.infragistics.com/"&gt;Infragistics&lt;/a&gt; I can’t say that I regret for anything. Evangelism is not a job. Evangelism is belief! That’s my honest opinion. I was evangelist before I stepped officially into that role, and I continue to be evangelist now. I’m inspired by a presentation from &lt;a href="http://blog.guykawasaki.com/2006/01/the_art_of_evan.html"&gt;Guy Kawasaki&lt;/a&gt; (&lt;a href="http://www.youtube.com/watch?v=QpLGEkQI79M"&gt;The Art of the Start&lt;/a&gt; – a great session by the way, worth watching the full presentation!), where he states something like “You don’t hire evangelists, they find you”. You can read more of his great posts on &lt;a href="http://blog.guykawasaki.com/"&gt;his blog&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;So, back to the subject, one of the projects I was involved in 2010 was &lt;a href="http://blog.structuretoobig.com/post/2011/01/10/New-Worldmaps-Reporting-Site.aspx"&gt;the new MyWorldMaps reporting site&lt;/a&gt;. We went through a lot of changes during technical implementantion, but in the end it became a really neat &lt;a href="http://www.silverlight.net/"&gt;Silverlight 4&lt;/a&gt; application, that uses &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd419663.aspx"&gt;MVVM&lt;/a&gt;, &lt;a href="http://www.azure.com"&gt;Azure&lt;/a&gt; (my passion) and of course the amazing &lt;a href="http://www.infragistics.com/dotnet/netadvantage/silverlight/data-visualization.aspx#Overview"&gt;DataVisualistion&lt;/a&gt; suite from &lt;a href="http://www.infragistics.com/"&gt;Infragistics&lt;/a&gt;.&amp;nbsp; I can only be proud to have been part of it. And now I see it is so liked by the original requester &lt;a href="http://blog.structuretoobig.com/page/About.aspx"&gt;Brian Hitney&lt;/a&gt; from &lt;a href="http://www.microsoft.com/"&gt;Microsoft&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;I formed maybe the toughest part of it – Distribution Stats. It is based on the &lt;a href="http://blogs.infragistics.com/blogs/anton_staykov/archive/2010/12/16/infragistics-motion-framework.aspx"&gt;Motion Framework&lt;/a&gt; (&lt;a href="http://www.infragistics.com/innovations/motion-framework.aspx#MotionFramework"&gt;officially announced here&lt;/a&gt;), which on the other hand is a result of hard working &lt;a href="http://www.infragistics.com/dotnet/netadvantage/silverlight/data-visualization.aspx#Overview"&gt;DataVisualization&lt;/a&gt; team. This type of statistics shows you multidimensional data. How many is multi? 4! Yes, four dimensions! X-axis will show you cumulative hits for given browser/region. The Y-axis shows you percentage each item occupy based on the total hits cumulated. Third dimension is obvious – time (data changes over time). And finally change in size of a bubble represents relative change of hits for given time point over the previous.&amp;nbsp; It is so great to see that it finally went &lt;a href="http://blog.structuretoobig.com/post/2011/01/10/New-Worldmaps-Reporting-Site.aspx"&gt;LIVE&lt;/a&gt;. Good work all, and thanks &lt;a href="http://www.infragistics.com/"&gt;Infragistics&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/5177305310827978243-6447076631145626570?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=6447076631145626570&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6447076631145626570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6447076631145626570'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/03/retrospective.html' title='Retrospective'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-2902419544380656520</id><published>2011-03-23T23:40:00.001+02:00</published><updated>2011-03-23T23:40:37.590+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='SqlAzure'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Azure'/><title type='text'>SQL Azure limitations</title><content type='html'>&lt;p&gt;During my talks on SQL Azure, and the session I’ve been to (only locally in Bulgaria) we always listen limitations like “excessive resource usage”, “long running transactions”, “idle time”. But it is very hard to find out officially what are the exact numbers behind these statements. Now that I prepare for my session next week at Microsoft Developer Days 2011 I am hunting for a numbers. And here they are (keep in mind that these numbers are subject to change at any time without notification):&lt;/p&gt; &lt;ul&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;&lt;strong&gt;Excessive Memory Usage:&lt;/strong&gt; When there is memory contention, sessions consuming greater than 16-megabyte (MB) for more than 20 seconds are terminated in the descending order of time the resource has been held, such as the oldest session is terminated first. Termination of sessions stops as soon as the required memory is available.When the connection is lost due to this reason, you will receive error code 40553. &lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;&lt;strong&gt;Idle Connections:&lt;/strong&gt; Connections to your SQL Azure database that are idle for 30 minutes or longer will be terminated. Since there is no active request, SQL Azure does not return any error. &lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;&lt;strong&gt;Transaction Termination:&lt;/strong&gt; SQL Azure kills all transactions after they run for 24 hours. If you lose a connection due to this reason, you will receive error code 40549. &lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;&lt;strong&gt;Lock Consumption:&lt;/strong&gt; Sessions consuming greater than one million locks are terminated. When this happens, you will receive error code 40550. You can query the sys.dm_tran_locks dynamic management view (DMV) to obtain information about the current state of locking in SQL Azure. &lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;&lt;strong&gt;Log File Size:&lt;/strong&gt; Transactions consuming excessive log resources are terminated. The maximum permitted log size for a single transaction is 1-gigabyte (GB). When the connection is lost due to this reason, you will receive error code 40552. &lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt; &lt;p&gt;Full list of limitations and a very good reading: &lt;a title="http://social.technet.microsoft.com/wiki/contents/articles/sql-azure-connection-management-in-sql-azure.aspx" href="http://social.technet.microsoft.com/wiki/contents/articles/sql-azure-connection-management-in-sql-azure.aspx"&gt;http://social.technet.microsoft.com/wiki/contents/articles/sql-azure-connection-management-in-sql-azure.aspx&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/5177305310827978243-2902419544380656520?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=2902419544380656520&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/2902419544380656520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/2902419544380656520'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/03/sql-azure-limitations.html' title='SQL Azure limitations'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-3752138714393616839</id><published>2011-03-23T00:20:00.001+02:00</published><updated>2011-03-23T00:20:47.745+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Important note on Role recycling when you have IntelliTrace enabled</title><content type='html'>&lt;p&gt;I was recently using Intellitrace to catch some crashes of a deployed to Azure service. I may say that I am astonished by the simplicity of using IntelliTrace. Although I have pretty good logging (apparently not that good, though &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh4.ggpht.com/_g4vzmfkZQow/TYkgveFp6yI/AAAAAAAAAc4/rKxzIVBqmMo/wlEmoticon-smile%5B2%5D.png?imgmax=800"&gt;) my system was restarting and I couldn’t catch why. Once I enabled Intellitrace&amp;nbsp; it took me about (literally) 1 minute to catch the issue (including the time for downloading the InterlliTrace log). However I noticed that my role is not recycled after a crash. I wouldn’t connect both if I didn’t come across this post in the Windows Azure forums (the post is written by the Windows Azure Support guys): &lt;p&gt;When IntelliTrace is enabled on a role that is running in Windows Azure and that role crashes, the role is not restarted. This is to improve the information available to IntelliTrace. We do not recycle the role when it is collecting traces, instead it is put into the “&lt;em&gt;Unresponsive&lt;/em&gt;” state. &lt;p&gt;For more information about IntelliTrace, see the following:&lt;br&gt;Blog Post: &lt;a href="http://blogs.msdn.com/b/jnak/archive/2010/05/27/using-intellitrace-to-debug-windows-azure-cloud-services.aspx"&gt;Using IntelliTrace to debug Windows Azure Cloud Services&lt;/a&gt;&lt;br&gt;MSDN Article: &lt;a href="http://msdn.microsoft.com/en-us/library/dd264915.aspx"&gt;Debugging with IntelliTrace&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/5177305310827978243-3752138714393616839?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=3752138714393616839&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3752138714393616839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3752138714393616839'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/03/important-note-on-role-recycling-when.html' title='Important note on Role recycling when you have IntelliTrace enabled'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_g4vzmfkZQow/TYkgveFp6yI/AAAAAAAAAc4/rKxzIVBqmMo/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-5177305310827978243.post-6728123949553757242</id><published>2011-02-02T22:06:00.001+02:00</published><updated>2011-02-02T22:06:11.842+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Azure books from Packt Publishing</title><content type='html'>&lt;p&gt;&lt;a href="http://link.packtpub.com/75gJzU"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="Microsoft_Azure_Enterprise_Application_Development_cov" border="0" alt="Microsoft_Azure_Enterprise_Application_Development_cov" align="left" src="http://lh4.ggpht.com/_g4vzmfkZQow/TUm5MAniqWI/AAAAAAAAAcY/aCWGeJCjijg/Microsoft_Azure_Enterprise_Application_Development_cov%5B4%5D.jpg?imgmax=800" width="198" height="244"&gt;&lt;/a&gt;As I already mentioned, I was honored to be technical reviewer of one of the first books on the &lt;a href="http://www.microsoft.com/windowsazure/"&gt;Azure&lt;/a&gt; subject: &lt;a href="http://link.packtpub.com/75gJzU"&gt;Microsoft Azure: Enterprise Application Development&lt;/a&gt; from &lt;a href="http://www.packtpub.com/"&gt;Packt Publishing&lt;/a&gt;. The process of technical reviewing does take time, and requires attention. You can’t just sit and say “hey I will be reviewing this book”. You often go through the references, check for correctness of provided links, run the provided code to check for any errors, carefully read the content and check for missing or misspelled technical terms / details. I can only imagine what is the process of writing a book. It literally takes an year or more. So don’t be surprised if you don’t see screenshots from the new Silverlight portal, or some of new stuff that sneaked in during PDC 2010! Before all, this book was written by the time of first commercial availability of Windows Azure and represents technically correct everything what was available for Windows Azure SDK 1.2! Which by the way is 100% technically accurate with Windows Azure SDK 1.3. You just have more features available since PDC 2010, but nothing from the existing feature has drastically changed, that would not reflect what is in the book content. &lt;a href="http://link.packtpub.com/75gJzU"&gt;Microsoft Azure: Enterprise Application Development&lt;/a&gt; covers all aspects and modules (if I may say so) of &lt;a href="http://www.microsoft.com/windowsazure/"&gt;Windows Azure&lt;/a&gt; and how an Enterprise can leverage the platform to build highly scalable and reliable solution on top of &lt;a href="http://www.microsoft.com/windowsazure/"&gt;Microsoft’s Cloud&lt;/a&gt;!&lt;/p&gt; &lt;p&gt;&lt;a href="http://link.packtpub.com/QYC7VU"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="Microsft SQL Azure" border="0" alt="Microsft SQL Azure" align="right" src="http://lh6.ggpht.com/_g4vzmfkZQow/TUm5MuOiv7I/AAAAAAAAAcc/07r6-D7GXc0/Microsft%20SQL%20Azure%5B3%5D.jpg?imgmax=800" width="198" height="244"&gt;&lt;/a&gt;There is another book, which focuses on &lt;a href="http://www.microsoft.com/en-us/sqlazure/default.aspx"&gt;SQL Azure&lt;/a&gt; – &lt;a href="http://link.packtpub.com/QYC7VU"&gt;SQL Azure: Enterprise Application Development&lt;/a&gt;. While you will one chapter for the &lt;a href="http://www.microsoft.com/windowsazure/"&gt;Windows Azure platform&lt;/a&gt; in general and hosting ASP.NET application within the cloud, the focuses solely on the only one Relational Database Management System As A Service – &lt;a href="http://www.microsoft.com/en-us/sqlazure/default.aspx"&gt;SQL Azure&lt;/a&gt;! I have the honor to obtain a copy of that book and write an abstract overview of the full content. While it may take a bit more of my time I will just share with you that this book will give you the answers for questions like: How can I use &lt;a href="http://www.microsoft.com/en-us/sqlazure/default.aspx"&gt;SQL Azure&lt;/a&gt; with SSIS / SSRS? Can I use &lt;a href="http://www.microsoft.com/en-us/sqlazure/default.aspx"&gt;SQL Azure&lt;/a&gt; without paying for Windows Azure (for sure you can)? Can I use &lt;a href="http://www.microsoft.com/en-us/sqlazure/default.aspx"&gt;SQL Azure&lt;/a&gt; with my PHP application? What about syncing on-premise with Cloud data? And much more! So stay tuned for full overview of this new book on the &lt;a href="http://www.microsoft.com/en-us/sqlazure/default.aspx"&gt;SQL Azure&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/5177305310827978243-6728123949553757242?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=6728123949553757242&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6728123949553757242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6728123949553757242'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2011/02/azure-books-from-packt-publishing.html' title='Azure books from Packt Publishing'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_g4vzmfkZQow/TUm5MAniqWI/AAAAAAAAAcY/aCWGeJCjijg/s72-c/Microsoft_Azure_Enterprise_Application_Development_cov%5B4%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-7845933094012928707</id><published>2010-12-11T14:05:00.001+02:00</published><updated>2010-12-11T14:05:34.642+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure Storage Services'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Windows Azure Platform Monitoring services</title><content type='html'>&lt;p&gt;Did you know that Microsoft has a public service status dashboard, where you can easily and quickly check the status of all Azure Data Centers and Services status? Yes, there is such Service Dashboard. It is located on the following address:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.microsoft.com/windowsazure/support/status/servicedashboard.aspx" href="http://www.microsoft.com/windowsazure/support/status/servicedashboard.aspx"&gt;http://www.microsoft.com/windowsazure/support/status/servicedashboard.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So the next time you experience some troubles with live Windows Azure environment, first check out the Service Dashboard, and then you can contact the Windows Azure support to report live site issues &lt;a href="http://www.microsoft.com/windowsazure/support/"&gt;here&lt;/a&gt;. Do not forget to first get your Subscription ID first, and then always include it, when reporting issues to the support team!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-7845933094012928707?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=7845933094012928707&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/7845933094012928707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/7845933094012928707'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2010/12/windows-azure-platform-monitoring.html' title='Windows Azure Platform Monitoring services'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-6021963707834408022</id><published>2010-12-11T10:50:00.001+02:00</published><updated>2010-12-11T10:50:04.171+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure Storage Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Windows Azure Storage Tips</title><content type='html'>&lt;p&gt;Windows Azure is a great platform. It has different components (like Compute, Storage, SQL Azure, AppFabric) which can be used independently. So for example you can use just Windows Azure Storage (be it Blob, Queue or Table) without even using Compute (Windows Azure Roles) or SQL Azure or AppFabric. And using just Windows Azure Storage is worthy. The price is very competitive to other cloud storage providers (such as Amazon S3). &lt;/p&gt;  &lt;p&gt;To use Windows Azure Storage from within your Windows Forms application you just need to add reference to the Microsoft.WindowsAzure.StorageClient assembly. This assembly is part of Windows Azure SDK.&lt;/p&gt;  &lt;p&gt;O.K. Assuming you have created a new Windows Forms application, you added reference to that assembly, you tried to create your &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.cloudstorageaccount.aspx"&gt;CloudStorageAccount&lt;/a&gt; using the static &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.cloudstorageaccount.parse.aspx"&gt;Parse&lt;/a&gt; or &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.cloudstorageaccount.tryparse.aspx"&gt;TryParse&lt;/a&gt; method, and you try to build your application. Don’t be surprised, you will get following error (warning):&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Warning&amp;#160;&amp;#160;&amp;#160; 5&amp;#160;&amp;#160;&amp;#160; The referenced assembly &amp;quot;Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL&amp;quot; could not be resolved because it has a dependency on &amp;quot;System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&amp;quot; which is not in the currently targeted framework &amp;quot;.NETFramework,Version=v4.0,Profile=Client&amp;quot;. Please remove references to assemblies not in the targeted framework or consider retargeting your project.&amp;#160;&amp;#160;&amp;#160; &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;And you will not be able to build.&lt;/p&gt;  &lt;p&gt;Well, some of you may not know, but with the Service Pack 1 of .NET Framework 3.5, Microsoft announced a new concept, named “.NET Framework Client Profile” which is available for &lt;a href="http://msdn.microsoft.com/en-us/library/cc656912(v=VS.90).aspx"&gt;.NET Framework 3.5 SP 1&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/cc656912.aspx"&gt;.NET Framework 4.0&lt;/a&gt;. The shorter version of what Client Profile is follows:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;The .NET Framework 4 Client Profile is a subset of the .NET Framework 4 that is optimized for client applications. It provides functionality for most client applications, including Windows Presentation Foundation (WPF), Windows Forms, Windows Communication Foundation (WCF), and ClickOnce features. This enables faster deployment and a smaller install package for applications that target the .NET Framework 4 Client Profile.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;For the full version – check out the inline links.&lt;/p&gt;  &lt;p&gt;What to do in order to use Microsoft.WindwsAzure.StorageClient from within our Windows Forms application – go to project Properties and from “Target Framework” in “Application” tab select “.NET Framework 4” and not the “* Client Profile” one:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_g4vzmfkZQow/TQM7OK-L9sI/AAAAAAAAAbs/zyWkKOki_BA/s1600-h/ClientProfile%5B3%5D.png"&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="ClientProfile" border="0" alt="ClientProfile" src="http://lh3.ggpht.com/_g4vzmfkZQow/TQM7O7YMeeI/AAAAAAAAAbw/T7_-334FUfs/ClientProfile_thumb%5B1%5D.png?imgmax=800" width="485" height="343" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The gotcha, is that the default setting for Visual Studio is to use Client Profile of the .NET Framework. And you cannot choose this option from the “New Project” wizard, and all new projects you create are targeting the .NET Framework Client Profile (if you choose a .NET Framework 4 or 3.5 project template).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-6021963707834408022?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=6021963707834408022&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6021963707834408022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6021963707834408022'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2010/12/windows-azure-storage-tips.html' title='Windows Azure Storage Tips'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_g4vzmfkZQow/TQM7O7YMeeI/AAAAAAAAAbw/T7_-334FUfs/s72-c/ClientProfile_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-5839908576968798085</id><published>2010-12-11T10:20:00.001+02:00</published><updated>2010-12-11T10:20:00.243+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web role'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure Storage Services'/><category scheme='http://www.blogger.com/atom/ns#' term='SqlAzure'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='worker role'/><title type='text'>Slides from my talks on Windows Azure Topics</title><content type='html'>&lt;p&gt;The year of 2010 was good for me. With the support of &lt;a href="http://www.microsoft.com/bulgaria"&gt;Microsoft Bulgaria&lt;/a&gt; &amp;amp; &lt;a href="http://www.kulov.net/"&gt;Martin Kulov&lt;/a&gt; (Microsoft Regional Director &amp;amp; Visual Studio ALM MVP) I established a &lt;a href="http://www.azure.bg/"&gt;Windows Azure User Group here in Bulgaria&lt;/a&gt; and I had presented couple of introductory and couple of deep dive topics covering &lt;a href="http://cid-1bce1d5766df232b.office.live.com/view.aspx/.Public/Slides/2010/2010-05-26%5E_IntroWindowsAzure.pptx"&gt;Windows Azure&lt;/a&gt;, &lt;a href="http://cid-1bce1d5766df232b.office.live.com/view.aspx/.Public/Slides/2010/2010-09-25%5E_CrossUserGroup%5E_SQLAzureIntro.pptx"&gt;SQL Azure&lt;/a&gt;, &lt;a href="http://cid-1bce1d5766df232b.office.live.com/view.aspx/.Public/Slides/2010/2010-12-02%5E_WindowsAzure%5E_DeepDive%5E_PDC10Local.pptx"&gt;Windows Azure Storage Services&lt;/a&gt;, &lt;a href="http://cid-1bce1d5766df232b.office.live.com/view.aspx/.Public/Slides/2010/2010-09-16%5E_VS2010LauchWave2%5E_AzureInVS2010.pptx"&gt;Developing and Deploying Windows Azure Applications with Visual Studio 2010&lt;/a&gt;. The most recent is my talk at Microsoft PDC Local (Sofia, Bulgaria) where I showed up my “&lt;a href="http://azurevideoconv.codeplex.com/"&gt;Azure Video Converter&lt;/a&gt;” Demo application. A proof of concept application to demonstrate the power of Windows Azure and how can developers use Windows Azure worker roles to execute third party software, which requires no access to registry/administrative privileges, etc. (a generic x-copy deployment apps). &lt;/p&gt;  &lt;p&gt;All the slides can be downloaded or viewed online &lt;a href="http://cid-1bce1d5766df232b.office.live.com/browse.aspx/.Public/Slides/2010"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Looking forward for even more exciting content in the coming 2011!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-5839908576968798085?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=5839908576968798085&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5839908576968798085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5839908576968798085'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2010/12/slides-from-my-talks-on-windows-azure.html' title='Slides from my talks on Windows Azure Topics'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-8358309193471790364</id><published>2010-12-11T10:07:00.001+02:00</published><updated>2010-12-11T10:07:05.432+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web role'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='SqlAzure'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='worker role'/><title type='text'>New book on Windows Azure released</title><content type='html'>&lt;p&gt;During the passed couple of months I was a technical reviewer for a new book on Windows Azure – &lt;a href="https://www.packtpub.com/microsoft-azure-enterprise-application-development/book"&gt;Microsoft Azure: Enterprise Application Development&lt;/a&gt; by &lt;a href="https://www.packtpub.com/"&gt;Packt Publishing&lt;/a&gt;. I guess what would the most questions be. And the answer is: the book covers Windows Azure Platform up to version 1.2 of Tools &amp;amp; SDKs. And the screenshots are from the old Management Portal. But hey, everything written in that book is totally accurate and up to date. It just does not cover the new features, announced at PDC 2010.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-8358309193471790364?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=8358309193471790364&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/8358309193471790364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/8358309193471790364'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2010/12/new-book-on-windows-azure-released.html' title='New book on Windows Azure released'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-6942089434751160161</id><published>2010-11-24T01:18:00.001+02:00</published><updated>2010-11-24T01:18:45.575+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure Storage Services'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Azure Video Converter Update</title><content type='html'>&lt;p&gt;I’ve just updated the &lt;a href="http://azurevideoconv.codeplex.com/" target="_blank"&gt;Azure Video Converter&lt;/a&gt; project. It is closer to what I was planning it to be. Now the main Worker Role is stripped from predefined, hardcoded executable files. The project utilizes Windows Azure Queues to decouple processing logic from requesting logic. I also added a very simple Windows Forms application that you can use to convert files. Please visit the &lt;a href="http://azurevideoconv.codeplex.com/" target="_blank"&gt;project home page&lt;/a&gt; and &lt;a href="http://azurevideoconv.codeplex.com/wikipage?title=Solution%20Architecture&amp;amp;referringTitle=Home" target="_blank"&gt;documentation&lt;/a&gt; to learn more if you are interested. &lt;/p&gt; &lt;p&gt;Hope you like it!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-6942089434751160161?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=6942089434751160161&amp;isPopup=true' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6942089434751160161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6942089434751160161'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2010/11/azure-video-converter-update.html' title='Azure Video Converter Update'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-6605943409452715769</id><published>2010-11-05T09:46:00.001+02:00</published><updated>2010-11-05T09:46:07.862+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web role'/><category scheme='http://www.blogger.com/atom/ns#' term='azure'/><category scheme='http://www.blogger.com/atom/ns#' term='iis'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='worker role'/><title type='text'>Windows Azure development fabric port issues / port walking</title><content type='html'>&lt;p&gt;So you wanted to get your hands on Windows Azure and downloaded all the tools/sdk, walked though some web casts, blog posts and create your first Cloud Service project with a single Web Role. Now you notice that it runs mostly on port 81, but sometimes on 82 and wonder why. Here is the answer.  &lt;p&gt;By default, when you add a WebRole to your Cloud Service project an HttpIn Input endpoint is automatically assigned to it and bound to port 80. The InputEndpoints for a Role in Windows Azure are defined in the ServiceDefinition.csdef file. But you can easily see and manipulate them via a nice UI. To check and manipulated all settings for a Role just right click on the Role leaf under Roles folder in your CloudService project, and select Properties:  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_g4vzmfkZQow/TNO2LRR9VVI/AAAAAAAAAbU/hlcjnNvBrcQ/s1600-h/azure_role_settings%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="azure_role_settings" border="0" alt="azure_role_settings" src="http://lh5.ggpht.com/_g4vzmfkZQow/TNO2MRe0P0I/AAAAAAAAAbY/zfVHU1cS7TA/azure_role_settings_thumb%5B1%5D.png?imgmax=800" width="324" height="255"&gt;&lt;/a&gt;  &lt;p&gt;From there, you can change your Endpoints:  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_g4vzmfkZQow/TNO2NaTOMII/AAAAAAAAAbc/aJGyz2BHTjg/s1600-h/azure_role_endpoints%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="azure_role_endpoints" border="0" alt="azure_role_endpoints" src="http://lh3.ggpht.com/_g4vzmfkZQow/TNO2OFY_P2I/AAAAAAAAAbg/ufFlbYMs14U/azure_role_endpoints_thumb%5B1%5D.png?imgmax=800" width="324" height="239"&gt;&lt;/a&gt;  &lt;p&gt;As you can see, you can change your endpoints right from this User Interface properties window. You can also change a lot of other stuff here.  &lt;p&gt;Here is when you have to start being careful and know exactly what you are doing! The Endpoints defined here are the endpoints which will be used when you deploy your Cloud Service to the Cloud! If you change the port here, either accidentally or intentionally, the new port will be used, and your web application will not be accessible on port 80 anymore! Be aware of that!  &lt;p&gt;But why the port is not 80 when I run locally? Why my application runs on port 81 or even 82?  &lt;p&gt;There is only one simple answer to that question: your port 80 is already bound to other application when your package is deployed to the development fabric. When you hit F5 (or Ctrl+F5) to run your project locally, a local Development Fabric is started, your cloud service application is packed into a deployment package and deployed to the Development Fabric. The Development Fabric then looks into its definition and searches for required endpoints. It finds out that your service requires port 80 as an Endpoint. Development fabric tries to bind to port 80 on localhost (127.0.0.1). It always binds to 127.0.0.1 IPv4 address. If port 80 is already occupied, instead of throwing an error and making our life harder, it just tries next port (81). If next port is also occupied, Dev Fabric tries next one (82) and so on until a free port is found. Please be aware, that this &lt;strong&gt;only happens &lt;/strong&gt;on Local Development Fabric. This process will &lt;strong&gt;never happen&lt;/strong&gt; on Live windows Azure Environment (either staging or production)!  &lt;p&gt;What is the reason for my port 80 being occupied?&lt;/p&gt; &lt;p&gt;Here are some:&lt;/p&gt; &lt;p&gt;Applications that most often occupy port 80 are, but not limited to:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;IIS (Is there a Microsoft Web Developer who hasn’t enabled IIS on development machine?)  &lt;li&gt;Skype. Yes Skype! (Tools -&amp;gt; Options -&amp;gt; Advanced -&amp;gt; Connection: [] User port 80 and 443 as alternative for incoming connections). This option is enabled by default. And if you happen to be running Skype before starting IIS for example, your IIS will not be able to bind to port 80 and you might wonder why. Development fabric however, just searches for next available port and binds to it.  &lt;li&gt;Apache Web Server  &lt;li&gt;Any other Web server&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Why sometimes development fabric binds to next-next available port? Why it binds to 82, while there is no application bound to 81?  &lt;p&gt;Sometime, the cycle between destroying a deployment and creating next one is too short, and port 81 (for example) is still occupied by a deployment still in destroying stage. While the next deployment is searching for a port to bind to. That's why 82 is taken.  &lt;p&gt;Another issue might be that a connection to that port sill exists. Connection state might be CLOSE_WAIT, but that also does not allow binding to the port. You can see a list of all connections with their statuses with the following command:  &lt;p&gt;netstat –an  &lt;p&gt;Everything said so far is 100% valid for a Worker Role. Let’s say you have a worker role, which exposes an IP Endpoint and implements custom TCP Server. You have on-premise application which uses custom TCP based protocol, and you have developed your custom TCP server to run in the cloud. Then you exposed the endpoint for this custom TCP server. When deployed to Windows Azure, your endpoints will be exactly same as defined in your service definition. However when running locally your endpoints might be different. You should expect this behavior, and if this is unwanted, always check out the network connections with the “netstat” command or &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb897437.aspx" target="_blank"&gt;Sysinternals TcpView&lt;/a&gt;.  &lt;p&gt;You can also check the current active endpoints for your development fabric deployment. Just right click on the Azure windows icon in the system tray and select “Show Development Fabric UI”. Then navigate to your deployment and select Service Details Node:  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_g4vzmfkZQow/TNO2PYkxCQI/AAAAAAAAAbk/z6oj_e3Ks-M/s1600-h/azure_dev_fabric_ui%5B4%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="azure_dev_fabric_ui" border="0" alt="azure_dev_fabric_ui" src="http://lh5.ggpht.com/_g4vzmfkZQow/TNO2Ptq7nxI/AAAAAAAAAbo/KukrIsUufJA/azure_dev_fabric_ui_thumb%5B2%5D.png?imgmax=800" width="484" height="196"&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-6605943409452715769?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=6605943409452715769&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6605943409452715769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6605943409452715769'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2010/11/windows-azure-development-fabric-port.html' title='Windows Azure development fabric port issues / port walking'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_g4vzmfkZQow/TNO2MRe0P0I/AAAAAAAAAbY/zfVHU1cS7TA/s72-c/azure_role_settings_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-6142477600954494972</id><published>2010-10-29T14:41:00.001+02:00</published><updated>2010-10-29T14:41:33.675+02:00</updated><title type='text'>Windows Azure Update</title><content type='html'>&lt;p&gt;I thought I know a lot about Windows Azure! But PDC 2010 Key Note totally changed my view. The Windows Azure team seems to have done a tremendous work lately! Really tremendous! And once again, Microsoft proved that they listen to community, &lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2010/10/28/you-spoke-we-listened-and-responded.aspx"&gt;listen&lt;/a&gt; to what do &lt;strong&gt;we&lt;/strong&gt; want.&lt;/p&gt;  &lt;p&gt;Here is a list of features that will soon be available, but I suggest that you watch at least the keynote of day one (&lt;a title="http://player.microsoftpdc.com" href="http://player.microsoftpdc.com"&gt;http://player.microsoftpdc.com&lt;/a&gt;)! If you want to fast forward to the Windows Azure part – go to straight to 1hr 20 min:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Elevated privileges&lt;/li&gt;    &lt;li&gt;Full IIS&lt;/li&gt;    &lt;li&gt;Remote Desktop&lt;/li&gt;    &lt;li&gt;VM Role&lt;/li&gt;    &lt;li&gt;New, much richer and better management portal&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;… much much more!&lt;/p&gt;  &lt;p&gt;I have no patience to get my hands on it!&lt;/p&gt;  &lt;p&gt;Don’t miss to visit the &lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2010/10/28/you-spoke-we-listened-and-responded.aspx"&gt;Windows Azure team blog&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/5177305310827978243-6142477600954494972?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=6142477600954494972&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6142477600954494972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6142477600954494972'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2010/10/windows-azure-update.html' title='Windows Azure Update'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-7878960396727094268</id><published>2010-10-23T17:39:00.001+02:00</published><updated>2010-10-23T17:39:48.549+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='DEV10'/><title type='text'>Microsoft Productivity Power Tools for Visual Studio 2010 has been Updated</title><content type='html'>&lt;p&gt;It’s great that we have this feature pack from Microsoft and they are constantly improving it. Just go and download latest version from &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/d0d33361-18e2-46c0-8ff2-4adea1e34fef" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Productivity Power Tools features at a glance:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Solution Navigator.&lt;br&gt;A powerful tool windows which merges functionality from Solution Explorer, Class View, Object Explorer, Call Hierarchy, Navigate To and Find Symbol references!&lt;/li&gt; &lt;li&gt;Tab Well UI.&lt;br&gt;Working with multiple files has never been easier with Tab Well UI. The feature I used the most – Pinned tabs. It allows you to pin certain files so you never lose them :)&lt;/li&gt; &lt;li&gt;Searchable Add Reference dialog.&lt;br&gt;My favorite! Your default add reference dialog is changed to better user experience. Never scroll for assembly! Just search for it!&lt;/li&gt; &lt;li&gt;HTML Copy&lt;br&gt;Another favorite. Never have to use external tools or add-ins! Just select any code and copy it! It is automatically copied as HTML. If you paste in RTF editor – your code is recognized. If you paste it in plain text editor – no bloating HTML is pasted, as well as if you paste inside Visual Studio.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;There are so much more features, just go and &lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/d0d33361-18e2-46c0-8ff2-4adea1e34fef" target="_blank"&gt;get it&lt;/a&gt;! It’s free!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-7878960396727094268?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=7878960396727094268&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/7878960396727094268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/7878960396727094268'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2010/10/microsoft-productivity-power-tools-for.html' title='Microsoft Productivity Power Tools for Visual Studio 2010 has been Updated'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-5624315653775135652</id><published>2010-10-09T08:29:00.001+02:00</published><updated>2010-10-09T08:29:16.598+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='command-line tips'/><title type='text'>Equivalent of Unix’s ls –lah | grep something for Windows</title><content type='html'>&lt;p&gt;Hello, ever since I am using linux based platforms I loved them for the rich command shell. It’s been very easy for me to find what I am looking for using command piping and the grep command. A very common combination that I’ve been through is “ls –lah | grep something”, which searches for specific file in current folder. Or “ps –ax | grep processname” which searches for specific processanme in the list of all running processes. Recently I had to, on Windows OS, very often run “netstat –an” to search whether specific port is occupied and by which executable. However that Windows OS is Windows Server, and it has lots of services running, so finding a specific port was terribly hard. A quick search gave me desired result.&lt;/p&gt; &lt;p&gt;You can use Windows’ command “find” exactly the same way you use “grep” in linux/unix! So finding a specific port occupation is like that:&lt;/p&gt; &lt;p&gt;netstat –anb | find “:80”&lt;/p&gt; &lt;p&gt;this will list all “:80” in the list, which basically means – all 80 ports occupied! &lt;/p&gt; &lt;p&gt;Great stuff!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-5624315653775135652?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=5624315653775135652&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5624315653775135652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5624315653775135652'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2010/10/equivalent-of-unixs-ls-lah-grep.html' title='Equivalent of Unix’s ls –lah | grep something for Windows'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-4930174483380109267</id><published>2010-10-08T00:02:00.001+02:00</published><updated>2010-10-08T12:48:02.829+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='ffmpeg'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='azure'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Convert video files in Windows Azure /using FFMPEG/</title><content type='html'>&lt;p&gt;There was a question on the Windows Azure MSDN forums, that pushed me to do that sample! The question is “Can I use Windows Azure environment to convert video files”. The simple answer is "YES”! But how to achieve that?&lt;/p&gt; &lt;p&gt;Frankly, I was thinking on that for a while. Yes, I really was! I’ve been using FFMPEG in my projects, but Linux based with PHP. I was wandering how it works on Windows OS. And the time to figure that out came!&lt;/p&gt; &lt;p&gt;I created a very very light demo project on how to process video files using FFMPEG in Windows Azure, you can download it from &lt;a href="http://cid-1bce1d5766df232b.office.live.com/self.aspx/.Public/Azure/CloudFFMpeg.rar" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;What you have to know – FFMPEG windows binary is single executable which brings all codecs (up to release date) with it. You have to put it in you Azure role (worker role preferably) and execute it via the Process.Start(ProcessStartiInfo psi) overload method. I have included the binary and a sample video for your convenience!&lt;/p&gt; &lt;p&gt;Here is what I do:&lt;/p&gt;&lt;pre style="font-family: consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Assembly&lt;/span&gt; asm = &lt;span style="color: #2b91af"&gt;Assembly&lt;/span&gt;.GetExecutingAssembly();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;string&lt;/span&gt; path = asm.Location;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; path = path.Substring(0, path.LastIndexOf(&lt;span style="color: #a31515"&gt;@"\"&lt;/span&gt;)+1);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green"&gt;//path = path + "ffmpeg\ffmpeg.exe";&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;string&lt;/span&gt; tmpName = &lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.GetTempFileName();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tmpName = tmpName.Substring(0, tmpName.Length - 4);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tmpName = tmpName + &lt;span style="color: #a31515"&gt;".flv"&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;ProcessStartInfo&lt;/span&gt; psi = &lt;span style="color: blue"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af"&gt;ProcessStartInfo&lt;/span&gt;();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; psi.FileName = &lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;@"""{0}ffmpeg\ffmpeg.exe"""&lt;/span&gt;, path);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; psi.Arguments = &lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;@"-i ""{0}ffmpeg\MVI_1042.AVI"" -y ""{1}"""&lt;/span&gt;, path, tmpName);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; psi.CreateNoWindow = &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; psi.ErrorDialog = &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; psi.UseShellExecute = &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; psi.WindowStyle = &lt;span style="color: #2b91af"&gt;ProcessWindowStyle&lt;/span&gt;.Hidden;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; psi.RedirectStandardOutput = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; psi.RedirectStandardError = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;try&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green"&gt;// Start the process with the info we specified.&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green"&gt;// Call WaitForExit and then the using statement will close.&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;using&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;Process&lt;/span&gt; exeProcess = &lt;span style="color: #2b91af"&gt;Process&lt;/span&gt;.Start(psi))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;StreamReader&lt;/span&gt; output = exeProcess.StandardOutput;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;StreamReader&lt;/span&gt; error = exeProcess.StandardError;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exeProcess.WaitForExit();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;string&lt;/span&gt; outString = output.ReadToEnd();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;string&lt;/span&gt; errString = error.ReadToEnd();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Trace&lt;/span&gt;.WriteLine(outString);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Trace&lt;/span&gt;.TraceError(errString);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;byte&lt;/span&gt;[] fileBytes = &lt;span style="color: #2b91af"&gt;File&lt;/span&gt;.ReadAllBytes(tmpName);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;catch&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;Exception&lt;/span&gt; e)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Trace&lt;/span&gt;.TraceError(e.Message);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Of course, you can upgrade a lot of thing of this demo application, but it was create in just couple of minutes! One thing you may want to consider is using Azure Blob as store for your executable! Each time you start a conversion process, just check the blob if it is changed. Thus you will be able to update to the most recent version of FFMPEG without even touching your deployed Azure Service!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-4930174483380109267?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=4930174483380109267&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/4930174483380109267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/4930174483380109267'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2010/10/convert-video-files-in-windows-azure.html' title='Convert video files in Windows Azure /using FFMPEG/'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-8178255119656002739</id><published>2010-09-29T22:36:00.001+03:00</published><updated>2010-09-29T22:36:14.133+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='azure'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Tip on using the SQL Azure migration wizard</title><content type='html'>&lt;p&gt;If you’ve been developing or just playing around for &lt;a href="http://www.azure.com/" target="_blank"&gt;Windows Azure&lt;/a&gt; and using the &lt;a href="http://www.azure.com" target="_blank"&gt;SQL Azure&lt;/a&gt;, inevitably you’ve been using &lt;a href="http://sqlazuremw.codeplex.com/" target="_blank"&gt;SQL Azure Migration Wizard&lt;/a&gt;. If not – go ahead and download it! It’s the ultimate tool to migrate your &lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/r2.aspx" target="_blank"&gt;SQL Server&lt;/a&gt; data to and from &lt;a href="http://www.azure.com" target="_blank"&gt;SQL Azure&lt;/a&gt; and vise-versa. &lt;/p&gt;  &lt;p&gt;I would like to share a tip, that most probably you have noticed but you are not sure what it is. Since couple of release &lt;a href="http://sqlazuremw.codeplex.com/" target="_blank"&gt;SQL Azure Migration Wizard&lt;/a&gt; relies on &lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/r2.aspx" target="_blank"&gt;SQL Server 2008 R2&lt;/a&gt; bits (Express also works). There is small problem when you also have earlier version of &lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/r2.aspx" target="_blank"&gt;SQL Server&lt;/a&gt; and/or &lt;a href="http://go.microsoft.com/fwlink/?LinkID=187979&amp;amp;clcid=0x409" target="_blank"&gt;Management Studio&lt;/a&gt;. The tool from management studio that is useful to &lt;a href="http://sqlazuremw.codeplex.com/" target="_blank"&gt;SQL Azure Migration Wizard&lt;/a&gt; is called &lt;a href="http://msdn.microsoft.com/en-us/library/ms162802.aspx" target="_blank"&gt;bcp&lt;/a&gt;. It is a command line tool to bulk coping &lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/r2.aspx" target="_blank"&gt;SQL Server&lt;/a&gt; tables. And there is a difference in version that comes with &lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/r2.aspx" target="_blank"&gt;SQL Server 2008 R2&lt;/a&gt;, and the one that comes with &lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/r2.aspx" target="_blank"&gt;SQL Server&lt;/a&gt; 2008 (-). The most recent one has command-line option “-d”, while the others don’t. The trick is to change your PATH environment variable. Remove anything related to older version of &lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/r2.aspx" target="_blank"&gt;SQL Server&lt;/a&gt; like this:&lt;/p&gt;  &lt;p&gt;C:\Program Files (x86)\Microsoft SQL Server\90\Tools\Binn&lt;/p&gt;  &lt;p&gt;Where the old &lt;a href="http://msdn.microsoft.com/en-us/library/ms162802.aspx" target="_blank"&gt;BCP&lt;/a&gt; resides. If you run &lt;a href="http://msdn.microsoft.com/en-us/library/ms162802.aspx" target="_blank"&gt;BCP&lt;/a&gt; from that folder you will see:&lt;/p&gt;  &lt;p&gt;C:\Program Files (x86)\Microsoft SQL Server\90\Tools\Binn&amp;gt;bcp   &lt;br /&gt;usage: bcp {dbtable | query} {in | out | queryout | format} datafile    &lt;br /&gt;&amp;#160; [-m maxerrors]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-f formatfile]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-e errfile]    &lt;br /&gt;&amp;#160; [-F firstrow]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-L lastrow]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-b batchsize]    &lt;br /&gt;&amp;#160; [-n native type]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-c character type]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-w wide character type]    &lt;br /&gt;&amp;#160; [-N keep non-text native] [-V file format version] [-q quoted identifier]    &lt;br /&gt;&amp;#160; [-C code page specifier]&amp;#160; [-t field terminator]&amp;#160;&amp;#160;&amp;#160; [-r row terminator]    &lt;br /&gt;&amp;#160; [-i inputfile]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-o outfile]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-a packetsize]    &lt;br /&gt;&amp;#160; [-S server name]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-U username]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-P password]    &lt;br /&gt;&amp;#160; [-T trusted connection]&amp;#160;&amp;#160; [-v version]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-R regional enable]    &lt;br /&gt;&amp;#160; [-k keep null values]&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-E keep identity values]    &lt;br /&gt;&amp;#160; [-h &amp;quot;load hints&amp;quot;]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-x generate xml format file]&lt;/p&gt;  &lt;p&gt;There is no option “-d” which is to select a database, which option exists in R2 version of SQL Server 2008:&lt;/p&gt;  &lt;p&gt;C:\&amp;gt;bcp   &lt;br /&gt;usage: bcp {dbtable | query} {in | out | queryout | format} datafile    &lt;br /&gt;&amp;#160; [-m maxerrors]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-f formatfile]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-e errfile]    &lt;br /&gt;&amp;#160; [-F firstrow]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-L lastrow]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-b batchsize]    &lt;br /&gt;&amp;#160; [-n native type]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-c character type]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-w wide character type]    &lt;br /&gt;&amp;#160; [-N keep non-text native] [-V file format version] [-q quoted identifier]    &lt;br /&gt;&amp;#160; [-C code page specifier]&amp;#160; [-t field terminator]&amp;#160;&amp;#160;&amp;#160; [-r row terminator]    &lt;br /&gt;&amp;#160; [-i inputfile]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-o outfile]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-a packetsize]    &lt;br /&gt;&amp;#160; [-S server name]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-U username]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-P password]    &lt;br /&gt;&amp;#160; [-T trusted connection]&amp;#160;&amp;#160; [-v version]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-R regional enable]    &lt;br /&gt;&amp;#160; [-k keep null values]&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-E keep identity values]    &lt;br /&gt;&amp;#160; [-h &amp;quot;load hints&amp;quot;]&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-x generate xml format file]    &lt;br /&gt;&amp;#160; [-d database name]&lt;/p&gt;  &lt;p&gt;The point that having earlier version of SQL Server Management Studio it’s folder appears earlier in the PATH environment variable. When you run &lt;a href="http://sqlazuremw.codeplex.com/" target="_blank"&gt;SQL Azure Migration Wizard&lt;/a&gt; it tries to launch bcp.exe without specifying folder relaying on the fact that the folder will be part of the PATH environment variable. But the earlier version will come first and that &lt;a href="http://msdn.microsoft.com/en-us/library/ms162802.aspx" target="_blank"&gt;bcp&lt;/a&gt; will be executed, so you will get errors in &lt;a href="http://sqlazuremw.codeplex.com/" target="_blank"&gt;SQL Azure Migration Wizard&lt;/a&gt;. To avoid that errors and run everything smoothly, just remove the old folder from the PATH variable.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;How to edit PATH variable?&lt;/li&gt;    &lt;li&gt;Click on START then navigate to “Computer”&lt;/li&gt;    &lt;li&gt;Right click on “Computer” and select “Properties”&lt;/li&gt;    &lt;li&gt;From properties window select “Advanced system settings”:&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_g4vzmfkZQow/TKOVIAWI9UI/AAAAAAAAAag/jJkWdrW_xlk/s1600-h/image%5B2%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_g4vzmfkZQow/TKOVI3sZ20I/AAAAAAAAAak/ZW-Jxnn91jw/image_thumb.png?imgmax=800" width="244" height="177" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;On the new window that will popup, a tab “Advanced” will be selected. There is a button “Environment Variables” at lower right corner. Click on it:&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_g4vzmfkZQow/TKOVJDxSWMI/AAAAAAAAAao/DFi8z9bKgBk/s1600-h/image%5B5%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_g4vzmfkZQow/TKOVJ49n9NI/AAAAAAAAAas/Nsjk8dT18q8/image_thumb%5B1%5D.png?imgmax=800" width="217" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Edit the “PATH” variable, which is under “System variables”. Do not edit the one under “User variables”:&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_g4vzmfkZQow/TKOVKFaongI/AAAAAAAAAaw/0-i7yFH2U_8/s1600-h/image%5B8%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_g4vzmfkZQow/TKOVLHKgVFI/AAAAAAAAAa0/zNY7KobpddE/image_thumb%5B2%5D.png?imgmax=800" width="221" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Good luck and enjoy the cloud!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-8178255119656002739?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=8178255119656002739&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/8178255119656002739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/8178255119656002739'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2010/09/tip-on-using-sql-azure-migration-wizard.html' title='Tip on using the SQL Azure migration wizard'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_g4vzmfkZQow/TKOVI3sZ20I/AAAAAAAAAak/ZW-Jxnn91jw/s72-c/image_thumb.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-270850204265612569</id><published>2010-08-31T13:18:00.001+02:00</published><updated>2010-08-31T15:23:45.551+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>How to publish your Windows Azure application right from Visual Studio 2010</title><content type='html'>&lt;p&gt;Windows Azure is an emerging technology that will be gaining bigger share of our life as software developers or IT Pros. Using earlier releases of Windows Azure Tools for Visual Studio there was an almost painful process of deploying application into the Azure environment. The standard Publish process was creating Azure package and opens the Windows Azure portal for us to publish our package manually. This option still exists in Visual Studio 2010, and is the only option in Visual Studio 2008. However, there is a new, slick option that allows us to publish / deploy our azure package right from within Visual Studio. This post is around that particular option.&lt;/p&gt;  &lt;p&gt;Before we begin, let’s make sure we have installed the most recent version of &lt;a href="go.microsoft.com/fwlink/?LinkId=128752"&gt;Windows Azure Tools for Visual Studio&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;For the purpose of the demo I will create very simple CloudDemo application. Just select “File” –&amp;gt; “New” –&amp;gt; “Project”, and then choose “Cloud” from “Installed Templates”. The only available template is “Windows Azure Cloud Service C#”:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_g4vzmfkZQow/THzkuNzN3II/AAAAAAAAAYM/p9pMyDbqyds/s1600-h/01_NewProject%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="01_NewProject" border="0" alt="01_NewProject" src="http://lh6.ggpht.com/_g4vzmfkZQow/THzkuuPfftI/AAAAAAAAAYQ/jTtznJRHNNI/01_NewProject_thumb.png?imgmax=800" width="244" height="179" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;A new window will pop up, which is a wizard for initial configuring Roles for our service. Just add one ASP.NET Web Role:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_g4vzmfkZQow/THzkvBhDOVI/AAAAAAAAAYU/E1lwd9TE9Qk/s1600-h/02_addWebRole%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="02_addWebRole" border="0" alt="02_addWebRole" src="http://lh3.ggpht.com/_g4vzmfkZQow/THzkvxbHBJI/AAAAAAAAAYY/h8lc_KkGXXw/02_addWebRole_thumb.png?imgmax=800" width="244" height="154" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Assuming this is our cloud project we want to deploy, let’s first pass the &lt;a href="http://blogs.staykov.net/2010/07/windows-azure-web-role-deployment.html"&gt;Windows Azure Web Role deployment checklist&lt;/a&gt;, before we continue (it is a common mistake to miss configuring of DiagnosticsConnectionString setting of our WebRole).&lt;/p&gt;  &lt;p&gt;Now is time to publish our Windows Azure service with that single ASP.NET WebRole. There is initial configuration, that must be performed once. Then every time we go to publish a new version, it will be just a single click away!&lt;/p&gt;  &lt;p&gt;Right click on the Windows Azure Service project from our solution and choose “Publish” from the context menu:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_g4vzmfkZQow/THzkwduAmZI/AAAAAAAAAYc/7JCHosX5enM/s1600-h/03_publishMenu%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="03_publishMenu" border="0" alt="03_publishMenu" src="http://lh6.ggpht.com/_g4vzmfkZQow/THzkwyMOT5I/AAAAAAAAAYg/MczCZMznfNo/03_publishMenu_thumb.png?imgmax=800" width="225" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This will popup a new window, that will help publish our project:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_g4vzmfkZQow/THzkxUs6QZI/AAAAAAAAAYk/vBH2fndanqY/s1600-h/04_publish_mainScreen%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="04_publish_mainScreen" border="0" alt="04_publish_mainScreen" src="http://lh5.ggpht.com/_g4vzmfkZQow/THzkyUDPRZI/AAAAAAAAAYo/szwUNEcr0y4/04_publish_mainScreen_thumb.png?imgmax=800" width="244" height="223" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;There are two options to choose from: &lt;em&gt;Create Service Package Only&lt;/em&gt; and &lt;em&gt;Deploy your Cloud Service to Windows Azure&lt;/em&gt;. We are interested in the second one – Deploy your Cloud Service to Windows Azure. Now we have to configure our credentials for deploying onto Windows Azure. The deployment process uses the Windows Azure managed API that works with client certificate authentication, and there is a neat option for generating client certificates for use with Windows Azure. From that window that is still open (Publish Cloud Service) open the drop down, which is right below “Credentials” and choose “Add …”:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_g4vzmfkZQow/THzkyiUMaTI/AAAAAAAAAYs/53bBE_7V-mE/s1600-h/05_publish_mainScreen_addCredential%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="05_publish_mainScreen_addCredential" border="0" alt="05_publish_mainScreen_addCredential" src="http://lh4.ggpht.com/_g4vzmfkZQow/THzkzLp3_GI/AAAAAAAAAYw/8OlucVF93KM/05_publish_mainScreen_addCredential_thumb.png?imgmax=800" width="244" height="223" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Another window “Cloud Service Management Authentication” will open:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_g4vzmfkZQow/THzk0OUUUCI/AAAAAAAAAY0/-8SiEF7QZ4k/s1600-h/06_publish_addCredentialWindow%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="06_publish_addCredentialWindow" border="0" alt="06_publish_addCredentialWindow" src="http://lh4.ggpht.com/_g4vzmfkZQow/THzk0oY5NpI/AAAAAAAAAY4/hgwyaLCCD7w/06_publish_addCredentialWindow_thumb.png?imgmax=800" width="244" height="167" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Within this window we will have to Create a certificate for authentication. Open the drop down and choose “&amp;lt;Create…&amp;gt;”:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_g4vzmfkZQow/THzk17XqnmI/AAAAAAAAAY8/PgCsY7BKrrY/s1600-h/07_publish_addCredentialWindowCreate%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="07_publish_addCredentialWindowCreate" border="0" alt="07_publish_addCredentialWindowCreate" src="http://lh3.ggpht.com/_g4vzmfkZQow/THzk2ZmlMyI/AAAAAAAAAZA/_DxiiHkUv8k/07_publish_addCredentialWindowCreate_thumb.png?imgmax=800" width="244" height="167" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This option will automatically create certificate for us (we have to name it). Once the certificate is created, we select it from the drop down menu and proceed to step (2) of the wizard, which is uploading our certificate to the Windows Azure Portal. For this task, the wizard offers us an easy way of doing this by copying the certificate to a temp folder. By clicking on the “Copy the full path” link it (the full path) is automatically copied onto our clipboard:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_g4vzmfkZQow/THzk23ZU1TI/AAAAAAAAAZE/lTOjeY9I458/s1600-h/08_publish_addCredentialAlmostFinal%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="08_publish_addCredentialAlmostFinal" border="0" alt="08_publish_addCredentialAlmostFinal" src="http://lh3.ggpht.com/_g4vzmfkZQow/THzk3Uq1dzI/AAAAAAAAAZI/EvaXeYAQqmo/08_publish_addCredentialAlmostFinal_thumb.png?imgmax=800" width="244" height="167" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now we have to log-in to the Windows Azure portal (&lt;a href="http://windows.azure.com/"&gt;http://windows.azure.com/&lt;/a&gt;) (but don’t close any Visual Studio 2010 Window, as we will be coming back to it) and upload certificate to the appropriate project. First we must the project for which we will assign the certificate:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_g4vzmfkZQow/THzk35tequI/AAAAAAAAAZM/qNIXm2k87xA/s1600-h/09_AzurePortal_SelectProject%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="09_AzurePortal_SelectProject" border="0" alt="09_AzurePortal_SelectProject" src="http://lh4.ggpht.com/_g4vzmfkZQow/THzk4ST6MgI/AAAAAAAAAZQ/Yai1xCdBO2c/09_AzurePortal_SelectProject_thumb.png?imgmax=800" width="244" height="99" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Then we click on the “Account” tab and navigate to the “Manage my API certificates” link:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_g4vzmfkZQow/THzk41-fSLI/AAAAAAAAAZU/VqU9g-5DeTc/s1600-h/10_AzurePortal_Account%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="10_AzurePortal_Account" border="0" alt="10_AzurePortal_Account" src="http://lh5.ggpht.com/_g4vzmfkZQow/THzk5R7HCTI/AAAAAAAAAZY/x1ZYNk6KCWk/10_AzurePortal_Account_thumb.png?imgmax=800" width="244" height="99" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Here, we simply click browse and just paste the copied path to the certificate, then click Upload:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_g4vzmfkZQow/THzk5wsdL9I/AAAAAAAAAZc/qp1IV3V6RTE/s1600-h/11_AzurePortal_UploadCertificate%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="11_AzurePortal_UploadCertificate" border="0" alt="11_AzurePortal_UploadCertificate" src="http://lh5.ggpht.com/_g4vzmfkZQow/THzk6XaX4UI/AAAAAAAAAZg/g8w0w-haCG4/11_AzurePortal_UploadCertificate_thumb.png?imgmax=800" width="244" height="99" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Please note, that there is a small chance of encountering an error of type “The certificate is not yet valid” during the upload process. If it happens you have wait for a minute or two and try to upload it again. The reason for this error is that your computer time might not me as accurate and synchronized, as Windows Azure server’s. Thus, your clock may be a minute or more ahead of actual time and your generated certificate is valid from point of time, which has not yet occurred on Windows Azure servers. When you upload the certificate you will see it in the list of installed certificates:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_g4vzmfkZQow/THzk60Qdx_I/AAAAAAAAAZk/Z79_1dgmvwg/s1600-h/13_AzurePortal_UploadedCertificate%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="13_AzurePortal_UploadedCertificate" border="0" alt="13_AzurePortal_UploadedCertificate" src="http://lh6.ggpht.com/_g4vzmfkZQow/THzk7TyIU0I/AAAAAAAAAZo/foIfOgREsvw/13_AzurePortal_UploadedCertificate_thumb.png?imgmax=800" width="244" height="99" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;After you upload the certificate successfully to the Windows Azure server, you have to go back to the “Account” tab and copy the Subscription ID to your clipboard:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_g4vzmfkZQow/THzk77cEihI/AAAAAAAAAZs/MuuMISn-G1A/s1600-h/12_AzurePortal_SubscibtinId%5B5%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="12_AzurePortal_SubscibtinId" border="0" alt="12_AzurePortal_SubscibtinId" src="http://lh6.ggpht.com/_g4vzmfkZQow/THzk8c6EvnI/AAAAAAAAAZw/kOGnuxddkFw/12_AzurePortal_SubscibtinId_thumb%5B1%5D.png?imgmax=800" width="244" height="165" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Going back to Visual Studio’s “Cloud Service Management Authentication” window, you have to paste your subscription ID onto the field for it:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_g4vzmfkZQow/THzk8xtTCRI/AAAAAAAAAZ0/m_lxbvtBacg/s1600-h/14_publish_CloseToOK%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="14_publish_CloseToOK" border="0" alt="14_publish_CloseToOK" src="http://lh3.ggpht.com/_g4vzmfkZQow/THzk9bspc-I/AAAAAAAAAZ4/HEeqVoEuM04/14_publish_CloseToOK_thumb.png?imgmax=800" width="244" height="167" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;At the last step of configuring our account, we have to define a meaningful name for it, so when we see in the drop down list of installed Credentials, we will know what service is this account for. For this project I chose the name “WindowsAzureCloudDemoCert”. When we are ready and hit OK button, we will go back to the “Publish Cloud Service” window, we will select “WindowsAzureCloudDemoCert” from Credentials drop down. An authentication attempt will be made to the Azure service to validate Credentials. If everything is fine we will see details for our account, such as Account name, Slots for deployment (production &amp;amp; stating), Storage accounts associated with that service account:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://lh5.ggpht.com/_g4vzmfkZQow/THzk9-wZ-VI/AAAAAAAAAZ8/Y9SjK5o6zkQ/s1600-h/15_publish_OK%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="15_publish_OK" border="0" alt="15_publish_OK" src="http://lh4.ggpht.com/_g4vzmfkZQow/THzk-dm6uoI/AAAAAAAAAaA/nfKAPsxjFgY/15_publish_OK_thumb.png?imgmax=800" width="244" height="223" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;When you hit OK a publish process will start. A successfull publish process finishes for about 10 minutes. A friendly window within Visual Studio “Windows Azure Activity Log” will show the process steps and history:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_g4vzmfkZQow/THzk-zK27wI/AAAAAAAAAaE/C2HDV7VW_1s/s1600-h/16_published%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="16_published" border="0" alt="16_published" src="http://lh6.ggpht.com/_g4vzmfkZQow/THzk_dJAUPI/AAAAAAAAAaI/vEbicCH3eKw/16_published_thumb.png?imgmax=800" width="244" height="63" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Well, as I said there is initial process of configuring credentials. Once you set up everything all right, the publish process will be just choosing the credentials and Hosted Service Slot for deployment (production or staging).&lt;/p&gt;  &lt;p&gt;Have a great time developing for Windows Azure!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-270850204265612569?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=270850204265612569&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/270850204265612569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/270850204265612569'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2010/08/how-to-publish-your-windows-azure.html' title='How to publish your Windows Azure application right from Visual Studio 2010'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_g4vzmfkZQow/THzkuuPfftI/AAAAAAAAAYQ/jTtznJRHNNI/s72-c/01_NewProject_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-6406258374861624831</id><published>2010-08-24T10:32:00.001+02:00</published><updated>2010-08-24T10:32:43.231+02:00</updated><title type='text'>How to debug your application (http protocol) using Fiddler</title><content type='html'>&lt;p&gt;&lt;a href="http://www.fiddler2.com/" target="_blank"&gt;Fiddler&lt;/a&gt; has been out there for a while, but recently I discovered that it is either unknown, or not used, so I decided to write a short post on what it is, and how we can easily debug HTTP traffic (for example WCF Service calls) using it. &lt;/p&gt;  &lt;p&gt;Before diving into essentials I would like to mention what it is. &lt;a href="http://www.fiddler2.com/" target="_blank"&gt;Fiddler&lt;/a&gt; is a debugging HTTP proxy(&lt;a href="http://en.wikipedia.org/wiki/Proxy_server" target="_blank"&gt;you can read more on what proxy server is here&lt;/a&gt;). Being so, when started it automatically configures user’s system to use it.&lt;/p&gt;  &lt;p&gt;So, here is a “Welcome” screen of &lt;a href="http://www.fiddler2.com/" target="_blank"&gt;Fiddler&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_g4vzmfkZQow/THODmagTLQI/AAAAAAAAAXY/7oiedoyigJA/s1600-h/fiddler_01_main%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="fiddler_01_main" border="0" alt="fiddler_01_main" src="http://lh4.ggpht.com/_g4vzmfkZQow/THODm2jZ32I/AAAAAAAAAXc/2D6bbdtqKC0/fiddler_01_main_thumb.png?imgmax=800" width="244" height="146" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Where, you can see a Web Sessions list (1), Working area (2,3) which is split over Action tabs (2) and Information window part (3). From the Action tabs, you would spent most of the time inside “Inspectors” while you debug your http traffic. &lt;/p&gt;  &lt;p&gt;Once you download, install and run it, you can check the Internet Connection settings, and you will notice that it has automatically configured the system to use a HTTP Proxy on address 127.0.0.1 (which is local machine) and port 8888:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_g4vzmfkZQow/THODnmKqoGI/AAAAAAAAAXg/_TWrSl9lw8s/s1600-h/fiddler_02_connections%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="fiddler_02_connections" border="0" alt="fiddler_02_connections" src="http://lh3.ggpht.com/_g4vzmfkZQow/THODoMn_qGI/AAAAAAAAAXk/Zj7IN2pvjOI/fiddler_02_connections_thumb.png?imgmax=800" width="244" height="231" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Please note, that although the shortest way to go to “Internet options” if from the “Tools” –&amp;gt; “Options” menu from Internet Explorer, these options are not just “Internet Explorer Options”. These are system-wide internet connectivity options, and all windows based programs are reading them. So when this proxy is set, any program that relies on windows settings (and not its own settings) will use that proxy for HTTP connections.&lt;/p&gt;  &lt;p&gt;So let’s see how to inspect a single HTTP request. Just install and run Fiddler. You can run fiddler either from Windows’ Start Menu, or from Internet Explorer’s “Tools” menu. Once you run it, just leave it open and navigate to a website of your choice. You will be surprised how many HTTP requests are issued for a single web page to load. Every single image you see, every single style loaded, every JavaScript load initiates a HTTP request. So pick up one of the requests (preferable some of the first requests, that will load the HTML) and go to Inspectors from Action tabs:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_g4vzmfkZQow/THODo3fLJRI/AAAAAAAAAXo/ZZ2yukdOyrM/s1600-h/fiddler_03_inspectors%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="fiddler_03_inspectors" border="0" alt="fiddler_03_inspectors" src="http://lh5.ggpht.com/_g4vzmfkZQow/THODpcwEe0I/AAAAAAAAAXs/CSvA_VhTEFI/fiddler_03_inspectors_thumb.png?imgmax=800" width="244" height="168" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So, you see the selected web session (1), and you click on Inspectors (2). Well, the Inspectors information area is split horizontally on two parts. First part (3,4) is inspecting HTTP request issued by the client application, while the second (bottom) part (5,6) is inspecting the server response. On the image 3 and 5 are the different types of inspectors, while 4 &amp;amp; 6 are the information parts that shows information structured by the way of showing it (using 3 &amp;amp; 5). You will easily see that you can inspect the request by viewing it in:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Headers – showing only headers &lt;/li&gt;    &lt;li&gt;TextView – showing plain text view of the request &lt;/li&gt;    &lt;li&gt;WebForms – showing only variable names &amp;amp; values sent with the request (if you have some forms submitting some data) &lt;/li&gt;    &lt;li&gt;HexView – shows hexadecimal representation of the request &lt;/li&gt;    &lt;li&gt;Auth – showing just the Authentication headers (if present), so you can inspect issues with authentication &lt;/li&gt;    &lt;li&gt;Raw – showing the Raw HTTP request (headers + body as sent by the client application) &lt;/li&gt;    &lt;li&gt;XML – showing the request in XML tree navigation structure. It is very useful for visualizing XML RPC communication or SOAP communication, as it displays the XML in tree structure. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;For the Response part of the screen you will see 3 additional types of displaying information:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Transformer – showing general information on the response, as well as response size &lt;/li&gt;    &lt;li&gt;Caching – showing whether the response sent is cached &lt;/li&gt;    &lt;li&gt;Privacy – showing any information, if present, regarding PGP privacy &lt;/li&gt;    &lt;li&gt;Image View – showing the actual image, if the request was returning image &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;During development process we are more likely to run your application at “localhost”. What is localhost? Long explanation you can find here: &lt;a title="http://en.wikipedia.org/wiki/Localhost" href="http://en.wikipedia.org/wiki/Localhost"&gt;http://en.wikipedia.org/wiki/Localhost&lt;/a&gt;. In basics, this your computer. And localhost is always resolved as &lt;a href="http://en.wikipedia.org/wiki/IPv4"&gt;IPv4&lt;/a&gt; address 127.0.0.1 or &lt;a href="http://en.wikipedia.org/wiki/IPv6"&gt;IPv6&lt;/a&gt; address ::1. Here comes the tricky part. You can read the &lt;a href="http://fiddler2.com/Fiddler/help/hookup.asp#Q-LocalTraffic"&gt;FAQ Section on Debugging localhost&lt;/a&gt;. As explained, if your application launches on &lt;a href="http://localhost:45960/WebSite1/Default.aspx"&gt;http://localhost:45960/WebSite1/Default.aspx&lt;/a&gt;, you can change the “localhost” to “ipv4.fiddler” (&lt;a href="http://ipv4.fiddler:45960/WebSite1/Default.aspx"&gt;http://ipv4.fiddler:45960/WebSite1/Default.aspx&lt;/a&gt;) and you will see the same page, but the traffic will go through fiddler. &lt;/p&gt;  &lt;p&gt;The issue comes from the way localhost is interpreted by applications. Although a system proxy is configured, the applications (especially .NET based) automatically bypass proxy for this address. And you have no means (in .NET) to instruct application to use proxy server when connecting to localhost. So you have to use any other name to access your application. The tricky moment is that Cassini Web Server (Visual Studio development server) binds only to IPv4 address of 127.0.0.1. And you must somehow add another hostname that resolves to 127.0.0.1. The easiest, the smoothest way to do that without writing any code, without altering any configuration setting of your project, without changing the registry, is relying on the way windows DNS resolver works. On every windows machine (well at least since Windows XP &amp;amp; 2000 and later) there is one single plain text file, located on same place on all windows platforms (x86, x64) regardless of windows version:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_g4vzmfkZQow/THODpwICkXI/AAAAAAAAAXw/9eRXgOZP0iU/s1600-h/fiddler_04_hosts%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="fiddler_04_hosts" border="0" alt="fiddler_04_hosts" src="http://lh3.ggpht.com/_g4vzmfkZQow/THODqVHiJaI/AAAAAAAAAX0/9F_sDf53SRw/fiddler_04_hosts_thumb.png?imgmax=800" width="244" height="128" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;c:\windows\system32\drivers\etc\hosts&lt;/p&gt;  &lt;p&gt;It is a file without extension. In more recent versions of windows you have to be administrator (run notepad as administrator) in order to save changes to that file. It is very simple and its first lines are following:&lt;/p&gt;  &lt;p&gt;# Copyright (c) 1993-2009 Microsoft Corp.    &lt;br /&gt;#     &lt;br /&gt;# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.     &lt;br /&gt;#     &lt;br /&gt;# This file contains the mappings of IP addresses to host names. Each     &lt;br /&gt;# entry should be kept on an individual line. The IP address should     &lt;br /&gt;# be placed in the first column followed by the corresponding host name.     &lt;br /&gt;# The IP address and the host name should be separated by at least one     &lt;br /&gt;# space.     &lt;br /&gt;#     &lt;br /&gt;# Additionally, comments (such as these) may be inserted on individual     &lt;br /&gt;# lines or following the machine name denoted by a '#' symbol.     &lt;br /&gt;#     &lt;br /&gt;# For example:     &lt;br /&gt;#     &lt;br /&gt;#&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 102.54.94.97&amp;#160;&amp;#160;&amp;#160;&amp;#160; rhino.acme.com&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; # source server     &lt;br /&gt;#&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 38.25.63.10&amp;#160;&amp;#160;&amp;#160;&amp;#160; x.acme.com&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; # x client host &lt;/p&gt;  &lt;p&gt;# localhost name resolution is handled within DNS itself.    &lt;br /&gt;#&amp;#160;&amp;#160;&amp;#160; 127.0.0.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; localhost     &lt;br /&gt;#&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; localhost&lt;/p&gt;  &lt;p&gt;I open that file, and add a single line at the bottom:&lt;/p&gt;  &lt;p&gt;127.0.0.1 developdemo&lt;/p&gt;  &lt;p&gt;Now I know that whenever I type &lt;a href="http://developdemo/"&gt;http://developdemo/&lt;/a&gt; I will open the localhost (127.0.0.1). And whatever windows application makes a HTTP request to “developdemo” – it will be requesting information from localhost. And if Fiddler is running, it will log all and any HTTP requests that are going to and from developdemo host.&lt;/p&gt;  &lt;p&gt;Well, I gave you the basics, and I hope that you now know that there is a way to debug your HTTP based application.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-6406258374861624831?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=6406258374861624831&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6406258374861624831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6406258374861624831'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2010/08/how-to-debug-your-application-http.html' title='How to debug your application (http protocol) using Fiddler'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_g4vzmfkZQow/THODm2jZ32I/AAAAAAAAAXc/2D6bbdtqKC0/s72-c/fiddler_01_main_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-5568707863312872028</id><published>2010-07-01T09:18:00.001+03:00</published><updated>2010-07-01T09:40:47.491+03:00</updated><title type='text'>Windows Azure Web Role Deployment Checklist</title><content type='html'>&lt;p&gt;When you develop for Windows Azure for the first time, there are a couple of things that you have to be careful about, in order to deploy your application successfully.&lt;/p&gt;  &lt;p&gt;For this checklist (to be more complete) I will use a Silverlight Application with WCF RIA Services and Entity Framework 4.0. It is great and Windows Azure already supports .NET 4.0 along with all the goodies that come along with it. I will show the application in another post, now it is more important what we have to do in order to successfully deploy our application. I will not put them in ordered list, because if you fail in any, your application will cycle through “initializing – busy – stopping – initializing – busy – stopping”. &lt;/p&gt;  &lt;p&gt;You can download the &lt;a href="http://cid-1bce1d5766df232b.office.live.com/self.aspx/.Public/Infragistics.Cloud.zip" target="_blank"&gt;source solution from here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;· Diagnostics connection string&lt;/p&gt;  &lt;p&gt;Whenever you choose to create a new Web Role, a WebRole.cs file is added to your web application. It is very important part of your Windows Azure Web Role. It gives you the possibility to intercept the Start and Stop events of your Web Role and do some initializing or cleaning up. It also starts the Diagnostics Monitor, which is something you can’t live in Azure without! The Diagnostics Monitor uses Azure Storage to save diagnostics logs, that’s why it needs a connection string. This connection string, however is set to use development storage by default:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/anton_5F00_staykov.Azure+Checklist/checklist_5F00_01.png"&gt;&lt;/a&gt;&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/anton_5F00_staykov.Azure+Checklist/checklist_5F00_01.png"&gt;&lt;img border="0" alt="" src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/anton_5F00_staykov.Azure+Checklist/checklist_5F00_01.png" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It is very easy to change that connection string – just &lt;b&gt;right click&lt;/b&gt; on your Web Role from the Cloud Service project choose &lt;b&gt;Properties&lt;/b&gt;, then select &lt;b&gt;Settings&lt;/b&gt; from the left navigation tabs. Now click on the […] button which is located right next to the Value string and new window will appear:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/anton_5F00_staykov.Azure+Checklist/checklist_5F00_03.png"&gt;&lt;/a&gt;&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/anton_5F00_staykov.Azure+Checklist/checklist_5F00_02.png"&gt;&lt;img border="0" alt="" src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/anton_5F00_staykov.Azure+Checklist/checklist_5F00_02.png" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You have to enter storage credentials. A good practice is to always use HTTPS endpoints. The Account name and Account key, you can get from the Azure Developer portal. Once you create an Azure Storage service, you can give the account name, and the keys are generated from the portal:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/anton_5F00_staykov.Azure+Checklist/checklist_5F00_03.png"&gt;&lt;img border="0" alt="" src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/anton_5F00_staykov.Azure+Checklist/checklist_5F00_03.png" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You will have to go to Windows Azure (1) and then select your Storage Service (2). Your account name (4) and account keys (5, 6) are located within main Cloud Storage settings area (3). You can use either of the keys – Primary (5) or Secondary (6) as configuration.&lt;/p&gt;  &lt;p&gt;You are done. Of course the Windows Azure Storage service can be accessed from any place with internet connection, so now you can start and run your application to check out if it will run smoothly on local development fabric.&lt;/p&gt;  &lt;p&gt;· References in Web Role&lt;/p&gt;  &lt;p&gt;Dealing with References can be really annoying in Web Roles &amp;amp; Worker Roles! You have to be very careful – you have to select &lt;b&gt;Copy Local = True&lt;/b&gt;, for each and every assembly that you refer and that is not part of Core .NET Framework 4.0. This of course includes any third party assemblies (such as&lt;a href="http://www.infragistics.com/dotnet/netadvantage/aspnet.aspx#Overview"&gt; NetAdvantage for .NET&lt;/a&gt;). More interesting for you to find out, that you have to set Copy Local to True even for the following assemblies:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Microsoft.WindowsAzure.Diagnostics&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Microsoft.WindowsAzure.StorageClient&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The WindowsAzure part of the names of these assemblies would make you think that they must exists on the Azure VM, but they don’t! However the &lt;b&gt;Microsoft.WindowsAzure.ServiceRuntime&lt;/b&gt; is part of Azure VM deployment, and you can safely leave it as &lt;b&gt;Copy Local = False&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;Working with WCF RIA Services, you will also have to set this attribute (Copy Local) for all RIA assemblies:&lt;/p&gt;  &lt;p&gt;System.ServiceModel.DomainServices.EntityFramework&lt;/p&gt;  &lt;p&gt;System.ServiceModel.DomainServices.Hosting&lt;/p&gt;  &lt;p&gt;System.ServiceModel.DomainServices.Hosting.OData&lt;/p&gt;  &lt;p&gt;System.ServiceModel.DomainServices.Server&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/anton_5F00_staykov.Azure+Checklist/checklist_5F00_04.png"&gt;&lt;img border="0" alt="" src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/anton_5F00_staykov.Azure+Checklist/checklist_5F00_04.png" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;· Target CPU Architecture&lt;/p&gt;  &lt;p&gt;Windows Azure uses 64 bit CPUs and the operating system (Windows Server 2008 based) is x64. So your assemblies – any and all assemblies that run as part of your &lt;b&gt;Web Role&lt;/b&gt; should be compiled as either “Any CPU” or “x64”. In very rare situations, when you use &lt;b&gt;Worker Role&lt;/b&gt;, you can use x86 assemblies, but you can only execute them in separate &lt;a href="http://msdn.microsoft.com/en-us/library/ccf1tfx0.aspx"&gt;process&lt;/a&gt;, that is not part of the Role! The target CPU architecture is managed from &amp;quot;Configuration Manager&amp;quot;. You can launch the configuration manager by right clicking on the &lt;b&gt;Solution &lt;/b&gt;in &lt;b&gt;Solution Explorer&lt;/b&gt; and selecting &amp;quot;&lt;b&gt;Configuration Manager&lt;/b&gt;&amp;quot;. You will see the following dialog:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/anton_5F00_staykov.Azure+Checklist/checklist_5F00_05.png"&gt;&lt;img border="0" alt="" src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/anton_5F00_staykov.Azure+Checklist/checklist_5F00_05.png" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Most probably you've never seen this dialog, but it is something that you have to pay attention when developing for Azure!&lt;/p&gt;  &lt;p&gt;· Web.config issues&lt;/p&gt;  &lt;p&gt;As you may already know – Windows Azure Guest OS is Windows 2008 based. That means your web roles are run on IIS 7. So any configuration that is not compatible will cause your web role to not start and begin cycling.&lt;/p&gt;  &lt;p&gt;Well, this is first, not fully complete, but the very first checklist you have to check even before you are going to deploy your WebRole!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-5568707863312872028?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=5568707863312872028&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5568707863312872028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5568707863312872028'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2010/07/windows-azure-web-role-deployment.html' title='Windows Azure Web Role Deployment Checklist'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-8612251018464043808</id><published>2010-06-15T16:42:00.001+03:00</published><updated>2010-06-15T16:42:29.705+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='iis'/><title type='text'>Display PHP error messages on IIS 7.0 / 7.5</title><content type='html'>&lt;p&gt;Have you ever tried running PHP on IIS with FastCGI? Yes, it runs, and it does it smoothly. However regardless of php.ini settings for “display_errors” and “error_reporting”, starting with IIS 7.0, you will most probably see only “Internal Server Error 500.XX” for any error generated by PHP (even if it is just a &lt;em&gt;warning&lt;/em&gt; or even &lt;em&gt;notice&lt;/em&gt;). And yes, the hard workaround is to turn on Failed Request Tracing on the site, and examine FRT log files. Which I’m sure you don’t want!&lt;/p&gt;  &lt;p&gt;The solution is here: &lt;a title="http://serverfault.com/questions/69839/show-php-error-message-on-iis-7" href="http://serverfault.com/questions/69839/show-php-error-message-on-iis-7"&gt;http://serverfault.com/questions/69839/show-php-error-message-on-iis-7&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The reason:&lt;/p&gt;  &lt;p&gt;With IIS7, it doesn't pass the errors through by default. It's &amp;quot;existingResponse&amp;quot; that needs to be set.&lt;/p&gt;  &lt;p&gt;The solution (run this line with elevated command prompt):&lt;/p&gt;  &lt;p&gt;c:\windows\system32\inetsrv\appcmd.exe set config &amp;quot;{sitename}&amp;quot; -section:system.webServer/httpErrors /existingResponse:&amp;quot;PassThrough&amp;quot; /commit:apphost&lt;/p&gt;  &lt;p&gt;and do not forget to replace {sitename} with the real site name.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-8612251018464043808?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=8612251018464043808&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/8612251018464043808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/8612251018464043808'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2010/06/display-php-error-messages-on-iis-70-75.html' title='Display PHP error messages on IIS 7.0 / 7.5'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-8722806788329481364</id><published>2010-04-26T13:48:00.002+02:00</published><updated>2010-04-26T14:36:33.694+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SqlAzure'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>New features in SQL Azure</title><content type='html'>An amazing set of new features has been announced recently. These features include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;50 GB&lt;/strong&gt; Database SKU, available upon request&lt;/li&gt;&lt;li&gt;&lt;strong&gt;MARS&lt;/strong&gt; (Multiple Active Result Sets) This is very useful feature, since lots of developers are having issues with connection when using Entity Framework. The EF connection string enables MARS by default and developers are having though times to identify connection errors.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Alter rename&lt;/strong&gt; process for symmetry in renaming databases&lt;/li&gt;&lt;/ul&gt;You can read more details at SQL Azure team blog:&lt;br /&gt;&lt;a href="http://blogs.msdn.com/sqlazure/archive/2010/04/16/9997517.aspx" title="http://blogs.msdn.com/sqlazure/archive/2010/04/16/9997517.aspx"&gt;http://blogs.msdn.com/sqlazure/archive/2010/04/16/9997517.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-8722806788329481364?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=8722806788329481364&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/8722806788329481364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/8722806788329481364'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2010/04/new-features-in-sql-azure.html' title='New features in SQL Azure'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-7810497204097164777</id><published>2010-04-26T13:43:00.002+02:00</published><updated>2010-04-26T13:53:45.794+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>IIS Compression in Windows Azure is now possible</title><content type='html'>As by recent &lt;a href="http://blog.smarx.com/posts/iis-compression-in-windows-azure" target="_blank"&gt;blog post&lt;/a&gt; from &lt;a href="http://blog.smarx.com/" target="_blank"&gt;Steve Marx&lt;/a&gt;, the &lt;a href="http://learn.iis.net/page.aspx/121/iis-7-modules-overview/" target="_blank"&gt;Dynamic Compression module&lt;/a&gt; is now enabled in &lt;a href="http://www.microsoft.com/windowsazure/" target="_blank"&gt;Windows Azure&lt;/a&gt;. That change is made is March release of &lt;a href="http://msdn.microsoft.com/en-us/library/ff436045.aspx" target="_blank"&gt;Windows Azure Guest OS 1.2&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-7810497204097164777?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=7810497204097164777&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/7810497204097164777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/7810497204097164777'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2010/04/iis-compression-in-windows-azure-is-now.html' title='IIS Compression in Windows Azure is now possible'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-1525119758871397083</id><published>2010-04-23T11:16:00.001+02:00</published><updated>2010-04-23T11:16:32.999+02:00</updated><title type='text'>Imagine Cup local finals judge</title><content type='html'>&lt;p&gt;I am honored to be a judge at local finals of the &lt;a href="http://imaginecup.com/" target="_blank"&gt;Imagine Cup Student Competition 2010&lt;/a&gt;. I will be part of the jury for the &lt;a href="http://imaginecup.com/Competition/mycompetitionportal.aspx?competitionId=37" target="_blank"&gt;Software Design&lt;/a&gt; category.&lt;/p&gt;  &lt;p&gt;Good luck to all teams! &lt;/p&gt;  &lt;p&gt;May the technology be with you!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-1525119758871397083?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=1525119758871397083&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/1525119758871397083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/1525119758871397083'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2010/04/imagine-cup-local-finals-judge.html' title='Imagine Cup local finals judge'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-6296358259753970602</id><published>2010-04-06T21:53:00.002+02:00</published><updated>2010-04-26T13:54:17.041+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Solution to Silverlight Design Time issues in a Windows Azure Cloud Service</title><content type='html'>I just want to share a blog post from Azure team, where they reveal how to deal with bunch of irritating issues that one would have if developing Silverlight based application for the cloud. You can read the full story here: &lt;a href="http://blogs.msdn.com/jnak/archive/2010/03/23/fixing-the-silverlight-design-time-in-a-windows-azure-cloud-service.aspx" title="http://blogs.msdn.com/jnak/archive/2010/03/23/fixing-the-silverlight-design-time-in-a-windows-azure-cloud-service.aspx"&gt;http://blogs.msdn.com/jnak/archive/2010/03/23/fixing-the-silverlight-design-time-in-a-windows-azure-cloud-service.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-6296358259753970602?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=6296358259753970602&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6296358259753970602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6296358259753970602'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2010/04/solution-to-silverlight-design-time.html' title='Solution to Silverlight Design Time issues in a Windows Azure Cloud Service'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-3663007135916688368</id><published>2010-03-20T14:45:00.001+02:00</published><updated>2010-03-20T14:45:55.411+02:00</updated><title type='text'>Official Silverlight 4 Tools for VS 2010 RC is out</title><content type='html'>&lt;p&gt;It was not long ago when VS2010 RC become available. One unfortunate thing with it, was that the SL 4 BETA tools were not supported on VS 2010 RC and there were tons of question when shall we expect version of SL 4 tools that will work with VS 2010 RC. Well, here they are:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/cc838244(VS.96).aspx" href="http://msdn.microsoft.com/en-us/library/cc838244(VS.96).aspx"&gt;http://msdn.microsoft.com/en-us/library/cc838244(VS.96).aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Silverlight 4 RC Developer Runtime + Silverlight 4 Tools for VS 2010 RC + WCF RIA Services RC.&lt;/p&gt;  &lt;p&gt;I am not sure whether to be happy or sad for the last one. I was exploring the .NET RIA Services since their early CTP and I do have a project that uses Silverlight 3 RTM + WCF RIA Services Beta all developed on VS 2008. What was my surprise when I saw the installer splash screen of Silverlight 4 RC Tools. It was so kind to tell me that I have earlier version of WCF RIA Services, which will be uninstalled for the sake of new RC version. However, WCF RIA Services RC will only support Silverlight 4 and Visual Studio 2010 RC. So I decided to not make that big upgrade step of my project, because it is bit more complex than just a Silverlight application :). Anyway I know that sooner or later I will have to upgrade everything to 2010 versions because in either way WCF RIA Services will not support Silverlight 3.&lt;/p&gt;  &lt;p&gt;The only solution to “touch” Silverlight 4 RC Tools without crashing all my previous work is to use a VM to play around. I just feel I have too many VMs :) I am saving one separate real HDD for all my VMs …&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-3663007135916688368?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=3663007135916688368&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3663007135916688368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3663007135916688368'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2010/03/official-silverlight-4-tools-for-vs.html' title='Official Silverlight 4 Tools for VS 2010 RC is out'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-5104982150015189548</id><published>2010-02-08T15:49:00.001+02:00</published><updated>2010-02-08T15:49:56.047+02:00</updated><title type='text'>Visual Studio 2010 side-by-side with Visual Studio 2008</title><content type='html'>&lt;p&gt;Well, &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/10/19/vs-2010-and-net-4-0-beta-2.aspx" target="_blank"&gt;BETA2 of Visual Studio 2010 was announced&lt;/a&gt; with GO LIVE license, upgrade capability to RTM and side-by-side working with existing VS2008 installations.&lt;/p&gt;  &lt;p&gt;Well, maybe if you are using Visual Studio to compile and run your “Hello World” Console or Web Application you will have no issues running side-by-side.&lt;/p&gt;  &lt;p&gt;However, if you really want to explore all the new technologies, while still keeping “old” projects running, you simply can’t use both Visual Studios side-by-side. And here is one particular case in which you simply have to choose whether to stay on VS2008 or go for VS2010 and migrate your projects to 2010, because they will not be supported on VS2008. The special case is called:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.net/getstarted/riaservices/" target="_blank"&gt;WCF RIA Services&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;RIA Services is designed to make our Silverlight life easier, but instead it brings only troubles (when using side-by-side). And why? Because WCF RIA Services works &lt;strong&gt;either with&lt;/strong&gt; VS 2010 and SL4 &lt;strong&gt;OR&lt;/strong&gt; VS2008 SP1 and SL3. There is no side-by-side! If you have existing project(s) on VS 2008 SP1 with WCF RIA Services, you simply &lt;strong&gt;can’t &lt;/strong&gt;go and explore VS2010 SL4 and WCF RIA Services within VS 2010. &lt;/p&gt;  &lt;p&gt;Although you might want to say it is limitation for WCF RIA – yes, it is. But I can use &lt;strong&gt;both&lt;/strong&gt; VS2010 &lt;strong&gt;and&lt;/strong&gt; VS2008SP1 for &lt;a href="http://www.microsoft.com/windowsazure/" target="_blank"&gt;Windows Azure&lt;/a&gt; projects. And for me – side-by-side, means “side-by-side” without any “but”.&lt;/p&gt;  &lt;p&gt;So for me so far – no side-by-side.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-5104982150015189548?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=5104982150015189548&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5104982150015189548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5104982150015189548'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2010/02/visual-studio-2010-side-by-side-with.html' title='Visual Studio 2010 side-by-side with Visual Studio 2008'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-8248170763059327855</id><published>2010-02-07T17:53:00.001+02:00</published><updated>2010-02-07T17:53:17.150+02:00</updated><title type='text'>MySQL hosted on Windows Azure</title><content type='html'>&lt;p&gt;People are often asking whether MySQL is supported on Windows Azure. The simple answer is YES, you can run a MySQL on Windows Azure! Great!&lt;/p&gt;  &lt;p&gt;But is it worth? I would say &lt;strong&gt;NO&lt;/strong&gt;! And here are my thoughts on that.&lt;/p&gt;  &lt;p&gt;First, take a sneak peak at the presentation of &lt;a href="http://microsoftpdc.com/Speakers/Mohit-Srivastava"&gt;Mohit Srivastava&lt;/a&gt; and &lt;a href="http://microsoftpdc.com/Speakers/Tushar-Shanbhag"&gt;Tushar Shanbhag&lt;/a&gt; from PDC’09: &lt;a href="http://microsoftpdc.com/Sessions/SVC51"&gt;Developing PHP and MySQL Applications with Windows Azure&lt;/a&gt;. Or &lt;a href="http://ecn.channel9.msdn.com/o9/pdc09/ppt/SVC51.pptx"&gt;download the slides&lt;/a&gt; and take a quick look of “OK, you can run MySQL on Windows Azure”. After one hour of amazing talk we will be almost convinced that we definitely can run MySQL on Windows Azure.&lt;/p&gt;  &lt;p&gt;BUT…&lt;/p&gt;  &lt;p&gt;I would question the value of bringing a MySQL to Azure!&lt;/p&gt;  &lt;p&gt;What is &lt;a href="http://www.microsoft.com/windowsazure/" target="_blank"&gt;Windows Azure&lt;/a&gt;? Here are just a couple of quotes from &lt;a href="http://view.atdmt.com/action/mrtyou_FY10AzurewhitepapterIntroWindowsAzurePl_1"&gt;Introducing the Windows Azure platform&lt;/a&gt; and &lt;a href="http://view.atdmt.com/action/mrtyou_FY10AzureWhitepaperIntroWindowsAzureSec_1"&gt;Introducing Windows Azure&lt;/a&gt; white papers:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Windows Azure is designed to support applications that scale out, running multiple copies of the same code across many commodity servers.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;The intrinsic support for scale-out applications and scale-out data that Windows Azure provides can handle much larger loads than more conventional Web technologies.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;The answer grows out of the primary Windows Azure goal of supporting massively scalable applications. Traditional relational databases can scale up, handling more and more users by running the DBMS on ever-larger machines. But to support truly large numbers of simultaneous users, storage needs to scale out, not up.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;In resume – the goal of Windows Azure is to be highly scalable, highly reliable, highly available, elastic, etc. cloud system. And these white papers describe how is that scalability and reliability achieved.&lt;/p&gt;  &lt;p&gt;Now, a quick sneak peak over the &lt;a href="http://www.microsoft.com/windowsazure/sla/" target="_blank"&gt;SLA&lt;/a&gt; (&lt;a href="http://www.microsoft.com/windowsazure/sla/" target="_blank"&gt;Service Level Agreement&lt;/a&gt;) that will assure our business for system up-time and availability. What we are most interested of using MySQL on Windows Azure is the &lt;a href="http://go.microsoft.com/fwlink/?LinkId=159704"&gt;&lt;b&gt;Windows Azure Compute SLA&lt;/b&gt;&lt;/a&gt;. And the abstract of it sais:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;For compute, we guarantee that &lt;strong&gt;when you deploy two or more role instances in different fault and upgrade domains&lt;/strong&gt; your Internet facing roles will have external connectivity at least 99.95% of the time.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;Additionally, we will monitor all of your individual role instances and guarantee that 99.9% of the time we will detect within two minutes when a role instance’s process is not running and initiate corrective action.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;What does that mean to you, when are running MySQL? Rewind back to the &lt;a href="http://microsoftpdc.com/Sessions/SVC51"&gt;Developing PHP and MySQL Applications with Windows Azure&lt;/a&gt;. What did they do? They have deployed a single instanced Worker Role that runs MySQL! Now I do have a couple of questions for you, if you are still going to host your MySQL in windows Azure:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;1. Will you have SLA for your MySQL deployment (which is the purpose of using Windows Azure)?&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;NO! And no, because your MySQL will be running on a single instanced role. You simply can’t run MySQL on multiple instances! Well you can, but you can’t really work with it.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;2. Will your MySQL be easily scalable (which is the purpose of using Windows Azure)?&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;NO! Because scaling out in Windows Azure is achieved by just increasing the number of instances that are running within your role. And if you want to “scale-out” a MySQL in Windows Azure, you will have to deploy entirely new worker role with single instance.&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;For me, there is just no worth of bothering with running MySQL on Windows Azure. You are going to loose all the strengths of Windows Azure and will utilize it just as virtual server hosting. Just give up on MySQL if you want to go with Windows Azure and refactor your PHP code to use SQL Azure! &lt;/p&gt;  &lt;p&gt;And by the way … there will be almost the same issue with running PHP. However, this is easier to handle. Couple of important things you need to know in order to avoid hours of debugging a php code that is not debuggable – use a DataBase to store your sessions! If you want to scale out on Azure, do not ever use default sessions with PHP – move them to database. And let this database be SQL Azure. Well, moving sessions to database is the easier. You could also move the session to Windows Azure Tables.&lt;/p&gt;  &lt;p&gt;If you want to write files on a “hard drive” – use Windows Azure Drive or go directly to Windows Azure Blob.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-8248170763059327855?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=8248170763059327855&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/8248170763059327855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/8248170763059327855'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2010/02/mysql-hosted-on-windows-azure.html' title='MySQL hosted on Windows Azure'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-5455827473212452088</id><published>2010-01-25T10:49:00.002+02:00</published><updated>2010-01-29T19:17:21.777+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='DEV10'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Jason Beres to speak in Sofia on Visual Studio 2010 and .NET 4</title><content type='html'>Next week we will be a host for an amazing session. It will be held on 2nd of February 2010 at &lt;em&gt;Elieff Center&lt;/em&gt; for Education and Culture, 1 University Park str., Studentski grad 1700, Sofia.&lt;br /&gt;&lt;h3&gt;“Building Better Experiences using Visual Studio 2010 and .NET 4”&lt;/h3&gt;As Visual Studio 2010 is right around the corner, and it's a completely new IDE based on WPF, chock full of exciting new features and productivity enhancers. So now is a great time to figure out the answers to these 2 key questions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;What's in Visual Studio 2010 and .NET 4 for me? &lt;/li&gt;&lt;li&gt;What is going to take to learn all of this? &lt;/li&gt;&lt;/ul&gt;In this talk, &lt;a href="http://blogs.infragistics.com/blogs/jason_beres/" target="_blank"&gt;Jason&lt;/a&gt; will answer those questions. You'll get an understanding of the full run down of new features in Visual Studio 2010, including the new testing and debugging features, new data options, new deployment scenarios, new code editor features and many other new time savers and coding enhancers. You'll also get an understanding of new language features in Visual Basic and C#, as well as the new support for the F# language and the new project support for Silverlight 4, Windows Azure, SharePoint and Microsoft Office applications. At the conclusion of this talk, you'll know exactly why you need Visual Studio 2010 and .NET 4, and how they will improve your coding experience and capabilities to build even better software in 2010 and beyond!&lt;br /&gt;&lt;a href="http://blogs.infragistics.com/blogs/jason_beres/" target="_blank"&gt;Jason Beres&lt;/a&gt; is the VP of Product Management for &lt;a href="http://www.infragistics.com/" target="_blank"&gt;Infragistics&lt;/a&gt;, the world leader in user interface development tools and experts in the User Experience (UX) market. Jason is a founder of Florida .NET User Groups, he is the founder of the Central New Jersey .NET User Group, he is a Microsoft MVP, and he is on the INETA Speakers Bureau. Jason is the author of several books on .NET development, including the recently published &lt;a href="http://www.amazon.com/Silverlight-Programmers-Reference-Wrox-Programmer/dp/0470385405" target="_blank"&gt;Silverlight 3 Programmers Reference&lt;/a&gt; from &lt;a href="http://www.wrox.com/" target="_blank"&gt;Wrox Press&lt;/a&gt; and the upcoming Silverlight 4 Professional from &lt;a href="http://www.wrox.com/" target="_blank"&gt;Wrox Press&lt;/a&gt;. Jason is a national and international conference speaker; he is a frequent columnist for several .NET publications, and keeps very active in the .NET community.&lt;br /&gt;Expected duration of the lecture is about 1.5 hours and there will be catering party, excellent for networking after it.&lt;br /&gt;See you there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-5455827473212452088?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=5455827473212452088&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5455827473212452088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5455827473212452088'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2010/01/jason-beres-to-speak-in-sofia-on-visual.html' title='Jason Beres to speak in Sofia on Visual Studio 2010 and .NET 4'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-2792419017268868377</id><published>2009-12-13T16:46:00.001+02:00</published><updated>2010-04-26T14:36:33.697+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web role'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='worker role'/><title type='text'>Another common reason for Windows Azure role to stuck in Initializing/Busy/Stopping</title><content type='html'>&lt;p&gt;There is another common reason that will cause your role to stuck into that loop when you deploy it on Windows Azure. And it is common for Web and Worker Roles.&lt;/p&gt;  &lt;p&gt;You will most probably encounter this error if you are using latest Windows Azure Tools (as you should to) and you are creating a new project (rather than upgrading your existing one). &lt;/p&gt;  &lt;p&gt;The new project template comes with enabled and started DiagnosticsMonitor. In order for this Monitor to work properly and collect and store data it needs a Windows Azure Storage account. The account configuration is saved as Role Configuration Entry in the .CSCFG file. The default “Connection string” is this one:&lt;/p&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 8pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 1&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setting&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;DiagnosticsConnectionString&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;value&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;UseDevelopmentStorage=true&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Note the “&lt;span style="color: blue"&gt;UseDevelopmentStorage=true&lt;/span&gt;” in the value for our DiagnosticsConnectionString. If you just make a “Hello World” Web Role and you upload it to Azure environment, that role will never start. It will go a Initializing/Busy/Stopping/Stopped loop. You need to either stop the DiagnosticsMonitor or change the connection string. &lt;/p&gt;  &lt;p&gt;Lest first see how the connection string should look like:&lt;/p&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 8pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 7&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setting&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;StorageClientAccount&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 8&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&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;/span&gt;&lt;span style="color: red"&gt;value&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;DefaultEndpointsProtocol=[https|http];AccountName=[your_account_name];AccountKey=[your_account_key]&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;In this “Connection string” setting for Diagnostics monitor you need to provide:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;DefaultEndpointsProtocol&lt;/strong&gt; – http or https&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;AccountName&lt;/strong&gt; – your storage account name (endpoints are automatically built up)&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;AccountKey&lt;/strong&gt; – the authentication key that is generated at Storage management part of the portal.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Without specifying these settings your role will not run on Azure environment.&lt;/p&gt;  &lt;p&gt;How about disabling DiagnosticsMonitor? Sure you can do so. If you have a WebRole there will be a single file defining a Class (usually called WebRole.cs) that derives from RoleEntryPoint. This class looks something like this:&lt;/p&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 8pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 24&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;WebRole&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;RoleEntryPoint&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 25&lt;/span&gt; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 26&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; OnStart()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 27&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 28&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;DiagnosticMonitor&lt;/span&gt;.Start(&lt;span style="color: #a31515"&gt;&amp;quot;DiagnosticsConnectionString&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 29&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 30&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// For information on handling configuration changes&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 31&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 32&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;RoleEnvironment&lt;/span&gt;.Changing += RoleEnvironmentChanging;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 33&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ...&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;It is important to note line 28, on which there is a call: &lt;span style="color: #2b91af"&gt;DiagnosticMonitor&lt;/span&gt;.Start(&lt;span style="color: #a31515"&gt;&amp;quot;DiagnosticsConnectionString&amp;quot;&lt;/span&gt;);&lt;/p&gt;  &lt;p&gt;If want to remove the DiagnosticsMonitor just strip the entire OnStart() method. However I suggest not to do so, because you will loose all logging functionalities of Windows Azure.&lt;/p&gt;  &lt;p&gt;I hope that this eliminates most common reasons for headaches of Windows Azure Role stuck in Initializing/Busy/Stopping/Stopped loops.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-2792419017268868377?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=2792419017268868377&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/2792419017268868377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/2792419017268868377'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2009/12/another-common-reason-for-windows-azure.html' title='Another common reason for Windows Azure role to stuck in Initializing/Busy/Stopping'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-5873182756161369088</id><published>2009-12-10T17:30:00.001+02:00</published><updated>2010-04-26T14:36:33.699+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Windows Azure role stuck in Initializing/Busy/Stopping</title><content type='html'>&lt;p&gt;Recently I see a lot of questions with that description around &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/azure" target="_blank"&gt;Windows Azure Forums&lt;/a&gt;. There is one particular reason that appears to be causing this behaviour in most of the cases. I want to describe it with respect to Web Role and Worker Role&lt;/p&gt;  &lt;h3&gt;Web Role&lt;/h3&gt;  &lt;p&gt;If you have a web role prepared for &lt;a href="http://www.azure.com/" target="_blank"&gt;Windows Azure&lt;/a&gt; deployment be sure that you double check that you have set “&lt;strong&gt;Copy Local&lt;/strong&gt;” attribute to &lt;strong&gt;TRUE&lt;/strong&gt; for any third party assemblies that you reference in your project. These are all assemblies that are not part of &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=AB99342F-5D1A-413D-8319-81DA479AB0D7&amp;amp;displaylang=en" target="_blank"&gt;Microsoft .NET Framework 3.5 SP1&lt;/a&gt;. Such as &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=cc96c246-61e5-4d9e-bb5f-416d75a1b9ef&amp;amp;displaylang=en" target="_blank"&gt;Microsoft ReportViewer&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/dd394709.aspx" target="_blank"&gt;Microsoft MVC&lt;/a&gt;, &lt;a href="http://silverlight.net/getstarted/riaservices/" target="_blank"&gt;Microsoft WCF RIA Services&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/dd140117.aspx" target="_blank"&gt;Unity&lt;/a&gt;, &lt;a href="https://www.hibernate.org/" target="_blank"&gt;nHibernate&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/sandcastle/" target="_blank"&gt;SandCastle&lt;/a&gt;. Any. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_g4vzmfkZQow/SyET_pUza_I/AAAAAAAAAP4/RwRxMoCtSEU/s1600-h/RefernceAssemblyCopyLocal%5B2%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="RefernceAssemblyCopyLocal" border="0" alt="RefernceAssemblyCopyLocal" src="http://lh3.ggpht.com/_g4vzmfkZQow/SyEUAGoNB_I/AAAAAAAAAP8/n4ZmrxCtr3I/RefernceAssemblyCopyLocal_thumb.png?imgmax=800" width="242" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h3&gt;Worker Role&lt;/h3&gt;  &lt;p&gt;While requirements for referenced assemblies in Worker roles are same as requirements for these in Web Roles, there is another important point to observe. And this is that your Run() method should never end. If it ends, than Windows Azure Fabric thinks there is something wrong are recycles your role. That’s why you initial Run method will look like this:&lt;/p&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 1&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Run()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 2&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 3&lt;/span&gt;&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;span style="color: green"&gt;// This is a sample worker implementation. Replace with your logic.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 4&lt;/span&gt;&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;span style="color: #2b91af"&gt;Trace&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;WorkerRole2 entry point called&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Information&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 5&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 6&lt;/span&gt;&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;span style="color: blue"&gt;while&lt;/span&gt; (&lt;span style="color: blue"&gt;true&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 7&lt;/span&gt;&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;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 8&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&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;span style="color: #2b91af"&gt;Thread&lt;/span&gt;.Sleep(10000);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 9&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&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;span style="color: #2b91af"&gt;Trace&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;Working&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;Information&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 10&lt;/span&gt;&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;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 11&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;It is &lt;strong&gt;important to not remove&lt;/strong&gt; the &lt;span style="color: blue"&gt;while&lt;/span&gt; (&lt;span style="color: blue"&gt;true&lt;/span&gt;) cycle as it it the “lifecycle” of our worker role. If we remove it,our worker role will enter an endless loop of:&lt;/p&gt;  &lt;p&gt;[runtime] Role entrypoint . COMPLETED OnStart()   &lt;br /&gt;[runtime] Role entrypoint . CALLING&amp;#160;&amp;#160; Run()    &lt;br /&gt;Information: Worker Process entry point called    &lt;br /&gt;&lt;strong&gt;[runtime] Role entrypoint . COMPLETED Run() ==&amp;gt; ROLE RECYCLING INITIATED&lt;/strong&gt;    &lt;br /&gt;[runtime] Role instance recycling is starting    &lt;br /&gt;Information: ...    &lt;br /&gt;Information: ...    &lt;br /&gt;[fabric] Role state Recycle    &lt;br /&gt;[fabric] Role state Stopping    &lt;br /&gt;[fabric] Role state Stopped    &lt;br /&gt;[fabric] Role state Stopping    &lt;br /&gt;[fabric] Role state Stopped    &lt;br /&gt;[fabric] Role state Suspended    &lt;br /&gt;[fabric] Role state Aborted    &lt;br /&gt;[fabric] Role state Teardown    &lt;br /&gt;[fabric] Role state Destroyed    &lt;br /&gt;[fabric] Role state Created    &lt;br /&gt;[fabric] Role state Suspended&lt;/p&gt;  &lt;p&gt;Why is it so is well described by &lt;a href="http://blog.smarx.com/" target="_blank"&gt;Steve Marx&lt;/a&gt; as answer to my question on &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazure/threads" target="_blank"&gt;MSDN Forums&lt;/a&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;The model is that you're expected to never return from Run().&amp;#160; (If you do, we think something went wrong and restart you.)     &lt;br /&gt;If you have other threads doing work, you can just go into an infinite sleep at the bottom of Run().&amp;#160; (Thread.Sleep(Timeout.Infinite))&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a title="http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/2ce85358-b7e2-4b2b-bfbd-952b65e31fa2" href="http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/2ce85358-b7e2-4b2b-bfbd-952b65e31fa2"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/2ce85358-b7e2-4b2b-bfbd-952b65e31fa2&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I really hope that this post will save you lot of time and frustration using Windows Azure.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-5873182756161369088?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=5873182756161369088&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5873182756161369088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5873182756161369088'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2009/12/windows-azure-role-stuck-in.html' title='Windows Azure role stuck in Initializing/Busy/Stopping'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_g4vzmfkZQow/SyEUAGoNB_I/AAAAAAAAAP8/n4ZmrxCtr3I/s72-c/RefernceAssemblyCopyLocal_thumb.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-5782616217904424901</id><published>2009-12-01T11:11:00.001+02:00</published><updated>2010-04-26T14:36:33.701+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Windows Azure bookmarks</title><content type='html'>&lt;p&gt;I decided to post a couple of very useful links to resources on Windows Azure, which I happen to use very often and almost always search for them first. &lt;/p&gt;  &lt;p&gt;So here there are:&lt;/p&gt;  &lt;p&gt;Register on Microsoft Connect to get CTP account (limited)   &lt;br /&gt;Note: it is one registration process for both Windows Azure and SQL Azure. However the invitation tokens does not come together and you have to be patient, you will recieve both tokens in couple of business days.    &lt;br /&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=129453"&gt;http://go.microsoft.com/fwlink/?LinkID=129453&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;Windows Azure Platform on MSDN&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/azure/default.aspx"&gt;http://msdn.microsoft.com/en-us/azure/default.aspx&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;Tools &amp;amp; SDKs&lt;/h3&gt;  &lt;p&gt;Windows Azure Tools for Visual Studio (NOV'2009)   &lt;br /&gt;&lt;a href="http://www.microsoft.com/downLoads/details.aspx?familyid=6967FF37-813E-47C7-B987-889124B43ABD&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downLoads/details.aspx?familyid=6967FF37-813E-47C7-B987-889124B43ABD&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Windows Azure SDK (NOV'2009)   &lt;br /&gt;&lt;a href="http://www.microsoft.com/downLoads/details.aspx?familyid=772990DA-8926-4DB0-958F-95C1DA572C84&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downLoads/details.aspx?familyid=772990DA-8926-4DB0-958F-95C1DA572C84&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Microsoft .NET Services SDK (NOV'CTP)   &lt;br /&gt;&lt;a href="http://www.microsoft.com/downLoads/details.aspx?familyid=C80EBADF-7EB8-4A62-ABCD-0B57FA3855F8&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downLoads/details.aspx?familyid=C80EBADF-7EB8-4A62-ABCD-0B57FA3855F8&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;Additional Azure Samples, including ASP.NET Providers for Table Storage&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://code.msdn.microsoft.com/windowsazuresamples"&gt;http://code.msdn.microsoft.com/windowsazuresamples&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;Azure on Channel 9&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://channel9.msdn.com/learn/courses/Azure/"&gt;http://channel9.msdn.com/learn/courses/Azure/&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;MSDN Documentation on &amp;quot;Online Services&amp;quot;:&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd163896.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd163896.aspx&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;SQL Azure Firewall&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee621782.aspx"&gt;http://msdn.microsoft.com/en-us/library/ee621782.aspx&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;Azure Platform Forums on MSDN:&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/azure"&gt;http://social.msdn.microsoft.com/Forums/en-US/category/azure&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/5177305310827978243-5782616217904424901?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=5782616217904424901&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5782616217904424901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5782616217904424901'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2009/12/windows-azure-bookmarks.html' title='Windows Azure bookmarks'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-7967491834372195280</id><published>2009-09-29T23:05:00.002+02:00</published><updated>2010-04-26T14:36:33.703+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RIA'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Bug in Windows Azure Tools for VS2008</title><content type='html'>I just submitted a &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=493590"&gt;bug to Microsoft&lt;/a&gt; about the mess being created when you want to have both &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=76bb3a07-3846-4564-b0c3-27972bcaabce"&gt;.NET RIA Services Tools for VS 2008&lt;/a&gt; and &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=8d75d4f7-77a4-4adf-bce8-1b10608574bb"&gt;Windows Azure Tools for VS2008&lt;/a&gt;.&lt;br /&gt;The description:&lt;br /&gt;When you have both Windows Azure tools and .NET RIA Services tools for Visual Studio 2008, the former will conflict the last. &lt;br /&gt;In general, if you have installed only .NET RIA services tools for VS, a new type of project is added (affected one) - .NET RIA Services Library. It creates two projects - one Silverlight Library and one .NET Class library. &lt;br /&gt;However, if you also have Windows Azure tools for VS installed, and want to create .NET RIA Serivces Library, the second project type will be Windows Azure Worker Role&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-7967491834372195280?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=7967491834372195280&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/7967491834372195280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/7967491834372195280'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2009/09/bug-in-windows-azure-tools-for-vs2008.html' title='Bug in Windows Azure Tools for VS2008'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-7642007623915543144</id><published>2009-09-29T22:36:00.002+02:00</published><updated>2010-04-26T14:36:33.705+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SqlAzure'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Connecting to SQL Azure from ASP.NET</title><content type='html'>Let’s talk a little bit about SQL Azure. &lt;br /&gt;Generally when you subscribe for SQL Azure at &lt;a href="https://sql.azure.com/" title="https://sql.azure.com/"&gt;https://sql.azure.com/&lt;/a&gt; you will receive your activation token (although is bit too late already to go for it, but you may have a chance). Once activated the service, it will automatically create a new project for you named “SDS-only CTP Project” and you will have options to manage it.&lt;br /&gt;Then you go and create your first SQL Azure data base. From now on you will be fighting to use the toolset you used to, when developing against SQL Server. However there are some niceties you need to learn in order to get working with it.&lt;br /&gt;First of all is how to connect to SQL Azure using either &lt;strong&gt;sqlcmd&lt;/strong&gt; or &lt;strong&gt;SSMS&lt;/strong&gt; (SQL Server Management Studio). I wrote detailed post about it here: &lt;a href="http://blogs.staykov.net/2009/08/how-to-use-sql-azure.html" title="http://blogs.staykov.net/2009/08/how-to-use-sql-azure.html"&gt;http://blogs.staykov.net/2009/08/how-to-use-sql-azure.html&lt;/a&gt;&lt;br /&gt;Next you will want to simply run a GridView bound to the SQL Azure database. Well … do not expect that either Server Explorer, or SQL DataSource creation wizard will work with it. Just forget about these tools for now. You are on your own. Or not exactly.&lt;br /&gt;Here: &lt;a href="http://www.staykov.net/SqlAzureSample.zip" title="SqlAzureSample.zip"&gt;SqlAzureSample.zip&lt;/a&gt; I have uploaded two sample projects and simple SQL script. So after you have read &lt;a href="http://blogs.staykov.net/2009/08/how-to-use-sql-azure.html"&gt;how-to-connect-to-sql-azure&lt;/a&gt;, and after you have set up your first database and assigned a login to it, you can start with the projects:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;create_insert.sql simply creates a table and inserts some records into it. &lt;/li&gt;&lt;li&gt;WebSiteToSqlAzure.zip contains simple ASP.NET web-site which is bound to SQL Azure &lt;/li&gt;&lt;li&gt;WebRoleToSqlAzure.zip contains a CloudService project with single web role, which is bound to SQL Azure &lt;/li&gt;&lt;/ul&gt;Both web sites that are attached are using one and the same ConnectionString:&lt;br /&gt;"Server=tcp:[YOUR_SERVER].ctp.database.windows.net;Database=[YOUR_DB];User ID=[LOGIN_WITHOUT_@SERVER];Password=[PASSWORD];Trusted_Connection=False;"&lt;br /&gt;There are some placeholders for you to replace:&lt;br /&gt;&lt;strong&gt;[YOUR_SERVER]&lt;/strong&gt; – the server your CTP of SQL Azure resides. Something like "&lt;strong&gt;&lt;em&gt;ccmlt4qacx&lt;/em&gt;&lt;/strong&gt;” &lt;br /&gt;&lt;strong&gt;[YOUR_DB]&lt;/strong&gt; – the database name you have created &lt;br /&gt;&lt;strong&gt;[LOGIN_WITHOUT_@SERVER]&lt;/strong&gt; – the login you have associated with database &lt;br /&gt;&lt;strong&gt;[PASSWORD]&lt;/strong&gt; – the password you have created for the login&lt;br /&gt;Hope that this will be a good starting point for you!&lt;br /&gt;And hope to continue Azure series :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-7642007623915543144?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=7642007623915543144&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/7642007623915543144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/7642007623915543144'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2009/09/connecting-to-sql-azure-from-aspnet.html' title='Connecting to SQL Azure from ASP.NET'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-5228159147231824977</id><published>2009-09-02T08:36:00.005+02:00</published><updated>2010-04-26T14:36:33.707+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SqlAzure'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>SqlAzure Migration tool</title><content type='html'>I was wandering wether we have to wait too long to have some tool to easily transfer our DB Schema to the cloud.&lt;br /&gt;The anwser came just one day ago and it is here: &lt;a href="http://sqlazuremw.codeplex.com/"&gt;http://sqlazuremw.codeplex.com/&lt;/a&gt;&lt;br /&gt;LIghtweight, simple, easy to use, this tool generates (DROP) Create t-sql statements compatible with SqlAzure. The Scripts generated are bit large (Well it depends on your schema) and it takes some time to execute all, but it works.&lt;br /&gt;&lt;br /&gt;I am still searching for a way to easily (or not, but automated) TRUNCATE entire DB and recreate tables again. Everything I found over internet is kind-of useless with Azure since there are no stored procedures like "sp_MSForEachTable" or so. The closest match I found is executing some statement like this:&lt;br /&gt;&lt;br /&gt;DECLARE @TableName NVARCHAR(2048)&lt;br /&gt;DECLARE @ConstraintName NVARCHAR(2048)&lt;br /&gt;DECLARE Constraints CURSOR FOR&lt;br /&gt;SELECT TABLE_NAME, CONSTRAINT_NAME FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE&lt;br /&gt;OPEN Constraints&lt;br /&gt;FETCH NEXT FROM Constraints INTO @TableName, @ConstraintName&lt;br /&gt;WHILE @@FETCH_STATUS = 0&lt;br /&gt;BEGIN&lt;br /&gt;EXEC('ALTER TABLE [' + @TableName + '] DROP CONSTRAINT [' + @ConstraintName + ']');&lt;br /&gt;FETCH NEXT FROM Constraints INTO @TableName, @ConstraintName;&lt;br /&gt;END&lt;br /&gt;CLOSE Constraints&lt;br /&gt;DEALLOCATE Constraints&lt;br /&gt;&lt;br /&gt;DECLARE Tables CURSOR FOR&lt;br /&gt;SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES&lt;br /&gt;OPEN Tables&lt;br /&gt;FETCH NEXT FROM Tables INTO @TableName&lt;br /&gt;WHILE @@FETCH_STATUS = 0&lt;br /&gt;BEGIN&lt;br /&gt;EXEC('DROP TABLE [' + @TableName + ']');&lt;br /&gt;FETCH NEXT FROM Tables INTO @TableName;&lt;br /&gt;END&lt;br /&gt;CLOSE Tables&lt;br /&gt;DEALLOCATE Tables&lt;br /&gt;&lt;br /&gt;But it works only partially on Azure and if you do not have lots tables and constraints. For some reason Azure can't drop some of the constraints.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-5228159147231824977?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=5228159147231824977&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5228159147231824977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5228159147231824977'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2009/09/sqlazure-migration-tool.html' title='SqlAzure Migration tool'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-5919476567604944323</id><published>2009-08-30T22:17:00.005+02:00</published><updated>2010-04-26T13:56:22.777+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='storage'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='rolemanager'/><title type='text'>Azure Logs</title><content type='html'>The convinient RoleManager.WriteToLog static method provides way to write event logs for your clouded application. In the reference:&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.servicehosting.serviceruntime.rolemanager.writetolog.aspx"&gt;http://msdn.microsoft.com/en-us/library/microsoft.servicehosting.serviceruntime.rolemanager.writetolog.aspx&lt;/a&gt;&lt;br /&gt;you will find that the allowed values for "eventLogName" are:&lt;br /&gt;Critical, Error, Warning, Information, Verbose&lt;br /&gt;&lt;br /&gt;It's a good idea to have them handy :)&lt;br /&gt;&lt;br /&gt;Here is a complete How-to guide for writing and reading logs:&lt;br /&gt;&lt;a href="http://blog.benday.com/archive/2008/11/07/23201.aspx"&gt;http://blog.benday.com/archive/2008/11/07/23201.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I will just add that there is a great tool at CodePlex: &lt;a href="http://azurestorageexplorer.codeplex.com/"&gt;http://azurestorageexplorer.codeplex.com/&lt;/a&gt;&lt;br /&gt;Which is visual storage explorer. Something that I missed is that account configuration requires restart of the application (at least for me). If you are going to wander how to configure your cloud storage - just enter your cloud storage account name (without http://, and without blob.core.windows.net, or queue.core.windows.net, etc.) and your primary or secondary key - it works with both keys.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-5919476567604944323?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=5919476567604944323&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5919476567604944323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5919476567604944323'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2009/08/azure-logs.html' title='Azure Logs'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-6670267767018477503</id><published>2009-08-30T19:12:00.004+02:00</published><updated>2010-04-26T14:36:33.710+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='worker role'/><title type='text'>Azure Worker Roles</title><content type='html'>Have you tried it yet ?&lt;br /&gt;It is a background worker process, jsut like a windows service. So you can create your background working processes just like you used with Windows Service. It is very simple to implement:&lt;br /&gt;&lt;br /&gt;public class WorkerRole : RoleEntryPoint&lt;br /&gt;{&lt;br /&gt;public override void Start()&lt;br /&gt;{&lt;br /&gt;// This is a sample worker implementation. Replace with your logic.&lt;br /&gt;RoleManager.WriteToLog("Information", "Worker Process entry point called");&lt;br /&gt;while (true)&lt;br /&gt;{&lt;br /&gt;Thread.Sleep(10000);&lt;br /&gt;RoleManager.WriteToLog("Information", "Working");&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;public override RoleStatus GetHealthStatus()&lt;br /&gt;{&lt;br /&gt;// This is a sample worker implementation. Replace with your logic.&lt;br /&gt;return RoleStatus.Healthy;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;As simple as that. Of course you can have your System.Timers.Timer instance or more and schedule your processing logic to start up at regular periods.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-6670267767018477503?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=6670267767018477503&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6670267767018477503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6670267767018477503'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2009/08/azure-worker-roles.html' title='Azure Worker Roles'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-7611090741990029980</id><published>2009-08-30T19:06:00.004+02:00</published><updated>2010-04-26T14:36:33.712+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web role'/><category scheme='http://www.blogger.com/atom/ns#' term='custom error handlers'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>Azure WebRole and Custom Error Handlers</title><content type='html'>A useful article on how to use custom handlers in the cloud:&lt;br /&gt;&lt;a href="http://www.shanmcarthur.net/cloud-services/azure-tips/custom-error-handlers"&gt;http://www.shanmcarthur.net/cloud-services/azure-tips/custom-error-handlers&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The main idea is that Azure is runnin on IIS7, so you have the power to plug-in into the integrated pipline mode.&lt;br /&gt;&lt;br /&gt;In short:&lt;br /&gt;&lt;system.webserver&gt;&lt;br /&gt;&amp;lt;&amp;gt;&lt;br /&gt;&amp;lt; errormode="Custom"&amp;gt; &lt;br /&gt;&amp;lt; statuscode="404"&amp;gt;&lt;br /&gt;&amp;lt; statuscode="404" responsemode="ExecuteURL" path="/page-not-found.aspx"&amp;gt;&lt;br /&gt;&amp;lt; /httpErrors &amp;gt;&lt;br /&gt;&amp;lt; /system.webServer &amp;gt;&lt;br /&gt;&lt;br /&gt;Put the configuration in system.webServer, insted of in system.web.&lt;br /&gt;&lt;br /&gt;I would also add a handler for 400 status code. This is if you are making some custom http handlers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-7611090741990029980?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=7611090741990029980&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/7611090741990029980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/7611090741990029980'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2009/08/azure-webrole-and-custom-error-handlers.html' title='Azure WebRole and Custom Error Handlers'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-7217355286551022090</id><published>2009-08-30T18:31:00.003+02:00</published><updated>2010-04-26T14:36:33.714+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SqlAzure'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><title type='text'>How to use SQL Azure</title><content type='html'>Well,&lt;br /&gt;If you want to play with SQL Azure it is little tricky. You cannot use SQL Server management Studio. However you can connect using ADO.NET. One option is to develop small app that does basic things like listing tables, enables editing tables etc, which actually is not that hard - to cover basic functionality.&lt;br /&gt;Until then, the smoothest way I found is usign the SQLCmd tool.&lt;br /&gt;Better described here: &lt;a href="http://english.zachskylesowens.net/2009/08/18/connecting-to-sql-azure/"&gt;http://english.zachskylesowens.net/2009/08/18/connecting-to-sql-azure/&lt;/a&gt;&lt;br /&gt;However this is the "quick-start":&lt;br /&gt;sqlcmd -S MY_SERVER_NAME.ctp.database.windows.net -U MY_USERNAME@MY_SERVER_NAME -d DATABASE_NAME&lt;br /&gt;&lt;br /&gt;The key here is that you must use &lt;a href="mailto:MY_USERNAME@MY_SERVER_NAME"&gt;MY_USERNAME@MY_SERVER_NAME&lt;/a&gt; !&lt;br /&gt;For example, if your server name is h38ssfjeiwh201, your username is admin and connecting to sample_db your connection would be.&lt;br /&gt;sqlcmd -S h38ssfjeiwh201.ctp.database.windows.net -U admin@h38ssfjeiwh201 -d sample_db&lt;br /&gt;&lt;br /&gt;Also good point is that you must explicitly specify DataBase name to use, since AzureSQL CTP still does not support &lt;strong&gt;USE DataBaseName &lt;/strong&gt;command.&lt;br /&gt;&lt;br /&gt;Good luck and happy times with Sql Azure!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-7217355286551022090?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=7217355286551022090&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/7217355286551022090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/7217355286551022090'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2009/08/how-to-use-sql-azure.html' title='How to use SQL Azure'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-605419917756809742</id><published>2009-08-30T17:44:00.004+02:00</published><updated>2010-04-26T14:36:33.716+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='worker role'/><title type='text'>Azure Worker Role config settings app.config</title><content type='html'>Recently playing with Azure July CTP I stumbled upon an issue which appeared to be known.&lt;br /&gt;The thing that might drive you crazy is that the Publishing wizard does not apply settings from App.Config file. So basically your deployed worker process will have no idea about configuration settings.&lt;br /&gt;It seemed to be a known issue and there are some discussions over here:&lt;br /&gt;solution: &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/cc11be6e-097a-499c-96c7-5089d01e2e08"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/cc11be6e-097a-499c-96c7-5089d01e2e08&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;other thread: &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/604384f0-9d20-4be6-a02c-24ba1ff1bf82"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/604384f0-9d20-4be6-a02c-24ba1ff1bf82&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The solution is trivial:&lt;br /&gt;You have to add an environment variable to your user account:&lt;br /&gt;Key: &lt;strong&gt;AddAppConfigToBuildOutputs&lt;/strong&gt;&lt;br /&gt;Value: &lt;strong&gt;true&lt;/strong&gt;&lt;br /&gt;And you need to restart Visual Studio for the change to take place.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-605419917756809742?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=605419917756809742&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/605419917756809742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/605419917756809742'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2009/08/azure-worker-role-config-settings.html' title='Azure Worker Role config settings app.config'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-6904405152340387194</id><published>2009-06-21T10:31:00.002+03:00</published><updated>2010-04-26T14:37:14.269+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mod_rewrite'/><title type='text'>Apache mod_rewrite and per-host directives / subdomains</title><content type='html'>This feature of Apache is very powerful and useful. Well, for those who really understand it :) For the rest of us, it is hours of trials-and-fails until we reach wanted configuration.&lt;br /&gt;&lt;br /&gt;So, let's say we have a domain (domain.com). We have setup a WildCard DNS records to point to our web server (*.domain.com) and we also have setup our VirtualHost with this wildcards:&lt;br /&gt;&lt;br /&gt;ServerName domain.com&lt;br /&gt;ServerAlias *.domain.com&lt;br /&gt;&lt;br /&gt;Now, we want to make a translation of&lt;br /&gt;http://sub.domain.com/ to http://www.domain.com/subdomains/sub/&lt;br /&gt;&lt;br /&gt;Most of the articles and tutorials I found over the internet are just redirecting requests. So the end-users never actually stay on sub.domain.com, but are transferred to www.domain.com/subdomains/sub . This I don't want. Here is a brief set of rules how to achieve that: http://www.debian-administration.org/article/Wildcard_hosting_with_Apache_and_Bind&lt;br /&gt;They are jsut redirecting.&lt;br /&gt;&lt;br /&gt;However I want the end-users to stay on http://sub.domain.com/ however all internal requests to go to http://www.domain.com/subdomains/sub . And also I want it that way only that particular "sub".&lt;br /&gt;&lt;br /&gt;And here is the simple solution:&lt;br /&gt;&lt;br /&gt;                RewriteEngine On&lt;br /&gt;                RewriteBase /&lt;br /&gt;                RewriteCond %{HTTP_HOST} .&lt;br /&gt;                RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]&lt;br /&gt;                RewriteCond %{HTTP_HOST} ^(sub)\.domain\.com&lt;br /&gt;                RewriteRule ^(.*) http://www.domain.com/subdomains/sub/$1 [L,&lt;span style="font-weight: bold;"&gt;P&lt;/span&gt;]&lt;br /&gt;&lt;br /&gt;The keypoint here is that is we skip the &lt;span style="font-weight: bold;"&gt;P&lt;/span&gt; flag, mod_rewrite will make automatic external redirect. It is not smart enough to guess that this is our server. That's why we have to put the &lt;span style="font-weight: bold;"&gt;P&lt;/span&gt;-flag, which claims that we want this redirection to take place via "internal &lt;span style="font-weight: bold;"&gt;P&lt;/span&gt;roxy"&lt;br /&gt;&lt;br /&gt;Well, that's for now. Hope to post some new stuff soon&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-6904405152340387194?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=6904405152340387194&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6904405152340387194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6904405152340387194'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2009/06/apache-modrewrite-and-per-host.html' title='Apache mod_rewrite and per-host directives / subdomains'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-4874465619538553057</id><published>2008-11-06T20:00:00.005+02:00</published><updated>2008-11-06T20:14:30.158+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server 2008'/><title type='text'>Flash player under Windows Server 2008</title><content type='html'>OK,&lt;br /&gt;I decided to move to the Server OS because of many reasons. I hope that I will not regret soon.&lt;br /&gt;What's going on ?&lt;br /&gt;Have you ever heart of &lt;a href="http://www.adobe.com/products/acrobatconnect/"&gt;Adobe Acrobat Connect&lt;/a&gt; (AAC) ? It is an Adobe online software designed to bring presentations and desktops to the web (a descendant of &lt;a href="http://www.adobe.com/macromedia/accessibility/features/breeze/"&gt;Breeze&lt;/a&gt;). It is &lt;a href="http://www.adobe.com/products/flash/"&gt;Flash&lt;/a&gt; based (&lt;a href="http://www.adobe.com/products/flex/"&gt;Flex&lt;/a&gt; may be, at least you need a &lt;a href="http://get.adobe.com/flashplayer/"&gt;flash player&lt;/a&gt; on the browser to participate).&lt;br /&gt;So, I had to participate an online presentation hosted on AAC, and I was surprised to see the following window:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_g4vzmfkZQow/SRMy3zM-alI/AAAAAAAAAFo/pzpQ8AOzdlw/s1600-h/flash_player_2008.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 545px; height: 401px;" src="http://3.bp.blogspot.com/_g4vzmfkZQow/SRMy3zM-alI/AAAAAAAAAFo/pzpQ8AOzdlw/s400/flash_player_2008.jpg" alt="" id="BLOGGER_PHOTO_ID_5265608323545066066" border="0" /&gt;&lt;/a&gt;You can hardly see, but in short: It says: "Adobe Acrobat Connect requires Flash Player 8.0.0.0 or newer".&lt;br /&gt;The funny thing is that all that message is displayed inside a flash player, and I made this screen-shot to show you that I actually have Adobe Flash Player 10 installed.&lt;br /&gt;But wait it becomes funnier. When I clicked the "GetFlash Player" button (Also a flash button!) I went to a page that showed out the next interesting screen:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_g4vzmfkZQow/SRMzsb3v_SI/AAAAAAAAAFw/LCrGtn4WK5I/s1600-h/flash_player_2008_1.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 293px;" src="http://2.bp.blogspot.com/_g4vzmfkZQow/SRMzsb3v_SI/AAAAAAAAAFw/LCrGtn4WK5I/s400/flash_player_2008_1.gif" alt="" id="BLOGGER_PHOTO_ID_5265609227815091490" border="0" /&gt;&lt;/a&gt;Which says: Sorry, your platform is not supported.&lt;br /&gt;&lt;br /&gt;Funny, ah ?&lt;br /&gt;But I could not participated that connect meeting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-4874465619538553057?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=4874465619538553057&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/4874465619538553057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/4874465619538553057'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2008/11/flash-player-under-windows-server-2008.html' title='Flash player under Windows Server 2008'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_g4vzmfkZQow/SRMy3zM-alI/AAAAAAAAAFo/pzpQ8AOzdlw/s72-c/flash_player_2008.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-3815733724668685717</id><published>2008-11-06T19:53:00.003+02:00</published><updated>2008-11-06T20:14:56.043+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Hyper-V'/><title type='text'>Hyper-V lives in US! (Part 2)</title><content type='html'>Earlier today I &lt;a href="http://blogs.staykov.net/2008/11/hyper-v-lives-in-us-aka-virtual-machine.html"&gt;described a problem&lt;/a&gt; that is known to MS and has no solution yet.&lt;br /&gt;In short - you can install (mean really install a working version) &lt;a href="http://www.microsoft.com/windowsserver2008/en/us/hyperv.aspx"&gt;Hyper-V&lt;/a&gt; under &lt;a href="http://www.microsoft.com/windowsserver2008/en/us/overview.aspx"&gt;Windows Server 2008&lt;/a&gt;, only if you set all locale settings to EN-US / USA Location. Every other attempt will lead to a broken installation.&lt;br /&gt;I also promised that after this installation I will revert back to desired location settings to check if everything is going on well.&lt;br /&gt;And the answer is ....&lt;br /&gt;YES!&lt;br /&gt;After installing the &lt;a href="http://www.microsoft.com/windowsserver2008/en/us/hyperv.aspx"&gt;Hyper-V&lt;/a&gt; Role under EN-US Locale / USA Location forced to all system accounts also, you can safely revert back to the desired locale settings and the &lt;a href="http://www.microsoft.com/windowsserver2008/en/us/hyperv.aspx"&gt;Hyper-V&lt;/a&gt; will continue working.&lt;br /&gt;&lt;br /&gt;Tough one!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-3815733724668685717?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=3815733724668685717&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3815733724668685717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3815733724668685717'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2008/11/hyper-v-lives-in-us-part-2.html' title='Hyper-V lives in US! (Part 2)'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-4369225974338946636</id><published>2008-11-06T08:55:00.004+02:00</published><updated>2008-11-06T20:15:41.216+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><category scheme='http://www.blogger.com/atom/ns#' term='events'/><title type='text'>New user group in Bulgaria!</title><content type='html'>Hey!&lt;br /&gt;Did you know? A brand new baby is being born here in Bulgaria. It's name is &lt;a href="http://www.sugbg.org/"&gt;Sharepoint Usergroup Bulgaria&lt;/a&gt;.&lt;br /&gt;I already registered there. And if you are interested in developing for/with Sharepoint, and also happen to be in the neighborhood, go for it!&lt;br /&gt;The first presenter will the &lt;a href="http://www.winsmarts.com/"&gt;Sahil Malik&lt;/a&gt;, a &lt;a href="https://mvp.support.microsoft.com/default.aspx/profile=D5203CE2-A442-44B8-99E4-6E7AB6EBAA49"&gt;MOSS MVP&lt;/a&gt; and &lt;a href="http://www.ineta.org/DesktopDefault.aspx?tabindex=2&amp;amp;tabid=14"&gt;INETA&lt;/a&gt; speaker.&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://www.kulov.net/blogs/martin/"&gt;Martin Kulov&lt;/a&gt; who is giving so much to the local community!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-4369225974338946636?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=4369225974338946636&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/4369225974338946636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/4369225974338946636'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2008/11/new-user-group-in-bulgaria.html' title='New user group in Bulgaria!'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-5712214296906083912</id><published>2008-11-06T08:48:00.004+02:00</published><updated>2008-11-06T20:15:56.709+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Live apps'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server 2008'/><title type='text'>Live writer on Server OS ? Help !</title><content type='html'>Have you ever tried the &lt;a href="http://get.live.com/writer/overview"&gt;Windows Live Writer&lt;/a&gt; ?&lt;br /&gt;It is really nice and handy application that helps you with posts. I used to make my posts with it. But after the upgrade to &lt;a href="http://www.microsoft.com/windowsserver2008/en/us/default.aspx"&gt;Windows Server 2008&lt;/a&gt; guess what ?&lt;br /&gt;&lt;br /&gt;---------------------------&lt;br /&gt;Windows Live Installer&lt;br /&gt;---------------------------&lt;br /&gt;Sorry, Windows Live programs cannot be installed on Windows Server, Windows XP Professional x64 Edition, or Windows operating systems earlier than Windows XP Service Pack 2.&lt;br /&gt;---------------------------&lt;br /&gt;OK &lt;br /&gt;---------------------------&lt;br /&gt;&lt;br /&gt;Why ???&lt;br /&gt;So, please, if anybody has a solution to this behavior, please help!&lt;br /&gt;&lt;br /&gt;P.S. No, I don not think that it is a solution to use a virtual machine with &lt;a href="http://www.microsoft.com/windows/windows-xp/"&gt;Windows XP&lt;/a&gt; just to use Live Writer. No way!&lt;br /&gt;&lt;br /&gt;HEELP ! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-5712214296906083912?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=5712214296906083912&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5712214296906083912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5712214296906083912'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2008/11/live-writer-on-server-os-help.html' title='Live writer on Server OS ? Help !'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-908983431580916004</id><published>2008-11-06T08:45:00.004+02:00</published><updated>2008-11-06T20:16:09.573+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hyper-V'/><title type='text'>Determining Hyper-V version</title><content type='html'>Hi again,&lt;br /&gt;In my last post I informed you about the version of Hyper-V. But how to check it?&lt;br /&gt;It is as simple as executing a command line in elevated command prompt:&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;wmic datafile where name="c:\\windows\\system32\\vmms.exe" get version&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;This sill give you the version. And here is also a brief list of versions:&lt;br /&gt;&lt;br /&gt;&lt;table class="" border="1" cellpadding="2" cellspacing="0" width="512"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="" valign="top" width="238"&gt;&lt;strong&gt;Version&lt;/strong&gt;&lt;/td&gt; &lt;td class="" valign="top" width="137"&gt;&lt;strong&gt;Version&lt;/strong&gt;&lt;/td&gt; &lt;td class="" valign="top" width="137"&gt;&lt;strong&gt;Released on&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class="" valign="top" width="238"&gt;Beta 1 (Windows Server 2008 Built-in)&lt;/td&gt; &lt;td class="" valign="top" width="137"&gt;6.0.6001.17101 &lt;/td&gt; &lt;td class="" valign="top" width="137"&gt;December 13, 2007&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class="" valign="top" width="238"&gt;Release Candidate 0&lt;/td&gt; &lt;td class="" valign="top" width="137"&gt;6.0.6001.18004&lt;/td&gt; &lt;td class="" valign="top" width="137"&gt;March 19, 2008&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class="" valign="top" width="238"&gt;Release Candidate 1&lt;/td&gt; &lt;td class="" valign="top" width="137"&gt;6.0.6001.18010&lt;/td&gt; &lt;td class="" valign="top" width="137"&gt;May 21, 2008&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class="" valign="top" width="238"&gt;Release to Manufacturing (RTM)&lt;/td&gt; &lt;td class="" valign="top" width="137"&gt;6.0.6001.18016&lt;/td&gt; &lt;td class="" valign="top" width="137"&gt;June 26, 2008&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Thanks to &lt;a href="http://blogs.dirteam.com/blogs/sanderberkouwer/archive/2008/07/03/determining-your-hyper-v-version-and-upgrade-method.aspx"&gt;this post&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Cheers,&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-908983431580916004?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=908983431580916004&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/908983431580916004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/908983431580916004'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2008/11/determining-hyper-v-version.html' title='Determining Hyper-V version'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-1085537703970621361</id><published>2008-11-06T08:18:00.004+02:00</published><updated>2008-11-06T20:16:27.179+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Hyper-V'/><title type='text'>Hyper-V lives in US ! AKA Virtual Machine Management Service entered stopped state.</title><content type='html'>Imagine you decided to upgrade to Windows 2008 Server and want to try it's new sexy &lt;a href="http://en.wikipedia.org/wiki/Hyper-V"&gt;Hyper-V hypervisor&lt;/a&gt;. Imagine also that you appear not to live in America (USA) and you set your locale settings to something different than EN-US.&lt;br /&gt;Guess what!&lt;br /&gt;You will never make &lt;a href="http://en.wikipedia.org/wiki/Hyper-V"&gt;Hyper-V&lt;/a&gt; running! You end up with:&lt;br /&gt;&lt;blockquote&gt;Virtual Machine Management Service (vmms) failed to start.&lt;/blockquote&gt;or&lt;br /&gt;&lt;blockquote&gt;Virtual Machine Management Service entered stopped state.&lt;/blockquote&gt;Period.&lt;br /&gt;No additional info.&lt;br /&gt;No related entries in the event log.&lt;br /&gt;OK. Now what ?&lt;br /&gt;You will go for:&lt;br /&gt;&lt;blockquote&gt; My CPU DOES support &lt;a href="http://www.intel.com/technology/virtualization/"&gt;Virtualization&lt;/a&gt; (double checking with manufacturer web site and BIOS settings).&lt;br /&gt;I aslo made sure that the &lt;a href="http://en.wikipedia.org/wiki/NX_bit"&gt;No Execution bit&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Data_Execution_Prevention"&gt;DEP&lt;/a&gt; is set to enable from the BIOS.&lt;br /&gt;I also went for latest updates from windows update.&lt;br /&gt;What am I doing wrong ?&lt;/blockquote&gt;&lt;br /&gt;Well. The point is that you are not doing wrong. but &lt;a href="http://www.microsoft.com/"&gt;Microsoft&lt;/a&gt; is doing wrong. You will google the problem, and may you will find &lt;a href="http://social.technet.microsoft.com/Forums/en-US/winserverhyperv/thread/c67724e6-4420-4b3f-8049-1029902176f9/"&gt;this thread&lt;/a&gt;, or &lt;a href="http://geekswithblogs.net/WallabyFan/archive/2008/02/09/hyper-v-on-win2008-rtm---vmm-service-fails-to-start.aspx"&gt;that post&lt;/a&gt;. And you will realize that you now must (you must &lt;span style="font-weight: bold;"&gt;not &lt;/span&gt;reinstall the Server OS!):&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Remove (uninstall) the Hyper-V role.&lt;/li&gt;&lt;li&gt;Set locale settings to EN-US&lt;/li&gt;&lt;li&gt;Set location to USA&lt;/li&gt;&lt;li&gt;Force locale settings to be applied to all system accounts&lt;/li&gt;&lt;li&gt;Restart&lt;/li&gt;&lt;li&gt;Install the Hyper-V role&lt;/li&gt;&lt;li&gt;Restart&lt;/li&gt;&lt;li&gt;Go and create your virtual machines&lt;/li&gt;&lt;/ol&gt;Come on! Do we really need to do this ? And what if I change back the locale settings? Well I still do not know what will happen if I do this, but I am going to check in the next couple of hours or days. So stay tuned for updates!&lt;br /&gt;&lt;br /&gt;P.S. And NO, this is not because I am with pre-release beta of HyperV. My Version is: 6.0.6001.18125 !&lt;br /&gt;&lt;br /&gt;Cheers!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-1085537703970621361?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=1085537703970621361&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/1085537703970621361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/1085537703970621361'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2008/11/hyper-v-lives-in-us-aka-virtual-machine.html' title='Hyper-V lives in US ! AKA Virtual Machine Management Service entered stopped state.'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-5189483450469249418</id><published>2008-08-27T22:11:00.000+03:00</published><updated>2008-08-27T22:12:28.693+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><title type='text'>So important that needs to be shared</title><content type='html'>&lt;p&gt;Yesterday I received an interesting mail from REGISER.BG - the registrar for .BG TLD.   &lt;br /&gt;As for long time it was the only one (monopoly) registrar for that kind of domains. Thus making registration almost impossible. For years they were requiring tons of documents, legal notices, trade mark certificate, and whatever document you can imagine, in order to process your request for registering .BG domain.&lt;/p&gt;  &lt;p&gt;So, the mail that they sent is so amazing that I will share with you all. Here it is:&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre&gt;Dear clients,&lt;br /&gt;&lt;br /&gt;We would like to let you know that on 25/08/2008 Register.BG extended the possibilities for domain name registration in the .bg zone, allowing the registrants on their own risk to register domain names without providing grounds for the name. In order to solve potential disputes between registrants and domain name applicants, Register.BG establishes a Dispute committee. The updated Terms and Conditions are published at &lt;a href="https://www.register.bg"&gt;https://www.register.bg&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In addition, Register.BG extended the possibilities for domain name setup in the .bg zone and the sub-zones, allowing the DNS setup to be realized with IP addresses in IPv6 format as well.  &lt;br /&gt;&lt;br /&gt;Sincerely,&lt;br /&gt;Register.BG &lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So, since 25.08.2008 we can normally register a .BG domain and be proud to be Bulgarians.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-5189483450469249418?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=5189483450469249418&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5189483450469249418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5189483450469249418'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2008/08/so-important-that-needs-to-be-shared.html' title='So important that needs to be shared'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-9126541759697672451</id><published>2008-06-18T20:38:00.002+03:00</published><updated>2008-11-06T20:17:05.171+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><title type='text'>Master of science</title><content type='html'>&lt;p&gt;Oh yeah,  &lt;br /&gt;Since today (18th of June 2008) you call officially call me "Master of Science in Software Engineering" :)&lt;/p&gt;  &lt;p&gt;I should go to a deserved vacation ;)&lt;/p&gt;  &lt;p&gt;cheers,  &lt;br /&gt;Anton&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-9126541759697672451?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=9126541759697672451&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/9126541759697672451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/9126541759697672451'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2008/06/master-of-science.html' title='Master of science'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-7720682047047453953</id><published>2008-06-06T09:07:00.002+03:00</published><updated>2010-04-26T14:36:51.605+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='datamining'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Data Mining by Rafal Lukawiecki</title><content type='html'>&lt;p&gt;&lt;a href="http://www.microsoft.com/" target="_blank"&gt;Microsoft&lt;/a&gt; has recently published a &lt;a href="http://www.microsoft.com/emea/spotlight/event.aspx?id=99" target="_blank"&gt;series of video sessions on Data Mining by Rafal Lukawiecki&lt;/a&gt; on their &lt;a href="http://www.microsoft.com/technetspotlight/" target="_blank"&gt;TechNet Spotlight&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;This is, in my opinion, a vast and interesting subject which was partially covered by Rafal when he came to Sofia on 25th of January this year. As he promised a series of video sessions are already on the &lt;a href="http://www.microsoft.com/technetspotlight/" target="_blank"&gt;TechNet Spotlight&lt;/a&gt;, so anyone who hadn't chance to be here and listen to Rafal live, can go and watch the videos online. Once more - really, really amazing subject and incredible speaker!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-7720682047047453953?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=7720682047047453953&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/7720682047047453953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/7720682047047453953'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2008/06/data-mining-by-rafal-lukawiecki.html' title='Data Mining by Rafal Lukawiecki'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-1428523494575733094</id><published>2008-04-06T09:09:00.001+02:00</published><updated>2008-04-06T09:09:52.247+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Microsoft SQL Server or Oracle Database Server ?</title><content type='html'>&lt;p&gt;It's the question that drives discussions for decades. Recently I ended up with very interesting article. It's called &amp;quot;&lt;a href="http://weblog.infoworld.com/dbunderground/archives/2008/03/the_real_differ.html?source=rss" target="_blank"&gt;The real difference between SQL Server and Oracle&lt;/a&gt;&amp;quot;.&lt;/p&gt;  &lt;p&gt;The Intro:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;For years now there's been a constant war between Microsoft supporters and Oracle supporters. Oracle has these features, SQL Server has these features, etc. But that's not really where the real importance lies. Sure, functionality is a part of it because your database should be able to do what you need it to do. However, do you want to know what the real difference between the two companies is and why Microsoft has made such a strong impact in the industry?&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You can read the full story &lt;a href="http://weblog.infoworld.com/dbunderground/archives/2008/03/the_real_differ.html?source=rss" target="_blank"&gt;here&lt;/a&gt;. I hope you also find it interesting :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-1428523494575733094?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=1428523494575733094&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/1428523494575733094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/1428523494575733094'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2008/04/microsoft-sql-server-or-oracle-database.html' title='Microsoft SQL Server or Oracle Database Server ?'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-4808435696116745189</id><published>2008-03-26T12:37:00.001+02:00</published><updated>2008-03-26T23:12:52.670+02:00</updated><title type='text'>Vista SP 1 LIVE at last!</title><content type='html'>&lt;p&gt;I'm glad to see that it is indeed a fact.&lt;/p&gt;  &lt;p&gt;You can download the long awaited update &lt;a href="http://go.microsoft.com/?linkid=8578267" target="_blank"&gt;here&lt;/a&gt;. &lt;a href="http://www.microsoft.com/" target="_blank"&gt;Microsoft&lt;/a&gt; has published also a &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=b0c7136d-5ebb-413b-89c9-cb3d06d12674&amp;amp;DisplayLang=en" target="_blank"&gt;stand alone package installer&lt;/a&gt; (and the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=874A414B-32B2-41CC-BD8B-D71EDA5EC07C&amp;amp;displaylang=en" target="_blank"&gt;x64 version&lt;/a&gt;) as well as it will be published to the regular Windows Update.&lt;/p&gt;  &lt;p&gt;I am eager to see the difference :)&lt;/p&gt;  &lt;p&gt;cheers,    &lt;br /&gt;Anton&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-4808435696116745189?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=4808435696116745189&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/4808435696116745189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/4808435696116745189'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2008/03/vista-sp-1-live-at-last.html' title='Vista SP 1 LIVE at last!'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-2162769203265325956</id><published>2008-03-20T10:39:00.001+02:00</published><updated>2008-03-20T10:39:11.721+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='xaml'/><title type='text'>VS2008 bug crashes the IDE</title><content type='html'>&lt;p&gt;Hello again.    &lt;br /&gt;I was playing with WPF last couple of days and I discovered a strange bug in the VS 2008 IDE. It crashes the whole IDE (devenv.exe) with just single line of XAML !&lt;/p&gt;  &lt;p&gt;So, here is the bug report: &lt;a title="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=333036" href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=333036"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=333036&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And this is short description how to reproduce:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create a simple &amp;quot;WPF Windows Application&amp;quot; project. &lt;/li&gt;    &lt;li&gt;Open the Window1.xaml &lt;/li&gt;    &lt;li&gt;In the XAML view, put TextBlock control &lt;/li&gt;    &lt;li&gt;After adding the TextBlock control, the XAML should be like this:      &lt;br /&gt;&amp;lt;Window x:Class=&amp;quot;WpfApp.Window1&amp;quot; xmlns=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;       &lt;br /&gt;xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;       &lt;br /&gt;Title=&amp;quot;Window1&amp;quot; Height=&amp;quot;300&amp;quot; Width=&amp;quot;300&amp;quot;&amp;gt;       &lt;br /&gt;&amp;lt;Grid&amp;gt;       &lt;br /&gt;&amp;lt;TextBlock Text=&amp;quot;DummyTextBlock&amp;quot;&amp;gt;       &lt;br /&gt;&amp;lt;!-- put ToolTip here --&amp;gt;       &lt;br /&gt;&amp;lt;/TextBlock&amp;gt;       &lt;br /&gt;&amp;lt;/Grid&amp;gt;       &lt;br /&gt;&amp;lt;/Window&amp;gt; &lt;/li&gt;    &lt;li&gt;Now replace the &amp;quot;&amp;lt;!-- put ToolTip here --&amp;gt;&amp;quot; with this:      &lt;br /&gt;&amp;lt;ToolTip&amp;gt;       &lt;br /&gt;And let VS IDE to auto-complete the closing tag.       &lt;ol&gt;       &lt;li&gt;&lt;strong&gt;Caution!&lt;/strong&gt; Indeed we should have:           &lt;br /&gt;&amp;lt;TextBlock Text=&amp;quot;DummyTextBlock&amp;quot;&amp;gt;           &lt;br /&gt;&amp;lt;ToolTip&amp;gt;&amp;lt;/ToolTip&amp;gt;           &lt;br /&gt;&amp;lt;/TextBlock&amp;gt;           &lt;br /&gt;&lt;/li&gt;        &lt;li&gt;But not (which is the correct syntax):          &lt;br /&gt;&amp;lt;TextBlock Text=&amp;quot;DummyTextBlock&amp;quot;&amp;gt;           &lt;br /&gt;&amp;lt;TextBlock.ToolTip&amp;gt;           &lt;br /&gt;&amp;lt;ToolTip&amp;gt;&amp;lt;/ToolTip&amp;gt;           &lt;br /&gt;&amp;lt;/TextBlock.ToolTip&amp;gt;           &lt;br /&gt;&amp;lt;/TextBlock&amp;gt; &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Now, by the moment the VS auto completes your ToolTip tag and underscores it, the IDE will crash.&lt;/p&gt;  &lt;p&gt;Please, if you can confirm the bug, go to &lt;a title="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=333036" href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=333036"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=333036&lt;/a&gt; and click &amp;quot;Validate&amp;quot;.&lt;/p&gt;  &lt;p&gt;Cheers,    &lt;br /&gt;Anton&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-2162769203265325956?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=2162769203265325956&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/2162769203265325956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/2162769203265325956'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2008/03/vs2008-bug-crashes-ide.html' title='VS2008 bug crashes the IDE'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-707605402291402633</id><published>2008-03-07T15:00:00.001+02:00</published><updated>2008-03-07T15:00:12.180+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>First impression on Silverlight 2.0</title><content type='html'>&lt;p&gt;As I told there is a fresh new build of Silverlight - Silverlight 2.0. Happy to hear that I downloaded and install ....&lt;/p&gt;  &lt;p&gt;Now what - cannot open the old Silverlight 1.1 projects. The VS gives the following error:   &lt;br /&gt;The imported project &amp;quot;C:\Program Files\MSBuild\Microsoft\VisualStudio\v9.0\Silverlight\Microsoft.Silverlight.CSharp.targets&amp;quot; was not found. Confirm that the path in the &amp;lt;Import&amp;gt; declaration is correct and that the file exists on the disk&lt;/p&gt;  &lt;p&gt;The hint/solution is here: &lt;a title="http://silverlight.net/forums/p/10762/34264.aspx" href="http://silverlight.net/forums/p/10762/34264.aspx"&gt;http://silverlight.net/forums/p/10762/34264.aspx&lt;/a&gt; and it appears that we, as developers should not be afraid to edit the .csproj files - why should we ?&lt;/p&gt;  &lt;p&gt;Just curious - if I am forced to uninstall any previous versions of Silverlight along with SDKs and VS tools (it is a prerequisite and the installation does not continue until you install them), why then the new Silverlight is put into new folder and there is no automatic backward compatibility.&lt;/p&gt;  &lt;p&gt;Looking forward for the next release :)&lt;/p&gt;  &lt;p&gt;cheers,   &lt;br /&gt;Anton&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-707605402291402633?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=707605402291402633&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/707605402291402633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/707605402291402633'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2008/03/first-impression-on-silverlight-20.html' title='First impression on Silverlight 2.0'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-309933976262405112</id><published>2008-03-07T10:10:00.001+02:00</published><updated>2008-03-07T10:10:57.727+02:00</updated><title type='text'>New releases from Microsoft</title><content type='html'>&lt;p&gt;Hello,   &lt;br /&gt;Just to inform you that Microsoft has just released the new &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E0BAE58E-9C0B-4090-A1DB-F134D9F095FD&amp;amp;displaylang=en" target="_blank"&gt;Beta 1 of Silverlight 2&lt;/a&gt;, as well as &lt;a href="http://go.microsoft.com/fwlink/?LinkID=110956" target="_blank"&gt;ASP.NET MVC Preview 2&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Great information about these technologies, as well as many others you can find at: &lt;a title="http://asp.net/downloads/3.5-extensions/" href="http://asp.net/downloads/3.5-extensions/"&gt;http://asp.net/downloads/3.5-extensions/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;For those of you who would ask - To install the Silverlight 2 Beta 1 you will need uninstall any previous versions of Silverlight, Silverlight tools for Visual Studio and Silverlight SDK. And for the MVC Preview 2 it is recommended that you uninstall first the ASP.NET MVC December preview.&lt;/p&gt;  &lt;p&gt;Cheers,   &lt;br /&gt;Anton&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-309933976262405112?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=309933976262405112&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/309933976262405112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/309933976262405112'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2008/03/new-releases-from-microsoft.html' title='New releases from Microsoft'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-3305946839720744341</id><published>2008-02-22T11:14:00.001+02:00</published><updated>2008-02-22T11:14:15.971+02:00</updated><title type='text'>VISTA series - Digital IDs, Adobe Acrobat, BER error ...</title><content type='html'>&lt;p&gt;Hi again,   &lt;br /&gt;I'm continuing to post VISTA problems and resolutions.&lt;/p&gt;  &lt;p&gt;Actually I'm not sure whether the problem I am going to describe is specific to VISTA only, but it appeared to me after migrating to VISTA.&lt;/p&gt;  &lt;p&gt;So, who does not have a Digital ID (Digital signature) nowadays. I am using one since last year. I'm used to use the electronic services provided by the government, as well as digitally signing different kind of documents. I had no problems for more than an year. Until I got VISTA.&lt;/p&gt;  &lt;p&gt;Suddenly the &lt;a href="http://www.adobe.com/" target="_blank"&gt;Adobe&lt;/a&gt; &lt;a href="http://www.adobe.com/products/acrobat/" target="_blank"&gt;Acrobat&lt;/a&gt; (7.0.0) under VISTA did not see my digital ID. It sees some other self-signed IDs, but not the one that I really need. The strange thing is that it does see it in the &amp;quot;Advanced -&amp;gt; Security -&amp;gt; My digital IDs&amp;quot;, but when I want to see details, the Acrobat errors with something like:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Certificate parsing error:      &lt;br /&gt;x.509 parsing error       &lt;br /&gt;Error encounted while BER decoding&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;WTF ?&lt;/p&gt;  &lt;p&gt;After some &lt;a href="http://www.google.com/search?q=adobe+acrobat+x.509+error+ber+decoding" target="_blank"&gt;googling&lt;/a&gt;, I found that it is a common, well-known by Adobe problem, with no patch/update yet (the problem seems to exists in Adobe Acrobat 8.0, too). &lt;/p&gt;  &lt;p&gt;The problem seemed to be that there is some &amp;quot;peer-to-peer&amp;quot; certificate in the &lt;a href="http://technet2.microsoft.com/windowsserver/en/library/1c4d3c02-e996-450a-bf4f-9a12d245a7eb1033.mspx?mfr=true" target="_blank"&gt;Windows Certificate Store&lt;/a&gt;. It is issued by [my windows login] to [my windows login], and I don't know why and when.&lt;/p&gt;  &lt;p&gt;The solution: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Open the &lt;a href="http://windowshelp.microsoft.com/Windows/en-US/Help/e1fd6af3-8bd6-4e44-8b62-46d5c8995b291033.mspx" target="_blank"&gt;Windows Certificate Manager&lt;/a&gt; (Start-&amp;gt;run / search-&amp;gt;certmgr.msc)&lt;/li&gt;    &lt;li&gt;Locate any &amp;quot;peer-to-peer certificate&amp;quot; you may have (the &amp;quot;peer-to-peer&amp;quot; you will see in the column &amp;quot;Intended purposes&amp;quot;).&lt;/li&gt;    &lt;li&gt;Remove it (all of &amp;quot;peer-to-peer&amp;quot;)&lt;/li&gt;    &lt;li&gt;Restart Adobe Acrobat&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Now I think you will be able to use your digital ID with Adobe Acrobat again.&lt;/p&gt;  &lt;p&gt;Hope this helps,   &lt;br /&gt;Anton&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-3305946839720744341?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=3305946839720744341&amp;isPopup=true' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3305946839720744341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3305946839720744341'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2008/02/vista-series-digital-ids-adobe-acrobat.html' title='VISTA series - Digital IDs, Adobe Acrobat, BER error ...'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-3425012678400886032</id><published>2008-02-20T09:48:00.001+02:00</published><updated>2008-02-20T09:48:59.321+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VISTA'/><title type='text'>VISTA :) SP1 Prerequisites</title><content type='html'>&lt;p&gt;I found an interesting article on the net:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;amp;articleId=9063158&amp;amp;pageNumber=1"&gt;Vista SP1 prerequisite updates send some PCs into endless reboot&lt;/a&gt;...&lt;/p&gt;  &lt;p&gt;And I am happy to find that I have installed &lt;a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;amp;articleId=9062542"&gt;these updates&lt;/a&gt; without any problems ;)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-3425012678400886032?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=3425012678400886032&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3425012678400886032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3425012678400886032'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2008/02/vista-sp1-prerequisites.html' title='VISTA :) SP1 Prerequisites'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-6589502362440492027</id><published>2008-02-20T09:40:00.001+02:00</published><updated>2008-02-20T09:40:26.499+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VISTA'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>VISTA networking sometimes blocks outbound traffic</title><content type='html'>&lt;p&gt;Hello,    &lt;br /&gt;Strange things happen all the time ;) That's the funniest.&lt;/p&gt;  &lt;p&gt;So, I have (hopefully to put that into the PAST) some strange problem under VISTA with my Marvell Yukon Ethernet NIC and my &lt;a href="http://www.linksys.com/"&gt;Linksys'&lt;/a&gt; &lt;a href="http://www.linksys.com/servlet/Satellite?c=L_Product_C2&amp;amp;childpagename=US%2FLayout&amp;amp;cid=1133202177241&amp;amp;pagename=Linksys%2FCommon%2FVisitorWrapper&amp;amp;lid=7724139789B06"&gt;WRT54GL&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;From time to time it appears that I don't outbound traffic to ports like HTTP, FTP, POP, IMAP, etc. But I have outbound traffic via ICMP like PING, TRACE, ECHO. What is going on ?&lt;/p&gt;  &lt;p&gt;I did a little research over the Internet and a number of posts came out. The most descriptive one I found is &lt;a href="http://forums.microsoft.com/TechNet/ShowPost.aspx?PageIndex=2&amp;amp;SiteID=17&amp;amp;PostID=1449219"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;It appears that VISTA is trying to impress us and play hard with the network adapters on some lower layers of the &lt;a href="http://en.wikipedia.org/wiki/OSI_model"&gt;OSI model&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;And so, I disable the &amp;quot;IPv4 Checksum offload&amp;quot;, the &amp;quot;TCP Checksum Offload (IPv4)&amp;quot; and the &amp;quot;UDP Checksum Offload (IPv4)&amp;quot;, restarted and looking forward to see the change. This you can do from:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Control Panel -&amp;gt; Network Connections&lt;/li&gt;    &lt;li&gt;Right click on the desired network connection&lt;/li&gt;    &lt;li&gt;Select PROPERTIES (you will be prompted from the UAC that this requires administrative permission)&lt;/li&gt;    &lt;li&gt;Click on &amp;quot;CONFIGURE&amp;quot; button just bellow the name of the Network Adapter used for the connection&lt;/li&gt;    &lt;li&gt;Go to &amp;quot;Advanced&amp;quot; tab&lt;/li&gt;    &lt;li&gt;Find all the &amp;quot;[something] Offload (IPv4)&amp;quot; and select &amp;quot;DISABLED&amp;quot;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;OK, I'm sure we are all impatient for the &lt;a href="http://technet.microsoft.com/en-us/windowsvista/bb738089.aspx"&gt;SERVICE PACK 1,&lt;/a&gt; which is expected to come with Windows Update in mid-March.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-6589502362440492027?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=6589502362440492027&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6589502362440492027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6589502362440492027'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2008/02/vista-networking-sometimes-blocks.html' title='VISTA networking sometimes blocks outbound traffic'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-7303218312372029832</id><published>2008-02-18T14:41:00.001+02:00</published><updated>2008-02-18T14:43:22.667+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VISTA'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Calculating time to copy files, or how to speed up file copying under VISTA</title><content type='html'>&lt;p&gt;Hi there,   &lt;br /&gt;I'm sure that most of you, guys who are using Windows VISTA already hate the &amp;quot;smart feature&amp;quot; that is &amp;quot;Calculating time remaining to copy files&amp;quot;, which takes more time than the actual copy itself. Well, may be under some circumstances it may speed-up networked copy of files, but in the common scenario it just slows down the whole process.&lt;/p&gt;  &lt;p&gt;Thanks to &lt;a href="http://mytechweblog.blogspot.com/2007/04/slow-file-copymove-in-vista-here-is_05.html"&gt;this post&lt;/a&gt;, I've found the way to remove the irritating feature and go normal again.&lt;/p&gt;  &lt;p&gt;The culprit seems to be the &amp;quot;Remote Differential Compression&amp;quot; feature, which is introduced in VISTA for the first time. To turn it off go in Control Panel / Programs and features / Turn on or turn off Windows features and uncheck &amp;quot;Remote Differential Compression&amp;quot;.&lt;/p&gt;  &lt;p&gt;Another feature that might slow the network traffic is the TCP/IP &amp;quot;Receive Window Auto-Tuning&amp;quot;, which can be turned off via elevated command prompt:&lt;/p&gt;  &lt;p&gt;netsh interface tcp set global rss=disabled   &lt;br /&gt;netsh interface tcp set global autotuninglevel=disabled&lt;/p&gt;  &lt;p&gt;After these changes you might want to reboot the system and look for improvements.&lt;/p&gt;  &lt;p&gt;Note: I also have read somewhere that &lt;a href="http://www.microsoft.com/"&gt;Microsoft&lt;/a&gt; has promised to fix this issue with &lt;a href="http://technet.microsoft.com/en-us/windowsvista/bb738089.aspx"&gt;Service Pak 1 for VISTA&lt;/a&gt;. And the Service Pack 1 is already released to manufacturing, as of 04 February 2008.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-7303218312372029832?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=7303218312372029832&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/7303218312372029832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/7303218312372029832'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2008/02/calculating-time-to-copy-files-or-how.html' title='Calculating time to copy files, or how to speed up file copying under VISTA'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-3047831759479716213</id><published>2008-01-23T16:59:00.001+02:00</published><updated>2008-01-23T16:59:44.794+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>String.Format - the quick reference</title><content type='html'>&lt;p&gt;Hello,&lt;br&gt;I just found&amp;nbsp;this post&amp;nbsp;very usefull for a quick reference of the formatting strings: &lt;a title="http://idunno.org/archive/2004/14/01/122.aspx" href="http://idunno.org/archive/2004/14/01/122.aspx"&gt;http://idunno.org/archive/2004/14/01/122.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Just post it here to keep a track ;)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-3047831759479716213?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=3047831759479716213&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3047831759479716213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3047831759479716213'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2008/01/stringformat-quick-reference.html' title='String.Format - the quick reference'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-4864354062184468125</id><published>2008-01-21T11:25:00.001+02:00</published><updated>2008-01-21T11:25:29.438+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><title type='text'>PHP and .NET</title><content type='html'>&lt;p&gt;Hm, recently I came to a strange site: &lt;br&gt;&lt;a title="http://php-compiler.net/doku.php" href="http://php-compiler.net/doku.php"&gt;http://php-compiler.net/doku.php&lt;/a&gt;&lt;br&gt;It's an enthusiastic project to make PHP compiler for .NET and to make possible write PHP applications in the .NET environment and ASP.NET 2.0. It is still in BETA stage, but they already have Project templates for VS2005 SP1.&lt;/p&gt; &lt;p&gt;I shall investigate and make further posts about this one ;)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-4864354062184468125?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=4864354062184468125&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/4864354062184468125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/4864354062184468125'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2008/01/php-and-net.html' title='PHP and .NET'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-4681785425828885282</id><published>2008-01-21T11:22:00.001+02:00</published><updated>2008-01-21T11:22:12.728+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='regex'/><title type='text'>Regular Expressions</title><content type='html'>&lt;p&gt;A quick search with not wasting much time just showed me this nice site: &lt;a title="http://regexlib.com/RETester.aspx" href="http://regexlib.com/RETester.aspx"&gt;http://regexlib.com/RETester.aspx&lt;/a&gt;&amp;nbsp;where you can test your Regular Expressions.&lt;/p&gt; &lt;p&gt;You might find it usefull.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-4681785425828885282?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=4681785425828885282&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/4681785425828885282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/4681785425828885282'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2008/01/regular-expressions.html' title='Regular Expressions'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-2344485941672833614</id><published>2008-01-05T23:58:00.001+02:00</published><updated>2008-01-05T23:58:33.872+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>MySQL - my (Un)Favourite Database</title><content type='html'>&lt;p&gt;In my last project I decided to go out with MySQL. Why - do not ask why ;)&lt;/p&gt;  &lt;p&gt;Anyway.&lt;/p&gt;  &lt;p&gt;In the process of building, debugging, developing I noticed that some of the searches does not return a correct result. A search in a VARCHAR field (for Cyrillic characters). I looked for the table encoding - it was UTF8; I looked for the column encoding - it was UTF8 (both collations utf8_general_ci); I looked for the server default encoding - UTF8; I looked for the encoding passed by the client application - again it was UTF8.&lt;/p&gt;  &lt;p&gt;Suddenly, by incident I noticed - the encoding of the database was cp1251 (the Cyrillic one). It killed me.&lt;/p&gt;  &lt;p&gt;A simple command solved the problem:&lt;/p&gt;  &lt;p&gt;&lt;font color="#0080c0"&gt;ALTER DATABASE {db_name} DEFATULT ENCODING utf8, DEFAULT COLLATION utf8_general_ci;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;But I was inserting correct values, when I was browsing the table I could see the right values, but when I search for specific values in the STORED PROCEDURE with AD-HOC SQL built dynamically in the procedure, I could not get the results ...&lt;/p&gt;  &lt;p&gt;No Idea ... but I begin to look more and more to the &lt;a href="http://www.microsoft.com/sql/"&gt;MS SQL server&lt;/a&gt; ... and its &lt;a href="http://go.microsoft.com/fwlink/?LinkId=64064"&gt;EXPRESS edition&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/5177305310827978243-2344485941672833614?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=2344485941672833614&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/2344485941672833614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/2344485941672833614'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2008/01/mysql-my-unfavourite-database.html' title='MySQL - my (Un)Favourite Database'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-3250403165476259260</id><published>2008-01-04T19:15:00.000+02:00</published><updated>2008-01-05T23:48:49.546+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VISTA'/><category scheme='http://www.blogger.com/atom/ns#' term='print'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Network printing with VISTA and XP / print spooler hangs</title><content type='html'>&lt;p&gt;Hello,    &lt;br /&gt;Merry Christmas and Happy New 2008 !!&lt;/p&gt;  &lt;p&gt;So, May be you have heard a lot of &amp;quot;Print Spooler hangs&amp;quot; using Windows Vista and sharing a printer. I had a terrible couple of days looking for solution of the problem. Including online chat with HP support and posting on Microsoft TechNet forums.&lt;/p&gt;  &lt;p&gt;Problem anatomy:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Desktop station with Vista 64. HP LaserJet 1018 connected to it (have full support for VISTA 64 and print local jobs just fine, latest drivers installed from the HP site). Shared.&lt;/li&gt;    &lt;li&gt;Laptop with XP SP2 x86.&lt;/li&gt;    &lt;li&gt;Successfully browsed from the XP to the shared printer. Installed as a local printer on the Laptop using new local port (&lt;a href="file://\\vista-pc\printerName"&gt;\\vista-pc\printerName&lt;/a&gt;).&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Now, the only way I got this printer to print job from the XP is the following:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;In VISTA: Turn the UAC OFF.&lt;/li&gt;    &lt;li&gt;In XP: Authenticate to the VISTA with the username that is the OWNER of the printer.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Any other attempts to print (i.e. authenticate with different name, that has full access to the printer /SECURITY TAB/, or UAC ON) just sends the print job to the Queue and nothing happens until restart of print spooler service on the VISTA.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Here is the solution:&lt;/strong&gt;     &lt;br /&gt;What do you need to make it work?&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Lots of patience; &lt;/li&gt;    &lt;li&gt;Correct drivers for correct OS (i.e. VISTA or XP) and platform (i.e. x86 or x64) &lt;/li&gt;    &lt;li&gt;First install the printer locally and make sure everything's fine (note: there are still number of printers that currently do not have VISTA drivers) &lt;/li&gt;    &lt;li&gt;Share the printer &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The tricky part - change the following policies in the VISTA host:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;font color="#0080c0"&gt;Local Computer Policies\Administrative Templates\Printers&lt;/font&gt;:       &lt;br /&gt;&lt;strong&gt;Allow print spooler to accept client connections&lt;/strong&gt; &amp;gt; &lt;font color="#004080"&gt;to enabled &lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#0080c0"&gt;User Configuration\Administrative Templates\Control Panel\Printers&lt;/font&gt;:       &lt;br /&gt;&lt;strong&gt;Point and Print Restrictions&lt;/strong&gt; &amp;gt; &lt;font color="#004080"&gt;to disabled&lt;/font&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;font color="#0080c0"&gt;Note&lt;/font&gt;: To change local policies you can click the &amp;quot;START&amp;quot; and then in the search box type in: &lt;font color="#0080c0"&gt;gpedit.msc&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The drivers part - install the additional drivers on the VISTA box:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;On your VISTA box open printer and faxes &lt;/li&gt;    &lt;li&gt;right click blank field &lt;/li&gt;    &lt;li&gt;Run as administrator &lt;/li&gt;    &lt;li&gt;Server Properties &lt;/li&gt;    &lt;li&gt;Drivers Tab &lt;/li&gt;    &lt;li&gt;Add the additional drivers (i.e. x86 drivers or x64 drivers) &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The next trick (optional if the above scenario still does not solve the problem):&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Again open printers and faxes on your VISTA &lt;/li&gt;    &lt;li&gt;Locate the installed printer &lt;/li&gt;    &lt;li&gt;Right click &lt;/li&gt;    &lt;li&gt;Run as administrator &lt;/li&gt;    &lt;li&gt;Properties &lt;/li&gt;    &lt;li&gt;Ports tab &lt;/li&gt;    &lt;li&gt;UNCHECK the &amp;quot;&lt;font color="#0080c0"&gt;Bidirectional support&lt;/font&gt;&amp;quot; checkmark &lt;/li&gt;    &lt;li&gt;Apply &lt;/li&gt;    &lt;li&gt;OK &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The funniest:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Go to the client (that will use the shared printer) &lt;/li&gt;    &lt;li&gt;Open Printers and faxes &lt;/li&gt;    &lt;li&gt;Right click on an empty space &lt;/li&gt;    &lt;li&gt;Add printer &lt;/li&gt;    &lt;li&gt;Choose add &lt;font color="#0080c0"&gt;LOCAL PRINTER&lt;/font&gt; and &lt;font color="#0080c0"&gt;UNCHECK&lt;/font&gt; the &lt;font color="#0080c0"&gt;&amp;quot;Automatically detect plug &amp;amp; play printer connected ...&amp;quot;&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;Choose to &lt;font color="#0080c0"&gt;Create a new port&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;Choose &lt;font color="#0080c0"&gt;Local port&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;The port name - be very careful, the name should be as follows: &lt;a href="file://\\VISTA-PC-NAME\Shared-printer-name"&gt;\\VISTA-PC-NAME\Shared-printer-name&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Next &lt;/li&gt;    &lt;li&gt;Choose the type of the printer (at that point you must have the appropriate drivers for the that printer) &lt;/li&gt;    &lt;li&gt;Finish the installation of the printer &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Voila!    &lt;br /&gt;Hope this will work out for you.&lt;/p&gt;  &lt;p&gt;The original forum posts are here:    &lt;br /&gt;&lt;a title="http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=2629862&amp;amp;SiteID=17" href="http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=2629862&amp;amp;SiteID=17"&gt;http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=2629862&amp;amp;SiteID=17&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/5177305310827978243-3250403165476259260?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=3250403165476259260&amp;isPopup=true' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3250403165476259260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3250403165476259260'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2008/01/network-printing-with-vista-and-xp.html' title='Network printing with VISTA and XP / print spooler hangs'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-6847858612722006472</id><published>2007-12-20T09:52:00.001+02:00</published><updated>2007-12-20T09:59:28.399+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><title type='text'>SQL, Joins, Unions and more .. continued II</title><content type='html'>&lt;p&gt;Last night I decided to let MySQL think about that query ... It seemed to have completed calculations in the morning. Not surprisingly it has returned the very same data like did the MS SQL - The multiplication of the results. But it has taken 6604156 milliseconds (~6604 seconds)&amp;nbsp;to obtain the result. The same result that&amp;nbsp;MS SQL EXPRESS&amp;nbsp;returned in 274709 milliseconds (~275 seconds).&lt;/p&gt; &lt;p&gt;No further comments.&lt;br&gt;Case closed.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-6847858612722006472?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=6847858612722006472&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6847858612722006472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6847858612722006472'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2007/12/sql-joins-unions-and-more-continued-ii.html' title='SQL, Joins, Unions and more .. continued II'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-6361440102212582583</id><published>2007-12-19T23:02:00.001+02:00</published><updated>2007-12-20T00:12:53.691+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><title type='text'>SQL, Joins, Unions and more .. continued</title><content type='html'>&lt;p&gt;Hi again.&lt;/p&gt; &lt;p&gt;Today I made a test - transferred the data into MS SQL Server 2005 Express SP 2.0.&lt;/p&gt; &lt;p&gt;Guess What ? :)&lt;/p&gt; &lt;p&gt;The situation is almost the same ! Wondering why the result was messed, the execution time was arround '274709' - I guess this is the "ms" - "duration" column in the MS SQL Server Profiler. Which is arround 5 minutes.&lt;br&gt;The mess I am talking about is the following:&lt;br&gt;The situation is that in of the tables I have about 120k records, which should be displayed, on the other one&amp;nbsp;I have about 5k records. Insted of showing "120000" for "di_count", and "5000" for "ei_count", in the result I got '594163480' (which is the number of rows in one of the left joined tables multiplied by the number of rows in the other one)&amp;nbsp;for each of them - the same figure for the two columns. What is that ? &lt;/p&gt; &lt;p&gt;I just want to make a select from one table, than join second table, then join third table to the FIRST one, then join the last table AGAIN to THE FIRST one. Why is it joining the result alltogether?&lt;/p&gt; &lt;p&gt;Anyway .. using UNION, VIEW and work with the VIEW solves the problem, but I was just wondering why this happens ...&lt;/p&gt; &lt;p&gt;I j ust can't help showing you these two screens:&lt;/p&gt; &lt;p&gt;For the MSSQL Profiler:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.stoki.biz/pics/SQLJoinsUnionsandmore.continued_143F4/mssql.gif" atomicselection="true"&gt;&lt;img height="48" alt="mssql" src="http://www.stoki.biz/pics/SQLJoinsUnionsandmore.continued_143F4/mssql_thumb.gif" width="252"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;And for the MySQL (note: the execution is still not finished!):&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.stoki.biz/pics/SQLJoinsUnionsandmore.continued_143F4/mysql.gif" atomicselection="true"&gt;&lt;img height="36" alt="mysql" src="http://www.stoki.biz/pics/SQLJoinsUnionsandmore.continued_143F4/mysql_thumb.gif" width="240"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I have no comment!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-6361440102212582583?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=6361440102212582583&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6361440102212582583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/6361440102212582583'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2007/12/sql-joins-unions-and-more-continued.html' title='SQL, Joins, Unions and more .. continued'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-8508246566229939818</id><published>2007-12-18T18:48:00.001+02:00</published><updated>2007-12-19T22:46:48.130+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><title type='text'>SQL, Joins, Unions and more</title><content type='html'>&lt;p&gt;Ok, this is will be about MySQL once again.&lt;/p&gt; &lt;p&gt;I had&amp;nbsp;that problem. Let's assume we have 3 tables: &lt;br&gt;&lt;em&gt;&lt;font color="#8080ff"&gt;&lt;font color="#0080c0"&gt;1. smetki &lt;br&gt;2. di_invoices &lt;br&gt;3. dk_invoices &lt;br&gt;4. ei_invoices&lt;/font&gt; &lt;br&gt;&lt;/font&gt;&lt;/em&gt;Each of the XX_invoices has a "foreign_key" to PK of "smetki". I am using MyISAM. &lt;br&gt;If I perform the following 3 queries separately: &lt;br&gt;--------------------------------------------------------- &lt;br&gt;&lt;em&gt;&lt;font color="#8080ff"&gt;&lt;font color="#0080c0"&gt;select &lt;br&gt;s.smetka_id, s.created_on, &lt;br&gt;count(di.invoice_id) as di_count &lt;br&gt;from &lt;br&gt;smetki as s &lt;br&gt;left outer join di_invoices as di on (s.smetka_id = di.smetka_id) &lt;br&gt;where &lt;br&gt;s.created_on between '2007-12-10' and '2007-12-15' &lt;br&gt;group by &lt;br&gt;s.smetka_id&lt;/font&gt; &lt;br&gt;&lt;/font&gt;&lt;/em&gt;----------------------------------------------------------- &lt;br&gt;&lt;em&gt;&lt;font color="#8080ff"&gt;&lt;font color="#0080c0"&gt;select &lt;br&gt;s.smetka_id, s.created_on, &lt;br&gt;count(dk.invoice_id) as dk_count &lt;br&gt;from &lt;br&gt;smetki as s &lt;br&gt;left outer join dk_invoices as dk on (s.smetka_id = dk.smetka_id) &lt;br&gt;where &lt;br&gt;s.created_on between '2007-12-10' and '2007-12-15' &lt;br&gt;group by &lt;br&gt;s.smetka_id&lt;/font&gt; &lt;br&gt;&lt;/font&gt;&lt;/em&gt;------------------------------------------------------------ &lt;br&gt;&lt;em&gt;&lt;font color="#0080c0"&gt;select &lt;br&gt;s.smetka_id, s.created_on, &lt;br&gt;count(ei.invoice_id) as ei_count &lt;br&gt;from &lt;br&gt;smetki as s &lt;br&gt;left outer join ei_invoices as ei on (s.smetka_id = ei.smetki_id) &lt;br&gt;where &lt;br&gt;s.created_on between '2007-12-10' and '2007-12-15' &lt;br&gt;group by &lt;br&gt;s.smetka_id &lt;br&gt;&lt;/font&gt;&lt;/em&gt;------------------------------------------------------------ &lt;br&gt;I have no problem, I have proper indexes and I got the results for less then 200 ms from each query. &lt;br&gt;But I need the 3 results into 1 single resultset so I decided to make a join like that: &lt;br&gt;&lt;em&gt;&lt;font color="#0080c0"&gt;select &lt;br&gt;s.smetka_id, s.created_on, &lt;br&gt;count(di.invoice_id) as di_count, &lt;br&gt;count(dk.invoice_id) as dk_count, &lt;br&gt;count(ei.invoice_id) as ei_count &lt;br&gt;from &lt;br&gt;smetki as s &lt;br&gt;left outer join di_invoices as di on (s.smetka_id = di.smetka_id) &lt;br&gt;left outer join dk_cor_invoices as dk on (s.smetka_id = dk.smetka_id) &lt;br&gt;left outer join ei_invoices as ei on (s.smetka_id = ei.smetki_id) &lt;br&gt;where &lt;br&gt;s.created_on between '2007-12-10' and '2007-12-15' &lt;br&gt;group by &lt;br&gt;s.smetka_id&lt;/font&gt;&lt;/em&gt; &lt;br&gt;Now I have query which executes more than 15 minutes !! I couldn't wait to the end and killed it. There must be something wrong somewhere? &lt;br&gt;I sould notice that for the given period there are only 6 rows in the "smetki" table, and different number of rows in each xx_invoices table that correspond to the whole resultset from "smetki". I have to mention that there is one intersection between two of the XX_invoices tables where there are about 120k rows for one "smetka_id", and for the same "smetka_id" there are about 5k rows in the other. &lt;br&gt;Also - there are no other queries running by the time of measuring the performance.  &lt;p&gt;What could be the solution. A friend of mines helped me. Make a UNION he said. So I did it like that:  &lt;p&gt;&lt;em&gt;&lt;font color="#0080c0"&gt;(select&lt;br&gt;s.smetka_id, s.created_on,&lt;br&gt;count(di.invoice_id) as di_count, 0 as dk_count, 0 as ei_count&lt;br&gt;from&lt;br&gt;smetki as s&lt;br&gt;left outer join di_invoices as di on (s.smetka_id = di.smetka_id)&lt;br&gt;where&lt;br&gt;s.created_on between '2007-12-10' and '2007-12-15'&lt;br&gt;group by&lt;br&gt;s.smetka_id)&lt;br&gt;UNION&lt;br&gt;(select&lt;br&gt;s.smetka_id, s.created_on,&lt;br&gt;0 as di_count, count(dk.invoice_id) as dk_count, 0 as ei_count&lt;br&gt;from&lt;br&gt;smetki as s&lt;br&gt;left outer join dk_invoices as dk on (s.smetka_id = dk.smetka_id)&lt;br&gt;where&lt;br&gt;s.created_on between '2007-12-10' and '2007-12-15'&lt;br&gt;group by&lt;br&gt;s.smetka_id)&lt;br&gt;UNION&lt;br&gt;(select&lt;br&gt;s.smetka_id, s.created_on, 0 as di_count, 0 as ei_count,&lt;br&gt;count(ei.invoice_id) as ei_count&lt;br&gt;from&lt;br&gt;smetki as s&lt;br&gt;left outer join ei_invoices as ei on (s.smetka_id = ei.smetki_id)&lt;br&gt;where&lt;br&gt;s.created_on between '2007-12-10' and '2007-12-15'&lt;br&gt;group by&lt;br&gt;s.smetka_id )&lt;/font&gt;&lt;/em&gt;  &lt;p&gt;OK, but now I have 3 rows for each single "smetka_id" - one row for the results from each table. And then we decided to make a VIEW over that UNION.&lt;/p&gt; &lt;p&gt;Gues what. Now I have the simple query:&lt;/p&gt; &lt;p&gt;&lt;font color="#0080c0"&gt;&lt;em&gt;select smetka_id, sum(di_count), sum(dk_count), sum(ei_count) from v_test group by smetka_id&lt;/em&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;Which returns me the desired result for less than a second !&lt;/p&gt; &lt;p&gt;I hope this would help your daily work with MySQL and SQL in general.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-8508246566229939818?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=8508246566229939818&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/8508246566229939818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/8508246566229939818'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2007/12/sql-joins-unions-and-more.html' title='SQL, Joins, Unions and more'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-9013973951212510170</id><published>2007-10-31T22:19:00.001+02:00</published><updated>2007-10-31T22:19:06.814+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><title type='text'>An Inconvenient Truth</title><content type='html'>&lt;p&gt;Lot friends of mines were telling me that I should watch that &lt;a href="http://www.imdb.com/title/tt0497116/"&gt;movie&lt;/a&gt;&amp;nbsp;(also in &lt;a href="http://en.wikipedia.org/wiki/An_Inconvenient_Truth"&gt;wikipedia&lt;/a&gt;). I recently had the chance! And it really worth! &lt;p&gt;It's a &lt;a href="http://en.wikipedia.org/wiki/Documentary_film"&gt;documentary film&lt;/a&gt; about &lt;a href="http://en.wikipedia.org/wiki/Climate_change"&gt;climate change&lt;/a&gt;, specifically &lt;a href="http://en.wikipedia.org/wiki/Global_warming"&gt;global warming&lt;/a&gt;, presented by former United States Vice President &lt;a href="http://en.wikipedia.org/wiki/Al_Gore"&gt;Al Gore&lt;/a&gt;. There are lots of numbers and facts that can make you reconsider some aspects of your living. &lt;p&gt;So I urge you to watch this movie!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-9013973951212510170?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=9013973951212510170&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/9013973951212510170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/9013973951212510170'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2007/10/inconvenient-truth.html' title='An Inconvenient Truth'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-5709072853919229845</id><published>2007-10-31T19:49:00.001+02:00</published><updated>2007-10-31T19:49:27.289+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>MySQL Tips &amp; Tricks /MAX_ROWS &amp; AVG_ROW_LENGTH/</title><content type='html'>&lt;p&gt;Hello again ;)&lt;br&gt;I ran into a tricky situation last couple of days. I have some big tables with varchar fields where I have to JOIN ON varchar fields. The problem does not concern only the JOIN - it is a general problem using varchar / text fields used to be searched one way or another. &lt;p&gt;So - the situation: We have one table with about 1M rows (relatively small amount&amp;nbsp;data for each row ~90 bytes) on one hand. And another table with records to be matched - about 100k rows (relatively medium amount of data for each row ~ 500 bytes). We do a SELECT which JOINs the two tables based on VARCHAR columns. Do not ask "why?" - This is the business logic; it cannot be otherwise (at least in the beginning). If we index the columns we will got the results fast! What is fast? Less than 50 ms to get around&amp;nbsp;200&amp;nbsp;joined rows. Well, OK, you got me - it depends strongly on the hardware configuration and MySQL settings. Let's assume this is our limit. I was very happy to discover that it works that fast. The speed is critical, because we will need to join around 100k rows. &lt;p&gt;Where is the problem then? Well, it happened that the first table is populated with another several hundred thousand records and it became with about 1.9M rows. And? And, it appeared that the MySQL should copy the temp table on the hard drive. As you can guess - the result is: 204 joined rows (not 204k, but only two hundred and four) for ..... 417 seconds. What about&amp;nbsp;100k&amp;nbsp;rows?&amp;nbsp;Killing me. &lt;p&gt;What can we do about that? Well, I know (the business logic predicts) that the first table - that with about 2M rows would never have more than 4 million rows. I also noticed that partitioning is only partially supported in the beta (RC yet) of MySQL 5.1.x, but the recommended for production environment is 5.0.x which does not support partitioning. So, I discovered the great options &lt;strong&gt;&lt;font color="#008080"&gt;MAX_ROWS&lt;/font&gt;&lt;/strong&gt; and&amp;nbsp;&lt;strong&gt;&lt;font color="#008080"&gt;AVG_ROW_LENGTH&lt;/font&gt;&lt;/strong&gt;. Which does what - it says to the MySQL engine, that this table would never have more than &lt;strong&gt;&lt;font color="#008080"&gt;MAX_ROWS&lt;/font&gt;&lt;/strong&gt; tows, and the average row length would be &lt;strong&gt;&lt;font color="#008080"&gt;AVG_ROW_LENGTH&lt;/font&gt;&lt;/strong&gt;. You can find the average row length by executing the command &lt;strong&gt;&lt;font color="#008080"&gt;SHOW TABLE STATUS FROM [DB_NAME] LIKE 'TBL_NAME'&lt;/font&gt;&lt;/strong&gt;. So, if you know, if your business logic predicts that you will have a large table, BUT&amp;nbsp;this table will have relatively known content (like it will have not more than 4M rows), and you know the average&amp;nbsp;row length, you can set the &lt;strong&gt;&lt;font color="#008080"&gt;MAX_ROWS&lt;/font&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;font color="#008080"&gt;AVG_ROW_LENGTH&lt;/font&gt;&lt;/strong&gt; for that table. The &lt;strong&gt;&lt;font color="#008080"&gt;AVG_ROW_LENGTH&lt;/font&gt;&lt;/strong&gt; is required if you have blob/text/varchar fields. &lt;p&gt;That will cause the MySQL engine to optimize the space required for that table, also optimizing the &lt;strong&gt;&lt;font color="#008080"&gt;myisam_data_pointer_size&lt;/font&gt;&lt;/strong&gt;, which sets the number of bytes used for internal row pointers. Yes - it works only with MyISAM tables. But you will be surprised. After I set the &lt;strong&gt;&lt;font color="#008080"&gt;MAX_ROWS&lt;/font&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;font color="#008080"&gt;AVG_ROW_LENGTH&lt;/font&gt;&lt;/strong&gt; on that table with the 2M records - I got a surprising results - 90k joined rows for ..... 47 seconds !! &lt;p&gt;I think I will use these options often in the future, what about you?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-5709072853919229845?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=5709072853919229845&amp;isPopup=true' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5709072853919229845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/5709072853919229845'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2007/10/mysql-tips-tricks-maxrows-avgrowlength.html' title='MySQL Tips &amp;amp; Tricks /MAX_ROWS &amp;amp; AVG_ROW_LENGTH/'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-3176299304024963870</id><published>2007-09-14T10:31:00.001+02:00</published><updated>2007-09-14T10:40:15.348+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spy'/><category scheme='http://www.blogger.com/atom/ns#' term='skype'/><title type='text'>Skype is sniffing ? You must be kidding me!</title><content type='html'>&lt;p&gt;Guess what! The little tricks of skype does not have an end ... The Linux users of Skype recently discovered that it is reading the /etc/passwd and firefox profile files. COME ON? Do you continue using Skype?&lt;/p&gt; &lt;p&gt;The original post is here: &lt;a title="http://forum.skype.com/index.php?showtopic=95261" href="http://forum.skype.com/index.php?showtopic=95261"&gt;http://forum.skype.com/index.php?showtopic=95261&lt;/a&gt;&lt;br&gt;And some explanations can be found here: &lt;a title="http://www.oreillynet.com/sysadmin/blog/2007/08/a_close_look_at_questionable_a.html" href="http://www.oreillynet.com/sysadmin/blog/2007/08/a_close_look_at_questionable_a.html"&gt;http://www.oreillynet.com/sysadmin/blog/2007/08/a_close_look_at_questionable_a.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;But I seriously consider using Skype ...&lt;/p&gt; &lt;p&gt;Do you?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-3176299304024963870?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=3176299304024963870&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3176299304024963870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3176299304024963870'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2007/09/skype-is-sniffing-you-must-be-kidding.html' title='Skype is sniffing ? You must be kidding me!'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-7675524733613263620</id><published>2007-09-11T13:48:00.001+02:00</published><updated>2007-09-11T13:58:08.601+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>FileSystemWatcher problem</title><content type='html'>&lt;p&gt;Did you have a task for monitoring files?&lt;br&gt;The FileSystemWatcher class has a great features, but also some outages. The problem is that creating/copying/moving files arround is hard taks and the watcher raises couple of events.&lt;br&gt;The most important events in my case were "created" and "changed". The problem is that the "Created" event is fired when the file is started being created, not when finished being created. After the created, there would several "changed" events depending on the file size. So how could we possibly know when the file is realy created, full and ready to work with it?&lt;/p&gt; &lt;p&gt;There are several posts and examples arround the net like:&lt;br&gt;&lt;a title="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2123580&amp;amp;SiteID=1&amp;amp;mode=1" href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2123580&amp;amp;SiteID=1&amp;amp;mode=1"&gt;http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2123580&amp;amp;SiteID=1&amp;amp;mode=1&lt;/a&gt;&lt;br&gt;&lt;a title="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=659823&amp;amp;SiteID=1" href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=659823&amp;amp;SiteID=1"&gt;http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=659823&amp;amp;SiteID=1&lt;/a&gt;&lt;/p&gt; &lt;p&gt;What is my approach?&lt;br&gt;After catching any event - you just stop monitoring for FSWEvents and start a timer. On every tick you try to open the file for reading. If you cannot - increase the timer interval. You can also add a code to monitor the total time elapsed since the first try to open the file, but the provided code does not do that.&lt;/p&gt; &lt;p&gt;So here it is - one of the approached to more correctly monitor for files:&lt;/p&gt; &lt;h1&gt;&lt;font face="Courier New" size="1"&gt;&lt;/font&gt;&amp;nbsp;&lt;/h1&gt; &lt;blockquote&gt;&lt;font face="Courier New" size="1"&gt;using System;&lt;br&gt;using System.Collections.Generic;&lt;br&gt;using System.Text;&lt;br&gt;using System.IO; &lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" size="1"&gt;using System.Security;&lt;br&gt;using System.Timers; &lt;/font&gt; &lt;h1&gt;&lt;font face="Courier New" size="1"&gt;namespace MonitorTest&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class Program&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private FileSystemWatcher _watch;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string _watchPath = @"d:\temp\";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string _watchFile = "SomeFile.txt"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private Timer _timer;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private DateTime _started;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private TimeSpan _totalTime;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void StartTrying()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _started = DateTime.Now;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _totalTime = TimeSpan.Zero;&amp;nbsp;&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _timer = new Timer();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _timer.Interval = 1000;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _timer.Elapsed += new ElapsedEventHandler(_timer_Elapsed);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _timer.Enabled = true;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void _timer_Elapsed(object sender, ElapsedEventArgs e)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string FullPath = string.Format("{0}{1}", _watchPath, _watchFile);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileInfo fi = new FileInfo(FullPath);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StreamReader r = null;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _totalTime = DateTime.Now - _started;&amp;nbsp;&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Trying? {0}", _totalTime);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r = fi.OpenText();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r.Close();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r.Dispose();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _timer.Enabled = false;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("File is free for reading after: {0} timespan?",_totalTime);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (IOException ioex)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Cannot open ? {0}", ioex.Message);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _timer.Enabled = true;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _timer.Interval += 1000;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; finally&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (r != null)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r.Close();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r.Dispose();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void OnChanged(object source, FileSystemEventArgs e)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Specify what is done when a file is changed, created, or eleted.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileSystemWatcher wo = source as FileSystemWatcher;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileInfo fi = new FileInfo(e.FullPath);&amp;nbsp;&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (wo != null)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (e.ChangeType)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case WatcherChangeTypes.Changed:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("File {0}{1} was changed? {2} 3}", _watchPath, _watchFile, fi.LastAccessTime ,wo.NotifyFilter);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StartTrying();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _watch.EnableRaisingEvents = false;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case WatcherChangeTypes.Renamed:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("File {0}{1} was renamed? {2}",&lt;br&gt;_watchPath, _watchFile, source);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StartTrying();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _watch.EnableRaisingEvents = false;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case WatcherChangeTypes.Deleted:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("File {0}{1} was deleted? {2}",&lt;br&gt;_watchPath, _watchFile, source);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StartTrying();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _watch.EnableRaisingEvents = false;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case WatcherChangeTypes.Created:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("File {0}{1} was created? {2}", _watchPath, _watchFile, source);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StartTrying();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _watch.EnableRaisingEvents = false;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Program()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _watch = new FileSystemWatcher(_watchPath);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _watch.Filter = _watchFile;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _watch.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _watch.Changed += new FileSystemEventHandler(OnChanged);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _watch.Created += new FileSystemEventHandler(OnChanged);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _watch.Deleted += new FileSystemEventHandler(OnChanged);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _watch.EnableRaisingEvents = true;&amp;nbsp;&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void Main(string[] args)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Program p = new Program();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.ReadLine();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;}&lt;/font&gt;&lt;/h1&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-7675524733613263620?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=7675524733613263620&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/7675524733613263620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/7675524733613263620'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2007/09/filesystemwatcher-problem.html' title='FileSystemWatcher problem'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-4214018679419710496</id><published>2007-09-05T17:26:00.001+03:00</published><updated>2007-09-05T17:26:11.500+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spy'/><category scheme='http://www.blogger.com/atom/ns#' term='skype'/><title type='text'>Another  SKYPE issue ...</title><content type='html'>&lt;p&gt;Do you know the &lt;a href="http://www.microsoft.com/technet/sysinternals/utilities/debugview.mspx" target="_blank"&gt;Debug View&lt;/a&gt; ?&lt;br&gt;It is a very usefull application by &lt;a href="http://www.microsoft.com/" target="_blank"&gt;Microsoft&lt;/a&gt;. You can watch for all debug info sent to the "Debug output".&lt;/p&gt; &lt;p&gt;So, I was looking for debug output from some of my projects and I noticed some strange "PING/PONG" messages. The next thing I saw was some names from my Skype's contact list. Amazing ...&lt;/p&gt; &lt;p&gt;Shouldn't they build Skype end product in "Release" configuration and suppress all these debug output messages ?&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.stoki.biz/AnotherSKYPEissue_F535/skype.gif" atomicselection="true"&gt;&lt;img height="331" alt="skype" src="http://www.stoki.biz/AnotherSKYPEissue_F535/skype_thumb.gif" width="410"&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/5177305310827978243-4214018679419710496?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=4214018679419710496&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/4214018679419710496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/4214018679419710496'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2007/09/another-skype-issue.html' title='Another  SKYPE issue ...'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-8800193448100809586</id><published>2007-09-01T01:13:00.001+03:00</published><updated>2007-09-01T01:14:18.770+03:00</updated><title type='text'>DevReach 2007, Sofia, Bulgaria</title><content type='html'>&lt;p&gt;By &lt;a href="http://www.codeattest.com/blogs/martin/2007/08/devreach-2007-is-open.html" target="_blank"&gt;Martin Kulov's blog&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;The site for info and registraion is:&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.devreach.com/AttendingDevReach/Pricing.aspx" href="http://www.devreach.com/"&gt;http://www.devreach.com/&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/5177305310827978243-8800193448100809586?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=8800193448100809586&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/8800193448100809586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/8800193448100809586'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2007/09/devreach-2007-sofia-bulgaria.html' title='DevReach 2007, Sofia, Bulgaria'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-4438707357002351914</id><published>2007-08-11T10:33:00.001+03:00</published><updated>2007-08-11T11:06:16.110+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>ActionScript 3.0 / Flash 9</title><content type='html'>&lt;p&gt;Great surprise for all of us who in the years got used with ActionScript 2.0. First of all - we cannot apply actions directly to the movie clip (so forget about the really simple on(release){...} ).&lt;/p&gt; &lt;p&gt;If you click on a movie clip and you have the "Actions" window opened you will notice "Current selection cannot have actions applied to it"! At first it is irritating, but it seems to be a good point.&lt;/p&gt; &lt;p&gt;So how to make a "RollOver", "RollOut" etc. effects in AS3 ?&lt;/p&gt; &lt;p&gt;The first what we do - we have to import the Events package:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier"&gt;import flash.events.Event;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Now lets assume we have the movie clip on the stage and we named it "mymc". What we have to to is to add event handlers to it to listen for events:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New"&gt;mymc.addEventListener(MouseEvent.ROLL_OVER, RollOverHandler);&lt;br&gt;mymc.addEventListener(MouseEvent.CLICK, ClickHandler);&lt;br&gt;mymc.addEventListener(MouseEvent.MOUSE_OUT, RollOutHandler);&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;There is a set of predefined constants in the MouseEvent object, which we can use.&lt;/p&gt; &lt;p&gt;The next step is to implement the event handlers. Here is the simplest implementation of an event handler:&lt;/p&gt; &lt;p&gt;&lt;font face="Courier"&gt;function RollOverHandler(me:MouseEvent):void {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; me.target.alpha = 1.0&lt;br&gt;}&lt;/font&gt;&lt;/p&gt; &lt;p&gt;I would rather call the type of "me" MouseEventArgs, but it's another story. What do we have in the MouseEvent variable is the "target". The "target" is the object that has escalated the event. Now we can say to that target what to do. We can say for example: &lt;font face="cou"&gt;me.target.gotoAndPlay(2)&lt;/font&gt;, or &lt;font face="cou"&gt;me.target.gotoAndStop(1)&lt;/font&gt;;&lt;/p&gt; &lt;p&gt;OK, that's it so far. Hope to have more to write soon ;)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-4438707357002351914?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=4438707357002351914&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/4438707357002351914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/4438707357002351914'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2007/08/actionscript-30-flash-9.html' title='ActionScript 3.0 / Flash 9'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-2381331298736187153</id><published>2007-08-10T00:04:00.001+03:00</published><updated>2007-08-10T00:04:20.362+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Reflection of images ?</title><content type='html'>&lt;p&gt;&lt;a href="http://cow.neondragon.net/stuff/reflection/" target="_blank"&gt;This cool script&lt;/a&gt; has a great features ;)&lt;/p&gt; &lt;p&gt;Hope you will like it!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-2381331298736187153?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=2381331298736187153&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/2381331298736187153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/2381331298736187153'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2007/08/reflection-of-images.html' title='Reflection of images ?'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-8613370819922565149</id><published>2007-08-09T23:49:00.001+03:00</published><updated>2007-08-10T00:00:19.366+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>Flash 9 fullscreen mode and transparent movie</title><content type='html'>&lt;p&gt;A long time not writing, hyh ...&lt;br&gt;Tough times ;)&lt;/p&gt; &lt;p&gt;Anyway, the last couple of hours I struggled with the problem: "allowFullScreen"=&amp;gt;"true" to enable full screen video playing in one of the latest projects I had. When I use the original generated code from the "Publish" in flash I have no problems. But when I tried with &lt;a href="http://blog.deconcept.com/swfobject/" target="_blank"&gt;SWFObject&lt;/a&gt; I ran into trouble.&lt;/p&gt; &lt;p&gt;The full screen mode did not work... at all ... I examined the generated code (using &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1843" target="_blank"&gt;FireBug&lt;/a&gt; and &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;amp;displaylang=en" target="_blank"&gt;IE DevToolBar&lt;/a&gt; - developer's right hand tools) and it seemed quite OK! The parameter was there. But the flash player did not want to go full-screen.&lt;/p&gt; &lt;p&gt;After having a short break and coming back to the problem I noticed that I am also using the "wmode"=&amp;gt;"transparent" for the target movie. Commented it - just to try. Guess what - hola! The movie is again working as expected.&lt;/p&gt; &lt;p&gt;The problem - FullScreenMode is INCOPATABLE with TRANSPARENT movie - what the ?&lt;/p&gt; &lt;p&gt;Looking over &lt;a href="http://blog.deconcept.com/swfobject/forum/discussion/504/100-size-does-not-work-is-100px-worked-in-144/" target="_blank"&gt;this post&lt;/a&gt;, it seemed that: &lt;em&gt;Adobe says: "...Full-screen mode was not originally supported if the wmode is opaque or transparent windowless, but it is now supported starting with the latest Flash Player 9 Update...", &lt;/em&gt;but I have the 9.0.45 and it still got the problem ...&lt;/p&gt; &lt;p&gt;A friend of mine told me "why would you need transparent along with full screen?". Well, another "great feature" of the FLASH object is that it keeps itself ALWAYS ON TOP of the page,&amp;nbsp;regardless the&amp;nbsp;"z-index" of your other objects. Unless it is set to "transparent".&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-8613370819922565149?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=8613370819922565149&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/8613370819922565149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/8613370819922565149'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2007/08/flash-9-fullscreen-mode-and-transparent.html' title='Flash 9 fullscreen mode and transparent movie'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-2555432981482864464</id><published>2007-06-17T18:00:00.001+03:00</published><updated>2007-06-17T18:00:03.919+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><title type='text'>Windows Live Writer ?</title><content type='html'>&lt;p&gt;I just noticed the BETA&amp;nbsp;of &lt;a href="http://writer.live.com/" target="_blank"&gt;Windows Live Writer&lt;/a&gt; and downloaded it. IT offers a WPF UI to your blogger aacount, actually it can post to bunc of BLOGS like WordPress, Blogger, Community Server and, of course Live Spaces (&lt;a title="http://livecom.spaces.live.com/" href="http://livecom.spaces.live.com/"&gt;http://livecom.spaces.live.com/&lt;/a&gt;).&lt;/p&gt; &lt;p&gt;I find it usefule, you can try it also ;)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-2555432981482864464?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=2555432981482864464&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/2555432981482864464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/2555432981482864464'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2007/06/windows-live-writer.html' title='Windows Live Writer ?'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-3230064155522794419</id><published>2007-06-16T21:52:00.001+03:00</published><updated>2007-06-17T18:02:02.570+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='xaml'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><title type='text'>More Silverlight</title><content type='html'>You can view the working example of Hello World with MouseEventHandler here:&lt;br /&gt;&lt;a href="http://staykov.net/silverlight/TestPage.html"&gt;http://staykov.net/silverlight/TestPage.html&lt;/a&gt;&lt;br /&gt;The XAML file is here:&lt;br /&gt;&lt;a href="http://staykov.net/silverlight/Page.xaml"&gt;http://staykov.net/silverlight/Page.xaml&lt;/a&gt;&lt;br /&gt;(But I think you will have problems to open it with IE, so just try with Mozilla)&lt;br /&gt;What I like is, that you do not any special hosting to publish silverlight app ;) (well, the Hello World one ;) )&lt;br /&gt;Also, good to mention - if you seek for design time support of silverlight app you must go for &lt;a href="http://go.microsoft.com/fwlink/?LinkID=79076&amp;amp;clcid=0x409"&gt;Microsoft Expression Blend 2 May 2007 Preview&lt;/a&gt; - the only one so-far IDE which supports design-time editing for SilverLight.&lt;br /&gt;Looking forward to see you again!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5177305310827978243-3230064155522794419?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=3230064155522794419&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3230064155522794419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/3230064155522794419'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2007/06/more-silverlight.html' title='More Silverlight'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5177305310827978243.post-8029653706279619548</id><published>2007-06-16T15:27:00.001+03:00</published><updated>2007-06-17T18:02:51.448+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='xaml'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><title type='text'>User Interaction with Silverlight</title><content type='html'>&lt;div&gt;Let's do a simple user interaction with silverlight.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;I will take the example code from the previous post and add some extra attributes to the TextBlock Elements:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_g4vzmfkZQow/RnPXW4rldSI/AAAAAAAAAA4/v0KhYW37jNE/s1600-h/text_block_name_cursor.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5076637993148970274" style="" alt="" src="http://2.bp.blogspot.com/_g4vzmfkZQow/RnPXW4rldSI/AAAAAAAAAA4/v0KhYW37jNE/s320/text_block_name_cursor.gif" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I have added the "x:Name" attribute, which will identify the textBlock in the code-behind file.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;And also I have set the style of the cursor. I personally think that when there is some interaction with user, one should be reminded for that!&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The next is simple MouseEventHandler in the code-behind file:&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_g4vzmfkZQow/RnPX4orldTI/AAAAAAAAABA/1RL5RGCIbGo/s1600-h/code_behind.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5076638572969555250" style="" alt="" src="http://1.bp.blogspot.com/_g4vzmfkZQow/RnPX4orldTI/AAAAAAAAABA/1RL5RGCIbGo/s320/code_behind.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;A simple "state" remembering variable and we are changing the text of the text block every time the user clicks on it.&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/5177305310827978243-8029653706279619548?l=blogs.staykov.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5177305310827978243&amp;postID=8029653706279619548&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/8029653706279619548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5177305310827978243/posts/default/8029653706279619548'/><link rel='alternate' type='text/html' href='http://blogs.staykov.net/2007/06/user-interaction-with-silverlight.html' title='User Interaction with Silverlight'/><author><name>Anton Staykov</name><uri>http://www.blogger.com/profile/01413558839144725133</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_g4vzmfkZQow/RnPXW4rldSI/AAAAAAAAAA4/v0KhYW37jNE/s72-c/text_block_name_cursor.gif' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
