<?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-4799263106115358153</id><updated>2011-07-07T16:15:45.060-07:00</updated><category term='C#'/><category term='Microsoft'/><category term='WCF'/><category term='Silverlight'/><title type='text'>Brad Gronek</title><subtitle type='html'>Musings of a .Net, C#, Java, Silverlight, Java consultant who also happens to be a CPA.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bradgronek.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4799263106115358153/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bradgronek.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Brad Gronek</name><uri>http://www.blogger.com/profile/15879947968015582251</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>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4799263106115358153.post-8274963576910411794</id><published>2008-11-03T17:52:00.001-08:00</published><updated>2008-11-03T18:00:22.672-08:00</updated><title type='text'>Silverlight Beta 2 - RC0 Another breaking change</title><content type='html'>I just spent a couple of hours I'll never get back on this, so I thought I'd post it so fewer people will have to repeat my experience.  I tested the flickr uploader mentioned in an &lt;a href="http://bradgronek.blogspot.com/2008/10/silverlight-wcf-flickr-style-multi-file.html"&gt;earlier post&lt;/a&gt; on the new RC0.  After making a few tweaks based on &lt;a href="http://silverlight.net/blogs/msnow/archive/2008/09/25/silverlight-version-2-rc0-release.aspx"&gt;other blogs&lt;/a&gt;, I had it working in my development environment.  However, after moving it to my Windows Server 2003 installation, I received the infamous White Screen of Death (WSOD).  Googling quickly reveals a number of tips for resolving these issues; however, none of them worked out. &lt;br /&gt;&lt;br /&gt;The problem turned out to be a clientaccesspolicy file contained in a virtual directory.  I have a client access policy in my root; however, when publishing to the production server, the policy file was also copied to the virtual directory containing the silverlight app.  Removing this clientaccesspolicy.xml file from the virtual directory solved the problem. &lt;br /&gt;&lt;br /&gt;Hope this helps someone!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4799263106115358153-8274963576910411794?l=bradgronek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradgronek.blogspot.com/feeds/8274963576910411794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4799263106115358153&amp;postID=8274963576910411794' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4799263106115358153/posts/default/8274963576910411794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4799263106115358153/posts/default/8274963576910411794'/><link rel='alternate' type='text/html' href='http://bradgronek.blogspot.com/2008/11/silverlight-beta-2-rc0-another-breaking.html' title='Silverlight Beta 2 - RC0 Another breaking change'/><author><name>Brad Gronek</name><uri>http://www.blogger.com/profile/15879947968015582251</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-4799263106115358153.post-7240946108717939603</id><published>2008-10-14T13:05:00.000-07:00</published><updated>2010-03-15T16:11:00.723-07:00</updated><title type='text'>Building the 'Lame' MP3 library for Windows Server 2008 x64</title><content type='html'>I was recently working on a project that uses the &lt;a href="http://lame.sourceforge.net/"&gt;Lame mp3 &lt;/a&gt;compression libraries to convert wav files to mp3.  This worked very well until I tried to deploy the application to a 64 bit installation of Windows Server 2008 .  In order to get Lame_enc.dll (which was being directly accessed) to work in this new environment, I had to rebuild Lame fo 64 bit.&lt;br /&gt;&lt;br /&gt;As of the recent version 3.98, Lame's distribution includes configurations for x64.  Following are the steps I took to complete the build.  For reference, the build machine is 32 bit Windows XP SP2.&lt;br /&gt;&lt;br /&gt;1) Ensure that Visual Studio 2005 is installed with the 64 bit tools and compilers.&lt;br /&gt;2) Using Visual Studio 2005 (not 2008), open the Lame source.&lt;br /&gt;3) In the Configuration Manager (Solution-&gt;Configuration Manager), ensure that the configuration is set to Release and the Active Platform is x64.&lt;br /&gt;3) Build the libmp3lame_vc8 project.  This outputs two *.lib files to .\x64\release.&lt;br /&gt;4) Build the entire solution.  This outputs to the ./output directory.  You should see lame_enc.dll, lame.exe, etc in that directory.&lt;br /&gt;&lt;br /&gt;Hope this helps someone out.  Good Luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4799263106115358153-7240946108717939603?l=bradgronek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradgronek.blogspot.com/feeds/7240946108717939603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4799263106115358153&amp;postID=7240946108717939603' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4799263106115358153/posts/default/7240946108717939603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4799263106115358153/posts/default/7240946108717939603'/><link rel='alternate' type='text/html' href='http://bradgronek.blogspot.com/2008/10/building-lame-for-windows-server-2008.html' title='Building the &apos;Lame&apos; MP3 library for Windows Server 2008 x64'/><author><name>Brad Gronek</name><uri>http://www.blogger.com/profile/15879947968015582251</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-4799263106115358153.post-6185515692398661899</id><published>2008-10-07T15:35:00.000-07:00</published><updated>2008-10-08T11:46:28.847-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>Silverlight / WCF Flickr Style Multi-file uploader control and service</title><content type='html'>Ever since the early early betas of Silverlight, users have been looking to create the first obvious application of this new technology: the ability to upload multiple files at once with a progress meter for each.  This was accomplished very well during the Silverlight 1.1 beta period &lt;a href="http://advertboy.wordpress.com/2007/12/20/flickr-multi-picture-uploader-done-in-silverlight/"&gt;here&lt;/a&gt;; however, there were a number of breaking changes as well as improvements with the beta of Silverlight 2.0.&lt;br /&gt;&lt;br /&gt;As the requirement started to bubble up for some of my clients, I decided to dive in and create such a control.  I am posting it here for all to make up for all of the times I've incorporated others' free code into my work in the past.  Here goes:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Server Architecture&lt;/span&gt;&lt;br /&gt;The server side consists of two separate WCF services: FileInfoService and FileUploadService.  The FileInfoService is an easy-to-use basicHttpBinding service which is the standard WCF programming model for the Silverlight / WCF stack.  This service exposes two basic methods: ListFiles and DeleteFile whose function is, well, obvious.&lt;br /&gt;&lt;br /&gt;The second service, FileUploadService, supports a streamed file upload to the server.  I decided to use a REST service because other WCF streaming service bindings actually generated a byte array instead of a service on the Silverlight client side...not helpful if you're trying to create a progress bar to track upload.  For a full explaination of the implementation of this service, please see &lt;a href="http://blogs.msdn.com/carlosfigueira/archive/2008/04/17/wcf-raw-programming-model-receiving-arbitrary-data.aspx"&gt;Carlos Figueira's excellent posting&lt;/a&gt; on the subject.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Client Architecture&lt;/span&gt;&lt;br /&gt;The client is nothing special except for the upload process.  The upload is handled using a WebHttpRequest which streams the file to the server.  The BackgroundWorker class is used to perform the upload in a background thread periodically calling back up to the client to update the progress of the upload.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Demo and Source&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.gronek.net/FileUploadServices/FileUploaderTestPage.aspx"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer;" src="http://1.bp.blogspot.com/_FfwYR17dgOY/SOxiwMrioLI/AAAAAAAAAAc/o_c-VAe7MtI/s320/UploadSample.jpg" alt="" id="BLOGGER_PHOTO_ID_5254683445411618994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The control is demonstrated &lt;a href="http://www.gronek.net/FileUploadServices/FileUploaderTestPage.aspx"&gt;here&lt;/a&gt;.&lt;br /&gt;This demo shows the uploader in action.  Since it is a demo, it is limited to 2MB files.  Furthermore, files are streamed to the server, yet are not saved, so don't be surprised if you can't see them.  Disabling this in the downloaded code is a matter of setting the Demo appsetting in Web.config as well as the Demo variable in FileUploader.ConfigConstants.&lt;br /&gt;&lt;br /&gt;The source for the project can be downloaded &lt;a href="http://www.gronek.net/SilverlightMultiFileUploader.zip"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;The allure of creating full-fledged C# applications on the browser is very appealing.  With the advent of Silverlight 2.0, this will become a reality.  This control is one of the first things that comes to mind when we think about using such tools to fill in the gap between web-based application and desktop apps.  While it was more difficult than I had originally envisioned, it proved to be a whirlwind tour which included both Silverlight and WCF.&lt;br /&gt;&lt;br /&gt;This implementation comes with some caveats.  The code was written as a good starting point for adding this functionality to any silverlight application.  It will require the addition of better security as well as more validation.  Finally the FileHandler factory in the client may seem like overkill.  This was added to abstract the end-points from the code in order to simplify the inevitable transition to other storage services such as Amazon's S3 or Microsoft's up-and-coming Cloud Services.&lt;br /&gt;&lt;br /&gt;So, next steps might include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Improved validation.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Control of the number of concurrent streams / uploads.&lt;/li&gt;&lt;li&gt;Better control for file size.&lt;/li&gt;&lt;li&gt;Configuration for supported file types.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;S3 Connector for Amazon S3 services (Not as big a reach as one might think).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Skins to enable a complete file / folder structure.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Apologies for an abridged post...I just don't have more time to keep going on this little project.  Download that source, good luck and have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4799263106115358153-6185515692398661899?l=bradgronek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bradgronek.blogspot.com/feeds/6185515692398661899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4799263106115358153&amp;postID=6185515692398661899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4799263106115358153/posts/default/6185515692398661899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4799263106115358153/posts/default/6185515692398661899'/><link rel='alternate' type='text/html' href='http://bradgronek.blogspot.com/2008/10/silverlight-wcf-flickr-style-multi-file.html' title='Silverlight / WCF Flickr Style Multi-file uploader control and service'/><author><name>Brad Gronek</name><uri>http://www.blogger.com/profile/15879947968015582251</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://1.bp.blogspot.com/_FfwYR17dgOY/SOxiwMrioLI/AAAAAAAAAAc/o_c-VAe7MtI/s72-c/UploadSample.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
