<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://lonetcamp.com/Community/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>Dani PuntosNET</title><link>http://lonetcamp.com/Community/blogs/danipuntos/default.aspx</link><description>Un blog tecnológico en Tarragona </description><dc:language /><generator>CommunityServer 2008 SP1 (Build: 30619.63)</generator><item><title>Instalando Visual Studio 2010 RC</title><link>http://lonetcamp.com/Community/blogs/danipuntos/archive/2010/02/22/instalando-visual-studio-2010-rc.aspx</link><pubDate>Mon, 22 Feb 2010 15:34:00 GMT</pubDate><guid isPermaLink="false">11922fa7-1e1e-4ca4-8424-35c7d2f61ea8:1600</guid><dc:creator>Dani PuntosNET</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lonetcamp.com/Community/blogs/danipuntos/rsscomments.aspx?PostID=1600</wfw:commentRss><comments>http://lonetcamp.com/Community/blogs/danipuntos/archive/2010/02/22/instalando-visual-studio-2010-rc.aspx#comments</comments><description>&lt;p&gt;Con la versi&amp;oacute;n 2010 Ultimate&amp;nbsp;Release Candidate reci&amp;eacute;n descargada de la web de Microsoft, me he dispuesto a instalar el&amp;nbsp;nuevo Visual Studio. Al no tener versiones&amp;nbsp;beta anteriores instaladas, no he tenido ning&amp;uacute;n problema ni me ha aparecido ning&amp;uacute;n error. Eso s&amp;iacute;, una horita de instalaci&amp;oacute;n no me la ha quitado nadie.&lt;/p&gt;
&lt;p&gt;Estos son los pasos a seguir durante el proceso de instalaci&amp;oacute;n:&lt;/p&gt;
&lt;p&gt;En primer lugar, la pantalla de bienvenida:&lt;/p&gt;
&lt;p&gt;&lt;img height="386" width="498" src="http://lonetcamp.com/Community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/danipuntos.VS2010Instal/1.PNG" alt="1" style="vertical-align:middle;" /&gt;&lt;/p&gt;
&lt;p&gt;Seleccionamos &amp;#39;Instalar&amp;#39; y aparece la pantalla que carga el inicio de la instalaci&amp;oacute;n:&lt;/p&gt;
&lt;p&gt;&lt;img height="581" width="756" src="http://lonetcamp.com/Community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/danipuntos.VS2010Instal/2.PNG" alt="2" style="vertical-align:middle;" /&gt;&lt;/p&gt;
&lt;p&gt;Nos avisa de los componentes que se van a instalar por defecto, entre ellos la versi&amp;oacute;n Release Candidate del .Net Framework 4.0:&lt;/p&gt;
&lt;p&gt;&lt;img height="581" width="756" src="http://lonetcamp.com/Community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/danipuntos.VS2010Instal/4.PNG" alt="3" style="vertical-align:middle;" /&gt;&lt;/p&gt;
&lt;p&gt;La siguiente pantalla nos dar&amp;aacute; la opci&amp;oacute;n de realizar una instalaci&amp;oacute;n completa (Full) o por el contrario, elegir las opciones&amp;nbsp;a nuestro gusto&amp;nbsp;(Custom). Por supuesto hacemos una instalaci&amp;oacute;n personalizada ;) &lt;/p&gt;
&lt;p&gt;De este modo, pasamos a la pantalla donde podemos elegir los componentes a instalar:&lt;/p&gt;
&lt;p&gt;&lt;img height="581" width="756" src="http://lonetcamp.com/Community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/danipuntos.VS2010Instal/6.PNG" alt="4" style="vertical-align:middle;" /&gt;&lt;/p&gt;
&lt;p&gt;Podremos elegir los lenguajes que m&amp;aacute;s nos gusten entre C++, C#, VB y el reci&amp;eacute;nte&amp;nbsp;F#.&lt;/p&gt;
&lt;p&gt;Finalmente empezar&amp;aacute; toda la instalaci&amp;oacute;n:&lt;/p&gt;
&lt;p&gt;&lt;img height="581" width="756" src="http://lonetcamp.com/Community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/danipuntos.VS2010Instal/7.PNG" alt="5" style="vertical-align:middle;" /&gt;&lt;/p&gt;
&lt;p&gt;Y despu&amp;eacute;s de un poco de paciencia y 3 reinicios...&lt;/p&gt;
&lt;p&gt;&lt;img height="159" width="425" src="http://lonetcamp.com/Community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/danipuntos.VS2010Instal/8.PNG" alt="6" style="vertical-align:middle;" /&gt;&lt;/p&gt;
&lt;p&gt;...ya tendremos el Visual Studio 2010 Ultimate Release Candidate instalado en nuestra m&amp;aacute;quina, venga, a jugar!&lt;/p&gt;
&lt;p&gt;&lt;img height="386" width="498" src="http://lonetcamp.com/Community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/danipuntos.VS2010Instal/16.PNG" alt="7" style="vertical-align:middle;" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://lonetcamp.com/Community/aggbug.aspx?PostID=1600" width="1" height="1"&gt;</description><category domain="http://lonetcamp.com/Community/blogs/danipuntos/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Visual Studio 2010 Release Candidate ya está entre nosotros</title><link>http://lonetcamp.com/Community/blogs/danipuntos/archive/2010/02/12/visual-studio-2010-release-candidate-ya-est-225-entre-nosotros.aspx</link><pubDate>Fri, 12 Feb 2010 16:58:00 GMT</pubDate><guid isPermaLink="false">11922fa7-1e1e-4ca4-8424-35c7d2f61ea8:1577</guid><dc:creator>Dani PuntosNET</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lonetcamp.com/Community/blogs/danipuntos/rsscomments.aspx?PostID=1577</wfw:commentRss><comments>http://lonetcamp.com/Community/blogs/danipuntos/archive/2010/02/12/visual-studio-2010-release-candidate-ya-est-225-entre-nosotros.aspx#comments</comments><description>&lt;p&gt;Por si alguien todav&amp;iacute;a no se ha enterado, ya est&amp;aacute; disponible para descargar la versi&amp;oacute;n RC del pr&amp;oacute;ximo Visual Studio 2010 y NetFramework 4.0&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx" title="Visual Studio 2010 Release Candidate"&gt;&amp;iquest;A que est&amp;aacute;s esperando?!!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;a target="_blank" href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx" title="Visual Studio 2010 RC"&gt;&lt;img height="178" width="233" src="http://lonetcamp.com/Community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/danipuntos/VS2010.png" alt="Visual Studio 2010" style="border:1px solid black;" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://lonetcamp.com/Community/aggbug.aspx?PostID=1577" width="1" height="1"&gt;</description><category domain="http://lonetcamp.com/Community/blogs/danipuntos/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Imagine Mobile pasó cerca de aquí</title><link>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/12/28/imagine-mobile-pas-243-cerca-de-aqu-237.aspx</link><pubDate>Mon, 28 Dec 2009 12:56:00 GMT</pubDate><guid isPermaLink="false">11922fa7-1e1e-4ca4-8424-35c7d2f61ea8:1444</guid><dc:creator>Dani PuntosNET</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lonetcamp.com/Community/blogs/danipuntos/rsscomments.aspx?PostID=1444</wfw:commentRss><comments>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/12/28/imagine-mobile-pas-243-cerca-de-aqu-237.aspx#comments</comments><description>&lt;p&gt;Saludos desde estos &amp;uacute;ltimos d&amp;iacute;as de 2009. Hace apenas un mes que la gente de &lt;a target="_blank" href="http://www.mobilenug.com" title="Mobile Nug"&gt;MobileNug&lt;/a&gt; pas&amp;oacute; por Barcelona a celebrar el &amp;uacute;ltimo evento de la gira &lt;a target="_blank" href="http://www.micmovilidad.es/mobilityshow2009/" title="Mobility Show"&gt;Mobility Show 2009&lt;/a&gt; despu&amp;eacute;s de triunfar en Valladolid y en Madrid anteriormente.&lt;/p&gt;
&lt;p&gt;Tuve la suerte de poder asistir y poder ver de nuevo grandes amigos (con los que tomar unas birras nunca est&amp;aacute; de m&amp;aacute;s)!!!&lt;/p&gt;
&lt;p&gt;En el evento se habl&amp;oacute; del nuevo Windows Mobile 6.5, de la reci&amp;eacute;n estrenada Mobile Market Place, se trataron temas t&amp;eacute;cnicamente m&amp;aacute;s profundos como el uso de Sync Framework para sincronizar datos y tambi&amp;eacute;n la integraci&amp;oacute;n de Exchange con el mundo de los dispositivos m&amp;oacute;viles. Vimos temas muy ineresantes sobre el uso de Bing Services en nuestros desarrollos m&amp;oacute;viles y tambi&amp;eacute;n uso de elementos multimedia avanzados con los que dar un aspecto realmente chulo y unos acabados muy profesionales. Y encima nos dieron de comer gratis, que m&amp;aacute;s se puede pedir?&lt;/p&gt;
&lt;p&gt;Desde aqu&amp;iacute; quiero mandar un saludo a la gente de MobileNug y Microsoft que dieron el evento, son muy enrollados y nos hicieron pasar un rato muy divertido. Lamentablemente el mundo de los dispositivos m&amp;oacute;viles en Microsoft tiene un futuro incierto, pero con gente como esta, seguro que no faltan las ganas de tirar pa&amp;#39;lante con lo que sea!&lt;/p&gt;
&lt;p&gt;Adjunto la foto que me hizo el amigo &lt;a target="_blank" href="http://geeks.ms/blogs/jllatorre/" title="Jos&amp;eacute; Luis Latorre"&gt;Jos&amp;eacute; Luis&lt;/a&gt; cuando&amp;nbsp;la gente que daba&amp;nbsp;el evento me&amp;nbsp;entreg&amp;oacute; la &lt;strong&gt;XBOX 360 como premio por quedar finalista en el concurso&lt;/strong&gt; &lt;a target="_blank" href="http://www.mobilenug.com/imaginemobile/default.aspx" title="Imagine Mobile"&gt;Imagine Mobile&lt;/a&gt;.&amp;nbsp;Para reyes me ya me he pedido una lista de juegos!!&lt;/p&gt;
&lt;p&gt;&lt;img height="457" width="600" src="http://lonetcamp.com/Community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/danipuntos/mobilityShow.jpg" alt="XBOX!" style="vertical-align:middle;border:1px solid black;" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;
&lt;h1&gt;&amp;nbsp;Gracias a todos y que tengais un feliz 2010!!!&lt;/h1&gt;
&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://lonetcamp.com/Community/aggbug.aspx?PostID=1444" width="1" height="1"&gt;</description><category domain="http://lonetcamp.com/Community/blogs/danipuntos/archive/tags/.NET/default.aspx">.NET</category></item><item><title>NET Minds: Microsoft busca cerebros!</title><link>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/12/09/net-minds-microsoft-busca-cerebros.aspx</link><pubDate>Wed, 09 Dec 2009 07:47:00 GMT</pubDate><guid isPermaLink="false">11922fa7-1e1e-4ca4-8424-35c7d2f61ea8:1363</guid><dc:creator>Dani PuntosNET</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lonetcamp.com/Community/blogs/danipuntos/rsscomments.aspx?PostID=1363</wfw:commentRss><comments>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/12/09/net-minds-microsoft-busca-cerebros.aspx#comments</comments><description>&lt;p&gt;Recientemente Microsoft acaba de lanzar una nueva campa&amp;ntilde;a. Se llama &lt;a target="_blank" href="http://msdn.microsoft.com/es-es/net_minds.aspx" title="NET Minds"&gt;NET Minds&lt;/a&gt; y estar&amp;aacute; formada por una serie de retos que se tendr&amp;aacute;n que resolver a lo largo de 5 meses.&lt;/p&gt;
&lt;p&gt;No ser&amp;aacute;n pruebas puramente t&amp;eacute;cnicas, pero si que tendremos que aplicar mucha l&amp;oacute;gica y darle al coco para poder avanzar a lo largo de los diferentes retos que se nos van a plantear. Y para dar un poco de emoci&amp;oacute;n al juego, Microsoft va a premiar a los 3 primeros con una licencia de Microsoft &lt;strong&gt;Visual Studio 2010 Ultimate&lt;/strong&gt; con &lt;strong&gt;MSDN Premium&lt;/strong&gt;, no est&amp;aacute; nada mal!!!!&lt;/p&gt;
&lt;p&gt;&amp;Aacute;nimo, quedan muy pocos d&amp;iacute;as para que empieze el juego!&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://msdn.microsoft.com/es-es/net_minds.aspx" title="NET Minds"&gt;&lt;img height="270" width="454" src="http://lonetcamp.com/Community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/danipuntos/NETMinds.png" alt="NET Minds" style="vertical-align:middle;" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://lonetcamp.com/Community/aggbug.aspx?PostID=1363" width="1" height="1"&gt;</description><category domain="http://lonetcamp.com/Community/blogs/danipuntos/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Microsoft Facebook SDK</title><link>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/11/22/microsoft-facebook-sdk.aspx</link><pubDate>Sun, 22 Nov 2009 18:42:00 GMT</pubDate><guid isPermaLink="false">11922fa7-1e1e-4ca4-8424-35c7d2f61ea8:1325</guid><dc:creator>Dani PuntosNET</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lonetcamp.com/Community/blogs/danipuntos/rsscomments.aspx?PostID=1325</wfw:commentRss><comments>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/11/22/microsoft-facebook-sdk.aspx#comments</comments><description>&lt;p&gt;Recientemente se ha presentado la versi&amp;oacute;n 3.0 de&amp;nbsp;esta increible SDK. Con estas herramientas podremos desarrollar nuestros&amp;nbsp;propios programas para que interactuen con&amp;nbsp;la red social de las redes sociales: el Facebook.&lt;/p&gt;
&lt;p&gt;Ahora que el amigo &lt;a target="_blank" href="http://lonetcamp.com/Community/blogs/marckys/archive/2009/11/12/microsoft-facebook-en-mi-windows-mobile-6-1.aspx" title="Facebook Windows Mobile"&gt;Marc se ha instalado el cliente de facebook para su Windows Mobile&lt;/a&gt;, aprovechar&amp;eacute; para hablar sobre esta SDK y mostrar un peque&amp;ntilde;o ejemplo de lo que se puede hacer. A lo mejor se anima a hacer alg&amp;uacute;n programilla para su smart client ;)&lt;/p&gt;
&lt;p&gt;Lo primero ser&amp;aacute; descargar la &lt;a target="_blank" href="http://www.codeplex.com/FacebookToolkit" title="Microsoft Facebook SDK"&gt;SDK completa desde Codeplex&lt;/a&gt;, no pod&amp;iacute;a ser de otra manera. La SDK contiene las dll&amp;#39;s necesarias para poder realizar nuestros programas, varios ejemplos con diferentes tecnolog&amp;iacute;as&amp;nbsp;y una documentaci&amp;oacute;n totalmente completa que incluye entre otras cosas, una gu&amp;iacute;a de usuario y un paso a paso para crear nuestros primeros experimentos.&lt;/p&gt;
&lt;p&gt;Hay varios modos de aprovechar el potencial de desarrollo que ofrece Facebook. Una manera es creando aplicaciones que se integran dentro del portal como los &lt;span style="text-decoration:line-through;"&gt;odiosos&lt;/span&gt; divertidos test tipo &amp;quot;que marca de queso de cabrales eres&amp;quot; o las &lt;span style="text-decoration:line-through;"&gt;desquiciantes&lt;/span&gt; alegres &amp;quot;galletas de la fortuna&amp;quot;.&lt;/p&gt;
&lt;p&gt;Otra modo de desarrollar con Facebook es creando aplicaciones cliente que interactuen con el portal. Me explico, por ejemplo,&amp;nbsp;utilizando esta SDK he hecho un peque&amp;ntilde;o programilla que me retorna mi lista de amigos. Una vez tengo el array con todos mis amigos, lo vuelco en un fichero XML y le pongo la fecha. De esta manera puedo tener un hist&amp;oacute;rico de mis contactos agregados y desagregados.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Cabe decir que el desarrollo con esta SDK es increiblemente sencillo, de hecho, para obtener mi lista de contactos simplemente he tirado estas dos l&amp;iacute;neas:&lt;/p&gt;
&lt;p&gt;&lt;img height="48" width="524" src="http://lonetcamp.com/Community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/danipuntos.Facebook/facebook.PNG" alt="Microsoft Facebook SDK" style="vertical-align:middle;border:1px solid black;" /&gt;&lt;/p&gt;
&lt;p&gt;A parte, se incorporan una serie de user controls que encapsulan las opciones m&amp;aacute;s &amp;uacute;tiles. Por ejemplo, ya hay un control que obtiene tu lista de contactos y te los muestra en un canvas muy bi&amp;eacute;n organizado. As&amp;iacute; como controles para ver tu perfil, eventos o cualquier cosa que puedas hacer con el mismo facebook:&lt;/p&gt;
&lt;p&gt;&lt;img height="416" width="594" src="http://lonetcamp.com/Community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/danipuntos.Facebook/facebook2.PNG" alt="Microsoft Facebook SDK" style="border:1px solid black;" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Y lo m&amp;aacute;s increible, esta SDK ofrece soporte para que podamos desarrollar aplicaciones en &lt;strong&gt;Silverlight, WPF&lt;/strong&gt; o incluso en &lt;strong&gt;ASP.NET MVC!&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;Nos vemos!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://lonetcamp.com/Community/aggbug.aspx?PostID=1325" width="1" height="1"&gt;</description><category domain="http://lonetcamp.com/Community/blogs/danipuntos/archive/tags/.NET/default.aspx">.NET</category><category domain="http://lonetcamp.com/Community/blogs/danipuntos/archive/tags/Facebook/default.aspx">Facebook</category></item><item><title>La (no) herencia visual del DataGridView</title><link>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/11/08/la-no-herencia-visual-del-datagridview.aspx</link><pubDate>Sun, 08 Nov 2009 17:51:00 GMT</pubDate><guid isPermaLink="false">11922fa7-1e1e-4ca4-8424-35c7d2f61ea8:1269</guid><dc:creator>Dani PuntosNET</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lonetcamp.com/Community/blogs/danipuntos/rsscomments.aspx?PostID=1269</wfw:commentRss><comments>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/11/08/la-no-herencia-visual-del-datagridview.aspx#comments</comments><description>&lt;p&gt;Que frustrante. Parece ser que Visual Studio no contempla la herencia visual en algunos de los controles del propio .NetFramework, entre ellos el DataGridView. En &lt;a target="_blank" href="http://lonetcamp.com/Community/blogs/danipuntos/archive/2008/09/07/bug-en-el-evento-datechanged-del-control-monthcalendar.aspx" title="Bug MonthCalendar"&gt;art&amp;iacute;culos anteriores&lt;/a&gt; hab&amp;iacute;a comentado comportamientos an&amp;oacute;malos en el control MonthCalendar, pero esto... esto me supera.&lt;/p&gt;
&lt;p&gt;Concretamente el problema aparece en tiempo de dise&amp;ntilde;o. Para entenderlo de una manera sencilla, podemos hacer un ejercicio r&amp;aacute;pido:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Abrimos un Proyecto de Windows Forms.&lt;/li&gt;
&lt;li&gt;Creamos un formulario padre que contenga un control DataGridView.&lt;/li&gt;
&lt;li&gt;Modificamos la propiedad &amp;#39;&lt;strong&gt;Modifiers&lt;/strong&gt;&amp;#39; del DataGridView a valor &amp;#39;&lt;strong&gt;Protected&lt;/strong&gt;&amp;#39;. De esta manera cualquier formulario que herede de este &lt;em&gt;formulario-padre&lt;/em&gt; podr&amp;aacute; acceder a las propiedades del control DataGridView (o no?)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img height="367" width="640" src="http://lonetcamp.com/Community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/danipuntos.DataGridView/DataGridView1.PNG" alt="DataGridView" style="vertical-align:middle;border:1px solid black;" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Creamos un &lt;em&gt;formulario-hijo&lt;/em&gt; que herede de &lt;em&gt;formulario-padre&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Sorpresas te da la vida:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img height="366" width="638" src="http://lonetcamp.com/Community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/danipuntos.DataGridView/DataGridView2.PNG" alt="DataGridView" style="border:1px solid black;" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;iquest;Qu&amp;eacute; significa este candado? &amp;iquest;Por qu&amp;eacute; las propiedades est&amp;aacute;n deshabilitadas?&lt;/strong&gt; Pues resulta que desde la versi&amp;oacute;n 2.0 del .NetFramework existen controles que tienen deshabilitada la herencia visual y&amp;nbsp;por tanto no pueden modificarse en &amp;#39;design time&amp;#39;. Hay muchas quejas al respecto &lt;a target="_blank" href="http://www.hockblogs.net/post/2008/06/Visual-inheritance-DataGridView2c-where-is-it-at-design-time.aspx" title="Visual inheritance DataGridView"&gt;aqu&amp;iacute;&lt;/a&gt;, &lt;a target="_blank" href="http://dotnetengineer.wordpress.com/2008/06/27/visual-inheritance-using-datagridview/" title="Visual inheritance DataGridView"&gt;aqu&amp;iacute;&lt;/a&gt;, &lt;a target="_blank" href="http://social.msdn.microsoft.com/forums/en-US/winformsdesigner/thread/ea56ff9b-9007-43d2-a7e3-e194a163bcdf/" title="Visual inheritance DataGridView"&gt;aqu&amp;iacute;&lt;/a&gt;,&amp;nbsp;&lt;a target="_blank" href="http://www.dotnetclubs.com/forums/t/442.aspx" title="Visual inheritance DataGridView"&gt;aqu&amp;iacute;&lt;/a&gt; y &lt;a target="_blank" href="http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/0ce9207e-3c7a-4eb4-9e38-870623f0ef50" title="Visual inheritance DataGridView"&gt;aqu&amp;iacute;&lt;/a&gt;. Y adem&amp;aacute;s est&amp;aacute; reportado a Microsoft &lt;a target="_blank" href="http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=115264" title="Visual inheritance DataGridView"&gt;aqu&amp;iacute;&lt;/a&gt;, &lt;a target="_blank" href="http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=115265" title="Visual inheritance DataGridView"&gt;aqu&amp;iacute;&lt;/a&gt;, &lt;a target="_blank" href="http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=119427" title="Visual inheritance DataGridView"&gt;aqu&amp;iacute;&lt;/a&gt;, &lt;a target="_blank" href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=284335&amp;amp;wa=wsignin1.0" title="Visual inheritance DataGridView"&gt;aqu&amp;iacute;&lt;/a&gt;&amp;nbsp;y vete a saber donde m&amp;aacute;s.&lt;/p&gt;
&lt;p&gt;Vale, si, se puede acceder a las propiedades mediante c&amp;oacute;digo, al fin&amp;nbsp;y al cabo todos somos programadores. Pero si alguien lo quiere probar, ver&amp;aacute; que acceder a los eventos no es tan sencillo, directamente no se puede! ni por c&amp;oacute;digo! la &amp;uacute;nica manera que he encontrado es publicando los eventos en el formulario padre y haciendo un override en el formulario hijo, y ya empezamos con las chapuzas. Adem&amp;aacute;s, la edici&amp;oacute;n de las columnas hay que hacerla manualmente y no se ve el aspecto final del DataGridView hasta que no ejecutamos la aplicaci&amp;oacute;n. Y por si todo esto fuera poco, el comportamiento del control es extremadamente absurdo, empieza a crear y crear columnas repetidas. En fin, un infierno. Asi que mi consejo del d&amp;iacute;a es:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NO HEREDEIS NUNCA UN CONTROL DATAGRIDVIEW.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Este art&amp;iacute;culo lo he escrito porque justamente tengo un proyecto entre manos de desarrollo de una aplicaci&amp;oacute;n con aproximadamente 60 formularios con un DataGridView id&amp;eacute;ntico. La soluci&amp;oacute;n ideal ser&amp;iacute;a crear un formulario padre con un DataGridView y los 60 formularios que hereden de este formulario padre. Pero visto lo visto, tendr&amp;eacute; que ir formulario por formulario copypasteando el DataGridView en cada uno de ellos (y justamente esto no son las mejores pr&amp;aacute;cticas).&lt;/p&gt;
&lt;p&gt;Ser&amp;aacute; la versi&amp;oacute;n 2010 la que solucione estos problemas? Nos vemos!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://lonetcamp.com/Community/aggbug.aspx?PostID=1269" width="1" height="1"&gt;</description><category domain="http://lonetcamp.com/Community/blogs/danipuntos/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Singleton Code Snippet</title><link>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/10/30/singleton-code-snippet.aspx</link><pubDate>Fri, 30 Oct 2009 07:51:00 GMT</pubDate><guid isPermaLink="false">11922fa7-1e1e-4ca4-8424-35c7d2f61ea8:1253</guid><dc:creator>Dani PuntosNET</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lonetcamp.com/Community/blogs/danipuntos/rsscomments.aspx?PostID=1253</wfw:commentRss><comments>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/10/30/singleton-code-snippet.aspx#comments</comments><description>&lt;p&gt;Singleton es uno de los patrones m&amp;aacute;s conocidos y utilizados en el dise&amp;ntilde;o de arquitecturas de software. Aplicando este patr&amp;oacute;n a una clase, se evita que dicha clase pueda ser instanciada m&amp;aacute;s de una vez durante el ciclo de vida de la aplicaci&amp;oacute;n.&lt;br /&gt;&amp;iquest;Y por qu&amp;eacute; queremos que una clase solo se pueda instanciar una vez? pues por ejemplo para objetos de tipo controlador que gestionen las conexiones a la BD. En general son objetos a los que se necesita acceder desde cualquier punto de la aplicaci&amp;oacute;n y que se debe evitar estar construyendo constantemente.&lt;br /&gt;En la &lt;a target="_blank" href="http://es.wikipedia.org/wiki/Singleton" title="Wikipedia - Patr&amp;oacute;n Singleton"&gt;wikipedia&lt;/a&gt;&amp;nbsp;se detalla muy claramente su uso e implementaci&amp;oacute;n, adem&amp;aacute;s en la red hay cantidad de informaci&amp;oacute;n no solo sobre este patr&amp;oacute;n, sin&amp;oacute; sobre cualquiera que pueda resultar &amp;uacute;til.&lt;/p&gt;
&lt;p&gt;Para crear una clase que sea Singleton debemos realizar varias implementaciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El constructor debe ser privado.&lt;/li&gt;
&lt;li&gt;La clase debe publicar una propiedad statica que devuelva la instancia de dicha clase.&lt;/li&gt;
&lt;li&gt;Esta propiedad consultar&amp;aacute; internamente si existe una instancia de la clase. Si existe, devuelve dicha instancia. De lo contrario, la construye previamente y la devuelve.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Como el constructor es privado, solo podemos acceder a la clase a trav&amp;eacute;s de la propiedad p&amp;uacute;blica. Dicha propiedad ser&amp;aacute; la encargada de crear la &amp;uacute;nica instancia posible de la clase en caso de que no exista.&lt;/p&gt;
&lt;p&gt;Y aprovechando esta serie de art&amp;iacute;culos (&lt;a target="_blank" href="http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/10/26/los-code-snippets.aspx" title="Code Snippet"&gt;code snippet&lt;/a&gt;, &lt;a target="_blank" href="http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/10/28/code-snippets-ii.aspx" title="Code Snippet II"&gt;code snippet II&lt;/a&gt;) dedicada a los &lt;strong&gt;Code Snippets&lt;/strong&gt;, podemos ver como este es un cl&amp;aacute;sico ejemplo de aumento de productividad utilizando y creando nuestros Code Snippets.&lt;br /&gt;Es muy probable que en diferentes aplicaciones debamos crear classes de tipo Singleton, incluso varias dentro del mismo proyecto. Si disponemos de un code Snippet que genere automaticamente la clase singleton podemos ahorrarnos mucho tiempo.&lt;br /&gt;As&amp;iacute; que aqu&amp;iacute; lo ofrezco para &lt;a target="_blank" href="http://lonetcamp.com/Community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/danipuntos.CodeSnippets/Singleton.snippet" title="Singleton Code Snippet"&gt;descargar&lt;/a&gt; y poder utilizar libremente en proyectos C#.&lt;/p&gt;
&lt;p&gt;Saludos!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://lonetcamp.com/Community/aggbug.aspx?PostID=1253" width="1" height="1"&gt;</description><category domain="http://lonetcamp.com/Community/blogs/danipuntos/archive/tags/.NET/default.aspx">.NET</category><category domain="http://lonetcamp.com/Community/blogs/danipuntos/archive/tags/c_2300_/default.aspx">c#</category></item><item><title>Code Snippets II</title><link>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/10/28/code-snippets-ii.aspx</link><pubDate>Wed, 28 Oct 2009 07:48:00 GMT</pubDate><guid isPermaLink="false">11922fa7-1e1e-4ca4-8424-35c7d2f61ea8:1234</guid><dc:creator>Dani PuntosNET</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lonetcamp.com/Community/blogs/danipuntos/rsscomments.aspx?PostID=1234</wfw:commentRss><comments>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/10/28/code-snippets-ii.aspx#comments</comments><description>&lt;p&gt;En el &lt;a target="_blank" href="http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/10/26/los-code-snippets.aspx" title="Code Snippets"&gt;art&amp;iacute;culo anterior&lt;/a&gt; hablaba sobre los Code Snippets y su utilizaci&amp;oacute;n. Ahora es el momento de crear nuestros propios Code Snippets.&lt;/p&gt;
&lt;p&gt;Existe un gestor de Code Snippets en el propio &lt;strong&gt;Visual Studio&lt;/strong&gt;. Para acceder al manager podemos hacerlo a trav&amp;eacute;s del men&amp;uacute; &amp;#39;&lt;em&gt;Herramientas&lt;/em&gt;&amp;#39;:&lt;/p&gt;
&lt;p&gt;&lt;img height="273" width="296" src="http://lonetcamp.com/Community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/danipuntos.CodeSnippets/codesnippet3.JPG" alt="Code Snippet Manager" style="vertical-align:middle;border:1px solid black;" /&gt;&lt;/p&gt;
&lt;p&gt;Desde el gestor podremos a&amp;ntilde;adir, borrar, importar o modificar Code Snippets. Aconsejo que le deis un vistazo a la cantidad de Code Snippets que se ofrecen en &lt;strong&gt;Visual Studio&lt;/strong&gt;, es brutal. Y la mayor&amp;iacute;a son muy completos (m&amp;eacute;todos de log, acceso a ficheros, fragmentos de c&amp;oacute;digo de WPF, ClickOnce, LINQ, dispositivos m&amp;oacute;viles etc.). Cabe destacar que los hay diferentes para C# y VisualBasic.NET, incluso para XML!&lt;br /&gt;Adem&amp;aacute;s, en internet podremos encontrar infinitos Code Snippets para incorporarlos a nuestro &lt;strong&gt;Visual Studio&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Pero realmente &amp;iquest;qu&amp;eacute; es un Code Snippet? la respuesta es sencilla, un simple fichero en formato XML y con extensi&amp;oacute;n &amp;#39;&lt;em&gt;.snippet&lt;/em&gt;&amp;#39;.&amp;nbsp;Se puede decir que est&amp;aacute; formado por dos partes: una cabecera con informaci&amp;oacute;n del propio Code Snippet, y un segundo bloque con el c&amp;oacute;digo que se va a &amp;#39;crear&amp;#39; en su utilizaci&amp;oacute;n y los elementos modificables.&lt;/p&gt;
&lt;p&gt;Este es un ejemplo de un Code Snippet muy simple. Su funci&amp;oacute;n es crear un comentario &amp;#39;TODO&amp;#39; en nuestro c&amp;oacute;digo:&lt;/p&gt;
&lt;p&gt;&amp;lt;CodeSnippets xmlns=&amp;quot;http://schemas.microsoft.com/VisualStudio/2008/CodeSnippet&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;CodeSnippet Format=&amp;quot;1.0.0&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Header&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;lt;Title&amp;gt;TODO&amp;lt;/Title&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;lt;Shortcut&amp;gt;TODO_CodeSnippet&amp;lt;/Shortcut&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;lt;Description&amp;gt;Code snippet para insertar comentario TODO&amp;lt;/Description&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;lt;Author&amp;gt;Dani Puntos&amp;lt;/Author&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Header&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Snippet&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;lt;Declarations&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;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Literal&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ID&amp;gt;commenttype&amp;lt;/ID&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ToolTip&amp;gt;Comentario a insertar.&amp;lt;/ToolTip&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Default&amp;gt;Tarea por realizar&amp;lt;/Default&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;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Literal&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;lt;/Declarations&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;lt;Code Language=&amp;quot;CSharp&amp;quot;&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;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[//TODO: $commenttype$]]&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;lt;/Code&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Snippet&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/CodeSnippet&amp;gt;&lt;br /&gt;&amp;lt;/CodeSnippets&amp;gt;&lt;/p&gt;
&lt;p&gt;Como se ve, hay un primer bloque llamado &amp;#39;&lt;em&gt;Header&lt;/em&gt;&amp;#39; y un segundo bloque llamado &amp;#39;&lt;em&gt;Snippet&lt;/em&gt;&amp;#39;. El &amp;#39;&lt;em&gt;Header&lt;/em&gt;&amp;#39; se utiliza para introducir el nombre del Code Snippet, el autor, una descripci&amp;oacute;n de su funci&amp;oacute;n, etc.&lt;br /&gt;El bloque &amp;#39;&lt;em&gt;Snippet&lt;/em&gt;&amp;#39; se utiliza para insertar los elementos modificables, en este caso el campo &amp;#39;&lt;em&gt;commenttype&lt;/em&gt;&amp;#39; y tambi&amp;eacute;n el c&amp;oacute;digo que aparece de forma no parametrizable.&lt;/p&gt;
&lt;p&gt;Se puede hacer una comparaci&amp;oacute;n del XML anterior con las siguientes capturas para ver como corresponde cada uno de los elementos del fichero durante su uso:&lt;/p&gt;
&lt;p&gt;&lt;img height="239" width="487" src="http://lonetcamp.com/Community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/danipuntos.CodeSnippets/codesnippet4.JPG" alt="TODO Code Snippet" style="vertical-align:middle;border:1px solid black;" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="86" width="277" src="http://lonetcamp.com/Community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/danipuntos.CodeSnippets/codesnippet5.JPG" alt="TODO Code Snippet" style="vertical-align:middle;border:1px solid black;" /&gt;&lt;/p&gt;
&lt;p&gt;Para importar a &lt;strong&gt;Visual Studio&lt;/strong&gt; alg&amp;uacute;n Code Snippet que hayamos creado, lo podemos hacer a trav&amp;eacute;s del gestor. Otra manera r&amp;aacute;pida de hacerlo es grabar el fichero &amp;#39;&lt;em&gt;.snippet&lt;/em&gt;&amp;#39; a la carpeta:&lt;/p&gt;
&lt;p&gt;&amp;#39;..\Mis documentos\Visual Studio 2008\Code Snippets\Visual C#\My Code Snippets&amp;#39;&lt;/p&gt;
&lt;p&gt;Evidentemente la ruta cambiar&amp;aacute; dependiendo del idioma y versi&amp;oacute;n de nuestro &lt;strong&gt;Visual Studio&lt;/strong&gt; y tambi&amp;eacute;n del lenguage en el que hemos creado el Code Snippet.&lt;/p&gt;
&lt;p&gt;Cabe decir que aun siendo un Code Snippet muy sencillo, es extramadamente pr&amp;aacute;ctico. El uso de &amp;#39;TODO&amp;#39; es una manera muy ordenada de marcar los componentes que hay que revisar o terminar de implementar en nuestro c&amp;oacute;digo. Adem&amp;aacute;s, &lt;strong&gt;Visual Studio&lt;/strong&gt; permite listar a trav&amp;eacute;s de la &lt;strong&gt;Task List&lt;/strong&gt;&amp;nbsp;todos estos elementos de tal manera que siempre puedes acceder a ellos sin que se queden en el olvido:&lt;/p&gt;
&lt;p&gt;&lt;img height="181" width="523" src="http://lonetcamp.com/Community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/danipuntos.CodeSnippets/codesnippet6.JPG" alt="TODO Task List" style="vertical-align:middle;border:1px solid black;" /&gt;&lt;/p&gt;
&lt;p&gt;Pues dejo a disposci&amp;oacute;n este peque&amp;ntilde;o Code Snippet para descargar &lt;a target="_blank" href="http://lonetcamp.com/Community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/danipuntos.CodeSnippets/TODO.snippet" title="TODO Code Snippet"&gt;aqu&amp;iacute;&lt;/a&gt;. Y si alguien crea alguno y tambi&amp;eacute;n lo quiere compartir, adelante! &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://lonetcamp.com/Community/aggbug.aspx?PostID=1234" width="1" height="1"&gt;</description><category domain="http://lonetcamp.com/Community/blogs/danipuntos/archive/tags/.NET/default.aspx">.NET</category><category domain="http://lonetcamp.com/Community/blogs/danipuntos/archive/tags/c_2300_/default.aspx">c#</category></item><item><title>Code Snippets</title><link>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/10/26/los-code-snippets.aspx</link><pubDate>Mon, 26 Oct 2009 08:44:00 GMT</pubDate><guid isPermaLink="false">11922fa7-1e1e-4ca4-8424-35c7d2f61ea8:1229</guid><dc:creator>Dani PuntosNET</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lonetcamp.com/Community/blogs/danipuntos/rsscomments.aspx?PostID=1229</wfw:commentRss><comments>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/10/26/los-code-snippets.aspx#comments</comments><description>&lt;p&gt;Los Code Snippets, o &lt;em&gt;fragmentos de c&amp;oacute;digo&lt;/em&gt;, son unas herramientas muy potentes destinadas a mejorar nuestra productividad utilizando &lt;strong&gt;Visual Studio&lt;/strong&gt;.&lt;br /&gt;Tal como indica su nombre, son porciones de c&amp;oacute;digo que se pueden generar con poco m&amp;aacute;s de un solo click. Resultan muy efectivas cuando tenemos que repetir c&amp;oacute;digo con frecuencia (por ejemplo en la definici&amp;oacute;n cl&amp;aacute;sica de una propiedad get/set o en la estructuraci&amp;oacute;n de un try/catch/finally).&lt;br /&gt;&lt;strong&gt;Visual Sutdio&lt;/strong&gt; incorpora gran cantidad de code snippets muy interesantes. Pero realmente su potencial radica en que podemos crear nuestros propios fragmentos de c&amp;oacute;digo. De esta manera podemos &amp;#39;encapsular&amp;#39; partes de c&amp;oacute;digo que debamos utilizar con frecuencia y pegarlas en nuestras clases r&amp;aacute;pidamente.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration:underline;"&gt;Modo de uso&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Desde &lt;strong&gt;Visual Studio 2005&lt;/strong&gt; que ya se incorporan los code snippets. Su utilizaci&amp;oacute;n es muy sencilla y se respalda en el propio IntelliSense. Para ver un ejemplo r&amp;aacute;pido podemos definir un m&amp;eacute;todo cualquiera. Dentro de este m&amp;eacute;todo si empezamos a escribir veremos que el IntelliSense se activa mostrando sugerencias. Si nos fijamos en la lista propuesta, veremos que hay unos items que tienen un icono en forma de hoja de texto, todos ellos son Code Snippets.&lt;/p&gt;
&lt;p&gt;Buscaremos uno con nombre &amp;#39;&lt;em&gt;foreach&lt;/em&gt;&amp;#39;:&lt;/p&gt;
&lt;p&gt;&lt;img height="228" width="437" src="http://lonetcamp.com/Community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/danipuntos.CodeSnippets/codesnippet1.JPG" alt="CodeSnippet" style="vertical-align:middle;border:1px solid black;" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Una vez seleccionado en el men&amp;uacute;, pulsaremos dos veces TAB:&lt;/p&gt;
&lt;p&gt;&lt;img height="123" width="355" src="http://lonetcamp.com/Community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/danipuntos.CodeSnippets/codesnippet2.JPG" alt="Code Snippet" style="vertical-align:middle;border:1px solid black;" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Y por arte de magia ya tenemos una iteraci&amp;oacute;n foreach creada. Podemos movernos por los elementos modificables (en verde) pulsando TAB. Adem&amp;aacute;s, situando el rat&amp;oacute;n encima de cualquiera de ellos, nos mostrar&amp;aacute; informaci&amp;oacute;n sobre el elemento en concreto.&lt;/p&gt;
&lt;p&gt;Este ejemplo es muy sencillo, pero os animo a que probeis otros code snippets que ofrece &lt;strong&gt;Visual Studio&lt;/strong&gt; &lt;em&gt;out of the box&lt;/em&gt;. Destaco algunos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ctor : crea automaticamente el constructor de la clase en la que nos encontramos.&lt;/li&gt;
&lt;li&gt;cw : el cl&amp;aacute;sico Console.WriteLine().&lt;/li&gt;
&lt;li&gt;switch : crea la estructura switch/case. Lo mejor de todo es que si le asignas alguno de tus enumerados, automaticamente te crea todos los &amp;#39;case&amp;#39; necesarios.&lt;/li&gt;
&lt;li&gt;try : uno de mis favoritos. Pruebalo y me cuentas!&lt;/li&gt;
&lt;li&gt;exception : crea toda la definici&amp;oacute;n de una class custom exception siguiendo las guidelines de la MSDN.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En el siguiente post explicar&amp;eacute; como crear nuestros propios code snippets.&lt;/p&gt;
&lt;p&gt;Nos vemos!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://lonetcamp.com/Community/aggbug.aspx?PostID=1229" width="1" height="1"&gt;</description><category domain="http://lonetcamp.com/Community/blogs/danipuntos/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Conclusiones después del CodeCamp</title><link>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/10/20/conclusiones-despu-233-s-del-codecamp.aspx</link><pubDate>Tue, 20 Oct 2009 18:07:00 GMT</pubDate><guid isPermaLink="false">11922fa7-1e1e-4ca4-8424-35c7d2f61ea8:1210</guid><dc:creator>Dani PuntosNET</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lonetcamp.com/Community/blogs/danipuntos/rsscomments.aspx?PostID=1210</wfw:commentRss><comments>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/10/20/conclusiones-despu-233-s-del-codecamp.aspx#comments</comments><description>&lt;p&gt;Una vez pasado el torbellino del CodeCamp, me propongo a comentar&amp;nbsp;a nivel personal todo este fin de semana tan inolvidable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A FAVOR:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- La genial iniciativa de realizar el CodeCamp este a&amp;ntilde;o en Tarragona.&lt;/p&gt;
&lt;p&gt;- Reencontrarme con grandes amigos (y tomar cervezas con ellos).&lt;/p&gt;
&lt;p&gt;- La enorme participaci&amp;oacute;n&amp;nbsp;y el buen rollo entre todos los asistentes.&lt;/p&gt;
&lt;p&gt;- El impecable trabajo de organizaci&amp;oacute;n&amp;nbsp;por&amp;nbsp;parte de la gente de los grupos de usuarios de todo el pa&amp;iacute;s.&lt;/p&gt;
&lt;p&gt;- Tomar cervezas con grandes colegas, lo he dicho ya?&lt;/p&gt;
&lt;p&gt;- El hotelazo, sus instalaciones y el increible precio por pasar un fin de semana completo.&lt;/p&gt;
&lt;p&gt;- La posibilidad de charlar&amp;nbsp;libremente con los speakers&amp;nbsp;y disfrutar de unas sesiones de alt&amp;iacute;simo nivel.&lt;/p&gt;
&lt;p&gt;-&amp;nbsp;Las partidas&amp;nbsp;al Guitar Hero, con sus correspondientes cervezas.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;EN CONTRA:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- Me fulminaron al Guitar&amp;nbsp;Hero en la primera partida!!!&amp;nbsp;unbelievable!&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://lonetcamp.com/Community/aggbug.aspx?PostID=1210" width="1" height="1"&gt;</description><category domain="http://lonetcamp.com/Community/blogs/danipuntos/archive/tags/.NET/default.aspx">.NET</category><category domain="http://lonetcamp.com/Community/blogs/danipuntos/archive/tags/eventos/default.aspx">eventos</category></item><item><title>Finalista en el concurso Imagine Mobile</title><link>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/09/29/finalista-en-el-concurso-imagine-mobile.aspx</link><pubDate>Tue, 29 Sep 2009 08:02:00 GMT</pubDate><guid isPermaLink="false">11922fa7-1e1e-4ca4-8424-35c7d2f61ea8:1170</guid><dc:creator>Dani PuntosNET</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lonetcamp.com/Community/blogs/danipuntos/rsscomments.aspx?PostID=1170</wfw:commentRss><comments>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/09/29/finalista-en-el-concurso-imagine-mobile.aspx#comments</comments><description>&lt;p&gt;Soy finalista! &lt;a target="_blank" href="http://www.mobilenug.com/imaginemobile/default.aspx" title="Imagine Mobile"&gt;Imagine Mobile&lt;/a&gt; es un concurso que naci&amp;oacute; como iniciativa de la gente de &lt;a target="_blank" href="http://www.mobilenug.com/default.aspx" title="MobileNug"&gt;MobileNug&lt;/a&gt;, el principal grupo de usuarios de desarrollo .NET para telefon&amp;iacute;a m&amp;oacute;vil.&lt;br /&gt;Las bases del concurso se basaban en desarrollar una aplicaci&amp;oacute;n para Windows Mobile. &lt;br /&gt;A pesar de existir una serie de categor&amp;iacute;as, la tem&amp;aacute;tica era libre, y desde un principio enfoqu&amp;eacute; mi idea de aplicaci&amp;oacute;n al mercado empresarial.&lt;br /&gt;Este verano me he pasado muchas muchas much&amp;iacute;simas horas desarrollando la aplicaci&amp;oacute;n y despu&amp;eacute;s de mucho esfuerzo me ha sido comunicado que mi aplicaci&amp;oacute;n es una de las finalistas del concurso! Adem&amp;aacute;s, hoy mismo me acaban de confirmar que ya puedo subir la aplicaci&amp;oacute;n al portal &lt;a target="_blank" href="http://www.microsoft.com/windowsmobile/catalog/cataloghome.aspx" title="MarketPlace"&gt;MarketPlace de Windows Mobile&lt;/a&gt;, genial!!&lt;/p&gt;
&lt;p&gt;La entrega de premios se realizar&amp;aacute; a mediados de Octubre en el &lt;span style="text-decoration:underline;"&gt;Microsoft Innovation Center en Movilidad&lt;/span&gt;, situado en Valladolid. Y como se puede observar,&amp;nbsp;la cosa&amp;nbsp;va muy en serio:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Premios&lt;br /&gt;Categor&amp;iacute;a general: Aplicaciones m&amp;aacute;s innovadoras &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;-&amp;nbsp; 1er premio: 10.000 euros &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;-&amp;nbsp; 2&amp;ordm; Premio: 6.000 euros &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;-&amp;nbsp; 3er Premio: 3.000 euros &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Adem&amp;aacute;s, se otorgar&amp;aacute;n otros 17 premios formados por una Xbox 360 con un pack de juegos, y diferentes herramientas de desarrollo de Microsoft.&amp;nbsp; &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;- Categor&amp;iacute;a especial Vodafone a la mejor aplicaci&amp;oacute;n para la experiencia del usuario profesional, dotada con 7.000 euros. Vodafone adem&amp;aacute;s comercializar&amp;aacute; conjuntamente las aplicaciones para profesionales premiadas. &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;- Categor&amp;iacute;a especial Sony Ericsson a la aplicaci&amp;oacute;n mejor integrada con los paneles del terminal Xperia X1, dotada con 7.000 euros &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;nbsp;Adem&amp;aacute;s, las siguientes 20 aplicaciones elegidas ser&amp;aacute;n reconocidas con un obsequio.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Pronto espero poder compartir en el blog todos los detalles del desarrollo de la aplicaci&amp;oacute;n.&lt;br /&gt;Saludos!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://lonetcamp.com/Community/aggbug.aspx?PostID=1170" width="1" height="1"&gt;</description><category domain="http://lonetcamp.com/Community/blogs/danipuntos/archive/tags/.NET/default.aspx">.NET</category><category domain="http://lonetcamp.com/Community/blogs/danipuntos/archive/tags/Windows+mobile/default.aspx">Windows mobile</category></item><item><title>CodeCamp 2009</title><link>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/09/21/codecamp-2009.aspx</link><pubDate>Mon, 21 Sep 2009 17:20:00 GMT</pubDate><guid isPermaLink="false">11922fa7-1e1e-4ca4-8424-35c7d2f61ea8:1157</guid><dc:creator>Dani PuntosNET</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lonetcamp.com/Community/blogs/danipuntos/rsscomments.aspx?PostID=1157</wfw:commentRss><comments>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/09/21/codecamp-2009.aspx#comments</comments><description>&lt;p&gt;La que se va a liar! el CodeCamp 2009 est&amp;aacute; la vuelta de la esquina! No puedes faltar, yo no me lo pierdo!&lt;/p&gt;
&lt;p&gt;Adem&amp;aacute;s, esta vez se celebrar&amp;aacute; aqu&amp;iacute; al lado! ni m&amp;aacute;s ni menos que en &lt;strong&gt;Tarragona!!&lt;/strong&gt; (bueno, cerca).&lt;/p&gt;
&lt;p&gt;Desde aqu&amp;iacute; quiero animar al compi &lt;a target="_blank" href="http://lonetcamp.com/Community/blogs/marckys/default.aspx" title="Marckys"&gt;Marc&lt;/a&gt;, que lo est&amp;aacute; organizando todo y eso tiene mucho m&amp;eacute;rito. Pues nada, recordad que el CodeCamp se celebrar&amp;aacute; el fin de semana del 17-18 de Octubre, estais todos invitados y adem&amp;aacute;s las charlas que se est&amp;aacute;n preparando ser&amp;aacute;n espectaculares! que digo espectaculares, ser&amp;aacute;n LEGENDARIAS!&lt;/p&gt;
&lt;p&gt;Nos vemos en el &lt;a target="_blank" href="http://codecamp.es/" title="CodeCamp 2009"&gt;CodeCamp 2009&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://codecamp.es/" title="CodeCamp 2009"&gt;&lt;img height="66" width="160" src="http://lonetcamp.com/Community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/danipuntos/Banner5.png" alt="CodeCamp 2009" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://lonetcamp.com/Community/aggbug.aspx?PostID=1157" width="1" height="1"&gt;</description><category domain="http://lonetcamp.com/Community/blogs/danipuntos/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Sigo con mis estrellas</title><link>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/07/20/sigo-con-mis-estrellas.aspx</link><pubDate>Mon, 20 Jul 2009 07:18:00 GMT</pubDate><guid isPermaLink="false">11922fa7-1e1e-4ca4-8424-35c7d2f61ea8:1033</guid><dc:creator>Dani PuntosNET</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lonetcamp.com/Community/blogs/danipuntos/rsscomments.aspx?PostID=1033</wfw:commentRss><comments>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/07/20/sigo-con-mis-estrellas.aspx#comments</comments><description>&lt;p&gt;Ahora que recientemente he cambiado de proyecto, he podido aprovechar el par&amp;oacute;n (aproximadamente 2 minutos xD) para actualizar dos temas que ten&amp;iacute;a pendientes desde hac&amp;iacute;a mucho tiempo. Uno era actualizar el blog, y ya lo estoy haciendo. El segundo tema es sobre mi &amp;quot;carrera&amp;quot; en el programa de formaci&amp;oacute;n &amp;quot;Desarrollador 5 estrellas&amp;quot; de Microsoft, del que ya he hablado &lt;a href="http://lonetcamp.com/Community/blogs/danipuntos/archive/tags/DCE/default.aspx" title="Desarrollador 5 estrellas"&gt;anteriormente&lt;/a&gt; en el blog. He aprobado la &lt;strong&gt;estrella opcional de Desarrollo con Sharepoint!&lt;/strong&gt; En primer lugar me he descargado el material de formaci&amp;oacute;n, y me ha ido muy bi&amp;eacute;n para refrescar mis conocimientos sobre el tan amado/odiado MOSS 2007. La verdad es que es un producto sorprendente, y a pesar de haberlo sufrido bastante, no me desagradar&amp;iacute;a caer otra vez en alg&amp;uacute;n proyecto de Sharepoint, y si es de desarrollo pues ser&amp;iacute;a incluso m&amp;aacute;s interesante.&lt;/p&gt;
&lt;p&gt;Pues nada, sigo animando a la gente a que aproveche toda esta formaci&amp;oacute;n &lt;strong&gt;totalmente gratuita&lt;/strong&gt; y que abarca tantos temas : asp.net, winforms, web servcies, seguridad, windows mobile, sharepoint, arquitectura...vamossss!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://lonetcamp.com/Community/aggbug.aspx?PostID=1033" width="1" height="1"&gt;</description><category domain="http://lonetcamp.com/Community/blogs/danipuntos/archive/tags/DCE/default.aspx">DCE</category></item><item><title>Estimaciones en proyectos de programación</title><link>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/05/07/estimaciones-en-proyectos-de-programaci-243-n.aspx</link><pubDate>Thu, 07 May 2009 21:10:00 GMT</pubDate><guid isPermaLink="false">11922fa7-1e1e-4ca4-8424-35c7d2f61ea8:956</guid><dc:creator>Dani PuntosNET</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lonetcamp.com/Community/blogs/danipuntos/rsscomments.aspx?PostID=956</wfw:commentRss><comments>http://lonetcamp.com/Community/blogs/danipuntos/archive/2009/05/07/estimaciones-en-proyectos-de-programaci-243-n.aspx#comments</comments><description>&lt;p&gt;Cosas a tener en cuenta en las estimaciones de proyectos (algunas aprendidas recientemente)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los deploys siempre dan problemas, a&amp;ntilde;adelos como un factor de riesgo en la estimaci&amp;oacute;n.&lt;/li&gt;
&lt;li&gt;En caso de duda en alguna tarea, multiplica tranquilamente el tiempo estimado por un 40% o un 50%.&lt;/li&gt;
&lt;li&gt;La arquitectura perfecta de software no existe. La planificaci&amp;oacute;n perfecta de un proyecto tampoco. Por tanto, la estimaci&amp;oacute;n perfecta no iba a ser menos.&lt;/li&gt;
&lt;li&gt;No dividas las tareas t&amp;eacute;cnicas en exceso. Cada tarea conlleva una gesti&amp;oacute;n que en determinados casos puede llegar a ser m&amp;aacute;s costosa que la propia tarea.&lt;/li&gt;
&lt;li&gt;Calcula el tiempo de una tarea t&amp;eacute;cnica haciendo la media entre lo que tardar&amp;iacute;a un programador junior y lo que tardar&amp;iacute;a un programador senior. Redondea el tiempo hacia el junior.&lt;/li&gt;
&lt;li&gt;No calcules por horas. Los programadores no trabajamos por horas, trabajamos por tercios de d&amp;iacute;a.&lt;br /&gt;1er tercio : del caf&amp;eacute; de primera hora hasta el caf&amp;eacute; de media ma&amp;ntilde;ana.&lt;br /&gt;2o tercio&amp;nbsp; : del caf&amp;eacute; de media ma&amp;ntilde;ana hasta la hora de comer.&lt;br /&gt;3er tercio : despu&amp;eacute;s de comer hasta la hora de irse a casa.&lt;/li&gt;
&lt;li&gt;Una vez termines la estimaci&amp;oacute;n, antes de entregarla s&amp;uacute;male un peque&amp;ntilde;o %. Cr&amp;eacute;eme, lo vas a necesitar.&lt;/li&gt;
&lt;li&gt;Y finalmente, por regla general, cuando realizes estimaciones, peca siempre por exceso de horas. El comercial y/o el cliente ya se encargaran de recortarlo, no te preocupes por eso.&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://lonetcamp.com/Community/aggbug.aspx?PostID=956" width="1" height="1"&gt;</description></item><item><title>Por qué existen y cómo deben ser los entornos de PRE-Producción</title><link>http://lonetcamp.com/Community/blogs/danipuntos/archive/2008/12/29/por-qu-233-existen-y-c-243-mo-deben-ser-los-entornos-de-pre-producci-243-n.aspx</link><pubDate>Mon, 29 Dec 2008 15:57:00 GMT</pubDate><guid isPermaLink="false">11922fa7-1e1e-4ca4-8424-35c7d2f61ea8:783</guid><dc:creator>Dani PuntosNET</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://lonetcamp.com/Community/blogs/danipuntos/rsscomments.aspx?PostID=783</wfw:commentRss><comments>http://lonetcamp.com/Community/blogs/danipuntos/archive/2008/12/29/por-qu-233-existen-y-c-243-mo-deben-ser-los-entornos-de-pre-producci-243-n.aspx#comments</comments><description>&lt;p&gt;En el mundo de la inform&amp;aacute;tica, se entiende &amp;#39;&lt;em&gt;Entorno de Producci&amp;oacute;n&lt;/em&gt;&amp;#39; como aquel conjunto de servidores funcionales y totalmente operativos que ofrecen los servicios necesarios para que el usuario pueda ejercer su labor diaria.&lt;br /&gt;Estas m&amp;aacute;quinas deben estar configuradas en modo de alta disponibilidad y deben gozar de restricciones y fuertes pol&amp;iacute;ticas de seguridad. Cualquier fallo en alguno de estos servidores es cr&amp;iacute;tico, ya que paralizar&amp;iacute;a la rutina de los empleados que trabajan en ese entorno (pueden ser miles de personas!) o incluso peor, pueden provocarse p&amp;eacute;rdidas de datos sumamente importantes para la organizaci&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;Por esta raz&amp;oacute;n, cualquier desarrollo de software que se deba implantar en un entorno de producci&amp;oacute;n, no puede instalarse tan alegremente sin haber pasado antes por una serie de validaciones que garantizen el &amp;eacute;xito de la instalaci&amp;oacute;n. Es aqu&amp;iacute; donde aparecen los &amp;#39;Entornos de PRE-Producci&amp;oacute;n&amp;#39;. Es en este entorno donde se realizar&amp;aacute;n las instalaciones de software (ya sean evolutivos, desarrollos nuevos, parches etc.). Estos entornos no generan riesgo alguno, ya que el usuario no trabaja en ellos, &amp;#39;simplemente&amp;#39; se utilizan a modo de prueba. Si el resultado es exitoso y el entorno sigue funcionando perfectamente con la nueva integraci&amp;oacute;n de software, entonces es cuando se repiten los mismos pasos en el entorno de Producci&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;Si la implantaci&amp;oacute;n del software falla, o el entorno de PRE-Producci&amp;oacute;n se vuelve inestable, debemos volver al punto de partida y buscar el error. Nunca, bajo ning&amp;uacute;n concepto se deben replicar los mismo pasos en el entorno de Producci&amp;oacute;n, ya que el fracaso esta pr&amp;aacute;cticamente garantizado. Teniendo en cuenta esto, se puede decir que el entorno de PRE-Producci&amp;oacute;n da un acercamiento del &amp;eacute;xito o desastre que se puede generar a partir de una mala implantaci&amp;oacute;n (o una buena implantaci&amp;oacute;n de un mal software).&lt;/p&gt;
&lt;p&gt;Para que el entorno de PRE-Producci&amp;oacute;n sea realmente &amp;uacute;til debe cumplir un &amp;uacute;nico requisito:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- El entorno de PRE-Producci&amp;oacute;n debe ser id&amp;eacute;ntico al entorno de Producci&amp;oacute;n.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Y cuando digo &amp;#39;id&amp;eacute;ntico&amp;#39; me refiero a &amp;#39;id&amp;eacute;ntico&amp;#39;. Es decir, las mismas m&amp;aacute;quinas, la misma configuraci&amp;oacute;n de red, la misma topolog&amp;iacute;a de servidores, los mismos sistemas operativos, con sus mismas versiones, las mismas CPU&amp;#39;s, las mismas cantidades de memoria RAM, el mismo software, incluso la misma (o lo m&amp;aacute;s parecida posible) informaci&amp;oacute;n en la base de datos. TODO, y repito TODO, debe ser igual.&lt;br /&gt;&lt;strong&gt;SI LOS ENTORNOS SON DIFERENTES, NO SE PUEDE GARANTIZAR QUE UNA IMPLANTACI&amp;Oacute;N DE SOFTWARE EN PRODUCCI&amp;Oacute;N SEA IGUAL DE EXITOSA QUE EN PRE-PRODUCCI&amp;Oacute;N&lt;/strong&gt;. Esa afirmaci&amp;oacute;n, creo, es bastante evidente.&lt;/p&gt;
&lt;p&gt;Por desgracia, con lo que cuesta un entorno de Producci&amp;oacute;n (granja de servidores + licencias + mantenimiento), pocas empresas se pueden permitir duplicar todos estos recursos para disponer de un entorno de PRE-Producci&amp;oacute;n. Y aqu&amp;iacute; es donde aparecen las chapuzas. Es muy com&amp;uacute;n encontrar entornos de PRE-Producci&amp;oacute;n que se parecen a los de Producci&amp;oacute;n como un huevo se parece a una casta&amp;ntilde;a. La mayor&amp;iacute;a de entornos de PRE-Producci&amp;oacute;n son m&amp;aacute;quinas llenas de polvo rescatadas del caj&amp;oacute;n de objetos perdidos. M&amp;aacute;quinas que no se utilizan o tienen que ser pr&amp;oacute;ximamente sustituidas y bueno, &amp;quot;para PRE, ya sirven&amp;quot;. Antes de empezar a hacer inventos que pueden provocar un desastre, es mejor optar por una buena pr&amp;aacute;ctica como por ejemplo &lt;span style="text-decoration:underline;"&gt;virtualizar el entorno&lt;/span&gt;, de esta manera tenemos una copia exacta del entorno real de Producci&amp;oacute;n. Los costes para esta soluci&amp;oacute;n son realmente m&amp;iacute;nimos (aun que un entorno virtualizado no garantiza tampoco el 100% de efectividad, ya que como he comentado, los dos entornos deben ser completamente iguales, y en este caso uno es &amp;#39;real&amp;#39; y el otro es &amp;#39;virtual&amp;#39;).&lt;/p&gt;
&lt;p&gt;En cualquier caso, si no se dispone de un entorno de PRE-Producci&amp;oacute;n adecuado, es nuestra obligaci&amp;oacute;n informar al cliente que cualquier implantaci&amp;oacute;n con &amp;eacute;xito en PRE, no garantiza para nada que vaya a ser tambi&amp;eacute;n correcta en PRO. Es decir, si una implantaci&amp;oacute;n funciona en PRE y despu&amp;eacute;s falla en PRO, no podemos (NI DEBEMOS) hacernos responsables del desastre que se pueda ocasionar.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://lonetcamp.com/Community/aggbug.aspx?PostID=783" width="1" height="1"&gt;</description></item></channel></rss>