<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3608671955680070836</id><updated>2024-09-11T03:47:25.428+02:00</updated><category term="c#"/><category term="ASP .NET MVC 3"/><category term="Documentación"/><category term="Tips"/><category term="Visual Studio"/><category term="Visual Studio 2010"/><category term="Visual Studio 2012"/><category term="html"/><category term="ASP .NET MVC4"/><category term="JQUERY"/><category term="css"/><category term="frontEnd"/><category term="off-topic"/><category term="Descargas"/><category term="Editor"/><category term="Error"/><category term="Instalación"/><category term="MSDN"/><category term="MsExpertos"/><category term="System.IO"/><category term="TFS"/><category term="html5"/><category term="javascript"/><category term="js"/><category term="notificaciones"/><category term=".net"/><category term="Android"/><category term="Cloud"/><category term="Encoding"/><category term="GhostDoc"/><category term="IOS"/><category term="JSON"/><category term="Kendo"/><category term="MVC 4"/><category term="Plugins"/><category term="Render"/><category term="Shelve"/><category term="Sublime Text"/><category term="Team Foundation Server"/><category term="Templates"/><category term="UML"/><category term="Unshelve"/><category term="Windows 8"/><category term="Windows Azure"/><category term="Windows Server 2012"/><category term="apis"/><category term="css3"/><category term="log4net"/><category term="nbuilder"/><category term="polyfills"/><title type='text'>C# Rules</title><subtitle type='html'>Mi aventura dentro del mundo de la programación.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default?start-index=26&amp;max-results=25'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-3063313363421496830</id><published>2014-11-24T14:50:00.000+01:00</published><updated>2014-12-01T13:33:55.831+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ASP .NET MVC 3"/><category scheme="http://www.blogger.com/atom/ns#" term="ASP .NET MVC4"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="Render"/><category scheme="http://www.blogger.com/atom/ns#" term="Tips"/><title type='text'>Usando el RenderSection en MVC, aprendiendo a colocar el código en su lugar</title><content type='html'>&lt;script&gt;
SyntaxHighlighter.defaults[&#39;gutter&#39;] = false;
SyntaxHighlighter.defaults[&#39;smart-tabs&#39;] = false;
&lt;/script&gt;
Una buena práctica al diseñar una página web para obtener un buen rendimiento en la carga de esta, es cargar los archivos .css al inicio de la página y los scripts al final de esta. Lamentablemente hoy en día sigue habiendo muchas páginas que al renderizarse terminan mostrando los estilos o scripts en muchas partes de la página generando un pobre rendimiento o muchas veces rompiendo código. Normalmente esto sucede al usar vistas parciales que contienen sus propios scripts y al renderizarse en la página que las contiene, estos scripts son renderizados en la posición de su vista parcial.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEik64PqYW91NhY2eGGKLApbsyvtnWCVjwjOgN9t1odXlSdb84S8y7z7Ifmea-m9OBvF5vtXFK_d75_VytpjDFG4RqZIJqQHXl17dKWu_uSd2I5E_p-EIAyTUrtRGKxI2KKZvaaUx0itNDk/s1600/pag1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEik64PqYW91NhY2eGGKLApbsyvtnWCVjwjOgN9t1odXlSdb84S8y7z7Ifmea-m9OBvF5vtXFK_d75_VytpjDFG4RqZIJqQHXl17dKWu_uSd2I5E_p-EIAyTUrtRGKxI2KKZvaaUx0itNDk/s1600/pag1.png&quot; height=&quot;320&quot; width=&quot;305&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;i&gt;Está claro que hay casos en el que es necesario cargar ciertos scripts al inicio de la página cuando queremos tener cierta funcionalidad. Un ejemplo claro sería cuando quieres implementar&amp;nbsp;&lt;a href=&quot;http://es.wikipedia.org/wiki/Asynchronous_module_definition&quot; target=&quot;_blank&quot;&gt;AMD&lt;/a&gt;&amp;nbsp;usando &lt;a href=&quot;http://require.js/&quot;&gt;Require.js&lt;/a&gt;&amp;nbsp;y en este caso es necesario declarar Jquery al inicio de la página para que funcione.&lt;/i&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Veamos un ejemplo:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Master Page:&lt;/b&gt;
&lt;br /&gt;
&lt;script class=&quot;brush: html&quot; type=&quot;syntaxhighlighter&quot;&gt;&lt;![CDATA[
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;meta charset=&quot;utf-8&quot; /&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width&quot; /&gt;
    &lt;title&gt;@ViewBag.Title&lt;/title&gt;
    @Styles.Render(&quot;~/Content/css&quot;)
    @Scripts.Render(&quot;~/bundles/modernizr&quot;)
&lt;/head&gt;
&lt;body&gt;
    @RenderBody()
    @Scripts.Render(&quot;~/bundles/jquery&quot;)
    @RenderSection(&quot;scripts&quot;, required: false)
&lt;/body&gt;
&lt;/html&gt;
]]&gt;&lt;/script&gt;

&lt;b&gt;Partial Page:&lt;/b&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: html&quot;&gt; 
@{
    ViewBag.Title = &quot;Index&quot;;
    Layout = &quot;~/Views/Shared/_Layout.cshtml&quot;;
}

&lt;h2&gt;
Index&lt;/h2&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
    $(function () {
        alert(&#39;hola&#39;);
    });
&lt;/script&gt;

&lt;/pre&gt;
&lt;br /&gt;
En este código mostramos una página maestra y una pagina parcial. En la página maestra en la línea 12 se referencia al bundle que contiene la librería de jquery, y en la página parcial en la línea 9 se utiliza jquery para lanzar un alert cuando la página este lista. Si ejecutamos debería &quot;en teoría&quot; mostrarse el alert de hola cuando se halla cargado la página, pero sucede esto:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIE1sSM87hRmAESXDYUACaN0Sr6tCwtDPvXOPnzUyBQL2naic287vSZ6XFo3cOpqiH32B3cILZNCd-t7oStQ_Cg7wsHetza8tUHw89zHZsCLNJI8AC5TjB1Tw3GpOIwVyGrePtJQ83Yro/s1600/2014-11-24+15_53_10-DemoMVC+(Debugging)%2B-%2BMicrosoft%2BVisual%2BStudio%2B(Administrator).png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIE1sSM87hRmAESXDYUACaN0Sr6tCwtDPvXOPnzUyBQL2naic287vSZ6XFo3cOpqiH32B3cILZNCd-t7oStQ_Cg7wsHetza8tUHw89zHZsCLNJI8AC5TjB1Tw3GpOIwVyGrePtJQ83Yro/s1600/2014-11-24+15_53_10-DemoMVC+(Debugging)%2B-%2BMicrosoft%2BVisual%2BStudio%2B(Administrator).png&quot; height=&quot;281&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Y se le damos a continue vemos el código total de la página renderizada&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_cTn_yZ7GEDcZELMzflabUUiu5KauTILPnUx4nHNMbCUfHq4ccQdFJC9F3OGVjzeYL_kCkL7D0MhoASNn23u3ecQr5Njo3d0PKDmRNFKfHdgrumVKur3aipYKnavnF9-esFfyTUEdP9g/s1600/2014-11-24+15_54_12-DemoMVC+(Running)%2B-%2BMicrosoft%2BVisual%2BStudio%2B(Administrator).png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_cTn_yZ7GEDcZELMzflabUUiu5KauTILPnUx4nHNMbCUfHq4ccQdFJC9F3OGVjzeYL_kCkL7D0MhoASNn23u3ecQr5Njo3d0PKDmRNFKfHdgrumVKur3aipYKnavnF9-esFfyTUEdP9g/s1600/2014-11-24+15_54_12-DemoMVC+(Running)%2B-%2BMicrosoft%2BVisual%2BStudio%2B(Administrator).png&quot; height=&quot;281&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Si nos fijamos en la imagen, el código de la vista parcial es añadido antes del final del código de la página maestra y como en la página parcial se hace uso de jquery, cosa que recién se declara al final de la página maestra, es por eso que obtenemos este error.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
Felizmente ASP .NET MVC nos permite poder ordenar nuestros scripts de nuestra páginas de una manera ordenada.&amp;nbsp;Si vemos nuevamente el código de la página maestra, en la línea 13 encontramos esta línea:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: html&quot;&gt;  @RenderSection(&quot;scripts&quot;, required: false)
&lt;/pre&gt;
&lt;br /&gt;
Esta linea de código hacemos uso de la función &lt;b&gt;RenderSection. &lt;/b&gt;Esta función&amp;nbsp;nos permite mapear nuestros scripts de nuestra páginas parciales en este parte de la página maestra. Esta función tiene dos sobrecargas en las cuales tiene los siguientes parámetros:&lt;br /&gt;
&lt;br /&gt;
- name: Este será el nombre de la sección con el cual vamos a identificar esta parte de la página que contendrá los scripts que le pasemos.&lt;br /&gt;
- required: Es un booleano que sirve para indicar si la sección es requerida o no.&lt;br /&gt;
&lt;br /&gt;
De vuelta al problema inicial, necesitamos que el código js de nuestra vista parcial se pinte al final de todo de la página principal. Para eso hacemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: html&quot;&gt;@{
    ViewBag.Title = &quot;Index&quot;;
    Layout = &quot;~/Views/Shared/_Layout.cshtml&quot;;
}

&lt;h2&gt;
Index&lt;/h2&gt;
@section scripts{
    &lt;script type=&quot;text/ecmascript&quot;&gt;
        $(function () {
            alert(&#39;hola&#39;);
        });
    &lt;/script&gt;
}
&lt;/pre&gt;
&lt;br /&gt;
Como podemos ver en el código en la linea 7, se ha añadido &lt;span style=&quot;background-color: yellow;&quot;&gt;@section scripts&lt;/span&gt; donde &lt;b&gt;scripts&lt;/b&gt;&amp;nbsp;es el nombre de la sección que antes había declarado en la página principal. Luego he abierto y cerrado llaves y dentro de esas llaves puse el código js de la página parcial. El resultado es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmSYAcxgA9ONWWHP4siH_ltl5rnRo7HAwjPimZroNv71FsMjnGxqH9bNDKJvIEpzw4KTD61y12nGmyM5Bvbdv39qNAOsXoXRPWDwXTnVUwDcOPlHYrWxNSM65rN_5wIllfEINxTI6YNbY/s1600/2014-11-24+16_32_48-Index+-+Internet+Explorer.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmSYAcxgA9ONWWHP4siH_ltl5rnRo7HAwjPimZroNv71FsMjnGxqH9bNDKJvIEpzw4KTD61y12nGmyM5Bvbdv39qNAOsXoXRPWDwXTnVUwDcOPlHYrWxNSM65rN_5wIllfEINxTI6YNbY/s1600/2014-11-24+16_32_48-Index+-+Internet+Explorer.png&quot; height=&quot;400&quot; width=&quot;350&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Y el html renderizado sería el siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq7wVei5vYz_FdoR8TZgPjCaK-LQ8OjWwgwQNGnNQ7uM-XLDAaWjyjx9epdV57gj5W-27dp6DQM9XY8_tesAuABuvS3T7TlkI3xc2sihRvcbYYEN-S_HDbfY4PuYVJWoKbO2omZEho6NU/s1600/2014-11-24+16_33_34-DemoMVC+(Running)%2B-%2BMicrosoft%2BVisual%2BStudio%2B(Administrator).png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq7wVei5vYz_FdoR8TZgPjCaK-LQ8OjWwgwQNGnNQ7uM-XLDAaWjyjx9epdV57gj5W-27dp6DQM9XY8_tesAuABuvS3T7TlkI3xc2sihRvcbYYEN-S_HDbfY4PuYVJWoKbO2omZEho6NU/s1600/2014-11-24+16_33_34-DemoMVC+(Running)%2B-%2BMicrosoft%2BVisual%2BStudio%2B(Administrator).png&quot; height=&quot;285&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
De esta manera MVC coge todos los section que tengan scripts al costado y este los pinta en la página principal donde halla declarado&amp;nbsp;&lt;span style=&quot;background-color: yellow;&quot;&gt;@RenderSection&lt;/span&gt;&amp;nbsp;con el nombre scripts. Está claro que la página principal u otra página pueda tener varios @RenderSection y @section con diferentes nombres y en la ubicación que quieran. Espero les sea útil. Hasta la próxima :D&lt;br /&gt;
&lt;br /&gt;
&lt;iframe src=&quot;http://rcm-eu.amazon-adsystem.com/e/cm?t=cru-21&amp;o=30&amp;p=48&amp;l=ur1&amp;category=libros&amp;banner=1F6P458J3MCNTVSNX9R2&amp;f=ifr&quot; width=&quot;600&quot; height=&quot;90&quot; scrolling=&quot;no&quot; border=&quot;0&quot; marginwidth=&quot;0&quot; style=&quot;border:none;&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;
</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/3063313363421496830/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2014/11/usando-el-rendersection-en-mvc.html#comment-form' title='13 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/3063313363421496830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/3063313363421496830'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2014/11/usando-el-rendersection-en-mvc.html' title='Usando el RenderSection en MVC, aprendiendo a colocar el código en su lugar'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEik64PqYW91NhY2eGGKLApbsyvtnWCVjwjOgN9t1odXlSdb84S8y7z7Ifmea-m9OBvF5vtXFK_d75_VytpjDFG4RqZIJqQHXl17dKWu_uSd2I5E_p-EIAyTUrtRGKxI2KKZvaaUx0itNDk/s72-c/pag1.png" height="72" width="72"/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-8902964055603921900</id><published>2014-11-23T14:20:00.000+01:00</published><updated>2014-11-23T14:20:05.547+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".net"/><category scheme="http://www.blogger.com/atom/ns#" term="Instalación"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Azure"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Server 2012"/><title type='text'>Windows Azure - Instalación y primeros pasos</title><content type='html'>Hola, hoy vamos a hablar de un tema que tenía pendiente y seguro muchos de ustedes ya habrán escuchado pero nunca se hallan puesto a trastear con esto, hablo de Windows Azure. Como sabrán Windows Azure es la plataforma en la nube que nos proporciona Microsoft para crear y consumir servicios en la nube y tener nuestro negocio en la nube de una manera fácil y escalable. Click &lt;a href=&quot;http://azure.microsoft.com/es-es/overview/what-is-azure/&quot; target=&quot;_blank&quot;&gt;aquí&lt;/a&gt;&amp;nbsp;para más información.&lt;br /&gt;
&lt;br /&gt;
Pero bueno iremos a lo que nos interesa, ¿cómo empezar con esto? ¿cuánto me costará? ¿por que es necesario registrar mi tarjeta de crédito?, muchas preguntas que me hice antes de empezar, felizmente Microsoft nos regala 150$ para probar Windows Azure, los pasos son los siguientes:&lt;br /&gt;
&lt;br /&gt;
- Nos creamos una cuenta de prueba &lt;a href=&quot;http://azure.microsoft.com/es-es/&quot;&gt;http://azure.microsoft.com/es-es/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivJ9dsM7rvHAWQ7U-YyRdmfY6BGjmXt5feWMOxbRZjJ0-ShiCp6C8MKvqDN0DrQR9zP-OeLBEixeVJTknjDAKZYVgOaGIgNR1VLN1AioKiMdLh3xluXo9qMGFOFYqPtQn4eUgZo5kAfLE/s1600/Captura+de+pantalla+2014-11-23+a+las+12.19.21.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivJ9dsM7rvHAWQ7U-YyRdmfY6BGjmXt5feWMOxbRZjJ0-ShiCp6C8MKvqDN0DrQR9zP-OeLBEixeVJTknjDAKZYVgOaGIgNR1VLN1AioKiMdLh3xluXo9qMGFOFYqPtQn4eUgZo5kAfLE/s1600/Captura+de+pantalla+2014-11-23+a+las+12.19.21.png&quot; height=&quot;165&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Regresando a una de las preguntas que hacia, ¿por qué Microsoft quiere mi tarjeta de crédito?. Pff yo también tengo cierto recelo en esto pero por lo que leí es una forma de Microsoft de asegurarse e identificarte ya que te abre acceso a sus centro de datos y no cometas diabluras &lt;strike&gt;(cosa que a lo mejor puede ser cierta o no), a ver si los entendidos en estos comentan por acá :)&lt;/strike&gt;&lt;br /&gt;
&lt;strike&gt;&lt;br /&gt;&lt;/strike&gt;
Pero bueno seguimos con el tema, nos inscribimos dejamos nuestra tarjeta de crédito.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNfTqnV5v87ttXoW4oNFIVw215xZmx51eXEShGQrHPbr1aSUJybBQsX9iphx-ve8mFdfa67Y3JpIZkfPIWkKt7RIWWvmugLj63iE4MW6jRDgmS1SR0iwon5uT7qNzPALWe07YamKLSjv0/s1600/Captura+de+pantalla+2014-11-23+a+las+12.24.52.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNfTqnV5v87ttXoW4oNFIVw215xZmx51eXEShGQrHPbr1aSUJybBQsX9iphx-ve8mFdfa67Y3JpIZkfPIWkKt7RIWWvmugLj63iE4MW6jRDgmS1SR0iwon5uT7qNzPALWe07YamKLSjv0/s1600/Captura+de+pantalla+2014-11-23+a+las+12.24.52.png&quot; height=&quot;233&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Y al final después de haber hecho todo correctamente debemos tener la siguiente ventana:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvkBQKi7yKKYzO_7VnxVvnD3ZLJgSFbPmlDhcsZaJQbZdvAkeiTfNZW4UQayh4udmveTs7GbSE3JrrEclPC5A1ngppdydnED1JYQeg09ZtISvAGBSz2gq6uiyZ4ovckYJRXtzgXi-7fao/s1600/Captura+de+pantalla+2014-11-23+a+las+12.27.20.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvkBQKi7yKKYzO_7VnxVvnD3ZLJgSFbPmlDhcsZaJQbZdvAkeiTfNZW4UQayh4udmveTs7GbSE3JrrEclPC5A1ngppdydnED1JYQeg09ZtISvAGBSz2gq6uiyZ4ovckYJRXtzgXi-7fao/s1600/Captura+de+pantalla+2014-11-23+a+las+12.27.20.png&quot; height=&quot;262&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
Ya que tenemos el panel de windows azure &amp;nbsp;vamos a la parte de maquinas virtuales.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmHJtFxzWuRWN7Zj_qBBBrDp5QH4z1jhxc8_L1snOAidHk6_W-EBLACNx9bZgyhj72iNbwCtyXnz80X-5DQpV9PtmMR1cntWk5iWHKySA_-5LryANiE3V7l3PBg98TZi5HNOsWjUo2_Rc/s1600/Captura+de+pantalla+2014-11-23+a+las+12.28.49.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmHJtFxzWuRWN7Zj_qBBBrDp5QH4z1jhxc8_L1snOAidHk6_W-EBLACNx9bZgyhj72iNbwCtyXnz80X-5DQpV9PtmMR1cntWk5iWHKySA_-5LryANiE3V7l3PBg98TZi5HNOsWjUo2_Rc/s1600/Captura+de+pantalla+2014-11-23+a+las+12.28.49.png&quot; height=&quot;181&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Le damos a crear una maquina virtual y tenemos dos opciones&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Creación rápida: &lt;/b&gt;Esta opción nos permite crear una maquina virtual sin SO, es decir una VM de 0 donde podemos indicar el SO que queremos instalar.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYiGf8xenE4_-hBxWlv1k6rgn91y23oh3R44URaAuoR8DBNBfKyZ8vRbarD0VElJ49uvWJDtmZEph3zppnUpli_3AHLSdzfZ12Q9Evo6KP9XJuE1f7qr6P4iucvYK84rjiC484ddXpK2w/s1600/Captura+de+pantalla+2014-11-23+a+las+12.34.09.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYiGf8xenE4_-hBxWlv1k6rgn91y23oh3R44URaAuoR8DBNBfKyZ8vRbarD0VElJ49uvWJDtmZEph3zppnUpli_3AHLSdzfZ12Q9Evo6KP9XJuE1f7qr6P4iucvYK84rjiC484ddXpK2w/s1600/Captura+de+pantalla+2014-11-23+a+las+12.34.09.png&quot; height=&quot;191&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;b&gt;De la galería:&lt;/b&gt; Esta opción nos permite escoger una VM ya preconfiguradas como vemos en la imagen, para este post crearemos una VM desde la galería:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib8rIba12GbVokyq20S1Uu9SeumYOlDREQbsnG3d3iMqxGyCLM253jyDscfkPb3JB_NOw9ugg98qwaK5lDmG3HxE2Sra6zq-5yeB4q70Ei0FUrL78HtMknBOingbn-EkaFfBILq_luOmg/s1600/Captura+de+pantalla+2014-11-23+a+las+12.38.32.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib8rIba12GbVokyq20S1Uu9SeumYOlDREQbsnG3d3iMqxGyCLM253jyDscfkPb3JB_NOw9ugg98qwaK5lDmG3HxE2Sra6zq-5yeB4q70Ei0FUrL78HtMknBOingbn-EkaFfBILq_luOmg/s1600/Captura+de+pantalla+2014-11-23+a+las+12.38.32.png&quot; height=&quot;255&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
Para este ejemplo seleccionaremos una VM con Windows Server 2012 R2 Datacenter y le damos siguiente mostrándose la siguiente ventana:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikvf5z5SdSOEgQ9oCXbl4MwjtMlr_MU76diIwxoucoC2xdV3y-HyTi291YJ84sEkGUtNoDwfwUfUu5A9rDn0eyR1N3qlk1E_2Nvvbxr3YKtyAwKXJ9N5inqp-jGZCa7URgbG4SGKQUyvE/s1600/Captura+de+pantalla+2014-11-23+a+las+12.42.16.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikvf5z5SdSOEgQ9oCXbl4MwjtMlr_MU76diIwxoucoC2xdV3y-HyTi291YJ84sEkGUtNoDwfwUfUu5A9rDn0eyR1N3qlk1E_2Nvvbxr3YKtyAwKXJ9N5inqp-jGZCa7URgbG4SGKQUyvE/s1600/Captura+de+pantalla+2014-11-23+a+las+12.42.16.png&quot; height=&quot;253&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Esta ventana nos sirve para configurar los datos de esta VM además en la parte de arriba sale un dropdrownlist que nos permite seleccionar la fecha de lanzamiento de la versión de la imagen disponible. Aunque es recomendable utilizar siempre la ultima versión, esto puede ser útil cuando no hemos hecho pruebas de nuestra aplicación en determinadas versiones y no estamos seguros de que pueda funcionar correctamente&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Luego damos siguiente y tenemos la siguiente ventana:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhb9RHX8_ydgNTNYUoFSsFhU6K9BWL-Hsh7j-hTTZW-tCmsxg4XyhVcLA__bbL5rb7gIgdyiPjwzLNuQWDWJL1tYboj_0dshTguXP1zOwC-2qpmoNQCnagC52NDEV4dCjWGii_xtZoIkxE/s1600/Captura+de+pantalla+2014-11-23+a+las+12.49.59.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhb9RHX8_ydgNTNYUoFSsFhU6K9BWL-Hsh7j-hTTZW-tCmsxg4XyhVcLA__bbL5rb7gIgdyiPjwzLNuQWDWJL1tYboj_0dshTguXP1zOwC-2qpmoNQCnagC52NDEV4dCjWGii_xtZoIkxE/s1600/Captura+de+pantalla+2014-11-23+a+las+12.49.59.png&quot; height=&quot;253&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
Esta ventana nos indica que se va a crear un servicio en la nube. Este servicio en la nube nos permitirá administrar nuestra maquina virtual en la nube. &amp;nbsp;Luego toca ponerle el nombre a la dos, a través de este nombre junto a .cloudapp.net vamos a poder acceder a nuestra máquina virtual&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Luego escogemos la reunión, este tema es muy importante ya que debemos escoger una región que esté cerca a donde tu o tu aplicación se va a usar con mucha más frecuencia, de esta manera evitamos que nuestro servidor se demore mucho en devolver información dando saltos hasta que llegue a donde estemos. La cuenta de almacenamiento es el disco duro y por lo pronto lo dejaremos así. Le damos siguiente&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvxx27uvni9YsEFFcSdfTM9oj2gmw_2hThgsPc5rrhTW9goeNk2v6peEXKqsi8zyeRCmGYctChqZ-1aqUoLyR_ZMDLyzeTxKOfao1MEIDO6OicSusa-LZ3Kpxowf24WTFFXC1sLwV_c5g/s1600/Captura+de+pantalla+2014-11-23+a+las+12.57.43.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvxx27uvni9YsEFFcSdfTM9oj2gmw_2hThgsPc5rrhTW9goeNk2v6peEXKqsi8zyeRCmGYctChqZ-1aqUoLyR_ZMDLyzeTxKOfao1MEIDO6OicSusa-LZ3Kpxowf24WTFFXC1sLwV_c5g/s1600/Captura+de+pantalla+2014-11-23+a+las+12.57.43.png&quot; height=&quot;252&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Y por último click al visto bueno de la parte de abajo en la derecha y ya está, nuestra VM se está creando&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEF3mhAqTdI2GMHJ10zwZNxpWYSSm5EET0orrEoMbiW7Wd0JUVs76lpOgjwA9fOozYLDuJYvmDHU0CuHsHTn8oFRZQ-P3zATFx3oxDfieev_A6q3t4_dvVbcdwW4_pJuQ5omG2XwpMQYQ/s1600/Captura+de+pantalla+2014-11-23+a+las+12.58.37.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEF3mhAqTdI2GMHJ10zwZNxpWYSSm5EET0orrEoMbiW7Wd0JUVs76lpOgjwA9fOozYLDuJYvmDHU0CuHsHTn8oFRZQ-P3zATFx3oxDfieev_A6q3t4_dvVbcdwW4_pJuQ5omG2XwpMQYQ/s1600/Captura+de+pantalla+2014-11-23+a+las+12.58.37.png&quot; height=&quot;148&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Esto puede tardar varios minutos ya que se esta inicializando nuestra máquina virtual con el SO y todos sus servicios. Una vez finalizada se muestra la siguiente ventana:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMWFZ0zU4R5b7wwmPrRY8wIRgqN3_DAfZcP7xMS2QxbNGtYv0Ko_6G_LhDzG5jy3Dwc29PYTde7VeEh7zZ9AIy03yQQ4RVpmz1UuMcRlYpXV4Cstae0SzfnD3OzRXLhrL7Unj1cpcguPM/s1600/Captura+de+pantalla+2014-11-23+a+las+13.36.32.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMWFZ0zU4R5b7wwmPrRY8wIRgqN3_DAfZcP7xMS2QxbNGtYv0Ko_6G_LhDzG5jy3Dwc29PYTde7VeEh7zZ9AIy03yQQ4RVpmz1UuMcRlYpXV4Cstae0SzfnD3OzRXLhrL7Unj1cpcguPM/s1600/Captura+de+pantalla+2014-11-23+a+las+13.36.32.png&quot; height=&quot;262&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Y si se fijan en la parte de abajo ya podemos conectarnos a ella y si damos doble click en el nombre de la máquina en el listado de maquinas virtuales vemos la siguiente ventana&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoeKntjmzI2EdJaTCBMSlOn04nD4OvJeyGJeD-Na03NcOkGinvyW7RI45nzKsN2Z1xtPaniSLqO_k1xfXqaf1qWg07WaWqJal0b9NOyf-b_RcK1TK5MMzSSNsV_e92-rzvrG9h-OS5sIE/s1600/Captura+de+pantalla+2014-11-23+a+las+13.37.47.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoeKntjmzI2EdJaTCBMSlOn04nD4OvJeyGJeD-Na03NcOkGinvyW7RI45nzKsN2Z1xtPaniSLqO_k1xfXqaf1qWg07WaWqJal0b9NOyf-b_RcK1TK5MMzSSNsV_e92-rzvrG9h-OS5sIE/s1600/Captura+de+pantalla+2014-11-23+a+las+13.37.47.png&quot; height=&quot;262&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Acá tenemos varias opciones para administrar nuestra VM, cosa que veremos en el siguiente post para no alargar más este. Espero les sirva para iniciar en el mundo de Windows Azure. Hasta el siguiente post :)&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/8902964055603921900/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2014/11/windows-azure-instalacion-y-primeros.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/8902964055603921900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/8902964055603921900'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2014/11/windows-azure-instalacion-y-primeros.html' title='Windows Azure - Instalación y primeros pasos'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivJ9dsM7rvHAWQ7U-YyRdmfY6BGjmXt5feWMOxbRZjJ0-ShiCp6C8MKvqDN0DrQR9zP-OeLBEixeVJTknjDAKZYVgOaGIgNR1VLN1AioKiMdLh3xluXo9qMGFOFYqPtQn4eUgZo5kAfLE/s72-c/Captura+de+pantalla+2014-11-23+a+las+12.19.21.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-814666059082289647</id><published>2014-10-28T17:02:00.000+01:00</published><updated>2014-10-28T17:08:27.187+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c#"/><category scheme="http://www.blogger.com/atom/ns#" term="Tips"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio"/><title type='text'>Quitar lineas punteadas del editor de Visual Studio</title><content type='html'>Hola, un post rapidito :)&lt;br /&gt;
&lt;br /&gt;
Hace unos minutos andaba codeando y sin querer apreté no sé que combinación de teclas y &amp;nbsp;mi código en Visual Studio se volvió de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIjID-cofGdLnAanEIl0wMr2S7tdPrCE9U1E3NnVkKlwBpJG86GvaLRkVbkhtCAs_r3Vloo_vROaFNZ1jP5AXkOrQQeAm_uUrsX63OVZDVg55q8DWCj8aSjSN-WnYYO7iA8jrK0HCo_0o/s1600/aaaaa.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIjID-cofGdLnAanEIl0wMr2S7tdPrCE9U1E3NnVkKlwBpJG86GvaLRkVbkhtCAs_r3Vloo_vROaFNZ1jP5AXkOrQQeAm_uUrsX63OVZDVg55q8DWCj8aSjSN-WnYYO7iA8jrK0HCo_0o/s1600/aaaaa.png&quot; height=&quot;117&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Como se puede ver, aparecen lineas punteadas en los espacios en blanco, como personalmente no me gusta, es más hasta me resulta algo cansado y fastidioso para la vista quise quitarlo. Así que después de intentar un poco en el menú de Options/Text Editor de Visual Studio me puse a googlear y di con la solución.&lt;br /&gt;
&lt;br /&gt;
Esta funcionalidad de mostrar puntitos en el editor de Texto de Visual Studio se activa y desactiva pulsando la siguiente combinación de teclas:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;CTRL + E + S &amp;nbsp;(en ese orden y sin mantener pulsadas las teclas, sólo el CTRL)&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Así que volví a pulsar esa combinación de teclas y listo :D!!&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLIBZK7aIBZfMjfkQFnzyHxGIMYQC1A3Fve842LekMkd8K-RSDaqyETdY0uMQfj8v4WTRMxtDAYusd3hQ3wEsT81ObZemt7__KxfFAyxFgqU5dsgQogIkKhVykCWK7FEBwtBUHZEVKEfI/s1600/bbbb.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLIBZK7aIBZfMjfkQFnzyHxGIMYQC1A3Fve842LekMkd8K-RSDaqyETdY0uMQfj8v4WTRMxtDAYusd3hQ3wEsT81ObZemt7__KxfFAyxFgqU5dsgQogIkKhVykCWK7FEBwtBUHZEVKEfI/s1600/bbbb.png&quot; height=&quot;122&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Ps ya saben por si les pasa :D, hasta la próxima :D!&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/814666059082289647/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2014/10/quitar-lineas-punteadas-del-editor-de.html#comment-form' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/814666059082289647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/814666059082289647'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2014/10/quitar-lineas-punteadas-del-editor-de.html' title='Quitar lineas punteadas del editor de Visual Studio'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIjID-cofGdLnAanEIl0wMr2S7tdPrCE9U1E3NnVkKlwBpJG86GvaLRkVbkhtCAs_r3Vloo_vROaFNZ1jP5AXkOrQQeAm_uUrsX63OVZDVg55q8DWCj8aSjSN-WnYYO7iA8jrK0HCo_0o/s72-c/aaaaa.png" height="72" width="72"/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-5197869344122562153</id><published>2014-09-23T15:30:00.000+02:00</published><updated>2014-09-23T15:31:11.644+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apis"/><category scheme="http://www.blogger.com/atom/ns#" term="html"/><category scheme="http://www.blogger.com/atom/ns#" term="html5"/><category scheme="http://www.blogger.com/atom/ns#" term="polyfills"/><title type='text'>HTML5: Introducción</title><content type='html'>&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;Hola, ya sé, ya sé, como que este post llega muy tarde, pero como dicen, mejor tarde que nunca. Mi idea es ir creando unos cuantos tutoriales para que la gente que aún no ha migrado a HTML5 y aún no tenga claro de que va, empiece a tener una idea. Empezamos!!&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;HTML5 es el nuevo standard de HTML el cual trae consigo nuevas funcionalidades y también elimina unas cuantas que pasamos a enumerar.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;b&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;LO NUEVO&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;- Nuevos elementos, como el &amp;lt;header&amp;gt;, &amp;lt;section&amp;gt;, &amp;lt;article&amp;gt;, &amp;lt;footer&amp;gt;,&amp;lt;nav&amp;gt;, &amp;lt;aside&amp;gt;, &amp;lt;figure&amp;gt; entre otros.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;- Nuevos controles de formulario como&amp;nbsp;&lt;span style=&quot;background-color: white; color: #404040;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #404040;&quot;&gt;number, date, time, calendar, and range.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;color: #404040; font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;- Nuevos elementos&amp;nbsp;gráficos: &amp;lt;svg&amp;gt;, &amp;lt;canvas&amp;gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;color: #404040; font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;- Nuevos elementos multimedia: &amp;lt;video&amp;gt;, &amp;lt;audio&amp;gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;color: #404040; font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;- Nuevas apis:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #404040; font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;HTML Geolocation, H&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #404040; font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;TML Drag and Drop, HTML Local Storage, HTML &amp;nbsp; &amp;nbsp; Application Cache, HTML Web Workers y HTML SSE.&lt;/span&gt;&lt;br /&gt;
&lt;b style=&quot;color: #404040; font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b style=&quot;color: #404040; font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;LO QUE SE HA QUITADO&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;color: #404040; font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #404040; font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;Ya no existen los siguientes tags:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul style=&quot;background-color: white; color: #404040;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&amp;lt;acronym&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&amp;lt;applet&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&amp;lt;basefont&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&amp;lt;big&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&amp;lt;center&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&amp;lt;dir&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&amp;lt;font&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&amp;lt;frame&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&amp;lt;frameset&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&amp;lt;noframes&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&amp;lt;strike&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&amp;lt;tt&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: white; color: #404040;&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;(Así que ir eliminando estos tags de sus aplicaciones si quieren migrar a la nueva versión.)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;NAVEGADORES QUE SOPORTA&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;En principio HTML5 debería ser soportado por todos los navegadores modernos, &lt;b&gt;aunque no tiene soporte para versiones de IExplorer anteriores a la IE9.&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Si un día quieres saber si tu navegador soporta html5 o algunas de sus nuevas características entra a&lt;span style=&quot;background-color: yellow;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://html5test.com/&quot; style=&quot;background-color: yellow;&quot;&gt;http://html5test.com/&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Felizmente existen herramientas para poder usar(simular) las nuevas características en navegadores que no soportan HTML5 como&amp;nbsp;&lt;a href=&quot;http://modernizr.com/&quot; target=&quot;_blank&quot;&gt;&lt;b style=&quot;background-color: yellow;&quot;&gt;Modernizr&lt;/b&gt;&lt;/a&gt;. También puedes hacer uso de los&amp;nbsp;&lt;a href=&quot;https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills&quot; style=&quot;background-color: yellow;&quot; target=&quot;_blank&quot;&gt;Polyfills&lt;/a&gt;, los cuales son scripts que nos permiten realizar tareas de HTML5 en navegadores que no lo soportan.&lt;br /&gt;
&lt;br /&gt;
Creo que para ser una introducción vamos bien, la idea es hacer un post por cada nueva característica o funcionalidad que he comentado acá, a ver que tal se no da :D.. hasta la próxima :)&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/5197869344122562153/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2014/09/html5-introduccion.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/5197869344122562153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/5197869344122562153'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2014/09/html5-introduccion.html' title='HTML5: Introducción'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-3182484765894545033</id><published>2014-09-19T12:00:00.000+02:00</published><updated>2014-09-19T12:06:28.950+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="css"/><category scheme="http://www.blogger.com/atom/ns#" term="css3"/><category scheme="http://www.blogger.com/atom/ns#" term="Editor"/><category scheme="http://www.blogger.com/atom/ns#" term="html"/><category scheme="http://www.blogger.com/atom/ns#" term="html5"/><category scheme="http://www.blogger.com/atom/ns#" term="Tips"/><title type='text'>Reordenando, estructurando los estilos, usando SuitCSS</title><content type='html'>Hola a todos,&lt;br /&gt;
&lt;br /&gt;
Uno &amp;nbsp;de los temas que más me fastidia de la parte front de las aplicaciones, es la falta de orden y standard para la nomenclatura y acoplamiento que hay en los archivos css de una aplicación. He visto aplicaciones con archivos .css inmensos, otros en los cuales se machacaba un estilo con otro por encontrarse duplicado, o simplemente que se mezclaban. &lt;br /&gt;
&lt;br /&gt;
Reconozco que es un calvario mantener los .css pero felizmente existen los preprocesadores que nos ayudan mucho en esta tarea como&amp;nbsp;&lt;a href=&quot;http://sass-lang.com/&quot; target=&quot;_blank&quot;&gt;SASS&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;http://lesscss.org/features/&quot; target=&quot;_blank&quot;&gt;LESS&lt;/a&gt;&amp;nbsp;o&amp;nbsp;&lt;a href=&quot;http://learnboost.github.io/stylus/&quot; target=&quot;_blank&quot;&gt;Stylus&lt;/a&gt;&amp;nbsp;y del cual hablaremos más adelante. Hace unas semanas descubrí un standard para la nomenclatura de estilos que me parece muy interesante y esta teniendo acogida por parte de muchos desarrolladores. Se trata de &lt;a href=&quot;http://suitcss.github.io/&quot; target=&quot;_blank&quot;&gt;SUITCSS&lt;/a&gt;, un proyecto de GitHub que aparte de también de ser un preprocesador, pretende establecer un standard para nombrar a nuestras clases de estilos de dos maneras.&lt;br /&gt;
&lt;br /&gt;
Empecemos explicando el primer caso:&lt;br /&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;code style=&quot;background-color: rgba(0, 0, 0, 0.0392157); border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; box-sizing: border-box; color: #333333; font-family: Consolas, &#39;Liberation Mono&#39;, Menlo, Courier, monospace; font-size: 14px; margin: 0px; padding: 0.2em 0px; white-space: normal;&quot;&gt;.namespace-ComponentName&lt;/code&gt;&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.0392157); color: #333333; font-family: Consolas, &#39;Liberation Mono&#39;, Menlo, Courier, monospace; font-size: 14.44444465637207px;&quot;&gt;-descendentName&lt;/span&gt;&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.0392157); color: #333333; font-family: Consolas, &#39;Liberation Mono&#39;, Menlo, Courier, monospace; font-size: 14px;&quot;&gt;--modifierName.is-stateName {...}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;.namespace:&amp;nbsp;&lt;/span&gt;&lt;/b&gt;SuitCSS pretende que empecemos nombrando nuestras clases con un namespace. Aunque este parámetro es &lt;b&gt;opcional&lt;/b&gt;, se recomienda utilizarlo para tener que evitar conflictos con otros archivos css. Esto debe ser escrito en Camel Case.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #0b5394; font-weight: bold;&quot;&gt;-ComponentName: &lt;/span&gt;Es el nivel más alto de nuestro componentes. Si nos guiamos a la nueva estructura que propone HTML5, acá se podría declarar los elementos header, section, article, footer, etc. Esto debe ser escrito en Pascal Case.&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Archivo CSS usando el namespace y ComponentName juntos&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;pre class=&quot;brush: css&quot;&gt;.main-Header{...}
.main-Footer{...}

.popup-Header{...}
.popup-Footer{...}
&lt;/pre&gt;
&lt;/div&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Página HTML&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;pre class=&quot;brush: html&quot;&gt;&lt;header class=&quot;main-Header&quot;&gt;
   ...
   ...
&lt;/header&gt;
&lt;footer class=&quot;main-Footer&quot;&gt;
   ...
   ...
&lt;/footer&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #0b5394; font-weight: bold;&quot;&gt;-descendantName: &lt;/span&gt;Es la parte del componente al cual aplicaremos el estilo. Por ejemplo podría ser un &amp;lt;figure&amp;gt; que esta dentro de un &amp;lt;header&amp;gt;. Esto debe ser escrito en Camel Case.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Archivo CSS&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;pre class=&quot;brush: css&quot;&gt;.main-Header{...}
.main-Header-figure {....}
&lt;/pre&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Página HTML&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;pre class=&quot;brush: html&quot;&gt;&lt;header class=&quot;main-Header&quot;&gt;   
   &lt;figure class=&quot;main-Header-figure&quot;&gt;
      ...
      ...
   &lt;/figure&gt;
&lt;/header&gt;
&lt;/pre&gt;
&lt;span style=&quot;color: #0b5394; font-weight: bold;&quot;&gt;--modifierName: &lt;/span&gt;Esta clase nos permite modificar el elemento base de una cierta forma, un ejemplo sería un estilo determinado a un botón por defecto, o los campos de texto que son obligatorios de llenar. Esto debe ser escrito en Camel Case.&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Archivo CSS&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;pre class=&quot;brush: css&quot;&gt;.main-Header{...}
.main-Header-figure {....}
.main-Header-button {....}
.main-Header-button--default {....}
&lt;/pre&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Página HTML&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;pre class=&quot;brush: html&quot;&gt;&lt;header class=&quot;main-Header&quot;&gt;   
   &lt;figure class=&quot;main-Header-figure&quot;&gt;
      ...
      ...
   &lt;/figure&gt;
   &lt;button class=&quot;main-Header-button--default&quot; id=&quot;btnAceptar&quot; value=&quot;Aceptar&quot;&gt;&lt;/button&gt;
   &lt;button class=&quot;main-Header-button&quot; id=&quot;btnCancelar&quot; value=&quot;Cancelar&quot;&gt;&lt;/button&gt;
&lt;/header&gt;
&lt;/pre&gt;
&lt;span style=&quot;color: #0b5394; font-weight: bold;&quot;&gt;.is-stateName:&amp;nbsp;&lt;/span&gt;Esta clase&amp;nbsp;nos permite indicar un estado que puede tener un determinado elemento, como habilitado, deshabilitado, seleccionado, etc. Esta clase se escribe con un punto al inicio, lo cual indica que es una clase aparte y que puede ser reutilizada por diferentes elementos,&lt;b&gt; pero es recomendable&lt;/b&gt; tenerlo dentro del mismo ámbito del componente por temas de orden y para facilitar luego el uso de preprocesadores. Esta clase se debe escribir en Camel Case también.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Archivo CSS&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;pre class=&quot;brush: css&quot;&gt;.main-Header{...}
.main-Header-figure {....}
.main-Header-button {....}
.main-Header-button--default {....}
.main-Header-button--default.disabled {....}
.main-Header-button--default.enabled {....}
&lt;/pre&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Página HTML&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;pre class=&quot;brush: html&quot;&gt;&lt;header class=&quot;main-Header&quot;&gt;   
   &lt;figure class=&quot;main-Header-figure&quot;&gt;
      ...
      ...
   &lt;/figure&gt;
   &lt;button class=&quot;main-Header-button--default disabled&quot; id=&quot;btnAceptar&quot; value=&quot;Aceptar&quot;&gt;&lt;/button&gt;
   &lt;button class=&quot;main-Header-button&quot; id=&quot;btnCancelar&quot; value=&quot;Cancelar&quot;&gt;&lt;/button&gt;
&lt;/header&gt;
&lt;/pre&gt;
&lt;br /&gt;
Por último hablaremos del segundo caso:&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;code style=&quot;background-color: rgba(0, 0, 0, 0.0392157); border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; box-sizing: border-box; color: #333333; font-family: Consolas, &#39;Liberation Mono&#39;, Menlo, Courier, monospace; font-size: 14px; margin: 0px; padding: 0.2em 0px;&quot;&gt;.u-utilityName&lt;/code&gt;&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.0392157); color: #333333; font-family: Consolas, &#39;Liberation Mono&#39;, Menlo, Courier, monospace; font-size: 14px;&quot;&gt;&amp;nbsp;{...}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: rgba(0, 0, 0, 0.0392157); color: #333333; font-family: Consolas, &#39;Liberation Mono&#39;, Menlo, Courier, monospace; font-size: 14px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #0b5394; font-weight: bold;&quot;&gt;.u-utilityName: &lt;/span&gt;Esta clase está pensada para crear estilos globales. El nombre de la clase debe empezar con u seguido de un guión, lo cual nos permite indicar que será un utilitario capaz de aplicar estilos a muchos elementos. Nos puede ser util para establecer estilos para cosas comunes en toda la aplicación, como los tag de title, h1, h2 o para indicar un tipo de posicionamiento o alineación. La idea es que sea una clase que contengan estilos comunes en la aplicación. Debe ser escrito tambien en Camel Case.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: css&quot;&gt;.main-Header{...}
.main-Header-figure {....}
.main-Header-button {....}
.main-Header-button--default {....}
.main-Header-button--default.disabled {....}
.main-Header-button--default.enabled {....}
.u-title {...}
.u-buttons {...}
&lt;/pre&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Página HTML&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;pre class=&quot;brush: html&quot;&gt;&lt;header class=&quot;main-Header&quot;&gt;   
   &lt;title class=&quot;u-title&quot;&gt;Hola&lt;/title&gt;
   &lt;figure class=&quot;main-Header-figure&quot;&gt;
      ...
      ...
   &lt;/figure&gt;
   &lt;button class=&quot;main-Header-button--default disabled u-buttons&quot; id=&quot;btnAceptar&quot; value=&quot;Aceptar&quot;&gt;&lt;/button&gt;
   &lt;button class=&quot;main-Header-button  u-buttons&quot; id=&quot;btnCancelar&quot; value=&quot;Cancelar&quot;&gt;&lt;/button&gt;
&lt;/header&gt;&lt;header class=&quot;main-Header&quot;&gt;
&lt;/header&gt;&lt;/pre&gt;
&lt;br /&gt;
Como podemos ver SuitCSS viene a poner orden en la manera en como declarar las clases de estilos en nuestras páginas html. Hace uso del selector por clases y es una manera ordenada y clara de ver los documentos. Sería genial que los desarrolladores empiecen a usar este tipo de standar de nomenclatura para que el mantenimiento de estilos esté más controlado. Espero les sirva, hasta la próxima :)&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/3182484765894545033/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2014/09/reordenando-estructurando-los-estilos.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/3182484765894545033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/3182484765894545033'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2014/09/reordenando-estructurando-los-estilos.html' title='Reordenando, estructurando los estilos, usando SuitCSS'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><thr:total>1</thr:total><georss:featurename>Madrid, Madrid, España</georss:featurename><georss:point>40.4167754 -3.7037901999999576</georss:point><georss:box>40.0279524 -4.3519836999999573 40.8055984 -3.0555966999999575</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-6632200100243549483</id><published>2014-09-05T10:31:00.000+02:00</published><updated>2014-09-05T11:33:05.454+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="off-topic"/><title type='text'>OFFTOPIC: Nuevas Tecnologías</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Hola, aunque en un principio traté de orientar este blog a sólo temas de Visual Studio, poco a poco la cosa va evolucionando y como buen amante de la programación me gusta estar viendo y actualizándome con nuevas tecnologías. Asi que poco a poco &lt;strike&gt;(si el tiempo me lo permite)&lt;/strike&gt; iré posteando sobre nuevos temas que voy tocando en el día a día o sobre temas que me van interesando, así que pronto tendrán temas de MongoDB, HTML5, CSS3, Bootstrap, Angular, Windows Azure, NodeJs, Xamarin y demás tecnologías.

Estar atentos y disculpen si a veces pasan semanas y no posteo nada, el trabajo a veces es absorvente, un saludo :)&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXsthql7630ZjGQ4isnvAQvELZzicjVlwV5SE5HYweJIEbp_K9jlN59egeT3jTDjJ3Velhn533L1PAHlvto_h6JdXzE1INSwacQT6Ms13DAAWyb8UqWlMXzQonh_7eIceItgEz4VweyLQ/s1600/IC691934-300x222.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXsthql7630ZjGQ4isnvAQvELZzicjVlwV5SE5HYweJIEbp_K9jlN59egeT3jTDjJ3Velhn533L1PAHlvto_h6JdXzE1INSwacQT6Ms13DAAWyb8UqWlMXzQonh_7eIceItgEz4VweyLQ/s1600/IC691934-300x222.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/6632200100243549483/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2014/09/offtopic-nuevas-tecnologias.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/6632200100243549483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/6632200100243549483'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2014/09/offtopic-nuevas-tecnologias.html' title='OFFTOPIC: Nuevas Tecnologías'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXsthql7630ZjGQ4isnvAQvELZzicjVlwV5SE5HYweJIEbp_K9jlN59egeT3jTDjJ3Velhn533L1PAHlvto_h6JdXzE1INSwacQT6Ms13DAAWyb8UqWlMXzQonh_7eIceItgEz4VweyLQ/s72-c/IC691934-300x222.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-4709099869287854591</id><published>2014-09-04T16:47:00.002+02:00</published><updated>2014-09-05T13:44:41.685+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ASP .NET MVC4"/><category scheme="http://www.blogger.com/atom/ns#" term="c#"/><category scheme="http://www.blogger.com/atom/ns#" term="Documentación"/><category scheme="http://www.blogger.com/atom/ns#" term="html"/><category scheme="http://www.blogger.com/atom/ns#" term="nbuilder"/><title type='text'>Generando datos de prueba, usando NBuilder</title><content type='html'>&lt;script&gt;
SyntaxHighlighter.defaults[&#39;gutter&#39;] = false;
SyntaxHighlighter.defaults[&#39;smart-tabs&#39;] = false;
&lt;/script&gt;
Muchas veces tenemos la necesidad de generar datos de pruebas por distintas razones. Ya sea para generar prototipos, test unitarios o pruebas de concepto.Imaginemos que tenemos la siguiente clase y queremos crear un listado de 50 nuevos objetos Customer:&lt;br /&gt;
&lt;pre class=&quot;brush: c#&quot;&gt; 
    public class Customer
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    }
&lt;/pre&gt;
&lt;br /&gt;
Y queremos mostrar un grid con un listado de 50 personas. Reconozco que hace tiempo hacia lo siguiente:
&lt;br /&gt;
&lt;script class=&quot;brush:  c#&quot; type=&quot;syntaxhighlighter&quot;&gt;&lt;![CDATA[
    public List&lt;Customer&gt; GetCustomers()
    {
        var customers = new List&lt;Customer&gt;();

        for (int i = 0; i &amp;lt; 50; i++)
        {
            var customer = new Customer()
            {
                Id= i,
                Name= string.Format(&quot;Name {0}&quot;, i),
                Age= i
            };

            customers.Add(customer);
        }

        return customers;
    }
]]&gt;&lt;/script&gt;

Otros hacen uso de un XML lo cual aún es mas coñazo, o quien sabe que otras técnicas usarán por ahi. No digo que esto no esté mal, pero para que reinventar la rueda cuando tenemos herramientas que ya hacen esto. Para esto tenemos &lt;b&gt;NBuilder&lt;/b&gt;

Para instalarlo, puedes ir a su &lt;a href=&quot;http://code.google.com/p/nbuilder/&quot; target=&quot;_blank&quot;&gt;página &lt;/a&gt;y descargartelo. Yo prefiero instalarlo via Nuget, para lo cual vamos a la Consola de Paquetes de Nuget e escribimos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&amp;nbsp;&lt;span style=&quot;background-color: #fff2cc;&quot;&gt;Install-Package nbuilder

&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDGYFSWGIl5hxTp0SKtlw-Pb4SSuOHlLE8gavemSzJQL9ye5YfcpQmKKi2-I3XtQyVztQhzt-6cOrcucsQn0Qjm9HQv6MZ7VVwRh7PxlVibEA_ok8rfoAOB0m-GOKYOuww4fyypEjPdl8/s1600/nb1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDGYFSWGIl5hxTp0SKtlw-Pb4SSuOHlLE8gavemSzJQL9ye5YfcpQmKKi2-I3XtQyVztQhzt-6cOrcucsQn0Qjm9HQv6MZ7VVwRh7PxlVibEA_ok8rfoAOB0m-GOKYOuww4fyypEjPdl8/s320/nb1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Después de tenerlo instalado es tan simple generar la lista de 50 objetos Customer:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;script class=&quot;brush:  c#&quot; type=&quot;syntaxhighlighter&quot;&gt;&lt;![CDATA[
var users = Builder&lt;Customer&gt;.CreateListOfSize(50).Build();
]]&gt;&lt;/script&gt;



&lt;br /&gt;
Vamos a mostrar el resultado en una vista de MVC de la siguiente manera:&lt;br /&gt;
&lt;script class=&quot;brush:  c#&quot; type=&quot;syntaxhighlighter&quot;&gt;&lt;![CDATA[
        public ActionResult Index()
        {
            var customers = Builder&lt;Customer&gt;.CreateListOfSize(50).Build();
            return View(customers);
        }

]]&gt;&lt;/script&gt;

&lt;br /&gt;
Y generamos la vista con un listado de customers. El resultado es el siguiente:

&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY8fNxVxFUmxsht5rKOh3PsLtQ4YY9SbVjdbxot6CgBZGp9Of0qQUAsKyrRgV1no_8xAipalf-W7Ve3ihdBqdndo1DMk7BL5k9ChPqW1VnPVe0dzHBVL_f0rF2dE75mr52ZjGYWsHktCU/s1600/nb2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY8fNxVxFUmxsht5rKOh3PsLtQ4YY9SbVjdbxot6CgBZGp9Of0qQUAsKyrRgV1no_8xAipalf-W7Ve3ihdBqdndo1DMk7BL5k9ChPqW1VnPVe0dzHBVL_f0rF2dE75mr52ZjGYWsHktCU/s400/nb2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Espero les ayude, hasta la próxima :)</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/4709099869287854591/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2014/09/generando-datos-de-prueba-usando.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/4709099869287854591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/4709099869287854591'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2014/09/generando-datos-de-prueba-usando.html' title='Generando datos de prueba, usando NBuilder'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDGYFSWGIl5hxTp0SKtlw-Pb4SSuOHlLE8gavemSzJQL9ye5YfcpQmKKi2-I3XtQyVztQhzt-6cOrcucsQn0Qjm9HQv6MZ7VVwRh7PxlVibEA_ok8rfoAOB0m-GOKYOuww4fyypEjPdl8/s72-c/nb1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-4650192150544399258</id><published>2014-07-16T19:44:00.001+02:00</published><updated>2014-07-16T19:44:44.776+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="css"/><category scheme="http://www.blogger.com/atom/ns#" term="Editor"/><category scheme="http://www.blogger.com/atom/ns#" term="html"/><category scheme="http://www.blogger.com/atom/ns#" term="Plugins"/><category scheme="http://www.blogger.com/atom/ns#" term="Sublime Text"/><category scheme="http://www.blogger.com/atom/ns#" term="Tips"/><title type='text'>Usando Sublime Text y instalando el package control.</title><content type='html'>Hace un tiempo descubrí un editor de texto que me encantaba por la cantidad de plantillas y la forma en que te ayuda a crear diferentes tipos de documentos, sobre todo html y css3 de una manera fácil y rápida. Estamos hablando de &lt;a href=&quot;http://www.sublimetext.com/&quot;&gt;Sublime Text&lt;/a&gt;, una herramienta open source que tiene una versión de pago pero que también puedes trabajar sin problemas con la versión free.&lt;br /&gt;
&lt;br /&gt;
Entre algunas cosas que me gusta hacer con esto es crear html ya que te permite hacerlo de una manera fácil. Para esto lo que hacemos es abrir un nuevo documento en Sublime, lo guardamos como &lt;b&gt;demo.html&lt;/b&gt; por ejemplo y empezamos a crear nuestro html.&lt;br /&gt;
&lt;br /&gt;
Como Sublime sabe que estamos editando un documento html utiliza el marcado respectivo para este tipo de documento, por lo que si escribimos solo html y pulsamos la tecla tab, se genera automaticamente el cuerpo básico de un documento html.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGZCtT9-VulAdNsHRExIuKA_4lsSEG5OJ8px9w2v1-THD0Ca6_NFaih1SsmpH4PLI-htolEpADVZ8xaI6eiWReFOcfYLy0i9tPm55xYxLX9hADEXdmKHIdMDO34JtkmesMsdg00ncOh-Q/s1600/a1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGZCtT9-VulAdNsHRExIuKA_4lsSEG5OJ8px9w2v1-THD0Ca6_NFaih1SsmpH4PLI-htolEpADVZ8xaI6eiWReFOcfYLy0i9tPm55xYxLX9hADEXdmKHIdMDO34JtkmesMsdg00ncOh-Q/s1600/a1.png&quot; height=&quot;242&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRMHN3pruA33OrNUdSrjvkZH8Kt9ZqhoK5UcZJ-trzWwEt9vh2Bit8VrXcMXG7u0AiGTUf9sm21UncknCvnFW0xaZd-JNjkooFIcRxOuE2U2Ga7pbDv-uRbfdYEAdwymNM-NHueb6JvKw/s1600/a2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRMHN3pruA33OrNUdSrjvkZH8Kt9ZqhoK5UcZJ-trzWwEt9vh2Bit8VrXcMXG7u0AiGTUf9sm21UncknCvnFW0xaZd-JNjkooFIcRxOuE2U2Ga7pbDv-uRbfdYEAdwymNM-NHueb6JvKw/s1600/a2.png&quot; height=&quot;242&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Lo mismo por ejemplo si queremos crear un div con una clase especifica por ejemplo con la clase &quot;header&quot;. Lo único que tenemos que hacer es posicionar el cursor dentro del editor de texto en la parte que queremos crear ese div y escribir lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;div.header&lt;/b&gt;&amp;nbsp;+ &lt;b&gt;tecla tab&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoIAk3nEEz0szpBnefJjvuPqVzQjPGR6d1L_kj4gctnZYsTyY_yw99-v4RMTMN17MtQnImPft8HmRYMvpznTJ1MWEjER2tUt-zsnKa9AWC8qKoZa4tbGWtwlglBVTfXD-MNwdxiS2FXCg/s1600/a3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoIAk3nEEz0szpBnefJjvuPqVzQjPGR6d1L_kj4gctnZYsTyY_yw99-v4RMTMN17MtQnImPft8HmRYMvpznTJ1MWEjER2tUt-zsnKa9AWC8qKoZa4tbGWtwlglBVTfXD-MNwdxiS2FXCg/s1600/a3.png&quot; height=&quot;150&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
El resultado será el siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCwRUKb_1F5RulgW9JvyRQVpKYE0kN62LH3dILRI59nF7M1Ncb02X1YLoAvMi858FHbrTAs-TxwCVTBOCQz21vJDiRiV5KYUIHUp2hcbHe-YHTa_U8-tJb2AKWCD4fqqB7K584RplvK7c/s1600/a4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCwRUKb_1F5RulgW9JvyRQVpKYE0kN62LH3dILRI59nF7M1Ncb02X1YLoAvMi858FHbrTAs-TxwCVTBOCQz21vJDiRiV5KYUIHUp2hcbHe-YHTa_U8-tJb2AKWCD4fqqB7K584RplvK7c/s1600/a4.png&quot; height=&quot;158&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Como ven, con algunas reglas podemos ir creando un documento html rápidamente. Pero Sublime tiene muchas cosas más, pero para ello necesitamos instalar un paquete de controles, por defecto al instalarlo por primera vez no lo tiene, pero para que tú puedes verificarlo haces lo siguiente:&lt;br /&gt;
&lt;br /&gt;
- Dentro de Sublime pulsas &lt;b&gt;CTRL + SHIFT + P&lt;/b&gt; y te aparece una ventana flotante, dentro de ella escribes &lt;b&gt;Package Control&lt;/b&gt; y si es que no devuelve ningún resultado, es porque aún no lo tienes instalado.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiqwvL00Zssia3Z0pOSsCmbeqNEd9jxLFXVsiZzud_MuPf__1EyVNHP7gYg2R7to6T7YxI1W5cyDv6LYwRlX6ikZlRukDoF-v1-NFhkSyPRCTNBNFdQ_5Sl8bxN6uQcERCbyVcC-_rx7A/s1600/a5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiqwvL00Zssia3Z0pOSsCmbeqNEd9jxLFXVsiZzud_MuPf__1EyVNHP7gYg2R7to6T7YxI1W5cyDv6LYwRlX6ikZlRukDoF-v1-NFhkSyPRCTNBNFdQ_5Sl8bxN6uQcERCbyVcC-_rx7A/s1600/a5.png&quot; height=&quot;102&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Para instalarlo vamos al siguiente enlace:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://sublime.wbond.net/installation&quot;&gt;https://sublime.wbond.net/installation&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Copiamos el texto que sale dentro del cuadrado rojo de la imagen:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyzy5qORAohjgu0ZUWRmNJCIUXPf4GljVzT_6sve5hn74TloLqWoxsC8dmJFfFxVNopK6c8rvdrm2nLmf4O_Pm-E8ACNvLsJV3PFBMQnBdM00_b7UsHufAia6k7gDh9Dqskd4s3cMwhKs/s1600/a6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyzy5qORAohjgu0ZUWRmNJCIUXPf4GljVzT_6sve5hn74TloLqWoxsC8dmJFfFxVNopK6c8rvdrm2nLmf4O_Pm-E8ACNvLsJV3PFBMQnBdM00_b7UsHufAia6k7gDh9Dqskd4s3cMwhKs/s1600/a6.png&quot; height=&quot;198&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Vamos a Sublime, al Menú&lt;b&gt; View/Show Console&lt;/b&gt; y lo pegamos ahí:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxtapi4Kv5bYt5guRKI63QaAwOYQsXYyAghzeKa1pAt_2r4CIiuV9kCf3-n9NkrqJ4IDrMjwEEi5gZS-f1TJL6JaqfUSfn-VwW4tte71hqN9k9Z8Qv9_SgjaYUkXYEbFDAXqCnhJ7q_6Y/s1600/a7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxtapi4Kv5bYt5guRKI63QaAwOYQsXYyAghzeKa1pAt_2r4CIiuV9kCf3-n9NkrqJ4IDrMjwEEi5gZS-f1TJL6JaqfUSfn-VwW4tte71hqN9k9Z8Qv9_SgjaYUkXYEbFDAXqCnhJ7q_6Y/s1600/a7.png&quot; height=&quot;242&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Luego de eso vuelves a dar a las teclas&lt;b&gt; CTRL+SHIFT+P&lt;/b&gt; y escribes &lt;b&gt;PackageControl &lt;/b&gt;y deben aparecer esta vez resultados:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXAF4XVJiwrjvj7vRtW9dyT78aqdRIzCVzMu25dYveouboikfaJFpaJ_JZNzdbe3eDBNTnw3MiK8LThZAzV7Pb1c-r4ErVjEmUPN6UVMB5PHiPpAyczbDZ7lncHsF_nAdPszb1N-eAS1U/s1600/a8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXAF4XVJiwrjvj7vRtW9dyT78aqdRIzCVzMu25dYveouboikfaJFpaJ_JZNzdbe3eDBNTnw3MiK8LThZAzV7Pb1c-r4ErVjEmUPN6UVMB5PHiPpAyczbDZ7lncHsF_nAdPszb1N-eAS1U/s1600/a8.png&quot; height=&quot;243&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
De la lista de resultados, seleccionamos la que dice &lt;b&gt;Package Control: Install Package. &lt;/b&gt;Una vez instalado aparece un listado de los plugins disponibles del &lt;b&gt;Package Control &lt;/b&gt;para utilizar en nuestro editor de texto. Como ejemplo utilizaremos el plugin &lt;b&gt;&quot;EMMET&quot; &lt;/b&gt;y le damos a enter. Debe salir la siguiente imagen:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfqXRkBAh8sFOQaXayZIGtF9eNGx2LO6q-a9hk6omfgILRM2M9w4hfX1kb9ab-kokAHHkHWS5Ccse7ELKjSrIHfG4L3hvgTUqLISmyU4P9Vpqf_LFEwAPLXzr0zB0DD1LIZTiUVfCnZSo/s1600/b1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfqXRkBAh8sFOQaXayZIGtF9eNGx2LO6q-a9hk6omfgILRM2M9w4hfX1kb9ab-kokAHHkHWS5Ccse7ELKjSrIHfG4L3hvgTUqLISmyU4P9Vpqf_LFEwAPLXzr0zB0DD1LIZTiUVfCnZSo/s1600/b1.png&quot; height=&quot;241&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Como se ve en la imagen, nos pide reiniciar el editor. Una vez reiniciado volvemos al documento y podemos empezar a jugar con este plugin. En el documento html que estábamos creando ponemos lo siguiente.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;b&gt;div.padre&amp;gt;div.hijos*2&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimhcUolo9xVSyfvpSy3psTJBnnGGjenGH0B9F-DiVhHD9KMXdto-E6uuK5DPG2nIN9gkX6-ay2nRRS83AQ1fe-H1GrSvamM6VANOg5YAd0Um_hfiGjU-mKY7t2WuU69lz24hBF0UVDgSs/s1600/b2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimhcUolo9xVSyfvpSy3psTJBnnGGjenGH0B9F-DiVhHD9KMXdto-E6uuK5DPG2nIN9gkX6-ay2nRRS83AQ1fe-H1GrSvamM6VANOg5YAd0Um_hfiGjU-mKY7t2WuU69lz24hBF0UVDgSs/s1600/b2.png&quot; height=&quot;125&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Y pulsamos la tecla tab y el resultado debe ser el siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGC_qidWAZi2tS4TZPDwpHcRM9diXzksodgwT4lqbtfjb98nucgx-oKR9Cv7gN87UUjeuUWafYSirpC8XdVxiOtgevsWFvAkkvwgxZ7d3w5rHrvGmJMnXLgzRUpVXtSRLcwJTROn_16uI/s1600/b3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGC_qidWAZi2tS4TZPDwpHcRM9diXzksodgwT4lqbtfjb98nucgx-oKR9Cv7gN87UUjeuUWafYSirpC8XdVxiOtgevsWFvAkkvwgxZ7d3w5rHrvGmJMnXLgzRUpVXtSRLcwJTROn_16uI/s1600/b3.png&quot; height=&quot;145&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Como ven se ha generado un div con la clase padre y dos divs hijos con la clase hijos de una manera super fácil. Si quieren profundizar en esto, busquen en google Zen Coding con sublime y sáquenle partido a todas las funcionalidades y ayudas que nos ofrece Sublime Text.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Un abrazo&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/4650192150544399258/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2014/07/usando-sublime-text-y-instalando-el.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/4650192150544399258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/4650192150544399258'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2014/07/usando-sublime-text-y-instalando-el.html' title='Usando Sublime Text y instalando el package control.'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGZCtT9-VulAdNsHRExIuKA_4lsSEG5OJ8px9w2v1-THD0Ca6_NFaih1SsmpH4PLI-htolEpADVZ8xaI6eiWReFOcfYLy0i9tPm55xYxLX9hADEXdmKHIdMDO34JtkmesMsdg00ncOh-Q/s72-c/a1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-3340226684490545529</id><published>2014-06-17T17:01:00.003+02:00</published><updated>2014-06-17T18:26:42.005+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ASP .NET MVC 3"/><category scheme="http://www.blogger.com/atom/ns#" term="ASP .NET MVC4"/><category scheme="http://www.blogger.com/atom/ns#" term="Error"/><category scheme="http://www.blogger.com/atom/ns#" term="notificaciones"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2012"/><title type='text'>Compilando vistas de MVC antes de ejecutarlas</title><content type='html'>Si trabajas con Asp .Net MVC seguro que te has topado que tu proyecto compila perfectamente en Visual Studio pero si esta vista tiene un error, este error no se mostrará hasta que lo veas en el navegador. Esto puede ocasionarte problemas, perdidas de tiempo al compilar algo que está fallando o un dolor de cabeza muy grande en producción, para entenderlo mejor vamos al código!&lt;br /&gt;
&lt;br /&gt;
Supongamos que tenemos la vista siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: html&quot;&gt;

@{
    ViewBag.Title = &quot;Home Page&quot;;
    var mensaje = &quot;Aqui va mi mensaje&quot;;
}
@section featured {
    &lt;section class=&quot;featured&quot;&gt;
        &lt;div class=&quot;content-wrapper&quot;&gt;
            &lt;hgroup class=&quot;title&quot;&gt;
                &lt;h1&gt;@ViewBag.Title.&lt;/h1&gt;
                &lt;h2&gt;@ViewBag.Message&lt;/h2&gt;
            &lt;/hgroup&gt;
        &lt;/div&gt;
    &lt;/section&gt;
}
&lt;h3&gt;Compilando vistas en MVC
&lt;/h3&gt;
&lt;h4&gt;@mensajes&lt;/h4&gt;


&lt;/pre&gt;
&lt;br /&gt;
Si vemos el código, veremos que es una vista simple y que en la línea 3 declaramos una variable que se llama &lt;b&gt;&quot;mensaje&quot;&lt;/b&gt; en la cual almacenaremos un string. Luego si nos vamos a la linea 17, &amp;nbsp;llamamos a esa variable pero escribiéndola mal &lt;b&gt;&quot;mensajes&quot;&lt;/b&gt;. Si damos a ejecutar el Visual Studio no nos bota ningún error y sólo este error se muestra cuando se muestra la vista ya en ejecución.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyaXeLTiNlRncrguD1ps1o84GYd_icges7b7vIngzw0qQOLS9fB57bxTxYiMdUM-R8P6XEraDhj62SsVsgAi5LLjKfxpZBeECjzvCSZZF2s-xhHuV8orP8R7cevkM8EnMaCDKEDKu3LXA/s1600/build1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyaXeLTiNlRncrguD1ps1o84GYd_icges7b7vIngzw0qQOLS9fB57bxTxYiMdUM-R8P6XEraDhj62SsVsgAi5LLjKfxpZBeECjzvCSZZF2s-xhHuV8orP8R7cevkM8EnMaCDKEDKu3LXA/s1600/build1.png&quot; height=&quot;360&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;El Visual Studio compila satisfactoriamente&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9W-Y4HPGp7e3EGDZyqMvaqt27Q4JH-AzVUriQ5en3ULJNsGWPNYkSpcXLVZj2qsn_nszbfrxYLiAqL7pM8cXvx7nKInNjJzEKxXrI9vG-mL_N1oRpGwIIGEQIIipZdNL1R34qrj5KmzA/s1600/build2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9W-Y4HPGp7e3EGDZyqMvaqt27Q4JH-AzVUriQ5en3ULJNsGWPNYkSpcXLVZj2qsn_nszbfrxYLiAqL7pM8cXvx7nKInNjJzEKxXrI9vG-mL_N1oRpGwIIGEQIIipZdNL1R34qrj5KmzA/s1600/build2.png&quot; height=&quot;218&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: inherit; font-size: x-small;&quot;&gt;El error sólo se muestra en ejecución&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Como ven Visual Studio no nos indica que la vista está fallando lo cual nos puede traer problemas más adelante, ya que nadie sabrá que esa página esta mal hasta que la encuentren en tiempo de ejecución. Felizmente VS nos permite configurar esto, lamentablemente esto se logra editando el archivo del proyecto, para lo cual tenemos que hacer lo siguiente:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
1- Ir al explorador de soluciones, seleccionar el proyecto que queremos editar, darle click derecho y seleccionar &quot;Unload Project&quot;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib43epDD6wBP3lKhUq68jRvvJzjvUC-immPdY3CETi5qZuiQcUivGHye9D3Bp9HRrNOm50Zonlh0B6cgG8JOfdvoLGsWOf2V0ARCo2DqAPp3HFwfHVHSLsn1WX6QkPInRe34tmBdLu2rY/s1600/b3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib43epDD6wBP3lKhUq68jRvvJzjvUC-immPdY3CETi5qZuiQcUivGHye9D3Bp9HRrNOm50Zonlh0B6cgG8JOfdvoLGsWOf2V0ARCo2DqAPp3HFwfHVHSLsn1WX6QkPInRe34tmBdLu2rY/s1600/b3.png&quot; height=&quot;380&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
2- Una vez descargado el proyecto le das click derecho y seleccionar &quot;Edit [Nombre del proyecto]&quot;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkG6lcIB1jDB_YOuPK_TQpK8BdQW9HMBVNze539WXP5cBg92U2QhEeRxRPgC8y-ez_MIzeM92DbP8ZGvJPpmKyQWOel4407BLRIjLv05tHWYog7-P06TU8wXfazhNhcGUf10VsxW2ohmk/s1600/b4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkG6lcIB1jDB_YOuPK_TQpK8BdQW9HMBVNze539WXP5cBg92U2QhEeRxRPgC8y-ez_MIzeM92DbP8ZGvJPpmKyQWOel4407BLRIjLv05tHWYog7-P06TU8wXfazhNhcGUf10VsxW2ohmk/s1600/b4.png&quot; height=&quot;202&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
3- Despues de esto se abré el proyecto para editarlo, buscamos el tag &quot;&lt;b&gt;MVCBuildViews&lt;/b&gt;&quot; (que por defecto tiene el valor a false) y lo cambiamos a &lt;b&gt;true &lt;/b&gt;y le damos a guardar.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3BI0IdhiKxJU_BAlD6yCMhZ4ygT99vy_D1pNQgA1Cedyx7iKmKvA9W685YQCjUqUtjZ01HONMJnbTqnrPsezovYjTKMCIBYg_qxsTuiJ6lZcyB5xmz-bZKcLqPhX-Zoe6awLYUBgl-YI/s1600/b5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3BI0IdhiKxJU_BAlD6yCMhZ4ygT99vy_D1pNQgA1Cedyx7iKmKvA9W685YQCjUqUtjZ01HONMJnbTqnrPsezovYjTKMCIBYg_qxsTuiJ6lZcyB5xmz-bZKcLqPhX-Zoe6awLYUBgl-YI/s1600/b5.png&quot; height=&quot;193&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
4. Por ùltimo volvemos al explorador de soluciones, seleccionamos el proyecto modificado, le damos click derecho y seleccionamos la opción &quot;Reload Project&quot;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuKB25s28RbD6ClHv-GJ3BV4mqsQZKrRj59ars4oxGTvHwCPtLY9ZqB-yweVpszI66-H2uMw8jh-MFzoeGz3Qfoa38CnlC9Sqde-Kujc8iAkPEN4YTNHi9omMX8JGZYIn_i2YAmisvuX8/s1600/b6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuKB25s28RbD6ClHv-GJ3BV4mqsQZKrRj59ars4oxGTvHwCPtLY9ZqB-yweVpszI66-H2uMw8jh-MFzoeGz3Qfoa38CnlC9Sqde-Kujc8iAkPEN4YTNHi9omMX8JGZYIn_i2YAmisvuX8/s1600/b6.png&quot; height=&quot;128&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Con esto ya tenemos configurado nuestro proyecto para que VS compile nuestras vistas y nos ahorremos dolores de cabezas y collejas inesperadas en producción. Si intentas compilar la solución ahora Visual Studio te mostrará el error en la vista.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA8beoOKQBAvsd49vHxxxwcomciHvhvCuf-mompMhK2R2xZ9KO41D6moxu7cFVSHpfwpQXUR2YcEUiDss1xfz-8YM5nRZyY-DNP8mQlsLYYMOiqthkn7aPlcQFwb7TNVLp0NEJKKVUVHA/s1600/b8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA8beoOKQBAvsd49vHxxxwcomciHvhvCuf-mompMhK2R2xZ9KO41D6moxu7cFVSHpfwpQXUR2YcEUiDss1xfz-8YM5nRZyY-DNP8mQlsLYYMOiqthkn7aPlcQFwb7TNVLp0NEJKKVUVHA/s1600/b8.png&quot; height=&quot;232&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Espero les sirva, &amp;nbsp;hasta la próxima.&lt;/div&gt;

&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/3340226684490545529/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2014/06/compilando-vistas-de-mvc-antes-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/3340226684490545529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/3340226684490545529'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2014/06/compilando-vistas-de-mvc-antes-de.html' title='Compilando vistas de MVC antes de ejecutarlas'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyaXeLTiNlRncrguD1ps1o84GYd_icges7b7vIngzw0qQOLS9fB57bxTxYiMdUM-R8P6XEraDhj62SsVsgAi5LLjKfxpZBeECjzvCSZZF2s-xhHuV8orP8R7cevkM8EnMaCDKEDKu3LXA/s72-c/build1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-1065389255773469824</id><published>2014-06-10T17:09:00.001+02:00</published><updated>2014-06-10T17:10:33.135+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c#"/><category scheme="http://www.blogger.com/atom/ns#" term="Documentación"/><category scheme="http://www.blogger.com/atom/ns#" term="frontEnd"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><title type='text'>Documentando código javascript</title><content type='html'>Si ya llevas un tiempo en el desarrollo de aplicaciones web, te darás cuenta la evolución e importancia que esta pegando la parte de FrontEnd. Antes se usaba código javascript para lo justo, pero poco a poco ha ido ganando muchas importancia, lo cual genera archivos de js grandes y algunos hasta complejos, con lo que viene bien tenerlos documentados para que la gente que use tu función pueda ver de que se trata y que parámetros necesita.&lt;br /&gt;
&lt;br /&gt;
Para documentar las funciones javascript es casi tan simple como lo haciamos en c#, pero en lugar de poner los comentarios arriba del método o función como lo haciamos en c#, se tiene que hacer dentro de ella.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;i&gt;Ejemplo: Como se comenta el código en c#&lt;/i&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYipZUqo69KvhCcamFpisnz6QZbO00SAVvR8qtUQI7NqrsvE68yS9sUOoKVQQ22Ich7NUMi0h6gXiv8HTweudW_dJjy8e2wHLh1HOcymaU4v-fodIjziQYT-RnB4AUoa49eonRrg-kNM4/s1600/comentarioback.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYipZUqo69KvhCcamFpisnz6QZbO00SAVvR8qtUQI7NqrsvE68yS9sUOoKVQQ22Ich7NUMi0h6gXiv8HTweudW_dJjy8e2wHLh1HOcymaU4v-fodIjziQYT-RnB4AUoa49eonRrg-kNM4/s1600/comentarioback.png&quot; height=&quot;118&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;b&gt;&lt;u&gt;&lt;i&gt;Ejemplo: Como se comenta el código en javascript&lt;/i&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/u&gt;&lt;/b&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp37si8xGtPABgQHq9Rt045FO8IUZPYXXxC216qXviPjbhhqAYjt8IMOxz0uXMZj8XeaDsV_-3PlCb-GvjN6BBylQUnbedmz7KGcIB8E9YoJLI8ZvGFCE_6xYiOWSYpwtpy-UDP7uw9Dk/s1600/comentariofront.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp37si8xGtPABgQHq9Rt045FO8IUZPYXXxC216qXviPjbhhqAYjt8IMOxz0uXMZj8XeaDsV_-3PlCb-GvjN6BBylQUnbedmz7KGcIB8E9YoJLI8ZvGFCE_6xYiOWSYpwtpy-UDP7uw9Dk/s1600/comentariofront.png&quot; height=&quot;126&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;b&gt;&lt;u&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/u&gt;&lt;/b&gt;
Es más, si te das cuenta podemos indicarles al parámetro el tipo de valor que tendrá. Con esto, cada vez que llames a tu función js, en mi caso, SaveCustomer, verás que te sale la documentación de la función.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzxftFdCQBPYJYIQ2zcyi6Tk6GwUbiiaBesLtDGndwf31FfTsgu9GReghKEiA9tS3hdEZqh2Rzq4NpChdKh_PKs-7TcxMp7drJqaJpWFLrI1HcBQM8CNJSB_tbsW5N45KuCZvWTXohKBo/s1600/intelligentz.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzxftFdCQBPYJYIQ2zcyi6Tk6GwUbiiaBesLtDGndwf31FfTsgu9GReghKEiA9tS3hdEZqh2Rzq4NpChdKh_PKs-7TcxMp7drJqaJpWFLrI1HcBQM8CNJSB_tbsW5N45KuCZvWTXohKBo/s1600/intelligentz.png&quot; height=&quot;100&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Espero que les sea útil, hasta la próxima :)</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/1065389255773469824/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2014/06/documentando-codigo-javascript.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/1065389255773469824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/1065389255773469824'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2014/06/documentando-codigo-javascript.html' title='Documentando código javascript'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYipZUqo69KvhCcamFpisnz6QZbO00SAVvR8qtUQI7NqrsvE68yS9sUOoKVQQ22Ich7NUMi0h6gXiv8HTweudW_dJjy8e2wHLh1HOcymaU4v-fodIjziQYT-RnB4AUoa49eonRrg-kNM4/s72-c/comentarioback.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-1178812169799521384</id><published>2014-05-22T10:31:00.000+02:00</published><updated>2014-05-22T10:33:02.924+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Documentación"/><category scheme="http://www.blogger.com/atom/ns#" term="Tips"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio"/><title type='text'>Mostrar el número de lineas en el editor de Visual Studio</title><content type='html'>Hola, les dejo un post cortito que puede ser útil sobre todo para gente nueva que empieza con Visual Studio, aunque valido tambien para gente como nosotros, que llevamos mucho tiempo en ello y se nos olvidó como era.&lt;br /&gt;
&lt;br /&gt;
Personalmente me gusta tener el número de líneas al lado de mi código, entonces al lío.&lt;br /&gt;
&lt;br /&gt;
- Vamos al menú Tools/ Options (Herramientas/Opciones si tienes el VS en español)&lt;br /&gt;
- Seleccionamos Text Editor y desplegamos, luego seleccionamos All Languages y por ultimo damos check a Line Numbers.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMm9qa1beLBd5zbkhP_r6UY-XWx20co_zU83qz4IBJOwJdrEV0LBgxYRSNkhKYLY5w-Bef0R_eKACnEmvfnwI4cZ5DQ8iIMC8hXcfD_UJwidW7zjSyDf-HPCIH9XaxWSvKuoRef4qi2fM/s1600/menu.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMm9qa1beLBd5zbkhP_r6UY-XWx20co_zU83qz4IBJOwJdrEV0LBgxYRSNkhKYLY5w-Bef0R_eKACnEmvfnwI4cZ5DQ8iIMC8hXcfD_UJwidW7zjSyDf-HPCIH9XaxWSvKuoRef4qi2fM/s1600/menu.png&quot; height=&quot;185&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Damos aceptar y eso es todo.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Editor si números de líneas en el código:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzENNvKLtILU0WzrNk3r2cpM8H9Ew543L_cqNk_icpsQPasPWNaqpKZgvggaJ2cExQnJCqWqRNZHqzdDJEMdaNjIY7xTicS4MzAfEMUh3bg4gbssvOv7MyP_TVZyaHHOcasKfcKQempNY/s1600/sinnumeros.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzENNvKLtILU0WzrNk3r2cpM8H9Ew543L_cqNk_icpsQPasPWNaqpKZgvggaJ2cExQnJCqWqRNZHqzdDJEMdaNjIY7xTicS4MzAfEMUh3bg4gbssvOv7MyP_TVZyaHHOcasKfcKQempNY/s1600/sinnumeros.png&quot; height=&quot;275&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Editor con números de líneas en el código:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgi2vxZpjh85T_Xci_p7dUC9Cq8vjKeM4Qge69SiYCDhOEn3JClMpPBNTIjqaNFNMInGO9iCeqB-9PKHBwaUDbUG36NVbPXtO12QdQe9mrukW7_Q8AGY3G2GBNblk4QpLIwkQURYxwUwBE/s1600/connumeros.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgi2vxZpjh85T_Xci_p7dUC9Cq8vjKeM4Qge69SiYCDhOEn3JClMpPBNTIjqaNFNMInGO9iCeqB-9PKHBwaUDbUG36NVbPXtO12QdQe9mrukW7_Q8AGY3G2GBNblk4QpLIwkQURYxwUwBE/s1600/connumeros.png&quot; height=&quot;257&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;b&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;
Espero les sirve de algo, hasta la próxima :)&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/1178812169799521384/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2014/05/mostrar-el-numero-de-lineas-en-el.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/1178812169799521384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/1178812169799521384'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2014/05/mostrar-el-numero-de-lineas-en-el.html' title='Mostrar el número de lineas en el editor de Visual Studio'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMm9qa1beLBd5zbkhP_r6UY-XWx20co_zU83qz4IBJOwJdrEV0LBgxYRSNkhKYLY5w-Bef0R_eKACnEmvfnwI4cZ5DQ8iIMC8hXcfD_UJwidW7zjSyDf-HPCIH9XaxWSvKuoRef4qi2fM/s72-c/menu.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-123909155902255803</id><published>2014-04-24T15:18:00.002+02:00</published><updated>2014-04-24T15:23:53.212+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ASP .NET MVC 3"/><category scheme="http://www.blogger.com/atom/ns#" term="Documentación"/><category scheme="http://www.blogger.com/atom/ns#" term="frontEnd"/><category scheme="http://www.blogger.com/atom/ns#" term="JQUERY"/><category scheme="http://www.blogger.com/atom/ns#" term="js"/><category scheme="http://www.blogger.com/atom/ns#" term="Kendo"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2012"/><title type='text'>Activando el Intellisense de Javascript en Visual Studio 2012 - un poco de kendo</title><content type='html'>Ya que he empezado a usar habitualmente Visual Studio 2012 en los últimos días, me he topado con características muy interesantes como es el Intellisense para Javascript. A lo mejor este artículo va algo tarde (ya que VS2012 lleva mucho tiempo entre nosotros), pero de seguro mucha gente aún no ha tenido la oportunidad de trabajar con él como hasta poco era mi caso. Pero bueno, para no extenderme más, empezamos!
&lt;br /&gt;
&lt;br /&gt;
Cuando creamos un proyecto de MVC4 en Visual Studio 2012, en la carpeta Scripts de tu proyecto web hay un js llamado &lt;i&gt;&lt;b&gt;_references.js
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjucpQ5u6Ew5b4990lFctiJW3zzdxEHVFhZvVPxt3yceBNb8NZVD6uZa0H8FIsJx9SMi0OFbYqpqZ1Y2G5IJw5-HCCHxhhkmPx0_K7Mr2ySK5L8tMOxv-jXX3lskK_vbn2lWDYonrTKtmA/s1600/scripts.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjucpQ5u6Ew5b4990lFctiJW3zzdxEHVFhZvVPxt3yceBNb8NZVD6uZa0H8FIsJx9SMi0OFbYqpqZ1Y2G5IJw5-HCCHxhhkmPx0_K7Mr2ySK5L8tMOxv-jXX3lskK_vbn2lWDYonrTKtmA/s1600/scripts.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Si abrimos este archivo nos toparemos con algo parecido a esto:
&lt;br /&gt;
&lt;pre class=&quot;brush: js&quot;&gt; 
/// &lt;reference path=&quot;jquery-1.8.2.js&quot;&gt;&lt;/reference&gt;
/// &lt;reference path=&quot;jquery-ui-1.8.24.js&quot;&gt;&lt;/reference&gt;
/// &lt;reference path=&quot;jquery.validate.js&quot;&gt;&lt;/reference&gt; 
/// &lt;reference path=&quot;jquery.validate.unobtrusive.js&quot;&gt;&lt;/reference&gt;
/// &lt;reference path=&quot;knockout-2.2.0.debug.js&quot;&gt;&lt;/reference&gt;
/// &lt;reference path=&quot;modernizr-2.6.2.js&quot;&gt;&lt;/reference&gt;
&lt;/pre&gt;
&lt;br /&gt;
Este js lo que hace es indicar al Visual Studio que archivos js tendrán Intellisense cuando los referenciemos. Pero ¿qué pasa si queremos tener Intellisense en un js que no está referencia en este archivo? como por ejemplo si queremos tener Intellisense si queremos usar&amp;nbsp;&lt;a href=&quot;http://www.telerik.com/kendo-ui&quot; target=&quot;_blank&quot;&gt;Kendo&lt;/a&gt;. La solución es simple, sólo editamos el archivo&amp;nbsp;&lt;b style=&quot;font-style: italic;&quot;&gt;_references.js &lt;/b&gt;y añadimos la referencia a los archivos de js de Kendo que querramos que hagan uso del Intellisense cuando los referenciemos. En mi caso añadimos tres referencias más:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;kendo/jquery.js&lt;/li&gt;
&lt;li&gt;kendo/kendo.web.js&lt;/li&gt;
&lt;li&gt;kendo.aspnetmvc.js&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Entonces el&amp;nbsp;&lt;b style=&quot;font-style: italic;&quot;&gt;_references.js &lt;/b&gt;quedaría de la siguiente manera (linea 7, 8 y 9 del código)&lt;br /&gt;
&lt;pre class=&quot;brush: js&quot;&gt; 
/// &lt;reference path=&quot;jquery-1.8.2.js&quot;&gt;&lt;/reference&gt;
/// &lt;reference path=&quot;jquery-ui-1.8.24.js&quot;&gt;&lt;/reference&gt;
/// &lt;reference path=&quot;jquery.validate.js&quot;&gt;&lt;/reference&gt; 
/// &lt;reference path=&quot;jquery.validate.unobtrusive.js&quot;&gt;&lt;/reference&gt;
/// &lt;reference path=&quot;knockout-2.2.0.debug.js&quot;&gt;&lt;/reference&gt;
/// &lt;reference path=&quot;modernizr-2.6.2.js&quot;&gt;&lt;/reference&gt;
/// &lt;reference path=&quot;kendo/jquery.js&quot;&gt;&lt;/reference&gt;
/// &lt;reference path=&quot;kendo/kendo.web.js&quot;&gt;&lt;/reference&gt;
/// &lt;reference path=&quot;kendo/kendo.aspnetmvc.js&quot;&gt;&lt;/reference&gt;
&lt;/pre&gt;
&lt;br /&gt;
A continuación muestro un par de imagenes de un js, una sin el intellisense js de Kendo, y otra cuando ya por fin el reference.js ya ha sido configurado.&lt;br /&gt;
&lt;b style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b style=&quot;text-align: center;&quot;&gt;Js llamando a función Kendo sin el Intellisense: &lt;/b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&amp;nbsp;como vemos el intellisense de Javascript nisiquiera reconoce la función.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEietCu90VLL_U5CxE2UdQjzOoBSkdqCiYTtKibS-9KBBa7LIyuLSY2dHuq7W7_dwH7H-DdMV2nZwH-R5_eKd8J4LrzESCTaWc1NheapF-P3uVdP-T2-8IQM12jQt65Q5AdiemnXbuNawcA/s1600/kendosinintellisense.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEietCu90VLL_U5CxE2UdQjzOoBSkdqCiYTtKibS-9KBBa7LIyuLSY2dHuq7W7_dwH7H-DdMV2nZwH-R5_eKd8J4LrzESCTaWc1NheapF-P3uVdP-T2-8IQM12jQt65Q5AdiemnXbuNawcA/s1600/kendosinintellisense.png&quot; height=&quot;295&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;b style=&quot;text-align: center;&quot;&gt;Js llamando a función Kendo con el Intellisense: &lt;/b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;al fin el intellisense de Javascript reconoce a la función js de Kendo y nos muestra todos sus parámetros.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVFHwoNXBIFw5D2j6N0yULvDUxB5yypzjiTkUqOF5d0iDU2wjWo-FAoe26hq0t8shJ7ePXMNYLkBa0_bho6E1-2SWK_OiJ1irAiA-Os39nzs1DYkc1i9vGf-gZMGmFrZwM1l2OrluQkmg/s1600/kendoconintellisense.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVFHwoNXBIFw5D2j6N0yULvDUxB5yypzjiTkUqOF5d0iDU2wjWo-FAoe26hq0t8shJ7ePXMNYLkBa0_bho6E1-2SWK_OiJ1irAiA-Os39nzs1DYkc1i9vGf-gZMGmFrZwM1l2OrluQkmg/s1600/kendoconintellisense.png&quot; height=&quot;292&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
En el siguiente artículo mostraré la manera en la que se tiene que documentar los métodos en un js para que cuando se accedan a ellos puedas ver la información del método y la documentación de cada parámetro como se hace en c# con el summary, espero les sirva, hasta la próxima :)&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/123909155902255803/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2014/04/activando-el-intellisense-de-javascript.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/123909155902255803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/123909155902255803'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2014/04/activando-el-intellisense-de-javascript.html' title='Activando el Intellisense de Javascript en Visual Studio 2012 - un poco de kendo'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjucpQ5u6Ew5b4990lFctiJW3zzdxEHVFhZvVPxt3yceBNb8NZVD6uZa0H8FIsJx9SMi0OFbYqpqZ1Y2G5IJw5-HCCHxhhkmPx0_K7Mr2ySK5L8tMOxv-jXX3lskK_vbn2lWDYonrTKtmA/s72-c/scripts.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-1874755791338316683</id><published>2014-03-31T13:55:00.001+02:00</published><updated>2014-03-31T13:59:29.555+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Shelve"/><category scheme="http://www.blogger.com/atom/ns#" term="Team Foundation Server"/><category scheme="http://www.blogger.com/atom/ns#" term="TFS"/><category scheme="http://www.blogger.com/atom/ns#" term="Unshelve"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2012"/><title type='text'>¿Dónde está el &#39;unshelve&#39; en Visual Studio 2012?</title><content type='html'>Para los que venimos de Visual Studio 2010 o anterior, pasar al entorno de Visual Studio 2012 a veces puede ser un poquito complicado. Hoy me encontré con la necesidad de recuperar un shelve que realicé hace ya un tiempo y busco el unshelve de la manera en la que buscaba antiguamente. Así que pongo el cursor en la solución, doy click derecho y no encuentro la opción de &lt;b&gt;UNSHELVE &amp;nbsp;&lt;/b&gt;:S:S:S&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_ylnkohcVUkQ3njMPU4SS0jzX8ln2hTSwJgc3jIS_KU3D9Jp5pcDFhkQgrbiiovG9y2FuzPa79o3RMsHfN-hT9AvfvIRDryNuLvJtP5zMFjC0p_7WyaTS-KDLBZl11qN__d9zi9mjH8g/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_ylnkohcVUkQ3njMPU4SS0jzX8ln2hTSwJgc3jIS_KU3D9Jp5pcDFhkQgrbiiovG9y2FuzPa79o3RMsHfN-hT9AvfvIRDryNuLvJtP5zMFjC0p_7WyaTS-KDLBZl11qN__d9zi9mjH8g/s1600/1.png&quot; height=&quot;320&quot; width=&quot;277&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Entonces para los que se encuentren con la misma situación que yo, &amp;nbsp;aquí les muestro como encontrar la tan preciada opción de unshelve.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Te vas al &lt;b&gt;TeamExplorer -&amp;gt; Pending Changes.&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4xtui4HucKkFKPDVIOSi9tJ6IK3nkzdM_URrPWXeL5MlMGF5VJBXw8BmGJ-AgFSKWw-IRu5_6gX5vxVjs-M138eMJkRpy5S1gGWTl2dqt89Fyh0-9pfg09HYtNKzi6ENnRqYqdZEB0Gg/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4xtui4HucKkFKPDVIOSi9tJ6IK3nkzdM_URrPWXeL5MlMGF5VJBXw8BmGJ-AgFSKWw-IRu5_6gX5vxVjs-M138eMJkRpy5S1gGWTl2dqt89Fyh0-9pfg09HYtNKzi6ENnRqYqdZEB0Gg/s1600/2.png&quot; height=&quot;320&quot; width=&quot;261&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
2. Una vez que estés en la parte de&lt;b&gt; Pending Changes&lt;/b&gt;, le das click al menú de &lt;b&gt;Actions &lt;/b&gt;y le das click a la opción de &lt;b&gt;Find Shelvesets.&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAhl3fxMZWixj-OUN_c0mqM_xVBFtLnaFP8fkBTiBg999Rmv0Ce1ITZEgDo1dqBqvnZ0365OtSkdNTOsLbPXjC5nYjf1XiBqgPpOwfZNq7qWKbrG6azergnaani7GiPqVknxfdysdG-0A/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAhl3fxMZWixj-OUN_c0mqM_xVBFtLnaFP8fkBTiBg999Rmv0Ce1ITZEgDo1dqBqvnZ0365OtSkdNTOsLbPXjC5nYjf1XiBqgPpOwfZNq7qWKbrG6azergnaani7GiPqVknxfdysdG-0A/s1600/3.png&quot; height=&quot;192&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
3. Esta opción te redigirá a todos los shelves que tengas.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqjVvEi4LDMI324xuSt3IH5om3cPOfmv1uqSudIwCoYJuqhLhGeQ7Xxsjd_kdinyuYEFwEBPChBvHkZvG_ljMKjjbQ17xkhUjK1sSC6LC01pI-hV5YSd0iyAeEAYcCMyRqGxbslJiNQrY/s1600/4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqjVvEi4LDMI324xuSt3IH5om3cPOfmv1uqSudIwCoYJuqhLhGeQ7Xxsjd_kdinyuYEFwEBPChBvHkZvG_ljMKjjbQ17xkhUjK1sSC6LC01pI-hV5YSd0iyAeEAYcCMyRqGxbslJiNQrY/s1600/4.png&quot; height=&quot;198&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
4. Finalmente pones el curso sobre el shelve que quieras recuperar, le das click derecho y ahi encontrarás la opción de unshelve.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTH3IhdVsS2O-6TM2g06ZeXxEt72elw_8nMN1DjC9UAbkcxk9V5frfcDEk7blY02LhS0kxqwZqSHnL2Nd0fYG7UXdEUJKtosfvQnT3X8S7yuv8fCMMBkFW7DOzES27X1Av4eoWgkVi3MY/s1600/5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTH3IhdVsS2O-6TM2g06ZeXxEt72elw_8nMN1DjC9UAbkcxk9V5frfcDEk7blY02LhS0kxqwZqSHnL2Nd0fYG7UXdEUJKtosfvQnT3X8S7yuv8fCMMBkFW7DOzES27X1Av4eoWgkVi3MY/s1600/5.png&quot; height=&quot;199&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Y ya lo tienes, espero les sirva, hasta la prox !&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/1874755791338316683/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2014/03/donde-esta-el-unshelve-en-visual-studio.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/1874755791338316683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/1874755791338316683'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2014/03/donde-esta-el-unshelve-en-visual-studio.html' title='¿Dónde está el &#39;unshelve&#39; en Visual Studio 2012?'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_ylnkohcVUkQ3njMPU4SS0jzX8ln2hTSwJgc3jIS_KU3D9Jp5pcDFhkQgrbiiovG9y2FuzPa79o3RMsHfN-hT9AvfvIRDryNuLvJtP5zMFjC0p_7WyaTS-KDLBZl11qN__d9zi9mjH8g/s72-c/1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-6300705148332111454</id><published>2014-03-25T12:56:00.001+01:00</published><updated>2014-03-25T13:20:41.462+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ASP .NET MVC 3"/><category scheme="http://www.blogger.com/atom/ns#" term="css"/><category scheme="http://www.blogger.com/atom/ns#" term="frontEnd"/><category scheme="http://www.blogger.com/atom/ns#" term="html"/><category scheme="http://www.blogger.com/atom/ns#" term="JQUERY"/><category scheme="http://www.blogger.com/atom/ns#" term="js"/><category scheme="http://www.blogger.com/atom/ns#" term="MVC 4"/><category scheme="http://www.blogger.com/atom/ns#" term="notificaciones"/><title type='text'>Notificaciones no bloqueantes y bonitas: Usando ToastR</title><content type='html'>Muchas veces queremos que nuestra aplicación web muestre alertas, notificaciones, avisos y errores de una manera personalizada. El problema de las típicas notificaciones que nos ofrece js son feas y bloqueantes. Felizmente hay una libreria js que nos permite hacer estas notificaciones agradables a la vista del usuario de una manera fácil. Esta librería se llama ToastR y la puedes descargar desde &lt;a href=&quot;https://github.com/CodeSeven/toastr&quot; target=&quot;_blank&quot;&gt;Github&lt;/a&gt;. Desde aquí nos bajamos el js y el css y lo integramos a nuestro proyecto. En esa página puedes ver también toda la documentación pero en este post te lo resumo un poco :).&lt;br /&gt;
&lt;br /&gt;
- Una vez añadidos los archivos .js y .css de Toasr&lt;b&gt; (ojo, este librería hace uso de jquery, asi que tambien es necesario que esta librería este en nuestro proyecto)&lt;/b&gt; a tu proyecto creamos una nueva página html y referenciamos a la hoja de estilos, a jquery y a toastr.js:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: html&quot;&gt; 
&lt;link href=&quot;~/Content/toastr.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;
&lt;script src=&quot;~/Scripts/jquery-1.8.2.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;~/Scripts/toastr.js&quot;&gt;&lt;/script&gt;
&lt;/pre&gt;
&lt;br /&gt;
-Lo siguiente es crear unos cuantos botones dentro del body de nuestra página para ver los diferentes tipos de notificación que nos ofrece toastr.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: html&quot;&gt; 
&lt;h2&gt;
Usando ToastR&lt;/h2&gt;
&lt;input onclick=&quot;mostrarInfo();&quot; type=&quot;button&quot; value=&quot;Mostrar info&quot; /&gt;
&lt;input onclick=&quot;mostrarWarning();&quot; type=&quot;button&quot; value=&quot;Mostrar warning&quot; /&gt;
&lt;input onclick=&quot;mostrarSuccess();&quot; type=&quot;button&quot; value=&quot;Mostrar success&quot; /&gt;
&lt;input onclick=&quot;mostrarError();&quot; type=&quot;button&quot; value=&quot;Mostrar error&quot; /&gt;
&lt;/pre&gt;
&lt;br /&gt;
-Y por ultimo escribir el siguiente script en la parte final de la página (aunque puedes escribirla donde quieras, pero por temas de optimización &lt;strike&gt;post que espero escribir más adelante&lt;/strike&gt; se recomienda poner los scripts al final del todo.
&lt;br /&gt;
&lt;pre class=&quot;brush: js&quot;&gt; 
&lt;script type=&quot;text/javascript&quot;&gt;

    $(function() {
        toastr.options.closeButton = true;
    });

    function mostrarInfo() {
        //Js para mostrar una notificación del tipo info
        toastr.info(&#39;Hola Info&#39;);
    }
    
    function mostrarWarning() {
        //Js para mostrar una notificación del tipo warning
        toastr.warning(&#39;Hola este es un warning demo&#39;);
    }

    function mostrarSuccess() {
        // Js para mostrar una notificación del tipo success 
        toastr.success(&#39;Hola se ha mostrado una notificación del tipo success&#39;, &#39;Cabecera del Success&#39;);
    }    

    function mostrarError() {
        // Js para mostrar una notificación del tipo error
        toastr.error(&#39;Hola, aqui se mostraría un error&#39;, &#39;Cabecera del error&#39;);
    }
&lt;/script&gt;
&lt;/pre&gt;
&lt;br /&gt;
Resumiendo,&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Descargamos el js y css de ToastR y lo añadimos al proyecto.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Luego creamos una nueva página y lo referenciamos al proyecto.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Creamos cuatro botones, cada con una función onclick() diferente.&lt;/li&gt;
&lt;li&gt;Y por ultimo creamos el script necesario para ejecutar la aplicación.

En el &lt;b&gt;&lt;i&gt;documento.ready()&lt;/i&gt;&lt;/b&gt; de la página ponemos el siguiente código:&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: js&quot;&gt; 
 toastr.options.closeButton = true;
&lt;/pre&gt;
&lt;br /&gt;
Esto nos indica que las notificación podrán mostrar el boton de Cierre. En caso no lo quieras mostrar, le pones false y ya está :).&lt;br /&gt;
&lt;br /&gt;
Y bueno el resultado es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Notificación Info&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPbNy2WQECbYQkmZUDmtukSWlnq3GmzaMWMUC_7gpUpjsLJP3WwbKLJP0tfufcHeOUPW7ggHsYRZ-PVmXgf3kHHsTLayP_u2BO2mfKpNb1hGUJxdTM3WY-8Z319M0rTdvD1K6btGTiHtA/s1600/info.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPbNy2WQECbYQkmZUDmtukSWlnq3GmzaMWMUC_7gpUpjsLJP3WwbKLJP0tfufcHeOUPW7ggHsYRZ-PVmXgf3kHHsTLayP_u2BO2mfKpNb1hGUJxdTM3WY-8Z319M0rTdvD1K6btGTiHtA/s1600/info.png&quot; height=&quot;70&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;b&gt;&lt;u&gt;Notificación Warning&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioBDDfJBRBWpAhgskb_rNGaOSVwCxLXGNnhAdDt8RA9NqXF5jpsmLNldzeKPYwSIgN4otpLu64iD8ayZtcg9gIXaqj41XZkSt2wRSgls1Qaoxy21opwKg3PAaYNFRsXSn8nkC8Xvb8Ouw/s1600/warning.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioBDDfJBRBWpAhgskb_rNGaOSVwCxLXGNnhAdDt8RA9NqXF5jpsmLNldzeKPYwSIgN4otpLu64iD8ayZtcg9gIXaqj41XZkSt2wRSgls1Qaoxy21opwKg3PAaYNFRsXSn8nkC8Xvb8Ouw/s1600/warning.png&quot; height=&quot;72&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;b&gt;&lt;u&gt;Notificación Succcess&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8-gmxst4sYOE0pM96mPQ6J9XEuDBqw1jCPDtG-UzrE_C4hJkOJ_ssuf9f2KdfGTEf_GpS32WUwK26BOWAZShhc4DP0EFyxIG_XU_7KpRfjv6oNVFmXdhkGHd9XIWKJJzmhPcqgo89jj0/s1600/success.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8-gmxst4sYOE0pM96mPQ6J9XEuDBqw1jCPDtG-UzrE_C4hJkOJ_ssuf9f2KdfGTEf_GpS32WUwK26BOWAZShhc4DP0EFyxIG_XU_7KpRfjv6oNVFmXdhkGHd9XIWKJJzmhPcqgo89jj0/s1600/success.png&quot; height=&quot;76&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;b&gt;&lt;u&gt;Notificación Error&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5CiTSgL217FBE1ehswXDnCm0OmW8gx5qjOJykLEg8Osqn8su77sDu2KwEJKqZDeKQzjcq09tPP3F1HEeUWS04x0akAxzSl0hHphl78CNjVMAxhwwl34EyWB7G6zvO5yTCHDoQ3-BR9AE/s1600/error.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5CiTSgL217FBE1ehswXDnCm0OmW8gx5qjOJykLEg8Osqn8su77sDu2KwEJKqZDeKQzjcq09tPP3F1HEeUWS04x0akAxzSl0hHphl78CNjVMAxhwwl34EyWB7G6zvO5yTCHDoQ3-BR9AE/s1600/error.png&quot; height=&quot;74&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Como vean Toasr nos permite mostrar notificaciónes bonitas de una manera fácil. Además tambien ofrece otras propiedas para mostrar tu notificación de diferentes maneras, posiciones y animaciónes. Todo esto lo puedes ver en la documentación. Aquí te dejo un ejemplo&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;http://codeseven.github.io/toastr/demo.html&quot; target=&quot;_blank&quot;&gt;http://codeseven.github.io/toastr/demo.html&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Que lo disfrutes, hasta la próxima.&lt;/div&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/6300705148332111454/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2014/03/notificaciones-no-bloqueantes-y-bonitas.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/6300705148332111454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/6300705148332111454'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2014/03/notificaciones-no-bloqueantes-y-bonitas.html' title='Notificaciones no bloqueantes y bonitas: Usando ToastR'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPbNy2WQECbYQkmZUDmtukSWlnq3GmzaMWMUC_7gpUpjsLJP3WwbKLJP0tfufcHeOUPW7ggHsYRZ-PVmXgf3kHHsTLayP_u2BO2mfKpNb1hGUJxdTM3WY-8Z319M0rTdvD1K6btGTiHtA/s72-c/info.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-4234407848978707507</id><published>2014-03-21T11:36:00.000+01:00</published><updated>2014-03-21T12:01:33.851+01:00</updated><title type='text'>LLamar a una función js desde un controllador en Asp .Net MVC</title><content type='html'>Al fin tengo el blogspot libre y sin bloqueos desde el curro =)... Este post va para responder la pregunta a alguién que me pregunto hace un tiempo como hacer esto.&lt;br /&gt;
&lt;br /&gt;
Aunque la verdad es raro querer ejecutar una funcion js desde un controlador, aquí muestro la manera en que&lt;b&gt; &quot;yo&quot;&lt;/b&gt; como lo haría.&lt;br /&gt;
&lt;br /&gt;
1. Crearia una clase que tendra como propiedad un string que tendra el código js que queremos ejecutar:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: c#&quot;&gt; 
    public class DemoJs
    {
        public string JsFunction { get; set; }
    }&lt;/pre&gt;
&lt;br /&gt;
2. Luego sigo con el controlador, en mi caso es un ejemplo simple ya que solo quiero llamar a la funcion js.&lt;br /&gt;
&lt;pre class=&quot;brush: c#&quot;&gt; 
    public class DemoController : Controller
    {
        //
        // GET: /Demo/
        public ActionResult Index()
        {
            var demoJs = new DemoJs();
            demoJs.JsFunction = &quot;$( window ).load(function() { DisparaAlert();}); &quot;;
            return View(demoJs);
        }
    }    
&lt;/pre&gt;
&lt;br /&gt;
Aquí la explicación, inicializo el objeto y en la propiedad JsFunction escribo el código js que quiero ejecutar, en este caso lo que hago es disparar la función &quot;DisparaAlert()&quot; cada vez que la página ha sido cargada.&lt;br /&gt;
&lt;br /&gt;
3.Genero la vista de este ActionResult&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: html&quot;&gt;@model Demo.Models.DemoJs

@{
    ViewBag.Title = &quot;Index&quot;;
    Layout = &quot;~/Views/Shared/_Layout.cshtml&quot;;
}

&lt;h2&gt;
Index&lt;/h2&gt;
&lt;script src=&quot;~/Scripts/jquery-1.8.2.min.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;

    @Model.JsFunction;

    function DisparaAlert() {
        alert(&#39;hola&#39;);
    }

&lt;/script&gt;
&lt;/pre&gt;
La vista lo que hace es llamar a jquery y luego más abajo en la sección js de la página acceder al modelo de la vista y mostrar la propiedad que tenia la funcion js que queriamos que se ejecute en nuestra aplicación. Como la función que seteamos en esta propiedad dijimos que se ejecute la función DisparAlert cada vez que se cargue la página, en la parte de js de la vista tambien declaramos esta función y dentro de ella ponemos un alert sólo para mostrar que esto funciona.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgB6k9BCexwJTIGxJRM9SKgOipoDLVLdrEricdxAJK3C6jTu5mMdYFT93sb_Dv-rzLbt_A5W5jYeDXXhyphenhyphenVQJ9gkyAkxtVEamJQecexGbgIVHiSiRkRZPieqWuX74hPABmNVMvM_mRdkAjQ/s1600/blog1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgB6k9BCexwJTIGxJRM9SKgOipoDLVLdrEricdxAJK3C6jTu5mMdYFT93sb_Dv-rzLbt_A5W5jYeDXXhyphenhyphenVQJ9gkyAkxtVEamJQecexGbgIVHiSiRkRZPieqWuX74hPABmNVMvM_mRdkAjQ/s1600/blog1.png&quot; height=&quot;195&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Como ven es un artificio, aunque como dije al principio del post, me parece raro llamar una función js desde un controlador pero como en MVC no tenemos un método RegisterClientScriptBlock o parecidos, esta puede ser una manera. Espero que les sirva de algo , hasta la prox !
</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/4234407848978707507/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2014/03/llamar-una-funcion-js-desde-un.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/4234407848978707507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/4234407848978707507'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2014/03/llamar-una-funcion-js-desde-un.html' title='LLamar a una función js desde un controllador en Asp .Net MVC'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgB6k9BCexwJTIGxJRM9SKgOipoDLVLdrEricdxAJK3C6jTu5mMdYFT93sb_Dv-rzLbt_A5W5jYeDXXhyphenhyphenVQJ9gkyAkxtVEamJQecexGbgIVHiSiRkRZPieqWuX74hPABmNVMvM_mRdkAjQ/s72-c/blog1.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-1612248229338949799</id><published>2013-09-22T20:46:00.000+02:00</published><updated>2013-09-22T20:46:05.284+02:00</updated><title type='text'>Aprendiendo Node.js (I)</title><content type='html'>Ya era un tiempo que tenía olvidado este blog por lo que espero volver con fuerza con nuevos temas que empiezan o ya llevan algún tiempo sonando con fuerza. Y que mejor que enseñando algo de Node.js.&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Por si no saben que es, es una plataforma de programación en Javascript especializada en el manejo de eventos desde el servidor. Trabaja sobre V8, un motor de Javascript creado por Google optimizado para la web con lo cual la velocidad y escalibilidad de las aplicaciones está asegurada. Si quieres más teoría puedes pinchar &lt;a href=&quot;http://en.wikipedia.org/wiki/Nodejs&quot; target=&quot;_blank&quot;&gt;aquí&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Pero bueno al lío. Empezamos instalando Node.js asi que nos dirigimos aquí&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://nodejs.org/download/&quot; target=&quot;_blank&quot;&gt;http://nodejs.org/download/&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiceCMOJxYfBRa3cW3M9VIcYnCuSxEzrb62w50idFRumbeeqfOmEJFROxmy44o4hCbHxtdKnA8y0L1GVQrz3b3HaQQ1ZPTIIiNwvbRm3dafnkL4ltxjSJ99y_zPfBqGKWPS8EY5XxFwOYA/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiceCMOJxYfBRa3cW3M9VIcYnCuSxEzrb62w50idFRumbeeqfOmEJFROxmy44o4hCbHxtdKnA8y0L1GVQrz3b3HaQQ1ZPTIIiNwvbRm3dafnkL4ltxjSJ99y_zPfBqGKWPS8EY5XxFwOYA/s320/1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Node.js puede trabajar bajo Windows, Linux, IOS y otros sistemas operativos. En mi casa descargamoos el instalador para Windows, damos click y empieza el proceso de instalación:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOosr6Q6m4LPPan20BjracT1yFCHTWfClso7M0h34i9VlzQqTJyVIYVCnp6hMtdbBC4ishHveH-VIal522awax46xcrkCeQ13znZYQ8zWB5yE-KidvGKCl78pMtFEqA6bkzSeD4qDsyzo/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOosr6Q6m4LPPan20BjracT1yFCHTWfClso7M0h34i9VlzQqTJyVIYVCnp6hMtdbBC4ishHveH-VIal522awax46xcrkCeQ13znZYQ8zWB5yE-KidvGKCl78pMtFEqA6bkzSeD4qDsyzo/s320/2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3jAur77d9h0HsP5WJuVvSuL0GUkxYB96o0HSfCdrj6pQL0qnDQ7v30RAszPwIBWEd7zP1nR3OjAmtXW6r9oe7NkHtMGfgclD2UFN91KHp3j-dK6gES_0z0m62SZhA2atHMDDEsN2Dqac/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3jAur77d9h0HsP5WJuVvSuL0GUkxYB96o0HSfCdrj6pQL0qnDQ7v30RAszPwIBWEd7zP1nR3OjAmtXW6r9oe7NkHtMGfgclD2UFN91KHp3j-dK6gES_0z0m62SZhA2atHMDDEsN2Dqac/s320/3.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiag6WQGMded9I0J921-qC_F4i8d8mcP0-0RRVEUd1iPoJo246FmxqpfELCQSvYWcfj27VZkYkSJcX_u_pGsgK5Lo08kbCcR68q4wiEGfW_FAB3YleY_OKJbkcrldJvlL5mm-m_ss9sUk/s1600/4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiag6WQGMded9I0J921-qC_F4i8d8mcP0-0RRVEUd1iPoJo246FmxqpfELCQSvYWcfj27VZkYkSJcX_u_pGsgK5Lo08kbCcR68q4wiEGfW_FAB3YleY_OKJbkcrldJvlL5mm-m_ss9sUk/s320/4.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div&gt;
Una vez instalado, para ver que Node.js ya está disponible en nuestro ordenador vamos e ejecutar (Tecla Windows + R) y escribimos cmd o te vas directamente a símbolos del sistema&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibOk_Fwsf9ovOW1V9gOb-Mqx_p3_PPlFNIlibkM17ooRFRM9VTzvGxVsQWe9XAiCrO27VMREiaVCez9Cc4wFrw53gS7y4XBJL2Dnft7md3Xc1bTmTIqxwHAUunuDPHMRvDU1lpvhyDwcA/s1600/5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;165&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibOk_Fwsf9ovOW1V9gOb-Mqx_p3_PPlFNIlibkM17ooRFRM9VTzvGxVsQWe9XAiCrO27VMREiaVCez9Cc4wFrw53gS7y4XBJL2Dnft7md3Xc1bTmTIqxwHAUunuDPHMRvDU1lpvhyDwcA/s320/5.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Escribimos node y damos enter, debería aparecer &#39;&amp;gt;&#39; como se muestra en la imagen&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2kHb54_BRpiko5aMG0GPrr2Wv3KSnEZihGSajV4orsQ8A-nUUWvT0VEAOl9Al1_gOou5CxON3TbKLHl5InJgBMyvUxio78iAuc_RIJYJaTpJSFP4r3YXRb3cOddM1B4kFzWzRO5OdxEs/s1600/6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;201&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2kHb54_BRpiko5aMG0GPrr2Wv3KSnEZihGSajV4orsQ8A-nUUWvT0VEAOl9Al1_gOou5CxON3TbKLHl5InJgBMyvUxio78iAuc_RIJYJaTpJSFP4r3YXRb3cOddM1B4kFzWzRO5OdxEs/s400/6.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Podemos poner 1+1 y enter y si bota 2 es que node.js ya está funcionando.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEig7ix78e8qpcad3jg2ALpso6vVXOwl-HmWhMTHGSmt2RtZaaINYOOD6r2_8mLaDM49ItJDlLVSbWUTMiAAN9SeUORwb1LzHKzlCxkZh3aNsBMK12Ul8uJxD91dU30ghmqlaabRqdZYIE8/s1600/7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;201&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEig7ix78e8qpcad3jg2ALpso6vVXOwl-HmWhMTHGSmt2RtZaaINYOOD6r2_8mLaDM49ItJDlLVSbWUTMiAAN9SeUORwb1LzHKzlCxkZh3aNsBMK12Ul8uJxD91dU30ghmqlaabRqdZYIE8/s400/7.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Hasta aquí todo bonito, pero ¿cómo mostramos algo en la web?. Seleccionas tu editor de texto favorito y copias lo siguiente:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
var http = require(&#39;http&#39;);&lt;/div&gt;
&lt;div&gt;
http.createServer(function (req, res){&lt;/div&gt;
&lt;div&gt;
res.writeHead(200, {&#39;Content-type&#39;:&#39;text/plain&#39;});&lt;/div&gt;
&lt;div&gt;
res.end(&#39;Hola node.js&#39;);&lt;/div&gt;
&lt;div&gt;
}).listen(200, &quot;127.0.0.1&quot;);&lt;/div&gt;
&lt;div&gt;
console.log(&#39;Servidor activo en http://127.0.0.1:200/&#39;);&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Le das a guardar como hola.js en la ruta que tu prefieras. En mi caso como en el cmd la ruta por defecto que aparece es c:\Users\Jhon1 la guardaré ahi. Una vez hecho esto, vuelves a abrir el cmd, escribes node hola.js y debería aparecer lo siguiente:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1GjMD0AwSPYz3io0mcTaBUkORbztMbXh-GiumOKcB-uR-7A7b_xCZXq4vOpLpJVFjwV-ssCg-nbjasCL1GVBryc6afbCPhWWEFLvoJC1zlm4KEaPvJYvRm3SVq8ssapqcZ7OR3fBPNHc/s1600/8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;202&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1GjMD0AwSPYz3io0mcTaBUkORbztMbXh-GiumOKcB-uR-7A7b_xCZXq4vOpLpJVFjwV-ssCg-nbjasCL1GVBryc6afbCPhWWEFLvoJC1zlm4KEaPvJYvRm3SVq8ssapqcZ7OR3fBPNHc/s400/8.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Esto quiere decir que node.js ya está activo y nuestro archivo hola.js ya puede ser utilizado.&lt;/div&gt;
&lt;div&gt;
Por último abrimos Chrome, Firefox, IE o el que te dé la gana y pones la url que pusiste en la parte de listen de tu archivo hola.js. En nuestro caso http://127.0.0.1:200 y el resultado es el siguiente:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsyk91eJh4IUhlusZ_5U2UuxEC3vpJPoECpRO2v6GpAByol1bqCiAiQKFW6m3wcoIOxm2FE1qJ5kgLXW23LGMean29zPcIkknSW-G33njJ4FcIoBMvMi-OtkSA-1mxTgeszKUqp2I6aQE/s1600/9.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;238&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsyk91eJh4IUhlusZ_5U2UuxEC3vpJPoECpRO2v6GpAByol1bqCiAiQKFW6m3wcoIOxm2FE1qJ5kgLXW23LGMean29zPcIkknSW-G33njJ4FcIoBMvMi-OtkSA-1mxTgeszKUqp2I6aQE/s400/9.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Y ya está, espero que les sirva de utilidad para empezar con esto. En el proximo post hablaremos del gestor de paquetes de node.js y los módulos que tiene. Espero les ayude. Hasta la prox!!!&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/1612248229338949799/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2013/09/aprendiendo-nodejs-i.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/1612248229338949799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/1612248229338949799'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2013/09/aprendiendo-nodejs-i.html' title='Aprendiendo Node.js (I)'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiceCMOJxYfBRa3cW3M9VIcYnCuSxEzrb62w50idFRumbeeqfOmEJFROxmy44o4hCbHxtdKnA8y0L1GVQrz3b3HaQQ1ZPTIIiNwvbRm3dafnkL4ltxjSJ99y_zPfBqGKWPS8EY5XxFwOYA/s72-c/1.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-7060557160992933739</id><published>2012-10-05T10:17:00.001+02:00</published><updated>2012-10-05T10:19:02.174+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="TFS"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010"/><title type='text'>Primer vistazo con TFS Preview</title><content type='html'>Como sabrán muchas&amp;nbsp;compañías&amp;nbsp;están apostando fuerte en la nube, y como estamos en la época del Cloud Microsoft está ofreciendo muchas versiones de sus productos conocidos en la nube.&amp;nbsp;El TFS no iba a ser la excepción y aquí tenemos un pequeño introductorio.&lt;br /&gt;
&lt;br /&gt;
Lo primero que tenemos que hacer es suscribirnos al servicio con una cuenta de Window Live Id, decir que esta versión de TFS aún esta en fase Beta asi que cuidadito con esto =).&lt;br /&gt;
&lt;br /&gt;
Nos dirigimos hacia esta página:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://tfspreview.com/en-us/&quot; target=&quot;_blank&quot;&gt;https://tfspreview.com/en-us/&lt;/a&gt;&amp;nbsp;,buscamos la parte que diga &quot;get started for free&quot; y le damos click. Esta nos redirige a la siguiente pantalla:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUd7fKscmUKwrSp1WW8hgvOYFXkcxrju81rAVtzTasjqwU_3NAcIM132MJaMO2Hs6k0byA4iV_dCDGb34MiuiLxbk3SuKyhBHpKOTjx6QVljo-4U-ljMaeSrIMMyIGMxnVL08NrV4IW5M/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;157&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUd7fKscmUKwrSp1WW8hgvOYFXkcxrju81rAVtzTasjqwU_3NAcIM132MJaMO2Hs6k0byA4iV_dCDGb34MiuiLxbk3SuKyhBHpKOTjx6QVljo-4U-ljMaeSrIMMyIGMxnVL08NrV4IW5M/s320/1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
ponemos cualquier nombre que nos apetezca a nuestra cuenta, le damos click y despues de unos segundos ya tenemos montado nuestro TFS en la nube.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEFYu95KZHLzb3zjcGl5Ktep2iuFGMq9rKCFqWQI7pGrzPhgnWEU11tXdPpbWI8H9llWrLzqqLC2ZpROUWrwaFMxGkqXfY3NYWxlMpuvuWFe8u6oqmCVDrgSL6l9OX_KXSZkw5Xv-ZB4c/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;111&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEFYu95KZHLzb3zjcGl5Ktep2iuFGMq9rKCFqWQI7pGrzPhgnWEU11tXdPpbWI8H9llWrLzqqLC2ZpROUWrwaFMxGkqXfY3NYWxlMpuvuWFe8u6oqmCVDrgSL6l9OX_KXSZkw5Xv-ZB4c/s320/2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
A partir de aquí ya podemos crear nuevos proyectos, subir código, tambien hay una parte donde podemos descargar el código necesario para poder utilizar TFS Preview desde nuestros entornos de desarrollo.&lt;br /&gt;
&lt;br /&gt;
En el próximo post explicaré como usar TFS Preview desde Visual Studio 2010. Hasta la próxima.&lt;br /&gt;
&lt;br /&gt;
Jhon Marmolejo&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/7060557160992933739/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2012/10/primer-vistazo-con-tfs-preview.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/7060557160992933739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/7060557160992933739'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2012/10/primer-vistazo-con-tfs-preview.html' title='Primer vistazo con TFS Preview'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUd7fKscmUKwrSp1WW8hgvOYFXkcxrju81rAVtzTasjqwU_3NAcIM132MJaMO2Hs6k0byA4iV_dCDGb34MiuiLxbk3SuKyhBHpKOTjx6QVljo-4U-ljMaeSrIMMyIGMxnVL08NrV4IW5M/s72-c/1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-8780297290921665437</id><published>2012-09-17T13:04:00.000+02:00</published><updated>2012-09-17T13:04:13.551+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="IOS"/><category scheme="http://www.blogger.com/atom/ns#" term="off-topic"/><title type='text'>Pasa tu aplicación Android a IOS</title><content type='html'>Aunque sé que este tema viene fuera de la temática principal, lo leí por ahí y me interesó mucho por eso les comparto el artículo, que lo disfruten:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.xatakamovil.com/desarrollo/j2objc-ayuda-a-portar-una-aplicacion-android-a-ios&quot;&gt;http://www.xatakamovil.com/desarrollo/j2objc-ayuda-a-portar-una-aplicacion-android-a-ios&lt;/a&gt;
</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/8780297290921665437/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2012/09/pasa-tu-aplicacion-android-ios.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/8780297290921665437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/8780297290921665437'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2012/09/pasa-tu-aplicacion-android-ios.html' title='Pasa tu aplicación Android a IOS'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-8953934996743640434</id><published>2012-09-14T14:43:00.000+02:00</published><updated>2012-09-14T14:47:46.999+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ASP .NET MVC 3"/><category scheme="http://www.blogger.com/atom/ns#" term="Templates"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010"/><title type='text'>Crea tu propia plantilla de proyecto en Visual Studio 2010</title><content type='html'>Hola, a que te has dado cuenta que muchos de los proyectos en Visual Studio que empiezas, ya sea en tu trabajo o incluso para ti mismo, siempre tienen al menos al principio las mismas cosas como una clase Common, a lo mejor unos estilos o controles de usuario que siempre se utilizan, o a lo mejor distintos helpers ya programados anteriormente y como hasta ahora funcionan quieres reutilizarlo.&lt;br /&gt;
&lt;br /&gt;
Entonces me pregunto, ¿por qué cada vez que iniciamos un nuevo proyecto tenemos que hacer casi un copy/paste de estas cosas que se repiten en todos los proyectos?, la respuesta es fácil, no tenemos un template de proyecto personalizado. Entonces a por ello.&lt;br /&gt;
&lt;br /&gt;
Crear un template de proyecto es sencillo. Primero abrimos el Visual Studio, en esta caso la versión 2010, y creamos un proyecto cualquiera de acuerdo a tus necesidades. En mi caso en mi trabajo ultimamente estamos haciendo muchos proyectos usando ASP NET MVC 3 asi que haré el ejemplo con esto =).&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdNoM1_2av99Ib9wKVVeSQueIl3FwHVznsbPQuzqttEwoekNH1uPMnSQ8k4wqYRHYzGNj8HVbUA_JGUfFglPwVddF82tC7FFT8a24CX9O-tt1GFFy66NVVP066mYJZN5h-iL2a1z_FO1M/s1600/template1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;221&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdNoM1_2av99Ib9wKVVeSQueIl3FwHVznsbPQuzqttEwoekNH1uPMnSQ8k4wqYRHYzGNj8HVbUA_JGUfFglPwVddF82tC7FFT8a24CX9O-tt1GFFy66NVVP066mYJZN5h-iL2a1z_FO1M/s320/template1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
El nombre y la ruta del proyecto es lo de menos ya que luego esto se podrá cambiar. Damos Ok y tenemos un &amp;nbsp;proyecto de ASP .NET MVC 3 como cualquier otro.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmGMh6DA57ryhfKwnSvkcfHWg2H1EAPaJAh6MTFGmeSdj0LQm7uSeKF7Sqt3LozcRcyjJ24JJZzpLVgSZqEGAGExtCjXIDptaZnYtFugP2-aDV9GzqG8JEbXUt35EaxZzmWzQdbHU7lU0/s1600/template2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmGMh6DA57ryhfKwnSvkcfHWg2H1EAPaJAh6MTFGmeSdj0LQm7uSeKF7Sqt3LozcRcyjJ24JJZzpLVgSZqEGAGExtCjXIDptaZnYtFugP2-aDV9GzqG8JEbXUt35EaxZzmWzQdbHU7lU0/s320/template2.png&quot; width=&quot;274&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
A partir de aquí podemos agregar, eliminar, personalizar, hacer lo que nos de la gana con el proyecto. En mi caso eliminaré de la parte del Modelo la clase AccountModels.cs, de la parte de las Vistas quitaré toda la Carpeta Account y de la parte de Controllers quitare la clase AccountController.cs.&lt;br /&gt;
&lt;br /&gt;
Adicionalmente creare una clase Persona en el modelo, tambien un controlador y vista para esta clase. El proyecto quedaría de esta manera.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8o9V-R-Yq8vNvuwPMh2InpjkAiCY9onVGS1-4-R14Bh10Uhkg01HkC5tZNrVrdqVBDTdC-7aRuuwrrxGFHlDLc3hYPvmZbViQayej4sLgUPKHtli1dlDI2hPF86J7T2jUiqYXmb-rPho/s1600/template3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8o9V-R-Yq8vNvuwPMh2InpjkAiCY9onVGS1-4-R14Bh10Uhkg01HkC5tZNrVrdqVBDTdC-7aRuuwrrxGFHlDLc3hYPvmZbViQayej4sLgUPKHtli1dlDI2hPF86J7T2jUiqYXmb-rPho/s320/template3.png&quot; width=&quot;282&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
He resaltado lo nuevo que he agregado. Ahora nos aseguramos de que esto compile. Si todo va bien, nos vamos al menú File / Export Template le damos click y luego next...&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnRaEqM9nXY434e1rtMi6cSee7wVWWBwYZArcq3s6x8I6j4YojoRaTsDNlmEmU8hadekhCUr3__6Uv__jflBvKgRjcaRieW7tZfWU3yn-bQh5P7bH95D6E54KgQ6f7aVaHurvb-0Q7LjI/s1600/template4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnRaEqM9nXY434e1rtMi6cSee7wVWWBwYZArcq3s6x8I6j4YojoRaTsDNlmEmU8hadekhCUr3__6Uv__jflBvKgRjcaRieW7tZfWU3yn-bQh5P7bH95D6E54KgQ6f7aVaHurvb-0Q7LjI/s320/template4.png&quot; width=&quot;248&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigLmQY9BA1ZLJs7uwzIpolhxrpQAOP8d55W7bhRC7EUu5uhMj217mNMsqJk6Nf2UTEcOXjzIKmGka4yowHB7DBUH8NyEQB_4_9lpEtICJ9ww_g4KxXgW-xcm3yiMtePPkgtfrXrSaKl38/s1600/template5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;279&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigLmQY9BA1ZLJs7uwzIpolhxrpQAOP8d55W7bhRC7EUu5uhMj217mNMsqJk6Nf2UTEcOXjzIKmGka4yowHB7DBUH8NyEQB_4_9lpEtICJ9ww_g4KxXgW-xcm3yiMtePPkgtfrXrSaKl38/s320/template5.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
Al final sale esta ventana, donde podemos personalizar el nombre, la descripción, imagen previa e ícono del template. Asi como tambien te da la posibilidad de importar directamente la plantilla a Visual Studio y abriendo el Explorador de Windows para indicarte donde se guardará la plantilla como .zip generado.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTatsDqwusfiQj7IZLK3HVbOlf0WfLPg78-Rsrpso7k92rdQILv3ldi_rBiLxKqYovFxjQlk8MU1jB8PV5RTN7rmFefqOgQMMjBE7jkl-_LPGQRncB2NcUtcJYhMHhSxH8FA3JL38fwbc/s1600/template6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;280&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTatsDqwusfiQj7IZLK3HVbOlf0WfLPg78-Rsrpso7k92rdQILv3ldi_rBiLxKqYovFxjQlk8MU1jB8PV5RTN7rmFefqOgQMMjBE7jkl-_LPGQRncB2NcUtcJYhMHhSxH8FA3JL38fwbc/s320/template6.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Le damos a Finish y ya tenemos nuestra plantilla creada =) ... Ahora cada vez que vayamos a Visual Studio, le damos a nuevo proyecto, la encontraremos y la podemos usar :D!&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi86kJlulA69i1hyIFmy9Pq_8YTyIl6dh6uEzYHXZ-6d8k5t9pZ-qO2y_XzrI6Jp6CjH04JxugWQ2-lZviTocu7oJxYmOpbc2IQFcfnQI-xLjL095F0dNkE1MfqkRdZcDW7-uy0EPtIydc/s1600/template7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;221&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi86kJlulA69i1hyIFmy9Pq_8YTyIl6dh6uEzYHXZ-6d8k5t9pZ-qO2y_XzrI6Jp6CjH04JxugWQ2-lZviTocu7oJxYmOpbc2IQFcfnQI-xLjL095F0dNkE1MfqkRdZcDW7-uy0EPtIydc/s320/template7.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
Y podemos usarla como cualquier otro proyecto, cambiarle el nombre, añadir a un control de código fuente etc, etc. El resultado es el siguiente :&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAlXan8vPhRSGp_T1waSzTIR4Ngk3OnrOsyboupuo0ZuQ1gTDu6UwFNzhFAJaFGxjcChLV0EoBqYIstxV_GqfW3kLcxV3jCXdec3RpjaStSYv6jfFEul0-gRgzM9zTpwaghKq3R4nzO6A/s1600/template8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;298&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAlXan8vPhRSGp_T1waSzTIR4Ngk3OnrOsyboupuo0ZuQ1gTDu6UwFNzhFAJaFGxjcChLV0EoBqYIstxV_GqfW3kLcxV3jCXdec3RpjaStSYv6jfFEul0-gRgzM9zTpwaghKq3R4nzO6A/s320/template8.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
A&amp;nbsp;que mola :D:D!!.. esto nos puede reducir el tiempo considerablemente, espero les sea útil, nos vemos&lt;br /&gt;
&lt;br /&gt;
Jhon Marmolejo</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/8953934996743640434/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2012/09/crea-tu-propia-plantilla-de-proyecto-en.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/8953934996743640434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/8953934996743640434'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2012/09/crea-tu-propia-plantilla-de-proyecto-en.html' title='Crea tu propia plantilla de proyecto en Visual Studio 2010'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdNoM1_2av99Ib9wKVVeSQueIl3FwHVznsbPQuzqttEwoekNH1uPMnSQ8k4wqYRHYzGNj8HVbUA_JGUfFglPwVddF82tC7FFT8a24CX9O-tt1GFFy66NVVP066mYJZN5h-iL2a1z_FO1M/s72-c/template1.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-3735269991859134726</id><published>2012-09-13T14:54:00.000+02:00</published><updated>2012-09-17T12:45:40.327+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UML"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010"/><title type='text'>Diagramas de Secuencia en Visual Studio 2010</title><content type='html'>Cuantas veces nos ha tocado elaborar diferentes diagramas que vienen a formar parte del documento técnico para entregar un proyecto. Y como todos saben &lt;strike&gt;,a lo mejor por&amp;nbsp;ahí&amp;nbsp;alguno me resondra,&lt;/strike&gt;&amp;nbsp;es un coñazo, pero eso no quita que sea necesario. Felizmente Visual Studio 2010, la versión Ultimate, nos ofrece realizar los Diagramas de Secuencia de una manera muy fácil y rápida. El que no sepa lo que es un diagrama de&amp;nbsp;secuencia&amp;nbsp;puede revisarlo &lt;a href=&quot;http://es.wikipedia.org/wiki/Diagrama_de_secuencia&quot;&gt;aquí&lt;/a&gt;.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Lo único que tenemos que hacer es posicionarnos en el método sobre el cual generaremos el diagrama y le damos click derecho y damos click a la opción &amp;nbsp;&quot;Generate Sequence Diagram....&quot;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjT6vfLLh47VubZpsw8BSFECTkAQqj-QK9WG-QyfxfkHYr9OArPN9IP43w6DjpMaLhmNZExQFMPzIrhjWgd6zGpIiHz0c65CfveBiBPwkej3WAXJ4C69ETdTxKsvaYF0WyayNTZiy2jCIU/s1600/secuencia1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;233&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjT6vfLLh47VubZpsw8BSFECTkAQqj-QK9WG-QyfxfkHYr9OArPN9IP43w6DjpMaLhmNZExQFMPzIrhjWgd6zGpIiHz0c65CfveBiBPwkej3WAXJ4C69ETdTxKsvaYF0WyayNTZiy2jCIU/s320/secuencia1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Luego nos sale una ventana donde podemos personalizar diferentes cosas del diagrama, como por ejemplo el número de niveles de referencias que tendrá, si buscaremos dll&#39;s externas y tambien podemos excluir cosas que no nos interesan como las propiedades o eventos.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJowZ-njqriiY0cFyJx3wsnqY5BPcWgQvINc073CZklcyfPVtTLlhCCWzTqF6O56yHrUSDcYlVinFHr5OsQLApAWuwkhnORq4nbg_OqSZCaTOkN8e2kV0GM7F2Gy2iRnuX0HUSVd-jGUU/s1600/secuencia2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;233&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJowZ-njqriiY0cFyJx3wsnqY5BPcWgQvINc073CZklcyfPVtTLlhCCWzTqF6O56yHrUSDcYlVinFHr5OsQLApAWuwkhnORq4nbg_OqSZCaTOkN8e2kV0GM7F2Gy2iRnuX0HUSVd-jGUU/s320/secuencia2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Luego simplemente le damos aceptar, esperamos que se genere todo el diagrama y ya los tenemos =)&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwwNBDzRVX_0U_ZbAcSVLeZn7tKpHI4YtlJBrUIamQySlNo-fHR93nE5TsAjPWXFiGMf-vWkvD2ydrXltW8B600Qwnz4SxpBVEG1biCdfzZwtvRozmVzN5kD6HRAVk-1PgWb9ex_oscbw/s1600/secuencia3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;194&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwwNBDzRVX_0U_ZbAcSVLeZn7tKpHI4YtlJBrUIamQySlNo-fHR93nE5TsAjPWXFiGMf-vWkvD2ydrXltW8B600Qwnz4SxpBVEG1biCdfzZwtvRozmVzN5kD6HRAVk-1PgWb9ex_oscbw/s320/secuencia3.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Ya luego toca revisarlo un poco, si quieres tambien puedes modificarlo desde aquí, simplemente una gran ayuda de Visual Studio :D!&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Espero que les sea útil, un saludo !&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Jhon Marmolejo&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/3735269991859134726/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2012/09/diagramas-de-secuencia-en-visual-studio.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/3735269991859134726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/3735269991859134726'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2012/09/diagramas-de-secuencia-en-visual-studio.html' title='Diagramas de Secuencia en Visual Studio 2010'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjT6vfLLh47VubZpsw8BSFECTkAQqj-QK9WG-QyfxfkHYr9OArPN9IP43w6DjpMaLhmNZExQFMPzIrhjWgd6zGpIiHz0c65CfveBiBPwkej3WAXJ4C69ETdTxKsvaYF0WyayNTZiy2jCIU/s72-c/secuencia1.png" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-532734867999205154</id><published>2012-09-13T11:41:00.001+02:00</published><updated>2012-09-13T11:41:22.893+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Error"/><category scheme="http://www.blogger.com/atom/ns#" term="Instalación"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010"/><title type='text'>Error instalando Visual Studio 2010</title><content type='html'>Hola, he estado un poco liado con el trabajo y no he podido aportar como me hubiera gustado, aún sigo liado pero hoy justo me pasó algo raro en el trabajo. Necesitaba instalar la versión Ultimate de Visual Studio 2010 ya que necesitaba generar unos diagramas de secuencia y esto fue lo que paso.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiwDl5Iyixh3ynt8VnJRAbKTRU7BvkATUQqJ9VJO6NK9jlDGiKMRs9XC4jymzYxWoHgRRJ5MAkbffYKsMNyPOcld3_dcsk2pBGBPfWXpvb3N5xBOsKbasiCvR8Wso4cS3X9XUw9_BArWs/s1600/errorVS2010.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;245&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiwDl5Iyixh3ynt8VnJRAbKTRU7BvkATUQqJ9VJO6NK9jlDGiKMRs9XC4jymzYxWoHgRRJ5MAkbffYKsMNyPOcld3_dcsk2pBGBPfWXpvb3N5xBOsKbasiCvR8Wso4cS3X9XUw9_BArWs/s320/errorVS2010.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Lo primero que pense es que seguro se debía a las diferentes versiones de Visual Studio que tenía instaladas en el servidor, pero nooooo !!...buscando y buscando por ahi vi que decían que este error se daba cuando querias instalar Visual Studio desde un disco o una ISO. Asi que copié el archivo a mi disco duro y ejecute y tatararannnnnnnn !!...ya lo tenemos&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEike3hgAXpktOdKyPKn4Nht9QDRu7ecjBHTWrdJPk8kaF4uoubWMEJEn9Kta-rEH_Fj3yiknwpzQSgjh1aAGQSek4areMc8PQxO-o4jv_x5wVkUV7yV0wKakvRERvieu0EVP3pUrZ-mNeg/s1600/Sin+t%C3%ADtulo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;242&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEike3hgAXpktOdKyPKn4Nht9QDRu7ecjBHTWrdJPk8kaF4uoubWMEJEn9Kta-rEH_Fj3yiknwpzQSgjh1aAGQSek4areMc8PQxO-o4jv_x5wVkUV7yV0wKakvRERvieu0EVP3pUrZ-mNeg/s320/Sin+t%C3%ADtulo.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ahora que ya lo tengo en el próximo post les enseñare como crear diagramas de secuencia con Visual Studio 2010, es necesario tener la versión Ultimate.&lt;br /&gt;
&lt;br /&gt;
Hasta luego!!!</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/532734867999205154/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2012/09/error-instalando-visual-studio-2010.html#comment-form' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/532734867999205154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/532734867999205154'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2012/09/error-instalando-visual-studio-2010.html' title='Error instalando Visual Studio 2010'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiwDl5Iyixh3ynt8VnJRAbKTRU7BvkATUQqJ9VJO6NK9jlDGiKMRs9XC4jymzYxWoHgRRJ5MAkbffYKsMNyPOcld3_dcsk2pBGBPfWXpvb3N5xBOsKbasiCvR8Wso4cS3X9XUw9_BArWs/s72-c/errorVS2010.png" height="72" width="72"/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-9049956180599059695</id><published>2012-08-16T11:14:00.002+02:00</published><updated>2012-08-16T13:27:52.977+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Descargas"/><category scheme="http://www.blogger.com/atom/ns#" term="MSDN"/><category scheme="http://www.blogger.com/atom/ns#" term="MsExpertos"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2012"/><title type='text'>Visual Studio 2012 tambien disponible para descarga</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpnEajhfckp3pEgq0_Thd6RCpHJcvLZ4IlxtEH_HW8oBWEHFMibz9zzyJN0_VXlNo3NM7XW6tqa02_l_l1LD5zSJIc0AxNN9E6R2OH-2xkuyOBgdoAMntxHAJx3xkFhw8NspwtLllks4M/s1600/logo_VisualStudio_hero.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;100&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpnEajhfckp3pEgq0_Thd6RCpHJcvLZ4IlxtEH_HW8oBWEHFMibz9zzyJN0_VXlNo3NM7XW6tqa02_l_l1LD5zSJIc0AxNN9E6R2OH-2xkuyOBgdoAMntxHAJx3xkFhw8NspwtLllks4M/s320/logo_VisualStudio_hero.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Al igual que Windows 8 RTM, &amp;nbsp;el día de ayer, Microsoft puso a disposición la última versión de Visual Studio 2012 &lt;b&gt;completa&lt;/b&gt; para ser descargada. Como comenté en el &lt;a href=&quot;http://csharprules.blogspot.com.es/2012/08/windows-8-rtm-ya-disponible-para.html&quot;&gt;post &lt;/a&gt;anterior, está disponible para los suscriptores de MSDN y TechNet, &amp;nbsp;y para los que no !!..tenemos la prueba de 90 días :D!&lt;br /&gt;
&lt;br /&gt;
He&amp;nbsp;aquí&amp;nbsp;el enlace:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.microsoft.com/visualstudio/11/es-es/downloads&quot;&gt;http://www.microsoft.com/visualstudio/11/es-es/downloads&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
A descargar y disfrutar =) !!!.. Pronto más detalles !&lt;br /&gt;
&lt;br /&gt;
Un saludo,&lt;br /&gt;
Jhon Marmolejo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/9049956180599059695/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2012/08/visual-studio-2012-tambien-disponible.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/9049956180599059695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/9049956180599059695'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2012/08/visual-studio-2012-tambien-disponible.html' title='Visual Studio 2012 tambien disponible para descarga'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpnEajhfckp3pEgq0_Thd6RCpHJcvLZ4IlxtEH_HW8oBWEHFMibz9zzyJN0_VXlNo3NM7XW6tqa02_l_l1LD5zSJIc0AxNN9E6R2OH-2xkuyOBgdoAMntxHAJx3xkFhw8NspwtLllks4M/s72-c/logo_VisualStudio_hero.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-6258383005843673694</id><published>2012-08-16T09:49:00.002+02:00</published><updated>2012-08-16T10:09:34.506+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Descargas"/><category scheme="http://www.blogger.com/atom/ns#" term="MSDN"/><category scheme="http://www.blogger.com/atom/ns#" term="MsExpertos"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows 8"/><title type='text'>Windows 8 RTM ya disponible para descargar</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLGutPCGodF9jeHJkXUCoVP_78MrdV5qyHQoHTfTmfmQXK5sGzAz5z059Bpe7lpL7f-EW9fAkS4ps1GW09PNpntDqveEm2oxudtid_6fHbHdNtx3Ig13zY1wTrb-HNc4TNA3o9Wlqynd0/s1600/windows8rtm_large_verge_medium_landscape.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLGutPCGodF9jeHJkXUCoVP_78MrdV5qyHQoHTfTmfmQXK5sGzAz5z059Bpe7lpL7f-EW9fAkS4ps1GW09PNpntDqveEm2oxudtid_6fHbHdNtx3Ig13zY1wTrb-HNc4TNA3o9Wlqynd0/s320/windows8rtm_large_verge_medium_landscape.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Pues tal como había dicho Microsoft, a partir de ayer -domingo 15 de agosto-  ya está disponible Windows 8 RTM para descargar para los suscriptores de pago de MSDN y también para los de TechNet.&lt;br /&gt;
&lt;br /&gt;
Pero también hay buenas noticias para los que no tenemos el lujo de poder contar &lt;strike&gt;o tener la pasta =P&lt;/strike&gt; con una suscripción de estas, Microsoft nos da la posibilidad de poder descargar esta versión por 90 días y trastear con ello =), está claro que lo más recomendable es instalarlo en una máquina virtual ya que a los 90 días dejará de funcionar.&lt;br /&gt;
&lt;br /&gt;
Aquí&amp;nbsp;tienes el enlace de descarga:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://msdn.microsoft.com/en-US/evalcenter/jj554510.aspx&quot;&gt;http://msdn.microsoft.com/en-US/evalcenter/jj554510.aspx&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Ya mostraré los pasos de la instalación, a descargar todos =) !!&lt;br /&gt;
&lt;br /&gt;
Saludos,&lt;br /&gt;
Jhon Marmolejo</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/6258383005843673694/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2012/08/windows-8-rtm-ya-disponible-para.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/6258383005843673694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/6258383005843673694'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2012/08/windows-8-rtm-ya-disponible-para.html' title='Windows 8 RTM ya disponible para descargar'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLGutPCGodF9jeHJkXUCoVP_78MrdV5qyHQoHTfTmfmQXK5sGzAz5z059Bpe7lpL7f-EW9fAkS4ps1GW09PNpntDqveEm2oxudtid_6fHbHdNtx3Ig13zY1wTrb-HNc4TNA3o9Wlqynd0/s72-c/windows8rtm_large_verge_medium_landscape.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-4586872608654594630</id><published>2012-08-01T21:38:00.001+02:00</published><updated>2012-08-16T10:01:13.904+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c#"/><category scheme="http://www.blogger.com/atom/ns#" term="Documentación"/><category scheme="http://www.blogger.com/atom/ns#" term="GhostDoc"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio"/><title type='text'>GhostDoc, documentando código</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
A quien no le ha pasado que muchas veces le toca revisar el código de otra persona y no se entera de nada... es más debo de reconocer que a mi me ha pasado que hubo momentos en que no reconocía que hacia mi propio código xD, pero esto son cosas del pasado y que uno va aprendiendo a punta de collejas =)...&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Yo sé que es una tarea tediosa, pero felizmente hay herramientas que nos facilitan la vida como GhostDoc, una herramienta que permite generar documentación de tus clases y métodos con solo apretar una combinación de teclas ...claro que tienes que seguir algunas reglas para que la documentación generada sea coherente.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Lo primero, descargamos Ghostdoc desde aqui -&amp;gt;&amp;nbsp;&lt;a href=&quot;http://submain.com/download/ghostdoc/&quot;&gt;http://submain.com/download/ghostdoc/&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Te pide que pongas tu email, lo pones y a descargar. Una vez descargado, descomprimes el archivo y ejecutas el exe que hay dentro para empezar la instalación. Una vez finalizada la instalación cuando abras el Visual Studio ( en mi caso la versión 2010) te saldrá la siguiente ventana ...&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilloMiZQjogwICwYTgbWNLTKub_6Uf9V10BQxRVmtTC5nihRrpx7kj2hgvm9wBT3Hsd6AlYaqLqK3nKbtsHslrya73IRLhFtzmf9b-weNEP4YhurtkHdio08eePd41r1ax1h0j8zMg-KM/s1600/ghostdoc1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;242&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilloMiZQjogwICwYTgbWNLTKub_6Uf9V10BQxRVmtTC5nihRrpx7kj2hgvm9wBT3Hsd6AlYaqLqK3nKbtsHslrya73IRLhFtzmf9b-weNEP4YhurtkHdio08eePd41r1ax1h0j8zMg-KM/s320/ghostdoc1.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Esta ventana te da la opción de elegir la combinación de teclas que pulsarás cuando quieras generar la documentación de un método, propiedad, cabecera de clase, etc, etc .... con GhostDoc, si se fijan por defecto la combinación de teclas asignadas es &lt;b&gt;Ctrl+Shift+D, &amp;nbsp;&lt;/b&gt;yo estoy acostumbrado a usar esta pero si no te gusta pues eliges otra opción de la lista desplegable y pulsas el boton Assign o si no te apetece configurarlo en este momento le das a Skip.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Luego de esto te pregunta si quieres crear una nueva configuración, como es la primera vez que la instalo en este ordenador le doy a crear.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7oZlOwQLkIwtzZZ9BearKGjr1tDCZgkZMSTQhcDghXrqiZ4_eZyyOm_bg1nKnUecYlf4mZS07g9bNe23wBVRlvfmd0Yqs-sKQ92JHbbDVCqe8QAo3hFoOfHSjxxALV1SC5-R6JGMvr90/s1600/ghostdoc2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;242&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7oZlOwQLkIwtzZZ9BearKGjr1tDCZgkZMSTQhcDghXrqiZ4_eZyyOm_bg1nKnUecYlf4mZS07g9bNe23wBVRlvfmd0Yqs-sKQ92JHbbDVCqe8QAo3hFoOfHSjxxALV1SC5-R6JGMvr90/s320/ghostdoc2.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Y listo ya tenemos instalado GhostDoc en nuestro VS =) !&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTQfqhhMJk_ZPfx8SoaBPJM8ap5KZ50lHc0Qx9NHR7AH85uWSC0QXls1dOkyMsKCXLpamU62e1aFRZORo3VyooE_1Di5bGrfTUmQA0s2AVWehTZTPIW8GiGnBOuouNxrMbladEQ8u3ux4/s1600/ghostdoc3.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;242&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTQfqhhMJk_ZPfx8SoaBPJM8ap5KZ50lHc0Qx9NHR7AH85uWSC0QXls1dOkyMsKCXLpamU62e1aFRZORo3VyooE_1Di5bGrfTUmQA0s2AVWehTZTPIW8GiGnBOuouNxrMbladEQ8u3ux4/s320/ghostdoc3.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
Ahora probemos en el código. Como ejemplo vamos a crear una clase &#39;Customer&#39; con un par de propiedades y un método, que sería algo como esto:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: c#&quot;&gt;    
   public class Customer
   {
        public int Id { get; set; }

        public string Name { get; set; }

        public void SaveCustomer(int customerId, string customerName)
        {
          //blablabla  
        }
   }
&lt;/pre&gt;
&lt;br /&gt;
Ahora seleccionamos &amp;nbsp;la propiedad Id y presionamos Ctrl+Shift+D y veamos el resultado:&lt;br /&gt;
&lt;pre class=&quot;brush: c#&quot;&gt; 
        /// &lt;summary&gt;
        /// Gets or sets the id.
        /// &lt;/summary&gt;
        /// &lt;value&gt;
        /// The id.
        /// &lt;/value&gt;
        public int Id { get; set; }
&lt;/pre&gt;
&lt;br /&gt;
Lo mismo hacemos con la propiedad Name y el método SaveCustomer, recuerda que tienes que seleccionar completamente el nombre de la propiedad ó metodo y pulsar Ctrl+Shift+D. Al final el resultado sería el siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: c#&quot;&gt;public class Customer
  {
      /// &lt;summary&gt;
      /// Gets or sets the id.
      /// &lt;/summary&gt;
      /// &lt;value&gt;
      /// The id.
      /// &lt;/value&gt;
      public int Id { get; set; }
 
      /// &lt;summary&gt;
      /// Gets or sets the name.
      /// &lt;/summary&gt;
      /// &lt;value&gt;
      /// The name.
      /// &lt;/value&gt;
      public string Name { get; set; }
 
 
      /// &lt;summary&gt;
      /// Saves the customer.
      /// &lt;/summary&gt;
      /// &lt;param name=&quot;customerId&quot; /&gt;The customer id.
      /// &lt;param name=&quot;customerName&quot; /&gt;Name of the customer.
      public void SaveCustomer(int customerId, string customerName)
      {
        //blablabla  
      }
  }
&lt;/pre&gt;
&lt;br /&gt;
Como puedes ver, hasta documenta tambien los parámetros de un método. La regla principal para que la documentación generada sea coherente es que el nombre del metodo sea un verbo o un verbo seguido de un sustantivo y la propiedad un nombre válido. La documentación que genera GhostDoc por defecto es en inglés, aunque existen extensiones para generar documentación en español e italiano aunque no son tan completas como en inglés. Espero les sea útil, hasta la próxima =) !!&lt;br /&gt;
&lt;br /&gt;
Un saludo,&lt;br /&gt;
Jhon Marmolejo</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/4586872608654594630/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2012/08/ghostdoc-documentando-codigo.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/4586872608654594630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/4586872608654594630'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2012/08/ghostdoc-documentando-codigo.html' title='GhostDoc, documentando código'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilloMiZQjogwICwYTgbWNLTKub_6Uf9V10BQxRVmtTC5nihRrpx7kj2hgvm9wBT3Hsd6AlYaqLqK3nKbtsHslrya73IRLhFtzmf9b-weNEP4YhurtkHdio08eePd41r1ax1h0j8zMg-KM/s72-c/ghostdoc1.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608671955680070836.post-1913887862058308244</id><published>2012-07-24T22:32:00.000+02:00</published><updated>2012-07-25T10:28:53.144+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c#"/><category scheme="http://www.blogger.com/atom/ns#" term="log4net"/><title type='text'>Log4Net en C#</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6x4sJCuN2cvxwNc0Tk7TXCT_Fzu44-Z1mJVvRjRWaI89-wyCPyh12LuKc8Om6hBpdIRVThennd46gJNOTkqtVu2ISaoe2k1jVKyFykqnFxdVObYcIxpOBaB6wfaasF0btIl1rGYApkTg/s1600/can-stock-photo_csp5174148+(1).jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6x4sJCuN2cvxwNc0Tk7TXCT_Fzu44-Z1mJVvRjRWaI89-wyCPyh12LuKc8Om6hBpdIRVThennd46gJNOTkqtVu2ISaoe2k1jVKyFykqnFxdVObYcIxpOBaB6wfaasF0btIl1rGYApkTg/s200/can-stock-photo_csp5174148+(1).jpg&quot; width=&quot;106&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Siempre es importante tener logs en nuestras aplicaciones, sobretodo en entornos cerrados donde tengamos accesos limitados o cuando ocurre una excepción inesperada que nos pone los pelos de punta y no sabemos por donde atacar. Hace ya bastante tiempo vengo usando&amp;nbsp;&lt;a href=&quot;http://logging.apache.org/log4net/&quot;&gt;Log4Net&lt;/a&gt;&amp;nbsp;y bueno como parece que ahora si le estoy dedicando tiempo al blog y tuve un pequeño problema hace poco que comentaré en el siguiente post, quise escribir sobre esto.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
Lo primero, descargarse la&amp;nbsp;release desde aquí: &amp;nbsp;&lt;a href=&quot;http://logging.apache.org/log4net/download_log4net.cgi&quot; style=&quot;background-color: white;&quot;&gt;http://logging.apache.org/log4net/download_log4net.cgi&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Seleccionamos uno de los archivos binarios, descargamos, descrompimimos el archivo zip y vamos a la carpeta&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp; &lt;b&gt;&quot;\bin\net\4.0\release&quot; &amp;nbsp;&lt;/b&gt;en el cual encontraremos el archivo log4net.dll &amp;nbsp;y lo añademos como referencia a nuestro proyecto.&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
Lo siguiente es modificar el web.config. Añadimos la siguiente sección dentro del &amp;lt;configsections&amp;gt; del web.config:&lt;br /&gt;
&lt;pre class=&quot;brush: c#&quot;&gt;&lt;configsections&gt;
    &lt;section name=&quot;log4net&quot; type=&quot;log4net.Config.Log4NetConfigurationSectionHandler, log4net&quot;&gt;&lt;/section&gt;
    ....
    ....
    ....
  &lt;/configsections&gt;
&lt;/pre&gt;
Lo siguiente es añadir la parte de la configuración para el log4net. En nuestro caso sólo queremos escribir sobre un archivo, pero &lt;a href=&quot;http://logging.apache.org/log4net/release/config-examples.html&quot;&gt;aquí &lt;/a&gt;tienes muchas más opciones de configuración.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: c#&quot;&gt; &lt;log4net&gt;
    &lt;appender name=&quot;RollingLogFileAppender&quot; type=&quot;log4net.Appender.RollingFileAppender&quot;&gt;
      &lt;file value=&quot;C:\logs\NombreLog_&quot;&gt;&lt;/file&gt;
      &lt;appendtofile value=&quot;true&quot;&gt;&lt;/appendtofile&gt;
      &lt;staticlogfilename value=&quot;false&quot;&gt;&lt;/staticlogfilename&gt;
      &lt;rollingstyle value=&quot;Composite&quot;&gt;&lt;/rollingstyle&gt;
      &lt;datepattern value=&quot;yyyyMMdd.lo\g&quot;&gt;&lt;/datepattern&gt;
      &lt;maxsizerollbackups value=&quot;5&quot;&gt; &lt;/maxsizerollbackups&gt;
      &lt;maximumfilesize value=&quot;100MB&quot;&gt; &lt;/maximumfilesize&gt;
      &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
        &lt;conversionpattern value=&quot;%newline#############################################################%newline %date [%thread] %-5level %logger - %message%newline&quot;&gt;
      &lt;/conversionpattern&gt;&lt;/layout&gt;
    &lt;/appender&gt;
    &lt;root&gt;
      &lt;level value=&quot;ERROR&quot;&gt;&lt;/level&gt;
      &lt;appender-ref ref=&quot;RollingLogFileAppender&quot;&gt;&lt;/appender-ref&gt;
    &lt;/root&gt;

&lt;/log4net&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Dentro del appender ponemos la configuración necesaria sobre como queremos que se escriba nuestro log, esta claro que podemos tener varios appenders, por ejemplo uno para que escriba un archivo de texto y otro para que guarda en base de datos.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Luego desde la parte de root señalamos el nivel del Log, que pueden ser INFO, DEBUG, WARNING o ERROR y tambien indicamos los appenders que usará nuestro log.&lt;/div&gt;
&lt;br /&gt;
Por último vamos al Global.asax, importamos el&lt;br /&gt;
&lt;pre class=&quot;brush: c#&quot;&gt;using log4net;&lt;/pre&gt;
&lt;br /&gt;
Añadimos el siguiente código&lt;br /&gt;
&lt;pre class=&quot;brush: c#&quot;&gt;private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
&lt;/pre&gt;
&lt;br /&gt;
Y en el Application_Start() añadimos lo siguiente:&lt;br /&gt;
&lt;pre class=&quot;brush: c#&quot;&gt;protected void Application_Start()
{
    log4net.Config.XmlConfigurator.Configure();
}
&lt;/pre&gt;
&lt;br /&gt;
Ya tenemos todo configurado para usar nuestro log, a partir de ahora, dependiendo del nivel en el que hallas seteado tu log, este escribirá en el archivo de texto, bd o como sea que lo hayas configurado.&lt;br /&gt;
&lt;br /&gt;
Aqui les dejo un ejemplo simple para escribir en el log cuando ocurra alguna excepción:&lt;br /&gt;
&lt;pre class=&quot;brush: c#&quot;&gt;public static void GenerandoError()
        {
            try
            {
                int numero = 53454534543543534324;
            }
            catch (Exception e)
            {
                Log.Error(e.Message, e);
            }
        }
&lt;/pre&gt;
Espero les sea útil, hasta la próxima :D!</content><link rel='replies' type='application/atom+xml' href='http://csharprules.blogspot.com/feeds/1913887862058308244/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://csharprules.blogspot.com/2012/07/log4net-en-c.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/1913887862058308244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608671955680070836/posts/default/1913887862058308244'/><link rel='alternate' type='text/html' href='http://csharprules.blogspot.com/2012/07/log4net-en-c.html' title='Log4Net en C#'/><author><name>Jhon Marmolejo C</name><uri>http://www.blogger.com/profile/09350272380143021394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1qbuJMJY2MnoXyY5AkILgoKKe6MLx1c4BTdBDY5sjRcREablhCa5DJ8ADpL7vkuHCRd4XuAdteEYkvB0yeN896C6S1qA3TRsAvByYoxlea56C14ICXoXeOHP0GyViT0Y/s220/P6010022.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6x4sJCuN2cvxwNc0Tk7TXCT_Fzu44-Z1mJVvRjRWaI89-wyCPyh12LuKc8Om6hBpdIRVThennd46gJNOTkqtVu2ISaoe2k1jVKyFykqnFxdVObYcIxpOBaB6wfaasF0btIl1rGYApkTg/s72-c/can-stock-photo_csp5174148+(1).jpg" height="72" width="72"/><thr:total>0</thr:total></entry></feed>