<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Pedro Álvarez Fernández en Geeks</title><link>http://geeks.ms/blogs/pedroafa/default.aspx</link><description>Write Less Code and Play More Golf</description><dc:language /><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Rendimiento del WPF Designer en Visual Studio 2010</title><link>http://geeks.ms/blogs/pedroafa/archive/2009/12/09/rendimiento-del-wpf-designer-en-visual-studio-2010.aspx</link><pubDate>Wed, 09 Dec 2009 21:15:20 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:162248</guid><dc:creator>Pedroafa</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/pedroafa/rsscomments.aspx?PostID=162248</wfw:commentRss><comments>http://geeks.ms/blogs/pedroafa/archive/2009/12/09/rendimiento-del-wpf-designer-en-visual-studio-2010.aspx#comments</comments><description>&lt;p&gt;El otro día hablando con &lt;a href="http://www.teamsystem.es/" target="_blank"&gt;Jesús Jimenez&lt;/a&gt;, le comentaba que el rendimiento de Visual Studio 2010 era bastante malo. En cambio, él me comentaba que más o menos podía trabajar bien con la herramienta. Que no es lo mismo que 2008, en cuanto a rendimiento, pero se puede hacer vida de él. Él está desarrollando con MVC 2, en cambio, yo estoy utilizando WPF. &lt;/p&gt;  &lt;p&gt;Trabajando con WPF el rendimiento del designer es muy malo, hasta el punto de conseguir bloquear por completo el Visual Studio 2010. Si el designer se encuentra algún error dentro del XAML, adiós Visual Studio. &lt;/p&gt;  &lt;p&gt;En el blog de &lt;a href="http://blogs.msdn.com/bharry/" target="_blank"&gt;bharry&lt;/a&gt; leyendo uno de sus post dice “the WPF designer performance in Beta 2 was unacceptable”. También en el post, “&lt;a href="http://blogs.msdn.com/bharry/archive/2009/12/07/some-wpf-designer-performance-improvements.aspx" target="_blank"&gt;Some WPF Designer Performance Improvements&lt;/a&gt;”, explica cómo mejorar un poco el redimiendo del mismo. Además yo añadiría la posibilidad de hacer que el Visual Studio 2010 abra la vista de XAML por defecto, en vez de abrir la del designer. En mi caso me ha ofrecido buenos resultados y se puede hacer vida de la herramienta. &lt;/p&gt;  &lt;p&gt;Para activar la opción&amp;#160; “Always open documents in full XAML view”, ir&amp;#160; a Tools -&amp;gt; Options -&amp;gt; Text Editor -&amp;gt; XAML -&amp;gt; Miscellaneous.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=162248" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/pedroafa/archive/tags/WPF/default.aspx">WPF</category><category domain="http://geeks.ms/blogs/pedroafa/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category></item><item><title>SplashScreen en Silverlight</title><link>http://geeks.ms/blogs/pedroafa/archive/2009/11/25/splashscreen-en-silverlight.aspx</link><pubDate>Wed, 25 Nov 2009 23:27:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:161303</guid><dc:creator>Pedroafa</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/pedroafa/rsscomments.aspx?PostID=161303</wfw:commentRss><comments>http://geeks.ms/blogs/pedroafa/archive/2009/11/25/splashscreen-en-silverlight.aspx#comments</comments><description>&lt;p&gt;Cuando una aplicaci&amp;oacute;n o componente Silverlight es cargado aparece un icono indicando que el plugin se est&amp;aacute; cargando. Existe un dise&amp;ntilde;o por defecto. Este Sphlas Screen puede modificarse por uno de dise&amp;ntilde;o propio. Lo &amp;uacute;nico que hay que tener en cuenta es que s&amp;oacute;lo se pueden utilizar controles de Silverlight 1.0. &lt;/p&gt;
&lt;p&gt;Para crear un nuevo SplashScreen hay que a&amp;ntilde;adir al proyecto web un nuevo elemento del tipo &lt;b&gt;Silverlight JScript Page&lt;/b&gt;. Esto a&amp;ntilde;ade al proyecto dos archivos: uno archivo .xaml y otro .js. Dentro del .xaml ir&amp;aacute; el dise&amp;ntilde;o de la pantalla y en el .js su funcionalidad.&lt;/p&gt;
&lt;p&gt;Dentro de la definici&amp;oacute;n del control de Silverlight se le puede indicar que utilice la nueva p&amp;aacute;gina como Splash Screen. Para ello se hace uso de la propiedad &lt;b&gt;SplashScreenSource&lt;/b&gt;.&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;asp&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Silverlight &lt;/span&gt;&lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;server&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Source&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;~/ClientBin/Client.xap&amp;quot; 
    &lt;/span&gt;&lt;span style="color:red;"&gt;MinimumVersion&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;3.0.40624.0&amp;quot; 
    &lt;/span&gt;&lt;span style="color:red;"&gt;SplashScreenSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;~/SplashScreen.xaml&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Para conseguir centrar nuestro dise&amp;ntilde;o dentro de la ventana, lo m&amp;aacute;s sencillo es utilizar un elemento &lt;b&gt;Grid&lt;/b&gt;, con el tama&amp;ntilde;o a Auto. Este elemento por si s&amp;oacute;lo centrar&amp;aacute; cualquier elemento hijo.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Grid &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/span&gt;&amp;quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:red;"&gt;xmlns:x&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/span&gt;&amp;quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:red;"&gt;Background&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Black&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt; &lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Grid&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Para suscribirse al evento que indica el porcentaje cargado hay que definir un m&amp;eacute;todo dentro del archivo .js. Este m&amp;eacute;todo actuar&amp;aacute; de handler para el evento &lt;b&gt;OnSourceDownloadProgressChanged&lt;/b&gt;.&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;function &lt;/span&gt;onSourceDownloadProgressChanged(sender, eventArgs){
 sender.findName(&lt;span style="color:#a31515;"&gt;&amp;quot;progressBar&amp;quot;&lt;/span&gt;).Width = 
   eventArgs.progress * sender.findName(&lt;span style="color:#a31515;"&gt;&amp;quot;progressBarBackground&amp;quot;&lt;/span&gt;).Width;
}&lt;/pre&gt;
&lt;p&gt;Para asociar el m&amp;eacute;todo se debe de utilizar la propiedad &lt;b&gt;OnSourceDownloadProgressChanged&lt;/b&gt;.&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;param &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;onSourceDownloadProgressChanged&amp;quot; 
    &lt;/span&gt;&lt;span style="color:red;"&gt;value&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;onSourceDownloadProgressChanged&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Un dise&amp;ntilde;o completo como ejemplo podr&amp;iacute;a ser:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Grid &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/span&gt;&amp;quot; 
      &lt;span style="color:red;"&gt;xmlns:x&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/span&gt;&amp;quot; 
      &lt;span style="color:red;"&gt;Background&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Black&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Sector7G&lt;/span&gt;&amp;quot; 
               &lt;span style="color:red;"&gt;FontSize&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;14&lt;/span&gt;&amp;quot; 
               &lt;span style="color:red;"&gt;Foreground&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;#FFFFFFFF&lt;/span&gt;&amp;quot; 
               &lt;span style="color:red;"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Center&lt;/span&gt;&amp;quot; 
               &lt;span style="color:red;"&gt;FontFamily&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Segoe UI&lt;/span&gt;&amp;quot; 
               &lt;span style="color:red;"&gt;FontWeight&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Bold&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Border &lt;/span&gt;&lt;span style="color:red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;progressBarBackground&lt;/span&gt;&amp;quot; 
            &lt;span style="color:red;"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Center&lt;/span&gt;&amp;quot; 
            &lt;span style="color:red;"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Center&lt;/span&gt;&amp;quot; 
            &lt;span style="color:red;"&gt;BorderBrush&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;#FFB6D5EC&lt;/span&gt;&amp;quot; 
            &lt;span style="color:red;"&gt;BorderThickness&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;1&lt;/span&gt;&amp;quot; 
            &lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;14&lt;/span&gt;&amp;quot; 
            &lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;200&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Rectangle &lt;/span&gt;&lt;span style="color:red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;progressBar&lt;/span&gt;&amp;quot; 
                 &lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;0&lt;/span&gt;&amp;quot; 
                 &lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;14&lt;/span&gt;&amp;quot; 
                 &lt;span style="color:red;"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Left&lt;/span&gt;&amp;quot; 
                 &lt;span style="color:red;"&gt;Margin&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;1&lt;/span&gt;&amp;quot; 
                 &lt;span style="color:red;"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Bottom&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Rectangle.Fill&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
          &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;LinearGradientBrush &lt;/span&gt;&lt;span style="color:red;"&gt;EndPoint&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;0.5,1&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;StartPoint&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;0.5,0&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;GradientStop &lt;/span&gt;&lt;span style="color:red;"&gt;Color&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;#FF6DAAD9&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;Offset&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;0.548&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;GradientStop &lt;/span&gt;&lt;span style="color:red;"&gt;Color&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;#FF496272&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;Offset&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;0.961&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;
          &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;LinearGradientBrush&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Rectangle.Fill&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
      &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Rectangle&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Border&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Grid&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;img src="http://kartones.net/images_posts/sector7g/splashscreenensilveright.jpg" style="display:block;float:none;margin-left:auto;margin-right:auto;" alt="" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=161303" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/pedroafa/archive/tags/Silverlight+3.0/default.aspx">Silverlight 3.0</category></item><item><title>TextTrimming</title><link>http://geeks.ms/blogs/pedroafa/archive/2009/11/19/texttrimming.aspx</link><pubDate>Thu, 19 Nov 2009 19:09:06 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:160868</guid><dc:creator>Pedroafa</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/pedroafa/rsscomments.aspx?PostID=160868</wfw:commentRss><comments>http://geeks.ms/blogs/pedroafa/archive/2009/11/19/texttrimming.aspx#comments</comments><description>&lt;p&gt;Hoy he leído que Silverlight 4 ya incluirá un control que &lt;b&gt;TextTrimming&lt;/b&gt;. Este control es capaz de ajustar un texto al tamaño de un &lt;b&gt;TextBlock&lt;/b&gt; y cortarlo concatenándole “…” en caso de que sea demasiado largo y no entre dentro del &lt;b&gt;TextBlock&lt;/b&gt;. &lt;/p&gt;  &lt;p align="center"&gt;“Sertor7G es un blog sobre…”&lt;/p&gt;  &lt;p&gt;El otro día tuve que implementar esta funcionalidad en una de las aplicación que estoy desarrollando sobre Silverlight 3. Después de buscar en google, encontré un post donde exponían el código fuente de un control que se habían hecho a mano. Dejo la dirección del blog por si a alguien le resulta de utilidad &lt;a href="http://blog.nerdplusart.com/archives/texttrimming-textblock-for-silverlight"&gt;TextTrimming TextBlock for Silverlight &lt;/a&gt;. Dentro del código fuente describen los términos de licencia de su uso.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=160868" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/pedroafa/archive/tags/Silverlight+3.0/default.aspx">Silverlight 3.0</category></item><item><title>Migración de Silverilght 2 a Silverlight 3</title><link>http://geeks.ms/blogs/pedroafa/archive/2009/11/17/migraci-243-n-de-silverilght-2-a-silverlight-3.aspx</link><pubDate>Tue, 17 Nov 2009 22:02:32 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:160727</guid><dc:creator>Pedroafa</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/pedroafa/rsscomments.aspx?PostID=160727</wfw:commentRss><comments>http://geeks.ms/blogs/pedroafa/archive/2009/11/17/migraci-243-n-de-silverilght-2-a-silverlight-3.aspx#comments</comments><description>&lt;p&gt;Ahora que ha salido Silverilght 3 seguramente se empiecen a migrar muchos proyectos hechos con Silverlight 2 a esta nueva versión. No es que sea estrictamente necesario, ya que con el plug-in de Silverlight 3 se pueden ejecutar ambas versiones. Aunque si se quieren aprovechar las novedades de Silverlight 3 es algo recomendable migrar. Además el proceso de migración es bastante sencillo, como se describe a continuación.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Paso 1&lt;/b&gt;: El primer paso es erradicar de la máquina cualquier vestigio de Silverlight 2. Así que hay que desinstalar: Silverlight 2 SDK, Silverlight 2.0 tools for VS2008 SP1 y Silverlight. Si el equipo tiene instalado el toolkit de controles para Siverlight 2, también es necesario desinstalarlo. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Paso 2&lt;/b&gt;: El siguiente paso es instalar Silverlight 3. Hay que instalar todas las herramientas: &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=9442B0F2-7465-417A-88F3-5E7B5409E9DD&amp;amp;displaylang=en"&gt;Silverlight 3 Tools for Visual Studio 2008 SP1&lt;/a&gt; y &lt;a href="http://silverlight.net/getstarted/silverlight3/"&gt;Silverlight 3&lt;/a&gt;. Opcionalmente se puede instalar el &lt;a href="http://www.codeplex.com/Silverlight"&gt;Silverlight Toolkit&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Nota&lt;/b&gt;: Silverlight 3.0 tools for VS2008 SP1 instala el SDK también.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Paso 3&lt;/b&gt;: Una vez instalado Silverlight 3 hay que abrir la solución del proyecto a migrar. Al abrirla Visual Studio lanzará un Wizard. Este Wizard se encarga de realizar la migración de los proyecto.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Paso 4&lt;/b&gt;: Hay que cambiar la versión de Silverlight utilizada en nuestra página. Así que hay que cambiar el valor de la propiedad &lt;b&gt;MinimumVersion&lt;/b&gt; de 2.0.31005.0 a 3.0.40624.0.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Paso 5&lt;/b&gt;: Cambiar de referencias de controles y librerías. Por ejemplo en el caso del control AutoCompleteBox, ya no se encuentra en el control toolkil. Si no que el control AutoCompleteBox ha sido absorbido por la librería de controles propia de Silverlight.&lt;/p&gt;  &lt;p&gt;El proceso de migración es bastante sencillo. Si la aplicación es de un tamaño mediano / grande y se han utilizado controles del control toolkit, probablemente de bastante guerra hacer que compile. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=160727" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/pedroafa/archive/tags/Silverlight+3.0/default.aspx">Silverlight 3.0</category></item><item><title>Error En Excel: Old Format Or Invalid Type Library</title><link>http://geeks.ms/blogs/pedroafa/archive/2009/10/20/error-en-excel-old-format-or-invalid-type-library.aspx</link><pubDate>Tue, 20 Oct 2009 19:43:01 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:158466</guid><dc:creator>Pedroafa</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/pedroafa/rsscomments.aspx?PostID=158466</wfw:commentRss><comments>http://geeks.ms/blogs/pedroafa/archive/2009/10/20/error-en-excel-old-format-or-invalid-type-library.aspx#comments</comments><description>&lt;p&gt;Trabajando con Excel puede que te hayas encontrado con este mensaje de error.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Error: Old format or invalid type library. (Exception from HRESULT: &lt;/b&gt;&lt;b&gt;0x80028018 (TYPE_E_INVDATAREAD))&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Este error se produce cuando la versión del Excel instalada en el equipo se encuentra en inglés y el sistema operativo en español. &lt;/p&gt;  &lt;p&gt;Para solucionar el problema basta con cambiar la cultura del thread de ejecución. Debe de estar en inglés. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;Thread.CurrentThread.CurrentCulture = new CultureInfo(&amp;quot;en-US&amp;quot;);&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=158466" width="1" height="1"&gt;</description></item><item><title>Review: No Me Hagas Pensar</title><link>http://geeks.ms/blogs/pedroafa/archive/2009/10/14/review-no-me-hagas-pensar.aspx</link><pubDate>Wed, 14 Oct 2009 22:04:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:158107</guid><dc:creator>Pedroafa</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/pedroafa/rsscomments.aspx?PostID=158107</wfw:commentRss><comments>http://geeks.ms/blogs/pedroafa/archive/2009/10/14/review-no-me-hagas-pensar.aspx#comments</comments><description>&lt;p&gt;&lt;b&gt;&lt;img height="242" width="180" src="http://www.kartones.net/images_posts/sector7g/review_no_me_hagas_pensar.jpg" align="left" style="display:inline;margin-left:0px;margin-right:0px;" alt="" /&gt; T&amp;iacute;tulo&lt;/b&gt;: NO ME HAGAS PENSAR. Una aproximaci&amp;oacute;n a la usabilidad en la web &lt;br /&gt;&lt;b&gt;Autor&lt;/b&gt;: &lt;a href="http://www.amazon.com/Steve-Krug/e/B001KHCFUU/ref=ntt_athr_dp_pel_1"&gt;Steve Krug&lt;/a&gt; &lt;br /&gt;&lt;b&gt;N&amp;ordm; P&amp;aacute;ginas&lt;/b&gt;: 216&lt;/p&gt;
&lt;p&gt;&amp;ldquo;No me hagas pensar&amp;rdquo; se trata de un libro sobre usabilidad en el entorno web. El libro intenta dar una serie de consejos y ense&amp;ntilde;adas sobre el dise&amp;ntilde;o web. Con el objetivo de facilitar el uso de la web a los usuarios. El reto es no hacerles pensar, es decir, que sea lo m&amp;aacute;s sencillo posible para ellos navegar por una web.&lt;/p&gt;
&lt;p&gt;El autor, Steve Krung, presenta su experiencia en este campo. Trata los conceptos de usabilidad de una manera muy clara, sencilla y amena. Adem&amp;aacute;s de ilustrar en todo momento, con ejemplos de web reales, sus ideas. Tambi&amp;eacute;n en varios cap&amp;iacute;tulos, al final, presenta una serie de ejercicios utilizando webs de ejemplos. &lt;/p&gt;
&lt;p&gt;Entre otros temas habla sobre: c&amp;oacute;mo debe de ser la jerarqu&amp;iacute;a de t&amp;iacute;tulos dentro de la web; C&amp;oacute;mo han de colocarse las &amp;ldquo;migas&amp;rdquo; para que el usuario sepa en todo momento donde se encuentra; C&amp;oacute;mo colocar la informaci&amp;oacute;n dentro de la web para que no resulte confusa al usuario; C&amp;oacute;mo realizar pruebas de usabilidad para que estas resulten &amp;uacute;tiles; etc&amp;hellip; &lt;/p&gt;
&lt;p&gt;Resumiendo un poco el libro. El autor viene a decir que de un solo vistazo, el usuario debe de saber: donde se encuentra dentro de la web y de que trata la web. Sobre esto esto habla a lo largo de los cap&amp;iacute;tulos del libro:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pr&amp;oacute;logo. &lt;/li&gt;
&lt;li&gt;Introducci&amp;oacute;n. &lt;/li&gt;
&lt;li&gt;Cap&amp;iacute;tulo 1. &amp;iexcl;No me hagas pensar!. &lt;/li&gt;
&lt;li&gt;Cap&amp;iacute;tulo2. &amp;iquest;C&amp;oacute;mo usamos realmente la web?. &lt;/li&gt;
&lt;li&gt;Cap&amp;iacute;tulo 3. Dise&amp;ntilde;o de r&amp;oacute;tulos 101. &lt;/li&gt;
&lt;li&gt;Cap&amp;iacute;tulo 4. &amp;iquest;Animal, vegetal o mineral?. &lt;/li&gt;
&lt;li&gt;Cap&amp;iacute;tulo 5. Omisi&amp;oacute;n de palabras innecesarias. &lt;/li&gt;
&lt;li&gt;Cap&amp;iacute;tulo 6. Se&amp;ntilde;ales en la calle y migas. &lt;/li&gt;
&lt;li&gt;Cap&amp;iacute;tulo 7. El primer paso para la recuperaci&amp;oacute;n es admitir que ha perdido el control de la p&amp;aacute;gina principal. &lt;/li&gt;
&lt;li&gt;Cap&amp;iacute;tulo 8. El granjero y el ganadero deben ser amigos. &lt;/li&gt;
&lt;li&gt;Cap&amp;iacute;tulo 9. Prueba la usabilidad por 10 centavos el d&amp;iacute;a. &lt;/li&gt;
&lt;li&gt;Cap&amp;iacute;tulo 10. La usabilidad como cortes&amp;iacute;a com&amp;uacute;n. &lt;/li&gt;
&lt;li&gt;Cap&amp;iacute;tulo 11. Accesibilidad, hojas de estilo en cascada y usted. &lt;/li&gt;
&lt;li&gt;Cap&amp;iacute;tulo 12 &amp;iexcl;Ayuda! Mi jefe quiere.... Lecturas recomendadas. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Adem&amp;aacute;s al final del libro el autor recomienda una serie de lecturas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Information-Architecture-World-Wide-Web/dp/0596527349/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1251743132&amp;amp;sr=8-1"&gt;Information Architecture for the World Wide Web&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Why-We-Buy-Shopping-Updated-Internet/dp/1416595244/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1251743214&amp;amp;sr=8-1"&gt;Why We Buy: The Science of Shopping&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Sources-Power-People-Make-Decisions/dp/0262611465/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1251743271&amp;amp;sr=8-1"&gt;Sources of Power: How People Make Decisions&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Practice-Creativity-Manual-Dynamic-Problem-Solving/dp/0020086504/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1251743350&amp;amp;sr=8-1"&gt;The Practice of Creativity: A Manual for Dynamic Group Problem-Solving&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Homepage-Usability-50-Websites-Deconstructed/dp/073571102X/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1251743470&amp;amp;sr=8-1"&gt;Homepage Usability: 50 Websites Deconstructed&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Web-Application-Design-Handbook-Technologies/dp/1558607528/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1251743535&amp;amp;sr=8-1"&gt;Web Application Design Handbook: Best Practices for Web-Based Software&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Defensive-Design-Web-improve-messages/dp/073571410X/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1251743598&amp;amp;sr=8-1"&gt;Defensive Design for the Web&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Design-Everyday-Things-Donald-Norman/dp/0465067107/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1251743662&amp;amp;sr=8-1"&gt;The Design of Everyday Things&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Practical-Guide-Usability-Testing/dp/1841500208/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1251743746&amp;amp;sr=8-1"&gt;A Practical Guide to Usability Testing&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Usabilidad-Disenos-Sitios-Jakob-Nielsen/dp/8420530085/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1251743811&amp;amp;sr=8-1"&gt;Usabilidad, Dise&amp;ntilde;os De Sitios Web&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Una lectura muy recomendable, no todo va a ser c&amp;oacute;digo.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=158107" width="1" height="1"&gt;</description></item><item><title>Detección de Colisiones de Objetos 3D en WPF</title><link>http://geeks.ms/blogs/pedroafa/archive/2009/10/06/detecci-243-n-de-colisiones-de-objetos-3d-en-wpf.aspx</link><pubDate>Tue, 06 Oct 2009 21:02:52 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:157489</guid><dc:creator>Pedroafa</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/pedroafa/rsscomments.aspx?PostID=157489</wfw:commentRss><comments>http://geeks.ms/blogs/pedroafa/archive/2009/10/06/detecci-243-n-de-colisiones-de-objetos-3d-en-wpf.aspx#comments</comments><description>&lt;p&gt;Window Presentation Foundation proporciona la posibilidad de trabajar con objetos 3D dentro de una aplicación. Ello hace que se puedan desarrollar aplicaciones muy ricas utilizando modelos en 3D. &lt;/p&gt;  &lt;p&gt;Si la aplicación trabaja con objetos 3D que dan la posibilidad de desplazarse a lo largo de la pantalla puede ser interesante detectar colisiones entre ellos. A la hora de detectar colisiones entre objetos en una aplicación podemos optar por varias estrategias. Por ejemplo, dentro de XNA podemos encontrar: &lt;b&gt;&lt;i&gt;bounding box, bounding sphere y bounding frustrum&lt;/i&gt;&lt;/b&gt;. El Framework de XNA ya proporciona métodos para facilitar las colisiones entre los objetos.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;&lt;i&gt;Bounding box&lt;/i&gt;&lt;/b&gt;: Esta técnica se utiliza cuando el objeto se adapta a una forma rectangular. Lo que hace es envolver el modelo en una caja. Si el modelo no es totalmente rectangular puede que se den falsas colisiones. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;&lt;i&gt;bounding sphere&lt;/i&gt;&lt;/b&gt;: Es técnica envuelve el objeto con una esfera. Se utiliza cuando el modelo se adapta mejor a la forma de una esfera. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;&lt;i&gt;bounding frustrum&lt;/i&gt;&lt;/b&gt;: Esta técnica no es usada realmente para controlar las colisiones. Ya que controla el espació visto por la cámara. Así puede determinar si lo que se está viendo es un objeto o no y por consiguiente decidir si dibujarlo o no. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;La técnica más sencilla de desarrollar con WPF es la de &lt;b&gt;&lt;i&gt;bounding box&lt;/i&gt;&lt;/b&gt;. El Framework proporciona los métodos necesarios para ello. &lt;img style="display:inline;margin-left:0px;margin-right:0px;" align="right" src="http://kartones.net/images_posts/sector7g/Deteccion_de_Colisiones_de_Objetos_3D_en_WPF_2.jpg" width="179" height="160" alt="" /&gt; &lt;/p&gt;  &lt;p&gt;Dentro de un &lt;b&gt;GeometryModel3D&lt;/b&gt; podemos encontrar la propiedad &lt;b&gt;Bound&lt;/b&gt;. Esta propiedad devuelve un objeto del tipo &lt;b&gt;Rect3D&lt;/b&gt;. Este objeto representa el rectángulo que envuelve al modelo. Además la propia clase &lt;b&gt;Rect3D&lt;/b&gt; cuenta con un método, &lt;b&gt;IntersectsWith&lt;/b&gt;. Este método recibe como parámetros otro objeto &lt;b&gt;Rect3D&lt;/b&gt; y verifica si entre ambos rectángulos hay una intersección. Si hay una intersección, devuelve &lt;b&gt;True&lt;/b&gt;. Eso quiere decir que los objetos están colisionando.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:b27dfbe2-f7aa-4b6a-840a-fa69a81468fc" class="wlWriterEditableSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background-color:#ffffff;max-height:500px;overflow:auto;padding:2px 5px;white-space:nowrap;"&gt; &lt;span style="color:#2b91af;"&gt;Rect3D&lt;/span&gt; rectModel1 = ((&lt;span style="color:#2b91af;"&gt;GeometryModel3D&lt;/span&gt;)mv3D.Content).Bounds;&lt;br /&gt; &lt;span style="color:#2b91af;"&gt;Rect3D&lt;/span&gt; rectModel2 = ((&lt;span style="color:#2b91af;"&gt;GeometryModel3D&lt;/span&gt;)mv3D.Content).Bounds;&lt;br /&gt; &lt;br /&gt; &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (rectModel1.IntersectsWith(rectModel2))&lt;br /&gt; {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#008000;"&gt;//Se ha producido una colisi&amp;#243;n.&lt;/span&gt;&lt;br /&gt; }&lt;br /&gt; &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;br /&gt; {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#008000;"&gt;//No hay colision entre ambos modelos.&lt;/span&gt;&lt;br /&gt; }&lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;img style="display:inline;margin-left:0px;margin-right:0px;" align="left" src="http://kartones.net/images_posts/sector7g/Deteccion_de_Colisiones_de_Objetos_3D_en_WPF_1.jpg" width="242" height="152" alt="" /&gt; Si sobre el modelo se ha hecho alguna transformación, habrá que tenerlo en cuenta a la hora de obtener el rectángulo que envuelve al modelo. De tal manera, que también esa transformación deberá ser aplicada al &lt;b&gt;Rect3D&lt;/b&gt; resultante. Para ello existe el método &lt;b&gt;TransformBounds&lt;/b&gt; que aplica las transformaciones a un &lt;b&gt;Rect3D&lt;/b&gt;. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:853691ca-3290-42cb-a180-d49375fe1eac" class="wlWriterEditableSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"&gt; &lt;span style="color:#2b91af;"&gt;ModelVisual3D&lt;/span&gt; mv3D = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ModelVisual3D&lt;/span&gt;();&lt;br /&gt; &lt;span style="color:#2b91af;"&gt;ModelVisual3D&lt;/span&gt; mv3D2 = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ModelVisual3D&lt;/span&gt;();&lt;br /&gt; &lt;br /&gt; mv3D.Content.Transform = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ScaleTransform3D&lt;/span&gt;(0.2, 0.2, 0.2);&lt;br /&gt; mv3D2.Content.Transform = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ScaleTransform3D&lt;/span&gt;(0.2, 0.2, 0.2);&lt;br /&gt; &lt;br /&gt; &lt;span style="color:#2b91af;"&gt;Rect3D&lt;/span&gt; rectModel1 = mv3D.Transform.TransformBounds(mv3D.Content.Bounds);&lt;br /&gt; &lt;span style="color:#2b91af;"&gt;Rect3D&lt;/span&gt; rectModel2 = mv3D2.Transform.TransformBounds(mv3D2.Content.Bounds);&lt;br /&gt; &lt;br /&gt; &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (rectModel1.IntersectsWith(rectModel2))&lt;br /&gt; {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#008000;"&gt;//Se ha producido una colisi&amp;#243;n.&lt;/span&gt;&lt;br /&gt; }&lt;br /&gt; &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;br /&gt; {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#008000;"&gt;//No hay colision entre ambos modelos.&lt;/span&gt;&lt;br /&gt; }&lt;br /&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=157489" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/pedroafa/archive/tags/WPF/default.aspx">WPF</category></item><item><title>Review: Scrum y XP desde las Trincheras</title><link>http://geeks.ms/blogs/pedroafa/archive/2009/07/08/review-scrum-y-xp-desde-las-trincheras.aspx</link><pubDate>Wed, 08 Jul 2009 06:45:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:151977</guid><dc:creator>Pedroafa</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/pedroafa/rsscomments.aspx?PostID=151977</wfw:commentRss><comments>http://geeks.ms/blogs/pedroafa/archive/2009/07/08/review-scrum-y-xp-desde-las-trincheras.aspx#comments</comments><description>&lt;p&gt;&lt;img src="http://kartones.net/images_posts/sector7g/Review_Scrum_and_XP_from_the_Trenches.jpg" align="left" style="margin:0px 5px 0px 0px;display:inline;" alt="" /&gt;&lt;b&gt;T&amp;iacute;tulo: &lt;/b&gt;&lt;a href="http://www.infoq.com/minibooks/scrum-xp-from-the-trenches"&gt;Scrum and XP from the Trenches&lt;/a&gt;&lt;b&gt;&lt;/b&gt; &lt;br /&gt;&lt;b&gt;Autor:&lt;/b&gt; &lt;a href="http://www.amazon.com/exec/obidos/search-handle-url/ref=ntt_athr_dp_sr_1?%5Fencoding=UTF8&amp;amp;search-type=ss&amp;amp;index=books&amp;amp;field-author=Henrik%20Kniberg"&gt;Henrik Kniberg&lt;/a&gt;&lt;b&gt;&lt;/b&gt; &lt;br /&gt;&lt;b&gt;N&amp;ordm; P&amp;aacute;ginas:&lt;/b&gt; 140&lt;/p&gt;
&lt;p&gt;En &lt;b&gt;&lt;i&gt;Scrum and XP from the Trenches&lt;/i&gt;&lt;/b&gt; su autor &lt;b&gt;&lt;i&gt;Henrik Kniberg&lt;/i&gt;&lt;/b&gt; habla sobre su experiencia con estas metodolog&amp;iacute;as. Cuenta como ha aplicado y combinado estas dos metodolog&amp;iacute;as los equipos de desarrollo de su empresa. Esto hace que se trate de un libro muy pr&amp;aacute;ctico, ameno y de f&amp;aacute;cil lectura. &lt;/p&gt;
&lt;p&gt;Henrik no profundiza mucho en los conceptos, pero s&amp;iacute; que hace una descripci&amp;oacute;n breve sobre ellos. Se centra m&amp;aacute;s en explicar c&amp;oacute;mo ha aplicado las diferentes herramientas de Scrum y cu&amp;aacute;les han sido sus conclusiones despu&amp;eacute;s de ver c&amp;oacute;mo funcionaban. Adem&amp;aacute;s habla de c&amp;oacute;mo ha combinado Scrum con XP y de los resultados obtenidos de ello.&lt;/p&gt;
&lt;p&gt;Lo interesante de este libro es justo el enfoque dado por el autor. Ver Scrum desde la pr&amp;aacute;ctica y la experiencia y no solamente desde el papel y la teor&amp;iacute;a. &lt;/p&gt;
&lt;p&gt;A lo largo del libro, Henrik habla de c&amp;oacute;mo realizar las pilas de producto, de c&amp;oacute;mo planificar los Sprints, c&amp;oacute;mo hacer retrospectivas del sprint, de c&amp;oacute;mo hacer pruebas, etc.&amp;hellip; Concretamente el &amp;iacute;ndice es el siguiente:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Introducci&amp;oacute;n &lt;/li&gt;
&lt;li&gt;C&amp;oacute;mo hacemos pilas de producto &lt;/li&gt;
&lt;li&gt;C&amp;oacute;mo nos preparamos para la planificaci&amp;oacute;n de Sprint &lt;/li&gt;
&lt;li&gt;C&amp;oacute;mo hacemos la planificaci&amp;oacute;n de Sprint &lt;/li&gt;
&lt;li&gt;C&amp;oacute;mo comunicamos los Sprints &lt;/li&gt;
&lt;li&gt;C&amp;oacute;mo hacemos pilas de Sprint &lt;/li&gt;
&lt;li&gt;C&amp;oacute;mo distribuimos la sala del equipo &lt;/li&gt;
&lt;li&gt;C&amp;oacute;mo hacemos Scrum diarios &lt;/li&gt;
&lt;li&gt;C&amp;oacute;mo hacemos la demo de sprint &lt;/li&gt;
&lt;li&gt;C&amp;oacute;mo hacemos retrospectivas de sprint &lt;/li&gt;
&lt;li&gt;Descansos entre Sprints &lt;/li&gt;
&lt;li&gt;C&amp;oacute;mo combinamos Scrum con XP &lt;/li&gt;
&lt;li&gt;C&amp;oacute;mo hacemos pruebas &lt;/li&gt;
&lt;li&gt;C&amp;oacute;mo manejar m&amp;uacute;ltiples equipos Scrum &lt;/li&gt;
&lt;li&gt;C&amp;oacute;mo gestionamos equipos distribuidos geogr&amp;aacute;ficamente &lt;/li&gt;
&lt;li&gt;Lista de comprobaci&amp;oacute;n del Scrum Master &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Adem&amp;aacute;s al final de libro, el propio autor recomienda una serie de lecturas bastante interesantes sobre el tema:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Managing-Design-Factory-Donald-Reinertsen/dp/0684839911/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246121382&amp;amp;sr=8-1"&gt;Managing the Design Factory&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Implementing-Lean-Software-Development-Addison-Wesley/dp/0321437381/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246121452&amp;amp;sr=1-1"&gt;Implementing Lean Software Development: From Concept to Cash&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Agile-Estimating-Planning-Robert-Martin/dp/0131479415/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246121511&amp;amp;sr=1-1"&gt;Agile Estimating and Planning&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Joel-Software-Occasionally-Developers-Designers/dp/1590593898/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246121592&amp;amp;sr=1-1"&gt;Joel on Software&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Lean-Software-Development-Agile-Toolkit/dp/0321150783/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246121695&amp;amp;sr=1-1"&gt;Lean Software Development: An Agile Toolkit&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Balancing-Agility-Discipline-Guide-Perplexed/dp/0321186125/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246121751&amp;amp;sr=1-1"&gt;Balancing Agility and Discipline: A Guide for the Perplexed&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Agile-Software-Development-Scrum/dp/0130676349/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246121821&amp;amp;sr=1-1"&gt;Agile Software Development with Scrum&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246121878&amp;amp;sr=1-1"&gt;The Mythical Man-Month: Essays on Software Engineering&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Agile-Project-Management-Microsoft-Professional/dp/073561993X/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246121935&amp;amp;sr=1-1"&gt;Agile Project Management with Scrum&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0321278658/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246121992&amp;amp;sr=1-1"&gt;Extreme Programming Explained: Embrace Change&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Peopleware-Productive-Projects-Teams-Second/dp/0932633439/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246122045&amp;amp;sr=1-1"&gt;Peopleware: Productive Projects and Teams&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El libro lo podr&amp;eacute;is contra en varios idiomas, tambi&amp;eacute;n en espa&amp;ntilde;ol, aunque personalmente os recomiendo la versi&amp;oacute;n en ingl&amp;eacute;s. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=151977" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/pedroafa/archive/tags/XP/default.aspx">XP</category><category domain="http://geeks.ms/blogs/pedroafa/archive/tags/Scrum/default.aspx">Scrum</category></item><item><title>Localización de una Aplicación Basada en PRISM</title><link>http://geeks.ms/blogs/pedroafa/archive/2009/07/01/localizaci-243-n-de-una-aplicaci-243-n-basada-en-prism.aspx</link><pubDate>Wed, 01 Jul 2009 19:59:25 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:151625</guid><dc:creator>Pedroafa</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/pedroafa/rsscomments.aspx?PostID=151625</wfw:commentRss><comments>http://geeks.ms/blogs/pedroafa/archive/2009/07/01/localizaci-243-n-de-una-aplicaci-243-n-basada-en-prism.aspx#comments</comments><description>&lt;p&gt;Es difícil localizar una aplicación WPF con las herramientas proporcionadas en el .Net Framework 3.5. El proceso para realizarlo sería el siguiente:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;p&gt;Generar un diccionario de recursos.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Enlazar el diccionario a la aplicación en el App.xaml.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Ejecutar el MSBuild script para generar un Id único para cada control localizable en la aplicación.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Ejecutar la herramienta LocBaml (incluida en el SDK) para extraer todos los Aid en un archivo separado por comas.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Copiar el archivo generado por LocBaml a una carpeta (una para cada lenguaje).&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Volver a ejecutar la herramienta LocBaml para importas todas las entradas dentro del diccionario.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;Compilar. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Esta forma de hacerlo tiene algunos problemas:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;p&gt;Sólo puedes tener un archivo de diccionario de recursos por aplicación. Cada módulo no podrá tener el suyo propio.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;El proceso es difícil y propenso a los errores. Lo que hace que sea costoso de mantener.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;No puedes cambiar el lenguaje de la aplicación en tiempo de ejecución. Es necesario reiniciar la aplicación para poder reflejar el cambio de idioma.&lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Para arquitecturas como PRISM (&lt;i&gt;Composite Application Guidance for WPF&lt;/i&gt;), que se basan en módulos, es muy importante que cada módulo pueda tener sus propios archivos de recursos. Puede que estos módulos sean desarrollados por separado y equipos diferentes. Además es interesante que el proceso de localización sea sencillo y fácilmente mantenible. Normalmente los textos de las traducciones suelen cambiar bastante.&lt;/p&gt;  &lt;p&gt;Para solucionar esto, y solventar todos los problemas existe &lt;a href="http://www.codeplex.com/WPFLocalizeExtension/"&gt;WPFLocalizeExtension&lt;/a&gt;. Se trata de un framework open source. Este framework ha sido modificado para soportar localización de assemblies (plug-in) cargados dinámicamente.&lt;/p&gt;  &lt;p&gt;Este framework se basa en archivos de recursos lo que hace que sea bastante sencillo mantener las traducciones de los diferentes idiomas. Así que cada módulo puede tener su propio archivo de recursos con sus traducciones. Además, permite cambios de idioma en caliente. &lt;/p&gt;  &lt;p&gt;Ahora el proceso de localización es más sencillo:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;p&gt;Modificar el archivo de proyecto .csproj añadiendo &lt;b&gt;&lt;i&gt;&amp;lt;UICulture&amp;gt;en-US&amp;lt;/UICulture&amp;gt;&lt;/i&gt;&lt;/b&gt; en el primer tag &lt;b&gt;PropertyGroup&lt;/b&gt;. Este será el lenguaje neutral de la aplicación.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Crear un archivo de recursos para el Lenguaje Neutral (&lt;b&gt;Shell.resx&lt;/b&gt;) y añadir una entrada por cada control que se necesite localizar:&lt;/p&gt;      &lt;ul&gt;       &lt;li&gt;         &lt;p&gt;Para añadir otro idioma copiar y pegar el archivo de recursos (&lt;b&gt;Shell.resx&lt;/b&gt;) y renombrarlo a &lt;b&gt;Shell.es-ES.resx&lt;/b&gt;. Traducir todas las etiquetas a español, en este caso.&lt;/p&gt;       &lt;/li&gt;        &lt;li&gt;         &lt;p&gt;Para localizar una vista (un archivo .xaml):&lt;/p&gt;          &lt;ul&gt;           &lt;li&gt;             &lt;p&gt;Añadir una referencia a la librería de&lt;b&gt;&lt;i&gt; &lt;/i&gt;&lt;/b&gt;&lt;a href="http://www.codeplex.com/WPFLocalizeExtension/"&gt;WPFLocalizeExtension&lt;/a&gt;.&lt;b&gt;&lt;i&gt; xmlns:loc=&amp;quot;clr-namespace:LocalizeExtension.Localization;assembly=LocalizeExtension&amp;quot;&lt;/i&gt;&lt;/b&gt;.&lt;/p&gt;           &lt;/li&gt;            &lt;li&gt;             &lt;p&gt;Para la propiedad que haya que traducir utilizar: &lt;b&gt;&lt;i&gt;{loc:LocText loc:Key=CustomerLabel, loc:Dict=Shell, loc:Assembly=MyAssembly.Shell}&lt;/i&gt;&lt;/b&gt;.&lt;/p&gt;           &lt;/li&gt;            &lt;li&gt;             &lt;p&gt;&lt;b&gt;Key&lt;/b&gt;: Es el nombre del texto a mostrar.&lt;/p&gt;           &lt;/li&gt;            &lt;li&gt;             &lt;p&gt;&lt;b&gt;Dict&lt;/b&gt;: Es el nombre del archivo de recursos.&lt;/p&gt;           &lt;/li&gt;            &lt;li&gt;             &lt;p&gt;&lt;b&gt;Assembly&lt;/b&gt;: Es la dll donde se encuentra el archivo de recursos.&lt;/p&gt;           &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Compilar.&lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Este proceso es mucho menos complejo que el estándar y facilita bastante las cosas como se puede ver.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=151625" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/pedroafa/archive/tags/WPF/default.aspx">WPF</category><category domain="http://geeks.ms/blogs/pedroafa/archive/tags/Composite+Application+WPF/default.aspx">Composite Application WPF</category><category domain="http://geeks.ms/blogs/pedroafa/archive/tags/PRISM/default.aspx">PRISM</category></item><item><title>A program on your computer has corrupted your default search provider setting for Internet Explorer</title><link>http://geeks.ms/blogs/pedroafa/archive/2009/06/29/a-program-on-your-computer-has-corrupted-your-default-search-provider-setting-for-internet-explorer.aspx</link><pubDate>Mon, 29 Jun 2009 22:00:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:151493</guid><dc:creator>Pedroafa</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/pedroafa/rsscomments.aspx?PostID=151493</wfw:commentRss><comments>http://geeks.ms/blogs/pedroafa/archive/2009/06/29/a-program-on-your-computer-has-corrupted-your-default-search-provider-setting-for-internet-explorer.aspx#comments</comments><description>&lt;p&gt;Hace unas semanas el Windows Update decidi&amp;oacute; actualizar mi versi&amp;oacute;n de Explorer de la versi&amp;oacute;n 7 a la 8 en mi &lt;b&gt;Windows XP&lt;/b&gt;. Desde entonces al abrir el explorer ha estado apareciendo el siguiente mensaje de error:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;i&gt;&amp;ldquo;A program on your computer has corrupted your default search provider setting for Internet Explorer.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Internet Explorer has reset this setting to your original search provider, Live Search (search.live.com).&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Internet Explorer will now open Search Settings, where you can change this setting or install more search providers.&amp;rdquo;&lt;/i&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;La soluci&amp;oacute;n al problema es bastante sencilla:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Con el IE 8 cerrado ir a esta clave de registro: &lt;b&gt;&lt;i&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\&lt;/i&gt;&lt;/b&gt; &lt;b&gt;&lt;i&gt;Explorer\User Shell Folders&lt;/i&gt;&lt;/b&gt;. &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A&amp;ntilde;adir una nueva clave de registro del tipo &lt;b&gt;&lt;i&gt;Expandable String value&lt;/i&gt;&lt;/b&gt;. Con la &lt;i&gt;key&lt;/i&gt; &lt;b&gt;&lt;i&gt;AppData&lt;/i&gt;&lt;/b&gt; y el campo &lt;i&gt;value&lt;/i&gt; &lt;b&gt;&lt;i&gt;%USERPROFILE%\Application Data&lt;/i&gt;&lt;/b&gt;. &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abrir el IE 8 y verificar que no vuelve a salir el mensaje. &lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=151493" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/pedroafa/archive/tags/IE+8/default.aspx">IE 8</category></item><item><title>Desarrollando Aplicaciones Cliente y Web con WFP y Silverlight</title><link>http://geeks.ms/blogs/pedroafa/archive/2009/06/24/desarrollando-aplicaciones-cliente-y-web-con-wfp-y-silverlight.aspx</link><pubDate>Wed, 24 Jun 2009 08:02:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:151006</guid><dc:creator>Pedroafa</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/pedroafa/rsscomments.aspx?PostID=151006</wfw:commentRss><comments>http://geeks.ms/blogs/pedroafa/archive/2009/06/24/desarrollando-aplicaciones-cliente-y-web-con-wfp-y-silverlight.aspx#comments</comments><description>&lt;p&gt;El otro d&amp;iacute;a a ra&amp;iacute;z de un post de Juan, &lt;a href="http://geeks.ms/blogs/jirigoyen/archive/2009/06/17/windows-presentation-foundati-243-n-el-final-de-windows-forms.aspx#comments"&gt;Windows Presentation Foundation. El final de Windows Forms&amp;hellip;&lt;/a&gt;, alguien preguntaba si era posible desarrollar la misma aplicaci&amp;oacute;n para ejecutarla en un cliente Windows y un cliente web. Posible s&amp;iacute; que es y adem&amp;aacute;s hay varias opciones para conseguirlo, aunque habr&amp;aacute; que tener en cuenta las limitaciones que existen.&lt;/p&gt;
&lt;p&gt;La primera opci&amp;oacute;n que se presenta es crear &lt;b&gt;una aplicaci&amp;oacute;n WPF y XBAP&lt;/b&gt;. Esto se puede conseguir usando el Template para Visual Studio, &lt;b&gt;Flexible Application&lt;/b&gt;. Este template lo que hace es proveer en un solo proyecto la capacidad de compilar en exe y xbap. Dependiendo del tipo de compilaci&amp;oacute;n utilizado se generar&amp;aacute; la aplicaci&amp;oacute;n para que corra bajo Windows o se ejecute en el Explorer.&lt;/p&gt;
&lt;p&gt;Evidentemente esta pr&amp;aacute;ctica tiene sus ventajas e inconvenientes.&lt;/p&gt;
&lt;p&gt;Ventajas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="text-decoration:underline;"&gt;Con un solo desarrollo tiene las dos aplicaciones&lt;/span&gt;. El c&amp;oacute;digo va a ser el mismo para los dos entornos, simplemente va a cambiar el tipo de compilaci&amp;oacute;n realizada. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Desventajas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="text-decoration:underline;"&gt;S&amp;oacute;lo para plataforma Windows&lt;/span&gt;. C&amp;oacute;mo XBAP se ejecuta en el cliente, el cliente debe tener instalado el .Net Framework. Esto limita los entornos en los que la aplicaci&amp;oacute;n puede ser utilizada. &lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration:underline;"&gt;XBAP se encuentra limitado al ejecutarse en un &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa480229.aspx"&gt;Sandbox&lt;/a&gt;. Esto hace que haya que tener en cuenta estas restricciones de seguridad a la hora de plantear el desarrollo. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Referencias sobre el Template de &lt;b&gt;Flexible Application&lt;/b&gt;: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://scorbs.com/2006/06/04/vs-template-flexible-application/"&gt;VS Template: Flexible Application&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://scorbs.com/2006/06/04/tips-tricks-for-flexible-application/"&gt;Tips &amp;amp; Tricks for Flexible Application&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://scorbs.com/vstemplates/Flexible%20Application%20(WPF).zip"&gt;Descargar el Template&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La segunda opci&amp;oacute;n ser&amp;iacute;a realizar dos desarrollos paralelos: &lt;b&gt;uno en WPF y otro en Silverlight&lt;/b&gt;. Para llevar esto acabo habr&amp;iacute;a que realizar un desarrollo espec&amp;iacute;fico para cada tecnolog&amp;iacute;a. Probablemente las aplicaciones no ser&amp;iacute;an iguales. Silverlight no es igual de potente que WPF, as&amp;iacute; que habr&amp;iacute;a que tener en cuenta las limitaciones de esta. &lt;/p&gt;
&lt;p&gt;El New York Times recientemente se ha encontrado con esta problem&amp;aacute;tica. Se ve&amp;iacute;an obligados a tener que mantener dos aplicaciones diferentes y que adem&amp;aacute;s realmente no ofrec&amp;iacute;an la misma funcionalidad a los diferentes usuarios. Un usuario de MAC, que s&amp;oacute;lo puede utilizar la aplicaci&amp;oacute;n Silverlight, no contaba con las mismas opciones que uno de Windows con la aplicaci&amp;oacute;n WPF. Por este motivo, el New York Times opto por Adobe Air. Abode Air si permite ejecutar sus aplicaciones tanto en entornos Windows como Web.&lt;/p&gt;
&lt;p&gt;As&amp;iacute; que la tercera, y &amp;uacute;ltima opci&amp;oacute;n, es &lt;b&gt;Silverlight 3&lt;/b&gt;. Silverlight 3 nace con la idea de competir con Adobe Air. Ya que esta nueva versi&amp;oacute;n si permite que la aplicaci&amp;oacute;n viva &amp;ldquo;out of browser&amp;rdquo;. &lt;/p&gt;
&lt;p&gt;Con Silverlight 3, una aplicaci&amp;oacute;n podr&amp;aacute; ser ejecutada en un cliente Windows y en un cliente Web. As&amp;iacute; que con un solo desarrollo la aplicaci&amp;oacute;n podr&amp;aacute; correr bajo ambos entornos. Adem&amp;aacute;s la aplicaci&amp;oacute;n ser&amp;aacute; multiplataforma ya que Silverlight si puede ser utilizado en MAC, por ejemplo. Al ser la misma aplicaci&amp;oacute;n tambi&amp;eacute;n contara con la misma funcionalidad para todos los usuarios de los diferentes entornos.&lt;/p&gt;
&lt;p&gt;El &amp;uacute;nico problema que presenta esta soluci&amp;oacute;n es que es necesario conocer las limitaciones de la tecnolog&amp;iacute;a. Silverlight 3 todav&amp;iacute;a no es WPF, aunque empieza a estar cerca. Adem&amp;aacute;s hay que tener en cuenta que se ejecuta dentro de un Sandbox de seguridad. Cosa que limitar&amp;aacute; la funcionalidad de la misma.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=151006" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/pedroafa/archive/tags/WPF/default.aspx">WPF</category><category domain="http://geeks.ms/blogs/pedroafa/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Ven a Fraggel Rock</title><link>http://geeks.ms/blogs/pedroafa/archive/2009/06/20/ven-a-fraggel-rock.aspx</link><pubDate>Sat, 20 Jun 2009 17:03:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:150892</guid><dc:creator>Pedroafa</dc:creator><slash:comments>8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/pedroafa/rsscomments.aspx?PostID=150892</wfw:commentRss><comments>http://geeks.ms/blogs/pedroafa/archive/2009/06/20/ven-a-fraggel-rock.aspx#comments</comments><description>&lt;p&gt;Hola a todos, me llamo Pedro y hoy empiezo a formar parte de esta comunidad, Geeks. Quer&amp;iacute;a agradecer a &lt;a href="http://geeks.ms/blogs/rcorral/"&gt;Rodrigo&lt;/a&gt; que me haya dado la oportunidad de unirme a vosotros y sobre todo a &lt;a href="http://geeks.ms/blogs/jirigoyen/"&gt;Juan&lt;/a&gt; por haberme insistido tanto para que me animara.&lt;/p&gt;
&lt;p&gt;Llevo ya un par de a&amp;ntilde;os escribiendo en mi blog &lt;a href="http://kartones.net/blogs/sector7g/"&gt;sectorsieteg.net&lt;/a&gt; (premio al que sepa de d&amp;oacute;nde sale el nombre) y pr&amp;aacute;cticamente los mismos a&amp;ntilde;os siguiendo a todo la gente que escribe aqu&amp;iacute;. As&amp;iacute; que me alegra mucho formar parte de vosotros.&lt;/p&gt;
&lt;p&gt;Suelo escribir de todo un poco, seg&amp;uacute;n voy trabajando y encontr&amp;aacute;ndome con las cosas, de ah&amp;iacute; el t&amp;iacute;tulo del post :). Eso s&amp;iacute;, siempre de tecnolog&amp;iacute;as del lado de la fuerza, jejeje. As&amp;iacute; que espero disfrutar con vosotros de este apasionante mundo.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=150892" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/pedroafa/archive/tags/Off+Topic/default.aspx">Off Topic</category></item></channel></rss>